// form validation function //
function validate(form)
{
	var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
	var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
	var messageRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
	var tittel = form.tittel.value;
	var email = form.email.value;

	if(tittel == 'Fiffig løsning')
	{
		var navn = form.navn.value;
		var firma = form.firma.value;
		var fiffiglosning = form.fiffiglosning.value;
  
		if(email == "") { inlineMsg('email','<strong>Feilmelding</strong><br />E-postadresse mangler!',2); return false; }
		if(!email.match(emailRegex)) { inlineMsg('email','<strong>Feilmelding</strong><br />Ugyldig e-postadresse!',2); return false; }
		if(navn == "") { inlineMsg('navn','<strong>Feilmelding</strong><br />Navn mangler!',2); return false; }
		if(!navn.match(nameRegex)) { inlineMsg('navn','<strong>Feilmelding</strong><br />Ugyldig navn!',2); return false; }
		//if(firma == "") { inlineMsg('firma','<strong>Feilmelding</strong><br />Firma mangler!',2); return false; }
		//if(!firma.match(nameRegex)) { inlineMsg('firma','<strong>Feilmelding</strong><br />Ugyldig firma!',2); return false; }
		if(fiffiglosning == "") { inlineMsg('fiffiglosning','<strong>Feilmelding</strong><br />Melding mangler!'); return false; }
		if(fiffiglosning.match(messageRegex)) { inlineMsg('fiffiglosning','<strong>Feilmelding</strong><br />Meldingen inneholder ugyldige tegn!'); return false; }
		return true;
	}

	if(tittel == 'Spør vår ekspert')
	{
		var sporsmal = form.sporsmal.value;
  
		if(email == "") { inlineMsg('email','<strong>Feilmelding</strong><br />E-postadresse mangler!',2); return false; }
		if(!email.match(emailRegex)) { inlineMsg('email','<strong>Feilmelding</strong><br />Ugyldig e-postadresse!',2); return false; }
		if(sporsmal == "") { inlineMsg('sporsmal','<strong>Feilmelding</strong><br />Melding mangler!'); return false; }
		if(sporsmal.match(messageRegex)) { inlineMsg('sporsmal','<strong>Feilmelding</strong><br />Meldingen inneholder ugyldige tegn!'); return false; }
		return true;
	}

}

// START OF MESSAGE SCRIPT //

var MSGTIMER 	= 20;
var MSGSPEED 	= 5;
var MSGOFFSET 	= 3;
var MSGHIDE 	= 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide)
{
	var msg;
	var msgcontent;
	
	if(!document.getElementById('msg'))
	{
		msg = document.createElement('div');
		msg.id = 'msg';
		msgcontent = document.createElement('div');
		msgcontent.id = 'msgcontent';
		document.body.appendChild(msg);
		msg.appendChild(msgcontent);
		msg.style.filter = 'alpha(opacity=0)';
		msg.style.opacity = 0;
		msg.alpha = 0;
	}
	else
	{
		msg = document.getElementById('msg');
		msgcontent = document.getElementById('msgcontent');
	}

	msgcontent.innerHTML = string;
	msg.style.display = 'block';
	var msgheight = msg.offsetHeight;
	var targetdiv = document.getElementById(target);
	targetdiv.focus();
	var targetheight = targetdiv.offsetHeight;
	var targetwidth = targetdiv.offsetWidth;
	var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
	var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
	msg.style.top = topposition + 'px';
	msg.style.left = leftposition + 'px';
	clearInterval(msg.timer);
	msg.timer = setInterval("fadeMsg(1)", MSGTIMER);

	if(!autohide)
	{
		autohide = MSGHIDE;  
	}
	
	window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg)
{
	var msg = document.getElementById('msg');

	if(!msg.timer)
	{
		msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
	}
}

// face the message box //
function fadeMsg(flag)
{
	if(flag == null)
	{
		flag = 1;
	}

	var msg = document.getElementById('msg');
	var value;

	if(flag == 1)
	{
		value = msg.alpha + MSGSPEED;
	}
	else
	{
		value = msg.alpha - MSGSPEED;
	}

	msg.alpha = value;
	msg.style.opacity = (value / 100);
	msg.style.filter = 'alpha(opacity=' + value + ')';

	if(value >= 99)
	{
		clearInterval(msg.timer);
		msg.timer = null;
	}
	else if(value <= 1)
	{
		msg.style.display = "none";
		clearInterval(msg.timer);
	}
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target)
{
	var left = 0;

	if(target.offsetParent)
	{
		while(1)
		{
			left += target.offsetLeft;
			if(!target.offsetParent)
			{
				break;
			}
			target = target.offsetParent;
		}
	}
	else if(target.x)
	{
		left += target.x;
	}

	return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target)
{
	var top = 0;

	if(target.offsetParent)
	{
		while(1)
		{
			top += target.offsetTop;
			if(!target.offsetParent)
			{
				break;
			}
			target = target.offsetParent;
		}
	}
	else if(target.y)
	{
		top += target.y;
	}

	return top;
}

// preload the arrow //
if(document.images)
{
	arrow = new Image(7,80); 
	arrow.src = "images/msg_arrow.gif"; 
}
