    // QC H2K 3C8, Canada
    // 2363 Rue D'Iberville, Montr�al, QC, Canada
    // http://maps.google.com/maps/geo?q=H2K3C8&output=xml&key=ABQIAAAAs86JA8hUe9bFqj12WoopiBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxScudF_TDJUFQdJXxZC3qyI3J_h_Q
    
    
    var map = null;
    var wheelZooming = false;
    var mouseLatLng = null;
	var zoomRect = null;
	var rectIcon = null;
	var baseIcon = null;
	var html = '';
	
	
	
	var var_arr_global = null;
	
	var VarNoLat = false;
	var VarPtsAdrr = new Array();
	
	var EvnLoad = false;
	var AlphaInit = 0.7;
	var EvnLoadAlpha = false;
	var HeightInitAlpha = 0;
	var HeightInit = 1;
	var HeightInitmax = 210;
	var EvnLoadHeight = false;
	
	var ElementID = false;
	var ZWHERE = 0;
	var ZX = 0;
	var NumTestAdresse = 0;
	var LoadFinish = false;
    var ArrayToDo = new Array();
	var arr = new Array();	
	var Array_content = new Array();
	var Array_content_pts = new Array();
	
	var VarshowAddressbyPoint = false;
	var VarLoadFinish = false;
	var VarReload = false;	
	var TimeOutVar = null;
	
	var location_name = new Array();
	var loc_name = new Array();
	
    var MapDiv = document.getElementById("map");
    var icon = null;
    var RunAdressMaker = false;
    var ptsz = new Array();
    var pts = new Array();
    var ptss = new Array();
    var geocoder = null;
    var gmarkers = new Array();
    var t = 0;
    var VarK = 0;
    var side_bar_html = '';
    var Xpos = 0;
    var Ypos = 0;
    var Txt_act = 'Actualiser la carte'; //r&eacute;gion
    var Init_pos = new Array();
    	Init_pos['lat'] = 45.558294879426235;
    	Init_pos['lon'] = -73.69903564453125;
    	Init_pos['zoom'] = 11;
    
    	
    //map.setZoom(map.getZoom()+1);

	function wheelZoom(event) {
		// Prevent from scrolling the page when zooming the map
		if(window.event) { event.returnValue = false; } // IE
		if(event.cancelable) { event.preventDefault(); } // DOM-Standard
		 if((event.detail || -event.wheelDelta) < 0) {
		  map.zoomIn(); } else {
		  map.zoomOut(); }
	}
	
    // Mouse wheel zoom - Event handler -----
    function wheelZoomi(event) {/*
     if (wheelZooming) {
      return;
     }
 
     wheelZooming = true;*/
 
     // zoomRect and rectIcon are global variables!!!
 
     //alert(mouseLatLng);
     
     zoomRect = new GMarker(mouseLatLng, rectIcon);
     map.addOverlay(zoomRect);
 
     if (event.cancelable) {
      event.preventDefault();
     }
     map.closeInfoWindow(); 
     
     mouseLatLng = map.getCenter();
     alert(map.getCenter());
     
     if((event.detail || -event.wheelDelta) < 0) {
      window.setTimeout(function(){
       map.removeOverlay(zoomRect);
       map.zoomIn(mouseLatLng,true,true);
       wheelZooming = false;
      },200);
     } 
     else {
      window.setTimeout(function(){
       map.removeOverlay(zoomRect);
       map.zoomOut(mouseLatLng,true);
       wheelZooming = false;
      },200);
     }
     return false; 
    }
    // End event handler -----	
	
   function load() {
    	
      var navroot = document.getElementById('map');
      
      if(navroot){     	
      	
      	ElementID = load.arguments[0] ? load.arguments[0] : 0;
      	VarReload = load.arguments[0] ? true : false;
      	      	
    	side_bar_html = '';
    	menu_bar_html = '';
    	menu_bar_html = 0;
    	gmarkers = new Array();
    	t = 0;
    	Side_Content = document.getElementById("side_bar").getElementsByTagName("div")[0];
    	Menu_Content = document.getElementById("option");
    	Menu_act_Content = document.getElementById("option_act");
    	
		if (GBrowserIsCompatible()) {
	        map = new GMap2(document.getElementById("map"));
	      
	        
		// --------------------------------------------------------------
		    // Icon for the red square displayed with the mouse wheel zoom
		    baseIcon = new GIcon();
		    baseIcon.iconSize=new GSize(100,100);
		    baseIcon.iconAnchor=new GPoint(50,50);
		    rectIcon = new GIcon(baseIcon, "/images/zoomInRect2.png", null);
		 
		    // --------------------------------------------------------------
 	        
	        
	        //GEvent.addDomListener(MapDiv, "DOMMouseScroll", wheelZoom); // Firefox
			//GEvent.addDomListener(MapDiv, "mousewheel", wheelZoom); // IE
	        
			var mt = map.getMapTypes();
			// Overwrite the getMinimumResolution() and getMaximumResolution() methods
			for (var i=0; i<mt.length; i++) {
				mt[i].getMinimumResolution = function() {return 10;}
				mt[i].getMaximumResolution = function() {return 16;}
			}
			
			// new GLargeMapControl()

	        //map.addControl(new GScaleControl());
	        map.addControl(new GSmallMapControl());
	        // 45.534431222847374, -73.55741500854492
	        // MONTREAL (centre) 45.5239087616988, -73.68701934814453
	        map.setCenter(new GLatLng(Init_pos['lat'],Init_pos['lon']), Init_pos['zoom']);
	        geocoder = new GClientGeocoder();
	        
			var lis=navroot.getElementsByTagName("div");  
	
			for (i=0; i<lis.length; i++) {			
				var listing = lis[i].innerHTML;
				if(listing.match("Terms") != null){
					//lis[i].innerHTML = '<div id="QCopy"><div></div>(c) 2007 Quantik Solutions.com</div>';
					lis[i].innerHTML = '';
				}
			}
				
			icon = new GIcon();
						
			icon.image = "/images/icon13.png";
			icon.shadow = "/images/icon13s.png";
			
			icon.iconSize=new GSize(32,32);
			icon.shadowSize=new GSize(56,32);
			icon.iconAnchor=new GPoint(16,32);
			icon.infoWindowAnchor=new GPoint(16,0);	
			
			var request = GXmlHttp.create();
			request.open("GET", xml_url, true);
			request.onreadystatechange = function() {
			 	
			 	if (request.readyState == 4) {
			 		var xmlDoc = request.responseXML;
			 		// obtain the array of markers and loop through it
			 			
			 		var locations = xmlDoc.documentElement.getElementsByTagName("location");
			 		
			 		
				 	for (var z = 0; z < locations.length ; z++) {
				 		loc_name[z] = locations[z].getAttribute("name");
				 		location_name[z] = loc_name[z];
				 	}
			 		
			 		
			 		//alert(ElementID+"<<<<<<=:::=>>>>>");
			 		
			 		//locations.length
			 		for (var z = 0; z < locations.length ; z++) {
			 			
			 		
			 			
		if(z == ElementID){
			
			//alert(ElementID+"---=:::=---"+locations.length);
			
			 		//var z = ElementID;
			 				 		
			 		//if(locations[z]){
		 			
			 			
				 		
				 		pts = new Array();
					 	var markers = locations[z].getElementsByTagName("marker");
					 				 		
					 	for (var i = 0; i < markers.length; i++) {
					 		VarK = i;
							variables = markers[i].getElementsByTagName("variable");
							 	
							Array_variable = new Array();
							for (var y = 0; y < variables.length; y++) {
					 			variable 	= variables[y].attributes[0].nodeName;
					 			value 		= variables[y].attributes[0].nodeValue;
					 			
					 			style = '';
					 			if(variables[y].attributes.length > 1){
					 				for (var f = 1; f < variables[y].attributes.length; f++) {
					 					style += variables[y].attributes[f].nodeName+":"+variables[y].attributes[f].nodeValue+"; ";
					 				}
					 				value = '<span style="'+ style +'">'+ value +'</span>';
					 			}
					 			
					 			Array_variable[variable] = value;
							}
					 		
							
							Array_content[i] = Array_variable;
							
							if(Array_variable['lat'] == '' || Array_variable['lon'] == ''){
								
								adresse = Array_variable['adresse'];
								
								
								if(!Array_variable['ville']){
									ville = 'Laval';
								}else{
									ville = Array_variable['ville'];
								}
								
								if(ville.match('Laval')){
									ville = 'Laval, Quebec';
								}else{
									ville = 'Montreal, Quebec';
								}
								
								//ville = 'Laval, Quebec';
								//adresse = Array_variable['adresse']+", "+ville;
								
								if(adresse.match('C. P.') || 
									adresse.match('C.P.') || 
									adresse.match('Case Postal') || 
									adresse.match('Case Postale')){
									adresse = Array_variable['codepostal']+", "+ville;
								}else{
									adress = adresse.split(', ');
									adresse = adress[0]+", "+adress[1]+", "+ville;
								}
								
								//alert(adresse);
								
								NumTestAdresse = 0;
								ArrayToDo.push(i);
								showAddressbyPoint(adresse);
								
							}else{
								
						 		lat = parseFloat(Array_variable['lat']);
						 		lon = parseFloat(Array_variable['lon']);
						 		var point = new GLatLng(lat,lon);					 			
								
							 	pts[i] = point;
							}	
					 	}
					 	
					 	//ptsz.push(pts);
					 	
					 	break;
					 	
		}
			 		}

			 		//DisplaySelectionForm();
			 		
			 		VarLoadFinish = true;
			 	}
			}
				 	
			request.send(null);
		}
		
      }
    	
    	
    	FuncSetTimeout();

		
    }
      
    
    function DisplaySelectionForm(){
    	if(loc_name.length > 1){
	    	BlkSelectForm = document.getElementById("map_selection");
	    	BlkSelectForm.style.display = 'block';
	    	
	    	html = '';
	    	/*
	    	html += '
							<form>
								<select id="form_select" name="map_selection" onchange="alert(this.options[this.selectedIndex].value)">
									<option value="0" selected="true">Name 1</option>
									<option value="1">Name 2</option>
								</select>
							</form>
	    	
	    	';*/
	    	html += '<form>';
	    	html += '<select id="form_select" name="map_selection" onchange="load(this.options[this.selectedIndex].value)">';
			
	    	for (var i=0; i < loc_name.length; i++){
	    		html += '<option value="'+ i +'">'+ loc_name[i] +'</option>';
	    	}
	    	
	    	html += '</select>';
	    	html += '</form>';
	    	
	    	//alert(html);
	    	
	    	BlkSelectForm.innerHTML = html;
    	}
    }
    
    
	function FuncSetTimeout(){
		if(LoadFinish || (VarLoadFinish == true && VarshowAddressbyPoint == false)){
			window.clearTimeout(TimeOutVar);
			// EventLoad();
			EvnLoad = window.setTimeout("EventLoad()",700);
				
		}else{
			TimeOutVar = window.setTimeout("FuncSetTimeout()",500);
		}
		
	}
	
	
	function AjustHeight(){

		var DivArray = new Array();
		var items = Side_Content.getElementsByTagName('div');
		for (var i=0; i < items.length; i++){
			if(items[i].getAttribute('class') == 'arrondiblk'){
				//alert(items[i].offsetHeight);
				// clientHeight
				var EleHeight = items[i].offsetHeight;
				DivArray.push(EleHeight);
				//alert(EleHeight);
			}
		}
		
		var MaxVal = 0;
		for (var i=0; i < DivArray.length; i++){
			if(DivArray[i] > MaxVal){
				MaxVal = DivArray[i];
			}
		}
		
		for (var i=0; i < items.length; i++){
			if(items[i].getAttribute('class') == 'arrondiblk'){
				items[i].style.height = MaxVal+"px";
			}
		}		
	}
	
	
	function showAddressbyPoint(address) {
   	
		VarshowAddressbyPoint = true;
		
   	
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
          	
            if (!point) {
            	if(NumTestAdresse == 1){
              		//alert(address + " not found");
              		pts[ArrayToDo[ZWHERE]] = false;
            	}else{
	              address = address.replace(" Est",'');
	              address = address.replace(" Ouest",'');
	              showAddressbyPoint(address);
	              NumTestAdresse = 1;
            	}
            } else {
              
              pts[ArrayToDo[ZWHERE]] = point;
              
            }
            
             ZWHERE++;
             if(ZWHERE == ArrayToDo.length){
             	LoadFinish = true;
              	//alert("true");
             }           
            
          }
        );
      }
    }
    
    
    function EventLoad(){
    	
    	window.clearTimeout(EvnLoad);
    	
    	//alert("EVENT LOAD");
    	
		setmapsize();
			 		
		var bounds = new GLatLngBounds;
		for (var i=0; i<pts.length; i++) {
			if(pts[i] && pts[i] != ''){
				map.addOverlay(createMarker(pts[i], Array_content[i], i));
				bounds.extend(pts[i]);
			}
		}

		map.closeInfoWindow();	
		map.setZoom(map.getBoundsZoomLevel(bounds));
		map.setCenter(bounds.getCenter());
		
		var navroot = document.getElementById('map');
			
		map.enableContinuousZoom();
		GEvent.addDomListener(navroot, "DOMMouseScroll", wheelZoom); // Firefox
		GEvent.addDomListener(navroot, "mousewheel", wheelZoom); // IE
		
		//side_bar
		//Side_Content.innerHTML = side_bar_html;
		
		AjustHeightContent();
				
		if(!VarReload)
			DisplaySelectionForm();
			
		AjustHeight();
		
		ChangeAlphaChargement();
		
    }
    
    function AjustHeightContent(){		
		HeightInit = HeightInit + 25;
		document.getElementById("side_bar").style.height = HeightInit +'px';
		
		if(HeightInit >= HeightInitmax){
			window.clearTimeout(EvnLoadHeight);
			Side_Content.innerHTML = side_bar_html;
			ChangeAlphaChargementHeight();
		}else{		
			EvnLoadHeight = window.setTimeout("AjustHeightContent()",100);
		}

    }
    
    	
    function ChangeAlphaChargementHeight(){
    	HeightInitAlpha = HeightInitAlpha + 0.1;
    	var VarAlpha = 0;
    	
    	if(AlphaInit >= 1){
    		window.clearTimeout(EvnLoadHeight);
    	}else{
    		document.getElementById("side_bar").style.opacity = HeightInitAlpha;
    		VarAlpha = HeightInitAlpha*30;
    		document.getElementById("side_bar").style.filter = "alpha(opacity="+ VarAlpha +")";
    		
    		EvnLoadHeight = window.setTimeout("ChangeAlphaChargementHeight()",100);
    	}
    }
    
    
    function ChangeAlphaChargement(){
    	AlphaInit = AlphaInit - 0.1;
    	
    	if(AlphaInit <= 0){
    		window.clearTimeout(EvnLoadAlpha);
    		document.getElementById("map_chargement").style.display = 'none';
    	}else{
    		document.getElementById("map_chargement").style.opacity = AlphaInit;
    		VarAlpha = AlphaInit*100;
    		document.getElementById("map_chargement").style.filter = "alpha(opacity="+ VarAlpha +")";
    		
    		EvnLoadAlpha = window.setTimeout("ChangeAlphaChargement()",100);
    	}
    }
    
 
    
    function setmapsize(){
    	SideBarBlk = document.getElementById("side_bar");
    	
    	if(pts.length == 1){
    		SideBarBlk.style.display = "none";
    		//document.getElementById('map').style.width = '98%';
    		//GEvent.trigger(gmarkers[0], "click");
    		if(gmarkers[0]){
    			GEvent.trigger(gmarkers[0], "click");
    		}else if(gmarkers[1]){
    			GEvent.trigger(gmarkers[1], "click");
    		}else{
    			
    		}
    	}else{
    		SideBarBlk.style.display = "block";
    	}
    }
    
	function createMarker(point, var_arr, i) {
		
		var marker = new GMarker(point, icon);
		
		html = '<strong>'+ var_arr['nom'] +'</strong><br />';
		
		if(var_arr['description'] && var_arr['description'] != ''){
			html += ''+ var_arr['description'] +', <br />';
		}
		
		if(var_arr['adresse'] && var_arr['adresse'] != ''){
			html += ''+ var_arr['adresse'] +', <br />';
		}
				
		if(var_arr['adresse2'] && var_arr['adresse2'] != ''){
			html += ''+ var_arr['adresse2'] +', <br />';
		}
					 								 								 			
		html += ''+ var_arr['ville'] +' '+ var_arr['codepostal'] +'<br />';
					 			
		if(var_arr['telephone'] && var_arr['telephone'] != ''){
			html += 'Tél.: '+ var_arr['telephone'] +'<br />';
		}
					 			
		if(var_arr['telecopieur'] && var_arr['telecopieur'] != ''){
			html += 'Télec.: '+ var_arr['telecopieur'] +'<br />';
		}			 			
					 			
		if(var_arr['web'] && var_arr['web'] != ''){
			html += '<a href="'+ var_arr['web'] +'" target="_blank">site</a><br />';
		}
				
		if(var_arr['lits'] && var_arr['lits'] != ''){
			html += var_arr['lits'] +'<br />';
		}
				
		if(var_arr['medecins'] && var_arr['medecins'] != ''){
			html += 'Nombre de m&eacute;decins: '+var_arr['medecins'] +'<br />';
		}
		
		Array_content_pts[i] = html;
		
		marker.html = html;
		marker.point = point;
		
		GEvent.addListener(marker, "click", function() {	
			//marker.openInfoWindowHtml(Array_content_pts[ZX]);
			//marker.openInfoWindowHtml(html);
			
			if(marker.ZoomFnc >= 10){
				map.setZoom(marker.ZoomFnc);
			}
			marker.openInfoWindowHtml(marker.html);
			map.setCenter(marker.point);
			
			marker.ZoomFnc = 0;
			//map.setCenter(marker.getCenter());
			//ZX++;
			// infoUrl = marker1.htm
			// marker.openInfoWindowHtml(html, {maxUrl:infoUrl});
			// marker.openInfoWindowTabsHtml([new GInfoWindowTab(label1,html1), new GInfoWindowTab(label2,html2)]);
		});
		
		
        GEvent.addListener(marker,"mouseover", function() {
			//marker.openInfoWindowHtml(html);
        });
              
        GEvent.addListener(marker,"mouseout", function() {
			//map.closeInfoWindow();
        });  		
		
        //marker.openInfoWindowHtml(html);
        
		gmarkers[t] = marker;
        // add a line to the side_bar html
        
		if(var_arr['nom'] != ''){
        	side_bar_html += '<div class="arrondiblk">'+ html +'<br /><a href="javascript:myclick(' + t + ')">Voir sur la carte</a><!--<br /><hr style="width: 100%; height: 1px; background: #000; margin-top: 5px;"><br />--></div>';
		}
        t++;
		return marker;
	}

	
	function myclick(i) {
		gmarkers[i].ZoomFnc = 15;
		GEvent.trigger(gmarkers[i], "click");
	}
    
	function isArray(obj) {
		if (obj.constructor.toString().indexOf("Array") == -1)
			return false;
		else
			return true;
	} 
