var map;
var gmarkers = [];
var markers= [];
var points = [];
var progressBar;
var maxNum;
var num = 0;
var lastmarker = 0;
function loadXMLDoc(dname) 
{
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{

			xmlDoc=document.implementation.createDocument("","",null);
		
		}
		catch(e) 

			{			
				alert(e.message);
			}
	}
	try 
	{
		xmlDoc.async=false;
		xmlDoc.load(dname);
		return(xmlDoc);
	}
	catch(e) {
		try {
			var xmlhttp = new window.XMLHttpRequest();
			xmlhttp.open("GET",dname,false);
			xmlhttp.send(null);
			xmlDoc = xmlhttp.responseXML.documentElement;
			return(xmlDoc);

		}
		catch(e) {alert(e.message)}
	}
	return(null);
}

function centerzoom(lat,lng) {
          map.setCenter(new GLatLng(lat,lng));
	  map.zoomIn();

}
function zoomdefault() {
	map.setCenter(new GLatLng(62.895,20.127), 5);
}

function restorerefreshbtn (){
	document.getElementById("refreshbtn").innerHTML="<a href='javascript:redraw()' onMouseOver=\"Tip('<div>Uppdatera <br>temperaturer</div>')\" onMouseOut=\"UnTip()\" ><img src=\"/bilder/refresh.png\" width=30 border=0></a>";

}
function show(div_id){
	if (div_id == 'bookmarkurl') {
		get_current_view();
	}
	document.getElementById(div_id).style.visibility = 'visible';
	//      alert("http://www.temperatur.nu/karta.html?lat="+center + "&zoom=" + c_zoom + "&name=" + current_name);
	document.getElementById(div_id+'icon').href="javascript:close('"+div_id+"')";
	document.getElementById(div_id+'icon').style.visibility = 'hidden';
}

function get_current_view(){
	document.getElementById('url').value=get_map_url();
}
function get_map_url(){
	var center=map.getCenter();
	center = center+'';
	center = center.replace("(","");
	center = center.replace(")","");
	center = center.replace(", ","&lng=");
	var c_zoom=map.getZoom();

	return 'http://www.temperatur.nu/karta.html?lat='+center + '&zoom=' + c_zoom + '&name=' + current_name;
}

function cookieTime(days){
	var now = new Date();
	var exp = new Date();
	var x = Date.parse(now) + days*24*60*60*1000;
	exp.setTime(x);
	str = exp.toUTCString();
	re = '/(\d\d)\s(\w\w\w)\s\d\d(\d\d))/';
	return str.replace(re,"$1-$2-$3");
}

function save_and_set() {
	document.getElementById("save").innerHTML="<a id=saveicon href=\"javascript:save_and_unset();\" onMouseOver=\"Tip('<div>Tar bort sparad vy kartan som startsida.<div>')\" onMouseOut=\"UnTip()\" onClick='UnTip()'><img src=/bilder/floppy_X.png border=0></a>";
	var center=map.getCenter();
	center = center+'';
	center = center.replace("(","");
	center = center.replace(")","");
	center = center.replace(", ","&");
	var c_zoom=map.getZoom();

	document.cookie = 'karta='+center+'&'+c_zoom+'&'+current_name+';path=/;expires='+cookieTime(3650);
}
function save_and_unset() {
document.getElementById("save").innerHTML="<a id=saveicon href=\"javascript:save_and_set();\" onMouseOver=\"Tip('<div>Sparar aktuell vy och gör sätter kartsidan till startsida på temperatur.nu</div>')\" onMouseOut=\"UnTip()\" onClick='UnTip()'><img src=/bilder/floppy.png border=0></a>";
	document.cookie = "karta=;expires=Thu, 01-Jan-1970 00:00:01 GMT";

}

function bookmarkurl() {
	title = "Karta på temperatur.nu"; 
	// MovableType - Replace with <$MTEntryTitle$>
	var url = get_map_url();
	if (window.sidebar) // firefox
		window.sidebar.addPanel(title, url, "");
	else if(window.opera && window.print){ // opera
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	}
	else if(document.all)// ie
		window.external.AddFavorite(url, title);
}
function openurl(){
	window.location=get_map_url();
}
function close(div_id){

document.getElementById(div_id).style.visibility = 'hidden';
document.getElementById(div_id+'icon').href="javascript:show('"+div_id+"');";
document.getElementById(div_id+"icon").style.visibility = 'visible';
}


function redraw() {
	document.getElementById("refreshbtn").innerHTML="<a  href='javascript: void(0)' onMouseOver=\"Tip('<div>Max 1 g&aring;ng<br>per minut!</div>')\" onMouseOut='UnTip()'><img src=/bilder/refresh_gray.png border=0 alt='centrera karta'></a>";
	map.clearOverlays();
	getstations1();
	if (lastmarker != 0) {
		GEvent.trigger(lastmarker, "click");
	} else {
		GLog.write("Error - Vet inte vilken stad som är aktiv...");
	}
	setTimeout("restorerefreshbtn()",60000);

}

function getstations1() {
	xml=loadXMLDoc("gmap_data.php");
			markers = xml.getElementsByTagName("marker");
			maxNum = markers.length
			progressBar.start(maxNum);
			setTimeout("writemarker()",1);

}
function writemarker (){
		var i = num;
		num++;
		var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon")));
		//var m_lbl=Math.round(parseFloat(markers[i].getAttribute("temp").replace(",",".")));
		var m_lbl=markers[i].getAttribute("temp");
		var marker = createMarker(point, m_lbl, markers[i].getAttribute("clr"), markers[i].getAttribute("city"),  markers[i].getAttribute("city_s"),  markers[i].getAttribute("temp"), markers[i].getAttribute("city_ss"),  markers[i].getAttribute("id") , markers[i].getAttribute("lu"), markers[i].getAttribute("start"),  markers[i].getAttribute("hitta"));
		map.addOverlay(marker);
		if (num < maxNum) {
			if (Math.round(num/25) == num/25) {
				setTimeout('writemarker()', 10);
			}else {
				writemarker();
			}
		} else {
			progressBar.remove();
			num = 0;
		}


}
function updateinfo(marker,name,name_short,temp,url,id,hitta,point,update,start) {
	lastmarker=marker;
	current_name=url;
	var ran_unrounded=Math.random()*100000;
	var ran_number=Math.floor(ran_unrounded); 
	document.getElementById("mapinfoheader").innerHTML=name_short;
	document.getElementById("graph").innerHTML="<a href=" + url + ".html><center><img border=0 height=143 width=186 name=minigraf src='' onMouseOver=\"Tip('Fler grafer f&ouml;r "+name+"')\" onMouseOut='UnTip()'></a></center>";
	update_graph("minigraf","http://www.temperatur.nu/internal_sign.php?type=map&stad="+url);
	document.getElementById("mapinfotemp").innerHTML=temp+"&deg;C";
//	document.getElementById("hittabtn").innerHTML="<a href=" + unescape(hitta) + " target=_blank onMouseOver=\"Tip('<div>"+name+"<br>p&auml; hitta.se</div>')\" onClick='UnTip()' onMouseOut='UnTip()'><img src='/bilder/hitta_30.gif' border=0></a>";
	document.getElementById("zoominbtn").innerHTML="<a href='javascript:centerzoom"+ point + "' onMouseOver=\"Tip('<div>Zooma in<br>"+name+"</div>')\" onMouseOut='UnTip()'><img src=/bilder/magnify.gif border=0 alt='centrera karta'></a>";
	document.getElementById("mapinfotext").innerHTML="Senast uppdaterad: " + update + "<br>Aktiv sedan: " +start;
	get_current_view();
};

function createMarker(point, pic, color, name, name_short, temp, url, id, update, start, hitta) {
	if (Math.round(num/25) == num/25) {
	  progressBar.updateLoader(25);
	}
	var iconOptions = {};
	iconOptions.width = 32;
	iconOptions.height = 32;
	iconOptions.primaryColor = color;
	iconOptions.label = pic+'';
	iconOptions.labelSize = 11;
	iconOptions.labelColor = "#000000";
	iconOptions.shape = "circle";
	var icon = MapIconMaker.createFlatIcon(iconOptions);
	var marker = new GMarker(point, {icon: icon, draggable:false});
	marker.tooltip = '<div class="tooltip">'+name+'<br>'+temp+'&deg;C<\/div>';
	if (id == global_id) {;
		lastmarker=marker;
		current_name=url;
		if ( Zoom > 7 )
			showTooltip(marker);
	}
	GEvent.addListener(marker, "click", function() {
		show('mapinfo');
		updateinfo(marker,name,name_short,temp,url,id,hitta,point,update,start);
		});

	GEvent.addListener(marker,"mouseover", function() {
			showTooltip(marker);
			});
	GEvent.addListener(marker,"mouseout", function() {
			tooltip.style.visibility="hidden"
			});
	return marker;
}
function showTooltip(marker) {
	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GLatLng(0,0),true),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=tooltip.clientHeight;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height));
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
}

function loadmap() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		var baseIcon = new GIcon(G_DEFAULT_ICON);
		 baseIcon.iconSize = new GSize(37, 25);
		tooltip = document.createElement("div");
		map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
		tooltip.style.visibility="hidden";
	document.getElementById('bookmarkurl').style.visibility = 'hidden'; 	

		map.setMapType(G_HYBRID_MAP);
		map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		if (m_lat > 0)
			Lat=m_lat;
		else
			Lat=62.895;

		if (m_lng > 0)
			Lng=m_lng;
		else
			Lng=20.127;
		if (m_zoom > 0)
			Zoom=m_zoom;
		else
			Zoom=5;

		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(Lat,Lng), Zoom);
		ProgressbarMapControl.prototype.getDefaultPosition = function () {
		                          return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100, 100));
					                            };
		progressBar = new ProgressbarControl(map, {width:150}); 
		GEvent.addListener(map,"moveend", function() {
				get_current_view();
					                        });

		getstations1();
	}
}


