function swapRanges(elementlow, elementhigh, form){
    var low = document.forms[form].elements[elementlow].value;
    var high = document.forms[form].elements[elementhigh].value;

    if( low.value > high.value && low!= "" && high != ""){
        document.forms[form].elements[elementlow].value = high;
        document.forms[form].elements[elementhigh].value = low;
        }
}

function searchAll(radioObject, form1){
    if (radioObject[1].checked){
        document.forms['hiddenform'].elements['keyword'].value = form1.elements['keyword'].value;
        document.forms['hiddenform'].elements['sort'].value = form1.elements['sort'].value;
        document.forms['hiddenform'].submit();
        return false;
        }
    else{
        form1.submit();
        return true;
        }
}

function swapCurrency( formname, tofield, fromfield, selectedNo) {
	document.forms[formname].elements[tofield].value = document.forms[formname].elements[fromfield].options[selectedNo].text;
}

function expandCollapse() {
	for (var i=0; i<expandCollapse.arguments.length; i++) {
		var element = document.getElementById(expandCollapse.arguments[i]);
		element.style.display = (element.style.display == "none") ? "block" : "none";
	}
}
function expandCollapse2(o) {
    var n = o.nextSibling;
    while (n.nodeType != 1) n = n.nextSibling;
    n.style.display=(o.className=="expand")?"block":"none";
    o.className=(o.className=="expand")?"collapse":"expand";
}
function expandCollapseInitiallyHidden() {
	for (var i=0; i<expandCollapseInitiallyHidden.arguments.length; i++) {
		var element = document.getElementById(expandCollapseInitiallyHidden.arguments[i]);
        element.style.display = (element.style.display == "block") ? "none" : "block";
	}
}

function hideIfEmpty(emptyTag, hideTag) {
	// if no hide tag i specified, hide the empty tag.
	if (hideTag === null) {
		hideTag = emptyTag;
	}

	// find tag which might be empty
	var e = document.getElementById(emptyTag);
	if (isEmpty(e)) {
		hide(hideTag);
	}
}

function isEmpty(element) {
	if (element !== null && element.childNodes !== null && element.childNodes.length <= 1) {
		if (!element.childNodes.length) {
			// element has no children
			return 1;
		} else if (element.childNodes.length == 1 && element.childNodes[0].data !== null && !element.childNodes[0].data.match("[^ \t\n]")) {
			// element has one child, a the child contains only space, tabs and newlines.
			return 1;
		}
	}

	// the tag contains data
	return null;
}

/**
 *  Add an event listener to a DOM element.
 *
 *  @param element    DOM element, ie. "window"
 *  @param eventName  name of the event, ie. "'submit'", which is the onsubmit-event
 *  @param func       a reference to the function that should be called when the event fires
 **/
function _addEventListener(element, eventName, func) {
	if (element.addEventListener) {
	    element.addEventListener(eventName, func, false); // W3C
	} else if (element.attachEvent) {
	    element.attachEvent('on' + eventName, func); // IE
	} else {
	    element['on' + eventName] = func; // warning! removes existing event handler(s)
	}
}

function show(object, displayMode) {
    if (document.getElementById && document.getElementById(object) !== null) {
         document.getElementById(object).style.visibility='visible';
         document.getElementById(object).style.display=displayMode?displayMode:'';
    } else if (document.layers && document.layers[object] !== null) {
        document.layers[object].visibility = 'visible';
    } else if (document.all) {
        document.all[object].style.zIndex = 100;
        document.all[object].style.visibility = 'visible';
    }
}

function hide(object) {
    if (document.getElementById && document.getElementById(object) !== null) {
         document.getElementById(object).style.visibility='hidden';
         document.getElementById(object).style.display='none';
    } else if (document.layers && document.layers[object] !== null) {
        document.layers[object].visibility = 'hidden';
    } else if (document.all) {
         document.all[object].style.visibility = 'hidden';
    }
}

if (document.getElementById) { document.write('<style>.contractArticle {position:absolute;visibility:hidden;display:none}</style>'); }

// Prevent double form submits by using this function as an input submit button's onclick handler.
// Example usage: <input:submit functionString="disableButton(this, 'Processing...', 'smallbuttonDisabled')" ... />
function disableButton(button, disabledButtonText, disabledStyle) {
	if (!disabledButtonText) { disabledButtonText = '   Vent...   '; }
	button.onclick = preventDefaultAction;
	button.value = disabledButtonText;
	if (disabledStyle) {
	    button.className = disabledStyle;
	} else if (button.style) {
	    button.style.color = '#BBBBBB';
    }
}

// Prevents the default action for this event from being performed.
function preventDefaultAction(event) {
	if (!event) { event = window.event; /* does not work with Mozilla 1.75 and Netscape 4 */ }
	if (event) {
		if (event.preventDefault) {
		    event.preventDefault(); // W3C
		} else {
		    event.returnValue = false; // IE
		}
	}
	return false;
}

function submitForm(formName) {
    document[formName].submit();
}

function setFormAction(formName, actionValue) {
    document[formName].action = actionValue;
}

function setUserAction(formName, actionField, actionValue) {
    document[formName].elements[actionField].value = actionValue;
}

function setNextStep(formName, value) {
    document[formName].nextStep.value = value;
}

function changeImage(name, text) {
   document.images["main"].src = name;
   document.all.imagetext.innerText = text;
}

// Submit a form to a new popup window. Send all form elements, except files.
// Side effects: all input elements of type "file" will have the disabled-attribute set to false.
function submitToNewWindow(form, action, width, height) {
	function disableFileUpload(disable) {
		for (elemName in form.elements) {
			var elem = form.elements[elemName];
			if (elem !== null && elem.type == 'file') {
			    elem.disabled = disable;
            }
		}
	}
	// Default values
	if (!width) { width = 740; }
	if (!height) { height = 540; }
	if (!action) { action = form.action; }

	// Remember old values
	var oldTarget = form.target;
	var oldAction = form.action;

	var windowName = "popupwindow";
	openWindow('', width, height, windowName);
	form.target = windowName;
	form.action = action;

	disableFileUpload(true);
	form.submit();
	disableFileUpload(false);

	// Restore original values
	form.target = oldTarget;
	form.action = oldAction;
	return false;
}

function openWindow(url, width, height, name){
	if (!name) { name = ""; }
    var win;
    win = window.open(url, name, "toolbar=no,location=no,directories=no,status=no,menubar=0,resizable=0,copyhistory=no,width=" + width + ",height=" + height + ",scrollbars=1");
    if (((navigator.appName.indexOf("Netscape") != -1) && (parseInt(navigator.appVersion) >=3)) || ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4))) {
        win.focus();
    }
}

function openMapWindow(url) {
	mapwin = window.open(url, "Kart", "toolbar=no,location=no,directories=no,status=no,menubar=0,resizable=1,copyhistory=no,width=805,height=860,screenX=0,screenY=0,scrollbars=yes");
	if (((navigator.appName.indexOf("Netscape") != -1) && (parseInt(navigator.appVersion) >=3)) || ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4))) {
		mapwin.focus();
	}
}


function checkTextareaMaxLength (textarea, evt, maxLength) {
  if (textarea.selected && evt.shiftKey) {
    // ignore shift click for select
    return true;
  }
  var allowKey = false;
  if (textarea.selected && textarea.selectedLength > 0) {
    allowKey = true;
  } else {
    var keyCode =
      evt.which ? evt.which : evt.keyCode;
    if (keyCode < 48 && keyCode != 13 && keyCode != 32) {
      allowKey = true;
    } else {
      allowKey = textarea.value.length < maxLength;
    }
  }
  textarea.selected = false;
  if (!allowKey) {
    evt.returnValue = false;
    if (evt.preventDefault) {
      evt.preventDefault();
    }
  }
  return allowKey;
}

/**
 * Adds a counter to a textarea and limits its number of charaters to maxLength.
 */
function addTextAreaCounter(textareaName, maxLength, alertMessage) {
	var textarea = document.getElementById(textareaName);
	var textareaCounterName = textareaName + 'Counter';
	function updateCounter() {
		var value = maxLength - textarea.value.length;
		var counter = textarea.form[textareaCounterName];
		counter.value = value;
	}
	function onKeyPressHandler(evt) {
		if (!evt) {
		    evt = window.event;
        }
		return checkTextareaMaxLength(textarea, evt, maxLength);
	}
	function onBlurHandler() {
		if (textarea.value.length>maxLength && alertMessage) {
			alert(alertMessage);
			if (textarea.focus) {
			    textarea.focus();
            }
		}
	}

	if (!textarea.form[textareaCounterName]) {
		document.writeln('<input disabled type="text" name="' + textareaCounterName + '" size="3" maxlength="3" value=""> tegn igjen');
		updateCounter();
		textarea.onkeypress = onKeyPressHandler;
		textarea.onkeyup = textarea.onkeydown = updateCounter;
		textarea.onblur = onBlurHandler;
	} else {
		alert('Error in addTextAreaCounter(): Form already contains a child node named "' + textareaCounterName + '".');
	}
}


/* Checks and unchecks an array of checkboxes */
function allChecked(formname, fieldname){
    var nr, value;
	if (!document[formname].elements[fieldname].length) {
		nr = 1;
 	} else {
		nr = document[formname].elements[fieldname].length;
    }

	if (document[formname].elements["all_"+fieldname].checked) {
		value = true;
	} else {
		value = false;
    }

	for (var i=0;i<nr;i++) {
		if (nr == 1) {
			document[formname].elements[fieldname].checked = value;
		} else {
		    document[formname].elements[fieldname][i].checked = value;
		}
	}
}

/* Checks or unchecks an array of checkboxes, typically using an onclick method in a link */
function setGroupChecked(formname, fieldname, newstate){
    var nr;
	if (!document[formname].elements[fieldname].length) {
		nr = 1;
 	} else {
		nr = document[formname].elements[fieldname].length;
    }

	for (var i=0;i<nr;i++) {
		if (nr == 1) {
			document[formname].elements[fieldname].checked = newstate;
		} else {
		    document[formname].elements[fieldname][i].checked = newstate;
		}
	}
}

function splitComposite(form,compositefield,field1,field2) {

    var compValue = document.forms[form].elements[compositefield].value;
    var tmpArr = compValue.split("|");
    document.forms[form].elements[field1].value = tmpArr[0];
    document.forms[form].elements[field2].value = tmpArr[1];
}

function setSelected(form, field) {
	if (document.forms[form].elements[field].options) {
		var length = Number(document.forms[form].elements[field].options.length);
		for (var i=0;i<length;i++) {
			document.forms[form][field][i].selected = true;
		}
	}
}


function copyChild(form,parent,from,to,parentfield,insertparenttext) {
   var parentLenght = Number(document.forms[form].elements[parent].options.length);
   var parentText = "";
   var parentValue = "";

   for (var p=0;p<parentLenght;p++) {
        if (document.forms[form].elements[parent].options[p].selected) {
            parentText = document.forms[form].elements[parent].options[p].text;
            parentValue = document.forms[form].elements[parent].options[p].value;
        }
   }
   var length = Number(document.forms[form].elements[from].options.length);
   for (var i=0;i<length;i++) {
     if (document.forms[form][from][i].selected) {

        var valuefrom = document.forms[form][from][i].value;
        var textfrom =  parentText + " " + document.forms[form][from][i].text;
        var all = false;
        if (valuefrom == '0') {
            all = true;
        }
        var exists = false;

        var tolength = Number(document.forms[form].elements[to].options.length);
        for (var j=0;j<tolength;j++) {
            var valueto = document.forms[form][to][j].value;
            var textto =  document.forms[form][to][j].text;

            if (valueto == valuefrom && valueto || (textto == textfrom)) {
                 exists = true;
            }
        }

        if (!exists) {
            if (!insertparenttext) {
                parentText = "";
            }
            var l = document.forms[form].elements[to].options.length;
            if (all) {
                document.forms[form][to][l] = new Option(parentText + " " + document.forms[form][from][i].text,parentValue);
            } else {
                document.forms[form][to][l] = new Option(parentText + " " + document.forms[form][from][i].text,document.forms[form][from][i].value);
            }
            document.forms[form][to][l].selected = true;
        }
      }
   }
}


function deleteChild(form,from,all,parentfield) {
    var i, length = Number(document.forms[form].elements[from].options.length);
    if (!all) {
        for (i=length-1;i>=0;i--) {
            if (document.forms[form][from][i].selected) {
                if (navigator.appName.indexOf("Netscape") != -1) {
                    document.forms[form].elements[from].options[i]=null;
                } else if (navigator.userAgent.indexOf("Opera") != -1) {
                    document.forms[form].elements[from].options.remove(i);
                } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)) {
                    document.forms[form].elements[from].options.remove(i);
                } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) < 4)) {
                    document.forms[form].elements[from].options[i].selected = false;
                } else {
                    document.forms[form].elements[from].options[i].selected = false;
                }
            } else {
                    document.forms[form].elements[from].options[i].selected = true;
            }
        }
   } else {
        if (navigator.appName.indexOf("Netscape") != -1) {
            for (i=(length); i >= 0; i--) {
                document.forms[form].elements[from].options[i]=null;
            }
        } else if (navigator.userAgent.indexOf("Opera") != -1) {
            for(i=(length); i >= 0; i--) {
                document.forms[form].elements[from].options.remove(i);
            }
        } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)) {
            for(i=(length); i >= 0; i--) {
                document.forms[form].elements[from].options.remove(i);
            }
        } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) < 4)) {
            for (i=(length-1); i >= 0; i--) {
                document.forms[form].elements[from].options[i].selected = false;
            }
        } else {
            for (i=(length-1); i >= 0; i--) {
                document.forms[form].elements[from].options[i].selected = false;
            }
        }
   }

}

function setCheckedRegions(form,name,value) {
	var valueArr = value.split(";");
	for (var i=0;i<document[form][name].length;i++) {
		for (var ii=0;ii<valueArr.length;ii++) {
			if (document[form][name][i].value == valueArr[ii]) {
			    document[form][name][i].checked = true;
            }
		}
	}
}

function setCheckedSubRegions(form,name,name2,value,subRegion) {
    var childs = childArr[value];
    var tmpArr = childs.split("|");
    var tmpArr2;
    var id;
    var checked = document[form][name][value].checked;

    if (!subRegion) {
        var exit = false;
        for (var d=0;d<document[form][name2].length;d++) {
            for (var c=0;c<tmpArr.length;c++) {
                tmpArr2 = tmpArr[c].split(";");
                id = tmpArr2[0];
                if (document[form][name2][d].value == id) {
                    document[form][name2][d].checked = checked;
                    exit = true;
                }
            }
        }
    } else {
        checked = true;
        for (var s=0;s<tmpArr.length;s++) {
            if (!document[form][name2][s].checked) {
                checked = false;
            }
        }

        if (checked) {
            document[form][name][value].checked = true;
        } else {
            document[form][name][value].checked = false;
        }

    }

}


function setCheckedSubRegionsVisible(form,name,value,regions) {
	var subRegionsArr;
	var tempArr;
	var lastChanged;
	var found = false;
	var valueArr = value.split(";");
	var mainRegionsArr = regions.split("#");
	for (var i=0;i<mainRegionsArr.length;i++) {
		tempArr = mainRegionsArr[i].split("|");
		subRegionsArr = tempArr[1].split(";");
		for (var ii=0;ii<subRegionsArr.length;ii++) {
			for (var iii=0;iii<valueArr.length;iii++) {
				if (subRegionsArr[ii].length > 0 && valueArr[iii].length > 0 && subRegionsArr[ii] == valueArr[iii]) {
					if (lastChanged != tempArr[0]) {
						menu("submenu"+tempArr[0]);
						swapImage(tempArr[0]);
						lastChanged = tempArr[0];
					}
				}
			}
		}
	}
}

function fillChilds(form,name1,name2,allchilds,allparents) {
	emptySelectBox(form, name1, allchilds);
	var childid = 0;
	var start = 1;
	var name2Length = document[form][name2].length;
	if (allchilds) {
		childid = 1;
	}
	if (!allparents) {
		start = 0;
	}
    var selectedvalue = 0;
	for (var i=start;i<name2Length;i++) {
		if (document[form][name2][i].selected) {

            selectedvalue = parentArr[i-start].split(";")[0];
			var tmpArr = childArr[i-start].split("|");
			for (var j=0;j<tmpArr.length;j++) {
				var tmpArr2 = tmpArr[j].split(";");
			    document[form].elements[name1].options[childid] = new Option(tmpArr2[1],tmpArr2[0]);
                childid++;
			}
		}
	}
    if (allchilds) {
        document[form].elements[name1].options[0].value = '0';
    }
}

function fillChilds_FirstEntryCustomised(form,name1,name2,allparents,value,text) {
	var childid = 0;
	var start = 1;
	var name2Length = document[form][name2].length;

	if (!allparents) {
		start = 0;
	}
    var selectedvalue = 0;
	for (var i=start;i<name2Length;i++) {
		if (document[form][name2][i].selected) {
            document[form].elements[name1].options.length = 0;
            document[form].elements[name1].options[childid] = new Option(text, value);
            childid++;
            selectedvalue = parentArr[i-start].split(";")[0];
			var tmpArr = childArr[i-start].split("|");
			for (var j=0;j<tmpArr.length;j++) {
				var tmpArr2 = tmpArr[j].split(";");
			    document[form].elements[name1].options[childid] = new Option(tmpArr2[1],tmpArr2[0]);
                childid++;
			}
		}
	}
}

function showCvLink(){
    document.getElementById("link").style.visibility='visible';
}

function hideCvLink(){
    document.getElementById("link").style.visibility='hidden';
}


function fillChildsLocation(form,name1,name2,allchilds,allparents) {
	emptySelectBox(form, name1, allchilds);
	var childid = 0;
	var start = 1;
	var name2Length = document[form][name2].length;
	if (allchilds) {
		childid = 1;
	}
	if (!allparents) {
		start = 0;
	}
    var selectedvalue = 0;
	for (var i=start;i<name2Length;i++) {
		if (document[form][name2][i].selected) {

            selectedvalue = parentArrLocation[i-start].split(";")[0];
            var tmpArr = childArrLocation[i-start].split("|");
            for (var j=0;j<tmpArr.length;j++) {
				var tmpArr2 = tmpArr[j].split(";");
			    document[form].elements[name1].options[childid] = new Option(tmpArr2[1],tmpArr2[0]);
                childid++;
			}
		}
	}
    if (allchilds) {
        document[form].elements[name1].options[0].value = '0';
    }
}

// Used by the <input:select> tag to remember options when the user navigates back in history
function rememberoptions_load(inputSelect) {
	if (inputSelect && inputSelect.form && inputSelect.options) {
		var hValues = inputSelect.form[inputSelect.name + '_values'];
		var hText = inputSelect.form[inputSelect.name + '_text'];
		var hSelected = inputSelect.form[inputSelect.name + '_selected'];
		if (hValues && hText && hSelected && hValues.value && hValues.value.length > 0) {
			// deserialize the arrays from the hidden fields
			var optionValues = hValues.value.split(';');
			var optionText = hText.value.split(';');
			var optionSelected = hSelected.value.split(';');

			// Delete all existing options.
			emptySelectBox(inputSelect.form.name, inputSelect.name, true);

			for (var i=0; i<optionValues.length; ++i) {
				// Create a new option
				var option = new Option(optionText[i], optionValues[i]);
				// Add the option to the select tag
				inputSelect.options[i] = option;
				// Mark the option as selected if it should be
				for (var j=0; j<optionSelected.length; ++j) {
				    if (option.value == optionSelected[j]) {
    					option.selected = true;
    				}
				}
			}
		}
	}
}

// Used by the <input:select> tag to remember options when the user navigates back in history
function rememberoptions_save(inputSelect) {
	if (inputSelect && inputSelect.form && inputSelect.options) {
		var options = inputSelect.options;
		var optionValues = new Array(), optionText = new Array(), optionSelected = new Array();

		// Store options to arrays
		for (var i=0; i<options.length; ++i) {
			var option = options[i];
			optionValues.push(option.value);
			optionText.push(option.text);
			if (option.selected) {
			    optionSelected.push(option.value);
            }
		}

		// Serialize the arrays to hidden fields
		inputSelect.form[inputSelect.name + '_values'].value = optionValues.join(';');
		inputSelect.form[inputSelect.name + '_text'].value = optionText.join(';');
		inputSelect.form[inputSelect.name + '_selected'].value = optionSelected.join(';');
	}
}

// Used by the <input:select> tag to remember options when the user navigates back in history
function rememberoptions_registerEventHandlers(formName, selectTagName) {
	// Find formName if it's missing.
	if (!formName || !formName.length) {
		var tags = document.getElementsByName(selectTagName);
		if (tags.length>0 && tags[0] && tags[0].form && tags[0].form.name) {
		    formName = tags[0].form.name;
        }
	}
	var form = document.forms[formName];
	if (form) {
		var selectTag = form[selectTagName];
		if (selectTag) {
			_addEventListener(form, 'submit', function() { rememberoptions_save(selectTag); });
			_addEventListener(window, 'load', function() { rememberoptions_load(selectTag); });
		}
	}
}

function emptySelectBox(form, boxname, allchilds){
	var i, length = Number(document.forms[form].elements[boxname].options.length);

	if (navigator.appName.indexOf("Netscape") != -1) {
		for (i=(length); i > 0; i--) {
			document.forms[form].elements[boxname].options[i]=null;
		}
	} else if (navigator.userAgent.indexOf("Opera") != -1) {
		for(i=(length); i > 0; i--) {
			document.forms[form].elements[boxname].options.remove(i);
		}
	} else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)) {
		for(i=(length); i > 0; i--) {
			document.forms[form].elements[boxname].options.remove(i);
		}
	} else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) < 4)) {
		for (i=(length-1); i > 0; i--) {
			document.forms[form].elements[boxname].options[i].selected = false;
		}
	} else {
		for (i=(length-1); i > 0; i--) {
			document.forms[form].elements[boxname].options[i].selected = false;
		}
	}
	if (navigator.appName.indexOf("Netscape") == -1) {
		if (allchilds) {
			document.forms[form].elements[boxname].options[0] = new Option("Alle","0",true,true);
		} else {
			document.forms[form].elements[boxname].options[0] = new Option("","0",true,true);
		}
		document.forms[form].elements[boxname].options[0].selected = true;
	}
}

function removeNonDigits(inputObject) {
	inputObject.value = inputObject.value.replace(/[\.,:]-$/,'');
	inputObject.value = inputObject.value.replace(/[\.,:][0-9][0-9]$/,'');
	inputObject.value = inputObject.value.replace(/[^0-9]/g,'');
}

function removeNonDigitsSimple(inputObject) {
	inputObject.value = inputObject.value.replace(/[\.,][0-9][0-9]$/,'');
    inputObject.value = inputObject.value.replace(/[\.,][0-9]$/,'');
    inputObject.value = inputObject.value.replace(/[., ]/g,'');
}

function removePrecedingZeros(inputObject) {
	inputObject.value = inputObject.value.replace(/^0+/,'');
}

function removeExceptNumbersAndLetters(inputObject) {
	inputObject.value = inputObject.value.replace(/[^a-zA-Z0-9]/g,'');
}

function removeExceptNumbersAndPlus(inputObject) {
	inputObject.value = inputObject.value.replace(/[-\.\\,: ]/g,'');
    inputObject.value = inputObject.value.replace(/[a-zA-Z]/g,'');
}

function convertCommaToPeriod(inputObject) {
	inputObject.value = inputObject.value.replace(/\,/,'.');
}

function MM_findObj(n, d) {
    var p,i,x;
    if(!d) {
        d=document;
    }
    if ((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
    }
    if(!(x=d[n])&&d.all) {
        x=d.all[n];
    }
    for (i=0;!x&&i<d.forms.length;i++) {
        x=d.forms[i][n];
    }
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) {
        x=MM_findObj(n,d.layers[i].document);
    }
    if(!x && d.getElementById) {
        x=d.getElementById(n);
    }
    return x;
}

function menu(objName) {
  var theValue;
  var obj = MM_findObj(objName);
  var theProp = "style.display";
  if (obj.style.display == "none"){
    theValue = "block";
  } else {
    theValue = "none";
  }
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)) {
    if (theValue === true || theValue === false) {
      eval("obj."+theProp+"="+theValue);
    } else {
        eval("obj."+theProp+"='"+theValue+"'");
    }
  }
}

function swapImage(intImage) {
	var filenamePosition = document.getElementById("image" + intImage).src.indexOf('collapse.gif');
	var originalSrc = document.getElementById("image" + intImage).src;
	if (filenamePosition > 0) {
		document.getElementById("image" + intImage).src = originalSrc.substring(0,filenamePosition) + 'expand.gif';
	} else {
		filenamePosition = document.getElementById("image" + intImage).src.indexOf('expand.gif');
		document.getElementById("image" + intImage).src = originalSrc.substring(0,filenamePosition) + 'collapse.gif';
	}
    return(false);
}

function toggleMap()
{
    el = document.getElementById('imgmap1');
    var display = el.style.display ? '' : 'none';
    el.style.display = display;
    el = document.getElementById('imgmap2');
    display = el.style.display ? '' : 'none';
    el.style.display = display;
}

// Merge two or more collections.
// Example usage: var result = concat_collections(divTag.getElementsByTagName('input'), divTag.getElementsByTagName('textarea'))
function concat_collections() {
	var result = new Array();
	for (var i=0; i<concat_collections.arguments.length; ++i) {
		var collection = concat_collections.arguments[i];
		for (var j=0; j<collection.length; ++j) {
		    result.push(collection[j]);
        }
	}
	return result;
}

// Find all input fields that are children of a given tag and enable or disable them.
function toggle_enable_inputfields(parentTagId, enable, disabledBgColor) {
	var parentTag = document.getElementById(parentTagId);
	if (parentTag) {
		var inputFields = concat_collections(parentTag.getElementsByTagName('input'), parentTag.getElementsByTagName('textarea'));
		for (var i=0; i<inputFields.length; ++i) {
			inputFields[i].disabled = !enable;

			// Change the background color. IE only.
			if (inputFields[i].runtimeStyle) {
                if (!disabledBgColor) {
                    disabledBgColor = '#DDDDDD'; // default value
                }
			    inputFields[i].runtimeStyle.backgroundColor = enable ? '' : disabledBgColor;
            }
		}
	}
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}


function copyText() {
	document.update.rss.focus();
	document.update.rss.select();
	var t = document.selection.createRange();
	t.execCommand("Copy");
	alert("Linken er kopiert");
}

/*
Javascript functions to toggle the visibility of an IFrame containing a tooltip image. The IFrame will appear exactly
where it resides in the html.

Example of use:

Add this to the form where you want the tooltip to appear.
<a href = "#" onmouseover="return toggleTooltipOn('/img/tooltipJobNewAd.gif','tooltipIFrameHeading','250px','642px','lightyellow','padding:5px;')" onmouseout="return toggleTooltipOff('tooltipIFrameHeading')">Tips til gode overskrifter</a>
<iframe  id="tooltipIFrameHeading" frameborder="0" marginwidth="0" marginheight="0" scrolling=no class="tooltipIFrameHeading"></iframe>

toggleTooltipOn() parameters:
- imageUrl: Image to show inside IFrame
- IFrameName: The unique name of the IFrame
- IFrameHeight: The height of the IFrame window
- IFrameWidth: The width of the IFrame window
- IFrameBgColor: The background color of the IFrame
- IFrameBodyStyles: Here you can add css style attributes for the body tag of the
  IFrame window. E.g "padding: 5px; font-family: Verdana"

toggleTooltipOff() parameters:
- IFrameName: The unique name of the IFrame to be hidden

To function properly the Iframe must reference a css class with the
following attributes (You can also include your own):
.tooltipIFrameHeading{
    Z-INDEX: 999;
    POSITION: absolute;
    visibility:hidden;
    }
*/

function toggleTooltipOn(imageUrl,iFrameName,iFrameHeight,iFrameWidth,iFrameBgColor,iFrameBodyStyles){
    //Get the IFrame
    var iFrame = document.getElementById(iFrameName);

    //Position the IFrame
    iFrame.style.top=iFrame.offsetTop;
    iFrame.style.left=iFrame.offsetLeft;
    iFrame.style.height = iFrameHeight;
    iFrame.style.width = iFrameWidth;

    //Get the content document of the IFrame
    var doc = iFrame.contentDocument;

    if (doc == undefined || doc == null)
        doc = iFrame.contentWindow.document;

    //Create the content of the IFrame and write it out
    doc.open();
    doc.write("<html><head></head><body style=" + "\"" + iFrameBodyStyles + "\" bgColor=" + "\"" + iFrameBgColor + "\">" + "<img src=" +"\"" + imageUrl + "\"" + "></body></html>");
    doc.close();

    //Show the IFrame
    iFrame.style.visibility = "visible";
}

function toggleTooltipOff(iFrameName){
    //Get the IFrame
    var iFrame = document.getElementById(iFrameName);

    //Hide the IFrame
    iFrame.style.visibility = "hidden";
}

Number.prototype.addPrefix = function() {
    return (this < 10) ? '0'+this : this;
}

/**
 * Unobtrusive windows.onload replacement. Will keep existing onload events.
 **/
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

/**
 * Script that will give you the correct x or y position regardless of browser version.
 * Caters for an IE bug that doesn't give you the exact position, but a relative one.
 * Recursively adds offsets.
 **/
function getRealPosition(currentObject, coordinate) {
	this.pos = (coordinate == 'x') ? currentObject.offsetLeft : currentObject.offsetTop;
	this.tmp = currentObject.offsetParent;
	while(this.tmp != null) {
		this.pos += (coordinate == 'x') ? this.tmp.offsetLeft : this.tmp.offsetTop;
		this.tmp = this.tmp.offsetParent;
	}
	return this.pos;
}

/**
 * Script that will format an input field with . as 1000 separator
 * and remove all non-numerig chars
 * Usage: <input name="price_from" type="text" onkeyup="formatWithThousandSeparator(this)" onchange="formatWithThousandSeparator(this)">
 **/
function formatWithThousandSeparator(input){
	var num = input.value.replace(/\./g,'');	// Remove dots
	if (!isNaN(num)) {
		num = num.toString().split('').reverse().join(''); // reverse the number, enabling us to find three and three numbers from the back
		num = num.replace(/(?=\d*\.?)(\d{3})/g,'$1.');	// group numbers and add dots
		num = num.split('').reverse().join('').replace(/^[\.]/,'');	// reverse again, and remove starting dot
		input.value = num;
	} else {
		input.value = input.value.replace(/[^\d\.]*/g,'');	// remove non-numeric stuff
	}
}

/**
 * Removes all non-numeric characters from an input field
 * Usage: <input name="price_from" type="text" onkeyup="formatNumber(this)" onchange="formatNumber(this)">
 * @param input
 */
function formatNumber(input){
    if (input) {
        var num = input.value;
        if (!isNaN(num)) {
            input.value = num;
        } else {
            input.value = input.value.replace(/[^\d\.]*/g,'');	// remove non-numeric stuff
        }
    }
}

/**
 * Script that will set image size to myMaxWidth/Height if they are larger in any direction.
 * @param myAnchor  (will work on all images inside this element)
 * @param myMaxWidth max height
 * @param myMaxHeight max witdh
 * Usage: addLoadEvent(function(){adjustImageSize("resultlist",150,100);});
 **/
function adjustImageSize(myAnchor, myMaxWidth, myMaxHeight) {
    var myAnchorElement = document.getElementById(myAnchor);
    if (myAnchorElement) {
        var myImages = myAnchorElement.getElementsByTagName("img");
        if (myImages) {
            for (var x = 0; x < myImages.length; x++) {
                if (myImages[x].width > myMaxWidth) {
                    myImages[x].width = myMaxWidth;
                }
                if (myImages[x].height > myMaxHeight) {
                    myImages[x].height = myMaxHeight;
                }
            }
        }
    }
}

/**
 * This function are used to check if a JSON object has more than one element.
 * The JSON object has no length property
 *
 * @param jsonObject
 */
function isSingle(jsonObject) {
    var counter = 0;
    var single = true;
    for (k in jsonObject) {
        counter++;
        if (counter > 1) {
            single = false;
            break;
        }
    }
    return single;
}

/**
 * Refill a select list with options, and add an additional option at top of the list.
 *
 * @param field - jQuery selection string.
 * @param options
 * @param topOptionLabel - An additional first option on the list. i.e. "Select from list ...". If null, then no additional first option.
 * @param jqvar - The jQuery variable assigned the value of: jQuery.noConflict();   - Can be omitted.
 */
function jQueryFillList(field, options, topOptionLabel, jqvar) {
    if (!jqvar){
        jqvar = jQuery.noConflict();
    }
    jqvar(field).removeOption(/./).removeOption(0);
    if (topOptionLabel && !isSingle(options)) {
        jqvar(field).addOption("", topOptionLabel);
    }
    jqvar(field).addOption(options, false);
}

/**
 * Update selected products. Will return html, and insert it to div#order.
 *
 * @param form
 * @param ajaxUrl
 */
function updateOrder(form, ajaxUrl) {
    var $j = jQuery.noConflict();
    var parameters = $j(form).serialize();
    $j.ajax({
        url: ajaxUrl, type: 'POST', dataType: 'html', timeout: 2000,
        data: parameters,
        error:   function(){/* If error then no changes will occur. */},
        success: function(html){
            $j("div#order").html(html);
        }
    });
}

/**
 *  Check that coordinates have legal values
 *
 *  @param formName
 *  @param fieldName
 *  @param type (lat/long)
 *  @param errorMsg
 */
function validateCoordinate(formName, fieldName, type, errorMsg){
    var maxLat = 90;
    var minLat = -90;
    var maxLong = 180;
    var minLong = -180;
    var value = document.forms[formName].elements[fieldName].value;
    if(type == "long"){
        if(value > maxLong || value < minLong)
            alert(errorMsg);
    }
    else if(type == "lat"){
        if(value > maxLat || value < minLat)
            alert(errorMsg);
    }
}

/**
 *  Check that number is valid and finite
 *
 *  @param formName
 *  @param fieldName
 *  @param errorMsg
 */
function validateRadius(formName, fieldName, errorMsg){
    var MAX_VALUE = 40000000; // The worlds circumference should be enough for most
    var value = parseInt(document.forms[formName].elements[fieldName].value);
    // If JavaScript can't handle it, Java sure can't
    if(isNaN(value) || !isFinite(value)) {
        alert(errorMsg);
        document.forms[formName].elements[fieldName].value = 0;
    }
    // Negative radius doesn't make sense
    if(value < 0) {
        document.forms[formName].elements[fieldName].value = 0;
        alert(errorMsg);
    }
    // Java can handle less than JavaScript, so we need to check for values Java can handle
    if(value > MAX_VALUE) {
        document.forms[formName].elements[fieldName].value = MAX_VALUE;
        alert(errorMsg);
    }
}
