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

/** 
*	@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) 
{
	switch(Number(pays))
	{
		case 57: return IsTel_FR(valeur.replace(/(^\s*)|(\s*$)/g, "")); break; //FRANCE
		case 63: return IsTel_ES(valeur.replace(/(^\s*)|(\s*$)/g, "")); break; //Espagne
		case 16: return IsTel_BE(valeur.replace(/(^\s*)|(\s*$)/g, "")); break; //Belgique
		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 (valeur.search("^[\+]?[ ]?(33|0)[1-9][ |\.|-]?[0-9]{2}[ |\.|-]?[0-9]{2}[ |\.|-]?[0-9][ |\.|-]?[0-9][ |\.|-]?[0-9]{2}$") != -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)
{
	var reg= new RegExp("[^0-9]","gi");
	valeur=valeur.replace(reg, "");
	return (valeur.search("^(32|0)[0-9]{8,9}$") != -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 (valeur.search("^[\+]?[ ]?(34)?[ |\.|-]?(6|9)[0-9]{2}[ |\.|-]?[0-9]{3}[ |\.|-]?[0-9]{3}$") != -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.replace(/(^\s*)|(\s*$)/g, "")); break; //FRANCE
		case 63: return format_tel_es(valeur.replace(/(^\s*)|(\s*$)/g, "")); break; //Espagne
		case 16: return format_tel_be(valeur.replace(/(^\s*)|(\s*$)/g, "")); break; //Espagne
		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
		var reg= new RegExp("[^0-9]","gi");
		valeur=valeur.replace(reg, "");
	
		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
		var reg= new RegExp("[^0-9]","gi");
		valeur=valeur.replace(reg, "");
	
		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_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
		var reg= new RegExp("[^0-9]","gi");
		valeur=valeur.replace(reg, "");
	
		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;}
}
