/** *********************************************************
*	@file www/js/tel.js
*	@author Cyril COPHIGNON
*	@date 07/07/08 
*	@brief Bibliotheque javascript de gestion des numeros de telephone
********************************************************* */

function formatChaine(valeur)
{
	var reg= new RegExp("[^0-9]","gi"); //on retire tous les caractères spéciaux
	valeur=valeur.replace(reg, ""); 
	return valeur;
}

/** 
*	@fn function IsTel(valeur, pays) 
*	@brief fonction qui verifie la validité d'un numero
*	@param valeur chaine le numero
*	@param pays identifiant du pays 57: france, 63: espagne
*	@return	bool True ou false
*/
function IsTel(valeur, pays) 
{
	//alert("IsTel\nValeur"+valeur+" Pays"+pays);
	valeur=formatChaine(valeur);
	switch(Number(pays))
	{
		case 57: return IsTel_FR(valeur); break; //FRANCE
		case 63: return IsTel_ES(valeur); break; //Espagne
		case 16: return IsTel_BE(valeur); break; //Belgique
		case 86: return IsTel_IT(valeur); break; //Italie
		default :	return true;
	}
}

/** 
*	@fn function IsTel_FR(valeur)
*	@brief fonction que la chaine passe en parametre est un format FR valide
*	@param valeur chaine
*	@return	bool True ou false
*/
function IsTel_FR(valeur)
{
	return (formatChaine(valeur).search("^(33|0)[1-9][0-9]{8}$") != -1); 
}

/** 
*	@fn function IsTel_BE(valeur)
*	@brief fonction que la chaine passe en parametre est un format FR valide
*	@param valeur chaine
*	@return	bool True ou false
*/
function IsTel_BE(valeur)
{
	return (formatChaine(valeur).search("^(32|0)[0-9]{8,9}$") != -1); 
}

/** 
*	@fn function IsTel_IT(valeur)
*	@brief fonction que la chaine passe en parametre est un format IT valide
*	@param valeur chaine
*	@return	bool True ou false
*/
function IsTel_IT(valeur)
{
	return (formatChaine(valeur).search("^(39)?[0-9]{10}$") != -1); 
}

/** 
*	@fn function IsTel_ES(valeur)
*	@brief fonction que la chaine passe en parametre est un format ES valide
*	@param valeur chaine
*	@return	bool True ou false
*/
function IsTel_ES(valeur)
{
	return (formatChaine(valeur).search("^(34)?(6|9)[0-9]{8}$") != -1); 
}

/** 
*	@fn function format_tel(valeur, pays) 
*	@brief fonction formattant la chaine en numero de telephone suivant le pays
*	@param valeur chaine
*	@param pays int identifiant du pays
*	@return	string la chaine formattee
*/
function format_tel(valeur, pays) 
{
	switch(Number(pays))
	{
		case 57: return format_tel_fr(valeur); break; //FRANCE
		case 63: return format_tel_es(valeur); break; //Espagne
		case 16: return format_tel_be(valeur); break; //Espagne
		case 86: return format_tel_it(valeur); break; //Italie
		default : return valeur;
	}
}

/** 
*	@fn function format_tel_fr(valeur) 
*	@brief fonction formattant la chaine en numero de telephone
*	@param valeur chaine
*	@return	string la chaine formattee
*/
function format_tel_fr(valeur) 
{
	try
	{
		//test pour savoir s'il y a le +
		var pos=valeur.indexOf('+',0);
		//suppression des caracteres non numerique
		valeur=formatChaine(valeur);
	
		if (valeur.length==10)	var tab=valeur.match(/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/);
		else var tab=valeur.match(/^(\d{3})(\d{2})(\d{2})(\d{2})(\d{2})$/);
	
		tab.splice(0,1);
		
		if(pos==0) 	return'+' + tab.join(".");
		else return tab.join(".");
	}
	catch(e) {return valeur;}
}

/** 
*	@fn function format_tel_be(valeur) 
*	@brief fonction formattant la chaine en numero de telephone
*	@param valeur chaine
*	@return	string la chaine formattee
*/
function format_tel_be(valeur) 
{
	try
	{
		//test pour savoir s'il y a le +
		var pos=valeur.indexOf('32',0);
		
		//suppression des caracteres non numerique
		valeur=formatChaine(valeur);
	
		if (valeur.length==10 && (pos==0 || pos==1)) var tab=valeur.match(/^(\d{2})(\d{1})(\d{3})(\d{2})(\d{2})$/); //+32....	
		else if(valeur.length>=10)//GSM
		{
			if(pos==0 || pos==1) var tab=valeur.match(/^(\d{2})(\d{1})(\d{2})(\d{3})(\d{3})$/); //GSM et +32
			else var tab=valeur.match(/^(\d{4})(\d{2})(\d{2})(\d{2})$/);
		}
		else var tab=valeur.match(/^(\d{3})(\d{2})(\d{2})(\d{2})$/);
		tab.splice(0,1);
		
		if(pos==0) 	return'+' + tab.join(" ");
		else return tab.join(" ");
	}
	catch(e) {return valeur;}
}


/** 
*	@fn function format_tel_it(valeur) 
*	@brief fonction formattant la chaine en numero de telephone
*	@param valeur chaine
*	@return	string la chaine formattee
*/
function format_tel_it(valeur) 
{
	try
	{
		//test pour savoir s'il y a le +
		var pos=valeur.indexOf('+',0);
		//suppression des caracteres non numerique
		valeur=formatChaine(valeur);
	
		var tab=valeur.match(/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})?$/);
		alert(tab);
		tab.splice(0,1);
		
		if(pos==0) 	return '+' + tab.join(".");
		else return tab.join(".");
	}
	catch(e) {return valeur;}
}

/** 
*	@fn function format_tel_es(valeur) 
*	@brief fonction formattant la chaine en numero de telephone
*	@param valeur chaine
*	@return	string la chaine formattee
*/
function format_tel_es(valeur) 
{
	try
	{
		//test pour savoir s'il y a le +
		var pos=valeur.indexOf('+',0);
		//suppression des caracteres non numerique
		valeur=formatChaine(valeur);
	
		if (valeur.length==9) var tab=valeur.match(/^(\d{3})(\d{3})(\d{3})$/);
		else var tab=valeur.match(/^(\d{2})(\d{3})(\d{3})(\d{3})$/);
		
		tab.splice(0,1);
		
		if(pos==0) 	return '+' + tab.join(".");
		else return tab.join(".");
	}
	catch(e) {return valeur;}
}

