var REG_CarteCredit = RegExp(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/ );
var REG_Courriel = RegExp(/^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$/);

function evalBaliseScript( texteOri ) {
	var regDebutScript = /<script[^>]*>/igm;
	var regFinScript = /<\/script>/igm;
	var indexDebut = true;
	var indexFin = null;
	
	while( indexDebut ){
		regDebutScript.exec( texteOri );
		regFinScript.exec( texteOri );
		
		indexDebut = regDebutScript.lastIndex;
		indexFin = regFinScript.lastIndex - regFinScript.source.length;
		if (indexDebut) {
			try {
				eval( texteOri.substring(indexDebut,indexFin) );
			} catch (e) {
				if (console.log)
					console.log(e);
			}
		}
	}
}
			
function pubPrec( ob, event ){
	$('.slideshow').cycle('prev');
	cancelBubble(event);
}
function pubSuiv( ob, event ){
	$('.slideshow').cycle('next');
	cancelBubble(event);
}
function clickSurPub( obImage, event, lien ) {
	if (!event) var event = window.event;
	if ( event.shiftKey != 1 && lien != "" ) {
		var monParse = parseURL(lien);
		
		if ( monParse.protocol == "http" && monParse.domain == "www.voyagevasco.com" ){
			if ( monParse.fileExt == "php" )
				window.open(lien,"_self");
			else
				window.open(lien,"_blank");
		} else {
			window.open(lien,"_blank");
		}
	}
	if (event.shiftKey != 1)
		cancelBubble( event );
}
function cancelBubble( event ) {
	if (!event) var event = window.event;
	if (event.stopPropagation) event.stopPropagation();
	else event.cancelBubble = true;
}

function monAddListenerEvent( ob, leNomEvent, fnct ) {
	if (ob.addEventListener) {
		ob.addEventListener(leNomEvent, fnct, false);
	} else if (ob.attachEvent) {
		ob.attachEvent("on"+leNomEvent, fnct);
	}
}

function onclickRadioText( idCheckBox ) {
	//Faire un switch de l'état du radio
	monInput = document.getElementById( idCheckBox );
	if ( !monInput.checked ) {
		monInput.checked = !monInput.checked;
	}
}

function RadioTextInLine( nomInputCheck, valeur, texteAfficher, onCheck, fnctOnChange ) {
	//'<input name="DURATION_JN" type="radio" value="J" text="Jour" />'
	if ( !fnctOnChange ) { fnctOnChange = ""; }
	
	var cumulTextRadio = "";
	
	//Créer le checkbox
	if (onCheck) {
		cumulTextRadio += '<input type="radio" name="'+nomInputCheck+'" id="'+nomInputCheck+valeur+'_Radio" value="'+valeur+'" checked="checked" onchange="'+fnctOnChange+'" />';
	} else {
		cumulTextRadio += '<input type="radio" name="'+nomInputCheck+'" id="'+nomInputCheck+valeur+'_Radio" value="'+valeur+'" onchange="'+fnctOnChange+'" />';
	}
	//Créer le spanTexte
	cumulTextRadio += '<span class="texteOnClick" onclick="javascript:onclickRadioText(\''+nomInputCheck+valeur+'_Radio\');'+fnctOnChange+'" >'+texteAfficher+'</span>';
	
	return cumulTextRadio;
}

function RadioText( nomInputCheck, valeur, texteAfficher, onCheck, fnctOnChange ) {
	//'<input name="DURATION_JN" type="radio" value="J" text="Jour" />'
	if ( !fnctOnChange ) { fnctOnChange = ""; }
	
	//Créer le checkbox
	if (onCheck) {
		document.write( '<input type="radio" name="'+nomInputCheck+'" id="'+nomInputCheck+valeur+'_Radio" value="'+valeur+'" checked="checked" onchange="'+fnctOnChange+'" />' );
	} else {
		document.write( '<input type="radio" name="'+nomInputCheck+'" id="'+nomInputCheck+valeur+'_Radio" value="'+valeur+'" onchange="'+fnctOnChange+'" />' );
	}
	//Créer le spanTexte
	document.write( '<span class="texteOnClick" onclick="javascript:onclickRadioText(\''+nomInputCheck+valeur+'_Radio\');'+fnctOnChange+'" >'+texteAfficher+'</span>' );
}

function onclickCheckBoxText( idCheckBox ) {
	//Faire un switch de l'état du check box
	monInput = document.getElementById( idCheckBox );
	if ( !monInput.disabled ) {
		monInput.checked = !monInput.checked;
	}
}
function CheckBoxTextInline( nomInputCheck, texteAfficher, onCheck, fnctOnChange ) {
	if ( !fnctOnChange ) { fnctOnChange = ""; }
	
	var cumulTextCheckBox = "";
	//Créer le checkbox
	if (onCheck) {
		cumulTextCheckBox += '<input type="checkbox" name="'+nomInputCheck+'" id="'+nomInputCheck+'_CBT" checked="checked" onchange="'+fnctOnChange+'" />';
	} else {
		cumulTextCheckBox += '<input type="checkbox" name="'+nomInputCheck+'" id="'+nomInputCheck+'_CBT" onchange="'+fnctOnChange+'" />';
	}
	//Créer le spanTexte
	cumulTextCheckBox += '<span class="texteOnClick" onclick="javascript:onclickCheckBoxText(\''+nomInputCheck+'_CBT\');'+fnctOnChange+'" >'+texteAfficher+'</span>';
	return cumulTextCheckBox;
}
function CheckBoxText( nomInputCheck, texteAfficher, onCheck, fnctOnChange ) {
	if ( !fnctOnChange ) { fnctOnChange = ""; }
	
	//Créer le checkbox
	if (onCheck) {
		document.write( '<input type="checkbox" name="'+nomInputCheck+'" id="'+nomInputCheck+'_CBT" checked="checked" onchange="'+fnctOnChange+'" />' );
	} else {
		document.write( '<input type="checkbox" name="'+nomInputCheck+'" id="'+nomInputCheck+'_CBT" onchange="'+fnctOnChange+'" />' );
	}
	//Créer le spanTexte
	document.write( '<span class="texteOnClick" onclick="javascript:onclickCheckBoxText(\''+nomInputCheck+'_CBT\');'+fnctOnChange+'" >'+texteAfficher+'</span>' );
}

function recursiveSetAttribute( element, fnctOnOver, fnctOnOut, idLigne, idTable ) {
		for(var k = 0; k < element.childNodes.length; k++ ){
			if ( element.childNodes[k].nodeName == "A" ) {
				recursiveSetAttribute( element.childNodes[k], fnctOnOver, fnctOnOut, idLigne, idTable );
			}
		}
		element.setAttribute( "idLigne", idLigne);
		element.setAttribute( "idTable", idTable);
		element.onmouseover = highlightLigne;
		element.onmouseout = outlightLigne;
	}
	function highlightLigne_setAttribut( idTable, rowDebut, rowFin, cellDebut, cellFin, nomClassA, nomClassB, nomClassAover, nomClassBover ){
		if ( !rowDebut ) { rowDebut = 0 };
		if ( !rowFin ) { rowFin = 0 };
		if ( !cellDebut ) { cellDebut = 0 };
		if ( !cellFin ) { cellFin = 0 };
		if ( !nomClassA ) { nomClassA = "caseLigneA" };
		if ( !nomClassB ) { nomClassB = "caseLigneB" };
		if ( !nomClassAover ) { nomClassAover = nomClassA+"_over" };
		if ( !nomClassBover ) { nomClassBover = nomClassB+"_over"  };
	
		var maTable = document.getElementById(idTable);
		if ( !maTable ) return;
		
		maTable.setAttribute("nomClassA",nomClassA);
		maTable.setAttribute("nomClassB",nomClassB);
		maTable.setAttribute("nomClassAover",nomClassAover);
		maTable.setAttribute("nomClassBover",nomClassBover);
		for( var i=rowDebut; i < maTable.rows.length+rowFin; i++) {
			for( var j=cellDebut; j < maTable.rows[i].cells.length+cellFin; j++) {
					
				if ( navigator.appName=="Microsoft Internet Explorer" ) {
					recursiveSetAttribute(  maTable.rows[i].cells[j], "", "", i, idTable);
				} else {
					maTable.rows[i].cells[j].setAttribute( "onmouseover","javascript:highlightLigne("+i+",'"+idTable+"')" );
					maTable.rows[i].cells[j].setAttribute( "onmouseout","javascript:outlightLigne("+i+",'"+idTable+"')" );
				}
				
				//Set la class par default
				if (i%2==1)
					maTable.rows[i].cells[j].className = maTable.getAttribute("nomClassA");
				else 
					maTable.rows[i].cells[j].className = maTable.getAttribute("nomClassB");
			}
		}
	}
	function highlightLigne( idLigne, idTable ){
		if ( navigator.appName=="Microsoft Internet Explorer" ) {
			idLigne = event.srcElement.getAttribute("idLigne");
			idTable = event.srcElement.getAttribute("idTable");
		}
		if ( idLigne!==0 && (!idLigne || idLigne == "") ) { return }
		if ( !idTable || idTable == "" ) { return }
		
		var maTable = document.getElementById( idTable );
		var nomClass = maTable.getAttribute("nomClassAover");
		
		if (idLigne % 2 == 0) { nomClass = maTable.getAttribute("nomClassBover"); }
		for( var j=0; j < maTable.rows[idLigne].cells.length; j++) {
			maTable.rows[idLigne].cells[j].className = nomClass;
		}
	}
	function outlightLigne( idLigne, idTable ){
		if ( navigator.appName=="Microsoft Internet Explorer" ) {
			idLigne = event.srcElement.getAttribute("idLigne");
			idTable = event.srcElement.getAttribute("idTable");
		}
		if ( idLigne!==0 && (!idLigne || idLigne == "") ) { return }
		if ( !idTable || idTable == "" ) { return }
		
		var maTable = document.getElementById( idTable );
		var nomClass = maTable.getAttribute("nomClassA");
		
		if (idLigne % 2 == 0) { nomClass = maTable.getAttribute("nomClassB"); }
		for( var j=0; j < maTable.rows[idLigne].cells.length; j++) {
			maTable.rows[idLigne].cells[j].className = nomClass;
		}
	}
	
	
/////////////////////////////////////////////////////////////////////////////////////////////
//     insertDateInputJLT
var DateInputJLT_ListeMois_en = new Array("january","february","march","april","may","june","july","august","september","october","november","december" );
var DateInputJLT_ListeMois_fr = new Array("janvier","f&eacute;vrier","mars","avril","mai","juin","juillet","ao&ucirc;t","septembre","octobre","novembre","d&eacute;cembre" );
//                                          31           28-29          31    30      31    30       31         31            30          31        30           31    

function onchangeCheckBoxDateInconnue( dateID ) {
	if ( document.getElementById( dateID+"_Inconnue_CBT" ).checked ) {
		document.getElementById( "spanDateInput_"+dateID ).style.visibility = "hidden";
	} else {
		document.getElementById( "spanDateInput_"+dateID ).style.visibility = "inherit";
	}
}


function insertDateInputJLT( insertID, nameID, defaultDate, langue, mode ) {
	var inconnue = false;
	var cumulTexte = "";
	var notDefault = false;
	
	//Si pas de defaultDate
	if ( !defaultDate || defaultDate == "") {
		notDefault = true;
		if ( mode != "not null" ) {
			inconnue = true;
		}
		defaultDate = getStrDateYYYYMMDD();
	} else {
		cumulTexte += '<input name="'+nameID+'_defaultDate" id="'+nameID+'_defaultDate" type="hidden" value="'+defaultDate+'" />';
	}
	
	//Si YYYY-MM-DD hh:mm:ss (ex.: datetime de mysql)
	var patt=/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/i;
	if ( patt.test(defaultDate) ) {
		defaultDate = defaultDate.substr(0,4) + defaultDate.substr(5,2) + defaultDate.substr(8,2);
	}
	
	//Hidden
	cumulTexte += '<input name="'+nameID+'" id="'+nameID+'" type="hidden" value="'+defaultDate+'" />';
	
	
	var DateInputJLT_ListeMois = DateInputJLT_ListeMois_fr;
	if ( langue && langue == "en" ){DateInputJLT_ListeMois = DateInputJLT_ListeMois_en;}
	
	var annee = parseInt(defaultDate.substr(0,4).replace(/^0+/,"") );
	var mois = parseInt(defaultDate.substr(4,2).replace(/^0+/,"") );
	var jour = parseInt(defaultDate.substr(6,2).replace(/^0+/,"") );
	
	//Inconnue
	if ( mode != "not null" ) {
		if ( !mode || mode == "" ) {
			if (notDefault) {
				mode = "inconnue";
				if ( langue && langue == "en" ){mode = "unknown";}
			} else {
				mode = "effacer";
				if ( langue && langue == "en" ){mode = "erase";}
			}
		}
		if ( inconnue ) 
			cumulTexte += '<input type="checkbox" id="'+nameID+'_Inconnue_CBT" name="'+nameID+'_Inconnue" checked="checked" onchange="onchangeCheckBoxDateInconnue(\''+nameID+'\')" /><label for="'+nameID+'_Inconnue_CBT">'+mode+'</label> ';
		else
			cumulTexte += '<input type="checkbox" id="'+nameID+'_Inconnue_CBT" name="'+nameID+'_Inconnue" onchange="onchangeCheckBoxDateInconnue(\''+nameID+'\')" /><label for="'+nameID+'_Inconnue_CBT">'+mode+'</label> ';
		//cumulTexte += CheckBoxTextInline(nameID+"_Inconnue",mode,inconnue, "onchangeCheckBoxDateInconnue('"+nameID+"')") + " ";
	}
	
	//Jour
	var nbJourMois = DateInputJLT_nbJourInMois( mois, annee );
	if (inconnue) {
		cumulTexte += '<span id="spanDateInput_'+nameID+'" style="visibility:hidden;" >';
	} else {
		cumulTexte += '<span id="spanDateInput_'+nameID+'" style="visibility:inherit;" >';
	}
	cumulTexte += '<select id="DateInputSelectJour_'+nameID+'" onchange="DateInputJLT_onchangeJour(\''+nameID+'\')" >';
	for ( i = 1; i <= nbJourMois ; i++) {
		cumulTexte += '<option value="'+i+'">'+i+'</option>';
	}
	cumulTexte += '</select>';
	
	//Mois
	cumulTexte += '<select id="DateInputSelectMois_'+nameID+'" onchange="DateInputJLT_onchangeMois(\''+nameID+'\')" >';
	for ( i = 1; i <= DateInputJLT_ListeMois.length ; i++) {
		cumulTexte += '<option value="'+i+'">'+DateInputJLT_ListeMois[i-1]+'</option>';
	}
	cumulTexte += '</select>';
	
	//Année
	cumulTexte += '<input id="DateInputSelectAnnee_'+nameID+'" type="text" size="4" maxlength="4" value="'+annee+'" onchange="DateInputJLT_onchangeAnnee(\''+nameID+'\')" />';
	cumulTexte += '</span>';
	
	//Set
	if ( insertID ) {
		document.getElementById(insertID).innerHTML = cumulTexte;
		document.getElementById('DateInputSelectMois_'+nameID).value = mois;
		document.getElementById('DateInputSelectJour_'+nameID).value = jour;
	}
	
	return true;
}

function DateInputJLT_setInputDate( idObjet, newDate ) {
	var annee = parseInt(newDate.substr(0,4).replace(/^0+/,"") );
	var mois = parseInt(newDate.substr(4,2).replace(/^0+/,"") );
	var jour = parseInt(newDate.substr(6,2).replace(/^0+/,"") );
	
	document.getElementById('DateInputSelectAnnee_'+idObjet).value = annee;
	DateInputJLT_onchangeAnnee(idObjet);
	document.getElementById('DateInputSelectMois_'+idObjet).value = mois;
	DateInputJLT_onchangeMois(idObjet);
	document.getElementById('DateInputSelectJour_'+idObjet).value = jour;
	DateInputJLT_onchangeJour(idObjet);
}

function DateInputJLT_updateInputHidden( idObjet ) {
	var cumulText = convertIntToStr(document.getElementById('DateInputSelectAnnee_'+idObjet).value, 4);
	cumulText += convertIntToStr(document.getElementById('DateInputSelectMois_'+idObjet).value, 2);
	cumulText += convertIntToStr(document.getElementById('DateInputSelectJour_'+idObjet).value, 2);
	document.getElementById(idObjet).value = cumulText;
	DateInputJLT_OnChange( document.getElementById(idObjet) );
}
function DateInputJLT_OnChange( objetEvent ) {
}

function DateInputJLT_nbJourInMois( mois, annee ) {
	switch(mois) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			return 30;
		case 2:
			if ( annee % 400 == 0 ) {
				return 29;
			} else if ( annee % 4 == 0 && annee % 100 != 0) {
				return 29;
			} else {
				return 28;
			}
	}
}

function DateInputJLT_onchangeAnnee( idObjet ) {
	valeurAnnee = document.getElementById('DateInputSelectAnnee_'+idObjet).value;
	valeurAnnee = valeurAnnee.replace(/[^0123456789]/g,"");
	if (valeurAnnee == "") { valeurAnnee = "0000";}
	document.getElementById('DateInputSelectAnnee_'+idObjet).value = valeurAnnee;
	DateInputJLT_onchangeMois(idObjet);
	//DateInputJLT_updateInputHidden(idObjet);
}
function DateInputJLT_onchangeMois( idObjet ) {
	var selectJour = document.getElementById('DateInputSelectJour_'+idObjet);
	var jour = parseInt(selectJour.value);
	var mois = parseInt(document.getElementById('DateInputSelectMois_'+idObjet).value);
	var annee = parseInt(document.getElementById('DateInputSelectAnnee_'+idObjet).value);
	
	//Reconstruire le select jour
	while (selectJour.options.length > 0) {
		selectJour.remove(0);
	}
	var nbJourMois = DateInputJLT_nbJourInMois( mois, annee );
	for ( i = 1; i <= nbJourMois ; i++) {
		optionTemp = document.createElement("option");
		optionTemp.text = i;
		optionTemp.value = i;
		if ( i == jour ) {
			optionTemp.selected=true;
		}
		try {
			selectJour.add(optionTemp,selectJour.options[null]);
		} catch (e) {
			selectJour.add(optionTemp,null);
		}
	}
	
	DateInputJLT_updateInputHidden(idObjet);
}
function DateInputJLT_onchangeJour( idObjet ) {
	DateInputJLT_updateInputHidden(idObjet);
}

function getStrDateYYYYMMDD() {
	var dateTemp = new Date();
	var cumulText = convertIntToStr(dateTemp.getFullYear(), 4);
	cumulText += convertIntToStr(dateTemp.getMonth()+1, 2);
	cumulText += convertIntToStr(dateTemp.getDate(), 2);
	
	return cumulText;
}
function convertIntToStr( nombre, largeur ) {
	var strTemp = nombre.toString();
	while (strTemp.length < largeur) {
		strTemp = "0" + strTemp;
	}
	return strTemp;
}





var lastMessageError = "";
var countNbSameError = 0;
function setErreurMessage ( texte ) {
	var spanMessage = document.getElementById('spanMessage');
	
	if (lastMessageError == texte && countNbSameError == 0){// deuxieme fois
		spanMessage.className = "rougeGras";
		countNbSameError += 1;
	} else if (lastMessageError == texte && countNbSameError == 1){// troisiere fois
		spanMessage.className = "rougeJumbo";
		countNbSameError += 1;
	} else if (lastMessageError == texte && countNbSameError == 2){// quatrieme fois
		spanMessage.className = "rougeJumboGras";
		countNbSameError += 1;
	} else if (lastMessageError == texte && countNbSameError >= 3 ){// cinquieme fois et plus
		alert(texte.replace(/<br[^>]*>/,"\n"));
	} else {  // premiere fois
		spanMessage.className = "rouge";
		countNbSameError = 0;
	}
	spanMessage.innerHTML = texte+"<br />";
	lastMessageError = texte;
}
function clearErreurMessage(){
	var spanMessage = document.getElementById('spanMessage');
	spanMessage.innerHTML = "";
}

function parseURL( url ){
	var objetRetour = {};
	objetRetour.protocol = "";
	objetRetour.paths = [];
	objetRetour.path = "";
	objetRetour.end = "";
	objetRetour.query = "";
	objetRetour.args = [];
	objetRetour.url = url;
	
	//Protocol
	var listeFind = url.match( /^.*:\/\// );
	if ( listeFind ){
		objetRetour.protocol = url.substring(0,listeFind[0].length-3);
		url = url.substring(listeFind[0].length);
	}

	//Split /
	var split = url.split("/");
	objetRetour.domain = split[0];
	
	if ( split.length > 1 ){
		//Path
		for ( var i=1; i < split.length-1; i++ ){
			objetRetour.paths.push(split[i]);
		}
		objetRetour.path = objetRetour.paths.join("/");
		
		//Fichier
		var end = split[split.length-1];
		objetRetour.end = end;
		
		var endSplit = end.split("?");
		objetRetour.file = endSplit[0];
		
		//Fichier ext
		var extSplit = endSplit[0].split(".");
		objetRetour.fileExt = extSplit[extSplit.length-1];
		
		//Query
		if ( endSplit.length > 1 ){
			var query = endSplit[1];
			objetRetour.query = query;
			
			var querySplit = query.split("&");
			var nom,valeur,argSplit;
			//Arguments
			for ( var i=0; i < querySplit.length; i++ ){
				argSplit = querySplit[i].split("=",2);
				nom = argSplit[0];
				valeur = querySplit[i].substring(nom.length+1);
				objetRetour.args.push( [nom,valeur] );
			}
		}
	}
	return objetRetour;
}
