//////////////////////////////////////////////////////////////////////////
// General/Helper functions
//////////////////////////////////////////////////////////////////////////

function getdatetoday()
{
	date = new Date();

	dateret = new Date();
	dateret.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
	return dateret;
}

function createNewRandomURL(src)
{
    // try refreshing grid
    var n = src.indexOf('rand=') + 5;
    var p = n;
    while (!isNaN(src.charAt(p))) p++;
    // copy url before rand= (n)
    var s = src.substring(0, n);
    // add new random number to url..
    s += Math.floor(Math.random(1) * 1000);
    // copy url after random number (p)
    s += src.substring(p, src.length);
    // update iframe source
    return s;
}

function _getstyle (layer)
{
    if (document.getElementById(layer)) {
        return document.getElementById(layer).style;
    } else {
        return null;
    }

    /* Ik ben bang dat dit overhead veroorzaakt.. *
	if(document.getElementById)
	{
		if (document.getElementById(layer)) {
			return document.getElementById(layer).style;
		} else {
			return null;
		}
	}
	else if(document.all)
	{
		if (document.all[layer]) {
			return document.all[layer].style;
		} else {
			return null;
		}
	}
	else
	{
		return document[layer]
	} */
}
function _getitem (layer)
{
	if(document.getElementById)
		return document.getElementById(layer);

    /* Ik ben bang dat dit overhead veroorzaakt.. *
	if(document.getElementById)
	{
		return document.getElementById(layer)
	}
	else if(document.all)
	{
		return document.all[layer]
	}
	else
	{
		return document[layer]
	}*/
}

var cacheItems = new Object();
var cacheStyles = new Object();
function getitem(id)
{
    if (cacheItems[id])
        return cacheItems[id];

    cacheItems[id] = _getitem(id);
    return cacheItems[id];
}
function getstyle(id)
{
    if (cacheStyles[id]/* && cacheStyles[id] != null*/)
        return cacheStyles[id];

    cacheStyles[id] = _getstyle(id);

    return cacheStyles[id];
}


function getItemsByClass (tag, className) {
	var items = new Array();
	var elements = document.getElementsByTagName(tag);

    var m = elements.length;
	for (var i = 0; i < m; i++) {
		if (elements[i].className == className) {
			items.push(elements[i]);
		}
	}

	return items;
}

function trim(s)
{
	// Remove leading spaces and carriage returns

	while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r') || (s.substring(0,1) == '\t'))
	{
		s = s.substring(1,s.length);
	}

	// Remove trailing spaces and carriage returns

	while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r') || (s.substring(s.length-1,s.length) == '\t'))
	{
		s = s.substring(0,s.length-1);
	}
	return s;
}

/**
 * url: request uri, e.g.: index.php?bla=goi
 * vars: array with variables so strip
 *
 * note: this function also removes any parameter that has an empty value of name
 *
 * return: ready-to-add variable url (e.g.: someUrl.php? or someUrl.php?var=val&)
 */
function stripVarsFromRequestUri(url, vars) {
    var origUrl = url;
    url = decodeURI(url);
    var bookMark = '';
    var queryString = '';
    var retQueryString = '';

    // first check bookmark # ...
    if (url.indexOf('#')>0) {
    	bookMark = url.substring(url.indexOf('#')) ;
    	url = url.substring(0,url.indexOf('#')) ;
    }
    // First get the queryString (the part of the ?)

    if (url.indexOf('?')) {
    	queryString = url.substring(url.indexOf('?')+1) ;
    	url = url.substring(0,url.indexOf('?')) ;
    }
    var tmpArr ;
    var addParm ;
	tmpArr = queryString.split('&');
	for(var tel=0; tel<tmpArr.length; tel++) {
		var tmp2 = new Array();
		tmp2 = tmpArr[tel].split('=');
		if ((tmp2[0]!=null) && (tmp2[0]!='') ) {
			if ((tmp2[1]!=null) && (tmp2[1]!='') ) {
	            // Create the variable
				queryVariable = new Array();
				queryVariable['name'] = tmp2[0];
				queryVariable['value'] = tmp2[1];

				// niet toevoegen wat in de vars filter array zit
				addParm = true;
				for (var k = 0; k < vars.length; k++) {
	            	if (vars[k] == queryVariable['name']) {
	            		addParm = false;
	            	}
				}
				if (addParm) {
					retQueryString += queryVariable['name'] + '=' + queryVariable['value'] + '&';
				}
			}
		}
	}

    return url+'?'+retQueryString;
    // Check if the url has a ?
    // if (url.indexOf('?') == -1) {
    // No ? found, append
    // return url + "?";
    // } else {
    // A ? was found, meaning the query string has a variable, add a & to make it 'variable-add' ready
    // return url + "&";
    // }
}

function is_numeric(input)
{
	var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;

	if (input.length == 0) return false;

	//  test input consists of valid characters listed above
	for (i = 0; i < input.length && blnResult == true; i++)
	{
		strChar = input.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	return blnResult;
}

function is_integer(input)
{
	var strValidChars = "0123456789-";
	var strChar;
	var blnResult = true;

	if (input.length == 0) return false;

	//  test input consists of valid characters listed above
	for (i = 0; i < input.length && blnResult == true; i++)
	{
		strChar = input.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	return blnResult;
}


//////////////////////////////////////////////////////////////////////////
// Debugging functions
//////////////////////////////////////////////////////////////////////////

function show_obj(obj, filter) {
    showObj(obj, filter);
}

// subobjects: integer value of the max recursion depth (0 is no recursion)
function print_r(obj, subobjects) {
    windowOpener(var_dump(obj, subobjects) +'<hr/>',(screen.width - 100), (screen.height - 100), 'DebugInformation');
}

function showObj(obj, filter)
{
	var data = new Array();
	var tmp = "";
	var iter = 0;
	var val = "";
    var useFilter = false;

    if (filter != null && typeof(filter) != 'undefined') {
        useFilter = true;
    }

	for (var i in obj)
	{
        if (useFilter && i.substr(0, filter.length) != filter) {
            continue;
        }

		if (i == 'outerHTML' || i == 'innerHTML') {
			val = "[HTML]";
		} else {
			val = obj[i];
		}

		tmp += 'obj[\''+i+'\'] is ' + val + "\r\n";

		if (iter == 30) {
			data.push(tmp);
			iter = 0;
			tmp = "";
		}

		iter++;
	}
	data.push(tmp);

	alert(data.length);
	for (var i = 0; i < data.length; i++) {
		alert(data[i]);
	}
}

function delay(gap)
{
	var then,now;
	then = new Date().getTime();
	now = then;
	while((now-then)<gap)
	{
	now=new Date().getTime();
	}
}

/**
 *  Debug: Show object properties, though doesn't work with scalars yet.
 */
function var_dump(o, subobjects) {
    var str = "";
    str += "<style>pre,xmp{display:inline;}table tr {vertical-align:top;}</style>";
    str += "<table border='1'>";
    for (var i in o) {
        str += '<tr>';
        str += '<td><pre>' + i + '</pre></td>';
        if (subobjects && subobjects >= 1 && (o[i] == '[object]' || o[i] == '[object Object]')) {
        	try {
	        	str += '<td>' + var_dump(o[i], (subobjects-1)) + '</td>';
        	} catch(e) {
				str += '<td><xmp>' + o[i] + '</xmp></td>';
        	}
        } else {
	        str += '<td><xmp>' + o[i] + '</xmp></td>';
        }
        str += '</tr>';
    }
    str += '</table>';
    return str;
}

/**
 *  Debug: Pop up window and write into it
 */
function see(f) {
    var x = window.open('','','width=400,height=300,scrollbars=1,resizable=1')
    x.document.write(f);
}

/**
 *  See Position
 *  @param e, must be changed to c ?
 */
function debugpos(e) {
    var e = e || event;             // event
    var c = e.srcElement;           // current element
    var p = new getPosition(c);     // position
    var b = document.getElementsByTagName('body')[0]; // body

    /// -> remove self and do nothing
    if (c.id == "debugdblclick") {
        b.removeChild(document.getElementById('debugdblclick'));
        return;
    } else
    /// -> create on non existence and assign.
    if (!document.getElementById('debugdblclick')) {
        d = document.createElement('div');
        d.id = "debugdblclick";
        b.appendChild(d, b);
    } else {
    /// -> assign.
        d = document.getElementById('debugdblclick');
    }

    /// Style
    with (d.style) {
        overflow            = "hidden";
        color               = "white";
        backgroundColor     = "red";
        filter              = "alpha(opacity=30)";
        position            = "absolute";
        zIndex              = "10";
        left                = p.l;
        top                 = p.t;
        height              = p.h;
        width               = p.w;
    }
    /// Identify
    var s  = "";
    s += c.tagName ? "tag:" + c.tagName + " ": '';
    s += c.id ? "id:" + c.id + " ": '';
    s += c.className ? "class:" + c.className + " ": '';
    d.innerHTML = s.bold();

    /// Action
    d.ondblclick  = function() {b.removeChild(d); }
    d.onkeydown   = function() {
        /// Popup
        var s  = "";
        s += c.id ? "id: " + c.id + "<br/>": '';
        s += c.className ? "class: " + c.className + "<br/>": '';
        s += var_dump(p)
        s += var_dump(c.style)
        s += var_dump(c)
        see(s,c);
    }

}


//////////////////////////////////////////////////////////////////////////
// Window functions
//////////////////////////////////////////////////////////////////////////

var gl_includedFiles = new Object();

/**
 * addEvent
 *
 * cross-browser event handling for IE5+,  NS6 and Mozilla
 *
 * @link http://www.scottandrew.com/weblog/jsjunk
 * @param elm element
 * @param evType event type like e.g. 'onclick', use 'click'
 * @param fn the closure or callback function
 */
function addEvent(elm, evType, fn, useCapture)
{
    if (elm.addEventListener){
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } else if (elm.attachEvent){
        var r = elm.attachEvent("on"+evType, fn);
        return r;
    } else {
        alert("Handler could not be removed");
    }
}

function removeEvent(elm, evType, fn, useCapture)
{
    if (elm.removeEventListener){
        elm.removeEventListener(evType, fn, useCapture);
        return true;
    } else if (elm.detachEvent){
        var r = elm.detachEvent("on"+evType, fn);
        return r;
    } else {
        alert("Handler could not be removed");
    }
}

/**
 *  IncludeOnce in Javascript, usage: IncludeOnce("/somepath/somefile.js");
 *
 *  RECOMMENDED usage: addLoadEvent( function() { IncludeOnce("/somepath/somefile.js"); } );
 *  If there is a maximum of X connections, and you include X files, IE gives priority to
 *  the included file, resulting in a disconection of the primary socket.
 */
function IncludeOnce(include_file)
{
    if (gl_includedFiles[include_file] == true)
    {
    	return false;
//        return !alert('include_file already included: ' + include_file);
    }
    var incl = document.createElement('script');
    incl.setAttribute('type', 'text/javascript');
    incl.setAttribute('src', include_file);
    var head = document.getElementsByTagName('head');
    var targetParent = document.body;
    if (head.length == 0)
        targetParent = head[0];
    try {
        targetParent.appendChild(incl);
    }
    catch (e) {
        alert("IncludeOnce error occured: " + e.message);
    }
    gl_includedFiles[include_file] = true;
}

/**
 * Add a CSS-url that will be incluced in the page
 * param: url to the css (Ex: http://url/file.css)
 */
function addCSSInclude(url)
{
    if(document.createStyleSheet) {
        document.createStyleSheet(url);
    } else {
        var styles = "@import url(' " + url + " ');";
        var newSS=document.createElement('link');
        newSS.rel='stylesheet';
        newSS.href='data:text/css,'+escape(styles);
        document.getElementsByTagName("head")[0].appendChild(newSS);
    }
}

function appendjavascript(url)
{
	head 		= document.getElementsByTagName('head').item(0);
	script 		= document.createElement('script');
	script.src 	= url;
	script.type = 'text/javascript';
	head.appendChild(script);
}

function refreshParent() {
   	if (window.opener && !window.opener.closed) {
        window.opener.document.location.reload();
    }
}

/**
**	Usage in popup = window.opener.refresh_grid();
*/
function refresh_grid()
{
	var o = document.getElementsByTagName('iframe');
    if (o.length != 0) {
        o[0].src = createNewRandomURL(o[0].src);
    } else {

        // maybe we are the iframe! (in an explorer the grid is in another iframe)
        if (isCurrentPageAGrid()) {
            // refresh ourselves
            window.location.replace( createNewRandomURL(window.location.href) );
            return;
        }

        // try re-posting
        var o = document.getElementsByTagName('form');
        if (o.length == 0) return !alert('no iframes nor forms found, cannot refresh "grid"');
        o[0].submit();
    }
}

/**
 * Originates from default2.js (top-10 js functions )
 */
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

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;
}

/**
 *  getPoSition, gPS renamed...
 *  t:top, l:left, w:width, h:height, r:right, b:bottom
 */
function getPosition(o) {
   var op = function (o, f, s) { return !o.offsetParent ? s : op(o.offsetParent, f, s += o[f]); }
   this.t = op(o, 'offsetTop', 0);
   this.l = op(o, 'offsetLeft', 0);
   this.w = o.offsetWidth;
   this.h = o.offsetHeight;
   this.r = this.l + this.w;
   this.b = this.h + this.t;
}

function strip(filter, str){
    var i,curChar;
    var retStr = '';
    var len = str.length;
    for(i=0; i<len; i++){
        curChar = str.charAt(i);
        if(filter.indexOf(curChar)<0)
            //not in filter, keep it
            retStr += curChar;
    }
    return retStr;
}

/**
 * Returns whether the current page is a grid, based on the window location
 */
function isCurrentPageAGrid()
{
    if (window.location.href.indexOf('GTree/treeGrid.php') != -1)
        return true;
    else
        return false;
}

function getscrolltop ()
{
	if (document.body.clientWidth)
	{
		return document.body.scrollTop;
	}
	else if (window.pageYOffset)
	{
		return window.pageYOffset;
	}
}

function getscrollleft ()
{
	if (document.body.clientWidth)
	{
		return document.body.scrollLeft;
	}
	else if (window.pageXOffset)
	{
		return window.pageXOffset;
	}
}

function getdocheight_depricated ()
{
	if ( window.innerHeight )
	{
		return window.innerHeight;
	}
	else if ( document.body.clientHeight )
	{
		return document.body.clientHeight;
	}
}

function getdocwidth_depricated ()
{
	if ( window.innerWidth )
	{
		return window.innerWidth;
	}
	else if ( document.body.clientWidth )
	{
		return document.body.clientWidth;
	}
}

function getdocheight() {
	var minHeight = 0;

	var myWidth = 0, 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;
	}

	if (myHeight < minHeight) {
		return minHeight;
	} else {
		return myHeight;
	}
}

function getdocwidth() {
	var minWidth = 0;

	var myWidth = 0, myHeight = 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;
	}

	if (myWidth < minWidth) {
		return minWidth;
	} else {
		return myWidth;
	}
}

function gettext (layer)
{
	if(document.getElementById)
	{
		return document.getElementById(layer).innerHTML;
	}
	else if(document.all)
	{
		return document.all[layer].innerHTML;
	}
	else
	{
		return document[layer].document.open();
	}
}
function getElementsByClass(name, elm) {
    return getElementsByClassName(name, elm);
}
/**
 * Perhaps comparing with regex instead of string because elements can have multiple classnames.
 * @goal document.getElementsByClassName(name)
 * Unfortunately, prototyping DOM objects do not work in IE, and by not including *.htc files as in
 * @see: http://javascript.weblogsinc.com/entry/1234000297027018/
 * @return result array
 * @param string name 'name of class'
 * @param element elm 'limit search to elm'
 */
function getElementsByClassName(name, elm) {
    var tags = elm || document;     /// limit search
    var find = tags.getElementsByTagName('*');
    var emit = new Array();
    for (var i=0; i < find.length; i++) {
        if (find[i].className == name) emit.push(find[i]);
    }
    return emit;
}


//////////////////////////////////////////////////////////////////////////
// Popup functions
//////////////////////////////////////////////////////////////////////////

var javascriptPopupFullscreenFlag = 'no';

function showWebpageDialog(url, width, height)
{
	var resize = 'no';
	var status = 'no';
	var leftOffset = (screen.width / 2) - (width / 2);
	var topOffset = (screen.height / 2) - (height / 2) - 20;


	if (typeof window.showModalDialog != 'undefined')
	{
		//	Display layer over complete page
		try {
			getstyle("disable").display='block';
		}catch(e) { }
		//getstyle("disable").top = getscrolltop();
		//getstyle("disable").left = getscrollleft();

        // Display in the center of the screen


	var func = 'unadorned: no; dialogHeight: '+ height +'px; dialogWidth: '+ width +'px; dialogTop: '+ topOffset +'px; dialogLeft: '+ leftOffset +'px; edge: Raised; center: Yes; help: No; resizable: '+ resize +'; status: '+ status +';';
		window.showModalDialog(url, window, func);

		//	Hide layer over complete page
		try {
			getstyle("disable").display='none';
		}catch(e) { }
	}
	//	for support browsers wich do not support showModalDialog
	else
	{
		window.open(url, "", "width="+width+",height="+height+",resizable="+ resize +",scrollbars="+ scroll +",left="+ leftOffset +",top="+ topOffset +",status="+ status +"");
	}
}

function launch_popup(site, winwidth, winheight, resizable, scrollable, fullscreen)
{
	winleft = (screen.width / 2) - (winwidth / 2);
	wintop = (screen.height / 2) - (winheight / 2) - 20;

	var _resizable = 'no' ; if (resizable) { _resizable = 'yes' ; }
	var _scrollable = 'no' ; if (scrollable) { _scrollable = 'yes' ; }
	var _full = 'no' ; if (fullscreen) { _full = 'yes' ; }
	try
	{
		if (_full == 'no' && (javascriptPopupFullscreenFlag == 'yes' || javascriptPopupFullscreenFlag == 'no'))
			_full = javascriptPopupFullscreenFlag;
	}
	catch(e)
	{
		//	javascriptPopupFullscreenFlag is undefined
	}
	return window.open(site, "", "width="+winwidth+",height="+winheight+",resizable="+_resizable+",scrollbars="+_scrollable+",left="+winleft+",top="+wintop+",status=no,fullscreen="+ _full);
}

function launch_popup_scroll(site, winwidth, winheight, resizable, fullscreen)
{
	return launch_popup(site, winwidth, winheight, resizable, true, fullscreen) ;
}

function windowOpener(item,Pwidth,Pheight,title) {
 msgWindow = window.open("", "displayWindow", "menubar=no,scrollbars=yes,resizable=yes,status=no,width="+ Pwidth +",height=" + Pheight + " " );
 msgWindow.document.write ('<HEAD><TITLE>'+title+'</TITLE></HEAD>');
 msgWindow.document.write('<body topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0 style="TEXT-ALIGN: center" bgcolor=#FFFFFF  >');
 msgWindow.document.write(""+item+"");
 msgWindow.document.write('</body></html>');
}


//////////////////////////////////////////////////////////////////////////
// Form functions
//////////////////////////////////////////////////////////////////////////
var closeWindowConfirmText = '';
try {
	closeWindowConfirmText = _('Wilt u de wijzigingen in het formulier opslaan?')
} catch(e) {
	closeWindowConfirmText = 'Wilt u de wijzigingen in het formulier opslaan?';
}

function in_array(needle, haystack)
{
	for(i = 0; i < haystack.length; i++) {
		if (haystack[i] == needle) {
			return true;
		}
	}
	return false;
}

function hasFormChanged(form)
{
	if (form == null)
	{
		return false ;
	}

    // Update editors!
    var r = Math.random(100);
    var weditors = document.getElementsByTagName('textarea');
    for (j = 0; j < weditors.length; j++) {
        if (weditors[j].className == 'wpHtmlEditArea') {
            // alert("preparing: " + j + '  - ' + r);
            wp_prepare_submission(weditors[j]);
        }
    }

    var formChanged = false;
    var output = '';
    var changes = '';
    var changedElements = new Array();
    if (form.elements != null) {
	    for (var i=0, j=form.elements.length; i<j; i++) {

	    	if (form.elements[i].tagName.indexOf('FIELDSET') >= 0) {
				continue;
	    	}

	    	if (form.elements[i].name.indexOf('search_') >= 0) {
				continue;
	    	}
	    	if (form.elements[i].name.indexOf('bsTreeChk_Bs_Tree') >= 0) {
				continue;
	    	}
	        myType = form.elements[i].type;
	        if (myType == 'checkbox' || myType == 'radio') {
	            if (form.elements[i].checked == form.elements[i].defaultChecked) {
	                // Same value
	            } else {
	                // Value changed
	                //	'__' indicates advcheckbox hidden value
	                changedElement = '';
	                if (form.elements[i].name.substr(0, 2) !== '__') {
		                formChanged = true;
		                if (myType == 'radio') {
			                //.replace(/(\[vraag_[0-9]*\])([vraag_[0-9]*\])/i, '$1')
			                labelId = form.elements[i].name.replace(/(\[vraag_[0-9]*\])([vraag_[0-9]*\])/i, '$1');
			                labelId = labelId.replace('[', '_');
			                labelId = labelId.replace(']', '_') + 'label';
		            		if (document.getElementById(labelId)) {
		            			try {
			            			changedElement = '- ' + document.getElementById(labelId).innerHTML.replace(/<\/?[^>]+>/gi, '') + '\n';
		            			} catch(e) {
		            				changedElement = '- ' + form.elements[i].name + '\n';
		            			}
		            		} else {
			            		changedElement = '- ' + form.elements[i].name + '\n';
		            		}
		                } else {
		                	changedElement = '- ' + form.elements[i].name + '\n';
		                }
		                if (!in_array(changedElement, changedElements)) {
		                	changedElements.push(changedElement);
		                }
	                }
	                //return true;
	            }
	        }

	        // Update value van editors (is dit webcontroleur specifiek? of de oude WYSIWYG editor?
	        try {
		        if ((form.elements[i].type == 'textarea')
		            && tinymce.EditorManager.get(form.elements[i].id))
		        {
		        	if (tinymce.EditorManager.get(form.elements[i].id).isDirty()) {
		            	form.elements[i].value = tinymce.EditorManager.get(form.elements[i].id).getContent();
		        	}
		        }
	        } catch (e) {
//	        	alert(e.message);
	        }

	        if (myType == 'hidden' || myType == 'password' || myType == 'text' || myType == 'textarea')
	        {
	            // Vergelijk defaultValue (Internet Explorer specifiek property) met het huidigeValue
	            //  (huidigeValue van editors is reeds geupdate d.m.v. wp_prepare_submission, ...)
				var huidigeValue = trim(form.elements[i].value.toLowerCase().toLowerCase());
				var defaultValue = trim(form.elements[i].defaultValue.toLowerCase());
				changedElement = '';

                /**
                 * Na inspectie blijkt dat internet explorer (?) het entergebruik niet altijd even consistent doorvoert.
                 * Zo blijkt huidigeValue voornamelijk CR+LF te gebruiken en defaultValue alleen CR. Dus om deze check altijd
                 * goed te laten gaan, vervang ik voor beide CRLF naar LF, en overige CR's naar LF's.
                 */
                huidigeValue = huidigeValue.replace(/\r\n/g, "\n");
                huidigeValue = huidigeValue.replace(/\r/g, "\n");
                defaultValue = defaultValue.replace(/\r\n/g, "\n");
                defaultValue = defaultValue.replace(/\r/g, "\n");


	            // alert('huidigeValue='+huidigeValue+', '+"\n\n"+'defaultValue='+defaultValue);
				if (huidigeValue == '' && defaultValue == '<div>&nbsp;</div>') {
					// Niks aan de hand, het isde WYSIWYG maar
				}
	            else if (huidigeValue == '' && defaultValue == '<div> </div>') {
					// Niks aan de hand, het isde WYSIWYG maar
				}
	            else if (huidigeValue != defaultValue) {
	            	if ((form.elements[i].type.indexOf('textarea') > -1)
	            	    && window[form.elements[i].name + 'Editor']) {
	            		var areaChanged = eval(form.elements[i].name +'Editor.isChanged();');
	            		if (areaChanged) {
	            	    	changedElement = '- ' + form.elements[i].name + '\n';
	            			formChanged = true;
	            		}
	            	}
	            	else {
	            		labelId = form.elements[i].name.replace(/\[optie_[0-9]*\]/i, '');
	            		labelId = labelId.replace(/\[optietext_[0-9]*\]/i, '');
	            		labelId = labelId.replace('[', '_');
	            		labelId = labelId.replace(']', '_') + 'label';
	            		if (document.getElementById(labelId)) {
	            			try {
		            			changedElement = '- ' + document.getElementById(labelId).innerHTML.replace(/<\/?[^>]+>/gi, '') + '\n';
	            			} catch(e) {
	            				changedElement = '- ' + form.elements[i].name + '\n';
	            			}
	            		} else {
		            		changedElement = '- ' + form.elements[i].name + '\n';
	            		}
	            		formChanged = true;
	            	}
	                if (!in_array(changedElement, changedElements)) {
	                	changedElements.push(changedElement);
	                }
	            }
	        }
	        // einde

	        if (myType == 'select-one' || myType == 'select-multiple') {
	           	var selectChanged = false;
	            for (var k = 0, l=form.elements[i].options.length; k < l; k++) {
	                if (form.elements[i].options[k].selected == form.elements[i].options[k].defaultSelected) {
	                	// Same value
	                } else {
	                    // Value changed
	                    if (form.elements[i].options[k].value == '0' || form.elements[i].options[k].value == '-' || form.elements[i].options[k].value == '')
	                    {

	                    }
	                    else
	                    {

	                      var selectChanged = true;
	                    }
	                }
	            }
	            if (selectChanged)
	            {
            		labelId = form.elements[i].name.replace('[', '_');
            		labelId = labelId.replace(']', '_') + 'label';
            		if (document.getElementById(labelId)) {
            			try {
	            			changedElement = '- ' + document.getElementById(labelId).innerHTML.replace(/<\/?[^>]+>/gi, '') + '\n';
            			} catch(e) {
            				changedElement = '- ' + form.elements[i].name + '\n';
            			}
            		} else {
	            		changedElement = '- ' + form.elements[i].name + '\n';
            		}
	                if (!in_array(changedElement, changedElements)) {
	                	changedElements.push(changedElement);
	                }
	                formChanged = true;
	            }
	        }
	    }
    }
    if (formChanged)
    {
       return changedElements.join('');
    }
    else
    {
    	return '';
    }
}

function submitBeforeRedirect(locatie) {
    var forms = document.getElementsByTagName('form');
    if (forms.length > 0)
    {
    	for (var i = 0; i < forms.length; i++)
    	{
        	var form = forms[i];
	        var changes = hasFormChanged(form);
	        if (changes.length > 0)
	        {
	        	if (confirm(_('De volgende velden zijn gewijzigd:') +' \n ' + changes + ' \n'+ _('Wilt u deze wijzigingen opslaan?')))
	        	{
	        		if (submit_form(form.id, 0, 0))
	        		{
						setTimeout('window.location = '+ locatie+';', 500);
	        		}
				}
				else
       			{
        			window.location = locatie;
       			}
	       	}
       		else
       		{
        		window.location = locatie;
       		}
       	}
    }
    else
    {
    	window.location = locatie;
    }
}

function checkFormsBeforePopUp(forceDocument) {
	if (forceDocument) {
		var forms = forceDocument.getElementsByTagName('form');
	} else {
	    var forms = document.getElementsByTagName('form');
	}
    if (forms.length > 0)
    {
    for (var i = 0; i < forms.length; i++)
    	{
        	var form = forms[i];
	        var changes = hasFormChanged(form);
	        if (changes.length > 0)
	        {
	        	if (confirm(_('De volgende velden zijn gewijzigd:') +' \n ' + changes + ' \n'+ _('Wilt u deze wijzigingen opslaan?')))
	        	{
	        		if (submit_form(form.id, 0, 0))
	        		{
						return true;
	        		}
				}
				else
       			{
        			return true;
       			}
	       	}
       		else
       		{
        		return true;
       		}
       	}
    }
    else
    {
    	return true;
    }
}

/**
 * -------------------------------------------- *
 * 				prepareWeditor()				*
 * -------------------------------------------- *
 * Functie om input uit een iframe over te		*
 * zetten naar een wysiwyg editor				*
 * -------------------------------------------- */
function prepareWeditor()
{
	var weditors = document.getElementsByTagName('textarea');

	for (i = 0; i < weditors.length; i++) {
		if (weditors[i].className == 'wpHtmlEditArea') {
			wp_prepare_submission(weditors[i]);
		}
	}
}


/**
 * -------------------------------------------- *
 * 				Javascript voor opslaan			*
 * -------------------------------------------- *
 * Javascript benodigd voor het submitten van   *
 * een formulier. Wordt gebruikt bij 			*
 * $showOpslaan	en bij $showOpslaanEnSluiten	*
 * -------------------------------------------- */
function submit_form(formName, closeparam, refreshparam, newparam, refreshparent)
{
	prepareWeditor();
	try {
		tinyMCE.triggerSave();
	} catch(e) {}

    confirmOnClose = false;

    /// Note added: form.elements[...].id != form.elements[...].name, jvv 050413
    var submitObj = document.getElementById('submit');
    if (submitObj)
    {
        alert('WebFrame Error: Er is een element met name=submit kan niet opslaan via deze knop');
        return false;
    }

    var formObj = document.forms[formName];
    for (var i = 0; i < formObj.elements.length; i++)  // Alle elementen afgaan opzoek naar HTMLArea's
    {
    	if (formObj.elements[i].tagName.indexOf('FIELDSET') >= 0) {
			continue;
    	}

    	if ((formObj.elements[i].type.indexOf('textarea') > -1))
        {
        	var formelementname = formObj.elements[i].name.replace(/[\[\]]/g, '');

            if (eval('typeof(' + formelementname +'Editor)') != 'undefined') {
        		eval('formObj.elements[i].value = '+ formelementname +'Editor.getInnerHTML();');
        	}
        }
    }

    var targetPage = '';
    if (formObj.action.length > 0)
    {
          targetPage = formObj.action;
    }

    // fixje om geen 404-redirects te krijgen met close- en refreshparams (edgar)
    if (targetPage.indexOf('?') == -1)
    {
        targetPage = targetPage + '?';
    }

    if ((   eval('window.validate_'+formName) && eval('validate_'+formName+'(formObj);')) ||
            !eval('window.validate_'+formName))
    {
		if (closeparam == '1') {
			targetPage = targetPage + '&close=1';
		}

		if (refreshparam == '1') {
			targetPage = targetPage + '&refresh=1';
		}

		if (newparam) {
			targetPage = targetPage + '&new=' + newparam;
		}

		if (refreshparent > 0) {
			targetPage = targetPage + '&parentredirect='+ refreshparent;
		}
  		formObj.action = targetPage;
        window.status = targetPage;
        /*
       if (typeof(formObj.onsubmit) != 'undefined')
        {
            formObj.onsubmit();
        }*/
		/*
			Tekst voor tijdens het opslaan te tonen...
		*/
		try
		{
	        getstyle('opslaanDiv').display = 'block';
	        getstyle('opslaanTekstDiv').display = 'block';
		}catch(e){}

		try
        {
			removeEvent(window, 'unload', __checkForms);
        }
        catch(e)
        {
        	//	niets mee doen!
        }

        formObj.submit();

        return true;
    }
    else
    {
    	return false;
    }
}


//////////////////////////////////////////////////////////////////////////
// Widget functions
//////////////////////////////////////////////////////////////////////////

function FocusFirstInputTab()
{
	var form = document.getElementsByTagName('form');
	if (form[0])
	{
		var elms = form[0].elements;
		if (elms.length > 0)
		{
			var focused = false;
			for (i = 0; i < elms.length; i++)
			{
				if (typeof elms[i].type != 'undefined' && elms[i].type != 'hidden' && focused == false)
				{
					try
					{
						elms[i].focus();
						focused = true;
					}
					catch(e)
					{
						//	Ignore ;)
					}
				}
			}
		}
	}
}

/**
 * Register class textarea-dynamic
 */
function textarea_dynamic_register(defclass)
{
    /// match default classname
    if (!defclass) {
        defclass = "textarea-dynamic"
    }

    /// get all textareas
    var tas = document.getElementsByTagName('textarea');

    /// event textarea dynamic
    var tad = function(e) {
        textarea_dynamic(e.srcElement);
    }

    /// traverse textareas and check for name
    for (var i=0;i<tas.length;i++) {

        /// check by indexOf in case of multiple classnames
        if (tas[i].className.indexOf(defclass) > -1) {

            /// set init
            textarea_dynamic(tas[i]);

            /// set style
            tas[i].style.fontFamily = "monospace";
            tas[i].style.overflow   = "hidden";

            /// set behaviour
            addEvent(tas[i], 'keyup', tad);
        }
    }
    /// end
}

/**
 * Autosize a textarea from which its wrap property is
 * implicitly set as "soft".
 */
function textarea_dynamic(elm)
{
    var lines = elm.value.split('\n');
    var wwrap = 0;
    var tcols = 0;

    var x = findPosX(elm);
    var y = findPosY(elm);

	if (elm.offsetWidth)
	{
		tcols = elm.offsetWidth / 9.4;
	}
    else if (x == 0 && y == 0)
    {
    	tcols = elm.cols;
    }
    else
    {
    	tcols = (y - x) / 3;
    }
    for (var i = 0; i < lines.length; i++) {
        var linelength = lines[i].length;
        wwrap += Math.floor(linelength/tcols);
    }

    var rowValue = 0 + lines.length + wwrap;
    // Internet Explorer will give a Javascript error when assigning zero to the rows property
    if (rowValue > 0) {
        elm.rows = rowValue;
    }
}
function datepicker2date(value)
{
	var dateFormat = '';
	try {
		dateFormat = _HTML_QuickForm_datepicker_DateFormatDisplay;
	} catch(e) {
		dateFormat = '';
	}
	try
	{
		ret = value.split("-", 3);
		if (ret.length == 3)
		{
			dateret = new Date();

            if (dateFormat  == 'USA') {
                dateret.setFullYear(ret[2], (ret[0] - 1), ret[1]);
            } else {
                dateret.setFullYear(ret[2], (ret[1] - 1), ret[0]);
            }
			return dateret;
		}
		return false;
	}
	catch (e)
	{
		return false;
	}
}

function input_onfocus_match(elm, regex) {
    /// since onfocus default behaviour is like element.select() the value
    /// of the element, the first onkeyup overwrites the second onkeyup
    /// to prevent unselecting and or missing the cursor.
    elm.onkeyup = function() {
        elm.onkeyup = function() {
            elm.value = elm.value.match(regex);
        }
    }
    elm.onblur = function() {
        elm.onkeyup = null;
    }
}

function updateWysiwygContent()
{
	var weditors = document.getElementsByTagName('textarea');

	for (i = 0; i < weditors.length; i++)
	{
		if (weditors[i].className == 'wpHtmlEditArea')
			wp_prepare_submission(weditors[i]);
	}
}

function toggleFields(enablingObject, fieldsArray)
{
	var x 		= 0;
	var value 	= false;

	if (enablingObject.type == 'checkbox') {
		value = enablingObject.checked;
	} else {
		if (enablingObject.value != "") {
			value = true;
		} else {
			value = false;
		}
	}

	if (value) {
		for (x in fieldsArray) {
			var elm = document.getElementById(fieldsArray[x]);
			elm.style.visibility = 'visible';
		}
	} else {
		for (x in fieldsArray) {
			var elm = document.getElementById(fieldsArray[x]);
			elm.style.visibility = 'hidden';
		}
	}
}

/**
 * Voor een parent window om een optie toe te voegen aan een select in huidige window
 */
function addOptionParent(id, text, value)
{
	var object = document.getElementById(id);
    var defaultSelected = false;
    var selected = true;
    var optionName = new Option(text, value, defaultSelected, selected)
    optionName.selected = defaultSelected;
    object.options[object.length] = optionName;
}

function deleteAllOptionsById(id)
{
	var object = document.getElementById(id)
	var o = object.getElementsByTagName('option');
	var m = o.length;
	for (var i=m-1; i>=0; i--)
	{
		deleteOption(object, i);
	}
}

function setSelectedOptionByIdByValue(id, value)
{
	var object = document.getElementById(id)
	var o = object.getElementsByTagName('option');
	var m = o.length;
	for (var i=m-1; i>=0; i--) {
		if (o[i].value == value) {
			o[i].selected = true;
		} else {
			o[i].selected = false;
		}
	}
}

function deleteOptionByIdByValue(id, value)
{
	var object = document.getElementById(id)
	var o = object.getElementsByTagName('option');
	var m = o.length;
	for (var i=m-1; i>=0; i--) {
		if (o[i].value == value) {
			deleteOption(object, i);
		}
	}
}

function deleteOption(object,index)
{
    object.options[index] = null;
}

function setMultiLookupValueinputValueBySelectId(id)
{
	var items = new Array();
	var object = document.getElementById(id +'_v');
	var o = object.getElementsByTagName('option');
	var m = o.length;
	for (var i=0; i<m; i++) {
		var item = new Array();
		item[0]	= o[i].value;
		item[1]	= o[i].text;
		items[i] = item;
	}

	try {
		var serial_items = serialize(items);
		document.getElementById(id).value = serial_items;
	}
	catch (e)
	{
		alert(_("Er ging iets fout bij het serializen met javascript. Waarschijnlijk is de serialize.js niet geinclude."));
	}
}


addEvent(window, "load", function(){textarea_dynamic_register()});


//////////////////////////////////////////////////////////////////////////
// Grid functions
//////////////////////////////////////////////////////////////////////////

function useMultipleItems(gridName, url, width, height, _resizable, idField, scroll)
{
    if (_resizable != null) { _resizable = true ; }
    var id = "";
    //rows = eval('o_' + gridName + ".getSelectedRows()");
    rows = CLS[gridName].getSelectedRows();
    if (height == 0 || height == "") { height = 300; }
    if (width == 0 || width == "") { width = 500; }

    if (rows.length == 0) {
        alert(_('U heeft geen items geselecteerd'));
    } else {
        if (!idField) {
            idField = "id"; //var idField = alternatief;
        }

        if (url != null) {
            for (var i =0; i < rows.length; i++) {
                id = idField + "[" + i + "]=" + stripGridName(gridName, rows[i].id);
                var t = url.indexOf('?') == -1 ? '?' : '&';
                url = url + t + id ;
            }
            if (!scroll) { launch_popup(url, width, height, _resizable); }
            else { launch_popup_scroll(url, width, height , _resizable); }
        } else {
            alert(_('Er is geen url opgegeven om te gebruiken'));
        }
    }
}

function deleteItems_(gridName, url, overruledMessage)
{
	rows = CLS[gridName].getSelectedRows();
	if (rows.length != 0) {
        // Bevestiging vragen
		if (rows.length == 1)
            var confirmstring = _("Weet u zeker dat u het geselecteerde item wilt verwijderen?");
		else
			var confirmstring = _("Weet u zeker dat u deze")+' '+ rows.length +_(" items wilt verwijderen?");
        if (overruledMessage)
            var confirmstring = overruledMessage;

		if (confirm(confirmstring)) {
			for (var i =0; i < rows.length; i++) {
				head = document.getElementsByTagName('head').item(0);
				script = document.createElement('script');
				script.src = url + '&gridname='+gridName+'&id=' + stripGridName(gridName, rows[i].id) + '&' + Math.random();
				script.type = 'text/javascript';
				head.appendChild(script);
			}
		}
	} else {
		alert('U heeft geen items geselecteerd, selecteer een of meerdere items.');
	}
	rows = null;
}

function doGridSearchReset(gridName)
{
    var gridSearchForm = getitem('search_' + gridName);
    var url = document.location.href;

    if (gridSearchForm) {
        // Get all the input fields
        var items = getItemsByClass('input', '');

        // Get all the select fields
        var selects = getItemsByClass('select', '');

        for (var i = 0; i < selects.length; i++) {
            items.push(selects[i]);
        }

        if (items) {
            // Create the array of variables we got for the current grid
            var variables = new Array();
            for (var i = 0; i < items.length; i++) {
                var item = items[i];

                if (item.getAttribute('grid') == gridName) {
                    var value = "";

                    // Get the value
                    if (item.tagName == "SELECT") {
                        item.selectedIndex = 0;
                    } else if (item.tagName == "INPUT") {
                        item.value = "";
                    }
                }
            }
        }
    }
}

/**
 * Get all the data from the gridSearch form, build a new url and redirect to the new url
 */
function doGridSearch(gridName) {
    var gridSearchForm = getitem('search_' + gridName);
    var url = document.location.href;
    if (gridSearchForm) {
        // Get all the input fields
        var items = getItemsByClass('input', '');

        // Get all the select fields
        var selects = getItemsByClass('select', '');

        for (var i = 0; i < selects.length; i++) {
            items.push(selects[i]);
        }


        // Create the array of variables we got for the current grid
		var variables = new Array();
        variables.push('offset_'+gridName);

        if (items) {
            for (var i = 0; i < items.length; i++) {
                var item = items[i];

                if (item.getAttribute('grid') == gridName) {
                    variables.push(item.name);
                }
            }
        }
        // Now strip the variables from the url
        url = stripVarsFromRequestUri(url, variables);
        if (items) {
            // Now add the variables to the url
            for (var i = 0; i < items.length; i++) {
                var item = items[i];

                if (item.getAttribute('grid') == gridName) {
                    var value = "";

                    // Get the value
                    if (item.tagName == "SELECT") {
                        value = item.options[item.selectedIndex].value;
                    } else if (item.tagName == "INPUT") {
                        value = item.value;
                    }

                    if (trim(value).length != 0) {
                        url += item.name + '=' + value + '&';
                    }
                }
            }
        }
    }

    // Don't ask us if we want the save the changed form
    confirmOnClose = false;

    // Redirect to the new search url
    document.location = url;
}

function bindColumnListByGridName(name) {
    var h = document.getElementById('grid_head_' + name);
    var b = document.getElementById('grid_body_' + name);
    var c = document.getElementById('grid_container_' + name);
    var o = new WebFXColumnList();
    o.bind(c, h, b);
    return o;
}

function expandSearch(gridName, height) {
    var expandedHeight = 100;
    var collapsedHeight = 27;

    if (height) {
        expandedHeight = height;
    }

    var searchBlock = getitem('zoek_' + gridName);
    var container = getitem('grid_container_' + gridName);
    var expandButton = getitem('search_expand_button_' + gridName);

    if (searchBlock.offsetHeight == expandedHeight) {
        // Search block is expanded, so collapse
        searchBlock.style.height = collapsedHeight;

        // Resize the container
        container.style.height= (container.offsetHeight + (expandedHeight-collapsedHeight) -1) + 'px';

        // Set the image of the button
        expandButton.src = expandButton.getAttribute('expandImage');
    } else {
        // Search block is collapsed, so expand
        searchBlock.style.height = expandedHeight;

        // Resize the container
        container.style.height= (container.offsetHeight - (expandedHeight-collapsedHeight) -1) + 'px';

        // Set the image of the button
        expandButton.src = expandButton.getAttribute('collapseImage');
    }
}


//////////////////////////////////////////////////////////////////////////
// Cookie functions
//////////////////////////////////////////////////////////////////////////

/**
 * http://www.netspade.com/articles/javascript/cookies.xml
 */
function setCookie(name, value, expires, path, domain, secure)
{
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

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

/**
/// as fas as i know not used yet
/// require_function getCookie
/// require_function setCookie
*/
function CookieProperties(name) {
    this.name      = name;
    this.cookie    = new Object();
    this.itemDelimiter = ';'
    this.keyDelimiter  = ':'
    this.explode = function () {
        var string = getCookie(this.name);
        if (string != null) {
            var items = string.split(this.itemDelimiter);
            for (var i=0; i < items.length; i++) {
                var item = items.split(this.keyDelimiter);
                this.cookie[item[0]] = item[1];
            }
        }
    }
    this.implode = function () {
        var item = new Array();
        for (var i in this.cookie) {
            item.push(i + this.keyDelimiter + this.cookie[i]);
        }
        setCookie(this.name, item.join(this.itemDelimiter));
    }
    this.get    = function (name) {
        this.explode();
        if (this.cookie[name]) {
            return this.cookie[name];
        }
    }
    this.set    = function (name,value) {
        this.explode();
        this.cookie[name] = value;
        this.implode();
    }
}


//////////////////////////////////////////////////////////////////////////
// Hall of shame functions (should not be in default.js)
//////////////////////////////////////////////////////////////////////////

function percbar ()
{
        if (num == 1)
        {
                getstyle("perc").display="block";
        }
        if (num < 100)
        {
                getstyle("imgprec").width= num * 3.57;
                num++;
                setTimeout("percbar()", 50);
        }
        else
        {
                getstyle("sec").display="block";

                getstyle("perc").display="none";
                num = 1;
                wait_close();
        }
}

var currentActiveElement;
var wait_num = 1;
function changeNum(element)
{
	if (event.keyCode > 47 && event.keyCode < 58)
	{
		return true;
	}
	else if (event.keyCode == 46)
	{
		return true;
	}
	else if (event.keyCode == 44)
	{
		return true;
	}
	else
	{
		currentActiveElement = element;
		setTimeout("currentActiveElement.value = currentActiveElement.value.substr(0, (currentActiveElement.value.length - 1));", 5);
		return false;
	}
}

function wait_function()
{
	if (wait_num < 50)
	{
		wait_num++;
		setTimeout("wait_close()", 10);
	}
	else
	{
		wait_num = 1;
		currentActiveElement.value = currentActiveElement.value.substr(0, (currentActiveElement.value.length - 1));
	}
}

function addContent_overbodig(page, container, select_id) {
    var element = document.getElementById(select_id);
    var dbtable = element.options[element.selectedIndex].value;
    launch_popup('projectModuleOpties.php?page_id=' + page + '&container_id=' + container + '&dbtable_naam=' + dbtable, 750,580, 1 ,1 );
}
function webcontrollerLogin()
{
	var expiration = new Date()
	expiration.setTime (expiration.getTime() + (365 * 24 * 60 * 60 * 1000))
	if (getCookie('editmode') == '1')
	{
		setCookie('editmode', '0', 0);
	}
	else
	{
		setCookie('editmode', '1', expiration);
	}
    var url = stripVarsFromRequestUri(window.location.href, new Array('editForce' ,'edit', 'rand'));
    url = url + '&rand=' + Math.random();
	window.location.href = url;
}

// WebController edit mode..
var gl_offSet = 0; // gl_offSet is used in for example the Menu (navigatieinter.js..)
/**
 * Edit mode: move all content to bottom according to number of toolbars.
 *  stores offset in gl_offSet for Menu to use..
 */
function moveall(value)
{
    gl_offSet = value;
    var o = document.getElementById('header');
    o.style.position = 'relative';
    o.style.top = value + 'px';
}

function onLoad_MoveContentForToolBars()
{
	try {
	    var balk_height = 0;
        balk_height += f('_balk_container_admin').clientHeight - 3;

        if (wysiwyg_wc_editors.length > 0)
            balk_height += 37;

	    moveall(balk_height); // 66 pixels is the size of the toolbar(s)
	} catch(e) {
		// If not in edit-mode it will yield an object required error
		// it probably won't find: f('_balk_container_admin')
	}
}


/**
 * Reads all the included stylesheets and extracts that wanted data from them:
 *
 * @params:
 * classname: e.g. BODY
 * styleItem: e.g. fontSize
 *
 * styleItem is optional, if no styleItem is specified the whole 'style' object for classname will be returned
 *
 * Usage:
 * alert(getCSSDefinition('BODY', 'height'));
 * show_obj(getCSSDefinition('BODY'));
 */
function getCSSDefinition(classname, styleItem) {
    for (var i = 0; i < document.styleSheets.length; i++) {
        // TODO: Fix firefox compat.: http://www.javascriptkit.com/domref/stylesheet.shtml
        var rules = document.styleSheets[i].rules;
        for(var j = 0; j < rules.length; j++) {
            var rule = rules[j];

            if (rule.selectorText.toLowerCase() == classname.toLowerCase()) {
                if (typeof(styleItem) != 'undefined' && styleItem != '') {
                    return rule.style[styleItem];
                } else {
                    return rule.style;
                }
            }
        }
    }
}

function checkEnter(e)
{
	try {
		var evt = (e) ? e :(window.event) ? window.event : null;

		if (evt.keyCode) {
			if (evt.keyCode == 13) {
				return false;
			}
		}
	} catch(e) {
		return true;
	}
	return true;
}


function stopRKey(evt)
{
	var evt = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	if (evt.keyCode == 13 && node.type == 'text') {
		return false;
	}
}

document.onkeypress = stopRKey;
