window.onload = function () {
	document.forms["kontakt"].onsubmit = valider;
}

function valider() {
	document.strMelding = "";
	document.objForsteFelt = null;
	document.erFeil = false;
	var objSkjema = document.forms["kontakt"];

	// Setter alle input-elementer til standard bakgrunn:
	var colInputs = objSkjema.getElementsByTagName("INPUT");
	for (var i = 0, j = colInputs.length; i < j; i++) {
		colInputs[i].className = "";
	}
	
	// Sjekk feltene:
	sjekkBlanktFelt(objSkjema["email"], "Email-adresse");
	sjekkEmailAdr(objSkjema["email"], "Email-adresse");

	// Felter som har label med classname "oblig" skal ikke være blanke:
	var colLabels = objSkjema.getElementsByTagName("LABEL");
	var strLabelFor
	for (var i = 0, j = colLabels.length; i < j; i++) {
		if (colLabels[i].className == "oblig") {
			strFeltnavn = colLabels[i].htmlFor
			sjekkBlanktFelt(objSkjema[strFeltnavn], strFeltnavn.substring(0, 1).toUpperCase() + strFeltnavn.substring(1));
		}
	}

	var objFeilDiv = getelem("feildiv");
	
	if (document.erFeil) {
		// Feil er funnet
		if(!objFeilDiv) {
			//Dersom ikke Div med feilmelding finnes, lag den:
			objFeilDiv = document.createElement("div");
			var objFeilP = document.createElement("p");
			getelem("idartikkel").insertBefore(objFeilDiv, objSkjema);
			objFeilDiv.className = "senter";
			objFeilDiv.id = "feildiv";
			objFeilDiv.appendChild(objFeilP);
			objFeilP.className = "feilmelding";
		}
		else { var objFeilP = objFeilDiv.firstChild; }
		objFeilP.innerHTML = document.strMelding;
		
		document.objForsteFelt.focus();
		return false;
	}
	// Ingen feil funnet
	if(objFeilDiv) {
		getelem("idartikkel").removeChild(objFeilDiv);  // fjern feilmeldingen, pga bruker kan klikke "tilbake" etter innsendt skjema
	}
	return true;
}

function sjekkBlanktFelt(objFelt, strNavn) {
	if (objFelt.value == "") {
		document.strMelding += "<span class='felt'>" + strNavn + "</span>: Dette feltet m&aring; fylles ut<br />";
		prosesserFeil(objFelt);
	}
}

function sjekkEmailAdr(objFelt, strNavn) {
		// Lokal del: evnt punktum, minst ett tegn før og etter hvert punktum, kun alfanum samt _+-
		// Domenedel: minst ett punktum, minst to tegn før og etter hvert punktum, kun alfanum samt -
		//	 men kan ikke starte eller slutte med -
		//	 Toppdomenet (sist) kan kun inneholde alfa-tegn

	if (objFelt.value != "" && !objFelt.value.match(/^([\w+-]+\.)*[\w+-]+@([\dA-Z][\dA-Z-]*[\dA-Z]\.)+[A-Z]{2,}$/i)) {
		document.strMelding += "<span class='felt'>" + strNavn + "</span>: Dette er ikke en gyldig email-adresse<br />";
		prosesserFeil(objFelt);
	}
}

function prosesserFeil(objFelt) {
	if (!document.objForsteFelt) { document.objForsteFelt = objFelt; }
	document.erFeil = true;
	objFelt.className = "feil";
}

function getelem(strElement) { return document.getElementById(strElement); }
