// JavaScript Document
var gmapFunctions = ($("#map_canvas").length) ? {
	onSearchCompleate : function () {
	    var defaultPos = gmapFunctions.getDefaultGLatLng();
	    var stockist = null;  
	    var bounds = null;   
        var __lat = gmapFunctions.getLatitudeFromURL();
        var __long = gmapFunctions.getLongitudeFromURL();

        if (__lat && __long)
        {
            var requestLatLong = new GLatLng(__lat, __long);
            for (i=1; i<vars.stockist.length; i++) { 
                if (requestLatLong.distanceFrom(gmapFunctions.getGLatLng(vars.stockist[i])) == 0) {    
                    stockist = vars.stockist[i];
                }
            }  
            if (stockist == null)
            {
                bounds = new GLatLngBounds();
                bounds.extend(requestLatLong);
            }
            else
            {
                defaultPos = requestLatLong;
            }
        }
        else
        {	  
            for (i=1; i<vars.stockist.length; i++) { 
                latest = gmapFunctions.getGLatLng(vars.stockist[i]);
                if (latest.distanceFrom(defaultPos) > latest.distanceFrom(defaultPos)) {
                    stockist = vars.stockist[i];
                }
            }
        }
        if (stockist != null)
        {
            var closest = gmapFunctions.getGLatLng(stockist);
            bounds = new GLatLngBounds();
            bounds.extend(closest);
            setTimeout( function() {GEvent.trigger(stockist[13],"click")}, 100);             
        }
        if (bounds != null)
        {         
            bounds.extend(vars.map.getCenter());
            vars.map.setZoom(vars.map.getBoundsZoomLevel(bounds)-1);
            vars.map.setCenter(bounds.getCenter());
        }
	},
	
    dumpObj : function (object) { 
        var message;
        for (obj in object)
        {
            message = message + obj + " = " + eval("object."+obj) + "\t\t";
        }
        alert(message);
    },
	
	getDefaultGLatLng : function () {
	    return new GLatLng(dlat, dlng);
    },
    
    getGLatLng : function (stockist) {
		return new GLatLng(stockist[11],stockist[12]);
	},
	
	getInfoWindowHtml : function (stockist) {
		return "<h2>"+stockist[2]+"</h2>"+stockist[3]+"<br>"+stockist[4]+"<br>"+stockist[5]+"<br>"+stockist[6]+"<br>"+stockist[7]+"<br>";
	},
	
	addMarker : function (stockist) {
		var marker = new GMarker(new GLatLng(stockist[11],stockist[12])), that = this;
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(that.getInfoWindowHtml(stockist));
		});
	    stockist[13] = marker;
		return marker;
	},
	
	getAllMarkers : function () {
		var batch = [], that = this;
		for (var i = Number(0), n = Number(vars.stockist.length); i < n; i += 1) {
			batch.push(that.addMarker(vars.stockist[i]));
		}
		return batch;
	}, 
	   
	getAddressFromURL : function () {
		var __url = String(window.location), __arr, __args, __val;
		__arr = __url.split("?");
		if (__arr[1]) {
			if (__arr[1].indexOf("&") != -1) {
				__args = __arr[1].split("&");				
				for (var i = Number(__args.length); i > -1; i -= 1) {
					if (__args[i] && __args[i].indexOf("search") != -1) {
						__val = __args[i].split("=")[1];
						break;
					}
				}
			} else {
				if (__arr[1].indexOf("search") != -1) {
					__val = __arr[1].split("=")[1];
				}
			}
			if (__val) {
				return __val;
			} 
		}
		return false;
	},
	
	getLongitudeFromURL : function () {
		var __url = String(window.location), __arr, __args, __val;
		__arr = __url.split("?");
		if (__arr[1]) {
			if (__arr[1].indexOf("&") != -1) {
				__args = __arr[1].split("&");				
				for (var i = Number(__args.length); i > -1; i -= 1) {
					if (__args[i] && __args[i].indexOf("long") != -1) {
						__val = __args[i].split("=")[1];
						break;
					}
				}
			} else {
				if (__arr[1].indexOf("long") != -1) {
					__val = __arr[1].split("=")[1];
				}
			}
			if (__val) {
				return parseFloat(__val);
			} 
		}
		return false;
	},
	
	getLatitudeFromURL : function () {
		var __url = String(window.location), __arr, __args, __val;
		__arr = __url.split("?");
		if (__arr[1]) {
			if (__arr[1].indexOf("&") != -1) {
				__args = __arr[1].split("&");
				for (var i = Number(__args.length); i > -1; i -= 1) {
					if (__args[i] && __args[i].indexOf("lat") != -1) {
						__val = __args[i].split("=")[1];
						break;
					}
				}
			} else {
				if (__arr[1].indexOf("lat") != -1) {
					__val = __arr[1].split("=")[1];
				}
			}
			if (__val) {
				return parseFloat(__val);
			} 
		}
		return false;
	}
} : null ;

$(function () {
	
	if ($("#map_canvas").length) {
		if (GBrowserIsCompatible()) {
			var options = {
      			suppressInitialResultSelection : true,
				onMarkersSetCallback : function(markers) {
					var elements = document.getElementsByTagName("img");
					for (var i = Number(elements.length - 1); i > -1; i -= 1) {
						if(elements[i].id.indexOf("mtgt_unnamed_") != -1){
							elements[i].style.display = "none";
						}
					}
				}
      		};
			//var __ls = new google.maps.LocalSearch(options)
	        
			vars.map = new GMap2(document.getElementById("map_canvas"));// bind a search control to the map, suppress result list
			//vars.map.addControl(__ls, new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
	        //__ls.onMarkersSetCallback = gmapFunctions.onSearchCompleate;
			//GEvent.addListener(vars.map, "load", function() {
			//	var __val = gmapFunctions.getAddressFromURL();
			//	if (__val) {
			//		__ls.execute(__val); 
			//	}					    		
			//});
			
			vars.map.setCenter(gmapFunctions.getDefaultGLatLng(), 10);
			vars.map.addControl(new GLargeMapControl());
			vars.map.addControl(new GMapTypeControl());
            
            vars.map.setZoom(dzoom);

			vars.mgr = new MarkerManager(vars.map);
			vars.mgr.addMarkers(gmapFunctions.getAllMarkers(), 0, 17);
			vars.mgr.refresh();
		}
	}
	
	if ($('UL.drawers').length) {
		$('UL.drawers').accordion({
			// the drawer handle
			header: 'H2.drawer-handle',
			
			// our selected class
			selectedClass: 'open',
			
			// match the Apple slide out effect
			event: 'mousedown'
			
		});
		
		var strHref = window.location.href;
		if ( strHref.indexOf("/Products/") > -1 ){
			var activateAcc = 0;
		} else if ( strHref.indexOf("/Where-to-Buy/") > -1 ){
			var activateAcc = 1;
		} else if ( strHref.indexOf("/About-Us/") > -1 ){
			var activateAcc = 2;
		}
		
		$('UL.drawers').accordion("activate", activateAcc);
	}
	
	if ($("#tools").length) {
		$("#tools").find(".label").each(function(i){
			$(this).addClass("position"+i);
		})
		
		$("#tools a").bind("click", function(){
			var el = $(this).parents()[2], s, us, usa;
			
			if (el.className != "selected") {
				document.getElementById("tools").style.display = "none";
				
				if (el.className != "unselected-alt") {
					$(".unselected-alt").removeClass().addClass("unselected").children(".element").hide();
				}
				
				$(".selected").removeClass().addClass("unselected-alt").children(".element").hide();
				$(el).removeClass().addClass("selected").children(".element").show();
				
				document.getElementById("tools").style.display = "block";
				return false;
			}
		})
	}
	
	if ($("#navigation").length) {
		$("#navigation > ul > li").each(function () {
			$(this).hover(
				function () {
					$(this).addClass("sfhover");
				},
				function () {
					$(this).removeClass("sfhover");
				}
			)
		});
	}
});

$(window).unload(function (){
	if ($("#map_canvas").length) {
		GUnload();
	}
});
