﻿/* -----------------------------------------------------------------------------
	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 _fieldsMaxLength=[];
var _gender=[];
var _genderCheckType='';
var _genderToRadio=false;
var _countries=[];
var _countriesCheckType='';
var _states={};
var _zipcodeRegExp=[];
var _offersSkipURL='';
var _offersSkipInterval=null;
var _offersSkipPercent=0;
var _offersSkipDuration=3500;
var _selectTagDefaultText='---';
var _selectTagDefaultValue='';
var _signupFormId='signupForm';
var _signupEmailDelayTimeout=null;
var _signupEmailPreviousValue='';
var _signupNicknameDelayTimeout=null;
var _signupValues={};
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 coregSkipStart=function(){ // Obsolete
	var elm=MU.$('coregSkipBar');
	if(elm) elm.style.width='0px';
	_offersSkipInterval=setInterval('coregSkipUpdate()',Math.round(_offersSkipDuration/100));
};

var coregSkipUpdate=function(){ // Obsolete
	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 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 facebookLoadProfile=function(){
	if(!FB.getAuthResponse()){
		return;
	}
	FB.api('/me',function(user){
		if(user!=null){
	 		$(signupGetField('email')).val(user.email).blur();
	 		$(signupGetField('lastName')).val(user.last_name).blur();
	 		$(signupGetField('firstName')).val(user.first_name).blur();
			if(user.birthday){
				var temp_birthday_date=new Array();
				temp_birthday_date=user.birthday.split('/');
				$(signupGetField('birthdate_d')).val(temp_birthday_date[1]);
				$(signupGetField('birthdate_m')).val(temp_birthday_date[0]);
				$(signupGetField('birthdate_Y')).val(temp_birthday_date[2]);
			}
			if(user.gender){
				var civ='';
				if(user.gender=="male"||user.gender=="homme"){
					civ='1';
				}else if(user.gender=="female"||user.gender=="femme"){
					civ='2';
				}
				MU.formTagSetValue(signupGetField('gender'),civ);
				$(signupGetField('gender')).blur();
			}
		}
	});
};

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

var fieldsMaxLengthUpdate=function(){
	var i,field;
	var country=MU.formTagGetValue(signupGetField('country'));
	for(i in _fieldsMaxLength){
		if(field=signupGetField(i)){
			field.maxLength=9999;
			if(typeof(_fieldsMaxLength[i][country])!='undefined'){
				field.maxLength=_fieldsMaxLength[i][country];
			}
		}
	}
};

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

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

var messageDisplay=function(display){
	var target='#message';
	if(_message){
		$(target).html(_message);
	}
	$(target).toggle(display);
};

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

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

var pageInit=function(settings){
	// Correction éventuelle de l'âge
	if(_ageMin>_ageMax){
		_ageMin=16;
		_ageMax=100;
	}
	// Affichage du message si nécessaire
	messageDisplay(true);
	// Login bar
	if(settings.loginBarEnabled=='1'){
		$('#loginBar').show();
		$('#loginBar label').inFieldLabels();
		MFC.formInit('loginBarForm');
	}
	if(settings.facebookEnabled=='0'){
		$("#loginBar #moduleFacebook,#loginBar .other").hide();
	}
	// Couleur de fond de page
	if(settings.pageBackgroundColor!=''){
		$('body').css({
			'background-color':settings.pageBackgroundColor
		});
	}
	// GP Navibar
	if(settings.GPNavibarEnabled=='1'){
		$('#GPN').show();
		$('body').addClass('gpn');
	}
	// Notification du mot de passe auto-généré
	if(settings.passwordEnabled=='1'){
		$('#passwordNotice').hide();
	}
	// Liens dans les conditions
	$('#conditionsCheckbox a').click(function(){
		window.open($(this).attr('href'));
		return false;
	});
	// Offers skip
	if(settings.formLabelColor!=''&&settings.formBackgroundColor!=''){
		$('#offersSkipText').css({
			'color':settings.formLabelColor
		});
		$('#offersSkipBar').css({
			'background-color':settings.formBackgroundColor
		});
	}
	//slide in de pub
	/*
	$('#slidepub').hover(
            function () {
                $(this).stop().animate({'marginLeft':'250px'},200); // position fermé si le curseur est non détecté
            },
            function () {
                $(this).stop().animate({'marginLeft':'0px'},200); // position ouvert si le curseur est détecté
            }
        );
        */      
    	$('#slidepub').delay(2000).animate({'marginLeft':'250px'}); // le slide-in est directement placé en position fermé avec un delai de 2 secondes
		
		    $('#slidepub').delay(12000).animate({'marginLeft':'0px'},1000); // le slide-in est directement placé en position ouvert avec un delai de 5 secondes
		
		        $('#slidepub').hover(
		            function () {
		                $(this).stop().animate({'marginLeft':'250px'},200); // position fermé si le curseur non détecté
		            },
		            function () {
		                $(this).stop().animate({'marginLeft':'0px'},200); // position ouvert si le curseur est détecté
		            }
		        );
		$('#x').click(function(){
			$('#slidepub').hide();
		});
	// Template
	templateInit(settings);
	//
	signupFormInit();
	
};

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']]){
		var dY=v[_fields['birthdate_Y']];
		var dm=v[_fields['birthdate_m']];
		var dd=v[_fields['birthdate_d']];
		if((!MU.dateCheck(dY,dm,dd))||(MU.ageGetFromDate(dY,dm,dd)<_ageMin)){
			m[m.length]=lg_birthdate;
		}else{
			n=true;
		}
	}
	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 fieldName=signupGetFieldName(name);
	if(fieldName){
		var f=MU.$(_signupFormId);
		if(f){
			if(f.elements[fieldName]){
				rv=f.elements[fieldName];
			}
		}
	}
	return rv;
};

var signupGetFieldName=function(name){
	var rv=null;
	if(typeof(_fields[name])!='undefined'){
		rv=_fields[name];
	}
	return rv;
};

var signupGetFieldValue=function(field){
	var v=MU.formTagGetValue(field);
	if(v==null){
		v='';
	}
	return v;
};

var signupFormInit=function(values){
	// values est obsolète mais pour des raisons de compatibilité, values est traité s'il est fourni.
	if(typeof(values)=='object'){
		_signupValues=values;
	}
	/* Hide elements which need to be hidden */
	MU.display('partners',$('#partners img').length>0);
	MU.display('borderPopup',false);
	/* Get form object */
	var f=MU.$(_signupFormId);
	if(!f) return;
	/* Fill <select> */
	var i,field;
	// Champ "Civilité"
	if(field=signupGetField('gender')){
		if(_genderToRadio){
			var old=$(field);
			var pattern='<span class="genderRadioGroup"><input type="radio" name="'+old.attr('name')+'" id="'+old.attr('name')+'%1$s" value="%1$s"%3$s /> <label for="'+old.attr('name')+'%1$s">%2$s</label></span>';
			var radio=[];
			for(i in _gender){
				radio[radio.length]=MU.sprintf(pattern,i,_gender[i],(i=='1')?' class="mfc-intPosStr" title="'+old.attr('title')+'"':'');
			}
			radio=radio.join(' ',radio);
			$('label[for="'+old.attr('id')+'"]').remove();
			old.replaceWith(radio);
		}else{
			if(_genderCheckType){
				MU.classNameRemove(field,'mfc-*');
				MU.classNameAdd(field,_genderCheckType);
			}
			selectTagInit(field);
			for(i in _gender) MU.formTagSelectOptionAdd(field,i,_gender[i]);
		}
	}
	// Champ "Pays"
	if(field=signupGetField('country')){
		if(_countriesCheckType){
			MU.classNameRemove(field,'mfc-*');
			MU.classNameAdd(field,_countriesCheckType);
		}
		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);
			fieldsMaxLengthUpdate();
		};
		MU.eventAddListener(field,'change',fcn);
	}else{
		var fn=signupGetFieldName('country');
		$(f).append('<input type="hidden" name="'+fn+'" id="'+fn+'" value="" />');
	}
	// Champ "State"
	if(field=signupGetField('state')){
		selectTagInit(field);
	}
	// Champs "Date de naissance"
	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);
	}else{
		if(!(field=signupGetField('birthdate_d'))){
			var fn=signupGetFieldName('birthdate_d');
			$(f).append('<input type="hidden" name="'+fn+'" id="'+fn+'" value="" />');
		}
		if(!(field=signupGetField('birthdate_m'))){
			var fn=signupGetFieldName('birthdate_m');
			$(f).append('<input type="hidden" name="'+fn+'" id="'+fn+'" value="" />');
		}
		if(!(field=signupGetField('birthdate_Y'))){
			var fn=signupGetFieldName('birthdate_Y');
			$(f).append('<input type="hidden" name="'+fn+'" id="'+fn+'" value="" />');
		}
	}
	/* 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 _signupValues){
		if(_signupValues[i]) MU.formTagSetValue(f.elements[i],_signupValues[i]);
		if(i==_fields['country']&&(field=signupGetField('state'))){
			stateFieldInit(field,_signupValues[i]);
		}
	}
	/* 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)){
				MU.formTagSetValue('checkPseudo','0');
				if(_signupNicknameDelayTimeout!=null) clearTimeout(_signupNicknameDelayTimeout);
				_signupNicknameDelayTimeout=setTimeout('ajax_process("nickNameCheck",MU.formTagGetValue(signupGetField("nickName")));',750);
			}
		};
		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 */
	if(!f.checkWS){
		var elm=document.createElement('input');
		elm.type='hidden';
		elm.name=elm.id='checkWS';
		elm.value='';
		f.appendChild(elm);
	}
	var fcn=function(evt){
		var elm=MU.eventGetTarget(evt);
		if(elm.value!=_signupEmailPreviousValue&&MU.isEmail(elm.value)){
			_signupEmailPreviousValue=elm.value;
			if(_signupEmailDelayTimeout!=null) clearTimeout(_signupEmailDelayTimeout);
			_signupEmailDelayTimeout=setTimeout('ajax_process("emailCheck",signupGetFieldValue(signupGetField("email")),signupGetFieldValue(signupGetField("partnerId")));',750);
		}
	};
	if(field=signupGetField('email')){
		MU.eventAddListener(field,'blur',fcn);
		MU.eventAddListener(field,'keyup',fcn);
		if(MU.isEmail(field.value)){
			ajax_process('emailCheck',field.value,signupGetFieldValue(signupGetField("partnerId")));
		}
		/*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);
	}
	fieldsMaxLengthUpdate();
	facebookLoadProfile();
	/* 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 templateInit=function(custom){
	if(MU.arrayHasValue([10,11,12,13,14,15],_templateId)){
		//
		_genderToRadio=true;
		// Validation du formulaire
		$('#signupSubmit').click(function(){
			$('#partenaires').val('1');
		});
		$('.linkPlay').click(function(){
			$('#partenaires').val('0');
			MU.eventStart('signupForm','submit');
			return false;
		});
		// JQuery plugins
		$('#minisite label').inFieldLabels();
		$('.social').tipsy();
		// Block display (or not)
		if(custom.pastilleEnabled=='0'){
			$("#moduleAccroche").hide();
		}
		// Facebook
		if(custom.facebookEnabled=='0'){
			$('#moduleFacebook,#moduleFacebook~.other').hide();
		}
		// Pastille
		if(custom.pastilleEnabled=='1'){
			$("#moduleAccroche").css({
				'background-color':custom.pastilleBackgroundColor,
				'color':custom.pastilleLabelColor
			});
		}else{
			$("#moduleAccroche").hide();
		}
		// Bouton inscription partenaires
		var t=(custom.forcePartners=='1')?'#optinForce1':'#optinForce2';
		$(t).remove();
		$("#optin").css({
			'background-color':custom.optinBackgroundColor,
			'color':custom.optinLabelColor
		});
		$(".btnValid").css({
			'background-color':custom.optinValiderBackgroundColor,
			'color':custom.validerLabelColor
		});
		$(".input_valid_big").css({
			'background-color':custom.optinValiderBackgroundColor,
			'color':custom.validerLabelColor
		});
		$("#right h1,#wrapper h1,.other").css({
			'color':custom.formLabelColor
		});
		$("#wrapper").css({
			'background-color':custom.formBackgroundColor
		});
		
	}
};

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.firstname={
	'regExp':new RegExp('^[a-zA-Z ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÒÓÔÕÖÙÚÛÜÝŸàáâãäåçèéêëìíîïðòóôõöùúûüýÿ-]{2,32}$','i'),
	'check':function(elm){
	        	var v=MU.formTagGetValue(elm);
	        	var rv=MU.is_(MFC.fieldsTypes.firstname.regExp,v);
	        	return rv;
	        }
}

MFC.fieldsTypes.nickname={
	'regExp':new RegExp('^[a-z0-9]{3,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;
	        }
};

