﻿/*
	gsk.fi helper functions
	(c) 2006 Verkkojulkaisut SV Oy
*/


// This function gets the last document modification date and prints it out using the output format given as a parameter.
// NOTE: The document.lastModified property relys on file timestamps on the server. This means you should take care of the
// necessary time zone shifts by editing the localized outputs.
function getLocalModDate(locale){
	if(document.lastModified && document.lastModified != "undefined"){
		var wholeDateAsString = document.lastModified;
		var wholeDateArray = wholeDateAsString.split(" ");
		var dateParts = wholeDateArray[0].split("/");
		var timeParts = wholeDateArray[1].split(":");
		
		var retval = "";
		
		
		
		// Locale switch
		switch(locale){
			
			default:
				// var formattedDate = dateParts[1] + "." + dateParts[0] + "." + dateParts[2] + " klo" + timeParts[0] + "." + timeParts[1];
				var formattedDate = dateParts[1] + "." + dateParts[0] + "." + dateParts[2]; // Changed 17.1.2006
				retval = "Päivitetty " + formattedDate;
				break;
		}
		
		
		
		return retval;
	}
	else{
		return "";
	}
}



// This function fixes the differences in date.getYear() between IE and other browsers
function getFixedYear(paramDate){
	if(!paramDate || paramDate == "undefined")
		paramDate = new Date();
	var retval = paramDate.getYear();
	if(paramDate.getYear() < 1900){
		retval = paramDate.getYear() + 1900;
	}
	
	return retval;
}








/*  
	Active navigation trail resolver
	(c) 2007 Kimmo Tapala / Verkkojulkaisut Oy
	
	Usage:
		- Mark navigation items according to these rules:
			- Navigation links ("a" tags) that point to section fronts should be marked with 'rel="alternate"'
			- Navigation links ("a" tags) that point to section subpages should be marked with 'rel="contents"'
		- Call resolveNavitems in the onload event of the body element
		- Use CSS to style the links. Active navigation items belong to class "active"
	
	Notice:
		- The resolver ignores all named anchor information (addresses that end with "#foobar") in the links and in the current location
		- You should always refer to the section fronts using only the folder paths and leave out the file name
*/

// Top level resolver
function resolveNavitems(){
	var currentURL = location.href; // The entire location URL is used in the resolution process
	currentURL = currentURL.replace(/(#.*)$/, ""); // Strip anchor names

	for(var i = 0; i < document.getElementsByTagName("a").length; i++){
		var linkURL = document.getElementsByTagName("a")[i].href;
		linkURL = linkURL.replace(/(#.*)$/, ""); // Strip anchor names
		
		// Check link relations and try if the link URLs match the criteria
		if((document.getElementsByTagName("a")[i].rel == "alternate" && (currentURL == linkURL || subfolderMatch(linkURL, currentURL))) || (document.getElementsByTagName("a")[i].rel == "contents" && currentURL == linkURL)){
			document.getElementsByTagName("a")[i].className += " active";
			var imageLinks = document.getElementsByTagName("a")[i].getElementsByTagName("img");
			for(var img = 0; img < imageLinks.length; img++){
				if(imageLinks[img].className && imageLinks[img].className.search("preloadableImage") >= 0 && imageLinks[img].src.search("_active") < 0){
					var imgSrc = imageLinks[img].src;
					var startPos = imgSrc.lastIndexOf(".");
					imageLinks[img].src = imgSrc.substring(0, startPos) + "_active" + imgSrc.substring(startPos);
				}
			}
		}
	}
}

// Compare two folder URLs and return true, if the first folder contains the second
function subfolderMatch(parentURL, childURL){
	if(getProtocol(parentURL) == getProtocol(childURL) && getHost(parentURL) == getHost(childURL) && getPath(childURL).indexOf(getPath(parentURL)) >= 0){
		return true;
	}
	else{
		return false;
	}
}

// Return the protocol part of the given URL
function getProtocol(url){
	var urlParts = url.split("://");
	var retval = "";
	
	if(urlParts.length > 1){
		retval = urlParts[0];
	}
	
	return retval;
}

// Return the host part of the given URL
function getHost(url){
	var urlParts = url.split("://");
	var retval = "";
	
	if(urlParts.length > 1){
		var pathParts = urlParts[1].split("/");
		retval = pathParts[0];
	}
	
	return retval;
}

// Return the path part of the given URL
function getPath(url){
	var urlParts = url.split("://");
	var retval = "";
	
	if(urlParts.length > 1){
		var pathParts = urlParts[1].split("/");
		if(pathParts.length > 1){
			var fullPath = "/";
			var fileIncluded = 0;
			
			if(pathParts[pathParts.length - 1].indexOf(".") >= 0){
				fileIncluded = 1;
			}
			
			for(var i = 1; i < pathParts.length - fileIncluded; i++){
				fullPath += pathParts[i] + "/";
			}
			
			retval = fullPath;
		}
	}
	
	return retval;
}








/*
	Image hovering effects
*/

var preloadedImages = new Array();

function activate(element){
	var imgSrc = element.src;
	var startPos = imgSrc.lastIndexOf(".");
	if(startPos >= 0 && imgSrc.lastIndexOf("_active") != (startPos - 7)){
		element.src = imgSrc.substring(0, startPos) + "_active" + imgSrc.substring(startPos);
	}
}

function deactivate(element){
	var parent = element.parentNode;
	if(!parent.className || parent.className.search(" active") < 0){
		var imgSrc = element.src;
		var activeStart = imgSrc.lastIndexOf("_active");
		var dotPos = imgSrc.lastIndexOf(".");
		if(activeStart >= 0 && dotPos >= 0){
			element.src = imgSrc.substring(0, activeStart) + imgSrc.substring(dotPos);
		}
	}
}

function preloadImages(){
	var images = document.getElementsByTagName("img");
	for(var i = 0; i < images.length; i++){
		if(images[i].className.search("preloadableImage") >= 0){
			var imgSrc = images[i].src;
			var startPos = imgSrc.lastIndexOf(".");
			if(startPos >= 0){
				var tempImage = new Image();
				tempImage.src = imgSrc.substring(0, startPos) + "_active" + imgSrc.substring(startPos);
				preloadedImages.push(tempImage);
			}
		}
	}
	
	//alert(preloadedImages.length);
}


function getViewportSize() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	
	var dimensions = new Array(2);
	dimensions[0] = myWidth;
	dimensions[1] = myHeight;
	
	return dimensions;
}





/* 
	Footer positioning
*/

function positionFooter(){
	var emt = document.getElementById("footer");
	var wrapper = document.getElementById("wrapper");
	
	var winDimensions = getViewportSize();
	var winHeight = winDimensions[1];
	
	if(wrapper.clientHeight < winHeight){
		wrapper.style.height = winHeight + "px";
		emt.style.position = "absolute";
		emt.style.bottom = "0";
	}
}






/*
	Background IE fix
*/

function fixBG(emtID, bgCSS){
	document.getElementById(emtID).style.background = bgCSS;
	//t = setTimeout("fixBG(" + emtID + "," + bgCSS + ")",1000);
}