// Fonctions utilitaires

/* Lorsque la page load, on met la bonne grosseur de texte*/
function AjusterTailleTexte() {
	if (Get_Cookie("coTailleTexte") != "") {
		document.getElementById("page").style.fontSize = Get_Cookie("coTailleTexte");
	}
	else {
		Set_Cookie("coTailleTexte",tailleTexte.style.fontSize,7, "/", "", "");
	}
}

/* Pour changer la taille du texte */
function AugmenterTaille() {
	var tailleTexte = document.getElementById("page");
	
	if (Get_Cookie("coTailleTexte") != "") {
		tailleTexte.style.fontSize = Get_Cookie("coTailleTexte");
	}
		
	if(tailleTexte.style.fontSize == "10px") {
		tailleTexte.style.fontSize = "12px";
	}
	else if(tailleTexte.style.fontSize == "12px") {
		tailleTexte.style.fontSize = "14px";
	}
	else if(tailleTexte.style.fontSize == "16px") {
		tailleTexte.style.fontSize = "18px";
	}
	else {
		if (tailleTexte.style.fontSize != "18px") {
			tailleTexte.style.fontSize = "16px";
		}
	}
	
	Set_Cookie("coTailleTexte",tailleTexte.style.fontSize,7, "/", "", "");
}

function DiminuerTaille() {
	var tailleTexte = document.getElementById("page");
	
	if (Get_Cookie("coTailleTexte") != "") {
		tailleTexte.style.fontSize = Get_Cookie("coTailleTexte");
	}
		
	if(tailleTexte.style.fontSize == "18px") {
		tailleTexte.style.fontSize = "16px";
	}
	else if(tailleTexte.style.fontSize == "16px") {
		tailleTexte.style.fontSize = "14px";
	}
	else if(tailleTexte.style.fontSize == "12px") {
		tailleTexte.style.fontSize = "10px";
	}
	else {
		if (tailleTexte.style.fontSize != "10px") {
			tailleTexte.style.fontSize = "12px";
		}
	}

	Set_Cookie("coTailleTexte",tailleTexte.style.fontSize,7, "/", "", "");
}

/* Pour créer un cookie(Provient de http://techpatterns.com) */
function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

/* Pour obtenir un cookie (Provient de http://techpatterns.com) */
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

/* Recherche dans un tableau */
function array_search(what, where) {
	var index_du_tableau=-1
 
	for(elt in where){
		index_du_tableau++;
		if (where[elt]==what){
			return index_du_tableau
		}
	}
	index_du_tableau = -1;
	return index_du_tableau
}
	
/* Function pour connaître le nom de la page en cours */
function PageEnCours () {
	var strAdresse = String(window.location);
	var tblUrlChemin = strAdresse.split("/");
	
	var nomFichier = tblUrlChemin[tblUrlChemin.length - 1];
	tblUrlParam = nomFichier.split("?");
	
	return tblUrlParam[0];
}

/* Functions pour le sous-menu déroulant */
function ouvrirSousMenu(strNoMenu) {
	var id_zoneSousMenu = document.getElementById("zone_sousMenu" + strNoMenu);
	
	if(strNoMenu == "1") {
		id_zoneSousMenu.className = "zone_sousMenu_on";
		document.getElementById("btn_genealogie").className = "btn_genealogie_on";
	}
}
function fermerSousMenu(strNoMenu) {
	var id_zoneSousMenu = document.getElementById("zone_sousMenu" + strNoMenu);
	
	if(strNoMenu == "1") {
		id_zoneSousMenu.className = "zone_sousMenu";
		
		if (array_search(PageEnCours(), tblGenealogie) == -1) {
			document.getElementById("btn_genealogie").className = "btn_genealogie";
		}
	}
}
/* Pour reproduire l'effet over sur les boutons */
function ChangerClasseBtn(etat, id_btn_g, id_btn_m, id_btn_d ) {
	if	(etat == "hover") {
		document.getElementById(id_btn_g).className = "btn_cote_g_hover";
		document.getElementById(id_btn_m).className = "btn_cote_m_hover";
		document.getElementById(id_btn_d).className = "btn_cote_d_hover";
	}
	else {
		document.getElementById(id_btn_g).className = "btn_cote_g";
		document.getElementById(id_btn_m).className = "btn_cote_m";
		document.getElementById(id_btn_d).className = "btn_cote_d";
	}
}
function ChangerClasseBtnH(etat, id_btn_g, id_btn_m, id_btn_d ) {
	if	(etat == "hover") {
		document.getElementById(id_btn_g).className = "btn_cote_g_hover";
		document.getElementById(id_btn_m).className = "btn_cote_m_hover";
		document.getElementById(id_btn_d).className = "btn_cote_h_hover";
	}
	else {
		document.getElementById(id_btn_g).className = "btn_cote_g";
		document.getElementById(id_btn_m).className = "btn_cote_m";
		document.getElementById(id_btn_d).className = "btn_cote_h";
	}
}
function ChangerClasseBtnX(etat, id_btn_g, id_btn_m, id_btn_d ) {
	if	(etat == "hover") {
		document.getElementById(id_btn_g).className = "btn_cote_g_hover";
		document.getElementById(id_btn_m).className = "btn_cote_m_hover";
		document.getElementById(id_btn_d).className = "btn_cote_x_hover";
	}
	else {
		document.getElementById(id_btn_g).className = "btn_cote_g";
		document.getElementById(id_btn_m).className = "btn_cote_m";
		document.getElementById(id_btn_d).className = "btn_cote_x";
	}
}
/* 	Fonction pour initialiser le message d'erreur (enlever le texte en rouge et les encadrés rouges)
	Le Paramètre "tblLstChamps" doit être un tableau (Array) qui contient la liste des champs à initialiser
	(label et input)
*/
function InitialiserErreurs(tblLstChamps) {
	document.getElementById("bloc_erreur_m").style.display = "none";
	document.getElementById("bloc_erreur_b").style.display = "none";
	document.getElementById("msg_erreur").innerHTML = "";
	
	for(i=0; i < tblLstChamps.length; i++) {
		document.getElementById(tblLstChamps[i]).className = "";
	}
}
/* 	Fonction pour afficher le message d'erreur
	Paramètres:	messages => le message à afficher
				idLabel => le id du label (texte à mettre en rouge)
				idInput => le id du input (pour mettre les bordu en rouge)
*/
function AfficherErreurs(messages, idLabel, idInput) {
	document.getElementById("bloc_erreur_m").style.display = "block";
	document.getElementById("bloc_erreur_b").style.display = "block";
	document.getElementById("msg_erreur").innerHTML = messages;
	
	if(document.getElementById(idLabel)) {
		document.getElementById(idLabel).className = "txt_erreur";
	}
	if(document.getElementById(idInput)) {
		document.getElementById(idInput).className = "champs_erreur";
		document.getElementById(idInput).focus();
	}
}


/* Function pour ajouter le site aux favoris */
function addToFavorite(address,favTitle)
{ 
if ((navigator.appVersion.indexOf("MSIE")
  > 0)  && (parseInt(navigator.appVersion) >= 4)) 
  {
    window.external.AddFavorite(address, unescape(favTitle));
  }
else
  { 
	  alert("Votre navigateur requiert que vous fassiez vous-même l'enregistrement de vos favoris (ou signets)");
  }
}


/* Autres fonctions de Monsieur Jean Trudel */
function ValiderCriterePren()
{
  var Prenom=Trim(document.frmRechPrenom.Prenom.value);
  
  if (Prenom == "" ) 
  {
    alert("Vous avez omis de fournir un prénom à rechercher");
    document.frmRechPrenom.Prenom.focus();
    return false;
  }

  var checkStr = Prenom;
  if (!CritNomPrenom(checkStr))
  {
	alert("Le prénom est invalide. Seules les lettres, les apostrophes sont permises, ainsi qu'un seul trait d'union.");
	document.frmRechPrenom.Prenom.focus();
	return false;
  }

  return true;
}
function ValiderCritereNom()
{
	var Nom=Trim(document.frmRechNom.Nom.value);
  
  if (Nom == "" ) 
  {
    alert("Vous avez omis de fournir un nom de famille à rechercher");
    document.frmRechNom.Nom.focus();
    return (false);
  }

	Nom=Nom.toLowerCase();
  if (Nom.substr(0,6) == "saint-" ) 
  {
    Nom=Nom.substr(6);
  }

  var checkStr = Nom;
  if (!CritNomPrenom2(checkStr))
  {
	  if (!TraitUnion(checkStr,"nom"))
	  {
		alert("Le nom de famille est invalide. Seules les lettres sont permises, ainsi qu'un seul trait d'union lorsque le nom commence par 'Saint-'.");
		document.frmRechNom.Nom.focus();
	  }	
	  return (false);
  }

}

function CritNomPrenom(s)
{
  var allValid = true;
  var sAcc="-àäâçéèëêìïîòöôùüûÀÄÂÉÈËÊÌÏÎÒÖÔÙÜÛ";
  var nTraits=0;
  for (i = 0;  i < s.length;  i++)
  {
    ch = s.charAt(i);
	if ( !(ch >= "A" && ch <= "Z") && !(ch >="a" && ch<="z") && ch !== "'" )
    {
      if (sAcc.indexOf(ch) == -1 || (ch == "-" && nTraits>0))
		{
		allValid = false;
		break;
		}
	  else
		{
			if (ch == "-")
			{
			nTraits=nTraits+1
			}
		}
	 }  
  }
  return (allValid);
}
function CritNomPrenom2(s)
{
  var allValid = true;
  var sAcc="àäâçéèëêìïîòöôùüûÀÄÂÉÈËÊÌÏÎÒÖÔÙÜÛ"
  for (i = 0;  i < s.length;  i++)
  {
    ch = s.charAt(i);
	if ( !(ch >= "A" && ch <= "Z") && !(ch >="a" && ch<="z")  )
    {
      if (sAcc.indexOf(ch) == -1)
		{
		allValid = false;
		break;
		}
    }
  }
  return (allValid);
}

function TraitUnion(s,t)
{
	var msg="";
	if (s.indexOf("-") == -1)
	{
		return(false);
	}
	{
		msg="Les " + t + "s composés ne sont pas permis à moins qu'ils commencent par 'Saint-' et ne comprennent que 2 éléments (ex. Saint-Hilaire)" + s;	
		alert(msg);
		return(true);
	}
}

function CourrielOK(s)
{
  var allValid = false;
  var sAT="@"
  var sDOT="."
  p=s.indexOf(sAT);
  {
	if (p >0)
	{	
		q=s.lastIndexOf(sDOT);
		r= s.length - 1
		{ if (q != -1 && (r-q) <=4 && (r-q) >=2 && q>(p+1) )
			 {allValid=true;
			 }
		}
	}
	return (allValid);
  }
}

function Trim(aString) {
    return aString.replace(/^\s+/, "").replace(/\s+$/, "");
}

function RTrim(sString) {
    return aString.replace(/\s+$/, "");
}

function LTrim(aString) {
    return aString.replace(/^\s+/, "");
}

function ignoreSpaces(string) {
    var temp = "";
    string = '' + string;
    splitstring = string.split(" ");
    for (i = 0; i < splitstring.length; i++)
        temp += splitstring[i];
    return temp;
}

function VerifieValeur(champs)
{
	if (ignoreSpaces(champs.value) == "")
		return false;
	else
		return true;
}

function isSelectionner(champ) 
{	
	if (parseInt(champ.value, 10) < 1)
		return false;
	else
		return true;
}

function NextFocus(F, strName, nbrElemSuivant) {
    for (i = 0; i < F.length; i++)
        if (F[i].name == strName) {
        F[i + nbrElemSuivant].focus();
        break;
    }
}

function ValideDate(j, m, a) {
    j = parseInt(j, 10);
    if (isNaN(j))
        return false;
    m = parseInt(m, 10);
    if (isNaN(m))
        return false;
    a = parseInt(a, 10);
    if (isNaN(a))
        return false;

    if (j < 1 || m < 1 || m > 12 || a < 0)
        return false;
    else
        switch (m) {

        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12: if (j > 31)
                return false;
            break;
        case 4:
        case 6:
        case 9:
        case 11: if (j > 30)
                return false;
            break;
        case 2: if ((a % 100) == 0) {
                if ((a % 400) == 0) {
                    if (j > 29)
                        return false;
                }
                else
                    if (j > 28)
                    return false;
            }
            else
                if ((a % 4) == 0) {
                if (j > 29)
                    return false;
            }
            else
                if (j > 28)
                return false;
            break;
    }
    return true;
}
//-----------------------------------------------------------------------------------------------------
function ChangerClasseBtnIE6(Etat, IdBouton, Image) {
    var ms = navigator.appVersion.indexOf("MSIE")

    if ((ms > 0) && (parseInt(navigator.appVersion.substring(ms + 5, ms + 6)) < 7)) {
        if (Etat == "hover") {
            document.getElementById(IdBouton).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/Boutons/" + Image + "Hover.png',sizingMethod='crop')"
        }
        else {
            document.getElementById(IdBouton).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/Boutons/" + Image + ".png',sizingMethod='crop')"
        }
    }




}
//-----------------------------------------------------------------------------------------------------
function HandleKeyPressEnter(e) {
    var element = e.target || e.srcElement;
    
    if ('TEXTAREA' != element.tagName && e.keyCode == 13)
        return true;
    else
        return false;

}