
/*	CODE BY RV (herve.guyau@free.fr)
	CREATION : 03/02/2000
	MAJ : 08/03/2001
*/

/*	function SeeObj(). Fonction de Debug !!!
	Renvoi la liste des propriétés d'un objet et leur contenu dans une fenêtre POPUP.
	Input : (r) = Requis ; (o) = Optionnel.
	(r)	str (String) - Chaîne représentant l'expression de l'objet.
	(o)	ReturnValue (Bool) - Si true, le traitement est renvoié dans une chaîne. */
function SeeObj(objtxt,ReturnValue){
var z="",win;
	for(i in eval(objtxt)) z+=objtxt+"."+i+" : "+eval(objtxt+"[\""+i+"\"]")+"\n";
	if(ReturnValue){
		return z;
	} else {
		win=open();
		win.document.write(z.unactags().nl2br().txt2html());
		win.document.close();
	}
}

/*	function CleanSpace(). version prototype.
	Retire tous les espaces de la chaîne.
	output :
		retval (String) - La chaîne sans espace. */
function XString_CleanSpace(){
var myexp=/\s+/g;/* tout les types d'espacement */
return this.replace(myexp,"");
}

/*	function LTrim(). version prototype.
	Retire tous les espaces situes au début de la chaîne.
	output :
		retval (String) - La chaîne sans espace devant. */
function XString_LTrim(){
var myexp=/^\s+/;/* tout les types d'espacement, mais, n'efface que si ils sont en debut de chaine. */
return this.replace(myexp,"");
}

/*	function RTrim(). version prototype.
	Retire tous les espaces situés à la fin de la chaîne.
	output :
		retval (String) - La chaîne sans espace derrière. */
function XString_RTrim(){
var myexp=/\s+$/;/* tout les types d'espacement, qui vons jusqu'a la fin de la chaine. */
return this.replace(myexp,"");
}

/*	function Trim(). version prototype.
	Retire tous les espaces situés à la fin et au début de la chaîne.
	output :
		retval (String) - La chaîne sans espace derrière et devant. */
function XString_Trim(){
return this.ltrim().rtrim();
}

/*	function UnacTags(). version prototype.
	Désactive tous les TAGS de la chaîne.
	Parfois nécessaire avant un document.write().
	output :
		retval (String) - La chaîne HTML. */
function XString_UnacTags(){
var str=this,expr;
	expr=/</g;str=str.replace(expr,"&lt;");
	expr=/>/g;str=str.replace(expr,"&gt;");
return str;
}

/*	function AcTags(). version prototype.
	Active tous les TAGS de la chaîne.
	Parfois nécessaire avant un document.write().
	output :
		retval (String) - La chaîne HTML. */
function XString_AcTags(){
var str=this,expr;
	expr=/&lt;/g;str=str.replace(expr,"<");
	expr=/&gt;/g;str=str.replace(expr,">");
return str;
}

/*	function UnacEntity(). version prototype.
	Desactive toutes les entitees HTML.
	Parfois nécessaire avant un document.write(),
	pour faire apparaitre les entitees HTML sans les executees.
	output :
		retval (String) - La chaîne HTML. */
function XString_UnacEntity(){
var expr=/&/g;
return this.replace(expr,"&#38;");
}

/*	function AcEntity(). version prototype.
	Active toute les entitees HTML desactivees par UnacEntity().
	output :
		retval (String) - La chaîne HTML. */
function XString_AcEntity(){
var expr=/&#38;/g;
return this.replace(expr,"&");
}

/*	function Nl2Br(). version prototype.
	Transforme tous les saut de ligne en <BR>.
	Inhibe les problèmes de CR/LF des TEXTAREA qui apparaissent en fonction de la plate-forme. (PC, MAC, X)
	output :
		retval (String) - La chaîne HTML. */
function XString_Nl2Br(){
var expr=new RegExp("%0D%0A|%0A|%0D","g"),str=escape(this);
return unescape(str.replace(expr,"<BR>"));
}

/*	function Br2Nl(). version prototype.
	Transforme tous les <BR> en saut de ligne.
	Inhibe les problèmes de CR/LF des TEXTAREA qui apparaissent en fonction de la plate-forme. (PC, MAC, X)
	output :
		retval (String) - La chaîne texte. */
function XString_Br2Nl(){
var expr=/<BR>/gi;
return this.replace(expr,unescape(this.nl));
}

/*	function Sp2Nbsp(). version prototype.
	Transforme tous les espaces en espace insécable.
	output :
		retval (String) - La chaîne texte. */
function XString_Sp2Nbsp(){
var expr=/ /g;
return this.replace(expr,"&nbsp;");
}

/*	function Nbsp2Sp(). version prototype.
	Transforme tous les espaces insécable en espace.
	output :
		retval (String) - La chaîne texte. */
function XString_Nbsp2Sp(){
var expr=/&nbsp;/g;
return this.replace(expr," ");
}

/*	function Txt2Html(). version prototype.
	Transforme du texte brut en son équivalence HTML.
	Input : (r) = Requis ; (o) = Optionnel.
	output :
		retval (String) - La chaîne HTML. */
function XString_Txt2Html(){
var tmp="",chr,expr,str=escape(this);// pour unicode et bizarreries navigateur.

/* Traitement special unicode et MAC */
	expr=/%u2019/gi;str=str.replace(expr,"%27");
	expr=/%u0152/gi;str=str.replace(expr,"&OElig;");
	expr=/%u0153/gi;str=str.replace(expr,"&oelig;");
/* Force le OElig/oelig %8C/%9C et %CF/%CE pour MAC */
	if(document.layers && navigator.platform.toUpperCase().indexOf("MAC")!=-1){
		expr=/%CF/g;str=str.replace(expr,"&oelig;");
		expr=/%CE/g;str=str.replace(expr,"&OElig;");
	} else {
		expr=/%9C/g;str=str.replace(expr,"&oelig;");
		expr=/%8C/g;str=str.replace(expr,"&OElig;");
	}
	str=unescape(str);/* Fin traitement preliminaire */

/* balayage de la chaine et remplacement des char>160 par l'entitee correspondante */
	for(i=0;i<str.length;i++){
		chr=str.charCodeAt(i);
		if(chr>=160) tmp+="&"+this.tabentity[chr-160]+";"; else tmp+=String.fromCharCode(chr);
	}
return tmp;
}

/*	function Html2Txt(). version prototype.
	Transforme du HTML en son équivalence texte brute.
	output :
		retval (String) - La chaîne texte. */
function XString_Html2Txt(){
var expr,str=escape(this);// Traitement des bizzareries navigateurs.

/* Force le passage en texte du OElig/oelig */
	if(document.layers){// Netscape.
		if(navigator.platform.toUpperCase().indexOf("MAC")!=-1){// Le special Netscape pour MAC
			expr=/%26oelig%3B/g;str=str.replace(expr,"%CF");
			expr=/%26OElig%3B/g;str=str.replace(expr,"%CE");
		} else {	// les autres netscape.
			expr=/%26oelig%3B/g;str=str.replace(expr,"%9C");
			expr=/%26OElig%3B/g;str=str.replace(expr,"%8C");
		}
	} else { // IE PC.
		expr=/%26OElig%3B/g;str=str.replace(expr,"%u0152");
		expr=/%26oelig%3B/g;str=str.replace(expr,"%u0153");
	}
	str=unescape(str);/* Fin traitement preliminaire */

/* construis dynamiquement une expression reguliere par entitee du tableau et remplace les occurrences par le char correspondant */
	for(i=0;i<this.tabentity.length;i++){
		myexp=new RegExp("&"+this.tabentity[i]+";","g");/* creation dynamique d'expression reguliere */
		str=str.replace(myexp,String.fromCharCode(160+i));/* remplacement de l'entitee */
	}
return str;
}

/*	function IsMail(). version prototype
	Vérifie que la chaîne est une adresse E-Mail valide.
	output :
		retval (Bool) - true si la chaîne est valide. */
function XString_IsMail(){
if(document.all){
// Cette version est plus restrictive , mais, ne fonctionne que sur IE.
var expr=/^([a-zA-Z0-9]+[_\-\.]?){0,}[a-zA-Z0-9]+@(([a-zA-Z0-9]+[_\-\.]?){0,}[a-zA-Z0-9]+){1,}\.[A-Za-z]+$/;
} else {
var expr=/^.[^@]+@.[^@]+\.[A-Za-z]+$/i;
}
return (this.search(expr)!=-1)? true: false;
}

/* declaration des prototypes. */
String.prototype.html2txt=XString_Html2Txt;
String.prototype.txt2html=XString_Txt2Html;
String.prototype.unactags=XString_UnacTags;
String.prototype.actags=XString_AcTags;
String.prototype.trim=XString_Trim;
String.prototype.rtrim=XString_RTrim;
String.prototype.ltrim=XString_LTrim;
String.prototype.cleanspace=XString_CleanSpace;
String.prototype.ismail=XString_IsMail;
String.prototype.unacentity=XString_UnacEntity;
String.prototype.acentity=XString_AcEntity;
String.prototype.nl2br=XString_Nl2Br;
String.prototype.br2nl=XString_Br2Nl;
String.prototype.sp2nbsp=XString_Sp2Nbsp;
String.prototype.nbsp2sp=XString_Nbsp2Sp;
/* initialisation du tableau d'entitee (160-255)*/
String.prototype.tabentity="nbsp,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,times,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,divide,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml".split(",");
if(navigator.platform.toUpperCase().indexOf("WIN")!=-1){
	String.prototype.nl="%0D%0A";// pour DOS 
} else if(navigator.platform.toUpperCase().indexOf("MAC")!=-1){
	String.prototype.nl="%0D";// pour MAC 
} else {
	String.prototype.nl="%0A";// pour X 
}

/*function verification(){
	var but=document.forms['form1'].message;
	var retval=true, errmess="";
	errmess+=(!but.form.email.value.ismail() && !but.form.tel.value.ltrim().length)? "L'adresse email n'est pas valide !!\n":"";
	errmess+=(!but.form.tel.value.ltrim().length && !but.form.email.value.ismail())? "Ou le tel est requis !!\n":"";
	errmess+=(!but.form.message.value.ltrim().length)? "Le message est requis !!":"";
	if(errmess.length){
		alert(errmess);retval=false;
	} else but.form.submit();
return retval;
}
*/
function validation(){
	var but=document.forms['form1'].demande;
	var retval=true, errmess="";
	errmess=!but.form.email.value.ismail() && !but.form.tel.value.ltrim().length ? "L'adresse email n'est pas valide \n ou le tel est requis !!\n" : !but.form.demande.value.ltrim().length ? "La demande est requise !!\n":"";
	if(errmess.length){
		alert(errmess);
		retval=false;
	} else {
		retval=true;/*but.form.submit();*/}
	return retval;
}