var IE		= document.all?true:false;

setAnchorEvents = function() {
		
	var anchors = document.getElementsByTagName('A');
	var len 	= anchors.length;
	for(i = 0; i < len; i++) {

		anchor	= anchors[i];
		aDialog	= (anchor.getAttribute('rel') && anchor.getAttribute('rel') == 'dialog-tooltip') ? true : false;
		
		if(IE) {
			anchor.attachEvent("onfocus", focusEventAction);

			if(aDialog){
				anchor.attachEvent('onclick', displayDialog);
			}

		} else {
			anchor.addEventListener("focus", focusEventAction, true);

			if(aDialog){
				anchor.addEventListener('click', displayDialog, false);
			}

		}
	}
}

focusEventAction = function(evt) {

	if(IE) {
		var obj = event.srcElement;
	} else {
		var obj = evt.currentTarget;
	}

	obj.blur();
}

displayTpl = function(tpl) {
	var content	= document.getElementById('templates');
	var divs	= content.getElementsByTagName('DIV');
	var len		= divs.length;
	
	// hide all
	for(var i=0; i<len; i++) {
		var div	= divs[i];
		if(div.className == 'show') {
			div.className = 'hide';
		}
	}
	
	var selectedTpl	= document.getElementById(tpl);
	selectedTpl.className = 'show';
}

displayMenuItem = function(item) {
	var menu	= document.getElementById('menu');
	var lists	= menu.getElementsByTagName('LI');
	var len		= lists.length;
	
	// reset all
	for(var i=0; i<len; i++) {
		var li	= lists[i];
		if(li.className == 'selected') {
			li.className = '';
		}
	}
	
	var selectedItem	= document.getElementById(item);
	selectedItem.className = 'selected';
}

focusEventAction = function(evt) {
	
	if(IE) {
		var obj = event.srcElement;
	} else {
		var obj = evt.currentTarget;
	}
	
	obj.blur();
}

var ClassName = {
	add:function(node, name) {
		if(!this.contains(node, name))
			node.className += node.className? (' ' + name) : name;
	},

	remove:function(node, name) {
		if(node.className)
			node.className = node.className.replace(new RegExp('(^|\\s)'+name+'(\\s|$)','g'), ' ');
	},

	contains:function(node, name) {
		return new RegExp('(^|\\s)'+name+'(\\s|$)').test(node.className);
	},

	swap:function(node, old, name) {
		node.className = this.contains(node, old)?
			node.className.replace(new RegExp('(^|\\s)'+old+'(\\s|$)','g'), '$1'+name+'$2') : 
			node.className.replace(new RegExp('(^|\\s)'+name+'(\\s|$)','g'), '$1'+old+'$2');
	},

	toggle:function(node, name) {
		if(!this.contains(node, name)) {
			this.add(node, name);
		} else {
			this.remove(node, name);
		}
	}
}


//*********************************
// TPL EK2008Bern
//*********************************

CheckboxSelector = function(arr){
	this.selectors = arr;
}

CheckboxSelector.prototype.appendSelector = function(str){
 	this.selectors.push(str);
 	this.selectors = this.selectors.uniq();
}

CheckboxSelector.prototype.select = function(str){
 	for(i = 0; i < this.selectors.length; i++){
 		divclass = 'radio radioClean';
 		$(this.selectors[i]+'_input').checked = false;
 		if (str == this.selectors[i]) {
 			divclass = 'radio radioChecked';
 			$(this.selectors[i]+'_input').click();
		}
 		$(this.selectors[i]+'_div').className = divclass;
 	}
}



//NEW ERROR HANDLING
function checkPart(id) {	

	//function checkPart(id,nextStep) {
	
	var errorMessage 	= '';
	var formRoot 		= document.getElementById(id);	
	var elements 		= formRoot.getElementsByTagName('INPUT')	
	var selElmts 		= formRoot.getElementsByTagName('SELECT');		
	var elements 		= array_merge(elements, selElmts);	
	var a 				= 0;
	var radioObj 		= new Array();//array of radio objects
	var radioCount 		= new Array();//counted checked property of radio objects of the same name, assosiative array base onn radion object name
	var count			= 0;				
		
	for(var i = 0; i < elements.length; i++) {		
		var formElement = elements[i];
		var fieldset	= getParent(formElement, 'fieldset');		
		var divHidden	= getParent(formElement, 'div', 'hide');
				
		if(!divHidden){
			if(formElement.type == 'radio') {			
				count 			= radioObj.length
				radioObj[count] = formElement;			
							
				//if the radioCount with this index does not excist yet, assine value 0 or the ++ will fail if applicable
	
				if(!radioCount[radioObj[count].name]){
					radioCount[radioObj[count].name] = 0;
				}
				
				//increment radioCount[radio_object_name] in case radio object checked property is true
				if(formElement.checked) {
					radioCount[radioObj[count].name]++;
				}
				
			}				
					
			valid		= true;
			if(formElement.title && fieldset.className.indexOf('box-content') != -1) {						
				// e-mail			
				if(formElement.title.match('email')) {								
					if(formElement.value && !checkEmail(formElement)) {
						a++;
						valid = false;
					}
				}			
				
				if(formElement.title.match('telefoonnummer')){
					if(formElement.value && !checkPhone(formElement)) {
						a++;
						valid = false;
					}
				}
				
				//initials
				if(formElement.title.match('initials')) {				
					if(formElement.value && !checkInitials(formElement)) {
						a++;
						valid = false;
					}
				}
					
				//initials
				if(formElement.title.match('karakters')) {				
					if(formElement.value && !checkKarakters(formElement)) {
						a++;
						valid = false;
					}
				}
				
				//last name
				if(formElement.title.match('achternaam')) {								
					if(formElement.value && !checkLastname(formElement)) {
						a++;
						valid = false;
					}
				}
				
				//last name
				if(formElement.title.match('geboortedatum')) {
					if(formElement.value && !checkBirthday(formElement)) {
						a++;
						valid = false;
					}
				}
				//Street			
				if(formElement.title.match('straat')) {																
					if(formElement.value && !checkStreet(formElement)) {
						a++;
						valid = false;
					}
				}
				
				//Postcode			
				if(formElement.title.match('postcode')) {																
					if(formElement.value && !checkZipcode(formElement)) {
						a++;
						valid = false;
					}
				}
				
				//city			
				if(formElement.title.match('plaats')) {																				
					if(formElement.value && !checkCity(formElement)) {
						a++;
						valid = false;
					}
				}
				
				//digits
				if(formElement.title.match('cijfers')) {
					var name = formElement.name;
					if(formElement.value && !checkDigits(formElement)) {
						a++;
						valid = false;
					} else if (name.match('rekeningnummer')){
						if ($('bank_input').checked){
							// tis een bankrekening
							if (formElement.value.length < 9){
								a++;
								valid = false;
							}
						} else if ($('giro_input').checked){
							// tis een giro
							if (formElement.value.length < 7){
								a++;
								valid = false;
							}
						} else {
							a++;
							valid = false;
						}
					}
				}
							
	
				// empty fields
				//alert(formElement.name);
				if(formElement.title.match('verplicht')){				
					if((formElement.type == 'radio')||(formElement.type == 'checkbox')) {								
						if(!formElement.checked) {
							a++;
							valid = false;
						}
					}else{
						if(!formElement.value || formElement.value == '...') {										
							a++;
							valid = false;
						}
					}
				}
				
				clearErrorMsg(formElement);
				
				if (!valid){
					showErrorMsg(formElement);
					document.getElementById('errMsg_general_1').className='show';			
				}			
			}
		}
	}
	
	//loop array of radio button collection
	for(var rn = 0; rn < radioObj.length; rn++){				
		//if array index contains an object
		if(radioObj[rn]){
			clearErrorMsg(radioObj[rn]);
			//show error if the checked count (based on radio name) != 0								
			if(!radioCount[radioObj[rn].name]) {
				a++;				
				showErrorMsg(radioObj[rn]);
			}			
		}
	}
	// display errorMessage	
//	if(a > 0) {		
//		return false;
//	} else {		
//		return true;
//	}

	if((a ==0)){
		formRoot.submit();
	}
}

function showErrorMsg(inputObj){
	var parent 		= getParent(inputObj,'div', 'fields');
	var errorClass = (inputObj.value == '') ? 'error_empty' : 'error_false';
	Element.addClassName(parent, errorClass);
}

function clearErrorMsg(inputObj){
	var parent = getParent(inputObj,'div', 'fields');
	Element.removeClassName(parent, 'error_empty');
	Element.removeClassName(parent, 'error_false');
}


//**********************
// Function checkEmail *
//**********************
function checkEmail(strEmail)
{	
	var validRegExp = new RegExp("^([a-zA-Z0-9\\-\\.\\_]+)(\\@)([a-zA-Z0-9\\-\\.]+)(\\.)([a-zA-Z]{2,4})$");
	var strEmail = strEmail.value;
	if (strEmail.search(validRegExp) == -1)
	{
		return false;
	}
	return true;
}

//**********************
// Function checkPhone *
//**********************
function checkPhone(strPhone) {
	var validChars = "0123456789-";
	var character;
	var val		= strPhone.value;
	if ((val.length != 10)){		
		if ((val.length == 11 && val.indexOf('-') == -1) || val.length != 11 || val.substr(0, 1) != 0){
			return false;
		}
	} else {
		if(val.substr(0, 1) != 0){
			return false;
		}
	}

	for (var z = 0; z < strPhone.value.length; z++) {
		character = strPhone.value.charAt(z);
		if (validChars.indexOf(character) == -1){
			return false;
		}
	}
	return true;
}

//**********************
// Function checkStreet *
//**********************
function checkStreet(obj){
	var val 	= obj.value;		
	
	return (val.substr(0, 1) == ' ') ? false : true;					
}
//**********************
// Function checkCity *
//**********************
function checkCity(obj){
	var val 	= obj.value;		
	var regExp 	= new RegExp("^[\']?([a-z\- ])+$", "gi");
			
	return (val.substr(0, 1) == ' ') ? false : regExp.test(val);
}
//**********************
// Function checkZipcode *
//**********************
function checkZipcode(strZipcode){
	var validRegExp_1 = /^[1-9][0-9]{3} [a-z|A-Z]{2}$/;
	var validRegExp_2 = /^[1-9][0-9]{3}[a-z|A-Z]{2}$/;
	var strZipcode = strZipcode.value;
	if (strZipcode.search(validRegExp_1) == -1 && strZipcode.search(validRegExp_2) == -1)
	{
		return false;
	}
	return true;
}

//**********************
// Function checkInitials *
//**********************
function checkInitials(obj){
	var val 	= obj.value;
	var regExp 	= /[0-9]/g;			
		
	return (val.search(regExp) == -1) ? true : false;
}

//**********************
// Function checkBirthday *
//**********************
function checkBirthday(obj){
	var birthday_day = document.getElementById('birthday_day').value;
	var birthday_month = document.getElementById('birthday_month').value;
	var birthday_year = document.getElementById('birthday_year').value;
	if (!birthday_day && !birthday_month && !birthday_year){
		return false;	
	}else{
		return true;
	}
}

//**********************
// Function checkLastname *
//**********************
function checkLastname(obj){
	var val 	= obj.value;
	var regExp 	= /([a-z-\s])+/gi;
	var match 	= val.match(regExp);
	
	val			= val.length;	
	match		= (match == null) ? 0 : match[0].length;
		
	return (val == match);
}

//**********************
// Function checkKarakters *
//**********************
function checkKarakters(obj){
	var val 	= obj.value;
	var regExp 	= /([a-z-\s])+/gi;
	var match 	= val.match(regExp);
	
	val			= val.length;	
	match		= (match == null) ? 0 : match[0].length;
		
	return (val == match);
}

//**********************
// Function checkDigits *
//**********************
function checkDigits(obj){
	var val = obj.value;
	var validChars = "0123456789";
	var character;

	for (var z = 0; z < val.length; z++){
		character = val.charAt(z);
		if (validChars.indexOf(character) == -1) {
			return false;
		}
	}
	return true;
}

//**********************
// Function checkNuonNr *
//**********************
function checkNuonNr(str) {
	var validChars = "0123456789";
	var character;
	if (str.value.length != 8){
		return false;
	} else if (str.value.length == 10 && (str.value.charAt(0)!= 0 ||   str.value.charAt(1)!= 0)){
		return false;
	}

	for (var z = 0; z < str.value.length; z++) {
		character = str.value.charAt(z);
		if (validChars.indexOf(character) == -1) {
			return false;
		}
	}
	return true;
}

array_merge = function(arr_one, arr_two) {
  
  var entries = new Array();  
  
  for(var i = 0; i < arr_one.length; i++){  	
  	entries[entries.length] = arr_one[i];  	
  }
  
  for(var i = 0; i < arr_two.length; i++){  	
  	entries[entries.length] = arr_two[i];  	
  }
 
  return entries;
}

function getParent(obj, type, className){
	var parent	= obj.parentNode;
	if (parent.tagName.toLowerCase() == type.toLowerCase()){
		if ((className && parent.className.match(className)) || !className){
			return parent;
		}
	} else if (parent.tagName.toLowerCase() == 'body'){
		return false;
	}
	return getParent(parent, type, className);
}


//*********************************
// TPL Service Abo next div weergave
//*********************************
var openvenster = 1;
function clicksteps(QID) {
	var d = document;

	if(openvenster != QID) {
		if(openvenster != -1) {
			d.getElementById('itemstep_'+openvenster).className = 'hide';
		}
		openvenster = QID;
			d.getElementById('itemstep_'+openvenster).className = 'show';
	} else if(openQuestion == QID) {
			d.getElementById('itemstep_'+openvenster).className = 'hide';
		openvenster = 1;
		alert(QID);
	}
}

function setPreview(naam, value){
	try {
		document.getElementById(naam+'Div').innerHTML	=	value;
	} catch(e) {
		alert(naam+'Div');//e.msg);
	}
}

function setAllPreviews(){
	previews	= allDivs.length;

	for (i=0;i<allDivs.length;i++){
		val		= document.getElementById(allVals[i]).value;
		setPreview(allDivs[i], val);
	}
}

function stappen(){
	var stap1 = document.getElementById('stap1');
	var stap2 = document.getElementById('stap2');
	var stap3 = document.getElementById('stap3');
	var pijlstap1 = document.getElementById('stap1pijl');
	var pijlstap2 = document.getElementById('stap2pijl');
	var pijlstap3 = document.getElementById('stap3pijl');
	var itemstep1 = document.getElementById('itemstep_1');
	var itemstep2 = document.getElementById('itemstep_2');
	
	 if (itemstep1 && itemstep1.className == 'show'){
	 	stap1.className = 'actief';
	 	stap2.className = 'passief';
		stap3.className = 'passief';
		pijlstap1.className = 'pijl show';
		pijlstap2.className = 'hide';
		pijlstap3.className = 'hide';
	 }else if(itemstep2 && itemstep2.className == 'show'){
	 	stap1.className = 'bezocht';
		stap2.className = 'actief';
		stap3.className = 'passief';
		pijlstap2.className = 'pijl show';
		pijlstap1.className = 'hide';
		pijlstap3.className = 'hide';
	 }else{
	 	stap1.className = 'bezocht';
		stap2.className = 'bezocht';
		stap3.className = 'actief';
		pijlstap1.className = 'pijl hide';
		pijlstap2.className = 'pijl hide';
		pijlstap3.className = 'pijl show';
	 }
}


displayDialog = function(evt){
	
	//get coords of the mouse click
	if(IE) {
		var obj	= event.srcElement;
		var cX 	= event.clientX;
		var cY 	= event.clientY;
	} else {
		var obj = evt.currentTarget;
		var cX 	= evt.clientX;
		var cY 	= evt.clientY;
	}	
	//get required content and tooltip div id
	var content 	= obj.getAttribute('title');
	var title		= obj.innerHTML;
	var displayId	= obj.getAttribute('rel');//the ID of the tooltip div

	//show transparent overlay div covering the entire site
	$('overlay').style.display 	= 'block';
	
	//set x and y coord +5 px te place next to the -i- (info) icon
	$(displayId).style.left			= (cX - (280)) + 'px';
	$(displayId).style.top			= (cY + 10) + 'px';
	//set the title text and close button in the H3 tag (first element of H3 collection of the tooltip div)
	$(displayId).getElementsByTagName('H3')[0].innerHTML = '<a href="#" ID="dialog-close">X</a>' + title;
	//set the content text in the P tag (first element of P collection of the tooltip div)
	$(displayId).getElementsByTagName('P')[0].innerHTML = content;
	//show the display div
	$(displayId).style.display 		= 'block';
	
	//get the 'close' anchor from the previously created innerHTML of the H3 tag of the tooltip div
	anchor	= $(displayId).getElementsByTagName('H3')[0].getElementsByTagName('A')[0];
	
	//attach the closing function to the anchor tag
	if(IE){
		anchor.attachEvent('onclick', hideDialog);
	} else {
		anchor.addEventListener('click', hideDialog, false);
	}
}

hideDialog = function(evt){

	//hide both the tooltip div and the overlay div
	$('dialog-tooltip').style.display = 'none';
	$('overlay').style.display 	= 'none';
}

showElement = function(id){
	
	var element = document.getElementById(id);
	
	element.className = element.className.replace('show', 'hide');
}

hideElement = function(id){
	
	var element = document.getElementById(id);
	
	element.className = element.className.replace('hide', 'show');
}

function showAnders(value){
	if(value == "anders"){
		$('anders').className = "show";
		$('anders').title = 'verplicht';
	}else{
		$('anders').className = "hide";
		$('anders').title = '';
	}
}

