// =============================================================================
// ================================ FORMULAIRE  ================================
// =============================================================================
// ====== Réalisé par Thomas Chiroux (www.chiroux.com)
// ======
// ====== v1.0 
// ======       
// ====== Dernières modif : 24/05/2006 : v1.0      
// =============================================================================

// ==================================================================================================
function getCookieVal(offset) {
  endstr=document.cookie.indexOf (";", offset);
  if (endstr==-1) endstr=document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr)); 
}

// ==================================================================================================
function LireCookie(nom) {
  arg=nom+"=";
  alen=arg.length;
  clen=document.cookie.length;
  i=0;
  while (i < clen)
  {
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
      i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return null; 
}

// ==================================================================================================
function EcrireCookie(nom,valeur,dureejour) {
	if (dureejour)
	{
		date = new Date();
		date.setTime(date.getTime()+(dureejour*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	else expires = "";
	document.cookie = nom+"="+valeur+expires+"; path=/";
}

// ==================================================================================================
function callBackResultatUpdate(obj) {
    // récupère le nom du champ objet de la requete XHR 
    nomchamp = obj.responseXML.getElementsByTagName('champ').item(0).firstChild.nodeValue;

	  // Récupère l'element qui correspond au champ en utilisant prototype
	  element = $(nomchamp);
	  
	  // recupère le statut de la requete le si le statut est KO, le message d'erreur
    statut = obj.responseXML.getElementsByTagName('c_statut').item(0).firstChild.nodeValue;
    
    if (statut!="OK") { // le resultat est NOK
      if (nomchamp == 'validation') { // l'appel était un appel à valider le formulaire
        writediv(obj.responseXML.getElementsByTagName('c_message').item(0).firstChild.nodeValue);
        
        tagslist = obj.responseXML.getElementsByTagName('c_erreurchamp');
        tagslistlen = tagslist.length;
      
        for (var i=0; i<tagslistlen; i++){
           $(tagslist[i].getElementsByTagName('nomchamp').item(0).firstChild.nodeValue).parentNode.className='erreur';
            
           // TODO : écrire le message d'erreur détaillé dans un div dans la boite associée au champ en erreur 
        }
        
      } else { // l'appel était 'juste' un update de field
        if(element) element.parentNode.className= 'erreur';
        writediv(obj.responseXML.getElementsByTagName('c_message').item(0).firstChild.nodeValue);
      }
    } else {
      if(element) element.parentNode.className= 'noerreur';
      writediv('');
      if (nomchamp == 'validation') { // c'était une validation : on quitte
        alert("Merci d'avoir participé"); // TODO : faire mieux.
        EcrireCookie(gs_Cookie_name,'',-1);
        //location.reload(true);
        window.location.replace(gs_Redirect_url) ;
      }
    }
}

// ==================================================================================================
function callBackAjaxFailure(obj, e) {
  writediv('ERREUR AJAX : ajax failure : '+e.message);
}

// ==================================================================================================
function callBackAjaxExc(obj, e) {
  writediv('ERREUR AJAX : exception : '+e.message);
}

// ==================================================================================================
function callAjax(p_nom, p_texte) {
  url=gs_Base_url+'bdd_updatefield.php';
  currentTime = new Date();
  idsession = LireCookie(gs_Cookie_name);
  params = 'champ='+p_nom+'&valeur='+p_texte+'&idsession='+idsession+'&zztimestamp='+currentTime.getTime();
//document.write(params);
  // Request AJAX utilisant l'objet de prototype
  myAjax = new Ajax.Request( url, { method: 'post', parameters: params, onComplete: callBackResultatUpdate, onFailure: callBackAjaxFailure, onException: callBackAjaxExc });

}
// ==================================================================================================
function VerifAndWriteTextePrototype(obj) {
  // the element that triggered the event
  element = Event.element(obj); 
  nom=element.name;
	texte=element.value;
 
  callAjax(nom, texte);
}

// ==================================================================================================
function VerifAndWriteRadioPrototype(obj) {
  // the element that triggered the event
  element = Event.element(obj); 
  nom=element.name;
	texte=element.value;
 
  callAjax(nom, texte);
}

// ==================================================================================================
function VerifAndWriteSelectPrototype(obj) {
  // the element that triggered the event
  element = Event.element(obj); 
  
  var opts = element.options;
  // check for the selected option (default to the first option)
  for (var i=0; i<opts.length; i++) {
    var selectedOpt;
    if (opts[i].selected) {
      selectedOpt = i;
      break; // we found the selected option, leave the loop
    } else {
      selectedOpt = 0;
    }
  }
  
  nom=element.name;
	texte=opts[selectedOpt].value;
  callAjax(nom, texte);
}

// ==================================================================================================
function VerifAndWriteCheckBoxPrototype(obj) {
  // the element that triggered the event
  element = Event.element(obj); 

  if (element.checked == true) {
    element.value='1'; 
  } else { 
    element.value='0'; 
  }

  nom=element.name;
	texte=element.value;
 
  callAjax(nom, texte);
}

// ==================================================================================================
function SubmitFormulaire(obj) {

  // the element that triggered the event
  element = Event.element(obj); 
  
  if(element) {
    if (element.name == "validation") {
      callAjax('validation', '1');  
    } else if  (element.name == "reset") {
        input_box=confirm("Êtes vous sûr de vouloir annuler la saisie de ce formulaire ?");
        if (input_box==true)
        { 
          //element.value="reset";
          EcrireCookie(gs_Cookie_name,'',-1);
          //element.nodeValue="reset";
          location.reload(true);
        }
    }
  }
}

// ==================================================================================================
// === FIN ==========================================================================================

