// Everything that can only be executed after the page has finished loading
// all of the elements on it

var leftmenuAccordion;

window.addEvent('domready', function() {


	// Mouse events for the accordion Google Maps toggler
	if ($('liGMaps')) {
		$('liGMaps').addEvent('mouseover', function() {
			this.setStyle('color', '#d5762c');
		});

		$('liGMaps').addEvent('mouseout', function() {
			this.setStyle('color', '#ec8d43');
		});
	}


	// Mouse events for the accordion Photos toggler
	if ($('liPhotos')) {
		$('liPhotos').addEvent('mouseover', function() {
			this.setStyle('color', '#d5762c');
		});

		$('liPhotos').addEvent('mouseout', function() {
			this.setStyle('color', '#ec8d43');
		});
	}


	// The mouse and swap events for the frontpage kavel-menu
	if ($('kavelmenu')) {
		// Retrieve all of the DIVs within the kavelmenu DIV and because each DIV has two child DIVs within it,
		// divide the total number of DIVs by three to get the numer of items and store this in a variable
		var iNoOfItems = ($('kavelmenu').getElements('div')).length / 3;

		$$('.menuItem').addEvent('mouseover', function() {

			$$('.menuItem').setStyle('background-image', 'url(\'img/bg-kavelmenu_static.gif\')');
			$$('.index-bkground').setStyle('display', 'none');

			// Change the appearance of the menu item
			this.setStyle('background-image', 'url(\'img/bg-kavelmenu_active.gif\')');

			// Extract the actual ID integer from the ID string of the current element
			var iItemID = (this.id).substr(6);
			$('bkPreview' + iItemID).setStyle('display', 'block');
		});
	}

	setPopLinks();
});


// A function which receives an integer and uses it to set the correct list menu
// item in the Google Maps menu to appear active, and the rest to appear inactive
function fGMapMenuState(iID) {
	for (iCnt = 0; iCnt < 7; iCnt++) {
		if (iCnt == iID) {
			$('aGMap' + iCnt).setStyle('color', '#864A09');
			$('aGMap' + iCnt).blur();
		} else {
			$('aGMap' + iCnt).setStyle('color', '#ec8d43');
		}
	}
}



// -------------------------------------------------------------------------

/* ================ Automatic Popup's ================ */
function setPopLinks() {
	var x = document.getElementsByTagName('a');
 	for (var i=0;i<x.length;i++) {
		if (x[i].className == 'popup' || x[i].className == 'popupNoImg') {
			x[i].onclick = function () {
				return pop(this.href)
			}
			x[i].title += ' (opent in nieuw venster)';
		}
	}
}

function pop(url) {
	newwindow=window.open(url);
	if (window.focus) {newwindow.focus()}
	return false;
}


function swapImage(action, id) {
	switch (action) {
	 case "hover":
		 $(id).src = "img/meerinformatie_h.jpg"
		 return(false);
	case "out":
		 $(id).src = "img/meerinformatie.jpg"
		 return(false);
	 }
}





	///////////////////////////////////////////
	////////// CHECK INPUT FUNCTIONS //////////
	///////////////////////////////////////////

	function fieldIsEmpty(elemId, alertText) {
		//checks if field is empty
		if (!document.getElementById(elemId)) { alert('SCRIPTFOUT: '+elemId+' object is niet gevonden'); return false; }
		var elem = $(elemId);
		if (elem.type.indexOf('textarea') > -1 || elem.type.indexOf('text') > -1 || elem.type.indexOf('password') > -1) {
		//check if text is empty --------------------------------------------------------
			if ((trim(elem.value).length==0) || (elem.value==null)) {
				setErrText(elemId, alertText, 'do');
				return true;
			} else {
				setErrText(elemId, '', 'undo');
				return false;
			}
		} else if (elem.type.indexOf('select') > -1) {
		//check if selection is made (dropdown) -----------------------------------------
			if ((trim(elem.value).length==0) || (elem.value==null)) {
				setErrText(elemId, alertText, 'do');
				return true;
			} else {
				setErrText(elemId, '', 'undo');
				return false;
			}

		} else if (elem.type.indexOf('radio') > -1 || elem.type.indexOf('checkbox') > -1) {
		//check if selection is made (radio/checkbox)------------------------------------

			var iSelected = 0;
			var oBox = document.getElementsByName(elem.name)

			for(var iBox=0; iBox<oBox.length; iBox++){
				if (oBox[iBox].checked == true) { iSelected++; }
			}

			if (iSelected == 0) {
				setErrText(elemId, alertText, 'do');
				return true;
			} else {
				setErrText(elemId, '', 'undo');
				return false;
			}

		}
	}

	function setErrText(objName, txt, direction) {
		if (!$(objName + '_err')) { alert('SCRIPTFOUT: '+objName+'_err object bestaat niet!'); return false; }
		var objErr = $(objName + '_err')
		var objField = $(objName);
		if (direction == 'do') {
			objErr.innerHTML = txt;
			objErr.style.display = 'block';
			objField.style.border = '1px solid #ec8d43';

			$('algemene_feedback_err').innerHTML = 'LET OP: Niet alle velden zijn goed ingevuld. Controleer het formulier.'
			$('algemene_feedback_err').style.display = 'block';

		} else {
			objErr.innerHTML = '';
			objErr.style.display = 'none';
			objField.style.border = '1px solid #7f9db9';

			$('algemene_feedback_err').innerHTML = ''
			$('algemene_feedback_err').style.display = 'none';
		}
	}

	function compare_values(elemId1, elemId2, alertText) {
		var elem1 = $(elemId1);
		var elem2 = $(elemId2);
		if (elem1.value != elem2.value) {
//				elem2.className = raiseErr(elem2.className, 'do');
				setErrText(elemId2, alertText, 'do');
				return true;
		} else {
//				elem2.className = raiseErr(elem2.className, 'undo');
				setErrText(elemId2, '', 'undo');
				return false;
		}
	}

	function checkNumber(elemId, alertText, maxNumber) {
		var isNum = true;
		var strChar;
		var ValidChars = "0123456789.";
		var elem = $(elemId);

		for (var i=0; i<elem.value.length && isNum==true; i++)
		{
			strChar = elem.value.charAt(i);
			if (ValidChars.indexOf(strChar) == -1) isNum = false;
		}

		if (typeof(maxNumber) != 'undefined' && isNum==true) {
			if (elem.value > maxNumber) { isNum=false; }
		}

		if (!isNum) {
				setErrText(elemId, alertText, 'do');
				return true;
		} else {
				setErrText(elemId, '', 'undo');
				return false;
		}
	}





	function checkLength(elemId, alertText, minLength, maxLength) {
		var elem = $(elemId);
		var elemTxt = elem.value.replace(/^\s*|\s*$/g,"");		//verwijderen van omsingelde spaties, oftewel trim
		if ((elemTxt.length >= minLength) && (elemTxt.length <= maxLength)) {
				setErrText(elemId, '', 'undo');
				return false;
		} else {
				setErrText(elemId, alertText, 'do');
				return true;
		}
	}




	function validate_email(elemId, alertText) {
		var elem = $(elemId);

		if (!emailCheck(elem.value)) {
				setErrText(elemId, alertText, 'do');
				return true;
		} else {
				setErrText(elemId, '', 'undo');
				return false;
		}
	}

	function emailCheck (emailStr) {
		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom=validChars + '+'
		var word="(" + atom + "|" + quotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
		var matchArray=emailStr.match(emailPat)
		if (matchArray==null) return false;

		var user=matchArray[1]
		var domain=matchArray[2]
		if (user.match(userPat)==null) return false;
		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {
				for (var i=1;i<=4;i++) {
					if (IPArray[i]>255) return false;
				}
				return true
		}
		var domainArray=domain.match(domainPat)
		if (domainArray==null) return false;

		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) return false;
		if (len<2) return false;
		return true;
	}
	//  End -->
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
// -------------------------------------------------------------------------


// string manipulations ----------------------------------------------------
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
function trim(str){   return str.replace(/^\s*|\s*$/g,"");}
// -------------------------------------------------------------------------



