/* dbformhandler.js
	 
	 Contain:
	 				  Formvalidator 1.47.4
					  Rev. date: 27-05-2011
						
	 					DBcore  (dbcore.js)
						ErrorHandler (dberrorhandler.js)
						DateToolbox (dbtoolboxes.js)
						StringToolbox (dbtoolboxes.js)
						DisplayToolbox (dbtoolboxes.js)
						
*/

Formvalidator = {
	
	jsversion: '1.47.3',
	errorId: '',
	lastOnMeOperation:'',
	lastOnMeEnableOperation:'',
	sharepointEditmode: false,
	inputs:[],
	selects: [],
	textareas: [],
	buttons: [],
	anchors: [],
	divs: [],
	lis: [],
	spans: [],
	pseudoChangeElements: [],
	pseudoClickElements: [],
	changeTriggers: 'hideMeOnChange hideMeOnSelected showMeOnSelected showHideMeOnSelected showHideRstMeOnSelected showHideMeOnMultiOr starMeOnSelect',
	clickTriggers: 'hideMeOnChecked hideMeOnCheckedOr hideMeOnMultichecked showMeOnChecked showHideRstMeOnChecked',
	includeURLfieldOnDomains: ['file:','northernbank.co.uk','nationalirishbank.ie','fokus.no'],
	subscriptionHostsURL: {danica:'http://www-2.danskebank.com/Link/DynamicRequest?opendocument'},
	_datetestHasRun:false,
	_timetestHasRun:false,
	_notInitBySubmitEvent:false,
	_form:null,
	_formIsValid: true,
	_cBaseCategoryList:[],
	_cBaseSubjectList:[],
	_requiredGroupsHandled:[],
	_branchwindow:null,
	_branchchoicemode:null,
	_enableTestMode:false,	
	_peregrineEnabled: false,
		

	init: function(){
		var self=Formvalidator;
		var CoreCompliance=DBcore.getJSversion(DBcore,'1.14.0');
		var DateCompliance=DBcore.getJSversion(DateToolbox,'1.1.2');
		var ErrorCompliance=DBcore.getJSversion(ErrorHandler,'1.10.0');
		var StringCompliance=DBcore.getJSversion(StringToolbox,'1.2.0');
		var DisplayCompliance=DBcore.getJSversion(DisplayToolbox,'1.0.0');
		if (CoreCompliance.compliant && DateCompliance.compliant && ErrorCompliance.compliant && StringCompliance.compliant && DisplayCompliance.compliant) {
    		self._lastEnforcer(); // temporary IE8 fix
				//self._insertSecurityFooter(); <= temp de-activated
				self._prepareElementLists();
    			self._setChangeListeners();
    			self._setClickListeners();
				self._setMouseoverListeners();
  				self._setKeydownListernes();
  				self._setButtonActivation();
				self._transferFromES();
				self._setInsertValues();
				self._handleInsertFromURL();
				self._evaluateKvitURL();
				var anyOfficedaysAr= self._findSelects('officedays');
  				if (anyOfficedaysAr.length>0) {self._handleOfficedays(anyOfficedaysAr);} 
				if (self._enableTestMode) self._forceTestMode();
				if (document.forms[0].Peregrine && document.forms[0].Peregrine.value=='Yes') {self._peregrineEnabled=true}
				//if (document.forms[0].Peregrine.value.toLowerCase=='yes') {self.__initiatePeregrine();}
				self._addAutoPostal();
		}
	},
	
	_addAutoPostal: function() {
		var theFormspan;
		var elements;
		if(DBcore.getLanguagecode() == "da"){
			if(DBcore.getElementsByClass("postal").length >0) elements = DBcore.getElementsByClass("postal");
			if(elements){
				var formSpans = new Array();
				if(document.getElementsByTagName("div")) var divs = document.getElementsByTagName("div");
					for (div in divs){
						if(divs[div].className){ 
							if(divs[div].className.indexOf("formspan") != -1) formSpans.push(divs[div]); 
						}
					}
					for (span in formSpans){
					var length = 0;
						if(formSpans[span].childNodes){
							if(formSpans[span].childNodes.length > length) {
								theFormspan = formSpans[span];
								length = formSpans[span].childNodes.length;
							}
						}
					}
					if (!theFormspan){
						if(divs);
							for (div in divs){
								if(divs[div].id){ 
									if(divs[div].id.indexOf("ContactForm") != -1) theFormspan = divs[div];
								}
							}					
					}
				var postalObject = document.createElement("script");
				postalObject.charset="UTF-8";
				postalObject.type = "text/javascript";
				postalObject.src="/js_css/js/lib/dbpostnumre.js";
				if(theFormspan) theFormspan.appendChild(postalObject); else document.body.appendChild(postalObject);
				for(var i=0;i<elements.length;i++){
					if(!DBcore.hasClass(elements[i], "autoPostal")) DBcore.addClass(elements[i], "autoPostal");
				}
			}
		}
	},
	
	_prepareElementLists: function() {
			var self=Formvalidator;
			self.inputs= document.getElementsByTagName('input');
			self.selects= document.getElementsByTagName('select');
			self.textareas= document.getElementsByTagName('textarea');
			self.buttons= document.getElementsByTagName('button');
			self.anchors= document.getElementsByTagName('a');
			self.divs=document.getElementsByTagName('div');
			self.lis=document.getElementsByTagName('li');
			self.spans=document.getElementsByTagName('span');
			self.getSharepointEditMode();
	},
	
	getSharepointEditMode: function() {
			var self=Formvalidator;
			var checkInButtonPresent = (document.getElementById('qaCheckin_anchor')) ? true:false;
			if (checkInButtonPresent) {
        	self.sharepointEditmode=true;
			}
	},
	
	_transferFromES: function() {
			if (document.getElementById('EStranscount')) {
				 var targetId;
				 var targetValue;
				 var target;
				 var transcount=document.getElementById('EStranscount');
				 for (var i=0;i<transcount;i++) {
				 		 targetId=document.getElementById('trans'+i+'ID').value;
						 targetValue=document.getElementById('trans'+i+'VAL').value;
						 if (document.getElementById(targetId)) {
						 		document.getElementById(targetId).value=targetValue;
						 }
				 }
			}
	},
	
	formisvalid: function(formname) {
	  var self=Formvalidator;
		self._form = (formname=='')? document.forms[0] : document.forms[formname];
		self._notInitBySubmitEvent=true;
		self._submitListener();
		if (Formvalidator._formIsValid) {
			 self._allowCbaseOperations();
			 self._setPeregrineParameters();
			 self._appendURLtoFields();
		} else {
			 self._clearProperties();
		}
		return Formvalidator._formIsValid;
	},
	
	externalJSsendForm: function(buttonId) {
		var self=Formvalidator;
		var button=document.getElementById(buttonId);
	  var ok=self.formisvalid('');
		if (ok) self._handleSendForm(button);
	},
	
	sendForm: function(block,formID,action,method,encoding,charset) {
	
		function saveCheckedNodes(saved_nodes,current_node)
 		{
      if(current_node.type && ((current_node.type == 'checkbox') || (current_node.type == 'radio'))) {
       saved_nodes[saved_nodes.length] = new Array(current_node, current_node.checked);
      }
      for(var i = 0; i < current_node.childNodes.length; i++) {
       saveCheckedNodes(saved_nodes, current_node.childNodes[i]);
      }
 		}
		
	  var node;
	  if (arguments.length<5) {
		  var encoding = 'application/x-www-form-urlencoded';
		}
		if (arguments.length<6) {
		  var charset= 'iso-8859-1';
		}
		document.charset=charset; // IE fix.
		var formObj = document.createElement('form');
		formObj.id=formID;
		document.body.appendChild(formObj);
		formObj.action=action;
		formObj.method=method;
		formObj.encoding=encoding;
		formObj.style.marginLeft="-9000px";
		formObj.acceptCharset = charset;
		/* save checkboxes and radiobuttons for IE */
 		var checked_nodes = new Array();
 		saveCheckedNodes(checked_nodes, block);
		while(block.childNodes.length > 0){
      var node = block.childNodes[0];
			/* Handle relative and automatic receipt URLs		*/
			if (node.name=='kvitURL') {
				 if (node.value.indexOf('//')==-1) {
				   node.value= '//'+location.host+node.value;
				 }
			}
      formObj.appendChild(node);
    }
 		for(j = 0; j < checked_nodes.length; j++) {
      checked_nodes[j][0].checked = checked_nodes[j][1];
    }
		formObj.submit();
	},
	
	_setSubmitListeners: function() {
	  var forms = document.getElementsByTagName('form');
			for (var i=0;i<forms.length;i++) {
				DBcore.addEventListener(forms[i],'submit',Formvalidator._submitListener); 
			}
	},
	
	_setChangeListeners: function() {
		 var self=Formvalidator;
		 for (var i=0;i<self.inputs.length;i++) {
		 		if (DBcore.isInsideFieldgroup(self.inputs[i])) {
					 DBcore.addEventListener(self.inputs[i],'change',Formvalidator._changeListener);
				}
			}
		 for (var i=0;i<self.selects.length;i++) {
		 		if (DBcore.isInsideFieldgroup(self.selects[i])) {
					 DBcore.addEventListener(self.selects[i],'change',Formvalidator._changeListener);
				}
			}
		 for (var i=0;i<self.textareas.length;i++) {
		 		if (DBcore.isInsideFieldgroup(self.textareas[i])) {
					 DBcore.addEventListener(self.textareas[i],'change',Formvalidator._changeListener); 
				}
			}
		 Formvalidator._setPseudoChangeElements();
	},
	
	_setClickListeners: function () {
		 var self=Formvalidator;
		 for (var i=0;i<self.buttons.length;i++) {
		 		if(self.buttons[i].type=='button') {
					if (DBcore.isInsideFieldgroup(self.buttons[i])) {
						 DBcore.addEventListener(self.buttons[i],'click',Formvalidator._clickListener);
					} 
				}
		 }
		 for (var i=0;i<self.inputs.length;i++) {
		 		if (DBcore.isInsideFieldgroup(self.inputs[i])) {
		 			 if(self.inputs[i].type=='button' || self.inputs[i].type=='radio' || self.inputs[i].type=='checkbox') {
						 DBcore.addEventListener(self.inputs[i],'click',Formvalidator._clickListener);
					} 
				}
		 }
		 for (var i=0;i<self.anchors.length;i++) {
		 		if (DBcore.isInsideFieldgroup(self.anchors[i])) {
					 DBcore.addEventListener(self.anchors[i],'click',Formvalidator._clickListener); 
				}
		 }
		 Formvalidator._setPseudoClickElements();
	},
		
	_setMouseoverListeners: function() {
		  var self=Formvalidator;
		  for (var i=0;i<self.buttons.length;i++) {
		 		if(self.buttons[i].type=='button') {
					if (DBcore.isInsideFieldgroup(self.buttons[i])) {
						 DBcore.addEventListener(self.buttons[i],'mouseover',Formvalidator._mouseoverListener);
					} 
				}
		 }
	},
	
	_setKeydownListernes: function() {
		 var self=Formvalidator;
		 for (var i=0;i<self.inputs.length;i++) {
		 		if (DBcore.isInsideFieldgroup(self.inputs[i])) {
  		 		if(self.inputs[i].type=='text' && self.inputs[i].form && DBcore.hasClass(self.inputs[i].form,"allowKeypressSubmit")) {
  					DBcore.addEventListener(self.inputs[i],'keydown',Formvalidator._keydownListener); 
  				}
				}
		 }
	},
	
	_setInsertValues: function() {
		 var self=Formvalidator;
		 // Check for TEST or SYST webbank frameset and redirect to TEST contacts.
		 var frameURLString=top.window.location.href;
		 if(frameURLString.indexOf("//test-") != -1 || frameURLString.indexOf("//syst-") != -1){
			 document.forms[0].AbbEmailAdr.value = "";
			 document.forms[0].MsgReplyTo.value = "";
			 document.forms[0].DestDB.value = "Contacts//TestContacts.nsf";
		 }
		 var inputfields=document.getElementsByTagName('input');
		 for (var i=0;i<inputfields.length;i++) {
		 		 var field=inputfields[i];
		 		 if (field.type=='text' || field.type=='hidden') {
				 		var classes=field.className.split(' ');
						for (var j=0;j<classes.length;j++) {
							var ClassParts=DBcore.getClassParts(classes[j]);
							var classFunction=ClassParts.classFunction;
							var classParams=ClassParts.classParams;
							if (classFunction == 'insertValue'){Formvalidator._insvalue(field, classParams)}
						}
						
						
							 					
						
				 }
		 }
		 		
	},
	
	_insvalue: function(field, classParams) {
		var self=Formvalidator;
		var brugerValue1 = '';
		var brugerValue2 = '';
		var brugerValue3 = '';
		var brugerValue4 = '';
		
		if(classParams[0] != ''){brugerValue1 = classParams[0];}
		if(classParams[1] != ''){brugerValue2 = classParams[1];}
		if(classParams[2] != ''){brugerValue3 = classParams[2];}
		if(classParams[3] != ''){brugerValue4 = classParams[3];}
		
	 	for(k=1;k<5;k++) {
    		if(eval('brugerValue'+k)!='') {
       			if(eval('brugerValue'+k)=='Username') {eval('brugerValue'+k+'="Brugernavn"');}
       			else if(eval('brugerValue'+k)=='Firstname') {eval('brugerValue'+k+'="Fornavn"');}
				else if(eval('brugerValue'+k)=='Surname') {eval('brugerValue'+k+'="Efternavn"');}
				else if(eval('brugerValue'+k)=='Customernumber') {eval('brugerValue'+k+'="Kundenummer"');}
				else if(eval('brugerValue'+k)=='Workphone') {eval('brugerValue'+k+'="Telefonarbejde"');}
				else if(eval('brugerValue'+k)=='Homephone') {eval('brugerValue'+k+'="Telefonprivat"');}
				else if(eval('brugerValue'+k)=='Mobilephone') {eval('brugerValue'+k+'="Mobiltelefon"');}
				else if(eval('brugerValue'+k)=='Workemail') {eval('brugerValue'+k+'="Epostarbejde"');}
				else if(eval('brugerValue'+k)=='Personalemail') {eval('brugerValue'+k+'="Epostprivat"');}
				else if(eval('brugerValue'+k)=='Streetname') {eval('brugerValue'+k+'="Vejnavn"');}
				else if(eval('brugerValue'+k)=='Housenumber') {eval('brugerValue'+k+'="Husnummer"');}
				else if(eval('brugerValue'+k)=='Floor') {eval('brugerValue'+k+'="Etage"');}
				else if(eval('brugerValue'+k)=='Aptnumber') {eval('brugerValue'+k+'="Boligposition"');}
				else if(eval('brugerValue'+k)=='Town') {eval('brugerValue'+k+'="Landsby"');}
				else if(eval('brugerValue'+k)=='Postcode') {eval('brugerValue'+k+'="Postnummer"');}
				else if(eval('brugerValue'+k)=='City') {eval('brugerValue'+k+'="By"');}
				else if(eval('brugerValue'+k)=='Adviser') {eval('brugerValue'+k+'="Kunderaadgiver"');}
				else if(eval('brugerValue'+k)=='Branchphone') {eval('brugerValue'+k+'="Telefonafdeling"');}
				else if(eval('brugerValue'+k)=='Companynumber') {eval('brugerValue'+k+'="firmanummer"');}
				else if(eval('brugerValue'+k)=='SegmentID') {eval('brugerValue'+k+'="Kundegruppe"');}
				else if(eval('brugerValue'+k)=='BOBrid') {eval('brugerValue'+k+'="BOBrid"');}
				else if(eval('brugerValue'+k)=='BOFirstname') {eval('brugerValue'+k+'="BOFirstname"');}
				else if(eval('brugerValue'+k)=='BOSurname') {eval('brugerValue'+k+'="BOSurname"');}
   			 }
  		}

		if (top.bruger) { 
			var temp = eval("top.bruger."+brugerValue1);
			if(brugerValue2 && eval("top.bruger."+brugerValue2)!="") {temp+= " " + eval("top.bruger."+brugerValue2);}
			if(brugerValue3 && eval("top.bruger."+brugerValue3)!="") {temp+= " " + eval("top.bruger."+brugerValue3);}
			if(brugerValue4 && eval("top.bruger."+brugerValue4)!="") {temp+= " " + eval("top.bruger."+brugerValue4);}
			field.value = temp;
		}
	
	},
	
	_setButtonActivation: function() {
		for (var i=0;i<Formvalidator.buttons.length;i++) {
				if (DBcore.isInsideFieldgroup(Formvalidator.buttons[i])) {
  				if (DBcore.hasClass(Formvalidator.buttons[i],'inactivebutton')) {
  					 Formvalidator.buttons[i]._activationenabled=true;
  					 Formvalidator.buttons[i]._activationstrict=false;
  				} else if (DBcore.hasClass(Formvalidator.buttons[i],'inactivebutton-strict')) {
  				   Formvalidator.buttons[i]._activationenabled=true;
  					 Formvalidator.buttons[i]._activationstrict=true;
  				}
				}
		}
	},
	
	_setPseudoChangeElements: function() {
		 var self=Formvalidator;
		 for (var i=0;i<self.divs.length;i++) { 
		 		 if (self._isChangeRelevant(self.divs[i])) self.pseudoChangeElements.push(self.divs[i]);
		 }
		 for (var i=0;i<self.lis.length;i++) { 
		 		 if (self._isChangeRelevant(self.lis[i])) self.pseudoChangeElements.push(self.lis[i]);
		 }
		 for (var i=0;i<self.spans.length;i++) { 
		 		 if (self._isChangeRelevant(self.spans[i])) self.pseudoChangeElements.push(self.spans[i]);
		 }
		 for (var i=0;i<self.inputs.length;i++) { 
		 		 if (self._isChangeRelevant(self.inputs[i])) self.pseudoChangeElements.push(self.inputs[i]);
		 }
	},
	
	_setPseudoClickElements: function() {
	   var self=Formvalidator;
		 for (var i=0;i<self.divs.length;i++) { 
		 		 if (self._isClickRelevant(self.divs[i])) self.pseudoClickElements.push(self.divs[i]);
		 }
		 for (var i=0;i<self.lis.length;i++) { 
		 		 if (self._isClickRelevant(self.lis[i])) self.pseudoClickElements.push(self.lis[i]);
		 }
		 for (var i=0;i<self.spans.length;i++) { 
		 		 if (self._isClickRelevant(self.spans[i])) self.pseudoClickElements.push(self.spans[i]);
		 }
		 for (var i=0;i<self.inputs.length;i++) { 
		 		 if (self._isClickRelevant(self.inputs[i])) self.pseudoClickElements.push(self.inputs[i]);
		 }
	},
	
	_isChangeRelevant: function(target) {
		var relevant=false;
	  var classes=target.className.split(' ');
		for (var i=0;i<classes.length;i++) {
				var ClassParts=DBcore.getClassParts(classes[i]);
  			var classFunction=ClassParts.classFunction;
				if (classFunction != '' && classFunction !='hide' && Formvalidator.changeTriggers.indexOf(classFunction)>-1 ) {
  				relevant=true;
  				break;
				}
		}
		return relevant;
	},
	
	_isClickRelevant: function(target) {
		var relevant=false;
	  var classes=target.className.split(' ');
		for (var i=0;i<classes.length;i++) {
				var ClassParts=DBcore.getClassParts(classes[i]);
  			var classFunction=ClassParts.classFunction;
				if (classFunction != ''  && classFunction !='hide' && Formvalidator.clickTriggers.indexOf(classFunction)>-1 ) {
  				relevant=true;
  				break;
				}
		}
		return relevant;
	},
	
	_findSelects: function(trigger) {
				var self=Formvalidator;
				var result = new Array;
				for (var i=0;i<self.selects.length;i++) {
  				if (DBcore.isInsideFieldgroup(self.selects[i])) {
  						if (DBcore.hasTrigger(self.selects[i],trigger)) {
  							 result.push(self.selects[i]);
  						}
					}
				}
				return result;
	},
		
	_submitListener: function(event) {
		    var self=Formvalidator;
		    var ok=true;
				self.errorId='';
				self._requiredGroupsHandled= [];
				self._formIsValid=true;
				ErrorHandler.resetError();
				if (self._notInitBySubmitEvent) {
					 var fields= (self._form) ? self._form.elements : document.forms[0].elementsself._form;
				} else {
					 var fields= this.elements;
					 self._formname=DBcore.getTarget(event).name;
				}
				for (var i=0;i<fields.length;i++) {
					if (!ok) break;
				  if (fields[i].tagName != 'FIELDSET' && typeof fields[i].className != 'undefined') {
						var classes=fields[i].className.split(' ');
						self._datetestHasRun=false;
						self._timetestHasRun=false;
						var abortRest=false;
						for (var j=0;j<classes.length;j++) {
						  if (ok) {
									 var ClassParts=DBcore.getClassParts(classes[j]);
  								 var classFunction=ClassParts.classFunction;
  								 var classParams=ClassParts.classParams;
										 switch (classFunction) {
										 		case 'CbaseCategory':
														 self._cBaseCategoryList.push(fields[i]);
														 break;
												case 'CbaseSubject':
														 self._handleSetCbaseSubject(fields[i],classParams);
														 break;
												case 'CbaseMail':
														 self._handleSetCbaseMail(fields[i]);
														 break;
												case 'CbaseMailSubjectCategory':
														 self._handleSetCbaseMailSubjectCategory(fields[i]);
														 break;
												case 'CVRorReg8090':
														 ok=self._handleCVRorReg8090(fields[i],'dk');
														 break;
												case 'OrgNr':
														 ok=self._handleCVRorReg8090(fields[i],'se');
														 break;
												case 'cpr':
														 ok=self._handleCPR(fields[i]);
														 break;
										 		case 'date':
														 ok=self._handleDate(fields[i],classParams);
														 break;
												case 'dateOutsideWeekEnds':
														 ok=self._handleDateOutsideW(fields[i],classParams);
														 break;
												case 'email':
														 ok=self._handleEmail(fields[i]);
														 break;
										 		case 'fixdate':
														 if (!self._datetestHasRun) {
														 		ok=self._handleDate(fields[i],classParams);
														 }
														 break;
												case 'integerGreater':
															ok=self._handleIntegerGreater(fields[i],classParams);
															break;
												case 'integerLess':
															ok=self._handleIntegerLess(fields[i],classParams);
															break;
    										case 'maxDigits':
    												 	ok=self._handleMaxDigits(fields[i],classParams);
    												 	break;
    										case 'minDigits':
												 		 ok=self._handleMinDigits(fields[i],classParams);
												 		 break;
    										case 'maxlength':
    												 	ok=self._handleMaxLength(fields[i],classParams);
    												 	break;
    										case 'minlength':
												 		 ok=self._handleMinLength(fields[i],classParams);
												 		 break;
												case 'noLetters':
														 ok=self._handleNoLetters(fields[i]);
														 break;
												case 'positiveInteger':
														 ok=self._handlePositiveInteger(fields[i]);
														 break;
												case 'notNegativeInteger':
														 ok=self._handleNotNegativeInteger(fields[i]);
														 break;
												case 'onlyIfVisible':
														 abortRest=self._handleOnlyIfVisible(fields[i]);
														 break;
												case 'required':
														 ok=self._handleRequired(fields[i],classParams);
														 break;
												case 'requiredGroup':
														 ok=self._handleRequiredGroup(fields[i],classParams);
														 break;
												case 'requiredIfCheckbox':
														 ok=self._handleRequiredIfCheckbox(fields[i],classParams);
														 break;
												case 'requiredIfSelect':
														 ok=self._handleRequiredIfSelect(fields[i],classParams);
														 break;
												case 'requiredChecked':
														 ok=self._handleRequiredChecked(fields[i]);
														 break;
												case 'requiredIfVisible':
														 ok=self._handleRequiredIfVisible(fields[i]);
														 break;
												case 'time':
														 if (!self._timetestHasRun) {
														 		ok=self._handleTime(fields[i],classParams);
														 }
														 break;
												case 'timefix':
														 if (!self._timetestHasRun) {
														 		ok=self._handleTime(fields[i],classParams);
														 }
												case 'trim':
														 self._handleTrim(fields[i]);
														 break;
										 }
    								 if (!ok) {
    										 if (self._notInitBySubmitEvent) {
												 		self._formIsValid=false;
												 } else {
												 		DBcore.preventDefault(event);
												 }
    										 ErrorHandler.showErrorInline(self.errorId,fields[i].id);
												 ErrorHandler.setErrorMark(fields[i].id);
								 				 ErrorHandler.selectInputContent(fields[i].id);
												 break;
    								}
							}
							if (abortRest) break;
						}
					}
				}
	},
	
	_changeListener: function(event) {
	      var self=Formvalidator;
				var ok=true;
				var abortRest=false;
				ErrorHandler.resetError();
				var field=DBcore.getTarget(event);
				var classes=field.className.split(' ');
						self._datetestHasRun=false;
						self._timetestHasRun=false;
						for (var j=0;j<classes.length;j++) {
  						  var ClassParts=DBcore.getClassParts(classes[j]);
  							var classFunction=ClassParts.classFunction;
  							var classParams=ClassParts.classParams;
  							switch (classFunction) {
												case 'addToSum':
													 self._handleAddToSum(field,classParams);
													 break;
												case 'autoPostal':
													 self._handleAutoPostal(field,classParams);
													 break;
												case 'clearfields':
													 self._handleClearfields(field,classParams);
													 break;
												case 'cpr':
													 ok=self._handleCPR(field);
													 break;
  										 		case 'date':
													 ok=self._handleDate(field,classParams);
													 break;
												case 'dateOutsideWeekEnds':
													 ok=self._handleDateOutsideW(field,classParams);
													 break;
  												case 'email':
													 ok=self._handleEmail(field);
													 break;
  										 		case 'fixdate':
													 ok = (ok) ? self._handleDate(field,classParams):false;
													 break;
  												case 'fixtime':
  													 self._handleTime(field,classParams);
												case 'integerGreater':
													 ok=self._handleIntegerGreater(field,classParams);
													 break;
												case 'integerLess':
													ok=self._handleIntegerLess(field,classParams);
													break;
    											case 'maxlength':
													ok=self._handleMaxLength(field,classParams);
													break;
    											case 'minlength':
													 ok=self._handleMinLength(field,classParams);
													 break;
												case 'noLetters':
													 ok=self._handleNoLetters(field);
													 break;
												case 'officedays':
													 self._handleSelectChoice(field,['--'],true)
													 break;
  												case 'positiveInteger':
  														 ok=self._handlePositiveInteger(field);
  														 break;
												case 'onlyIfVisible':
														  abortRest=self._handleOnlyIfVisible(field);
														  break;break;
												case 'resetfields':
														 self._handleResetfields(field,classParams);
														 break;
  												case 'show':
  														 if (classParams[0]!=null) self._handleShowOnValue(field,classParams);
  														 break;
  												case 'showClr':
  														 self._handleShowAndClear(field,classParams);
  														 break;
  												case 'showhide':
  														 // Not impl.
  														 break;
												case 'showElementAlways':
  														 self._handleShowAlways(field,classParams);
  														 break;
												case 'startime':
														 self._handleStartime(field,classParams);
														 break;
  												case 'time':
  														 ok=self._handleTime(field,classParams);
  														 break;
  												case 'trim':
  														 self._handleTrim(field);
  														 break;
  												// insert additional CHANGE event atrributes in alphabetical order
  						}
      				if (!ok) {
      					 ErrorHandler.showErrorInline(self.errorId,field.id);
  							 ErrorHandler.setErrorMark(field.id);
								 break;
      				}
							if (abortRest) break;
					 }
  				 var ButtonsToHandle=ButtonToolbox.checkForActivation(field);
  				 if (ButtonsToHandle.found) {
  						 		for (var j=0;j<ButtonsToHandle.targets.length;j++) {
											if(ok) {
  											 ButtonToolbox.activateByRequired(ButtonsToHandle.targets[j]);
											} else {
												 ButtonToolbox.deactivateButton(ButtonsToHandle.targets[j]);
											}
  								}
  				 }
					 for (var j=0;j<self.pseudoChangeElements.length;j++) {
						var pcElement=self.pseudoChangeElements[j];
						classes=pcElement.className.split(' ');
						for (var i=0;i<classes.length;i++) {
  						  var ClassParts=DBcore.getClassParts(classes[i]);
  							var classFunction=ClassParts.classFunction;
  							var classParams=ClassParts.classParams;
								switch (classFunction) {
											 case 'hideMeOnChange':
											 			self._handleHideMeOnChange(pcElement);
											 			break;
											 case 'hideMeOnSelected':
											 			self._handleHideShowMeOnSelected(pcElement,classParams,'hide');
														break;
											 case 'showMeOnSelected':
											 			self._handleHideShowMeOnSelected(pcElement,classParams,'show');
														break;
											 case 'showHideMeOnSelected':
											 			self._handleHideShowMeOnSelected(pcElement,classParams,'follow');
														break;
											 case 'showHideRstMeOnSelected':
											 			self._handleHideShowMeOnSelected(pcElement,classParams,'follow');
														if (Formvalidator.lastOnMeOperation=='hide') Formvalidator._resetChildren(pcElement);
														break;
											 case 'showHideMeOnMultiOr':
											 			self._handleShowHideMeOnMultiOr(pcElement,classParams);
														break;
											 case 'starMeOnSelect':
											 			self._handleStarMeOnSelect(pcElement,classParams);
														break;
								}
						}
				}
	},
	
	_clickListener: function(event) {
	  		var self=Formvalidator;
				var ok=true;
				var abortRest=false;
				var abortPseudo=false;
				var field=DBcore.getTarget(event);
				var classes=field.className.split(' ');
				for (var i=0;i<classes.length;i++) {
  						  var ClassParts=DBcore.getClassParts(classes[i]);
  							var classFunction=ClassParts.classFunction;
  							var classParams=ClassParts.classParams;
  							switch (classFunction) {
										case 'infoMessage':
  												abortPseudo = self._handleInfoMessage(field,classParams);
  												break;
										case 'clearfields':
  												self._handleClearfields(field,classParams);
  												break;
										case 'branchChooser': 
												  self._handleBranchChooser(field,classParams);
												  break;
										case 'onlyIfVisible':
													abortRest=self._handleOnlyIfVisible(field);
													break;
										case 'resetfields':
												  self._handleResetfields(field,classParams);
												  break;
										case 'radioShow': 
												   self._handleRadioShow(field,classParams);
													 break;
										case 'radioMultiHide': 
												   self._handleRadioMultiHide(field,classParams);
													 break;
										case 'radioHide': 
												   self._handleRadioHide(field,classParams);
													 break;
										case 'sendform': 
												if (classParams[0]&& classParams[0]=='afterlocalscript') {
													 ok=LocalCBscript.beforevalidation();
													 if (ok) {
															ok=self.formisvalid('');
															if (ok) {
																 ok=LocalCBscript.aftervalidation();
															}
													 }
												} else {
												 ok=self.formisvalid('');
												}
											  if (ok) self._handleSendForm(field);
											  break;
										case 'sendZoomioForm':
													ok=self.formisvalid('');
													if (ok && classParams[0]) self._handleSendZoomioForm(field,classParams[0]);
													break;
										case 'submit': // Not office 2007 CMS compliant
												  var formname = (classParams[0]!='') ?classParams[0] :DBcore.getTarget(event).form.name;
												  ok=self.formisvalid(formname);
												  var theform=document.forms[formname];
												  if (ok && theform!=null) {theform.submit();}
												  break;
								}
								if (abortRest) break;
								if (abortPseudo) return;
				}	
				for (var j=0;j<self.pseudoClickElements.length;j++) {
						var pcElement=self.pseudoClickElements[j];
						classes=pcElement.className.split(' ');
						for (var i=0;i<classes.length;i++) {
  						  var ClassParts=DBcore.getClassParts(classes[i]);
  							var classFunction=ClassParts.classFunction;
  							var classParams=ClassParts.classParams;
								switch (classFunction) {
											 case 'hideMeOnCheckedOr':
											 			self._handleHideMeOnCheckedOr(pcElement,classParams);
														break;
											 case 'hideMeOnChecked':
											 			self._handleHideShowMeOnChecked(pcElement,classParams,'hide');
														break;
											 case 'showMeOnChecked':
											 			self._handleHideShowMeOnChecked(pcElement,classParams,'show');
														break;;
											 case 'showMeOnMultichecked':
											 			self._handleHideShowMeOnMultichecked(pcElement,classParams,'show');
														break;
											 case 'showHideRstMeOnChecked':
											 			self._handleHideShowMeOnChecked(pcElement,classParams,'ORshow');
														if (Formvalidator.lastOnMeOperation=='hide') Formvalidator._resetChildren(pcElement);
														break;
								}
						}
				}			
	},
	
	_mouseoverListener: function(event) {
			var self=Formvalidator;
			var element=DBcore.getTarget(event);
			var classes=element.className.split(' ');
					for (var i=0;i<classes.length;i++) {
  						  var ClassParts=DBcore.getClassParts(classes[i]);
  							var classFunction=ClassParts.classFunction;
  							var classParams=ClassParts.classParams;
  							switch (classFunction) {
											 case 'exitfields':
											 			self._handleExitfields(element);
														break;
											 case 'defaultbutton':
											 			self._handleExitfields(element);
														break;
								}
					}
					
	},
	
	_keydownListener: function(event) {
			 var self=Formvalidator;
			 var ok=true;
			 var charCode = (event.charCode) ? event.charCode :((event.which) ? event.which : event.keyCode);
			 switch (charCode){
			 	  case 13:
							 var field=DBcore.getTarget(event);
							 var formname = field.form.name;
							 ok=self.formisvalid(formname);
							 if (ok && theform!=null) {
							 		self._handleSendForm(field);
							 } else {
								 DBcore.preventDefault(event);
							 }
					break;
					// insert additional keydown charactercodes in alphabetical order
			 }
	},
	
	_allowCbaseOperations: function() {
			var self=Formvalidator;
			var cBaseCategoryList=self._cBaseCategoryList;
			var cBaseSubjectList=self._cBaseSubjectList;
			for (var k=0;k<cBaseCategoryList.length;k++) {
				 self._handleCbaseCategory(cBaseCategoryList[k]);
			}
			for (var l=0;l<cBaseSubjectList.length;l++) {
				 self._handleCbaseSubject(cBaseSubjectList[l]);
			}
	},
	
	_clearProperties: function() {
		var self=Formvalidator;
	  self._cBaseCategoryList=[];
		self._cBaseSubjectList=[];
	},
		
	_handleDate: function(field,classParams) {
				var self=Formvalidator;
				var ok=true;
				var delim = '.';
				if (field.value!='') {
  				var dateCheck=DateToolbox.isValidDate(field.value);
					if (!dateCheck.isValid) {
  					 ok=false;
  					 self.errorId=dateCheck.errorId;
						 if (dateCheck.errorId=='N4') {
						 		if (classParams[0] && classParams!='P') {
								  delim = (classParams[0]=='D') ? '-':'/';
								}
						 		field._speclist=delim;
						 }
  				} else {
  					 var format= (classParams.length<1) ? 'P' : classParams[0];
  					 DateToolbox.writeDateToFormat(format,field.id);
  				}
  				self._datetestHasRun=true;
				}
				return ok;
	},
	
	_handleDateOutsideW: function(field,classParams) {
	     var self=Formvalidator;
			 var ok=true;
			 if (field.value!='') {
			 		var dateCheck=DateToolbox.isNotInWeekend(field.value);
					if (!dateCheck.errorId=='') {
  					 ok=false;
  					 self.errorId=dateCheck.errorId;
					} else if (dateCheck.notWeekend==false) {
						 ok=false,
						 self.errorId='D5';
  				} else {
  					 var format= (classParams.length<1) ? 'P' : classParams[0];
  					 DateToolbox.writeDateToFormat(format,field.id);
						 if (classParams.length==2) {
						 		var ekstradage=classParams[1];
								var DateInFuture= DateToolbox.isDaysAHead(field.value,ekstradage);
								if (!DateInFuture.ok) {
									 ok=false;
									 if (DateInFuture.difference>0) {
    									 self.errorId='D7';
    									 field._specmin=(ekstradage*24);
									 } else {
									 	   self.errorId='D8';
									 }
								}
						 }
  				}
  				self._datetestHasRun=true;
			 }
			 return ok;
	},
	
	_handleEmail: function(field){
				var self=Formvalidator;
				var ok=true;
				if (field.value!='') {
					if (!StringToolbox.isEmail(field.value)) {
  					 ok=false;
  					 self.errorId='F4';
  				}
				}
				return ok;
	},
	
	_handleCVRorReg8090: function(field,mode) {
	     var self=Formvalidator;
			 var ok=true;
			 var CVR;
			 if (field.value!='') {
			 		switch (mode) {
			 					 case 'dk': 
								 			CVR =StringToolbox.isCVRorReg8090(field.value);
											break;
								 case 'se':
								 			CVR =StringToolbox.isOrgNr(field.value);
											break;
								 default:
								 			CVR.ok=false;
											break;
					}
					if (!CVR.ok) {
  					 ok=false;
  					 self.errorId='N34';
  				} else {
					   field.value=CVR.correctedvalue;
					}
				}
			 return ok;
	},
	
	_handleCPR: function(field) {
			var self=Formvalidator;
			var ok=true;
			var cprLength;
			var CPR={ok:false,correctedvalue:''};
			var htmlatr=document.getElementsByTagName('html')[0].attributes;
			var languagecode=htmlatr.lang.value;
			switch (languagecode) {
				case 'da':
						 cprLength=10;
						 break;
				case 'sv':
						 cprLength=10;
						 break;
				case 'nb':
						 cprLength=11;
						 break;
			}
			CPR=StringToolbox.isCPR(field.value,cprLength);
			if (!CPR.ok) {
				 ok=false;
  			 self.errorId='N35';
				 field._specmin=cprLength;
			} else {
				 field.value=CPR.correctedvalue;
			}
			return ok;
	},
	
	_handleIntegerGreater: function(field,classParams) {
	   var ok=true;
		 var self=Formvalidator;
		 var fieldvalue=field.value;
		 if (fieldvalue!='') {
		 		if (StringToolbox.isNumber(fieldvalue,'','-')) {
					 var minvalue = classParams[0];
					 minvalue = (minvalue.charAt(0)=='n') ? '-'+minvalue.substring(1) : minvalue;
					 if (parseFloat(fieldvalue)<=parseFloat(minvalue)) {
					 		field._specmin=minvalue;
					 		self.errorId='N12';
					 		ok=false;
					 }
				} else {
					 self.errorId='N8';
					 ok=false;
				}
		 }
		 return ok;
	},
	
	_handleIntegerLess: function(field,classParams) {
	   var ok=true;
		 var self=Formvalidator;
		 var fieldvalue=parseInt(field.value);
		 if (fieldvalue!='') {
		 		if (StringToolbox.isNumber(fieldvalue,'','')) {
					 var maxvalue = parseInt(classParams[0]);
					 if (fieldvalue>=maxvalue) {
					 		field._specmax=maxvalue;
					 		self.errorId='N13';
					 		ok=false;
					 }
				} else {
					 self.errorId='N8';
					 ok=false;
				}
		 }
		 return ok;
	},
	
	_handleMinDigits: function(field,classParams) {
				var self=Formvalidator;
				var ok=true;
  			if (field.value!='') {
  				var minimum=classParams[0];
  				var Result = StringToolbox.hasMinimumDigits(field.value,minimum);
  				if (!Result.overall) {
  					 ok=false;
  					 if (!Result.correctsize) {
  					 		self.errorId='N1';
  							field._specmin=minimum;
  					 } else if (!Result.isnumber) {
  					 	  self.errorId='N3';
  					 }
  				}
				}
				return ok;
	},
	
	_handleMaxDigits: function(field,classParams) {
				var self=Formvalidator;
				var ok=true;
				if (field.value!='') {
  				var maximum=classParams[0];
  				var Result = StringToolbox.hasMaxDigits(field.value,maximum);
  				if (!Result.overall) {
  					 ok=false;
  					 if (!Result.correctsize) {
  					 		self.errorId='N2';
  							field._specmax=maximum;
  					 } else if (!Result.isnumber) {
  					 	  self.errorId='N3';
  					 }
  				}
				}
				return ok;
	},
	
	_handleMaxLength: function(field,classParams) {
	    var self=Formvalidator;
			var ok=true;
			if (field.value!='') {
  			var fieldValue=field.value;
  			var maximum=classParams[0];
  			var cut = (classParams[1]) ? true : false;
  			var Result = StringToolbox.hasMaxchars(fieldValue,maximum);
  			if (!Result.overall) {
  				 ok=false;
  				 self.errorId='F6';
  				 field._specmax=maximum;
  				 if (cut) {
  				 		field.value=fieldValue.substring(0,maximum);
  				 }
  			}
			}
			return ok;
	},
	
	_handleMinLength: function(field,classParams) {
		    var self=Formvalidator;
				var ok=true;
				if (field.value!='') {
  				var minimum=classParams[0];
  				var Result = StringToolbox.hasMinchars(field.value,minimum);
  				if (!Result.overall) {
  					 ok=false;
  					 self.errorId='F7';
  					 field._specmin=minimum;
  				}
				}
				return ok;
	},
	
	_handleOnlyIfVisible: function(element) {
	  return (DBcore.hasHiddenParent(element) || DBcore.hasClass(element,'hide')) ? true : false;
	},

	
	_handlePositiveInteger: function(field){
				var self=Formvalidator;
				var ok=true;
				if (field.value!='') {
  				if (!StringToolbox.isPositiveInteger(field.value)) {
  					 ok=false;
  					 self.errorId='F2';
  				}
				}
				return ok;
	},
	
	_handleNotNegativeInteger: function(field){
				var self=Formvalidator;
				var ok=true;
				if (field.value!='') {
  				if (!StringToolbox.isNotNegativeInteger(field.value)) {
  					 ok=false;
  					 self.errorId='F3';
  				}
				}
				return ok;
	},
	
	_handleRequired: function(field,classParams){
				var self=Formvalidator;
				var ok=true;
				if (field.type=='select-one') {
					 if (field.selectedIndex==0) {
  					 	ok=false;
      				self.errorId='F5';
					 }
				} else {
    				if (!StringToolbox.isNotEmpty(field.value,true)) {
    					 ok=false;
							 switch (classParams[0]) {
    							 case 'userid':
									 					self.errorId='F9';
														var digits = (classParams[1]) ? classParams[1]:8;
														field._specmin=digits;
														break;
									 case 'address':
									 					self.errorId='F10';
														break;
									 case 'postal':
									 					self.errorId='F11';
														break;
									 case 'cityname':
									 					self.errorId='F12';
														break;
									 case 'telephone':
									 					self.errorId='F13';
														break;
									 case 'fullname':
									 					self.errorId='F14';
														break;
    							 default: 
        					 					self.errorId='F1';
    												break;
							}
    				}
				}
				return ok;
	},
	
	_handleRequiredGroup: function(field,classParams) {
			var ok=true;
			var checkcount=0;
			var textcount=0;
			var checkbox;
			var textfield;
			var checkboxParams;
			var count;
			var inputs;
			var groupname=classParams[0];
	    if (groupname!='' && !DBcore.findInArray(Formvalidator._requiredGroupsHandled,groupname)) {
				 Formvalidator._requiredGroupsHandled.push(groupname);
				 count= (classParams[1]) ? parseInt(classParams[1],10): 0;
				 inputs=document.getElementsByTagName('input');
				 if (field.type=='checkbox' || field.type=='radio') {
  				 for (var i=0;i<inputs.length;i++) {
  				 		 checkbox=inputs[i];
  				 		 if ((checkbox.type=='checkbox' || checkbox.type=='radio') && DBcore.hasTrigger(checkbox,'requiredGroup')) { // Against W3C use of radiobuttons, we know.
  						 		checkboxParams = DBcore.getTriggerParams(checkbox,'requiredGroup');
  								if (checkboxParams[0]==groupname && checkbox.checked) checkcount++;
  						 }
  				 }
  				 if (checkcount < count) {
  				 		ok=false;
  				 		Formvalidator.errorId='F8';
  						field._specmin=count;
  				 }
				 } else if (field.type='text') {
				 	 	  for (var i=0;i<inputs.length;i++) {
									textfield=inputs[i];
									if (textfield.type='text' && DBcore.hasTrigger(textfield,'requiredGroup')) {
										 textfieldparams=DBcore.getTriggerParams(textfield,'requiredGroup');
										 if (textfieldparams[0]==groupname && textfield.value!='')textcount++;
									}
							}
							if (textcount < count) {
								 ok=false;
								 Formvalidator.errorId='F16';
								 var labelspec=DBcore.getLabelFor(field);
      					 if (labelspec.found) {
          					var label=labelspec.label;
          					 labeltxt=ErrorHandler._getLabeltxt(label);
        				 } else { // for sake of IE:
      							 labelspec=DBcore.getNearestLabel(field);
      							 if (labelspec.found) {
            					 label=labelspec.label;
            					 labeltxt=ErrorHandler._getLabeltxt(label);
        						 }
      					 }
								field._specmin=labeltxt;
							}
				 }
			}
			return ok;
	},
	
	_handleRequiredIfCheckbox: function(field,classParams) {
			 var self=Formvalidator;
			 var ok=true;
			 var checkbox=document.getElementById(classParams[0]);
			 var required = ((checkbox.checked && classParams[1]=='selected' ) || (!checkbox.checked && classParams[1]=='notselected')) ? true : false;
			 if (required && !StringToolbox.isNotEmpty(field.value,true)) {
					 ok=false;
					 self.errorId='F1';
				}
			 return ok;
	},
	
	_handleRequiredIfSelect: function(field,classParams) {
			 var self=Formvalidator;
			 var ok=true;
			 var selectbox=document.getElementById(classParams[0]);
			 var selectboxValue=DBcore.selectedValueOf(selectbox);
			 var requiredValue=classParams[1];
			 var required = (selectboxValue==requiredValue) ? true : false;
			 if (required && !StringToolbox.isNotEmpty(field.value,true)) {
					 ok=false;
					 self.errorId='F1';
				}
			 return ok;
	},
	
	_handleRequiredChecked: function(checkbox) {
			 var self=Formvalidator;
			 var ok=true;
			 if (checkbox.type=='checkbox' && !checkbox.checked) {
			 		ok=false;
					self.errorId='F15';
			 }
			 return ok;
	},
		
	_handleRequiredIfVisible: function(field) {
	     var self=Formvalidator;
			 var ok=true;
			 if (field.type=='select-one') {
			 		 if (field.selectedIndex==0 && (!DBcore.hasHiddenParent(field) && !DBcore.hasClass(field,'hide'))) {
					    ok=false;
    					self.errorId='F5';
					 }
			 } else {
    			 if (!StringToolbox.isNotEmpty(field.value,true) && (!DBcore.hasHiddenParent(field) && !DBcore.hasClass(field,'hide'))) {
    			 		ok=false;
    					self.errorId='F1';
    			 }
			 }
			 return ok;
	},
	
	_handleStartime: function(field,classParams) {
			var triggervalue=classParams[0];
			var target = document.getElementById(classParams[1]);
			if (target && field.type=='select-one') {
				 var selectboxValue=DBcore.selectedValueOf(field);
				 if (selectboxValue==triggervalue) {
				 		DisplayToolbox.starcontrol(target,'visible');
				 } else {
				 	  DisplayToolbox.starcontrol(target,'hidden');
				 }
			}
	},
	
	_handleStarMeOnSelect: function(field,classParams) {
		 var selectbox=document.getElementById(classParams[0]);
		 var selectValue=classParams[1];
		 if (field && selectbox) {
		 		var selectboxValue=DBcore.selectedValueOf(selectbox);
				if (selectValue==selectboxValue) {
					 DisplayToolbox.starcontrol(field,'visible');
				} else {
					 DisplayToolbox.starcontrol(field,'hidden');
				}
		 }
	},
		
	_handleTime: function(field,classParams) {
				var self=Formvalidator;
				var ok=true;
				if (field.value!='') {
  				var validTime=DateToolbox.isValidTime(field.value);
  				if (!validTime['isValid']) {
  					 ok=false;
  					 self.errorId=validTime['errorId'];
  				} else {
  					 if (classParams.length>0) {
  					 		DateToolbox.roundMinutes(classParams[0]);
  					 }
  					 DateToolbox.writeTimeToFormat('C',field.id);
  				}
  				self._timetestHasRun=true;
				}
				return ok;
	},
	
	_handleTrim: function(field) {
				if (field.value!='') {
					 field.value=DBcore.trim(field.value);
				}	
	},
	
	_handleShowAndClear: function(field,classParams) {
	  var self=Formvalidator;
  	if (classParams.length>0) {
			var slaveFieldId=classParams[0];
			var slaveField=document.getElementById(slaveFieldId);
  		if ((field.type=='select-one' && DBcore.selectedValueOf(field)==slaveFieldId) || (field.type=='checkbox' && field.checked)) {
				 	if (classParams.length==1) { 							
						  DisplayToolbox.showFieldAndLabel(slaveField);
					} else if (classParams.length==2 && classParams[1]=='cb') { 
						  DisplayToolbox.showContainer(slaveField);
					}
  		} else {
					if (classParams.length==1) {
						 DisplayToolbox.hideFieldAndLabel(slaveField);
    				 slaveField.value='';
					} else if (classParams.length==2 && classParams[1]=='cb') {
							// hide container
						  DisplayToolbox.hideContainer(slaveField);
					}
  		}
		}
	},
	
	_handleShowOnValue: function(field,classParams) {
	  var self=Formvalidator;
		var target=document.getElementById(classParams[0]);
		var activationValue=classParams[1];
		var currentValue=DBcore.selectedValueOf(field);
		if (currentValue==activationValue) {
			 DisplayToolbox.showElement(target);
		} else {
			 DisplayToolbox.hideElement(target);
		}
	},
	
	_handleShowAlways: function(field,classParams) {
				var target=document.getElementById(classParams[0]);
				DisplayToolbox.showElement(target);
	},
	
	_handleSendForm: function(field) {
	  		var self=Formvalidator;
    		var found=false;
				var form=field.form;
				var block;
				var blockId;
				var action = form.__formActionUrl.value;
				var charset = form.__formCharset.value;
				var formId = form.__formID.value;
				var encoding = form.__formEncoding.value;
			  var divs=document.getElementsByTagName('DIV');
				for (var i=0;divs.length;i++) {
						if (divs[i].id.substr(0,12)=='ContactFormg') {
							 block=divs[i];
							 blockId=block.id;
							 found=true;
							 break;
						}
				}
				if (found) {
					 if (typeof LEADCallToAction != 'undefined') LEADCallToAction(); //non ELSE call
					 self.sendForm(block,formId,action,'post',encoding,charset);
				}
	},
	
	_handleSendZoomioForm: function(field,brand) {
				var self=Formvalidator;
				var found=false;
				var form=field.form;
				var block;
				var blockId;
				var charset = form.__formCharset.value;
				var formId = form.__formID.value;
				var encoding = form.__formEncoding.value;
				var divs=document.getElementsByTagName('DIV');
				for (var i=0;divs.length;i++) {
						if (divs[i].id.substr(0,12)=='ContactFormg') {
							 block=divs[i];
							 blockId=block.id;
							 found=true;
							 break;
						}
				}
				if (found) {
					 var hostUrl= self.subscriptionHostsURL[brand];
					 var func = '&func=' + document.getElementById("functionID").value;
					 var languageId = '&language_id=' + document.getElementById("language_idID").value;
					 var systemId = '&system_id=' + document.getElementById("system_idID").value;
					 var geURL = '&geurl=' + document.getElementById("general_error_urlID").value;
					 var URLparms = self._getParmsToURL(form);
					 var action = hostUrl+func+languageId+systemId+geURL+URLparms;
					 self.sendForm(block,formId,action,'post',encoding,charset);
				}
	},
	
	_getParmsToURL: function(tmpForm) {
					 var tmpString = '&parms=';
    			 for (var i=0; i<tmpForm.elements.length; i++) {
					   if (tmpForm.elements[i].name) {
        	 		 if(tmpForm.elements[i].name.indexOf("in")==0) {
            	 			tmpString += '~'+ tmpForm.elements[i].name + '=' + tmpForm.elements[i].value;
							 } else if(tmpForm.elements[i].name.indexOf("iv")==0) {
            	 	 	  if(tmpForm.elements[i].type == 'checkbox') {          
                					tmpString += '~'+ tmpForm.elements[i].name + '=' + tmpForm.elements[i].checked;                            
            				} else {
                			    tmpString += '~'+ tmpForm.elements[i].name + '=' + tmpForm.elements[i].value;
										}
        			}
					 }
    }
    return tmpString;
	},
	
	_handleClearfields: function(sourceobject,fields) {
		for (var i=0;i<fields.length;i++) {
		  document.getElementById(fields[i]).value='';
		}
	},
	
	_handleResetfields: function(sourceobject,fields) {
		var field=null;
		var fieldtype=null;
	  for (var i=0;i<fields.length;i++) {
				field=document.getElementById(fields[i]);
				Formvalidator._resetField(field);
		}
	},
	
	_resetChildren: function(target) {
				var dum;
				if (target.nodeType==1 && (target.tagName=='INPUT' || target.tagName=='SELECT' || target.tagName=='TEXTAREA')) {
					 Formvalidator._resetField(target);
				}
			 	var children=target.childNodes;
			 	for(var i=0;i<children.length;i++) { 
      	 	dum=Formvalidator._resetChildren(children[i]);
			 	}
				return dum;
	},
	
	_resetField: function(field) {
				switch(field.type) {
					case 'select-one':
							 field.selectedIndex=DBcore.findDefaultOption(field);
							 break;
					case 'checkbox':
							 field.checked=field.defaultChecked;
							 break;
					case 'radio':
							 field.checked=field.defaultChecked;
							 break;		 
					default:  // input text, textarea etc.
							 field.value=field.defaultValue;
							 break;
				}
	},
	
	_handleRadioShow: function(radio,classParams) {
		if (radio.checked) {
				 var targetId=classParams[0];
				 if (radio.value==classParams[1]) {
				 		var target=document.getElementById(targetId);
				 		DisplayToolbox.showElement(target);
				 }
		}
	},
	
	_handleRadioHide: function(radio,classParams) {
		if (radio.checked) {
				 var targetId=classParams[0];
				 if (radio.value==classParams[1]) {
				 		var target=document.getElementById(targetId);
				 		DisplayToolbox.hideElement(target);
				 }
		}
	},
	
	_handleRadioMultiHide: function(radio,classParams) {
		if (radio.checked) {
			 for (var i=0;i<classParams.length;i++) {
				 		var target=document.getElementById(classParams[i]);
			 		 if (target) {DisplayToolbox.hideElement(target);}
			 }
		}
	},	
		
	_handleHideMeOnChange: function(target) {
			  DisplayToolbox.hideElement(target);
	},
	
	_handleHideShowMeOnChecked: function(target,classParams,mode) {
				var checkbox;// or radio.
				var cmd='hide';
				var orFlag=false;
				for (var i=0;i<classParams.length;i++) {
    				checkbox=document.getElementById(classParams[i]);
						if (checkbox && !orFlag) {
    						switch(mode) {
    								case 'hide':
    										 if (checkbox.checked) {
												 		cmd='hide';
												 } else {
												 	  cmd='show';
												 }
    										 break;
    								case 'show':
    										 if (checkbox.checked) {
												 		cmd='show';
												 } else {
												 	  cmd='hide';
												 }
    										 break;
									 case 'ORshow':
									 			if (checkbox.checked) {
												 		cmd='show';
														orFlag=true;
												 }
												 break;
    						}
        				if (cmd=='hide') {
    							 DisplayToolbox.hideElement(target);
    						} else {
    							 DisplayToolbox.showElement(target);
									 window.setTimeout(function() {target.style.display="block";},150); // IE/CMS hack
    						}
        				Formvalidator.lastOnMeOperation=cmd;
						}
				}
	},
	
	_handleHideMeOnCheckedOr: function(target,classParams) {
	     var checkbox;// or radio.
			 var foundChecked=false;
			 for (var i=0;i<classParams.length;i++) {
    				checkbox=document.getElementById(classParams[i]);
						if (checkbox && checkbox.checked) {
							 foundChecked=true;
							 break;
						}
			 }
			 if (foundChecked) {
			 		DisplayToolbox.hideElement(target);
			 } else {
			 	  DisplayToolbox.showElement(target);
					window.setTimeout(function() {target.style.display="block";},150); // IE/CMS hack
			 }
	},
	
	_handleenableDisableMeOnChecked: function(target,classParams,mode) {
				var checkbox;// or radio.
				var cmd='';
				var xable= (mode=='normal') ? false:true;
				var xcmd = (mode=='normal') ? 'enable':'disable';
				for (var i=0;i<classParams.length;i++) {
    				checkbox=document.getElementById(classParams[i]);
						if (checkbox) {
							if (checkbox.checked) {
								 DBcore.disableChildren(target,xable);
								 cmd=xcmd;
							} else {
								 DBcore.disableChildren(target,xable);
								 cmd=xcmd;
							}
							Formvalidator.lastOnMeEnableOperation=cmd;
						}
				}
	},

	_handleHideShowMeOnMultichecked: function(target,classParams,mode) { // mode='hide' not impl.
				var allchecked=true;
				var checkbox;
				for (var i=0;i<classParams.length;i++) {
  				checkbox=document.getElementById(classParams[i]);
  				if (!checkbox || !checkbox.checked) {
  					 allchecked=false;
  					 break;
  				}
				}
				if (allchecked) {
					 DisplayToolbox.showElement(target);
					 Formvalidator.lastOnMeOperation='show';
				} else {
					 DisplayToolbox.hideElement(target);
					 Formvalidator.lastOnMeOperation='hide';
				}
	},
	
	_handleHideShowMeOnSelected: function(target,classParams,mode) {
				var selectbox=document.getElementById(classParams[0]);
				var cmd;
				if (selectbox) {
					 var selectedvalue=DBcore.selectedValueOf(selectbox);
					 switch (mode) {
					 		case 'hide':
					 				 if (selectedvalue==classParams[1]) {
  								 		cmd='hide';
									 }
									 break;
  						case 'show':
    					 	   if (selectedvalue==classParams[1]) {
      						 		cmd='show';
    							 }
  						case 'follow':
									 cmd='hide';
									 for (var i=1;i<classParams.length;i++) {
									 		 if (selectedvalue==classParams[i]) {
											 		cmd='show';
													break;
											 }
									 }
									 break;					 
					 }
					 if (cmd=='hide') {
					 		DisplayToolbox.hideElement(target);
					 } else {
					 	  DisplayToolbox.showElement(target);
							window.setTimeout(function() {target.style.display="block";},150); // IE/CMS hack
					 }
					 Formvalidator.lastOnMeOperation=cmd;
				}
	},
	
	_handleShowHideMeOnMultiOr: function(pcElement,classParams) {
			var showIt=false;
			var field;
			var testvalue;
			var value;
			var parmlength=classParams.length;
			if (parmlength%2==0) {
				 var i=0;
				 while (i<parmlength) {
				 		 field=document.getElementById(classParams[i]);
						 testvalue=classParams[i+1];
						 value = (field.type=='select-one')? DBcore.selectedValueOf(field): field.value;
						 if (value==testvalue) {
						 		showIt=true;
								break;
						 }
						 i=i+2;
				 }
			}
			if (showIt) {
				 DisplayToolbox.showElement(pcElement);
				 Formvalidator.lastOnMeOperation='show';
			} else {
				 DisplayToolbox.hideElement(pcElement);
				 Formvalidator.lastOnMeOperation='hide';
			}
	},
	
	_handleCbaseCategory: function(field) {
	   var categoryField=document.forms[0].MessageCategory;
		 if (categoryField) {
  		 var categoryPath=categoryField.value;
  		 var fieldValue='';
  		 if (field.type=='select-one') {
  		 		fieldValue=DBcore.selectedValueOf(field);
			 } else if (field.type=='radio') {
			 	  fieldValue= DBcore.getRadioValue(field);
  		 } else {
  		 	  fieldValue=field.value;
  		 }
			 if (field.type=='checkbox' && !field.checked) {
			   fieldValue='';
			 }
  		 categoryField.value=categoryPath+"\\"+fieldValue;
		 }
	},
	
	_handleSetCbaseSubject: function(field,params) {
		 var self=Formvalidator;
		 var position=(params[0]) ? params[0]-1 : '';
	   if (position!='') {
		 		self._cBaseSubjectList[position]=field;
		 } else {
		 	  self._cBaseSubjectList.push(field);
		 }
	},
	
	_handleCbaseSubject: function(field) {
	   var subjectField=document.forms[0].MessageSubject;
		 if (subjectField) {
  		 var subject=subjectField.value;
  		 var fieldValue='';
  		 if (field.type=='select-one') {
  		 		fieldValue=DBcore.selectedValueOf(field); 
			 } else if (field.type=='radio') {
			 	  fieldValue= DBcore.getRadioValue(field);
  		 } else {
  		 	  fieldValue=field.value;
  		 }
			 if (field.type=='checkbox' && !field.checked) {
			   fieldValue='';
			 }
  		 subjectField.value=subject+' -  '+fieldValue;
		 }
	},
	
	_handleOfficedays: function(listOfSelects) {
		var selectbox;
		var params;
		var count=0;
		var ahead=1;
		var mark=false;
		var includeYear=false;
		var dateObjList;
		var noweekends=true;
		var hollidayAr=DateToolbox.loadHolydays();
		for (i=0;i<listOfSelects.length;i++) {
				selectbox=listOfSelects[i];
				params=DBcore.getTriggerParams(selectbox,'officedays');
				count=params[0];
				ahead=params[1];
				mark = (params[2]=='mark') ? true:false;
				includeYear = (params[3]=='year') ? true : false;
				dateObjList=DateToolbox.getDateSerie(ahead,count,noweekends,hollidayAr,mark,includeYear);
				for (var j=0;j<dateObjList.length;j++) {
						selectbox.options[selectbox.options.length]=new Option(dateObjList[j].datestring,dateObjList[j].datestring,false,false);
				}
		}
	},
	
	_handleSelectChoice: function(selectbox,forbiddenIntroAr,firstOption) {
		var neutral= (firstOption) ? 0 : -1;
	  var selectedText=DBcore.selectedTextOf(selectbox);
		for (var i=0;i<forbiddenIntroAr.length;i++) {
				if (selectedText.substring(0,forbiddenIntroAr[i].length)==forbiddenIntroAr[i]) {
					 selectbox.selectedIndex=neutral;
				}
		}
	},
	
	_handleNoLetters: function(field) {
				var self=Formvalidator;
				var ok = StringToolbox.hasNoLetters(field.value,'strict');
				if (!ok) {
					 	  self.errorId='N3';
				}
				return ok;
	},
	
	_handleAddToSum: function(element,classParams) {
		
		
	},
	
	_handleAutoPostal: function(element,classParams) {
		if(element.value){
			if(typeof PostNumre != "undefined"){
				var liInputs = element.parentNode.getElementsByTagName("input");
				if(element.parentNode.tagName.toLowerCase() == "li" && liInputs.length == 2){
					var cityField;
					(liInputs[1] == element) ? cityField = liInputs[0] : cityField = element;
						if(PostNumre['Nr'+element.value]){
							cityField.value = PostNumre['Nr'+element.value];
						}
				}				
			}
		}		
	},
	
	_handleBranchChooser: function(element,classParams) {
		var self=Formvalidator;
		var url;
		var languagecode=classParams[0];
		var countrycode=classParams[1];
		var simplemode= (classParams[2]!=null) ? classParams[2]:'';
		var ebankextension = (simplemode!='simple')? '&ebank=true':'';
		self._branchchoicemode = (classParams[2])? classParams[2]:null;
	  if (element.type=='button' && countrycode && languagecode) {
			 DBcore.filterDomain();
			 url= '/'+languagecode+'-'+countrycode+'/Pages/Branchpopup.aspx?FindBranchInformation=true'+ebankextension;
			 if (self._branchwindow && !self._branchwindow.closed && self._branchwindow.location) {
			 		self._branchwindow.location.href = url;
			 } else {
			 	  self._branchwindow=window.open(url,'branchpop','height=600,width=800,scrollbars=yes');
			 }
			 if (window.focus) self._branchwindow.focus();
		}
	}, 
	
	_handleBranchChoice: function(BranchObj) {
	   var self=Formvalidator;
		 self._branchwindow.close();
		 var mode = self._branchchoicemode;
		 if (mode && mode=='mail') {
		 		var adressefelt=document.forms[0].AbbEmailAdr;
				var postkasse= 'R' + BranchObj.branchIntRegNr;
				adressefelt.value=postkasse;
		 }
		 var inputfields=document.getElementsByTagName('input');
		 for (var i=0;i<inputfields.length;i++) {
		 		 var field=inputfields[i];
		 		 if (field.type=='text') {
				 		if (DBcore.hasClass(field,'displaybranchName')) {
							 field.value=BranchObj.branchName;
						} else if (DBcore.hasClass(field,'displaybranchExtRegnr')) {
							 field.value=BranchObj.branchExtRegNr;
						}
				 }
		 }
	},
	
	_handleSetCbaseMail: function(field) {
			var adressefelt=document.forms[0].AbbEmailAdr;
			var mailvalue='';
	    switch(field.type) {
        		case 'select-one':
        				 mailvalue=DBcore.selectedValueOf(field);
        				 break;
        		case 'radio':
        				 mailvalue=DBcore.getRadioValue(field);
        				 break;
						default:
								 mailvalue=field.value;
								 break;
			}
			if (mailvalue!='') {
				 adressefelt.value=mailvalue;
			}
	},
	
	_handleSetCbaseMailSubjectCategory: function(field) {
			if (field.type=='select-one') {
  			var adressefelt=document.forms[0].AbbEmailAdr;
  			var mailvalue=DBcore.selectedValueOf(field);
				adressefelt.value=mailvalue;
  			var subjectField=document.forms[0].MessageSubject;
				var subjectText=DBcore.selectedTextOf(field);
				subjectField.value=subjectField.value + ' ' + subjectText;
				var categoryField=document.forms[0].MessageCategory;
				categoryField.value=categoryField.value +  '- ' +subjectField;
			}
	},
	
	_setPeregrineParameters: function() {
	  if (Formvalidator._peregrineEnabled) {
			 if (document.getElementById('userid')) {document.getElementById('Contact1UserId').value = document.getElementById('userid').value;}
    	 if (document.getElementById('userid')) {document.getElementById('DepartmentNumber').value = document.getElementById('userid').value;}
    	 if (document.getElementById('userid')) {document.getElementById('Brugerid').value = document.getElementById('userid').value;}
			 
    	 if (document.getElementById('contactname')) {document.getElementById('Contact1Name').value = document.getElementById('contactname').value;}
    	 if (document.getElementById('contactname')) {document.getElementById('Navn').value = document.getElementById('contactname').value;}
			 
			 if (document.getElementById('name')) {document.getElementById('Contact1Name').value = document.getElementById('name').value;}
    	 if (document.getElementById('name')) {document.getElementById('Navn').value = document.getElementById('name').value;}
			 
    	 if (document.getElementById('question')) {document.getElementById('ProblemDescription').value = document.getElementById('question').value;}
			 
    	 if (document.getElementById('email')) {document.getElementById('Emailadr').value = document.getElementById('email').value;}
    	 if (document.getElementById('email')) {document.getElementById('db1stcontact').value = document.getElementById('email').value;}
			 
    	 if (document.getElementById('telephone')) {document.getElementById('Contact1Phone').value = document.getElementById('telephone').value;}
    	 if (document.getElementById('telephone')) {document.getElementById('Telefonnummer').value = document.getElementById('telephone').value;}
		}
	},
	
	_initiatePeregrine: function() { // Under development/OL
			 var peregrineDiv = document.getElementById('peregrineDiv');
			 if (peregrineDiv) {
			 		Formvalidator._peregrineEnabled=true;
			 		document.forms[0].Peregrine.value='Yes'; // Peregrine Flag Hack
					
					
			 }
	},
		
	_handleExitfields: function(element) {
	     var inputs=document.getElementsByTagName('input');
		 	 for (var i=0;i<inputs.length;i++) { 
			 		 inputs[i].blur();
			 }
	},
	
	_evaluateKvitURL: function() {
	    var kvitURL = document.forms[0].kvitURL;
		  if (kvitURL && kvitURL.value=='*') {
				 var recieptSuffix=Formvalidator._getReciept();
				 var newURL = document.location.href.replace('.aspx',recieptSuffix);
				 var parts = newURL.split('?');
				 newURL = parts[0];
				 kvitURL.value=newURL;
		  }
	},
	
	_getReciept: function() {
		var suffix='-Receipt.aspx';
		var htmlatr=document.getElementsByTagName('html')[0].attributes;
		var languagecode=htmlatr.lang.value;
		switch (languagecode) {
				case 'da': 
						suffix='-Kvittering.aspx';
						break;
				case 'sv': 
						suffix='-kvittosida.aspx';
						break;
				case 'fi': 
						suffix='-Kuittaus.aspx';
						break;
				case 'nb': 
						suffix='-Kvittering.aspx';
						break;
		}
		return suffix;
	},
	
		_handleInsertFromURL: function() {
	   var self=Formvalidator;
		 var fields=[];
		 var element;
		 var insertParams=[];
		 var urlParamValue;
		 var valuecomponents;
		 var urlParams = DBcore.getURLparams();
		 for (var n=0;n<self.inputs.length;n++) {fields.push(self.inputs[n]);}
		 for (var n=0;n<self.selects.length;n++) {fields.push(self.selects[n]);}
		 for (var n=0;n<self.textareas.length;n++) {fields.push(self.textareas[n]);}
		 for (var i=0;i<fields.length;i++) {
		 		element=fields[i];
				if (DBcore.hasTrigger(element,'insertFromURL')) {
					 insertParams=DBcore.getTriggerParams(element,'insertFromURL');
					 urlParamValue=urlParams[insertParams[0]];
					 if (urlParamValue=='' && insertParams.length>1) {
					 		urlParamValue=insertParams[1];
					 }
					 if (typeof urlParamValue !='undefined') {
    					 valuecomponents=urlParamValue.split('#');
    					 urlParamValue=valuecomponents[0];
    					 urlParamValue= decodeURIComponent(urlParamValue);
    					 switch(element.type) {
        									case 'select-one':
        											 DBcore.setSelectedValue(element,urlParamValue);
        											 break;
        									case 'radio':
        											 DBcore.setRadioValue(element,urlParamValue);
        											 break;
        									case 'checkbox':
        											 element.checked = (urlParamValue.toUpperCase()=='TRUE') ? true: false;
        											 break;
    											default:
    													 element.value=urlParamValue;
    													 break;
        			}
    				}
				}
		 }
	},
	
	_appendURLtoFields: function() {
	   var self=Formvalidator;
		 var block=document.getElementsByTagName('BODY')[0];
		 var countFlds=0;
		 var fldname='';
		 var URLfield;
		 var URLfieldLabel;
		 var URL = window.location.href;
		 var mustBeCreated=false;
		 for (var i=0;i<self.includeURLfieldOnDomains.length;i++) {
		 		 if (URL.indexOf(self.includeURLfieldOnDomains[i])>-1) {
				 		URLfield=document.getElementById('sourceURL');
						if (!URLfield) {
				 			 mustBeCreated=true;
						}
						break;
				 }
		 }
		 if (mustBeCreated) {
		 		for (var i=0;i<self.inputs.length;i++) {
						fldname=self.inputs[i].name;
						if (fldname.substring(0,3)=='Fld'|| fldname.substring(0,3)=='fld') countFlds++;
				}
				for (var i=0;i<self.textareas.length;i++) {
						fldname=self.textareas[i].name;
						if (fldname.substring(0,3)=='Fld'|| fldname.substring(0,3)=='fld') countFlds++;
				}
				for (var i=0;i<self.selects.length;i++) {
						fldname=self.selects[i].name;
						if (fldname.substring(0,3)=='Fld'|| fldname.substring(0,3)=='fld') countFlds++;
				}
				countFlds++;
		 		for (var i=0;i<self.divs.length;i++) {
						if (self.divs[i].id.substr(0,12)=='ContactFormg') {
							 block=self.divs[i];
							 break;
						}
				}
		 		URLfield = document.createElement('input');
				URLfield.type='hidden';
				URLfield.id='sourceURL';
				URLfield.name='Fld'+countFlds;
				URLfield.value=URL;
				URLfieldLabel=document.createElement('input');
				URLfieldLabel.type='hidden';
				URLfieldLabel.name='Txt'+countFlds;
				URLfieldLabel.value='Data source ';
				block.appendChild(URLfield);
		 		block.appendChild(URLfieldLabel);
		 }
	},

_insertSecurityFooter: function(){
			var self=Formvalidator; 
			var securityNode = document.createElement('div');
			var formspans = DBcore.getElementsByClass('formspan');
			if (formspans.length!=0) {
				 var formspan= formspans[formspans.length-1];
				 var messageString=ErrorHandler.getMessageFromXML('M1');
				 if (messageString!='') {
				 		var messageparts = messageString.split(':');
						var securityHTML = '<fieldset><div class="contactformIntrotext">';
						securityHTML += '<strong>'+messageparts[0]+'</strong><br />';
						securityHTML += messageparts[1]+ '</div></fieldset>'
				 		securityNode.setAttribute('class','fieldgroup head whitetop');
				 		securityNode.innerHTML=securityHTML;
		 		 		formspan.appendChild(securityNode);
				 }
			}
},

_handleInfoMessage: function(field,classParams) {
var id, messageType, width, height, left, top;
	(classParams[0]) ? id = classParams[0] : id = false;
	(classParams[1]) ? messageType = classParams[1] : messageType = false;
	(classParams[2]) ? width = classParams[2] : width = 100;
	(classParams[3]) ? height = classParams[3] : height = 100;
	(classParams[4]) ? left = classParams[4] : left = "center";
	(classParams[5]) ? top = classParams[5] : top = "center";	
	MessageHandler.newDiv(id, messageType, width, height, left ,top);	
	return true;
},

_lastEnforcer: function() {
	var Lis = [];
	var sidsteLi;
	var fieldset;
  var fieldsets = document.getElementsByTagName('fieldset');
	if (fieldsets) {
		 for (var i=0;i<fieldsets.length;i++) {
		 		 fieldset=fieldsets[i];
  	 		 if (DBcore.hasClass(fieldset,'group')) {
    				 Lis = fieldset.getElementsByTagName('li');
    				 if (Lis) {
    				 		sidste = Lis[Lis.length-1];
    						if (!DBcore.hasClass(sidste,'last')) {
									 DBcore.addClass(sidste,'last');
								}
    				 }
				 }
		 }	 
	}
}

}
DBcore.start(Formvalidator);


/* Global functions  */

function Branch(BranchObj) {
	 // Relay input from child window to handling object:
	 Formvalidator._handleBranchChoice(BranchObj);
}

function LEADCallToAction() {
  if(top.bruger != null &&
  	 top.bruger.lead != null &&
     typeof(top.bruger.lead) != 'undefined' &&
     top.bruger.lead[10] != null &&
     typeof(top.bruger.lead[10]) != 'undefined') {
  
      var leadID = top.bruger.lead[10];

			if(typeof top.indhold.pd_id === 'undefined') {
				var pd_id = '0';
			} else {
				var pd_id = top.indhold.pd_id;
			}
      
      top.logo.crmResponse('','CA',pd_id,leadID);
      top.bruger.lead = null;
	}
}
	

