
var doMarkRequired = true;

var reg = {
	correctCPR:			new RegExp("^((\\d{6})-(\\d{4})|)$")
	,recognizedCPR:		new RegExp("^(\\d{6})(\\d{4})$")
	,correctCVRPSE:		new RegExp("^((\\d{2}\\s?){3}\\d{2}|\\d(\\.?\\d{3}){3}|)$")
	,correctCPRCVR:		new RegExp("^((\\d{2}\\s?){3}\\d{2}|\\d{6}-?\\d{4}|)$")
	,recognizedCVRSE:	new RegExp("^(\\d{2})\\s?(\\d{2})\\s?(\\d{2})\\s?(\\d{2})\\s?$")
	,recognizedPnr:		new RegExp("^(\\d)\\.?(\\d{3})\\.?(\\d{3})\\.?(\\d{3})$")	
	,correctDate:		new RegExp("^(\\d{2}-\\d{2}-\\d{4}|)$")
	,correctTime:		new RegExp("^(\([0-2][0-9]:[0-5][0-9])|)$")
	,correctReg:		new RegExp("^\\d{4}$")
	,correctKonto:		new RegExp("^\\d{10}$")
	,recognizedKonto:	new RegExp("^(\\d{5,10})$")	
	,recognizedKontoReg:new RegExp("^\\d{4}-?\\d{6,10}$")
	,recognizedDate:	new RegExp("^(\\d{1,2})[\\./-]?(\\d{1,2})[\\./-]?((\\d{2}|\\d{4}))$")
	,recognizedTime:	new RegExp("^(\\d{1,2})[\\.;:-]?(\\d{2})$")
	,correctBelob:		new RegExp("^((\\d){1,3}(\\.\\d{3})*(,\\d\\d)|)$")
	,recognizedBelob:	new RegExp("^(\\d{1,3})\\.?(\\d{3})?\\.?(\\d{3})?\\.?(\\d{3})?\\.?(\\d{3})?(,\\d?\\d?)?$")
	,correctRequired:	new RegExp("^.+$")
	,correctReqText:	new RegExp("^(.|\n)+$")
	,correctInteger:	new RegExp("^(\\d+|)$")
	,correctInt10:		new RegExp("^(\\d{10}|)$")
	,correctFI:			new RegExp("^(\\d{8}|)$")
	,recognizedFI:		new RegExp("^(\\d{5,8})$")
	,correctCVR:		new RegExp("^((\\d{2}\\s?){3}\\d{2}|)$")
	,correctEmail:		new RegExp("^.+@.+\\.[a-z]+$")
};

function ValidationObj()
{

this.helpImage	='../images/2_help.gif';
this.helpTxt	='Hjælp til feltet. (Åbner nyt vindue).';
this.blankURL='blank.asp';

this.errorCodes = {

	date		: ["",	reg.correctDate],
	time		: ["",	reg.correctTime],
	required	: ["",	reg.correctRequired],
	reqText		: ["",	reg.correctReqText],
	integer		: ["",	reg.correctInteger],
	int10		: ["",	reg.correctInt10],
	fi			: ["",	reg.correctFI],
	cpr			: ["",	reg.correctCPR],
	cvr			: ["",	reg.correctCVR],
	se			: ["",	reg.correctCVR],
	cprcvr		: ["",	reg.correctCPRCVR],
	cvrpse		: ["",	reg.correctCVRPSE],
	belob		: ["",	reg.correctBelob],
	kontonr		: ["",	reg.correctKonto],
	reg			: ["",	reg.correctReg],
	kontoreg	: ["",	reg.recognizedKontoReg],
	email		: ["",	reg.correctEmail],
	only1		: ["",	new RegExp("")],
	limit		: ["",	new RegExp("")]
}

this.errorCodes['date'][0]		="Du har ikke indtastet datoen korrekt. Skriv datoen som dd-mm-åååå f.eks. " + getDato(7);
this.errorCodes['time'][0]		="Du har ikke indtastet klokkeslettet korrekt. Skriv klokkeslettet som tt:mm f.eks. 15:30";
this.errorCodes['required'][0]	="Feltet skal være udfyldt";
this.errorCodes['reqText'][0]	="Feltet skal være udfyldt";
this.errorCodes['integer'][0]	="Feltet må kun indeholde tal"
this.errorCodes['int10'][0]		="Du skal indtaste 10 cifre i feltet";
this.errorCodes['fi'][0]		="Et FI-nummer består af 8 cifre, fx 87654321";
this.errorCodes['cpr'][0]		="Et CPR-nummer består af 10 cifre, fx 123456-1234";
this.errorCodes['cvr'][0]		="Et CVR-nummer består af 8 cifre, fx 12 34 56 78";
this.errorCodes['se'][0]		="Et SE-nummer består af 8 cifre, fx 12 34 56 78";
this.errorCodes['cprcvr'][0]	="Et CPR-nummer består af 10 cifre, fx 123456-1234. Et CVR-nummer består af 8 cifre, fx 12 34 56 78";
this.errorCodes['cvrpse'][0]	="Feltet skal indeholde enten 8 cifre (CVR-nummer/SE-nummer) eller 10 cifre (P-nummer)";
this.errorCodes['belob'][0]		="Beløb skal skrives på denne måde: 1.234,00"; 
this.errorCodes['kontonr'][0]	="Et kontonummer består af 10 cifre";
this.errorCodes['reg'][0]		="Et registreringsnummer består af 4 cifre";
this.errorCodes['kontoreg'][0]	="Indtast 4 cifre efterfulgt af 10 cifre";
this.errorCodes['email'][0]		="E-mail-adressen skal have formatet 'navn@mail.dk'";



this.pageValidations = new Array();
this.pageServerErrors= new Array();
this.helpIcons = new Array();
this.W3CDOM = (document.getElementsByTagName && document.createElement);
this.validForm=null;
this.firstError=null;
this.validateAtLeastOneFields=null;
this.overridevalidation=false;
this.form=document.forms[1];
this.modalWin=null;
this.modalLinkClicks=[];
this.focusfieldID=null;
this.jumpRegnrField=null;
this.jumpKontonrField=null;



addEvent(window,'load',function(){Validation.init(Validation);});

this.init = function(thisObj)
{
	if (doMarkRequired == true) {
		thisObj.markRequired();
	}
	thisObj.setHelpIcons();
	thisObj.setOnchangeFunc(thisObj.form);
	thisObj.form.onsubmit=thisObj.validateFormOnsubmit;
	thisObj.setServerErrors();
	thisObj.focusfield();
}



this.focusfield = function()
{
	var o;
	if(this.firstError)
		o=this.firstError;
	else
		o=gE(this.focusfieldID);
	if(o) o.focus();
}
this.setHelpIcons = function()
{

	var x = this.form.elements;
	var y = this.helpIcons;
	var cn= 'help pointer';
	var i,j,im;

	for (i=0;i<y.length;i++)	
	{
		
		for (j=0;j<x.length;j++)
		{
			if(y[i][0]==x[j].id)
			{
				
				im=document.createElement('img');
				im.className = cn;
				im.src=this.helpImage;
				im.title=this.helpTxt;
				im.onclick=popuphelp;
				im._helpid=y[i][1];
				
				x[j].parentNode.insertBefore(im,x[j]);
			}
		}
	}

}

this.markRequired = function()
{


	var cn='required';
	var x = this.form.elements;
	var y = document.getElementsByTagName('label');
	var i,o,sp,arr=new Array();

	
	arr=getElementsByClassName(cn);
	for (i=0; i<arr.length; i++)
		arr[i].parentNode.removeChild(arr[i]);

	var forExpr= new RegExp(/^.+for="?([a-z0-9_-]+)"?.+$/);
	for (i=0;i<x.length;i++)
	{
		if(x[i].id && this.isRequired(x[i])){
			for(var j=0; j<y.length;j++)	
			{
				var forAttr=y[j].getAttribute('for');
				if (!forAttr && y[j].outerHTML)
					forAttr=y[j].outerHTML.replace(forExpr,"$1");	
				
				if( x[i].id == forAttr )
				{
					sp = document.createElement('span');
					sp.className = cn;
					sp.appendChild(document.createTextNode('*'));
					y[j].appendChild(sp);
					break;
				}
			}
		}
	}
}

this.isRequired = function(obj)
{
		for(var j=0; j<this.pageValidations.length; j++)
			if ( obj.id && obj.id==this.pageValidations[j][0] && this.pageValidations[j][1]=='required' )
				return true;
		return false;
}

this.setOnchangeFunc = function(formObj)
{
	
	var x = (formObj)?formObj:this.form.elements;
	for (var i=0;i<x.length;i++)
	{
		this.setOnchangeFields(x[i]);
	}
}
this.setOnchangeFields = function(obj)
{
	
	for(var j=this.pageValidations.length-1; j>=0; j--)
	{
		if (obj.id && obj.id==this.pageValidations[j][0])	
		{
			
			
			switch (this.pageValidations[j][1]){	
				case "cpr":
					obj.onchange=formatCpr;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "cvr":
				case "se":
					obj.onchange=formatCvrSE;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "cprcvr":
					obj.onchange=formatCprCvr;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "cvrpse":
					obj.onchange=formatCvrPSE;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "belob":
					obj.onchange=formatBelob;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "date":
					obj.onchange=formatDate;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "time":
					obj.onchange=formatTime;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "reg":
					this.setJumpKontonrField();
					addEvent(obj,'keyup',jumpRegKontonr);
					break;
				case "kontonr":
					this.setJumpRegnrField();
					addEvent(obj,'keydown',jumpKontonrTab);
					obj.onchange=formatKonto;
					break;
				case "fi":
					obj.onchange=formatFI;
					addEvent(obj,'keydown',autoformatOnEnter);
					break;
				case "only1":	
					addEvent(obj,'focus', setWatchOnly1);
					addEvent(obj,'blur',clearWatchOnly1);
					only1objects.push(obj);
					break;
				case "limit":	
					addEvent(obj,'focus', setLimitLength);
					addEvent(obj,'blur',clearLimitLength);
				default:
					break;
			}
		}
	}
}

this.validateFormOnsubmit = function() {
	var ret = Validation.validate();
	if (ret==true && this.target=='popup') {
			Validation.openModalWin();
	}
	return ret;
}

this.validate = function() {
	this.validForm = true;
	var errorstring = '';
	var x;
	this.disableFormFields();
	
	if(!this.overridevalidation) {
		if(this.form && this.form.elements) {
			x = this.form.elements;
		} else {
			alert('ERROR no this.form element found.\nNot able to validate');
		}

		this.removeMessages();

		for (var i=0;i<x.length;i++) {
			this.validateField(x[i]);
		}
		if (this.firstError) {
			this.firstError.focus();
		}
		if (this.validateAtLeastOneFields) {
			this.validateAtLeastOne();
		}
	}
	
	if(this.validForm && typeof(newonsubmit)=='function'){
		try {
			this.validForm = newonsubmit();
		} catch(e) {
			this.validForm=false;
			alert("Der er opstået en fejl");
		}
	}

	if(!this.validForm)	this.enableFormFields();
	return this.validForm;
}

this.validateField = function(obj)
{
	
	for(var j=this.pageValidations.length-1; j>=0; j--)
	{
		var valtype=this.pageValidations[j][1];
		
		if (obj.id==this.pageValidations[j][0])	
		{
			
			if(this.errorCodes[valtype]){
				
				
				if( this.errorCodes[valtype][1].test( obj.value ) )
				{
					
				}
				else 
				{
					
					this.addMessage(valtype,'err',this.errorCodes[valtype][0],obj.id);
				}
			}
		}
	}
}

this.validateAtLeastOne = function()
{
	
	var o,allEmpty=true;
	for (var i in this.validateAtLeastOneFields)
	{
		try{
			o=gE(this.validateAtLeastOneFields[i]);
			
			if(o && o.value!=""){
				
				allEmpty=false;
			}
		}catch(e){
			
		}
	}
	if (allEmpty==true){
		this.validForm=false;
		// this.addMessage('fejlLeastOne','err','Mindst eet felt skal udfyldes');
		this.addMessage('fejlLeastOne','err','Mindst et af følgende felter skal udfyldes: CPR-/CVR-/SE-/P-nummer, Udbetalende enhed, Ydelsesart eller Udbetalings-ID');
		
		return false;
	}
	return true;
}
this.setServerErrors = function()
{
	
	this.validForm=true;
	for (var i=0; i<this.pageServerErrors.length ;i++)
	{
		var a=this.pageServerErrors[i];
		
		
		this.addMessage(a[1],'err',a[2],a[0]);
	}
}


this.addMessage = function(fejlID,type,msg,feltIDs){
	
	
	this.addGeneralMsg(fejlID,type,msg);
	if(type=='err'){
		for(var i=2; i<arguments.length; i++)
		{
			var obj = gE(arguments[i]);
			if(obj)
			{
				juggleClass(obj,'err',1);
				obj._hasError = true;
				if (this.validForm)
					this.firstError = obj;
			}
		}
		this.validForm = false;
	}
};
this.addError = function(obj,message,errType)
{
	alert('TODO:this.addError skal ikke benyttes!');
	
	
	if(obj)
	{
		juggleClass(obj,'err',1);
		obj._hasError = true;
		if (this.validForm)
			this.firstError = obj;
	}
	this.addGeneralError(message,errType);
	this.validForm = false;
	return;
}

this.removeError = function (obj,message,errType)
{
	alert('TODO:this.removeError skal ikke benyttes!');
	return;
}
this.removeMessages = function()
{
	
	var errorObj	= gE('errormessages');
	if(errorObj)
		errorObj.parentNode.removeChild(errorObj);
	var x=this.form.elements;
	for (var i=0; i<x.length; i++)
			juggleClass(x[i],'err',0);
}
this.addGeneralMsg = function(fejlID,msgType,msg){

	var msgObj		= gE('errormessages');
	var anchorObj	= gE('errortop');
	var ul			= gE('errormessagelist');
	var cssclass	= ' w400';

	
	
	if(msgObj &&  msgObj.className!=msgType+cssclass)
	{
		
		msgObj.parentNode.removeChild(msgObj);
		msgObj=null;
	}
	if (!msgObj)
	{
		
		msgObj = document.createElement('div');
		msgObj.className=(msgType=='err')?'err'+cssclass:'msg'+cssclass;
		msgObj.id='errormessages';

		
		
		
		var li = document.createElement('LI');
		li.appendChild(document.createTextNode(msg));
		li.id='err_'+fejlID;

		var o = document.createElement('UL');
		o.id='errormessagelist';
		o.appendChild(li);
		msgObj.appendChild(o);
		anchorObj.parentNode.insertBefore(msgObj, anchorObj.nextSibling );
		return;
	}
	else if(msgObj && ul)
	{
		
		
		if(gE('err_'+fejlID)){
			
			return;
		}
		else
		{
		var li = document.createElement('LI');
			li.appendChild(document.createTextNode(msg));
			li.id='err_'+fejlID;
			ul.appendChild(li);
		}
		
	}
	else {
		
	}


};





this.disableFormFields = function(){
	var x=this.form.elements;
	for(var i=0; i<x.length; i++){
	if(x[i].type && x[i].type.match(/^(submit|button|image)$/))
	{
		x[i]._disabled=x[i].disabled;
		x[i].disabled=true;
	}
	else if(x[i].type && x[i].type.match(/^text$/))
		x[i]._readonly=x[i].readonly;
		x[i].readonly=true;
	}
	document.onkeypress = function(evt){
		evt=(evt)?evt : ((event)?event:null);
		if( evt.keyCode == 27 )
			Validation.enableFormFields();
	}
	
}


this.enableFormFields = function(){
	this.overridevalidation=false;
	var x=this.form.elements;
	for(var i=0; i<x.length; i++){
		
		if(x[i].type && x[i].type.match(/^(submit|button|image)$/))
		{
			x[i].disabled=x[i]._disabled;
			x[i]._disabled=null;
		}
		else if(x[i].type && x[i].type.match(/^text$/))
		{
			x[i].readonly=x[i]._readonly;
			x[i]._readonly=null;
		}
	}
	if(document.onkeypress)
		document.onkeypress=null;
	
}




this.openModalWin = function()
{
	
	document.onclick=checkmodal;
	window.onfocus=checkmodal;
	
	

	
	this.modalWin=popup(this.blankURL,this.form.target,800,500);

	this.modalWin.focus();
	
	

	

	return true;
	
}

this.closeModalWin = function()
{
	
	
	document.onclick=null;
	window.onfocus=null;
	
	
	Validation.enableFormFields();
	
	
}


this.setJumpKontonrField = function()
{
	for (var i=this.pageValidations.length-1; i>=0 ; i--)
	{
		if(this.pageValidations[i][1]=="kontonr")
		{
			this.jumpKontonrField = gE(this.pageValidations[i][0]);
			
			break;
		}
	}
}
this.setJumpRegnrField = function()
{
	for (var i=this.pageValidations.length-1; i>=0 ; i--)
	{
		if(this.pageValidations[i][1]=="reg")
		{
			this.jumpRegnrField = gE(this.pageValidations[i][0]);
			
			break;
		}
	}
}

}


checkmodal=function() {
	var thisObj=Validation;
	
	try {
		if( thisObj.modalWin && thisObj.modalWin.focus)	thisObj.modalWin.focus();
		return false;
	} catch(e){
		Validation.closeModalWin();
		return false;
	}
}


function getDato(offset) {
	var now = new Date();
	if (offset!=null) {now.setDate(now.getDate()+offset);}
	var dag = now.getDate();
	if (dag.toString().length<2) {dag="0"+dag;}
	var maaned = now.getMonth()+1;  
	if (maaned.toString().length<2) {maaned="0"+maaned;}
	var aar = now.getFullYear();
	return (dag+"-"+maaned+"-"+aar);
}


function formatDate(evt)
{
	
	var obj=getEventObject(evt);
	str=trim(obj.value);
	
	if(str.match(reg.correctDate))
		return true;
	if (reg.recognizedDate.exec(str))	
	{
		if(RegExp.$1.length==1)
			str='0'+RegExp.$1;
		else
			str=RegExp.$1;
		if(RegExp.$2.length==1)
			str+="-"+'0'+RegExp.$2;
		else
			str+="-"+RegExp.$2;
		if(RegExp.$3.length==2)
 			str+="-"+'20'+RegExp.$3;	
		else
			str+= "-"+RegExp.$3
	}
	else {
		
	}
	
	obj.value=str;
	return true;
}

function formatTime(evt)
{
	var obj=getEventObject(evt);
	str=trim(obj.value);
	
	if(str.match(reg.correctTime))
		return true;
	if (reg.recognizedTime.exec(str))	
	{
		if(RegExp.$1.length==1)
			str='0'+RegExp.$1;
		else
			str=RegExp.$1;
		if(RegExp.$2.length==2)
			str+=":"+RegExp.$2;
	}
	
	obj.value=str;
	return true;
}

function formatCpr(evt)
{
	
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	if (str.match(reg.correctCPR))
		return true;
	if (str.match(reg.recognizedCPR))
		str=str.replace(reg.recognizedCPR,"$1-$2");
	else {
		
	}
	obj.value=str;
	return true;
}
function formatCvrSE(evt)
{
	
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	

	if (str.match(reg.recognizedCVRSE))
	{
		str=str.replace(reg.recognizedCVRSE,"$1 $2 $3 $4");
	}
	else {
		
	}
	obj.value=str;
}
function formatCprCvr(evt)
{
	
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	if(str.match(reg.correctCPR) || str.match(reg.recognizedCPR) ){
		formatCpr(evt);
		setFieldValue(obj.form.cprcvrtype,'CPR');
	}
	else if(str.match(reg.recognizedCVRSE))
	{
		formatCvrSE(evt);
		setFieldValue(obj.form.cprcvrtype,'CVR');
	}

	return true;
}

function formatCvrPSE(evt)
{
	
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	if(str.match(reg.recognizedCVRSE)) 
	{
		formatCvrSE(evt);
	}
	else if (reg.recognizedPnr.exec(str))	
	{
		str=str.replace(reg.recognizedPnr,"$1.$2.$3.$4");
		obj.value=str;
	}
	else {
		
	}
	return true;
}

function formatBelob(evt)
{
	
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	
	if (reg.recognizedBelob.exec(str))	
	{
		str=RegExp.$1;
		if(RegExp.$2.length!=0)
			str+="."+RegExp.$2;
		if(RegExp.$3.length!=0)
			str+="."+RegExp.$3;
		if(RegExp.$4.length!=0)
			str+="."+RegExp.$4;
		if(RegExp.$5.length!=0)
			str+="."+RegExp.$5;
		if(RegExp.$6.length==3)
			str+=RegExp.$6;
		else if(RegExp.$6.length==2)
			str+=RegExp.$6+"0";
		else		
			str+=",00";
		obj.value=str;

	}
	else {
		
	}
	return true;
}

function formatKonto(evt)	
{
	
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	if (reg.recognizedKonto.exec(str))
	{
		
		if(RegExp.$1.length==10)
			return true;

		str='0000000000'+RegExp.$1;	
		str=str.substr(RegExp.$1.length);
	}
	else {
		
	}
	obj.value=str;
	return true;
}

function formatFI(evt)	
{
	var obj=getEventObject(evt);
	var str=trim(obj.value);
	if (reg.recognizedFI.exec(str))
	{
		
		if(RegExp.$1.length==8)
			return true;

		str='00000000'+RegExp.$1;	
		str=str.substr(RegExp.$1.length);
	}
	else {
		
	}
	obj.value=str;
	return true;
}


function trim(s) {
	s = s+'';
	return s.replace(/^\s+(.+)\s+$/, '');
}

function getEventObject(evt)
{
	var obj;
	evt=(evt)?evt : ((window.event)?window.event:null);
	if(!evt) return false;
	if(evt.target)
		obj=evt.target;
	else if (evt.srcElement)
		obj=evt.srcElement;
	return obj;
}

function setFieldValue(obj,val)
{
	if(!obj){
		alert('setFieldValue(obj,val)\nFejl. Objektet kan ikke findes');
		return false;
	}
	if(obj && obj.type && !obj.length)
	{
		
		obj.value=val;
	}
	else if(obj && obj.length ){
		
		for(var i=0; i<obj.length; i++)
		{
			if (obj[i].value==val)
			{
				obj[i].checked=true;
				break;
			}
		}
	}
	return true;
}

function autoformatOnEnter(evt){
	evt=(evt)?evt : ((window.event)?window.event:null);
	
	if(evt.keyCode==13){
		var obj=getEventObject(evt);
		
		
		obj.onchange();
	}
}

function jumpRegKontonr(evt){
	evt=(evt)?evt : ((window.event)?window.event:null);
	var obj=getEventObject(evt);
	if(obj.value.length==4 && evt.keyCode!=9 && evt.keyCode !=16)
	{
		
		var kontonr	= Validation.jumpKontonrField;

		kontonr.focus();
	}
}

function jumpKontonrTab(evt){
	evt=(evt)?evt : ((window.event)?window.event:null);
	
	if(evt.keyCode==9 && !evt.shiftKey)
	{
		var obj=getEventObject(evt);
		if(obj.value.length==0)
		{
			if(obj.getAttribute('_tabcount'))
			{
			}
			else if(evt.preventDefault){
			
				evt.preventDefault();
				obj.setAttribute('_tabcount','1');
			}
			else if(window.event){
			
				evt.returnValue=false;
				obj.setAttribute('_tabcount','1');
			}
		}
	}
}



function setWatchOnly1(evt){
	
	var obj=getEventObject(evt);
	only1settimeoutID=window.setInterval(function(){setOnly1field(obj);},only1timeoutinterval);
};
function clearWatchOnly1(evt){
	
	window.clearInterval(only1settimeoutID);
};
function setOnly1field(obj){
	
	var val,i,o,len;
	val=obj.value;
	len=only1objects.length;
	for(i=0; i<len;i++){
		if (only1objects[i]==obj){}
		else{
			if(val=='') {
				only1objects[i].disabled=false;
				juggleClass(only1objects[i],'disable',0);
			}else{
				only1objects[i].disabled=true;
				juggleClass(only1objects[i],'disable',1);
			}
		}
	}

};

var only1objects=new Array();
var only1settimeoutID=null;
var only1timeoutinterval=150;


var limitsettimeoutID=null;
var limittimeoutinterval=80;
function setLimitLength(evt){
	
	var obj=getEventObject(evt);
	limitsettimeoutID=window.setInterval(function(){limitLength(obj)},limittimeoutinterval);
}
function clearLimitLength(evt){
	
	window.clearInterval(limitsettimeoutID);
};
function limitLength(o){		
	var lim=70;
	if (o.value.length <= lim)
		return;
	else
		o.value=o.value.substring(0,lim-1);
	
};







addEvent(window,'load',tooltip_init);

function tooltip_init(){
	var o=gE('tooltip_adr');
	if(o) o.onmouseover=tooltip_show;
};

function tooltip_show(evt){
	var x=-40,y=30;
	var o=getEventObject(evt);
	var t=tooltip_obj();
	t.style.display='block';
	
	
	t.style.left=x+parseInt(tooltip_findX(o))+'px';
	t.style.top =y+parseInt(tooltip_findY(o))+'px';
	var lastid=t.getAttribute('tooltip_id');
	o.onmouseover=null;
	if(o.id!=lastid)
	{
		
		var p=gE(lastid);
		while(t.childNodes.length>1)
			p.appendChild(t.removeChild(t.childNodes[1]));
		
		
		p=o.lastChild;
		if(p.nodeType==1 && p.nodeName=='SPAN')
			t.appendChild(o.removeChild(p));
		t.setAttribute('tooltip_id',o.id);
	}
	
};

function tooltip_hide(evt){
	var o=tooltip_obj();
	o.style.display='none';
	window.setTimeout( function(){gE(o.getAttribute('tooltip_id')).onmouseover=tooltip_show;},1250);
	
};

function tooltip_obj(){
	var o=gE('tooltip');
	if(!o){
		o=document.body.appendChild(document.createElement('div'));
		var d=document.createElement('div');
		d.appendChild(document.createTextNode('X'));
		d.id='tooltiphead';
		o.appendChild(d);
		
		o.id='tooltip';
		o.style.display='none';
		o.onclick=tooltip_hide;
	}
	return o;
};

function tooltip_findX(o){
	var x=0;
	if(o.offsetParent){
		while(o.offsetParent){
			x+=o.offsetLeft;
			o=o.offsetParent;
		}
	} else {
		x+=obj.x;
	}
	return x;
};

function tooltip_findY(o){
	var y=0;
	if(o.offsetParent){
		while(o.offsetParent){
			y +=o.offsetTop;
			o=o.offsetParent;
		}
	} else {
		y+=obj.y;
	}
	return y;
};





function juggleClass(o,c,s)
{
  if (s==1 && !checkClass(o,c)){
	
    o.className+=' '+c;
  }else if(s==0 && o.className.indexOf(c)==-1){
	
  }else if(s==0 && o.className==c){
	
    o.className='';
  }else if(s==0){
	
    o.className=o.className.replace(' '+c,'');
  }
};
function checkClass(o,c)
{
	var re=new RegExp('\\b'+c+'\\b');
	return re.test(o.className);
};






function firstElement(obj)
{
	var e=obj.firstChild;
	while (e.nodeType != 1 ) e=e.nextSibling;
	return e;
}
function lastElement(obj)
{
	var e=obj.lastChild;
	while (e.nodeType != 1 ) e=e.previousSibling;
	return e;
}




var setIDs=['',''];

addEvent(window,'load',setSelected);

function setSelected()
{
	
	
	if (!setIDs)
		{alert('setIDs findes ikke. return false. \nsetIDs: '+setIDs);return false;}


	for(var i=0; i<setIDs.length; i++)
	{
		if(gE(setIDs[i])) {
			gE(setIDs[i]).className+= ' select';
		
		}

	}
	return true;
}




function popup(u,n,w,h,scrollbars) {
  if(typeof(w)=='undefined') { w=300; }
  if(typeof(h)=='undefined') { h=400; }
  if(typeof(n)=='undefined' || n=='') { n='popupwin'; }
  var pop;
  var params=',resizable=no,statusbar=no';


  if (scrollbars && scrollbars==true){
    pop = window.open(u, n, 'width=' + w + ',height=' + h +params+',scrollbars=yes');
  }else{
    pop = window.open(u, n, 'width=' + w + ',height=' + h +params);
  }
  if (pop != null) {
    if (pop.opener == null) {
      pop.opener = self;
	}

  }
  if(window.focus) { pop.focus(); }
  return pop;
}
popupinfoURL	='../pub/info.asp';
popuphelpURL	='../pub/help.asp';

function popuphelp(evt) {
	var obj=getEventObject(evt);
	popup(popuphelpURL+'?id='+obj._helpid,'help',300,400,true)
}

function popupinfo(id) {
	popup(popupinfoURL+'?id='+id,'help',300,400,true);
}

function expandCollapse() {
	for (var i=0; i<expandCollapse.arguments.length; i++) {
		var element = document.getElementById(expandCollapse.arguments[i]);
		if(element)
		element.style.display = (element.style.display == "none") ? "block" : "none";
	}
};





function getElementsByClassName(class_name)
{
  var all_obj,ret_obj=new Array(),j=0,teststr;

  if(document.all)all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)
    all_obj=document.getElementsByTagName("*");

  for(i=0;i<all_obj.length;i++)
  {
    if(all_obj[i].className.indexOf(class_name)!=-1)
    {
      teststr=","+all_obj[i].className.split(" ").join(",")+",";
      if(teststr.indexOf(","+class_name+",")!=-1)
      {
        ret_obj[j]=all_obj[i];
        j++;
      }
    }
  }
  return ret_obj;
};



if ( typeof(dump)!='function' ) {function dump(str){}}


if(typeof(gE)!='function'){	function gE(e){var d=document;if(d.getElementById)return d.getElementById(e);return d.all[e];}	}



function addEvent(el, evname, func) {
	if (el.addEventListener) { 
		el.addEventListener(evname, func, true);
	}else if (el.attachEvent) { 
		el.attachEvent("on" + evname, func);
	} else {
		el["on" + evname] = func;
	}
};

function removeEvent(el, evname, func) {
	if (el.removeEventListener) { 
		el.removeEventListener(evname, func, true);
	} else if (el.detachEvent) { 
		el.detachEvent("on" + evname, func);
	} else {
		el["on" + evname] = null;
	}
};

if (typeof XMLHttpRequest == 'undefined') {
	XMLHttpRequest = function(){
		var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
		for (var i=0; i < msxmls.length; i++) {
			try {
				return new ActiveXObject(msxmls[i]+'.XMLHTTP')
			} catch (e) { }
		}
		throw new Error("No XML component installed!");
	};
}




if (typeof Array.prototype.push  == "undefined") Array.prototype.push  = function(){var A_p = 0; for (A_p = 0; A_p < arguments.length; A_p++) {	this[this.length] = arguments[A_p];	} return this.length;}
if (typeof Array.prototype.shift == "undefined") Array.prototype.shift = function(){var A_s = 0; var response = this[0];	for (A_s = 0; A_s < this.length-1; A_s++) {	this[A_s] = this[A_s + 1]}	this.length--; return response;}