var globalErrorsId="global_errors";var fieldErrorIdSuffix="_error";var cancelForm=false;if(!Array.prototype.push){Array.prototype.push=function(){var b=this.length;
for(var a=0;a<arguments.length;a++){this[b+a]=arguments[a]}return this.length}}if(!Function.prototype.apply){Function.prototype.apply=function(object,parameters){var parameterStrings=new Array();
if(!object){object=window}if(!parameters){parameters=new Array()}for(var i=0;i<parameters.length;i++){parameterStrings[i]="parameters["+i+"]"
}object.__apply__=this;var result=eval("object.__apply__("+parameterStrings.join(", ")+")");object.__apply__=null;
return result}}var ValangValidator=function(a,b,c){this.name=a;this.rules=c;this.form=this._findForm(a);
if(b){this._installSelfWithForm()}};ValangValidator.prototype={validate:function(){return this._validateAndReturnFailedRules().length>0
},validateAndShowFeedback:function(){var a=this._validateAndReturnFailedRules();if(a.length>0){this.showValidationFeedback(a)
}return a.length===0},showValidationFeedback:function(e){var b=new Array();for(var d=0;d<e.length;d++){var a=e[d].field+fieldErrorIdSuffix;
var h=document.getElementById(a);if(h!=null){h.innerHTML=e[d].getErrorMessage()}else{b.push(e[d])}}var c=document.getElementById(globalErrorsId);
if(c!=null){var g=document.createElement("ul");for(var d=0;d<b.length;d++){var k=document.createElement("li");
k.innerHTML=b[d].getErrorMessage();g.appendChild(k)}c.appendChild(g)}else{var j="";for(var d=0;d<b.length;
d++){j=j+b[d].getErrorMessage()+"\n"}alert(j)}var f=this.form.getFieldsWithName(e[0].field);if(f.length>0){f[0].activate()
}},_findForm:function(a){var c=document.getElementById(a);if(!c||c.tagName.toLowerCase()!="form"){c=document.getElementById(a+"ValangValidator")
}if(!c||c.tagName.toLowerCase()!="script"){throw"unable to find form with ID '"+a+"' or script element with ID '"+a+"ValangValidator'"
}var b=c;while(c&&c.tagName.toLowerCase()!="form"){c=c.parentNode}if(!c){throw"unable to find FORM element enclosing element with ID '"+b.id+"'"
}return new ValangValidator.Form(c)},_installSelfWithForm:function(){var c=window.onload;var b=this.form.formElement.onsubmit;
var a=this;window.onload=function(){ValangValidator.Logger.log("Installing ValangValidator '"+a.name+"' as onsubmit handler");
try{if(c){c()}}finally{a.form.formElement.onsubmit=function(){if(!cancelForm&&(!b||b())){return a.validateAndShowFeedback()
}}}}},_validateAndReturnFailedRules:function(){this._clearGlobalErrors();ValangValidator.Logger.push("Starting validation");
var a=new Array();for(var b=0;b<this.rules.length;b++){var c=this.rules[b];this._clearErrorIfExists(c.field);
ValangValidator.Logger.push("Evaluating rule for field ["+c.field+"]");c.form=this.form;if(!c.validate()){ValangValidator.Logger.pop("Failed");
a.push(c)}else{ValangValidator.Logger.pop("Passed")}}ValangValidator.Logger.pop("Finshed - "+a.length+" failed rules");
return this._giveRulesSameOrderAsFormFields(a)},_clearErrorIfExists:function(b){var a=document.getElementById(b+fieldErrorIdSuffix);
if(a!=null){a.innerHTML=""}},_clearGlobalErrors:function(){var a=document.getElementById(globalErrorsId);
if(a!=null){a.innerHTML=""}},_giveRulesSameOrderAsFormFields:function(c){var e=new Array();var a=this.form.getFields();
for(var d=0;d<a.length;d++){var f=a[d].name;for(var b=0;b<c.length;b++){if(c[b]&&c[b].field==f){e.push(c[b]);
c[b]=null}}}for(var d=0;d<c.length;d++){if(c[d]){e.push(c[d])}}return e}};ValangValidator.Logger={log:function(c){var a=document.getElementById("valangLogDiv");
if(a){var b=a.innerHTML;a.innerHTML=this._indentString("&nbsp;")+c+(b.length>0?"<br>"+b:"")}},push:function(a){this.log(a);
this._indent++},pop:function(a){this._indent--;this.log(a)},logFunctionCalls:function(b){for(var a in b){var c=b[a];
if(typeof c=="function"){b[a]=this._wrapFunctionCallWithLog(a,c)}}},_indent:0,_indentString:function(c){var a="";
for(var b=0;b<this._indent*5;b++){a+=c}return a},_wrapFunctionCallWithLog:function(a,b){return function(){ValangValidator.Logger.push("calling "+a+"("+arguments[0]+", "+arguments[1]+")");
try{var c=b.apply(this,arguments)}catch(d){ValangValidator.Logger.pop("threw "+d);throw d}ValangValidator.Logger.pop("result = "+c);
return c}}};ValangValidator.Form=function(a){this.formElement=a};ValangValidator.Form.prototype={getValue:function(d){var a=this.getFieldsWithName(d);
var c=new Array();for(var b=0;b<a.length;b++){if(a[b].getValue()){c.push(a[b].getValue())}}if(c.length==1){return c[0]
}else{if(c.length>1){return c}}},getFieldsWithName:function(e){var d=new Array();var a=this.getFields();
for(var b=0;b<a.length;b++){var c=a[b];if(c.name==e){d.push(c)}}return d},getFields:function(){var a=new Array();
var c=this.formElement.elements;for(var b=0;b<c.length;b++){a.push(new ValangValidator.Field(c[b]))}return a
},disable:function(){var a=this.getFields();for(var b=0;b<a.length;b++){a[b].disable()}},enable:function(){var a=this.getFields();
for(var b=0;b<a.length;b++){a[b].enable()}},focusFirstElement:function(c){var a=this.getFields();for(var b=0;
b<a.length;b++){var d=a[b];if(d.type!="hidden"&&!d.isDisabled()){d.activate();break}}}};ValangValidator.Field=function(a){this.id=a.id;
this.name=a.name;this.type=a.type.toLowerCase();this.tagName=a.tagName.toLowerCase();this.fieldElement=a;
if(ValangValidator.Field.ValueGetters[this.tagName]){this.getValue=ValangValidator.Field.ValueGetters[this.tagName]
}else{if(this.tagName=="input"){switch(this.type){case"submit":case"hidden":case"password":case"text":this.getValue=ValangValidator.Field.ValueGetters.textarea;
break;case"checkbox":case"radio":this.getValue=ValangValidator.Field.ValueGetters.inputSelector;break;
default:throw"unexpected input field type '"+this.type+"'"}}else{}}};ValangValidator.Field.prototype={clear:function(){this.fieldElement.value=""
},focus:function(){this.fieldElement.focus()},select:function(){if(this.fieldElement.select){this.fieldElement.select()
}},activate:function(){this.focus();this.select()},isDisabled:function(){return element.disabled},disable:function(){element.blur();
element.disabled="true"},enable:function(){element.disabled=""}};ValangValidator.Field.ValueGetters={inputSelector:function(){if(this.fieldElement.checked){return this.fieldElement.value
}},textarea:function(){return this.fieldElement.value},select:function(){var d="";if(this.fieldElement.type=="select-one"){var a=this.fieldElement.selectedIndex;
if(a>=0){d=this.fieldElement.options[a].value}}else{d=new Array();for(var b=0;b<element.length;b++){var c=this.fieldElement.options[b];
if(c.selected){d.push(c.value)}}}return d}};ValangValidator.Rule=function(d,b,c,a){this.field=d;this.valang=b;
this.errorMessage=c;this.validate=a};ValangValidator.Rule.prototype={getErrorMessage:function(){return this.errorMessage
},getPropertyValue:function(a,b){return this.form.getValue(a)},_assertHasLength:function(a){if(!a.length){throw"value '"+a+"' does not have length"
}},_assertLength:function(b,a){this._assertHasLength(b);if(b.length!=a){throw"value's length != '"+a+"'"
}},_throwError:function(a){throw a},_makeCompatible:function(a,e){try{this._forceNumber(e);return this._forceNumber(a)
}catch(b){}var c=typeof a;var d=typeof e;if(c==d){return a}else{if(c=="number"||d=="number"){return this._forceNumber(a)
}else{throw"unable to convert ["+a+"] and ["+e+"] to compatible types"}}},_forceNumber:function(value){if(typeof value!="number"){try{var newValue=eval(value.toString())
}catch(ex){}if(newValue&&typeof newValue=="number"){return newValue}throw"unable to convert value ["+value+"] to number"
}return value},lengthOf:function(a){return(a!=null)?a.length:0},lowerCase:function(a){return(a!=null)?a.toLowerCase():null
},upperCase:function(a){return(a!=null)?a.toUpperCase():null},equals:function(a,b){if((a==null&&b!=null)||(b==null&&a!=null)){return false
}if(a==b){return true}a=this._makeCompatible(a,b);b=this._makeCompatible(b,a);return a===b},lessThan:function(a,b){a=this._makeCompatible(a,b);
b=this._makeCompatible(b,a);return a<b},lessThanOrEquals:function(a,b){a=this._makeCompatible(a,b);b=this._makeCompatible(b,a);
return a<=b},moreThan:function(a,b){a=this._makeCompatible(a,b);b=this._makeCompatible(b,a);return a>b
},moreThanOrEquals:function(a,b){a=this._makeCompatible(a,b);b=this._makeCompatible(b,a);return a>=b},inFunc:function(a,d){for(var b=0;
b<d.length;b++){var c=d[b];if(a==c){return true}}return false},between:function(a,b){this._assertLength(b,2);
a=this._makeCompatible(a,b[0]);b[0]=this._makeCompatible(b[0],a);b[1]=this._makeCompatible(b[1],a);return a>=b[0]&&a<=b[1]
},nullFunc:function(a,b){return a===null||typeof a=="undefined"},hasText:function(a,b){return a&&a.replace(/\s/g,"").length>0
},hasLength:function(a,b){return a&&a.length>0},isBlank:function(a,b){return !a||a.length===0},isWord:function(a,b){return a&&a.replace(/\s/g,"")==a
},isUpper:function(a,b){return a&&a.toUpperCase()==a},isLower:function(a,b){return a&&a.toLowerCase()==a
},add:function(a,b){return this._forceNumber(a)+this._forceNumber(b)},divide:function(a,b){return this._forceNumber(a)/this._forceNumber(b)
},modulo:function(a,b){return this._forceNumber(a)%this._forceNumber(b)},multiply:function(a,b){return this._forceNumber(a)*this._forceNumber(b)
},subtract:function(a,b){return this._forceNumber(a)-this._forceNumber(b)},RegExFunction:function(b,a){if(!a.match){throw"don't know how to apply regexp to value '"+a+"'"
}return a.match(b)[0]==a},EmailFunction:function(b){var a=/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/;
return a.test(b)}};

var unsavedChanges=false;function lastCheck(){if(unsavedChanges){return"Det er gjort endringer på siden som ikke er lagret.\n"
}}function confirmDelete(){var a=confirm('Trykk "OK" for å bekrefte at du vil slette');if(a){bCancel=true;
unsavedChanges=false}return a}function confirmGetStandardText(){var a=confirm('Standardteksten vil erstatte din egen tekst.\nTrykk "OK" for å fortsette.');
if(a){unsavedChanges=false}return a}var allChecked="false";function checkAll(b,a){var c=a;var d="";if(allChecked=="true"){for(i=0;
i<c.length;i++){c[i].checked=false}allChecked="false";d="Merk alle";c.checked=false}else{for(i=0;i<c.length;
i++){c[i].checked=true}allChecked="true";d="Fjern alle";c.checked=true}b.value=d}window.onbeforeunload=lastCheck;
