﻿
//va contenir les paramètre pour remplir les champs hidden correspondant au checkbox.

function addPanelCheckBox(id_div,id_h,au_moin_un,coche_tout,nom){
    if(document.getElementById(id_h)){
        var obj = new PanelCheckbox(id_h,id_div,au_moin_un,coche_tout,nom);
        searchForm.tab_panel_checkbox.push(obj);
    }
}
PanelCheckbox = function(idHiddenFieldValue,className,mustCheckOne,checkAll,libelle){
    
    //champ hidden qui va contenir les valeur des checkbox cochée, concaténées
    this.hidden = document.getElementById(idHiddenFieldValue);
    //class css des checkbox
    this.className = className;
    //si a vrai, au moin une case de la hierarchie doit être cochée
    this.checkOne = mustCheckOne;
    //si a vrai, coche toutes les cases quand aucune ne sont cochées
    this.checkAll = checkAll;
    
    this.libelle = libelle;
}

PanelCheckbox.prototype.EcireDansHiddenField = function(){
    if(this.hidden){
        this.hidden.value = '';
        var tab_cb = getElementsByClassName(this.className,"input",document);
        var l = tab_cb.length;
        var j = 0;
        for(var i = 0;i<l;i++){
            var cb = tab_cb[i];
            if((cb.type == "checkbox" || cb.type == "radio") && cb.checked){
                this.hidden.value += (j==0) ? "" : "|";
                this.hidden.value += cb.value;
                
                j++;
            }            
        }
        if(j == 0 && tab_cb.length > 0 ){
            if(this.checkOne){                
                return false;
            }
            else{
                if(this.checkAll){
                    for(var i = 0;i<l;i++){
                        var cb = tab_cb[i];
                        cb.checked = true ;                        
                    }
                    this.EcireDansHiddenField();
                }
            }
        }
    }
    return true ;
}

HierarchieCheckBox = function(prefix,inverse){
    this.prefix = prefix;
    this.inverse = inverse;
}
HierarchieCheckBox.prototype.CheckChild = function(parent,checkParent){    
    
        for(var i = 1;dgbi(this.prefix+i);i++){
            var elt = dgbi(this.prefix+i);
            if(!this.inverse){
                elt.disabled = (checkParent) ? !checkParent : !parent.checked;           
            }
            else{
                elt.disabled = (checkParent) ? checkParent : parent.checked;                                
            }
                        
            checkChild(elt,parent.checked);
            if(elt.disabled){                
                elt.checked = false ;            
            }
        }
    
}

//va contenir les paramètre pour activer / desactiver certaine checkbox 
var tab_hierarchie_checkbox = new Array();

//si inverse a false alors les cases enfant sont activée si le parent est coché
function addHierarchie(id_parent,prefix_id_enfants,inverse){
    eval("tab_hierarchie_checkbox['"+id_parent+"']=new HierarchieCheckBox('"+prefix_id_enfants+"',"+inverse+");");   
}



function checkChild(parent,checkParent){    
    eval("var obj = tab_hierarchie_checkbox['"+parent.id+"'];");
    if(obj)
    obj.CheckChild(parent,checkParent);
}

var bouton_form;




function setLatLonTB(lat,lon){
   searchForm.setLatLon(lat,lon);
}
function dgbi(id){
    return document.getElementById(id);
}
function onsortfinished_mygmap(){
    document.getElementById("nb_campings").innerHTML = (mapgoogle.nbMarkers);
}
var tab_checked_services = new Array();
var tab_territoire = "";
function InitGMap(){
    mapgoogle = new MyGMap("div_map");  
    mapgoogle.initInput("tb_lat","tb_lon");
    mapgoogle.sortfinished = onsortfinished_mygmap;
}
function eventhandler_territoire(cb)  
{
checkChild(cb);
 tab_territoire.addOrDelete(value,cb.checked); 
    if(typeof(mapgoogle) != "undefined"){
        value = cb.value;
       
        mapgoogle.SortTerritories(tab_territoire);
    }
    
    return true ;
}  

function eventhandler_service(cb)  
{    
 value = cb.value;
       
tab_checked_services.addOrDelete(value,cb.checked);    
    if(typeof(mapgoogle) != "undefined"){
       
        SortCamp(); 
    }
     
    return true ;
     
}         

var tab_checked_type = new Array();
var tab_checked_sub = new Array();
function eventhandler_product_type(cb){ 
    checkChild(cb);
    value = cb.value;
    if(parseInt(value)){
        tab_checked_sub.addOrDelete(value,cb.checked); 
    }
    else{
        tab_checked_type.addOrDelete(value,cb.checked);             
    } 
    if(typeof(mapgoogle) != "undefined"){
          
        SortCamp(); 
    }
    return true ;
}
var tab_checked_domain = new Array();
function eventhandler_domain(cb,value){
tab_checked_domain.addOrDelete(value,cb.checked);
    if(typeof(mapgoogle) != "undefined"){
        
        SortCamp();
    }
}
Array.prototype.addOrDelete = function(value,mustAdd){
    if(this.indexOf(value)>= 0){
        if(!mustAdd){
            this.splice(this.indexOf(value),1);
        }            
    }
    else{
        if(mustAdd){
            this.push(value);
        }
    }
}
String.prototype.addOrDelete = function(value,mustAdd){
    if(this.indexOf(value)>= 0){
        if(!mustAdd){
            return this.replace(value,"");
        }            
    }
    else{
        if(mustAdd){
            return this+value;
        }
    }
}

function SortCamp(){
    if(typeof(mapgoogle) != "undefined")
        mapgoogle.SortAll(tab_checked_services,tab_checked_type,tab_checked_sub,tab_checked_domain,tab_territoire,rate);
}
var rate = 0 ;
function filtreRating(rate2){
    rate = parseInt(rate2);
    SortCamp();
}
/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};


var KmlDispoIsLoaded = false; 
function ShowMapDispo(guid,id){
    InitGMAP(); 
    if(!KmlDispoIsLoaded){
        var mapgoogleDispo = new MyGMap('gmapdispo');
        mapgoogleDispo.geoXml.opts.icon = "./style/camping2.png";        
        var url = './get_kml_result.aspx?g='+guid;
        mapgoogleDispo.loadKML(url);
    }
    showSelect(id);
    
}
function showSelect(select){
    for(var i = 0;i<mapgoogleDispo.geoXml.markers.length;i++){
        var m =mapgoogleDispo.geoXml.markers[i];
        if(m.data.EstablishmentID == select){
            m.setImage("./style/camping3.png");
            var icon2 = new GIcon(m.getIcon());
            icon2.iconSize = new GSize(24,24);
            var opts = {icon:icon2,title:m.getTitle()};
            var m_temp = new GMarker(m.getLatLng(),opts);
            mapgoogleDispo.map.setCenter(m_temp.getLatLng());
            mapgoogleDispo.map.addOverlay(m_temp);
            mapgoogleDispo.map.removeOverlay(m);
            GEvent.trigger(m_temp,"click");
         }
    }
}
//function clickMarker(){
//    this.openInfoWindow(this.data.EstablishmentName)
//}