
// Variabel som håller reda på om webbläsaren stöder DOM1/W3CDOM
var W3CDOM = (document.getElementById) ? true : false;

/*
# För att validera formulär, ange "return validateForm(this)" i onsubmit-attributet för formuläret.
# För att kontrollera tomma fält, lägg in ett gömt formulärfält enligt följande modell:
#
# 	<input name="val_length_{fältnamn}" type="hidden" id="val_length_{fältnamn}" value="{felmeddelande}" />
#
# Där {fältnamn} är namnet på formulärfältet som ska kontrolleras. Det felmeddelande som visas bifogas 
# i value-attributet.
#
# För att kontrollera med reguljärt uttryck, lägg in ett gömt formulärfält enligt följande modell:
#
# 	<input name="val_regexp_{fältnamn}" type="hidden" id="val_regexp_{fältnamn}" value="{felmeddelande};;{reguljärt uttryck}" />
#
# Först kontrolleras tomma fält och endast när inga sådana finns kvar kollas fälten med reguljära uttryck. På det viset
# kan man lägga in båda typer av validering för ett fält utan att få dubbla felmeddelanden.
#
# (c) Kringelstan AB 2006
*/
function validateForm(form) {

	var el = form.elements;

	// Återställer bakgrundsfärg för alla fält
	for (i = 0; i < el.length; i++) {
		el[i].style.backgroundColor = '';
	}

	for (i = 0; i < el.length; i++) {

		// Kollar tomma fält
		if (el[i].id.substr(0,11) == 'val_length_') {

			check_el = form.elements[el[i].id.substr(11, el[i].id.length)];

			// Om fältet är tomt
			if (!check_el.value.length > 0) {

				alert(el[i].value);
				
				// Fokuserar det felande fältet och ändrar bakgrundsfärg
				check_el.focus();
				check_el.style.backgroundColor = 'lightyellow';

				return false;
			}

		// Om fältet ej är tomt kollas mot reguljärt uttryck
		} else if (el[i].id.substr(0,11) == 'val_regexp_') {

			check_el = form.elements[el[i].id.substr(11, el[i].id.length)];

			// Hoppar över kontrollen om fältet är tomt
			if (check_el.value.length == 0) {
				continue;
			}

			var regExpField = document.getElementById('val_regexp_'+check_el.name);
			if (regExpField) {
				// Tänk på att mönster som placeras i "new RegExp()" inte ska omgärdas av 
				// snedstreck och alla bakstreck måste föregås av ytterligare ett bakstreck
				var aTemp = regExpField.value.split(';;')
				var regexp = new RegExp(aTemp[1]);
				if (check_el.value.search(regexp) == -1) {

					alert(aTemp[0]);
					
					// Fokuserar det felande fältet och ändrar bakgrundsfärg
					check_el.focus();
					check_el.style.backgroundColor = 'lightyellow';

					return false;
				}
			}
		}
	}

	return true;
}

function limitTextfield(fieldToLimitId, countdownElementId, charLimit) {

var fieldToLimit = document.getElementById(fieldToLimitId);
	var countdownElement = document.getElementById(countdownElementId);

	if (fieldToLimit && countdownElement) {
		if (fieldToLimit.value.length > charLimit) {
			fieldToLimit.value = fieldToLimit.value.substring(0,charLimit);
		} else {
			countdownElement.innerHTML = (charLimit - fieldToLimit.value.length);
		}
	}
}

function setTextLimits() {

	for (i=0; i < document.forms.length; i++) {

		var form = document.forms[i];
		var el = document.forms[i].elements;
	
		for (i = 0; i < el.length; i++) {
	
			if (el[i].id.substr(0,6) == 'limit_') {

				fieldToLimitId = el[i].id.substr(6, el[i].id.length);

				// Note to self: Variabler som specificeras här kan inte användas
				// i funktionen som anges för onkeydown/onkeyup nedan

				document.getElementById(fieldToLimitId).onkeydown = function () {
					limitTextfield(this.id, this.id+'Countdown', document.getElementById('limit_'+this.id).value);
				};
				document.getElementById(fieldToLimitId).onkeyup = function () {
					limitTextfield(this.id, this.id+'Countdown', document.getElementById('limit_'+this.id).value);
				};
			}
		}
	}
}


function picPop(path) {
	window.open('/picpop.php?path='+path,'picpop','width=250,height=250,resizable=1,scrollbars=0')
}

function toggleVisibilityById(id) {

	if (!W3CDOM) return false;

	if (document.getElementById(id).style.display == 'none') {
		document.getElementById(id).style.display = 'block';
	} else {
		document.getElementById(id).style.display = 'none';
	}
}

// Funktion som går igenom alla länkar och sätter attributet "target" till "_blank".
// Istället för target="_blank" används sedan rel="_blank" i XHTML strict-dokument.
function externalLinks() {

	if (!W3CDOM) return false;

	var a_tags = document.getElementsByTagName("a");
	for (var i = 0; i < a_tags.length; i++) {
		var a = a_tags[i];
		if (a.getAttribute("href") && a.getAttribute("rel") == "_blank") {
			a.target = "_blank";
		}
	}
	var area_tags = document.getElementsByTagName("area");
	for (var i = 0; i < area_tags.length; i++) {
		var a = area_tags[i];
		if (a.getAttribute("href") && a.getAttribute("rel") == "_blank") {
		a.target = "_blank";
		}
	}
	return false;
}

function mailto(in1, in2) {

	out1 = '';
	for (i = in1.length - 1; i >= 0; i--) {
		out1 += in1.charAt(i);
	}
	out2 = '';
	for (i = in2.length - 1; i >= 0; i--) {
		out2 += in2.charAt(i);
	}
	window.open('mailto:'+out1+'@'+out2, '_self');
}
