/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
/*
// function to add an event to an object/element
function addEvent(obj, eventType, fn)
{ 
	if (obj.addEventListener) {
		obj.addEventListener(eventType, fn, false); 
		return true; 
	} else if (obj.attachEvent) { 
		var r = obj.attachEvent('on'+eventType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}
*/
function ascendDOM(e, target)
{
  while (e.nodeName.toLowerCase() != target &&
      e.nodeName.toLowerCase() != 'html')
    e = e.parentNode;

  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

function createClickableBlocks() {
	var i, j, blockAnchors, blockForm;
	var clickBlocks = getElementsByClassName(document.getElementById("sitecontainer"), "*", "clickblock");
	
	for (i=0, j=clickBlocks.length; i<j; i++) {
		blockAnchors = clickBlocks[i].getElementsByTagName("a");
		if(blockAnchors[0]) {
			clickBlocks[i].clickAnchor = blockAnchors[0].href;
			clickBlocks[i].onclick = function() { window.location = this.clickAnchor; }
		} else {
			blockForm = clickBlocks[i].getElementsByTagName("form");
			if(blockForm[0].elements[0]) {
				clickBlocks[i].clickInput = blockForm[0].elements[0];
				clickBlocks[i].onclick = function() { this.clickInput.focus(); }				
			}
		}
		clickBlocks[i].onmouseover = function() { try{this.style.cursor='pointer'} catch(e){this.style.cursor='hand'}; }
		clickBlocks[i].onmouseout = function() { this.style.cursor = ''; }
	}
	
}
window.addEvent('domready', createClickableBlocks);




/* ********************************* */
/*  ACTIVATE FAQ                     */
/* ********************************* */
function swapFaq(e) {
	var i, parentListElement, nodeRef;
	parentListElement = ascendDOM(e, 'ol');
	// disable the whole list
	for (i=0; i<parentListElement.childNodes.length; i++) {
		nodeRef = parentListElement.childNodes[i];
		if ((nodeRef.nodeType==1) && (nodeRef.nodeName=='LI')) {
			try{nodeRef.className='';} catch(e){}
		}
	}
	// enable the item clicked on
	try{ascendDOM(e, 'li').className='active';} catch(e){}
}



/* ********************************* */
/*  CHECK FORMS                      */
/* ********************************* */
function checkForm(form) {
	var hasNoErrors = true;
	var msg = "Het formulier dat u probeert te versturen is nog niet compleet. Nog niet alle velden zijn goed ingevuld.\n\nControleer de velden met een (*) gemarkeerd.";
	var firstFieldRef = null;
	var collection = 0;
	var collectionchecked = 0;
	// check the form.
	for (i=0; i<form.childNodes.length;i++) {
		var nodeRef = form.childNodes[i];
		if (nodeRef.nodeType==1) {
			if (nodeRef.attributes.getNamedItem("required") && nodeRef.nodeName=='FIELDSET') {
				collection = 0;
				collectionchecked = 0;
				for (j=0; j<nodeRef.childNodes.length; j++) {
					if (nodeRef.childNodes[j].nodeName=='LABEL') {
						for (k=0; k<nodeRef.childNodes[j].childNodes.length; k++) {
							var inputRef = nodeRef.childNodes[j].childNodes[k];
							if (inputRef.nodeName=='INPUT') {
								if (inputRef.attributes.getNamedItem("type").value=='text') {
									if (inputRef.parentNode.attributes.getNamedItem("required").value=='email') {
										if (!eval(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(inputRef.value))) {
											try{inputRef.parentNode.className='formerror';} catch(e){}
											hasNoErrors = false;
										} else {
											try{inputRef.parentNode.className='formvalidated';} catch(e){}
											if (firstFieldRef==null) { firstFieldRef = inputRef; }
										}
									} else {
										if (!eval(inputRef.value.length > 1)) {
											try{inputRef.parentNode.className='formerror';} catch(e){}
											hasNoErrors = false;
											if (firstFieldRef==null) { firstFieldRef = inputRef; }
										} else {
											try{inputRef.parentNode.className='formvalidated';} catch(e){}
										}
									}
								}
								if ((inputRef.attributes.getNamedItem("type").value=='checkbox') || (inputRef.attributes.getNamedItem("type").value=='radio')) {
									collection++;
									if (inputRef.checked==true) {
										collectionchecked++;
									}
								}
							}
						}
					}
				}
				if ((collection>0) && (collectionchecked<1)) {
					hasNoErrors = false;
					try{nodeRef.className='formerror '+nodeRef.className;} catch(e){}
				} else {
					if (nodeRef.className.substring(0,9)=='formerror') {
						try{nodeRef.className=nodeRef.className.substring(9,nodeRef.className.length);} catch(e){}
						try{nodeRef.className='formvalidated '+nodeRef.className;} catch(e){}
					}
				}
			} else if (nodeRef.attributes.getNamedItem("required") && nodeRef.nodeName=='LABEL') {
				
				for (j=0; j<nodeRef.childNodes.length; j++) {
					var inputRef = nodeRef.childNodes[j];
					if (inputRef.nodeName=='INPUT') {
						if (inputRef.attributes.getNamedItem("type").value=='text') {
							if (inputRef.parentNode.attributes.getNamedItem("required").value=='email') {
								if (!eval(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(inputRef.value))) {
									try{inputRef.parentNode.className='formerror';} catch(e){}
									hasNoErrors = false;
									if (firstFieldRef==null) { firstFieldRef = inputRef; }
								} else {
									try{inputRef.parentNode.className='formvalidated';} catch(e){}
								}
							} else {
								if (!eval(inputRef.value.length > 1)) {
									try{inputRef.parentNode.className='formerror';} catch(e){}
									hasNoErrors = false;
									if (firstFieldRef==null) { firstFieldRef = inputRef; }
								} else {
									try{inputRef.parentNode.className='formvalidated';} catch(e){}
								}
							}
						}
					} else if (inputRef.nodeName=='TEXTAREA') {
						if (!eval(inputRef.value.length > 13)) {
							try{inputRef.parentNode.className='formerror';} catch(e){}
							hasNoErrors = false;
							if (firstFieldRef==null) { firstFieldRef = inputRef; }
						} else {
							try{inputRef.parentNode.className='formvalidated';} catch(e){}
						}
					}
				}
			}
		}
	}
	if (hasNoErrors==true) { 
		return true;
	} else {
		firstFieldRef.focus();
		alert(msg);
		return false;
	}
}
/* ********************************* */
/*  GOOGLE MAPS                      */
/* ********************************* */
var map = null;
var geocoder = null;
function loadMap() {
	if (GBrowserIsCompatible() && document.getElementById('maps')) {
		$('maps').setStyles({
			'width':'540px',
			'height':'300px',
			'border':'1px solid #000000'
		});
		map = new GMap2(document.getElementById('maps'));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(51.900182,4.342974), 10);
		geocoder = new GClientGeocoder();
		var pin = new GIcon(G_DEFAULT_ICON);
		pin.image = '/assets/images/google_maps_icons/arrow.png';
		pin.iconSize = new GSize(39,  34);
		pin.shadow = '/assets/images/google_maps_icons/arrowshadow.png';
		pin.shadowSize = new GSize(39,  34);
		var marker = new GMarker(map.getCenter(), { icon:pin });
		var infoWindowContent = [];
		infoWindowContent.push('<img src="/assets/images/logo.gif" alt="Ras Informatisering BV" style="margin:-8px 0 0 -8px; padding:0; width:200px;" /><br />');
		infoWindowContent.push('<p style="font-family:Arial, Helvetica, sans-serif; margin:0; padding:0; font-size:0.9em; color:#333;"><strong>Olivier van Noortlaan 108-118<br />');
		infoWindowContent.push('3133AT Vlaardingen</strong><br />');
		infoWindowContent.push('tel. <strong>+31 (0)10 249 96 13</strong></p>');
		infoWindowContent.push('<p style="font-family:Arial, Helvetica, sans-serif; margin:0.3em 0 0 0; padding:0.3em 0 0 0; border-top:1px solid #ccc; font-size:0.9em; color:#666;"><strong>Plan een <a target="_blank" href="http://maps.google.nl/maps?f=d&hl=nl&geocode=&saddr=&daddr=Olivier+van+Noortlaan+108,+3133+Vlaardingen&mra=mi&jsv=107&sll=51.917591,4.423714&sspn=0.176607,0.316887&ie=UTF8&z=12" style="color:#666;">route hier naar toe</a>.</strong></p>');
		marker.bindInfoWindowHtml(infoWindowContent.join(''))
		map.addOverlay(marker);
	}
}
