/**
* 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;
}
function checkmyapercu (myinput,mylevel,myn) //permet de renvoyer les defaulvalue sur les li
{
 
 var val;
 var valprec;
 globaltab2=1;
 globaltab2bigrefresh=1;
 var valprec2=$(myinput).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(0).children(".multiselect").val();
 
 var pos0;
 var posprec;
 var posprec2=$.inArray(parseInt(valprec2), paramdata[myname]["ordre"][0]);	
 if (posprec2==-1)
 {
  posprec2=$.inArray(valprec2, paramdata[myname]["ordre"][0]);	
 }
 
 if (mylevel == 0)
 { 
 
   $(".data2").find('.ischecked'+String(myn)).removeClass('ischecked'+String(myn));
  
  if (posprec2 >=0)
  {
   $(".firstli").eq(posprec2).children("ul").eq(0).children("li").addClass('ischecked'+String(myn));
  }
  else
  {
     $(".0li").addClass('ischecked'+String(myn));
  }
 }
 if (mylevel == 1)
 {
	valprec=$(myinput).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(1).children(".multiselect").val(); 
	posprec=$.inArray(parseInt(valprec), paramdata[myname]["ordre"][1][valprec2]);
	if (posprec == -1)
	{
     posprec=$.inArray(valprec, paramdata[myname]["ordre"][1][valprec2]);		
	}
	$(".secondli").map(function(){$(this).children("ul").eq(0).find('.ischecked'+String(myn)).removeClass('ischecked'+String(myn));});
	if (posprec >=0)
	{
	 $(".firstli").eq(posprec2).children("ul").eq(1).children("li").eq(posprec).children("ul").eq(0).children("li").addClass('ischecked'+String(myn));
	}
	
 }
 if (mylevel == 2)
 {
   valprec=$(myinput).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(1).children(".multiselect").val(); 
   posprec=$.inArray(parseInt(valprec), paramdata[myname]["ordre"][1][valprec2]);
   if (posprec == -1)
	{
     posprec=$.inArray(valprec, paramdata[myname]["ordre"][1][valprec2]);		
	}
   val=$(myinput).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(2).children(".multiselect").val();
   pos0=$.inArray(parseInt(val), paramdata[myname]["ordre"][2][valprec]);
   if (pos0 == -1)
   {
	  pos0=$.inArray(val, paramdata[myname]["ordre"][2][valprec]);
   }
   $(".third").map(function(){$(this).find('.ischecked'+String(myn)).removeClass('ischecked'+String(myn));});
   if (pos0 >=0)
   {
   $(".firstli").eq(posprec2).children("ul").eq(1).children("li").eq(posprec).children("ul").eq(1).children("li").eq(pos0).addClass('ischecked'+String(myn));
   }
 }
 
}
function showdetailagent(paramdata,numagent)
{
  var agent=paramdata[3][numagent];
  var siteimg=paramdata[5][paramdata[4][numagent]][0];
  var sitetxt=paramdata[5][paramdata[4][numagent]][1];
  var cheftxt=paramdata[5][paramdata[4][numagent]][2];
  var chefimg=paramdata[5][paramdata[4][numagent]][3];
  $("#agent").html("<table width=\"415\" border=\"0\"><tr><td width=\"228\"><img src=\"wp-content/themes/Minimal/images/"+numagent+".jpg\" /></td><td width=\"177\" align=\"left\" valign=\"bottom\"><img src=\"wp-content/themes/Minimal/images/"+siteimg+".jpg\"  /></td></tr><tr><td><strong>"+agent+"</strong></td><td>&nbsp;</td></tr><tr><td>cet agent est contactable au poste de </td><td><strong>"+siteimg+"</strong></td></tr><tr><td>&nbsp;</td><td rowspan=\"4\">"+sitetxt+"</td></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr><tr><td height=\"200\"><div align=\"right\">Chef poste :</div></td><td><p align=\"left\"><img src=\"wp-content/themes/Minimal/images/"+chefimg+".jpg\" width=\"120\" height=\"180\" /></p><p align=\"left\"><strong>"+cheftxt+"</strong></p></td></tr></table>");
	
}
function multiselectchange (paramarray,input,inputlevelmax) 
{
 
 var i=$(input).val();
  var size = $(input).attr("size");
  var name=$(input).attr("name");
  var j=0;
  var numagent;
  var agent;
  var combo = "";
  var paramdatax = new Array();
  var namearray= new Array();
  namearray=name.split("_");
  paramdatax = paramarray;
  
  var level = parseInt(namearray[1]);
  var styleselectnext = $(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level+1).children(".multiselect").attr("style");
  var styleselectnext2;
  var n=parseInt(namearray[2]);
  var myparamdata = Array();
  var myparamdata2;
  var myparamdataordre = Array();
  if ($(input).parent(".groupselectchild").parent("div").parent(".input").parent(".valchamp").parent(".inputbox").parent("div").attr("id") == "defaultvalue")
  {
    checkmyapercu(input,level,n) // permet d'envoyer les defaultvalue sur les li
  }
 
  if (inputlevelmax > level)
  {
  if (level==0)
  {
  if (i > 0)
  {
  myparamdataordre = paramdatax["ordre"][level+1][i];
  }
  else
  {
   myparamdataordre = new Array();
  }
  myparamdata = paramdatax[level+1];
  namenext=namearray[0]+"_"+String(level+1)+"_"+String(n);
  if (inputlevelmax == 2)
  {
   namenext2=namearray[0]+"_"+String(level+2)+"_"+String(n);
   styleselectnext2 = $(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level+2).children(".multiselect").attr("style");

  }
  else
  {
   styleselectnext2="";
   namenext2="";
  }
  }
  
  if (level==1)
  {
  nameprev=namearray[0]+"_"+String(level-1)+"_"+n;
  namenext=namearray[0]+"_"+String(level+1)+"_"+n;
  
  j=$(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level-1).children(input).val();
  if (i >0)
  {
  myparamdataordre = paramdatax["ordre"][level+1][i];
  myparamdata = paramdatax[level+1];
  }
  else
  {
  myparamdataordre = new Array();
  
  }
  
  }
  j=0;
  
  combo="<select class=\"multiselect\" style=\""+styleselectnext+"\" name=\""+namenext+"\" size=\""+size+"\">";  
  if (myparamdataordre[0] == undefined)
  {
   combo=combo+"<option value=\"0\">"+paramdatax[level+1][0]+"</option>";
  }
  else
  {
   combo=combo+"<option value=\"0\">"+paramdatax[level+1][0]+"</option>";
  }
 
  while(myparamdataordre[j] != undefined)
  {
   combo=combo+"<option value=\""+myparamdataordre[j]+"\">"+myparamdata[myparamdataordre[j]]+"</option>" 
   j++;
  }
  combo=combo+"</select>";
  
  $(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level+1).html(combo);
  $(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level+1).children(".multiselect").change(function () {
 
  multiselectchange(paramarray,this,inputlevelmax);});
  if (namenext2 != "")
  {
  combo="<select class=\"multiselect\" style=\""+styleselectnext2+"\" name=\""+namenext2+"\" size=\""+size+"\"><option value=\"0\"><-</option></select>";  
  $(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level+2).html(combo);
 
  }
  
  } // end if levelmax > level
  else  // on est dans le dernier combo
  {
	//valeur précedente
	j=$(input).parent(".groupselectchild").parent("div").children(".groupselectchild").eq(level-1).children(input).val();
	
	numagent=paramdatax[2][i];

	if ($("#radar").is("div"))
	{
	 agent=paramdatax[3][numagent];	
	 $("#agent").html("<table width=\"130\" border=\"0\"><tr><td width=\"124\"><a href=\"index.php?page_id=138&i="+i+"&j="+j+"&num="+numagent+"\"><img src=\"wp-content/themes/Minimal/images/"+numagent+".jpg\" width=\"80\" height=\"120\" ></a></td></tr><tr><td>"+agent+"</td></tr></table><a class=\"readmore\" href=\"index.php?page_id=138&i="+i+"&j="+j+"&num="+numagent+"\"><span>En savoir plus...</span></a>");
	}
	else
	{
	 showdetailagent(paramdatax,numagent);
	}
  }
 }
   

function multiselect (paramarray,input,levelmax,maxn)
{

$(input).find(".multiselect").change(function (){
		 
         multiselectchange(paramarray,this,levelmax);
	});
}

        jQuery.extend({
	         unserialize: function (data){
    // Takes a string representation of variable and recreates it  
    // 
    // version: 810.114
    // discuss at: http://phpjs.org/functions/unserialize
    // +     original by: Arpad Ray (mailto:arpad@php.net)
    // +     improved by: Pedro Tainha (http://www.pedrotainha.com)
    // +     bugfixed by: dptr1988
    // +      revised by: d3x
    // +     improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %            note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %            note: Aiming for PHP-compatibility, we have to translate objects to arrays 
    // *       example 1: unserialize('a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}');
    // *       returns 1: ['Kevin', 'van', 'Zonneveld']
    // *       example 2: unserialize('a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}');
    // *       returns 2: {firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'}
    
    var error = function (type, msg, filename, line){throw new window[type](msg, filename, line);};
    var read_until = function (data, offset, stopchr){
        var buf = [];
        var chr = data.slice(offset, offset + 1);
        var i = 2;
        while(chr != stopchr){
            if((i+offset) > data.length){
                error('Error', 'Invalid');
            }
            buf.push(chr);
            chr = data.slice(offset + (i - 1),offset + i);
            i += 1;
        }
        return [buf.length, buf.join('')];
    };
    var read_chrs = function (data, offset, length){
        buf = [];
        for(var i = 0;i < length;i++){
            var chr = data.slice(offset + (i - 1),offset + i);
            buf.push(chr);
        }
        return [buf.length, buf.join('')];
    };
    var _unserialize = function (data, offset){
        if(!offset) offset = 0;
        var buf = [];
        var dtype = (data.slice(offset, offset + 1)).toLowerCase();
        
        var dataoffset = offset + 2;
        var typeconvert = new Function('x', 'return x');
        var chrs = 0;
        var datalength = 0;
        
        switch(dtype){
            case "i":
                typeconvert = new Function('x', 'return parseInt(x)');
                var readData = read_until(data, dataoffset, ';');
                var chrs = readData[0];
                var readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case "b":
                typeconvert = new Function('x', 'return (parseInt(x) == 1)');
                var readData = read_until(data, dataoffset, ';');
                var chrs = readData[0];
                var readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case "d":
                typeconvert = new Function('x', 'return parseFloat(x)');
                var readData = read_until(data, dataoffset, ';');
                var chrs = readData[0];
                var readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case "n":
                readdata = null;
            break;
            case "s":
                var ccount = read_until(data, dataoffset, ':');
                var chrs = ccount[0];
                var stringlength = ccount[1];
                dataoffset += chrs + 2;
                
                var readData = read_chrs(data, dataoffset+1, parseInt(stringlength));
                var chrs = readData[0];
                var readdata = readData[1];
                dataoffset += chrs + 2;
                if(chrs != parseInt(stringlength) && chrs != readdata.length){
                    error('SyntaxError', 'String length mismatch');
                }
            break;
            case "a":
                var readdata = {};
                
                var keyandchrs = read_until(data, dataoffset, ':');
                var chrs = keyandchrs[0];
                var keys = keyandchrs[1];
                dataoffset += chrs + 2;
                
                for(var i = 0;i < parseInt(keys);i++){
                    var kprops = _unserialize(data, dataoffset);
                    var kchrs = kprops[1];
                    var key = kprops[2];
                    dataoffset += kchrs;
                    
                    var vprops = _unserialize(data, dataoffset);
                    var vchrs = vprops[1];
                    var value = vprops[2];
                    dataoffset += vchrs;
                    
                    readdata[key] = value;
                }
                
                dataoffset += 1;
            break;
            default:
                error('SyntaxError', 'Unknown / Unhandled data type(s): ' + dtype);
            break;
        }
        return [dtype, dataoffset - offset, typeconvert(readdata)];
    };
    return _unserialize(data, 0)[2];
     }
			});
$(document).ready(function(){
	   var cbmname;
		var g_level;
		var defaultmax;
		var paramdataline;
		var paramdata = new Array();
		//pour les bouton add et delette et les change combo des combo multiple
		
		$(".buttonadd").map(function(){ 
		  
		 cbmname=$(this).parent("*").parent("*").parent("*").parent("*").parent("*").parent("*").attr("name");
		 paramdataline = $(this).parent("*").parent("*").parent("*").children(".paramdata").val();
		 paramdataline=decodeURIComponent(unescape(paramdataline.replace(/\+/g,  " ")));
		 paramdata = $.unserialize (paramdataline);
		
		 g_level=$(this).parent("*").parent("*").parent("*").children(".defaultlevelcbm").val();
		 
		 defaultmax=$(this).parent("*").parent("*").parent("*").children(".defaultmaxcbm").val();	
		
		 multiselect (paramdata,".champ[name="+cbmname+"]",g_level,defaultmax); 
		 $(".champ[name="+cbmname+"]").find(".multiselect").parent(".groupselectchild").parent("div").children(".groupselectchild").eq(0).children(".multiselect").val($("#commune").html());
		 multiselectchange(paramdata, $(".champ[name="+cbmname+"]").find(".multiselect").parent(".groupselectchild").parent("div").children(".groupselectchild").eq(0).children(".multiselect"),g_level);
		 $(".champ[name="+cbmname+"]").find(".multiselect").parent(".groupselectchild").parent("div").children(".groupselectchild").eq(1).children(".multiselect").val($("#rue").html());
		 //$("#agent").html(paramdata[3][$("#numagent").html()]);
		 if ($("#radar").is("div"))
	     {
		  
		 }
		 else
		 {
		  showdetailagent(paramdata,$("#numagent").html());
		 }
		}); 
});
