
var LastQte = null;


// Renvoie nb sous forme de float. Si jamais nb n'est pas un nombre la fonction renvoie 0
function dkjs_float(nb) {
	var res = parseFloat(nb);
	if (isNaN(res)) res = 0;
	return res;
}

//_____________________________________________________________________________
function dkjs_heureChiffre(monHeure) {
	var PosSep1 = monHeure.lastIndexOf(':');
	var PosSep2 = monHeure.lastIndexOf(' ');
	var PosSep3 = monHeure.lastIndexOf('-');
	var PosSep4 = monHeure.lastIndexOf('/');
	var PosSep5 = monHeure.lastIndexOf('.');
	if ((PosSep1 == -1)&&(PosSep2 == -1)&&(PosSep3 == -1)&&(PosSep4 == -1)&&(PosSep5 == -1))
	{
		return monHeure;
	}
	else
	{
		if (monHeure.length == 4)
		{
			var Heure = monHeure.substring(0,1);
			var Minute = monHeure.substring(2,4);
			var res = Heure + '' + Minute;
			return res/1;
		}
		else if (monHeure.length == 5)
		{
			var Heure = monHeure.substring(0,2);
			var Minute = monHeure.substring(3,5);
			var res = Heure + '' + Minute;
			return res/1;
		}
		return 0;
	}
}

//_____________________________________________________________________________
function dkjs_verifHeureValide(laZone) {
	
	if (laZone == '0') return true;
	
	var PosSep = laZone.lastIndexOf(':');
	if (PosSep == -1) PosSep = laZone.lastIndexOf(' ');
	if (PosSep == -1) PosSep = laZone.lastIndexOf('-');
	if (PosSep == -1) PosSep = laZone.lastIndexOf('/');
	if (PosSep == -1) PosSep = laZone.lastIndexOf('.');
	
	if (PosSep == -1)
	{
		if (laZone.match(/^\d{3}$/)) PosSep = 1;
		else if (laZone.match(/^\d{4}$/)) PosSep = 2;
		else return false;
	}
		
	var HH = laZone.substring(0, PosSep);
	if (HH == '') HH = '0';
	if (!HH.match(/^\d{1,2}$/)) return false;
	if (HH > 23) return false;
	
	var MM = laZone.substring(PosSep + 1);
	if (MM == '') MM = '0';
	if (!MM.match(/^\d{1,2}$/)) return false;
	if (MM > 59) return false;
	
	return true;
}

function fpjs_verifDate(laZone) {
	var Reg = /^\d{2}\/\d{2}\/\d{4}$/
	if (!laZone.match(Reg)) return -1

	var JJ = laZone.substring(0,2)
	var MM = laZone.substring(3,5)
	var AA = laZone.substring(6)

	if (AA < 2001) return -2
	if (MM < 1 || MM > 12) return -2
	if (JJ < 1 || JJ > 31) return -2
	if (JJ > 30 && (MM == 4 || MM == 6 || MM == 9 || MM == 11)) return -2
	if (MM == 2) {
		Reg = ((AA % 4 == 0) && ( (!(AA % 100 == 0)) || (AA % 400 == 0) ) ) ? 29 : 28
		if (JJ > Reg) return -2
	}
	return 1
}

// Arrondi un nombre
function fpjs_arrondi(Nombre,Decimales) {
  if (!Number(Nombre)) return 0;
  if (Nombre == 0 || Decimales < 1) return 0
  var Multiplie = Math.pow(10,Decimales)
  Nombre = (Nombre * Multiplie) + 0.5
  Nombre = Math.floor(Nombre)
  Nombre = Nombre / Multiplie
  return Nombre
}

// arrondi superieur
function dkjs_arrondiSup(Nombre,Decimales) {
	if (!Number(Nombre)) return 0;
	if (Nombre == 0 || Decimales < 1) return 0;
	var Multiplie = Math.pow(10,Decimales);
	var Resultat = (Nombre * Multiplie) + 0.5;
	Resultat = Math.floor(Resultat);
	Resultat = Resultat / Multiplie;
	if (Resultat < Nombre) Resultat = Resultat + (1/Multiplie); 
	return Resultat;
}

/*
 * Arrondit un prix (2 décimales) aux cinq centimes les plus proches (1.82 => 1.80 et 1.83 => 1.85)
 *
 * @param float $Prix Prix à arrondir
 * @return float prix arrondi et formaté
 */
function dkjs_arronditCinqCentimes(Prix) {
	Prix = Prix * 10;
	PrixArrondi = Math.round(Prix);
	PrixFloor = Math.floor(Prix);
	if (PrixArrondi == PrixFloor) {
		if ((Prix - PrixArrondi) > 0.2) Prix = PrixArrondi + 0.5;
		else Prix = PrixArrondi;
	} else {
		if ((PrixArrondi - Prix) > 0.2) Prix = PrixFloor + 0.5;
		else Prix = PrixArrondi;
	}
	Prix = Prix / 10;
	return fpjs_formatNombre(Prix);
}

// Renvoie un nombre formate (2 decimales)
function fpjs_formatNombre(Nombre) {
	if (!Number(Nombre)) return '0.00';
	if (Nombre < 0) return Nombre;
	Nombre = dkjs_arrondiSup(Nombre,2);
	Nombre = '' + parseInt(dkjs_arrondiSup(Nombre * 100, 2));
	if (Nombre < 10) Nombre = '00' + Nombre
	else if (Nombre < 100) Nombre = '0' + Nombre
	return Nombre.substring(0, Nombre.length - 2)+ '.'+Nombre.substring(Nombre.length - 2);
}

// Renvoie nb sous forme d'entier. Si jamais nb n'est pas un nombre la fonction renvoie 0
function dkjs_integer(nb) {
	var res = parseInt(nb);
	if (isNaN(res)) res = 0;
	return res;
}

function fp_switchTR(oTr) {
	var Id = oTr.id + '_detail';
	var Bloc = document.getElementById(Id).style;
	if (Bloc.display == 'none') Bloc.display = 'block';
	else Bloc.display = 'none';
}

function fp_switchQte(oTr) {
	var Id = oTr.id + '_';

	if (LastQte != null) {
		fp_onOff('none');

		if (LastQte == Id) {
			LastQte = null;
			return;
		}
	}

	LastQte = Id;
	fp_onOff('block');
}

function fp_onOff(Display) {
	var Nb = 0;
	var Bloc = null;
	while(true) {
		Nb ++;
		Bloc = document.getElementById(LastQte + Nb);
		if (Bloc == null) break;
		Bloc.style.display = Display;
	}
}

/* Mise à jour des zones de saisies contenant les quantités et les totaux de prix à partir d'une saisie de quantité
 * string codeCase Code de la case (maxi 3 nombres séparés par un '_')
 * string prefixe Préfixe du nom de la zone sur laquelle l'évènement onChange est déclenché
 * object laZone Zone de saisie sur laquelle l'évènement onChange est déclenché 
 */
function ljs_majTotaux(codeCase, prefixe, laZone) {
	if (prefixe == 's_qte') ljs_verifQuantite(laZone,codeCase);
	var prixUnitaire = parseFloat(document.forms[0].elements['s_pu_'+codeCase].value);
	var qte = dkjs_integer(laZone.value);
	
	if (qte == 0) document.forms[0].elements['s_TotalSeance_'+codeCase].value = '';
	else document.forms[0].elements['s_TotalSeance_'+codeCase].value = fpjs_formatNombre(prixUnitaire * qte);

	var tabCode = new Array();
	tabCode = codeCase.split('_');
	if (tabCode.length == 3) ljs_majMultiTarif(tabCode);
	ljs_majResa(tabCode);
	ljs_majTotalProduit(tabCode);
	ljs_majTotalPage();
}

/* Verifie que la quantite saisie est bien un nombre entier positif inferieur ou egal à la qte dispo
 * object laZone Zone de saisie sur laquelle l'evenement onChange est declenche
 * string codeCase Code de la case (maxi 3 nombres séparés par un '_')
 */
function ljs_verifQuantite(laZone,codeCase) {
	if (isNaN(parseInt(laZone.value)) || parseInt(laZone.value) < 0) {
		laZone.value = '';
		return;
	}
	var tabCode = codeCase.split('_');
	var dispoDepart = parseInt(document.forms[0].elements['DispoDepart_'+tabCode[0]+'_'+tabCode[1]].value);

	// Mise en commentaire de cette partie car le nombre de places dispo ne doit plus bloquer la qte que l'on veut saisir!
	
	// produit vendu selon plusieurs tarifs 
	/*if (tabCode.length == 3) {
		var nbTarif = parseInt(document.forms[0].elements['nbQte_'+tabCode[0]+'_'+tabCode[1]].value);
		var qte = 0;
		// on fait la somme des qtes saisies pour les differents tarifs en excluant celui pour lequel on vient de saisir une qte
		for (var i=1; i<=nbTarif; i++) {
			if (i != tabCode[2]) {
				qte += dkjs_integer(document.forms[0].elements['s_qte_'+tabCode[0]+'_'+tabCode[1]+'_'+i].value);
			}
		}
		
		if (dkjs_integer(laZone.value) > (dispoDepart - qte)) {
			laZone.value = dispoDepart - qte;
			alert('La quantité saisie est supérieure au nombre de places disponibles.\n=> Correction automatique');
		}
		
	// produit vendu selon 1 seul tarif
	} else {
		if (dkjs_integer(laZone.value) > dispoDepart) {
			laZone.value = dispoDepart;
			alert('La quantité saisie est supérieure au nombre de places disponibles.\n=> Correction automatique');
		}
	}*/
	laZone.value = parseInt(laZone.value);
}

// Maj de la reservation en fonction des quantites saisies
function ljs_majResa(tabCode) {
	// Mise en commentaire, car a present c'est le nombre de reservations qui est mis a jour

	/*var dispoDepart = parseInt(document.forms[0].elements['DispoDepart_'+tabCode[0]+'_'+tabCode[1]].value);
	var dispo = 0;

	var qte = dkjs_integer(document.forms[0].elements['s_qte_'+tabCode[0]+'_'+tabCode[1]].value);
	dispo = dispoDepart - qte;
	document.forms[0].elements['s_dispo_'+tabCode[0]+'_'+tabCode[1]].value = dispo;*/
	
	var resaDepart = parseInt(document.forms[0].elements['ResaDepart_'+tabCode[0]+'_'+tabCode[1]].value);
	var qte = dkjs_integer(document.forms[0].elements['s_qte_'+tabCode[0]+'_'+tabCode[1]].value) - resaDepart;
	var res = resaDepart + qte;
	document.forms[0].elements['s_reserve_'+tabCode[0]+'_'+tabCode[1]].value = res;
}

// Mise a jour des zones de qtes et de total pour une seance dans le cas ou le produit est vendu selon plusieurs tarifs
function ljs_majMultiTarif(tabCode) {
	// nombre de categories de tarifs pour le produit
	var nbTarif = parseInt(document.forms[0].elements['nbQte_'+tabCode[0]+'_'+tabCode[1]].value);
		
	var totalQte = totalSeance = 0;
	var ZoneQte = document.forms[0].elements['s_qte_'+tabCode[0]+'_'+tabCode[1]];
	var ZoneTotalSeance = document.forms[0].elements['s_TotalSeance_'+tabCode[0]+'_'+tabCode[1]];
	for (var i=1; i<=nbTarif; i++) {
		totalQte += dkjs_integer(document.forms[0].elements['s_qte_'+tabCode[0]+'_'+tabCode[1]+'_'+i].value);
		totalSeance += dkjs_float(document.forms[0].elements['s_TotalSeance_'+tabCode[0]+'_'+tabCode[1]+'_'+i].value);
	}
	ZoneQte.value = ((totalQte == 0) ? '' : totalQte);
	ZoneTotalSeance.value = ((totalSeance == 0) ? '' : fpjs_formatNombre(totalSeance));
}

// Mise a jour de la zone total produit
function ljs_majTotalProduit(tabCode) {
	// nombre de seances pour le produit
	var nbSeance = parseInt(document.forms[0].elements['nbTotalSeance_'+tabCode[0]].value);
	var totalProduit = 0;
	var ZoneTotalProduit = document.forms[0].elements['s_TotalProduit_'+tabCode[0]];
	for (var i=1; i<=nbSeance; i++) {
		totalProduit += dkjs_float(document.forms[0].elements['s_TotalSeance_'+tabCode[0]+'_'+i].value);
	}
	ZoneTotalProduit.value = ((totalProduit == 0) ? '' : fpjs_formatNombre(totalProduit));
}





// **************************** FONCTIONS POUR TOUS LES PRODUITS


// Mise a jour du total de la page
function ljs_majTotalPage() {

	var nbProduit = parseInt(document.forms[0].nbProduit.value);
	var nbProduitSsStock = parseInt(document.forms[0].nbProduitSsStock.value);
	var total = 0;

	if (nbProduit>0) {
		for (var i=1; i<=nbProduit; i++) {
			total += dkjs_float(document.forms[0].elements['s_TotalProduit_'+i].value);
		}
	}
	if (nbProduitSsStock>0) {
		for (var i=1; i<=nbProduitSsStock; i++) {
			total += dkjs_float(document.forms[0].elements['s_TotalProduitSsStock_'+i].value);
		}
	}

	document.forms[0].s_totalPage.value = ((total == 0) ? '0' : fpjs_formatNombre(total));
}





// **************************** FONCTIONS SANS STOCK

//Verif si au moins une seance a ete choisie
function ljs_verifAjout() {
	if (document.forms[0].s_totalPage.value==0) 
	{
		alert('Vous devez choisir au moins un produit!');
		return(false);
	}
	else return(true);
}

// Verif pour la saisie de la date
function ljs_verifDate(laZone) {
	if (laZone.value == '') return;

	if (fpjs_verifDate(laZone.value) != 1) {
		alert('Vous devez saisir une date valide ou laisser la zone vide');
		laZone.focus();
	}
}

/* Mise à jour des zones de saisies contenant les quantités et les totaux de prix à partir d'une saisie de quantité
 * string codeCase Code de la case (maxi 3 nombres séparés par un '_')
 * string prefixe Préfixe du nom de la zone sur laquelle l'évènement onChange est déclenché
 * object laZone Zone de saisie sur laquelle l'évènement onChange est déclenché
 */
function ljs_majTotauxSsStock(codeCase, prefixe, laZone) {
	if (prefixe == 's_qteSsStock') ljs_verifQuantiteSsStock(laZone,codeCase);

	var prixUnitaire = parseFloat(document.forms[0].elements['s_puSsStock_'+codeCase].value);
	var qte = dkjs_integer(laZone.value);
	
	if (qte == 0) document.forms[0].elements['s_TotalSeanceSsStock_'+codeCase].value = '';
	else document.forms[0].elements['s_TotalSeanceSsStock_'+codeCase].value = fpjs_formatNombre(prixUnitaire * qte);

	var tabCode = codeCase.split('_');
	if (tabCode.length == 2) ljs_majMultiTarifSsStock(tabCode);
	ljs_majTotalProduitSsStock(tabCode);
	ljs_majTotalPage();
}

// Mise a jour de la zone total produit
function ljs_majTotalProduitSsStock(tabCode) {
	// nombre de seances pour le produit
	var totalProduit = 0;
	var ZoneTotalProduit = document.forms[0].elements['s_TotalProduitSsStock_'+tabCode[0]];
	totalProduit += dkjs_float(document.forms[0].elements['s_TotalSeanceSsStock_'+tabCode[0]].value);
	
	ZoneTotalProduit.value = ((totalProduit == 0) ? '' : fpjs_formatNombre(totalProduit));
}

/* Verifie que la quantite saisie est bien un nombre entier positif inférieur ou égal à la qté dispo
 * object laZone Zone de saisie sur laquelle l'évènement onChange est déclenché
 * string codeCase Code de la case (maxi 3 nombres séparés par un '_')
 */
function ljs_verifQuantiteSsStock(laZone,codeCase) {
	if (isNaN(parseInt(laZone.value)) || parseInt(laZone.value) < 0) {
		laZone.value = '';
		return;
	}
}

/* Mise à jour des zones de qtés et de total pour une séance dans le cas où le produit est vendu selon plusieurs tarifs */
function ljs_majMultiTarifSsStock(tabCode) {
	// nombre de categories de tarifs pour le produit
	var nbTarif = parseInt(document.forms[0].elements['nbQteSsStock_'+tabCode[0]].value);
		
	var totalQte = totalSeance = 0;
	var ZoneQte = document.forms[0].elements['s_qteSsStock_'+tabCode[0]];
	var ZoneTotalSeance = document.forms[0].elements['s_TotalSeanceSsStock_'+tabCode[0]];
	for (var i=1; i<=nbTarif; i++) {
		totalQte += dkjs_integer(document.forms[0].elements['s_qteSsStock_'+tabCode[0]+'_'+i].value);
		totalSeance += dkjs_float(document.forms[0].elements['s_TotalSeanceSsStock_'+tabCode[0]+'_'+i].value);
	}
	ZoneQte.value = ((totalQte == 0) ? '' : totalQte);
	ZoneTotalSeance.value = ((totalSeance == 0) ? '' : fpjs_formatNombre(totalSeance));
}

function ljs_verifHeureValide(laZone) {
	if (laZone.value == '') return;
	if (!dkjs_verifHeureValide(laZone.value)) {
		alert('Vous devez saisir une heure valide.');
		laZone.focus();
	}

}

function ljs_chronologie(laZone,sNumLigne) {
	if (laZone == '') return;
	var HeureDebut = document.forms[0].elements['s_dlHeureDebutSsStock_'+sNumLigne].value;
	if (HeureDebut == '') {
		alert('Vous devez d\'abord saisir une heure de début');
		document.forms[0].elements['s_dlHeureDebutSsStock_'+sNumLigne].focus();
		return;
	}
	var HD = dkjs_heureChiffre(HeureDebut);
	var HF = dkjs_heureChiffre(laZone.value);
	if (HF <= HD) {
		alert('L\'heure de fin doit être supérieure à l\'heure de début');
		laZone.focus();
		return;
	}
}











function dkjs_verifAccesPaiement() {
	
	var F = document.tx_dklikprogestar_form_ecommerce;
	
	if ((F.s_clNom.value=="") || (F.s_clPrenom.value=="") || (F.s_clCP.value=="") || (F.s_clVille.value==""))	{
			alert('Vous devez entrer vos nom, prénom et adresse complète');
			F.s_clNom.style.background='#EDEDED';
			F.s_clPrenom.style.background='#EDEDED';
			F.s_clCP.style.background='#EDEDED';
			F.s_clVille.style.background='#EDEDED';
			return false;
	}
	
	if (!_CF_checklength(F.s_clMail.value)){
		if (!_CF_onError(F, F.s_clMail, F.s_clMail.value, "Vous devez saisir votre email.")){
			return false;
		}
	}else{
		if(F.s_clMail.value.indexOf("@", 0)< 1){
			if (!_CF_onError(F, F.s_clMail, F.s_clMail.value, "Email incorrect !")){
				return false;
			}
		}else{
			if(F.s_clMail.value.indexOf(".", (F.s_clMail.value.indexOf("@", 0)))<3){
				if (!_CF_onError(F, F.s_clMail, F.s_clMail.value, "Email incorrect !")){
					return false;
				}
			}else{
				if( (F.s_clMail.value.substring(F.s_clMail.value.indexOf(".", (F.s_clMail.value.indexOf("@", 0))), F.s_clMail.value.length).length) < 3 ){
					if (!_CF_onError(F, F.s_clMail, F.s_clMail.value, "Email incorrect !")){
						return false;
					}
				}
			}
		}
	}

	F.tx_dklikprogestar_parametre2.value='paiement';
	F.actionIdentification.value='identification';
	F.submit();
	
}











function _CF_onError(form_object, input_object, object_value, error_message)
    {
	alert(error_message);
	input_object.style.background='#EDEDED';
	input_object.focus();
	
       	return false;	
    }

function _CF_checkeurodate(object_value)
    {
    //Retourne vrai si la date est au format europpeen ou NULL
    //sinon, retourne faux
    if (object_value.length == 0)
        return true;
    //retourne vrai si la date est au format dd/mm/yyyy
	isplit = object_value.indexOf('/');
	if (isplit == -1 || isplit == object_value.length)
		return false;
    sDay = object_value.substring(0, isplit);
	isplit = object_value.indexOf('/', isplit + 1);
	if (isplit == -1 ||  (isplit + 1 )  == object_value.length)
		return false;
    sMonth = object_value.substring((sDay.length + 1), isplit);
	sYear = object_value.substring(isplit + 1);
	if (!_CF_checkinteger(sMonth)) //verifie le mois
		return false;
	else
	if (!_CF_checkrange(sMonth, 1, 12)) // verifie le mois
		return false;
	else
	if (!_CF_checkinteger(sYear)) //verifie l'annee
		return false;
	else
	if (!_CF_checkrange(sYear, 0, null)) //verifie l'anne
		return false;
	else
	if (!_CF_checkinteger(sDay)) //verifie le jour
		return false;
	else
	if (!_CF_checkday(sYear, sMonth, sDay)) //verifie le jour
		return false;
	else
		return true;
    }

function _CF_checkday(checkYear, checkMonth, checkDay)
    {
	maxDay = 31;
	if (checkMonth == 4 || checkMonth == 6 ||
			checkMonth == 9 || checkMonth == 11)
		maxDay = 30;
	else
	if (checkMonth == 2)
	{
		if (checkYear % 4 > 0)
			maxDay =28;
		else
		if (checkYear % 100 == 0 && checkYear % 400 > 0)
			maxDay = 28;
		else
			maxDay = 29;
	}
	return _CF_checkrange(checkDay, 1, maxDay); //verifie le jour
    }

function _CF_checkinteger(object_value)
    {
    //Retourne vrai si l'object est un nombre faux sinon	
    if (object_value.length == 0)
        return false;
    //Retourne vrai si la valeur est un entier defini comme
    //   ayant un + ou un - comme premier caractere
    //  ou bien un chiffre compris entre 0 et 9
	var decimal_format = ".";
	var check_char;
    //Le premier caractere peut-etre +- espace ou un chiffre
	check_char = object_value.indexOf(decimal_format)
    //Etait-ce un decimal
    if (check_char < 1)
	return _CF_checknumber(object_value);
    else
	return false;
    }

function _CF_numberrange(object_value, min_value, max_value)
    {
    //verifie le minimum
    if (min_value != null)
	{
        if (object_value < min_value)
		return false;
	}
    // verifie le maximum
    if (max_value != null)
	{
	if (object_value > max_value)
		return false;
	}
    //tous les tests sont passe, donc...
    return true;
    }

	function _CF_checknumber(object_value)
    {
    //Retourne vrai si l'object est un nombre faux sinon	
    if (object_value.length == 0)
        return true;
    //Retourne vrai si la valeur est un entier defini comme
    //   ayant un + ou un - comme premier caractere
    //  ou bien un chiffre compris entre 0 et 9
	//  ou au plus un "."
	var start_format = " .,+-0123456789";
	var number_format = " .,0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;
    //Le premier caractere peut-etre +- espace ou un chiffre
	check_char = start_format.indexOf(object_value.charAt(0))
    //Etait-ce un decimal
	if (check_char == 1)
	    decimal = true;
	else if (check_char < 1)
		return false;
	//Les caracteres restant peuvent seulement etre ., un chiffre mais seulement une decimale
	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)		// Seconde decimale.
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;
        // ignore les blancs au départ
		}
	        else if (trailing_blank)
			return false;
		else
			digits = true;
	}	
    //Tous les test passes donc...
    return true;
    }

function _CF_checkrange(object_value, min_value, max_value)
    {
    //Si l'objet est dans les limites vrai, faux sinon
    if (object_value.length == 0)
        return true;
    if (!_CF_checknumber(object_value))
	{
	return false;
	}
    else
	{
	return (_CF_numberrange((eval(object_value)), min_value, max_value));
	}
    //Tous les tests passes, donc...
    return true;
    }

function _CF_checklength(object_value)
    {
	if (object_value == 0)
    	return false;
	else return true;
	}

function _CF_checkcheckbox(object_value, number)
    {
	var i, trouve = 0;
	for(i = 0; i < number ; i++)
	{
		if (object_value[i].checked == true)
    		trouve = 1;
	}
	if (trouve == 1)
		return true
	else 
		return false;
	}

function _CF_checklist(object_value, number)
    {
	if (object_value.options[object_value.selectedIndex].value > number)
		return true;
	else
		return false;
	}

function _CF_checklist2(object_value, number)
    {
	if (object_value.options[object_value.selectedIndex].value != number)
		return true;
	else
		return false;
	}
	
function _CF_checkmail(object_value, vide) {
	if (vide == 1) {
		if (object_value == 0) {
			return false;
		}
	}
	else
		if (object_value != "")	{
			var Pat = /^[a-z][a-z0-9_\.-]+@[a-z0-9_\.\-]+\.[a-z]{2,3}$/i
			if (object_value.match(Pat))
				return true;
			else
				return false;
		}
	
	return true;
}








function dkjs_verifAddParticipant(nbPart) {
	
	var F = document.tx_dklikprogestar_form_ecommerce;
	
	for (var i=0;i<nbPart;i++) {
		if (!_CF_checklength(F.elements["s_nomPart_"+i].value)){
			if (!_CF_onError(F, F.elements["s_nomPart_"+i], F.elements["s_nomPart_"+i].value, "Vous devez saisir le nom de tous les participants.")){
				return false;
			}
		}
		if (!_CF_checklength(F.elements["s_prenomPart_"+i].value)){
			if (!_CF_onError(F, F.elements["s_prenomPart_"+i], F.elements["s_prenomPart_"+i].value, "Vous devez saisir le prénom de tous les participants.")){
				return false;
			}
		}
	}
	
	F.tx_dklikprogestar_parametre2.value='ajouter_au_panier';
	F.actionPanier.value='participants';
	F.submit();

}






















  moisX=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
  JourM=["Di","Lu","Ma","Me","Je","Ve","Sa"];

  var fermable_microcal=true;
  var select_old= null;

  var startWeek=0;//debut de la semaine 0=dim,1=lun,...
  var jourPause={0:true,6:true}; //jour de pause de la semaine
  var jourFeriee={"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"};

  //structure la date 
  function strucDate(dateX) {
    return {"pos":dateX.getDay(),"jour":dateX.getDate(),"mois":dateX.getMonth()+1,"annee":dateX.getFullYear()};
  }
  
  var dateS= strucDate(new Date());//date Selectionne
  var dnow= strucDate(new Date());//date actuelle

  //retourne le ieme jour du 1er du mois
  function premJourMois(mois,annee) {
    return (new Date(annee,mois-1,1).getDay());
  }
  //retourne le jour max du mois
  function JmaxMois(mois,annee) {
    return (new Date(annee,mois,0).getDate());
  }

  /* Test une date si elle est correct...spécial killer*/
  function testTypeDate(dateEntree) {
    tst=false;
    try {
      rc=dateEntree.split("/");
      nd=new Date(rc[2],(rc[1]-1),rc[0]);
      tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
    } catch(e) {}
    return tst;
  }

  //selection de la zone avec la souris
  function choix(koi,code) {
    if (code) {
      select_old= koi.style.background;
      koi.style.background ='#c0c0FF';
    }else{
      koi.style.background =select_old;
    }
  }

  function testTravail(oldX,xx,jj,mm,aa) {
    styleX="font-family:Verdana;font-size:9px;text-align:center;";
    styleX+=(oldX)?"":"color:#DDEBFF;";
    styleX+="cursor:hand;cursor:pointer;border-right:1px #e0e0e0 solid;border-bottom:1px #e0e0e0 solid;";
    if (jourPause[xx]||jourFeriee[jj+"-"+mm]!=null) styleX+="background:#EEEEEE;";
    if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) styleX+="border:2px red solid;";
    return styleX;
  }

  //test si annee bissextile
  function bissextile(annee) {
    return (annee%4==0 && annee %100!=0 || annee%400==0);
  }

  //Retourne le nombre de jour depuis le 1er janvier (num de semaine)
  function nbJAnnee(dateX) {
    var nb_mois=[,0,31,59,90,120,151,181,212,243,273,304,334];
    j=dateX.jour ; m=dateX.mois ; a=dateX.annee;
    nb=nb_mois[m]+j-1 ;
    if (bissextile(a) && m>2) nb++;
    return nb;
  }

  //affiche le calendrier
  function view_microcal(actif,ki,source,mxS,axS) {
		//alert(actif+','+ki.id+','+source+','+mxS+','+axS);
    if (actif) {
      //decalage du mois su on clique sur -/+
      if (mxS!=-1) {
        clearTimeout(cc);
        ki.focus();
        fermable_microcal=true;
        dateS.mois=mxS;
        dateS.annee=axS;
        if (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
        if (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
      }
      //init
      Dstart=(premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
      jmaxi=JmaxMois(dateS.mois,dateS.annee);
      jmaxiAvant=JmaxMois((dateS.mois-1),dateS.annee);
      //si on veux ajouter le numero de la semaine ...
      //idxWeek=parseInt(nbJAnnee(strucDate(new Date(dateS.mois+'-01-'+dateS.annee)))/7,10)+1;

      ymaxi=parseInt((jmaxi+Dstart+1)/7,10);

      //generation du tableau
      //--entete
      htm="<table><tr style='font-size:10px;font-family:Verdana;color:white;text-align:center;background:#2B4874';'>";
      htm+="<td style='cursor:hand;' ";
      if (ki.id=="tx_dklikprogestar_firstday") {
      	htm+="onclick=\"view_microcal(true,document.forms[0].tx_dklikprogestar_firstday,"+source.id+","+(dateS.mois-1)+","+dateS.annee+");\"";
      }else{
      	htm+="onclick=\"view_microcal(true,document.forms[0].tx_dklikprogestar_lastday,"+source.id+","+(dateS.mois-1)+","+dateS.annee+");\"";
    	}
      htm+=">-</td>";
      htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b>&nbsp;"+dateS.annee+"</td>";
      htm+="<td  style='cursor:hand; cursor:pointer;' ";
      if (ki.id=="tx_dklikprogestar_firstday") {
      	htm+="onclick=\"view_microcal(true,document.forms[0].tx_dklikprogestar_firstday,"+source.id+","+(dateS.mois+1)+","+dateS.annee+")\"";
      }else{
      	htm+="onclick=\"view_microcal(true,document.forms[0].tx_dklikprogestar_lastday,"+source.id+","+(dateS.mois+1)+","+dateS.annee+")\"";
    	}
      htm+=">+</td></tr>";
      //--corps
      htm+="<tr>";
      //affichage des jours DLMMJVS
      for (x=0;x<7;x++) 
      htm+="<td  style='font-size:10px;font-family:Verdana;background:#CCCCCC'><b>"+JourM[(x+startWeek)%7]+"</b></td>";
      htm+="</tr>"

      //------------------------
      for (y=0;y<=ymaxi;y++) {
        htm+="<tr>";
        for (x=0;x<7;x++) {
          idxP=y*7+x-Dstart+1;   //numero du jour
          aa=dateS.annee;
          xx=(x+startWeek)%7;
          //jour du mois precedent
          if (idxP<=0) {
            jj=idxP+jmaxiAvant;mm=dateS.mois-1;
            if (mm==0)
            {mm=12;aa--;}
            htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)' ";
            if (ki.id=="tx_dklikprogestar_firstday") {
	            htm+="onclick=\"document.forms[0].tx_dklikprogestar_firstday.value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.forms[0].tx_dklikprogestar_firstday.style.color='black';\"";
	          }else{
	            htm+="onclick=\"document.forms[0].tx_dklikprogestar_lastday.value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.forms[0].tx_dklikprogestar_lastday.style.color='black';\"";
	          }
            htm+=">"+jj+"</td>";
          }else if (idxP>jmaxi) //jour du mois suivant
          {
            jj=idxP-jmaxi;mm=dateS.mois+1;
            if (mm==13) {
              mm=1;aa++;
            }
            htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)' ";
            if (ki.id=="tx_dklikprogestar_firstday") {
	            htm+="onclick=\"document.forms[0].tx_dklikprogestar_firstday.value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.forms[0].tx_dklikprogestar_firstday.style.color='black';\"";
	          }else{
	            htm+="onclick=\"document.forms[0].tx_dklikprogestar_lastday.value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.forms[0].tx_dklikprogestar_lastday.style.color='black';\"";
	          }
            htm+=">"+jj+"</td>";
          } else //jour du mois en cours
          {
            jj=idxP;mm=dateS.mois;
            //htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black';\">"+jj+"</td>";
            htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)' "; 
            if (ki.id=="tx_dklikprogestar_firstday") {
	            htm+="onclick=\"document.forms[0].tx_dklikprogestar_firstday.value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.forms[0].tx_dklikprogestar_firstday.style.color='black';\"";
	          }else{
	            htm+="onclick=\"document.forms[0].tx_dklikprogestar_lastday.value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.forms[0].tx_dklikprogestar_lastday.style.color='black';\"";
	          }
            htm+=">"+jj+"</td>";
          }
        }
        htm+="</tr>"
      }
      //-------------------------

      htm+="</table>"
      //affiche le tableau
      source.innerHTML=htm;
      source.style.visibility="";
    } else {
      //ferme le calendrier
      if (fermable_microcal) 
         cc=setTimeout(source.id+".style.visibility='hidden'",500);
    }
  }



	function tx_dklikprogestar_check_formulaire(qui, quoi){
		if(qui=='famille'){
			document.tx_dklikprogestar_form_ecommerce.tx_dklikprogestar_famille.value=quoi;
			if(document.tx_dklikprogestar_form_ecommerce.tx_dklikprogestar_sousfamille){document.tx_dklikprogestar_form_ecommerce.tx_dklikprogestar_sousfamille.value='';}
			if(document.tx_dklikprogestar_form_ecommerce.tx_dklikprogestar_produit){document.tx_dklikprogestar_form_ecommerce.tx_dklikprogestar_produit.value='';}
			document.tx_dklikprogestar_form_ecommerce.submit();
		}
	}
