function toggleControl(ctrl, block) {

    var ct = getControl(ctrl);

    if (ct.style.display != 'none' && ct.style.display.length > 0) {
        //ct.style.display = 'none';
        hideControl(ct);
    }
    else{
        //ct.style.display = 'inline';
        showControl(ct, block);
    }

    return false;
}
function toggleControlCookie(ctrl, block) {

  var ct = getControl(ctrl);
  if (ct.style.display != 'none' && ct.style.display.length > 0) {
    //ct.style.display = 'none';
    hideControl(ct);
    eraseCookie(ct.id);
  }
  else{
    //ct.style.display = 'inline';
    showControl(ct, block);
    createCookie(ct.id, true, 31);
  }

  return false;
}

function toggleControlExt(ctrl, block, useCookie, caller, backgroundClosed, backgroundOpen) {

	var undefined = undefined;
  	var ct = getControl(ctrl);
  	var ca = getControl(caller);
  	
  	if (ct.style.display != 'none' && ct.style.display.length > 0) {
    	//ct.style.display = 'none';
    	hideControl(ct);
    	if (useCookie) { eraseCookie(ct.id); }
    	if (ca != undefined && backgroundClosed.length >0) {
	    	ca.style.backgroundImage = 'url(' + backgroundClosed + ')';
	    }
  	}
  	else{
    	//ct.style.display = 'inline';
    	showControl(ct, block);
    	if (useCookie) { createCookie(ct.id, true, 31); }
    	if (ca != undefined && backgroundOpen.length >0) {
	    	ca.style.backgroundImage = 'url(' + backgroundOpen + ')';
	    }
  	}
  	alignPage();
}

function hideControl(ctrl) {
	var ct = getControl(ctrl);
	ct.style.display = 'none';
}
function showControl(ctrl, block) {
	var ct = getControl(ctrl);
	if (block) {
		ct.style.display = 'block';
	} else {
		ct.style.display = 'inline';
	}
}
function addToFavorites(lnk, txt) {
    if (window.external) {
        window.external.AddFavorite(lnk, txt);
    }
    else
    {
        alert('Sorry! Your browser doesn\'t support this function.');
    }
    return false;
}

function getControlById(ctrlid) {
    var ctrl;
	if (document.all) {
      ctrl = document.all[ctrlid];
    } else {
      ctrl = document.getElementById(ctrlid);
    }
    return ctrl;
}
function getControl(ctrl) {
	var q;
	if(ctrl && typeof(ctrl) == 'object') {
		q = ctrl;
  	} else {
		q = getControlById(ctrl);
	}
    return q;
}
function createCookie(name,value,expires,path,domain,secure)
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if (expires)
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function readCookie(name)
{
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ((!start) &&
	(name != document.cookie.substring(0,name.length)))
	{
		return null;
	}
	if (start == -1) return null;
	var end = document.cookie.indexOf( ";", len);
	if (end == -1) end = document.cookie.length;
	return unescape( document.cookie.substring(len,end));
}

function eraseCookie(name,path,domain)
{
	if (Get_Cookie(name)) document.cookie = name + "=" +
	((path) ? ";path=" + path : "") +
	((domain) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function ChangeCss(control, state)
{
  var q;
  if(control || typeof control == 'object') {
    q = control
  } else {
    q = getControlById(control);
  }
  q.className = state;
}

function changeSource(control, image)
{
	var ctrl;
	ctrl = getControl(control);
	ctrl.src = image;
}

function changeRowExt(row, cssclass, images) {
	// change row class
	var r = getControl(row);
	ChangeCss(r, cssclass);
	// change images
	for(nr in images) {
		// src
		var img = getControl(images[nr]+r.id);
		var re = new RegExp('_(odd|even|over)\.');		
		var m = re.exec(img.src);
		if (m != null) {
			img.src = img.src.replace(re, '_'+cssclass+'.');
		}
	}
	
}

// for list/checkbox...
function highlight_div(checkbox_node)
{
    var label_node = checkbox_node.parentNode;

    if (checkbox_node.checked)
	{
		label_node.className = 'selected';
	}
	else
	{
		label_node.className = 'unselected';
	}
}


function popImage(pUrl,pTitle){

	//aan te passen
	var pad_left = 100;
	var pad_right = 100;
	var max_width  = 1024; //400+20;//afmetingen van het grootste beeld +20
	var max_height = 768; //370+20;  //afmetingen van het grootste beeld +20
	//hieronder niets wijzigen
	if (parseInt(navigator.appVersion.charAt(0))>=4){
		var isNN=(navigator.appName=="Netscape")?1:0;
		var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;
	}
	var optNN='scrollbars=no,width='+max_width+',height='+max_height+',left='+pad_left+',top='+pad_right;
	var optIE='scrollbars=no,width=150,height=100,left='+pad_left+',top='+pad_right;

	if (isNN) {
		imgWin=window.open('about:blank','',optNN);
	}
	if (isIE) {
		imgWin=window.open('about:blank','',optIE);
	}
	with (imgWin.document) {
		writeln('<html><head><title>Loading ...</title><style>body{margin:0px;}</style>');
		writeln('<sc'+'ript>');
		writeln('var isNN,isIE;');
		writeln('if (parseInt(navigator.appVersion.charAt(0))>=4){');
		writeln('isNN=(navigator.appName=="Netscape")?1:0;');
		writeln('isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}');
		writeln('function adjust_to_screensize(){');
		writeln('if (isIE){');
		writeln('window.resizeTo(200,200);');
		writeln('width=200-(document.body.clientWidth-document.images[0].width);');
		writeln('height=200-(document.body.clientHeight-document.images[0].height);');
		writeln('window.resizeTo(width,height);}');
		writeln('if (isNN){');       
		writeln('window.innerWidth=document.images["Image"].width;');
	    writeln('window.innerHeight=document.images["Image"].height;}}');
		writeln('function create_title(){document.title=\''+pTitle+'\';}');
	    writeln('</sc'+'ript>');
		writeln('</head><body bgcolor=000000 scroll="no" onload="adjust_to_screensize();create_title();self.focus()" onblur="self.close()">');
		writeln('<img name="Image" id="Image" src="' + pUrl + '" style="display:block">');
		writeln('</body></html>');
		close(); 
	}
}

function popUp(pUrl, pTitle, pHeight, pWidth) {

	var sX = getScrollX();
	var sY = getScrollY();
	var wH = getWindowHeight();
	var wW = getWindowWidth();
	var x = 0;
	var y = 0;
	var undefined = undefined;
	
//	var ct = getControl(ctrl);
//	var wi = parseFloat(ct.style.width);
//	var he = parseFloat(ct.style.height);
	
	x = Math.round(((wW - pWidth) / 2) + sX);
	y = Math.round(((wH - pHeight) / 2) + sY);
//	ct.style.left = x  + 'px';
//	ct.style.top = y + 'px';
//	showControl(ct, block);

	atts = 'height='+ pHeight + ',width=' + pWidth + ',top=' + y + ',left=' + x;
	win = window.open(pUrl, 'popUp', atts);
	win.focus();
	
}

function setInnerHTML(ctrl, txt) {
	var i = getControl(ctrl);
	i.innerHTML = txt;
}


function getWindowHeight() {
  	var 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 getWindowWidth() {
  	var myWidth = 0;
  	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
    	myWidth = window.innerWidth;
  	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	    //IE 6+ in 'standards compliant mode'
    	myWidth = document.documentElement.clientWidth;
  	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    	//IE 4 compatible
    	myWidth = document.body.clientWidth;
  	}
	return myWidth;
}	



function setHeight(obj, height) {
	var t = getControl(obj);
	t.style.height = height;
}
function getControlOffSetHeight(ctrl) {
	var undefined = undefined;
	
	var ct = getControl(ctrl);
	if (ct != undefined) {
		return ct.offsetHeight;
	}
	else {
		return 0;
	}
}


function getScrollX() {
	
	var scrOfX = 0
  	if( typeof( window.pageYOffset ) == 'number' ) {
    	//Netscape compliant
    	scrOfX = window.pageXOffset;
  	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    scrOfX = document.body.scrollLeft;
  	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    	//IE6 standards compliant mode
    	scrOfX = document.documentElement.scrollLeft;
  	}
  	return scrOfX;
}

function getScrollY() {
	
	var scrOfY = 0
  	if( typeof( window.pageYOffset ) == 'number' ) {
    	//Netscape compliant
    	scrOfY = window.pageYOffset;
  	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    scrOfY = document.body.scrollTop;
  	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    	//IE6 standards compliant mode
    	scrOfY = document.documentElement.scrollTop;
  	}
  	return scrOfY;
}
function getX(ctrl)
{
	var curleft = 0;
	var ct = getControl(ctrl);
	if (ct.offsetParent)
	{
		while (ct.offsetParent)
		{
			curleft += ct.offsetLeft
			ct = ct.offsetParent;
		}
	}
	else if (ct.x) {
		curleft += ct.x;
	}
	return curleft;
}

function getY(ctrl)
{
	var curtop = 0;
	var ct = getControl(ctrl);
	if (ct.offsetParent)
	{
		while (ct.offsetParent)
		{
			curtop += ct.offsetTop
			ct = ct.offsetParent;
		}
	}
	else if (ct.y) {
		curtop += ct.y;
	}
	return curtop;
}

function hideBusy(ctrl) {
	hideControl(ctrl);
	if (document.getElementsByTagName('SELECT')) {
		sels = document.getElementsByTagName('SELECT');
		
		for(i=0;i<sels.length;i++) {
			if (sels[i].temphidden) {
				sels[i].style.visibility = 'visible';
				sels[i].temphidden = false;
			}
		}
	}	
}
function showBusy(ctrl, block) {
	//var wi = 200;
	//var he = 75;
	var sX = getScrollX();
	var sY = getScrollY();
	var wH = getWindowHeight();
	var wW = getWindowWidth();
	var x = 0;
	var y = 0;
	var undefined = undefined;
	
	var ct = getControl(ctrl);
	var wi = parseFloat(ct.style.width);
	var he = parseFloat(ct.style.height);
	
	x = Math.round(((wW - wi) / 2) + sX);
	y = Math.round(((wH - he) / 2) + sY);
	ct.style.left = x  + 'px';
	ct.style.top = y + 'px';
	showControl(ct, block);
	
	if (document.getElementsByTagName('SELECT')) {
		sels = document.getElementsByTagName('SELECT');
		//sels.concat(document.getElementsByTagName('OBJECT'));
		
		var selX, selY, selW, selH;
		for(i=0;i<sels.length;i++) {
			sels[i].temphidden = false
			selW = sels[i].style.width;
			selH = sels[i].style.height;
			selX = getX(sels[i]);
			selY = getY(sels[i]);
			if (selW != undefined && selW.length > 2) {
				selW = selW.substring(0, (selW.length - 2));
			} else { selW = 0; }
			if (selH != undefined && selH.length > 2) {
				selH = selH.substring(0, (selH.length - 2));
			} else {selH = 0; }
			
			if (	(selX + selW) > x 	&&
					selX < (x + wi)		&&
					(selY + selH) > y	&&
					selY < (y + he)
					) {
				// hide it!
				sels[i].temphidden = true;
				sels[i].style.visibility = 'hidden';
			}
		}
	}
}


function _currentTimeZone() {
   	var tz=0;
	var rightNow = new Date();
   	var date1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
  	var date2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
   	var temp = date1.toUTCString();
   	var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
   	var temp = date2.toUTCString();
   	var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
   	var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60);
   	var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60);
   	if (hoursDiffDaylightTime == hoursDiffStdTime) { 
    	//alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is NOT observed here.");
      	res = hoursDiffStdTime;
   	} else {
      	//alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is observed here.");
      	res = hoursDiffStdTime + 1;
   	}
   	//alert(rightNow.toUTCString());
   	return res;
}

function checkCurrentTimeZone() {

	var res = readCookie('wdCTZ');
	var tmp = (new Date().getTimezoneOffset()/60)*(-1); //_currentTimeZone();
	if (res==null || tmp != res) {
		createCookie('wdCTZ', tmp, 46);
		res = tmp;
		document.location.reload();
		return;
	}
	
	return res;
}

function _forgetCurrentTimeZone() {
	eraseCookie('wdCTZ');
}

function fixflashie() {
	if (parseInt(navigator.appVersion.charAt(0))>=4){
		//var isNN=(navigator.appName=="Netscape")?1:0;
		var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;
	}
	
	if (isIE) {
		var objs = document.getElementsByTagName("object");
		for (var i = 0; i < objs.length; i++) {
			objs[i].outerHTML = objs[i].outerHTML;
		}
	}
}

function displayFlash(str) {
	document.write(str);
}

function replaceValueInQueryString(url, key, newvalue) {

	var re = new RegExp(key+'=\\w+[&]*');
	var replacement = key+'='+newvalue+'&';
	if (re.test(url)) {
		// replace when found
		url = url.replace(re, key+'='+newvalue+'&');
		
	} else {
		// add to querystring
		var t = /\?/;
		if (t.test(url)) {
			url += '&'+key+'='+newvalue;			
		} else {
			url += '?'+key+'='+newvalue;			
		}
	}
	return url;
}

// FORMS
// CHECK FUNCTIONS //
function DEPRICATED_check_fieldrequired(obj) {
	if (obj.value==null || obj.value=="") {
		return false;
	} else if ((obj.type=='checkbox' || obj.type=='radio') && !obj.checked) {
		return false;
	} else {
		return true;
	}
}

function check_fieldnumeric(obj, required) {
	if (required) {
		return (check_fieldrequired(obj) && !isNaN(obj.value));	
	} else {
		return !isNaN(obj.value);
	}
}

function check_fieldemail(obj, required) {

	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(obj.value)){
		return true;
	} else {
		return false;
	}
}

function showObjError(obj) {
	if (obj) {
		//ChangeCss(obj, 'error');
	}
}
function resetObjError(obj) {
	if (obj) {
		//ChangeCss(obj, '');
	}
}

function checkForm(form, msg) {
	var undefined = undefined;
	var frm = getControl(form);
	var ret = true;
	var req = false;
	
	for(var i=0;i<frm.length;i++) {
		req = frm[i].getAttribute('required');
			
		if (req != undefined && req != null && req != 'false') {
			if (check_fieldrequired(frm[i], frm)) {
				resetObjError(frm[i]);
			} else {
				showObjError(frm[i]);
				ret=false;
			}
		}
	}
	
	if (!ret) {
		alert(msg);
	}
	return ret;
}

function check_fieldrequired(obj, form) {
	var undefined = undefined;
	var frm = getControl(form);
	var ret = false;
	var req = false;
	
	for(var x=0;x<frm.length;x++) {
		req = frm[x].getAttribute('required');
		if (req != undefined && req != null && req != 'false' && frm[x].name==obj.name) {
			if (((frm[x].type=='checkbox' || frm[x].type=='radio') && frm[x].checked) ||
				((frm[x].type=='text' || frm[x].type=='textarea' || frm[x].type=='password' || frm[x].type=='file') && (frm[x].value.length>0)) || 
				((frm[x].type=='select-one' || frm[x].type=='select-multiple') && (countSelectedOptions(frm[x])>0))) {
				ret = true;
			}
		}
	}
	return ret;
	
}

function countSelectedOptions(selbox) {
	
	var res = 0;
	// select-one or select-multiple
	if ((typeof selbox) == 'object') {
		// is array.
		for(var i=0;i<selbox.length;i++) {
			if (selbox[i].selected) {
				res++;
			}
		}
	} else if((selbox.value!=null || selbox.value!='')) {
		res++;
	}

	return res;
}

function submitForm(frmname, frmaction, frmmethod) {
	frm = document.forms[frmname];
	if (frmaction) {
		frm.action=frmaction;
	}
	if (frmmethod) {
		frm.method=frmmethod;
	}
	frm.submit();
}
