var map 		= null;
var geocoder 	= null;
var locations 	= {};
var mgr;
var gmarkers	= [];
var catIcon 	= [];

catIcon['Aktiviteter']		= MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#cfcfcf", cornerColor: "#cfcfcf"});
catIcon['Kommuner'] 		= MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#00ff00", cornerColor: "#00ff00"});
catIcon['N&ouml;je'] 		= MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#ff0000", cornerColor: "#ff0000"});
catIcon['Camping'] 			= MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#0000ff", cornerColor: "#0000ff"});
catIcon['&Auml;ta & Bo']	= MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#00ffff", cornerColor: "#00ffff"});
catIcon['Kultur']			= MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#ff00ff", cornerColor: "#ff00ff"});

function videoInfo(rubrik,info)
{
	 document.getElementById("infoText").innerHTML 	= info;
	 document.getElementById("rubrik").innerHTML 	= rubrik;
}

function showHelp(text)
 {
	var hjaelp = document.getElementById("hjaelp");

	hjaelp.style.display = "inline";

	alterHTML("hjaelptext",text);
 }

function hideHelp()
 {
	document.getElementById("hjaelp").style.display = "none";
	alterHTML("hjaelptext","");
 }

function moveHelp(event)
 {
	var hjaelp = document.getElementById("hjaelp");
	var x, y;
	
	var scrollX = document.body.scrollLeft;
	var scrollY = document.body.scrollTop;
	
	var mouseX = event.x || event.pageX;
	var mouseY = event.y || event.pageY;
	
	x = (mouseX+scrollX) + "px";
	y = (mouseY+scrollY + 20) + "px";

	hjaelp.style.left = x;
	hjaelp.style.top  = y;
 }

function alterHTML(objekt,text)
 {
	document.getElementById(objekt).innerHTML = text;
 }

function player(video,name)
{
	var so = new SWFObject('player.swf','mpl','560','353','9');
		so.addParam('allowfullscreen','true');
		so.addParam('allowscriptaccess','always');
		so.addParam('wmode','opaque');
		so.addVariable('file',video);
		so.addVariable('autostart','true');
		so.write('player');
	
	name = escape(name);
	
	document.getElementById("tipsa").href = "tips.php?video="+video+"&name="+name;
}

function createMarker(stores)
{
	var store 		= stores[0];
	var marker		= new GMarker(store.latlng, { icon:catIcon[store.type] });
		marker.category = store.type;
	var i = gmarkers.length;
	var html		= "<a href=\"" + store.webbadress + "\"><strong>" + store.name + "</a></strong><br /><i>" + store.info + "</i><br /><br /><strong>Tel:</strong>" + store.telefon + "<br /><strong>E-post:</strong> " + store.publikemail + "<br /><strong>Adress:</strong> " + store.city + "<br /><strong>Kategori:</strong> " + store.type + "<br />";
	GEvent.addListener(marker, 'click', function()
	{
		marker.openInfoWindowHtml(html, {maxHeight:170,maxWidth:200});
		videoInfo(store.name,store.info);
		player(store.video,store.name);
	});
	GEvent.addListener(marker, 'mouseover', function()
	{
		showHelp(store.name);
	});
	GEvent.addListener(marker, 'mouseout', function()
	{
		hideHelp();
	});
	gmarkers.push(marker);
	return marker;
}


function createClusteredMarker(stores) 
{
	var newIcon2 = MapIconMaker.createMarkerIcon({width: 38, height: 38, primaryColor: "#9cff00"});
	var marker = new GMarker(stores[0].latlng, {icon: newIcon2});
		marker.category = "clustered";
	var html = "";
	var defaultHeadline = "&Auml;ntligen sveriges nya turistkanal!";
	var defaultInfo		= "H&auml;r hittar du den r&auml;tta inspirationen f&ouml;r att uppt&auml;cka ditt n&auml;sta turistm&aring;l<br /> Klicka p&aring; kartans markeringar f&ouml;r att se film och info<br /><br />Varmt v&auml;lkommen!";
	for (var i = 0; i < stores.length; i++) 
	{
		html += "<b>" + stores[i].name + "</b> <br/>" + stores[i].type + "<br/><a href=\"javascript:player('" + stores[i].video + "','" + stores[i].name + "')\" >SPELA VIDEO</a><br />";
	}
	GEvent.addListener(marker, 'click', function() 
	{
		marker.openInfoWindowHtml(html);
		videoInfo(defaultHeadline, defaultInfo);
	});
	GEvent.addListener(marker, 'mouseover', function()
	{
		showHelp("Tryck f&ouml;r mer info");
	});
	GEvent.addListener(marker, 'mouseout', function()
	{
		hideHelp();
	});
	return marker;
}

function show(category)
{
	for (var i = 0; i < gmarkers.length; i++)
	{
		if (gmarkers[i].category == category)
		{
			
			gmarkers[i].show();
		}
	}
	document.getElementById(category+"box").checked = true;
}

function hide(category)
{
	for (var i = 0; i < gmarkers.length; i++)
	{
		if (gmarkers[i].category == category)
		{
			gmarkers[i].hide();
		}
	}
	document.getElementById(category+"box").checked = false;
}

function boxclick(box,category) 
{
	if (box.checked) 
	{
		show(category);
	} 
	else 
	{
		hide(category);
	}
}

function initialize() 
{
		map = new GMap2(document.getElementById("map_canvas"));
		map.setCenter(new GLatLng(58.338334, 13.688965), 6);
		map.setUIToDefault();
		map.setMapType(G_HYBRID_MAP);
		var mgrOptions = { trackMarkers: true };
		mgr = new MarkerManager(map);
		geocoder = new GClientGeocoder();
	
		GDownloadUrl("./data.php", function(data)
		{
			var xml 	= GXml.parse(data);
			var markers = xml.getElementsByTagName("marker");

			for (var i = 0; i < markers.length; i++)
			{
				var city		= markers[i].getAttribute("stad");
				var latlng 		= new GLatLng(parseFloat(markers[i].getAttribute("lat")),
										parseFloat(markers[i].getAttribute("lng")));
				var name 		= markers[i].getAttribute("name");
				var type 		= markers[i].getAttribute("typ");
				var video		= markers[i].getAttribute("video");
				var info		= markers[i].getAttribute("info");
				var telefon		= markers[i].getAttribute("telefon");
				var webbadress	= markers[i].getAttribute("webbadress");
				var publikemail	= markers[i].getAttribute("publikemail");
				var store		= {latlng: latlng, city: city, name: name, type: type, video: video, telefon: telefon, info: info, webbadress: webbadress, publikemail: publikemail};
				var latlngHash = (latlng.lat().toFixed(8) + "" + latlng.lng().toFixed(8));
				latlngHash = latlngHash.replace(".","").replace(".", "").replace("-","");
				
				if (locations[latlngHash] == null)
				{
					locations[latlngHash] = []
				}
				locations[latlngHash].push(store);
				
			}
			for (var latlngHash in locations)
			{
				var stores = locations[latlngHash];
				if (stores.length > 1)
				{
					mgr.addMarker(createClusteredMarker(stores),2);
				}
				else
				{
					mgr.addMarker(createMarker(stores),2);
				}
				mgr.refresh();
			}
		});
}

function clearMarkers()
{
	mgr.clearMarkers();
}

function reloadMarkers()
{
	initialize();
}

function showAddress(address)
{
	if (geocoder)
	{
		geocoder.getLatLng
		(
			address,
			function(point)
			{
				if (!point)
				{
					alert(address + " inte funnen");
				}
				else
				{
					map.setCenter(point, 13);
				}
			}
		);
	}
}

function confDelete()
{
	var conf 	= confirm("Vill du ta bort nyheten?");
	if (conf) 	return true;
	else 		return false;
}

function register()
{
	with(document.forms[0])
	{
		geocoder = new GClientGeocoder();
		geocoder.getLatLng((document.forms[0].stad.value),
		function(latlng)
		{
			if(latlng)
			{	
				document.getElementById("lati").value 	= latlng.lat();
				document.getElementById("lngi").value 	= latlng.lng();
			}
		});
	}
}

function removeText(component,text,alt)
{
	if (component.value == text)
	{
		component.value = alt;
	}
	
	component.className	= "activeField"
}

function addText(component,text)
{
	if (component.value == "")
	{
		component.value = text;
		component.className = "inactiveField"
	}
}

function validateEmail(field,alerttxt,approvetext)
{
	with (field)
	{	
		apos = value.indexOf("@");
		dotpos = value.lastIndexOf(".");
		if (apos < 1 || dotpos-apos < 2) 
		{
			document.getElementById("ErrorText").innerHTML = alerttxt;
		}
		else 
		{
			document.getElementById("ErrorText").innerHTML = approvetext;
		}
	}
}