  /************************************************************************/
 /************************** Lightbox functies********************************/
/************************************************************************/
function addOverlay() {
    var body = document.getElementsByTagName("body")[0];
    var tmp = document.createElement('div');
    tmp.id = 'overlayDiv';
    tmp.onclick = function() {
        removeLightbox();
    };
    tmp.style.top = '0px';
    tmp.style.left = '0px';
    tmp.style.cursor = 'pointer';
    tmp.style.position = 'absolute';
    tmp.style.height =( getPageHeight() >300 ?  getPageHeight() : 1500) + "px";
    tmp.style.width = '100%';
    tmp.style.backgroundColor = '#000';
    tmp.style.zIndex = 100;
    body.appendChild(tmp);
    changeOpac(50, 'overlayDiv');

    var ymargin = Math.floor((document.documentElement.clientHeight - 600) / 2);    
    ymargin = (ymargin > 0 ? ymargin : 0);
    var tmp2 = document.createElement('div');
    tmp2.id = 'overlayDivContent';
    tmp2.style.top = ((window.pageYOffset || document.documentElement.scrollTop || 0) + ymargin) + "px";
    tmp2.style.left = (((window.pageXOffset || document.documentElement.scrollWidth || 0) - 780) / 2) + "px";
    tmp2.style.position = 'absolute';
    tmp2.style.width = "700px";
    tmp2.style.backgroundColor = '#fff';
    tmp2.style.height = "560px";
    tmp2.style.border = '0px';
    tmp2.style.zIndex = 110;
    body.appendChild(tmp2);
}
function removeLightbox() {
    var body = document.getElementsByTagName("body")[0];
    body.removeChild(getElement('overlayDiv'));
    body.removeChild(getElement('overlayDivContent'));
}
function lightbox(url, data) {
    addOverlay(); // divs dr in stoppen
    var content = (url ? "<iframe src='" + url + "' width='100%' height='550px' border='' allowtransparency='true'  style='border:0px;   background: transparent;' FRAMEBORDER=0; ></iframe>": data);
    getElement('overlayDivContent').innerHTML = "<div id='overlayDivClose' onclick='removeLightbox();' title='close'></div><div id='overlayDivInnerContent'></div>";
    getElement('overlayDivInnerContent').innerHTML = content;
    return false;
}



  /************************************************************************/
 /************************** Opmaak functies********************************/
/************************************************************************/
/* setSearchTab
Description:	Function sets tabs for searchfield apropiately
Author:		René Weteling (rene@click.nl)
Date:			2009-09-17
Call: 			setSearchTab(el);
*/
function setSearchTab2(el){
	if(el.className.length > 5){
		el.className = 'tab';
		document.getElementById(el.id.replace("tab","search")).value="false";
		$("#advanced_"+el.id.replace("tab_","")).slideUp('normal',function(){$(this).css('display', 'none')});			
	}else{
		el.className = 'tab tab_active';
		document.getElementById(el.id.replace("tab","search")).value="true";
		$("#advanced_"+el.id.replace("tab_","")).slideDown('normal',function(){$(this).css('display', 'block')});	
	}
}


function setSearchTab(el){
	var items =  ['tab_wetten', 'tab_jurisprudentie', 'tab_professionals'];
	var onClass = 'tab tab_active ';
	var offClass = 'tab';
	var aan = 0;
	for(i=0; i<items.length; i++){
		if(document.getElementById(items[i]).className.length == onClass.length){
			aan++;
		}
	}
	if(el.className.length == onClass.length){
		if(aan == items.length){
			// huidig is aan en de rest ook dus alles behalve huidig uit
			for(i=0; i<items.length; i++){
				if(items[i] != el.id){				
					$("#advanced_"+items[i].replace("tab_","")).slideUp('normal',function(){$(this).css('display', 'none')});					
					document.getElementById(items[i]).className = offClass;
					document.getElementById(items[i].replace("tab_","search_")).value="false";
				}
			}
		}else{
			if(aan > 1){
				// huidig is aan en niet alle aan en minimaal nog 1 andere dus huidig uit
				for(i=0; i<items.length; i++){
					if(items[i] != el.id){
						$("#advanced_"+items[i].replace("tab_","")).slideUp('normal',function(){$(this).css('display', 'none')});					
						document.getElementById(items[i]).className = offClass;
						document.getElementById(items[i].replace("tab_","search_")).value="false";
					}
				}
			}else if(aan == 1){
				// alleen huidig staat aan dus de andere ook aan zetten.
				for(i=0; i<items.length; i++){
					if(items[i] != el.id){
						$("#advanced_"+items[i].replace("tab_","")).slideDown('normal',function(){$(this).css('display', 'block')});					
						document.getElementById(items[i]).className = onClass;
						document.getElementById(items[i].replace("tab_","search_")).value="true";
					}
				}
			}								
		}
	}else{
		// huidig is uit dus huidig aan zetten
		el.className = onClass;
		document.getElementById(el.id.replace("tab_","search_")).value="true";
		$("#advanced_"+el.id.replace("tab_","")).slideDown('normal',function(){$(this).css('display', 'block')});		
	}
}				
 
  /************************************************************************/
 /*************************** Google functies********************************/
/************************************************************************/
/* loadMaps
Description:	Function loads googlemaps and executes callback when evertything is loaded.
Author:			René Weteling (rene@click.nl)
Date:			2009-09-17
Call: 			loadMaps(function(){.......});
*/
var googleJsLoaded = false;
var googleLoaded = false;
function loadMaps(callback) {
	if(!googleJsLoaded){
		initLoader();
		setTimeout(function(){loadMaps(callback);}, 100);
	}else{
		if(!googleLoaded){
			google.load("maps", "2", {"language": "nl","callback": callback}); 
		}else{
			eval(callback);
		}
	}
}
function initLoader() {
  var script = document.createElement("script");
  var apiKey = "ABQIAAAAm-NJbEEXK-hZNMb4kHawvxR0M_Mg8iZ8CD_t0jUeNVLMojad6BQfcZRGdS-gBmYjgB0lK_G4ws365A";
  script.src = "http://www.google.com/jsapi?key="+apiKey+"&callback=setJsLoaded";
  script.type = "text/javascript";
  document.getElementsByTagName("head")[0].appendChild(script);
}
function setJsLoaded(){
	googleJsLoaded = true;
}
function setLoaded(){
	googleLoaded = true;
}
/* checkLatLon
Description:	Function checks address and sets latitude and longitude in given fields
Author:		René Weteling (rene@click.nl)
Date:			2009-09-17
Call: 			checkLatLon("address string", "id of lat input field", "id o lon input field", "callback");
*/
var geocoder;
function checkLatLon(address, lat, lon, callback) {
	if(address == ""){
		return true;
	}
  if (!geocoder) {
	  geocoder = new GClientGeocoder();
	  setTimeout(function(){checkLatLon(address, lat, lon, callback)},150);
  }else{
	geocoder.getLatLng(
	  address,
	  function(point) {
		  if(point){
			  document.getElementById(lat).value = point['x'];
			  document.getElementById(lon).value = point['y'];
			  if(callback != ''){
				eval(callback);
			  }
		  }else{
			alert("Helaas het adres is niet gevonden heeft u het goed geschreven?");  
		  }
	  }
	);
  }
}

  /************************************************************************/
 /*************************** Hulp functies**********************************/
/************************************************************************/
//
// is4_setSelected
//
// Set option element in select list as selected
//
// Arguments:
//  selectId    id of select element
//  selectVal   value for option element which has to be selected
//
// Returns:
//  0           if option not found or other error
//  1           if option found and selected has been set.
//
function is4_setSelected(selectId, selectVal) {
   var selectList;
   var retVal = 0;
   if (selectId) {
      selectList = document.getElementById(selectId);
   }
   if (selectList) {
         var optList = selectList.options;
         // EJT: Note: start of for loos was 0. Why ?
         for(o = 0; o < optList.length && !retVal; o++) {
             if (optList[o].value == selectVal) {
                     optList[o].selected = true;
                     retVal = 1;
             }
         }
   }
   return retVal;
}

/* getElement
Description:	Function returns the object if exists else alerts an error message
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			getElement("id of an element");
*/
function getElement(id) {
    if (document.getElementById(id)) {
        return document.getElementById(id);
    } else {
        alert('Element ' + id + ' is niet gevonden!');
    }
}
/* toggleCursor
Description:	Functions toggle's the cursor style element used with onmouseout an onmouseover
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			toggleCursor("id of an element");
*/
function toggleCursor(el){
	if(el.style.cursor.length > 0){
		el.style.cursor = '';
	}else{
		el.style.cursor = 'pointer';
	}
}
/* getHeight
Description:	Functions gives the absolute height of an element positined from the top of the page
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			getHeight("id of an element");
*/
function getHeight(elementID) {
    var el = (elementID ? elementID : getElement(elementID));
    var _y = 0;
    while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
        _y += el.offsetTop;
        el = el.parentNode;
    }
    return _y;
}
/* getPageHeight
Description:	Functions gives the absolute height of an page
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			getPageHeight("id of an element");
*/
function getPageHeight() {
    if (window.innerHeight && window.scrollMaxY) { // Firefox
        yWithScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        yWithScroll = document.body.scrollHeight;
    } else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
        yWithScroll = document.body.offsetHeight;
    }
    return yWithScroll;
}
/* changeOpac
Description:	Functions sets transparancy to an element
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			changeOpac(#opacity, "id of an element");
*/
function changeOpac(opacity, id) {
    var object = getElement(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}
/* initImp
Description:	Functions inits imp focus and imp text
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			initImp=inpFocus("id of an element", standaard text);
*/
function initImp(obj,stdText){
	obj.onfocus = function(){inpFocus(obj,stdText)};
	obj.onblur = function(){inpBlur(obj,stdText)};
}
/* inpFocus
Description:	Functions removes default text in an textbox on focus
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			onfocus=inpFocus("id of an element");
*/
function inpFocus(obj, stdText) {
 if (obj.value == stdText) {
    obj.value = '';
 }
}
/* inpBlur
Description:	Adds default tekst if box is empty
Author:		René Weteling (rene@click.nl)
Date:		2009-09-17
Call: 			onblur=inpBlur("id of an element");
*/
function inpBlur(obj, stdText) {
 if (obj.value == '') {
    obj.value = stdText;
 }
} 

function getWindowHeight() {
	myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myHeight = document.body.clientHeight;
	}
	return myHeight;
}
	function smoothScroll(el, y){
		var curEl = parseInt(getElement(el).style.top.replace("px",""));
		var diff = Math.round((y - curEl)/4);
		getElement(el).style.top = ( parseInt(curEl) + diff )+"px";
		if(diff != 0){
			setTimeout(function(){smoothScroll(el, y);},10);		
		}else{
			enableScroll = true;
		}
	}