/****************** Guide Page ******************/
function createNode(type, value){
	node = document.createElement(type);
	node.innerHTML = value;
	return node;
}

function createInfoNode(title, description){
	container = document.createElement("div");
	container.appendChild(createNode("h4", title));

	var desc = createNode("div", description);
	container.appendChild(desc);
	return container;
}

function objPOI(key, title, description, level, idealLevel, longitude, latitude){
	var me = this;
	var title = title;
	var description = description + "<br />";
	var longitude = longitude;
	var latitude = latitude;

	var point = new GLatLng(latitude, longitude);

	me.key = key;
	me.level = level;
	me.idealLevel = idealLevel;

	me.marker = new GMarker(point, {title: title});
	var infoNode = createInfoNode(title, description);

	GEvent.addListener(
		me.marker, "click", function () {
			me.marker.openInfoWindowHtml(infoNode, {maxWidth : '250'});
		})

		me.showInfo = function(){
		me.marker.openInfoWindowHtml(infoNode, {maxWidth : '250'});
	}

	me.show = function(){
		map.setZoom(me.idealLevel);
		map.setCenter(point);
		me.marker.openInfoWindowHtml(infoNode, {maxWidth : '250'});
	}
}

function showMarkers(oldLvl, newLvl){
	map.clearOverlays();

	pois.iterate( function(poi){
		if (poi.level <= map.getZoom()){
			map.addOverlay(poi.marker);
		}
	});
}

/****************** Morello InSitu Editing ******************/
function createDraggableMarker(point, showInfo) {
	var args = { 
		title: "Test",
		draggable: true
	};

	var marker = new GMarker(point, args);

	GEvent.addListener(marker, "dragend", function() {
		var point = marker.getPoint();
		map.setCenter(point);
		updateMSLatLng(point);
	});

	if (showInfo){
		GEvent.addListener(marker, "click", function() {
			info.style.display = "block";
			marker.openInfoWindowHtml(info);
		});
	}

	return marker;
}

function geocodePostcode(postcode){
    var s = document.createElement('script');
    s.src = 'http://geo.localsearchmaps.com/?cb=setPostcodePoint&use=google2&country=uk&zip=' + postcode;
    s.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(s);
}

function setPostcodePoint(lon, lat){
	point = new GLatLng(lon, lat)
    map.setCenter(point);
	marker.setPoint(point);
	updateMSLatLng(point);
}

/****************** Common ******************/
function setupMap() {
	if (GBrowserIsCompatible()) { 
		map.addControl(new GSmallMapControl());

		if (isSet(longitude) && isSet(latitude)){
			map.setCenter(new GLatLng(latitude, longitude), zoom);
		}else{
			map.setCenter(new GLatLng(stLat, stLong), zoom);		
		}

	}	
}
