var my_asp;
var my_ran;

function getElements(classname, tagname, root) {
	/* Returnerer alle elemeter av type tagname og classenavn innenfor angitte root element*/
	/* Se «JavaScrip: The Definitive Guide» side 322. */
	str_root = root;
	if (!root) root = document;
	else if (typeof root == "string") root = document.getElementById(root);
	if ( (!root) && (str_root!="") )
		alert("[getElements] Finner ikke element med id: " + str_root);
	
	if(!tagname) tagname = "*";
	
	if(!root) return [];
		
	var all = root.getElementsByTagName(tagname);
	
	if(!classname) return all;
	
	var elements = [];
	for(var i = 0; i < all.length; i++) {
		var element = all[i];
		if(isMember(element, classname))
			elements.push(element);
	}
	return elements;	
}

function isMember(element, classname) {
	var classes = element.className;
	if(!classes) return false;
	if(classes == classname) return true;
	
	var whitespace = /\s+/;
	if(!whitespace.test(classes)) return false;
	
	var c = classes.split(whitespace);
	for(var i = 0; i < c.length; i++) {
		if(c[i] == classname) return true;
	}
	return false;
}

function getXMLElement(xmlDoc, name) {
	var value = "";
	var element = null;
	if(isIENavigator(navigator.userAgent)) {
		element = xmlDoc.getElementsByTagName(name)[0];
		if(element)
			value = element.text;
	}
	else {
		element = xmlDoc.getElementsByTagName(name).item(0);
		if(element)
			value = element.textContent;
	}
	return value;
}

function isIE6(useragent) {
	if(!useragent) useragent = navigator.userAgent;
	return (useragent.indexOf("MSIE 6")>=0);
}

function isIE7(useragent) {
	if(!useragent) useragent = navigator.userAgent;
	return (useragent.indexOf("MSIE 7")>=0);
}

function isIE8(useragent) {
	if(!useragent) useragent = navigator.userAgent;
	return (useragent.indexOf("MSIE 8")>=0);
}

function isIENavigator (useragent) {
	if((isIE6(navigator.userAgent)) || (isIE7(navigator.userAgent)) || (isIE8(navigator.userAgent))) {
		return true;
	}
	return false;
}

function cb_error (error) {
	alert(error);
}

function my_textToHtml(text) {
	while(text.indexOf('\n')>0 | text.indexOf('\r')>0) {
		text = text.replace('\n', '<br>', 'g').replace('\r', '<br>', 'g');	
	}
	return text;
}

function my_states () {
	//henter eller spesifiserer status
}

function my_loadBody(ASP, random) {
	my_asp = ASP;
	my_ran = random;
}

function my_getStates() {
	return "?ASP=" + (my_asp? my_asp:gup("ASP")) + "&random=" + (my_ran? my_ran:gup("Random"));
}

function $(name) {
	if(name) {
		return document.getElementById(name);
	}
	else {
		return undefined;
	}
}

function RemoveClassName(objElement, strClass) {  
	if ( objElement.className ) {
		var arrList = objElement.className.split(' ');
		var strClassUpper = strClass.toUpperCase();
		for ( var i = 0; i < arrList.length; i++ ) {
			if ( arrList[i].toUpperCase() == strClassUpper ) {
				arrList.splice(i, 1);
				i--;
			}
		}
		objElement.className = arrList.join(' ');
 	}
}

function AddClassName(objElement, strClass, blnMayAlreadyExist) {
	if ( objElement.className ) {
		var arrList = objElement.className.split(' ');
		if ( blnMayAlreadyExist ) {
			var strClassUpper = strClass.toUpperCase();
			for ( var i = 0; i < arrList.length; i++ ) {
				if ( arrList[i].toUpperCase() == strClassUpper ) {
					arrList.splice(i, 1);
					i--;
				}
			}
		}
		arrList[arrList.length] = strClass;
		objElement.className = arrList.join(' ');
	}
	else {
		objElement.className = strClass;
 	}
}
 
function HasClassName(objElement, strClass) {
	if ( objElement.className ) {
		var arrList = objElement.className.split(' ');
		var strClassUpper = strClass.toUpperCase();
		for ( var i = 0; i < arrList.length; i++ ) {
			if ( arrList[i].toUpperCase() == strClassUpper ) {
				return true;
			}
		}
	}
	return false;
}

function keystroke(e) {
	if (! e)
    	e = event;
    if(e.keyCode == 13) {
   		var element = eventTrigger(e);
   		if(element)
			element.onchange();
	}
}

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

function setFocus(obj) {
	//skrolle til topp?
	var ScrollTop = document.body.scrollTop;
	if (ScrollTop == 0) {
	    if (window.pageYOffset)
			ScrollTop = window.pageYOffset;
    	else
        	ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	var areaPos = getObjPos(obj);
	if(ScrollTop > areaPos[1]) {
		window.scrollTo(areaPos[1], areaPos[0]);
	}
}

function getAttribute(node, txt) {
	var value = "";
	var attributes = node.attributes;
	if(attributes) {
		for(var i = 0; i < attributes.length; i++) {
			if(attributes[i].nodeName == txt) {
				value = attributes[i].nodeValue;
				i = attributes.length;
			}
		}
	}
	return value;
}

function removeElement(id, element) {
	if(!element) {
		element = $(id);
	}
	if(!element) {
		//cb_error("Finner ikke element med id: " + id + "<br>[removeElement]" );
	}
	else {
		var parent = element.parentNode;
		if(parent)
			parent.removeChild(element);
	}
}
	
function hideElement(id) {
	var element = $(id);
	if(!element) {
		//cb_error("Finner ikke element med id: " + id + "<br>[hideElement]" );
	}
	else {
		element.style.display = "none";
	}
}

function showElement(id) {
	var element = $(id);
	if(!element) {
		//cb_error("Finner ikke element med id: " + id + "<br>[hideElement]" );
	}
	else {
		element.style.display = "block";
	}
}

function toggleDisplay (id) {
	var element = $(id)
	if(element) {
		if(HasClassName(element, "hidden"))
			RemoveClassName(element, "hidden");
		else
			AddClassName(element, "hidden");
	}
}

function getValueById(id) {
	var element = $(id);
	var tagname = "";
	if(element) tagname = element.tagName.toLowerCase();
	var value;
	switch (tagname) {
		case "":
			break;
		case "textarea":
			value = element.value;
			break;
		case "input":
			var type = element.type;
			switch (type) {
				case "radio":
					value = element.checked? element.value: "";
					break;
				case "checkbox":
					value = element.checked? element.value: "";
					break;
				case "text":
				case "textarea":
				case "select":
				case "select-one":
				case "password":
				case "hidden":
					value = element.value;
					break;
			}
			break;
		case "div":
			value = element.innerHTML;
			break;
		case "select":
			value = element.value;
			break;
	}
	return value;
}

function setValueById(id, theValue) {
	var element = $(id);
	var tagname = element.tagName.toLowerCase();
	if(typeof theValue != "string") {
		if(isNaN(theValue)) theValue = 0;
	}
		
	switch (tagname) {
		case "input":
			var type = element.type;
			switch (type) {
				case "checkbox":
					theValue == "1"? element.checked == true: element.checked == false;
					break;
				case "text":
					element.setAttribute("value", theValue);
				case "textarea":
					element.value = theValue;
					break;
				case "password":		
					element.setAttribute("value", theValue);
					element.value = theValue;
					break;
				case "select-one":
					//var options = elemt.
					//element.value = theValue;
					break;
				case "hidden":
					element.setAttribute("value", theValue);
					break;
				default:
					break;
			}
			break;
			
		case "div":
			element.innerHTML = theValue;
			break;
		case "textarea":
			element.value = theValue;
			break;
		
		default:
			break;
	}
}

function getElementByNameAttribute (root, name) {
	var elements = getElements("", "", root);
	for(var i=0; i < elements.length; i++) {
		if(elements[i].getAttribute("name") == name) {
			return elements[i];
		}
	}
	return undefined;
}

function getElementsByNameAttribute (classname, tagname, root, name) {
	var allElements = getElements(classname, tagname, root);
	var returnElements = [];
	for(var i=0; i < allElements.length; i++) {
		if(allElements[i].getAttribute("name") == name) {
			returnElements[returnElements.length] = allElements[i];
		}
	}
	return returnElements;
}

function arrayGetElementsByNameAttribute (array, name) {
	var returnElements = [];
	for(var i=0; i < array.length; i++) {
		if(array[i].getAttribute("name") == name) {
			returnElements[returnElements.length] = array[i];
		}
	}
	return returnElements;
}

function getElementsByNamesAttribute(classname, tagname, root, names) {
	var allElements = getElements(classname, tagname, root);
	var returnElements = [];
	var tmp = [];
	var tmp2 = [];
	for(var i = 0; i < names.length; i++) {
		tmp = arrayGetElementsByNameAttribute(allElements, names[i]);
		/* concat funker ikke av en eller annen grunn...
		tmp2 = returnElements.slice(0);
		returnElements.concat(tmp2, tmp);
		*/
		for(var j = 0; j < tmp.length; j++)
			returnElements[returnElements.length] = tmp[j];
	}
	return returnElements;
}

function getRedirect(theURL, parameters, title) {
	parameters = my_getStates() + parameters;
	var url = theURL.charAt(0)=="/"? location.host + theURL : theURL;
	url = location.protocol + "//" + url + parameters;
	if(title) {
		//åpne nytt vindu
		window.open(url, title);
	}
	else {
		window.location = url;
	}
}

function cloneHTML(element) {
	
}

function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;
    var temp = {};
    for(var key in obj)
        temp[key] = obj[key];
    return temp;
}

function arrayFirstIndexOf(array, value) {
	for(var i = 0; i < array.length; i++) {
		if(array[i] == value) return i;
	}
	return -1;
}

function arrayFirstElementWithName(array, value, start) {
	if(!start) start = 0; 
	for(var i = start; i < array.length; i++) {
		if(array[i].getAttribute("name") == value) return array[i];
	}
	return undefined;
}


function getArrayElements(array, value) {
	var returnArray = [];
	for(var i = 0; i < array.length; i++) {
		if(array[i] == value) returnArray[returnArray.length] = array[i];
	}
	return returnArray;
}

function decimalPoint() {
	return ",";
}

function theNum (theString) {
	if (typeof theString == "string") {
		if (decimalPoint() != ".") {
			theString = theString.replace(".","");
			theString = theString.replace(decimalPoint(),".");
		}
		if(theString.length == 0) {
			return 0;
		}
		else {
			if(isNaN(parseFloat(theString))) {
				return 0;
			}
			else {
				return parseFloat(theString);
			}
		}
	}
}

function theString (nr, format) {
	if (typeof nr == "string") {
		nr = theNum(nr)
	}
	var tooShort = "<<<<";
	var theFormat;
	var i, j, jj;
	var txt;
	var skipPeriod = true;
	var negativ = (nr<0);
	
	if (format.length == 0) {
		return String(nr);
	}
	else {
		if (format.charAt(0) == "|") {
			format = Format[ format ];
		}
		
		var formats = format.split(";");
		i = formats.length;
			if (nr<0) {
			theFormat = (i>=2)?formats[1]:formats[0];
			negativ = (i<2);
		}
		else {
			if(nr == 0) {
				theFormat = (i>=3)?formats[2]:formats[0];
			}
			else {
				theFormat = formats[0];
			}
		}
	
		var theDecimal = Format["decimal"];
		var theNumber = nr<0 ? String(-nr): String(nr);
		var theNumberParts = theNumber.split(".");
		var theIntegerPart = theNumberParts[0];
		var theDecimalPart = (theNumberParts.length == 2)?theNumberParts[1]:"";
	  	
		formats = theFormat.split(theDecimal);
		i = theFormat.indexOf(theDecimal);
		if(i< 0) {
			theIntegerFormat = theFormat;
			theDecimalFormat = "";
		}
		else {
			theIntegerFormat = theFormat.substring(0,i);
			theDecimalFormat = theFormat.substring(i+1);
		}
	  
		theNumber = "";
		j = -1;
		jj = theIntegerPart.length - 1;
		skipPeriod = false;
	  	for (i = (theIntegerFormat.length - 1); i>=0; i--) {
			if ((theIntegerFormat.charAt(i) == "0") || (theIntegerFormat.charAt(i) == "#")) {
	  			j++;
	  			if (j > jj) {
	  				if (theIntegerFormat.charAt(i) == "0") {
	  					theNumber = "0" + theNumber;
	  				  	txt = theIntegerFormat.substring(0,i);
	  					skipPeriod = (txt.indexOf("0") == -1);
	  				}
	  			}
	  			else {
	  				theNumber = theIntegerPart.charAt(jj-j) + theNumber;
	  				if(j == jj) {
	  				  	txt = theIntegerFormat.substring(0,i);
	  					skipPeriod = (txt.indexOf("0") == -1);
					}
	  		  	}
	  		}
  	  		else {
  		  		if (!((theIntegerFormat.charAt(i) == ".") && (skipPeriod))) {
  		  					theNumber = theIntegerFormat.charAt(i) + theNumber;
  		  		}
  		  	}
  		  }
  		  if ((j<theIntegerPart.length) & (!(nr == 0))){
  		  	theNumber = tooShort;
  		  }
  		  else {
  			  if (theDecimalFormat.length > 0) {
  		 	 	j = -1;
				jj = theDecimalPart.length - 1;
				theNumber = theNumber + theDecimal; 
				skipPeriod = false;
  				for (i = 0; i<theDecimalFormat.length; i++) {
					if ((theDecimalFormat.charAt(i) == "0") || (theDecimalFormat.charAt(i) == "#")) {
  						j++;
  						if (j > jj) {
  							if (theDecimalFormat.charAt(i) == "0") {
  								theNumber = theNumber + "0";
  								txt = theDecimalFormat.substring(i+1);
  								skipPeriod = (txt.indexOf("0") == -1);
  							}
  						}
  						else {
  							theNumber = theNumber + theDecimalPart.charAt(j);
  							if (j == jj) {
  								txt = theDecimalFormat.substring(i+1);
  								skipPeriod = (txt.indexOf("0") == -1);
  							}
  						}
  		  			}
  		  			else {
  		  				if (!((theDecimalFormat.charAt(i) == ".") && (skipPeriod))) {
  		  					theNumber = theNumber + theDecimalFormat.charAt(i) ;
  		  				}
  		  			}
  		  		}
  		  		if (theNumber.substring(theNumber.length-1) == ",") {
  		  			theNumber = theNumber.substring(0,theNumber.length-1);
  		  		}
  		  	}
  		}
  		  
  		if((negativ) && (theNumber.indexOf("-")<0)) {
  	  		theNumber = "-"+ theNumber;
  	  	}
  	  	return theNumber;
	}
}

function replaceChar (txt, theChar, pos) {
	if (pos>0) {
		return txt.substring(0,pos) + theChar + txt.substring(pos+1);
	}
	else {
		return txt;
	}
   
}

function gup( name ) {
	var url = window.location.href.replace(/&amp;/g,"&");
	var url = url.replace(/%26amp;/g,"&");
	var url = url.replace(/%26/g,"&");
	var url = url.replace(/%3D/g,"=");
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  	var regexS = "[\\?&]"+name+"=([^&#]*)";
  	var regex = new RegExp( regexS );
  	var results = regex.exec( url );
  	if( results == null ) {
  		var hiddenValue = getValueById(name);
  		if(hiddenValue) 
  			return hiddenValue;
  	}
    else {
    	return results[1];
    }
  	return "";
}

function hasNumbers(text) {
	var regex = /\d/g;
	return regex.test(text);
}

function hasAlphas(text) {
	var regex = /[A-Za-z]+/g;
	return regex.test(text);
}

function get_nextsibling(n) {
	x = n.nextSibling;
	while (x.nodeType != 1) {
  		x = x.nextSibling;
  	}
	return x;
}

function get_previoussibling(n) {
	x = n.previousSibling;
	while (x.nodeType != 1) {
		x=x.previousSibling;
	}
	return x;
}

function myScrollPosition(div, nr, antall, scroll) {
	var height = div.clientHeight;
	var visible = height/15;
	if(nr > visible-1) {
		if(nr == antall-1) {
			div.scrollTop = div.scrollHeight;
		}
		else {
			div.scrollTop = Math.min(div.scrollHeight, div.scrollTop + scroll);
		}
	}
	else {
		if(div.scrollTop > 0) div.scrollTop = 0;
	}
}

function myCenter(element /* optional*/, width, height, minY ) {
	if(minY === undefined) var minY = 30;
	if((!(width)) && (!(height))) {
		width = parseInt(element.style.width.replace(/px/, ""));
		height = parseInt(element.style.height.replace(/px/, ""));
	}
	if(width < 0) width = -width;
	if(height < 0) height = -height;
	var wndWidth, wndHeight;
	var size = getWindowSize();
	wndWidth = size[0];
	wndHeight = size[1];
	var scroll = getScrollXY();
	var xpos = Math.round(Math.max(0, (wndWidth/2 - width/2) + scroll[0]));
	var ypos = Math.round(Math.max(minY, ((wndHeight - height)/3) + scroll[1]));
	element.style.left = xpos + "px";
	element.style.top = ypos + "px";
	return [xpos, ypos];
}

function getWindowSize() {
	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;
    }
    return [myWidth, myHeight];
    //var hScrollbar = (document.body.offsetWidth > myWidth);
    //var vScrollbar = (document.body.offsetHeight > myHeight);
    //return [myWidth - (vScrollbar? 15: 0), myHeight - (hScrollbar? 15: 0)];
}

function getPageSize() {
	var windowSize = getWindowSize();
	return [windowSize[0] + (window.scrollMaxX? window.scrollMaxX: 0) , windowSize[1] + (window.scrollMaxY? window.scrollMaxY: 0)];
}

function getElementSize(element) {
	var width = element.clientWidth;
	var height = element.clientHeight;
	if(!width) width = 0;
	if(!height) height = 0;
		
	return [width, height];
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

function my4daction() {
	var url = document.location.href;
	var pos = url.indexOf("/4daction/");
	if(pos > -1) {
		url = url.substring(pos + 10);
		pos = url.indexOf("/");
		if(pos > -1 ) {
		
		}
		else {
			pos = url.indexOf("?");
			if(pos > -1 ) {
			}
			else {
				return url;
			}
		}
		return url.substring(0, pos);
	}
	else {
		return "";
	}
}

function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	 */
	if ( expires ) {
		expires = expires * 1000 * 60 * 60;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ( ( path ) ? ";path=" + path : "" ) + ( ( domain ) ? ";domain=" + domain : "" ) + ( ( secure ) ? ";secure" : "" );
}

//this fixes an issue with the old method, ambiguous values
//with this test document.cookie.indexOf( name + "=" );
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ ) {
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );

		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name ) {
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found ) {
		return null;
	}
}

//this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) {
		var theName = name + "=" + Get_Cookie( name);
		if(path)
			theName += ";path=" + path;
		if(domain)
			theName += ";domain=" + domain;
		
		theName += ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
		document.cookie = theName;
	}
}

function Set_Session_Cookie(name, expires, length) {
	var url = "/4daction/WA_Set_Cookie";
	var options = {};
	options.timeout = 400000;
	var theValues = new Array();
	theValues["ASP"] = gup("ASP");
	theValues["Random"] = gup("Random");
	if(length) 
		theValues["length"] = length;
		
	HTTP.post(url, theValues, cb_SetCookie, options);
	
	function cb_SetCookie(response) {
		var error = getXMLElement(response, "error");
		if(error.length>0) {
			displayError(error);
		}
		else {
			var cookie = getXMLElement(response, "message");
			if(cookie) {
				if(!(expires))
					expires = 24;
				Set_Cookie(name + "_" + theValues["ASP"], cookie, expires, "/");
				if (Get_Cookie(name + "_" + theValues["ASP"]) == null){
					//var help_url = window.location.protocol + "//"+ window.location.host + "/ax/Informasjonskapsler_hjelp.shtml";
					//window.location = help_url;
					//displayError("Informasjonskapsler ikke aktivert!<br /> Du m&aring; sl&aring; p&aring; informasjonskapsler for &aring; kunne bruke dette nettstedet.<br />Se denne siden for <a href='" + help_url +"' title='Aktivere informasjonskapsler' target='_blank'>hjelp</a> til &aring; gj&oslash;re dette")
				}
			}
			else {
				displayError("[cb_SetCookie]Fant ikke message i respons.");
			}
		}
	}
}


function CheckCookiesEnabled() {
	Set_Cookie('varCook','True','','/','','');
if (GetCookie() == "True"){
alert('Cookies are enabled, you can use the shopping cart!');
} else {
return false;
}
}

