/*
menu.js

Add some interacton to the navs (both manin nav and page nav). The navs will work just fine without js enabled as well.
@author Anders Ytterström <anders.ytterstrom@adeprimo.se>
@version 1.0
*/

function prepareNavs() {
	if(!document.getElementById) return;
	var bgdist = 10;
	if(document.getElementById('nav')) {
		var nli = document.getElementById('nav').getElementsByTagName('li');
		for(var i=0; i<nli.length; i++) {
			var p = nli[i];
			var a = p.getElementsByTagName('a')[0];
			var id = p.getAttribute('id')+'-eyecandy';
			var ec = document.createElement('img');
			var x = parseInt(p.style.width);
			ec.src = "/app/projects/are/images/system/bg_top_meny_dark.png";
			ec.setAttribute('id',id);
			ec.className = 'eyecandy';
			ec.style.position = "absolute";
			ec.style.left = "-"+(bgdist)+"px";
			if(p.className=='active') ec.style.top = "0";
			else ec.style.top = "-44px";
			bgdist = (bgdist + x);
			p.insertBefore(ec,a);
			if(p.className!='active') {
				a.onmouseover = function() {mainNavHover(this);}
				a.onmouseout = function() {mainNavReset(this);}
			}
		}
	}
	if(document.getElementById('subnav')) {
		var snli = document.getElementById('subnav').getElementsByTagName('li');
		for(var i=0; i<snli.length; i++) {
			var p = snli[i];
			var a = p.getElementsByTagName('a')[0];
			var id = p.getAttribute('id')+'-eyecandy';
			var ec = document.createElement('span');
			ec.setAttribute('id',id);
			ec.className = 'eyecandy'; 
			if(a.parentNode.parentNode.getAttribute('id') != 'subnav') {
				ec.style.position = "absolute";
				ec.style.left = "-30px";
				ec.style.top = "0";
			} else {
				ec.style.position = "absolute";
				ec.style.left = "-165px";
				ec.style.top = "0";
			}
			p.insertBefore(ec,a);
			a.onmouseover = function() {
				(this.parentNode.parentNode.getAttribute('id') == 'subnav') ? NavL2Hover(this) : NavL3Hover(this);
			}
			a.onmouseout = function() {
				(this.parentNode.parentNode.getAttribute('id') == 'subnav') ? NavL2Reset(this) : NavL3Reset(this);
			}
		}
	}
	enchancePageFooterItems();
}


function mainNavHover(elem) {
	if(elem.className != "active") {
		var ec = elem.parentNode.getElementsByTagName('img')[0];
		var id = ec.getAttribute('id');
		move(id,parseInt(ec.style.left),0,10,10);
	}
}

function mainNavReset(elem) {
	if(elem.className != "active") {
		var ec = elem.parentNode.getElementsByTagName('img')[0];
		var id = ec.getAttribute('id');
		if(ec.movement) clearTimeout(ec.movement); 
		move(id,parseInt(ec.style.left),-44,10,10);
	}
}

function NavL2Hover(elem) {
	if(elem.className != "active") {
		var ec = elem.parentNode.getElementsByTagName('span')[0];
		var id = ec.getAttribute('id');
		move(id,0,0,2,2);
	}
}

function NavL2Reset(elem) {
	if(elem.className != "active") {
		var ec = elem.parentNode.getElementsByTagName('span')[0];
		var id = ec.getAttribute('id');
		if(ec.movement) clearTimeout(ec.movement); 
		move(id,-165,0,2,2);
	}
}

function NavL3Hover(elem) {
	var ec = elem.parentNode.getElementsByTagName('span')[0];
	var id = ec.getAttribute('id');
	move(id,0,0,10,10);
}

function NavL3Reset(elem) {
	var ec = elem.parentNode.getElementsByTagName('span')[0];
	var id = ec.getAttribute('id');
	if(ec.movement) clearTimeout(ec.movement); 
	move(id,-30,0,10,10);
}

function displaySubMenu(elem) {
	elem.className = "active";
	var subnav = elem.parentNode.getElementsByTagName('ul')[0];
	subnav.style.bottom = "0";
	subnav.style.display = "block";
	subnav.parentNode.setAttribute('id','currentlyExpanding');
	var y = (subnav.getElementsByTagName('li').length+1)*25;
	subnav.parentNode.style.height = "25px";
	subnav.parentNode.style.width = "165px";
	expand('currentlyExpanding',165,y,10,10);
	return false;
}

/*
animation found at #1
*/

function move(elemId,finalX,finalY,increment,interval) {
	if(!document.getElementById) return;
	if(!document.getElementById(elemId)) return;
	var elm = document.getElementById(elemId);
	if(elm.movement) clearTimeout(elm.movement); 
	var xpos = parseInt(elm.style.left,10);
	var ypos = parseInt(elm.style.top,10);
	var dist;
	if(xpos == finalX && ypos == finalY) return;
	if(xpos < finalX) {
		dist = Math.ceil((finalX - xpos)/increment);
		xpos = xpos + dist;
	}
	if(xpos > finalX) {
		dist = Math.ceil((xpos - finalX)/increment);
		xpos = xpos - dist;
	}
	if(ypos < finalY) {
		dist = Math.ceil((finalY - ypos)/increment);
		ypos = ypos + dist;
	}
	if(ypos > finalY) {
		dist = Math.ceil((ypos - finalY)/increment);
		ypos = ypos - dist;
	}
	elm.style.left = xpos+"px";
	elm.style.top = ypos+"px";
	repeat = "move('" + elemId + "'," + finalX + "," + finalY + "," + increment + "," + interval + ")";
	elm.movement = setTimeout(repeat,interval);
}

/*
expand() built from move() 
*/

function expand(elemId,finalX,finalY,increment,interval) {
	if(!document.getElementById) return;
	if(!document.getElementById(elemId)) return;
	var elm = document.getElementById(elemId);
	if(elm.movemento) clearTimeout(elm.movemento); 
	var xpos = parseInt(elm.style.width,10);
	var ypos = parseInt(elm.style.height,10);
	var dist;
	if(xpos == finalX && ypos == finalY) {
		elm.setAttribute('id', '');
		return;	
	}
	if(xpos < finalX) {
		dist = Math.ceil((finalX - xpos)/increment);
		xpos = xpos + dist;
	}
	if(xpos > finalX) {
		dist = Math.ceil((xpos - finalX)/increment);
		xpos = xpos - dist;
	}
	if(ypos < finalY) {
		dist = Math.ceil((finalY - ypos)/increment);
		ypos = ypos + dist;
	}
	if(ypos > finalY) {
		dist = Math.ceil((ypos - finalY)/increment);
		ypos = ypos - dist;
	}
	elm.style.width = xpos+"px";
	elm.style.height = ypos+"px";
	repeat = "expand('" + elemId + "'," + finalX + "," + finalY + "," + increment + "," + interval + ")";
	elm.movemento = setTimeout(repeat,interval);
}

// getElementsByClassName, by Robert Nyman:
// http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\s)" + className + "(\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

/*
superetta teaser
*/

function hilightTeaser(elem) {
		var id = elem.id+'Eyecandy';
		var ec = document.getElementById(id);
		if(!ec.style.left) ec.style.left = "-380px"; 
		if(!ec.style.top) ec.style.top = "0px"; 
		moveEasy(id,0,0,38,4);
}

function resetTeaser(elem) { 
		var id = elem.id+'Eyecandy';
		moveEasy(id,-380,0,38,2);
}

function moveEasy(elemId,finalX,finalY,increment,interval) {
	if(!document.getElementById) return;
	if(!document.getElementById(elemId)) return;
	var elm = document.getElementById(elemId);
	if(elm.movement) clearTimeout(elm.movement); 
	var xpos = parseInt(elm.style.left,10);
	var ypos = parseInt(elm.style.top,10);
	var dist = increment;
	if(xpos == finalX && ypos == finalY) return;
	if(xpos < finalX) {
		xpos = xpos + dist;
	}
	if(xpos > finalX) {
		xpos = xpos - dist;
	}
	if(ypos < finalY) {
		ypos = ypos + dist;
	}
	if(ypos > finalY) {
		ypos = ypos - dist;
	}
	elm.style.left = xpos+"px";
	elm.style.top = ypos+"px";
	repeat = "moveEasy('" + elemId + "'," + finalX + "," + finalY + "," + increment + "," + interval + ")";
	elm.movement = setTimeout(repeat,interval);
}

/*
stuffs below belongs to the pagefooter enchancements.
*/

function hilightPF(elem) {
	var path = "/app/projects/are/images/imlib/";
	var images = [];
	images['lift.gif'] = "lift_play.gif";
	images['mail.gif'] = "mail_play.gif";
	images['vader.gif'] = "vader_play.gif";
	images['wc.gif'] = "wc_play.gif";
	images['kon.gif'] = "kon_play.gif";
	var img = elem.style.backgroundImage.substring((elem.style.backgroundImage.lastIndexOf('/')+1),(elem.style.backgroundImage.indexOf('.gif')+4));
	if(images[img] == null) return;
	elem.style.backgroundImage = "url(" + path + images[img] + ")";	
}

function resetPF(elem) {
	var path = "/app/projects/are/images/imlib/";
	var images = [];
	images['lift_play.gif'] = "lift.gif";
	images['wc_play.gif'] = "wc.gif";
	images['vader_play.gif'] = "vader.gif";
	images['mail_play.gif'] = "mail.gif";
	images['kon_play.gif'] = "kon.gif";
	var img = elem.style.backgroundImage.substring((elem.style.backgroundImage.lastIndexOf('/')+1),(elem.style.backgroundImage.indexOf('.gif')+4));
	if(images[img] == null) return;
	elem.style.backgroundImage = "url(" + path + images[img] + ")";	
}


function enchancePageFooterItems() {
    var pfc = document.getElementById('pageFooterContainer');
    if(!pfc)
        return;

	var dls = pfc.getElementsByTagName('dl');
    if(!dls)
        return;
        
	for(var i=0;i<dls.length;i++) {
		var dl = dls[i];
		dl.onmouseover = function() {hilightPF(this);}
		dl.onmouseout = function() {resetPF(this);}
	}
	var lis = document.getElementById('pageFooterContainer').getElementsByTagName('li');
	for(var i=0;i<lis.length;i++) {
		var l = lis[i];
		l.onmouseover = function() {hilightPF(this);}
		l.onmouseout = function() {resetPF(this);}
	}
}

