/**
 * cn_validator_init
 *
 *********
 *
 * Denne funktion klargører validering af kontaktformularen,
 * ved at hente listen over obligatoriske felter og opsætte onsubmit-eventet.
 **********
 *
 * Må ikke benyttes uden accept af cygnet, kontakt Kristian Sørensen på 61307560 eller ks@cygnet.dk
 *
 *******
 */
function cn_validator_init(){
	// Indlæs listen over formularer
	var forms=document.getElementsByTagName('form');
	var i=forms.length; var j=i; var form=null;

	// Find den rigtige formular
	if(i>0)do{
		var tmp=forms[j-i];
		if(tmp&&tmp.action&&tmp.action.toLowerCase()=="http://scripts.dandomain.dk/formmail.asp"){
			var form=tmp;
			break;
		}
	}while(i--);
	forms=null;

	if(!form) return false;

	// Indlæs listen over felter
	var inputs=form.getElementsByTagName('input');
	var i=inputs.length; var j=i;

	// Find listen over obligatoriske felter
	if(i>0)do{
		if(inputs[j-i].name.toLowerCase()=="dfieldrequire"){
			var input=inputs[j-i];
			break;
		}
	}while(--i);
	inputs=null;

	// Gem info om de nødvendige felter
	form.validate_inputs=input.value;

	// Sørg for at felterne bliver udfyldt, når der postes
	if(document.attachEvent) form.attachEvent('onsubmit',cn_validator_submit);
	else form.addEventListener('submit',cn_validator_submit,false);
}

// Kør koden
if(document.attachEvent) window.attachEvent('onload',cn_validator_init);
else window.addEventListener('load',cn_validator_init,false);

/**
 * cn_validator_submit
 *
 *********
 *
 * Denne funktion køres ved onsubmit på formularen - og tjekker,
 * om alle obligatoriske felter er udfyldt.
 *
 *********
 *
 * param	event		e						Indeholder informationer om brugerens input.
 */
function cn_validator_submit(e){
	// Indlæs informationer om brugerens input
	var e=e||window.event;
	var src=e.srcElement||e.target;

	// Indlæs listen over nødvendige felter
	var required=src.validate_inputs.split(',');

	// Gennemgå felterne
	var inputs=src.getElementsByTagName('input');
	var i=inputs.length; var j=i; var error='';

	if(i>0)do{
		// Er feltet udfyldt?
		var tmp=inputs[j-i];
		if(cn_validator_check(required,tmp.name)&&!tmp.value){
			error+='\n- '+tmp.name;
		}
	}while(--i);

	// Hvis alle obligatoriske felter ikke er udfyldt, bliver brugeren gjort opmærksom på dette
	if(error){
		// Gør brugeren opmærksom på fejlen
		alert('Du mangler at udfylde f\u00F8lgende felter:<br>'+error);

		// Afbryd submit
		if(e.preventDefault) e.preventDefault();
		if(e.stopPropagation) e.stopPropagation();
		if(e.stop) e.stop();
		if(document.all&&e.keyCode) try{e.keyCode=0;}catch(e){}
		e.cancelBubble=true;
		e.returnValue=false;
	}
}

/**
 * cn_validator_check
 *
 *********
 *
 * Denne funktion tjekker, om et felt er obligatorisk.
 *
 *********
 *
 * param	array		arr						Angiv listen over obligatoriske felter.
 * param	string		key						Angiv navnet på feltet der skal tjekkes.
 */
function cn_validator_check(arr,key){
	// Tjek om feltet er obligatorisk
	var i=arr.length; var j=i; key=key.toLowerCase();
	if(i>0)do{
		if(arr[j-i].toLowerCase()==key) return true;
	}while(--i);

	// Feltet er ikke obligatorisk
	return false;
}


