Initial commit: AIFO official portal web.

Add static site, shared layout, and Node dev server with standard .gitignore.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-30 15:29:50 +08:00
commit 4d30803b60
1154 changed files with 184340 additions and 0 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3894
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+425
View File
@@ -0,0 +1,425 @@
+(function(w){w.CHALLENGE_FLOOR_BOOT={currencyRates:{
USD: { symbol: '$', rate: 1 },
GBP: { symbol: '£', rate: 1 },
CAD: { symbol: '$', rate: 1 },
AUD: { symbol: '$', rate: 1 },
EUR: { symbol: '€', rate: 1 },
},programData:{
'1step': {
USD: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','25k','50k','100k','200k'],
data: {
'10k': { fee: '89', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:2},
'25k': { fee: '179', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:3 },
'50k': { fee: '359', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:4 },
'100k': { fee: '579', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:5 },
'200k': { fee: '1,239', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:7 }
}
},
GBP: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','20k','35k','70k','140k'],
data: {
'10k': { fee: '68', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:2},
'20k': { fee: '136', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:3 },
'35k': { fee: '272', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:4 },
'70k': { fee: '438', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:5 },
'140k': { fee: '937', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:7 }
}
},
CAD: {
defaultSize: '15k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['15k','30k','65k','130k','260k'],
data: {
'15k': { fee: '125', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:2},
'30k': { fee: '251', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:3 },
'65k': { fee: '502', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:4 },
'130k': { fee: '810', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:5 },
'260k': { fee: '1732', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:7 }
}
},
AUD: {
defaultSize: '15k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['15k','30k','65k','130k','260k'],
data: {
'15k': { fee: '129', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:2},
'30k': { fee: '259', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:3 },
'65k': { fee: '519', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:4 },
'130k': { fee: '836', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:5 },
'260k': { fee: '1789', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:7 }
}
},
EUR: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','20k','40k','80k','160k'],
data: {
'10k': { fee: '78', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:2},
'20k': { fee: '155', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:3 },
'40k': { fee: '311', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:4 },
'80k': { fee: '502', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:5 },
'160k': { fee: '1073', daily: '3%', max: '5%', target: '8%', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:13, variant_id:7 }
}
}
},
'2step': {
USD: {
defaultSize: '10k',
best_value_lable:['100k'],
discount_lable:[],
availableSizes: ['10k', '25k', '50k', '100k', '200k'],
data: {
'10k': { fee: '109', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:9 },
'25k': { fee: '219', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:10 },
'50k': { fee: '359', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:11 },
'100k': { fee: '589', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:12 },
'200k': { fee: '1,249', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:14 }
}
},
GBP: {
defaultSize: '10k',
best_value_lable:['70k'],
discount_lable:[],
availableSizes: ['10k','20k','35k','70k','140k'],
data: {
'10k': { fee: '83', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:9 },
'20k': { fee: '166', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:10 },
'35k': { fee: '272', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:11 },
'70k': { fee: '446', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:12 },
'140k': { fee: '945', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:14 }
}
},
CAD: {
defaultSize: '15k',
best_value_lable:['130k'],
discount_lable:[],
availableSizes: ['15k','30k','65k','130k','260k'],
data: {
'15k': { fee: '153', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:9 },
'30k': { fee: '307', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:10 },
'65k': { fee: '502', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:11 },
'130k': { fee: '824', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:12 },
'260k': { fee: '1746', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:14 }
}
},
AUD: {
defaultSize: '15k',
best_value_lable:['130k'],
discount_lable:[],
availableSizes: ['15k','30k','65k','130k','260k'],
data: {
'15k': { fee: '158', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:9 },
'30k': { fee: '317', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:10 },
'65k': { fee: '519', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:11 },
'130k': { fee: '851', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:12 },
'260k': { fee: '1803', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:14 }
}
},
EUR: {
defaultSize: '10k',
best_value_lable:['80k'],
discount_lable:[],
availableSizes: ['10k','20k','40k','80k','160k'],
data: {
'10k': { fee: '95', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:9 },
'20k': { fee: '190', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:10 },
'40k': { fee: '311', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:11 },
'80k': { fee: '510', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:12 },
'160k': { fee: '1082', daily: ' 3%', max: '8%', target: '<div class="chall-phase-stack"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">5%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">8%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allowed', product_id:14, variant_id:14 }
}
}
},
'3step': {
USD: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k', '25k', '50k', '100k', '200k'],
data: {
'10k': { fee: '69', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:16},
'25k': { fee: '149', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:17 },
'50k': { fee: '299', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:18 },
'100k': { fee: '459', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:19 },
'200k': { fee: '909', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:21 }
}
},
GBP: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','20k','35k','70k','140k'],
data: {
'10k': { fee: '53', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:16},
'20k': { fee: '113', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:17 },
'35k': { fee: '227', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:18 },
'70k': { fee: '348', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:19 },
'140k': { fee: '688', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:21 }
}
},
CAD: {
defaultSize: '15k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['15k','30k','65k','130k','260k'],
data: {
'15k': { fee: '97', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:16},
'30k': { fee: '209', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:17 },
'65k': { fee: '418', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:18 },
'130k': { fee: '642', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:19 },
'260k': { fee: '1271', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:21 }
}
},
AUD: {
defaultSize: '15k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['15k','30k','65k','130k','260k'],
data: {
'15k': { fee: '100', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:16},
'30k': { fee: '216', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:17 },
'65k': { fee: '432', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:18 },
'130k': { fee: '663', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:19 },
'260k': { fee: '1313', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:21 }
}
},
EUR: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','20k','40k','80k','160k'],
data: {
'10k': { fee: '60', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:16},
'20k': { fee: '129', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:17 },
'40k': { fee: '259', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:18 },
'80k': { fee: '398', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:19 },
'160k': { fee: '787', daily: ' 3%', max: '5%', target: '<div class="chall-phase-stack chall-phase-stack--3"><div class="chall-phase-line"><span class="chall-phase-name">Phase 1</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 2</span><span class="chall-phase-pct text-orange">3%</span></div><div class="chall-phase-line"><span class="chall-phase-name">Phase 3</span><span class="chall-phase-pct text-orange">5%</span></div></div>', split: '80%~95%', miniday: '3 days', payout: '14 days', news: 'Allow', product_id:15, variant_id:21 }
}
}
},
'instant': {
pro: {
USD: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '109', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:23 },
'25k': { fee: '219', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:24 },
'50k': { fee: '399', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:25 },
}
},
GBP: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','20k','35k'],
data: {
'10k': { fee: '83', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:23 },
'20k': { fee: '166', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:24 },
'35k': { fee: '302', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:25 },
}
},
CAD: {
defaultSize: '15k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['15k','30k','65k'],
data: {
'15k': { fee: '153', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:23 },
'30k': { fee: '307', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:24 },
'65k': { fee: '558', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:25 },
}
},
AUD: {
defaultSize: '15k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['15k','30k','65k'],
data: {
'15k': { fee: '158', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:23 },
'30k': { fee: '317', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:24 },
'65k': { fee: '576', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:25 },
}
},
EUR: {
defaultSize: '10k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['10k','20k','40k'],
data: {
'10k': { fee: '95', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:23 },
'20k': { fee: '190', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:24 },
'40k': { fee: '346', daily: '2%', max: '5%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:4, variant_id:25 },
}
}
},
aifo: {
USD: {
defaultSize: '100k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['100k', '200k'],
data: {
'100k': { fee: '749', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:33 },
'200k': { fee: '1,199', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:35 }
}
},
GBP: {
defaultSize: '70k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['70k','140k'],
data: {
'70k': { fee: '567', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:33 },
'140k': { fee: '907', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:35 }
}
},
CAD: {
defaultSize: '130k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['130k','260k'],
data: {
'130k': { fee: '1047', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:33 },
'260k': { fee: '1676', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:35 }
}
},
AUD: {
defaultSize: '130k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['130k','260k'],
data: {
'130k': { fee: '1082', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:33 },
'260k': { fee: '1731', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:35 }
}
},
EUR: {
defaultSize: '80k',
best_value_lable:[],
discount_lable:[],
availableSizes: ['80k','160k'],
data: {
'80k': { fee: '649', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:33 },
'160k': { fee: '1039', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:5, variant_id:35 }
}
}
},
NoCommission: {
USD: {
defaultSize: '100k',
best_value_lable:['100k'],
discount_lable:[],
availableSizes: ['100k'],
data: {
'100k': { fee: '869', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow', product_id:19, variant_id:36},
}
},
GBP: {
defaultSize: '70k',
best_value_lable:['70k'],
discount_lable:[],
availableSizes: ['70k'],
data: {
'70k': { fee: '658', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow',product_id:19, variant_id:36 },
}
},
CAD: {
defaultSize: '130k',
best_value_lable:['130k'],
discount_lable:[],
availableSizes: ['130k'],
data: {
'130k': { fee: '1215', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow',product_id:19, variant_id:36 },
}
},
AUD: {
defaultSize: '130k',
best_value_lable:['130k'],
discount_lable:[],
availableSizes: ['130k'],
data: {
'130k': { fee: '1255', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow',product_id:19, variant_id:36 },
}
},
EUR: {
defaultSize: '80k',
best_value_lable:['80k'],
discount_lable:[],
availableSizes: ['80k'],
data: {
'80k': { fee: '753', daily: '2%', max: '4%', target: '4%', consistency: '15%|25%', split: '80%~95%', payout: 'payout on demand', news: 'Allow',product_id:19, variant_id:36 },
}
}
}
},
'aifolite': {
USD: {
defaultSize: '10k',
best_value_lable: ['25k'],
discount_lable: [],
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '149', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 38 },
'25k': { fee: '329', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 39 },
'50k': { fee: '599', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 40 }
}
},
GBP: {
defaultSize: '10k',
best_value_lable: ['25k'],
discount_lable: [],
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '149', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 38 },
'25k': { fee: '329', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 39 },
'50k': { fee: '599', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 40 }
}
},
CAD: {
defaultSize: '10k',
best_value_lable: ['25k'],
discount_lable: [],
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '149', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 38 },
'25k': { fee: '329', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 39 },
'50k': { fee: '599', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 40 }
}
},
AUD: {
defaultSize: '10k',
best_value_lable: ['25k'],
discount_lable: [],
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '149', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 38 },
'25k': { fee: '329', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 39 },
'50k': { fee: '599', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 40 }
}
},
EUR: {
defaultSize: '10k',
best_value_lable: ['25k'],
discount_lable: [],
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '149', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 38 },
'25k': { fee: '329', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 39 },
'50k': { fee: '599', target: '3%', enhanced_target: '6%+', window: '24 Hours', floating: '1%', max: '2%', split: '90%~95%', payout: 'within 24h', product_id: 23, variant_id: 40 }
}
}
}
}
};})(typeof window !== "undefined" ? window : this);
File diff suppressed because it is too large Load Diff
+57
View File
@@ -0,0 +1,57 @@
document.addEventListener('DOMContentLoaded', () => {
const images = document.querySelectorAll('.article_content img');
if (!images.length) return;
// 创建 lightbox
const lightbox = document.createElement('div');
lightbox.className = 'img-lightbox';
lightbox.innerHTML = '<img src="" alt="">';
document.body.appendChild(lightbox);
const lightboxImg = lightbox.querySelector('img');
let scale = 1;
const SCALE_STEP = 0.1;
const SCALE_MIN = 1;
const SCALE_MAX = 3;
function updateScale() {
lightboxImg.style.transform = `scale(${scale})`;
lightboxImg.style.cursor = scale > 1 ? 'zoom-out' : 'zoom-in';
}
images.forEach(img => {
img.addEventListener('click', () => {
lightboxImg.src = img.src;
scale = 1;
updateScale();
lightbox.classList.add('active');
});
});
// 鼠标滚轮缩放
lightbox.addEventListener('wheel', (e) => {
e.preventDefault();
if (!lightbox.classList.contains('active')) return;
if (e.deltaY < 0) {
scale = Math.min(scale + SCALE_STEP, SCALE_MAX);
} else {
scale = Math.max(scale - SCALE_STEP, SCALE_MIN);
}
updateScale();
}, { passive: false });
// 点击背景关闭
lightbox.addEventListener('click', (e) => {
if (e.target !== lightboxImg) {
lightbox.classList.remove('active');
lightboxImg.src = '';
scale = 1;
updateScale();
}
});
});
+31
View File
@@ -0,0 +1,31 @@
"use strict";
$(document).ready(function() {
// Plugins init
$(".highlight")[0] && hljs.initHighlightingOnLoad();
// Copy code blocks to clipboard
$("figure.highlight, div.highlight").each(function() {
var t = '<div class="code-clipboard"><button class="btn-clipboard" title="Copy to clipboard">Copy</button></div>';
$(this).before(t);
$(".btn-clipboard").tooltip().on("mouseleave", function() {
$(this).tooltip("hide")
});
});
var t = new Clipboard(".btn-clipboard", {
target: function(e) {
return e.parentNode.nextElementSibling
}
});
t.on("success", function(t) {
e(t.trigger).attr("title", "Copied!").tooltip("_fixTitle").tooltip("show").attr("title", "Copy to clipboard").tooltip("_fixTitle");
t.clearSelection()
});
t.on("error", function(t) {
var n = /Mac/i.test(navigator.userAgent) ? "⌘" : "Ctrl-";
var r = "Press " + n + "C to copy";
e(t.trigger).attr("title", r).tooltip("_fixTitle").tooltip("show").attr("title", "Copy to clipboard").tooltip("_fixTitle")
});
});
+7
View File
@@ -0,0 +1,7 @@
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('[data-include]').forEach(el => {
fetch(el.dataset.include)
.then(res => res.text())
.then(html => el.innerHTML = html);
});
});
+927
View File
@@ -0,0 +1,927 @@
"use strict";
(function($){
$(window).on("load", function() {
}),
$(window).on('load resize', function() {
// Background image holder - Static hero with fullscreen autosize
if ($('.spotlight').length) {
$('.spotlight').each(function() {
var $this = $(this);
var holderHeight;
if ($this.data('spotlight') == 'fullscreen') {
if ($this.data('spotlight-offset')) {
var offsetHeight = $('body').find($this.data('spotlight-offset')).height();
holderHeight = $(window).height() - offsetHeight;
}
else {
holderHeight = $(window).height();
}
if ($(window).width() > 991) {
$this.find('.spotlight-holder').css({
'height': holderHeight + 'px'
});
}
else {
$this.find('.spotlight-holder').css({
'height': 'auto'
});
}
}
})
}
}),
$(document).ready(function() {
// Plugins init
$(".scrollbar-inner")[0] && $(".scrollbar-inner").scrollbar().scrollLock();
$('[data-stick-in-parent="true"]')[0] && $('[data-stick-in-parent="true"]').stick_in_parent();
$('.selectpicker')[0] && $('.selectpicker').selectpicker();
$('.textarea-autosize')[0] && autosize($('.textarea-autosize'));
$('[data-toggle="tooltip"]').tooltip();
$('[data-toggle="popover"]').each(function() {
var popoverClass = '';
if($(this).data('color')) {
popoverClass = 'popover-'+$(this).data('color');
}
$(this).popover({
trigger: 'focus',
template: '<div class="popover '+ popoverClass +'" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
})
});
// Floating label
$('.form-control').on('focus blur', function(e) {
$(this).parents('.form-group').toggleClass('focused', (e.type === 'focus' || this.value.length > 0));
}).trigger('blur');
// Custom input file
$('.custom-input-file').each(function() {
var $input = $(this),
$label = $input.next('label'),
labelVal = $label.html();
$input.on('change', function(e) {
var fileName = '';
if (this.files && this.files.length > 1)
fileName = (this.getAttribute('data-multiple-caption') || '').replace('{count}', this.files.length);
else if (e.target.value)
fileName = e.target.value.split('\\').pop();
if (fileName)
$label.find('span').html(fileName);
else
$label.html(labelVal);
});
// Firefox bug fix
$input.on('focus', function() {
$input.addClass('has-focus');
})
.on('blur', function() {
$input.removeClass('has-focus');
});
});
// NoUI Slider
if ($(".input-slider-container")[0]) {
$('.input-slider-container').each(function() {
var slider = $(this).find('.input-slider');
var sliderId = slider.attr('id');
var minValue = slider.data('range-value-min');
var maxValue = slider.data('range-value-max');
var sliderValue = $(this).find('.range-slider-value');
var sliderValueId = sliderValue.attr('id');
var startValue = sliderValue.data('range-value-low');
var c = document.getElementById(sliderId),
d = document.getElementById(sliderValueId);
noUiSlider.create(c, {
start: [parseInt(startValue)],
connect: [true, false],
//step: 1000,
range: {
'min': [parseInt(minValue)],
'max': [parseInt(maxValue)]
}
});
c.noUiSlider.on('update', function(a, b) {
d.textContent = a[b];
});
})
}
if ($("#input-slider-range")[0]) {
var c = document.getElementById("input-slider-range"),
d = document.getElementById("input-slider-range-value-low"),
e = document.getElementById("input-slider-range-value-high"),
f = [d, e];
noUiSlider.create(c, {
start: [parseInt(d.getAttribute('data-range-value-low')), parseInt(e.getAttribute('data-range-value-high'))],
connect: !0,
range: {
min: parseInt(c.getAttribute('data-range-value-min')),
max: parseInt(c.getAttribute('data-range-value-max'))
}
}), c.noUiSlider.on("update", function(a, b) {
f[b].textContent = a[b]
})
}
// Scroll to anchor with animation
$('.scroll-me, .toc-entry a').on('click', function(event) {
var hash = $(this).attr('href');
var offset = $(this).data('scroll-to-offset') ? $(this).data('scroll-to-offset') : 0;
// Animate scroll to the selected section
$('html, body').stop(true, true).animate({
scrollTop: $(hash).offset().top - offset
}, 600);
event.preventDefault();
});
}),
$(document).ready(function() {
$("body").on("click", "[data-action]", function(e) {
e.preventDefault();
var $this = $(this);
var action = $this.data('action');
var target = '';
switch (action) {
case "offcanvas-open":
target = $this.data("target"), $(target).addClass("open"), $("body").append('<div class="body-backdrop" data-action="offcanvas-close" data-target=' + target + " />");
break;
case "offcanvas-close":
target = $this.data("target"), $(target).removeClass("open"), $("body").find(".body-backdrop").remove();
break;
case 'aside-open':
target = $this.data('target');
$this.data('action', 'aside-close');
$this.addClass('toggled');
$(target).addClass('toggled');
$('.content').append('<div class="body-backdrop" data-action="aside-close" data-target='+target+' />');
break;
case 'aside-close':
target = $this.data('target');
$this.data('action', 'aside-open');
$('[data-action="aside-open"], '+target).removeClass('toggled');
$('.content, .header').find('.body-backdrop').remove();
break;
}
})
});
// nav
// Check if top code bar is visible
function isTopCodeBarVisible() {
const $topCodeBar = $('.top-code-bar');
// If element doesn't exist
if (!$topCodeBar.length) {
return false;
}
// Use jQuery method to check if visible
return $topCodeBar.is(':visible') && $topCodeBar.css('visibility') !== 'hidden' && $topCodeBar.height() > 0;
}
function isMobileNavViewport() {
if (window.matchMedia("(max-width: 991.98px)").matches) {
return true;
}
if (window.matchMedia("(min-width: 992px)").matches) {
return false;
}
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i
.test(navigator.userAgent);
}
function initDesktopFixedNav() {
if (isMobileNavViewport()) return;
const $nav = $('#nav');
if (!$nav.length) return;
const threshold = 35;
const defaultTop = isTopCodeBarVisible() ? '35px' : '0';
const fixedTop = '0';
$nav.css({
'position': 'fixed',
'top': defaultTop,
'left': '0',
'width': '100%',
'z-index': '1500',
'background-color': 'rgba(0, 0, 0, 0.4)',
'box-shadow': '0 2px 10px rgba(0,0,0,0.1)',
'transition': 'none'
});
function updateNavPosition() {
const isdefaultTop = isTopCodeBarVisible();
if (!isdefaultTop) {
$nav.css('top', fixedTop);
return;
}
const scrollTop = $(window).scrollTop();
$nav.css('top', scrollTop > threshold ? fixedTop : defaultTop);
}
$(window).off('scroll.aifoNav resize.aifoNav');
$(window).on('scroll.aifoNav resize.aifoNav', updateNavPosition);
updateNavPosition();
}
$(document).ready(initDesktopFixedNav);
document.addEventListener('aifo:layout-ready', initDesktopFixedNav);
// Seaction-2
$(function() {
// Check if jQuery UI is loaded (for easing functions)
const hasJQueryUI = typeof $.easing !== 'undefined';
const $section2 = $('#section-2');
// Counter data
const counters = [
{ index: 0, start: 1000, end: 50000, suffix: '+' },
{ index: 1, start: 1, end: 20, suffix: 'M+' },
{ index: 2, start: 1000, end: 70000, suffix: '+' }
];
// Listen to elements entering viewport
const observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Add fade-in class (if not already)
if (!$section2.hasClass('fade-in')) {
$section2.addClass('fade-in');
}
triggerCounters();
// Listen to animation end
// $section2.one('animationend webkitAnimationEnd oanimationend MSAnimationEnd', function() {
// });
observer.unobserve(entry.target);
}
});
}, { threshold: 0.2 });
// Check if element exists
if ($section2.length) {
observer.observe($section2[0]);
}
function triggerCounters() {
setTimeout(function() {
counters.forEach(function(counter) {
const $counter = $('#section-2 .counter').eq(counter.index);
if ($counter.length) {
animateValue(
$counter,
counter.start,
counter.end,
counter.suffix,
2000,
hasJQueryUI ? 'easeOutElastic' : 'easeOutCubic'
);
}
});
}, 600);
}
// Animation function
function animateValue($element, start, end, suffix, duration, easing) {
let startTimestamp = null;
// Easing function
function getEasing(progress) {
switch(easing) {
case 'easeOutCubic':
return 1 - Math.pow(1 - progress, 3);
case 'easeOutElastic':
const c4 = (2 * Math.PI) / 3;
return progress === 0 ? 0 :
progress === 1 ? 1 :
Math.pow(2, -10 * progress) * Math.sin((progress * 10 - 0.75) * c4) + 1;
default:
return progress;
}
}
// Format number
function formatNumber(num) {
return num.toLocaleString('en-US');
}
// Animation step
function step(timestamp) {
if (!startTimestamp) startTimestamp = timestamp;
const elapsed = timestamp - startTimestamp;
const progress = Math.min(elapsed / duration, 1);
const easedProgress = getEasing(progress);
const current = Math.floor(start + (end - start) * easedProgress);
// Update display
if (suffix === 'M+') {
$element.text('$'+current + suffix);
} else {
$element.text(formatNumber(current) + suffix);
}
if (progress < 1) {
requestAnimationFrame(step);
}
}
requestAnimationFrame(step);
}
});
/* =========================
Intersection fade-in (pixel-precise)
and lazy loaders for floor loading
========================= */
const io = new IntersectionObserver((entries, obs) => {
entries.forEach(e=>{
if(e.isIntersecting){
$(e.target).addClass('show');
obs.unobserve(e.target);
}
});
},{threshold:0.12});
$(function(){
$('.fade-in').each(function(){ io.observe(this); });
});
// ============================================
// challenge
// ============================================
const appState = {
programType: '1step',
instantMode: 'pro',
accountSize: '10k',
expandedParam: null
};
const programData = {
'1step': {
defaultSize: '10k',
availableSizes: ['10k', '25k', '50k', '100k', '200k'],
data: {
'10k': { fee: '$89', daily: '3%', max: '5%', target: '8%', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'25k': { fee: '$179', daily: '3%', max: '5%', target: '8%', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'50k': { fee: '$359', daily: '3%', max: '5%', target: '8%', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'100k': { fee: '$579', daily: '3%', max: '5%', target: '8%', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'200k': { fee: '$1,239', daily: '3%', max: '5%', target: '8%', split: '70%~95%', payout: '14 days', news: 'Allowed' }
}
},
'2step': {
defaultSize: '10k',
availableSizes: ['10k', '25k', '50k', '100k', '200k'],
data: {
'10k': { fee: '$109', daily: ' 3%', max: '8%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span><br> Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 8%</span>', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'25k': { fee: '$219', daily: ' 3%', max: '8%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span><br> Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 8%</span>', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'50k': { fee: '$359', daily: ' 3%', max: '8%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span><br> Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 8%</span>', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'100k': { fee: '$589', daily: ' 3%', max: '8%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span><br> Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 8%</span>', split: '70%~95%', payout: '14 days', news: 'Allowed' },
'200k': { fee: '$1,249', daily: ' 3%', max: '8%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span><br> Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 8%</span>', split: '70%~95%', payout: '14 days', news: 'Allowed' }
}
},
'3step': {
defaultSize: '10k',
availableSizes: ['10k', '25k', '50k', '100k', '200k'],
data: {
'10k': { fee: '$69', daily: ' 3%', max: '5%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 3&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span>', split: '70%~95%', payout: '14 days', news: 'Allow' },
'25k': { fee: '$149', daily: ' 3%', max: '5%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 3&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span>', split: '70%~95%', payout: '14 days', news: 'Allow' },
'50k': { fee: '$299', daily: ' 3%', max: '5%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 3&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span>', split: '70%~95%', payout: '14 days', news: 'Allow' },
'100k': { fee: '$459', daily: ' 3%', max: '5%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 3&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span>', split: '70%~95%', payout: '14 days', news: 'Allow' },
'200k': { fee: '$909', daily: ' 3%', max: '5%', target: 'Phase 1&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 2&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 3%</span><br>Phase 3&nbsp;&nbsp;&nbsp;&nbsp;<span class="text-orange"> 5%</span>', split: '70%~95%', payout: '14 days', news: 'Allow' }
}
},
'instant': {
pro: {
defaultSize: '10k',
availableSizes: ['10k', '25k', '50k'],
data: {
'10k': { fee: '$1091', daily: '2%', max: '5%', target: '4%', split: '70%~95%', payout: 'payout on demand', news: 'Allow' },
'25k': { fee: '$219', daily: '2%', max: '5%', target: '4%', split: '70%~95%', payout: 'payout on demand', news: 'Allow' },
'50k': { fee: '$399', daily: '2%', max: '5%', target: '4%', split: '70%~95%', payout: 'payout on demand', news: 'Allow' },
}
},
aifo: {
defaultSize: '100k',
availableSizes: ['100k', '200k'],
data: {
'100k': { fee: '$749', daily: '2%', max: '4%', target: '4%', split: '70%~95%', payout: 'payout on demand', news: 'Allow' },
'200k': { fee: '$1,199', daily: '2%', max: '4%', target: '4%', split: '70%~95%', payout: 'payout on demand', news: 'Allow' }
}
}
}
};
const parameterDescriptions = {
'Challenge Fee': 'One-time fee to participate in the challenge program',
'Daily Drawdown': 'Maximum percentage loss allowed in a single trading day based on the previous days closing balance or equity.',
'Max Drawdown': 'The Maximum Loss Limit is the maximum allowable loss calculated based on the highest equity value your account reaches during the evaluation or trading phase.',
'Profit Target': 'The percentage gain required to successfully complete each phase of the challenge.',
'withdrawable profit': 'The Profit Target refers to the required percentage of withdrawable profit that the account must achieve before a payout can be requested.',
'Profit split': 'Percentage of profits you keep. The firm keeps the remainder.',
'Payout period': 'Minimum time required before you can request a withdrawal of profits.',
'News Trading': ''
};
// const parameterNames = ['Challenge Fee', 'Daily Drawdown', 'Max Drawdown', 'Profit Target', 'Profit split', 'Payout period', 'News Trading'];
const parameterNames = ['Challenge Fee', 'Daily Drawdown', 'Max Drawdown', 'Profit Target', 'Profit split', 'Payout period'];
const parameterNames_instant = ['Challenge Fee', 'Daily Drawdown', 'Max Drawdown', 'withdrawable profit', 'Profit split', 'Payout period'];
// ============================================
// 工具函数
// ============================================
function getIconSVG(paramName) {
const icons = {
'Challenge Fee': '<img src="./assets/images/backgrounds/svg/Component 26.svg" alt="Funded Trading" class="chall-icon">',
'Daily Drawdown': '<img src="./assets/images/backgrounds/svg/Component 27.svg" alt="Funded Trading" class="chall-icon">',
'Max Drawdown': '<img src="./assets/images/backgrounds/svg/Component 28.svg" alt="Funded Trading" class="chall-icon">',
'Profit Target': '<img src="./assets/images/backgrounds/svg/Component 29.svg" alt="Funded Trading" class="chall-icon">',
'withdrawable profit': '<img src="./assets/images/backgrounds/svg/Component 29.svg" alt="Funded Trading" class="chall-icon">',
'Profit split': '<img src="./assets/images/backgrounds/svg/Component 30.svg" alt="Funded Trading" class="chall-icon">',
'Payout period': '<img src="./assets/images/backgrounds/svg/Component 31.svg" alt="Funded Trading" class="chall-icon">',
'News Trading': '<img src="./assets/images/backgrounds/svg/Component 32.svg" alt="Funded Trading" class="chall-icon">'
};
return icons[paramName] || '';
}
function getCurrentProgramConfig() {
if (appState.programType === 'instant') {
return programData.instant[appState.instantMode];
}
return programData[appState.programType];
}
function getDataForSize(size) {
const config = getCurrentProgramConfig();
return config.data[size];
}
function formatAccountSize(size) {
const formats = {
'10k': '$10K',
'25k': '$25K',
'50k': '$50K',
'100k': '$100K',
'200k': '$200K'
};
return formats[size] || size;
}
function getParamKey(paramName) {
const keyMap = {
'Challenge Fee': 'fee',
'Daily Drawdown': 'daily',
'Max Drawdown': 'max',
'Profit Target': 'target',
'withdrawable profit':'target',
'Profit split': 'split',
'Payout period': 'payout',
'News Trading': 'news'
};
return keyMap[paramName];
}
// ============================================
// 桌面版渲染
// ============================================
function renderDesktopTable(type) {
const config = getCurrentProgramConfig();
const sizes = config.availableSizes;
let html = '';
var param = parameterNames;
if(type=="aifo" || type=="pro" || type=="instant"){
param = parameterNames_instant;
}
param.forEach(paramName => {
const paramKey = getParamKey(paramName);
const rowId = paramName.replace(/\s+/g, '-').toLowerCase();
// 参数行
html += `<tr class="param-data-row" data-param="${paramName}">`;
html += `<td>
<div class="param-name-cell">
<div class="param-icon">${getIconSVG(paramName)}</div>
<div class="param-name">${paramName}</div>
<div class="expand-btn ${appState.expandedParam === paramName ? 'expanded' : ''}">
<img src="./assets/images/backgrounds/arraw-icon.png" alt="Funded Trading" class="arraw-icon-table">
</div>
</div>
</td>`;
// 各账户大小的数值
sizes.forEach(size => {
const data = getDataForSize(size);
html += `<td>${data[paramKey]}</td>`;
});
html += `</tr>`;
// 展开说明行
html += `<tr class="challenge-row-expand ${appState.expandedParam === paramName ? 'show' : ''}" data-expand="${paramName}">`;
html += `<td colspan="6">${parameterDescriptions[paramName]}</td>`;
html += `</tr>`;
});
$('#desktopTableBody').html(html);
}
// ============================================
// 移动版渲染
// ============================================
function renderMobileAccountSizes() {
const config = getCurrentProgramConfig();
const sizes = config.availableSizes;
const buttons = sizes.map(size => {
const label = formatAccountSize(size);
const activeClass = size === appState.accountSize ? 'active' : '';
return `<button class="mobile-size-btn ${activeClass}" data-size="${size}">${label}</button>`;
}).join('');
$('#mobileAccountSizes').html(buttons);
if (!sizes.includes(appState.accountSize)) {
appState.accountSize = config.defaultSize;
}
}
function renderMobileParams(type) {
const data = getDataForSize(appState.accountSize);
let html = '';
var param = parameterNames;
if(type=="aifo" || type=="pro" || type=="instant"){
param = parameterNames_instant;
}
param.forEach(paramName => {
const paramKey = getParamKey(paramName);
html += `<div>
<div class="mobile-param-row" data-param="${paramName}">
<div class="mobile-param-left">
<div class="param-icon">${getIconSVG(paramName)}</div>
<div class="param-name">${paramName}</div>
<div class="expand-btn ${appState.expandedParam === paramName ? 'expanded' : ''}">
<img src="./assets/images/backgrounds/arraw-icon.png" alt="Funded Trading" class="arraw-icon-table">
</div>
</div>
<div class="mobile-param-value">${data[paramKey]}</div>
</div>
<div class="mobile-param-description ${appState.expandedParam === paramName ? 'show' : ''}" data-desc="${paramName}">
${parameterDescriptions[paramName]}
</div>
</div>`;
});
$('#mobileParamsList').html(html);
}
function updateMobileAmount() {
$('#mobileAmount').text(formatAccountSize(appState.accountSize));
}
// ============================================
// 状态切换
// ============================================
function changeProgramType(newType) {
appState.programType = newType;
const config = getCurrentProgramConfig();
appState.accountSize = config.defaultSize;
appState.expandedParam = null;
renderDesktopTable(newType);
renderMobileAccountSizes();
renderMobileParams(newType);
updateMobileAmount();
}
function changeInstantMode(newMode) {
appState.instantMode = newMode;
const config = getCurrentProgramConfig();
if (!config.availableSizes.includes(appState.accountSize)) {
appState.accountSize = config.defaultSize;
}
appState.expandedParam = null;
renderDesktopTable(newMode);
renderMobileAccountSizes();
renderMobileParams(newMode);
updateMobileAmount();
}
function changeMobileAccountSize(newSize) {
appState.accountSize = newSize;
appState.expandedParam = null;
updateMobileAmount();
$('#mobileParamsList').fadeOut(150, function() {
const tabs = document.querySelectorAll('.challenge-tab');
var type = "step";
tabs.forEach(tab => {
if (tab.classList.contains('active')) {
const program = tab.dataset.program;
if(program == "instant"){
type = "instant";
}
}
});
renderMobileParams(type);
$(this).fadeIn(150);
});
}
// ============================================
// 事件监听
// ============================================
$(document).on('click', '.challenge-tab', function() {
$('.challenge-tab').removeClass('active');
$(this).addClass('active');
const newProgram = $(this).data('program');
const addons = document.querySelector('.challenge-addons');
if (newProgram === 'instant') {
$('#instantSubTabs').addClass('show');
document.querySelectorAll('.ch-pro')
.forEach(el => el.classList.remove('d-none'));
document.querySelectorAll('.ch-aifo')
.forEach(el => el.classList.add('d-none'));
if (addons) {
addons.classList.add('is-hidden');
}
} else {
document.querySelectorAll('.ch-pro')
.forEach(el => el.classList.remove('d-none'));
document.querySelectorAll('.ch-aifo')
.forEach(el => el.classList.remove('d-none'));
$('#instantSubTabs').removeClass('show');
if (addons) {
addons.classList.remove('is-hidden');
}
}
changeProgramType(newProgram);
});
$(document).on('click', '.instant-tab', function() {
$('.instant-tab').removeClass('active');
$(this).addClass('active');
const newMode = $(this).data('instant-type');
if (newMode === "pro") {
document.querySelectorAll('.ch-pro')
.forEach(el => el.classList.remove('d-none'));
document.querySelectorAll('.ch-aifo')
.forEach(el => el.classList.add('d-none'));
} else {
document.querySelectorAll('.ch-pro')
.forEach(el => el.classList.add('d-none'));
document.querySelectorAll('.ch-aifo')
.forEach(el => el.classList.remove('d-none'));
}
changeInstantMode(newMode);
});
$(document).on('click', '.mobile-size-btn', function() {
$('.mobile-size-btn').removeClass('active');
$(this).addClass('active');
const newSize = $(this).data('size');
changeMobileAccountSize(newSize);
});
$(document).on('click', '.param-data-row', function() {
const paramName = $(this).data('param');
if(paramName=="News Trading"){
return;
}
if (appState.expandedParam === paramName) {
appState.expandedParam = null;
} else {
appState.expandedParam = paramName;
}
$('.challenge-row-expand').removeClass('show');
$('.param-data-row .expand-btn').removeClass('expanded');
if (appState.expandedParam) {
$(`.challenge-row-expand[data-expand="${appState.expandedParam}"]`).addClass('show');
$(this).find('.expand-btn').addClass('expanded');
}
});
$(document).on('click', '.mobile-param-row', function() {
const paramName = $(this).data('param');
if (appState.expandedParam === paramName) {
appState.expandedParam = null;
} else {
appState.expandedParam = paramName;
}
$('.mobile-param-description').removeClass('show');
$('.mobile-param-row .expand-btn').removeClass('expanded');
if (appState.expandedParam) {
$(`.mobile-param-description[data-desc="${appState.expandedParam}"]`).addClass('show');
$(this).find('.expand-btn').addClass('expanded');
}
});
$(document).on('click', '.start-challenge-btn', function() {
const size = $(this).data('size');
console.log('Start Challenge:', {
programType: appState.programType,
instantMode: appState.instantMode,
accountSize: size
});
});
$(document).on('click', '.mobile-start-btn', function() {
console.log('Start Challenge:', {
programType: appState.programType,
instantMode: appState.instantMode,
accountSize: appState.accountSize
});
});
// ============================================
// 初始化
// ============================================
$(document).ready(function() {
renderDesktopTable();
renderMobileAccountSizes();
renderMobileParams();
updateMobileAmount();
});
})(jQuery);
/* ===========================================================
Reusable Carousel Class
=========================================================== */
class Carousel {
constructor(opts) {
this.container = document.querySelector(opts.container);
this.track = this.container.querySelector(".carousel-track");
this.items = [...this.track.children];
this.prevBtn = document.getElementById(opts.prev);
this.nextBtn = document.getElementById(opts.next);
this.dotsContainer = document.querySelector(opts.dots);
this.index = 0;
this.pageWidth = this.items[0].offsetWidth + 40; // including margin
this.setupDots();
this.update();
this.bindEvents();
}
setupDots() {
this.dotsContainer.innerHTML = "";
this.items.forEach((_, i) => {
const dot = document.createElement("div");
dot.className = "dot";
dot.addEventListener("click", () => this.goTo(i));
this.dotsContainer.appendChild(dot);
});
}
bindEvents() {
this.prevBtn.addEventListener("click", () => this.prev());
this.nextBtn.addEventListener("click", () => this.next());
window.addEventListener("resize", () => {
this.pageWidth = this.items[0].offsetWidth + 40;
this.update();
});
}
prev() {
this.index = Math.max(0, this.index - 1);
this.update();
}
next() {
this.index = Math.min(this.items.length - 1, this.index + 1);
this.update();
}
goTo(i) {
this.index = i;
this.update();
}
update() {
const centerOffset = (window.innerWidth / 2) - (this.pageWidth / 2);
let x = this.index * this.pageWidth * -1 + centerOffset;
if (this.index === 0) x = 0;
if (this.index === this.items.length - 1) {
x = (this.items.length - 1) * this.pageWidth * -1 + (window.innerWidth - this.pageWidth);
}
this.track.style.transform = `translateX(${x}px)`;
[...this.dotsContainer.children].forEach((dot, i) => {
dot.classList.toggle("active", i === this.index);
});
}
}
function showInfoAlert(){
alert("New features are about to be launched");
}
+24
View File
@@ -0,0 +1,24 @@
/*!
* IE10 viewport hack for Surface/desktop Windows 8 bug
* Copyright 2014-2017 The Bootstrap Authors
* Copyright 2014-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// See the Getting Started docs for more information:
// https://getbootstrap.com/getting-started/#support-ie10-width
(function () {
'use strict'
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement('style')
msViewportStyle.appendChild(
document.createTextNode(
'@-ms-viewport{width:auto!important}'
)
)
document.head.appendChild(msViewportStyle)
}
}())
+44
View File
@@ -0,0 +1,44 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}});
+165
View File
@@ -0,0 +1,165 @@
/*!
* JavaScript Cookie v2.1.4
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
;(function (factory) {
var registeredInModuleLoader = false;
if (typeof define === 'function' && define.amd) {
define(factory);
registeredInModuleLoader = true;
}
if (typeof exports === 'object') {
module.exports = factory();
registeredInModuleLoader = true;
}
if (!registeredInModuleLoader) {
var OldCookies = window.Cookies;
var api = window.Cookies = factory();
api.noConflict = function () {
window.Cookies = OldCookies;
return api;
};
}
}(function () {
function extend () {
var i = 0;
var result = {};
for (; i < arguments.length; i++) {
var attributes = arguments[ i ];
for (var key in attributes) {
result[key] = attributes[key];
}
}
return result;
}
function init (converter) {
function api (key, value, attributes) {
var result;
if (typeof document === 'undefined') {
return;
}
// Write
if (arguments.length > 1) {
attributes = extend({
path: '/'
}, api.defaults, attributes);
if (typeof attributes.expires === 'number') {
var expires = new Date();
expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
attributes.expires = expires;
}
// We're using "expires" because "max-age" is not supported by IE
attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
try {
result = JSON.stringify(value);
if (/^[\{\[]/.test(result)) {
value = result;
}
} catch (e) {}
if (!converter.write) {
value = encodeURIComponent(String(value))
.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
} else {
value = converter.write(value, key);
}
key = encodeURIComponent(String(key));
key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
key = key.replace(/[\(\)]/g, escape);
var stringifiedAttributes = '';
for (var attributeName in attributes) {
if (!attributes[attributeName]) {
continue;
}
stringifiedAttributes += '; ' + attributeName;
if (attributes[attributeName] === true) {
continue;
}
stringifiedAttributes += '=' + attributes[attributeName];
}
return (document.cookie = key + '=' + value + stringifiedAttributes);
}
// Read
if (!key) {
result = {};
}
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling "get()"
var cookies = document.cookie ? document.cookie.split('; ') : [];
var rdecode = /(%[0-9A-Z]{2})+/g;
var i = 0;
for (; i < cookies.length; i++) {
var parts = cookies[i].split('=');
var cookie = parts.slice(1).join('=');
if (cookie.charAt(0) === '"') {
cookie = cookie.slice(1, -1);
}
try {
var name = parts[0].replace(rdecode, decodeURIComponent);
cookie = converter.read ?
converter.read(cookie, name) : converter(cookie, name) ||
cookie.replace(rdecode, decodeURIComponent);
if (this.json) {
try {
cookie = JSON.parse(cookie);
} catch (e) {}
}
if (key === name) {
result = cookie;
break;
}
if (!key) {
result[name] = cookie;
}
} catch (e) {}
}
return result;
}
api.set = api;
api.get = function (key) {
return api.call(api, key);
};
api.getJSON = function () {
return api.apply({
json: true
}, [].slice.call(arguments));
};
api.defaults = {};
api.remove = function (key, attributes) {
api(key, '', extend(attributes, {
expires: -1
}));
};
api.withConverter = init;
return api;
}
return init(function () {});
}));