var code_promotionnel = null;
$(function(){
	setEventForGetVillesByCodePostal();
	setEventForGetMagasinByDepart();
	setEventsForInputsDepartementAndMagasin();
	setEventRib();
});

/* verification demail */
function isEmail(field){ 
	var val = field.val();
	if (!val.match (/^[a-z0-9\-\._]+@[a-z0-9\-_\.]+\.[a-z]{2,4}$/gi)){
	 	return false;
	}
	return true;
}
// validation date
function is_date_valide(val){
	var regex = new RegExp("[/-]");
	var date = val.split(regex);
	var nbJours = new Array('',31,28,31,30,31,30,31,31,30,31,30,31);
	var result = true;

	if ( date['2']%4 == 0 && date['2']%100 > 0 || date['2']%400 == 0 )
	nbJours['2'] = 29;

	if( isNaN(date['2']) )
	result=false;
	if ( isNaN(date['1']) || date['1'] > 12 || date['1'] < 1 )
	result=false;
	if ( isNaN(date['0']) || date['0'] > nbJours[Math.round(date['1'])] || date['0'] < 1 )
	result=false;
	var date_regexp = /^(\d{1,2}\/){2}\d{4}$/;
	if (!val.match(date_regexp) || !result)
		return false;
	return true;
}
// erreurs : eval('errors.');
var errors = {
	civilite : "Veuillez préciser votre civilité.",
	nom : "Veuillez préciser votre nom.",
	prenom : "Veuillez préciser votre prénom.",
	adresse :"Veuillez préciser votre adresse. ",
	code_postal :"Veuillez préciser votre code postal. ",
	ville :"Veuillez préciser votre ville. ",
	date_naissance: "Veuillez préciser les dates de naissance.",
	sexe: "Veuillez préciser le sexe de vos enfants.",
	nomchild: "Veuillez préciser les noms de vos enfants.",
	prenomchild: "Veuillez préciser les prénoms de vos enfants.",
	MasterCard: "Veuillez préciser le N° de votre carte.",
	Fidelite: "Veuillez préciser le N° de votre carte Fidélité.",
	code_bank: "Veuillez préciser votre code bancaire.",
	code_guichet: "Veuillez préciser votre code guichet.",
	N_compte: "Veuillez préciser votre N° de compte.",
	rib: "Veuillez préciser votre clé RIB.",
	conditions : "Vous devez accepter les conditions générales du contrat Assurance Scolaire Carrefour.",
	cartepass : "Veuillez préciser le N° de votre carte Pass.",
	confirmation_email: "Veuillez vérifier la confimation de l'email.",
	email: "Veuillez vérifier votre email.",
	cart_fidelite: "Le numéro de Carte Fidélité saisi n'est pas valide.",
	cart_pass: "La référence client Carte PASS saisie n'est pas valide.",
	cart_fidel: "Le numéro de Carte Fidélité saisi n'est pas valide.",
	num_cart: "Veuillez saisir un numero à 19 chiffres.",
	num_cart_pass: "Veuillez saisir un numero à 14 chiffres.",
	metro: "Votre lieu de résidence doit se trouver en France Métropolitaine.",
	err_code: "Vous ne pouvez pas utiliser ce code promotionnel.",
	err_code_available: "Le code promotionnel utilisé n’est plus actif."
}

/* Chargement de la page */
$(function(){
var box_height=0;
	$('#etap-1').bind('click',validateForm);
	$('#etap-2').unbind('click',validateRib);
	$('#etap-2').bind('click',validateRib);
	//$('#calculate-promo').bind('click',checkCodePromo);
	$('.close').bind('click',function(){
		$('.display-popin').hide();
		return false;
	})
	
		/*  position popin */
		var left = (document.documentElement.clientWidth-640)/2;
		$('.popin').css('left',left+"px");	
	/* ajouter les fields pr enfants */
		$('#nb-child').change(function(){	
			
			var val = $(this).val();
			if(val==0){
				$('.list-child').html('<ul id="child1"><li>Enfant 1 : <span class="sexe">Sexe *</span><br><input type="radio" class="radio" id="f1" name="sexe1"><label class="label" for="f1">F</label>	<input type="radio" class="radio" id="M1" name="sexe1"><label class="label" for="M1">M</label></li><li><label for="nom-child1">Nom *</label><br><input type="text" class="input-text" id="nom-child1"></li><li><label for="prenom-child1">Prénom*</label><br><input type="text" class="input-text" id="prenom-child1"></li><li class="date"><label for="date-naissonce1">Date de naissance* (jj/mm/aaaa)</label><br><input type="text" class="input-text" id="date-naissonce1"></li></ul>');
				
			}else{
				var html = '';
				var nb = 1;
				for(i=1;i<=val;i++){
					html+= '<ul id="child'+nb+'"><li>Enfant '+nb+' : <span class="sexe">Sexe *</span><br/><input type="radio" name="sexe'+i+'" id="f'+i+'" class="radio" value="0"/><label for="f'+i+'" class="label">F</label>	<input type="radio" name="sexe'+i+'" id="M'+i+'" class="radio" value="1"/><label for="M'+i+'" class="label">M</label></li><li><label for="nom-child'+i+'">Nom *</label><br/><input type="text" id="nom-child'+i+'" name="nom-child'+i+'" class="input-text"/></li><li><label for="prenom-child'+i+'">Prénom*</label><br/><input type="text" id="prenom-child'+i+'" name="prenom-child'+i+'" class="input-text"/></li><li class="date"><label for="date-naissonce'+i+'">Date de naissance* (jj/mm/aaaa)</label><br/><input type="text" id="date-naissonce'+i+'" name="date-naissonce'+i+'" class="input-text"/></li></ul>';
					nb ++;
					}
				$('.list-child').html(html);
			}
		})
		/*!--Ajouter le mask au input-*/
		
	/*if ($('.coordinates').length) {
		$("#code-bank,#code-guichet").mask("99999");
		$("#N-compte").mask("99999999999");
		$("#rib").mask("99");
	}*/
	if ($('.civilite').length ) {
		$("#code").mask("99999");
		$("#tel-fix,#tel-portabl").mask("9999999999");
		
	}
	
	//option cartes
	slectcard();
	
	// Code promo
	//codePromo();
	
	 /* ouvrir popup  */
	 //if ($('.link-help').length) $('.link-help').bind("click",popup);	

});
	
function slectcard(){
	var i = $('#client').val() - 1;
	if (i > 0)	{ i = 1; }
	else { i = 0; }
	$('.listcard ul li').hide();
	$($('.listcard ul li')[i]).show();
	$('#client').change(function(){									
		var index = $('#client').val() - 1;
		if (index > 0)	{ index = 1; }
		else { index = 0; }
		$('.listcard ul li').hide();
		$($('.listcard ul li')[index]).show();
	})

}
/*
 * 
 * success: function(html) {
                                $("#divResult").replaceWith($('#divResult', $(html)));
                        },

 */
/*function checkCodePromo()
{
	$('.msgpromo').hide();
	if ($('#code-promo').val().toUpperCase() == 'TRT52PZ')
	{
		$('.msgpromo').show();
	}
	$.ajax({
		   type: "POST",
		   url: "price_promo.php",
		   data: "ajax_promo=" + $('#code-promo').val(),
		   success: function(data){
			//$("#price_promo").replaceWith($('#price_promo', $(html)));
			//alert(data);
			$("#price_promo").html(data);
		   }
		 });
}*/

/*function codePromo() {
	if ($('#code-promo').length ) {
		$('.msgpromo').hide();
		$('.coordinates','.blocRib').show();
		$('p:first','.blocRib').show();
		$('legend','.blocRib').show();
        if ($('#promo_exist').val() == 1)
        {
			if ($('#code-promo').val().toUpperCase() == 'TRT52PZ') $('.msgpromo').show();
            $('.coordinates').hide();
            $('#title_rib').hide();
			$('#saisir_rib').hide();
        }
	}	
}*/

function codePromo() {
	if ($('#code-promo').length ) {
	
	$('#code-promo').unbind();
	$('#code-promo').bind('keyup',function(){
			$('.msgpromo').hide();
			$('.coordinates','.blocRib').show();
			$('p:first','.blocRib').show();
			$('legend','.blocRib').show();
			if ($('#code-promo').val().toUpperCase() == 'TRT52PZ') $('.msgpromo').show();
			if ($('#code-promo').val().toUpperCase() == 'RRL80UF') {
				/*$('.coordinates','.blocRib').hide();
				$('p:first','.blocRib').hide();
				$('legend','.blocRib').hide();*/
				
			}
			checkCodePromo();
	});	
		
/* 		$('#code-promo').change(function(){
			$('.msgpromo').hide();
			$('.coordinates','.blocRib').show();
			$('p:first','.blocRib').show();
			$('legend','.blocRib').show();
			if ($('#code-promo').val().toUpperCase() == 'TRT52PZ') $('.msgpromo').show();
			if ($('#code-promo').val().toUpperCase() == 'RRL80UF') {
				/*$('.coordinates','.blocRib').hide();
				$('p:first','.blocRib').hide();
				$('legend','.blocRib').hide();
				
			}
			checkCodePromo();
		}); */
		
	}

	
}


function validateForm() {
	$('.required').removeClass('required');
	var flag = true;
		var msg = '';
		var radioCivilite = false;
		$('.civilite input').each(function(){	
			if($(this).attr('checked')==true) radioCivilite = true;
		})	
		if(!radioCivilite){
			flag = false; msg+= '<li>'+eval('errors.civilite')+'</li>';
			$('.civilite label:eq(0)').addClass('required');
		}
		
		if(!$('#nom').val()){
			flag = false; 
			msg+= '<li>'+eval('errors.nom')+'</li>';
			$('label', $('#nom').parents('p')).addClass('required');
		}
		if(!$('#prenom').val()){
			flag = false; 
			msg+= '<li>'+eval('errors.prenom')+'</li>';
			$('label', $('#prenom').parents('p')).addClass('required');
		}
		
		
		/*if(!$('#courriel').val() || !isEmail($('#courriel'))){
			flag = false; 
			msg+= '<li>'+eval('errors.email')+'</li>';
			$('label', $('#courriel').parents('p')).addClass('required');
		}*/
		if ($('#courriel').val())
		{
			if (!isEmail($('#courriel')))
			{
				flag = false; 
				msg+= '<li>'+eval('errors.email')+'</li>';
				$('label', $('#courriel').parents('p')).addClass('required');				
			}
		}
		
		if(/*!$('#confirmation-courriel').val() ||*/ $('#confirmation-courriel').val() != $('#courriel').val()){
			flag = false;
			msg+= '<li>'+eval('errors.confirmation_email')+'</li>';
			$('label', $('#confirmation-courriel').parents('p')).addClass('required');
		}
		
		if(!$('#adresse2').val()) {
			flag = false; 
			msg+= '<li>'+eval('errors.adresse')+'</li>';
			$('.adr').addClass('required');
		}	

		var typeMetro=$("#ville :selected").attr("rel");
		if(typeMetro==2) {
			flag = false; 
			msg+= '<li>'+eval('errors.metro')+'</li>';
			$('label', $('#ville').parents('p')).addClass('required');
		}
				
		if(!$('#codePostale').val()){
			flag = false; 
			msg+= '<li>'+eval('errors.code_postal')+'</li>';
			$('label', $('#codePostale').parents('p')).addClass('required');
		}
			
		if($('#ville').attr("selectedIndex") == 0) {
			flag = false; 
			msg+= '<li>'+eval('errors.ville')+'</li>';
			$('label', $('#ville').parents('p')).addClass('required');
		}
		
		
		var ErrorChildren = true;
		var ErrorNom = true;
		var ErrorPrenom = true;
		var ErrorDate = true;
		
		for (var j=1 ;j<=($('.list-child > *').length) ;j++) {
			
			var radioSexe = false;
			$('#child'+j+' input.radio').each(function(){	
				if($(this).attr('checked')==true) radioSexe = true;
			})	
			if(!radioSexe){
				flag = false; ErrorChildren = false;
				$('#child'+j+' span.sexe').addClass('required');
			}
			
			/*!-nom-*/
			
			if(!$('#child'+j+' #nom-child'+j).val()){
				$('label', $('#nom-child'+j).parents('li')).addClass('required');
				flag = false; 
				ErrorNom= false ;
				}
			/*!-prenom-*/	
			if(!$('#child'+j+' #prenom-child'+j).val()){
			$('label', $('#prenom-child'+j).parents('li')).addClass('required');
			flag = false; 
			ErrorPrenom= false ;
			}
			/*!-date-de-naissance-*/	
			if(!$('#child'+j+' #date-naissonce'+j).val() || !is_date_valide(($('#child'+j+' #date-naissonce'+j).val()))) {
				$('label', $('#date-naissonce'+j).parents('li')).addClass('required');
				flag = false; 
				ErrorDate = false;
			}
			
		}
		if (!ErrorChildren) msg+= '<li>'+eval('errors.sexe')+'</li>';
		if (!ErrorNom) msg+= '<li>'+eval('errors.nomchild')+'</li>';
		if (!ErrorPrenom) msg+= '<li>'+eval('errors.prenomchild')+'</li>';
		if (!ErrorDate) msg+= '<li>'+eval('errors.date_naissance')+'</li>';
		
		
			/*var displayMasterCard = $('#MasterCard').parents('li').css('display').toUpperCase();
			var displayFidelite = $('#Fidelite').parents('li').css('display').toUpperCase();*/
		var displaycard_fid = $('#card_fid').parents('li').css('display').toUpperCase();
			
			/*if ((displayMasterCard == 'LIST-ITEM' || displayMasterCard == 'BLOCK') && (!$('#MasterCard').val())){
				flag = false; 
				msg+= '<li>'+eval('errors.MasterCard')+'</li>';
				$('label', $('#MasterCard').parents('li')).addClass('required');
					
			}
			if ((displayFidelite == 'LIST-ITEM' || displayFidelite == 'BLOCK') && (!$('#Fidelite').val())){
				flag = false; 
				msg+= '<li>'+eval('errors.Fidelite')+'</li>';
				$('label', $('#Fidelite').parents('li')).addClass('required');
					
			}*/
		if ((displaycard_fid == 'LIST-ITEM' || displaycard_fid == 'BLOCK') && (!$('#card_fid').val())){
			flag = false; 
			msg+= '<li>'+eval('errors.MasterCard')+'</li>';
			$('label', $('#card_fid').parents('li')).addClass('required');			
		}else if($('#card_fid').val()){
			validateCarte(msg,flag);
				flag = obj.flag; 
				msg = obj.msg;							
		}
		
		if(!flag){
			if ($('.list-child').length) {box_height = $('.list-child').height()+300;}
			page();
			$('.display-popin').show();
			$('.popin .errors-list').html(msg);
			return false;
		}
		
		$('#info_perso').submit();
}


function redirection( url ) {
	window.location.href = url;
}


 function page() {
	$('.generate-popin').height(document.documentElement.clientHeight+box_height+"px");
	$('.generate-popin').width(document.documentElement.clientWidth);	
 }
 

/*	
 function popup() {
	var url = $(this).attr('href');	
	var haut = (screen.height-290)/2;
	var gauche = (screen.width-490)/2;	
	window.open(url,'Plan',"top="+haut+",left="+gauche+",width=490,height=290");
	return false;
}*/

/* ::::::::::::::::::::::::::::       Chargement  des Magasin             :::::::::::::::::::::::::::::::::::*/

function setEventForGetMagasinByDepart(){
	$('#departement').unbind();
	$('#departement').bind('keyup',function(){
		if($(this).val().length == 2){
			getMagasinByDepart(this);
		}else if($(this).val().length == ""){
			getMagasinByDepart(this);
		}
	});
	$('.carrefour').unbind();
		$('.carrefour').bind('change',function(){
			getMagasinByDepart(this);
	});
}
function getMagasinByDepart(obj, val){
	_this = obj;
	var type_magasin = -1;
	if ($("#carrefour_0").attr("checked") == true)
		type_magasin = 0;
	else if ($("#carrefour_1").attr("checked") == true)
		type_magasin = 1;
	var dept = $("#departement").val();
	$('#magasinLoading').show();
	$.ajax({
		type: "POST",url: "./classes/magasins.php",data: "type=" + type_magasin + "&dept=" + dept,
		success: function(data){
			if(data){
				//$("#magasin").html(data);
				$('#magasin',$(_this).parent().parent()).replaceWith(data);
				if (val != "")
				{
					//console.log(" ==> " + val);
					$('#magasin').val(val);
				}
			}
			setEventsForInputsDepartementAndMagasin();
			$('#magasinLoading').hide();
		}
	});
}
function setEventsForInputsDepartementAndMagasin(){
	setEventForGetMagasinByDepart();
	$('.magasin').unbind();
	$('.magasin').bind('change',function(){
		var id = "";
		var value = "";
		if($('#departement').length){
			id = "#"+$('#departement',$(this).parent().parent().parent()).attr('id');
			value = $('#departement',$(this).parent().parent().parent()).val();
		}
	});
}
function selectTypeDepartement(){
    $('#carrefour_0, #carrefour_1').unbind();
	$("#carrefour_0, #carrefour_1").bind('change',function(){
    	if($("#carrefour_0")[0].checked){
			//var type=0;
        }else if($("#carrefour_1")[0].checked){
           //var type=1;
       	}
     });
}



/* ::::::::::::::::::::::::::::       Chargement  des villes             :::::::::::::::::::::::::::::::::::*/

function setEventForGetVillesByCodePostal(){
	
	$('.code_postal').unbind('keyup');
	$('.code_postal').bind('keyup',function(){
		_this = this;
		if($(this).val().length == 5){
			getVillesByCodePostal(this);
			$('.code_postal').unbind('blur');
			$('#departement').val($('#codePostale').val().substring(0,2));
			//getMagasinByDepart($('#departement'));
		}else{
			setEventBlurForCodePostal()
		}
	});
	setEventBlurForCodePostal()
}
function setEventBlurForCodePostal(){
	$('.code_postal').unbind('blur');
	$('.code_postal').bind('blur',function(){
		if($('.code_postal').val().length >= 3){
			getVillesByCodePostal(this);
			$('#departement').val($('#codePostale').val().substring(0,2));
			//getMagasinByDepart($('#departement'));
		}
	});
}

function getDepartementByCodePostal(obj,idDepartement){
	_this = obj;
	$.ajax({
		type: "POST",url: "./classes/villes.php",data: "id=" + $(_this).attr('id')  + "&departement="+$(_this).val(),
		success: function(data){
			if(data){
				$('.departement').replaceWith(data);
				if(idDepartement)
					$('.departement',$(_this).parent().parent().parent()).val(idDepartement);
			}
		}
	});
}
function getVillesByCodePostal(obj,idVille){
	isCodePostalDesactiver(obj,idVille)
	_this = obj;
	$('#villeLoading').show();
	$.ajax({
		
		type: "POST",url: "./classes/villes.php",data: "id=" + $(_this).attr('id')  + "&codePostal="+$(_this).val(),
		success: function(data){
			if(data){
				$('#ville',$(_this).parent().parent()).replaceWith(data);
				chengeVille();
				if(idVille)
					$('#ville',$(_this).parent().parent()).val(idVille);
			}
			$('#villeLoading').hide();
			getMagasinByDepart($('#departement'));
		}
	});
}
function chengeVille(){
	//$('#ville').change(function() {
	var toto=$("#ville :selected").attr("rel");
		if(toto==2){
			if ($('.list-child').length) {box_height = $('.list-child').height()+100;}
			page();
			$('.display-popin').show();
			msg= '<li>'+eval('errors.metro')+'</li>';
			$('.popin .errors-list').html(msg);
			return false;
		}	
	//});	
}

var codePostalDesactiver = false;
function isCodePostalDesactiver(obj,idVille){
	codePostalDesactiver = false;
	/*if($(obj).val().length == 5 && $(obj).val().substr(0,3) == "971")
		codePostalDesactiver = true;*/
	_this = obj;
	$('#villeLoading').show();
	$.ajax({
		type: "POST",url: "./classes/villes.php",data: "codePostal="+$(_this).val(),
		success: function(data){
			if(data){
				eval(data);
			}
		}
	});
}
function setEventsForInputsCodepostalAndVille(){
	setEventForGetVillesByCodePostal();
	$('.ville').unbind();
	$('.ville').bind('change',function(){
		var id = "";
		var value = "";
		if($('.code_postal').length){
			id = "#"+$('.code_postal',$(this).parent().parent().parent()).attr('id');
			value = $('.code_postal',$(this).parent().parent().parent()).val();
		}
		
		$.php("./classes/villes.php",{idSelect: id,codePostal:value,idVille: $(this).val()});
	});
}

/*:::::::::::::::::::::::::::::::::    Hassan le 13/05/2010    ::::::::::::::::::::::::::*/

function checkCodePromo(nbchild)
{	
    $('.coordinates').show();
    $('#title_rib').show();
	$('#saisir_rib').show();
    $('.msgpromo').hide();	
    if ($('#code-promo').val().toUpperCase() == 'TRT52PZ')
    {
        $('.msgpromo').show();
    }
	nbchild=parseInt(nbchild);
    $.ajax({
           type: "POST",
           url: "price_promo.php",
           data: "ajax_promo=" + $('#code-promo').val() +"&nb-child=" + nbchild,
           success: function(data){
            //$("#price_promo").replaceWith($('#price_promo', $(html)));
            //alert(data);
            $("#price_promo").html(data);
            if ($('#promo_exist').val() == 1)
            {
                $('.coordinates').hide();
                $('#title_rib').hide();
				$('#saisir_rib').hide();
            }
           }
         });
}

function validateRib() {
        $('.required').removeClass('required');
        box_height=0;
        var flag = true;
        var msg = '';
        
        if ($('#promo_exist').val() == 0)
        {
        if(!$('#code-bank').val()){
            flag = false; 
            msg+= '<li>'+eval('errors.code_bank')+'</li>';
            $('label', $('#code-bank').parents('li')).addClass('required');
        }
        if(!$('#code-guichet').val()){
            flag = false; 
            msg+= '<li>'+eval('errors.code_guichet')+'</li>';
            $('label', $('#code-guichet').parents('li')).addClass('required');
        }
        if(!$('#N-compte').val()){
            flag = false; 
            msg+= '<li>'+eval('errors.N_compte')+'</li>';
            $('label', $('#N-compte').parents('li')).addClass('required');
        }
        if(!$('#rib').val()){
            flag = false; 
			
            msg+= '<li>'+eval('errors.rib')+'</li>';
            $('label', $('#rib').parents('li')).addClass('required');
        }else if(!validateNumRib()){
	            msg+= '<li>'+eval('errors.rib')+'</li>';
	            $('label', $('#rib').parents('li')).addClass('required');
				flag = false;
			}
        }
	if(!$('#contrat').attr('checked')==true){
		flag = false; 
		msg+= '<li>'+eval('errors.conditions')+'</li>';
		$('label', $('#contrat').parents('p')).addClass('required');
	}
	/*if($('#code-promo').val().length ){
		if(code_promotionnel == -2){
			flag = false; 
			msg+= '<li>'+eval('errors.err_code_available')+'</li>';	
		}		
		else if(code_promotionnel == -1){
			flag = false; 
			msg+= '<li>'+eval('errors.err_code')+'</li>';	
		}		
	}*/	
	
    if(!flag){    
                page();
                $('.display-popin').show();
                $('.popin .errors-list').html(msg);
                return false;
            }
    $('#paiement_step').submit();
}
function setEventRib(){
	$('#code-bank,#code-guichet,#N-compte').unbind('keyup');
	$('#code-bank').bind('keyup',function(){
		if($('#code-bank').val().length >= 5)
			$('#code-guichet').focus();
	});
	$('#N-compte').bind('keyup',function(){	
		if($('#N-compte').val().length >= 11)
			$('#rib').focus();
	});
	$('#code-guichet').bind('keyup',function(){
		if($('#code-guichet').val().length >= 5)
			$('#N-compte').focus();	
	});
}
 function validateNumRib(){
	var cb = $('#code-bank').val();
	var cd = $('#code-guichet').val();
	var np = $('#N-compte').val();
	var rib = $('#rib').val();
	if(rib != getKey(cb,cd,np)){
		return false;
	}
	return true;
}

function getKey(banque,guichet,compte) {
    if (5 != banque.length || 5 != guichet.length || 11 != compte.length)
    return ;
	compte= parseInt(compte.toUpperCase().replace(/[A-Z]/g, replaceAlpha), 10);
	return (97 - (((parseInt(banque, 10)% 97 * 100000 + parseFloat(guichet)) % 97 * 100000000000 + compte) % 97) * 100 % 97);
} 
function replaceAlpha(alpha){ 
	return '12345678912345678923456789'.charAt(alpha.charCodeAt(0) - 65);
}
//::::::::::::::::::::::           :::::::::::::::::::::::::://
function validateCarte(msg,flag){
	var Luhn = $('#card_fid').val();
	var cartSelected = $('#client').val();
	var prefixe = Luhn.substring(0,6);
	if(cartSelected==2){
		if(Luhn.length==19){
			if(prefixe==913572){
				if(!isLuhnKey(Luhn)){
					flag = false; 
					msg+= '<li>'+eval('errors.cart_fidel')+'</li>';
					$('label', $('#card_fid').parents('li')).addClass('required');
					}
			}else{
				flag = false; 
				msg+= '<li>'+eval('errors.cart_fidelite')+'</li>';
				$('label', $('#card_fid').parents('li')).addClass('required');	
			}	
		}else {
				flag = false; 
				msg+= '<li>'+eval('errors.num_cart')+'</li>';
				$('label', $('#card_fid').parents('li')).addClass('required');
		}			
	}else if(cartSelected==3 || cartSelected==4 || cartSelected==6){
		if(Luhn.length==14){
			controler();
			flag = object.flag; 
			msg += object.msg;				
		}else {
			flag = false; 
			msg+= '<li>'+eval('errors.num_cart_pass')+'</li>';
			$('label', $('#card_fid').parents('li')).addClass('required');
		}		
	}
		obj = {
		msg: msg,
		flag : flag
		}
		return obj;	
}
function isLuhnKey(key){
	var result = false;
	var multiplicateur = 2;
	var tempCalcul = 0;
	var temp2 = 0;
	for (i=key.length-2;i>=0;i--){
	var temp = parseInt(key.substring(i,i+1));
	temp2 = temp * multiplicateur;
	if (temp2>9) {temp2 = temp2+1;}
	tempCalcul = tempCalcul + temp2;
	if (multiplicateur==2) {multiplicateur=1;} else {multiplicateur=2;}
	}
	result = ((( 10-(tempCalcul % 10) ) % 10) == parseInt(key.substring(key.length - 1,key.length)));
	return result;
}
//::::::::::::::::::::::     Contrôle num carte Pass      ::::::::::::::::::::::::::::::
function controler()
{
	var numero = $('#card_fid').val();
    var flag = true;
    var msg = '';

	// Controle cleDeLuhn
	if (controlerCleDeLuhn(numero) == false)
	{
		// alert("Clé de Luhn incorrecte");
		flag = false; 
		msg= '<li>'+eval('errors.cart_pass')+'</li>';
		$('label', $('#card_fid').parents('li')).addClass('required');
	}
	else
	{
	  //alert("Clé de Luhn correcte");
	}

	// Controle numeroDossier
	if (controlerDossier(numero) == true)
	{
	  //alert("Numéro dossier correct");
	  	}else{
	   // alert("Numéro dossier invalide");
	   	flag = false; 
		msg= '<li>'+eval('errors.cart_pass')+'</li>';
		$('label', $('#card_fid').parents('li')).addClass('required');
	}
		object = {
		msg: msg,
		flag : flag
		}
		return object;	

}
function controlerCleDeLuhn(numero)
{

	cleLuhnSaisie = numero.substring(9,10);
	cleLuhnSaisie = parseInt(cleLuhnSaisie,10);

	cumul = 0;

	numero1 = numero.substring(0,1);
	numero1 = parseInt(numero1,10);
	numero1 = numero1*2;

	cumul = calculCumul(cumul, numero1);
	
	numero2 = numero.substring(1,2);
	numero2 = parseInt(numero2,10);

	cumul = calculCumul(cumul, numero2);
	
	numero3 = numero.substring(2,3);
	numero3 = parseInt(numero3,10);
	numero3 = numero3*2;

	cumul = calculCumul(cumul, numero3);
	
	numero4 = numero.substring(3,4);
	numero4 = parseInt(numero4,10);

	cumul = calculCumul(cumul, numero4);
	
	numero5 = numero.substring(4,5);
	numero5 = parseInt(numero5,10);
	numero5 = numero5*2;

	cumul = calculCumul(cumul, numero5);
	
	numero6 = numero.substring(5,6);
	numero6 = parseInt(numero6,10);

	cumul = calculCumul(cumul, numero6);
	
	numero7 = numero.substring(6,7);
	numero7 = parseInt(numero7,10);
	numero7 = numero7*2;

	cumul = calculCumul(cumul, numero7);
	
	numero8 = numero.substring(7,8);
	numero8 = parseInt(numero8,10);

	cumul = calculCumul(cumul, numero8);
	
	numero9 = numero.substring(8,9);
	numero9 = parseInt(numero9,10);
	numero9 = numero9*2;

	cumul = calculCumul(cumul, numero9);

  	if (cumul < 10)
		moduloCumul = parseInt(cumul.toString().substring(0,1),10);
	else
		moduloCumul = parseInt(cumul.toString().substring(1,2),10);
	if (moduloCumul == 0)
		cleLuhnCalculée = 0;
	else
		cleLuhnCalculée = 10 - moduloCumul;

	if (cleLuhnCalculée != cleLuhnSaisie)
	{
	  return false;
	}
	else
	{
	  return true;
	}
}
function controlerDossier(numeroCarte)
{
 	//
	// Est-ce que le numero saisi est un numero de dossier Carte ?
	//
	var dossierCarte = false;
	troisDernier = numeroCarte.substring(11,14);
	position11 = parseInt(numeroCarte.substring(10,11),10);
	position1 = parseInt(numeroCarte.substring(0,1),10);
	
	if (troisDernier == '100' && position11 != 0 && position1 == 5)
	{
		dossierCarte = true;
	}
	
	return dossierCarte;
}
function calculCumul(cumul, numero)
{
  	if (numero < 10)
		cumul = cumul + numero;
	else
	{
		dizaine = parseInt(numero.toString().substring(0,1),10);
		unite = parseInt(numero.toString().substring(1,2),10);
		cumul = cumul + dizaine + unite;
	}
	return cumul;
}

