function fnkInit() {
	fnkLinkBlur();
	fnkPNG();
}

function fnkPopup(strURL,intX,intY,bolTEMP) {
	var objTEMP=new Date();
	var intW=screen.width;
	var intH=screen.height-55;
	(bolTEMP == 0) ? bolTEMP="no" : bolTEMP="yes";
	if (intX == -1 || intY == -1) {
		window.open(strURL,objTEMP.getTime(),"fullscreen=yes");
		} else {
		if (intX == 0) {
			intX=Math.ceil(intW*0.9);
		}
		if (intY == 0) {
			intY=Math.ceil(intH*0.7);
		}
		window.open(strURL,objTEMP.getTime(),"fullscreen=no,channelmode=no,titlebar=yes,toolbar="+bolTEMP+",location="+bolTEMP+",directories=no,status="+bolTEMP+",menubar="+bolTEMP+",scrollbars="+bolTEMP+",resizable=yes,width="+intX+",height="+intY+",top="+Math.ceil(intH-intY)/2+",left="+Math.ceil(intW-intX)/2);
	}
}

function fnkDuplicate(intForm,intSource,intTarget) {
	document.forms[intForm][intTarget].value=document.forms[intForm][intSource].value;
}

function fnkObjectVisibility(strID,bolTEMP) {
	(bolTEMP == 1) ? document.getElementById(strID).style.visibility="visible" : document.getElementById(strID).style.visibility="hidden";
}

function fnkObjectOpacity(strID,intTEMP) {
	document.getElementById(strID).style.filter="alpha(opacity="+intTEMP+")";
	document.getElementById(strID).style.MozOpacity=intTEMP/100;
}

function fnkImageSwap(strURL,strGUID) {
	document.getElementById("ImageURL").href="/filer/?id="+strGUID;
	document.getElementById("Image").src=strURL;
	return false;
}

function fnkLinkUnBlur() {
	this.blur();
}

function fnkLinkBlur() {
	if (!document.getElementById) return;
	var objTEMP=document.getElementsByTagName("a");
	for (var i=0; i<objTEMP.length; i++) {
		objTEMP[i].onfocus=fnkLinkUnBlur;
	}
}

function fnkPNG() {
	var strTEMP=navigator.userAgent.toLowerCase();
	var bolMSIE=strTEMP.indexOf("msie") != -1 && strTEMP.indexOf("opera") == -1 && strTEMP.indexOf("konqueror") == -1;

	if (bolMSIE && parseInt(navigator.appVersion) && strTEMP.indexOf("msie 6.") != -1) {
		var strImage;
		var objImage=new Image();
		objImage.src="/images/space.gif";
		objTEMP=document.getElementsByTagName("img");
		for (var i=0; i<objTEMP.length; i++) {
			strImage=objTEMP[i].src;
			if (strImage.toLowerCase().indexOf(".png") == strImage.length-4) {
				objTEMP[i].src=objImage.src;
				objTEMP[i].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+strImage+"',sizingMethod='image')";
			}
		}
	}
}

function fnkOptionSelectAll(intForm,intOption) {
	for (var i=0; i<document.forms[intForm][intOption].length; i++) {
		document.forms[intForm][intOption][i].selected=true;
	}
}

function fnkOptionDelete(intForm,intOption,intTEMP,strTEMP) {
	document.forms[intForm][intOption][intTEMP]=null;

	if (document.forms[intForm][intOption].length == 0) {
		document.forms[intForm][intOption][0]=new Option(strTEMP, 0);
	}
}

function fnkOptionCopy(intForm,intOptionFrom,intOptionTo) {
	for (var i=0; i<document.forms[intForm][intOptionTo].length; i++) {
		if (document.forms[intForm][intOptionFrom][document.forms[intForm][intOptionFrom].selectedIndex].value == document.forms[intForm][intOptionTo][i].value) {
			break;
			} else if (i == document.forms[intForm][intOptionTo].length-1) {
			document.forms[intForm][intOptionTo][document.forms[intForm][intOptionTo].length]=new Option(document.forms[intForm][intOptionFrom][document.forms[intForm][intOptionFrom].selectedIndex].text, document.forms[intForm][intOptionFrom][document.forms[intForm][intOptionFrom].selectedIndex].value);
		}
	}

	if (document.forms[intForm][intOptionTo][0].value == 0) {
		document.forms[intForm][intOptionTo][0]=null;
	}
}

function fnkOptionSelect(intForm,intOption,intTEMP) {
	for (var i=0; i<document.forms[intForm][intOption].length; i++) {
		if (document.forms[intForm][intOption][i].value == intTEMP) {
			document.forms[intForm][intOption].selectedIndex=i;
			break;
		}
	}
}

function fnkElementBackground(objTEMP,strTEMP) {
	objTEMP.style.backgroundColor=strTEMP;
}

function isDigits(str) {
	for (var i=0; i<str.length; i++) {
		mychar=str.charAt(i);
		if (mychar<"0" || mychar>"9" || mychar == ",") {
			return false;
		}
	}
	return true;
}

function isNumber(str) {
	numdecs=0;
	for (var i=0; i<str.length; i++) {
		mychar=str.charAt(i);
		if ((mychar >= "0" && mychar <= "9") || mychar == "." || mychar == ",") {
			if (mychar == ".") {
				numdecs++;
			}
			} else {
			return false;
		}
	}
	if (numdecs>1) {
		return false;
	}
	return true;
}

function isInRange(str,num1,num2) {
	var i=parseInt(str);
	return((i >= num1) && (i <= num2));
}

function notNull(str) {
	if (str.length == 0 ) {
		return false;
		} else {
		return true;
	}
}

function notBlank(str) {
	for (var i=0; i<str.length; i++) {
		if (str.charAt(i) != " ") {
			return true;
		}
	}
	return false;
}

function isLength(objForm,intTEMP,strTEMP) {
	if (objForm.value.length == intTEMP) {
		return true;
		} else {
		objForm.focus();
		alert(strTEMP);
		return false;
	}
}

function stripNonDigits(str) {
	var newstring;
	for (var i=0; i<str.length; i++) {
		mychar=str.charAt(i);
		if (isDigits(mychar)) {
			newstring += mychar;
		}
	}
	return newstring;
}

function stripChars(str,chars) {
	var newstring;
	for (var i=0; i<str.length; i++) {
		mychar=str.charAt(i);
		if (chars.indexOf(mychar) == -1) {
			newstring += mychar;
		}
	}
	return newstring;
}

function validateString(objForm,max,s) {
	if (notNull(objForm.value) && notBlank(objForm.value) && objForm.value.length <= max) {
		return true;
		} else {
		alert(s);
		objForm.focus();
		return false;
	}
}

function validateMail(objForm,s) {
	/* The following variable tells the rest of the function whether or not	to verify that the address ends in a two-letter country or well-known TLD. 1 means check it, 0 means don't. */
	var checkTLD=1;
	/* The following is the list of known TLDs that an e-mail address must end with. */
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	/* The following pattern is used to check if the entered e-mail address	fits the user@domain format.  It also is used to separate the username from the domain. */
	var emailPat=/^(.+)@(.+)$/;
	/* The following string represents the pattern for matching all special	characters. We don't want to allow special characters in the address. These characters include ( ) < > @ , ; : \ " . [ ] */
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	/* The following string represents the range of characters allowed in a username or domainname.  It really states which chars aren't allowed.*/
	var validChars="\[^\\s" + specialChars + "\]";
	/* The following pattern applies if the "user" is a quoted string (in which case, there are no rules about which characters are allowed and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")";
	/* The following pattern applies for domains that are IP addresses, rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	/* The following string represents an atom (basically a series of non-special characters.) */
	var atom=validChars + '+';
	/* The following string represents one word in the typical username. For example, in john.doe@somewhere.com, john and doe are words. Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")";
	/* The following pattern describes the structure of the user */
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	/* The following pattern describes the structure of a normal symbolic domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	/* Finally, let's start trying to figure out if the supplied address is valid. Begin with the coarse pattern to simply break up user@domain into different pieces that are easy to analyze. */
	var matchArray=objForm.value.match(emailPat);
	if (matchArray==null) {
		/* Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address. */
		//alert("Email address seems incorrect (check @ and .'s)");
		alert(s);
		objForm.focus();
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	/* Start by checking that only basic ASCII characters are in the strings (0-127). */

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			//alert("Ths username contains invalid characters.");
			alert(s);
			objForm.focus();
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			//alert("Ths domain name contains invalid characters.");
			alert(s);
			objForm.focus();
			return false;
		}
	}

	/* See if "user" is valid */

	if (user.match(userPat)==null) {
		//alert("The username doesn't seem to be valid.");
		alert(s);
		objForm.focus();
		return false;
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. */

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				//alert("Destination IP address is invalid!");
				alert(s);
				objForm.focus();
				return false;
			}
		}
		return true;
	}

	/* Domain is symbolic name.  Check if it's valid. */

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			//alert("The domain name does not seem to be valid.");
			alert(s);
			objForm.focus();
			return false;
		}
	}

	/* domain name seems valid, but now make sure that it ends in a known top-level domain (like com, edu, gov) or a two-letter word, representing country (uk, nl), and that there's a hostname preceding the domain or country. */

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		//alert("The address must end in a well-known domain or two letter " + "country.");
		alert(s);
		objForm.focus();
		return false;
	}

	/* Make sure there's a host name preceding the domain. */

	if (len<2) {
		//alert("This address is missing a hostname!");
		alert(s);
		objForm.focus();
		return false;
	}

	/* If we've gotten this far, everything's valid! */
	return true;
}

// Functions for validating numerical input.

var STATECODES="AL/AK/AZ/AR/CA/CO/CT/DE/DC/FL/GA/HI/ID/IL/IN/IA/KS/LA/ME/MD/MA/MI/MN/MS/MO/MT/NV/NH/NJ/NM/NY/NC/ND/OH/OK/OR/PA/PR/RI/SC/TN/TX/UT/VT/VA/WA/WV/WI/WY"

function isStateCode(str) {
	if (STATECODES.indexOf(str.toUpperCase()) != -1 && str.indexOf("/") == -1) {
		return true;
	 	} else {
		return false;
	}
}

function validateZip(objForm,intMin,intMax,strTEMP) {
	if (notNull(objForm.value)) {
		if (isInRange(objForm.value,intMin,intMax)) {
			return true;
		}
	}
	objForm.focus();
	alert(strTEMP);
	return false;
}

// *** //

function fnkFilenamesShow(intX,intY) {
	for (var i=0; i<document.forms[1].length; i++) {
		if (document.forms[1][i].selectedIndex != -1) {
			fnkPopup("/filer/?id="+document.forms[1][i][document.forms[1][i].selectedIndex].value,intX,intY,1);
			return true;
		}
	}
	return false;
}

function fnkFilenamesEdit() {
	for (var i=0; i<document.forms[1].length; i++) {
		if (document.forms[1][i].selectedIndex != -1) {
			document.forms[1].action="/filer/rediger.asp";
			return true;
		}
	}
	alert("Vælg venligst en fil.");
	return false;
}

function fnkFilenamesDelete() {
	for (var i=0; i<document.forms[1].length; i++) {
		if (document.forms[1][i].selectedIndex != -1) {
			if (confirm("Er du sikker på at du vil slette \""+document.forms[1][i][document.forms[1][i].selectedIndex].text+"\"?")) {
				document.forms[1].action="/filer/slet.asp";
				return true;
			}
		}
	}
	return false;
}

function fnkFilenamesSelectionRemove(objTEMP) {
	for (var i=0; i<document.forms[1].length; i++) {
		if (document.forms[1][i]) {
			if (document.forms[1][i].name != objTEMP.name) {
				document.forms[1][i].selectedIndex=-1;
			}
			} else {
			break;
		}
	}
}

function fnkConfirm(strTEMP) {
	if (!confirm(strTEMP)) {
		return false;
	}
}

function fnkHousesOpenHouseEdit() {
	if (document.forms[1][2].selectedIndex == -1) {
		return false;
	}
}

function fnkHousesOpenHouseDelete() {
	if (document.forms[1][2].selectedIndex>-1) {
		if (confirm("Er du sikker på at du vil slette denne dato?")) {
			document.forms[1].action="/ejendom/aabenthus/slet.asp";
			return true;
		}
	}
	return false;
}

function fnkUsersValidate() {
	if (!validateMail(document.forms[1]["Email"],"Ugyldig email adresse indtastet.")) {
		return false;
	}

	if (document.forms[1]["Username"].value == "" || document.forms[1]["Password"].value == "") {
		alert("Brugernavn og kodeord skal udfyldes.");
		return false;
	}

	if (document.forms[1]["Password"].value != document.forms[1]["PasswordValidate"].value) {
		alert("Kodeordene stemmer ikke overens.");
		return false;
	}
}

function fnkUsersCatalog() {
	if (!validateMail(document.forms[1]["Username"],"Ugyldig email adresse indtastet.")) {
		return false;
	}

	if (document.forms[1]["Password"].value == "" || document.forms[1]["Password"].value != document.forms[1]["PasswordValidate"].value) {
		alert("Kodeordene stemmer ikke overens.");
		return false;
	}
}

function fnkUsersDelete() {
	if (confirm("Er du sikker på at du vil slette denne bruger?")) {
		document.forms[1].action="/admin/brugere/sletadministration.asp";
		document.forms[1][1].value=1;
		document.forms[1].submit();
		return true;
	}
	return false;
}

function fnkUsersMySaleInsert() {
	if (document.forms[1]["Username"].value == "" || document.forms[1]["Password"].value == "") {
		alert("Brugernavn og kodeord skal udfyldes.");
		return false;
	}
}

function fnkUsersMySaleDelete() {
	if (document.forms[1][5].selectedIndex>0) {
		if (confirm("Er du sikker på at du vil slette brugeren \""+document.forms[1][7].value+"\"?")) {
			document.forms[1][4].value=1;
			return true;
		}
	}
	return false;
}

function fnkCaseNumberText(objTEMP) {
	var strTEMP="Sagsnummer";

	switch (objTEMP.value) {
		case strTEMP:
		objTEMP.value="";
		break;
		case "":
		objTEMP.value=strTEMP;
	}
}

function fnkContact() {
	return (validateMail(document.forms[1][3],"Ugyldig email adresse indtastet.") && validateString(document.forms[1][4],255,"Du skal skrive en besked."));
}

function fnkHousesDelete() {
	if (confirm("Er du sikker på at du vil slette denne ejendom samt alle tilknyttede mySale brugere?")) {
		document.forms[1].action="/erhverv/slet.asp";
		document.forms[1].submit();
		return true;
	}
	return false;
}

function fnkHousesCatalogDelete() {
	if (confirm("Er du sikker på at du vil slette dette emne?")) {
		document.forms[1].action="/kartotek/slet.asp";
		return true;
	}
	return false;
}

function fnkHousesSelect() {
	if (document.forms[2][0].value>0) {
		document.forms[2].action="/erhverv/ejendom.asp";
		document.forms[2].submit();
	}
}

function fnkPageReset() {
	document.forms[1]["page"].value=0;
}