/**
 * Fichier fonction principal
 * Version 1.3
 * Derniere maj : jc
 * Date mise à jour : 08/02/2010 
 */
 
/*
 * Variables du formulaires
 */

/* variable pour le catchpa javascript */
var a = Math.ceil(Math.random() * 5);
var b = Math.ceil(Math.random() * 5);       
var c = a + b;

/* image pour faire patienter pendant le chargement ajax */
var img_loading_ajax = "_view/js/lightbox/img/lightbox-ico-loading.gif";

/**
 * Declaration de l'objet Ajax
 * @return
 */
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;
}
 

/**
 * Load ajax avec requete
 * @param div
 * @param page
 * @param vars
 * @return
 */
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;
   }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);
}
/**
 * chargement page dans div ajax sans requete
 * @param page : id de la page a charger
 * @param div : id de la div
 * @return
 */
function chargement_page(page,div)
{    
	var xhr = getAjax();
    xhr.onreadystatechange  = function()
    {
		//if(document.getElementById(div)){document.getElementById(div).innerHTML="chargement ... ";}
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200){document.getElementById(div).innerHTML = xhr.responseText; }
              else { document.getElementById(div).innerHTML = xhr.status; }
         }
    }; 
   xhr.open("GET",page,  true); 
   xhr.send(null);
}

/*
 *  - -  VOILAGE / AFFICHAGE  - -
 */ 


/**
 * fonction d'affichage d'un objet avec display
 * @param div
 */
function affiche(div)
{
	document.getElementById(div).style.display='block';
}
/**
 * fonction d'affichage d'une div avec display et inline
 * @param div
 */
function affiche2(div)
{
	document.getElementById(div).style.display='inline';
}
/**
 * Fonction d'affichage avec visibility 
 * @param div
 */
function affichev(div) 
{
	document.getElementById(div).style.visibility='visible';
}
/**
 * Fonction pour cacher une div avec display
 * @param div
 * @return
 */
function cache(div)
{
	document.getElementById(div).style.display='none';
} 
/**
 * Fonction pour cacher une div avec visibility
 * @param div
 * @return
 */
function cachev(div)
{
	document.getElementById(div).style.visibility='hidden';
}
/**
 * Fonction de voilage/affichage d'une div avec display
 * @param div
 * @return
 */
function alterne(div)
{
	if(document.getElementById(div).style.display=='none'){document.getElementById(div).style.display='block';}
	else{document.getElementById(div).style.display='none';}
}  
/**
 * Fonction d'affichage d'un objet parent avec display
 * @param div
 * @return
 */
function p_affiche(div) {
 parent.document.getElementById(div).style.display='block';
}
/**
 * Fonction de voilage d'une objet parent avec display
 * @param div
 * @return
 */
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>
//

// préliminaire : fonction DrawBotBoot pour captcha de calcul

/**
 * Fonction de calcul pour le catchpa
 */
function DrawBotBoot()
{
	document.write(""+ a + " + " + b +" ? ");
}    

/**
 * Fonction de controle des champs, necessite l'utislisation du fichier : controle.js
 * @param form
 * @param champ
 * @return
 */
function controle_champ(form,champ){
 var test=document.forms[form].elements[champ].value;
 var span= 'ctl_'+champ;
 var valid=true;
 var message="";
 switch(champ) {
  case 'captcha':
   if(test=='' || test != 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';}
   // else { valid = check_email(test,span); alert(valid);} //-> pas beoin de vérification en base
  break;
  case 'email1':
   // 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';}
   //else {check_email(test,span);} -> pas beoin de vérification en base
  break;
  case 'email2':
   // 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';}
   //else {check_email(test,span);} -> pas beoin de vérification en base
  break;
  case 'cp':
   if(isNaN(test) || test.length!=5){valid=false;message='code-postal non valide';}
  break;
  case 'telephone':
   if(isNaN(test) || test.length!=10){valid=false;message='t&eacute;l&eacute;phone non valide';}
  break;
  case 'login':
   if(test.length<5){valid=false;message='login trop court';}
   //else {check_login(test,span);} -> pas beoin de vérification en base
  break;
  case 'mdp':
  case 'pass':
   if(typeof(document.forms[form].elements['log'])!="undefined"){
	   var login=document.forms[form].elements['log'].value;
	   valid=false;message='identique au login';
   }
   if(test.length<6){
	   valid=false;message='mot de passe trop court';
	   // special schuller
	   affiche('passcomments');
   } else{ cache('passcomments');
	   }
  break;
  case 'pass2': 
  case 'mdp2':
	   if(typeof(document.forms[form].elements['pass'])!="undefined"){
		  var pass=document.forms[form].elements['pass'].value;
		  //alert(test.value);
		  if(pass != test)
		  {
			  valid=false;message='mot de passe different !';
			   affiche('pass2comments');
		  }
		  else
		  {
			 cache('pass2comments');
		  }
	   }
	  break;
  default:
   if(document.forms[form].elements[champ].type == 'select-one'){
	   var champ_temp = document.forms[form].elements[champ];
	   if(champ_temp.options[champ_temp.selectedIndex].value == ""){valid=false; message='champ obligatoire';}
   } else if (document.forms[form].elements[champ].length>1){
	   var champ_temp = document.forms[form].elements[champ];
	   var validTemp = false;
	   for(var j=0; j<champ_temp.length;j++){
		   if((champ_temp[j].type == "radio" || champ_temp[j].type  == "checkbox") && champ_temp[j].checked == true){validTemp=true;}
	   }
	   if(validTemp == false){valid=false; message='champ obligatoire';}
   } else if (test == "" && document.forms[form].elements[champ].type != "radio" && document.forms[form].elements[champ].type != "checkbox"){
	   valid=false;message='champ obligatoire';
   } else  if((document.forms[form].elements[champ].type == "radio" || document.forms[form].elements[champ].type  == "checkbox") && document.forms[form].elements[champ].checked == false){
       valid=false;message='champ obligatoire';
   }
  break;
 }

 if(valid==false){
  //document.getElementById(span).innerHTML='&nbsp;&nbsp;'+message;
	
  if(document.getElementById(span).className.indexOf('alerte')==-1){document.getElementById(span).className+=" alerte";}
 } 
 else{  
  //document.getElementById(span).innerHTML='';
  document.getElementById(span).className=document.getElementById(span).className.replace('alerte','');
 }
 return valid;
}


/**
 * récupération en JS des éléments d'un formulaire puis transmission ajax à page pour mise à jour de div
 * attention : récupère seulement les input, pas les textarea ni les select...
 * @param formname
 * @param page
 * @param div : id de la div
 * @return
 */
function form_data(formname,page,div){
	var form = document.forms[formname];
	var data = "";
	// on récupère les input du formulaire
	var inputs = document.getElementsByTagName("input");
	// on les traite pour préparer la requete ajax
	for (var i = 0; i < inputs.length; i++){

		if(inputs[i].type == "checkbox"){
			var checkbox = form.elements[inputs[i].name];
			var datac = "";
			if(checkbox.length>1){
				for(var j = 0;j<checkbox.length;j++){
					alert(checkbox[j].checked);
					if(checkbox[j].checked == true){
						if (datac != ""){
							datac += "|";
						}
						datac += checkbox[j].value;
						alert(checkbox[j].value);
					}
				}
				if (data != ""){
					data += "&";
				}
				data += inputs[i].name + "=" + datac;
				i = i+(checkbox.length - 1);
			} else {
				if(checkbox.checked == true){
					if (datac != ""){
						datac += "|";
					}
					datac += checkbox.value;
					alert(checkbox.value);
				}
				if (data != ""){
					data += "&";
				}
				data += inputs[i].name + "=" + datac;
				i = i+1;
			}
		} else if(inputs[i].type == "radio"){
			if(inputs[i].checked == true){
				if (data != ""){
					data += "&";
				}
				data += inputs[i].name + "=" + inputs[i].value;
			}
		} else {
			if (data != ""){
				data += "&";
			} 
			data += inputs[i].name + "=" + inputs[i].value;
		}
	}
	alert(data);
	// transmission ajax
	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!=''){
				// on remplace
				document.getElementById(div).innerHTML = retour;
			}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
	Ajax.send(data);
}
/**
 * Fonction qui permet de posté un formulaire en ajax, la reponse est réaffiché dans la page ajax ou etait le form
 * Fonctionnement avec checkbox a revoir
 * @param page : page de destination ou est poste le form
 * @param zone : id de la div ou objet dans lequel est le form
 * @param nomForm : nom du formulaire
 * @return
 */
function post_form(page,zone,nomForm)
{
	var xhr = getAjax();
    xhr.onreadystatechange  = function()
    { 	
		document.getElementById(zone).innerHTML="<br /><center><img src='"+img_loading_ajax+"' boder=0><center><br />";
        if(xhr.readyState  == 4)
        {
			if(xhr.status  == 200)
			{    
				document.getElementById(zone).innerHTML = xhr.responseText; 
            }
			else
			{
				document.getElementById(zone).innerHTML = "Page: " + page + xhr.status;
			}
		}
    };
	var sendTitre='';
	for(i=0 ; i < document.forms[nomForm].length ; i++)
	{
		if(i != 0){sendTitre += "&";}
		if(document.forms[nomForm].elements[i].type == "radio")
		{
			if(document.forms[nomForm].elements[i].checked == true)
			{
				sendTitre += document.forms[nomForm].elements[i].name + "=" + document.forms[nomForm].elements[i].value;
			}
		}
		else
		{
			sendTitre += document.forms[nomForm].elements[i].name+"="+document.forms[nomForm].elements[i].value;
		}
	}
	xhr.open("POST",page,  true); 
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send(sendTitre);
}

/**
 * Effets Jquery
 */
/**
 * Fonction permettant de slider une div (monter / descendre) exemple pour menu
 */
function Slide(div)
{
	if( $('#'+div).css("display") == "none")
	{	
		$('#'+div).slideDown("fast"); 
	} 
	else 
	{ 
		$('#'+div).slideUp("fast"); 
	}
}







