/* 	
	------------------------------------------------------------------------------
	/framework/lib/js/stdlib.js
	
	Standard javascript functions
  ------------------------------------------------------------------------------
*/


function isDefined( variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

function logOut() {
	user.logOut();
	window.location.reload();
}

/* op het eigenlijke element (div/input/select/...) wordt niet de uiteindelijke 
   event opgeroepen, maar deze functie.
   Deze functie zorgt ervoor dat de eigenlijke eventfunctie enkele parameters mee
   krijgt die nuttig zijn: het framework-object waar het om gaat, en de event zelf
   (in alle browsers, dus ook in IE-browsers)
   De eigenlijk eventfunctie kan zich zo concentreren op zijn echte taak, nl.
   het opvangen van wat die event moet doen.
*/
function handle_event(ev) {
	
	var target_element;
	
	// event bij MS
	if (!ev) var ev = window.event;
	
	// target element W3C
	if (ev.target) target_element = ev.target;
	// target element MS
	else if (ev.srcElement) target_element = ev.srcElement;
	
	//alert('Het event (type = ' + ev.type + ') is opgetreden op ' +target_element.id);
	
	if (!target_element.id) {
		//debug.write("targetElement is undefined, proceeding to parent element: " + targetElement.parentNode);
		target_element = target_element.parentNode;
	}
	
	
	// framework element opzoeken (F_txtName -> txtName)
	var framework_element_id = target_element.id.substr(2);
	//alert("framework_element_id = " + framework_element_id);
	var framework_element = eval(framework_element_id);
	
	// het is vreemd, maar na een onchange van een dropdownbox gebeurt er nog een event, en ik weet niet van wat
	if (framework_element == undefined) {
		//alert(ev.type);
		// het is een click event, maar het targetelement is onbekend - heel vreemd
		//alert("frameworkelementid = " + target_element.id);
	}
	else {
		// geen events als het spul uitstaat - te checken of dat fouten geeft bij objecten waar enabled property niet bestaat
		if (framework_element.enabled == false) {
			debug.write("'t is disabled");	
			return;
		}
		
		//alert("eventtype = " + ev.type);
		eventfunction = framework_element.getEventName(ev.type);
		//alert("eventfunction = " + eventfunction);
	
		if (isDefined(fancy)) {
			if (fancy && framework_element.beforeEvent) 
				framework_element.beforeEvent(ev);
		}
		
		eval(eventfunction + "(ev, framework_element);");
		//alert(eval(parent_element_id).getevent("onclick"));
		
		if (isDefined(fancy)) {
			if (fancy && framework_element.afterEvent) 
				framework_element.afterEvent(ev);
		}
		
	
	}
	
	
}


function isArray (object) {
    if (!window.Array)  // js1.0 has no Arrays
      return false;
    else
      return object.constructor == window.Array;
  }




function addEvent(ctrl, eventtype, functionName) {
	
	//W3C
	if(ctrl.addEventListener) {
		//alert('W3C event added');
		ctrl.addEventListener(eventtype, functionName, false);
	}

	//Microsoft
	else if(ctrl.attachEvent){
		//alert("MS event added");
		ctrl.attachEvent("on" + eventtype, functionName);
	}
}


function fillWithZeroesBack(n, numberOfZeroes){ 
	n = n + '';
	while(n.length<numberOfZeroes)n=n+"0";
	return n;
}

function fillWithZeroesFront(n, numberOfZeroes){ 
	n = n + '';
	while(n.length<numberOfZeroes)n="0"+n;
	return n;
}

function getdocwidth() {
	//opera Netscape 6 Netscape 4x Mozilla 
	if (window.innerWidth){ 
		//alert("innerwidth");
		docwidth = window.innerWidth; 
		//docheight = window.innerHeight; 
	} 
	else {//IE Mozilla 
		if (document.all && !window.opera && document.body && typeof document.body.scrollTop=='number') { // Als het MS is dus eigenlijk
	    	docwidth = document.body.clientWidth;
	    }
	    else {		//	if (document.body.clientWidth 
			docwidth = document.body.clientWidth; 
		}
	}
	return docwidth;
}

function getdocheight() {
	docheight = document.documentElement.clientHeight; 
	return docheight;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getClientWidth() {
	if (window.innerWidth){ 
		docwidth = window.innerWidth; 
	} 
	else {//IE Mozilla 
		if (document.all && !window.opera && document.body && typeof document.body.scrollTop=='number') { // Als het MS is dus eigenlijk
	    	docwidth = document.body.clientWidth;
	    }
	    else {
			docwidth = document.body.clientWidth; 
		}
	}
	return docwidth;
}

//----------------------------------------------------------------------------
function getClientHeight() {
	// met dank aan howtocreate.co.uk!
	debug.write(window.innerHeight+ " - " + document.documentElement.clientHeight + " - " + document.body.clientHeight);
	if (window.innerHeight) {
		docheight = window.innerHeight;
	}
	else if (document.documentElement.clientHeight < document.body.clientHeight) {
		docheight = document.documentElement.clientHeight; 
	}
	else if (document.body) {
		docheight = document.body.clientHeight; 
	}
	
	
	//docheight = document.documentElement.clientHeight; 
	return docheight;
}


function getelementheight(Elem) {
	
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetHeight;
		
		return xPos;
	
}

function getelementwidth(Elem) {
	
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetWidth;
		
		return xPos;
	
}

function gotourl(where) {
	window.location = webroot + where;
}

function setClassName(id, newClassName) {
	obj = document.getElementById(id);
	if (obj) {
		obj.className = newClassName;
	}
}

function openWindow(the_url, the_name, the_width, the_height){ 
	the_width -= 0;
	the_height -= 0;
	var screen_width = screen.availWidth;
	var screen_height = screen.availHeight;
	var the_toolbar = "no";
	var the_addressbar = "no";
	var the_directories = "no";
	var the_statusbar = "yes";
	var the_menubar = "no";
	var the_scrollbars = "yes";
	var the_do_resize =  "yes";
	var the_copy_history = "yes";
	//alert('screen_width=' + screen_width + ', screen_height=' + screen_height + ', the_width=' + the_width + ', the_height=' + the_height);
	
	if ((the_height+60) >= screen_height) {
		the_height = screen_height - 60;
	}
	if ((the_width+50) >= screen_width) {
		the_width = screen_width - 50;
	}	
	
	top_pos = (screen_height/2) -  (the_height/2) - 30;
	if (top_pos < 0) {
		top_pos = 0;
	}
	left_pos = (screen_width/2) -  (the_width/2);
	
		var option = "toolbar="+the_toolbar+",location="+the_addressbar+",directories="+the_directories+",status="+the_statusbar+",menubar="+the_menubar+",scrollbars="+the_scrollbars+",resizable="+the_do_resize+",Width="+the_width+",Height="+the_height+",copyhistory="+the_copy_history+",left="+left_pos+",top="+top_pos;
		site=open('', the_name, option);
		site.location=the_url;
		if(site.open){site.focus();return false;}
	
	return false;
}


function getLayoutRoot() {
	return layoutroot;
}

function getWebRoot() {
	return webroot;
}


// custom functions for hiding dropdown boxes
function showDropDowns() {
	//alert('ShowDropdown');
	var i = 0;
	elems = document.getElementsByTagName("select");
	n_elems = elems.length;
	for (i = 0; i < n_elems; i++) {
		if (elems[i].type.toString() == "select-one")
			elems[i].style.display = "block";
	}
}
function hideDropDowns() {
	//alert('hidedropdown');
	var i = 0;
	elems = document.getElementsByTagName("select");
	n_elems = elems.length;
	for (i = 0; i < n_elems; i++) {
		if (elems[i].type.toString() == "select-one")
			elems[i].style.display = "none";
	}
}


function getCookie(name)
{
    var c = new Object();
    var i = 0;
    var clen = document.cookie.length;
    while (i < clen)
    {
         var endstr = document.cookie.indexOf (";", i);
         if (endstr == -1) endstr = document.cookie.length;

         var v = unescape(document.cookie.substring(i, endstr));
         var key = v.substring(0, v.indexOf("=", 0));
         var val = v.substring(v.indexOf("=") + 1);
         c[key] = val;
         i = endstr + 2;
    }
    if(name) return c[name];
    return c;
}

function setCookie(name, value, days)
{
	if (webroot == "") {
		cookiePath = "/";
	}
	else {
		cookiePath = webroot;
	}
		
	
	if (days == 0) {
		document.cookie = name + "=" + escape(value) +  ";" + "path=" + cookiePath;
  }
	else {
		var expire = new Date();
  	expire.setTime(expire.getTime() + 86400000 * days); // expire nooit
	
		document.cookie = name + "=" + escape(value) +  ";"	+ "expires=" + expire.toGMTString() + ";" + "path="+cookiePath;
	}
}

