/* dojo */
dojo.require("dojo.cookie");
dojo.require("dojo._base.xhr");

dojo.addOnLoad(infolandPrepare);

/* Variables */

var isIE = document.all;
var isNN = !document.all && document.getElementById;
var isN4 = document.layers;
var wcmState="";
var loginState="";
var portletState="";
var baseUrl="";
var cartCounterContent = null;

var showMaintenanceMessages = false;

var scrollToTop = true;
var prepareMapProducts = false;
var allowMainMap = false;
var mapProductDetails = false;
var ilMapName = "";
var ilQueryTpe = "";
var ilCriteria = "";
var urlProductSearch = "https://www.infoland.no/ProductSearch/ProductSearch";
var urlProductPrice =  "https://www.infoland.no/ProductSearch/ProductPrice";
var logonIdent = "";
var userId = "";
var openMapSearchTab = "";
var openHelpDialog = "";

var LOGONIDENT = "logonident";
var SELECTION_TYPE = "selectiontype";
var PROVINCE_ID = "mapprovinceid";
var CADASTER = "cadaster";
var CADASTER_SEARCH = "cadasterSearch";
var GEOMETRY = "geometry";
var MUNICIPAL = "municipalities";
var DH_EXIST = "dhexist";
var PRODUCT = "product";
var PRODUCT_CODE = "productcode";
var NAME = "name";
var SUPPLIER_NAME = "suppliername";
var SALESPRICE_VAT = "salespricevat";
var VALIDATION_CONTAINER = "validationcontainer";
var VALIDATION_RESULT = "validationresult";
var ORDER_DATA_XML = "orderdataxml";
var OBJECT_INFO =	"objectinfo";
var SPEC_STATUS = "specstatus";
var MAP_PARAMS = "mapparams";
var IS_XML = "isxml";
var ORDERDATA_ROOT = "data";
var NAMESPACE = "namespace";
var COOKIE_MAP_PRODUCT_SEARCH = "mapProductSearch";
var ELM_PRODUCT_FORM = "productForm"
var ELM_MAP_PRODUCTS = "mapProducts";
var ELM_MAP_PRODUCT_UPDATE = "mapProductUpdate";
var ELM_MAP_PRODUCT_FORM = "mapProductForm";
var GEOMETRY_ROOT = "NEGeometry";
var BOUNDED_BY = "boundedby";
var INPUT_TYPE_ID = "inputTypeId";
var INPUT_TYPE_PROVINCE = "2";
var INPUT_TYPE_GEO = "6";
var PRODUCT_LIST_LINK = "productListLink";
var REFERENCE = "referanse";
var MAP_LEVEL = "mapLevel";

var SCREEN_NAME = "screenName";
var SCREEN_PRODUCT_LIST = "productList";
var SCREEN_PRODUCTS_GEO = "geoProducts";
var SCREEN_PRODUCT_DETAILS_GEO ="productDetailsGeo";

function Object(label, link, active) {
	this.label = label;
	this.link = link;
	this.active = active;
}

// Error handling
window.onerror = jsErrorHandler;

var error_invalid_arguments = 1;
var error_empty_result      = 2;

function jsErrorHandler(message, url, lineNumber) {
	//alert(message + "\nKilde: " + url + "\nLinje: " + lineNumber);
	return (true);
}

// brukes til debugging i test/debug
function errorHandler(message, url, lineNumber) {
	//alert(message + "\nKilde: " + url + "\nLinje: " + lineNumber);
}


/* Set domain */
	var serverName = location.hostname;
	var domain = serverName.substring(serverName.indexOf(".")+1, serverName.length);
	if(serverName.substring(0,9) != "localhost") {
		document.domain = domain;
	}

/* Functions */

function getElement(elementId) {
	var element = null;
	if(document.getElementById) {
		element = document.getElementById(elementId);
	} else if(document.all) {
		element = document.all.item(elementId);
	} else {
		element = null;
	}
	return element;
}

function pickMunicipal() {
	var selMunicipals = document.getElementsByName("municipalId")[0];
	var txtKnr = document.getElementsByName("knr")[0];
	var txtGnr = document.getElementsByName("gnr")[0];
	var txtBnr = document.getElementsByName("bnr")[0];
	var txtFnr = document.getElementsByName("fnr")[0];
	var txtSnr = document.getElementsByName("snr")[0];
	var txtAddress = document.getElementsByName("adresse")[0];
	var txtReference = document.getElementsByName("referanse")[0];

	var municipal = selMunicipals.options[selMunicipals.selectedIndex].value;
	if (municipal != "0000") {
		txtKnr.value = municipal;
		txtGnr.value = "";
		txtBnr.value = "";
		txtFnr.value = "";
		txtSnr.value = "";
		txtAddress.value = "";
		txtReference.value = "";
	}
}

function setMunicipal() {
	var selMunicipals = document.getElementsByName("municipalId")[0];
	var txtKnr = document.getElementsByName("knr")[0];
	selMunicipals.value = txtKnr.value;
}


function getScreenCenterY() {
	return getScrollOffset()+(getInnerHeight()/2);
}

function getScreenCenterX() {
	return(document.body.clientWidth/2);
}

function getInnerHeight() {
	var y;
	if (self.innerHeight) {
		// all except Explorer
		y = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		// Explorer 6 Strict Mode
		y = document.documentElement.clientHeight;
	} else if (document.body) {
		// other Explorers
		y = document.body.clientHeight;
	}
	return(y);
}

function getScrollOffset() {
	var y;
	if (self.pageYOffset) {
		// all except Explorer
		y = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		// Explorer 6 Strict
		y = document.documentElement.scrollTop;
	} else if (document.body) {
		// all other Explorers
		y = document.body.scrollTop;
	}
	return(y);
}

function getSlideOffset() {
	var x;
	if (self.pageYOffset) {
		// all except Explorer
		x = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollLeft) {
		// Explorer 6 Strict
		x = document.documentElement.scrollLeft;
	} else if (document.body) {
		// all other Explorers
		x = document.body.scrollLeft;
	}
	return(x);
}

function pageOffset(elementId) {
	var element = getElement(elementId);
	var height = 0;
	posY = getScreenCenterY();
	if(element == null) return;
	var elementHeight = element.style.height;
	element.style.top = posY + (elementHeight/2) + "px";

	if(element.style.visibility == "visible") {
		window.setTimeout("pageOffset('" + elementId + "')",10);
    }
}

function setFocus(elementId) {
	var element = getElement(elementId);
	if(element == null) return;
	element.focus();
}

function hideElement(elementId) {
	var element = getElement(elementId);
	if(element == null) return;
	if(element.style) {
		element.style.position = 'absolute';
		element.style.visibility = 'hidden';
	} else {
		element.position = 'absolute';
		element.visibility = 'hidden';
	}
}

function showElement(elementId, position, usePageOffset, onMouse, offsetX, offsetY, relativeObject, e) {
	// elementID er id'en til elementet som skal manipuleres
	// position er måten elementet plasseres i strømmen på siden. Pleier å være 'absoulte' eller 'relative'.
	// usePageOffset settes lik 'true' hvis du ønsker at objektet skal følge med når siden scrolles.
	// onMouse settes lik 'true' hvis du vil at elementet skal vises nær musepekeren.
	// offsetX brukes til å justere elementet i forhold til musepekeren. Krever at onMouse = true.
	// offsetY brukes til å justere elementet i forhold til musepekeren. Krever at onMouse = true.
	// relativeObject brukes hvis meldingen skal vises i nærheten av ett objekt. F.eks. ett spørsmålstegn.
	// e er en event for mozilla browsers.
	e = e || window.event;
	var element = getElement(elementId);
	if(element == null) return;
	if(onMouse) {
		var x = 0;
		var y = 0;
		if(isIE) {
			x = e.clientX + getSlideOffset();
    		y = e.clientY + getScrollOffset();
		} else {
			x = e.pageX;
			y = e.pageY;
		}
		offsetX = offsetX - element.offsetWidth;
		// Move element
		element.style.left = (x + offsetX) + 'px';
		element.style.top = (y + offsetY) + 'px';
	} else if(relativeObject) {	
		var posArray = findPosition(relativeObject);
		element.style.left = (posArray[0] + offsetX) + 'px';
		element.style.top = (posArray[1] + offsetY) + 'px';	
	}else {
		if(offsetX && offsetY) {
			element.style.left = offsetX + 'px';
			element.style.top = offsetY + 'px';
		}
	}
	// Display element
	if(element.style) {
		element.style.position = position;
		element.style.visibility = 'visible';
	} else {
		element.position = position;
		element.visibility = 'visible';
	}

	if(usePageOffset) {
		pageOffset(elementId);
	}
}

function displayBlock(elementId) {
	var element = getElement(elementId);
	if(element == null) return;
	if(element.style) {
		element.style.display = 'block';
	} else {
		element.display = 'block';
	}
}

function displayNone(elementId) {
	var element = getElement(elementId);
	if(element == null) return;
	if(element.style) {
		element.style.display = 'none';
	} else {
		element.display = 'none';
	}
}


function refreshImage() {
	setTimeout("document.getElementById('imgAnimShopping').src='/ilimages/il_shopping/animShopping.gif';",100);
}

function setElementText(elementId, text) {
	var element = getElement(elementId);
	if(element == null) return;
	element.innerHTML = text;
}

function clearOtherSelects(caller) {
	var findName = caller.name.substring(0, caller.name.length - 2);
	if(document.getElementsByTagName) {
		var elements = document.getElementsByTagName("select");
		for(i = 0; i < elements.length; i++) {
			var element = elements[i];
			if(element.name != caller.name && element.name.indexOf(findName) == 0) {
				element.selectedIndex=-1;
				for(j = 0; j < element.options.length; j++) {
					element.options[j].selected = false;
				}
			}
		}
	}
}

function showWithRadioElement(elementId, value, hideElementId) {
	var element = document.getElementsByName(elementId);
	var chosen = "";
  	var len = element.length;

	for (i = 0; i <len; i++) {
		if (element[i].checked) {
			chosen = element[i].value;
		}
	}

	if (chosen != value) {
		hideElement(hideElementId);
	}
}

function copyToClipboard() {
	var code = document.getElementById("productCode").value;
	var name = document.getElementById("productName").value;
	var price = document.getElementById("productPrice").value;
	var lisens = document.getElementById("antLisenser").value;
	var extra = "";
	var detaljer = "";
	var areas = "";
	var opplosning = "";

	if( document.getElementById("opplosningMeter") )
	{
		opplosning = "<b>Oppl&oslash;sning i meter:</b> " + document.getElementById("opplosningMeter").value + ", ";
	}

	if( document.getElementById("extraLisenser").checked )
	{
		extra = "x";
	}

	if(document.getElementsByTagName) {
		var elements = document.getElementsByTagName("select");
		for(i = 0; i < elements.length; i++) {
			var element = elements[i];
			for(j = 0; j < element.options.length; j++) {
				if( element.options[j].selected)
					detaljer = detaljer + element.options[j].text + ", ";
			}
		}
	}
	var tmpText = "";
	var cells = document.getElementById("areas").cells;
	for(i = 0; i < cells.length; i++) {
		tmpText = cells[i].innerHTML;
		areas = areas + tmpText
		if( tmpText.indexOf("<B>")==0 )
			 areas = areas + ": ";
		else
			areas = areas	 + ", ";
	}



	if( window.clipboardData && clipboardData.setData )
	{
		clipboardData.setData("Text", "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\"><style>.xl31 {mso-number-format:Standard;}</style><table border='1'><tr><td>"+code+"</td><td>"+name+"</td><td class=xl31 x:num=\""+price.replace("\xA0","").replace(",",".")+"\"><b>"+price+"</b></td><td>"+detaljer+opplosning+"</td><td>"+lisens+"</td><td>"+extra+"</td><td>"+areas+"</td></tr></table></html>");
	}
}

function showCopyButton() {
	if( isIE )
	{
			if(document.getElementById("productType").value != 2)
			{
					document.getElementById("copyButton").style.visibility="hidden";
			}
	}
	else
	{
			document.getElementById("copyButton").style.visibility="hidden";
	}
}

function infolandPrepare() {

	// Metode som kjøres i starten (onLoad) på hver side
	if(scrollToTop) {
		window.location = "#top";
	}

	setUser(logonIdent, userId);
	
	// Sjekk om kommune/posted skal ha autocomplete
	if(dojo.byId("show_list") && (typeof municipals != "undefined")) {
		AutoComplete_Create('municipal', municipals, 8, true);
	}

	if(dojo.byId("search_document_cadaster") && (typeof municipals != "undefined")) {
		AutoComplete_Create('municipal', municipals, 8);
	}

	if(dojo.byId("search_address") && (typeof municipals != "undefined")) {
		AutoComplete_Create('municipal', municipals, 8);
	}

	if(dojo.byId("search_location_name") && (typeof municipals != "undefined")) {
		AutoComplete_Create('province', municipals, 8);
	}

	if(dojo.byId("referanse") && (typeof references != "undefined")) {
		AutoComplete_Create('referanse', references, 15);
	}
		
	if(cartCounterContent) {
		updateCartCounter(cartCounterContent);
	}
	
	if(showMaintenanceMessages){
		displayBlock('maintenanceMessages');			
	}	
	
	if(openMapSearchTab != "") {
		if(openMapSearchTab == "0") {
			searchTabContainer.selectChild(matrikkelTab);
		} else if(openMapSearchTab == "1") {
			searchTabContainer.selectChild(kommuneTab);
		}
	}

	if(openHelpDialog != "") {
		searchTabContainer.selectChild(kommuneTab);
		runHelpDialog(openHelpDialog);
	}
	
	if(typeof(zoomIndexMap) != "undefined") {		
		zoomIndexMap();
	}
	
	if(dojo.byId(SCREEN_NAME)) {
		// Handlinger som skal skje på bestemte sider
		var screenName = dojo.byId(SCREEN_NAME);
		
		if(screenName.value == SCREEN_PRODUCT_LIST) {
			if(dojo.byId("knr") && dojo.byId("gnr")	&& dojo.byId("bnr")) {
				checkCadasterFromMap();
			}
		}
		
		if(screenName.value == SCREEN_PRODUCTS_GEO) {
			if(dojo.byId(ELM_MAP_PRODUCTS)) {
				checkCookieMapProductSearch();
			}
		}
		
		if(screenName.value == SCREEN_PRODUCT_DETAILS_GEO) {
			if(dojo.byId(ELM_MAP_PRODUCT_FORM)) {
				addOnChange2Elements(ELM_MAP_PRODUCT_FORM, "formChangedSubmitMap();");
				checkMapProductPurchaseButton();
			}
			
			if(dojo.byId(MAP_LEVEL)) {
				var mapLevel = dojo.byId(MAP_LEVEL);
				setProductType(mapLevel.value);
			}
		}
	}		
	
	checkTitleDefault();
}

function updateCartCounter(content) {

	try {
		var node = getElement('cartCounter');
		if (node) {
			if(isIE) {
				node.innerText = content;
			}
			else {
				node.textContent = content;
			}
		}
	}
	catch(err) {
		jsErrorHandler(err);
	}
}

function checkUncheckAll(motherId, childId) {

	// Metode som slår av og på alle checkboxer som er definert
	var mother = document.getElementsByName(motherId);
	if(mother != null) {
		var children = document.getElementsByName(childId);
		for(i = 0; i < children.length; i++) {
			if(!children[i].disabled) {
				children[i].checked = mother[0].checked;
			}
		}
	}
}

function Submit(id, e) {
	var isEnter = window.event == null ? e.keyCode == 13 : window.event.keyCode == 13;
	if(isEnter) getElement(id).click();
}

function changeImage(imgName, imgSrc) {
	var images = document.getElementsByName(imgName);
	for(i=0; i < images.length; i++) {
		images[i].src=imgSrc;
	}
}

/* Kartmetoder */

function mapSubmit(selectionType, data, detailedHeight, municipals) {
	//alert(selectionType + ";" + data + ";" + detailedHeight + ";" + municipals);
	if(selectionType == CADASTER_SEARCH) {
		updateCadasterAndSearch(data);
	} else {
		var params = LOGONIDENT + "=" + logonIdent + "&" + SELECTION_TYPE + "=" + selectionType;		
		var inputTypeMatch = false;
		var inputTypeId = "";
		if(dojo.byId(INPUT_TYPE_ID)) {
			inputTypeId = dojo.byId(INPUT_TYPE_ID).value;
		}
		if(selectionType == CADASTER) {
			params += createCadasterParams(data);
		}
		else if(selectionType == MUNICIPAL) {
			params += createMunicipalParams(data);
			if(inputTypeId != "" && inputTypeId == INPUT_TYPE_PROVINCE) inputTypeMatch = true;
		}
		else if(selectionType == GEOMETRY) {
			params += createGeometryParams(data, detailedHeight, municipals);
			if(inputTypeId != "" && inputTypeId == INPUT_TYPE_GEO) inputTypeMatch = true;
		}
		if(dojo.byId(ELM_MAP_PRODUCT_FORM)) {
			set_Cookie(COOKIE_MAP_PRODUCT_SEARCH, urlProductSearch + "?" + params, "", "/", "", "");
			if(inputTypeMatch) 
			{
				requestMapProductUpdate(urlProductSearch + "?" + params);
			}
			else
			{
				var productListLink = dojo.byId(PRODUCT_LIST_LINK).value;
				var html = 'Produktet leveres ikke for angitt omr\u00e5de. Du vil n\u00e5 bli sendt til produktlisten for nytt valg.';
				html += '<br/><br/><br/><br/><form class="alignCenter"><button type="button" name="accept" id="accept" class="roundedSmall bgUser fcButton" onclick="window.location=\'' + productListLink + '\'"><span>OK</span></button></form>';
				showDialog('Feil produkttype',html,'dialogError');
			}
		} 
		else if(dojo.byId(ELM_MAP_PRODUCTS)) {
			document.location = "#ilProductList";
			requestMapProducts(urlProductSearch + "?" + params);
		}
	}
}

function formChangedSubmitMap() {
	requestMapProductPrice(urlProductPrice);
}

function updateCadasterAndSearch(data) {
	// Slett cookie
	delete_Cookie(COOKIE_MAP_PRODUCT_SEARCH, "/", "");
	//dojo.cookie(COOKIE_MAP_PRODUCT_SEARCH, null, {expires: -1, path: '/'});
	// oppdaterer soekefelter i Infoland
	var knr, gnr, bnr, fnr, snr;
	arrCadaster = data.split("/");
	if(arrCadaster.length >= 3) {
		knr = arrCadaster[0];
		gnr = arrCadaster[1];
		bnr = arrCadaster[2];
	}
	if(arrCadaster.length == 4) {
		fnr = arrCadaster[3];
	}
	if(knr == null || knr == 0) knr = "0000";
	if(gnr == null || gnr == 0) gnr = "";
	if(bnr == null || bnr == 0) bnr = "";
	if(fnr == null || fnr == 0) fnr = "";
	 try {
	 	if(dojo.byId("show_list") != null && knr.substring(knr.length - 2) != "00" ) {
			dojo.byId("knr").value = knr;
			dojo.byId("gnr").value = gnr;
			dojo.byId("bnr").value = bnr;
			dojo.byId("fnr").value = fnr;
			dojo.byId("snr").value = "";
	 		dojo.byId("show_list").click();
	 	} else if(getElement("search_location_name") != null) {
	 		sessvars.selectedKnr = knr;
	 		sessvars.selectedGnr = gnr;
	 		sessvars.selectedBnr = bnr;
	 		dojo.byId("searchCadasterTab").click();
	 	}
	 	
	}
	catch (err) {
		alert(err.message);
	}
}

function checkCadasterFromMap() {
	if(typeof(sessvars) != "undefined" && typeof(sessvars.selectedKnr) != "undefined" && sessvars.selectedKnr != null && sessvars.selectedKnr != "") {
		var knr = sessvars.selectedKnr == undefined ? "" : sessvars.selectedKnr;
		var gnr = sessvars.selectedGnr == undefined ? "" : sessvars.selectedGnr
		var bnr = sessvars.selectedBnr == undefined ? "" : sessvars.selectedBnr
		sessvars.$.clearMem();
		var cadaster = knr + "/" + gnr + "/" + bnr + "//";
		updateCadasterAndSearch(cadaster);
	}
}

function setDefaultMunicipalMap(municipalNumber) {
	// øivin: sjekk på intakt sesjonsvariabel, og om denne holder en verdi
	if (sessvars !== undefined && sessvars.func === undefined) {
		var args = { "municipalNumber": municipalNumber, "showFlag": false };
		
		// skriv profildata (kommunen) til sesjonen
		sessvars.func = { "name": "zoomToMunicipal", "args": args };	
	}
}

function createCadasterParams(data) {
	var params = "";
	var knr, gnr, bnr, fnr, snr;
	var arrCadaster = data.split("/");
	if(arrCadaster.length >= 3) {
		knr = arrCadaster[0];
		gnr = arrCadaster[1];
		bnr = arrCadaster[2];
	}
	if(arrCadaster.length == 4) {
		fnr = arrCadaster[3];
	}
	params += "&knr=" + knr;
	params += "&gnr=" + gnr;
	params += "&bnr=" + bnr;
	if(fnr != null && fnr != 0 && fnr != "") {
		params += "&fnr=" + fnr;
	}
	return params;
}

function createMunicipalParams(data) {
	var params = "";
	var arrMunicipals = null;
	if(data != null) {
		if(data instanceof Array) {
			arrMunicipals = data;
		} else {		
			arrMunicipals = data.split(",");
		}
	}
	if(arrMunicipals != null) {
		for(var i=0;i<arrMunicipals.length;i++) {
			params += "&" + PROVINCE_ID + "=" + arrMunicipals[i];
		}
	}
	return params;
}

function createGeometryParams(data, detailedHeight, municipals) {
	var params = "";
	var xmlDoc = createDocFromXml(data);
	if(xmlDoc) {
		var root = xmlDoc.getElementsByTagName(GEOMETRY_ROOT);
		if(root.length == 1) {
			var nodes =  root[0].childNodes;
			if(nodes.length == 2) {
				var boundedBy = getXML(nodes[0]);
				var geometry = getXML(nodes[1]);
				params += "&" + BOUNDED_BY + "=" + escape(boundedBy) + "&" + IS_XML + "=" + BOUNDED_BY;			
				params += "&" + GEOMETRY + "=" + escape(geometry) + "&" + IS_XML + "=" + GEOMETRY;			
			}
		}
		
	}
	params += "&" + DH_EXIST + "=" + detailedHeight;
	params += createMunicipalParams(municipals);
	return params;
}

function requestMapProductUpdate(query) {
	var container = dojo.byId(ELM_MAP_PRODUCT_UPDATE);
	if(container!=null) {
		showDialog('Oppdaterer prisen','Oppdaterer prisen p\u00e5 produktet i forhold til det nye omr\u00e5det. Vennligst vent.','dialogSuccess', false, true);
		// Bruk dojo til å hente produktlisten
		query = queryRandomizer(query);
		var xhrArgs = {	url: query,
										handleAs: "xml",
										load: mapProductUpdateLoad,
										error: xhrError};

		var deferred = dojo.xhrGet(xhrArgs);	
	}
}

function mapProductUpdateLoad(data, ioargs) {
  var container = dojo.byId(ELM_MAP_PRODUCT_UPDATE);
	var form = dojo.byId("mapProductUpdateForm");
	var productCode = dojo.byId(PRODUCT_CODE);
  if(form != null && data != null && container != null && productCode != null) {
  	productCode = productCode.value;
  	var productList = data.getElementsByTagName(PRODUCT);
  	for(var i=0;i<productList.length;i++) {
  		var product = productList[i];
  		var xmlProductCode = findChildNodeData(product, PRODUCT_CODE);
  		if(productCode == xmlProductCode) {
  			var productForm = createProductForm(product);
  			productForm += '<input type="hidden" name="update" value="update"/>';
  			container.innerHTML = productForm;
  			form.submit();
  		}
  	}
	}
}

function requestMapProducts(query) {
	deleteMapProducts();
	var container = dojo.byId(ELM_MAP_PRODUCTS);
	if(container!=null) {
		var posArray = findPosition(container);
		showElement('divLoader', 'absolute', false, false, posArray[0], posArray[1] + 8);
	
		// Bruk dojo til å hente produktlisten
		query = queryRandomizer(query);
		var xhrArgs = {	url: query,
										handleAs: "xml",
										load: mapProductsLoad,
										error: xhrError};

		var deferred = dojo.xhrGet(xhrArgs);
	}
}

function mapProductsLoad(data, ioargs) {
	hideElement('divLoader');
	var urlSplit = ioargs.url.split("&sid=");
	var url = urlSplit[0];
	set_Cookie(COOKIE_MAP_PRODUCT_SEARCH, url, "", "/", "", "");
	//dojo.cookie(COOKIE_MAP_PRODUCT_SEARCH, ioargs.url, {path: '/'});
	// Hent ut xml-objektet og lag tabellen
	writeMapProductsTable(data);
}

function requestMapProductPrice(query) {
	var namespaces = "";
	var url = "";
	// Finn orderdataxml og lag doc av denne
	var orderDataXml = getElement("orderdataxml");
	if((orderDataXml != null) && (orderDataXml.value != "")) {
		var priceContainer = getElement("capriPrice");
		var orderDataDoc = createDocFromXml(unescape(orderDataXml.value));
		var data = orderDataDoc.getElementsByTagName(ORDERDATA_ROOT);
		if(data.length > 0) {
			// Oppdater orderDataDoc med data fra formen
			var form = getElement("mapProductForm");
			updateDocFromForm(orderDataDoc, form);
			// Lag url av orderDataDoc
			url = createUrlFromDoc(orderDataDoc);
			// Hent ut namespaces
			namespaces = getNamespaces(data[0]);			
			if(url) url += "&";
			url += namespaces;
		}
		// Lag komplett URL
		query = query + "?" + url;
		//top.console = window.open("", "myconsole");
		//top.console.document.writeln(query);
		//top.console.document.close();
		// Fjern data som skal oppdateres
		var button = dojo.byId("purchase");
		if(button) {
			button.style.display = "none";
		}	
		var validationContainer = getElement(VALIDATION_CONTAINER);
		if(validationContainer != null) {
			var validationResult = getElement(VALIDATION_RESULT);
			if(validationResult) {
				validationResult.innerHTML = "";
				validationContainer.style.display = "none";
			}
		}
		if(priceContainer != null) {
			priceContainer.innerHTML = "";
			var posArray = findPosition(priceContainer);
			showElement('divLoader', 'absolute', false, false, posArray[0]-85, posArray[1]);				
			disableFormElements(ELM_MAP_PRODUCT_FORM, true);
			// Bruk dojo til å hente produktlisten
			query = queryRandomizer(query);
			var xhrArgs = {	url: query,
											handleAs: "xml",
											load: mapProductPriceLoad,
											error: xhrError,
											sync: false};

			var deferred = dojo.xhrGet(xhrArgs);
		}
	}	
}

function mapProductPriceLoad(data, ioargs) {
	hideElement('divLoader');
	disableFormElements(ELM_MAP_PRODUCT_FORM, false);
	// Hent ut xml-objektet og lag tabellen
	updateMapProductDetails(data);
}

function xhrError(error, ioargs) {
	hideElement('divLoader');
	alert("Feil under henting av data.\nMelding: " + error + "\nStatus: " + ioargs.xhr.status + " " + ioargs.xhr.statusText);
}

function writeMapProductsTable(xmlDoc) {
  // Create product table
  var container = getElement(ELM_MAP_PRODUCTS);
  if(xmlDoc!=null && container!=null) {
		var form = getElement("geoForm");
		var action = "";
		if(form!=null) {
			action = form.action;
		}
  	var table = initMapProductsTable();
  	var productList = xmlDoc.getElementsByTagName(PRODUCT);
  	var rowColor = "odd";
  	var specstatus = "0";
  	for(var i=0;i<productList.length;i++) {
  		var product = productList[i];
  		if(i == 0) {
  			// Skriv ut objectinfo
  			var orderdataXml = findChildNodeData(product, ORDER_DATA_XML);
  			var objectinfoContainer = getElement("objectInfo");
  			if(orderdataXml != null && objectinfoContainer != null) {
					var orderDataDoc = createDocFromXml(orderdataXml);
					if(orderDataDoc != null) {
						var objectinfo = findChildNodeData(orderDataDoc, OBJECT_INFO);
						objectinfo = objectinfo.replace(/<br\/>/gi, " ");
						objectinfoContainer.innerHTML = objectinfo;
					}  			
  			}
  		}
  		if(specstatus != findChildNodeData(product, SPEC_STATUS)) {
  			specstatus = findChildNodeData(product, SPEC_STATUS);
  			var divider = table.insertRow(-1);
  			divider.className = "even";
  			rowColor = "odd";
  			var divCell = divider.insertCell(-1);
  			divCell.colSpan = 5;
  			divCell.className = "pt1unit pb1unit";
  			if(specstatus == "1") {
  				var objectinfo = "";
	  			var orderdataXml = findChildNodeData(product, ORDER_DATA_XML);
	  			if(orderdataXml != null) {
						var orderDataDoc = createDocFromXml(orderdataXml);
						if(orderDataDoc != null) {
							objectinfo = findChildNodeData(orderDataDoc, OBJECT_INFO);
							objectinfo = objectinfo.replace(/<br\/>/gi, " ");							
						}  				  				
	  			}
  				divCell.innerHTML = "<b>Kartprodukter for ber&oslash;rte kommuner.</b> " + objectinfo;
  			} else if (specstatus == "2") {
  				divCell.innerHTML = "<b>Andre kartprodukter</b>";
  			}
  		}
  		var row = table.insertRow(-1);
  		row.className = rowColor;
  		// productCode
  		var cell = row.insertCell(-1);
  		cell.className = "borderOff";
  		var productCodeValue = findChildNodeData(product, PRODUCT_CODE);
  		cell.innerHTML = productCodeValue;
  		// productName
  		cell = row.insertCell(-1);
  		cell.className = "borderOn";
  		var onclick = "dojo.byId('product_details" + i + "').click();";
  		cell.innerHTML = '<a class="pointer" onclick="' + onclick + '">' + findChildNodeData(product, NAME) + '</a>';
  		// supplierName
  		cell = row.insertCell(-1);
  		cell.className = "borderOn nowrap";
  		cell.innerHTML = findChildNodeData(product, SUPPLIER_NAME);
  		// price
  		cell = row.insertCell(-1);
  		cell.className = "borderOn alignRight nowrap";
  		var price = currencyFormatted(findChildNodeData(product, SALESPRICE_VAT));
			cell.innerHTML = price;
  		// button
  		cell = row.insertCell(-1);
	 		cell.className = "borderOn alignCenter";
  		var button = '<form name="PC_7_0_C0D_GeoProductsForm' + i + '" method="post" action="' + action + '">';
			button += createProductForm(product);
			button += '<button type="submit" name="product_details" id="product_details' + i + '" class="roundedSmall bgProduct">';
			button += '<span><img src="/ilimages/il_shopping/cartSpecify.gif" width="15" height="13" style="padding-top: 2px;"/></span>';
			cell.innerHTML = button;
  		if(rowColor=="odd") {
  			rowColor="even";
  		} else {
  			rowColor="odd";
  		}
  	}
  	container.appendChild(table);
  }
}

function createProductForm(product) {
	var form ='<input type="hidden" name="'+ PRODUCT_CODE + '" value="' + findChildNodeData(product, PRODUCT_CODE) + '">';
	var price = currencyFormatted(findChildNodeData(product, SALESPRICE_VAT));
	form +='<input type="hidden" name="price" value="' + price + '">';
	form +='<input type="hidden" name="' + VALIDATION_RESULT + '" value="' + escape(findChildNodeData(product, VALIDATION_RESULT)) + '">';
	form +='<input type="hidden" name="' + ORDER_DATA_XML + '" value="' + escape(findChildNodeData(product, ORDER_DATA_XML)) + '">';
	return form;
}

function initMapProductsTable() {
	var table = document.createElement("table");
	table.cellPadding = "0";
	table.cellSpacing = "0";
	table.className = "listDefault";
	var header = table.createTHead();
	var headRow = header.insertRow(-1);
	var headCell = document.createElement("th");
	headCell.className = "bgInfo bold borderOff borderBottom";
	headCell.innerHTML = "Produktnr.";
	headRow.appendChild(headCell);
	headCell = document.createElement("th");
	headCell.className = "bgInfo bold borderOn borderBottom wFull";
	headCell.innerHTML = "Produktnavn";
	headRow.appendChild(headCell);
	headCell = document.createElement("th");
	headCell.className = "bgInfo bold borderOn borderBottom";
	headCell.innerHTML = "Leverand&oslash;r";
	headRow.appendChild(headCell);
	headCell = document.createElement("th");
	headCell.className = "bgInfo bold alignRight borderOn borderBottom";
	headCell.innerHTML = "Pris";
	headRow.appendChild(headCell);
	headCell = document.createElement("th");
	headCell.className = "bgInfo bold alignCenter borderOn borderBottom";
	headCell.innerHTML = "Velg";
	headRow.appendChild(headCell);
	return table;
}

function updateMapProductDetails(xmlDoc) {
	// Finn orderdataxml
	var orderDataXml = findChildNodeData(xmlDoc, ORDER_DATA_XML);
	if(orderDataXml != null && orderDataXml != "") {
		var orderdataContainer = getElement("orderdataxml");
		if(orderdataContainer != null) {
			orderdataContainer.value = escape(orderDataXml);
		}
		// Finn object info og oppdater denne
		//var orderDataDoc = createDocFromXml(orderDataXml);
		//if(orderDataDoc != null && objectinfoContainer != null) {
		//	var objectinfo = findChildNodeData(orderDataDoc, OBJECT_INFO);
		//	objectinfoContainer.innerHTML = objectinfo;
		//}
	}
	var validationContainer = getElement(VALIDATION_CONTAINER);
	if(validationContainer != null) {
		var validationText = findChildNodeData(xmlDoc, VALIDATION_RESULT);
		if(validationText != null && validationText != "") {
			var validationResult = getElement(VALIDATION_RESULT);
			if(validationResult) {
				validationResult.innerHTML = validationText;
				validationContainer.style.display = "";
			}
		}
	}
	var price = currencyFormatted(findChildNodeData(xmlDoc, SALESPRICE_VAT));
	var priceContainer = getElement("capriPrice");
	if(priceContainer != null) {
		priceContainer.innerHTML = price;
	}
	priceContainer = getElement("price");
	if(priceContainer != null) {
		priceContainer.value = price;
	}
	checkMapProductPurchaseButton();
}

function deleteMapProducts() {
	// Slett cookie
	delete_Cookie(COOKIE_MAP_PRODUCT_SEARCH, "/", "");
	//dojo.cookie(COOKIE_MAP_PRODUCT_SEARCH, null, {expires: -1, path: '/'});
	// Tøm tabellen
	var container = dojo.byId("objectInfo");
	if(container) {
		container.innerHTML = "";
	}
	container = dojo.byId(ELM_MAP_PRODUCTS);
	if(container) {
		container.innerHTML = "";
	}
}

function createUrlFromDoc(doc) {
	var elmsNotWanted = [REFERENCE];
	var url = "";
	if(doc) {
		var data = doc.getElementsByTagName(ORDERDATA_ROOT);
		if(data.length > 0) {		
			var elms = data[0].childNodes;
			for(var i = 0; i < elms.length; i++) {
				var elm = elms[i];
				if(!(elm.nodeName in oc(elmsNotWanted))) {
					var value = "";
					if(elm.hasChildNodes()) {
						if(elm.firstChild.nodeType == 1) {
							if(url) url += "&";
							url += "isxml=" + elm.nodeName;
							value = escape(getXML(elm.firstChild));
						} else if(elm.firstChild.nodeType == 3) {
							value = escape(elm.firstChild.data);
							
						}
					}
					if(url) url += "&";
					url += elm.nodeName + "=" + value;
				}
			}
		}
	}
	return url;
}

function createParamsFromForm(form) {
	var url = "";
	var elmsNotWanted = ["", OBJECT_INFO, GEOMETRY, ORDER_DATA_XML, REFERENCE];
	if(form != null) {
		for(var i = 0; i < form.elements.length; i++) {
			var elm = form.elements[i];
			if(elm.type == "checkbox" && !elm.disabled && elm.checked) {
				url = urlAddFormElement(url, elm);
			}
			else if(elm.type == "radio" && !elm.disabled && elm.checked) {
				url = urlAddFormElement(url, elm);
			}
			else if(elm.type == "text" && !elm.disabled) {
				url = urlAddFormElement(url, elm);
			}
			else if(elm.type == "textarea" && !elm.disabled) {
				url = urlAddFormElement(url, elm);
			}
			else if(elm.type == "hidden" && !(elm.name in oc(elmsNotWanted))) {
				url = urlAddFormElement(url, elm);
			}
		}
	}
	return url;
}

function updateDocFromForm(doc, form) {
	var formElmsNotWanted = ["", OBJECT_INFO, GEOMETRY, ORDER_DATA_XML, REFERENCE];
	var formElmsInitialized = [];
	
	if(doc && form) {
		var data = doc.getElementsByTagName(ORDERDATA_ROOT);
		if(data.length > 0) {
			for(var i = 0; i < form.elements.length; i++) {
				var elm = form.elements[i];
				if((elm.type == "checkbox" && !elm.disabled) || 
					(elm.type == "radio" && !elm.disabled) ||
					(elm.type == "text" && !elm.disabled) ||
					(elm.type == "textarea" && !elm.disabled) ||
					(elm.type == "hidden" && !(elm.name in oc(formElmsNotWanted)))
				) {
					// Første gang ett formElement dukker opp, slettes alle instanser av dette elementet fra doc.
					if(!(elm.name in oc(formElmsInitialized))) {
						formElmsInitialized.push(elm.name);						
						var toBeDeleted = data[0].getElementsByTagName(elm.name);
						while(toBeDeleted.length > 0) {
							data[0].removeChild(toBeDeleted[0]);
							toBeDeleted = data[0].getElementsByTagName(elm.name);
						}
					}
					// Legg til elementet
					if((elm.type != "checkbox" && elm.type != "radio") || ((elm.type == "checkbox" || elm.type == "radio") && elm.checked)) {
						var newNode = doc.createElement(elm.name);
						newNode.appendChild(doc.createTextNode(elm.value));
						data[0].appendChild(newNode);
					}
				}
			}		
		}
	}
}

function urlAddFormElement(url, elm) {
	if(url != "") {
		url += "&";
	}
	url += elm.name + "=" + escape(elm.value);
	return url;
}

function changeLocationNamePositionInMap(xy) {	
	var coordinates;
	var x, y;
	try {
		coordinates = xy.split("/");
		x = coordinates[0];
		y = coordinates[1];		
	}
	catch (err) {
		errorHandler("parseError on " + xy," changeLocationNamePositionInMap ", error_invalid_arguments);
	}	
	//var list = getElement("locationList");
	//list.size = 1;//Selectboxen krympes	
	query("indexMap", "place", [x, y]);
}

function checkCookieMapProductSearch() {
	var url = get_Cookie(COOKIE_MAP_PRODUCT_SEARCH);
	//var url = dojo.cookie(COOKIE_MAP_PRODUCT_SEARCH, {path: '/'});
	if(url) {
		requestMapProducts(url);
	} else {
		if (sessvars !== undefined && sessvars.func !== undefined && sessvars.func.args.municipalNumber != undefined) {
			var knr = sessvars.func.args.municipalNumber;
			if(knr != "") {
				mapSubmit(MUNICIPAL, knr, null, null);
			}
		}
	}
}

function disableFormElements(formName, disable) {
	var formElmsNotToBeDisabled = ["cancel"];	
	var form = getElement(formName);
	if(form != null) {
		for(var i = 0; i < form.elements.length; i++) {
			var elm = form.elements[i];
			if(!(elm.name in oc(formElmsNotToBeDisabled))) {
				if(elm.className.indexOf("always_disabled") < 0) {
					elm.disabled = disable;
				}
			}
		}
	}
}

function addOnChange2Elements(formName, function2Add) {
	var formElmsNotWanted = [REFERENCE];

	var form = getElement(formName);
	if(form != null) {
		for(var i = 0; i < form.elements.length; i++) {
			var elm = form.elements[i];
			if(!(elm.name in oc(formElmsNotWanted))) {
				if(elm.type in oc(["radio", "checkbox"])) {
					if(elm.onclick == null) {
						elm.onclick = Function(function2Add);
					} else {
						var def = elm.onclick.toString(); // Hent onclick-metoden
						var start = def.indexOf("{") + 1;
						def = def.substring(start); // Fjern starten, vi er bare interessert i innholdet.
						def = def.substring(0, def.length - 1); // Fjern slutten.
						elm.onclick = Function(def + function2Add);
					}
				} else if(elm.type in oc(["text", "textarea"])) {
					elm.onchange = Function(function2Add);
				}
			}
		}
	}
}

function watermarkFocus(elementId) {
	var element = getElement(elementId);
	var className = "";
	if(element != null) {
		className = element.className;	
		className = className.replace(/watermarkusername/i, "");
		className = className.replace(/watermarkpassword/i, "");
		className = className.replace(/watermarkmunicipal/i, "");
		element.className = className;
	}
}

function watermarkBlur(elementId) {
	var element = getElement(elementId);
	var className = "";
	if(element != null && element.value == "") {
		className = element.className;
		if(element.type == "password") {
			className = className + " watermarkPassword";
		}
		if(element.type == "text") {
			if(element.id == "userid") {
				className = className + " watermarkUsername";
			}
			else if(element.id == "municipal") {
				className = className + " watermarkMunicipal";
			}
		}
		element.className = className;
	}
}

function initBigTabsArray(ulId, bigtabsArray) {
	var ul = getElement(ulId);
	if(ul != null) {
		for(var i = 0; i < bigTabsArray.length; i++) { 
			var tab = bigTabsArray[i];
			var newLi = document.createElement("li");
			if(tab.active == true) {
				newLi.className = "active bgProduct";
			} else {
				newLi.className = "inactive";
			}
			newLi.innerHTML = "<a href=\"" + tab.link + "\"><span>" + tab.label + "</span></a>";
			ul.appendChild(newLi);
		}
	}
}

function updatePortletSubTitle(title) {
	var elm = getElement("portletSubTitle");
	if(elm != null) {
		elm.innerHTML = title;
	}
}

function checkMapProductPurchaseButton() {
	if(dojo.byId(ORDER_DATA_XML) && (dojo.byId(ORDER_DATA_XML).value != "") && dojo.byId(VALIDATION_RESULT) && (trim(dojo.byId(VALIDATION_RESULT).innerHTML).length == 0)) {
		var button = dojo.byId("purchase");
		if(button) {
			button.style.display = "";
		}
	}
	
}


/*
-------------------------------------------------------------------------------------
- Diverse hjelpemetoder.
-------------------------------------------------------------------------------------
*/

function currencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	if(s == "-1.00") 
		{ s = "Kan ikke beregnes";}
	else if(s == "0.00") 
		{s = "Beregnes";}
	else
		{ s = commaFormatted(s);}
	return s;
}

function commaFormatted(amount)
{
	var delimiter = " ";
	var a = amount.split('.',2)
	var d = a[1];
	var i = parseInt(a[0]);
	if(isNaN(i)) { return ''; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if(d.length < 1) { amount = n; }
	else { amount = n + ',' + d; }
	amount = minus + amount;
	return amount;
}

function findPosition(obj) {
	var curLeft = curTop = 0;
	if(obj.offsetParent) {
		do {
			curLeft += obj.offsetLeft;
			curTop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curLeft, curTop];
}

function ajaxRequest(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
 if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i])
   }
   catch(e){
    //suppress error
   }
  }
 }
 else if (window.XMLHttpRequest) // if Mozilla, Safari etc
  return new XMLHttpRequest()
 else
  return false
}

function findChildNodeData(root, findNode) {
	var data = "";
	var elements = root.getElementsByTagName(findNode);
	if(elements.length > 0) {
		var elm = elements[0];
		if(elm.hasChildNodes()) {
			data = elm.firstChild.data;
		}
	}
	return data
}

function createDocFromXml(xml) {
	var xmlDoc = null;
	try {
		if (window.DOMParser)
		{
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(xml,"text/xml");
		}
		else // Internet Explorer
		{
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async="false";
			xmlDoc.loadXML(xml); 
		}
	}
	catch(err) {
		alert("Klarte ikke å lese inn xml. Exception=" + e.description);
		return;
	}
	return xmlDoc;
	
}

function oc(arguments) {
	var o = {};
	for(var i=0; i < arguments.length; i++) {
		o[arguments[i]] = null;		
	}
	return o;
}

function getNamespaces(node) {
	var namespaces = "";
	var atts = node.attributes;
	for(var i = 0; i < atts.length; i++) {
		if(atts[i].name.substring(0, 5) == "xmlns") {
			if(namespaces) namespaces += "&";
			namespaces += NAMESPACE + "=" + escape(atts[i].name.substring(6) + "|" + atts[i].value);
		}
	}
	return namespaces;
}

function getXML(aNode) {
	var ELEMENT_NODE = 1;
	var TEXT_NODE = 3;
	var COMMENT_NODE = 8;
	var CDATA_SECTION_NODE = 4;
  var out = '';
  if(aNode.nodeType == ELEMENT_NODE) {
    out = '<'+aNode.nodeName;

		var atts = aNode.attributes;
		for(var x=0;x<atts.length;x++) {
			out +=' '+atts[x].nodeName+'="'+atts[x].nodeValue+'"';
		}
    
    if(aNode.hasChildNodes()) {
      out += '>';
      var kids = aNode.childNodes;
      for(var x=0;x<kids.length;x++) {
        switch(kids[x].nodeType) {
          case ELEMENT_NODE:
            out += getXML(kids[x]);
            break;
          case TEXT_NODE:
            out += kids[x].nodeValue;
            break;
          case COMMENT_NODE:
            out += '<!--'+kids[x].nodeValue+'-->';
            break;
          case CDATA_SECTION_NODE:
            out += '<'+'![CDATA['+kids[x].nodeValue+']'+']>';
            break;  
        }
      }
      out += '</'+aNode.nodeName+'>';
    } else { 
      out += '/>';
    }
  }  
  return out;
}

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 * 24;
	}
	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" : "" );
}

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;
	}
}

function delete_Cookie( name, path, domain ) {
	if ( get_Cookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function pressCancelButton() {
	var cancelButton = dojo.byId("cancel");
	if(cancelButton) {
		cancelButton.click();
	}
}

function runHelpDialog(startDialogName) {
	var dialog = dojo.byId(startDialogName);
	var dialogText = dojo.byId("divHelpText");
	if(dialog && dialogText) {
		dialog.onclick();
		// Sjekk om det er en neste-melding
		var thereIsANext = false;
		var nextName = "";
		var nameParts = startDialogName.split("_");
		if(nameParts.length == 2) {
			var thisNumber = parseInt(nameParts[1]);
			var nextNumber = thisNumber + 1;
			nextName = nameParts[0] + '_' + nextNumber;
			if(dojo.byId(nextName)) thereIsANext = true;
		}
		if(thereIsANext) {
			// Legg til "Neste"-knapp;
			var html = dialogText.innerHTML;
			html += '<br/><form class="alignCenter"><button type="button" name="next" id="next" class="roundedSmall bgProduct fcButton" onclick="runHelpDialog(\'' + nextName + '\');">';
			html += '<span>Neste</span></form><br/>';
			dialogText.innerHTML = html;
			window.location.hash = startDialogName;
		}
	}
	
}

function queryRandomizer(query) {
	var randomnumber = Math.floor(Math.random()*1000001);
	query += '&sid=' + randomnumber;
	return query;
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function checkTitleDefault() {
	var formInputs = document.getElementsByTagName('input');
	for(var i = 0; i < formInputs.length; i++) {
		var thisInput = formInputs[i];
		if (thisInput.type == 'text' && thisInput.className.match(/\btitleDefault\b/)) {
			// Set value like title if empty
			if(thisInput.value == '') {
			 thisInput.value = thisInput.title;
			}
			// Add eventhandlers
			dojo.connect(thisInput, 'focus', clearDefaultText);
			dojo.connect(thisInput, 'blur', replaceDefaultText);
		}
	}
}

function clearDefaultText(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
  if (!target) return;
  if(target.value == target.title) {
  	target.value = '';
  }
}

function replaceDefaultText(e) {
	var target = window.event ? window.event.srcElement : e ? e.target : null;
  if (!target) return;
  if(target.value == '' && target.title) {
  	target.value = target.title;
  }
}