/* JavaScript File Area Digital										*/
/* functions.js 													*/
/* Modified May 14th 2008							 				*/
/* http://www.areadigital.org/ 									    */


// ------------------------------------------ Google - Jumps to right page in the google navigator ------------------------------------------------------------

function google(target,selected,restore){
  
  eval(target+".location='"+selected.options[selected.selectedIndex].value+"'");
  if (restore) selected.selectedIndex=0;
  
}


// ---------------------------------------------------- Openwin - Opens a popup window ------------------------------------------------------------------------

function openwin(theURL,winName,features) {
	
  window.open(theURL,winName,features);
  
}


// ------------------------------------------- Dropdown - Adds a new class name to the dropdown meny ----------------------------------------------------------

dropdown = function() {
		
	IE4 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 4.')!=-1)) ? true : false;
	IE5 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 5.')!=-1)) ? true : false;
	IE6 = ((document.all)&&(navigator.appVersion.indexOf('MSIE 6.')!=-1)) ? true : false;
	
	if (IE4 || IE5 || IE6) {
				
		if (document.all && document.getElementById) {
			
			for (k=0; k<document.all.dropdown.length; k++) {
				
				for (i=0; i<document.all.dropdown[k].childNodes.length; i++) {
					
					var node = document.all.dropdown[k].childNodes[i];
					
					if (node.nodeName == 'LI') {
						
						if (node.className != 'divider') {
							
							node.onmouseover = function() {
								
								if (this.className == 'active') {
									this.className += ' hover';
								}
								else {
									this.className += 'hover';
								}
								
								var selectbox = document.getElementsByTagName('select');
								for (var l=0; l<selectbox.length; l++) {
									
									selectbox[l].style.visibility = 'hidden';
								}
							}
							node.onmouseout=function() {
								
								this.className = this.className.replace('active hover', 'active');
								this.className = this.className.replace('hover', '');
								
								var selectbox = document.getElementsByTagName('select');
								for (var l=0; l<selectbox.length; l++) {
									
									selectbox[l].style.visibility = 'visible';
								}
							}
							
							if (node.lastChild.nodeName == 'UL') {
								
								for (j=0; j<node.lastChild.childNodes.length; j++) {
									
									subnode = node.lastChild.childNodes[j];
								
									if (subnode.nodeName == 'LI') {
									
										if (subnode.lastChild.nodeName == 'UL') {
											
											subnode.onmouseover = function() {
												
												if (this.className == 'active') {
													this.className += ' hover';
												}
												else if (this.className == 'childs') {
													this.className += ' hover';
												}
												else if (this.className == 'active childs') {
													this.className += ' hover';
												}
												else {
													this.className += 'hover';
												}
											}
											subnode.onmouseout=function() {
												
												this.className = this.className.replace('active childs', 'active childs');
												this.className = this.className.replace('childs hover', 'childs');
												this.className = this.className.replace('active hover', 'active');
												this.className = this.className.replace('hover', '');
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}


// --------------------------------------------------------- swaplayers - swaps layers ----------------------------------------------------------------------

var currentlayer;

function swaplayers(id) {
	
	if (currentlayer) hidelayer(currentlayer);
	
	showlayer(id);
	currentlayer = id;
}


// ------------------------------------------------------ showlayer - shows a hidden layer ------------------------------------------------------------------

function showlayer(id) {
	var layer = getelement(id);
	
	if (layer && layer.css) {
		
		layer.css.visibility = "visible";
		layer.css.display = "block";
	}
}


// ----------------------------------------------------- hidelayer - hides a visible layer ------------------------------------------------------------------

function hidelayer(id) {
	var layer = getelement(id);
	
	if (layer && layer.css) {
		
		layer.css.visibility = "hidden";
		layer.css.display = "none";
	}
}


// ------------------------------------------------------ getelement - finds an element ----------------------------------------------------------------------

function getelement(id) {
	
	var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	
	if (el) el.css = (el.style)? el.style: el;
	
	return el;
}


// ----------------------------------------------------- setclass - add a new class name ---------------------------------------------------------------------

function setclass(list, menu) {
	
	var listobject = getelement(list);
	var menuobject = getelement(menu);
	
	for (i=0; i < menuobject.childNodes.length; i++) {
		
		var node = menuobject.childNodes[i];
	
		if (node.nodeName == 'LI') {
			
			node.className = 'idle';
		}
	}
	
	listobject.className = "active";
}


// ------------------------------------------------------- writeToLayer - write a text to a layer ----------------------------------------------------------------

function writeToLayer(layerID, txt) {

	if(document.getElementById){
		document.getElementById(layerID).innerHTML=txt;
	}
	else if(document.all){
		document.all[layerID].innerHTML=txt;
	}
	else if(document.layers){
		with(document.layers[layerID].document){
			open();
			write(txt);
			close();
		}
	}
}

// ----------------------------------------------- makeDoubleDelegate - runs more than one onload function -----------------------------------------------------

function makeDoubleDelegate(onload, operation) {
    
	var tempArgs = [];
	for(var i = 2; i < arguments.length; i++) {
		tempArgs[i - 2] = arguments[i];
	}
	return function() {
        if (onload)
            onload();
        if (operation) {
			if(tempArgs.length == 0) operation();
			else if(tempArgs.length == 1) operation(tempArgs[0]);
			else if(tempArgs.length == 2) operation(tempArgs[0], tempArgs[1]);
			else if(tempArgs.length == 3) operation(tempArgs[0], tempArgs[1], tempArgs[2]);
		}
    }
}

// -------------------------------------------------------------------------------------------------------------------------------------------------------------


//window.onload = makeDoubleDelegate(window.onload, dropdown);
//window.onload = makeDoubleDelegate(window.onload, writeToLayer, 'price', 'Verð: 278.769,-');
//window.onload = makeDoubleDelegate(window.onload, swaplayers, 'layer1');


