// JavaScript Document
function saveMail() {
	email = document.formmail.email.value;
	//alert(email);
	//return false;
	lafonct = function() {
		if(ajaxOk()){
			//do nothing
		}
	}
	if(validMail(email)){
		callAjax(url+'script/addMail.php?mail='+email,null,lafonct);
		document.getElementById("lienmail").innerHTML = "";
		document.formmail.email.readOnly = true;
		document.formmail.email.value="Merci!";
		//document.getElementById("email").size = 28;
	} else {
		alert("veuillez entrer une adresse courriel valide");
		document.formmail.email.focus();document.formmail.email.value="";
	}
}

function saveMail_en() {
	email = document.formmail.email.value;
	//alert(email);
	//return false;
	lafonct = function() {
		if(ajaxOk()){
			//do nothing
		}
	}
	if(validMail(email)){
		callAjax(url+'script/addMail_en.php?mail='+email,null,lafonct);
		document.getElementById("lienmail").innerHTML = "";
		document.formmail.email.readOnly = true;
		document.formmail.email.value="Thanks!";
		//document.getElementById("email").size = 28;
	} else {
		alert("Please enter a valid email adress");
		document.formmail.email.focus();document.formmail.email.value="";
	}
}

function checkform(theform) {
	var tags = new Array("input","textarea");
	for (var k = 0; k < tags.length; ) {
		var ar = theform.getElementsByTagName(tags[k++]);
		var cc = null;
		for (var i = 0; i < ar.length;) {
			cc = ar[i++];
			var nfos;
			if (cc.getAttribute('obg')) {
				nfos = cc.getAttribute('obg');
				if (nfos!=0) {
					if (cc.value=="") {
						alert(cc.getAttribute("err"));
						cc.focus();
						return false;
					}
					else {
						var isValid;
						var oComments = '';
						switch(cc.getAttribute("special")) {
							case null : 
								isValid = true;
								break;
							case "email" : 	
								isValid = validMail(cc.value);
								oComments = "\nEx.: nom@site.com";
								break;
							case "date" :  	
								isValid = validDate(cc.value);
								oComments = "\nEx.: 1982-03-25";
								break;
							case "nospecial" :  
								isValid = validSpecial(cc.value);
								oComments = "\nCaract&egrave;res autoris&eacute;s : <strong>a-z</strong>, <strong>A-Z</strong>, <strong>0-9</strong>";
								break;
							case "numeric" :  	
								isValid = validNumeric(cc.value);
								oComments = "\nEx.: 0-9";
								break;
							case "money" : 
								isValid = validCurrency(cc.value);
								oComments = "\nEx.: 159 ou 1979.23";
								break;
						}
						if(!isValid){
							alert(cc.getAttribute("err")+oComments);
							cc.focus();
							return false;
						}
					}
				}
			}
		}
	}
	return true;
} 

function validMail(email) {
	var result = false
	var theStr = new String(email)
	var index = theStr.indexOf("@");
	if (index > 0) {
		var pindex = theStr.indexOf(".",index);
		if ((pindex > index+1) && (theStr.length > pindex+1)) result = true;
	}
	return result;
}

function validDate(dateaaaammjj) {
	var dt=dateaaaammjj.split("-"),date=new Date(dt[0],dt[1]-1,dt[2]);
	return date.getDate()==dt[2]&&date.getMonth()+1==dt[1]&&date.getFullYear()==dt[0]?date:false;
}

function validSpecial(fStr) {
	myReg = new RegExp("[A-Za-z0-9]+");
	if(myReg.exec(fStr)!=fStr) return false;
	return true;
}

function validNumeric(fStr) {
	myReg = new RegExp("[0-9]+");
	if(myReg.exec(fStr)!=fStr) return false;
	return true;
}

function validCurrency(fStr) {
	return RegExp(/^\$?\d+(\.\d{2})?$/).test(String(fStr).replace(/^\s+|\s+$/g, ""));
}

function buildPostData(form) {
	var returnData = "";
	var tags = new Array("input","textarea","select");
	for (var k = 0; k < tags.length; ) {
		var ar = form.getElementsByTagName(tags[k++]);
		var cc = null;
		for (var i = 0; i < ar.length;) {
			cc = ar[i++];
			if (cc.name != "" && cc.type != "file") {
				if (cc.getAttribute("type") == 'checkbox' || cc.getAttribute('type') == 'radio') {
					if (cc.checked != false) returnData += (returnData != "") ? "&" + cc.name + "=" + escape(cc.value) : cc.name + "=" + escape(cc.value);
				}
				else returnData += (returnData != "") ? "&" + cc.name + "=" + escape(cc.value) : cc.name + "=" + escape(cc.value);					
			}
		}
	}
	return returnData;
}

function callAjax(url,formToPost,fonct) {
	var postData = "";
	
		
		if (!('undefined' == typeof formToPost || formToPost == null)) {
			postData = buildPostData(formToPost);
		}
		if (window.XMLHttpRequest) {
			objAjax = new XMLHttpRequest();
			objAjax.onreadystatechange = fonct;
			if (postData != "") {
				objAjax.open("POST",url,true);
				objAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				objAjax.send(postData);
			}
			else {
				objAjax.open("GET",url,true);	
				objAjax.send(null);
			}
			
		}
		else if (window.ActiveXObject) {
			objAjax = new ActiveXObject("Microsoft.XMLHTTP");
			objAjax.onreadystatechange = fonct;
			if (postData != "") {
				objAjax.open("POST",url,true);
				objAjax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				objAjax.send(postData);
			}
			else {
				objAjax.open("GET",url,true);	
				objAjax.send();
			}
					
		}
		
		else {
			alert("Browser incompatible");
		}
		//alert('writing send');
	
	
}

function ajaxOk() {
	if (objAjax.readyState == 4) {
		//alert(objAjax.status);
		if (objAjax.status == 200) {
			
			return true;
		}
		else if (objAjax.status == 401) {
			//document.location.href = 'login.php';
			return false;
		}
		else if (objAjax.status == 403) {
			var err = objAjax.responseXML;
			objAjax = null;
			alert(err);
			return false;
		}
		else if (objAjax.status == 404) {
			//bypass le probleme d'enregistrement inexistant
			var err = objAjax.responseXML;
			objAjax = null;
			alert(err);
			return false;
		}
		else {
			var err = objAjax.responseXML;
			alert('erreur : '+objAjax.status);
			objAjax = null;
			alert(err);
			return false;
		}
 	}
	else return false;
}