/*
ui.record = {
	init: function()
	{
		alert("HELLO SIR! MY NAME IS: " + window.document.location.href);
	}
};
*/


var form;
var jsessionid;
var name = "";
var record_name = "";
var version = "1";
var mode = 0;
var startmode = mode;
var title = "";
var uniqueid = "";
var selColor = "#0A246A";
var noColor = "#FFFFFF";
var errColor = "#FF0000";
var olditem;
var onSubmit = false;
var isChanged = false;
var isSaved = false;
var isClosed = false;
var lookup = false;
var foreignUNIDName;
var foreignUNIDValue;
var currentField = null;
var isRecord = true; //Nodig om te bepalen dat zich in een frame een record bevind;
var itemhasfocus = false;
var linkhasfocus = false;
var tabkey = false;
var sendalive = true;
var helpidname = "-1";
var closeW = false;
var isBeingSaved = false;
var lastitem = null;
var maxlookuprows = 18;
var lookupKey = "";
var lookupCol = 1;
var skip = false;
var skipextra = true;
var errorInRecord = false;
var iframesaved = false;
var debugFrame = null;
var bw;
var delfunctie;
var checkitemcounter = 0;
var isConcept = false;
var cw = false;
var global_fkey = "";
	
//dummy functie
function dummy() {}

function newDebugFrame()
{
	if (wt.debug)
	{
		debugFrame = window.open("about:blank", "_blank", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width=400, height=400");
		debugFrame.document.write("<br /><hr>");
	}
}

function writeDebug(text)
{
	if (wt.debug)
	{
		debugFrame.document.write(text);
		debugFrame.window.scrollBy(100, 100);
	}
}

function writeDebugLine(text)
{
	writeDebug(text+"<br />");
}

function onSelectStart(event)
{
	event = getEvent(event);
	var item = getElement(event);
	return isContentEditable(item);
}

function quit(closeWindow)
{
	var cont = true;
	
	try {cont = beforeClose();} catch(e) {}

	if (cont && !onSubmit)
	{
		var xml = createXML(CLOSEFORM);
		
		if (xml != null && xml != "")
		{
			sendEmptyRequest(); // Dit wordt gedaan om met SSL de 12030 (keepalive) error tegen te gaan.
			
			cw = closeWindow;

			var xml_ajax_close = getXMLHttpRequest();
			
			xml_ajax_close.onreadystatechange = function()
			{
				try
				{
					if (xml_ajax_close.readyState == 4)
					{		
						if (xml_ajax_close.status == 200)
						{
							var xmlDoc = string2XML(xml_ajax_close.responseText);
						
							var error = "";
							var msg = "";
						
							try
							{
								error = getNodeValue("message", 0, "error", xmlDoc);
								msg = getNodeValue("message", 0, "msg", xmlDoc);
							}
							catch(e)
							{
								sendalive = false;
								onSubmit = false;
								alert(MSG_CONNECTION_SERVER_LOST);
								error = "";
								if(cw)
								{
									undoModal(false);
									
									if (!isClosed) 
									{
										isClosed = true;
										showPreviousFrame(isSaved);
									}					
								}
							}
						
							if (error != "")
							{
								alert(error);
								error = "";
								isSaved=false;
								isChanged=true;
								onSubmit=false;
								
								if (!undoModal(true)) focusCurrentFrame();
							}
							else
							{
								if (msg != "")
								{
									alert(msg);
									msg = "";
								}
								if (cw)
								{
									isChanged = false; 
									sendalive = false;
									onSubmit = false;
									var newURL = null;
									try {newURL = openNewURLAfterClose(xmlDoc);} catch(e) {}
						
									undoModal(false);
						
									if (!isClosed) 
									{
										isClosed = true;
										showPreviousFrame(isSaved, newURL);
									}
									try	{specificAfterClose();} catch (e) {}					
								}
							}
							try {printFilesToPrint(xmlDoc);} catch(e) {}
							try {downloadFilesToDownload(xmlDoc);} catch(e) {}
							try {popupFilesToPopup(xmlDoc);} catch(e) {}
						}
						else
						{
							onSubmit = false;			
							alert(MSG_CONNECTION_SERVER_LOST + "\n - Status: " + xml_ajax_close.status);
						}
												
						xml_ajax_close = null;
						cw = false;
					}		
				}
				catch (e)
				{
					onSubmit = false;
					alert(e.message);
				}
			};
			
			if (xml_ajax_close != null)
			{
				try
				{
					xml_ajax_close.open("POST", IOSERVLETURL, true);
					xml_ajax_close.setRequestHeader("Content-type", "application/x-www-form-URLencoded");

					onSubmit = true; // mag niet later staan i.v.m. met synchrone berichten 
					xml_ajax_close.send(xml);
				}
				catch (e) {alert(e.message);}
			}
		}
	}
	else if (!cont) if (lastitem != null) try {lastitem.focus();} catch (e) {focusCurrentFrame();}
}

function createXML(action)
{
	if (form)
	{
		var el = form.elements;
		var ell = el.length;
		var i = 0;
		var radioButton = "";
		var xml = "<form id=\"" + record_name + "\" version=\"" + version + "\" action=\"" + action + "\" uniqueid=\"" + $("#uniqueid", form).val() + "\" isSaved=\"" + isSaved + "\" isConcept=\"" + isConcept + "\">";
		var eli;
	
		while (i < ell)
		{
			eli	= el[i];
			
			if (getAttribute(eli, "block") == null)
			{
				switch(eli.tagName)
				{
				 	case "INPUT":
				 	{
					 	switch(eli.type)
					 	{
						 	case "text":
							{						
								xml = xml + "<field id=\"" + eli.id + "\">" + specialCharCheck(eli.value)+ "</field>";
								xml = xml + addFuidValue(xml, eli)
								break;
							}
							case "hidden":
							{
								
								xml = xml + "<field id=\"" + eli.id + "\">" + specialCharCheck(eli.value) + "</field>";
								
								break;
							}
							case "checkbox":
							{
								if (getAttribute(eli, "group")!=null && getAttribute(eli, "group")=="true")
								{
									//alleen bij de 1e input van de checkboxgroup de xml opbouwen
									var id = eli.id;
									if ($(eli).attr("first") == "true") 
									{									
										xml = xml + getCheckboxGroupValues(eli);									
									}
								}
								else
								{
									xml = xml + "<field id=\"" + eli.id + "\">" + eli.checked + "</field>";
								}
								break;
							}
							case "radio":
							{
								var rbname = eli.name;
								if(radioButton != rbname) // Er mag maar een field tag op het xmlform
								{
									var tmpval			= $("input[name=" + rbname + "]:checked").val()
	
									if (typeof tmpval == "undefined") tmpval = "";
									
							 		xml = xml + "<field id=\"" + rbname + "\">" + specialCharCheck(tmpval) + "</field>";
							 		//xml = xml + "<field id=\"" + rbname + "\">" + specialCharCheck($("input[name=" + rbname + "]:checked").val()) + "</field>";
								}
								break;
							}
							case "password":
							{
								xml = xml + "<field id=\"" + eli.id + "\">" + specialCharCheck(eli.value)+ "</field>";
								if (getAttribute(eli, "fuidname"))
								{
									var fuidValue = getAttribute(eli, "fuidvalue");
									if (fuidValue == null) fuidValue = "";
									xml = xml + "<field id=\"" + getAttribute(eli, "fuidname") + "\">" + fuidValue + "</field>";
								}
								break;
							}
	/*						Deze case is waarschijnlijk niet meer nodig.
							case "button":
							{
								try{xml = xml + "<field id=\"" + eli.id + "\">" + eli.unid + "</field>";}catch(e){}
								break;
							}
	*/
						}
						break;
				 	}
				 	case "SELECT":
				 	{						
				 		xml = xml + "<field id=\"" + eli.id + "\">" + specialCharCheck(eli.value) + "</field>";
						xml = xml + addFuidValue(xml, eli);		
					
						break;
				 	}
				 	case "TEXTAREA":
				 	{
				 		if (getFType(eli) == "M4")
				 		{
				 			tinyMCE.triggerSave();
				 		}
				 		
				 		xml = xml + "<field id=\"" + eli.id + "\">" + specialCharCheck(eli.value) + "</field>";
						break;
				 	}
				} // end switch
			}
			i++;
		}
		xml = xml + "</form>";
	
		wt.previousXML = xml;
		// alert(xml);
		return xml;
	}
	else return "";
}

function addFuidValue(xml, eli)
{	
	var tmpXML = "";
	if (getAttribute(eli, "fuidname") != null)
	{
		var fuidValue = getAttribute(eli, "fuidvalue");
		if (fuidValue == null) fuidValue = "";
		tmpXML = "<field id=\"" + getAttribute(eli, "fuidname") + "\">" + fuidValue + "</field>";		
	}
	
	return tmpXML;
}

function getCheckboxGroupValues(eli)
{
	var k				= 0;
	var item			= eli;
	var rname			= eli.id;		
	var xml_unid		= "<field id=\"" + getAttribute(eli, "fuidname") + "\">";
	var xml				= "<field id=\"" + rname + "\">";		
	var first			= true;
	
	var items = $("input[name=" + rname + "]").get();
		
	while(k < items.length)
	{
		if (items[k].checked)
		{
			if (!first) {xml   = xml + "_sep_";xml_unid = xml_unid + "_sep_";}
			else 		first = false;
			
			xml			= xml + specialCharCheck(items[k].value);
			xml_unid	= xml_unid + getAttribute(items[k], "fuidvalue");
		}
		
		k				= k + 1;			
		
	}
	
	xml					= xml 	   + "</field>";
	xml_unid			= xml_unid + "</field>";
	
	return xml + xml_unid;
}

function excludePath(path)
{
	var pos = path.lastIndexOf("\\");
	if(pos != -1)
	{
		path = path.substring(pos+1,path.length);
		return path;
	}
	else return path;	
}

function setDelete(id)
{
	var uniqueid = document.getElementById(id).getAttribute("fuidvalue");
	
	if (uniqueid > 0)
	{
		try
		{
			specificSetDelete(id);
		}
		catch (e)
		{
			if (confirm("Weet u zeker dat u het bestand wilt verwijderen?"))
			{
				isChanged = true;
			
				document.getElementById(id).setAttribute("fuidvalue", "");
				document.getElementById(id).setAttribute("value", "");
				//alert("Zodra u het record opslaat, zal het bestand worden verwijderd!");
			}
			else document.getElementById(id).deleted = "false";
		}
	}
	else				alert("Er is geen bestand aanwezig");
}

function checkBeforeDownload(id)
{	
	var uniqueid = document.getElementById(id).getAttribute("fuidvalue");
	
	if (uniqueid > 0)	download("/DownloadServlet;jsessionid=" + jsessionid + "?uniqueid="+uniqueid);
	else				alert("Er is geen bestand aanwezig");
}

function clearChangeFields()
{
	try
	{
		var fields = document.getElementsByTagName("INPUT");
		var l = fields.length;
		for (var i = 0; i<l; i++)
		{
			if(fields[i].changegroupid != null)
			{
				var cb = document.getElementById("c_"+fields[i].id);
				if(!cb.checked)fields[i].value = "";
			}
		}
	}
	catch(e){}
}

function saveConcept()
{
	if (checkForm())
	{	
		isConcept			= true;
		
		save(false, true);
				
		return true;
	}
	else return false;
}

function save(closeWindow, async)
{
	var test_onsub = onSubmit;
	var test_ibs = isBeingSaved;

	if (!onSubmit && !isBeingSaved)
	{
		try
		{
			if (mode == MODE_ADD)
			{
				document.getElementById("invmdw").setAttribute("fuidvalue", getUserUnid());
				document.getElementById("invmdw").value = getUser();
				document.getElementById("invdat").value = getDate();
				document.getElementById("invtijd").value = getTime();
			}
		}
		catch (e) {}

		try
		{
			document.getElementById("mutmdw").setAttribute("fuidvalue", getUserUnid());
			document.getElementById("mutmdw").value = getUser();
			document.getElementById("mutdat").value = getDate();
			document.getElementById("muttijd").value = getTime();
		}
		catch (e) {}
				
		isBeingSaved = true;
		var cont = true;
		try {cont = beforeSave();} catch(e) {}

		clearChangeFields(); // alle change velden die wel ingevuld zijn maar niet zijn aangevinkt worden leeg gemaakt.

		errorInRecord = !checkForm();

		if (cont && mode != MODE_READ && isChanged && !errorInRecord)
		{
			closeW = closeWindow;
			
			sendEmptyRequest(); // Dit wordt gedaan om met SSL de 12030 (keepalive) error tegen te gaan.
		
			if (async == null) async = true;
			
			var xml_ajax_save = getXMLHttpRequest();				
			
			if (xml_ajax_save != null)
			{	
				xml_ajax_save.onreadystatechange = function()
				{
					if (xml_ajax_save.readyState == 4)
					{
						if (xml_ajax_save.status == 200)
						{
							var xmlDoc = string2XML(xml_ajax_save.responseText);
							var error = getNodeValue("message", 0, "error", xmlDoc);
	
							if (error == "")
							{
								var msg = getNodeValue("message", 0, "msg", xmlDoc);
								if (msg != "") alert(msg);
								
								switch (mode)
								{
									case MODE_ADD:
									case MODE_FORCEADD:
									{
										try {afterSaveSucces();} catch(e) {}
										
										if (!isConcept)
										{
											form.mode.value = MODE_EDIT;
											mode = parseInt(form.mode.value);
	
											setTitle(title, mode);
											isChanged = false;
											isSaved = true;
											try {afterSave(closeW);} catch(e) {}
										}
										else isConcept = false;
	
										loopUploaders();
										onSubmit = false;
										isBeingSaved = false;
										if (closeW) quit(true);
										else if (lastitem != null) try {lastitem.focus();} catch (e) {}
										
										try {printFilesToPrint(xmlDoc);} catch(e) {}
										try {downloadFilesToDownload(xmlDoc);} catch(e) {}
										try {popupFilesToPopup(xmlDoc);} catch(e) {}
										
										return true;
										break;
									}
									case MODE_EDIT:
									case MODE_FORCEEDIT:
									{
										if (!isConcept)
										{
											isChanged = false;
											isSaved = true;
											try {afterSave(closeW);} catch(e) {}
										}
										else isConcept = false;
										
										loopUploaders();
										onSubmit = false;
										isBeingSaved = false;
										if (closeW) quit(true);
										else if (lastitem != null) try {lastitem.focus();} catch (e) {}
																
										try {printFilesToPrint(xmlDoc);} catch(e) {}
										try {downloadFilesToDownload(xmlDoc);} catch(e) {}
										try {popupFilesToPopup(xmlDoc);} catch(e) {}
										
										return true; 
									}
								}								
							}
							else
							{
								var doModeChangeOnError = getNodeValue("message", 0, "domodechangeonerror", xmlDoc) == "true";

								if (doModeChangeOnError)
								{
									switch (mode)
									{
										case MODE_ADD:
										case MODE_FORCEADD:
										{
											if (!isConcept)
											{
												form.mode.value = MODE_EDIT;
												mode = parseInt(form.mode.value);
		
												setTitle(title, mode);
												isChanged = false;
												isSaved = true;
												try {afterSave(false);} catch(e) {}
											}
											else isConcept = false;
		
											break;
										}
									}					
								}
								
								alert(error);
								isChanged = true;
								onSubmit = false;
								isBeingSaved = false;
								isConcept = false;
								undoModal(true);
								try {specificErrorHandler();} catch (e){}
								return false;
							}			
						}
						else
						{
							onSubmit = false;
							isBeingSaved = false;
							alert(MSG_CONNECTION_SERVER_LOST + "\n - Status: " + xml_ajax_save.status);
							if (closeW) quit(true);
							return true;
						}
													
						xml_ajax_save = null;
					}
				}
				
				try
				{						
					xml_ajax_save.open("POST", IOSERVLETURL, async);
					xml_ajax_save.setRequestHeader("Content-type", "application/x-www-form-URLencoded");

					onSubmit = true; // mag niet later staan i.v.m. met synchrone berichten
					xml_ajax_save.send(createXML(SAVEFORM));
					processbar();
				}
				catch (e) {alert(e.message);}
			}
			
			return true;
		}
		else
		{
			onSubmit 		= false;
			isBeingSaved 	= false;
			isConcept		= false;
			
			return false;
		}
	}
	else return false;
}

function processbar()
{
	try
	{
		if (isBeingSaved)
		{
			doModal();
			var defaultmsg = "Bezig met opslaan";
			var msg = getStatusMessage().replace(/&nbsp;/g, " ");
			if (msg.indexOf(defaultmsg) == -1 || msg.length >= (defaultmsg.length + 25)) setStatusMessage(defaultmsg, true);
			setStatusMessage(getStatusMessage() + "&nbsp;.", true);
			setTimeout("processbar()", 45);
		}
		else
		{
			setStatusMessage(nextmsg);
			undoModal(false);
		}
	}
	catch (e) {}
}

function loopUploaders()
{
	var el = form.elements;
	var i = 0;

	while (i < el.length)
	{
		if(el[i].type == "file")
		{
			el[i].changed = "false";
			el[i].deleted = "false";
		}
		i++;
	}
}

function getMessageFieldById(mid, xmlDoc)
{
	main = xmlDoc.getElementsByTagName("message")[0];
	value = "";

	for (j=0;j<main.childNodes.length;j++)
	{
		cn = main.childNodes[j];
		// Netscape slaat lege nodes niet over, IE doet dit wel. Dus controle op type.
		if (cn.nodeType != 1) continue;

		if (getAttribute(cn, "id") == mid)
		{
			if (cn.firstChild != null) value = cn.firstChild.nodeValue;
		}
	}
	return value;
}

function init(sessionid)
{
	jsessionid 	= sessionid;	
	bw 			= getOrganisationCode() == "Bizzwise";
	
	try{initExtraLabels();}catch(e){}

	try
	{
		var ifs = window.frames;
		var j = ifs.length;

		for (var i = 0; i<j; i++)
		{
			if (ifs[i].name != "lookup" && ifs[i].name != "")
			{
				ifs[i].document.getElementById("titlebar").style.display = "inline";
				ifs[i].focusCurrentFrame();
			}
		}
	}
	catch(e){}
	
	form = $("form input#uniqueid").parents("form:first").get(0);
	
 	try{initMenus()}catch(e){}
 	mode = parseInt(form.mode.value);
  	if(isNaN(mode)) mode = MODE_READ;
  	startmode = mode;
	name = form.formname.value;
	record_name = form.formname.value;
	version = form.formversion.value;

	title = $("input[type=hidden][id=title]").val(); 
	if (title == "") title = form.title.value;
	if (title == "") title = record_name;
	
	initFields();

	try{initTabs();}catch(e){}

	uniqueid = form.uniqueid.value;
	foreignUNIDName = form.foreignUNIDName.value;
	foreignUNIDValue = form.foreignUNIDValue.value;

	if (window.specificInitOptions) specificInitOptions();
	if (window.specificInit) specificInit();

	var warningMsg = form.warningMsg.value;
	if (warningMsg != "") alert(warningMsg);
	setTimeout("sendAlive(30)", 30 * 1000);
	initDragOver();

	try
	{
		// TH: Dit is niet de bedoeling!
		if (record_name != "PrinterlijstWerkstation" && record_name != "Werkstation")
		document.getElementById("wsid").value = getWorkstation();
	}
	catch(e){}
	
	addEvents();	
	stopLoading();
}

function addEvents()
{
	//$(document).keypress(onKeyPressHandler);
	$(document).keyup(onKeyUpHandler);
	$(document).keydown(onKeyDownHandler);
	$(document).click(onClickHandler);
	$(document).dblclick(onClickHandler);
	
	if(IE)
	{
		document.onhelp = function(){ return false; }
	}
}

/*function onKeyPressHandler(event)
{
	event					= getEvent(event);
	if (isLoading()) return rejectEveryThing(event);
}*/

function initExtraLabels()
{
	var elnparameter = decodeURIComponent(getParam("extralabelnames"));

	if(elnparameter != "")
	{
		//var elvparameter = getParam("extralabelvalues").replace("'","");
		var elvparameter = decodeURIComponent(getParam("extralabelvalues"));
		var elsection = document.getElementById("extralabels");
		var elrows = "";

		elsection.style.display = "block";
		var elns = elnparameter.split(",");
		var elvs = elvparameter.split(",");
		for (var i = 0; i<elns.length; i++)
		{
			elrows += "<tr class=\"eltr\"><td class=\"eltd\">"+elns[i]+"</td><td class=\"eltd\">"+elvs[i]+"</td></tr>";
		}
		elsection.innerHTML = "Hoofdrecord gegevens: <br/><table class=\"eltable\">"+elrows+"</table>";
	}
}

function initTitle()
{
	setTitle(title, mode);
}

function setTitle(title, mode) // zet de titel van het window goed
{
	if (title != "")
	{
		try {specificSetTitle(title, mode);}
		catch (e)
		{
			try 
			{
				var extraTitle = "";
				if(numberOfVisibleTabs > 1) extraTitle = "  [Alt-1.."+numberOfTabs+": Tabkeuze] ";
				var t = title + " : " + MODE_STRINGS[mode] + extraTitle;
				wt.document.title = t;
			}
			catch (e2) {}
		}
	}
}

function initFields() // ga alle velden na en initialiseer ze
{
	if (mode != MODE_READ)
	{
		var el	= form.elements;
		var ell = el.length;	
	
		for (var i = 0; i < ell; i++) setField(el[i]);
			
		var links	= document.getElementsByTagName("A");
		var linksl	= links.length;
		
		for (var i = 0; i < linksl; i++) setLink(links[i]);		
	}

	skipextra = false;
}

function setField(elI)
{
	if (getAttribute(elI, "type") != "hidden")
	{
		if (!elI.onblur && !elI.onfocus)
		{			
			elI.onblur 	= onBlurHandler;
			elI.onfocus = onFocusHandler;
		}
		
		if (getAttribute(elI, "valid") == null)
		{
			if (getAttribute(elI, "req") == "true")
			{
				if (isCheckBoxGroup(elI)) checkReqCheckBoxGroup(elI, true);
				else				
				{
					if (elI.value == "")
					{
						elI.setAttribute("valid", "false");
						setErrorClass(elI);
					}
					else elI.setAttribute("valid", "true");
				}
			}
			else
			{
				if (getAttribute(elI, "valid") != "false") elI.setAttribute("valid", "true");
			}
		}
	
		setOldQmapValue(elI);
	
		if (bw)
		{
			if (elI.changegroupid != null)
			{
				elI.setAttribute("valid", "true");
				setErrorClass(elI);
			}
	
			try
			{
				var gp = getGlobalParameter(elI.id);
				if (gp != "" && elI.value == "" && mode == MODE_ADD)
				{
					elI.value = gp;
					elI.setAttribute("valid", "true");
					setErrorClass(elI);
					elI.style.border = "1px solid yellow";
				}
			}
			catch(e) {}			
		}	
		
		if (getFType(elI) == "D") 
		{			
			if (getAttribute(elI, "valid") != "true")
			{
				elI.setAttribute("errmsg", getLabel(elI) + " dient van de vorm dd-mm-jjjj te zijn.");				
			}
		}
	}
}

function setLink(elI)
{
	if (!elI.onblur && !elI.onfocus)
	{
		elI.onblur 	= onBlurLinkHandler;
		elI.onfocus = onFocusLinkHandler;
	}
}

function onBlurLinkHandler()
{
	linkhasfocus = false;
}

function onFocusLinkHandler()
{
	linkhasfocus = true;
}

function focusFirstElement() //Ga naar het eerste geldig invoerveld
{
	// Probeer naar het eerste veld te gaan ..
	var iframe;

	if (visibleTabPages == "") 	iframe = document.getElementsByTagName("iframe");
	else 						iframe = visibleTabPages[activeTab].getElementsByTagName("iframe");
		
	if (mode != MODE_READ)
	{
		fields			= document.getElementsByTagName("input"); 
		b 				= true;
		var hasFocus 	= false;
		i 				= 0;
		var fl			= fields.length;
		var fi;

		while (b)
		{
			if (iframe.length > 0 && isItemVisible(iframe[0]))
			{
				b		 = false;
				hasFocus = true;

				window.frames[iframe[0].name].focus();
			}				
			else if (fl > 0 && i < fl)
			{
				fi 		= fields[i];
				
				if (fi.className.indexOf("readonly") == -1 && isItemVisible(fi))
				{
					b 	= false;

					hasFocus 	= switchTabToField(fi);
					fi.focus();					
				}
	
				i = i + 1;
	
				if (fl == i+1) b = false;
			}
			else b = false;				
		}
		// Als er nu nog nergens focus is gegeven dan het body focus geven

		if(!hasFocus) window.focus();
	}
	else
	{
		if (iframe.length > 0 && isItemVisible(iframe[0]))
		{
			window.frames[iframe[0].name].focus();
		}
		else window.focus();
	}
}

function onKeyDownHandler(e)
{
	if(isLoading() || isLookupOpen() || $.atsc.dialog.exists())
	{
		return true;
	}
	
	//var item = getElement(e.originalEvent);
	var item = e.target;
	var tagName = e.target.tagName;
	var lstForbiddenChars = [
		 9, //Tab
		27, //Escape
		45, //Insert
		38, //Up Arrow
		40  //Down Arrow
	];
	
	var forbiddenChar = false;
	for(i = 0; i < lstForbiddenChars.length; i++)
	{
		if(lstForbiddenChars[i] == e.which)
		{
			forbiddenChar = true;
			break;
		}
	}
	
	//                          A                C                V                Y                X                Z                  F1                F12
	if((e.ctrlKey && e.which != 65 && e.which != 67 && e.which != 86 && e.which != 89 && e.which != 88 && e.which != 90) || (e.which >= 112 && e.which <= 124))
	{
		forbiddenChar = true;
	}
	
	//                        0                9
	if(e.altKey && e.which >= 48 && e.which <= 58)
	{
		forbiddenChar = true;
	}
	
	if(e.which == 13 && tagName != "TEXTAREA") //Enter
	{
		forbiddenChar = true;
	}
	
	if((e.which == 38 || e.which == 40) && (tagName == "SELECT" || tagName == "TEXTAREA"))
	{
		forbiddenChar = false;
	}
	
	if((tagName == "INPUT" || tagName == "TEXTAREA" || tagName == "SELECT") && !forbiddenChar)
	{
		if(mode != MODE_READ && !$.atsc.event.isNavigationKey(e))
		{
			isChanged = true;
			item.isChanged = "true";
		}
		return true;
	}
	
	if(e.which == 9 && !e.ctrlKey && !e.altKey)
	{
		tabkey = true;
		if(mode != MODE_READ)
		{
			//isChanged = true;
			//item.isChanged = "true";
		}
		
		var focusedElement = $(":focus");
		
		if(e.shiftKey)
		{
			_focusNextElement(item, e);
		}
		else
		{
			_focusNextElement(item, e);
		}
		
		//If we selected the same element, switch to the next tab
		if($(":focus").attr("name") == focusedElement.attr("name"))
		{
			if(e.shiftKey)
			{
				/*if(activeTab - 1 < 0)
				{
					switchTo(numberOfVisibleTabs - 1);
				}
				else
				{
					switchTo(activeTab - 1);
				}*/
			}
			else
			{
				if(activeTab + 1 >= numberOfVisibleTabs)
				{
					switchTo(0);
				}
				else
				{
					switchTo(activeTab + 1);
				}
			}
		}
		
		$.atsc.event.preventDefault(e);
		return false;
	}
	
	//Euro
	if(e.which == 53 && e.altKey && (IE && !e.originalEvent.altLeft)){ return true; }
	
	if(e.which == 80 && e.ctrlKey){ return true; } //Ctrl-P
	
	$.atsc.event.preventDefault(e);
	
	if(e.which == 13) //Enter
	{
		selectSuggestValue();
		
		focusNextElement(item, e);
		
		return;
	}
	
	if(e.altKey)
	{
		switch(e.which)
		{
			//G
			case 71:
				if(item.unique == "true")
				{
					getUniqueNumber(item);
				}
				
				return;
				break;
			
			//N: Write a debug line
			case 78:
				writeDebug("<hr>");
				break;
			
			
		}
		
		if(e.which >= 48 && e.which <= 57)
		{
			var n = e.which - 49;
			if(e.which == 48)
			{
				n = 9;
			}
			
			checkItem(item);
			
			try
			{
				switchTo(n);
			} catch(e){}
			
			return;
		}
	}
	else if(e.ctrlKey)
	{
		switch(e.which)
		{
			//S
			case 83:
				checkItem(item);
				save(false);
				return;
				break;
			
			//V
			case 86:
				isChanged = true;
				item.isChanged = "true";
				break;
			
			//F1
			case 112:
				openHelp("UIRecord", record_name, item, true);
				break;
		}
	}
	else
	{
		switch(e.which)
		{
			//Escape
			case 27:
				$.atsc.event.preventDefault(e, true);
				
				askQuit();
				break;
			
			//Up Arrow
			case 38:
				suggest(-1);
				break;
			
			//Down Arrow
			case 40:
				suggest(1);
				break;
			
			//Insert
			case 45:
				isChanged = true;
				insertPreviousData(item);
				try
				{
					item.focus();
				} catch(e){}
				break;
			
			//F1
			case 112:
				openHelp("UIRecord", record_name, item, false);
				break;
			
			//F3
			case 114:
				try
				{
					e.shiftKey = true;
					_focusNextElement(item, e);
				} catch(e){ alert(e.message); }
				break;
			
			//F4
			case 115:
				checkItem(item);
				selectAction(item, "F4", jsessionid);
				
				break;
			
			//F5
			case 116:
				checkItem(item);
				selectAction(item, "F5", jsessionid);
				
				e.stopPropagation();
				break;
			
			//F6
			case 117:
				checkItem(item);
				saveAndClose(true);
				break;
			
			//F7
			case 118:
				checkItem(item);
				if(checkTab() && activeTab > 0)
				{
					switchTo(activeTab - 1);
				}
				break;
			
			//F8
			case 119:
				checkItem(item);
				if(activeTab + 1 >= numberOfVisibleTabs)
				{
					saveAndClose(true);
				}
				else if(checkTab())
				{
					switchTo(activeTab + 1);
				}
				break;
			
			//F9
			case 120:
				if(window.specificGlobalActionF9)
				{
					checkItem(item);
					specificGlobalActionF9(item);
				}
				break;
			
			//F10
			case 121:
				if(item.tagName == "TEXTAREA")
				{
					zoomTextArea(item);
				}
				else if(window.specificGlobalActionF10)
				{
					checkItem(item);
					specificGlobalActionF10(item);
				}
				break;
			
			//F11
			case 122:
				if(window.specificGlobalActionF11)
				{
					checkItem(item);
					specificGlobalActionF11(item);
				}
				break;
			
			//F12
			case 123:
				if(window.specificGlobalActionF12)
				{
					checkItem(item);
					specificGlobalActionF12(item);
				}
				break;
			
			default:
				if(mode != MODE_READ)
				{
					isChanged = true;
					item.isChanged = "true";
				}
				break;
		}
	}
}

function onBlurHandler(event)
{	
	event = getEvent(event);
	var item = getElement(event);

	if (canElementHaveFocus(item))
	{
		item.className = item.className.replace(" selected", "");
		item.className = item.className.replace(" errsel", "");
		item.value = item.value; // Nodig om de waarde te deselecteren (er is geen deselect() functie)
		setStatusMessage("");

		checkitemcounter = 0;

 		checkItem(item);

		itemhasfocus = false;

		if (IE && tabkey) {setTimeout("checkFocus()", 25);}

		try {onBlurSpecial(item);} catch (e) {}

		item.isChanged = "false";
	}
	
	ep = false
}

function checkItem(item)
{
	checkitemcounter = checkitemcounter + 1; /* wordt gebruikt door CT */

	if (item != null && !lookup /*&& mode != MODE_READ*/)
	{
		if (getAttribute(item, "allowmultiplevalues") == "true")
		{
			item.values	= item.value.replace(/(, |,)/g, "_sep_"); // Een komma in een waarde werkt niet goed!
		}

		try {checkInput(item);} catch(e) {}
		
		try {checkSpecial(item, event);} 
		catch(e) 
		{
			//voor mozilla browser:
			try{checkSpecial(item);} catch(e){}
		}
		
		try {checkSpecial2(item, event);} 
		catch(e) 
		{
			//voor mozilla browser:
			try{checkSpecial2(item);} catch(e){}
		}

		setOldQmapValue(item);
		setErrorClass(item);
	}
}

function checkFocus()
{
	if (!itemhasfocus && !linkhasfocus && !lookup && !wt.dialog) gotoFirst();
	tabkey = false;
	wt.dialog = false;
}

function setErrorClass(item, force)
{	
	if (force == null) force = false;

	//if ((mode != MODE_READ && isContentEditable(item)) || force)
	{
		var estr	= " error";

		if (item.className && item.className.indexOf(estr) > -1) item.className = item.className.replace(estr, "");

		if (getAttribute(item, "valid") != "true") item.className = item.className + estr;
		else 
		{
			if (getAttribute(item, "errmsg") != "")	item.setAttribute("errmsg", "");
		}
	}
}

function makeValid(item)
{
	item.setAttribute("valid", "true");
	setOldQmapValue(item);
	setErrorClass(item);
}

function onKeyUpHandler(event)
{
	if(isLookupOpen())
	{
		return;
	}
	
	//                 Enter                Tab
	if((event.which == 13 || event.which == 9) && $.atsc.dialog.exists())
	{
		$.atsc.dialog.focus();
		return;
	}
	
	return recordOnKeyUpHandler(event, mode);
}

function recordOnKeyUpHandler(event, mode)
{
	if (!isLoading())
	{
	    event = getEvent(event);
	    var item = getElement(event);

		try
		{
			if ((mode != MODE_READ) && isValidInputKey(event.keyCode)) 
			{
				isValidInput(item);
				
				var kc = event.keyCode; 
				
				/* suggestions */
				
				var l = 0;
				
				try {l = parseInt(item.getAttribute("arg1"));} catch(e) {}
				
				if (l > 2 && kc != 13 && kc != 17 && kc != 18 && kc != 27 && kc != 38 && kc != 40 && !event.altLeft && !(kc >= 112 && kc <= 123)) suggestValue(item);
			}
			
			if (mode != MODE_READ) setErrorClass(item);
		}
		catch (e) {}
	}
	else return rejectEveryThing(event);
}

function isValidInputKey(kc)
{
	return !((kc == 35) || (kc == 36) || (kc == 37) || (kc == 39) || (kc == 9) || (kc == 13) || (kc == 16))
}

function onFocusHandler(event)
{	
	$("#suggestValues").hide();
	
	itemhasfocus = true;
    event = getEvent(event);
    var item = getElement(event);
    var originalItem = item;
    lastitem = item;	
	
	if (skip)
	{
		skip = false;
		return false;
	}

	// TH: Dit is altijd undefined??
	/*if(event.shiftKey)
	{
		try
		{
			var prev = getPreviousValidElement(item);
			if (prev != null)
			{
				if (item.id != prev.id) prev.focus();
				if (prev.type == "text" || prev.type == "password") prev.select();
				item = prev;
			}
			else if (item.type == "text" || item.type == "password") item.select();
		}
		catch(e){}
	}
	else
	{
		try
		{
			var next = getNextValidElement(item);

			if (next != null)
			{
				if (item.id != next.id) next.focus();
				if (next.type == "text" || next.type == "password") next.select();
				item = next;
			}
			else if (isContentEditable(item)) item.select();
			else gotofirst();
		}
		catch(e){}
	}*/

	if (item.type == "text" || item.text == "password") $(item).select();
	
	var ccf = document.getElementById("c_"+item.id);

	if (isContentEditable(item))
	{
		if (getAttribute(item, "valid") == "true") 
		{
			if (item.className.indexOf(" selected") == -1) item.className += " selected";
		}
		else
		{
			if (item.className.indexOf(" errsel") == -1) item.className += " errsel";
		}
	}
	else
	{
		var next = getNextValidElement(item);
		if(next)
		{
			next.focus();
		}
	}
	
	if (getAttribute(item, "valid") == "true" && isContentEditable(item))
	{
		item.oldValue = item.value;
		if (getAttribute(item, "qmapping") != null) item.oldQmapValue = item.value;
		
		if(ccf != null && !ccf.checked && originalItem != item)
		{
			if(getAttribute(item, "req") == "true")				
			{
				if (isCheckBoxGroup(item)) checkReqCheckBoxGroup(item, true)
				else
				{
					if (item.value == "")
					{
						item.setAttribute("valid", "false");
						setErrorClass(item);
					}
				}
			}
		}
	}
	else if(ccf != null && ccf.checked && originalItem != item)// als er focus wordt gezet op een checkbox van een change_field
	{
		// hij wordt uitgevinkt en dus is het veld in orde
		item.setAttribute("valid", "true");
		setErrorClass(item);
		if (item.className.indexOf(" selected") == -1) item.className += " selected";
	}

	var extramessage = "";
	try {extramessage = extraLookupMessage(item);} catch (e) {}

	var msg = "";

	if ((getAttribute(item, "qmapping") != null || getFType(item) == "D") && getFType(item) != "PW2" && hasAttribute(item, "readOnly"))
	{
		msg = "[F4: Zoeken";
		if (extramessage != null && extramessage != "") msg = msg + ", F5: " + extramessage;
	}
	else if (extramessage != null && extramessage != "") msg = msg + "[F5: " + extramessage;
	else if (item.tagName == "TEXTAREA") msg = "[F10: Vergroten";

	var globalmsg = "";

	try
	{
		var op = "[";
		if (msg != "") op = ", ";
		var sgm = specificGlobalMessage(item);
		if (sgm != null & sgm != "") globalmsg = op + sgm;
	}
	catch (e) {globalmsg = ""}

	msg = msg + globalmsg;

	if (msg != "") msg = msg + "] ";
	setStatusMessage(msg);
}

function getPreviousValidElement(item) 
{
	if (canElementHaveFocus(item)) return item;
	else
	{
		var f = false;

		var el;

		if (visibleTabPages == "") el = document.getElementsByTagName("*");
		else el = visibleTabPages[activeTab].getElementsByTagName("*");

		var ell = el.length;
		for (var i = ell-1; i>-1; i--)
		{
			if(item.id && item.id == el[i].id) f = true;
			if(f)
			{
				if (canElementHaveFocus(el[i]))
				{
					return el[i];
				}
				if(i == 0) gotoFirst();
			}
		}
		if(!f){return null;}
	}
}

function getNextValidElement(item) 
{
	if (canElementHaveFocus(item)) return item;
	else
	{
		var f = false;
		var el;

		if (visibleTabPages == "") el = document.getElementsByTagName("*");
		else el = visibleTabPages[activeTab].getElementsByTagName("*");
		
		var ell = el.length;
		for (var i = 0; i<ell; i++)
		{
			if(item.id && item.id == el[i].id) f = true;
			if(f)
			{
				if (canElementHaveFocus(el[i]))
				{
					return el[i];
				}
				if(i == ell-1) gotoFirst();
			}
		}
		if(!f){return null;}
	}
}

function canElementHaveFocus(item)
{
	return (item.tagName == "INPUT" || item.tagName == "SELECT" || item.tagName == "TEXTAREA" || item.tagName == "BUTTON") && 
		   (item.type == "text" || item.type == "password" || item.type == "file" || item.type == "textarea" || item.type == "select-one" || item.type == "radio" || item.type == "button" || item.type == "checkbox") && 
		   (isContentEditable(item) || item.type == "select-one" || item.type == "radio" || item.type == "button" || item.type == "checkbox") && isItemVisible(item);
}

function isItemVisible(item)
{
	var visible = true;

	if (item.style)
	{
		visible = visible && (item.style.visible != "hidden");
		visible = visible && (item.style.display != "none");
	}
	
	if (item.type) visible = visible && (item.type != "hidden");

	if (!visible) return false;
	else
	{
		var parentitem = item.parentNode;
		if (parentitem != null) return isItemVisible(parentitem); else return true;
	}
}


// de eerste classindicatie is het type van het veld!
function getFType(item)
{
	if(!item) return;
	
	if(item.className)
	{
		return item.className.split(" ")[0];
	}
	return $(item).attr("class").split(" ")[0];
	//return item.className.split(" ")[0];
}

function needsValidCheck(item)
{
	switch(getFType(item))
	{
		case "A": return true; break;
		case "A1": return true; break;
		case "A2": return true; break;
		case "A3": return true; break;
		case "A4": return true; break;
		case "A5": return true; break;
		case "A6": return true; break;
		case "N": return true; break;
		case "NL": return true; break;
		case "N2": return true; break;
		case "N3": return true; break;
		case "N4": return true; break;
		case "NE": return true; break;
		case "NE2": return true; break;
		case "P": return true; break;
		case "P2": return true; break;
		case "P3": return true; break;
		case "P4": return true; break;
		case "M": return true; break;
		case "M2": return true; break;
		case "M3": return true; break;
		case "M4": return true; break;
		case "D": return true; break;
		case "T": return true; break;
		case "K": return true; break;
		case "S": return true; break;
		case "IP4": return true; break;
		case "PW2": return true; break;
		case "EM": return true; break;
		case "WS": return true; break;
		default : return false; break;
	}
}

function isValidInput(item)
{
	if (needsValidCheck(item))
	{
		var caretPos = -1;
		
		if (isItemVisible(item))
		{
			try
			{
				caretPos = $(item).caret().start;
				if (caretPos >= $(item).val().length)
				{
					caretPos = -1;
				}
			}
			catch (e) {}
		}
		
		var ftype = getFType(item);
		var newValue = item.value;
		var oldValid = getAttribute(item, "valid");
		var arg1 = getAttribute(item, "arg1");
		var arg2 = getAttribute(item, "arg2");
		
		//transform value to proper input
		transformedNewValue = transform(newValue, ftype, arg1, arg2);
		
		if (transformedNewValue!=newValue)
		{
			item.value = transformedNewValue;
			if(caretPos >= 0 && !$.atsc.dialog.exists()){ $(item).caret(caretPos, caretPos); }
			newValue = transformedNewValue;
		}
		//alert("value :"+item.value+"\nisValid? :"+isValid(newValue, ftype, arg1, arg2)+"\nisCorrectType? :"+isCorrectType(newValue, ftype, arg1, arg2)+"\ntransformValue :"+transform(newValue, ftype, arg1, arg2));
		
		if (isValid(newValue, ftype, arg1, arg2))
		{
			//alert("test");
			if(isCorrectType(newValue, ftype, arg1, arg2))
			{
				// ftype N3 is voor getallen die geen 0 mogen zijn.
				if((ftype == "N2" || ftype == "N4") && newValue == "-") return false;
				if(ftype == "N3") if(parseFloat(newValue) == 0) return false;
				item.oldValue = item.value;
				return true;
			}
			else
			{
				if(item.oldValue && (ftype != "D" && ftype != "T" && ftype !="K" && ftype != "S" && ftype !="EM" && ftype != "WS" && ftype != "IP4"))
				{
					item.value = item.oldValue;
					if(caretPos >= 0 && !$.atsc.dialog.exists()){ $(item).caret(caretPos - 1, caretPos - 1); }
				}
				else if(ftype == "D" || ftype == "T" || ftype == "K" || ftype == "S" || ftype == "EM" || ftype == "WS" || ftype == "IP4")
				{
					item.value = newValue;
					if(caretPos >= 0 && !$.atsc.dialog.exists()){ $(item).caret(caretPos, caretPos); }
				}
				else item.value = "";
				return false;
			}
		}
		else
		{
			if(item.oldValue && (ftype != "D" && ftype != "T" && ftype != "K" && ftype != "S" && ftype != "EM" && ftype != "WS" && ftype != "IP4"))
			{
				item.value = item.oldValue;
				if(caretPos >= 0 && !$.atsc.dialog.exists()){ $(item).caret(caretPos - 1, caretPos - 1); }
			}
			else item.value = "";

			if (oldValid == "true") return true; else return false;
		}
	}
	else return true;
}

function checkInput(item)
{
	if(mode != MODE_READ)
	{				
	    var oldValid = getAttribute(item, "valid");

	    if (item.isChanged == "true") copyBeginEndValue(item);

	    var oldValue = item.oldValue;
	    item.setAttribute("valid", ""+isValidInput(item));
	    var cb = document.getElementById("c_"+item.id);
		
		if (item.tagName == "SELECT")
		{					
			if (getAttribute(item, "fuidname") != null && getAttribute(item, "fuidname") != "")
			{
				var n = item.childNodes;
				var k = 0;
				var found = false;
				
				while (k < n.length && !found)
				{
					found = (n[k].value == item.value);
					
					if (!found)	k = k + 1;
				}
											
				item.setAttribute("fuidvalue", getAttribute(n[k], "fuidvalue"));				
			}
		}
		
		if (item.tagName != "TEXTAREA")	item.value = trim(item.value);

		if (getAttribute(item, "req") == "true" && (cb == null || cb.checked))
		{		
			if (isCheckBoxGroup(item)) checkReqCheckBoxGroup(item, true);
			else
			{
				if (getAttribute(item, "qmapping") != null) quickQmapLookup(item, oldValid);			
				else
				{					
					if (item.value == "")
					{										
						item.setAttribute("valid", "false");
						if (item.fuidname) item.setAttribute("fuidvalue", "");
						emptyQmappingFields(item);
					}				
				}
			}
		}
		else
		{
			if (item.value == "") 	emptyQmappingFields(item);
			else					quickQmapLookup(item,oldValid);			
		}

		if (getAttribute(item, "unique") == "true" && isChanged) checkUniqueValue(item);
				
		if (getFType(item) == "D") 
		{			
			if (getAttribute(item, "valid") != "true")
			{
				item.setAttribute("errmsg", getLabel(item) + " dient van de vorm dd-mm-jjjj te zijn.");				
			}
		}
	}
}

function isCheckBoxGroup(item)
{		
	return (getAttribute(item,"type") == "checkbox" && getAttribute(item,"group") == "true"	);	
}

function checkReqCheckBoxGroup(eli, setErrClass)
{	
	var id = eli.id;

	if (id.substring(id.length-2, id.length) == "_0") 
	{
		var k				= 0;
		var item			= eli;
		var rname			= eli.id.substring(0, eli.id.length-2);				
		var found			= false
		
		while(item != null && !found)
		{
			if (item.checked)
			{
				found		= true;
			}
			else
			{		
				k			= k + 1;				
				item		= document.getElementById(rname + "_" + k);
			}		
		}
		
		if (found) eli.setAttribute("valid", "true");
		else	   eli.setAttribute("valid", "false");

		if (setErrClass) setErrorClass(eli);
	}
}

function quickQmapLookup(item, oldValid)
{
	var allowmultiplevalues	= item.allowmultiplevalues == "true";
	var itemid 				= item.id;
	var keyValue;
	
	if (allowmultiplevalues) keyValue = corr(item.values);
	else 					 
	{
		var t = item.value;
		var ft = getFType(item);

		if (ft == "N" || ft == "N2" || ft == "N3" || ft == "N4") 
		{
			t = t.replace(/,/g, ".");		
		}
		
		keyValue = corr(t);
	}

	var it = "";
	try {it = specialItem(item, "");} catch (e) {it = "";}
	if (it == null) it = "";
	if (it != "") item = it;

 	if (getAttribute(item, "qmapping") != null)
 	{
 		var newValue;
 		
		if (allowmultiplevalues) newValue = item.values;
		else newValue = item.value;

 		if (getAttribute(item, "oldQmapValue") != newValue)
 		{
	 		if (allowmultiplevalues) item.oldQmapValue = item.values;
	 		else item.oldQmapValue = item.value;
	 		
	 		item.isChanged = "true";
	 		var i = 0;
	 		var j = 0;
	 		var url = IOSERVLETURL + "?action=10&uniqueid=" + uniqueid +"&name="+record_name+"&item="+itemid;

			var queryid = "";
			try {queryid = specialQueryId(item, "F4", true);} catch (e) {queryid = "";}
			if (queryid == null) queryid = "";
		
			if (queryid == "")
			{
				queryid = getAttribute(item, "queryid");
			}

			url = url + "&queryid=" + queryid;
	 		url = url + "&key=" + keyValue;

	 		if (window.extraQmapParameters && !skipextra) url = url + window.extraQmapParameters(item, getAttribute(item, "queryid"));

			var fuidname = getAttribute(item, "fuidname");
			var bfuidname = false;
			var checkFields = getAttribute(item, "qmapping").split("_<split>_");
			var cl = checkFields.length;

	 		while (i<cl)
 			{
	 			if (j == 1 && fuidname)
	 			{
					url = url+"&A"+j+"="+fuidname+"&V"+j+"="+fuidname;
					bfuidname = true;
				}
				else
				{
					url = url+"&A"+j+"="+checkFields[i]+"&V"+j+"="+checkFields[i+1];
	 				i = i + 2;
				}

	 			j++;
 			}

			if (fuidname && !bfuidname) url = url+"&A"+j+"="+fuidname+"&V"+j+"="+fuidname;

 			processXMLDoc(url, "afterServerCheck");
	 	}
	 	else item.setAttribute("valid", oldValid);
 	}
}

function checkUniqueValue(item)
{
	var field = item.id;
	var value = corr(item.value);
	var fuidstr = "";
	var extraUniqueCheckParameters = "";

	if (item.fuidname)
	{
		fuidstr = "&foreignUNIDName=" + item.fuidname + "&foreignUNIDValue=" + item.getAttribute("fuidvalue");
	}
	try{extraUniqueCheckParameters = getExtraUniqueCheckParameters()}catch(e){}
	url = IOSERVLETURL + "?action=13&name=" + record_name + "&field=" + field + "&value=" + value + "&uniqueid=" + uniqueid + fuidstr + extraUniqueCheckParameters;

	if(value != "")processXMLDoc(url, "afterServerCheck");
}

function sendAlive(seconds)
{
	if (sendalive)
	{
  		var url = IOSERVLETURL + ";jsessionid=" + jsessionid + "?action=3&name="+record_name+"&uniqueid="+uniqueid;
  		
  		processXMLDoc(url, null, true, true);
   		setTimeout("sendAlive(" + seconds + ")", seconds * 1000);
   	}
}

function lookupInTable(item, fkey, jsessionid, width)
{
	var it = "";
	try {it = specialItem(item, fkey);} catch (e) {it = "";}
	if (it == null) it = "";
	if (it != "") item = it;

	queryid = "";
	try {queryid = specialQueryId(item, fkey);} catch (e) {queryid = "";}
	if (queryid == null) queryid = "";

	if (queryid == "")
	{
		if (fkey == null || fkey == "F4" || it != "") queryid = getAttribute(item, "queryid");
	}

	if (queryid == null) queryid = "";

  	if (queryid != "")
  	{
  		startLoading();
		lookup = true;
  		currentField = item; // wordt gebruikt in UIWindow.js
  		var exp;
  		try {exp = extraLookupParameters(item, queryid, fkey);}
  		catch(e) {exp = ""}
  		if (exp == null) exp = "";
  		qm = getAttribute(item, "qmapping").split("_<split>_");
  		source = qm[0];
  		target = qm[1];

  		try {lookupKey = lookupSearchKey(item, fkey);}
  		catch (e) {}
  		if (lookupKey == null) lookupKey = "";

		var mlr = null;
		try {mlr = maxLookupRows(queryid);} catch (e) {mrl = null;}
		if (mlr == null) mlr = maxlookuprows;

		openLookup(item, "/jsp/atsc/UITableIFrame.jsp;jsessionid=" + jsessionid + "?queryid=" + queryid +"&mode="+MODE_SELECT+"&source="+ source + "&target=" +target + "&maxrows=" + mlr + exp, jsessionid, width);			
  	}
}

function openWebSite(item, fkey)
{
	if (fkey != "F5")
	{
		var fieldname = item.id;
		if(fieldname.substring(0,1)=="i")
		{
			fieldname = fieldname.substring(1,fieldname.length);
		}

		var url = document.getElementById(fieldname).value;
		if(url!="")
		{
			if(url.indexOf("http://") != -1) window.open(url);
			else window.open("http://"+url);
		}
		else alert("Er is geen website ingevuld");
	}
}

function sendemail(item, fkey)
{
	if (fkey != "F5")
	{
		var fieldname = item.id;
		
		if (fieldname.substring(0,1)=="i") fieldname = fieldname.substring(1,fieldname.length);
		
		var emailadr=document.getElementById(fieldname).value;
		
		if (emailadr!="") window.open("mailto:"+emailadr);
		else alert("Er is geen e-mailadres ingevuld");
	}
}

function selectdate(item, fkey)
{
	if (fkey != "F5")
	{	
		var fieldname;
		if (getAttribute(item, "fieldid") != null) fieldname = getAttribute(item, "fieldid");
		else fieldname = item.id;

		var dateitem = document.getElementById(fieldname);
		currentField = dateitem;
		isChanged = true;
		
		showCalendar(dateitem.id, "%d-%m-%Y");			
	}
}

function uirecordselecttime(item)
{
	selectTime(item);
	isChanged = true;
}

function uniquewarning(item)
{
	alert(UNIQUE_WARNING);
}

function selectAction(item, fkey, jsessionid)
{
	
	global_fkey = fkey;
	if (!isReadOnly(item) && item.type != "password")
	{
		isChanged = true;
		var ftype = getFType(item);

		switch(ftype)
		{
				case "WS": openWebSite(item, fkey); break;
				case "EM": sendemail(item, fkey); break;
				case "D": selectdate(item, fkey); break;
				case "A1": lookupInTable(item, fkey, jsessionid); break;
				case "UL": openUploadWindow(item.filefield); break;
				default: lookupInTable(item, fkey, jsessionid); break;
		}
	}
}

function removeLookupOption(input)
{
	input.disabledLookupField = "true";
	input.qmapping = "";
	input.queryid = "";
	image = document.getElementById("i"+input.id);
	if(image != null) image.style.visibility = "hidden";
}

function addLookupOption(input,qmapping,queryid)
{
	input.disabledLookupField = "false";
	input.qmapping = qmapping;
	input.queryid = queryid;
	image = document.getElementById("i"+input.id);
	if(image != null) image.style.visibility = "";
}

function afterServerCheck(recXML)
{
	var ioservletresponseTag = recXML.getElementsByTagName("ioservletresponse")[0];
	var type = ioservletresponseTag.getAttribute("type");

	var requestFieldTag = recXML.getElementsByTagName("requestfield")[0];
	
	var requestFieldElement;

	if (form != null) requestFieldElement = form.elements[requestFieldTag.getAttribute("id")];
	else requestFieldElement = window.parent.opener.vArguments[0].forms[0].elements[requestFieldTag.getAttribute("id")];

	var qmapfields = recXML.getElementsByTagName("qmapfield");
	var hasMoreResults = requestFieldTag.getAttribute("moreresults") == "true";

	var errmsg = requestFieldTag.getAttribute("errmsg");

	if (errmsg != null && errmsg != "") // Er is een fout
	{
		requestFieldElement.setAttribute("errmsg", errmsg);

		if (type == "quicklookup")
		{
			if(hasMoreResults)
			{
				try
				{
					lookupKey = requestFieldElement.value.toLowerCase();
					lookupInTable(requestFieldElement, "F4");
				}
				catch(e)
				{
					alert(1 +"\n"+ e.message);
				}
			}
			
			if (requestFieldElement.getAttribute("allowvaluesnotinlist") == "false") // Waarde moet overeenkomen met tabel
			{			
				if (requestFieldElement.getAttribute("req") == "true" || requestFieldElement.value != "") requestFieldElement.setAttribute("valid", "false");
				else emptyQmappingFields(requestFieldElement);
			}
			else // Alle waarden zijn toegestaan
			{
				if (requestFieldElement.getAttribute("req") == "true" && requestFieldElement.value == "") requestFieldElement.setAttribute("valid", "false");
				else
				{
					//requestFieldElement.setAttribute("valid", "true");
					checkItem(requestFieldElement);
					emptyQmappingFields(requestFieldElement);
				}
			}
		}
		else if (type == "uniquecheck")
		{
			requestFieldElement.setAttribute("valid", "false");
		}

		setErrorClass(requestFieldElement);
		isChanged = true;
	}
	else // Geen fout
	{
		var allowmultiplevalues = (requestFieldElement.allowmultiplevalues == "true");
		var val					= requestFieldTag.getAttribute("value");
	
		if (!allowmultiplevalues) requestFieldElement.value = val;
		else 
		{
			requestFieldElement.values = val;
			requestFieldElement.value = val.replace(/_sep_/g, ", ");
		}
		
		requestFieldElement.removeAttribute("errmsg");		
		requestFieldElement.setAttribute("valid", "true");

		var ql = qmapfields.length;
		var qf;
		var waarde;

		for(var k=0; k<ql; k++)
		{
			qf = qmapfields[k];
			waarde = qf.getAttribute("value");

			if(waarde == "null" || waarde == "&nbsp;") waarde = "";
			if (waarde.indexOf("_<newline>_") > -1) waarde = waarde.replace(/_<newline>_/g, "\n");

			try
			{
				isChanged = true;
				var naam = qf.getAttribute("id");

				if (naam == requestFieldElement.getAttribute("fuidname"))
				{
					requestFieldElement.setAttribute("fuidvalue", waarde);
				}
				else
				{
					var el = form.elements[naam];

					el.value = waarde;					
					checkItem(el);
				}
			}
			catch(e){}
		}

		/*RB: 06-04-2004

		Dit is er in gebouwd om ervoor te zorgen dat gegevens van een andere relatie overgenomen kunnen worden
		daarna moeten ze opgeslagen worden in het nieuwe relatierecord.
		Op zich zou dit niet nodig moeten zijn omdat de uniquecheck altijd na de quickqmaplookup plaatsvindt.
		Echter op een of andere manier zet die quickmapLookup een variabele waardoor de uniquecheck die er dan
		achteraan komt het betreffende veld niet meer op valid zet.
		*/

		// Controleren of dit nog nodig is

		if (type == "uniquecheck" && requestFieldElement.qmapping != null)
		{			
			requestFieldElement.setAttribute("valid", "true");
			setErrorClass(requestFieldElement);
		}
	}

	try{specificAfterServerCheck(requestFieldElement,recXML);}catch(e){}
}

function emptyQmappingFields(item)
{
	//if (!item.fuidname || item.fuidname.indexOf("sysfls_unid") == -1)
	if (getFType(item) != "UL")
	{
		empty = true;
	
		try {empty = emptyQmapField(item);} catch (e) {empty = true;}
	
		if (getAttribute(item, "qmapping") != null && empty)
		{
			item.setAttribute("fuidvalue", "");
	
			if (item.oldQmapValue != null && item.oldQmapValue != "")
			{
				var i = 3;
				var qMapFields = getAttribute(item, "qmapping").split("_<split>_");
				var l = qMapFields.length;
				var el;
	
				while (i<l)
				{
					el = document.getElementById(qMapFields[i]);
					el.value = "";
					el.setAttribute("fuidvalue", "");
					checkItem(el);
	
					if(el.qmapping && el.qmapping != "") emptyQmappingFields(el);
					i = i + 2;
				}
			}
		}
	}
}

function setOldQmapValue(item)
{
	var qmf = getAttribute(item, "qmapping");
	
	if (qmf != null)
	{
		item.oldQmapValue = item.value;
		
		var i = 3;
		var qMapFields = qmf.split("_<split>_");
		var ql = qMapFields.length;
		var qf;
		var el;

		while (i<ql)
		{
			qf = qMapFields[i];
			el = form.elements[qf];
			
			if (el != null && getAttribute(el, "qmapping") != null) setOldQmapValue(el);

			i = i + 2;
		}
	}
}

function saveAndClose() // met F6
{
	if (isChanged) save(true); else quit(true);
}

function askQuit() // met esc
{
	$("#suggestValues").hide();
	
	try
	{
		if (!isLookupOpen() && !onSubmit)
		{
			var linkwindow		= document.getElementById("linkwindow");
			var isopen			= false;
		
			if (linkwindow != null) isopen = linkwindow.style.visibility != "hidden";
		
			if (!isopen)
			{		
				var v = true;
				
				try {v = beforeAskQuit();} catch(e){}
		
				if (mode != MODE_READ && isChanged && v)
				{
					$.atsc.dialog.makeModal({
						title: getApplicationName(),
						width: 300,
						height: 200,
						html: "<p>Wilt u de wijzigingen opslaan?</p>",
						closeOnEscape: true,
						buttons: [
							{
								text: "Ja",
								click: function(){
									$(this).dialog("close");
									save(true);
								}
							},
							
							{
								text: "Nee",
								click: function(){
									$(this).dialog("close");
									quit(true);
								}
							},
							
							{
								text: "Annuleren",
								click: function(){
									$(this).dialog("close");
								}
							}
						],
						closable: true,
						close: function(){
							try
							{
								if(lastitem)
								{
									lastitem.focus();
									
									//IE-specific fix for placing the cursor at the end of the input.
									$(lastitem).val($(lastitem).val());
								}
							} catch(e){}
						}
					});
				}
				else {quit(true);}
			}			
		}
	}
	catch (e) {}	
}

function checkForm()
{
	return checkTabForm(true);
}

function checkTabForm(checkType, msg, spanObj)
{
	var valide = true;
	if(checkType)	var el = form.elements;
	else
	{
		if (spanObj == null) var el = getElementsByTagNames(visibleTabPages[activeTab], "INPUT,TEXTAREA,SELECT");
		else				 var el = getElementsByTagNames(spanObj, "INPUT,TEXTAREA,SELECT");
	}
	var ell = el.length;
	var xEl = [];
	var p = 0;

	for(k = 0; k < ell; k++)
	{
		if (getAttribute(el[k], "valid") == "false" && getAttribute(el[k], "block") == null && getAttribute(el[k], "skipreq") == null)
		{
			valide = false;
			xEl[p] = el[k];
			p++;
		}
	}
	var xEll = xEl.length;

	if(!valide)
	{
		var invalidElement;
		var em = "De volgende fouten zijn gevonden:\n\n";
		for(k = 0; k < xEll; k++)
		{
			invalidElement  = document.getElementById(xEl[k].id);						
			linvalidElement = document.getElementById("l"+replaceAll(xEl[k].id, "_hidden", ""));
			
			if(linvalidElement != null)		em = em + "'" + replaceAll(linvalidElement.innerHTML, " .", "") + "' is ongeldig!\n";
			else							em = em + "'" + invalidElement.id + "' is ongeldig!\n";

			var ind = "     ";

			if(getAttribute(invalidElement, "errmsg") != null && getAttribute(invalidElement, "errmsg") != "") em = em + ind + getAttribute(invalidElement, "errmsg").replace(/\n/g, "\n" + ind) + "\n";
		}
		if(checkType)	var fi = xEl[0];
		if(checkType)
		{
			if (msg == null) {msg = true;}
			if (getTab(fi.id) == activeTab && msg)
			{
				var continueAfterSpecificErrorMsg = true;
				try{continueAfterSpecificErrorMsg = specificErrorMsg();}catch(e){continueAfterSpecificErrorMsg = true;}
				
				if (continueAfterSpecificErrorMsg)
				{
					try{continueAfterSpecificErrorMsg = parent.specificErrorMsg();}catch(e){continueAfterSpecificErrorMsg = true;}
				}
				
				if(continueAfterSpecificErrorMsg) alert(em);
			}
		}
		if(checkType)	switchTo(getTab(fi.id), true);

		if (spanObj != null)
		{
			alert(em);
		}

		try
		{
			if (!isLookupOpen())
			{			
				if(checkType)	fi.focus();
				else			xEl[0].focus();
			}
			else focusLookup();
		}
		catch (e) {}
	}
	return valide;
}

function specialCharCheck(input)
{
	var amposand=/&/g;
	var lesserThan=/</g;
	var greaterThan=/>/g;

	input = input.replace(amposand,"&amp;");
	input = input.replace(lesserThan,"&lt;");
	input = input.replace(greaterThan,"&gt;");
	return input;
}

function checkCheckBox(id)
{
	id.checked=true;
}

function getDate()
{
	return document.getElementById("nowdate").value;
}

function getTime()
{
	return document.getElementById("nowtime").value;
}

function changeItemStatus(item, value, className, readOnly, valid)
{
	if (value != null)	item.value = value;
	item.className 		= className;
	item.readOnly 		= readOnly;
	
	if (valid != null)	item.setAttribute("valid", valid);
	setErrorClass(item);
}

function onClickHandler(event)
{
	$("#suggestValues").hide();
	
	event = getEvent(event);
	
	if (isLookupOpen()) 
	{
		focusCurrentFrame();
	}
	else if (lwin != null) 
	{
		try {lwin.focus();} catch (e) {}
	}
	
	try {hidemenuie5(window.event);} catch (e) {}
	
	if (event.ctrlKey) 
	{
		var uri;
		
		try {uri = specificEclipseURI();} catch (e) {uri = document.location.hostname + "/" + getContextName() + document.location.pathname;}
		
		openEclipse(uri);
	}	
}

function help()
{	
	return false;
}

function gotoChangeField(item)
{
	try
	{
		var b = item.id.substring(3);
		var iname = "change_"+b;
		switchTo(getTab(iname));
		document.getElementById(iname).focus();
		document.getElementById("c_change_"+item.id.substring(3)).checked = true;
		isChanged = true;
	}catch(e){}
}

function copyBeginEndValue(item)
{
	var sid = item.id;
	var s = "begin";
	var e = "end";

	if (sid.match("^" + s) != null)
	{
		var eid = sid.replace(s, e);
		var eitem = document.getElementById(eid);

		if (eitem != null && getAttribute(item, "valid") == "true")
		{
			eitem.value = item.value;
			checkItem(eitem);
		}
	}
}

function zoomTextArea(item)
{
	if (item.tagName == "TEXTAREA")
	{
		var memoTitle = $("#l" + item.id);
		
		if(!memoTitle || memoTitle.length == 0)
		{
			memoTitle = item.id;
		}
		else
		{	
			memoTitle = memoTitle.html();		
		}
		
		var textareaElem = $("<textarea class=\"txtZoom\" valid=\"true\"></textarea>");
		textareaElem.css("width", "570");
		textareaElem.css("height", "330");
		textareaElem.val(item.value);
		
		var dialog = $.atsc.dialog.makeModal({
			title: memoTitle,
			html: "<p></p>",
			autoOpen: false,
			width: 600,
			height: 400,
			setFocus: function(){
				var textareaElem = $(".txtZoom", this);
				textareaElem.focus();
				
				//Fix for getting the cursor at the end of the textarea.
				textareaElem.val(textareaElem.val());
				
				if (isReadOnly(item)){
					$(textareaElem).attr('readonly', 'readonly');
				}
			},
			beforeClose: function(event, ui){
				if (!isReadOnly(item)){
					item.value = $(".txtZoom", this).val();
					isChanged = true;
				}
				return true;
			},
			closeOnEscape: true,
			closable: true,
			buttons: [],
			selectable: true
		});
		
		dialog.append(textareaElem);
		dialog.dialog("open");
	}
}

function insertPreviousData(item)
{
	var xmlDoc	= string2XML(wt.previousXML);
	var fields	= xmlDoc.getElementsByTagName("field");
	var fl		= fields.length;
	var found	= false;
	var field;
	var child;

	for (var i = 0; i < fl && !found; i++)
	{
		field	= fields[i];

		if (getAttribute(field, "id") == item.id)
		{
			child		= field.firstChild;

			if (child == null) item.value = ""; else item.value	= child.nodeValue;

			b 			= true;

			checkItem(item);
		}
	}
}

function htmlEdit(id)
{
	isChanged = true;

	var vArguments			= [];
	setVArguments(vArguments, window, document.getElementById(id), document.getElementById(id + "span"), "DownloadServlet", getAttribute(document.getElementById(id), "width"), getAttribute(document.getElementById(id), "stylesheet"));
	
	if (IE) showModalDialog('/htmlarea/editor.jsp;jsessionid=' + jsessionid, vArguments,'resizable: yes; help: no; status: no; scroll: no; dialogWidth: 800px; dialogHeight: 600px;');
	else 
	{
		var ww 				= window.open('/htmlarea/editor.jsp;jsessionid=' + jsessionid, "mozeditwindow", "width=800px, height=600px, help=no, resizable=yes, status=no, scroll=no");
		ww.dialogArguments 	= vArguments;
	}
		
	return false;
}

function setVArguments(vArguments, window, fieldToEdit, fieldSpan, servletString, width, stylesheet)
{
	for (var i = 0; i < 6; i++)
	{
		vArguments[0] = window;
		vArguments[1] = fieldToEdit;
		vArguments[2] = fieldSpan;
		vArguments[3] = servletString;
		vArguments[4] = width;
		vArguments[5] = stylesheet;
	}

	var otherArguments	= vArguments.length;

	for (var j = 6; j < otherArguments; j++)
	{
		vArguments[j]	= vArguments[j];
	}
	
	return vArguments;
}

function openUploadWindow(itemid)
{
	isChanged = true;
	var vArguments 	= [];
	vArguments[0] = uniqueid;
	vArguments[1] = record_name;
	vArguments[2] = document.getElementById(itemid);
	vArguments[3] = window;
	
	try 
	{
		if (window.parent.getSecureHTMLEditorFiles())
		{
			vArguments[4] = window.parent.uniqueid;
			vArguments[5] = window.parent.record_name;
		}
	}
	catch (e) {}
	
	var height = 300;
	var width = 500;

	if(vArguments[2].accept != "") height += 20;
	if(vArguments[2].dimension != "") height += 20;
	if(vArguments[2].maxdimension != "") height += 20;
	if(vArguments[2].mindimension != "") height += 20;
	
	if (IE) window.showModalDialog("/jsp/atsc/Upload.jsp;jsessionid=" + jsessionid, vArguments,"edge: Raised; center: yes; help: No; resizable: yes; status: No; scroll: No; dialogWidth: " + width + "px; dialogHeight:" + height + "px;");
	else 
	{
		var ww 				= window.open("/jsp/atsc/Upload.jsp;jsessionid=" + jsessionid, "mozeditwindow", "width=" + width + "px, height=" + height + "px, help=no, resizable=yes, status=no, scroll=no");
		ww.dialogArguments 	= vArguments;
	}
	
}

function copyToClipboard(v, o)
{
   var copyArea = document.getElementById("copyArea");

   copyArea.value = v;

   var tr = copyArea.createTextRange();

   tr.execCommand("Copy");

   copyArea.value = "";

   alert(o + " op klembord geplaatst.\n\n" + v);
}

function getLabel(item)
{
	try
	{
		var la1 	= document.getElementById("l" + item.id).innerHTML;
		var la2		= "" + trim(la1.replace(/\s\./g, ""));

		if (la2.charAt(la2.length - 1) == ".") la2 = la2.substring(0, la2.length - 1);
		
		return la2;
	}
	catch (e) {return "";}	 
}

function setCurrentUser(id)
{
	var u		= document.getElementById(id);
	
	if (u != null)
	{
		u.value = getUser();

		checkItem(u);
	}
	
	return false;
}

function isReadOnly(item)
{
	var at = getAttribute(item, "readonly");

	if (at != null)	return at;	
	else return false;
}

function deleteRecord(table, unidName, record_name, uniqueid, queryid, functie)
{
	delfunctie = functie;
	var url = IOSERVLETURL + "?table="  + table + "&unidName=" + unidName + "&name=" + record_name + "&uniqueid=" + uniqueid + "&queryid=" + queryid + "&action=" + DELETEFORM;
	processXMLDoc(url, "afterDeleteRecord", true);
}

function afterDeleteRecord(recXML)
{
	var tmp = delfunctie;
	delfunctie = null;
	
	var errorTag = recXML.getElementsByTagName("error")[0];

	var errmsg = errorTag.getAttribute("msg");

	if (errmsg != null && errmsg != "") // Er is een fout
	{
		alert(errmsg);
	}
	else // Geen fout
	{
		if(tmp != null)
			eval(tmp + "()");
	}
}

function toString(q)
{	
	var res = "";
	if (q != null && q != "undefined") res = q;
	
	return res; 
}

function suggestValue(item)
{
	if (getAttribute(item, "qmapping") != null && !getFType(item).startsWith("PW"))
	{
		var extra = "";
		
		if (window.extraQmapParameters) extra = extra + window.extraQmapParameters(item, getAttribute(item, "queryid"));
		
		var v = item.value;
		
		if (item.allowmultiplevalues == "true")
		{
			var a = v.split(",");
			
			v = a[a.length - 1];
		}  
		
		processXMLDoc(IOSERVLETURL + "?action=48&uniqueid=" + uniqueid + "&name=" + record_name + "&item=" + item.id + "&key=" + getAttribute(item, "qmapping").split("_<split>_")[0] + "&value=" + v + "&queryid=" + item.getAttribute("queryid") + extra, "afterSuggestValue", false, true);
	}
}

function setSuggestValue(id, line)
{
	var item = document.getElementById(id);  
	
	if (item.allowmultiplevalues == "true")	
	{
		var a = item.value.split(",");
		
		a[a.length - 1] = $(".value", line).text();
		
		item.value = a.join(","); 
	}
	else 									item.value = $(".value", line).text();

	checkItem(item);
	
	$("#suggestValues").hide();
	
	item.focus();
}

function afterSuggestValue(xmlDoc)
{
	var item = document.getElementById($("item", xmlDoc).text());
	var values = $("suggestion", xmlDoc);
	var suggestValues = $("#suggestValues");
	var div = "";
	var currentClass = " current"
	
	currentClass = ""; // Default niet meer eerste selecteren		
		
	$(suggestValues).attr("itemid", item.id);

	$(values).each(function(index, v) 
	{		
		div = div + "<div class=\"line" + currentClass + "\" onclick=\"javascript:setSuggestValue('" + item.id + "', this)\">" + $("option", v).text() + "<span style=\"display: none;\" class=\"value\">" + $("value", v).text() + "</span></div>";
		currentClass = "";
	});
			
	var left = ($(item).offset().left);
	var width = parseInt($(suggestValues).css("width"));
	
	if (!isNaN(width))
	{		
		if (left + width > $(window).width())
		{
			left = $(window).width() - width - 2;
		}
	}
		
	suggestValues.html(div);
	suggestValues.css({"left": left + "px", "top": ($(item).offset().top + $(item).height() + 2) + "px"}) ;
	
	if (div != "") suggestValues.show();	
	else suggestValues.hide();
}

function suggest(dir)
{
	var suggestValues = $("#suggestValues");
	
	if ($(suggestValues).is(":visible"))
	{
		var current = -1;
		var i		= 0;
		var lines	= $(".line", suggestValues);
		
		lines.each(function(index, v)
		{
			if ($(v).hasClass("current"))
			{
				current = i;
				$(v).removeClass("current");
			}
			
			i = i + 1;
		});	
						
		current = (current + dir) % lines.length;
		
		if (current < 0) current = lines.length -1;
		
		$(lines[current]).addClass("current");
	}
}

function selectSuggestValue()
{
	var suggestValues = $("#suggestValues");
	
	if ($(suggestValues).is(":visible"))
	{
		var current = -1;
		var i		= 0;
		var lines	= $(".line", suggestValues);
		
		lines.each(function(index, v)
		{
			if ($(v).hasClass("current"))
			{
				current = i;	
			}
			
			i = i + 1;
		});	
						
		if (current >= 0)
		{
			setSuggestValue(suggestValues.attr("itemid"), $(lines[current]));		
		}
	}
}

function tinyMCESetupContentCallbackHandler(editor_id, body, doc)
{
	try {body.onhelp = help;} catch(e){}
}

function tinyMCEChangeCallbackHandler()
{
	isChanged = true;
}

function tinyMCEEventCallbackHandler(e, editField)
{
	if (e.type == "keydown")
	{
		if (e.ctrlKey && !e.altKey)
		{
			switch(e.keyCode)
			{
				/*S*/ case 83:	{checkItem(editField); save(false); return false;} break;//opslaan
				default:		{return true;}	
		   	}
		}
		else
		{
			switch(e.keyCode)
			{
				/*ESC*/case  27: {askQuit(); return false; break;} // formulier sluiten
				/*F1*/ case 112: {try{openHelp(record_name,editField,"UIRecord",true);}catch(e) {}; return false; break;} // help
				/*F6*/ case 117: {saveAndClose(true); return false; break;} // opslaan en afsluiten
				default:		{return true;}
			}
		}
	}
	
	return true;
}

function tinyMCESaveActiveEditor() {/*Leeg laten ivm ctrl-s in tinyMCE*/}
function tinyMCECancelActiveEditor() {/*Leeg laten ivm ctrl-s in tinyMCE*/}

function tinyMCEFileBrowser(field_name, url, type, win)
{
	var dialogToOpen 	= "/tinymce/jscripts/tiny_mce/plugins/filemanager/dialog.jsp";
	var wwidth			= 420;
	var wheight			= 160;
	
	if (type == "image")
	{
		dialogToOpen 	= "/tinymce/jscripts/tiny_mce/plugins/imagemanager/dialog.jsp";
		wwidth			= 730;
		wheight			= 480;
	}
	
	tinyMCE.activeEditor.windowManager.open({
        file : dialogToOpen + '?mode=1',
        title : 'File Browser',
        width : wwidth,
        height : wheight,
        resizable : "yes",
        inline : "yes",
        close_previous : "no"
    }, {
    	window : win, 
    	input : field_name
    });
    
	return false;
}

function getCMSDocumentWidth(id, defaultValue)
{
	var width;
	
	if (isCMS()) 	width = "100%";	
	else 	 		width = defaultValue;
	
	return width;
}

function getCMSDocumentStyleSheets(id, defaultValue)
{
	var hrefs = "";
	
	if (defaultValue == "")
	{
		if (isCMS())
		{
			var styleSheets = document.styleSheets;
			var tmp;
				
			for (var k = 0; k < styleSheets.length; k++)
			{
				tmp	= styleSheets(k).href;
		
				if (tmp != "")
				{
					if (hrefs != "") hrefs = hrefs + ", ";
					
					hrefs = hrefs + tmp;
				}
			}
		}
	}
	else hrefs = defaultValue;
	
	return hrefs;
}

function tinyMCECustomStyleFormats()
{
	try			{return specificTinyMCECustomStyleFormats();}
	catch (e) 	{return [ {title : "-not available-", inline : ""}];} 
	
	return style_formats;
}

if (FF)
{
	Node.prototype.__defineGetter__("fuidvalue", function() {return this.getAttribute("fuidvalue");} );
	Node.prototype.__defineSetter__("fuidvalue", function(value) {this.setAttribute("fuidvalue", value);} );
	
	Node.prototype.__defineGetter__("valid", function() {return this.getAttribute("valid");} );
	Node.prototype.__defineSetter__("valid", function(value) {this.setAttribute("valid", value);} );
	
	Node.prototype.__defineGetter__("req", function() {return this.getAttribute("req");} );
	Node.prototype.__defineSetter__("req", function(value) {this.setAttribute("req", value);} );
	
	Node.prototype.__defineGetter__("readOnly", function() {return this.getAttribute("readOnly");} );
	Node.prototype.__defineSetter__("readOnly", function(value) {this.setAttribute("readOnly", value);} );
}
