// JavaScript Document

    if (GBrowserIsCompatible()) {
          
		 var map = new GMap2(document.getElementById("map"));
		 var htmls = [];
		 var gmarkers = [];
		 var to_htmls=[];
		 var from_htmls=[];
		 
		 
      	// create the map
	   	function loadmap() {
      			//var map = new GMap2(document.getElementById("map"));
      			map.addControl(new GSmallMapControl());
      			map.addControl(new GMapTypeControl());
   	 			map.setCenter( new GLatLng(41.6, -72.68966674804688), 9);  //center area
	   	}
		
		//the search button
		function getAlert()
		{			
			var cnty= "";
			var farm= "";
			
			cnty = document.form1.select1.value;
			farm = document.form2.textfield.value;
			if(cnty == "All" && farm != "")
			{
				//alert('please select a county first');
				searchAll(farm);
			}
			else
			{
				if (farm != "")
				{
						searchFarm(cnty, farm);
				}
				else
				{
					alert('please fill the farm text box');
					document.form2.textfield.value.focus();
				}
			}
		}
		function onEnter( evt, frm ) 
		{
			var keyCode = null;
			if( evt.which ) 
			{
				keyCode = evt.which;
			}
			else if( evt.keyCode ) 
			{
				keyCode = evt.keyCode;
			}
			if( 13 == keyCode ) 
			{
				document.form2.Search.click();
				return false;
			}
			return true;
		}

		function MM_preloadImages() { //v3.0
		  	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
			var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
			if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
		}
	   	// fn thst loads XML file
  	 	function loadXMLDoc(dname)
		{
		
			var xmlDoc;
			// code for IE
			if (window.ActiveXObject)
			{
				xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			}

			// code for Mozilla, Firefox, Opera, etc.
			else if (document.implementation && document.implementation.createDocument)
			{
				xmlDoc=document.implementation.createDocument("","",null);
			}
			else
			{
				alert('Your browser cannot handle this script');
			}
			xmlDoc.async=false;
			xmlDoc.load(dname);
			return(xmlDoc);
		}
		
		// functions that open the directions forms
      	function tohere(i ) 
		{
        	gmarkers[i].openInfoWindowHtml(to_htmls[i]); //when click info from the data file is store here
      	}
      	function fromhere(i) 
		{
       		 gmarkers[i].openInfoWindowHtml(from_htmls[i]);
      	}
		
		// A function that search on a farm in a county
     	function searchFarm(cnty, farm) 
	 	 {
				var xmlDoc = loadXMLDoc("Data.xml");
				var farms = xmlDoc.documentElement.getElementsByTagName(cnty);
				
				map.getInfoWindow().hide();           
				map.clearOverlays();
				
				//reset markers to empty
				gmarkers = [];
				htmls = [];
				to_htmls=[];
		 		from_htmls=[];
				
				var i = 0;
				var n = 0;
				var fFound = false; 
				while( i<farms.length)
				{
					var str = "";
					str = farms[i].getElementsByTagName("Business")[0].firstChild.nodeValue;
					var strr1 = str.toLowerCase();
					var strr2 = farm.toLowerCase();
					var found = strInStr(strr1, strr2) ;
					if(found)
					{
						fFound = true; 
						var label = farms[i].getElementsByTagName("Business")[0].firstChild.nodeValue;
						var lat = parseFloat(farms[i].getElementsByTagName("Lat")[0].firstChild.nodeValue);
						var lng = parseFloat(farms[i].getElementsByTagName("Lon")[0].firstChild.nodeValue);
						var point = new GLatLng(lat,lng);
						var html = farms[i].getElementsByTagName("Html")[0].firstChild.nodeValue;
						
						
						var marker = createMarker(point,label,html, n);
						
						map.addOverlay(marker);
						//marker.openInfoWindowHtml(html);
						n++
					}
					i++;
				}	
				
				if (!fFound)
				{
						alert ('Farm is not found');
					
				}else
				{
					alert ('Found ' + n + ' Farms');
					gmarkers[0].openInfoWindowHtml(htmls[0]);
					}
				
			
	 	 }// End of searchFarm
		 
		 function getCounty(k)
		 {
			 	var county = "";
				switch (k){
							case 1: 
									county = "Hartford";
									break;
							case 2: 
									county = "Windham";
									break;
							case 3: 
									county = "Tolland";
									break;
							case 4: 
									county = "Newhaven";
									break;
							case 5: 
									county = "Newlondon";
									break;
							case 6: 
									county = "Litchfield";
									break;
							case 7: 
									county = "Fairfield";
									break;
							case 8: 
									county = "Middlesex";
									break;
							default : alert("I\'m sure it was great");
					  	}// end switch

				return county;
		 }
		 
		 function searchAll(farm) 
	 	 {
				var xmlDoc = loadXMLDoc("Data.xml");
				var farms;
				
				map.getInfoWindow().hide();           
				map.clearOverlays();
				
				//reset markers to empty
				gmarkers = [];
				htmls = [];
				to_htmls=[];
		 		from_htmls=[];
				
				var n = 0;
				var fFound = false; 
				
				for(var k=1; k<=8; k++)
				{
					var county = getCounty(k);
					
					farms = xmlDoc.documentElement.getElementsByTagName(county);
					for(var i=0; i<farms.length; i++)
					{
						var str = "";
						str = farms[i].getElementsByTagName("Business")[0].firstChild.nodeValue;
						var strr1 = str.toLowerCase();
						var strr2 = farm.toLowerCase();
						var found = strInStr(strr1, strr2) ;
						if(found)
						{
							fFound = true; 
							var label = farms[i].getElementsByTagName("Business")[0].firstChild.nodeValue;
							var lat = parseFloat(farms[i].getElementsByTagName("Lat")[0].firstChild.nodeValue);
							var lng = parseFloat(farms[i].getElementsByTagName("Lon")[0].firstChild.nodeValue);
							var point = new GLatLng(lat,lng);
							var html = farms[i].getElementsByTagName("Html")[0].firstChild.nodeValue;
							
							
							var marker = createMarker(point,label,html, n);
							
							map.addOverlay(marker);
							//marker.openInfoWindowHtml(html);
							n++
						}// end if
					}	//end j for go through farms in each county
				}//edn k for  go through counties
				
				if (!fFound)
				{
						alert ('Farm is not found');
					
				}else
				{
					alert ('Found ' + n + ' Farms');
					gmarkers[0].openInfoWindowHtml(htmls[0]);
				}
	 	 }// End of searchFarm
		function strInStr(str, subStr) 
		{
			
			var x = subStr.split(" ");
			var arr=[];
			for(var i=0; i<x.length; i++)
			{
				var found = false;
  				if(str.indexOf(x[i]) != -1)	
				{
					found = true;
					arr[i]=found;
				}

			}
			for(var i=0; i<x.length; i++)
			{
				var found = arr[i];
  				if(!found)	
				{
					found = false;
					break;
				}

			}
			
			
			return found; 
		}
		
		 function createMarker(point,name,html,i) 
		{
			
			var baseIcon = new GIcon();
          		baseIcon.iconSize=new GSize(20,20);
          		baseIcon.shadowSize=new GSize(28,20);
          		baseIcon.iconAnchor=new GPoint(16,32);
          		baseIcon.infoWindowAnchor=new GPoint(16,0);
	
	  		var farmicon = new GIcon(baseIcon, "images/icon56.png", null, "images/icon56s.png");
			var marker = new GMarker(point,farmicon);
			
			//------driving direction----------      
			// The info window version with the "to here" form open, data from xml file are being loadd into to_htmls[i]
        	to_htmls[i] = html + '<br>Directions: <b>To here</b> - <a href="javascript:fromhere(' + i + ')">From here</a>' +
			   '<br>Start address:<form action="http://maps.google.com/maps" method="get" target="_blank">' +
			   '<input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /><br>' +
			   '<INPUT value="Get Directions" TYPE="SUBMIT">' +
			   '<input type="hidden" name="daddr" value="' + point.lat() + ',' + point.lng() + 
					  // "(" + name + ")" + 
           '"/>';
        	// The info window version with the "to here" form open, data from xml file are being loaded into from_htmls[i]
       	 	from_htmls[i] = html + '<br>Directions: <a href="javascript:tohere(' + i + ')">To here</a> - <b>From here</b>' +
			   '<br>End address:<form action="http://maps.google.com/maps" method="get"" target="_blank">' +
			   '<input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" /><br>' +
			   '<INPUT value="Get Directions" TYPE="SUBMIT">' +
			   '<input type="hidden" name="saddr" value="' + point.lat() + ',' + point.lng() +
					  // "(" + name + ")" + 
			   '"/>';
        	// The inactive version of the direction info, once the to here or from here is click , information will be loaded into the window pane
        	html = html + '<br>Directions: <a href="javascript:tohere('+i+')">To here</a> - <a href="javascript:fromhere('+i+')">From here</a>';

			//--------window info--------------------
			GEvent.addListener(marker, "click", function()
												{
													marker.openInfoWindowHtml(html);
												});
       
        	gmarkers[i] = marker;
        	htmls[i] = html;
        	
        	return marker;
      }
     
      
    }

    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
    
