
function getDocHeight(){
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

var HS = 0;
var VS = 0;
window.onscroll = function updateScroll(){
	if (window.innerWidth) {
		// All browsers but Internet Explorer
		HS = window.pageXOffset; VS = window.pageYOffset;
		}
		else if(document.documentElement && document.documentElement.clientWidth){
		// These are for Internet Explorer 6 when a DOCTYPE is defined
		HS = document.documentElement.scrollLeft;
		VS = document.documentElement.scrollTop; }
		else if (document.body.clientWidth) {
		// These are for Internet Explorer 5/6 without a DOCTYPE
		HS = document.body.scrollLeft; VS = document.body.scrollTop;
	}
}

document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
};


function toggleDisplay(e, divId){

	var btn = document.getElementById(e.target.id);
	var toToggle = document.getElementById(divId);

	if(toToggle.style.display !== "inline"){
		toToggle.style.display = "inline";
		btn.innerHTML = btn.innerHTML.replace("Open", "Close");
	}
	else{
		toToggle.style.display = "none";
		btn.innerHTML = btn.innerHTML.replace("Close", "Open");
	}

}


// Confirm hazard links
var hazards = document.getElementsByClassName("hazard");
for(var i=0;i<hazards.length;i++){
	hazards[i].onclick = function(){
		var sure = confirm("Oletko varma?");
		if(sure){
			return true;
		}
		return false;
	}
}




// Empty possible inputs on focus
var emptyPuts = document.getElementsByClassName("emptyme");
for(var i=0;i<emptyPuts.length;i++){
	var me = emptyPuts[i];
	me.setAttribute("origValue", me.value);
	me.onfocus = function(){
		var myOrig = this.getAttribute("origValue");
		if(this.value == myOrig) this.value = "";
	}
	me.onblur = function(){
		var myOrig = this.getAttribute("origValue");
		if(this.value == "") this.value = myOrig;
	}
}

// Form checker
var forms = document.getElementsByTagName("form");
for(var x=0;x<forms.length;x++){
	var theForm = forms[x];
	theForm.onsubmit = function(){
		var nagged = 0;
		var puts = document.getElementsByClassName("mandatory");

		for(var i=0;i<puts.length;i++){
			if(nagged < 1){
				if(puts[i].value == ""){
					// Empty field, nag, highlight and focus
					puts[i].focus();
					nagged = 1;
					var backto = puts[i].style.backgroundColor;
					puts[i].style.backgroundColor = "red";
					puts[i].setAttribute("id", "missing"+i);
					setTimeout("document.getElementById('missing"+i+"').style.backgroundColor = '"+backto+"'", 100);
				}
			}
		}
		if(nagged < 1) this.submit();

		return false;
	}
}




function centerDivHorizontally(divId){

	var me = document.getElementById(divId);
	var myLeft = ((document.body.offsetWidth / 2) - (me.offsetWidth / 2)) + "px";
	me.style.left = myLeft;

}

var curFadeOpa = 1;

function fadeDivIn(divId){
	var theDiv = document.getElementById(divId);
	if(curFadeOpa < 1){
		curFadeOpa += .03;
		theDiv.style.opacity = curFadeOpa;
		setTimeout("fadeDivIn('" + divId + "')", 40);
	}
	else{
		curFadeOpa = 1;
		theDiv.style.opacity = 1;
	}

}

function fadeDivOut(divId){
	var theDiv = document.getElementById(divId);
	if(curFadeOpa > 0){
		curFadeOpa -= .03;
		theDiv.style.opacity = curFadeOpa;
		setTimeout("fadeDivOut('" + divId + "')", 40);
	}
	else{
		curFadeOpa = 1;
		theDiv.style.opacity = 0;
		theDiv.style.display = "none";
	}

}

///////////////////////

var picLinks = document.getElementsByClassName("pic");
var picsLen = picLinks.length;
for(var i=0;i<picsLen;i++){

	picLinks[i].onclick = function(){

		openPic(this.href);
		return false;

	}

}

var dimmer = document.getElementById("dimmer");

document.images[document.images.length - 1].addEventListener("load", stretchDimmer, false);

function stretchDimmer(){

	dimmer.style.height = getDocHeight() + "px";

}

function openPic(targ){

	dimmer.innerHTML = "<h1 id='loading'>Loading photo</h1>";
	document.getElementById("loading").style.marginTop = VS + 100 + "px";

	var myPic = new Image();

	dimmer.style.display = "inline";

	myPic.onload = function(){

		if(document.getElementById("modalDiv")){

			document.body.removeChild(document.getElementById("modalDiv"));

		}

		var modal = document.createElement("div");
		modal.id = "modalDiv";
		modal.style.top = 50 + VS + "px";
		modal.innerHTML = "<img src='" + targ + "' alt='' />";
		modal.style.visibility = "hidden";

		pointToActive(targ);

		document.body.appendChild(modal);
		//createArrows();

		setTimeout(initPic, 100);
		putInfo();

	}

	myPic.src = targ;

	document.addEventListener("click", closePic, false);

}

function initPic(){

	if(!document.getElementById("modalDiv")) return;

	setTimeout('centerDivHorizontally("modalDiv");', 100);
	setTimeout(revealPic, 500);
	document.body.style.cursor = "pointer";
	//document.body.title = "Click anywhere to close";

}

function revealPic(){

	dimmer.innerHTML = "";

	stretchDimmer();
	document.getElementById("modalDiv").style.visibility = "visible";
	//fadeIn("modalDiv");

}

function closePic(){

	if(!document.getElementById("modalDiv")) return;

	dimmer.style.display = "none";
	document.body.removeChild(document.getElementById("modalDiv"));

	document.removeEventListener("click", closePic, false);

	document.body.style.cursor = "default";
	document.body.title = "";

}




// Key presses etc.
var keepGoing;

nn=(document.layers)?true:false; ie=(document.all)?true:false; var moving = 0;
var loopCntr = 0;
function keyDown(e) {
	loopCntr ++;
	if(loopCntr < 2){
		moving = 1;
		var evt=(e)?e:(window.event)?window.event:null;
		if(evt){
			var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
			//alert(key);
			switch(key){
				case 37: move("left"); break;
				case 27: closePic(); break;
				case 39: move("right"); break;
			}
		}
	}
}
document.onkeydown = keyDown;document.onkeyup = function(){	clearTimeout(keepGoing);moving = 0;loopCntr = 0;};if(nn) document.captureEvents(Event.KEYDOWN);

function getPics(){

	var imgs = new Array();

	var thumbs = document.getElementsByTagName("img");
	var thumbsLen = thumbs.length;

	for(var i=0;i<thumbsLen;i++){

		var me = thumbs[i];
		var myLink = me.parentNode;

		imgs.push(myLink);

	}

	return imgs;

}

var allPics = getPics();
var nowActive = "";
var nowActiveNumber = 0;

function pointToActive(activateThis){

	nowActive = activateThis;

	for(var i=0;i<allPics.length;i++){

		if(allPics[i] == nowActive){
			nowActiveNumber = i;
			//allPics[i].parentNode.className = "activePic";
		}

	}

}

pointToActive(allPics[0]);

function move(dir){

	if(!document.getElementById("modalDiv")) return;

	for(var i=0;i<allPics.length;i++){

		if(allPics[i] == nowActive){

			var modifiedKey = (dir == "left") ? i-1 : i+1;

			if(modifiedKey < 0) modifiedKey = allPics.length - 1;
			else if(modifiedKey == allPics.length) modifiedKey = 0;

			nowActiveNumber = modifiedKey;

			nextImage = allPics[modifiedKey];

		}

	}

	openPic(nextImage);

}


function putInfo(){

	if(!document.getElementById("modalDiv")) return;

	var modal = document.getElementById("modalDiv");
	var nowActiveNumberHuman = nowActiveNumber + 1;

	modal.innerHTML += "<div id='info'>Picture " + nowActiveNumberHuman + " of " + allPics.length + " - <a href='" + nowActive + "' onclick='this.target=\"_blank\";'>Open in new tab</a></div>";

}


// TOOLTIP ETC.

var x;
var y;

var tooltipping = 0;

var links = document.getElementsByTagName("a");
var tooltip = document.getElementById("tooltip");
var tooltipBody = document.getElementById("tooltipBody");

for(var i=0;i<links.length;i++){
	links[i].onmouseover = function(){ tooltipMe(this); return false; }
	links[i].onmouseout = function(){ stopTooltipping(); }
}


function tooltipMe(myLink){

	if(fading) clearTimeout(fading);

	tooltipping = 1;

	var myText = myLink.rel;
	if(myText == "") return;

	tooltip.style.display = "inline";
	fadeIn("tooltip");
	tooltipBody.innerHTML = myText;

	return false;

}


function stopTooltipping(){

	tooltipping = 0;

	tooltip.style.display = "none";
	tooltipBody.innerHTML = "";

}

document.onmousemove = function(e){

	if(tooltipping == 0) return;

	x = e.clientX + HS;
	y = e.clientY + VS;

	tooltip.style.top = (y - (tooltip.offsetHeight + 10)) + "px";
	tooltip.style.left = (x + 10) + "px";

}

var fading;
function fadeIn(id){

	var myElement = document.getElementById(id);

	if(!myElement.getAttribute("myOpa")){
		myElement.setAttribute("myOpa", 0);
		myElement.style.opacity = 0;
	}

	var myOpa = myElement.getAttribute("myOpa");

	if(parseFloat(myOpa) < 1){

		var myNewOpa = parseFloat(myOpa) + .05;
		myElement.setAttribute("myOpa", myNewOpa);

		myElement.style.opacity = myNewOpa;

		fading = setTimeout("fadeIn('"+id+"')", 25);

	}
	else{
		myElement.style.opacity = 1;
		myElement.setAttribute("myOpa", 0); // Mindfuck (tä)
	}

}

// Previous and Next buttons
function createArrows(){
	
	var prev = document.createElement("div");
	prev.innerHTML = "&lt;";
	prev.className = "arrow";
	prev.id = "link_previous";
	document.body.appendChild(prev);
	prev.onclick = function(){
		move("left");
		return false;
	}
	
}