function DisplayLabelValid(_FiledName,_LabelName,_Type){var FiledValue = document.getElementById(_FiledName).value ;if (IsValid(FiledValue ,_Type))	{document.getElementById(_LabelName ).style.color ="#0b2d62";return false;}else {document.getElementById(_LabelName ).style.color ="Red";return true;}}
function IsValid(_Value,_Type){ var d,m,y,idx;var strVar = new String(_Value);if (strVar.length <= 0){return false;}switch(_Type){case "INT":	if (!isNaN(_Value))	{return true;}break;case "+INT": if (!isNaN(_Value) && _Value > 0) {return true;}break;	case "STR": if (strVar.length > 0){return true;}break;case "DATE": if (strVar.length < 8 || strVar.length > 10)return false;idx = strVar.indexOf("/");if (idx <=0) return false;d= strVar.substr(0,idx);if ( isNaN(d)|| parseInt(d,10) < 1 || parseInt(d,10) > 31){return false; }strVar = strVar.substr(idx+1);idx = strVar.indexOf("/");if (idx <=0)return false;	m= strVar.substr(0,idx);if ( isNaN(m)|| parseInt(m,10) < 1 || parseInt(m,10) > 12){return false;}y = strVar.substr(idx+1);if ( isNaN(y) || parseInt(y,10) < 1900 || parseInt(y,10) > 2100){return false;} return true;break;default:return false;break;}return false;}
function isCaracSpeciaux(_var)
{
    s_var = new String(_var);
    for(i=0 ; i < s_var.length ; i++) 
    {
        //espace : 32  ,    [0-9] : 48-57    ,  [AZ] : 65-90   ,  [az] : 97-122   [éâ...] : 130 - 163
        d_asci = s_var.charCodeAt(i);
        s_char = s_var.charAt(i);
        if ( !( d_asci == 32 ) && !( d_asci >= 48 && d_asci <= 57) && !( d_asci >= 65 && d_asci <= 90) && !( d_asci >= 97 && d_asci <= 122) ) 
        {
            if ( s_char !="'" && 
                 s_char !="é" && 
                 s_char !="è" &&
                  s_char !="ê" && 
                  s_char !="à" && 
                  s_char !="â" && 
                  s_char !="ù" && 
                  s_char !="ô" && 
                  s_char !="ç" && 
                  s_char !="ï" &&
                  s_char !="+" && 
                  s_char !="," &&
                  s_char !="-" 
                  
                  )
            {
               return (true)
            }   
        }

    }
    return (false)

}
function ltrim(_strChaine){var sRetStr = _strChaine;	while (  sRetStr.charAt(0) == " "){sRetStr = sRetStr.substring(1);}return sRetStr;}
function Replace(_strChaine,_strVar1,_strVar2)
{
    
	var strRet = new String("");
	var strChaine = new String(_strChaine);
	
    var rexp = new RegExp(_strVar1, "g");
    strRet = strChaine.replace(rexp, _strVar2);   //Swap each pair of words.
	
	return strRet;
};

function isTestPhoneNumber(_var)
{
    this.code   = 0 ;
    this.value  = _var ;
    this.msg    = "Numero Invalide.";

    var s_var  = new String(ltrim(_var));
    
    //Si différent de [espace] [+] ou [()] ou [0-9] ==> erreur
    for(i=0 ; i < s_var.length ; i++) 
    {
        //espace : 32  , + : 43  ,    [0-9] : 48-57    ,  
        d_asci = s_var.charCodeAt(i);
        s_char = s_var.charAt(i);
        if ( !( d_asci == 32 ) && !( d_asci == 43 ) && !( d_asci >= 48 && d_asci <= 57)  ) 
        {
            this.code = -1 ;
            this.msg = "Seule les chiffres et  le [+]  sont autorisées.";
        }

    }
    
    //Si il ya trop de [000] ==> erreur
    if ( isDuplicateCaractere(s_var,5) )
    {
        this.code   = -1 ;
		this.msg  = "Erreur de syntaxe (le même caractère se répète )...";
    }  
          
    //Si il longeur hors espace < 8 ==> erreur
    var s_var_sans_esp = new String(Replace(_var," ",""));
    if ( s_var_sans_esp.length >0 && s_var_sans_esp.length < 8 )
    {
        this.code   = -1 ;
        this.msg    = "Numero Invalide.";
    }        

    //===========================
    // Mise en Forme +216 98 111 111
    //===========================
    if ( this.code == 0)
    {
        this.code = 10 ;

        //Convetir "00 216 xxxx" en "+216 xxx"
        if ( s_var_sans_esp.substr(0,2) == "00")
        {
           s_var_sans_esp = "+" + s_var_sans_esp.substring(2);
        }
        if ( s_var.substr(0,2) == "00")
        {
           s_var = "+" + s_var.substring(2);
        }
 
        if ( s_var_sans_esp.substr(0,1) == "+" ) 
        {
            if ( s_var_sans_esp.substr(0,4) == "+216" ) //Tunisie : +216 CC CCC CCC
            {
                //si tunisie et longeur diffé de 12 (+216xxyyyzzz)==> erreur 
                if ( s_var_sans_esp.length != 12)  
                    this.code   = -1 ;
                else
                {
                    s_var = "+216 " ;
                    s_var+= s_var_sans_esp.substr(4,2) + " ";
                    s_var+= s_var_sans_esp.substr(6,3) + " ";
                    s_var+= s_var_sans_esp.substr(9);
                }
            }
            else if ( s_var_sans_esp.substr(0,4) == "+213" )//Algerie
            {
                if ( s_var_sans_esp.length < 12)  
                    this.code   = -1 ;
                else
                {
                    s_var = "+213 " ;
                    s_var+= s_var_sans_esp.substr(4,2) + " ";
                    s_var+= s_var_sans_esp.substr(6,2) + " ";
                    s_var+= s_var_sans_esp.substr(8,2) + " ";
                    s_var+= s_var_sans_esp.substr(10);
                }
            }
            else if ( s_var_sans_esp.substr(0,4) == "+212" )//Maroc : + 212 (0) CCC CCC CCC
            {
                //si maroc et longeur diffé de 13 (+212 CCC CCC CCC)==> erreur 
                if ( s_var_sans_esp.length < 13)  
                    this.code   = -1 ;
                else
                {
                    s_var = "+212 " ;
                    s_var+= s_var_sans_esp.substr(4,3) + " ";
                    s_var+= s_var_sans_esp.substr(7,3) + " ";
                    s_var+= s_var_sans_esp.substr(10);
                }
            }
            else if ( s_var_sans_esp.substr(0,4) == "+221" )//Senegal : +221 [33|77|76|88] CCC CC CC
            {
                if ( s_var_sans_esp.length < 13)  
                    this.code   = -1 ;
                else
                {
                    s_var = "+221 " ;
                    s_var+= s_var_sans_esp.substr(4,2) + " ";
                    s_var+= s_var_sans_esp.substr(6,3) + " ";
                    s_var+= s_var_sans_esp.substr(9,2) + " ";
                    s_var+= s_var_sans_esp.substr(11);
                }
            }
            else if ( s_var.substr(0,3) == "+33" )//France : +33 [x] CC CC CC CC 
            {
                //si France et longeur diffé de 12 (+33 X CC CC CC CC)==> erreur 
                if ( s_var_sans_esp.length < 12)  
                    this.code   = -1 ;
                else
                {
                    s_var = "+33 " ;
                    s_var+= s_var_sans_esp.substr(3,1) + " ";
                    s_var+= s_var_sans_esp.substr(4,2) + " ";
                    s_var+= s_var_sans_esp.substr(6,2) + " ";
                    s_var+= s_var_sans_esp.substr(8,2) + " ";
                    s_var+= s_var_sans_esp.substr(10);
                }
            }
            else if ( s_var_sans_esp.substr(0,3) == "+32" )//Belgique : GSM +32 4CC CC CC CC
                                                           //           Fixe +32 C CCC CC CC
            {
                    if ( s_var_sans_esp.length < 11)  
                        this.code   = -1 ;
                    else if ( s_var_sans_esp.substr(3,1) == "4") // GSM
                    {
                        s_var = "+32 " ;
                        s_var+= s_var_sans_esp.substr(3,3) + " ";
                        s_var+= s_var_sans_esp.substr(6,2) + " ";
                        s_var+= s_var_sans_esp.substr(8,2) + " ";
                        s_var+= s_var_sans_esp.substr(10);
                    }
                    else //FIXE
                    {
                        s_var = "+32 " ;
                        s_var+= s_var_sans_esp.substr(3,1) + " ";
                        s_var+= s_var_sans_esp.substr(4,3) + " ";
                        s_var+= s_var_sans_esp.substr(7,2) + " ";
                        s_var+= s_var_sans_esp.substr(9);
                    }
            }
            else if ( s_var_sans_esp.substr(0,3) == "+41" )//Suisse : +41 (0)CC CCC CC CC
            {
                    if ( s_var_sans_esp.length < 12)  
                        this.code   = -1 ;
                    else 
                    {
                        s_var = "+41 " ;
                        s_var+= s_var_sans_esp.substr(3,2) + " ";
                        s_var+= s_var_sans_esp.substr(5,3) + " ";
                        s_var+= s_var_sans_esp.substr(8,2) + " ";
                        s_var+= s_var_sans_esp.substr(10);
                    }
            }
            else if ( s_var_sans_esp.substr(0,2) == "+1" )//Canada / Quebec
            {
                        s_var = "+1 " ;
                        s_var+= s_var_sans_esp.substr(2,3) + " ";
                        s_var+= s_var_sans_esp.substr(5,3) + " ";
                        s_var+= s_var_sans_esp.substr(8) ;
            }
            
        }    
        this.value = s_var;
    }
    //===========================

}
function isDuplicateCaractere(_var,_max_occ)
{
    
    var s_var = new String(_var);
    var s_prev_char = "";
    var MAX_OCC = (_max_occ > 0)? _max_occ : 5;
    var d_nbr_occ=1;
    for(i=0 ; i < s_var.length ; i++) 
    {
        s_char = s_var.charAt(i);
        if ( s_char == s_prev_char)
        {
            d_nbr_occ++;
            if (d_nbr_occ>=3 && isNaN(s_char)) return (true);
            else if (d_nbr_occ>=MAX_OCC ) return (true);
        }   
        else
        {
            d_nbr_occ=1;
        }
        s_prev_char = s_char;
    }
    return (false);

}



function DisplayLabelValid2(_FiledName,_LabelName,_Type,_max_len,_min_len)
{
	var FiledValue = document.getElementById(_FiledName).value ;
	var pIsValid = new IsValid2(FiledValue ,_Type,_FiledName,_max_len,_min_len);
	this.msg = pIsValid.msg;
	if (pIsValid.code)	
	{
		document.getElementById(_LabelName ).style.color ="#333333";
		this.code = false;
	}
	else 
	{
		document.getElementById(_LabelName ).style.color ="Red";
		this.code = true;
	}
	return;
}
function IsValid2(_Value,_Type,_FiledName,_max_len,_min_len)
{ 
	var d,m,y,idx,
		s_msg,d_code;
	

	this.code =true;

	var strVar = new String(_Value);
	if (strVar.length < 0)
	{
		this.code = false
		this.msg  = "Erreur inattendue";
		return;
	}
	
	switch(_Type)
	{
	case "STR": 
		if (strVar.indexOf(">") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("\"") >=0 || strVar.indexOf("//") >=0)
		{
			this.code = false
			this.msg  = "Les caractères suivants ne sont pas autorisées : >, < , \" et // ";
		}
		else if (strVar.indexOf("@") >=0 || strVar.indexOf(".com") >=0 || strVar.indexOf(".net") >=0 || strVar.indexOf(".fr") >=0 || strVar.indexOf("http") >=0)
		{
			this.code = false
			this.msg  = "Les adresses mails et les url ne sont pas autorisés.";
		}
		else if ( _max_len > 0 && strVar.length > _max_len )
		{
			this.code = false
			this.msg  = "Ce champs ne doit pas dépasser [ " + _max_len + " caractères ]. Vous avez saisie "+strVar.length +" caractères";
		}
		else if ( _min_len > 0 && strVar.length < _min_len )
		{
			this.code = false
			this.msg  = "Veuillez saisir au moins [ " + _min_len + " caractères ]. Vous avez saisie "+strVar.length +" caractères";
		}
		
	break;
	case "+TITRE_ANNONCE": 
		if (strVar.toLowerCase().indexOf("vente") >=0 || strVar.toLowerCase().indexOf("vendre") >=0 || strVar.toLowerCase().indexOf("louer") >=0 || strVar.toLowerCase().indexOf("location") >=0)
		{
			this.code = false
			this.msg  = "Veuillez saisir un Titre clair sans utiliser les mots : vendre, louer, location ...";
		}
		else if (strVar.toLowerCase().indexOf("forsa") >=0 || strVar.toLowerCase().indexOf("forss") >=0 ||strVar.toLowerCase().indexOf("forass") >=0 || strVar.toLowerCase().indexOf("forcca") >=0 ||strVar.toLowerCase().indexOf("força") >=0 || strVar.toLowerCase().indexOf("forca") >=0 || strVar.toLowerCase().indexOf("fourss") >=0  || strVar.toLowerCase().indexOf("foursa") >=0 || strVar.toLowerCase().indexOf("stop") >=0|| strVar.toLowerCase().indexOf("stoo") >=0 || strVar.toLowerCase().indexOf("mouch") >=0 || strVar.toLowerCase().indexOf("moch") >=0|| strVar.toLowerCase().indexOf("mooch") >=0 || strVar.toLowerCase().indexOf("mahboula") >=0 || strVar.toLowerCase().indexOf("mahbool") >=0)
		{
			this.code = false
			this.msg  = "Veuillez saisir un titre simple pour decrire votre annonce (en francais).";
		}
		else if ( isCaracSpeciaux(strVar) )
		{
			this.code = false
			this.msg  = "Veuillez saisir des caractères alphanumériques (que des chiffres ou des lettres).";
		}
		else if ( isDuplicateCaractere(strVar) )
		{
			this.code = false
			this.msg  = "Erreur de syntaxe (le même caractère se répète )...";
		}
	//break; ==> pas de break le test doit aussi passé par +STR
	case "+STR": 
		if (strVar.length <= 0 )
		{
			this.code = false
			this.msg  = "Ce champs est obligatoire";
		}
		else if (strVar.indexOf(">") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("\"") >=0 || strVar.indexOf("//") >=0)
		{
			this.code = false
			this.msg  = "Les caractères suivants ne sont pas autorisées : >, < , \" et // ";
		}
		else if (strVar.indexOf("@") >=0 || strVar.indexOf("www") >=0 || strVar.indexOf(".com") >=0 || strVar.indexOf(".net") >=0 || strVar.indexOf(".fr") >=0 || strVar.indexOf(".tn") >=0 || strVar.indexOf(".info") >=0 || strVar.indexOf("http") >=0 )
		{
			this.code = false
			this.msg  = "Les adresses mails et les url ne sont pas autorisés.";
		}
		else if ( _max_len > 0 && strVar.length > _max_len )
		{
			this.code = false
			this.msg  = "Ce champs ne doit pas dépasser [ " + _max_len + " caractères ]. Vous avez saisie "+strVar.length +" caractères";
		}
		else if ( _min_len > 0 && strVar.length < _min_len )
		{
			this.code = false
			this.msg  = "Veuillez saisir au moins [ " + _min_len + " caractères ]. Vous avez saisie "+strVar.length +" caractères";
		}
	break;
	case "INT":	
		while ( strVar.indexOf(" ") >= 0 || strVar.indexOf(".") >= 0 || strVar.indexOf(",") >= 0|| strVar.indexOf("+") >= 0|| strVar.indexOf("-") >= 0)
		{
			strVar = strVar.replace(" ","");
			strVar = strVar.replace(".","");
			strVar = strVar.replace(",","");
			strVar = strVar.replace("+","");
			strVar = strVar.replace("-","");
			document.getElementById(_FiledName).value = strVar;
		}
		if (isNaN(strVar))	
		{	
			this.code = false
			this.msg  = "seule les nombres entiers sont permis";
		}
		else if ( Number(strVar) > 99900000)
		{
			this.code = false
			this.msg  = "Veuillez saisir un seul nombre entier. Ce nombre est trop grand";
		}
		
	break;
	case "+INT":	
		while ( strVar.indexOf(" ") >= 0 || strVar.indexOf(".") >= 0 || strVar.indexOf(",") >= 0|| strVar.indexOf("+") >= 0|| strVar.indexOf("-") >= 0)
		{
			strVar = strVar.replace(" ","");
			strVar = strVar.replace(".","");
			strVar = strVar.replace(",","");
			strVar = strVar.replace("+","");
			strVar = strVar.replace("-","");
			document.getElementById(_FiledName).value = strVar;
		}
		if (strVar.length <= 0 )
		{
			this.code = false
			this.msg  = "Ce champs est obligatoire";
		}
		else if (isNaN(strVar) || strVar <= 0 )	
		{	
			this.code = false
			this.msg  = "Seules les nombres positifs sont permis";
		}
		else if ( Number(strVar) > 99900000)
		{
			this.code = false
			this.msg  = "Veuillez saisir un seul nombre entier. Ce nombre est trop grand";
		}
    break;
	case "DATE": //  01/08/1999
		this.msg  = "La date doit être valide au format JJ/MM/AAAA";
		offset_d="",offset_m="";
		if (strVar.length < 8 || strVar.length > 10)
		{
			this.code = false;
			return;
		}
		idx = strVar.indexOf("/");
		if (idx <=0) 
		{
			this.code = false
		}
		d= parseInt(strVar.substr(0,idx),10);
		if ( d <= 9) offset_d="0";
		if ( isNaN(d)|| d < 1 || d > 31 )
		{
			this.code = false
		}
		strVar = strVar.substr(idx+1);
		idx = strVar.indexOf("/");
		if (idx <=0)
		{
			this.code = false
		}
		m= parseInt(strVar.substr(0,idx),10);
		if ( m <= 9) offset_m="0";
		if ( isNaN(m)|| m < 1 || m > 12 )
		{
			this.code = false
		}
		y = parseInt(strVar.substr(idx+1),10);
		if ( isNaN(y) || y < 1900 || y > 2100)
		{
			this.code = false
		} 
		
		if ( ( m == 2 && d > 29) || ( ( m == 4 || m ==6 || m == 9 || m == 11) && d > 30 ) )
		{
			this.code = false
		} 
		document.getElementById(_FiledName).value = offset_d + d + "/" + offset_m + m + "/"+ y;
	break;	
	case "MAIL": 
		this.msg  = "Adresse mail non valide";
		if (strVar.length > 0 )
		{
		    if (strVar.indexOf(">") >=0 || strVar.indexOf("'") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("\"") >=0 || strVar.indexOf("/") >=0 || strVar.indexOf("\\") >=0)
		    {
			    this.code = false
		    }
		    else
		    {
			    var d_pos_at,
				    d_pos_pt;
    				
			    d_pos_at = strVar.indexOf("@");
			    if ( d_pos_at < 0 )
			    {
				    this.code = false
			    }
			    else
			    {			 
				    d_pos_pt = strVar.indexOf(".",d_pos_at);
				    if ( d_pos_pt < 0 || d_pos_pt < d_pos_at)
				    {
					    this.code = false
				    }
			    }
		    }
		}
	break;
	case "+MAIL": 
		this.msg  = "Adresse mail non valide";
		if (strVar.length <= 0 )
		{
			this.code = false
			this.msg  = "Ce champs est obligatoire";
		}
		else if (strVar.indexOf(">") >=0 || strVar.indexOf("'") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("\"") >=0 || strVar.indexOf("/") >=0 || strVar.indexOf("\\") >=0)
		{
			this.code = false
		}
		else
		{
			var d_pos_at,
				d_pos_pt;
				
			d_pos_at = strVar.indexOf("@");
			if ( d_pos_at < 0 )
			{
				this.code = false
			}
			else
			{			 
				d_pos_pt = strVar.indexOf(".",d_pos_at);
				if ( d_pos_pt < 0 || d_pos_pt < d_pos_at)
				{
					this.code = false
				}
			}
		}
	break;
	case "URL": 
		this.msg  = "URL non valide";
		if (strVar.indexOf(">") >=0 || strVar.indexOf("'") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("\"") >=0 )
		{
			this.code = false
		}
		else if (strVar.indexOf("@") >=0 )
		{
			this.msg  = "Veuillez insérer une URL et non un email";
			this.code = false
		}
		 
	break;
	case "+URL": 
		this.msg  = "URL non valide";
		if (strVar.length <= 0 )
		{
			this.code = false
			this.msg  = "Ce champs est obligatoire";
		}
		else if (strVar.indexOf(">") >=0 || strVar.indexOf("'") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("\"") >=0 )
		{
			this.code = false
		}
		else if (strVar.indexOf("@") >=0 )
		{
			this.msg  = "Veuillez insérer une URL et non un email";
			this.code = false
		}

	break;
	case "+PWD": 
		if (strVar.length <= 0 )
		{
			this.code = false
			this.msg  = "Ce champs est obligatoire";
		}
		else if (strVar.indexOf(">") >=0 || strVar.indexOf("<") >=0 || strVar.indexOf("'") >=0 || strVar.indexOf("\"") >=0 )
		{
			this.code = false
			this.msg  = "Les caractères suivants ne sont pas autorisées : >, < , ' et  \" ";
		}
		else if ( _max_len > 0 && strVar.length > _max_len )
		{
			this.code = false
			this.msg  = "Ce champs ne doit pas dépasser [ " + _max_len + " caractères ]. Vous avez saisie "+strVar.length +" caractères";
		}
		else if ( _min_len > 0 && strVar.length < _min_len )
		{
			this.code = false
			this.msg  = "Veuillez saisir au moins [ " + _min_len + " caractères ]. Vous avez saisie "+strVar.length +" caractères";
		}
	break;
	case "PHONE": 
		
		pPhoneNumber = new isTestPhoneNumber(strVar);
		if ( pPhoneNumber.code < 0 )
		{
			this.code = false
			this.msg  = pPhoneNumber.msg;
		}
		else
		{
		    document.getElementById(_FiledName).value = pPhoneNumber.value;
		}
	break;
	default:
		this.code = false
		this.msg  = "Erreur";
	break;
	}
	return ;
}

function DisplayLabelRed(_LabelName,_b_success)
{
	if (_b_success)	
		document.getElementById(_LabelName ).style.color ="#333333";
	else 
		document.getElementById(_LabelName ).style.color ="Red";
	return;
}
