/* -----------------------------------------------------------------------------
	WARNING: This file must be in UTF-8 !
					 Beware of special chars (quotes, etc...)
----------------------------------------------------------------------------- */

/*
	Default values
*/

var _ageMin=16;
var _ageMax=100;
var _fields=[];
var _gender=[];
var _countries=[];
var _states={};
var _zipcodeRegExp=[];
var _message='';
var _offersSkipURL='';
var _offersSkipInterval=null;
var _offersSkipPercent=0;
var _offersSkipDuration=3500;
var _selectTagDefaultText='---';
var _selectTagDefaultValue='';
var _signupFormId='signupForm';
var _stateBlockId='stateBlock';
var _stateClassName='mfc-text_2-64';

var _flagPattern='%1$sFlag';
var _flagClassError='error';
var _flagClassValid='ok';

/*
	Functions
*/

/* Birthdate patch */
var birthdatePatch=function(){
	var dm=MU.$('mois');
	var dd=MU.$('jour');
	var dn=dm;
	dm.parentNode.removeChild(dm);
	dd.parentNode.insertBefore(dn,dd);
	var s=document.createElement('span');
	s.innerHTML='&nbsp;';
	dd.parentNode.insertBefore(s,dd);
};

var birthdatePatchInit=function(){
	MU.eventAddListener(window,'load',birthdatePatch);
};

var fieldFlagUpdate=function(id,validated){
	var id=MU.sprintf(_flagPattern,id);
	MU.classNameAdd(id,(validated)?_flagClassValid:_flagClassError);
	MU.classNameRemove(id,(validated)?_flagClassError:_flagClassValid);
};

var fieldsUpdate=function(list){
	var i;
	for(i in list){
		_fields[i]=list[i];
	}
};

var emailCheckClose=function(){
	var o=MU.$('choices');
	if(o){
		o.innerHTML='';
		MU.display(o,false);
	}
	MU.display('choicesFrame',false);
};

var emailCheckSelectChoice=function(value){
	var f=MU.$(_signupFormId);
	if(f&&f.elements['email']) f.elements['email'].value=value;
	emailCheckClose();
	ajax_process('checkBad',value);
};

var loginFormInit=function(values){
	MFC.formInit('loginForm');
	MU.display('optin',MU.$('optin').innerHTML!='');
};

var messageDisplay=function(display){
	var elm=MU.$('message');
	if(elm){
		if(_message&&_message.length&&display){
			elm.innerHTML=_message;
			MU.display(elm,true);
		}else{
			MU.display(elm,false);
		}
	}
};

var coregSkipStart=function(){
	var elm=MU.$('coregSkipBar');
	if(elm) elm.style.width='0px';
	_offersSkipInterval=setInterval('coregSkipUpdate()',Math.round(_offersSkipDuration/100));
};

var coregSkipUpdate=function(){
	var percent=MU.sprintf('%1$s%',_offersSkipPercent);
	var elm=MU.$('coregSkipText');
	if(elm) elm.innerHTML=percent;
	var elm=MU.$('coregSkipBar');
	if(elm) elm.style.width=percent;
	if(_offersSkipPercent>=100){
		clearInterval(_offersSkipInterval);
		location.href=_offersSkipURL;
	}
	_offersSkipPercent++;
};

var pageInit=function(){
	if(_ageMin>_ageMax){
		_ageMin=16;
		_ageMax=100;
	}
	messageDisplay(true);
};

var selectTagInit=function(elm){
	if(elm&&MU.formTagIsSelect(elm)){
		MU.formTagSelectOptionRemoveAll(elm);
		MU.formTagSelectOptionAdd(elm,_selectTagDefaultValue,_selectTagDefaultText);
		MU.formTagSetValue(elm,_selectTagDefaultValue);
	}
};

var signupFormCheck=function(silent){
	var f=MU.$(_signupFormId);
	if(!f) return;
	var elm,i,l=MU.formElementsGetList(f),m=[],r=[],v=[],validated;
	for(i in l){
		elm=l[i];
		if(!MFC.formElementMustBeChecked(elm)) continue;
		validated=MFC.formElementCheck(elm,silent);
		r[elm.name]=validated;
		v[elm.name]=MU.formTagGetValue(elm);
		if(!validated){
			m[m.length]=elm.title;
		}
		if(MU.arrayHasValue([_fields['birthdate_d'],_fields['birthdate_m'],_fields['birthdate_Y']],elm.name)) continue;
		fieldFlagUpdate(elm.id,validated);
	}
	var n=false;
	if(r[_fields['birthdate_d']]&&r[_fields['birthdate_m']]&&r[_fields['birthdate_Y']]){
		if(!(n=MU.dateCheck(v[_fields['birthdate_Y']],v[_fields['birthdate_m']],v[_fields['birthdate_d']]))) m[m.length]=lg_birthdate;
	}
	fieldFlagUpdate(_fields['birthdate'],n);
	if(!silent){
		if(m.length==0) f.submit();
		else{
			i='\n	- ';
			alert(MU.$lang('formPleaseCheck')+i+m.join(i));
		}
	}
};

var signupGetField=function(name){
	var rv=null;
	var f=MU.$(_signupFormId);
	if(f){
		if(typeof(_fields[name])!='undefined'){
			var fn=_fields[name];
			if(f.elements[fn]){
				rv=f.elements[fn];
			}
		}
	}
	return rv;
};

var signupFormInit=function(values,partnersCount){
	/* Hide elements which need to be hidden */
	MU.display('partners',partnersCount>0);
	MU.display('borderPopup',false);
	/* Get form object */
	var f=MU.$(_signupFormId);
	if(!f) return;
	/* Fill <select> */
	var i,field;
	if(field=signupGetField('gender')){
		selectTagInit(field);
		for(i in _gender) MU.formTagSelectOptionAdd(field,i,_gender[i]);
	}
	if(field=signupGetField('country')){
		selectTagInit(field);
		for(i in _countries) MU.formTagSelectOptionAdd(field,i,_countries[i]);
		var fcn=function(evt){
			var elm=MU.eventGetTarget(evt);
			var v=MU.formTagGetValue(elm);
			stateFieldInit(signupGetField('state'),v);
		};
		MU.eventAddListener(field,'change',fcn);
	}
	if(field=signupGetField('state')){
		selectTagInit(field);
	}
	var bdfY,bdfm,bdfd;
	if((bdfd=signupGetField('birthdate_d'))&&(bdfm=signupGetField('birthdate_m'))&&(bdfY=signupGetField('birthdate_Y'))){
		selectTagInit(bdfd);
		for(i=1;i<=31;i++) MU.formTagSelectOptionAdd(bdfd,zeroFill(i),zeroFill(i));
		selectTagInit(bdfm);
		for(i=1;i<=12;i++) MU.formTagSelectOptionAdd(bdfm,zeroFill(i),zeroFill(i));
		var t=new Date();
		t=t.getFullYear();
		selectTagInit(bdfY);
		for(i=t-_ageMin;i>=t-_ageMax;i--) MU.formTagSelectOptionAdd(bdfY,i,i);
	}
	/* Destroy state block if not necessary */
	if(MU.sizeof(_states)==0){
		var s=MU.$('stateBlock');
		if(s) s.parentNode.removeChild(s);
	}
	/* Set values for some fields */
	for(i in values){
		if(values[i]) MU.formTagSetValue(f.elements[i],values[i]);
		if(i==_fields['country']&&(field=signupGetField('state'))){
			stateFieldInit(field,values[i]);
		}
	}
	/* Email check WS */
	if(!f.checkWS){
		var elm=document.createElement('input');
		elm.type='hidden';
		elm.name=elm.id='checkWS';
		elm.value='';
		f.appendChild(elm);
	}
	/* Form submit listener */
	var fcn=function(evt){
		MU.eventPreventDefault(evt);
		signupFormCheck(false);
	};
	MU.eventAddListener(f,'submit',fcn);
	/* NickName check stuff */
	if(field=signupGetField('nickName')){
		var fcn=function(evt){
			var elm=MU.eventGetTarget(evt);
			if(MU.is_(MFC.fieldsTypes.nickname.regExp,elm.value)){
				ajax_process('nickNameCheck',elm.value);
			}
		};
		MU.eventAddListener(field,'blur',fcn);
		MU.eventAddListener(field,'keyup',fcn);
		var elm=document.createElement('input');
		elm.type='hidden';
		elm.name=elm.id='nickNameCheck';
		elm.value='';
		f.appendChild(elm);
		if(MU.is_(MFC.fieldsTypes.nickname.regExp,field.value)){
			ajax_process('nickNameCheck',field.value);
		}
	}
	/* Email check stuff */
	var fcn=function(evt){
		var elm=MU.eventGetTarget(evt);
		if(MU.isEmail(elm.value)){
			ajax_process('checkM',elm.value);
		}
	};
	field=signupGetField('email');
	MU.eventAddListener(field,'blur',fcn);
	MU.eventAddListener(field,'keyup',fcn);
	if(MU.isEmail(field.value)){
		ajax_process('checkM',field.value);
	}
	var t=document.createElement('iframe');
	t.id='choicesFrame';
	t=f.appendChild(t);
	MU.display(t,false);
	var t=document.createElement('div');
	t.id='choices';
	t=f.appendChild(t);
	MU.display(t,false);
	/* Add listener for sponsor disclaimer "popup" */
	var s=MU.$('sponsorDisclaimerLink');
	if(s){
		var fcn=function(evt){
			MU.display('borderPopup');
		};
		MU.eventAddListener(s,'mouseover',fcn);
		MU.eventAddListener(s,'mouseout',fcn);
	}
	/* Initial check */
	signupFormCheck(true);
	/* Interval check */
	setInterval('signupFormCheck(true)',1000);
};

var stateFieldInit=function(field,country){
	if(!field) return;
	selectTagInit(field);
	if(typeof(_states[country])!='undefined'){
		var i,t=_states[country];
		for(i in t){
			MU.formTagSelectOptionAdd(field,i,t[i]);
		}
		MU.display(_stateBlockId,true);
		MU.classNameAdd(field,_stateClassName);
	}else{
		MU.display(_stateBlockId,false);
		MU.classNameRemove(field,_stateClassName);
	}
};

var zeroFill=function(v){
	var rv=(v<10)?'0'+v:v;
	return rv;
};

/*
	MFC custom fields types
*/

MFC.fieldsTypes.cryptocode={
	'regExp':new RegExp('^[a-z0-9]{4}$','i'),
	'check':function(elm){
	        	var v=MU.formTagGetValue(elm);
	        	var rv=MU.is_(MFC.fieldsTypes.cryptocode.regExp,v);
	        	return rv;
	        }
};

MFC.fieldsTypes.emailWS={
	'regExp':null,
	'check':function(elm){
	        	var v=MU.formTagGetValue(elm);
	        	var f=elm.form;
	        	var ckd=((!f.checkWS)||(f.checkWS.value&&f.checkWS.value=='1'));
	        	var rv=ckd&&MU.isEmail(v);
	        	return rv;
	        }
};

MFC.fieldsTypes.nickname={
	'regExp':new RegExp('^[a-z0-9]{2,24}$','i'),
	'check':function(elm){
	        	var v=MU.formTagGetValue(elm);
	        	var f=elm.form;
	        	var ckd=((!f.nickNameCheck)||(f.nickNameCheck.value&&f.nickNameCheck.value=='1'));
	        	var rv=ckd&&MU.is_(MFC.fieldsTypes.nickname.regExp,v);
	        	return rv;
	        }
};

MFC.fieldsTypes.password={
	'regExp':new RegExp('^[a-z0-9]{2,10}$','i'),
	'check':function(elm){
	        	var v=MU.formTagGetValue(elm);
	        	var rv=MU.is_(MFC.fieldsTypes.password.regExp,v);
	        	return rv;
	        }
};

MFC.fieldsTypes.passwordLogin={
	'regExp':new RegExp('^.{2,}$','i'),
	'check':function(elm){
	        	var v=MU.formTagGetValue(elm);
	        	var rv=MU.is_(MFC.fieldsTypes.passwordLogin.regExp,v);
	        	return rv;
	        }
};

MFC.fieldsTypes.zipcode={
	'regExp':null,
	'check':function(elm){
	        	var rv=false;
	        	var v=MU.formTagGetValue(elm).toUpperCase();
	        	MU.formTagSetValue(elm,v);
	        	var f=elm.form;
	        	var country=MU.formTagGetValue(f.elements['pays']);
	        	if(country&&_zipcodeRegExp[country]){
	        		if(typeof(_zipcodeRegExp[country])=='function'){
	        			rv=_zipcodeRegExp[country](v);
	        		}else{
	        			rv=MU.is_(_zipcodeRegExp[country],v);
	        		}
	        	}
	        	return rv;
	        }
};
