//<![CDATA[

function generateLayerControl(layername, layerid) {
	function layerControl() {
	}
	layerControl.prototype = new GControl();
	
	layerControl.prototype.initialize = function(map) {
		var controlContainer = document.createElement("div");
		controlContainer.id = "photos";
		controlContainer.style.backgroundColor = "white";
		controlContainer.style.textAlign = "center";
		controlContainer.style.border = "1px solid darkblue";
		controlContainer.style.padding = "2px";
		
		var nameDiv = document.createElement("div");
		controlContainer.appendChild(nameDiv);
		nameDiv.appendChild(document.createTextNode(layername));
		
		var showLayerSpan = document.createElement("span");
		this.setButtonStyle_(showLayerSpan);
		controlContainer.appendChild(showLayerSpan);
		showLayerSpan.appendChild(document.createTextNode("Show"));
		GEvent.addDomListener(showLayerSpan, "click", function() {
			returnLayer(map, layerid).show();
		});
		
		controlContainer.appendChild(document.createTextNode("|"));
		
		var hideLayerSpan = document.createElement("span");
		this.setButtonStyle_(hideLayerSpan);
		controlContainer.appendChild(hideLayerSpan);
		hideLayerSpan.appendChild(document.createTextNode("Hide"));
		GEvent.addDomListener(hideLayerSpan, "click", function() {
			returnLayer(map, layerid).hide();
		});
		
		map.getContainer().appendChild(controlContainer);
		return controlContainer;
	}
	
	layerControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 80));
	}
	
	layerControl.prototype.setButtonStyle_ = function(button) {
		button.style.textDecoration = "underline";
		button.style.color = "#0000cc";
		button.style.backgroundColor = "white";
		button.style.font = "small Arial";
		button.style.padding = "2px";
		button.style.marginBottom = "3px";
		button.style.textAlign = "center";
		button.style.width = "6em";
		button.style.cursor = "pointer";
	}
	return layerControl.prototype;
}

function loadLayer(map, id, layertype) {
	var layer = new GLayer(layertype);
	map.addOverlay(layer);
	layerIDs[layers.push(layer)-1]=id;
}

function hideLayer(map, id) {
	for(x in layerIDs) {
		if(layerIDs[x] == id) layers[x].hide();
	}
}

function showLayer(map, id) {
	for(x in layerIDs) {
		if(layerIDs[x] == id) layers[x].show();
	}
}

function returnLayer(map, id) {
	for(x in layerIDs) {
		if(layerIDs[x] == id) return layers[x];
	}
}

var gmarkers = [];
var layers = [];
var layerIDs = []

function createMarker(point,label,address,localphone,tollfreephone,desc) {
	var baseIcon = new GIcon(G_DEFAULT_ICON);
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	var letter = label.charAt(0);
	var letteredIcon = new GIcon(baseIcon);
	var marker = new GMarker(point, { icon:letteredIcon, title:label, hide:true });
	letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
        var mainTab = new GInfoWindowTab('Business','<h3 class="markerlabel">'+label+'</h3><div class="tabTextDiv">'
        +'Street Address:<br />'+address+'<br />'
        +'Local Phone: '+localphone+'<br />'
        +'Toll Free Phone: '+tollfreephone+'<br />'
        +'</div>');
        var descTab = new GInfoWindowTab('Description','<div class="tabTextDiv">'+desc+'</div>');
        marker.bindInfoWindowTabs(new Array(mainTab,descTab));
        gmarkers.push(marker);
        return marker;
}

function generateMarkersControl(controlTitle) {
	function markersControl() {
	}
	markersControl.prototype = new GControl();
	
	markersControl.prototype.initialize = function(map) {
		var controlContainer = document.createElement("div");
		controlContainer.id = "markers";
		controlContainer.style.backgroundColor = "white";
		controlContainer.style.textAlign = "center";
		controlContainer.style.border = "1px solid darkblue";
		controlContainer.style.padding = "2px";
		
		var nameDiv = document.createElement("div");
		controlContainer.appendChild(nameDiv);
		nameDiv.appendChild(document.createTextNode(controlTitle));
		
		var showMarkersSpan = document.createElement("span");
		this.setButtonStyle_(showMarkersSpan);
		controlContainer.appendChild(showMarkersSpan);
		showMarkersSpan.appendChild(document.createTextNode("Show"));
		GEvent.addDomListener(showMarkersSpan, "click", function() {
			showMarkers();
		});
		
		controlContainer.appendChild(document.createTextNode("|"));
		
		var hideMarkersSpan = document.createElement("span");
		this.setButtonStyle_(hideMarkersSpan);
		controlContainer.appendChild(hideMarkersSpan);
		hideMarkersSpan.appendChild(document.createTextNode("Hide"));
		GEvent.addDomListener(hideMarkersSpan, "click", function() {
			hideMarkers();
		});
		
		map.getContainer().appendChild(controlContainer);
		return controlContainer;
	}
	
	markersControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 30));
	}
	
	markersControl.prototype.setButtonStyle_ = function(button) {
		button.style.textDecoration = "underline";
		button.style.color = "#0000cc";
		button.style.backgroundColor = "white";
		button.style.font = "small Arial";
		button.style.padding = "2px";
		button.style.marginBottom = "3px";
		button.style.textAlign = "center";
		button.style.width = "6em";
		button.style.cursor = "pointer";
	}
	return markersControl.prototype;
}

function hideMarkers() {
	for(x in gmarkers) gmarkers[x].hide();
}

function showMarkers() {
	for(x in gmarkers) gmarkers[x].show();
}

function load() {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"), {
			googleBarOptions:{
				onSearchCompleteCallback:function(search) { hideMarkers(); },
			}
		});
		map.setCenter(new GLatLng(49.348135,-124.442225), 13);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		GDownloadUrl("/map/markers.php", function(doc) {
			var xmlDoc = GXml.parse(doc);
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var lat = parseFloat(markers[i].getAttribute("lat"));
				var lng = parseFloat(markers[i].getAttribute("lng"));
				var point = new GLatLng(lat,lng);
				var label = markers[i].getAttribute("label");
				var address = markers[i].getAttribute("address");
				var localphone = markers[i].getAttribute("localphone");
				var tollfreephone = markers[i].getAttribute("tollfreephone");
				var desc = markers[i].getAttribute("desc");
				var marker = createMarker(point,label,address,localphone,tollfreephone,desc);
				map.addOverlay(marker);
			}
		}, null, "application/xml");
		loadLayer(map, "panaramio", "com.panoramio.all");
		hideLayer(map, "panaramio");
		map.addControl(generateLayerControl("Photos", "panaramio"));
		map.addControl(generateMarkersControl("Chamber of Commerce"));
		map.enableGoogleBar();
		map.enableScrollWheelZoom();
		map.enableContinuousZoom();
		
		var publisher_id = "pub-0421746253109177";
		var adPos = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 20));

		adsManagerOptions = {
		maxAdsOnMap: 4,
		style: 'adunit',
		position: adPos,
		channel: '7310382350'
		};

		adsManager = new GAdsManager(map, publisher_id, adsManagerOptions);
		adsManager.enable();
	}
}
//]]>
