

$(document).ready(function() {
	if (GBrowserIsCompatible()) {
		spEngine.map = new google.maps.Map2(document.getElementById("sp_map"));
		spEngine.map.setCenter(new google.maps.LatLng(spEngine.defaultLatitude, spEngine.defaultLongitude), spEngine.defaultZoomLevel);
		spEngine.map.addMapType(G_NORMAL_MAP);
		spEngine.map.addMapType(G_HYBRID_MAP);
		spEngine.map.addMapType(G_PHYSICAL_MAP);
		spEngine.map.enableContinuousZoom();
		spEngine.map.enableScrollWheelZoom();
		spEngine.map.addControl(new GSmallMapControl());
		spEngine.map.addControl(new GMapTypeControl());
		
		spEngine.baseicon = new google.maps.Icon(G_DEFAULT_ICON);
		spEngine.baseicon.iconSize = new google.maps.Size(15, 15);
		spEngine.baseicon.iconAnchor = new google.maps.Point(8, 8);
		spEngine.baseicon.shadow = null;
		
		spEngine.items.objSort("city", "name");
		
		for (var i = 0; i < spEngine.items.length; i++) {
			if (spEngine.items[i].name != "") {
				var content = "";
				var labels = spEngine.label;
				if (spEngine.items[i].address != "") { content += labels.address + ": " + spEngine.items[i].address + "<br />"; }
				if (spEngine.items[i].phone != "") { content += labels.phone + ": " + spEngine.items[i].phone + "<br />"; }
				if (spEngine.items[i].fax != "") { content += labels.fax + ": " + spEngine.items[i].fax + "<br />"; }
				if (spEngine.items[i].email != "") { content += labels.email + ": <a href='mailto:" + spEngine.items[i].email + "'>" + spEngine.items[i].email + "</a><br />"; }
				if (spEngine.items[i].url != "") {
					var site = spEngine.urlParse(spEngine.items[i].url);
					content += labels.website + ": <a href='" + site.url + "' target='blank'>" + site.name + "</a><br />";
				}
				
				$("<div class='sp_list_item' id='sp_list_" + i + "'><h2>" + spEngine.items[i].name + "<span>" + spEngine.items[i].city + "</span></h2><div class='sp_list_content'>" + content + "</div></div>").appendTo("#sp_list");
				var point = new google.maps.LatLng(spEngine.items[i].lat, spEngine.items[i].lang);
				spEngine.createMarker(point, i, spEngine.items[i].name);
				$("#sp_list_" + i).data("id", i);
				$("#sp_list_" + i).click(function() {
					spEngine.activate($(this).data("id"));
				});
			}
		}
	}
});

spEngine.itemToggle = function (id) {
	if (spEngine.last_item !== id) {
		$("#sp_list_" + spEngine.last_item).find(".sp_list_content").slideUp("fast");
	}
	
	$("#sp_list_" + id).find(".sp_list_content").slideDown("fast");
	spEngine.last_item = id;
}

spEngine.iconToggle = function (id) {
	if (typeof spEngine.last_icon != 'undefined') {
		spEngine.markers[spEngine.last_icon].setImage(spEngine.imagePath + "/servicepoint_normal.png");
	}
	
	spEngine.markers[id].setImage(spEngine.imagePath + "/servicepoint_active.png");
	spEngine.last_icon = id;
	
	spEngine.map.panTo(spEngine.markers[id].getLatLng());
}

spEngine.createMarker = function (point, id, title) {
	var icon = new google.maps.Icon(spEngine.baseicon);
	icon.image = spEngine.imagePath + "/servicepoint_normal.png";
	var markerOptions = { icon: icon, title: title };
	var marker = new google.maps.Marker(point, markerOptions);
	marker.id = id;
	marker.title = title;
	google.maps.Event.addListener(marker, "click", function () {
		spEngine.activate(this.id);
	});
	spEngine.markers.push(marker);
	spEngine.map.addOverlay(spEngine.markers[id]);
}

spEngine.activate = function (id) {
	this.itemToggle(id);
	this.iconToggle(id);
}

spEngine.urlParse = function (str) {
	var obj = {};
	
	if (typeof str == 'undefined' || str == null) {
		obj.url = "";
		obj.name = "";
	} else {
		var len = str.length;
		var http = str.substring(0, 7).toLowerCase();
		var https = str.substring(0, 8).toLowerCase();
		
		if (http == "http://") {
			obj.url = str;
			obj.name = str.substring(7);
		} else if (https == "https://") {
			obj.url = str;
			obj.name = str.substring(8);
		} else {
			obj.url = "http://" + str;
			obj.name = str;
		}
		
		if (obj.name.substring(len - 1) == "/") {
			obj.name = obj.name.substring(0, len - 1);
		}
	}
	
	return obj;
}

