var g = {
	payPalForm: 'payPalForm',
	signUpForm: 'signUp',
	accountForm: 'accountForm',
	liveAccount:  {
		id: 'liveAccount'
	},
	subscr: {
		monthly:8375609,
		yearly:8375647
	},
	fxnow: {
		client:'LV42SZJV5L7KW',
		nonclient:'Z49M6CPLRVJTC'
	},
	swing: {
		client:'RYRX6H67NB93Q',
		nonclient:'UQZW5VLL6HF7S'
	}
}
// INITIALIZATION ***********************************
jQuery(function($) {

$('noscript').remove();
if (getBodyId()==='home') {	
	var ctner = $('#section1Left'), imgCount = 2, n = 4;
	while (imgCount < n) {
		ctner.append('<img id="i'+imgCount+'" src="images/'+(imgCount+3)+'.jpg" alt="Get cash back when you trade forex" width="645" height="226" />');
		imgCount++;
	};
	$('#i1').click(function() {
		location = "cash-back.html";
	});

	$('#i2').click(function() {
		location = "chat-room-pay.html";
	});
	$('#i3').click(function() {
		location = "package.html";
	});
	ctner.cycle({
		speed: 2000,
		pause: 1
	});
}

if (document.getElementById('tweet')) {
	$("#tweet").tweet();
}
if (document.getElementById('acc_live')) {
	$("#chooseCountry a").click(function(e) {
		e.preventDefault();
		var i = this.href.substring(this.href.indexOf('#')+1);
		if ($('#'+g.liveAccount.id).length>0) {
			$('#'+g.liveAccount.id).attr('id','').parent('div.oneForm').fadeOut();
		}
		$('div.'+i).find('form')
			.attr('id',g.liveAccount.id)
			.attr('action','code/forms/process_liveAccountForm.php')
			.end()
			.fadeIn();
		var liveAccount = formContactBuilder( {formId : g.liveAccount.id, thanksId: '' } );
		liveAccount.prepareForm();
	});
}
// INITIALIZE CONTACT FORM

if (document.getElementById(g.signUpForm)) {
	$('#'+g.signUpForm).attr('action','code/forms/process_signup.php');
	
	var signUpForm = formContactBuilder( {formId : g.signUpForm, thanksId: '' } );
	signUpForm.prepareForm();
};
if (document.getElementById(g.accountForm)) {
	$('#'+g.accountForm).attr('action','code/forms/process_accountForm.php');
	
	var accountForm = formContactBuilder( {formId : g.accountForm, thanksId: '' } );
	accountForm.prepareForm();
};

if (document.getElementById('amd_contactform_fixed')) {
	$('#amd_contactform_fixed').attr('action','code/forms/process_contact.php');
	
	var contactForm = formContactBuilder( {formId : 'amd_contactform_fixed', thanksId: 'amf_response_thank' } );
	contactForm.prepareForm();
};
if (document.getElementById(g.payPalForm)) {
	var contactForm = formContactBuilder( {formId : g.payPalForm, thanksId: '' } );
	contactForm.prepareForm();
};

setUpHrefs();
if (document.getElementById('fxnowinfo')) {
	$("#contentRight").height($("#contentLeft").height()+90);
}

//START IE
/*@cc_on
//START IE6
if (parseInt(jQuery.browser.version)===6) { 
	$('a.am-hoverShw').append('<span></span>');	
	$('#menu li.trade,#menu li.about,#menu li.products,#menu li.fxcm').hover(
	  function () {
		$(this).addClass('ieOver');
	  }, 
	  function () {
		$(this).removeClass('ieOver');
	  }
	);
}//end IE6
@*/
//end IE
	
});//end init
// FUNCTIONS ***********************************
//GENERAL HELPER FUNCTIONS

function getBodyId() {
		return document.body.getAttribute('id');
	};

var formContactBuilder = function(paramsClass) {
	var paramsInstance = { };
	var that = formConstructor(paramsClass,paramsInstance);
	return that;
}

var formConstructor = function(paramsClass,paramsInstance) {
	
	var formId = '#' + paramsClass.formId,
		thanksId = paramsClass.thanksId,
		$formJQ = $(formId);

	var prepareForm = function() {

		$formJQ.find('.validate').focus( function() { 
			if (paramsClass.formId === g.signUpForm) {
				var li = formId;
				$(this).prev('label').fadeOut('slow');
			} else {
				var li = $(this).closest('li');
			}
			var errSpan = $(li).find('.error:visible')[0];
			if(errSpan) {
				if($(errSpan).closest('label')[0]) {
					$(errSpan).hide();
				} else {
					$(errSpan).hide('slow');
				}
			}
		});

		if (jQuery.browser.msie) {
			if (parseInt(jQuery.browser.version) < 7) {
				$formJQ.find('#submitBtn').hover(function() { 
					$(this).toggleClass("over"); },function() {
					$(this).toggleClass("over"); 
				});
			}
			$formJQ.find('input, textarea').focus(function() { 
				$(this).addClass('ieFocus');
			});
			$formJQ.find('input, textarea').blur(function() {
				$(this).removeClass('ieFocus');
			});
		};
		$('#fxNowSubscr').bind('change', function () { 
			if (this.value == 'client') {
				//console.log('152: ');
				$('#clientEmail,#clientEmailLabel').slideDown();
			} else {
				$('#clientEmail,#clientEmailLabel').hide();
			}
		})
		var options;
		switch(paramsClass.formId) {
		  case g.payPalForm:
				var options = { 
					beforeSubmit: validatePayPal
				};
			break; 
		  case g.signUpForm:
				var options = { 
					dataType: 'json',
					beforeSubmit: validate,
					success: showResponseSignUp
				};
			break;
		  case g.liveAccount.id:
				var options = { 
					dataType: 'json',
					beforeSubmit: validate,
					success: showResponseLiveAccount	
				};
			break;	
		  case g.accountForm:
				var options = { 
					dataType: 'json',
					beforeSubmit: validate,
					success: showResponseAccountForm	
				};
			break;	
		  default:
				var options = { 
					dataType: 'json',
					beforeSubmit: validate,
					success: showResponse 
				};			
			break;
		}

		
		$formJQ.ajaxForm(options);
	};

	var validate = function(formData, jqForm, options) { 
		var form = jqForm[0], err = 0, errThis;
		for (var i=0; i < formData.length; i++) {
			var $this = $(form [name=formData[i].name]);
			var v = formData[i].value;
			if ($this.hasClass('validate')) {
				if ($this.hasClass('notempty') || $this.hasClass('radio')) {
					errThis = valFields(v,$this,formData[i].type);
					err = err + Number(errThis);
				}
				if ($this.hasClass('email')) {
					errThis = valFields(v,$this,'email');
					err = err + Number(errThis);
				}
			}
		}
		return !err;
	};

	var valFields = function(v,$field,type) {
			var isErr, errMsg, errMsgElm;
		
		if (type === 'email') {
			isErr = !v.match(/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i);
			if (paramsClass.formId === g.signUpForm) {
				errMsg = 'Valid e-mail required!';
			} else {
				errMsg = 'Please enter a valid e-mail address!';
			}
		} else if (type === 'radio') {
			isErr = !jQuery.trim( v );
			errMsg = 'Please select one of the choices!';
		}  else {
			isErr = !jQuery.trim( v );
			if (paramsClass.formId === g.signUpForm) {
				errMsg = 'Name required!';
			} else {
				errMsg = 'Please fill out the field above!';
			}
		}
		errMsgElm = '<span class="error">'+errMsg+'</span>';
		if ( isErr ) {
			if (paramsClass.formId === g.signUpForm) {
				var li = formId;
			} else {
				var li = $field.closest('li');
			}
			
			errSpan = $(li).find('.error')[0];

			if ( !errSpan ) {
				$(li).append(errMsgElm);
				errSpan = $(li).find('.error')[0];
			} else if (paramsClass.formId === g.signUpForm) {
				$(errSpan).text(errMsg);
			}
			
			$(errSpan).show();
			if (paramsClass.formId === g.signUpForm) {
				$field.prev('label').show();
			}
		}
		
		return isErr;
	};
	
	var validatePayPal = function(formData, jqForm, options) {
		var form = jqForm[0];
		var sel = form.subscr.value;
		if(sel==='0') {
				$('#'+g.payPalForm).prepend('<span id="choosePlan" style="color: red;">Please choose the subscription plan!</span>');
				
			} else {
				if (getBodyId()==='learn') {
					goToPayPal(g.subscr[sel]);
				} else if (getBodyId()==='fxnow' || getBodyId()==='swing') {
					var thisPage = getBodyId();
					if (sel == 'client') {
						$.post('code/em.php', { clientEmail: form.clientEmail.value }, function(data) {
						//console.log('272: '+data);
						  if (data === "Y") {
							  goToPayPal(g[thisPage][sel]);
						  } else {
							  $('#clientEmailLabel').fadeOut('slow', function() {
								  $(this).text(data).addClass('warn').fadeIn('slow');
							  });
						  }
						});
					} else if (sel == 'nonclient') {
						//console.log('273: ');
						goToPayPal(g[thisPage][sel]);
					}
				}
			}
			return false;
	};
	var goToPayPal = function(v) {
		$('#payPalFormSend input[name="hosted_button_id"]')[0].value = v;
		$('#payPalFormSend').submit();
	}
	var showResponse = function(data)  {	
			$formJQ.unbind('submit').find('ol *').remove();
			var cont = $formJQ.closest('div');
			cont.slideUp('slow',function() {
				cont.empty()
				.addClass('processed')
				.append('<h3 id="' + thanksId + '">' + data.message + '</h3>').slideDown('slow');
			});
	};
	
	var showResponseSignUp = function(data)  {
		$formJQ.addClass('submitted').find('input').attr('disabled', 'disabled');
		$('#'+paramsClass.formId).append('<span class="error">'+data.message+'</span>');
	};
	
	var showResponseAccountForm = function(data) {
		if (data.message == 'acc') {
			location = data.loc;
			//window.open(data.loc);
		} else if (data.message == 'chat') {
			$formJQ.append('<li style="font-weight: bold;">Thank you for joining the chat room! We\'ll e-mail you the password shortly!</li>');
		}
	};
	var showResponseLiveAccount = function(data) {
		if (data.loc == 'error') {
			$('#chooseCountry').append('<li style="color:#ff0000";>The form was not sent because some unexpected error occured. Please contact us via e-mail. We apologize for the inconvenience.</li>');
			$formJQ.hide();
		} else {
			location = data.loc;
		}
	};
	var that = {};
	that.prepareForm = prepareForm;
	return that;
}
//END formConstructor
function replaceInStr(a,b,c) {
	var re = new RegExp(a , "g");
	return c.replace(re, b);
}
var setUpHrefs = function() {
	$('a[href]:not(.nosource)').each( function() { 
		var $t = $(this), 
		h = this.href,
		loc = location.href;
		
		if ( 
			h===loc || 
			((h.indexOf('index') > -1) && (g.id==='home')) 
			) 
		{
			$t.addClass('cur').click(function(e) {
				e.preventDefault();
			});
		}
	});
}

