<!--
/*
Åpner nytt vindu
*/
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function checkBrowser(NSvers, IEvers)
{
   var version = parseFloat(navigator.appVersion);

   if (navigator.appName.indexOf('Netscape') != -1) {
      if (version >= NSvers) {browser = 1;}
      else {browser = 0;}
   } else if (navigator.appName.indexOf('Microsoft') != -1) {
      if (version >= IEvers) {browser = 1;}
      else {browser = 0;}
   } else {
      browser = 0;}
	
   fix(browser);
}
/* Velg i en select eller et radiosett */
function FM_SelectByValue(cSelect,cValue){
	var sel = FM_findObj(cSelect);
	if(sel){
		if(sel.options){
			for(var i=0;i<sel.options.length;i++){
				if(sel.options[i].value==cValue)sel.options[i].selected=true;		
			}
		}else{
			for(var i=0;i<sel.length;i++){
				if(sel[i].value==cValue)sel[i].checked=true;		
			}
		}
	}
}
function FM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=FM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


var FormHandler = Class.create();
FormHandler.prototype = {

	initialize: function(options)
	{
		this.options = Object.extend( 
        {  
			FormId    : 'formData',
			ModusId   : 'cModus',
			errorStyle: 'errorfield',
			errorProp : 'error',
			onSubmit  : null
        }, options || {});
		
		this.FormValid = true;
		this.Submitted = false;
		this.FormObject  = $(this.options.FormId)
		this.Modus = $(this.options.ModusId)
		this.FormObject.onsubmit = this.options.onSubmit||this.onSubmit.bind(this)
	},
	
	Submit: function(cModus)
	{
		if(this.FormObject && this.Modus && cModus) {
			switch(cModus.toLowerCase())
			{
				case 'lagre': this.Validate(); break;
				default:      this.FormValid = true; this.Submitted = false; break;
			}
			window.status = 'Skjema korrekt: ' + (this.FormValid?'Ja':'Nei') + ' / Skjema sendt: ' + (this.Submitted?'Ja':'Nei')
			if(this.FormValid == true && this.Submitted == false) {
				this.Modus.value = cModus;
				this.FormObject.submit();
				this.Submitted = true;		
			}
		}
	},
	
	Validate: function(fld)
	{
		if(fld) {
			if(Element.hasClassName(fld,'required'))this.CheckRequired(fld)
			if(Element.hasClassName(fld,'mail'))this.CheckMail(fld)
		} else {
			this.FormValid = true;
			this.Elements = []
			// check inputs
			$$('#'+this.FormObject.id+' input').each(function(fld){fld = $(fld);this.Elements.push(fld)}.bind(this))		
			$$('#'+this.FormObject.id+' select').each(function(fld){fld = $(fld);this.Elements.push(fld)}.bind(this))		
			$$('#'+this.FormObject.id+' textarea').each(function(fld){fld = $(fld);this.Elements.push(fld)}.bind(this))		
			this.Elements.each(function(fld){
					fld = $(fld);
					if(Element.hasClassName(fld,'required'))this.CheckRequired(fld)
					if(Element.hasClassName(fld,'mail'))this.CheckMail(fld)
				}.bind(this)
			)
		}
	},
	
	onSubmit: function()
	{
		return (!this.Submitted && this.FormValid)
	},
	
	CheckRequired: function(fld)
	{
		Element.removeClassName(fld,this.options.errorStyle)
		this.HideError(fld)
		if(fld.tagName.toLowerCase()=='select')
		{
			if(fld.options[fld.options.selectedIndex].value==''){
				this.FormValid = false;
				Element.addClassName(fld,this.options.errorStyle)
				this.ShowError(fld)
			}
		}
		else
		{
			if(fld.value==''){
				this.FormValid = false;
				Element.addClassName(fld,this.options.errorStyle)
				this.ShowError(fld)
			}
		}
	},
	
	CheckMail: function(fld)
	{
		Element.removeClassName(fld,this.options.errorStyle)
		this.HideError(fld)
		var mail_notvalid = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
		var mail_valid    = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/;
		var isMail = (!mail_notvalid.test(fld.value) && mail_valid.test(fld.value))
		if(fld.value==''||!isMail){
			this.FormValid = false;
			Element.addClassName(fld,this.options.errorStyle)
			this.ShowError(fld)
		}
	},
	
	ShowError: function(fld)
	{
		if(this.options.errorProp)	{
			if($('errormsg_'+fld.name)) {
				Element.show($('errormsg_'+fld.name))	
			} else {
				if(fld.getAttribute(this.options.errorProp))
				new Insertion.After(fld,'<span id="errormsg_'+fld.name+'" class="'+this.options.errorStyle+'">'+(fld.getAttribute(this.options.errorProp)||'')+'</span>')
			}
		}
	},
	
	HideError: function(fld)
	{
		if(this.options.errorProp)	{
			if($('errormsg_'+fld.name))Element.hide($('errormsg_'+fld.name))	
		}	
	}
	
}
//-->