// SCRIPTS COMMUNS A L'ENSEMBLE DU SITE ELIGIBILITE-ADSL.COM


// retouner 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();
}


// appliquer un target="_blank" à un lien
function openExternal(link)
{
	link.target = '_blank';
}


// afficher et masquer alternativement un bloc
function showHideDiv(div)
{
	if (findObject(div).className == "hidden")
		findObject(div).className = "visible";
	else
		findObject(div).className = "hidden";
}

// 2e version de la même méthode, issue de script.js et conservée pour compatibilité
function ShowHide(id)
{
	if (findObject(id).className == "masquer")
		findObject(id).className = "afficher";
	else
		findObject(id).className = "masquer";
}


// test de validité d'une adresse e-mail
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));
}


// 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-5]([\s\.\-\/\*])?[0-9]{2}\1[0-9]{2}\1[0-9]{2}\1[0-9]{2}$/;
	else
		re = /^0[1-68-9]([\s\.\-\/\*])?[0-9]{2}\1[0-9]{2}\1[0-9]{2}\1[0-9]{2}$/;
	return (re.test(nd));
}


/**
 * 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-5]$/ : /^[1-68-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;
}


// 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 isRivoli(rivoli)
 * => vérifie si une chaine est bien un code rivoli (France)
 * rivoli (string) = code rivoli récupéré
 **/
function isRivoli(rivoli)
{
	var re = /^[0-9A-Za-z]{4}$/;
	return (re.test(rivoli));
}

/**
 * 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 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)
{
	var re = /^[0-9]+$/;
	return (re.test(cp));
}
