/**
 * SCRIPT.JS
 * fichier Javascript contenant toutes les fonctions utiles communes à toutes les parties du site
 *
 *****/
var timeoutOnglet = null;
var timeoutSousMenu = null;
var ongletsMenuTop = new Array("compar","test","command","resilier","actus","adsl","commu");

// retourner l'objet en fonction du navigateur
function findObject(n, d)
{
	var p,i,x;
	if(!d) d=document;
	if((p=n.indexOf("?"))>0 && parent.frames.length)
	{
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
	if(!(x=d[n]) && d.all)
		x=d.all[n];
	for (i=0;!x && i<d.forms.length;i++)
		x=d.forms[i][n];
	for(i=0;!x && d.layers && i<d.layers.length;i++)
		x=return_object(n,d.layers[i].document);
	if(!x && document.getElementById)
		x=document.getElementById(n);
	return x;
}

// mettre le focus sur un élément
function setFocus(componentID)
{
	findObject(componentID).focus();
}

// afficher ou masquer un bloc alternativement
function showHide(divId)
{
	if(findObject(divId).className == "masquer")
		findObject(divId).className = "afficher";
	else
		findObject(divId).className = "masquer";
}

// ouverture dans une nouvelle fenêtre
function openWindow(theURL,winName,features) {
	window.open(theURL,winName,features);
}

//target blank
function openExternal(link){link.target='_blank';}

// comptabilisation d'un clic sur un lien partenaire (ajax)
function clickPartner(name)
{
  if (window.XMLHttpRequest)
    xhr_object = new XMLHttpRequest();
  else if (window.ActiveXObject)
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  else
    return;

  var data = null;
  data = "partner="+name;

  xhr_object.open("POST", "/clic.php", true);
  xhr_object.setRequestHeader("content-type", "application/x-www-form-urlencoded");
  xhr_object.send(data);
  return;
}

// fonction ucWords (met les premières lettres de chaque "mot" d'une chaîne en majuscules)
function ucWords(chaine, avectirets)
{
	var valeur = "";
	if ((chaine) && (chaine!=""))
	{
		valeur = chaine.toLowerCase();

		// Analyse des mots séparés par des espaces
		var mots = valeur.split(' ');
		for(var i = 0; i < mots.length; i++)
		{
			if(mots[i].length > 1)
			{
				carac = mots[i].split('');
				carac[0] = carac[0].toUpperCase();
				mots[i] = carac.join('');
			}
			else
			{
				mots[i] = mots[i].toUpperCase();
			}
		}

		valeur = mots.join(' ');

		if ((avectirets) && ((avectirets==false) || (avectirets==true)))
		{
			if (avectirets==true)
			{
				// Analyse des mots séparés par des tirets (si demandé)
				var mots = valeur.split('-');
				for(var i = 0; i < mots.length; i++)
				{
					if(mots[i].length > 1)
					{
						carac = mots[i].split('');
						carac[0] = carac[0].toUpperCase();
						mots[i] = carac.join('');
					}
					else
					{
						mots[i] = mots[i].toUpperCase();
					}
				}

				valeur = mots.join('-');
			}
		}
	}
	return valeur;
}

// test de validité d'une adresse e-mail
function isChaineVide(chaine)
{
	var reEmptyString = /.+/; // chaine non vide
	var reSpaceCharOnly = /^\s*$/; // uniquement des caracteres d'espacement
	var isVide = (!reEmptyString.test(chaine) || reSpaceCharOnly.test(chaine));
	return (isVide);
}

// test de validité d'un champ nom ou prenom
function isNomOuPrenom(chaine)
{
	var reNomPrenom = /^[a-zA-Z ]+([\-\'][a-zA-Z ]+)*$/; 
	var isNomOuPrenom = reNomPrenom.test(chaine);
	return (isNomOuPrenom);
}

// test de validité d'une adresse e-mail a partir de l'objet obtenu par findObject
function emailok(email)
{
	var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	//var re = /([a-z0-9]+([\-_]?[a-z0-9]+)*.)*[a-z0-9]+([\-_]?[a-z0-9]+)*@([a-z0-9]+([\-_]?[a-z0-9]+)*.)+[a-z]{2,4}/g;
	var email = email.value.toLowerCase();
	return (re.test(email));
}

// test de validité d'une adresse e-mail a partir de l'attr value
function isMail(email)
{
	var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	var email = email.toLowerCase();
	return (re.test(email));
}

// tester si un numéro de téléphone est saisi en entier (France)
function isTelephoneComplete(numero)
{
	var numeroBrut = numero.replace(/[^0-9]/g, "");
	return (numeroBrut.length >= 10 || numero.length == 14);
}


/**
 * fonction isTelephone(nd,strict)
 * => vérifie si une chaine est bien un numéro de téléphone fixe ou mobile (France)
 * nd (string) = numéro de téléphone saisi dans le champ input
 * strict (booléen) = true si on se limite aux numéros à indicatif géographique
 **/
function isTelephone(nd,strict)
{
	var re;
	if (strict)
		re = /^0[1-589]([\s\.\-\/\*])?[0-9]{2}\1[0-9]{2}\1[0-9]{2}\1[0-9]{2}$/;
	else
		re = /^0[1-9]([\s\.\-\/\*])?[0-9]{2}\1[0-9]{2}\1[0-9]{2}\1[0-9]{2}$/;
	return (re.test(nd));
}

/**
 * fonction isTelephoneMobile(tel)
 * => vérifie si une chaine est bien un numéro de téléphone mobile (France)
 * tel (string) = numéro de téléphone saisi dans le champ input
 **/
function isTelephoneMobile(tel)
{
	var re;
	re = /^0[6-7]([\s\.\-\/\*])?[0-9]{2}\1[0-9]{2}\1[0-9]{2}\1[0-9]{2}$/;
	return (re.test(tel));
}

/**
 * fonction startsLikeTelephone(nd,strict)
 * => vérifie si la saisie en cours est susceptible d'aboutir à un numéro de téléphone fixe ou mobile (France)
 * nd (string) = numéro de téléphone saisi dans le champ input (partiel)
 * strict (booléen) = true si on se limite aux numéros à indicatif géographique
 **/
function startsLikeTelephone(nd,strict)
{
	var i;
	var nbChar = nd.length;
	var re1 = /^0$/; // 1er caractère
	var re2 = (strict) ? /^[1-589]$/ : /^[1-9]$/; // 2e caractère
	var re3 = /^([\s\.\-\/\*]|\d)$/; // motif = séparateur ou chiffre (présent tous les 3 caractères)
	var re4 = /^\d$/; // motif = chiffre (tous les autres caractères au-delà du 3e)
	var reSep = /^([\s\.\-\/\*])$/; // motif = séparateur parmi les 5 ci-dessous
	var tabRe = new Array();
	tabRe[' '] = /^\s$/; // motif = espace
	tabRe['.'] = /^\.$/; // motif = point
	tabRe['-'] = /^\-$/; // motif = tiret
	tabRe['/'] = /^\/$/; // motif = slash
	tabRe['*'] = /^\*$/; // motif = étoile

	for (i=1; i<=nbChar; i++)
	{
		var c = nd.charAt(i-1);
		if (i == 1 && !re1.test(c)) return false;
		else if (i == 2 && !re2.test(c)) return false;
		else if (i%3 == 0)
		{
			if (!re3.test(c)) return false;
			re3 = (reSep.test(c)) ? tabRe[c] : re4;
		}
		else if (i > 3 && !re4.test(c)) return false;
	}

	return true;
}


/**
 * fonction isVille(ville)
 * => vérifie si une chaine peut etre un nom de ville (France)
 * ville (string) = ville saisi dans le champ input
 **/
function isVille(ville)
{
    var re = new RegExp("^([A-Za-z]|[ -àâäçéèêëîïôöùûüÀÂÄÇÉÈÊËÎÏÔÖÛÜ])+$");
	return (re.test(ville));
}

// tester si un code postal est saisi en entier
function isCodePostalComplete(cp)
{
	return (cp.length == 5);
}


/**
 * fonction isCodePostal(cp)
 * => vérifie si une chaine est bien un code postal (France)
 * cp (string) = code postal saisi dans le champ input
 **/
function isCodePostal(cp)
{
	var re = /^[0-9]{5}$/;
	return (re.test(cp));
}

/**
 * fonction startsLikeCodePostal(cp)
 * => vérifie si la saisie en cours est bien susceptible d'aboutir à un code postal (France)
 * cp (string) = code postal saisi dans le champ input (partiel)
 **/
// tester si la saisie en cours est susceptible d'aboutir à un code postal valide
function startsLikeCodePostal(cp)
{
	if(cp == "") return true; // si cp vide l'internaute n'a pas encore commencé la saisie du cp = pas d'erreur
	
	var re = /^[0-9]+$/;
	return (re.test(cp));
}

/**
 * fonction isInsee(insee)
 * => vérifie si une chaine est bien un code insee (France)
 * insee (string) = code insee récupéré
 **/
function isInsee(insee)
{
	var re = /^[0-9]{1}[0-9A-Za-z]{1}[0-9]{3}$/;
	return (re.test(insee));
}

/**
 * fonction ongletTop(idSousMenu)
 * => affiche le sous menu dont l'id est idSousMenu
 * idSousMenu (string) = id du sous menu à afficher.
 **/
function ongletTop(idSousMenu)
{
	clearTimeout(timeoutOnglet);
	timeoutOnglet = setTimeout(function()
	{
		for (i=0;i<ongletsMenuTop.length;i++)
		{
			var currentSousMenu = "sousmenu_"+ongletsMenuTop[i];
			if(currentSousMenu==idSousMenu && findObject(currentSousMenu) && findObject(currentSousMenu).className=="masquer") afficherSousMenu(currentSousMenu);
			else if(currentSousMenu==idSousMenu && findObject(currentSousMenu) && findObject(currentSousMenu).className=="afficher") fermerSousMenu(currentSousMenu);
			else if(findObject(currentSousMenu)) findObject(currentSousMenu).className = "masquer";
		}
		clearTimeout(timeoutOnglet);
	}
	,350);
}

/**
 * fonction afficherSousMenu(idSousMenu)
 * => affiche le sous menu dont l'id est idSousMenu
 * idSousMenu (string) = id du sous menu à afficher.
 **/
function afficherSousMenu(idSousMenu)
{
	if((findObject(idSousMenu))) findObject(idSousMenu).className = "afficher";
	if((findObject("chemin"))) findObject("chemin").className = "masquer";
	if((findObject("pubTop"))) findObject("pubTop").className = "masquer";
}

/**
 * fonction fermerSousMenu(idSousMenu)
 * => masque le sous menu dont l'id est idSousMenu
 * idSousMenu (string) = id du sous menu à masquer.
 **/
function fermerSousMenu(idSousMenu)
{
	if((findObject(idSousMenu))) findObject(idSousMenu).className = "masquer";
	if((findObject("chemin"))) findObject("chemin").className = "afficher";
	if((findObject("pubTop"))) findObject("pubTop").className = "afficher";
}

/**
 * fonction tempoFermetureSousMenu(idSousMenu)
 * =>  attend quelques instant avant de faire disparaitre le sous menu 
 * idSousMenu (string) = id du sous menu à masquer.
 **/
function tempoFermetureSousMenu(idSousMenu)
{	
	clearTimeout(timeoutSousMenu);
	timeoutSousMenu = setTimeout(function()
	{
		if(findObject(idSousMenu)) fermerSousMenu(idSousMenu);
		clearTimeout(timeoutSousMenu);
	}
	,250);
}

/**
 * fonction hideSousMenus()
 * => cache l'ensemble des sous-menus
 **/
function hideSousMenus()
{
	for (i=0;i<ongletsMenuTop.length;i++)
	{
		var currentSousMenu = "sousmenu_"+ongletsMenuTop[i];
		fermerSousMenu(currentSousMenu);
	}
}


/*
  * ouvre un lien passé en paramètres
  * auteur : olivier quesson
*/
function javaLink(link)
{
  window.location.href = link;
}

/*
  * deplie l'infobulle de l'input text du test adsl en bloc de droite
  * auteur : olivier quesson  
*/
function tipInput(id)
{
  document.getElementById(id).className = "tipInput";
}



/*
  * affiche ou masque 1 element parmis d'autres
  * auteur : olivier quesson  
*/
function onglet(num,total)
{
  for (i=0;i<total;i++)
  {
    idOnglet = "onglet_"+i;
    idLien = "lien_"+i;

    _onglet = findObject(idOnglet);
    _lien = findObject(idLien);

    if(i == num)
    {
      classOnglet = "afficher";
      classLien = "actif";
    }
    else
    {
      classOnglet = "masquer";
      classLien = "inactif";
    }
     _onglet.className = classOnglet;
     _lien. className = classLien;
   }
}

