var indexBulle = 0;
var timerBulle = null;
var randomIndexes = "";
var cptRandomIndex = 0;

var imgFieldOK = '<img name="fieldok" src="/img/front/inscription_ico_true.gif">';
var imgFieldKO = '<img name="fieldko" src="/img/front/inscription_ico_false.gif">';

var validator;

$(document).ready(
	function() {
		
		$("#bt_inscription").click(
			function() {
									
				$(".commentCaMarche").css("visibility","hidden");
				
				if($("#inscriptionConteneur").size() == 0 )
				{
					$.get(
						inscriptionLink,
						{ 'nl' : 1 }, 
						function(data) {
							
							$("#principalConteneur").html(data); 
							
							$("input[type='password']").removeClass("inputText");
							$("input[type='password']").addClass("inputText");
							
							$("input[type='text']").removeClass("inputText");
							$("input[type='text']").addClass("inputText");
							
							$("span[id^='help_']").css('display','none');
							
							$("input[type='text']").each(
								function() {
									$(this).focus(
										function() {
											ShowMessage(this, $("#help_" + $(this).attr('tabindex')).html());
										} 
									);
								}
							);
							
							$("input[type='password']").each(
								function() {
									$(this).focus(
										function() {
											ShowMessage(this, $("#help_" + $(this).attr('tabindex')).html());
										}
									);
								}
							);
							
							
							
							$.validator.addMethod(	"SpecChars",
								function NoSpaces(value, element, params){
									
									return !(/[^A-Za-z0-9]/.test(value));
										
								},
								'Caracteres speciaux'
							  );
	
							$.validator.addMethod(	"PseudoExists",
								function VerifPseudo(value, element, params){
									
									 var html = $.ajax({
														  type: "POST",
														  url: verifPseudoLink,
														  data : { 'pseudo' : value},
														  async: false
													   }).responseText;
	
									if(html == 'OK')
										return true;
									else
										return false;
										
								},
								'Ce pseudo existe déjà.'
							  );				  
	
							$.validator.addMethod(	"EmailExists",
								function VerifEmail(value, element, params){
									
									 var html = $.ajax({
														  type: "POST",
														  url: verifEmailLink,
														  data : { 'email' : value},
														  async: false
													   }).responseText;
	
									if(html == 'OK')
										return true;
									else
										return false;
										
								},
								'Cet email est déjà utilisé'
							  );
							  
							  $.validator.addMethod(	"TelExists",
								function VerifTel(value, element, params){
									
									 var html = $.ajax({
														  type: "POST",
														  url: verifTelLink,
														  data : { 'telephone' : '06' + value},
														  async: false
													   }).responseText;
	
									if(html == 'OK')
										return true;
									else
										return false;
										
								},
								'Ce numéro de téléphone est déjà utilisé'
							  );
							  
							  $.validator.addMethod(	"GreaterThan",
								function GreaterThan(value, element, params){
									
									if(parseInt(value) > parseInt($(params).val()))
										return true;
									else
										return false;
										
								},
								'L\'age maximum doit être supérieur à l\'age minimum'
							  );
							  
							  $.validator.addMethod(	"DateFr",
								function DateFr(value, element, params){
									
									var chaine = value
									
									if(chaine.length == 0)
										return false;
								
								   	var ladate = (chaine).split("/")
								
									if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2])) || (ladate[2].length != 4 && ladate[2].length != 2) )
										return false;
									
									 
									if(ladate[2].length == 2)
										ladate[2] = '20' + ladate[2];
									
									var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))
									var annee = unedate.getYear()
									
									if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
									
									if((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])))
									{
										return true;
									}
									else
									{
										return false;
									}
										
								},
								'Date invalide'
							  );
							  
							
							validator = $("#inscription_form").validate({
								showErrors: DisplayMessages,
								submitHandler: function(form) {
									
									if(validator.numberOfInvalids() == 0)
									{
										$("#btinscriptionok").attr("disabled",true);
										form.submit();
									}
									
							   	},
								rules: {
									pseudo : { required : true, minlength : 4, maxlength : 9, PseudoExists : true, SpecChars : true },
									password : { required : true, minlength : 5 },
									password_conf : { required : true, minlength : 5, equalTo : "#password" },
									email : { required : true, email : true, EmailExists : true },
									num_tel : { required : true, minlength : 8, maxlength : 8, digits : true, TelExists : true},
									sexe : { required : true},
									sexe_rech : { required : true},
									age_rech_min : { required : true, digits : true },
									age_rech_max : { required : true, digits : true, GreaterThan : "#age_rech_min" },
									pays : { required : true },
									code_postal : { required : true, minlength : 5, maxlength : 5, digits : true },
									is_majeur : { required : true },
									ville : { required : true, minlength : 2, maxlength : 128},
									age_jour : { required : true },
									age_mois : { required : true },
									age_annee : { required : true }
									
									
								},
								messages : {
									pseudo : {  	
													required : 'Le pseudo est obligatoire',
													minlength : 'Le pseudo doit comporter au moins 4 caractères',
													maxlength : 'Le pseudo doit comporter 9 caractères maximum',
													SpecChars : 'Seuls les lettres et les chiffres sont autorisés dans le pseudo' },
										
									password : {
													required : 'Le mot de passe est obligatoire',
													minlength : 'Le mot de passe doit comporter au moins 5 caractères'},
									
									password_conf : { 
													required : 'Le mot de passe est obligatoire',
													minlength : 'Le mot de passe doit comporter au moins 5 caractères',
													equalTo : 'Les mots de passe ne correspondent pas'},
									
									email : {  		
													required : 'L\'adresse email est obligatoire',
													email : 'L\'adresse email est invalide',
													EmailExists : 'Cette adresse email est déjà utilisée'},
									
									num_tel : {  
													required : 'Le numéro de téléphone mobile est obligatoire',
													minlength : 'Le numéro de téléphone mobile est invalide',
													minlength : 'Le numéro de téléphone mobile est invalide',
													digits : 'Le numéro de téléphone mobile est invalide',
													TelExists : 'Ce numéro de téléphone mobile est déjà utilisé'},
									
									sexe : {  
													required : 'Indiquez votre sexe'},
													
									sexe_rech : {  
													required : 'Indiquez le sexe de la personne que vous recherchez'},
													
									age_rech_min : {  
													required : 'Indiquez l\'age minimum de la personne que vous recherchez',
													digits : 'Indiquez l\'age minimum de la personne que vous recherchez'},
													
									age_rech_max : {  
													required : 'Indiquez l\'age maximum de la personne que vous recherchez',
													digits : 'Indiquez l\'age maximum de la personne que vous recherchez',
													VerifAges : 'L\'age maximum doit être supérieur à l\'age minimum'},
									
									age_jour : {
													required : 'Sélectionnez votre jour de naissance' },
									
									age_mois : {
													required : 'Sélectionnez votre mois de naissance' },
									
									age_annee : {
													required : 'Sélectionnez votre année de naissance' },
													
									pays : {  
													required : 'Sélectionnez un pays'},
													
									code_postal : {
													required : 'Le code postal est obligatoire',
													minlength : 'Le code postal est invalide',
													minlength : 'Le code postal est invalide',
													digits : 'Le code postal est invalide'},
													
									is_majeur : 	{ 
													required : 'Vous devez certifier être majeur pour pouvoir vous inscrire' },
													
									ville : {
													required : 'La ville est obligatoire',
													minlength : 'La ville est invalide', 
													maxlength : 'La ville est invalide'}
									
									
								}
								
							});
						}
					);				
				}
			}
		);
		
		$("#bt_dejainscrit").click(
			function() {
				
				$(".commentCaMarche").css("visibility","visible");
				if( $("#identification").size() == 0)
				{
					$.get(homeContentLink, { 'nl' : 1}, 
						function(data) { 
							
							$("#principalConteneur").html(data);
							ShowLoginForm();
						}
					);
				}
				else
				{
					ShowLoginForm();
				}
			}
		);
		
		NextBulleInscription();
		
	}
);

function ShowLoginForm()
{
	if($("#identification").css('display') == 'none')
	{
		$("#identification").css('display','block');
		$("#identifiant").focus();
	}	
	else
		$("#identification").css('display','none');
}

function NextBulleInscription()
{
	var bulles = $("#bulles").children();
	
	if(indexBulle == bulles.length)
		indexBulle = 0;
	
	var randomIndex = Math.floor(Math.random()* (bulles.length-1));
	
	while(randomIndexes.indexOf("-"+randomIndex+"-") >= 0 && cptRandomIndex < bulles.length)
	{
		randomIndex = Math.floor(Math.random()*bulles.length);
		cptRandomIndex++;
	}
	randomIndexes += "-" + randomIndex + "-";
	
	if(cptRandomIndex == bulles.length) 
	{
		cptRandomIndex = 0;
		randomIndexes = "";
	}
	
	$("#bulleInscription").fadeOut("normal", 
		function(){ 
			$("#bulleInscription").html($(bulles[randomIndex]).html());
			$("#bulleInscription").fadeIn("normal");
			
			indexBulle++;
			
			if(timerBulle == null)
				timerBulle = setInterval("NextBulleInscription()", 6000);
		}
	);
	
}

function SetBullePosition(element)
{
	var offset = $(element).parent().offset();
	var newMargin = offset.top - 230;
	$('#bulle').css("margin-top", newMargin+"px");
}

function DisplayMessages(errorMap, errorList)
{
	//alert(errorList.length);
	if(errorList.length > 0) 
	{	
		ShowMessage(errorList[0].element, errorList[0].message, 'error');
		
		for(var i = 0; i < errorList.length; i++)
		{
			$(errorList[i].element).parent().parent().find("td:last-child").html(imgFieldKO);
		}	
	}
	else
	{		
		HideMessage();
	}
	
	var validElements = validator.validElements();
	
	for(var i = 0; i < validElements.length; i++)
	{
		var lineElem = $(validElements[i]).parent().parent();
		var checkTd = lineElem.find("td:last-child");
		
		var fieldsTd = $(lineElem.children()[1]);		
		var inputs = fieldsTd.find("input");
		var selects = fieldsTd.find("select");
		
		if(inputs.size() + selects.size() > 1)
		{
			var resultFields = true;
			for(var j = 0; j < inputs.size(); j++)
			{
				resultFields = resultFields && validator.check(inputs[j]);
			}
			
			for(var j = 0; j < selects.size(); j++)
			{
				resultFields = resultFields && validator.check(selects[j]);
			}

			if(resultFields)
			{
				checkTd.html(imgFieldOK);
			}
			else
			{
				checkTd.html(imgFieldKO);
			}
		}
		else
		{
			if($(validElements[i]).attr('name')!= 'source')
				checkTd.html(imgFieldOK);
		}
		
	}

}

function ShowMessage(element, message, type)
{
	if(message != null)
	{
		SetBullePosition(element)
		$("#bulle").css('display','block');
		$("#messageContainer").html(message);
	}
}

function HideMessage()
{
	$("#bulle").css('display','none');
}

function ShowPartenairePopup()
{
	PrettyPopup("Soirée Come to ... The Palais Maillot", 570, 675);
	
	$("#popUpPrettyAlert").html( $("#partenaireContent").html() );
	
}