﻿// Fichier JScript



var donotreinit=false;
var types_gites = new Array();
var gites = new Array();

/**
 * listener pour réinitialisation du contexte apres chargement
 */
function addContextListener() {
  	config.objects.mainMap.addListener("loadModel", reinitOnMove, config.objects.mainMap);  	
}

function reinitOnMove(){
    mustReinit();
    
    config.objects.mainMap.addListener("bbox", mustReinit, config.objects.mainMap);
    
}

function mustReinit(){
    //var scale = config.objects.mainMap.extent.getScale().toString().split('.')[0];
    scale();
    /*var length = scale.length;
    var echelle ="";
    for (var i=length-1;i>=0;i-=3){
        echelle = scale.charAt(i)+echelle;
        echelle = scale.charAt(i-1)+echelle;
        echelle = scale.charAt(i-2)+echelle;
        echelle = " "+echelle;
    }
    document.getElementById('echelle_combo').innerHTML = "Echelle :&nbsp; 1 / "+echelle;*/
    if (donotreinit){
        donotreinit=false;
        return;
    }
    reinit(1);
}

function type_gite(_id,_text){ this.id=_id; this.text=_text; } 
function gite(_id,_text,_bbox){ this.id=_id; this.text=_text; this.bbox=_bbox } 
 
 //chargement des combo-box
 function load(){
    loadTypesGite();
    loadThemeGeo();
    findGeoScale();
 }
 
 //rechargement des combo-box
 function reload(){
    types_gites = new Array();
    loadTypesGite();   
    loadThemeGeo();
    findGeoScale();
 }
  
// chargement de toute la liste des types de gite depuis
// un service distant en xml
function loadTypesGite()
{ 		
	var xmlhttp = new XMLHttpRequest();    		
	try{
	    if (types_gites.length==0){
		    xmlhttp.open("GET", "service.aspx?op=types_gite&lang="+language, false);
		    xmlhttp.send(null); 
		    var parser = new DOMParser();					
		    var doc = parser.parseFromString(xmlhttp.responseText, "text/xml");	
		    var tab = doc.getElementsByTagName("type_gite");
		    types_gite = new Array(tab.length);
		    for (var i = 0;i<tab.length;i++){
		         types_gites[i]= new type_gite(
		                             tab[i].getElementsByTagName("id")[0].firstChild.nodeValue,
		                             tab[i].getElementsByTagName("sub_prin_fr")[0].firstChild.nodeValue
		                         );				    
		    }
		}
		var rep = "<SELECT class='combo_recherche' size='11' id ='types_gite'><option value='0'>Aucune substance</option>";
	    for (var i = 0;i<types_gite.length;i++){
		        rep+="<option value="+types_gites[i].id;
		        if (type_courrant==types_gites[i].id)
		            rep+=" SELECTED=true ";
		        rep+=">"+types_gites[i].text+"</option>";
		}
	    rep+="</SELECT>";
	    document.getElementById('types_gite_combo').innerHTML=rep;					
	}		
	catch (e){
		alert("Erreur de connexion"+e);
	}
}

// chargement de toute la liste des types de gite depuis
// un service distant en xml
function loadThemeGeo()
{ 		
	var xmlhttp = new XMLHttpRequest();    		
	try{
	       xmlhttp.open("GET", "service.aspx?op=geo_theme&lang="+language, false);
		    xmlhttp.send(null); 
		    var parser = new DOMParser();					
		    var doc = parser.parseFromString(xmlhttp.responseText, "text/xml");	
		    var tab = doc.getElementsByTagName("theme");
		    var rep = "<SELECT class='combo_geo' id ='geo_theme' onchange='findGeoScale()'><option value='-1'>Sélectionner une thématique</option>";
	        for (var i = 0;i<tab.length;i++){
		         rep+="<option value="+tab[i].getElementsByTagName("code")[0].firstChild.nodeValue+">";
		         rep+= tab[i].getElementsByTagName("text")[0].firstChild.nodeValue+"</option>";	    
		    }
		rep+="</SELECT>";
	    document.getElementById('geo_theme_combo').innerHTML=rep;					
	}		
	catch (e){
		alert("Erreur de connexion"+e);
	}
}

function findGeoScale(){
    var val = document.getElementById('geo_theme').value;
    var xmlhttp = new XMLHttpRequest();    		
	try{
	    
	       xmlhttp.open("GET", "service.aspx?op=geo_theme_scale&value="+val+"&lang="+language, false);
		    xmlhttp.send(null); 
		    var parser = new DOMParser();					
		    var doc = parser.parseFromString(xmlhttp.responseText, "text/xml");	
		    var tab = doc.getElementsByTagName("theme_echelle");
		    var rep = "<SELECT class='combo_geo' id ='geo_theme_scale'><option value='-1'>Sélectionner une échelle</option>";
	        for (var i = 0;i<tab.length;i++){
		         rep+="<option value='"+tab[i].getElementsByTagName("echelle")[0].firstChild.nodeValue+"'>";
		         rep+= "1 / "+tab[i].getElementsByTagName("echelle")[0].firstChild.nodeValue+"</option>";	    
		    }
		rep+="</SELECT>";
	    document.getElementById('geo_scale_combo').innerHTML=rep;					
	}		
	catch (e){
		alert("Erreur de connexion"+e);
	}
}



//remplacer les accents
function noaccent(chaine){
	var temp = chaine.replace(/[àâä]/gi,"a");
	temp = temp.replace(/[èéêë]/gi,"e");
	temp = temp.replace(/[ïî]/gi,"i");
	temp = temp.replace(/[ôö]/gi,"o");
	temp = temp.replace(/[ùûü]/gi,"u");
	return temp;
	
}

// chargement de toute la liste des types de gite depuis
// un service distant en xml
function loadLocaGite()
{ 		
var value = document.getElementById('gites_input').value;
	var xmlhttp = new XMLHttpRequest();    		
	try{
	    
		    xmlhttp.open("GET", "service.aspx?op=loca_gite&value="+noaccent(value)+"&lang="+language, false);
		    xmlhttp.send(null); 
		    var parser = new DOMParser();					
		    var doc = parser.parseFromString(xmlhttp.responseText, "text/xml");	
		    var tab = doc.getElementsByTagName("gite");
		    if (tab.length==0)
		    {
		        alert('aucun résultat');
		        return;
		    }
		    gites = new Array(tab.length);
		    for (var i = 0;i<tab.length;i++){
		         gites[i]= new gite(
		                             tab[i].getElementsByTagName("identifiant")[0].firstChild.nodeValue,
		                             tab[i].getElementsByTagName("nom")[0].firstChild.nodeValue,
		                             tab[i].getElementsByTagName("box2d")[0].firstChild.nodeValue
		                         );				    
		    }
		   
		
		var rep = "<SELECT onchange='changeGite()' class='recherche_gites_input' id ='loca_gite'>";
		if (gites.length>1) rep+="<option value='0'>Sélectionner un gite</option>";
	    for (var i = 0;i<gites.length;i++){
		        rep+="<option value="+gites[i].id;
		        rep+=">"+gites[i].text+"</option>";
		}
	    rep+="</SELECT>";
	    document.getElementById('gites_ctrl').innerHTML=rep+"&nbsp;<input type='button' value='Vider' class='recherche_gites_input_button' onclick='videLocaGite()'/>";					
	}		
	catch (e){
		alert("Erreur de connexion"+e);
	}
}

function videLocaGite(){
    document.getElementById('gites_ctrl').innerHTML="<input type='text' class='recherche_gites_input' id='gites_input'/>&nbsp;<input type='button' value='Valider' class='recherche_gites_input_button' onclick='loadLocaGite()'/>";
}

function getType(code){
    for (var i=0;i<types_gites.length;i++){
        if (types_gites[i].id==code)
            return types_gites[i];
    }
    return null;
}

function getGite(code){
    for (var i=0;i<gites.length;i++){
        if (gites[i].id==code)
            return gites[i];
    }
    return null;
}

function changeGite(){
    var box = parseBox2d(getGite(document.getElementById('loca_gite').value).bbox);
    var lr = box[1];
    var ul = box[0];    

    ul[0]-=1;
    ul[1]+=1;
    lr[0]+=1;
    lr[1]-=1;
     box = new Array(ul,lr);
     zoom(box);
    
}

//transformation d'une box2d l2e en BBOX
function parseBox2d(box2d){    
    var reg=new RegExp("[(, )]+", "g");
    var coords = box2d.split(reg);
    var ul = new Array(parseFloat(coords[1]),parseFloat(coords[4]));
    var lr = new Array(parseFloat(coords[3]),parseFloat(coords[2]));
    return new Array(ul,lr);
}


function zoom(bbox){
    if (bbox==null){
        alert("Géometrie de forme inconnue");
        return;
    }
    var ul = bbox[0];
    var lr = bbox[1];
    config.objects.mainMap.extent.zoomToBox(ul,lr);  
}



//remise à zéro du formulaire
function reinit(item){   
    return; 
    if (item!="site")
        document.getElementById('sit_input').innerHTML="<table  cellspacing='0' cellpadding='0'><tr><td><input type='text' id='site' class='text_recherche' /><input id='sit_ctrl' type='button' value='Localiser' onclick='searchSite()' class='button_recherche' /></td></tr></table>";
    if (item==null)
        config.objects.reset.select();   
    else
        donotreinit=true; 
}

