/* Chargement du module "maps" dans sa version "2" */
google.load("maps", "2",{"other_params":"sensor=false"});
var map;
var idRegion = 1;
var latitudeCenter = 49.837982;
var longitudeCenter = -72.158203;
var zoomCenter = 5;
var iconeBureau;
var iconeBitumineux;
var iconeCiment;
var iconeGranulat;
var TousMesMarqueurs = [];
var gMarqueurs = [];

/* Url pointant vers votre fichier .xml */
var urlXml = "../xml/RegionDuQuebec.xml";

/* ************************************** */
/* Fonction initialize()                  */
/* ************************************** */
function initialize() {
	// ========== Read paramaters that have been passed in ==========  
    // If there are any parameters at eh end of the URL, they will be in  location.search
    // looking something like  "?region=3"
    // skip the first character, we are not interested in the "?"
    var query = location.search.substring(1);

    // split the rest at each "&" character to give a list of  "argname=value"  pairs
    var pairs = query.split("&");
    for (var i=0; i<pairs.length; i++) {
    	// break each pair at the first "=" to obtain the argname and value
		var pos = pairs[i].indexOf("=");
		var argname = pairs[i].substring(0,pos).toLowerCase();
		var value = pairs[i].substring(pos+1).toLowerCase();

        // process each possible argname  -  use unescape() if theres any chance of spaces
        if (argname == "region") {idRegion = unescape(value);}
      }

	/* Si le navigateur est compatible avec l'API de Google Maps ... */
	if (google.maps.BrowserIsCompatible()) {
		var ToutesLesBalisesInput = document.getElementsByTagName("input");
		baseIcon = new google.maps.Icon();
		baseIcon.iconSize=new google.maps.Size(12,20);
		baseIcon.shadowSize=new google.maps.Size(22,20);
		baseIcon.iconAnchor=new google.maps.Point(6,20);
		baseIcon.infoWindowAnchor=new google.maps.Point(5,1);
		iconeBureau = new google.maps.Icon(baseIcon, "images/icones/mm_20_orange.png", null, "images/icones/mm_20_shadow.png");
		iconeBitumineux = new google.maps.Icon(baseIcon, "images/icones/mm_20_red.png", null, "images/icones/mm_20_shadow.png");
		iconeCiment = new google.maps.Icon(baseIcon, "images/icones/mm_20_green.png", null, "images/icones/mm_20_shadow.png");
		iconeGranulat = new google.maps.Icon(baseIcon, "images/icones/mm_20_blue.png", null, "images/icones/mm_20_shadow.png");

		/* ... Création d'une nouvelle carte nommée "map" qui s'affichera à l'intérieur de la <div> ayant pour identifiant id="mapQuebec" ... */
		map = new google.maps.Map2(document.getElementById("mapQuebec"));
		map.setUIToDefault();

		/*map.enableGoogleBar();*/
		/* ... La carte nommée "mapQuebec" est centrée sur la Latitude 49.396675, la Longitude -65.852051, avec un niveau de zoom égal à 5 ... */
		if (idRegion == 1){
			zoomCenter = 5;
		}else{
			zoomCenter = 9;
		}
		map.setCenter(new google.maps.LatLng(latitudeCenter, longitudeCenter), zoomCenter);
		if(ToutesLesBalisesInput != null){
			for(var i = 0; i < ToutesLesBalisesInput.length; i++){
				if(ToutesLesBalisesInput[i].type == "checkbox"){
					ToutesLesBalisesInput[i].onclick=function(){EnvoiCategorie(this);}/* LIGNE 99 */
				}
			}
		}
		AfficheCategorie(); /* LIGNE 69 */
		
		/* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
	}else{
		/* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
		alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
	}
}
/* ************************************** */
/* Fonction CreationDuMarqueur()          */
/* ************************************** */ 
function CreationDuMarqueur(point, nom, responsable, adresse, ville, province, codepostal, telephone, fax, courriel, licence, details, type, i) {
	if(type=="Bureau"){icone = iconeBureau;}
	if(type=="Bitumineux"){icone = iconeBitumineux;}
	if(type=="Ciment"){icone = iconeCiment;}
	if(type=="Granulat"){icone = iconeGranulat;}
	var marker = new google.maps.Marker(point,{icon: icone, title: nom});
	TousMesMarqueurs[i] = marker;
	google.maps.Event.addListener(marker, "click", function(){
		var label1 = 'Coordonnées';
		var html1 = "<b>" + nom + "</b><br/>" + responsable + "<br/>" + adresse + "<br/>" + ville + " " + province + " " + codepostal + "<br/>" + telephone + "<br/>" + fax + "<br/>" + courriel + "<br/>" + licence + "<br/>";
		var label2 = 'Nos services';
		var html2 = details + "<br/>";
		marker.openInfoWindowTabsHtml([new GInfoWindowTab(label1,html1), new GInfoWindowTab(label2,html2)]);
	});
	gMarqueurs.push(marker);
	return marker;
}
/* ************************************** */
/* Fonction AfficheCategorie()            */
/* ************************************** */
function AfficheCategorie(){
	google.maps.DownloadUrl(urlXml+"?"+Math.random(), function(data) {
		var xml = google.maps.Xml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		for (var i = 0; i < markers.length; i++) {
			var region = markers[i].getAttribute("region");
			/* ... Si les marqueurs correspondant à la région sélectionnée ... */
			if(region == idRegion){
				var type = markers[i].getAttribute("type");
				/* ... Si les marqueurs correspondant à la catégorie sélectionnée ... */
				if(type == 'Bureau'){
					var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
					var nom = markers[i].getAttribute("nom");
					var responsable = markers[i].getAttribute("responsable");
					var adresse = markers[i].getAttribute("adresse");
					var ville = markers[i].getAttribute("ville");
					var province = markers[i].getAttribute("province");
					var codepostal = markers[i].getAttribute("codepostal");
					var telephone = markers[i].getAttribute("telephone");
					var fax = markers[i].getAttribute("fax");
					var courriel = markers[i].getAttribute("courriel");
					var licence = markers[i].getAttribute("licence");
					var details = markers[i].getAttribute("details");
					var type = markers[i].getAttribute("type");
					var marker = CreationDuMarqueur(point, nom, responsable, adresse, ville, province, codepostal, telephone, fax, courriel, licence, details, type, i);
					/* ... on ajout le marqueur ? la carte nomm?e "maCarte". */
					map.addOverlay(marker);
					/* Le premier marqueur est toujours le bureau régional, alors un simule un click sur ce marker */
					GEvent.trigger(gMarqueurs[0],"click");
				}
			}
		}
	});
}
/* ************************************** */
/* Fonction EnvoiCategorie()              */
/* ************************************** */
function EnvoiCategorie(val){
	if(val == null){return;}
	var Categorieselec = val.value;
	/* ... Si la case est cochée ... */
	if(val.checked == true){
		google.maps.DownloadUrl(urlXml+"?"+Math.random(), function(data) {
			var xml = google.maps.Xml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var region = markers[i].getAttribute("region");
				/* ... Si les marqueurs correspondant à la région sélectionnée ... */
				if(region == idRegion){
					var type = markers[i].getAttribute("type");
					/* ... Si les marqueurs correspondant à la catégorie sélectionnée ... */
					if(type == Categorieselec){
						var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
						var nom = markers[i].getAttribute("nom");
						var responsable = markers[i].getAttribute("responsable");
						var adresse = markers[i].getAttribute("adresse");
						var ville = markers[i].getAttribute("ville");
						var province = markers[i].getAttribute("province");
						var codepostal = markers[i].getAttribute("codepostal");
						var telephone = markers[i].getAttribute("telephone");
						var fax = markers[i].getAttribute("fax");
						var courriel = markers[i].getAttribute("courriel");
						var licence = markers[i].getAttribute("licence");
						var details = markers[i].getAttribute("details");
						var type = markers[i].getAttribute("type");
						var marker = CreationDuMarqueur(point, nom, responsable, adresse, ville, province, codepostal, telephone, fax, courriel, licence, details, type, i);
						/* ... on ajout le marqueur ? la carte nomm?e "maCarte". */
						map.addOverlay(marker);
						/* Le premier marqueur est toujours le bureau régional, alors un simule un click sur ce marker */
						GEvent.trigger(gMarqueurs[0],"click");
					}
				}
			}
		});
	}
	/* ... Si la case est décochée ... */
	if(val.checked == false){
		google.maps.DownloadUrl(urlXml+"?"+Math.random(), function(data) {
			var xml = google.maps.Xml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var region = markers[i].getAttribute("region");
				/* ... Si les marqueurs correspondant à la région sélectionnée ... */
				if(region == idRegion){
					var type = markers[i].getAttribute("type");
					/* ... Si les marqueurs correspondant à la catégorie sélectionnée ... */
					if(type == Categorieselec){
						/* ... alors ils sont supprim?s de la carte nomm?e "maCarte". */
						map.removeOverlay(TousMesMarqueurs[i]);
					}
				}
			}
		});
	}
}
/* Appelle la fonction "initialize" lorsque la page web sera chargée */
google.setOnLoadCallback(initialize);

