/*
Merci à http://ejohn.org/projects/flexible-javascript-events/
*/
function addEvent( obj, type, fn ) {
   if ( obj.attachEvent ) {
     obj['e'+type+fn] = fn;
     obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
     obj.attachEvent( 'on'+type, obj[type+fn] );
   } else
     obj.addEventListener( type, fn, false );
 }
 function removeEvent( obj, type, fn ) {
   if ( obj.detachEvent ) {
     obj.detachEvent( 'on'+type, obj[type+fn] );
     obj[type+fn] = null;
   } else
     obj.removeEventListener( type, fn, false );
 }
function getFormValues(frm){
 var objForm;
 var submitDisabledElements=false;
 if(arguments.length > 1&&arguments[1]==true)
   submitDisabledElements=true;
 var prefix="";
 if(arguments.length > 2)
   prefix=arguments[2];
 if(typeof(frm)=="string")
   objForm=this.$(frm);
 else
   objForm=frm;
 
 var sXml="";
 
 if(objForm&&objForm.tagName=='FORM'){
  var formElements=objForm.elements;
  for(var i=0;i < formElements.length;i++){
   if(!formElements[i].name)
    continue;
   if(formElements[i].name.substring(0,prefix.length)!=prefix)
    continue;
   if(formElements[i].type&&(formElements[i].type=='radio'||formElements[i].type=='checkbox')&&formElements[i].checked==false)
    continue;
   if(formElements[i].disabled&&formElements[i].disabled==true&&submitDisabledElements==false)
    continue;
   
   var name=formElements[i].name;
   if(name){
    if(sXml!='')
     sXml+='&';
    if(formElements[i].type=='select-multiple'){
     for(var j=0;j < formElements[i].length;j++){
      if(formElements[i].options[j].selected==true)
       sXml+=name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";
     }
    } else {
     sXml+=name+"="+encodeURIComponent(formElements[i].value);
    }
   }
  }
 }
 sXml+="";
 return sXml;
}

function reload(form,json) {
 /**
  * Il va falloir reloader différentes parties
  * Egalement afficher les messages correspondants
  */

 var data = new Array();
 form.each (function(familyMember){
  switch(familyMember.type) {
   case 'radio':
    if(familyMember.checked == true) {
     data[familyMember.name] = familyMember.value;
    }
   break;
   case 'checkbox' :
    if(familyMember.checked == true) {
     if(!data[familyMember.name]) {
      data[familyMember.name] = new Array();
     }

     data[familyMember.name].push(familyMember.value);
    }
   break;
  }

 });

 if(data['tool_action']) {
  if(data['CheckThisRow[]']) {
   /*
    * On peut passer à l'action !!
    */

    switch(data['tool_action']) {
     case 'del' :
      /*
       * La suppression entraine l'effacement de la ligne de tableau
       */
      for (var i=0;i<data['CheckThisRow[]'].length;i++) {
       new Effect.Fade($('Row_'+data['CheckThisRow[]'][i] ),{duration:1, from:1.0, to:0.0})
      }
     break;
     case 'restor' :
      /*
       * La suppression entraine l'effacement de la ligne de tableau
       */
      for (var i=0;i<data['CheckThisRow[]'].length;i++) {
       new Effect.Fade($('Row_'+data['CheckThisRow[]'][i] ),{duration:1, from:1.0, to:0.0})
      }
     break;
     case 'edit' :
      wdth = (screen.availWidth*70)/100;
      hgth = (screen.availHeight*70)/100;

      for (var i=0;i<json.root.row.length;i++) {
       window.open('?mod=details&id='+json.root.row[i]+'&part=info',json.root.row[i],'location=no,menubar=yes,toolbar=no,status=no,scrollbars=1,resizable=1,width='+wdth+',height='+hgth+',top=20,left=20,screenx=0,screeny=0');
      }
     break;
     case 'statut_pay':
      for (var i=0;i<json.root.row.length;i++) {
       Element.removeClassName($('Row_'+json.root.row[i]), Element.classNames($('Row_'+json.root.row[i])));
       Element.addClassName($('Row_'+json.root.row[i]),'statut_pay_'+json.root.statut_pay);
      }
     break;
     case 'type_pay' :
      for (var i=0;i<json.root.row.length;i++) {
       Element.update($('method_payment_'+json.root.row[i]),
        '<img src="'+json.root.path+'/themes/admin/img/'+json.root.user[json.root.row[i]].data[0].typ_pay_icon+'" title="" alt="" class="method"/>');

      }
     break;
     case 'type_par' :
      for (var i=0;i<json.root.row.length;i++) {
       Element.update($('montant_'+json.root.row[i]),
        json.root.user[json.root.row[i]].data[0].montant_ht + ' HT&nbsp;(' + json.root.user[json.root.row[i]].data[0].montant_ttc + ' TTC)');

      }

     break;
    }
  }
 }

 /*
  * Traitement des messages
  */
 if(json.root.type != 'no') {
  if(json.root.type == 'error') box_type = 'error';
  if(json.root.type == 'complete') box_type = 'complete';
  Element.update($('info_box'), '<ul class="'+box_type+'" id="msg_box"><li>'+ json.root.msg +'</li></ul>');
  new Effect.Highlight($('msg_box'),{startcolor:'#FFEC70', duration:2,restorcolor:true});
  new Effect.Fade($('msg_box'),{duration:5, from:1.0, to:0.0});
  for (var i=0;i<json.root.row.length;i++) {
    new Effect.Highlight($('Row_'+json.root.row[i]),{startcolor:'#FFEC70', duration:2,restorcolor:true});
  }
 }
}

function selectAll(formName,toCheck,action) {
 // Sélectionne ou déselectionne tous les row de la page

 var check = $(formName).elements[toCheck];

 for(i=0;i<check.length;i++) {
  id = 'Row_' + check[i].id.substr(6,check[i].id.length-6);
  if(action == true) {
   check[i].checked = true;
   $(id).style.background = '#FFDFA4';
  } else if(action == false) {
   check[i].checked = false;
   $(id).style.background = '#ffffff';
  }
 }
}

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 