// JavaScript Document

var map;
// arrays to hold copies of the markers used by the side_bar
// because the function closure trick doesnt work there

var gmarkers = [];

var i = 0;

var selectedMarker;

var searchResultMarker;
var centerLatitude=0;
var centerLongitude=0;
var centerZoomLevel=0;
var searchResultZoomLevel=0;
var defaultIconImage;
var selectedIconImage;
var searchResultIconImage;


function changeIt(id) {
	var url = 'http://www.saveursdelaval.com/Search?view=0&entrepriseId='+id;
	GDownloadUrl(url, function(data, responseCode) {
		
		if(responseCode == 200) {
		
			var innerHTML = "";
		
			innerHTML="";

			var lines  = [];
			var parts  = [];
			
			// === split the document into lines ===		
			parts = data.split("|");
			
			try {
					
					reInitializeEntreprise();
				
					// Entreprise name
					innerHTML+="<h4>"+parts[0]+"</h4>";
					// Address
					innerHTML+='<p class="vert">'+parts[1]+'<br>';
					// Zone
					innerHTML+=parts[2]+", ";
					// City
					innerHTML+=parts[3]+"<br>";
					// Telephone 1
					innerHTML+=parts[4];
					// Telephone 2
					if (parts[5].length>0 && parts[5] != 'null') {
						innerHTML+=" ou "+parts[5];
					}
					
					innerHTML+='</p>';
					
					innerHTML+='<p class="vert">';
		
					// Email
					if (parts[6].length>0 && parts[6] != 'null') {
						innerHTML+='<img src="images/icone_mail.jpg" width="20" height="20" border="0" align="absmiddle" />&nbsp;';
						innerHTML+='<a class="map_link" alt="'+parts[6]+'" title="'+parts[6]+'" target="_blank" href="mailto:'+parts[6]+'" onClick="javascript:_gaq.push([\'_trackEvent\', \'Clic sur fiche entreprise\', \'Clic sur addresse courriel\',\''+parts[0].trim()+'\']);">Courriel</a><br>';
						
					}
					
					// Internet
					if (parts[7].length>0 && parts[7] != 'null') {
						innerHTML+='<img src="images/icone_www.jpg" width="20" height="20" border="0" align="absmiddle" />&nbsp;';
						innerHTML+='<a class="map_link" alt="'+parts[7]+'" title="'+parts[7]+'" target="_blank" href="'+parts[7]+'" onClick="javascript:_gaq.push([\'_trackEvent\', \'Clic sur fiche entreprise\', \'Clic sur addresse site internet\',\''+parts[0].trim()+'\']);">Site Internet</a><br>';
					}
					
					// localiser
					
					innerHTML+='<img src="images/icone_itineraire.jpg" width="20" height="20" border="0" align="absmiddle" />&nbsp;';
					innerHTML+='<a  class="map_link" alt="Itin&eacute;raire" target="_blank" href="http://maps.google.com/maps?f=d&saddr=&daddr='+parts[1]+','+parts[3]+', quebec&hl=fr" onClick="javascript:_gaq.push([\'_trackEvent\', \'Clic sur fiche entreprise\', \'Clic sur localiser\',\''+parts[0].trim()+'\']);">Itin&eacute;raire</a><br>';
					
					innerHTML+="</p>";
					
					// Opening hours
					if (parts[9].length>0 && parts[9] != 'null') {
						innerHTML+='<p class="vert"><strong>Heures d&#39;ouverture: </strong>'+parts[9]+'</p>';
					}
					// Products
					if (parts[10].length>0 && parts[10] != 'null') {
						innerHTML+='<p class="vert"><strong>Produits: </strong>'+parts[10]+'</p>';
					}
					// Specificity
					if (parts[11].length>0 && parts[11] != 'null') {
						innerHTML+='<p class="vert"><strong>Sp&eacute;cificit&eacute;s: </strong>'+parts[11]+'</p>';
					}
					// Special note
					if (typeof(parts[12])!="undefined"  && parts[12].length> 1 && parts[12] != 'null') {
						innerHTML+='<p class="vert"><strong>Mention Sp&eacute;ciale:</strong>'+parts[12]+'</p>';
					}
					//innerHTML+="<p></p>"
					//innerHTML+='<p class="vert">'+data+'</p>';

					
			} catch (err) {
				alert(err.description+" "+err.message);
				alert("Une erreur est survenue en chargeant la page.  Svp réactualiser la page.");
				//window.location.reload();
			} // end try
			
			innerHTML+="</div>";
			
			document.getElementById("entreprise_section").innerHTML=innerHTML;

		} // end if
	});
}

function sevent()
{
reInitializePostalCode()

reInitializeEntreprise();

reInitializeMarkers();

var index = document.getElementById("quartier_list").selectedIndex;

switch(index)
{
case 1:
	// Auteuil
  setCenter(45.64003,-73.73466, 13); reInitializeControls(); reInitializeMarkers();
  break;
case 2:
	// Chomedey
  setCenter(45.55186,-73.75440, 13); reInitializeControls(); reInitializeMarkers();
  break; 

case 3:
	// Duvernay
	setCenter(45.64009,-73.66711, 13); reInitializeControls(); reInitializeMarkers();
  break; 
  
case 4:
	// Fabreville
	setCenter(45.58125,-73.85679, 13); reInitializeControls(); reInitializeMarkers();
  break;

case 5:
	// St-Francois
	setCenter(45.68532,-73.68805, 12); reInitializeControls(); reInitializeMarkers();
  break;
  
case 6:
	// Ste-Dorothèe
	setCenter(45.53930,-73.82761, 13); reInitializeControls(); reInitializeMarkers();
  break;
 
case 7:
	// Ste-Rose
	setCenter(45.60371,-73.78469, 13); reInitializeControls(); reInitializeMarkers();
	break;

case 8:
	//Saint-Vincent-de-Paul
	setCenter(45.62958,-73.64084, 13); reInitializeControls(); reInitializeMarkers();
	break;

default:
	reInitialize();
}

}

function setDefaultVariables(xml) {
}

 // This function builds the HTML for the info window
      function buildInfoWindowHTML(markerXML) {
	   
	   var info_window_html = '<html><table width="200" align="center">';
	   
        info_window_html += '<tr><td><h4>'+GXml.value(markerXML.getElementsByTagName("name_fr")[0])+'</h4></td></tr>';
		
        info_window_html += '<p>'+GXml.value(markerXML.getElementsByTagName("address_fr")[0]);
		//+ '<br>'+GXml.value(markerXML.getElementsByTagName("city")[0])+'</br>'
        //+ '<br>'+GXml.value(markerXML.getElementsByTagName("telephone_1")[0])+'</br></p></td></tr>';
		//info_window_html += '<tr><td><p>'+'<a target="_blank" href="http://maps.google.com/maps?f=d&amp;saddr=&amp;daddr='
		//+ GXml.value(markerXML.getElementsByTagName("address_fr")[0])+',' 
		//+ GXml.value(markerXML.getElementsByTagName("city")[0])+',' 
		//+ 'quebec&hl=fr"/>'; 
		
		info_window_html += '<tr ><td>Voir les détails en bas de la carte</p></td></tr></table></html>';

		return info_window_html;
      }


// A function to create the marker and set up the event window
      function createMarker(markerValue, markerOptions) {
		
        var point = new GLatLng(markerValue.latitude,markerValue.longitude);

		var marker = new GMarker(point, markerOptions);
		
        GEvent.addListener(marker, "click", function() {
			
			changeIt(markerValue.id);
			
			if (selectedMarker != null) {
				selectedMarker.setImage(defaultIconImage);
			}
			
			selectedMarker = marker;
			
			marker.setImage(selectedIconImage);

        });
		
        // save the info we need to use later for the side_bar
        gmarkers[i] = marker;
       
        i++;
        return marker;
      }

    
    function initialize() {

      if (GBrowserIsCompatible()) {

			geocoder = new GClientGeocoder();
			

			map = new GMap2(document.getElementById("map_canvas"));
			
			map.setUIToDefault();
			map.removeMapType(G_SATELLITE_MAP);
			map.removeMapType(G_PHYSICAL_MAP);
	
			GDownloadUrl("google-map-config.txt", downloadConfig);
			

		}// end if (browser compatible)
	} // end initialize
		
	downloadConfig=function(data, responseCode) {
		
		if(responseCode == 200) {
			
			var lines  = [];
			var parts  = [];
			
			// === split the document into lines ===		
			lines = data.split("\n");
			
			try {

					parts = lines[0].split("|");
					
					centerLatitude=parseFloat(parts[0]);
					centerLongitude=parseFloat(parts[1]);
					centerZoomLevel=parseInt(parts[2]);
					searchResultZoomLevel=parseInt(parts[3]);
					defaultIconImage=parts[4];
					selectedIconImage=parts[5];
					searchResultIconImage=parts[6];
						
					reInitialize();
					
					GDownloadUrl("entreprises.txt", downloadEntreprises);
						
			} catch (err) {
				alert(err.description+" "+err.message);
				alert("Une erreur est survenue en chargeant la page.  Svp réactualiser la page.");
				//window.location.reload();
			}
		} // end if
	} // end downloadConfig()
	
downloadEntreprises = function(data, responseCode) {
	
	if(responseCode == 200) {
											 
		var marker = null;
		var mapicon = new GIcon();
		mapicon.iconAnchor = new GPoint(20, 21);
		mapicon.image = defaultIconImage;
		markerOptions = { icon:mapicon };
		
		var lines  = [];
		
		var parts  = [];
		
		var i=0;
		
		var markerValue = null;
		
		try {
		
			lines = data.split("\n");
			
			
				for (i=0; i<lines.length; i++) {
					
					parts = lines[i].split("|");
							
					if (parts.length == 4) {
						markerValue = new Object;
						markerValue.id=parseInt(parts[0]);
						markerValue.name=parts[1];
						markerValue.latitude=parseFloat(parts[2]);
						markerValue.longitude=parseFloat(parts[3]);
						marker = createMarker(markerValue, markerOptions);
						gmarkers[i] = marker;
						map.addOverlay(marker);
					} 
				}// end for	
				
		} catch (err) {
			alert(err.description+" "+err.message);
			alert("Une erreur est survenue en chargeant la page.  Svp réactualiser la page.");
		}
	} // end if
	
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), centerZoomLevel);
} // end downloadData

function reInitialize() {
	
	reInitializePostalCode();
	
	reInitializeMarkers();
	
	reInitializeEntreprise()
	
	reInitializeZones();
	
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), centerZoomLevel);
}


function reInitializePostalCode() {	
document.getElementById("map_messages").innerHTML="";
	var field = document.getElementById("postal_input").value="";
}

function reInitializeEntreprise() {	
	document.getElementById("entreprise_section").innerHTML="<h4>Cliquez sur l'ic&ocirc;ne d'une entreprise (feuille) pour voir les d&eacute;tails s'afficher ici.</h4>";
	
}

function reInitializeZones() {	
	
	document.getElementById("quartier_list").selectedIndex=0;
	

}

function reInitializeMarkers() {
	
	if (searchResultMarker != null) {
		map.removeOverlay(searchResultMarker);
		searchResultMarker = null;
	}
	
	if (selectedMarker !=null) {
		selectedMarker.setImage(defaultIconImage);
	}
	
}


function setCenter(latitude, longitude, zoomLevel) {
	map.setCenter(new GLatLng(latitude, longitude), zoomLevel);
}

  function showAddress() {
  
  document.getElementById("map_messages").innerHTML="";
  
		reInitializeMarkers();
		
		reInitializeEntreprise()
		
		document.getElementById("quartier_list").selectedIndex = 0;
		
		var field = document.getElementById("postal_input").value;
		
		if (geocoder) {
        	geocoder.getLatLng(
			field,
			function(point) {
			if (!point) {
			document.getElementById("map_messages").innerHTML='<p class="orange">Le code entr&eacute; est introuvable !</p>';

			} else {
				if (searchResultMarker == null) {
					var mapicon = new GIcon();
					mapicon.iconAnchor = new GPoint(20, 21);
					mapicon.image = searchResultIconImage;
					markerOptions = { icon:mapicon };
					searchResultMarker = new GMarker(point, markerOptions);
					map.addOverlay(searchResultMarker);
				}
				searchResultMarker.setPoint(point);
				map.setCenter(point, searchResultZoomLevel);
				
			} // end if 

           }// end function
 
        ); // end geocoder.getLatLng

       } // end if (geocoder)

   }// end showAddress()
   
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}


   

