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

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; }

$(document).ready(function() {
	var expanded = false;
	$("#maxmin").click(function() {
		if(expanded) {
			player.minimize();
			expanded = false;
		} else {
			player.expand();
			expanded = true;
		}
	});
	
	$("#closevid").click(function() {
		player.hide();
		expanded = false;
	});
});

/**********************
*** 
*** Videospelar-"klassen", har hand om
*** allt som har med spelaren att göra
***
**********************/
function Player(video,name) {
	this.video = video;
	$(".video").animate({
		width: 0,
		height: 0
	}, 400, function() {
		$("#player").html();
		$(".video").animate({
			width: 460,
			height: 300
		}, 400, function() {
			jwplayer("player").setup({
				flashplayer : 'jwplayer/player.swf',
				file : video,
				height: 254,
				width: 460,
				autostart : 'true'
			});
		});
	});
	
	name = escape(name);
	
	document.getElementById("tipsa").href = "tips.php?video="+video+"&name="+name;
}

Player.prototype = {
	expand : function() { 
		document.getElementById("player").style.display = "none";
		var self = this;
		$(".video").animate({width: 975, height: 454}, 400, function() {
			jwplayer("player").setup({
				flashplayer : 'jwplayer/player.swf',
				file : self.video,
				height: 404,
				width: 975,
				autostart : 'true'
			});
			$("#maxmin").attr("src", "images/minimize.png");
		});
	},
	
	minimize : function() { 
		document.getElementById("player").style.display = "none";
		var self = this;
		$(".video").animate({width: 460, height: 300}, 400,function() {
			jwplayer("player").setup({
				flashplayer : 'jwplayer/player.swf',
				file : self.video,
				height: 254,
				width: 460,
				autostart : 'true'
			});
			$("#maxmin").attr("src", "images/expand.png");
		});
	},
	
	hide : function() {	
		$(".video").animate({width: 0, height: 0}, 400);
		jwplayer('player').stop();
	}
};

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 = new 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:new 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 found(location) {
	map.setCenter(new GLatLng(location.coords.latitude, location.coords.longitude), 10);
	return location;
}

function notFound() {
	return false;
}

function initialize() {
	navigator.geolocation.getCurrentPosition(found, notFound);
	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		= decodeURIComponent(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;
		}
	}
}
