// fonction.js

// les deux fonctions suivantes ajoutent la propriété outerHTML pour Mozilla
var _emptyTags = {
   "IMG":   true,
   "BR":    true,
   "INPUT": true,
   "META":  true,
   "LINK":  true,
   "PARAM": true,
   "HR":    true
};

if(typeof(HTMLElement)!="undefined"){
	HTMLElement.prototype.__defineGetter__("outerHTML", function () {
	   var attrs = this.attributes;
	   var str = "<" + this.tagName;
	   for (var i = 0; i < attrs.length; i++)
		  str += " " + attrs[i].name + "=\"" + attrs[i].value + "\"";
	
	   if (_emptyTags[this.tagName])
		  return str + ">";
	
	   return str + ">" + this.innerHTML + "</" + this.tagName + ">";
	});
	
	HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
	   var r = this.ownerDocument.createRange();
	   r.setStartBefore(this);
	   var df = r.createContextualFragment(sHTML);
	   this.parentNode.replaceChild(df, this);
	});
}


 
/////////////////////////////////////////// AJAX ///////////////////////////////////
//
// fonction ajax principale
//
function getAjax(){ // initialise l'utilisation de l'ajax
 var Ajax = null;
 if(window.XMLHttpRequest) // Firefox et autres
  Ajax = new XMLHttpRequest(); 
 else if(window.ActiveXObject){ // Internet Explorer 
  try {Ajax = new ActiveXObject("Msxml2.XMLHTTP");} 
  catch (e) {Ajax = new ActiveXObject("Microsoft.XMLHTTP");}
 } else { // XMLHttpRequest non supporté par le navigateur 
  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  Ajax = false;
 } 
    return Ajax;
}
 
// [1] 
// fonction ajax avec requete
//
function loadAjax(div,page,vars){ 
 var Ajax = getAjax();
 // On définit ce qu'on va faire quand on aura la réponse
 Ajax.onreadystatechange = function(){
  // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  if(Ajax.readyState == 4 && Ajax.status == 200){
   retour = Ajax.responseText;
   // On met a jour la div transmise
   if(page!=''){
	   document.getElementById(div).innerHTML = retour;
	   //alert(document.getElementById(div).outerHTML);
   }else{document.getElementById(div).innerHTML = '';}
  } else {
   var chargement = '<br><font class=bleu12>chargement en cours...</font><br>&nbsp;';
   document.getElementById(div).innerHTML = chargement;
  }
 }
 // poste la page
 Ajax.open("POST",page,true);
 // ne pas oublier ça pour le post
 Ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 // arguments
 //var menu = document.getElementById('journee');
 //var journee = menu.options[menu.selectedIndex].value;
 Ajax.send(vars);
}

function loadAjax2(div,page,vars){ 
 var Ajax = getAjax();
 // On définit ce qu'on va faire quand on aura la réponse
 Ajax.onreadystatechange = function(){
  // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  if(Ajax.readyState == 4 && Ajax.status == 200){
   retour = Ajax.responseText;
   // On met a jour la div transmise
   if(page!=''){
	   document.getElementById(div).innerHTML = retour;
	   //alert(document.getElementById(div).outerHTML);
   }else{document.getElementById(div).innerHTML = '';}
  } else {
   var chargement = '<font class=bleu12>chargement en cours...</font>';
   document.getElementById(div).innerHTML = chargement;
  }
 }
 // poste la page
 Ajax.open("POST",page,true);
 // ne pas oublier ça pour le post
 Ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 // arguments
 //var menu = document.getElementById('journee');
 //var journee = menu.options[menu.selectedIndex].value;
 Ajax.send(vars);
}

// outerHTML au lieu de inner, pour les niceforms
function loadAjaxNice(div,page,vars){ 
 var Ajax = getAjax();
 // On définit ce qu'on va faire quand on aura la réponse
 Ajax.onreadystatechange = function(){
  // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  if(Ajax.readyState == 4 && Ajax.status == 200){
   retour = Ajax.responseText;
   // On met a jour la div transmise
   if(page!=''){
	   // spécial niceforms : on récupère les proppriété de style de l'ancienne balise
	   var styles = document.getElementById(div).style;
	   // on remplace le outer
	   document.getElementById(div).outerHTML = retour;
	   // on remet les styles
	   document.getElementById(div).style.width = styles.width;
	   document.getElementById(div).style.height = styles.height;
	   // comptage 
	   compteurVO();
   }else{document.getElementById(div).innerHTML = '';}
  } else {
   var chargement = '<span class=bleu12>chargement en cours...</span>';
   document.getElementById(div).innerHTML = chargement;
  }
 }
 // poste la page
 Ajax.open("POST",page,true);
 // ne pas oublier ça pour le post
 Ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 // arguments
 //var menu = document.getElementById('journee');
 //var journee = menu.options[menu.selectedIndex].value;
 Ajax.send(vars);
}


	
 
////////////////////////////////////// VOILAGE //////////////////////////////////////////
// [2] 
// fonction d'affichage d'un objet
//
function affiche(div) {
 document.getElementById(div).style.display='block';
}
//
function affiche2(div) {
 document.getElementById(div).style.display='inline';
}
//
// visibility au lieu de display
function affichev(div) {
 document.getElementById(div).style.visibility='visible';
}
// [3] 
// fonction de voilage d'un objet
//
function cache(div) {
 document.getElementById(div).style.display='none';
} 
//
// visibility au lieu de display
function cachev(div) {
 document.getElementById(div).style.visibility='hidden';
}
// [3bis] 
// fonction de voilage/affichage d'un objet
//
function alterne(div) {
 if(document.getElementById(div).style.display=='none'){document.getElementById(div).style.display='block';}
 else{document.getElementById(div).style.display='none';}
}  
// [4] 
// fonction d'affichage d'un objet PARENT
//
function p_affiche(div) {
 parent.document.getElementById(div).style.display='block';
}
// [5] 
// fonction de voilage d'un objet PARENT
//
function p_cache(div) {
 parent.document.getElementById(div).style.display='none';
}
 
//////////////////////////////////// CONTROLE CHAMP STANDARD ////////////////////////////
// [6] 
// fonction de controle d'un champ unique
//
// pré-requis : le nom des champs spéciaux doivent correspondre au tests effectués : 
// email (contrôle de cohérence),cp (5 chiffres),telephone (10 chiffres),login (6 char min),pass (6 char min)
// par défaut, on contrôle juste si le champ est vide
// 
// affichage du code erreur : une div doit être présente à côté de chaque champ avec un id comme 'ctl_email' par ex.
//
// ex d'utilisation : <input type="text" name="nom" id="nom" style="width:220px;" onBlur="controle_champ('inscription',this.name);"><span id="ctl_nom" class="rouge12"></span>
//
//////////////////////////////////// CONTROLE CHAMP STANDARD ////////////////////////////
// [6] 
// fonction de controle d'un champ unique
//
// pré-requis : le nom des champs spéciaux doivent correspondre au tests effectués : 
// email (contrôle de cohérence),cp (5 chiffres),telephone (10 chiffres),login (6 char min),pass (6 char min)
// par défaut, on contrôle juste si le champ est vide
// 
// affichage du code erreur : une div doit être présente à côté de chaque champ avec un id comme 'ctl_email' par ex.
//
// ex d'utilisation : <input type="text" name="nom" id="nom" style="width:220px;" onBlur="controle_champ('inscription',this.name);"><span id="ctl_nom" class="rouge12"></span>
   var a = Math.ceil(Math.random() * 10);
    var b = Math.ceil(Math.random() * 10);       
    var c = a + b
	
	
	
function controle_champ(form,champ){
	var d = document.getElementById('captcha').value;
	var test=document.forms[form].elements[champ].value;
	var span= 'ctl_'+champ;
	var valid=true;
	var message="";
	switch(champ) {
		case 'captcha':
		if(test=='' || d != c){valid=false;message='code non valide'; }
		
		
	
		
		break;
		case 'email':
			// test de l'email
			var atom = "[!#-'*+\\-\\/-9=?A-Z^-~]+";
			var regex_adresse = new RegExp("^"+atom+"(\\."+atom+")*@"+atom+"(\\."+atom+")*\\.[a-zA-Z]{2,4}$");
			if(test=='' || test.search(regex_adresse)!=0 || test.length>150){valid=false;message=' //// Email non valide';}
		break;
		case 'cp':
			if(isNaN(test) || test.length!=5){valid=false;message='code-postal non valide';}
		break;
		case 'tel':
			if(isNaN(test) || test.length!=10){valid=false;message='t&eacute;l&eacute;phone non valide';}
		break;
		case 'log':
			if(test.length<6){valid=false;message='login trop court';}
			else {check_login(test,span);}
		break;
		case 'pass':
			var login=document.forms[form].elements['log'].value
			if(test.length<6){valid=false;message='mot de passe trop court';}
			else if(test==login){valid=false;message='identique au login';}
		break;
		default:
			if(test==''){valid=false;message=' //// Champ obligatoire';}
		break;
	}
	if(valid==false){
		document.getElementById(span).className='rose12';
	} else{
		document.getElementById(span).className='grisF12';
		}
}

  
  // validation inscription
function valideform(form){
	
	controle_champ('inscription','nom');
	var nom =document.getElementById('ctl_nom').className;
	controle_champ('inscription','prenom');
	var prenom = document.getElementById('ctl_prenom').className;
	controle_champ('inscription','email');
	var email = document.getElementById('ctl_email').className;
	controle_champ('inscription','message');
	var message = document.getElementById('ctl_message').className;
	controle_champ('inscription','captcha');
	var captcha = document.getElementById('ctl_captcha').className;
	
	// variable de controle
	var valide = true;
	// controles
	if(nom!='grisF12' || prenom!='grisF12' || email!='grisF12' || message!='grisF12' || captcha!='grisF12') {valide = false;}
	 
    if(valide==false){
		document.getElementById('message_form').innerHTML = '<br><b>Impossible de valider le formulaire.<br>Veuillez corriger les champs comment&eacute;s.'; return false;
	} else {document.getElementById('message_form').innerHTML = ''; return true;} 
}



//function affiche(zone){
	
	//if(previousDIV!=''){
	//document.getElementById(previousDIV).style.display="none";
	//}
	//document.getElementById(zone).style.display="block";
	// previousDIV=zone;
//}

function voir(zone){
	
	if(previousDIV!=''){
	document.getElementById(previousDIV).style.display="none";
	}
	document.getElementById(zone).style.display="block";
	 previousDIV=zone;
}



function montre(zone){
	
	if(previousZON!=''){
	document.getElementById(previousZON).style.display="none";
	}
	document.getElementById(zone).style.display="block";
	 previousZON=zone;
}

function ouvre(zone){
	
	if(previousDRT!=''){
	document.getElementById(previousDRT).style.display="none";
	}
	document.getElementById(zone).style.display="block";
	 previousDRT=zone;
}

function developpe(zone){
	
	if(previousTXT!=''){
	document.getElementById(previousTXT).style.display="none";
	}
	document.getElementById(zone).style.display="block";
	 previousTXT=zone;
}

function masque(zone){
document.getElementById(zone).style.display='none'
}