var http = getHTTPObject();
var map = null;
var geocoder = null;
    function initialize(myLat, myLong, myZoom, myText) {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mymaps"));


        //map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(myLat,myLong), myZoom);
        map.addControl(new GSmallMapControl());
		geocoder = new GClientGeocoder();
		var bounds = map.getBounds();
        var southWest = bounds.getSouthWest();
        var northEast = bounds.getNorthEast();		
        var topLat = northEast.lat();
        var rightLng = northEast.lng();
        var botLat = southWest.lat();
        var leftLng = southWest.lng();
        map.clearOverlays();
	if(myText != "")
	{
		showAddress(myLat, myLong, myText, 1);
	}
	else
	{
	        updateMap(topLat, botLat, leftLng, rightLng);
	}
      }
    }
    function showMyAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {

              map.setCenter(point, 13);
              //var marker = new GMarker(point);
              //map.addOverlay(marker);
              //marker.openInfoWindowHtml(address);
              var bounds = map.getBounds();
              var southWest = bounds.getSouthWest();
              var northEast = bounds.getNorthEast();
              var topLat = northEast.lat();
              var rightLng = northEast.lng();
              var botLat = southWest.lat();
              var leftLng = southWest.lng();
              map.clearOverlays();
              updateMap(topLat, botLat, leftLng, rightLng);
            }
          }
        );
      }
    }

function updateMap(topLat, botLat, leftLng, rightLng) {
	theType = 1;
	url = "/getPoints.php?topLat=" + topLat + "&botLat=" + botLat + "&leftLng=" + leftLng + "&rightLng=" + rightLng; // The server-side script

	http.open("GET", url, true);

	http.onreadystatechange = handleHttpResponse;
	http.send(null);

 }

	function getHTTPObject()
	{
      var xmlhttp = null;
      var success = false;

      // List of MS XMLHTTP versions - newest first
      var MSXML_XMLHTTP_PROGIDS = new Array(
          'MSXML2.XMLHTTP.5.0',
          'MSXML2.XMLHTTP.4.0',
          'MSXML2.XMLHTTP.3.0',
          'MSXML2.XMLHTTP',
          'Microsoft.XMLHTTP'
      );

      // test for IE implementations first
      for (var i = 0; i < MSXML_XMLHTTP_PROGIDS.length &&
           !success; i++)
      {
         try
         {
            xmlhttp = new ActiveXObject(
               MSXML_XMLHTTP_PROGIDS[i]);
            success = true;
            return xmlhttp;
         }
         catch (e)
         {
            xmlhttp = false;
         }
      }

      // Now test for non-IE implementations
      if (!xmlhttp &&
          typeof XMLHttpRequest != 'undefined')
      {
         try
         {
            xmlhttp = new XMLHttpRequest();
         }
         catch (e)
         {
            xmlhttp = false;
         }
      }

      return xmlhttp;
	}

function handleHttpResponse() {

	if (http.readyState == 4)
	{
		if(theType == 1)
		{

	    		var xmlDocument = http.responseXML;
		    	var myAddress = xmlDocument.getElementsByTagName('address');
			var myLocName = xmlDocument.getElementsByTagName('locname');
		    	var myCity = xmlDocument.getElementsByTagName('city');
	    		var myState = xmlDocument.getElementsByTagName('state');
		    	var myZip = xmlDocument.getElementsByTagName('zip');
		    	var myPhone = xmlDocument.getElementsByTagName('phone');
	    		var myEmail = xmlDocument.getElementsByTagName('email');
		    	var myWebsite = xmlDocument.getElementsByTagName('website');
		    	var myLocationType = xmlDocument.getElementsByTagName('locationtype');
	    		var myDrinkStyle = xmlDocument.getElementsByTagName('drinkstyle');
		    	var xcord = xmlDocument.getElementsByTagName('xcoord');
		    	var ycord = xmlDocument.getElementsByTagName('ycoord');
		    	var locid = xmlDocument.getElementsByTagName('locid');
			var subname = xmlDocument.getElementsByTagName('subname');
			
			var subwebsite = xmlDocument.getElementsByTagName('subwebsite');
			var dataArrayLen = myAddress.length;
			for (var i=0; i<dataArrayLen; i++)
		    	{

		    		var xml_Address = myAddress[i].firstChild.data;
				var xml_LocName = myLocName[i].firstChild.data;
		    		var xml_City = myCity[i].firstChild.data;
	    			var xml_State = myState[i].firstChild.data;
	    			var xml_Zip = myZip[i].firstChild.data;
		    		var xml_Phone = myPhone[i].firstChild.data;
		    		var xml_Email = myEmail[i].firstChild.data;
	    			var xml_Website = myWebsite[i].firstChild.data;
	    			var xml_locationType = myLocationType[i].firstChild.data;
		    		var xml_drinkStyle = myDrinkStyle[i].firstChild.data;
		    		var xml_xcord = xcord[i].firstChild.data;
	    			var xml_ycord = ycord[i].firstChild.data;
	    			var xml_locid = locid[i].firstChild.data;
	    			var xml_subname = subname[i].firstChild.data;
	    			
	    			var xml_subwebsite = subwebsite[i].firstChild.data;
				var xml_submitted = "";
				if(xml_subname != "n/a")
				{
					xml_submitted = xml_submitted + "<br/>" + xml_subname;
				}
				if(xml_subwebsite != "n/a")
				{
					xml_submitted = xml_submitted + "<br/>" + "<a href=\"" + xml_subwebsite + "\" target=\"blank\">" + xml_subwebsite + "</a>";
				}
				if(xml_submitted != "")
				{
					xml_submitted = "<br/><br/><b>Submitted By</b>" + xml_submitted;
				}

				var thetext = "<TABLE border=0 cellpadding=0 cellspacing=0 width=350><TR><TD><a href=\"/location/" + xml_locid + "\">" + xml_LocName + "</a><br/>" + xml_Address + "<BR>" + xml_City + ", " + xml_State + " " + xml_Zip + "<br/>" + "Cheerwine Style: " + xml_drinkStyle + "<br/>" + "Location Type: " + xml_locationType + "<br/>" + xml_Phone + xml_submitted + "</TD><TD align=\"center\">&nbsp;</TD></TR></TABLE>";
			    	showAddress(xml_xcord, xml_ycord, thetext, 0);
		    	}
		}

	    if(theType == 2)
	    {
	    	 var xmlDocument = http.responseXML;
	    }

	    if(theType == 3)
	    {
	    	 var xmlDocument = http.responseXML;

	    }
	}
}

function createLocationInfo(locname,address,city,state,zip,phone,email,website, drinkStyle, locationType, subname,subemail,subwebsite,xcoord,ycoord)
{
	var bubbleText = "";
	if(subname != "n/a")
	{
		bubbleText = bubbleText + "<br/>" + subname;
	}
	if(subemail != "n/a")
	{
		bubbleText = bubbleText + "<br/>" + subemail;
	}
	if(subwebsite != "n/a")
	{
		bubbleText = bubbleText + "<br/>" + "<a href=\"" + subwebsite + "\" target=\"blank\">" + subwebsite + "</a>";
	}
	if(bubbleText != "")
	{
		bubbleText = "<br/><br/><b>Submitted By</b>" + bubbleText;
	}
	var thetext = "<TABLE border=0 cellpadding=0 cellspacing=0 width=350><TR><TD>" + locname + "<br/>" + address + "<BR>" + city + ", " + state + " " + zip + "<br/>" + "Cheerwine Style: " + drinkStyle + "<br/>" + "Location Type: " + locationType + "<br/>" + phone + bubbleText + "</TD><TD align=\"center\">&nbsp;</TD></TR></TABLE>";
    	showAddress(xcoord, ycoord, thetext);
}

function showAddress(xcord, ycord, displayText, decode)
{
	if(decode == 1)
	{
		displayText = URLDecode(displayText);
	}

	var myIcon = new GIcon(G_DEFAULT_ICON);
	myIcon.image = "http://www.cheerwinefinder.com/images/cheerwine_can.png";
	markerOptions = { icon:myIcon };
	var myMarker = new GMarker(new GPoint(ycord, xcord), markerOptions);
	GEvent.addListener(myMarker, 'click', function() {  
	myMarker.openInfoWindowHtml(displayText);
	});  
	map.addOverlay(myMarker);
}

function URLDecode(url) //function decode URL
{
	// Replace + with ' '
	// Replace %xx with equivalent character
	// Put [ERROR] in output if %xx is invalid.
	var HEXCHARS = "0123456789ABCDEFabcdef";
	var encoded = url;
	var plaintext = "";
	var i = 0;
	while (i < encoded.length)
	{
		var ch = encoded.charAt(i);
		if (ch == "+")
		{
			plaintext += " ";
			i++;
		}
		else if(ch == "'")
		{
			plaintext += " ";
			i++;
		}
		else if (ch == "%")
		{
			if (i < (encoded.length-2) && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 )
			{
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			}
			else
			{
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		}
		else
		{
			plaintext += ch;
			i++;
		}
	} // while
	return plaintext;
}; 

