var savedScrollerState = 0;
var zoomUrl = "";
var hasRequestedMore = false;
var hasReachedEnd = false;
var numsRequested = 0;
var maxRequests = 2;
var gPostData = 0;
var gWhat = ":";
var isWaiting = null;
var XMLcache = {};
var myKeyIsDown = 0;
var keyRepeats = 0;
var imgInfoHoldUntil = 0;
var isDragging = false;

if (typeof XMLHttpRequest == "undefined") XMLHttpRequest = function () {
	try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
		catch (e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
		catch (e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) {}
	//Microsoft.XMLHTTP points to Msxml2.XMLHTTP.3.0 and is redundant
	throw new Error("This site feels better with a browser with XMLHttpRequest support.");
};

function getXpos () {
	return document.documentElement.scrollLeft || document.body.scrollLeft || window.pageXOffset;
}

function getYpos () {
	return document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
}

function initPage(lon,lat) {
	window.onscroll = document.documentElement.onscroll = document.body.onscroll = winScrolled;
	document.onkeydown = tangentNed;
	document.onkeyup = tangentUpp;
	document.onmousemove = mouseMove;
	document.onmouseup = stopDragging;
	document.onselectstart = startSelect;

	/* INITIERA MOUSEOVER PA IMAGEMAPS */
	var mapid = "";
	var imgid = "";
	var myarea = "";
	var allareas = {};
	var allmaps = document.getElementsByTagName('map');
	for (var imgmap in allmaps) {
		if (allmaps[imgmap].id !== undefined) {
			mapid = allmaps[imgmap].id;
			imgid = mapid.split("-",1);
			allareas = allmaps[imgmap].getElementsByTagName("area");
			for (myarea in allareas) {
				if (allareas[myarea].alt !== undefined) {
					if (allareas[myarea].alt != '') {
						if (document.getElementById("ph_" + allareas[myarea].alt)) allareas[myarea].onmouseover = function() {hoverBox(this);}
						if (document.getElementById("ph_" + allareas[myarea].alt)) allareas[myarea].onmouseout = function() {hoverBox();}
						if ((allareas[myarea].alt) && (!(document.getElementById("ph_" + allareas[myarea].alt)))) {
							allareas[myarea].onclick = function() {box(this.alt); return false;}
						} else if (isSticky(document.getElementById("ph_" + allareas[myarea].alt))) {
							allareas[myarea].onclick = function() {stickHoverBox(this); return false;}
						} else if (allareas[myarea].alt == "position") {
							allareas[myarea].ondblclick = function() {var wLoad = window.open(this.href); return false;}
							allareas[myarea].onclick = function() {return false;}
						} else if ((document.getElementById("ph_" + allareas[myarea].alt)) && (allareas[myarea].alt != "lang")) {
							allareas[myarea].onclick = function() {var wLoad = window.open(this.href); return false;}
						}
					}
				}
			}
		}
	}
	
	/* SKAPA KARTAN */
	var plot = document.createElement('div');
	plot.style.height = "100%";
	plot.style.width = "100%";
	plot.style.background = "url('/get/?map=getmap') top left no-repeat";
	document.getElementById("karta").appendChild(plot);
	setPosition("lon:"+lon+";lat:"+lat);
	if (lang == "s") document.getElementById("curlatlon").innerHTML = (convertWGS84(lat,'S','N') + ' ' + convertWGS84(lon,'V','O'));
	if (lang == "e") document.getElementById("curlatlon").innerHTML = (convertWGS84(lat,'S','N') + ' ' + convertWGS84(lon,'W','E'));
	
	/* LADDA BILDER */
	var waitBOWimg = new Image();
	waitBOWimg.src = "/external/img/wait-bow.gif";
	
	/* LADDA FÖRHANDSBILDER */
	loadAllPreviews();
}

function showBoxInfo(doWhat) {
	if ((doWhat[0] != "boat") && (doWhat[0] != "crew")) {return;}
	gWhat = (doWhat[0]+":"+doWhat[1]);
	if (doWhat[0] == "boat") {document.getElementById("boattitle").innerHTML = document.getElementById("boat_"+doWhat[1]).innerHTML;}
	if (XMLcache[gWhat]) {
		document.getElementById(doWhat[0]+"info").innerHTML = (XMLcache[gWhat]);
		boxFix();
	} else {
		// document.getElementById(doWhat[0]+"info").innerHTML = "";
		doWait(document.getElementById(doWhat[0]+"info"));
		var XMLHttp = new XMLHttpRequest();
		XMLHttp.open("GET", "/get/?"+doWhat[0]+"="+doWhat[1], true);
		XMLHttp.onreadystatechange = function() {
			if (XMLHttp.readyState == 4) {
				doWait();
				document.getElementById(doWhat[0]+"info").innerHTML = XMLHttp.responseText;
				XMLcache[doWhat[0]+":"+doWhat[1]] = XMLHttp.responseText;
				boxFix();
			}
		}
		XMLHttp.send(null);
	}
}

function box(what) {
	var doWhat = (what) ? what.split(":") : ["",""];
	var gDoWhat = gWhat.split(":");
	if ((!what) || (gWhat == what) || ((gDoWhat[0] == "boat") && (doWhat[0] == "boat"))) {
		gWhat = ":";
		boxHide();
		return;
	}
	if (what != "hejedit:") {
		document.getElementById("hejkod").value = "Kod";
		document.getElementById("hejkod").style.color = "#aaa";
	}
	var thebox = document.getElementById("box");
	if ((thebox.style.visibility == "visible") && (gDoWhat[0] != doWhat[0])) boxHide();
	gWhat = what;
	var boxc = document.getElementById("boxcontent");
	for (var boxp in boxc.childNodes) {
		if ((typeof (boxc.childNodes[boxp]) == "object") && (boxc.childNodes[boxp].className == "boxpart")) {
			boxc.childNodes[boxp].style.display = (boxc.childNodes[boxp].id == ("bp_" + doWhat[0])) ? "block":"none";
		}
	}
	document.getElementById("crewinfo").innerHTML = document.getElementById("boatinfo").innerHTML = "";
	showBoxInfo(doWhat);
	if (gDoWhat[0] != doWhat[0]) boxShow();
}

function boxShow() {
	var thebox = document.getElementById("box");
	if (thebox.fxStop) thebox.fxStop();
	var fxStop = thebox.scrollHeight;
	// fxStop = 400;
	$fx(thebox).fxAdd({type: 'height', from: 1, to: fxStop, step: 80, delay: 50, onstart: function(){this.style.visibility = 'visible'}}).fxRun();
}

function boxHide() {
	var thebox = document.getElementById("box");
	if (thebox.fxStop) thebox.fxStop();
	$fx(thebox).fxAdd({type: 'height', from: this.offsetHeight, to: 1, step: -80, delay: 50, onfinish: function(){this.style.visibility = 'hidden';}}).fxRun();
}

function boxFix() {
	var thebox = document.getElementById("box");
	if (thebox.fxStop) {thebox.fxStop();}
	var fxStart = (thebox.offsetHeight);
	var fxStop = (thebox.scrollHeight);
	if (fxStart == fxStop) {return;}
	var fxStep = (fxStart > fxStop) ? -80:80;
	$fx(thebox).fxAdd({type: 'height', from: fxStart, to: fxStop, step: fxStep, delay: 50, onstart: function(){this.style.visibility = 'visible'}}).fxRun();
}

function doWait(who) {
	isWaiting = who;
	if (who) var waitID = window.setTimeout("doWaitHelper()", 800);
}

function doWaitHelper() {
	if (isWaiting) isWaiting.innerHTML="<p class='wait'></p>";
}

function loadAllPreviews() {
	var rubbar = document.getElementById('blogg').getElementsByTagName('h1');
	var out = "";
	for (x in rubbar) {
		if (rubbar[x].id) {
			loadPreviews(rubbar[x].id);
			out = (rubbar[x].id);
		}
	}
	return out;
}

function absPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
	return [obj.offsetLeft,obj.offsetTop];
}

function submitTfn(doEdit) {
	if (!(doEdit)) {
		box('hejedit:');
		doWait(document.getElementById("bp_hejedit"));
	}
	var tfn = document.getElementById("hejtfn").value;
	var kod = document.getElementById("hejkod").value;
	var XMLHttp = new XMLHttpRequest();
	var XMLurl = "/get/?tfn="+tfn+"&kod="+kod;
	if (doEdit) {XMLurl += "&tfnnamn="+document.getElementById("tfnnamn").value+"&tfnurl="+document.getElementById("tfnurl").value;};
	XMLHttp.open("GET", XMLurl, true);
	XMLHttp.onreadystatechange = function() {
		if (XMLHttp.readyState == 4) {
			doWait();
			document.getElementById("bp_hejedit").innerHTML = XMLHttp.responseText;
		}
	}
	XMLHttp.send(null);
}

function submitMejl() {
	var mejl = document.getElementById("hoverbox").getElementsByTagName("input")[0].value;
	doWait(document.getElementById("hoverbox").getElementsByTagName("div")[0]);
	var XMLHttp = new XMLHttpRequest();
	XMLHttp.open("GET", "/get/?maillist="+mejl, true);
	XMLHttp.onreadystatechange = function() {
		if (XMLHttp.readyState == 4) {
			doWait();
			document.getElementById("hoverbox").getElementsByTagName("div")[0].innerHTML = XMLHttp.responseText;
		}
	}
	XMLHttp.send(null);
}

function isSticky(obj) {
	return (obj.getElementsByTagName("div")[0] != null);
}

function hoverBox(who,isExtended) {
	if ((who) && ((!who.alt) || (isDragging) || (!document.getElementById("ph_" + who.alt)))) return;
	var hb = document.getElementById('hoverbox');
	var ha = document.getElementById('hoverarrow');
	var winRight = (self.innerWidth!=undefined)?document.documentElement.clientWidth : self.innerWidth;
	if (who == undefined) {
		if (!shVisible()) hb.style.visibility = "hidden";
		if (!shVisible()) ha.style.visibility = "hidden";
		return;
	}
	var whosParent = who.parentNode.id;
	whosParent = whosParent.split("-",1);
	hb.style.left = "50%";
	hb.innerHTML = document.getElementById("ph_" + who.alt).innerHTML;
	if (isSticky(hb)) hb.getElementsByTagName("div")[0].style.display = (isExtended == undefined)?"none":"block";
	var hbNorth = (absPos(document.getElementById(whosParent))[1] + getAreaStuff(who)[1] - hb.offsetHeight - Math.abs(getAreaStuff(who)[3]/2) -ha.offsetHeight -10);
	var hbSouth = (absPos(document.getElementById(whosParent))[1] + getAreaStuff(who)[1] + Math.abs(getAreaStuff(who)[3]/2) + ha.offsetHeight + 10);
	var isNorth = (document.getElementById("ph_" + who.alt).className == "placeholder_n");
	var hbTop = (isNorth) ? hbNorth : hbSouth;
	if (who.alt == "position") hbTop = 280;
	
	if ((hbTop + hb.offsetHeight) > (document.getElementById("bildbox").offsetHeight + getYpos())) {
		hbTop = hbNorth;
		isNorth = (1 == 1);
	}
	var haVis = (hbTop > 0);
	if (hbTop < 0) hbTop = 0;
	if (isNorth) {
		ha.style.top = (hbTop + hb.offsetHeight) + "px";
		ha.style.backgroundPosition = "0 -8px";
	} else {
		ha.style.top = (hbTop - ha.offsetHeight) + "px";
		ha.style.backgroundPosition = "0 0";
	}
	hb.style.top = hbTop + "px";
	var hbLeft = (getAreaStuff(who)[0] + absPos(document.getElementById(whosParent))[0] - Math.round(hb.offsetWidth/2));
	var haLeft = (hbLeft + Math.round(hb.offsetWidth/2) - Math.round(ha.offsetWidth/2));
	if (winRight < (haLeft + ha.offsetWidth + 9)) haLeft = (winRight - ha.offsetWidth - 9);
	if ((haLeft - 9) < 0) haLeft = 9;
	ha.style.left = haLeft + "px";
	if (winRight < (hbLeft + hb.offsetWidth + 5)) hbLeft = (winRight - hb.offsetWidth - 5);
	if ((hbLeft - 5) < 0) hbLeft = 5;
	hb.style.left = hbLeft + "px";
	if (who.alt == "mail") document.getElementById("hoverbox").getElementsByTagName("a")[0].onclick = function() {submitMejl();return false;};
	hb.style.visibility = "visible";
	if (haVis) ha.style.visibility = "visible";
}

function stickHoverBox(who) {
	document.getElementById('coverwhite').style.visibility = (shVisible()) ? "hidden" : "visible";
	hoverBox(who,"true");
}

function getAreaStuff(who) {
	var coords = who.getAttribute("coords").split(",");
	var yMax = 0, yMin = 9999, xMax = 0, xMin = 9999;
	if (who.getAttribute("shape") == "rect") return [(coords[2]-Math.round((coords[2]-coords[0])/2)),(coords[3]-Math.round((coords[3]-coords[1])/2)),(coords[2]-coords[0]),(coords[3]-coords[1])];
	if (who.getAttribute("shape") == "circle") return [coords[0],coords[1],(coords[2]*2),(coords[2]*2)];
	for (var i=0; i < coords.length-1; i = i+2) {
		yMax = Math.max(yMax,coords[i+1]);
		yMin = Math.min(yMin,coords[i+1]);
		xMax = Math.max(xMax,coords[i]);
		xMin = Math.min(xMin,coords[i]);
	}
	return [(xMin + Math.round((xMax-xMin)/2)),(yMin + Math.round((yMax-yMin)/2)),(xMax-xMin),(yMax-yMin)];
}

function toppHover(who,doShow) {
	var hba = document.getElementById("topphover1");
	var hbb = document.getElementById("topphover2");
	if (doShow) {
		var whosParent = who.parentNode.id;
		whosParent = whosParent.split("-",1);
		hba.style.top = Math.round(getAreaStuff(who)[1]-(getAreaStuff(who)[3]/2)-15) + "px";
		hbb.style.top = Math.round(getAreaStuff(who)[1]+(getAreaStuff(who)[3]/2)+5) + "px";
		hba.style.left = hbb.style.left = Math.round(getAreaStuff(who)[0]+(absPos(document.getElementById(whosParent))[0])-9) + "px";
	}
	hba.style.display = hbb.style.display = (doShow) ? "block":"none";
}

function loadPreviews(who) {
	var myId = who.replace(/\D/g,"");
	var myObj = document.getElementById("pre"+myId);
	if (myObj.innerHTML != "") return;
	if (myObj == null) return;
	var myH = (document.getElementById("chead"+myId).offsetTop - myObj.offsetTop - 40);
	var XMLHttp = new XMLHttpRequest();
	XMLHttp.open("GET", "/get/?preview="+myId+"&h="+myH, true);
	XMLHttp.onreadystatechange = function() {
		if (XMLHttp.readyState == 4) {
			document.getElementById("pre"+myId).innerHTML = XMLHttp.responseText;
		}
	}
	XMLHttp.send(null);
}

function resetScroll() {
	if (document.getElementById('bildbox').style.visibility == "visible") {
		document.documentElement.scrollTop = document.body.scrollTop = window.pageYOffset = savedScrollerState;
	}
}

function winScrolled() {
	if (document.getElementById('bildbox').style.visibility == "visible") {
		var timeoutID = window.setTimeout("resetScroll()", 100);
		return;
	}
	showZoom(document.getElementById("zoom"),false);
	var sidhuvud = (document.getElementById('sidhuvude')) ? (document.getElementById('sidhuvude')):(document.getElementById('sidhuvuds'));
	var xPos = getXpos();
	sidhuvud.style.left = (xPos > 0)? ("-" + xPos + "px") : "auto";
	fixaRubbar();
	
	/* LADDA FLER INLÄGG */
	var yPos = getYpos();
	// var sHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
	var cHeight = document.documentElement.clientHeight || document.body.clientHeight;
	var sHeight = (document.getElementById("blogg").offsetHeight + 84);
	// var sHeight = Math.max(document.body.scrollHeight,document.body.offsetHeight);
	
	if ((!hasRequestedMore) && ((yPos + (cHeight*2)) > sHeight) && (numsRequested < maxRequests)) {
		numsRequested = (numsRequested+1);
		loadPosts(false);
	}
}

function loadPosts(doReplace,lonlat) {
	var XMLHttp = new XMLHttpRequest();
	hasRequestedMore = true;
	hasReachedEnd = false;
	if (lonlat == undefined) {
		var rubbar = document.getElementById('blogg').getElementsByTagName('h1');
		where = "";
		for (x in rubbar) {
			if (rubbar[x].id != undefined) {where = rubbar[x].id;}
		}
		where = where.replace(/\D/g,"");
	} else {
		where = lonlat;
	}
	if (doReplace) {
		document.documentElement.scrollTop = document.body.scrollTop = window.pageYOffset = 0;
		doWait(document.getElementById("bloggbody"));
	}
	XMLHttp.open("GET", "/get/?post="+where, true);
	XMLHttp.onreadystatechange = function() {
		if (XMLHttp.readyState == 4) {
			doWait();
			if (XMLHttp.responseText != "<!-- stop -->") {
				if (doReplace) {document.getElementById("bloggbody").innerHTML = "";}
				document.getElementById("bloggbody").innerHTML += XMLHttp.responseText;
				gPostData = 0;
				where = loadAllPreviews();
				if (doReplace) {
					hasRequestedMore = false;
					numsRequested = 0;
				} else {
					if ((numsRequested == maxRequests) && (XMLHttp.responseText.indexOf("<!-- stop -->") == -1)) {
						document.getElementById("bloggbody").innerHTML += document.getElementById("toomanyrequests").innerHTML;
						hasReachedEnd = true;
					} else {
						hasRequestedMore = false;
					}
				}
				fixaRubbar();	
			}
			if (XMLHttp.responseText.indexOf("<!-- stop -->") != -1)  {
				document.getElementById("lastpost").style.visibility = "visible";
				hasReachedEnd = true;
			}
		}
	}
	XMLHttp.send(null);
	document.title =" ";
}

function setPosition(myin) {
	if (myin == gPostData) return;
	gPostData = myin;
	var mydata = {};
	var tmp = myin.split(";");
	for(i=0;i<tmp.length;i++) {
		mydata[tmp[i].split(":",2)[0]] = tmp[i].split(":",2)[1];
	}
	if ((mydata.pos == undefined) || (mydata.pos == "")) {
		if (document.getElementById("extrawhisky")) {document.getElementById("extrawhisky").style.display = "block";}
		document.getElementById("wherewewere").style.display = document.getElementById("calendar").style.display = "none";
//		document.getElementById("wherewewere").style.visibility = document.getElementById("calendar").style.visibility = "hidden";
		document.getElementById("wwa_author").style.color = "#c81";
	} else {
		if (document.getElementById("extrawhisky")) {document.getElementById("extrawhisky").style.display = "none";}
		document.getElementById("wwa_author").style.color = "#600";
		document.getElementById("wherewewere").style.display = document.getElementById("calendar").style.display = "table-cell";
//		document.getElementById("wherewewere").style.visibility = document.getElementById("calendar").style.visibility = "visible";
		if (lang == "s") document.getElementById('postLonLat').innerHTML = (convertWGS84(mydata.lat,'S','N') + ' ' + convertWGS84(mydata.lon,'V','O'));
		if (lang == "e") document.getElementById('postLonLat').innerHTML = (convertWGS84(mydata.lat,'S','N') + ' ' + convertWGS84(mydata.lon,'W','E'));
		document.getElementById('calendar').innerHTML = ("<div>"+mydata.postdate.replace(/(.*) /,"$1</div>"));
		document.getElementById('postPos').innerHTML = mydata.pos;
	}
	
	var googleSrc = "http://maps.google.com/maps/api/staticmap?center=LAT,LON&zoom=5&size=300x200&sensor=false&markers=icon:http://chart.apis.google.com/chart%3Fchst%3Dd_map_pin_icon%26chld%3Dsail%257C9999FF%257C000000|LAT,LON&path=color:0xffb432ee|weight:3";
	
	var tmp = allWpts.split("|");
	for(i=0;i<tmp.length;i++) {
		var tm2 = tmp[i].split(",",2);
		if ((tm2[0] > mydata.lat-15) && (tm2[0] < (mydata.lat*1+15)) && (tm2[1] > mydata.lon-15) && (tm2[1] < (mydata.lon*1+15))) {
			googleSrc += "|"+tmp[i];
		}
	}
	
//	var googleSrc = ("http://maps.google.com/maps/api/staticmap?center=LAT,LON&zoom=5&size=300x200&sensor=false&markers=icon:http://chart.apis.google.com/chart%3Fchst%3Dd_map_pin_icon%26chld%3Dsail%257C9999FF%257C000000|LAT,LON&path=color:0xffb432ee|weight:3"+allWpts);
//	var googleZoom = "http://maps.google.com/maps?q=s/y+Pour+Bon@LAT,LON&z=4";
	var googleZoom = "http://www.28fot.se/get/?google=LAT,LON";
	if (lang == "e") {googleZoom = "http://www.28fot.se/get/?google=LAT,LON";}
	googleSrc = googleSrc.replace(/LAT/g,mydata.lat);
	googleZoom = googleZoom.replace(/LAT/g,mydata.lat);
	googleSrc = googleSrc.replace(/LON/g,mydata.lon);
	googleZoom = googleZoom.replace(/LON/g,mydata.lon);
	mydata.lon = Math.round(Math.ceil(mydata.lon)+200);
	mydata.lat = ((Math.ceil((mydata.lat*-1)*0.75))+197);
	var posNal = document.getElementById('position');
	posNal.style.top = (mydata.lat+"px");
	posNal.style.left = (mydata.lon+"px");
	posNal.style.visibility = "visible";
	document.getElementById("ph_position").getElementsByTagName("img")[0].src = googleSrc;
	document.getElementById("posArea").href = googleZoom;
}

function convertWGS84(x,vNeg,vPos) {
	var y = Math.abs(Math.round(x * 1000000));
	y = (Math.floor(y / 1000000) + '&deg;' + Math.floor(((y/1000000) - Math.floor(y/1000000)) * 60) + '\'');
	y += (x < 0)? vNeg:vPos;
	return y;
}

function fixaRubbar() {
	if ((hasRequestedMore) && (!(hasReachedEnd))) return;
	var defaultSOffset = 164;
	document.getElementById('superrubbe').style.visibility = "visible";
	var superRubbe = document.getElementById('superrubbe');
	var superText = "";
	var superOffset = defaultSOffset;
	var superHeight = superRubbe.offsetHeight;
	var docTop = getYpos();
	var postTop = docTop;
	var postData = "";
	var rubbar = document.getElementById('blogg').getElementsByTagName('h1');
	var rubbeTop = 0;
	for (x in rubbar) {
		if (rubbar[x].style) {
			rubbeTop = (rubbar[x].offsetTop);
			if (rubbeTop < (docTop+defaultSOffset+1)) {
				superText = rubbar[x].innerHTML;
				postTop = (rubbeTop-defaultSOffset);
				postData = rubbar[x].lastChild.innerHTML;
			}
			if (rubbeTop < (docTop+defaultSOffset+superHeight)) superOffset = (rubbeTop-docTop);
			rubbar[x].style.visibility = (rubbeTop < (docTop+defaultSOffset)) ? 'hidden':'visible';
		}
	}
	setPosition(postData);
	superRubbe.innerHTML = superText;
	if (superOffset < 0+defaultSOffset) superOffset = superHeight+defaultSOffset;
	superRubbe.style.top = (0-superHeight+superOffset-defaultSOffset) + "px";
}

function showHideCmts(cmts) {
	if (shVisible()) return;
	var cmtsFld = document.getElementById('comments' + cmts);
	cmtsFld.style.display = (cmtsFld.style.display == "block") ? "none":"block";
}

function shVisible() {
	return (document.getElementById("coverwhite").style.visibility == "visible");
}

function iwVisible() {
	return (document.getElementById("bildbox").style.visibility == "visible");
}

function firstAndLastChild(who,what) {
	var allChilds = who.getElementsByTagName(what);
	var myFirst = null;
	var myLast = null;
	for (var myChild in allChilds) {
		if (allChilds[myChild].src !== undefined) {
			if (myFirst == null) {myFirst = allChilds[myChild];}
			myLast = allChilds[myChild];
		}
	}
	return [myFirst,myLast];
}

function showImage(who) {
	if (shVisible()) return;
	var myReload = false;
	var fal = firstAndLastChild(document.getElementById("largepreview"),"img");
	if ((fal[1] !== null) && (zoomUrl == fal[1].src.replace("preview",""))) {
		who = fal[0];
		myReload = true;
	} else if ((fal[0] !== null) && (zoomUrl == fal[0].src.replace("preview",""))) {
		who = fal[1];
		myReload = true;
	}
	
	var whoTop = absPos(who)[1];
	
	showImgHl(who,true);
	showZoom(who,false);
	document.getElementById("largepic").getElementsByTagName("img")[0].src = "/external/img/wait-wob.gif";
	if ((!(iwVisible())) || (myReload)) {
		savedScrollerState = getYpos();
		var myH = document.getElementById("bildbox").offsetHeight;
		document.getElementById("largepreview").innerHTML = "";
		var XMLHttp = new XMLHttpRequest();
		XMLHttp.open("GET", "/get/?largepreview="+zoomUrl+"&h="+myH+"&c="+whoTop+"&r=" + myReload,true);
		XMLHttp.onreadystatechange = function() {
			if (XMLHttp.readyState == 4) {
				document.getElementById("largepreview").innerHTML = XMLHttp.responseText;
				showImgHl(null,true);
			}
		}
		XMLHttp.send(null);
		document.getElementById("bildbox").style.visibility = document.getElementById("coverblack").style.visibility = "visible";
	}
	document.getElementById("largepic").getElementsByTagName("img")[0].src = zoomUrl;
	var imgDate = zoomUrl.replace(/\D/g,"");
	if (lang == "s") {
		var months = ["","jan","feb","mars","april","maj","juni","juli","aug","sep","okt","nov","dec"];
		document.getElementById("imgdate").innerHTML = parseInt(imgDate.substr(8,2),10) + " " + months[parseInt(imgDate.substr(6,2),10)] + " " + imgDate.substr(2,4);
		if (imgDate.substr(10,4) != "0000") {document.getElementById("imgdate").innerHTML += (" (" + imgDate.substr(10,2) + ":" + imgDate.substr(12,2) + ")");}
	} else {
		var months = ["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
		document.getElementById("imgdate").innerHTML = months[parseInt(imgDate.substr(6,2),10)] + " " + parseInt(imgDate.substr(8,2),10) + ", " + imgDate.substr(2,4);
		if (imgDate.substr(10,4) != "0000") {document.getElementById("imgdate").innerHTML += (" (" + imgDate.substr(10,2) + ":" + imgDate.substr(12,2) + ")");}
	}
	imgInfo(true);
	preloadLarge();
}

function imgInfo(disp) {
	var imginfo = document.getElementById("imginfo");
	var d = new Date();
	if (disp) {
		imginfo.style.bottom = "0%";
		$fx(imginfo).fxReset();
		imgInfoHoldUntil = d.getTime()+3500;
		var imgInfoTimeOut = window.setTimeout("imgInfo(false)", 4000);
	} else {
		if (imginfo.style.bottom != "0%") return;
		if (d.getTime() < imgInfoHoldUntil) return;
		$fx(imginfo).fxAdd({type: 'bottom', from:0, to:-100, unit: '%', step: -2, delay:50}).fxRun();
	}
}

function setOpacity(who,op) {
	if ((who.style.MozOpacity) && (op == 1)) op = '0.99';
	if (who.style.opacity) who.style.opacity = op;
	if (who.style.MozOpacity) who.style.MozOpacity = op;
	if (who.style.filter) who.style.filter = 'alpha(opacity=' + (op*100) + ')';
}

function showZoom(ref,doShow) {
	if (shVisible()) return;
	var zoomer = document.getElementById('zoom');
	if (doShow) {
		zoomUrl = ref.src.replace("preview","");
		zoomer.style.top = (absPos(ref)[1]) + "px";
		if (!(iwVisible())) {zoomer.style.top = (absPos(ref)[1]-getYpos()) + "px";}
		zoomer.style.left = absPos(ref)[0] + "px";
	}
	zoomer.style.display = (doShow) ? "block":"none";
}

function showImgHl(ref,doShow) {
	if (shVisible()) return;
	var hl = document.getElementById('imghl');
	if (doShow) {
		
		if (ref == null) {
		var allChilds = document.getElementById("largepreview").getElementsByTagName("img");
		for (var myChild in allChilds) {
			if (allChilds[myChild].src !== undefined) {
				if (zoomUrl == allChilds[myChild].src.replace("preview","")) {ref = allChilds[myChild];}
			}
		}
		}
		
		hl.style.top = ref.offsetTop-5 + "px";
		hl.style.left = absPos(ref)[0]-5 + "px";
	}
	hl.style.display = (doShow) ? "block":"none";
}

function tangentNed(e) {
	if (!e) var e = window.event;
	if (e.keyCode) var iKey = e.keyCode;
	else if (e.which) var iKey = e.which;
	if ((!(iwVisible())) || (iKey < 37) || (iKey > 40)) return true;
	var d = new Date();
	if (myKeyIsDown > d.getTime()) return false; // change to d.getTime()
	keyRepeats++;
	var keyIncr = (keyRepeats > 4) ? 400:800;
	var presentUrl = document.getElementById("largepic").getElementsByTagName("img")[0].src;
	var smallOnes = document.getElementById("largepreview").getElementsByTagName("img");
	var nextObj = null;
	for (myImg in smallOnes) {
		if (smallOnes[myImg].src !== undefined) {
			if (smallOnes[myImg].src.replace("preview","") == presentUrl) {
				if ((smallOnes[myImg].nextSibling) && (iKey >= 39)) nextObj = smallOnes[myImg].nextSibling;
				if ((smallOnes[myImg].previousSibling) && (smallOnes[myImg].previousSibling.src) && (iKey <= 38)) nextObj = smallOnes[myImg].previousSibling;
			}
		}
	}
	if (nextObj) {
		zoomUrl = nextObj.src.replace("preview","");
		showImage(nextObj);
	}
	myKeyIsDown = (d.getTime()+keyIncr);
	return false;
}

function tangentUpp(e) {
	myKeyIsDown = 0;
	keyRepeats = 0;
}

function preloadLarge() {
	var presentUrl = document.getElementById("largepic").getElementsByTagName("img")[0].src;
	var smallOnes = document.getElementById("largepreview").getElementsByTagName("img");
	var nextObj = null;
	var prevObj = null;
	for (myImg in smallOnes) {
		if (smallOnes[myImg].src !== undefined) {
			if (smallOnes[myImg].src.replace("preview","") == presentUrl) {
				nextObj = smallOnes[myImg].nextSibling;
				prevObj = smallOnes[myImg].previousSibling;
			}
		}
	}
	if (nextObj) {
		var nxtPic= new Image();
		nxtPic.src=nextObj.src.replace("preview","");
	}
	if (prevObj) {
		var prePic= new Image();
		prePic.src=prevObj.src.replace("preview","");
	}	
}

function skickaKommentar(who) {
	var holdDiv = who.parentNode.parentNode;
	var uFlds = holdDiv.getElementsByTagName("input");
	var uName = uKomm = "";
	for (x in uFlds) {
		if (typeof(uFlds[x]) == "object") {
			if (uFlds[x].className == "cname") uName = uFlds[x].value;
			if (uFlds[x].className == "ckomm") uKomm = uFlds[x].value;
		}
	}
	if ((uName == "") || (uName == "Name") || (uName == "Namn") || (uKomm == "")) return;
	doWait(who.parentNode);
	var XMLHttp = new XMLHttpRequest();
	XMLHttp.holdDiv = holdDiv;
	XMLHttp.open("GET", "/get/?comment="+holdDiv.id+"&name="+escape(uName)+"&komm="+escape(uKomm),true);
	XMLHttp.onreadystatechange = function() {
		if (XMLHttp.readyState == 4) {
			doWait();
			var myResponse = XMLHttp.responseText.split("*",2);
			document.getElementById("cnt"+holdDiv.id).innerHTML = myResponse[0];
			holdDiv.innerHTML = myResponse[1];
		}
	}
	XMLHttp.send(null);
}

function nearestPos(myX,myY) {
	var dist = 10000;
	var posPairs = mapPos.split(" ");
	var myXY;
	var out;
	var tmp;
	for (myPair in posPairs) {
		myXY = posPairs[myPair].split(",");
		tmp = (Math.abs(myXY[0]-myX)+Math.abs(myXY[1]-myY));
		if (tmp < dist) {
			dist = tmp;
			out = myXY;
		}
	}
	return out;
}

function startDragging() {
	hoverBox();
	isDragging=true;
	return false;
}

function startSelect() {
	if (isDragging) return false;
}

function stopDragging() {
	if (!isDragging) return false;
	isDragging = false;
	loadPosts(true,(mousePos[0] + ":" + mousePos[1]));
}

function mouseMove(ev) {
	if (!isDragging) return false;
	ev = ev || window.event;
	var posNal = document.getElementById("position");
	mousePos = nearestPos(ev.clientX-absPos(document.getElementById("karta"))[0],ev.clientY-166);
	posNal.style.top = ((mousePos[1]*1+145)+"px");
	posNal.style.left = ((mousePos[0]-28)+"px");
	return true;
}

function valTfn(evt,allowedKeys) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  if (theEvent.metaKey) return true;
  key = String.fromCharCode(key);
  var regex = /[0-9]/;
  if (allowedKeys) {regex = /[0-9]/;}
  if(!regex.test(key) ) {
    theEvent.returnValue = false;
    if (theEvent.preventDefault) theEvent.preventDefault();
  }
}
