/*===============================================================
	Valider le formulaire lors de l'envoi d'une note !
	* Sorry, le code n'est pas très propre..
	Laurent Constantin - 02.06.2006 11:13
===============================================================*/

///// HostName utilisé pour sauver le cookie
var hostName = '.typepad.com';
var hasChanged = 0;
var f;

//// Lorsqu'on modifie un champ, on active le bouton envoyé
function handleChange (e) {
    hasChanged = 1;
    var f =  getForm();
    enabledButton(f.elements["post"]);
}

//// Si on coche "Se souvenir de mon profil", on sauve les cookies. Sinon on efface le formulaire et les cookies.
function handleCheck (e) {
    if (hasChanged) return;
    var f = getForm();
    if (e.checked)
        setFormValues(f);
    else
        unsetFormValues(f);
}

//// Pas d'erreur dans le formulaire pour le moment
var error = false;
function erreur(msg){
	error = true;
	/*
	DEBUG
		if(!msg)return;
		b = document.getElementById( "Erreur_box" );
		if(b){ b.innerHTML = b.innerHTML + "<div>" + msg.toString() + "</div>";	}else{	alert(msg);}
	*/
}
//// Efface le formulaire
function unsetFormValues (f) {
    f.elements['author'].value = '';
    f.elements['email'].value = '';
    f.elements['url'].value = '';
}

/*==============================
	Gestion des cookies
==============================*/
function setCookie (name, value, expires) { document.cookie = name + '=' + escape(value) + '; expires=' + expires.toGMTString() + '; domain=' + hostName + '; path=/'; }
function getCookie (name) { var key = name + '='; var c = document.cookie; var i = c.indexOf(key);	if (i < 0) return '';   var j = c.indexOf(';', i + key.length);   if (j < 0) j = c.length;   return unescape(c.substring(i + key.length, j));}
function deleteCookie (name) { if (getCookie(name))setCookie(name, '', new Date(70, 0, 1, 0, 0, 1));}
////// Sauve le formulaire dans un cookie
function rememberMe (f) {
    var now = new Date();
    now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
    if( f.elements['author'] )
    	setCookie('typepadauthor', f.elements['author'].value, now);
    if( f.elements['email'] )
    	setCookie('typepademail', f.elements['email'].value, now);
    if( f.elements['url'] )
    	setCookie('typepadurl', f.elements['url'].value, now);
}
/////Efface les cookies
function forgetMe () {
    deleteCookie('typepadauthor');
    deleteCookie('typepademail');
    deleteCookie('typepadurl');
}
//// Restaure les cookies dans le formulaire
function setFormValues (f) {
    var val = getCookie("typepadauthor");
    if( f.elements['author'] && !f.elements['author'].value && val)
    	f.elements['author'].value = val;
    val = getCookie("typepademail");
    if( f.elements['email'] && !f.elements['email'].value && val)
    	f.elements['email'].value = val;
    val = getCookie("typepadurl");
    if( f.elements['url'] && !f.elements['url'].value && val)
    	f.elements['url'].value = val;
    if(f.elements['bakecookie'])f.elements['bakecookie'].checked = 1;
}
/*===========================
	GO
==========================*/


///// check l'email passé en commentaire. Renvoie true si l'adresse est valide. False Sinon..
/////SOURCE: http://actuel.fr.selfhtml.org/articles/programmation/email/
function emailCheck(email) {
	if (email ==''){return false;}
	var proto  = "(mailto:)?";
	var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
	var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
	var regex  = "^" + proto + "?" + usr + "\@" + domain + "$";
	var rgx    = new RegExp(regex);
	var reponse= rgx.exec(email) ? true : false;
	return reponse;
}
///// Retourne l'objet formulaire DOM.
function getForm(){
	if(f=document.forms['comments_form'])return f; 
	if(f=document.getElementById( "comments_form" ))return f; 
	if(f=document.comments_form)return f; 
	return false;
}
//// desactive le bouton spécifié ! 
function disableButton (e) { e.disabled = true; }
//// Active le bouton spécifié ! 
function enabledButton (e) { e.disabled = false;}
//// DEBUG
function trace(msg){ alert(msg);return false;}

//// Lors de l'envoi du formulaire...
function validerForm(){
	f = getForm();
	error = false;
	///// on efface les cookies si il ne faut pas se souvenir du profil
	if(f.elements['bakecookie'] && ! f.elements['bakecookie'].checked){ forgetMe();	}
	///// Check les champs.
	if(! f.elements['email'].value || f.elements['text'].value.length==0 || emailCheck(f.elements['email'].value)==false){erreur("Email invalide");}
	if(! f.elements['author'].value|| f.elements['text'].value.length==0){erreur("Entrer un Nom");}
	if(! f.elements['text'].value || f.elements['text'].value.length==0){erreur("Entrer un Commentaire");}
	
	
	/////Check URL
	var urlstring = f.elements['url'].value;
	/// url existe
	if(urlstring.length != 0){ if(urlstring.indexOf("http://")!=0 || urlstring.length < 11){erreur("Entrer une URL Valide");urlstring="http://";} }
	
	///// Reponse = true si il n'y a pas eu d'erreur !
	var rep = !error;
	if(! rep){
		alert("Le formulaire ne semble pas valide, merci de le compléter correctement !");
	}else{
		//// on sauve les valeures dans un cookie, si la case est cochée
		if(f.elements['bakecookie'] &&  f.elements['bakecookie'].checked){ rememberMe(f);}
		//// on desactive le bouton pendant que le formulaire s'envoie..
		disableButton(f.elements['post'])
	}
	//// si retourn TRUE: envoi du formulaire. Sinon le formulaire n'est pas envoyé
	return rep;
}
///// Lors du chagement de la page
function applyValues(){
	var f = getForm();
	if(!f)return;
	//// Si les cookies existent, on charge les valeures dans le formulaire..
	if(getCookie("typepadauthor") || getCookie("typepademail") || getCookie("typepadurl")){	setFormValues(f);}
	//// on supprime le code par defaut du bouton Envoyer
	f.elements['post'].onclick=function(){};
	//// on applique la fonction de validation au formulaire si il existe
	f.onsubmit =  function() {return validerForm();}
}
window.onload = applyValues;
