function querySt(ji) {
hu = window.location.search.substring(1);
gy = hu.split("&");
for (i=0;i<gy.length;i++) {
ft = gy[i].split("=");
if (ft[0] == ji) {
return ft[1];
}
}
}
function getZoom(){
	var r = querySt("radius") ;
	if(r){

     if( r <= 0.2  )
       return 16  ;
    else if( r <= 0.5  )
        return 15  ;
    else if( r <= 1  )
        return  14  ;
    else if( r <= 2  )
        return  13  ;
    else if( r <= 3  )
        return  12  ;
    else if( r <= 7  )
        return  11  ;
    else if( r <= 15  )
        return  10  ;
	else if( r <= 30  )
        return  9  ;
	else if( r <= 60  )
        return  8  ;
	else if( r <= 150  )
        return  7  ;
	else if( r <= 300  )
        return  6  ;
    return 7;
	}
	return 3;
}
function directionsEvent(){
			alert($(this).parent().parent().find('h2').text());
		}
function createMarker(point, descr) {
/*var blueIcon = new GIcon(G_DEFAULT_ICON);
						blueIcon.image = "http://cdn.ovationguitars.com/shared/icons/ova_google_marker.png";
						blueIcon.shadow = "http://cdn.ovationguitars.com/shared/icons/ova_google_marker_shadow.png";
						blueIcon.iconSize = new GSize(26, 29);
						blueIcon.iconAnchor = new GPoint(13,29);
						blueIcon.infoWindowAnchor = new GPoint(13,20);
	var marker = new GMarker(point,{icon:blueIcon});
	GEvent.addListener(marker, "click", function() {
		marker.bindInfoWindowHtml(descr);
	});*/
	//env.map.setCenter(point, 10);
	//return marker;
}

(function($) {
	$.fn.googleMap = function(options) {
	
		var options = $.extend({
			debug					:	false,
			clickSelector			:	'li.dealer_result',
			childAddressSelector	:	'input[type="hidden"]',
			initZoom				:	{lat:37.0625, lon:-95.677068, zoom:3},
			zoom					:	13
		}, options);
		
		//Give this element an ID if it does not have one
		if(!$(this).attr('id').length) {
			$(this).attr('id', 'map_window');
		}
		
		var env = {
			trueThis	:	$(this),
			clickables	:	$(options.clickSelector),
			map 		: 	new GMap2(document.getElementById($(this).attr('id'))),
			geocoder 	:	new GClientGeocoder(),
			tmpPoint	:	false,
			tmpData		:	false
		}
		
		env.clickables.click(function() {
			env.clickables.removeClass('gmap-selected');
			$(this).addClass('gmap-selected');
			var address = $(options.childAddressSelector, $(this)).val();
			//if(options.debug) log.debug('Address Click: '+address);
			pointByAddress(address, $(this), false);
			pageTracker._trackEvent( 'Dealer Locator Click', $(this).find('h2').text() );
			$('html, body').animate({scrollTop: $("#page_title").offset().top}, 500);
			return true;
		});
		
		/* Test */
		
		
		/*	Does this need to be broken out?  */
		$(this).bind('pointReceived', getPoint);
	
		function getPoint(e) {
			//if(options.debug) log.debug('getPoint: '+env.tmpPoint);
		}
		
		function pointByAddress(address, obj, dontSetCenter) {
			env.geocoder.getLatLng(address, function(point) {
				if(!point) {
					//if(options.debug) log.debug('pointByAddress: no pointer');
					env.tmpPoint = false;
				} else {
					env.tmpPoint = point;
					env.trueThis.trigger('pointReceived');
					if(dontSetCenter === false) { env.map.setCenter(new GLatLng(env.tmpPoint.lat() + .01,env.tmpPoint.lng()), options.zoom); }
					//var marker = new GMarker(env.tmpPoint);
					//env.map.addOverlay(marker);
					
					var title = obj.children('h2').html();
					var tAddress = address.split(',');
					var faddress = ''; var len = tAddress.length;
					for(var i=0; i<len; ++i) {
						faddress += tAddress[i]+'<br />';
					}

					if(dontSetCenter === false) {
						 createMarker(point, '<h2>'+title+'</h2><p>'+faddress+'</p>');
						 if(obj.data("marker")){
							var addrLink = "http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=" + $(obj).find("input[name=gAddr]").val() + "&hl=en&geocode=&mra=ls&sll=37.0625,-95.677068&sspn=40.052282,79.013672&ie=UTF8&z=4"; 
							var html = "<h2>"+title+"</h2>\n";
							html += "<p class='gpara'>"+faddress+"</p>\n";
							html += " <p class='gpara'>"+ $(obj).find(".dealer_phone").text() + "</p>\n";
							if($(obj).find(".their_url a").length){
								var e = $(obj).find(".their_url a");
								html += '<p class="gpara"><a href="' + e.attr("href") + '" target="_blank">' + e.text() +'</a></p>';
							}
							html += " <p class='gpara'><a class=\"direction2\" href=\"" + addrLink + "\" target=\"_blank\">Get Directions</a></p>\n";
							obj.data("marker").openInfoWindowHtml(html);
							$('a.direction2').click(function(){pageTracker._trackEvent( 'Dealer Locator Directions', $(this).parent().parent().find('h2').text());});
						}
						else{
							var blueIcon = new GIcon(G_DEFAULT_ICON);
							blueIcon.image = "http://cdn.ovationguitars.com/shared/icons/ova_google_marker.png";
							blueIcon.shadow = "http://cdn.ovationguitars.com/shared/icons/ova_google_marker_shadow.png";
							blueIcon.iconSize = new GSize(26, 29);
							blueIcon.iconAnchor = new GPoint(13,29);
							blueIcon.infoWindowAnchor = new GPoint(13,17);
							var marker = new GMarker(env.tmpPoint,{icon:blueIcon});
							env.map.addOverlay(marker);
							obj.data("marker",marker);
							marker.openInfoWindowHtml('<h2>'+title+'</h2><p>'+faddress+'</p>');
							
						}
							
					} else if(dontSetCenter === true) {
						
						var blueIcon = new GIcon(G_DEFAULT_ICON);
						blueIcon.image = "http://cdn.ovationguitars.com/shared/icons/ova_google_marker.png";
						blueIcon.shadow = "http://cdn.ovationguitars.com/shared/icons/ova_google_marker_shadow.png";
						blueIcon.iconSize = new GSize(26, 29);
						blueIcon.iconAnchor = new GPoint(13,29);
						blueIcon.infoWindowAnchor = new GPoint(13,17);
						var marker = new GMarker(env.tmpPoint,{icon:blueIcon});
						//marker.bindInfoWindowHtml('<h2>'+title+'</h2><p>'+faddress+'</p>');
						GEvent.addListener(marker, "click", function() {
							 pageTracker._trackEvent( 'Dealer Locator Click', $(obj).find('h2').text());
							var addrLink = "http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=" + $(obj).find("input[name=gAddr]").val() + "&hl=en&geocode=&mra=ls&sll=37.0625,-95.677068&sspn=40.052282,79.013672&ie=UTF8&z=4"; 
							var html = "<h2>"+title+"</h2>\n";
							html += "<p class='gpara'>"+faddress+"</p>\n";
							html += " <p class='gpara'>"+ $(obj).find(".dealer_phone").text() + "</p>\n";
							if($(obj).find(".their_url a").length){
								var e = $(obj).find(".their_url a");
								html += '<p class="gpara"><a  href="' + e.attr("href") + '" target="_blank">' + e.text() +'</a></p>';
							}
							html += " <p class='gpara'><a class=\"direction2\" href=\"" + addrLink + "\" target=\"_blank\">Get Directions</a></p>\n";
						
							
							
							marker.openInfoWindowHtml(html);
							$('a.direction2').click(function(){pageTracker._trackEvent( 'Dealer Locator Directions', $(this).parent().parent().find('h2').text());});
						});
						env.map.addOverlay(marker);
						obj.data("marker",marker);
						return marker;
					}
				}
			});
		}
		
		/******************************
			INIT and RUN  
		******************************/
		
		//Simulate Search, then do this!
		if(env.clickables.length) {
			env.clickables.each(function() {
				var address = $(options.childAddressSelector, $(this)).val();
				//if(options.debug) log.debug('Address Init: '+address);
				pointByAddress(address, $(this), true);
			});
			
			/*********************************************
			TO DO: Figure out where to setCenter here:
			To see the most markers? (Algorithm?)
			Keep on USA? Zoom into first Marker?
			********************************************/
			
			if($("[name=init_lat]")){
				var zoom = getZoom();
				 pageTracker._trackEvent('Dealer Locator Search', querySt('zip'),querySt('radius'));
				env.map.setCenter(new GLatLng($("[name=init_lat]").val(),$("[name=init_lon]").val()),getZoom());
			}
				
			else
				env.map.setCenter(new GLatLng(options.initZoom.lat,options.initZoom.lon), options.initZoom.zoom);
		} else {
			env.map.setCenter(new GLatLng(options.initZoom.lat,options.initZoom.lon), options.initZoom.zoom);
		}
		
		//Always set this
		env.map.setUIToDefault();
		
		$('a.direction').click(directionsEvent);
	}
})(jQuery);
