//----------------------------------------------------------------------------------------- 
/* 
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 or higher.
{
	for(var i=0; i<document.images.length; i++)
	{
		var img = document.images[i]
		var imgName = img.src.toUpperCase()
		if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
		{
			var imgID = (img.id) ? "id='" + img.id + "' " : ""
			var imgClass = (img.className) ? "class='" + img.className + "' " : ""
			var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
			var imgStyle = "display:inline-block;" + img.style.cssText
			var imgAttribs = img.attributes;
			for (var j=0; j<imgAttribs.length; j++)
			{
				var imgAttrib = imgAttribs[j];
				if (imgAttrib.nodeName == "align")
				{
					if (imgAttrib.nodeValue == "left") imgStyle = "float:left;" + imgStyle
					if (imgAttrib.nodeValue == "right") imgStyle = "float:right;" + imgStyle
					break
				}
			}
			var strNewHTML = "<span " + imgID + imgClass + imgTitle
			strNewHTML += " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
			strNewHTML += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
			strNewHTML += "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
			img.outerHTML = strNewHTML
			i = i-1
		}
	}
}
window.attachEvent("onload", correctPNG);
*/
//----------------------------------------------------------------------------------------- 
    var qsys;
//----------------------------------------------------------------------------------------- 
function qsysSystem(coredivId,identifier,Target,Project,shopId)
{   qsys                = this;
    qsys.startTime      = new Date();
    body                = document.getElementsByTagName("BODY");
    body.botomMargin    = 0;
    body.topMargin      = 0;
    body.leftMargin     = 0;
    body.rightMargin    = 0;
    qsys.firstInTimer   = false;
    qsys.qsysEventIdx   = 0;
    qsys.sessionId      = 0;
	qsys.toSend			= "";
    delete body;
    qsys.XMLHTTPObject  = false;
    
    if (Target == "")
        Target = "qsys/publ/guru/guru.php";

    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
    try { qsys.XMLHTTPObject = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    } catch (e) {
        try { qsys.XMLHTTPObject = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
          try { qsys.XMLHTTPObject = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { qsys.XMLHTTPObject = false; }
        }
    }
    @end @*/
    
    if ((!qsys.XMLHTTPObject) && (typeof XMLHttpRequest != 'undefined')) 
        qsys.XMLHTTPObject = new XMLHttpRequest();
    if ((!qsys.XMLHTTPObject) && (window.createRequest)) 
    {   try 
        {   qsys.XMLHTTPObject = window.createRequest();
        } 
        catch (e) 
        {   qsys.XMLHTTPObject = false;
        }
    }
    if (!qsys.XMLHTTPObject) 
        return false;
    
    qsys.jsx = "";
    qsys.coredivId  = coredivId;
    qsys.identifier = identifier;
    qsys.target     = Target;
    qsys.project    = 'none';
    qsys.KeepAlive  = 0;
    qsys.scriptsLoading = 0;
    qsys.qsysAction = "IDLE";
	qsys.hoverTimer = null;
	qsys.executeTimer = null;
	qsys.lastElement = null;
	
    qsys.obj        = new Array();       //object for variables
    qsys.evt        = new Array();       //object for events
    qsys.fnc        = new Array();       //object for functions
    qsys.tmr        = new Array();       //object for timers
    qsys.chg        = new Array();       //object for timers
    qsys.del        = new Array();       //object for timers
	qsys.groepname  = new Array();       //object for timers
	qsys.objcrd		= new Array();	   //object for coordinates 
	qsys.groepnameSelected = new Array();
	qsys.containers = new Array();
    qsys.toExecute = new Array();

    qsys.obj["PROJECT"]         = qsys.project;
    qsys.obj["BASEDIV"]         = qsys.coredivId;
    qsys.obj["SCRN_HEIGHT"]     = screen.height;
    qsys.obj["SCRN_WIDTH"]      = screen.width;
    qsys.obj["SCRN_COLORDEPT"]  = screen.colorDepth;
    qsys.obj["SCRN_PIXELDEPT"]  = screen.pixelDepth;
    qsys.obj["SHOPID"]          = shopId;

    // Function handler for "SCRIPT" (link)
    qsys.fnc["SCT"] = function(arrAdd)  
    {   var oScript = document.createElement("script");
        oScript.src = arrAdd;
        oScript.type = 'text/javascript';
        oScript.onload=qsys.scriptLoaded;
        qsys.scriptsLoading++;
        document.body.appendChild(oScript);
    };
    qsys.scriptLoaded = function(elm)
    {   qsys.scriptsLoading--;
    };
    // Function handler for "CSS" (link)
    qsys.fnc["LNK"] = function(arrAdd)  
    {   var links = document.getElementsByTagName("link");
        var head  = document.getElementsByTagName("head")[0];               
        // If the href is already present, remove it
        if (!arrAdd["media"]) 
            arrAdd["media"] = "all";   
        for(var i = 0; links.length > i; i++) 
            if (links[i]["href"] == arrAdd["href"]) 
                head.removeChild(links[i]);
//        delete i;
        var elstyle = document.createElement("link");
        for(key in arrAdd) 
            elstyle.setAttribute(key, arrAdd[key]);
        // Add style
        head.appendChild(elstyle);      
        delete elstyle;
        delete links;
        delete head;
    };  
    // Function handler for "XML" (just the same ads root commands)
    qsys.fnc["XML"] = function(arrXML)  
    {   qsys.execute(arrXML,qsys.obj["BASEDIV"]);
    };       
    qsys.fnc["VAR"] = function(arrXML)  
    {   qsys.obj[arrXML["KEY"]] = arrXML["VALUE"];
    };       
    // Function handler for "ADD" (add duh!)
    qsys.fnc["ADD"] = function(arrAdd)  
    {   qsys.fnc[arrAdd["ID"]] = function(arr) 
        {   eval(arrAdd['FNC']);
        }; 
    };       
    // Function handler for "EXE" (execute)
    qsys.fnc["EXE"] = function(arrAdd) 
    {   fnc = function() 
        {   eval(arrAdd);
        }; 
        fnc(); 
        delete fnc; 
    };
    
    // Function handler for "EVT" (event)
    qsys.fnc["EVT"] = function(arrAdd) 
    {   qsys.evt[arrAdd["ID"]] = function(evt,elm) 
        {   eval(arrAdd['FNC']);
        }; 
    };

    // Function handler for "CHG" (change)
    qsys.fnc["CHG"] = function(arr) 
    {   for (key in arr) 
            qsys.lookupTag(key,qsys.chg,qsys.XMLToArr(arr[key]));
    };
    // Function handler for "DEL" (delete)
    qsys.fnc["ALT"] = function(arr) 
    {   alert(arr);
    };
    // Function handler for "DEL" (delete)
    qsys.fnc["DEL"] = function(arr) 
    {   for (key in arr) 
            qsys.lookupTag(key,qsys.del,qsys.XMLToArr(arr[key]));
    };
    
    // Function handler for "NOP" (no operation)
    qsys.fnc["NOP"] = function(arr) { };

    // Function handler for "SID" (set ID)
    qsys.fnc["SID"] = function(arr) 
    {   if (!arr) alert("empty");
        if (!document.getElementById(qsys.obj["BASEDIV"] = arr))  
            qsys.obj["BASEDIV"] = qsys.coredivId; 
    };
    // Function handler for "URL" (goto url in current window)
    qsys.fnc["URL"] = function(arr) 
    {   top.location.href = arr;
    };
    qsys.fnc["DNL"] = function(arr) 
    {   top.location.href = "download.php?filename="+arr;
    };
    // Function handler for "NRL" (goto url in new window)
    qsys.fnc["NRL"] = function(arr) 
    {   var file = "";
        if (typeof(arr) == 'object')
            file = arr['location'];
        else file = arr;
        window.open(file);
    };
    // Function handler for "TIM" (timer)
    qsys.fnc["TMR"] = function(arr) 
    {  	if ((qsys.tmr[arr["ID"]]) && (qsys.tmr[arr["ID"]].newAction == ""))
        {	qsys.tmr[arr["ID"]].newAction = "qsys.doTimeOut('"+arr["ID"]+"','"+arr["ONTIMER"]+"','"+arr["RUNTIMES"]+"')";
            qsys.tmr[arr["ID"]].newTimeOut = arr["TIMEOUT"];
        } 
        else 
        {   if (qsys.tmr[arr["ID"]]) 
                clearTimeout(qsys.tmr[arr["ID"]].id);
            qsys.tmr[arr["ID"]] = new Array();
            qsys.tmr[arr["ID"]].newAction = ""; 
            qsys.tmr[arr["ID"]].timeOut = arr["TIMEOUT"];
            qsys.tmr[arr["ID"]].id = setTimeout("qsys.doTimeOut('"+arr["ID"]+"','"+arr["ONTIMER"]+"','"+arr["RUNTIMES"]+"')", arr["TIMEOUT"]);
        }
    };
    
    qsys.firstInTimer   = false;
    qsys.qsysEventIdx   = 0;
    qsys.sessionId      = 0;
//----------------------------------------------------------------------------------------- 
    qsys.del["TMR"] = function(id)
    {   if (qsys.tmr[id]) 
            clearTimeout(qsys.tmr[id].id);
        qsys.tmr[id] = false;
    };
    qsys.setOptionsValue = function(name)
    {   var i,items = document.getElementsByName(name);
        for(i=0;i<items.length;i++)
            if (qsys.obj[name] == items[i].value) items[i].checked = true;
    }
//----------------------------------------------------------------------------------------- 
    qsys.setClassNameForGroepname = function(groepname,id)
    {   var node;
        if (qsys.groepname[groepname])
        {   qsys.groepnameSelected[groepname] = id;
            for(var i = 0; i < qsys.groepname[groepname].length; i++)
            {   node = document.getElementById(qsys.groepname[groepname][i]);
                if (node)
                {   if (node.id == id) node.className = node.groepname+"_active";
                    else node.className = node.groepname;
                }
            }
        }    
    };

    qsys.scrollContainer = function(guid)
    {   var node = document.getElementById("GI"+guid);
        if (node) qsys.containers[guid]['VORMSCROLLTOP'][qsys.containers[guid]['VORM']] = node.scrollTop;
    }
    qsys.fnc["SPT"] = function(arr)
    {   if (!arr["containerGuid"]) return;
        var guid = arr["containerGuid"];
        if (!qsys.containers[guid]) qsys.containers[guid] = new Array();
        if (!qsys.containers[guid]['FORMS']) qsys.containers[guid]['FORMS'] = new Array();
        if (!qsys.containers[guid]['ITEMS']) qsys.containers[guid]['ITEMS'] = new Array();            
        if (!qsys.containers[guid]['VORM']) qsys.containers[guid]['VORM'] = 0;
        var node = document.getElementById("GI"+guid);
        if (node)
        {   if (!qsys.containers[guid]['VORMSCROLLTOP']) qsys.containers[guid]['VORMSCROLLTOP'] = new Array();
            if (!node.onScroll)
            {   node.onScroll = "<EXE>qsys.scrollContainer('"+guid+"'); </EXE>";
                qsys.setEvent(node, "onscroll");
            }
//			node.scrollTop = 0;
        }
        if (arr["VORM"])  qsys.containers[guid]['VORM'] = arr["VORM"];
        if ((!qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']]) || arr["CLRITEMS"])
        	qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']] = new Array();
        if (arr["CLRALLITEMS"])
        {    for(var k in qsys.containers[guid]['ITEMS'])
                qsys.containers[guid]['ITEMS'][k] = new Array();        
		}
        if (arr["FORMS"])
        {   var i=0;
            var forms = qsys.XMLToArr(arr["FORMS"].replace(/!%!containerGuid!%!/g,guid));
            for(var infoset in forms) qsys.containers[guid]['FORMS'][infoset] = forms[infoset];
        }    

        if (arr["ITEMS"])
        {   if (arr["ADDITEMS"])
            {  	var items = qsys.XMLToArr(arr["ITEMS"]);            
                var itemsOld = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']];
                var idx = arr["ID"].substr(arr["ID"].indexOf("_")+1,10);
                qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']] = new Array();
                for(var itemOldKey in itemsOld) 
                {   if (itemOldKey == idx)
                    {   var toggle = itemsOld[itemOldKey]['classNameToggle'];
                        for(var itemKey in items) 
                        {   var item = qsys.XMLToArr(items[itemKey]);
                            item['classNameToggle'] = toggle;
                            toggle = !toggle;
                            qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][item['idx']] = item;
                        }
                    } else qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemOldKey] = itemsOld[itemOldKey];
                }
                qsys.openCloseContainerForm(guid,arr["ID"]);
                return;
            } else {
                var items = qsys.XMLToArr(arr["ITEMS"]),toggle = false;
                for(var itemKey in items) 
                {   var item = qsys.XMLToArr(items[itemKey]);
                    item['classNameToggle'] = toggle;
                    toggle = !toggle;
                    qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][item['idx']] = item;
                }
            }
        }        

        qsys.toExecute = new Array();
        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']])
        {   var items = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']];
            var parentNode = document.getElementById("GI"+guid);
            for(var itemKey in items)
                if ((!items[itemKey]['parent']) || (items[items[itemKey]['parent']]['intOpengeklapt'] == 1))
                     qsys.showContainerForm(parentNode,guid,items[itemKey]);
//                     qsys.toExecute.push(items[itemKey]);
        }
        if (qsys.toExecute.length)
            qsys.executeTimer = setTimeout("qsys.executeOnTimer('"+guid+"')", 0);        

        if (qsys.containers[guid]['VORMSCROLLTOP'][qsys.containers[guid]['VORM']])
            node.scrollTop = qsys.containers[guid]['VORMSCROLLTOP'][qsys.containers[guid]['VORM']];
    }
    qsys.selectContainerForm = function(guid,vorm,ids)
    {   ids = qsys.XMLToArr(ids);
        qsys.containers[guid]['VORM'] = vorm;
        var selItem = 0;
        if (qsys.containers[guid])
            if (qsys.containers[guid]['ITEMS'])
                if (qsys.containers[guid]['ITEMS'][vorm])
                    for(var idx in qsys.containers[guid]['ITEMS'][vorm])
                        qsys.containers[guid]['ITEMS'][vorm][idx]['intOpengeklapt'] = 0;                            
        var node = document.getElementById("GI"+guid);
        if (node)
        {   node.slaveRight = 0;
            node.slaveLeft = 0;
            node.slaveTop = 0;
            node.slaveBottom = 0;
            while (node.childNodes.length) node.removeChild(node.childNodes[0]);
            if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']])
            {   var items = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']];
                for(var itemKey in items)
                    if ((!items[itemKey]['parent']) || (items[items[itemKey]['parent']]['intOpengeklapt'] == 1))
                        qsys.showContainerForm(node,guid,items[itemKey]);
                qsys.containers[guid]['toOpen'] = ids;
                if (qsys.containers[guid]['toOpen'].length)
                    qsys.openCloseContainerFormInfosetId(guid,qsys.containers[guid]['toOpen'].shift());
            }
        } 
    }
    qsys.openCloseContainerFormInfosetId = function(guid,item)
    {   item = qsys.XMLToArr(item);        
        var items = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']];
        for(var itemKey in items)
            if (item['infoset'] == items[itemKey]['infoset'])
                if (item['id'] == items[itemKey]['id'])
                {   qsys.containers[guid]['scrollTo'] = true;
                    qsys.openCloseContainerForm(guid,items[itemKey]['nodeId']);    
                }
    }
    qsys.executeOnTimer = function(guid)
    {   var cnt = 0;
        var parentNode = document.getElementById("GI"+guid);
        if (!parentNode) alert("GI"+guid);
        qsys.obj["BASEDIV"] = "GI"+guid;
        while(qsys.toExecute.length)
        {   var item = qsys.toExecute.shift();
            qsys.showContainerForm(parentNode,guid,item);
            if (cnt++>80) break;
        }
        if (qsys.toExecute.length)
            qsys.executeTimer = setTimeout("qsys.executeOnTimer('"+guid+"')", 100);
        else {
            clearTimeout(qsys.executeTimer);
        }
    }
    qsys.showContainerForm = function(parentNode,guid,item,xml)
    {   xml = qsys.containers[guid]['FORMS'][item['infoset']];
        for(it in item) xml = xml.replace(new RegExp("!%!"+it+"!%!", "g"),item[it]);            
        if (parentNode) 
            parentNode.slaveLeft = parentNode.intIndent * item['diepte'];
        qsys.execute(xml);
        var nodeId = xml.substr(xml.indexOf("<ID>")+4,40);
        nodeId = nodeId.substr(0,nodeId.indexOf("</ID>"));            
        qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][item['idx']]['nodeId'] = nodeId;
        var formNode = document.getElementById(nodeId);
        if (formNode)
        {   if (formNode.className.substr(formNode.className.length-1,1) == "1")
                formNode.className = formNode.className.substr(0,formNode.className.length-1);
            if (item['classNameToggle'])
                formNode.className += "1";
        }    
    }
    qsys.getContainerNodeIdx = function(idx)
    {   idx = idx.substr(idx.indexOf("_")+1,10);
        return Number(idx.substr(idx.indexOf("_")+1,10));
    }
    qsys.updateContainerForm = function(infoset,dbaseId,key,value)
    {   for(guid in qsys.containers)
        {   var parentNode = document.getElementById("GI"+guid);
            if (qsys.containers[guid]['ITEMS'])
                for(var vorm in qsys.containers[guid]['ITEMS'])
                {   var items = qsys.containers[guid]['ITEMS'][vorm];
                    for(var itemKey in items)
                        if ((items[itemKey]['id'] == dbaseId) && (items[itemKey]['infoset'] == infoset))
                        {   qsys.containers[guid]['ITEMS'][vorm][itemKey][key] = value;
                            xml = qsys.containers[guid]['FORMS'][items[itemKey]['infoset']];
                            var nodeId = xml.substr(xml.indexOf("<ID>")+4,40);
                            nodeId = nodeId.substr(0,nodeId.indexOf("</ID>")).replace(new RegExp("!%!idx!%!", "g"),itemKey);
                            var formNode = document.getElementById(nodeId);
                            if (formNode)
                            {   parentNode.slaveTop = formNode.top;
                                parentNode.slaveLeft = parentNode.intIndent * items[itemKey]['diepte'];
                                for(it in items[itemKey]) 
                                    xml = xml.replace(new RegExp("!%!"+it+"!%!", "g"),items[itemKey][it]);
                                qsys.execute(xml);
                                formNode = document.getElementById(nodeId);
                                if (formNode)
                                {   if (formNode.className.substr(formNode.className.length-1,1) == "1")
                                        formNode.className = formNode.className.substr(0,formNode.className.length-1);
                                    if (items[itemKey]['classNameToggle'])
                                        formNode.className += "1";
                                }
                            }                
                        }
                }
        }
    }
    qsys.deleteContainerForm = function(id)
    {   var node = document.getElementById(id);
        while(node.parentNode.id.indexOf("_") != -1) 
            node = node.parentNode;
        var guid = node.parentNode.id.substr(2,10);
        var parentNode = document.getElementById("GI"+guid);
        var parents = new Array();
        var idx = id.substr(id.indexOf("_")+1,10);
        var infoset = "",id = 0;
        parents[idx] = true;
        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']])
        {   var heightOffset  = 0;
            var items = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']];
            var toggle = 0;
            for(var itemKey in items)
            {   xml = qsys.containers[guid]['FORMS'][items[itemKey]['infoset']];
                var nodeId = xml.substr(xml.indexOf("<ID>")+4,40);
                nodeId = nodeId.substr(0,nodeId.indexOf("</ID>")).replace(new RegExp("!%!idx!%!", "g"),itemKey);
                if ((itemKey == idx) || ((items[itemKey]['parent']) && (parents[items[itemKey]['parent']])))
                {   infoset = items[itemKey]['infoset'];
                    id = items[itemKey]['id'];
                    parents[itemKey] = true;
                    var formNode = document.getElementById(nodeId);
                    if (formNode)
                    {   heightOffset -= formNode.height;
                        formNode.parentNode.removeChild(formNode);
                    }
                    toggle = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemKey]['classNameToggle'];
                    delete qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemKey];
                } else {
                    qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemKey]['classNameToggle'] = toggle;
                    toggle = !toggle;
                    var formNode = document.getElementById(nodeId);
                    if (formNode)
                    {   formNode.top += heightOffset;
                        formNode.style.top = formNode.top+"px";
                        if (formNode.className.substr(formNode.className.length-1,1) == "1")
                            formNode.className = formNode.className.substr(0,formNode.className.length-1);
                        if (items[itemKey]['classNameToggle'])
                            formNode.className += "1";
                    }
                }
            }
        }
        if (qsys.containers[guid])
            if (qsys.containers[guid]['ITEMS'])
                for(var vorm in qsys.containers[guid]['ITEMS'])
                {   var items = qsys.containers[guid]['ITEMS'][vorm];
                    for(var itemKey in items)
                        if ((infoset == items[itemKey]['infoset']) && (id == items[itemKey]['id']))
                            delete qsys.containers[guid]['ITEMS'][vorm][itemKey];
                }
    }
    qsys.openCloseContainerForm = function (guid,id)
    {   var idx = id.substr(id.indexOf("_")+1,10);
        var parentNode = document.getElementById("GI"+guid);
        parentNode.slaveTop = 0;
        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intLoadItems'])
        {   qsys.obj['SENDER'] = id;
            var cmd = "<PHP><FUNCTION>getContainerItems</FUNCTION><RETURN><GUID>"+guid+"</GUID><ID>"+id+"</ID><KEY>"+qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intLoadItems']+"</KEY></RETURN></PHP>";
            qsys.execute(cmd);
            return;
        }
        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intOpengeklapt'] == 1)
            qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intOpengeklapt'] = 0;
        else if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intOpengeklapt'] == 0)
                 qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intOpengeklapt'] = 1;
        var node = document.getElementById(id);
        var top = 0;
        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']])
        {   parentNode.slaveTop = node.top;
            var heightOffset  = 0;
            var items = qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']];
            var parents = new Array();
            var fase = 0;
            for(var itemKey in items)
            {   xml = qsys.containers[guid]['FORMS'][items[itemKey]['infoset']];
                var nodeId = xml.substr(xml.indexOf("<ID>")+4,40);
                nodeId = nodeId.substr(0,nodeId.indexOf("</ID>"));
                nodeId = nodeId.replace(new RegExp("!%!idx!%!", "g"),itemKey);                            
                qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemKey]['nodeId'] = nodeId;
                switch(fase)
                {   
                case 0: //Niets doen
                    if (itemKey == idx)
                    {   top = parentNode.slaveTop;
                        parentNode.slaveLeft = parentNode.intIndent * items[itemKey]['diepte'];
                        for(it in items[itemKey]) xml = xml.replace(new RegExp("!%!"+it+"!%!", "g"),items[itemKey][it]);
                        qsys.execute(xml);
                        var formNode = document.getElementById(nodeId);
                        if (items[itemKey]['classNameToggle']) formNode.className += "1";                                
                        parentNode.slaveLeft = 0;
                        fase++;
                        parents[itemKey] = true;
                    }
                    break;
                case 1: //Aanmaken/Verwijderen
                    if ((items[itemKey]['parent']) && (parents[items[itemKey]['parent']]))
                    {   parents[itemKey] = true;
                        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][idx]['intOpengeklapt'] == 0)
                            if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemKey]['intOpengeklapt'] != -1)
                                qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][itemKey]['intOpengeklapt'] = 0;
                        if (qsys.containers[guid]['ITEMS'][qsys.containers[guid]['VORM']][items[itemKey]['parent']]['intOpengeklapt'] == 1) 
                        {   var formNode = document.getElementById(nodeId);
                            if (formNode) heightOffset -= formNode.height;                          
                            parentNode.slaveLeft = parentNode.intIndent * items[itemKey]['diepte'];
                            for(it in items[itemKey]) 
                                xml = xml.replace(new RegExp("!%!"+it+"!%!", "g"),items[itemKey][it]);
                            qsys.execute(xml);
                            parentNode.slaveLeft = 0;
                            var formNode = document.getElementById(nodeId);
                            heightOffset += formNode.height;
                            if (items[itemKey]['classNameToggle'])
                                formNode.className += "1";                                
                        } else {
                            var formNode = document.getElementById(nodeId);
                            if (formNode)
                            {   heightOffset -= formNode.height;
                                formNode.parentNode.removeChild(formNode);
                            }
                        }
                        break;
                    } 
                    fase++;
                case 2: //Verplaatsen
                    var formNode = document.getElementById(nodeId);
                    if (formNode)
                    {   formNode.top += heightOffset;
                        formNode.style.top = formNode.top+"px";
                    }
                    break;                
                }
            }
        }
    if (qsys.containers[guid]['scrollTo'])
    {   qsys.containers[guid]['scrollTo'] = false;
        parentNode.scrollTop = top;
    }
    if (qsys.containers[guid]['toOpen'])
            if (qsys.containers[guid]['toOpen'].length)
                qsys.openCloseContainerFormInfosetId(guid,qsys.containers[guid]['toOpen'].shift());
    }
//----------------------------------------------------------------------------------------- 
    qsys.fnc["JSX"] = function(arr)
    {   var rtn = qsys.XMLToArr(arr["RETURN"]);
        switch(Number(rtn["FUNCTION"]))
        {
        case 0:
            var elm = document.getElementById(rtn["GUID"]);
            if (elm != null)
             	if(elm.groepname)
                    qsys.setClassNameForGroepname(elm.groepname,elm.id)
            break;
        case 1:
        case 2:
        case 3:
            var elm = document.getElementById("GIOPT"+rtn["GUID"]);
            var cb_group = Array();
            if (qsys.obj[elm.ITEMID])
                cb_group = qsys.XMLToArr(qsys.obj[elm.ITEMID]);
            var e = document.getElementsByName(elm.ITEMID);
            for(var i = 0; i < e.length; i++)
                switch(Number(rtn["FUNCTION"]))
                {   case 1: cb_group[i] = i; 
                            e[i].checked = true;
                            break;
                    case 2: if (cb_group[i]) 
                                delete cb_group[i]; 
                            e[i].checked = false;
                            break;
                    case 3: 
                            if ((cb_group[e[i].value]) && (qsys.obj[elm.ITEMID] != "0"))
                            {   delete cb_group[e[i].value]; 
                                e[i].checked = false; 
                            } else {
                                cb_group[e[i].value] = e[i].value; 
                                e[i].checked = true;
                            }
                            if (e[i].onchange) e[i].onchange();
                            if (e[i].onclick) e[i].onclick();
//                            for(var a in e[i]) alert(a+" => "+e[i]);
                            break;
                }
            qsys.obj[elm.ITEMID] = qsys.arrToXML(cb_group);
            break;
        case 4:
            var node = document.getElementById(qsys.obj['BASEID']);
            while(node.parentNode.id.indexOf("_") != -1) 
                node = node.parentNode;
            var container = node.parentNode.id.substr(2,10);
            qsys.openCloseContainerForm(container,node.id);
            break;
        }
    };
//----------------------------------------------------------------------------------------- 
    qsys.checkBoxToObj = function(group,itemid,bdid)
    {   if (itemid)
        {   var bd = document.getElementById(bdid);
            var node = document.getElementById(group+itemid);
            if (bd) qsys.checkBoxRecursive(bd.xmlEnum,bd,itemid);
        }        
        var e = document.getElementsByName(group);
        var cb_group = Array();
        for(var i = 0; i < e.length; i++)
            if (e[i].checked) 
                cb_group[e[i].value]=e[i].value; 
        qsys.obj[group] = qsys.arrToXML(cb_group);
//        alert(qsys.obj[group]+"_"+group);
    };
    qsys.checkBoxRecursive = function(xml,bd,itemid)
    {   var arr = qsys.XMLToArr(xml);
        for(a in arr)
        {   if (a.substr(0,a.indexOf(".:.")) == itemid)
            {   var node = document.getElementById(bd.ITEMID+itemid);
                if (node.checked)
                    qsys.checkBoxRecursiveSet(arr[a],bd);
                else
                    qsys.checkBoxRecursiveClr(arr[a],bd);
            }
            if (arr[a])  qsys.checkBoxRecursive(arr[a],bd,itemid)
        }
    };
    qsys.checkBoxRecursiveSet = function(xml,bd)
    {   var arr = qsys.XMLToArr(xml);
        for(a in arr)
        {   var itemid = a.substr(0,a.indexOf(".:."));
            var node = document.getElementById(bd.ITEMID+itemid);
            if (node) node.checked = true;
            if (arr[a]) qsys.checkBoxRecursiveSet(arr[a],bd);
        }
    }
    qsys.checkBoxRecursiveClr = function(xml,bd)
    {   var arr = qsys.XMLToArr(xml);
        for(a in arr)
        {   var itemid = a.substr(0,a.indexOf(".:."));
            var node = document.getElementById(bd.ITEMID+itemid);
            if (node) node.checked = false;
            if (arr[a]) qsys.checkBoxRecursiveClr(arr[a],bd);
        }
    }
    qsys.previewImage = function (itemId,files,sizes)
    {   var files = qsys.XMLToArr(files);
        var sizes = qsys.XMLToArr(sizes);
        var file = files[qsys.obj[itemId]];
        var size = qsys.XMLToArr(sizes[qsys.obj[itemId]]);
        var a = Array()
        a["DIV"] = Array();
        a["DIV"]["ID"]                              = "imagePreviewBack";
        a["DIV"]["COORD"]                           = "<ALIGN>ALL</ALIGN>";
        a["DIV"]["className"]                       = "_qsys_imagePreviewBack";
        a["DIV"]["onMouseUpExe"]                    = "<DEL><DIV>imagePreviewBack</DIV></DEL>";
        a["DIV"]["innerHTML"]                       = Array();
        a["DIV"]["innerHTML"]["DIV"]                = Array();
        a["DIV"]["innerHTML"]["DIV"]["ID"]          = "imagePreview";
        a["DIV"]["innerHTML"]["DIV"]["className"]   = "imagePreview";
        a["DIV"]["innerHTML"]["DIV"]["IMG"]         = file;
        a["DIV"]["innerHTML"]["DIV"]["COORD"]       = "<ALIGN>CENTER</ALIGN>";
        a["DIV"]["innerHTML"]["DIV"]["COORD"]       += "<WIDTH>"+size[0]+"</WIDTH>";
        a["DIV"]["innerHTML"]["DIV"]["COORD"]       += "<HEIGHT>"+size[1]+"</HEIGHT>";
        a["DIV"]["innerHTML"]["DIV"]["onMouseUpExe"] = "<DEL><DIV>imagePreviewBack</DIV></DEL>";
        qsys.execute(qsys.arrToXML(a), qsys.coredivId);    
    };
//----------------------------------------------------------------------------------------- 
    qsys.doTimeOut = function(id, xml, runTimes)
    {   var t = qsys.tmr[id];
        if(!t.runTimes) 
            t.runTimes = runTimes;
        qsys.firstInTimer = (t.runTimes == runTimes);
        if(t.runTimes != 0)
        {	if (--t.runTimes <= 0)
            {	clearTimeout(qsys.tmr[id].id);
                if (t.newAction != "")
                {	qsys.tmr[id].timeOut    = t.newTimeOut;
                    qsys.tmr[id].id         = setTimeout(t.newAction, t.timeOut);
                    qsys.tmr[id].newAction  = "";
                } 
                else 
                    with(qsys.tmr) 
                delete id;
                delete t;
                return;
            }
        }
        qsys.tmr[id].id = setTimeout("qsys.doTimeOut('"+id+"','"+xml+"','"+runTimes+"')", t.timeOut);
        delete t;
        if (id == "sessionKeepAlive")
            qsys.KeepAlive = 1;
        if (qsys.fnc["DBG"]) 
            if (qsys.dbg.logFilter & 0x004) 
                qsys.fnc["DBG"](qsys.XMLToArr("<caption>timer." + id + "</caption><xml>"+xml+"</xml>"));
        qsys.execute(xml, qsys.coredivId);    
    };
    qsys.strToAlert = function(inp)
    {   var out = ""; 
        for(var i = 0; i < inp.length; i += 64)
        {   out += inp.substr(i,64)+"\r";
        }
        return out;    
    };
    qsys.strFromHex = function(inp)
    {   var out = "";
        var byt = 0; 
        for(var i = 0; i < inp.length; i += 2)
        {   byt = qsys.fromHex(inp.substr(i,2));
            if (byt == 0)
                return out;
            else out += String.fromCharCode(byt);
        }
        return out;    
    };
    qsys.fromHex = function(inp) 
    {   var hi = 0;
        var lo = 0;
        switch(inp.charCodeAt(0))
        {
        case 0x30: hi = 0; break;
        case 0x31: hi = 1; break;
        case 0x32: hi = 2; break;
        case 0x33: hi = 3; break;
        case 0x34: hi = 4; break;
        case 0x35: hi = 5; break;
        case 0x36: hi = 6; break;
        case 0x37: hi = 7; break
        case 0x38: hi = 8; break;
        case 0x39: hi = 9; break;
        case 0x41: hi = 10; break;
        case 0x42: hi = 11; break;
        case 0x43: hi = 12; break;
        case 0x44: hi = 13; break;
        case 0x45: hi = 14; break;
        case 0x46: hi = 15; break;
        case 0x61: hi = 10; break;
        case 0x62: hi = 11; break;
        case 0x63: hi = 12; break;
        case 0x64: hi = 13; break;
        case 0x65: hi = 14; break;
        case 0x66: hi = 15; break;
        }
        switch(inp.charCodeAt(1))
        {
        case 0x30: lo = 0; break;
        case 0x31: lo = 1; break;
        case 0x32: lo = 2; break;
        case 0x33: lo = 3; break;
        case 0x34: lo = 4; break;
        case 0x35: lo = 5; break;
        case 0x36: lo = 6; break;
        case 0x37: lo = 7; break
        case 0x38: lo = 8; break;
        case 0x39: lo = 9; break;
        case 0x41: lo = 10; break;
        case 0x42: lo = 11; break;
        case 0x43: lo = 12; break;
        case 0x44: lo = 13; break;
        case 0x45: lo = 14; break;
        case 0x46: lo = 15; break;
        case 0x61: lo = 10; break;
        case 0x62: lo = 11; break;
        case 0x63: lo = 12; break;
        case 0x64: lo = 13; break;
        case 0x65: lo = 14; break;
        case 0x66: lo = 15; break;
        }
        return (hi<<4) + lo; 
    };
//----------------------------------------------------------------------------------------- 
    qsys.toXML = function(key,value) 
    {   if (typeof(value) == 'object')  
            value = qsys.arrToXML(value);
        return "<"+key+">"+value+"</"+key+">"; 
    };
//----------------------------------------------------------------------------------------- 
    qsys.toHex = function(value) 
    {   var hi = (value>>4) & 0x0F;
        var lo = value & 0x0F;
        var txt = "";
        if (hi<10) txt += String.fromCharCode(hi+0x30);
        else txt += String.fromCharCode(hi+0x37);
        if (lo<10) txt += String.fromCharCode(lo+0x30);
        else txt += String.fromCharCode(lo+0x37);
        return txt; 
    };
//----------------------------------------------------------------------------------------- 
    qsys.strToHex = function(str) 
    {   var out = "";
    	var pos = 0;  
        while(pos < str.length) 
            out += qsys.toHex(str.charCodeAt(pos++));
        return out;
    };
//----------------------------------------------------------------------------------------- 
    qsys.arrToXML = function(a) 
    {   var xml = ""; 
        if (a)
            for (t in a) 
                xml += qsys.toXML(t,a[t]); 
        return xml; 
    };
//----------------------------------------------------------------------------------------- 
    qsys.showArr = function(a)
    {   var txt = "";
        if (typeof(a) != 'object')  
            return a;
        else 
            for (t in a) 
            {   //if (a[t].substring(0,1) == "<")
                //    a[t] = qsys.XMLToArr(a[t]);    
                if (typeof(a[t]) != 'object') 
                    txt += t+":"+a[t]+"\n>";
               /* else 
                    if (a[t]) 
                        txt+=t+":"+"\n  " + qsys.showArr(a[t]);
            */
            }
        delete t;
        return txt;
    };  
//----------------------------------------------------------------------------------------- 
    qsys.objToXML = function(xml)
    {   if (!xml) 
            return xml;
        while((posa = xml.indexOf("!.!")) >= 0)
        {   var w    = xml.substring(posa + 3, xml.length);
            var posb = posa + 3 + w.indexOf("!.!");
            var key  = xml.substring(posa+3, posb);
            var xml  = xml.substring(0,posa) + event_obj[key] + xml.substring(posb+3, xml.length);
        } 
        delete posa;
        delete posb;
        delete w;
        delete key;
        return xml;
    };
//----------------------------------------------------------------------------------------- 
    qsys.getNameValue = function(xml)
    {   if (!xml) 
            return xml;
        qsys.xml_key   = "";
        qsys.xml_value = "";
		var pos = 0;
		var xml_tmp = "";
        var openTags = 0;
		var p1 = 0;
		var p2 = 0;
        if (xml.substring(0,1) == '<')
        {   pos         = (xml.indexOf('>') - 1);
            qsys.xml_key    = xml.substr(1,pos);
            xml             = xml.substring(pos + 2,xml.length);
            pos             = 0;
            openTags        = 1;
            while(openTags) 
            {   xml_tmp = xml.substring(pos,xml.length);
                p1      = xml_tmp.indexOf("</"+qsys.xml_key+">");
                p2      = xml_tmp.indexOf("<"+qsys.xml_key+">");
                if ((p2>=0) && (p2<p1))
                {   openTags++;
                    pos += p2 + qsys.xml_key.length + 2;
                } 
                else 
                {   if (openTags) 
                        openTags--;
                    pos += p1 + qsys.xml_key.length + 3;
                }
            }
            delete xml_tmp;
            delete p1;
            delete p2;
            
            qsys.xml_value  = xml.substr(0,pos - qsys.xml_key.length - 3);
            xml             = xml.substring(pos, xml.length);
            
            delete pos;
            delete opanTags;
            return xml;
        }
        return "";
    };
//----------------------------------------------------------------------------------------- 
    qsys.XMLToArr = function(xml)
    {   if (xml)
        {   if (xml.substring(0,1) == '<')
            {   var xml_array = new Array();
                var idx = 0;
                do
                {   xml = qsys.getNameValue(xml);
                    if (qsys.xml_key)
                    {   if (xml_array[qsys.xml_key]) 
                            xml_array[qsys.xml_key + (idx++)] = qsys.xml_value;
                        else 
                            xml_array[qsys.xml_key] = qsys.xml_value;              
                    }
                } while(xml)
                delete idx;
                return xml_array;
            } 
            else 
                return xml;
        } 
        else 
            return xml;
    };   
//----------------------------------------------------------------------------------------- 
    qsys.stuff = function(byt)
    {   if (byt > 127) 
        {	var out = String.fromCharCode(127);
            out += String.fromCharCode(0x40+((0x26 & 0xF0)>>4));
            out += String.fromCharCode(0x40+(0x26 & 0x0F));
         	return out+"#"+byt+";";
        } 
        else 
        {   var stufIt = false;
            switch(byt) 
            {   case 0x7f:
                case 0x5c:
                case 0x3f:
                case 0x22:
                case 0x26:
                case 0x22:
                case 0x27:
                case 0x2B:  stufIt = true; break;
                default:    if (byt < 0x20) stufIt = true;
            }
            if (stufIt)
            {	out = String.fromCharCode(127);
                out += String.fromCharCode(0x40+((byt & 0xF0)>>4));
                out += String.fromCharCode(0x40+(byt & 0x0F));
            } 
            else 
                out = String.fromCharCode(byt);
            delete stufIt
            return out;
        }
    };
//----------------------------------------------------------------------------------------- 
    qsys.encode = function(inp) 
    {   var out = "";
    	var pos = 0;  
        while(pos<inp.length) 
            out += qsys.stuff(inp.charCodeAt(pos++));
        return out;
    };
//----------------------------------------------------------------------------------------- 
    qsys.xmlToVisual = function(inp) 
    {   var out = "";
    	var pos = 0;  
        while(pos<inp.length) 
        {   switch(inp.charCodeAt(pos))
            {
            case 0x3C:
            case 0x3E:
                out += ".";
                pos++;
                break;
            default:
                out += String.fromCharCode(inp.charCodeAt(pos++));
                break;
            }
        }
        return out;
    };
//----------------------------------------------------------------------------------------- 
    qsys.onlyCapsHex = function(inp) 
    {   var out = "";
    	var pos = 0;  
        while(pos<inp.length) 
        {   switch(inp.charCodeAt(pos))
            {
            case 0x30:
            case 0x31:
            case 0x32:
            case 0x33:
            case 0x34:
            case 0x35:
            case 0x36:
            case 0x37:
            case 0x38:
            case 0x39:
            case 0x41:
            case 0x42:
            case 0x43:
            case 0x44:
            case 0x45:
            case 0x46: out += String.fromCharCode(inp.charCodeAt(pos++)); break;
            case 0x61:
            case 0x62:
            case 0x63:
            case 0x64:
            case 0x65:
            case 0x66: out += String.fromCharCode(inp.charCodeAt(pos++)-0x20); break;
            default:
                pos++;
                break;
            }
        }
        return out;
    };
//----------------------------------------------------------------------------------------- 
    qsys.mark = function(type,inp)
    {   inp = qsys.encode(inp);
        inp = "\x7F"+ String.fromCharCode(0x70 + ((type & 0x0F)>>4)) + String.fromCharCode(0x70 + (type & 0x0F) ) + inp;
        inp = inp + "\x7F"+ String.fromCharCode(0x70 + ((type & 0x0F)>>4)) + String.fromCharCode(0x71 + (type & 0x0F) );
        return inp;
    };
//----------------------------------------------------------------------------------------- 
    qsys.send = function(packet,sender,sendType)
    {   if(packet.length > 0) 
        {   if(!sendType) 
                sendType = "";
            if ((qsys.qsysSending) && (sendType.indexOf("DROP") >= 0)) 
                return true;
            qsys.del["TMR"]("sessionKeepAlive");
            var pre = "";
            pre = "<EVENT>" + qsys.obj["EVENT"] + "</EVENT>";
            pre = "<SENDER>" + sender + "</SENDER>" + pre;
            pre = "<ITEMID>" + qsys.obj["ITEMID"] + "</ITEMID>" + pre;
            pre = "<ITEMVALUE>" + qsys.obj["VALUE"] + "</ITEMVALUE>" +pre;
            qsys.obj["VALUE"]   = "";
            qsys.obj["ITEMID"]  = "";
            if (qsys.qsysEventIdx != 0) 
                qsys.qsysPacket += "&";
            else qsys.qsysPacket = "";
            qsys.qsysPacket += "EVENT"+(++qsys.qsysEventIdx) + "=";
            qsys.qsysPacket += qsys.mark(6,qsys.sessionId);   //marker session id
            qsys.qsysPacket += qsys.mark(0,pre+packet);           //marker normal
            if (!qsys.qsysSending)
            {   if (qsys.fnc["DBG"]) 
                    if (qsys.dbg.logFilter & 0x002) 
                        qsys.fnc["DBG"](qsys.XMLToArr("<caption>send frame</caption><xml>"+pre+packet+"</xml>"));
                qsys.XMLHTTPObject.open('POST', qsys.target, true);
                qsys.XMLHTTPObject.onreadystatechange = qsys.receive;
                qsys.XMLHTTPObject.setRequestHeader("Cache-Control", "no-cache");
                qsys.XMLHTTPObject.setRequestHeader("X_USERAGENT", qsys.identifier);
                qsys.XMLHTTPObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
//                qsys.XMLHTTPObject.setRequestHeader("Content-Length", qsys.qsysPacket.length);
//                qsys.XMLHTTPObject.setRequestHeader("Connection", "close");
                qsys.XMLHTTPObject.send(qsys.qsysPacket);
                qsys.qsysPacket     = ""; 
                qsys.qsysEventIdx   = 0;
                qsys.qsysSending    = true;
                var node = document.createElement("DIV");        
                node.id = "blockingDiv";
                document.getElementById(qsys.coredivId).appendChild(node);            
                node.style.position         = "ABSOLUTE";       
                node.style.left             = "0px";
                node.style.top              = "0px";
                node.style.width            = qsys.obj["CD_WIDTH"] + "px";
                node.style.height           = qsys.obj["CD_HEIGHT"] + "px";
                node.style.zIndex           = 9999;
                node.className              = "_qsys_blockingDiv";
                delete node;
            }
            return true;
        }
        return false;   
    };
//----------------------------------------------------------------------------------------- 
    qsys.decode = function(inp)
    {   var pos         = -1;
        var posStart    = 0;
        var out         = "";
        var output      = "";
        var err         = 0;
		var a			= 0;
		var cmd			= 0;
		var hi			= 0;
		var lo			= 0;
		var closeMarker = "";
		
        while((pos = inp.indexOf(String.fromCharCode(127),posStart)) >= 0)
        {   if (posStart != pos) 
                out += inp.substring(posStart,pos);
            posStart    = pos + 3;
            hi      	= inp.charCodeAt(++pos);
            lo      	= inp.charCodeAt(++pos);
            cmd     	= ((lo & 0xF0)>>4);
            if (cmd != ((hi & 0xF0)>>4)) 
                err = 101;
            if (err == 0) 
            {   switch(cmd)
                {   case 1: err = 101; break;
                    case 2:	err = 102; break;				    
                    case 3: err = 103; break;
                    //Normal escaped character
                    case 4: 
                        a = (lo & 0x0F) + ((hi & 0x0F)<<4);
                        if (a == 0xDB) a = 0x20AC;
                        out += String.fromCharCode(a);
                        break;
                    case 5: err = 105; break;
				    //Extended escaped character 
                    case 6: 
                        hi  = inp.charCodeAt(++pos);
                        lo  = inp.charCodeAt(++pos);
                        a   = (a<<8)  + (lo & 0x0F) + ((hi & 0x0F)<<4);
                        out += String.fromCharCode(a); 
                        break;
                    case 7: 
                        a = (lo & 0x0F) + ((hi & 0x0F)<<4);
                        if (a & 1)
                        {   if (a != closeMarker) 
                                err = 107;
                            else 
                            {   switch (a & 0xFE)                           // Directive
                                {   case 0: output += out; break;           // markerNormal
                                    case 2: alert("Direct: "+out); break;   // markerDirect
                                    case 4: alert("Label: "+out); break;    // markerLabel
                                    case 6: qsys.sessionId = out; break;    // markerSessionId
                                    case 8: alert("Encrypt: "+out); break;  // markerEncrypt
                                    default: err = 108; break;  
                                }
                            }
                        } 
                        else 
                        {   closeMarker = (a + 1);
                            out = "";
                        }
                        break;
                    default:
                }
            }
            if (err != 0) 
            {   alert("error"+err); 
                err = 0; 
            }
        }
        delete cmd;
        delete a;
        delete lo;
        delete hi;
        delete closeMarker;
        delete out;
        delete err;
        delete pos;
        delete posStart;
        return output;
    };
//----------------------------------------------------------------------------------------- 
    qsys.execute = function (xml,basediv_id)
    {   if(qsys.scriptsLoading)
        {   setTimeout("qsys.execute("+xml+","+basediv_id+")",200);
        }       
        if (basediv_id) 
        {   qsys.obj["BASEDIV"] = basediv_id;
        }
		var xml_array = xml;
        if (typeof(xml) == "string") 
       		xml_array = qsys.XMLToArr(xml);
        qsys.toSend = "";
        var idx = 0;
        var sendType = "";
        for (var BlokType in xml_array)
        {   if (!document.getElementById(qsys.obj["BASEDIV"])) 
                qsys.obj["BASEDIV"] = qsys.coredivId;
            if (BlokType.substring(0,3) == "PHP") 
            {   var values      = qsys.XMLToArr(xml_array[BlokType]);   
                var newPacket   = qsys.toXML("FUNCTION",values["FUNCTION"]);   
                var retvals     = qsys.XMLToArr(values["RETURN"]);
                if (typeof(retvals) == "string") 
                {   if (typeof(qsys.obj[retvals]) != "undefined")
                        newPacket += qsys.toXML(retvals,qsys.obj[retvals]); 
                } else 
                    if (typeof(retvals) != "undefined")
                        for(retval in retvals)
                            if (Number(retval) >= 0) 
                            {   //if (typeof(qsys.obj[retvals[retval]]) != "undefined")
                                    newPacket += qsys.toXML(retvals[retval],qsys.obj[retvals[retval]]); 
//                                alert("_obj_"+retval+":"+retvals[retval]+":"+qsys.obj[retvals[retval]]);
                            } else {
                                newPacket += qsys.toXML(retval,retvals[retval]); 
//                                alert("_const_"+retval+":"+retvals[retval]);
                            }
                qsys.toSend += qsys.toXML(idx++,newPacket);
                sendType = qsys.XMLToArr(xml_array[BlokType])["SENDTYPE"];
            } else if (BlokType.substring(0,3) == "JSX") 
            {   if (qsys.toSend != "")
                    qsys.jsx += qsys.toXML(BlokType,xml_array[BlokType]);
                else
                    qsys.lookupTag(BlokType,qsys.fnc,qsys.XMLToArr(xml_array[BlokType]));
            }
            else 
                qsys.lookupTag(BlokType,qsys.fnc,qsys.XMLToArr(xml_array[BlokType]));
        }
        if (qsys.toSend != "") 
        	qsys.send(qsys.toSend,qsys.obj["SENDER"],sendType);
    };
//----------------------------------------------------------------------------------------- 
    qsys.lookupTag = function(tag,arr,attributes)
    {   if (arr[tag]) 
            arr[tag](attributes);
        else 
        {   if (tag.indexOf("#")>0)
            {   if(arr[tag.substring(0,tag.indexOf("#"))])
                    arr[tag.substring(0,tag.indexOf("#"))](attributes);
            } 
            else 
            {   if (arr[tag.substring(0,3)]) 
                    arr[tag.substring(0,3)](attributes);
                else 
                    alert("Command not loaded: " + tag.substring(0,3));
            }
        }
    };
//----------------------------------------------------------------------------------------- 
    qsys.receive = function()
    {   if (qsys.XMLHTTPObject.readyState >= 4)
        {   var node = document.getElementById("blockingDiv");            
            if (node) 
                node.parentNode.removeChild(node);
            delete node;
            var rsp = qsys.XMLHTTPObject.responseText;
            if (rsp)
            {   if (rsp.charCodeAt(0) == 0x7F) 
                    rsp = qsys.decode(rsp);
                if ((rsp.substring(0,1) != '<') || (rsp.substring(0,3) == "<br")) 
                {   //while((pos = rsp.indexOf("<br />")) >= 0)
                    //    rsp = rsp.substring(0,pos)+rsp.substring(pos+6,rsp.length);
                    //while((pos = rsp.indexOf("<br />")) >= 0)
                    //    rsp = rsp.substring(0,pos)+rsp.substring(pos+6,rsp.length);
                    alert("PHP says:" + rsp);
                } 
                else  {
                    if (qsys.fnc["DBG"]) 
                        if (qsys.dbg.logFilter & 0x002) 
                            qsys.fnc["DBG"](qsys.XMLToArr("<caption>receive frame</caption><xml>"+rsp+"</xml>"));
                    qsys.KeepAlive = 0;
                    var arr = new Array();
                    arr["TIMEOUT"] = 600000;
                    arr["ID"] = "sessionKeepAlive";
                    arr["RUNTIMES"] = 2;
                    arr["ONTIMER"] = "<PHP><FUNCTION>onSessionKeepAlive</FUNCTION></PHP>";    
                    qsys.fnc["TMR"](arr);                
                    qsys.qsysSending=false;
                    qsys.execute(rsp,qsys.coredivId);
                    if (qsys.jsx != "")
                    {   qsys.execute(qsys.jsx,qsys.coredivId);
                        qsys.jsx = "";
                    }

                }
            } 
            else 
            {   /*
                txt="";
                if (qsys.XMLHTTPObject.status==200) txt="URL Exists! but no response";
                else if (qsys.XMLHTTPObject.status==404) txt="URL doesn't exist!";
                else txt="Status is " + qsys.XMLHTTPObject.status;
                delete txt;
                */
                qsys.qsysSending=false;
            }
        }
    };  
//---------------------------------------------------------------------------------------------------------------------
    qsys.setEvent = function(xmlNode, strName)    
    {   //if (strName.substr(0, 2) == "on")
        //    strName = strName.substr(2, strName.length);

        var strFunction = "";
        strName = strName.substr( 0, 2 ) == "on" ? strName.substr( 2, strName.length ) : strName;
        if (xmlNode.baseid) 
            strFunction = "return qsys.doEvent(event,\""+xmlNode.baseid+"\");";
        else 
            strFunction = "return qsys.doEvent(event,\""+xmlNode.id+"\");";
        // w3c compatible style, not supported by internet explorer yet
        if (document.addEventListener)
        {   xmlNode[strName+"EventFunction"] = new Function( "event", "event.preventDefault( ); " + strFunction );
            xmlNode.addEventListener( strName,xmlNode[strName+"EventFunction"], true );
        } 
        else 
        {   xmlNode[strName+"EventFunction"] = new Function( "event", strFunction ); 
            xmlNode[ "on" + strName ] = xmlNode[strName+"EventFunction"];    
        }
        delete strFunction;
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.clrEvent = function( xmlNode,strName)
    {   //if (strName.substr(0, 2) == "on")
        //    strName = strName.substr(2, strName.length);
        // w3c compatible style, not supported by internet explorer yet
        var node = document.getElementById("__CPIINFLABEL");
        var strName = "";
        if (node) 
        	node.innerHTML = "down";    
        strName = strName.substr( 0, 2 ) == "on" ? strName.substr( 2, strName.length ) : strName;
        if (document.removeEventListener)          
        {   xmlNode.removeEventListener(strName,xmlNode[strName+"EventFunction"], true);
        } else 
        {  // if (document.detachEvent )  // Internet Explorer
           //    xmlNode.detachEvent( "on" + strName, xmlNode[strName+"EventFunction"] );
           // else                         // old style 
                xmlNode[ "on" + strName ] = null;    
        }
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.doHover = function(evt,title)
    {	// oude functionaliteit 
    	//qsys.div.getMouseCoord(evt);
        //qsys.execute(qsys.hoverXmlPre+title+qsys.hoverXmlPost);
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.stopHover = function(evt)
    {   // oude functionaliteit
    	//qsys.execute(qsys.hoverXmlDone);
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.doEvent = function(evt,strID)
    {   var elm;
        if (window.event) 
        {   evt                         = window.event;   // ie
            elm                         = evt.srcElement;
            window.event.cancelBubble   = true;
            window.event.returnValue    = false;
        } 
        else 
        {   elm = evt.target;           //firefox
            evt.preventDefault();
        }
        if (elm.disabled) return true;
        if (qsys.obj["MOUSE_ID"]) 
            elm = document.getElementById(qsys.obj["MOUSE_ID"]);
        else  
        {   if(strID== "undefined") 
                strID = qsys.obj["MOUSE_ID"];
            if (strID != "")
            {   if(!elm) 
                    elm = document.getElementById(strID);
                if(!elm.id) 
                    elm = document.getElementById(strID);
            }
        }
        if (!elm) 
        {   delete elm;
            return true;
        }
        if(elm.divid) 
            elm  = document.getElementById(elm.divid);
        if (!elm.baseid) 
            elm.baseid = elm.id;
        qsys.obj["ID"]      = elm.id;
        qsys.obj["BASEID"]  = elm.baseid;
        qsys.obj["DRAGID"]  = elm.dragid;
        qsys.obj["SENDER"]  = elm.id;
        qsys.obj["EVENT"]   = evt.type;
        qsys.obj["VALUE"]   = elm.value;            
        if (elm.onScroll) qsys.execute(elm.onScroll,elm.id);
        if (evt.type == "mousedown")
            if (qsys.lastElement != null)
			{ 	var lastElement = document.getElementById(qsys.lastElement);
                if (lastElement) 
                    if (lastElement.onblur)
                        lastElement.onblur();
                qsys.lastElement = null;
			}

        if (elm.ITEMID)  
        {   if (elm.type == "radio") 
            {   qsys.obj[elm.ITEMID] = elm.index;
                var a = 1;
                var node = document.getElementById(elm.optid + a);
                if ((elm.optid + a) == "") 
                	alert("empty");
                while(node)
                {   node.checked = true;
                	if (node.id != elm.id) 
                		node.checked = false;
                    a++;
                    if ((elm.optid + a) == "") 
                    	alert("empty");
                    node = document.getElementById(elm.optid+a);
                }                
                if (elm) elm.click();
            } 
            else 
            {   if (elm.type == "textarea")
            	{	qsys.lastElement = elm.id;
            		if (document.selection && elm.setSelectionRange != 1)
            		{	var r = document.selection.createRange().text;
						if (r.length > 0)
						{	elm.setSelectionRange = true;
							elm.selectionStart = qsys.getCursorPos(elm);
							elm.selectionEnd = elm.selectionStart + r.length;
						}
						else
							elm.setSelectionRange = false;
					}
            	}
            	if ((elm.type == "text" || elm.type == "password") && elm.typeFilter)
                {   qsys.lastElement = elm.id;
                	var typeFilter = qsys.XMLToArr(elm.typeFilter);
                    var tf = typeFilter["intTypeFilter"];
                    if (tf) 
                    {   switch(tf)
                        {   case "0": qsys.obj[elm.ITEMID] =  elm.value; break;
                            case "1": qsys.obj[elm.ITEMID] =  elm.value; break;
                            case "2":    
								var realVal = elm.value;
                                elm.onblur = function() 
                                             {  var inputStr = elm.value;
                                             	inputStr = inputStr.replace(',','.');
                                             	inputStr = inputStr.replace(/^\s+|\s+$/g, ''); 	// geen spaties vooraf
                                             	inputStr = inputStr.replace(/^[0]+/g, '');		// geen nullen vooraf
												if (inputStr.length == 0)
													inputStr = "0";
												realVal = inputStr;
                                             	if (typeof(elm.classSave) == "undefined")
													elm.classSave = elm.className;
												var inputErr = false;
                                             	if (!qsys.isNumeric(inputStr))
													inputErr = true;
												else
												{	if (typeFilter["intMinValue"])
                                        				if (Number(inputStr) < typeFilter["intMinValue"])
                                                            inputStr = typeFilter["intMinValue"];
													if (typeFilter["intMaxValue"] && (Number(typeFilter["intMaxValue"]) != 0))
														if (Number(inputStr) > typeFilter["intMaxValue"])
                                                            inputStr = typeFilter["intMaxValue"];
												}
												if (inputErr == true)
												{   if (typeFilter["intMinValue"])
												        inputStr = typeFilter["intMinValue"];
                                                    else inputStr = 0;
												}
												inputStr = parseFloat(inputStr).toFixed(Number(typeFilter["intCurDecimal"]));
                                             	if (isNaN(inputStr) == false)
												{	inputStr = inputStr.replace('.',',');
	                                         		elm.value = inputStr;
    											}
    											else
    												elm.value = 0;
                                                qsys.obj[elm.ITEMID] =  elm.value;
                                             };
                                elm.value = elm.value.replace('.',',');
                                qsys.obj[elm.ITEMID] =  realVal;
                                break;
                            case "3":    
                                elm.onblur = function() 
                                             {  if (typeof(elm.classSave) == "undefined")
													elm.classSave = elm.className;
												var inputErr = false;
                                				var pCode = elm.value;
                                				if (pCode.length >= 6)
                                				{   if (!pCode.match(/[1-9][0-9]{3} ?[a-zA-Z]{2}/))
														inputErr = true;
												}
												if (inputErr == true)
													elm.className = elm.classSave + "_error";
												else
													elm.className = elm.classSave;
											 };
                                qsys.obj[elm.ITEMID] =  elm.value;
                                break;
                            case "4":    
								var realVal = elm.value;
                                elm.onblur = function() 
                                             {  var inputStr = elm.value;
                                             	var currSym;
                                             	inputStr = inputStr.replace(',','.');
                                             	switch (typeFilter['intCurSymbol'])
                                             	{	case "0":
       	                                             	currSym = '\u20ac';
       	                                             	inputStr = inputStr.replace(currSym,'');
                                             			break;
                                             		case "1":
														currSym = '$';
       	                                             	inputStr = inputStr.replace(currSym,'');
                                             			break;
												}
                                             	inputStr = inputStr.replace(/^\s+|\s+$/g, ''); 	// geen spaties vooraf
                                             	inputStr = inputStr.replace(/^[0]+/g, '');		// geen nullen vooraf
												if (inputStr.length == 0)
													inputStr = "0";
                                             	realVal = inputStr;
                                             	if (typeof(elm.classSave) == "undefined")
													elm.classSave = elm.className;
												var inputErr = false;
                                             	if (!qsys.isNumeric(inputStr))
													inputErr = true;
												else
												{	if (typeFilter["intMinValue"])
                                        				if (Number(inputStr) < typeFilter["intMinValue"])
															inputErr = true;
													if (typeFilter["intMaxValue"] && (Number(typeFilter["intMaxValue"]) != 0))
														if (Number(inputStr) > typeFilter["intMaxValue"])
															inputErr = true;
												}
												if (inputErr == true)
													elm.className = elm.classSave + "_error";
												else
													elm.className = elm.classSave;
												inputStr = parseFloat(inputStr).toFixed(Number(typeFilter["intCurDecimal"]));
                                             	if (isNaN(inputStr) == false)
												{	inputStr = inputStr.replace('.',',');
				                                	inputStr = currSym + " " + inputStr;
                                             		elm.value = inputStr;
												}
												else
													elm.value = 0;
                                                qsys.obj[elm.ITEMID] =  elm.value;
          	                   				 };	
								elm.value = elm.value.replace('.',',');
                                qsys.obj[elm.ITEMID] =  realVal;
                                break;
                            case "9":
                                var code = 0;
                                if (window.event)
                                    code = evt.keyCode;
                                else
								{   code = evt.which;
									evt.cancelBubble;                                    
								}
                                
                                elm.onblur = function() 
											 {  if (typeof(elm.classSave) == "undefined")
													elm.classSave = elm.className;
												var inputErr = false;
												if (!qsys.checkEmail(elm.value))
													inputErr = true;
												if (inputErr == true)
													elm.className = elm.classSave + "_error";
												else
													elm.className = elm.classSave;
											 };

                                if (code == 13)
                                {   if (!qsys.checkEmail(elm.value))
                                    {   if (elm.lastValue)
                                            elm.value = elm.lastValue;
                                        else elm.value = "";
                                    } else elm.lastValue = elm.value;
                                }

                                qsys.obj[elm.ITEMID] =  elm.value;
                                break;
                            default:
                                qsys.obj[elm.ITEMID] =  elm.value;
                                break;
                        } 
                    } else {
                        qsys.obj[elm.ITEMID] =  elm.value;
                    }   
                } 
            }
            if (elm.onSubmit)
            {   var code = 0;
            	if (window.event)   //ie
                    code = evt.keyCode; 
                else                //firefox 
                {   code = evt.which; 
                    evt.cancelBubble;
                }
                if (code == 13) //|| (code == 9))
                {   if (elm.id.substring(0,2) != "__")
                        if (qsys.fnc["DBG"]) 
                            if (qsys.dbg.logFilter & 0x001) 
                                    qsys.fnc["DBG"](qsys.XMLToArr("<caption>"+evt.type + "." + elm.id + "</caption><xml>"+elm.onSubmit+"</xml>"));
                    qsys.execute(elm.onSubmit,elm.id); 
                }
            }                
            qsys.obj["ITEMID"] = elm.ITEMID;
            if (elm.onChange) 
            {   if (elm.value != qsys.obj[elm.ITEMID])
                {   qsys.obj[elm.ITEMID] = elm.value;                    
                    if (elm.id.substring(0,2) != "__")
                        if (qsys.fnc["DBG"]) 
                            if (qsys.dbg.logFilter & 0x001) 
                                qsys.fnc["DBG"](qsys.XMLToArr("<caption>"+evt.type + "." + elm.id + " " + "</caption><xml>"+elm.onChange+"</xml>"));
                    if (elm.onChange == "EditPanelbtn1")
                    {   var node = document.getElementById("EditPanelbtn1");
                        if (node.onMouseUpExe)
                            qsys.execute(node.onMouseUpExe,node.id); 
                    } else 
                    	qsys.execute(elm.onChange,elm.id); 
                }
            }
            if (elm.value != undefined) qsys.obj[elm.ITEMID] = elm.value;                    
        }             
        if (evt.type == "mousedown")
		{	if (elm.groepname)
                qsys.setClassNameForGroepname(elm.groepname,elm.id)
        }
        if (qsys.evt[qsys.obj["EVENT"]]) 
        {   if (elm.id)
                if (elm.id.substring(0,2) != "__")
                    if (qsys.fnc["DBG"]) 
                        if (qsys.dbg.logFilter & 0x001) 
                            qsys.fnc["DBG"](qsys.XMLToArr("<caption>Event:"+evt.type + "." + elm.id + " " + "</caption>"));
            qsys.evt[evt.type](evt,elm);
        }
        if (window.event)  
            window.event.returnValue = true;
        delete elm;
        return true;
    };
//----------------------------------------------------------------------------------------- 
    qsys.checkEmail = function (eMailAddress)
    {   var at="@";
		var dot=".";
		var lat=eMailAddress.indexOf(at);
		var lstr=eMailAddress.length;
		var ldot=eMailAddress.indexOf(dot);
		var lastdot=eMailAddress.lastIndexOf(dot); 
		
        // check e-mail address specifications
		if (eMailAddress.indexOf(at)==-1) return false;
		if (eMailAddress.indexOf(at)==-1 || eMailAddress.indexOf(at)==0 || eMailAddress.indexOf(at)==lstr) return false;
		if (eMailAddress.indexOf(dot)==-1 || eMailAddress.indexOf(dot)==0 || eMailAddress.indexOf(dot)==lstr) return false;
	    if (eMailAddress.indexOf(at,(lat+1))!=-1) return false;
        if (eMailAddress.substr(0, lat).length < 3) return false;
		if (eMailAddress.substring(lat-1,lat)==dot || eMailAddress.substring(lat+1,lat+2)==dot) return false;
	    if (eMailAddress.indexOf(dot,(lat+2))==-1) return false;
	    if (eMailAddress.indexOf(" ")!=-1) return false;
		if (((lstr-1) - lastdot) < 2) return false; // test@test.i    mag niet (2 minimaal)
		if (((lstr-1) - lastdot) > 4) return false; // test@test.info mag wel  (4 maximaal)
		return true;					
	};
//----------------------------------------------------------------------------------------- 
    qsys.isNumeric = function (str)
    {   //  check for valid numeric strings	
        var strValidChars = "0123456789.-";
        var strChar;
        var blnResult = true;
    	var dotCnt = 0;
    	
        for (var i = 0; i < str.length && blnResult == true; i++)
        {   strChar = str.charAt(i);
            if (strValidChars.indexOf(strChar) == -1)
            	blnResult = false;
        	if (strChar == '.')
        	{	dotCnt++;
        		if (dotCnt > 1)
        			blnResult = false;
        	}
        	if ((strChar == '-') && (i != 0))
        		blnResult = false;
        }
        return blnResult;
    };
//----------------------------------------------------------------------------------------- 
    qsys.selectTableRow = function (id,row,normalClass,selectedClass)
    {   var divNode = document.getElementById(id);
        if (divNode)
        {   if (normalClass != "") divNode.normalClass = normalClass;
            if (selectedClass != "") divNode.selectedClass = selectedClass;
            if (divNode.selectedRow)
            {   var rowNode = document.getElementById(id+"_"+divNode.selectedRow);
                if (rowNode)
                    rowNode.className = divNode.normalClass;
            }   
            divNode.selectedRow = row;
            if (divNode.selectedRow)
            {   var rowNode = document.getElementById(id+"_"+divNode.selectedRow);
                if (rowNode)
                    rowNode.className = divNode.selectedClass;
            }   
        }
    };
    qsys.getCursorPos = function (node) 
	{  	var cPos = 0;
		if (node.selectionStart)
    		return node.selectionStart;
  		if (document.selection) 
  		{	node.focus();
    		var r = document.selection.createRange();
    		if (r == null) 
      			return cPos;
    		var re = node.createTextRange();
    		var rc = re.duplicate();
    		re.moveToBookmark(r.getBookmark());
    		rc.setEndPoint('EndToStart', re);
			cPos = rc.text.length;
  		} 
  		return cPos;

//    	if (node.createTextRange) {
//            var r = document.selection.createRange().duplicate();
//            r.moveEnd('character', node.value.length);
//            if (r.text == '') 
//            	return node.value.length;
//            return node.value.lastIndexOf(r.text);
//        } else return node.selectionStart;
    };
//----------------------------------------------------------------------------------------- 
    window.onresize = function()
    {   if (typeof( window.innerWidth ) == 'number') 
        {   qsys.obj["WND_WIDTH"]   = window.innerWidth;
            qsys.obj["WND_HEIGHT"]  = window.innerHeight;
        } else if ((document.documentElement) && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
        {   qsys.obj["WND_WIDTH"]   = document.documentElement.clientWidth;
            qsys.obj["WND_HEIGHT"]  = document.documentElement.clientHeight;
        } else if ((document.body) && (document.body.clientWidth || document.body.clientHeight)) 
        {   qsys.obj["WND_WIDTH"]   = document.body.clientWidth;
            qsys.obj["WND_HEIGHT"]  = document.body.clientHeight;
        }
         var cd = document.getElementById(qsys.coredivId);
        if (cd)
        {   if (cd.style.width) 
                qsys.obj["CD_WIDTH"] = cd.style.width.substring(0,cd.style.width.length-2);
            else 
            {   qsys.obj["CD_WIDTH"] = qsys.obj["WND_WIDTH"];
                qsys.obj["CD_FOLLOW_SCRN_WIDTH"] = true;
            }
            if (cd.style.height) 
                qsys.obj["CD_HEIGHT"] = cd.style.height.substring(0,cd.style.height.length-2);
            else 
            {   qsys.obj["CD_HEIGHT"] = qsys.obj["WND_HEIGHT"];
                qsys.obj["CD_FOLLOW_WND_HEIGHT"] = true;
            }            
            if (qsys.obj["CD_FOLLOW_WND_WIDTH"]) 
                qsys.obj["CD_WIDTH"] = qsys.obj["WND_WIDTH"];
            if (qsys.obj["CD_FOLLOW_WND_HEIGHT"]) 
                qsys.obj["CD_HEIGHT"] = qsys.obj["WND_HEIGHT"];

    		cd.style.position = "absolute";
            cd.style.overflow = "auto";

            if ((qsys.div.resizeRecursive) && (qsys.obj["CD_FOLLOW_WND_WIDTH"]) && (qsys.obj["CD_FOLLOW_WND_HEIGHT"]))
            {   cd.deltaLeft    = 0; 
                cd.deltaTop     = 0;
                cd.borderWidth  = 0;
                cd.deltaWidth   = qsys.obj["CD_WIDTH"] - cd.width;
                cd.deltaHeight  = qsys.obj["CD_HEIGHT"] - cd.height;
//                qsys.div.resizeRecursive(cd,true);
            } 
            else 
            {   cd.left         = 0;
                cd.top          = 0;
                cd.width        = qsys.obj["CD_WIDTH"];
                cd.height       = qsys.obj["CD_HEIGHT"];
                cd.innerWidth   = qsys.obj["CD_WIDTH"];
                cd.innerHeight  = qsys.obj["CD_HEIGHT"];
                cd.style.width  = qsys.obj["CD_WIDTH"]+"px";
                cd.style.height = qsys.obj["CD_HEIGHT"]+"px";
                cd.slaveLeft    = 0;
                cd.slaveTop     = 0;
                cd.slaveRight   = 0;
                cd.slaveBottom  = 0;
                cd.minWidth     = 0;
                cd.minHeight    = 0;
            }
        }
        delete cd;
    };
//----------------------------------------------------------------------------------------- 
//---------------------------------------------------------------------------------------------------------------------
    qsys.div                                                = new Array();
    qsys.div.creationIndex                                  = 0;
    document.getElementById(qsys.coredivId).creationIndex   = qsys.div.creationIndex++;
//---------------------------------------------------------------------------------------------------------------------        
    function append(a, b ) 
    {   var k = a.length; 
        for(var i = 0 ;i < b.length; i++) 
            a[k++] = b[i];  
        return a; 
    };
//---------------------------------------------------------------------------------------------------------------------
    function getAllElementsIn(elm)
    {   var items   = new Array;
        var k       = 0;
        var divs    = elm.getElementsByTagName("DIV");
        for(var i = 0 ;i < divs.length; i++) 
            if (divs[i].baseid == elm.id) 
                items[k++] = divs[i];
        var inps = elm.getElementsByTagName("INPUT");
        for(var i = 0 ;i < inps.length; i++) 
            if (inps[i].baseid == elm.id) 
                items[k++] = inps[i];
        var sels = elm.getElementsByTagName("SELECT");
        for(var i = 0 ;i < sels.length; i++) 
            if (sels[i].baseid == elm.id) 
                items[k++] = sels[i];
        var tares = elm.getElementsByTagName("TEXTAREA");
        for(var i = 0 ;i < tares.length; i++) 
            if (tares[i].baseid == elm.id) 
                items[k++] = tares[i];
        delete k;
        delete i;
        delete divs;
        delete inps;
        delete sels;
        delete tares;
        return items;
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.div.setCoord = function(node,coord)
    {   if (!qsys.obj["BASEDIV"]) alert("empty1");
        var bd  = document.getElementById(qsys.obj["BASEDIV"]);
        if (!coord["ALIGN"])    coord["ALIGN"]  = "CUSTOM";
        if (!coord["ZINDEX"])   coord["ZINDEX"] = "TOP";
        if (!coord["BORDER"])   coord["BORDER"] = 0;
        if (!coord["LEFT"])     if (node.left) coord["LEFT"]   = node.left;
        if (!coord["TOP"])      if (node.top) coord["TOP"]    = node.top;
        if (!coord["WIDTH"])    coord["WIDTH"] = node.width;
        if (!coord["HEIGHT"])   coord["HEIGHT"] = node.height;
        if (!bd.slaveLeft)      bd.slaveLeft    = 0;
        if (!bd.slaveRight)     bd.slaveRight   = 0;
        if (!bd.slaveTop)       bd.slaveTop     = 0;
        if (!bd.slaveBottom)    bd.slaveBottom  = 0;
        if (!node.minWidth) node.minWidth = 0;
        if (!node.minHeight) node.minHeight = 0;
        node.borderWidth    = Number(coord["BORDER"]) * 2;
        node.alignment      = coord["ALIGN"];
        switch (node.alignment)
        {   case "LEFT": 
                if (!coord["WIDTH"]) coord["WIDTH"] = coord["SIZE"]; 
                coord["LEFT"]   = bd.slaveLeft;
                bd.slaveLeft    += Number(coord["WIDTH"]);
                coord["TOP"]    = bd.slaveTop;
                coord["HEIGHT"] = bd.innerHeight - bd.slaveTop - bd.slaveBottom;
                break;
            case "RIGHT": 
                if (!coord["WIDTH"]) coord["WIDTH"] = coord["SIZE"]; 
                bd.slaveRight   += Number(coord["WIDTH"]);
                coord["LEFT"]   = bd.innerWidth - bd.slaveRight;
                coord["TOP"]    = bd.slaveTop;
                coord["HEIGHT"] = bd.innerHeight - bd.slaveTop - bd.slaveBottom;
                break;
            case "TOP": 
                if (!coord["HEIGHT"]) coord["HEIGHT"] = coord["SIZE"]; 
                coord["TOP"]    = bd.slaveTop;
                bd.slaveTop     += Number(coord["HEIGHT"]);
                coord["LEFT"]   = bd.slaveLeft;
                if (!coord["WIDTH"]) 
                    coord["WIDTH"]  = bd.innerWidth - bd.slaveLeft - bd.slaveRight;
                break;
            case "BOTTOM": 
                if (!coord["HEIGHT"]) coord["HEIGHT"] = coord["SIZE"]; 
                bd.slaveBottom  += Number(coord["HEIGHT"]);
                coord["TOP"]    = bd.innerHeight - bd.slaveBottom;
                coord["LEFT"]   = bd.slaveLeft;
                if (!coord["WIDTH"]) 
                    coord["WIDTH"]  = bd.innerWidth - bd.slaveLeft - bd.slaveRight;
                break;
            case "CUSTOM":
                node.minLeft    = Number(coord["LEFT"]);
                node.minTop     = Number(coord["TOP"]);
                break;
            case "CLIENT":
                coord["LEFT"]   = bd.slaveLeft;
                coord["WIDTH"]  = bd.innerWidth - bd.slaveLeft - bd.slaveRight;
                coord["TOP"]    = bd.slaveTop;
                if (coord["WIDTHOFFSET"])  coord["WIDTH"] -= coord["WIDTHOFFSET"];
                coord["HEIGHT"] = bd.innerHeight - bd.slaveTop - bd.slaveBottom;
                if (coord["HEIGHTOFFSET"])  coord["HEIGHT"] -= coord["HEIGHTOFFSET"];
                break;
            case "CENTER":
                if (coord["HEIGHT"] == 9999)   coord["HEIGHT"] = bd.height;
                coord["LEFT"]   = (bd.innerWidth - coord["WIDTH"])/2;
                coord["TOP"]   = (bd.innerHeight - coord["HEIGHT"])/2;
                if (coord["TOP"]<0) coord["TOP"] = 0;
                if (coord["LEFT"]<0) coord["LEFT"] = 0;
                break;
            case "ALL":
                coord["LEFT"]   = 0;
                coord["TOP"]    = 0;
                coord["WIDTH"]  = bd.width;
                coord["HEIGHT"] = bd.height;
                break;
            case "MOUSE":
				var width = coord["WIDTH"];
				var height = coord["HEIGHT"];
                if (!coord["WIDTH"])  
                	width = 200;
                if (!coord["HEIGHT"]) 
                	height = 40;
                if ((Number(qsys.obj["MOUSEX"]) + Number(width)) < Number(qsys.obj["CD_WIDTH"])) 
                    coord["LEFT"]   = qsys.obj["MOUSEX"] + 8;
                else coord["LEFT"]  = qsys.obj["MOUSEX"] - width-8;
                if ((Number(qsys.obj["MOUSEY"]) + Number(height)) < Number(qsys.obj["CD_HEIGHT"]))
                    coord["TOP"]    = qsys.obj["MOUSEY"] + 8;
                else coord["TOP"]   = qsys.obj["MOUSEY"] - height-8;
                break;            
        }
        node.style.position = "ABSOLUTE";       
        node.left           = Number(coord["LEFT"]); 
        node.style.left     = coord["LEFT"]+"px";
        node.top            = Number(coord["TOP"]); 
        node.style.top      = coord["TOP"]+"px";

        if (coord["HEIGHT"])
        {   node.height         = Number(coord["HEIGHT"]); 
            node.innerHeight    = Number(coord["HEIGHT"]) - node.borderWidth; 
            node.style.height   = node.innerHeight + "px"; 
        }
        if (coord["WIDTH"])
        {   node.width          = Number(coord["WIDTH"]); 
            node.innerWidth     = Number(coord["WIDTH"]) - node.borderWidth; 
            node.style.width    = node.innerWidth + "px"; 
        }                
        if (!qsys.div.topIndex) 
            qsys.div.topIndex = 0;
        if (coord["ZINDEX"] == "TOP") 
            coord["ZINDEX"] = qsys.div.topIndex++;
        node.zindex         = Number(coord["ZINDEX"]); 
        node.style.zIndex   = coord["ZINDEX"];
        delete bd;
    };
//--------------------------------------------------------------------------------
    qsys.div.initResize = function(node,resizeXML)
    {   if (resizeXML.substring(0,1) != "<") 
            return;
        var resizePara  = qsys.XMLToArr(resizeXML);			
        node.save   	= resizePara["SAVE"];
        var dragMode    = resizePara["MODE"];
        if (!dragMode) 
            dragMode = "none";
        var dragXML = "";
        if (resizePara["BORDER"])       dragXML += qsys.toXML("BORDER",resizePara["BORDER"]);
        if (resizePara["className"])    dragXML += qsys.toXML("className",resizePara["className"]);
        if (resizePara["OPACITY"])      dragXML += qsys.toXML("OPACITY",resizePara["OPACITY"]);
        var coord = new Array();
        for(var resizeId in resizePara)
        {   var dragDivWidth    = Number(resizePara[resizeId]);
            coord["LEFT"]   = 0;
            coord["TOP"]    = 0;
            coord["WIDTH"]  = 0;
            coord["HEIGHT"] = 0;
            coord["ZINDEX"] = qsys.div.topIndex+100;
            var cursor      = "";
            var style       = "";
            var coordOk     = true;
            switch (resizeId)
            {   case "LEFT": 
                    coord["TOP"]    = dragDivWidth; 
                    coord["LEFT"]   = 0; 
                    coord["HEIGHT"] = node.innerHeight - (2 * dragDivWidth); 
                    coord["WIDTH"]  = dragDivWidth; 
                    cursor          = "W-RESIZE"; 
                    style           = "left";
                    break;	
                case "RIGHT": 
                    coord["TOP"]    = dragDivWidth; 
                    coord["LEFT"]   = node.innerWidth-dragDivWidth; 
                    coord["HEIGHT"] = node.innerHeight - (2*dragDivWidth); 
                    coord["WIDTH"]  = dragDivWidth; 
                    cursor          = "E-RESIZE"; 
                    style           = "right";
                    break;	
                case "TOP": 
                    coord["TOP"]    = 0; 
                    coord["LEFT"]   = dragDivWidth; 
                    coord["HEIGHT"] = dragDivWidth; 
                    coord["WIDTH"]  = node.innerWidth - (2*dragDivWidth); 
                    cursor          = "N-RESIZE"; 
                    style           = "top";
                    break;	
                case "BOTTOM": 
                    coord["LEFT"]   = dragDivWidth; 
                    coord["TOP"]    = node.innerHeight - dragDivWidth; 
                    coord["HEIGHT"] = dragDivWidth; 
                    coord["WIDTH"]  = node.innerWidth - (2*dragDivWidth);  
                    cursor          = "S-RESIZE"; 
                    style           = "bottom";
                    break;	
                case "TOPLEFT": 
                    coord["TOP"]    = 0; 
                    coord["LEFT"]   = 0; 
                    coord["HEIGHT"] = dragDivWidth; 
                    coord["WIDTH"]  = dragDivWidth;  
                    cursor          = "NW-RESIZE"; 
                    style           = "topleft";
                    break;	
                case "TOPRIGHT": 
                    coord["TOP"]    = 0; 
                    coord["LEFT"]   = node.innerWidth - dragDivWidth; 
                    coord["HEIGHT"] = dragDivWidth; 
                    coord["WIDTH"]  = dragDivWidth;  
                    cursor          = "NE-RESIZE"; 
                    style           = "topright";
                    break;
                case "BOTTOMLEFT": 
                    coord["LEFT"]   = 0; 
                    coord["TOP"]    = node.innerHeight - dragDivWidth; 
                    coord["HEIGHT"] = dragDivWidth; 
                    coord["WIDTH"]  = dragDivWidth;  
                    cursor          = "SW-RESIZE"; 
                    style           = "bottomleft";
                    break;	
                case "BOTTOMRIGHT":	
                    coord["LEFT"]   = node.innerWidth - dragDivWidth; 
                    coord["TOP"]    = node.innerHeight - dragDivWidth;	
                    coord["HEIGHT"] = dragDivWidth; 
                    coord["WIDTH"]  = dragDivWidth;  
                    cursor          = "SE-RESIZE"; 
                    style           = "bottomright";
                    break;	
                case "DRAG":
                    coordOk = false;
                    node.dragid         = resizePara[resizeId]; 
                    node.dragLeftStart  = 0;
                    node.dragTopStart   = 0;
                    node.dragActive     = false;
                    node.dragXML        = dragXML;
                    node.dragMode       = dragMode;
                    node.style.cursor   = "MOVE";
                    node.dragDisableX   = false;
                    node.dragDisableY   = false;
                    break;	
                case "DRAGX":
                    var p =             qsys.XMLToArr(resizePara[resizeId]);			
                    coordOk = false;
                    if (p["items"])
                        node.dragid     = qsys.XMLToArr(p["items"]); 
                    else
                        node.dragd      = node.id;
                    node.dragLeftStart  = 0;
                    node.dragTopStart   = 0;
                    if (p["min"])
                        node.dragMinX    = Number(p["min"]);
                    if (p["max"])
                        node.dragMaxX    = Number(p["max"]);
                    node.dragActive     = false;
                    node.dragXML        = dragXML;
                    node.dragMode       = dragMode;
                    node.style.cursor   = "MOVE";
                    node.dragDisableY   = true;
                    node.disableToFront = true;
//                    node.dragJmpBack     = true;
                    node.dragMinMaxEnableX = true;
                    if (p["onScroll"]) node.dragOnMouseMove = p["onScroll"];
                    break;	
                case "DRAGY":
                    var p =             qsys.XMLToArr(resizePara[resizeId]);			
                    coordOk = false;
                    if (p["items"])
                        node.dragid     = qsys.XMLToArr(p["items"]); 
                    else 
                        node.dragid     = node.id;
                    node.dragLeftStart  = 0;
                    node.dragTopStart   = 0;
                    if (p["min"])
                        node.dragMinY   = Number(p["min"]);
                    if (p["max"])
                        node.dragMaxY   = Number(p["max"]);
                    node.dragActive     = false;
                    node.dragXML        = dragXML;
                    node.dragMode       = dragMode;
                    node.style.cursor   = "MOVE";
                    node.dragDisableX   = true;
                    node.disableToFront = true;
//                    node.dragJmpBack     = true;
                    node.dragMinMaxEnableY = true;
                    if (p["onScroll"]) node.dragOnMouseMove = p["onScroll"];
                    break;	
                case "DRAGXY":
                    var p =             qsys.XMLToArr(resizePara[resizeId]);			
                    coordOk = false;
                    if (p["items"])
                        node.dragid     = qsys.XMLToArr(p["items"]); 
                    else 
                        node.dragid     = node.id;
                    node.dragLeftStart  = 0;
                    node.dragTopStart   = 0;
                    if (p["minX"])
                        node.dragMinX   = Number(p["minX"]);
                    if (p["maxX"])
                        node.dragMaxX   = Number(p["maxX"]);
                    if (p["minY"])
                        node.dragMinY   = Number(p["minY"]);
                    if (p["maxY"])
                        node.dragMaxY   = Number(p["maxY"]);
                    node.dragActive     = false;
                    node.dragXML        = dragXML;
                    node.dragMode       = dragMode;
                    node.style.cursor   = "MOVE";
                    node.disableToFront = true;
//                    node.dragJmpBack     = true;
                    node.dragMinMaxEnableY = true;
                    node.dragMinMaxEnableX = true;
                    if (p["onScroll"]) node.dragOnMouseMove = p["onScroll"];
                    break;
                default: 
                    coordOk = false;
            }
            if (coordOk)
            {	var znode = document.createElement("DIV");
                node.appendChild(znode);
                znode.id                    = node.id + resizeId + "RESIZE";
                znode.dragid                = znode.baseid = node.id;
                znode.dragResize            = resizeId;
                znode.dragTopStart          = znode.dragLeftStart = 0;

                znode.style.position = "ABSOLUTE";       
                znode.left           = coord["LEFT"];
                znode.top            = coord["TOP"];
                znode.height         = coord["HEIGHT"];
                znode.width          = coord["WIDTH"];
                znode.style.left     = coord["LEFT"]+"px";
                znode.style.top      = coord["TOP"]+"px";
                znode.style.height   = Number(coord["HEIGHT"]) + "px"; 
                znode.style.width    = Number(coord["WIDTH"]) + "px"; 
                znode.style.zindex   = 99999;                
                znode.dragActive     = false;
                znode.className      = "_qsys_drag"+style;
                qsys.setEvent(znode, "onmousedown");
                znode.style.cursor   = cursor;
                znode.opacity        = 50;
                znode.style.filter   = "progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
                znode.style.opacity  = 50 /100;           
                znode.dragXML        = dragXML;
                znode.dragMode       = dragMode;
            }
        }
        delete znode;
        delete coord;
        delete cursor;
        delete dragDivWidth;
        delete coordOk;
        delete resizePara;
        delete dragXML;
        delete dragMode;
        delete resizeId;
    };
//---------------------------------------------------------------------------------------------------------------------
	qsys.div.getStyleValue = function(styleStr)
	{	var pxPos = styleStr.indexOf("px");
		var value = styleStr;
		if (pxPos != -1)
			value = styleStr.substring(0, styleStr.indexOf("px"));
		if (qsys.isNumeric(value))
			return Number(value);
		return Number(0);
	};
//---------------------------------------------------------------------------------------------------------------------
    qsys.div.resizeRecursive = function(baseNode,Definite)
    {   var items       = getAllElementsIn(baseNode);
        var coord       = new Array();    
        coord["WIDTH"]  = Number(baseNode.width) + baseNode.deltaWidth;
        coord["HEIGHT"] = Number(baseNode.height) +	baseNode.deltaHeight;
        coord["LEFT"]   = Number(baseNode.left) + baseNode.deltaLeft;
        coord["TOP"]    = Number(baseNode.top) + baseNode.deltaTop;
        if (coord["WIDTH"] < baseNode.minWidth)
        {   baseNode.deltaWidth += baseNode.minWidth - coord["WIDTH"];
            if (baseNode.deltaLeft) 
                coord["LEFT"] = baseNode.left - baseNode.deltaWidth;
            else 
                coord["LEFT"] = baseNode.left;
            coord["WIDTH"] = baseNode.minWidth;
        }
        if (coord["HEIGHT"] < baseNode.minHeight)
        {   baseNode.deltaHeight += baseNode.minHeight - coord["HEIGHT"];
            if (baseNode.deltaTop) 
                coord["TOP"] = baseNode.top - baseNode.deltaHeight;
            else 
                coord["TOP"] = baseNode.top;
            coord["HEIGHT"] = baseNode.minHeight;
        }

        baseNode.style.left		= coord["LEFT"] + "px";
        baseNode.style.top		= coord["TOP"] + "px";
        baseNode.style.width	= (coord["WIDTH"] - baseNode.borderWidth) + "px"; 
        baseNode.style.height	= (coord["HEIGHT"] - baseNode.borderWidth) + "px"; 

        if(Definite)
        {	baseNode.left		    = coord["LEFT"];
            baseNode.top		    = coord["TOP"];
            baseNode.width	        = coord["WIDTH"];
            baseNode.height	        = coord["HEIGHT"];
            baseNode.innerWidth	    = coord["WIDTH"] - baseNode.borderWidth;
            baseNode.innerHeight	= coord["HEIGHT"] - baseNode.borderWidth;
        }	
        for(var key in items)
        {   if (node = items[key])
            {   switch (node.id.substring(baseNode.id.length,node.id.length))
                {   case "LEFTRESIZE":
                        node.style.height = node.height + baseNode.deltaHeight + "px";
                        if(Definite == true) 
                            node.height += baseNode.deltaHeight;
                        break;
                    case "RIGHTRESIZE":
                        node.style.height   = node.height + baseNode.deltaHeight + "px";
                        node.style.left     = node.left + baseNode.deltaWidth + "px";
                        if(Definite == true) 
                        {	node.height += baseNode.deltaHeight;
                            node.left   += baseNode.deltaWidth;
                        }
                        break;
                    case "TOPRESIZE":	
                        node.style.width = node.width + baseNode.deltaWidth + "px";
                        if(Definite == true) 
                            node.width += baseNode.deltaWidth;
                        break;
                    case "BOTTOMRESIZE":
                        node.style.top      = node.top + baseNode.deltaHeight + "px";
                        node.style.width    = node.width + baseNode.deltaWidth + "px";
                        if(Definite == true) 
                        {	node.width  += baseNode.deltaWidth; 
                            node.top    += baseNode.deltaHeight; 
                        }
                        break;
                    case "TOPLEFTRESIZE":
                        break;
                    case "TOPRIGHTRESIZE":
                        node.style.left = node.left + baseNode.deltaWidth + "px";
                        if(Definite == true) 
                            node.left   += baseNode.deltaWidth;
                        break;
                    case "BOTTOMLEFTRESIZE":
                        node.style.top = node.top + baseNode.deltaHeight + "px";
                        if(Definite == true) 
                            node.top    += baseNode.deltaHeight; 
                        break;				
                    case "BOTTOMRIGHTRESIZE":
                        node.style.top  = node.top + baseNode.deltaHeight + "px";
                        node.style.left = node.left + baseNode.deltaWidth + "px";
                        if(Definite == true) 
                        {   node.left   += baseNode.deltaWidth; 
                            node.top    += baseNode.deltaHeight; 
                        }
                        break;
                    default:
                        if (node.alignment)
                        {   if (node.alignment != "CUSTOM")
                            {   node.deltaLeft = 0; node.deltaTop = 0; node.deltaHeight = 0; node.deltaWidth = 0;					
                                switch (node.alignment)
                                {   case "LEFT": 
                                        node.deltaHeight    = baseNode.deltaHeight; 
                                        node.deltaRight     = baseNode.deltaWidth; 
                                        break;
                                    case "RIGHT": 
                                        node.deltaHeight    = baseNode.deltaHeight; 
                                        node.deltaLeft      = baseNode.deltaWidth; 
                                        break;
                                    case "BOTTOM": 
                                        node.deltaWidth     = baseNode.deltaWidth; 
                                        node.deltaTop       = baseNode.deltaHeight; 
                                        break;
                                    case "TOP": 
                                        node.deltaWidth     = baseNode.deltaWidth; 
                                        node.deltaBottom    = baseNode.deltaHeight; 
                                        break;
                                    case "CUSTOM": 
                                    case "CLIENT": 
                                        node.deltaHeight    = baseNode.deltaHeight; 
                                        node.deltaWidth     = baseNode.deltaWidth; 
                                        break;
                                    default:
                                }
                                qsys.div.resizeRecursive(node,Definite);				
                            }
                        }
                }
            }
        }
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.div.resize = function(baseNode,Definite)
    {   var Parentnode=document.getElementById(baseNode.baseid);
        qsys.div.resizeRecursive(baseNode,Definite);
        if(!Parentnode) 
            return;
        var node = null;
        var items = getAllElementsIn(Parentnode);
        for(var nodeId in items)
        {   if (node = items[nodeId])
            {   if ((node.alignment == baseNode.alignment) || (node.alignment == "CLIENT"))
                {   if (node.baseid == baseNode.baseid)
                    {   if(node.id != baseNode.id)
                        {   if (node.alignment == "CLIENT")
                            {   switch (baseNode.alignment)
                                {   case "LEFT": 
                                        node.deltaLeft      = baseNode.deltaWidth; 
                                    case "RIGHT": 
                                        node.deltaWidth     = baseNode.deltaWidth*-1; 
                                        node.deltaTop       = 0; 
                                        node.deltaHeight    = 0;
                                        qsys.div.resizeRecursive(node,Definite);				
                                        break;
                                    case "TOP": 
                                    case "BOTTOM": 
                                        node.deltaLeft      = 0;
                                        node.deltaWidth     = 0; 
                                        node.deltaTop       = baseNode.deltaHeight;  
                                        node.deltaHeight    = baseNode.deltaHeight*-1;  
                                        qsys.div.resizeRecursive(node,Definite);				
                                        break;
                                }
                            } 
                            else 
                            {   switch (baseNode.alignment)
                                {   case "LEFT": 
                                        if (node.left > baseNode.left) 
                                        {   node.deltaLeft      = baseNode.deltaWidth; 
                                            node.deltaTop       = 0; 
                                            node.deltaWidth     = 0; 
                                            node.deltaHeight    = 0;
                                            qsys.div.resizeRecursive(node,Definite);				
                                        }
                                        break;
                                    case "RIGHT": 
                                        if ((node.left < baseNode.left) || (node.alignment == "CLIENT"))
                                        {	node.deltaLeft      = 0 - baseNode.deltaWidth; 
                                            node.deltaTop       = 0; 
                                            node.deltaWidth     = 0; 
                                            node.deltaHeight    = 0;
                                            qsys.div.resizeRecursive(node,Definite);				
                                        }
                                        break;
                                    case "TOP": 
                                        if ((node.top > baseNode.top) || (node.alignment == "CLIENT"))
                                        {	node.deltaTop       = baseNode.deltaHeight; 
                                            node.deltaLeft      = 0; 
                                            node.deltaWidth     = 0; 
                                            node.deltaHeight    = 0;
                                            qsys.div.resizeRecursive(node,Definite);				
                                        }
                                        break;
                                    case "BOTTOM": 
                                        if ((node.top < baseNode.top) || (node.alignment == "CLIENT"))
                                        {	node.deltaTop       = 0 - baseNode.deltaHeight; 
                                            node.deltaLeft      = 0; 
                                            node.deltaWidth     = 0; 
                                            node.deltaHeight    = 0;
                                            qsys.div.resizeRecursive(node,Definite);				
                                        }
                                        break;
                                }   
                            }
                        }
                    }
                }
            }
        }
    };
//--------------------------------------------------------------------------------
    qsys.div.calcMinSize = function(node)
    {   var item = 0;
    	var items = 0;
        var totWidth = 0;
        items = getAllElementsIn(node);         
        if (node.borderWidth)
            totWidth = node.borderWidth;
        if(node.minWidth == 0)
        {   for(item in items)
            {   var w = items[item];
                if (w)
                    switch(w.alignment)
                    {   case "TOP": 
                        case "BOTTOM":
                            qsys.div.calcMinSize(w);
                            if (w.minWidth > node.minWidth) 
                                node.minWidth = w.minWidth;
                            break;
                        case "CLIENT":
                            qsys. div.calcMinSize(w);
                        case "LEFT":
                        case "RIGHT":
                            totWidth += w.minWidth;
                            break;
                    }
            }
            delete item;
        }
        if (totWidth > node.minWidth)  
            node.minWidth = totWidth;
        var totHeight = 0;
        if (node.borderWidth)
            totHeight += node.borderWidth;
        if(node.minHeight == 0)
        {   for(item in items)
            {   var r = items[item];
                if (r)
                {   switch(r.alignment)
                    {   case "LEFT":
                        case "RIGHT":
                            qsys.div.calcMinSize(r);
                            if (r.minHeight > node.minHeight) 
                                node.minHeight = r.minHeight;
                            break;
                        case "CLIENT":
                            qsys.div.calcMinSize(r);
                        case "TOP":
                        case "BOTTOM":
                            totHeight += r.minHeight;
                            break;                            
                    }
                }
            }
            delete item;
        }
        if (totHeight > node.minHeight) 
             node.minHeight = totHeight ;
        delete item;
    };
//--------------------------------------------------------------------------------
    qsys.div.dragStart = function(elm,dragnodeId)
    {   if (dragnodeId.substring(0,1) == "~") dragnodeId = dragnodeId.substring(1,dragnodeId.length);
        var dragnode = document.getElementById(dragnodeId);
        qsys.div.calcMinSize(dragnode);
        dragnode.deltaLeft = 0; dragnode.deltaTop = 0; dragnode.deltaWidth = 0; dragnode.deltaHeight = 0;
        if (elm.disableToFront != true)
        {   dragnode.style.zIndex = qsys.div.topIndex;
            dragnode.zindex = qsys.div.topIndex++;
        }
        // Check for 'GHOST' drag
        switch (elm.dragMode)
        {   case "ghost":
                if (qsys.fnc["DIV"])
                {   var draghost = new Array();
                    var coord    = new Array();
                    var innerArr = qsys.XMLToArr(elm.dragXML);	
                    var left     = dragnode.left;
                    var top      = dragnode.top;
                    var bn       = document.getElementById(dragnode.baseid);
                    while (bn)
                    {   left    += bn.left;
                        top     += bn.top;
                        bn      = document.getElementById(bn.baseid);
                    }
                    coord["ALIGN"]  = "CUSTOM";
                    coord["LEFT"]   = left;
                    coord["TOP"]    = top;
                    coord["WIDTH"]  = dragnode.width;
                    coord["HEIGHT"] = dragnode.height;
                    coord["ZINDEX"] = qsys.div.topIndex + 100;
                    if (innerArr["BORDER"])
                        coord["BORDER"] = innerArr["BORDER"];
                    draghost["ID"]          = "__DRAGGHOST";
                    draghost["COORD"]       = qsys.arrToXML(coord);
                    delete bn;
                    delete left;
                    delete top;
                    delete coord;
                    draghost["className"] = "_qsys_ghostdiv";
                    if (innerArr["className"])
                        draghost["className"] = innerArr["className"];
                    if (innerArr["OPACITY"])
                        draghost["OPACITY"] = innerArr["OPACITY"];
                    qsys.obj["BASEDIV"]     = "corediv";
                    qsys.fnc["DIV"](draghost);
                    delete innerArr;
                    delete draghost;
                    draghost = document.getElementById("__DRAGGHOST");
                    draghost.minWidth = dragnode.minWidth;
                    draghost.minHeight = dragnode.minHeight;
                    draghost.style.cursor = elm.style.cursor;
                    delete draghost;
                }
                break;
            default:
        }
        qsys.div.dragGetChildCoords(dragnode);
  		var node = document.getElementById("MenuPanelfooter");
        if (node) node.innerHTML = "x:"+dragnode.style.left+" y:"+dragnode.style.top+" w:"+dragnode.style.width+" h:"+dragnode.style.height; 
        qsys.setEvent(document, "onmousemove");         	  
        return;
    };
//--------------------------------------------------------------------------------
	qsys.div.dragGetChildCoords = function(dragnodeId)
	{	var parent = document.getElementById(dragnodeId.baseid);
		if (parent)
		{	var items = getAllElementsIn(parent);
			var node;
			qsys.objcrd = [];
			qsys.objcrd["parent"] = parent;
			for(var key in items)
			{   if (node = items[key])
				{ 	if (node.className.indexOf("_qsys_drag") == -1 && node.className.indexOf("_qsys_ctrl") == -1)
					{	if ((node.parentNode.id == parent.id) && (dragnodeId.id != node.id))
						{	qsys.objcrd[key] = Array();
							var left 	= qsys.div.getStyleValue(node.style.left);
							var top 	= qsys.div.getStyleValue(node.style.top);
							var width 	= qsys.div.getStyleValue(node.style.width);
							var height 	= qsys.div.getStyleValue(node.style.height);
							qsys.objcrd[key]["left"] = left;
							qsys.objcrd[key]["top"] = top;
							qsys.objcrd[key]["right"] = (left + width + 1);
							qsys.objcrd[key]["bottom"] = (top + height + 1);
						}
					}
				}
			}
			var coords = "";
			for(var item in qsys.objcrd)
			{	coords += "L: " + qsys.objcrd[item]["left"] + ",";
				coords += "T: " + qsys.objcrd[item]["top"] + ",";
				coords += "R: " + qsys.objcrd[item]["right"] + ",";
				coords += "B: " + qsys.objcrd[item]["bottom"] + "\r\n";
			}
			//alert(coords);
		}
	};
//--------------------------------------------------------------------------------
    qsys.div.dragError = function(elm,dragnodeId)
    {   if (dragnodeId.substring(0,1) == "~") dragnodeId = dragnodeId.substring(1,dragnodeId.length);
        var dragnode = document.getElementById(dragnodeId);
        if (dragnode)
        {   dragnode.deltaLeft      = 0; 
            dragnode.deltaTop       = 0; 
            dragnode.deltaWidth     = 0; 
            dragnode.deltaHeight    = 0;
            qsys.div.resize(dragnode,true);
        }
        qsys.clrEvent(document, "onmousemove");         	  
        elm.dragActive = false;
        // Check for 'GHOST' drag
        if (elm.dragMode == "ghost")
            qsys.del["DIV"]("__DRAGGHOST");
    };
//--------------------------------------------------------------------------------            
	qsys.div.createRuler = function(orientation, rulerId, rulerPos)
	{	var ruler = document.getElementById(rulerId);
        if (ruler) qsys.div.removeRuler(rulerId);
		ruler = document.createElement('div');
   		ruler.setAttribute('id', rulerId);
		ruler.style.position = "absolute";
		switch (orientation)
		{	case "Vertical":
				ruler.style.left = rulerPos +"px";
				ruler.style.top = "0px";
				ruler.style.height = (qsys.div.getStyleValue(qsys.objcrd["parent"].style.height) - 2) + "px";
				ruler.style.width = "1px";
				ruler.className = "_qsys_vruler";
				break;
			case "Horizontal":
				ruler.style.left = "0px";
				ruler.style.top = rulerPos + "px";
				ruler.style.height = "1px";
				ruler.style.width = (qsys.div.getStyleValue(qsys.objcrd["parent"].style.width) - 2) + "px";
				ruler.className = "_qsys_hruler";
				break;
		}
		document.getElementById(qsys.objcrd["parent"].id).appendChild(ruler);
	};
//--------------------------------------------------------------------------------            
	qsys.div.removeRuler = function(rulerId)
	{	var parent = document.getElementById(qsys.objcrd["parent"].id);
		var ruler = document.getElementById(rulerId);
		var ctrl = 0;
		if (parent)
		{	ctrl++;
			if(ruler)
			{	ctrl = ruler.id;
				parent.removeChild(ruler);
			}
		}
		return ctrl;
	};
//--------------------------------------------------------------------------------            
	qsys.div.checkSnap = function(gridPos, objectPos, snapSize)
	{	var diff = gridPos - objectPos;
		if (Math.abs(diff) < snapSize)
			return true;
		return false;
	};
//--------------------------------------------------------------------------------            
	qsys.div.checkRulers = function(dragnodeObj)
	{	// haal left, top, right & bottom op
		var nodeTop 	= dragnodeObj.top + dragnodeObj.deltaTop;
		var nodeLeft 	= dragnodeObj.left + dragnodeObj.deltaLeft;
		var nodeRight	= nodeLeft + dragnodeObj.width - 1;
		var nodeBottom	= nodeTop + dragnodeObj.height - 1;

		// controleer alle element coordinaten hier t.o.v. de drag coords
		var vrulerLeft 		= -1;
		var vrulerRight 	= -1;
		var hrulerTop 		= -1;
		var hrulerBottom 	= -1;
		
		if (qsys.qsysAction == "MOVE")
		{	for (var item in qsys.objcrd)
			{	if (vrulerLeft == -1)
				{	if (nodeLeft == qsys.objcrd[item]["left"])
						vrulerLeft = nodeLeft;
					if (nodeLeft == qsys.objcrd[item]["right"])
						vrulerLeft = nodeLeft;
				}
				if (vrulerRight == -1)
				{	if (nodeRight == qsys.objcrd[item]["left"])
						vrulerRight = nodeRight;
					if (nodeRight == qsys.objcrd[item]["right"])
						vrulerRight = nodeRight;
				}
				if (hrulerTop == -1)
				{	if (nodeTop == qsys.objcrd[item]["top"])
						hrulerTop = nodeTop;
					if (nodeTop == qsys.objcrd[item]["bottom"])
						hrulerTop = nodeTop;
				}
				if (hrulerBottom == -1)
				{	if (nodeBottom == qsys.objcrd[item]["top"])
						hrulerBottom = nodeBottom;
					if (nodeBottom == qsys.objcrd[item]["bottom"])
						hrulerBottom = nodeBottom;
				}
			}
		}
		if (vrulerLeft >= 0) qsys.div.createRuler("Vertical", "vrulerLeft", vrulerLeft);
		else vrulerLeft = qsys.div.removeRuler("vrulerLeft");
		if (vrulerRight >= 0) qsys.div.createRuler("Vertical", "vrulerRight", vrulerRight);
		else vrulerRight = qsys.div.removeRuler("vrulerRight");
		if (hrulerTop >= 0) qsys.div.createRuler("Horizontal", "hrulerTop", hrulerTop);
		else hrulerTop = qsys.div.removeRuler("hrulerTop");
		if (hrulerBottom >= 0) qsys.div.createRuler("Horizontal", "hrulerBottom", hrulerBottom);
		else hrulerBottom = qsys.div.removeRuler("hrulerBottom");
	};
//--------------------------------------------------------------------------------            
    qsys.div.dragMove = function(elm,dragnodeId,type,done)
    {   var left    = Number(qsys.obj["MOUSEX"]) - Number(elm.dragLeftStart);
        var top     = Number(qsys.obj["MOUSEY"]) - Number(elm.dragTopStart);				
        var dragnode = document.getElementById(dragnodeId);
        if (elm.dragMinMaxEnableY == true)
        {   if  ((-1*elm.dragMinY) > dragnode.top + top)  top = (elm.dragMinY * -1) - dragnode.top;
            if  (elm.dragMaxY < dragnode.top + top)   top = elm.dragMaxY - dragnode.top;
            qsys.obj["DRAGPOSY"] = top + dragnode.top;
        }
        if (elm.dragMinMaxEnableX == true)
        {   if  ((-1*elm.dragMinX) > dragnode.left + left) left = (elm.dragMinX * -1) - dragnode.left;
            if  (elm.dragMaxX < dragnode.left + left)      left = elm.dragMaxX - dragnode.left;
            qsys.obj["DRAGPOSX"] = left + dragnode.left;
        }
        if (elm.dragMode == "ghost") 
            if (done != true)
                dragnode = document.getElementById("__DRAGGHOST");
        dragnode.deltaLeft      = 0; 
        dragnode.deltaTop       = 0; 
        dragnode.deltaWidth     = 0; 
        dragnode.deltaHeight    = 0;
        if ((done) && (elm.dragJmpBack == true))
        {   left = 0; top = 0; }
        if (elm.dragDisableX == true) left = 0;
        if (elm.dragDisableY == true) top = 0;
        if(elm.dragResize)
        {	switch(elm.dragResize)
            {   case "LEFT":        
                    dragnode.deltaLeft      = left; 
                    dragnode.deltaWidth     = 0-left; 
                    break;
                case "RIGHT":	    
                    dragnode.deltaWidth     = left; 
                    break;
                case "TOP":         
                    dragnode.deltaTop       = top; 
                    dragnode.deltaHeight    = 0-top; 
                    break;			
                case "BOTTOM":      
                    dragnode.deltaHeight    = top; 
                    break;
                case "TOPLEFT":     
                    dragnode.deltaLeft      = left; 
                    dragnode.deltaWidth     = 0-left; 
                    dragnode.deltaTop       = top; 
                    dragnode.deltaHeight    = 0-top; 
                    break;			
                case "TOPRIGHT":	
                    dragnode.deltaWidth     = left; 
                    dragnode.deltaTop       = top; 
                    dragnode.deltaHeight    = 0-top; 
                    break;		
                case "BOTTOMLEFT":  
                    dragnode.deltaLeft      = left; 
                    dragnode.deltaWidth     = 0-left; 
                    dragnode.deltaHeight    = top; 
                    break;
                case "BOTTOMRIGHT":	
                    dragnode.deltaWidth     = left; 
                    dragnode.deltaHeight    = top; 
                    break;
            }
			qsys.div.checkRulers(dragnode);
            qsys.div.resize(dragnode,done);        
        } 
        else 
        {  	dragnode.deltaLeft  	= left; 
            dragnode.deltaTop   	= top; 	
            dragnode.style.left		= dragnode.left + dragnode.deltaLeft + "px";
            dragnode.style.top		= dragnode.top + dragnode.deltaTop + "px";
			
            top += dragnode.top;
            left += dragnode.left;

			qsys.div.checkRulers(dragnode);

            if(done)
            {  	dragnode.left	= dragnode.left + dragnode.deltaLeft;
                dragnode.top	= dragnode.top	+ dragnode.deltaTop;
            }
        }
        if (elm.dragOnMouseMove) 
        {   if (!qsys.obj["scrollX"]) qsys.obj["scrollX"] = 0;
            if (!qsys.obj["scrollY"]) qsys.obj["scrollY"] = 0;
            qsys.obj["scrollX"] = left;
            qsys.obj["scrollY"] = top;
            qsys.obj["scrollDone"] = done;
            qsys.obj["scrollId"] = elm.id;
			qsys.div.checkRulers(dragnode);
            if (elm.dragOnMouseMove.substr(0,1) == "<")
                qsys.execute(dragnode.dragOnMouseMove,dragnode.id);             
            else eval(elm.dragOnMouseMove + "()");
        }
        if (type == "stop")
        {   qsys.obj["deltaHeight"] = dragnode.deltaHeight;
            qsys.obj["deltaWidth"]  = dragnode.deltaWidth;
            qsys.obj["deltaTop"]    = dragnode.deltaTop;
            qsys.obj["deltaLeft"]   = dragnode.deltaLeft;
            qsys.obj["height"]      = dragnode.height;
            qsys.obj["width"]       = dragnode.width;
            qsys.obj["top"]         = dragnode.top;
            qsys.obj["left"]        = dragnode.left;

            if (dragnode.ITEMID)
                qsys.obj["ITEMID"]  = dragnode.ITEMID;
            if (dragnode.onResizeExe)
                qsys.execute(dragnode.onResizeExe,elm.id); 
        }
        var node = document.getElementById("MenuPanelfooter");
        if (node) node.innerHTML = "x:"+dragnode.style.left+" y:"+dragnode.style.top+" w:"+dragnode.style.width+" h:"+dragnode.style.height; 
    };
//--------------------------------------------------------------------------------
    qsys.div.dragExecute = function(elm,type)
    {   var done = false;
        if (!elm.dragid) 
            return;
        switch(type)
        {   case "start":
                if (!elm.dragActive)
                {   elm.dragLeftStart   = Number(qsys.obj["MOUSEX"]);
                    elm.dragTopStart    = Number(qsys.obj["MOUSEY"]);
                    elm.dragActive      = true;
                    if (typeof(elm.dragid) == "string")
                        qsys.div.dragStart(elm,elm.dragid);
                    else for(d in elm.dragid)
                        qsys.div.dragStart(elm,elm.dragid[d]);
                }
                break;
            default:
            case "error":
                if (typeof(elm.dragid) == "string")
                    qsys.div.dragError(elm,elm.dragid);
                else for(d in elm.dragid)
                    qsys.div.dragError(elm,elm.dragid[d]);            
                return;
            case "stop": 
                done = true;
                qsys.clrEvent(document, "onmousemove");         	  
                // Check for 'GHOST' drag
                if (elm.dragMode == "ghost")
                    qsys.del["DIV"]("__DRAGGHOST");
            case "move": 
                if (elm.dragActive)
                {   if (typeof(elm.dragid) == "string")
                        qsys.div.dragMove(elm,elm.dragid,type,done);
                    else for(var d in elm.dragid)
                        qsys.div.dragMove(elm,elm.dragid[d],type,done);            
                    if ((type == "stop")  && (typeof(elm.dragid) == "string"))  //Save top left coord
                    {   var drag = document.getElementById(elm.dragid);
                        if ((elm.save == "TLWH") || drag.save == "TLWH")
                        {   qsys.obj["visualLocationId"] = drag.id;
                            qsys.obj["visualLocationTop"] = drag.top;
                            qsys.obj["visualLocationLeft"] = drag.left;
                            qsys.obj["visualLocationWidth"] = drag.width;
                            qsys.obj["visualLocationHeight"] = drag.height;                    
                            qsys.execute("<PHP><FUNCTION>guiItemSaveVisualLocation</FUNCTION><RETURN><0>visualLocationId</0><1>visualLocationTop</1><2>visualLocationLeft</2><3>visualLocationWidth</3><4>visualLocationHeight</4></RETURN></PHP>");
                        }
                    }
                    if (type == "stop") 
                        elm.dragActive = false;
                }
                break;
        }         
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.div.getMouseCoord = function(evt)
    {   if (evt.pageX) qsys.obj["MOUSEX"] = evt.pageX;
		else if (evt.clientX)
   			qsys.obj["MOUSEX"] = evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		else qsys.obj["MOUSEX"] = 0;

    	if (evt.pageY) qsys.obj["MOUSEY"] = evt.pageY;
		else if (evt.clientY)
   			qsys.obj["MOUSEY"] = evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		else qsys.obj["MOUSEY"] = 0;

/* OLD getMouseCoord function
    	if (document.documentElement.scrollLeft)
        {   evt = window.event;
            qsys.obj["MOUSEX"] = Number(evt.clientX + document.documentElement.scrollLeft + document.body.scrollLeft);
            qsys.obj["MOUSEY"] = Number(evt.clientY + document.documentElement.scrollTop + document.body.scrollTop);
            if (qsys.obj["MOUSEX"]>2) qsys.obj["MOUSEX"]-=2;
            if (qsys.obj["MOUSEY"]>2) qsys.obj["MOUSEY"]-=2;

        }   else {  // firefox
            if (window.scrollX) qsys.obj["MOUSEX"] = Number(evt.clientX + window.scrollX);
			else qsys.obj["MOUSEX"] = Number(evt.clientX);
            if (window.scrollX) qsys.obj["MOUSEY"] = Number(evt.clientY + window.scrollY);
			else qsys.obj["MOUSEY"] = Number(evt.clientY);
        }          
*/
        // Limit mouse to screen
        if (qsys.obj["MOUSEX"] < 0)
            qsys.obj["MOUSEX"] = 0;
        if (qsys.obj["MOUSEY"] < 0)
            qsys.obj["MOUSEY"] = 0;
        if (qsys.obj["MOUSEX"] > qsys.obj["CD_WIDTH"]) 
            qsys.obj["MOUSEX"] = qsys.obj["CD_WIDTH"];
        if (qsys.obj["MOUSEY"] > qsys.obj["CD_HEIGHT"]) 
            qsys.obj["MOUSEY"] = qsys.obj["CD_HEIGHT"];  
    };
//---------------------------------------------------------------------------------------------------------------------
    qsys.evt["mouseover"] = function(evt,elm) 
    {   if (!qsys.obj['MOUSE_ID'])
        {   qsys.clrEvent(elm, 'onmouseover'); 
            qsys.setEvent(elm, 'onmouseout'); 
            if (elm.onMouseIn) 
            {   qsys.div.getMouseCoord(evt);
                qsys.execute(elm.onMouseIn,elm.id); 
            }
        }
    };
//--------------------------------------------------------------------------------
    qsys.evt["mouseout"] = function(evt,elm) 
    {   if (!qsys.obj['MOUSE_ID'])
        {   qsys.clrEvent(elm, 'onmouseout');
            qsys.setEvent(elm, 'onmouseover'); 
            if (elm.onMouseOut) 
                qsys.execute(elm.onMouseOut,elm.id);
        }
    };
//--------------------------------------------------------------------------------
    qsys.evt["mousedown"] = function(evt,elm) 
    {   qsys.div.getMouseCoord(evt)
        qsys.obj['MOUSE_ID'] = elm.id; 
        qsys.clrEvent(elm, 'onmousedown'); 
        qsys.setEvent(document, 'onmouseup'); 
        if (elm.onMouseDown) 
            qsys.execute(elm.onMouseDown,elm.id); 
        qsys.div.dragExecute(elm,"start");
        if (elm.onMouseDownExe) 
            qsys.execute(elm.onMouseDownExe,elm.id); 
        var node = document.getElementById("__CPIINFLABEL");
    };
//--------------------------------------------------------------------------------
    qsys.evt["mouseup"] = function(evt,elm) 
    {   if (qsys.obj['MOUSE_ID'])
        {   if (qsys.obj['MOUSE_ID'] == elm.id)
            {   qsys.div.getMouseCoord(evt);
                elm = document.getElementById(qsys.obj['MOUSE_ID']);
                qsys.obj['MOUSE_ID'] = ""; 
                qsys.setEvent(elm, 'onmousedown'); 
                qsys.clrEvent(document, 'onmouseup'); 
                if (elm.onMouseUp) 
                    qsys.execute(elm.onMouseUp,elm.id); 
                qsys.div.dragExecute(elm,"stop");
                if (elm.onMouseUpExe != undefined) 
                    if (elm.onMouseUpExe) 
                        qsys.execute(elm.onMouseUpExe,elm.id);  
            } 
            else 
            {   elm = document.getElementById(qsys.obj['MOUSE_ID']);
                if (elm.onMouseUp) 
                    qsys.execute(elm.onMouseUp,elm.id); 
                qsys.div.dragExecute(elm,"error");
            }
        }
    };
//--------------------------------------------------------------------------------
    qsys.evt["mousemove"] = function(evt,elm) 
    {   if (elm.onMouseMove)
        {   qsys.div.getMouseCoord(evt);
            qsys.execute(elm.onMouseMove,elm.id); 
            return;
        }
        if (!elm.dragid) 
            return;
        if (!qsys.mouseMoveActive)
        {   qsys.mouseMoveActive = true;
            if (qsys.obj['MOUSE_ID'])
            {   qsys.div.getMouseCoord(evt);
                qsys.div.dragExecute(elm,"move");
            } 
            else 
                qsys.div.dragExecute(elm,"error");
            qsys.mouseMoveActive = false;
        } 
    };
//--------------------------------------------------------------------------------
    qsys.div.flow = function(node,key,newValue,Min,Max)
    {   if (!node) 
            return "delete";
        var add = 0;
        var def = 0;
        var del = false;
        var value = 0;
        switch(newValue)
        {   case "SLOWUP":          add = 1; def = Min; break;
            case "UP":              add = 5; def = Min; break;
            case "FASTUP":          add = 10; def = Min; break;
            case "SLOWDOWNandDEL":  del = true;
            case "SLOWDOWN":        add = -1; def = Max; break;
            case "DOWNandDEL":      del = true;
            case "DOWN":            add = -5; def = Max; break;
            case "FASTDOWNandDEL":  del = true;
            case "FASTDOWN":        add = -10; def = Max; break;
            default:                return newValue;
        }
        if (node[key] == "undefined") 
            node[key] = def;
        value   = Number(node[key]);
        value   += add;
        if (value > Max) 
            value = Max;
        if (value < Min) 
            value = Min;
        if ((del) && (value == Min))
        {   node.parentNode.removeChild(node); 
            return "delete";
        }
        delete add;
        delete def;
        delete del;
        return value;
    };
//--------------------------------------------------------------------------------
    qsys.fnc["SETCSS"] = function(arr)
    {   var href;
    	var css;
    	var items;
        var mysheet;
        var myrules;
		var found;
        if (arr["FILE"])
        {   items = qsys.XMLToArr(arr["ITEMS"]);        
            for(var j = 0; j < document.styleSheets.length; j++)
            {   href = document.styleSheets[j].href;                
                if(href.substr(href.length-arr["FILE"].length) == arr["FILE"])
                {   mysheet = document.styleSheets[j];
                    if (mysheet.cssRules) //ff
                    {   myrules = mysheet.cssRules;
                        found = false;
                        for (var i = 0; i < myrules.length; i++)
                            for(var item in items)
                                if(myrules[i].selectorText.toLowerCase() == item.toLowerCase())
                                {   myrules[i].style.cssText = items[item];
                                    found = true;
                                }
                        if (!found) document.styleSheets[j].insertRule(item+"{"+items[item]+"}",0);
                    } else { //ie
                        myrules = mysheet.rules;
                        found = false;
                        for (var i = 0; i < myrules.length; i++)
                            for(var item in items)
                                if(myrules[i].selectorText.toLowerCase() == item.toLowerCase())
                                {   myrules[i].style.cssText = items[item];
                                    found = true;
                                }
                        if (!found) document.styleSheets[j].addRule(item,items[item],0);
                    }
                }
            }
        }
    };
    qsys.imageToActive =  function(event)
    {   var elm;
        if (window.event) 
        {   evt                         = window.event;   // ie
            elm                         = evt.srcElement;
            window.event.cancelBubble   = true;
            window.event.returnValue    = false;
        } 
        else 
        {   elm = event.target;           //firefox
            event.preventDefault();
        }
        var img = elm.src;
        if (img != undefined)
        {   if (img.indexOf("_active") == -1)
            {   if (img.indexOf("_off") == -1)
                {   var ext = img.substr(img.length-3,3);
                    img = img.substr(0,img.length-4);
                    elm.src = img+"_active."+ext;
                }
            }
        }        
    }
    qsys.imageFromActive =  function(event)
    {   var elm;
        if (window.event) 
        {   evt                         = window.event;   // ie
            elm                         = evt.srcElement;
            window.event.cancelBubble   = true;
            window.event.returnValue    = false;
        } 
        else 
        {   elm = event.target;           //firefox
            event.preventDefault();
        }
        var img = elm.src;
        if (img != undefined)
        {   if (img.indexOf("_active") != -1)
            {   var ext = img.substr(img.length-3,3);
                img = img.substr(0,img.length-11);
                elm.src = img+"."+ext;
            }
        }                
    }
	qsys.startHoverText = function(event, hoverText)
	{	qsys.div.getMouseCoord(event);
        if (window.event) elm = window.event.srcElement;
        else elm = event.target;           //firefox
        while(!elm.id) elm = elm.parentNode;
		qsys.hoverTimer = setTimeout("qsys.makeHoverText(\"" + hoverText + "\",\"" + elm.id + "\")", 1000);
	};
	qsys.stopHoverText = function()
	{	if (qsys.hoverTimer)
			clearTimeout(qsys.hoverTimer);
		var hoverDiv = document.getElementById("__hoverdiv");
        if (hoverDiv) hoverDiv.parentNode.removeChild(hoverDiv);
	};
    qsys.makeHoverText = function(text,id)
    {	var node = document.getElementById(id);
        var hoverDiv = document.getElementById("__hoverdiv");
        if (hoverDiv) hoverDiv.parentNode.removeChild(hoverDiv);
		var parent = document.getElementById(qsys.coredivId).parentNode;
		hoverDiv = document.createElement('div');
   		hoverDiv.setAttribute('id', "__hoverdiv");
		hoverDiv.className = "_qsys_HoverDiv";
		hoverDiv.innerHTML = text;
        hoverDiv.position = "absolute";
		parent.appendChild(hoverDiv);
        var tw=qsys.obj["CD_WIDTH"];
        var th=qsys.obj["CD_HEIGHT"];
        var x=qsys.obj["MOUSEX"];
        var y=qsys.obj["MOUSEY"];
        var w=hoverDiv.clientWidth;
        var h=hoverDiv.clientHeight;
        var l=0,t=0,p=node;
        var lo=0,to=0;
        while(p)
        {   if (typeof(p.left) == 'number') l+=p.left;
            if (typeof(p.top) == 'number') t+=p.top;
            p = p.parentNode;
        }
        if ((x+w+20) > tw) 
        {   lo = x-w-20;
        } else {
            lo = x+20;
//            if (lo > l ) lo = l;
        }

        if ((y+h+20) > th) 
        {   to = y-h-20;
        } else {
            to = y+20;
//            if (to > t ) to = t+node.height;
        }

        var txt = "";
        txt += "x = "+x+"\r\n";
        txt += "y = "+y+"\r\n";
        txt += "w = "+w+"\r\n";
        txt += "h = "+h+"\r\n";
        txt += "l = "+l+"\r\n";
        txt += "t = "+t+"\r\n";
        txt += "tw = "+tw+"\r\n";
        txt += "th = "+th+"\r\n";
        txt += "lo = "+lo+"\r\n";
        txt += "to = "+to+"\r\n";
//        alert(txt);
		hoverDiv.style.left = lo + "px";
		hoverDiv.style.top = to + "px";
		hoverDiv.style.zIndex = qsys.div.topIndex++;
	};
    qsys.chg["DIV"] = function(arr)
    {   if (!arr["ID"]) 
            arr["ID"] = qsys.obj["ID"];
        var node = document.getElementById(arr["ID"]);
        if (!node) 
        {   alert("Change div without div..." + arr["ID"]);
            return;
        }
        if (arr["COORD"])                        
        {   if (typeof(arr["COORD"]) == "string")
                arr["COORD"] = qsys.XMLToArr(arr["COORD"])
            qsys.div.setCoord(node,arr["COORD"]);
        }

		if (arr["pdfBorderWidth"])
		{	node.style.borderStyle = "solid";
			node.style.borderWidth = arr["pdfBorderWidth"] + "px";
		}
		if (arr["pdfBorderColor"])
			node.style.borderColor = arr["pdfBorderColor"];
		if (arr["pdfFillColor"])
			node.style.backgroundColor = arr["pdfFillColor"];
		if (arr["pdfTextColor"])
			node.style.color = arr["pdfTextColor"];
		if (arr["pdfFontType"])
		{	node.style.fontFamily = arr["pdfFontType"];
			node.style.paddingTop = 0;
		}
		if (arr["pdfFontSize"])
		{	node.style.fontSize = arr["pdfFontSize"] + "pt";
			node.style.LineHeight = arr["pdfFontSize"] + "pt";
			node.style.paddingTop = 0;
		}

        for(var key in arr)
        {   switch(key)
            {   case "OPACITY":
                    var opacity = qsys.div.flow(node,"opacity",arr[key],0,100);
                    if (opacity != "delete")
                    {   node.opacity = opacity;
                        node.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+ opacity +")";
                        node.style.opacity = opacity /100;           
                    }
                    break;
                case "BASEDIV":
                case "ID":
                case "IMGWIDTH":
                case "IMGHEIGHT":
                case "HTTP":
//                    node.setAttribute("href", 'http://www.vinq-it.nl/index.html');
                    break;
                case "title":
                    if (node.off) 
                        break;
					if (document.addEventListener)
					{	node.addEventListener( "mouseover",new Function( "event", "event.preventDefault(); return qsys.startHoverText(event,\""+arr["title"]+"\")"), true );
						node.addEventListener( "mouseout",new Function( "event", "event.preventDefault(); qsys.stopHoverText()"), true );
					} 
                    else
	                {   node[ "onmouseover"] = new Function("return qsys.startHoverText(event,\""+arr["title"]+"\")");
	                	node[ "onmouseout"] = new Function("qsys.stopHoverText()");
					}
                    break;
                case "TEXTAREA":
                    var ta = qsys.XMLToArr(arr["TEXTAREA"]);
                    var inputNode   = document.createElement("TEXTAREA");
                    inputNode.id    = ta["ID"];
                    inputNode.creationIndex = qsys.div.creationIndex++;
                    inputNode.name          = ta["ID"];
                    inputNode.ITEMID        = ta["ID"];
                    qsys.obj[inputNode.ITEMID] = ta["value"];
                    inputNode.className     = ta["className"];
                    node.appendChild(inputNode);
                    qsys.setEvent(inputNode, "onkeyup");   
                    inputNode.setAttribute('wrap', 'off');
                    inputNode.style.display='none';
                    inputNode.style.display='';
                    inputNode.value     = ta["value"];
                    inputNode.style.height = node.style.height;
                    inputNode.style.width = node.style.width;
                    break;
                case "SEL":
                    if (qsys.lst)                
                        if (arr[key])
                            qsys.lst.selectInit(node,qsys.XMLToArr(arr["SEL"]));
                    break;
                case "LST":
                    if (qsys.lst)                
                        if (arr[key])
                            qsys.lst.listInit(node,qsys.XMLToArr(arr["LST"]));
                    break;
                case "DIV":
                    qsys.obj["BASEDIV"]         = node.id;                    
                    qsys.fnc["DIV"](qsys.XMLToArr(arr["DIV"]));        
                    break;
                case "DIVIMG":
                case "IMG":
                    if (arr[key])
                    {   if (arr[key].substring(0,1) == "<") 
                        {   var innerHTMLArr = qsys.XMLToArr(arr[key]);
                            if (innerHTMLArr["OBJ"])
                                arr[key] = qsys.obj[innerHTMLArr["OBJ"]];
                        }
                        if ((Number(arr[key]) != arr[key]) || (arr[key] >= 0))
                        {   var imgNode = document.getElementById(node.id + "BACKGROUNDIMG");
                            if (!imgNode) 
                            {   imgNode = document.createElement("IMG");
                                imgNode.id = node.id + "BACKGROUNDIMG";
                                imgNode.divid = node.id;
                                imgNode.style.margin = "0px";
                                imgNode.style.padding = "0px";
                                imgNode.style.left = "0px";
                                imgNode.style.top = "0px";
                                if (arr["IMGWIDTH"]) 
                                {   if (arr["IMGWIDTH"] == "max")
                                        imgNode.style.width     = node.width + "px";
                                    else imgNode.style.width    = arr["IMGWIDTH"] + "px";
                                }
                                if (arr["IMGHEIGHT"])
                                {   if (arr["IMGHEIGHT"] == "max")
                                        imgNode.style.height    = node.height + "px";
                                    else imgNode.style.height   = arr["IMGHEIGHT"] + "px";
                                }
                                node.appendChild(imgNode);
                                imgNode.style.position = "absolute";
                            }
                            if (Number(arr[key]) == arr[key])
                            {   var images =qsys.XMLToArr(arr['IMAGES']);
                                if (images[Number(arr[key])])
                                {   var len = images[arr[key]].length;
                                    if (len >= 10)
                                    {   if (images[arr[key]].substr(len-10,10) == "blanco.png")
                                            node.off = true;                                            
                                        if (images[arr[key]].substr(len-8,8) == "_off.png")
                                            node.off = true;                                            
                                        imgNode.src = images[arr[key]];
                                        if (node.off) node.title = "";
                                    }
                                } else imgNode.src = images[images.length-1];
                            } else 
                                imgNode.src = arr[key];
                            if (arr['intHover'] == 1) 
                            {   if (document.addEventListener)
                                {	imgNode.addEventListener( "mouseover",new Function( "event", "event.preventDefault(); return qsys.imageToActive(event)"), true );
                                    imgNode.addEventListener( "mouseout",new Function( "event", "event.preventDefault(); qsys.imageFromActive(event)"), true );
                                } 
                                else
                                {   imgNode[ "onmouseover"] = new Function("return qsys.imageToActive(event)");
                                    imgNode[ "onmouseout"] = new Function("qsys.imageFromActive(event)");
                                }
                            }
                        } else {
                            node.off = true;
                        }
                    }
                    break;
                case "SCR":         //Scroll bar
                    if (qsys.lst)
                        if (arr[key])
                            qsys.lst.scrollInit(node,qsys.XMLToArr(arr["SCR"]));
                    break;
                case "TBC":         //Tab controls
                    if (qsys.tabControl)
                        if (arr[key])
                            qsys.tabControl.ctrlDiv(node,qsys.XMLToArr(arr["TBC"]));
                    break;
                case "TBF":         //Tab forms
                    if (qsys.tabControl)
                        if (arr[key])
                            qsys.tabControl.formDiv(node,qsys.XMLToArr(arr["TBF"]));
                    break;
                case "BORDER":
                    node.borderWidth = arr[key];
                    break;
                case "COORD":
                    //alert("test");
                    break;
                case "RESIZE":
                     if (arr[key])
                        qsys.div.initResize(node,arr[key]);
                    break;
                case "ROUNDTOP":
                    qsys.roundTop(node, qsys.XMLToArr(arr[key]));
                    break;
                case "ROUNDBOT":
                    qsys.roundBot(node, qsys.XMLToArr(arr[key]));
                    break;
                case "innerHTML":
                    if (arr[key].substring(0,1) == "<") 
                    {   var innerHTMLArr = qsys.XMLToArr(arr[key]);
                        if(innerHTMLArr["TEXT"]) 
                            node.innerHTML = innerHTMLArr["TEXT"];
                        qsys.execute(arr[key], node.id);
                    } 
                    else 
                        node.innerHTML =arr[key];
                    break;
                case "VALUE":           
                    node.value =arr[key];
                    if (node.ITEMID)
                       qsys.obj[node.ITEMID] = node.value;
                    break;                        
                case "DISABLED":
                    node.disabled = 1;
                    break;
                case "ENABLED":
                    node.disabled = 0;
                    break;
                case "OVERFLOW":
                    node.style.overflow = arr[key];
                    break;
                case "CLR":
                    if (node)
                    {   node.slaveRight = 0;
                        node.slaveLeft = 0;
                        node.slaveTop = 0;
                        node.slaveBottom = 0;
                        while (node.childNodes.length) 
                            node.removeChild(node.childNodes[0]);
                    }
                    break;
                case "IMGALIGN":
                    break;
                case "onMouseUpExeActivate":
                    qsys.setEvent(node, "onmousedown");
                    break;            
                case "onMouseUpExe1":
                    node['onMouseUpExe'] = arr[key];
//                    alert(key+"_"+arr[key]);
                    break;
                default:
                    if (typeof(node[key]) == "object")
                    {   var innerArray = qsys.XMLToArr(arr[key]);
                        for(var innerKey in innerArray)
                        {   node[key][innerKey] = innerArray[innerKey];
                        }
                    } else 
                    {   node[key] = arr[key];
                    }
                    break;
            }
        }
        if (arr["COORD"])                        
            if (((arr["COORD"]["ALIGN"] == "CLIENT") || (arr["COORD"]["ALIGN"] == "LEFT") || (arr["COORD"]["ALIGN"] == "RIGHT")) && (node.parentNode.id.indexOf("_")>0))
            {   var dummy = document.createElement("DIV");
                dummy.className = node.className;
                dummy.style.top = node.style.top;
                dummy.style.left = node.style.left;
                dummy.style.width = node.style.width;
                dummy.style.position = node.style.position;       
                dummy.innerHTML = node.innerHTML;
                dummy.opacity        = 0;
                dummy.style.filter   = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
                dummy.style.opacity  = 0;           
                node.parentNode.appendChild(dummy);
                var offsetHeight = dummy.offsetHeight;
                node.parentNode.removeChild(dummy);
                offsetHeight -= node.height;
                if (offsetHeight > 0)
                {   offsetHeight += 5;
                    node.height += offsetHeight;
                    node.style.height = node.height+"px";
                    node.parentNode.height += offsetHeight;
                    node.parentNode.style.height = node.height+"px";                
                    node.parentNode.parentNode.slaveTop += offsetHeight;
                }
            }
    };
//--------------------------------------------------------------------------------
    qsys.del["DIV"] = function(id)
    {   if (id != "")
        {   var node = document.getElementById(id);
            if (node)
            {	if (node.destructor) 
                    qsys.execute(node.destructor,id);
                var parentNode = node.parentNode;
                parentNode.removeChild(node);
            } else {
                var i  = 0;
                var pn = "";
                node   = document.getElementById(id + String(i++));
                while(node)
                {   pn = node.parentNode.id;
                    node.parentNode.removeChild(node);
                    node = null;
                    node = document.getElementById(id + String(i++));
                }
                if (pn != "")
                {   node    = document.getElementById(pn);
                    if (node)
                    {   node.slaveRight = 0;
                        node.slaveLeft = 0;
                        node.slaveTop = 0;
                        node.slaveBottom = 0;
                    }
                }
            }
        }
    };
//--------------------------------------------------------------------------------
    // Function handler for "URL" (goto url in current window)
    qsys.fnc["HOV"] = function(arr) 
    {   
    };
    // Function handler for "URL" (goto url in current window)
    qsys.del["HOV"] = function(arr) 
    {   
    };
//--------------------------------------------------------------------------------

    qsys.fnc["DIV"] = function(arr)
    {   var hoverDiv = document.getElementById("__hoverdiv");
        if (hoverDiv) hoverDiv.parentNode.removeChild(hoverDiv);
    	var parentNode = document.getElementById(qsys.obj["BASEDIV"]);
        if (!arr["ID"])
        {   if (arr["ROUNDTOP"])
            {   arr["ID"] = parentNode.id + "roundTop";
                arr["COORD"] = "<ALIGN>TOP</ALIGN>";
                var attributes = qsys.XMLToArr(arr["ROUNDTOP"]);
            }
            if (arr["ROUNDBOT"])
            {   arr["ID"] = parentNode.id + "roundBot";
                arr["COORD"] = "<ALIGN>BOTTOM</ALIGN>";
                var attributes = qsys.XMLToArr(arr["ROUNDBOT"]);
            }
            if (attributes["STYLE"] == "small")
                arr["COORD"] += "<HEIGHT>2</HEIGHT>";
            else 
                arr["COORD"] += "<HEIGHT>5</HEIGHT>";
        }        
        var node = document.getElementById(arr["ID"]);
        if (node) 
            node.parentNode.removeChild(node); 
        node 				= null;
        node           		= document.createElement("DIV");  
        node.creationIndex  = qsys.div.creationIndex++;
        node.id             = arr["ID"];        
        node.baseid         = qsys.obj["BASEDIV"];
        
        if (!parentNode) alert("Basediv does not exist : " + qsys.obj["BASEDIV"]);
        else parentNode.appendChild(node);          
        delete parentNode;

        if (arr["groepname"])
        {   addMouseDown = true;
            node.setAttribute("name",arr["groepname"]);
            if (!qsys.groepname[arr["groepname"]])
            {   qsys.groepname[arr["groepname"]] = new Array();
                qsys.groepnameSelected[arr["groepname"]] = arr["ID"];
            }
            var idx = qsys.groepname[arr["groepname"]].length;
            for(var k in qsys.groepname)
            {   if (qsys.groepname[k] == arr["ID"]) idx = k;
            }
            qsys.groepname[arr["groepname"]][idx] = arr["ID"];
            if (qsys.groepnameSelected[arr["groepname"]] == arr["ID"])
                arr['className'] = arr["groepname"]+"_active";
        }
   
        qsys.chg["DIV"](arr);
        if (!node.off)
        {   var imgNode = document.getElementById(node.id + "BACKGROUNDIMG");
    
            if (arr["onMouseIn"]) 
            {   qsys.setEvent(node, "onmouseover");
                if (imgNode) qsys.setEvent(imgNode, "onmouseover");
                
            }
            var addMouseDown = false;
            if (arr["RESIZE"]) 
            {   var resize = qsys.XMLToArr(arr["RESIZE"]);
                if (resize["DRAG"]) addMouseDown = true;
                if (resize["DRAGX"]) addMouseDown = true;
                if (resize["DRAGY"]) addMouseDown = true;
            }
            if (arr["onMouseDown"])     addMouseDown = true;
            if (arr["onMouseUp"])       addMouseDown = true;
            if (arr["onMouseDownExe"])  addMouseDown = true;
            if (arr["onMouseUpExe"])    addMouseDown = true;
            if (addMouseDown == true)
            {   qsys.setEvent(node, "onmousedown");
                if (imgNode) qsys.setEvent(imgNode, "onmousedown");
            }
        }
    };
//--------------------------------------------------------------------------------
    qsys.roundTop = function(node,arr)
    {   var i;
        var d   = document.createElement("b");
        var cn  = "_qsys_r";
        var lim = 4;
        if(arr["STYLE"] == "small")
        {   cn  = "_qsys_rs"; 
            lim = 2;
        }
        d.id = node.id + "roundTop";
        d.className             = "_qsys_rtop";
        d.style.backgroundColor = "transparent";
        
        for(i = 1; i <= lim; i++)
        {   var x = document.createElement("b");
            x.id = node.id + "roundTop" + i;
            x.classOrg = (cn + i);
            x.className = (cn + i) + " " + arr["className"];
            d.appendChild(x);
        }
        node.insertBefore(d,node.firstChild);
    };
//--------------------------------------------------------------------------------
    qsys.roundBot = function(node,arr)
    {   var i;
        var d   = document.createElement("b");
        var cn  = "_qsys_r";
        var lim = 4;
    
        if(arr["STYLE"] == "small")
        {   cn  = "_qsys_rs"; 
            lim = 2;
        }
        
        d.id = node.id + "roundBot";
        d.className             = "_qsys_rbottom";
        d.style.backgroundColor = "transparent";
        
        for(i = lim; i > 0; i--)
        {   var x = document.createElement("b");
            x.id = node.id + "roundBot" + i;
            x.classOrg = (cn + i);
            x.className = (cn + i) + " " + arr["className"];
            d.appendChild(x);
        }
        node.appendChild(d,node.lastChild);
    };
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
    if (!qsys.div) 
        alert("DIV routines not loaded");
    else {
//--------------------------------------------------------------------------------
        qsys.gui = new Array;
//--------------------------------------------------------------------------------
        qsys.gui.arr = new Array;
        qsys.gui.arrWorkingCopy = new Array();
        qsys.gui.propertiesSelectedId = 0;
        qsys.gui.elements = new Array;
        qsys.gui.index = 1;
        qsys.gui.xmlSource = 0;
        qsys.gui.xmlViewState = 0;
        qsys.gui.xmlWorkingCopy = "";
        qsys.gui.propertiesSelectedId = 0;
//--------------------------------------------------------------------------------
        qsys.gui.baseId = false;
        qsys.gui.divArr = new Array;
        qsys.gui.divArr["COORD"] = new Array;
        qsys.gui.butArr = new Array;
        qsys.gui.butArr["COORD"] = new Array;
        qsys.gui.spcArr = new Array;
        qsys.gui.spcArr["COORD"] = new Array;
        qsys.gui.inpArr = new Array;
        qsys.gui.inpArr["COORD"] = new Array;
        qsys.gui.selArr = new Array;
        qsys.gui.selArr["COORD"] = new Array;
        qsys.gui.lstArr = new Array;
        qsys.gui.lstArr["COORD"] = new Array;
//--------------------------------------------------------------------------------
        qsys.gui.setAllArrCoordTag = function(key,value)
        {   qsys.gui.divArr["COORD"][key] = value;
            qsys.gui.spcArr["COORD"][key] = value;
            qsys.gui.butArr["COORD"][key] = value;
            qsys.gui.inpArr["COORD"][key] = value;
            qsys.gui.selArr["COORD"][key] = value;
            qsys.gui.lstArr["COORD"][key] = value;
        };
//--------------------------------------------------------------------------------
        qsys.gui.setAllArrTag = function(key,value)
        {   qsys.gui.divArr[key] = value;
            qsys.gui.spcArr[key] = value;
            qsys.gui.butArr[key] = value;
            qsys.gui.inpArr[key] = value;
            qsys.gui.selArr[key] = value;
            qsys.gui.lstArr[key] = value;
        };
//--------------------------------------------------------------------------------        
        qsys.gui.addProperties = function(srcArr,dstArr)
        {   dstArr["RESIZE"] = false; 
            for(var key in srcArr)
                switch(key)
                {   case "GUI":  break;
                    case "LEFT":   case "TOP": case "HEIGHT": 
                    case "WIDTH": case "ALIGN":  case "BORDER":  
                        dstArr["COORD"][key] = srcArr[key]; break;
                    case "COORD":   
                        var coord = qsys.XMLToArr(srcArr[key]);
                        for(var item in coord)  
                            dstArr["COORD"][item] = coord[item];
                        break;
                    case "RESIZE":  
                        if (typeof(qsys.XMLToArr(srcArr[key])) != "object") 
                        {   dstArr["RESIZE"] = false; 
                            break; 
                        }
                    default:        
                        dstArr[key] = srcArr[key]; break;
                }
         };
//--------------------------------------------------------------------------------
        qsys.gui.createGui = function(arr)
        {   if(!qsys.gui.baseId) 
            {   qsys.gui.baseId = qsys.obj["BASEDIV"]; 
            }
            var baseId = qsys.gui.baseId;
            for(var key in arr)
                if (arr["ID"]) 
                    qsys.gui.addItem(key,arr["ID"],baseId,arr,qsys.XMLToArr(arr[key]));
                else 
                    qsys.gui.addItem(key,baseId + key,baseId,arr,qsys.XMLToArr(arr[key]));
        };
//--------------------------------------------------------------------------------
        qsys.gui.addPanel = function(id,baseId,arr)
        {   qsys.gui.divArr["ID"]               = id;
            qsys.gui.divArr["innerHTML"]        = "";
            qsys.gui.addProperties(arr,qsys.gui.divArr);
            qsys.obj["BASEDIV"]                 = baseId;
            qsys.fnc["DIV"](qsys.gui.divArr);
            qsys.gui.divArr["style"]            = null;
            qsys.gui.divArr["onMouseUpExe"]     = null;
            qsys.gui.divArr["onMouseDownExe"]   = null;
            qsys.gui.divArr["onResizeExe"]      = null;
            qsys.gui.divArr["SCR"]              = null;
            qsys.gui.divArr["title"]            = "";
            qsys.gui.divArr["IMG"]              = "";
            if (arr["GUI"])  
            {   qsys.gui.baseId = qsys.gui.divArr["ID"];
                qsys.gui.createGui(qsys.XMLToArr(arr["GUI"]));
            }
        };
//--------------------------------------------------------------------------------
        qsys.gui.addSpace = function(id,baseId,arr)
        {   qsys.gui.spcArr["ID"]               = id;
            qsys.gui.spcArr["innerHTML"]        = "";
            qsys.gui.addProperties(arr,qsys.gui.spcArr);
            qsys.obj["BASEDIV"]                 = baseId;
            qsys.fnc["DIV"](qsys.gui.spcArr);
        };
//--------------------------------------------------------------------------------
        qsys.gui.addButton = function(id,baseId,arr)
        {   if (arr["ID"]) 
                id = arr["ID"];
            qsys.gui.butArr["ID"] = id;
            qsys.gui.addProperties(arr,qsys.gui.butArr);
            qsys.gui.butArr["onMouseOut"]       = "<CHG><DIV><className>" + qsys.gui.butArr["className"] + "Out" + "</className></DIV></CHG>";
            qsys.gui.butArr["onMouseDown"]      = "<CHG><DIV><className>" + qsys.gui.butArr["className"] + "Down" + "</className></DIV></CHG>";
            qsys.gui.butArr["onMouseUp"]        = "<CHG><DIV><className>" + qsys.gui.butArr["className"] + "Up" + "</className></DIV></CHG>";
            qsys.gui.butArr["onMouseIn"]        = "<CHG><DIV><className>" + qsys.gui.butArr["className"] + "In" + "</className></DIV></CHG>";
            qsys.gui.butArr["onMousePressed"]   = "<CHG><DIV><className>" + qsys.gui.butArr["className"] + "Pressed" + "</className></DIV></CHG>";
            qsys.obj["BASEDIV"] = baseId;
            qsys.fnc["DIV"](qsys.gui.butArr);
            var buttonNode = document.getElementById(id);
            buttonNode.minWidth         = buttonNode.width;
            buttonNode.minHeight        = buttonNode.height;
            buttonNode.style.overflow   = "hidden";
            qsys.gui.butArr["TOGGLE"]   = "";
            qsys.gui.butArr["IMG"]      = "";
        };
//--------------------------------------------------------------------------------        
/*      window.parent.fileUploaded = function(fileName)
        {   qsys.obj["fileName"] = fileName;
            var divNode = document.getElementById(qsys.gui.fileUploadDivId);
            if (divNode)
                if (divNode.onSubmit)
                    qsys.execute(divNode.onSubmit,divNode.id); 
        };
*/
//--------------------------------------------------------------------------------        
        qsys.fnc["RCT"] = function(arr)
        {   var divNode = document.getElementById(arr);
            divNode.onMouseDown = "<EXE>qsys.gui.selectRectangleStart('"+arr+"'); </EXE>";
            qsys.setEvent(divNode, "onmousedown");
        };
        qsys.gui.selectRectangleStart = function(id)
        {   var divNode = document.getElementById(id);
            divNode.onMouseMove     = "<EXE>qsys.gui.selectRectangleMove('"+id+"'); </EXE>";
            qsys.setEvent(divNode, "onmousemove");            
            divNode.onMouseUp       = "<EXE>qsys.gui.selectRectangleEnd('"+id+"'); </EXE>";
            qsys.setEvent(divNode, "onmouseup");
            divNode.rectX = qsys.obj["MOUSEX"];
            divNode.rectY = qsys.obj["MOUSEY"]
            var divRect = document.getElementById("__RECTANGLESEL");
            if (!divRect)
            {	divRect = document.createElement("DIV");
                divRect.id = "__RECTANGLESEL";
                divRect.className = "_qsys_draghandle";
                divNode.appendChild(divRect);
                var opacity = 20;
                divRect.opacity = opacity;
                divRect.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+ opacity +")";
                divRect.style.opacity = opacity /100;           
            }
        };
        qsys.gui.selectRectangleMove = function(id)
        {   var divNode   = document.getElementById(id);
            var coord     = new Array();
            coord["ALIGN"]  = "CUSTOM";
            if (qsys.obj["MOUSEX"] > divNode.rectX)
            {   qsys.obj["RECTLEFT"] = coord["LEFT"]   = divNode.rectX;
                qsys.obj["RECTWIDTH"] = coord["WIDTH"]  = qsys.obj["MOUSEX"]-divNode.rectX;
            } else {
                qsys.obj["RECTLEFT"] = coord["LEFT"]   = qsys.obj["MOUSEX"];
                qsys.obj["RECTWIDTH"] = coord["WIDTH"]  = divNode.rectX-qsys.obj["MOUSEX"];
            }
            if (qsys.obj["MOUSEY"] > divNode.rectY)
            {   qsys.obj["RECTTOP"] = coord["TOP"]   = divNode.rectY;
                qsys.obj["RECTHEIGHT"] = coord["HEIGHT"]  = qsys.obj["MOUSEY"]-divNode.rectY;
            } else {
                qsys.obj["RECTTOP"] = coord["TOP"]   = qsys.obj["MOUSEY"];
                qsys.obj["RECTHEIGHT"] = coord["HEIGHT"]  = divNode.rectY-qsys.obj["MOUSEY"];
            }
            coord["ZINDEX"] = 100000;
            divRect = document.getElementById("__RECTANGLESEL");
            qsys.div.setCoord(divRect,coord);
        };
        qsys.gui.selectRectangleEnd = function(id)
        {   var divNode  = document.getElementById(id);
            qsys.clrEvent(divNode, "onmouseup");
            qsys.clrEvent(divNode, "onmousemove");
            divRect = document.getElementById("__RECTANGLESEL");
            divRect.parentNode.removeChild(divRect);
            if (divNode.onRectangleSelected)
                qsys.execute(divNode.onRectangleSelected,divNode.id); 
        };
//--------------------------------------------------------------------------------
        qsys.gui.addFile = function(id,baseId,arr)
        {   qsys.gui.addPanel(id,baseId,arr);
            qsys.gui.fileUploadDivId = id;
            var divNode = document.getElementById(id);
            if (divNode) 
            {   var t = "<iframe name='sliFRAME' id='sliFRAME' align='left' width='320' src='upload.html' frameborder='0' ></iframe>";
                divNode.innerHTML = t;
            }
        };
//--------------------------------------------------------------------------------
        qsys.stripHtmlForInput = function(txt)
        {   var pos = txt.indexOf('&#');
            while(pos != -1)
            {   var end = txt.indexOf(';',pos);
                switch(end-pos)
                {
                case 5:
                case 6:
                    txt = txt.replace(txt.substr(pos,end-pos+1),String.fromCharCode(txt.substr(pos+2,end-pos-2))); 
                    break;
                }
                pos = txt.indexOf('&#',pos+1)            
            }
            return txt;
        }
        qsys.gui.addInput = function(id,baseId,arr)
        {   var baseNode  = document.getElementById(baseId);
            var inputNode = document.getElementById(id);
//            qsys.gui.inpArr = new Array;
//            qsys.gui.inpArr["COORD"] = new Array;
            if (inputNode) inputNode.parentNode.removeChild(inputNode);
            inputNode               = document.createElement("INPUT");
            inputNode.creationIndex = qsys.div.creationIndex++;
            inputNode.id            = id;   
  			inputNode.name          = id;
			inputNode.setAttribute("autocomplete","OFF"); 
            qsys.obj["BASEDIV"]     = baseId;            
            qsys.gui.addProperties(arr,qsys.gui.inpArr);
            for(var key in qsys.gui.inpArr)
            {   if (key == "value") inputNode[key] = qsys.stripHtmlForInput(qsys.gui.inpArr[key]);
                else {
                    if (key == "title")
                    {   if (!inputNode.off) 
                        {   if (document.addEventListener)
                            {	inputNode.addEventListener( "mouseover",new Function( "event", "event.preventDefault(); return qsys.startHoverText(event,\""+qsys.gui.inpArr[key]+"\")"), true );
                                inputNode.addEventListener( "mouseout",new Function( "event", "event.preventDefault(); qsys.stopHoverText()"), true );
                            } 
                            else
                            {   inputNode[ "onmouseover"] = new Function("return qsys.startHoverText(event,\""+qsys.gui.inpArr[key]+"\")");
                                inputNode[ "onmouseout"] = new Function("qsys.stopHoverText()");
                            }
                        }
                    } else inputNode[key] = qsys.gui.inpArr[key];
                }
            }
//            baseNode.slaveTop = 1;
//            baseNode.slaveLeft = 1;
//            baseNode.slaveBottom = 9;
//            baseNode.slaveRight = 7;
            qsys.gui.inpArr["TYPE"]    = "";
            qsys.gui.inpArr["maxLength"] = 255;
            if (arr["typeFilter"])
            {   var typeFilter = qsys.XMLToArr(arr["typeFilter"]);
                if (typeFilter)
                {   inputNode.removeAttribute("readOnly");
    
                	if (typeFilter["intEditEnable"])
                		if (typeFilter["intEditEnable"] == 1)
                    		inputNode.setAttribute("readOnly", "true");
    
	            	switch (typeFilter["intTypeFilter"])    
                    {   case "0": 
                            if (typeFilter["intMaxLength"]) inputNode.maxLength = typeFilter["intMaxLength"]; break;
                        case "1": 
                            if (typeFilter["intMaxLength"]) inputNode.maxLength = typeFilter["intMaxLength"];
                            inputNode.type = "password"; 
                            break;
                        case "2": 
                            if (!inputNode.value) inputNode.value = 0;
                            if (typeFilter["intMinValue"]) 
                                if (Number(typeFilter["intMinValue"]) > Number(inputNode.value)) 
                                    inputNode.value = typeFilter["intMinValue"];
                            if (typeFilter["intMaxValue"]) 
                                if (Number(typeFilter["intMaxValue"]) < Number(inputNode.value))
                                    inputNode.value = typeFilter["intMaxValue"];
//                            if (typeFilter["intMaxValue"]) inputNode.intMaxValue = typeFilter["intMaxValue"];
                            break;
                    }
                }
            }
            qsys.div.setCoord(inputNode,qsys.gui.inpArr["COORD"]);
            if (!inputNode.minWidth) inputNode.minWidth      = inputNode.width;
            if (!inputNode.minHeight) inputNode.minHeight     = inputNode.height;
            inputNode.baseid        = baseId;     
            baseNode.appendChild(inputNode);
            if (inputNode.ITEMID)  
               qsys.obj[inputNode.ITEMID] = inputNode.value;
//			alert(qsys.gui.inpArr["COORD"]["WIDTH"]);
//			inputNode.disabled = false;
            qsys.setEvent(inputNode, "onkeyup",arr["ONKEYUP"]);   
            qsys.gui.inpArr["onSubmit"] = false;
            qsys.gui.inpArr["value"]    = "";
            qsys.gui.inpArr["type"]    = "";
            qsys.gui.inpArr["title"]    = "";
            qsys.gui.inpArr["typeFilter"]    = "";
            qsys.gui.inpArr["COORD"]["WIDTH"] = 0;
            qsys.gui.inpArr["COORD"]["HEIGHT"] = 0;
        };
//--------------------------------------------------------------------------------
        qsys.gui.addText = function(id,baseId,arr)
        {   var baseNode  = document.getElementById(baseId);
            var inputNode = document.getElementById(id);
            if (inputNode) 
                inputNode.parentNode.removeChild(inputNode);
            inputNode               = document.createElement("TEXTAREA");
            inputNode.creationIndex = qsys.div.creationIndex++;
            inputNode.id            = id;   
  			inputNode.name          = id;
			inputNode.setAttribute("autocomplete","OFF"); 
            qsys.obj["BASEDIV"]     = baseId;            
            qsys.gui.addProperties(arr,qsys.gui.inpArr);
            for(var key in qsys.gui.inpArr) 
                switch(key)
                {
                case "TextEdit":
                case "type":
                case "disabled":
                case "RESIZE":
                case "COORD":
                case "onSubmit":
                case "selectionStart":
                case "selectionEnd":
                    break;
                case "className":
                    inputNode.setAttribute('class', qsys.gui.inpArr[key]);
                    break;
                    qsys.gui.textSetText(inputNode,qsys.gui.inpArr[key],qsys.gui.inpArr['selectionStart'],qsys.gui.inpArr['selectionEnd']);
                    break;
                case "value":
                    if (key == "value") inputNode[key] = qsys.stripHtmlForInput(qsys.gui.inpArr[key]);
                    else inputNode[key] = qsys.gui.inpArr[key];
                    break;
                case "ITEMID":
                    inputNode[key] = qsys.gui.inpArr[key];
                    break;
                default:
                    inputNode[key] = qsys.gui.inpArr[key];  
                    break;
                }
            if (arr["typeFilter"])
            {   var typeFilter = qsys.XMLToArr(arr["typeFilter"]);
                switch(typeFilter["intTypeFilter"])
                {   
                case "10":
                    qsys.gui.htmlButtons(baseNode,id,qsys.gui.inpArr["COORD"],typeFilter["className"]);
                    qsys.gui.inpArr["COORD"]["HEIGHT"] = Number(qsys.gui.inpArr["COORD"]["HEIGHT"])-23;
                    qsys.gui.inpArr["COORD"]["TOP"] = Number(qsys.gui.inpArr["COORD"]["TOP"])+23;
                    break;
                }
            }
            if (qsys.gui.inpArr["TextEdit"])
            {   inputNode.style.backgroundColor = "transparent";
                inputNode.style.borderWidth     = "0px";
                inputNode.cols = 512;
                inputNode.rows = 512;

            } else {
                qsys.gui.inpArr["COORD"]["WIDTHOFFSET"] = 4;
                qsys.gui.inpArr["COORD"]["HEIGHTOFFSET"] = 8;
            }
            qsys.clrEvent(baseNode, "onmousedown");
            qsys.div.setCoord(inputNode,qsys.gui.inpArr["COORD"]);
            inputNode.minWidth      = inputNode.width;
            inputNode.minHeight     = inputNode.height;
            inputNode.baseid        = baseId;     
            baseNode.appendChild(inputNode);
            if (inputNode.ITEMID)  
               qsys.obj[inputNode.ITEMID] = inputNode.value;
            qsys.setEvent(inputNode, "onkeyup",arr["ONKEYUP"]);   
            delete qsys.gui.inpArr["onSubmit"];
            delete qsys.gui.inpArr["TextEdit"];
            delete qsys.gui.inpArr["value"];
            delete qsys.gui.inpArr["type"];
            delete qsys.gui.inpArr["TYPE"];
            delete qsys.gui.inpArr["typeFilter"];
            delete qsys.gui.inpArr["COORD"]["WIDTH"];
            delete qsys.gui.inpArr["COORD"]["HEIGHT"];
        };
//--------------------------------------------------------------------------------
        qsys.gui.htmlButtons = function(baseNode,id,coord,className)
        {   var arr = new Array();
            arr['ID'] 				= id + "htmlbtns";
            arr['COORD'] 			= new Array();
            for(var a in coord) 
            	arr['COORD'][a] 	= coord[a];
            arr['COORD']["HEIGHT"] 	= 23;
            qsys.fnc["SID"](baseNode.id);
            qsys.fnc["DIV"](arr);
            qsys.fnc["SID"](arr['ID']);
            arr['ID'] 				= id + "htmlbtn1";
            arr['COORD'] 			= new Array();
            arr['COORD']['ALIGN']  	= "LEFT";
            arr['COORD']['WIDTH']  	= "23";
            arr['className'] 		= "_qsys_editTextBold";
            arr['innerHTML'] 		= "B";
            arr['title'] 			= "Bold";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','b'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn2";
            arr['className'] 		= "_qsys_editTextItalic";
            arr['innerHTML'] 		= "I";
            arr['title'] 			= "Italic";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','i'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn3";
            arr['className'] 		= "_qsys_editTextUnderlined";
            arr['innerHTML'] 		= "U";
            arr['title'] 			= "Underlined";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','u'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn4";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "><";
            arr['title'] 			= "Centreren";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','center'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn5";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Kl";
            arr['title'] 			= "Kleur";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.colorChoose('"+id+"'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn6";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Is";
            arr['title'] 			= "Infoset waarde";
            arr["onMouseUpExe"]   	= "<PHP><FUNCTION>guiItemControl</FUNCTION><RETURN><FUNC>GETISITEMS</FUNC><ID>"+id+"</ID></RETURN></PHP>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn7";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Lk";
            arr['title'] 			= "Link";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.linkChoose('"+id+"'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn8";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Pr";
            arr['title'] 			= "Preview";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textPreview('"+id+"','"+className+"'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn9";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Ul";
            arr['title'] 			= "Unidexed lijst";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','ul'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn10";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Li";
            arr['title'] 			= "Lijst item";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','li'); </EXE>";
            qsys.fnc["DIV"](arr);
            arr['ID'] 				= id + "htmlbtn11";
            arr['className'] 		= "_qsys_editTextNormal";
            arr['innerHTML'] 		= "Gl";
            arr['title'] 			= "Groep lijst";
            arr["onMouseUpExe"]   	= "<EXE>qsys.gui.textTagSelection('"+id+"','li'); qsys.gui.textTagSelection('"+id+"','ul');</EXE>";
            qsys.fnc["DIV"](arr);
            qsys.fnc["SID"](baseNode.id);
        };
        qsys.gui.textPreview = function(id,className)
        {   qsys.fnc["SID"]("corediv");
            arr = new Array();
            arr['ID'] 				= id+"backGround";
            arr['className'] 		= "_qsys_panelBackground";
            arr["COORD"]      		= "<ALIGN>ALL</ALIGN>";
            arr["OPACITY"]    		= 5;
            qsys.fnc["DIV"](arr);
            delete arr["OPACITY"];
            arr['ID'] 				= id+"preview";
            arr["COORD"]     		= new Array();
            arr["COORD"]["ALIGN"] 	= "CENTER";
            arr["COORD"]["WIDTH"] 	= 800;
            arr["COORD"]["HEIGHT"] 	= 600;
            arr["OPACITY"]    		= 100;
            var node = document.getElementById(id);
            arr['className'] 		= className;
            arr["onMouseUpExe"]   	= "<DEL1><DIV>"+id+"backGround</DIV></DEL1>";
            arr["onMouseUpExe"]   	+= "<DEL2><DIV>"+id+"preview</DIV></DEL2>";
            qsys.fnc["DIV"](arr);                    
            qsys.execute("<PHP><FUNCTION>guiItemControl</FUNCTION><RETURN><FUNC>TRANSLATEHTML</FUNC><ID>"+id+"preview</ID><VALUE>"+node.value+"</VALUE></RETURN></PHP>");
        };
//--------------------------------------------------------------------------------
        qsys.gui.colorChoose = function(id)
        {   if (qsys.gui.textUnTagSelection(id,'font')) return;
            qsys.fnc["SID"]("corediv");
            var arr = new Array();
            arr['ID'] 				= id + "backGround";
            arr['className'] 		= "_qsys_panelBackground";
            arr["COORD"]      		= "<ALIGN>ALL</ALIGN>";
            arr["OPACITY"]    		= 5;
            qsys.fnc["DIV"](arr);
            delete arr["OPACITY"];
            arr['ID'] 				= "colorPicker";
            arr['className'] 		= "_qsys_panel";
            arr["COORD"]     		= new Array();
            arr["COORD"]["ALIGN"] 	= "CENTER";
            arr["COORD"]["WIDTH"] 	= 420;
            arr["COORD"]["HEIGHT"] 	= 300;
            qsys.fnc["DIV"](arr);                    
            qsys.fnc["SID"]("colorPicker");
            arr['ID'] 				= id + "buttonOk";
            arr['className'] 		= "_qsys_okButton";
            arr["COORD"]     		= new Array();
            arr["COORD"]["ALIGN"] 	= "CUSTOM";
            arr["COORD"]["LEFT"] 	= 370;
            arr["COORD"]["TOP"] 	= 250;
            arr["COORD"]["WIDTH"] 	= 32;
            arr["COORD"]["HEIGHT"] 	= 32;
            arr["onMouseUpExe"]   	= "<DEL1><DIV>"+id+"backGround</DIV></DEL1>";
            arr["onMouseUpExe"]   	+= "<DEL2><DIV>colorPicker</DIV></DEL2>";
            arr["onMouseUpExe"]   	+= "<EXE>qsys.gui.textTagSelection('"+id+"','font style=\"color:#'+qsys.cpi.hexColor+';\"'); </EXE>";
            qsys.fnc["DIV"](arr);                    
            arr['ID'] 				= id + "buttonBack";
            arr['className'] 		= "_qsys_backButton";
            arr["COORD"]     		= new Array();
            arr["COORD"]["ALIGN"] 	= "CUSTOM";
            arr["COORD"]["LEFT"] 	= 330;
            arr["COORD"]["TOP"] 	= 250;
            arr["COORD"]["WIDTH"] 	= 32;
            arr["COORD"]["HEIGHT"] 	= 32;
            arr["onMouseUpExe"]   	= "<DEL1><DIV>"+id+"backGround</DIV></DEL1>";
            arr["onMouseUpExe"]   	+= "<DEL2><DIV>colorPicker</DIV></DEL2>";
            qsys.fnc["DIV"](arr);                    
            cpi = new Array();
            cpi["ID"]            	= id + "cpi";
            cpi["TARGET"]        	= "colorPicker";
            cpi["LEFT"]          	= 5;
            cpi["TOP"]           	= 5;
            cpi["COLOR"]         	= qsys.cpi.hexColor;
            qsys.fnc["CPI"](cpi);
        };
        qsys.gui.linkChoose = function(id)
        {   if (qsys.gui.textUnTagSelection(id,'a')) return;
            qsys.execute("<PHP><FUNCTION>guiItemControl</FUNCTION><RETURN><FUNC>GETLINKITEMS</FUNC><ID>"+id+"</ID></RETURN></PHP>");
        };
        qsys.gui.linkChosen = function(id)
        {   qsys.gui.textTagSelection(id,'a href=\"'+qsys.obj['inputLink']+'\" ');
        };
        qsys.gui.isChoose = function(id)
        {   qsys.gui.textTag(id,'<is:'+qsys.obj['infoset']+'/>');
        };
//--------------------------------------------------------------------------------
        qsys.gui.addSelectSetItems = function(node,items,itemColors)
        {   var index   = 0;
            var arr     = qsys.XMLToArr(items); 
            var colors  = null;
            if (itemColors) 
                colors = qsys.XMLToArr(itemColors); 
            var doc     = node.ownerDocument;
            if (!doc) 
                doc = node.document;
            if (typeof(node.options) != "undefined") 
                node.options.length = 0;
            for(var key in arr)
            {   var value = arr[key];
                if (value.substring(0,1) != "<")
                {   value = qsys.stripHtmlForInput(value);
                    var option = doc.createElement("OPTION");
                    if (typeof(node.options) != "undefined") 
                        node.options[node.options.length] = option;
                    else 
                        node.appendChild(option);
                    option.text = value;
                    option.value = key;
                    if (colors) 
                        if (colors[key]) 
                            option.style.background = colors[key];
                } 
                else 
                {   var option      = doc.createElement("OPTGROUP");
                    option.label    = qsys.stripHtmlForInput(key);
                    node.appendChild(option);
                    qsys.gui.addSelectSetItems(option,value);                    
                }
            }
        };
//--------------------------------------------------------------------------------
        qsys.gui.addSelect = function(id,baseId,arr)
        {   var baseNode    = document.getElementById(baseId);
            var selectNode  = document.getElementById(id);
            if (selectNode) 
                selectNode.parentNode.removeChild(selectNode);
            selectNode                  = document.createElement("SELECT");
            selectNode.creationIndex    = qsys.div.creationIndex++;
            selectNode.id               = id;   
            qsys.obj["BASEDIV"]         = baseId;            
            qsys.gui.addProperties(arr,qsys.gui.selArr);
            for(var key in qsys.gui.selArr) 
                selectNode[key] = qsys.gui.selArr[key];        
            qsys.div.setCoord(selectNode,qsys.gui.selArr["COORD"]);
            selectNode.minWidth     = selectNode.width;
            selectNode.minHeight    = selectNode.height;
            selectNode.baseid       = baseId;     
            baseNode.appendChild(selectNode);            
            if (arr["ITEMS"]) 
            {   selectNode.options.length = 0;
                qsys.gui.addSelectSetItems(selectNode,arr["ITEMS"],arr["ITEMCOLORS"]);   
            }
            if (arr["ITEMID"])
            {   selectNode.ITEMID = arr["ITEMID"];
            }
            if (arr["ITEMINDEX"]) 
            {   if (selectNode.options[arr["ITEMINDEX"]] != undefined)
                {   selectNode.selectedIndex = arr["ITEMINDEX"];
                    qsys.obj[selectNode.ITEMID] = selectNode.options[arr["ITEMINDEX"]].value;
                } else selectNode.selectedIndex = 0;
            }                
            if(!arr["onChange"]) 
                arr["onChange"] = "";
            selectNode.onChange         = arr["onChange"];
            qsys.setEvent(selectNode, "onchange");
            qsys.gui.selArr["title"]    = "";
            qsys.gui.selArr["onChange"] = false;
            qsys.gui.selArr["multiple"] = false;
        };
//--------------------------------------------------------------------------------
        qsys.gui.addSelect1 = function(id,baseId,arr)
        {   var baseNode    = document.getElementById(baseId);
            var selectNode  = document.getElementById(id);
            if (selectNode) 
                selectNode.parentNode.removeChild(selectNode);
            selectNode                  = document.createElement("DIV");
            selectNode.creationIndex    = qsys.div.creationIndex++;
            selectNode.id               = id;   
            baseNode.appendChild(selectNode);            
            qsys.obj["BASEDIV"]         = baseId;            
            qsys.div.setCoord(selectNode,qsys.XMLToArr(arr["COORD"]));
            var sel = new Array();
            sel["ITEMS"] = arr["ITEMS"];
            sel["ITEMINDEX"] = arr["ITEMINDEX"];
            sel["ITEMID"] = arr["ITEMID"];
            sel["onChange"] = arr["onChange"];
            qsys.lst.selectInit(selectNode,sel);            
        };
//--------------------------------------------------------------------------------
        qsys.gui.textSetText = function(node,text,selectionStart,selectionEnd)
        {   var textShow = "";
            var textWork = text;
            node.raw = new Array();
            node.raw.items = new Array();
            node.raw.count = 0;
            var pos = textWork.indexOf("<");
            if (selectionStart) 
                if (selectionEnd) 
                {  	node.selectionStart = selectionStart;
                    node.selectionEnd = selectionEnd;
                    node.raw.selectionStart = node.selectionStart;
                    node.raw.selectionEnd = node.selectionEnd;
                }
            var abspos = 0;
            var posEnd = 0;
            while(pos >= 0)
            {   abspos += pos;
                textShow += textWork.substr(0,pos);
                textWork = textWork.substr(pos+1,textWork.length);
                posEnd = 0;
                if (textWork.substr(0,2) == "b>") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,3) == "/b>") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,2) == "i>") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,3) == "/i>") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,2) == "u>") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,3) == "/u>") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,5) == "font ") posEnd = textWork.indexOf(">");
                if (textWork.substr(0,6) == "/font>") posEnd = textWork.indexOf(">");
                if (posEnd)
                {   textShow += String.fromCharCode(182);
                    node.raw.items[node.raw.count++] = "<"+textWork.substr(0,posEnd+1);
                    textWork = textWork.substr(posEnd+1,textWork.length);
                } else textShow += "<";                 
                if (abspos < node.raw.selectionStart) 
                {   node.selectionStart -= (item.length-1);
                    node.selectionEnd -= (item.length-1);
                } else if (abspos < node.raw.selectionEnd)
                {   node.selectionEnd -= (item.length-1);
                }
                abspos += 1;
                pos = textWork.indexOf("<");
            }
            textShow += textWork;
            node.value = textShow;
            node.raw.value = text;
        };
        qsys.gui.textGetText = function(node)
        {   var text = "";
            var textWork = node.value;
            node.raw.count = 0;
            var pos = textWork.indexOf(String.fromCharCode(182));
            node.raw.selectionStart = node.selectionStart;
            node.raw.selectionEnd = node.selectionEnd;
            var abspos = 0;
            while(pos >= 0)
            {   abspos += pos;
                text += textWork.substr(0,pos);
                textWork = textWork.substr(pos+1,textWork.length);
                item = node.raw.items[node.raw.count++];
                text += item;
                if (abspos < node.selectionStart) 
                {   node.raw.selectionStart += (item.length-1);
                    node.raw.selectionEnd += (item.length-1);
                } else if (abspos < node.selectionEnd)
                {   node.raw.selectionEnd += (item.length-1);
                }
                abspos += 1;
                pos = textWork.indexOf(String.fromCharCode(182));
            }
            text += textWork;
            node.raw.value = text;
        };
        qsys.gui.textTagSelection1 = function(id,tag)
        {   var node    = document.getElementById(id);
            if (node.setSelectionRange) 
            {  	if (qsys.gui.textUnTagSelection(id,tag)) return;
                qsys.gui.textGetText(node);
                var tagstart = "<"+tag+">";
                var pureTagLength = tag.indexOf(" ");
                if (pureTagLength < 0)
                    pureTagLength = tag.length;                
                tagend = "</"+tag.substr(0,pureTagLength)+">";            
                var selectionStart = node.raw.selectionStart;
                var selectionEnd = node.raw.selectionEnd;
                node.raw.value = node.raw.value.substring(0,node.raw.selectionStart) + tagstart + node.raw.value.substring(node.raw.selectionStart,node.raw.selectionEnd) + tagend + node.raw.value.substring(node.raw.selectionEnd,node.raw.value.length);
                if (node.ITEMID)
                   qsys.obj[node.ITEMID] = node.raw.value;
                node.raw.selectionStart = selectionStart;
                node.raw.selectionEnd = selectionEnd+tagstart.length+tagend.length;
                qsys.gui.textSetText(node,node.raw.value,node.raw.selectionStart,node.raw.selectionEnd);
  	        }
        };
        qsys.gui.textUnTagSelection1 = function(id,tag)
        {   var node    = document.getElementById(id);
            if (node.setSelectionRange) 
            {   qsys.gui.textGetText(node);
                var range = node.raw.value.substring(node.raw.selectionStart,node.raw.selectionEnd);
				var pureTagLength = tag.indexOf(" ");
                if (pureTagLength >= 0)
                    tag = tag.substring(0,tag.indexOf(" "));
                var tagstart = "<"+tag;
                var tagend = "</"+tag+">";            
                if ((range.indexOf(tagstart) != -1) && (range.indexOf(tagend) != -1))
                {   tagstart = range.substring(range.indexOf(tagstart),range.length);
                    tagstart = tagstart.substring(0,tagstart.indexOf('>')+1);
                    var selectionStart = node.raw.selectionStart;
                    var selectionEnd = node.raw.selectionEnd;
                    node.raw.value = node.raw.value.substring(0,node.raw.selectionStart+range.indexOf(tagstart))+range.substring(range.indexOf(tagstart)+tagstart.length,range.indexOf(tagend))+node.raw.value.substring(node.raw.selectionStart+range.indexOf(tagend)+tagend.length,node.raw.value.length);
                    if (node.ITEMID)
                       qsys.obj[node.ITEMID] = node.raw.value;
                    node.raw.selectionStart = selectionStart;
                    node.raw.selectionEnd = selectionEnd-tagstart.length-tagend.length;
                    qsys.gui.textSetText(node,node.raw.value,node.raw.selectionStart,node.raw.selectionEnd);
                    return true;
                }                
  	        }
            return false;
        };
        qsys.gui.textTag = function(id,tag)
        {   var node    		= document.getElementById(id);
            var selectionStart 	= node.selectionStart+tag.length;
            node.value = node.value.substring(0,node.selectionStart) + tag + node.value.substring(node.selectionStart,node.value.length);                
            if (node.ITEMID)
               qsys.obj[node.ITEMID] = node.value;
            node.selectionStart = selectionStart;
            node.selectionEnd = selectionStart;
        };
        qsys.gui.textTagSelection = function(id,tag)
        {   var node    = document.getElementById(id);
            if (node.setSelectionRange) 
            {   if (qsys.gui.textUnTagSelection(id,tag)) return;
	            var selecTxt;
	            var selectArr = Array();
	            var tagstart = "<"+tag+">";
                var pureTagLength = tag.indexOf(" ");
                if (pureTagLength < 0)
                    pureTagLength = tag.length;                
                var tagend = "</"+tag.substr(0,pureTagLength)+">";            
                var selectionStart = node.selectionStart;
                var selectionEnd = node.selectionEnd;
                selectTxt = node.value.substring(selectionStart, selectionEnd);
                if (tag == "li")
				{	var crlf = "\r\n";
					if (selectTxt.indexOf(crlf) != -1)
						selectArr = selectTxt.split(crlf);
					else
					{	selectArr = selectTxt.split("\n");
						crlf = "\n";
					}
					selectTxt = "";
					for(var line in selectArr)
						selectTxt += "<li>" + selectArr[line] + "</li>" + crlf;
					selectTxt = selectTxt.substr(0, (selectTxt.length - crlf.length));
                	node.value = node.value.substring(0,node.selectionStart) + selectTxt + node.value.substring(node.selectionEnd,node.value.length);
					node.selectionStart = selectionStart;
					node.selectionEnd = selectionStart + selectTxt.length;
				}
				else
                {	node.value = node.value.substring(0,node.selectionStart) + tagstart + selectTxt + tagend + node.value.substring(node.selectionEnd,node.value.length);
					node.selectionStart = selectionStart;
					node.selectionEnd = selectionEnd+tagstart.length+tagend.length;
				}
                if (node.ITEMID)
                   qsys.obj[node.ITEMID] = node.value;
  	        }
        };
        qsys.gui.textUnTagSelection = function(id,tag)
        {   var node    = document.getElementById(id);
            if (node.setSelectionRange) 
            {   var range 		= node.value.substring(node.selectionStart,node.selectionEnd);
                var startTxt 	= node.value.substring(0, node.selectionStart);
                var endTxt 		= node.value.substring(node.selectionEnd, node.value.length);
                var pureTagLength = tag.indexOf(" ");
                if (pureTagLength >= 0)
                   	tag = tag.substring(0,tag.indexOf(" "));
                var tagstart = "<"+tag;
                var tagend = "</"+tag+">";            
                if ((range.indexOf(tagstart) != -1) && (range.indexOf(tagend) != -1))
                {   tagstart = range.substring(range.indexOf(tagstart),range.length);
                    tagstart = tagstart.substring(0,tagstart.indexOf('>')+1);
                    var selectionStart = node.selectionStart;
                    var selectionEnd = node.selectionEnd;
                    if (tag == "li")
                    {	var selectArr = Array();
                    	if (range.indexOf(tagstart) != -1)
							selectArr = range.split(tagend);
						range = "";
						for(var line in selectArr)
						{	selectArr[line] = selectArr[line].replace("<li>", "");
							range += selectArr[line];
                    	}
                    	node.value = startTxt + range + endTxt;	
                    	node.selectionStart = selectionStart;
                    	node.selectionEnd = selectionStart + range.length;
                    }
                    else
                    {	node.value = node.value.substring(0,node.selectionStart+range.indexOf(tagstart))+range.substring(range.indexOf(tagstart)+tagstart.length,range.indexOf(tagend))+node.value.substring(node.selectionStart+range.indexOf(tagend)+tagend.length,node.value.length);
						node.selectionStart = selectionStart;
						node.selectionEnd = selectionEnd-tagstart.length-tagend.length;
					}
                    if (node.ITEMID)
                       qsys.obj[node.ITEMID] = node.value;
                    return true;
                }                
  	        }
            return false;
        };
//--------------------------------------------------------------------------------
        qsys.gui.addSelectItemsAndOrder  = function(id,baseId,arr)
        {   var baseNode    = document.getElementById(baseId);
            baseNode.ITEMID = arr["ITEMID"];
            qsys.obj[baseNode.ITEMID] = arr["SELECTED"];
            baseNode.iot_enum = arr["ENUM"];
            baseNode.iot_values = arr["VALUES"];
            qsys.gui.updateSelectItemsAndOrder(baseId);            
        };
        qsys.gui.addSIAO = function(baseId,item)
        {   var baseNode    = document.getElementById(baseId);
            var selected 	= qsys.XMLToArr(qsys.obj[baseNode.ITEMID]);
            var out 		= new Array();
            var i 			= 0;
            out[i++] = item;
            for(var select in selected)
            {   out[i++] = selected[select];
            }
            qsys.obj[baseNode.ITEMID] = qsys.arrToXML(out);
            qsys.gui.updateSelectItemsAndOrder(baseId);
        };
        qsys.gui.delSIAO = function(baseId,item)
        {   var baseNode    = document.getElementById(baseId);
            var selected 	= qsys.XMLToArr(qsys.obj[baseNode.ITEMID]);
            var out 		= new Array();
            var i 			= 0;
            for(var select in selected)
            {   if (selected[select] != item)
                    out[i++] = selected[select];
            }
            qsys.obj[baseNode.ITEMID] = qsys.arrToXML(out);
            qsys.gui.updateSelectItemsAndOrder(baseId);
        };
        qsys.gui.upSIAO = function(baseId,item)
        {   var baseNode    = document.getElementById(baseId);
            var selected 	= qsys.XMLToArr(qsys.obj[baseNode.ITEMID]);
            for(var select in selected)
                if (selected[select] == item)
                {   selected[select] = selected[Number(select)-1];
                    selected[Number(select)-1] = item;
                }
            qsys.obj[baseNode.ITEMID] = qsys.arrToXML(selected);
            qsys.gui.updateSelectItemsAndOrder(baseId);
        };
        qsys.gui.dnSIAO = function(baseId,item)
        {   var baseNode    = document.getElementById(baseId);
            var selected 	= qsys.XMLToArr(qsys.obj[baseNode.ITEMID]);
            for(var select in selected)
                if (selected[select] == item)
                {   selected[select] = selected[Number(select)+1];
                    selected[Number(select)+1] = item;
                    item = "";
                }
            qsys.obj[baseNode.ITEMID] = qsys.arrToXML(selected);
            qsys.gui.updateSelectItemsAndOrder(baseId);
        };
        qsys.gui.updateSelectItemsAndOrder = function(baseId)
        {   var baseNode    = document.getElementById(baseId);
            var items 		= qsys.XMLToArr(baseNode.iot_enum);
            var values 		= qsys.XMLToArr(baseNode.iot_values);
            var	selected 	= qsys.XMLToArr(qsys.obj[baseNode.ITEMID]);
            var html 		= "<TABLE style='width:100%; height:100%;' >";
            html += "<TR>";
            html += "<TD style='width:50%; height:100%;' valign='top' >";
            html += "<TABLE>";            
            for(var item in items)
            {   var found = false;
                for(var select in selected)
                    if (values[item] == selected[select])
                        found = true;
                if (!found)
                {   html += "<TR>";
                    html += "<TD>";
                    html += items[item];
                    html += "</TD>";
                    html += "<TD class='_qsys_iot_toselected' onClick='qsys.gui.addSIAO(\""+baseId+"\",\""+values[item]+"\")'>";
                    html += "&nbsp;&nbsp;&nbsp;";
                    html += "</TD>";
                    html += "</TR>";
                }
            }
            html += "</TABLE>";
            html += "</TD>";
            html += "<TD style='width:50%; height:100%;' valign='top' >";
            html += "<TABLE>";
            for(var select in selected)
            {   html += "<TR>";
                html += "<TD class='_qsys_iot_fromselected' onClick='qsys.gui.delSIAO(\""+baseId+"\",\""+selected[select]+"\")'>";
                html += "&nbsp;&nbsp;&nbsp;";
                html += "</TD>";
                html += "<TD>";
                for(var item in items)
                    if (values[item] == selected[select])
                        html += items[item];
                html += "</TD>";
                if (select == 0) html += "<TD class='_qsys_iot_up_off' >";
                else html += "<TD class='_qsys_iot_up' onClick='qsys.gui.upSIAO(\""+baseId+"\",\""+selected[select]+"\")'>";
                html += "&nbsp;&nbsp;";
                html += "</TD>";
                if ((Number(select)+1) == selected.length) html += "<TD class='_qsys_iot_dn_off' >";
                else html += "<TD class='_qsys_iot_dn' onClick='qsys.gui.dnSIAO(\""+baseId+"\",\""+selected[select]+"\")'>";
                html += "&nbsp;&nbsp;";
                html += "</TD>";
                html += "</TR>";
            }
            html += "</TABLE>";
            html += "</TD>";
            html += "</TR>";
            html += "</TABLE>";
            baseNode.innerHTML = html;
        };
        qsys.gui.addOption  = function(id,baseId,arr)
        {   var baseNode    = document.getElementById(baseId);
            var optionNode  = document.getElementById(id);
            if (optionNode) 
                optionNode.parentNode.removeChild(optionNode);
            var coordOpt = qsys.XMLToArr(arr["COORD"]);
            var coordLbl = qsys.XMLToArr(arr["COORD"]);
            coordOpt["WIDTH"] = 16;
            coordOpt["HEIGHT"] = 16;
            coordOpt["WIDTHOFFSET"] = 4;
            coordOpt["HEIGHTOFFSET"] = 8;
            coordLbl["WIDTHOFFSET"] = 4;
            coordLbl["HEIGHTOFFSET"] = 8;
            var items = qsys.XMLToArr(arr["ITEMS"]);
            for(var key in items)
            {   var a = qsys.XMLToArr(items[key]);
                optionNode                  = document.createElement("INPUT");
                optionNode.creationIndex    = qsys.div.creationIndex++;
                optionNode.id               = id+a["VALUE"];   
                optionNode.optid            = id;   
                optionNode.value            = a["VALUE"];   
    			optionNode.setAttribute("type","radio");                 
    			optionNode.setAttribute("name",arr["ITEMID"]);                 
    			optionNode.setAttribute("checked","checked");                 
                optionNode.className        = arr["className"];
                optionNode.ITEMID           = arr["ITEMID"];
                optionNode.index            = a["VALUE"]; 
                if (arr["onChange"]) 
                    optionNode.onChange     = arr["onChange"];
                baseNode.appendChild(optionNode);            
                qsys.setEvent(optionNode, "onclick");
                qsys.obj["BASEDIV"]         = baseId;            
                qsys.div.setCoord(optionNode,coordOpt);
                var labelNode               = document.createElement("DIV");
                labelNode.creationIndex    	= qsys.div.creationIndex++;
                labelNode.id               = "LBL"+id+a["VALUE"];   
                labelNode.innerHTML        = a["LABEL"];   
                labelNode.className        = arr["className"];
                baseNode.appendChild(labelNode);            
                qsys.obj["BASEDIV"]         = baseId;            
                qsys.div.setCoord(labelNode,coordLbl);            
            }
            if (arr["ITEMINDEX"]) 
            {   var node = document.getElementById(arr["ID"]+arr["ITEMINDEX"]);
                if (node)
                {   node.checked = true;
                    if (node.ITEMID)
                       qsys.obj[node.ITEMID] = arr["ITEMINDEX"];
                    var a = 0;
                    node = document.getElementById(arr["ID"]+a);
                    while(node)
                    {   if (arr["ITEMINDEX"] != a) node.checked = false;
                        a++;
                        node = document.getElementById(arr["ID"]+a);
                    }
                }
            }
        };
//--------------------------------------------------------------------------------
        qsys.fnc["TRV"] = function(arr)
        {   var bd = document.getElementById(arr["BASEDIV"]);
            bd['ITEMID'] = arr['ITEMID'];
            if (arr['VALUE']) qsys.obj[bd['ITEMID']] = arr['VALUE'];
            bd.xmlEnum = arr["ENUM"];
            bd.arrWorkingCopy = new Array();
            qsys.gui.xmlArray(bd.xmlEnum,0,bd.arrWorkingCopy,bd.id,bd.id,0);
            qsys.gui.getXml();        
        };
//--------------------------------------------------------------------------------            
        qsys.gui.xmlArray = function(xml,pos,arr,base,zbase,depth)
        {   var i, i1, s = pos, a = 0, key, start, z = 1,vp=0;
            while (xml.length > s)
            {   i   = xml.indexOf('</',s) - s;
                if (i == 0)
                {   if (arr[z-1]) 
                    {   if (arr[z-1][0]) arr[z-1][0]['___last'] = 1;                    
                        else arr[z-1]['___last']    = 1;                    
                    } 
                    return s-pos;                   
                }
                i = xml.indexOf('<',s) - s;
                s += i;
                i = (xml.indexOf('>',s) - 1) - s;
                key = xml.substr(s + 1,i);
                
                s += i + 2;
                start = s;
                i = xml.indexOf('<',s) - s;
                i1 = xml.indexOf('</'+key+'>',s) - s;

                vp = key.indexOf(".:.");
                if (vp>0)   
                {   itemid = key.substr(0,vp);
                    key = key.substr(vp+3,key.length);
                } else itemid = "";                
                arr[z] = new Array();
                if ((i != 0) || (i == i1))
                {   arr[z]['___key']            = key;
                    arr[z]['___itemid']         = itemid;
                    arr[z]['___id']             = base+"."+key;
                    arr[z]['___idx']            = zbase+"."+z;
                    arr[z]['___value']          = xml.substr(s,i);
                    arr[z]['___start']          = start;
                    arr[z]['___depth']          = depth;
                    arr[z]['___type']           = qsys.gui.getType(arr[z]);
                    s += i;
                    arr[z++]['___len']          = s-start;
                    i = (xml.indexOf('>',s) - 2) - s;
                    s += i + 3;
                    if  (key.substr(key.length-1,1)=="/")
                        alert(xml.substr(s-20,80)+"_"+key);
                } else {
                    arr[z]['0'] = new Array();
                    arr[z]['0']['___key']       = key;
                    arr[z]['0']['___itemid']    = itemid;
                    arr[z]['0']['___id']        = base+"."+key;
                    arr[z]['0']['___idx']       = zbase+"."+z;
                    arr[z]['0']['___start']     = start;
                    arr[z]['0']['___depth']     = depth;
                    arr[z]['0']['___type']      = qsys.gui.getType(arr[z]['0']);
                    s += qsys.gui.xmlArray(xml,s,arr[z],base+"."+key,zbase+"."+z,depth+1);   
                    arr[z++]['0']['___len']     = s-start;                    
                    i = (xml.indexOf('>',s) - 2) - s;
                    s += i + 3;
                }
            }
        }        
//--------------------------------------------------------------------------------
        qsys.gui.getType = function (a)
        {   var ns = a["___id"]+"."+a["___key"];
            var pos = ns.indexOf(".");
            var pos1 = 0, i = 0;
            var typ1 = "";
            var typeArr = new Array();
            pos = ns.indexOf(".");
            while(pos >= 0)
            {   typeArr[i++] = ns.substring(pos1,pos);   
                pos1 = pos+1;
                pos = ns.indexOf(".",pos1);
            }
            if (i == 3)  typeArr[2] = "";
            else if (i>3) delete typeArr[2];
            if (i == 5)  typeArr[4] = "";
            else if (i>5) delete typeArr[4];
            for(var it in typeArr)
            {   if (typ1 != "") 
                    typ1 += "_";
                typ1 += typeArr[it];
            }
            if (typ1.length > 33)
                if (typ1.substr(0,33) == "project_projects_functions_txtXML") typ1 = typ1.substr(34,typ1.length);
            if (!qsys.gui.elements[typ1])
            {   qsys.gui.elements[typ1] = new Array()
                qsys.gui.elements[typ1]['id'] 				= 0;
                qsys.gui.elements[typ1]['enumElementFlags'] = 1;       //Unknown
                qsys.gui.elements[typ1]['txtId']           	= typ1;
                qsys.gui.elements[typ1]['vc250Name']       	= typ1;
                qsys.gui.elements[typ1]['vc250Title']      	= "Unknown";
                qsys.gui.elements[typ1]['txtHelp']         	= "Unknown";
                qsys.gui.elements[typ1]['lnkXmlEditConstructor']  	= 0;
                qsys.gui.elements[typ1]['lnkXmlEditDestructor']  	= 0;
                qsys.gui.elements[typ1]['lnkXmlEditPopulate']  		= 0;
                qsys.gui.elements[typ1]['lnkXmlEditAccept']  		= 0;
            }
            return typ1;
        }
//--------------------------------------------------------------------------------
        qsys.gui.getXml = function()
        {   var bd = document.getElementById(qsys.obj["BASEDIV"]);
            if (!bd.ITEMID) alert(bd.id);
            qsys.fnc["CHG"](qsys.XMLToArr("<DIV><ID>"+qsys.obj["BASEDIV"]+"</ID><CLR>CLR</CLR></DIV>"));
            qsys.gui.arr["COORD"]       = "<ALIGN>TOP</ALIGN><HEIGHT>17</HEIGHT><WIDTH>"+(Number(bd.width)-16)+"</WIDTH>";
            qsys.gui.arrIndex           = 0;
            return qsys.gui.showXml(bd.arrWorkingCopy,0,1);
        }
//--------------------------------------------------------------------------------
        qsys.gui.showXml = function(a,pre,exp)
        {   var t;
            pre |= exp; 
            for (t in a) 
                if (t != 0)
                {   if (a[t][0])  //Element
                    {   if (a[t][0]["___open"] == "open")
                        {   qsys.gui.showLine("open",a[t][0],pre);
                            if (a[t][0]["___last"])  pre &= ~exp;  
                            qsys.gui.showXml(a[t],pre,exp*2);
                        } else qsys.gui.showLine("closed",a[t][0],pre);
                    } else {
                        if (a[t]['value'])
                            qsys.gui.showLine("property",a[t],pre);
                        else
                            qsys.gui.showLine("checkbox",a[t],pre);
                    }
                        
                }
            delete t;
            return;
        }
//--------------------------------------------------------------------------------
        qsys.gui.showLine= function(type,a,pre)
        {   var basediv = qsys.obj["BASEDIV"];
            var bd = document.getElementById(qsys.obj["BASEDIV"]);
            var xml = qsys.arrToXML(a);
            var arr = new Array;    
            qsys.gui.arr["ID"]  = "__DBGUGXMLITEM" + String(qsys.gui.arrIndex);
            if (qsys.gui.propertiesSelectedId == qsys.gui.arr["ID"]) qsys.gui.arr["className"]            = "_qsys_xmlTextSelected";
            else qsys.gui.arr["className"]            = "_qsys_xmlText";
            qsys.fnc["DIV"](qsys.gui.arr);   
            qsys.obj["BASEDIV"]         = qsys.gui.arr["ID"];            
            if (a["___depth"]>0)
            {   for(i=0;i<a["___depth"];i++)
                {   arr["ID"]                   = qsys.gui.arr["ID"] + "spc" + i;
                    arr["COORD"]                = "<ALIGN>LEFT</ALIGN><WIDTH>16</WIDTH>";
                    if (a["___depth"] == (i+1)) 
                    {   if (a["___last"]) arr["className"]          = "_qsys_xmlProperyLast";
                        else arr["className"]                       = "_qsys_xmlPropery";
                    } else {
                        if (pre & 0x02) arr["className"]            = "_qsys_xmlLine";
                        else arr["className"]                       = "_qsys_xmlIndent";
                    }
                    qsys.fnc["DIV"](arr);        
                    pre /= 2;
                }
            }
            arr["ID"]                   = qsys.gui.arr["ID"] + "type";
            arr["COORD"]                = "<ALIGN>LEFT</ALIGN><WIDTH>16</WIDTH>";
            switch(type)
            {
            case "open":
                arr["className"]        = "_qsys_xmlOpen";
                arr["onMouseUpExe"]     = "<EXE>qsys.gui.closeElm('" + a["___idx"] + "','" + basediv + "')</EXE>";
                qsys.fnc["DIV"](arr);        
                break;
            case "closed":            
                arr["className"]        = "_qsys_xmlClosed";
                arr["onMouseUpExe"]     = "<EXE>qsys.gui.openElm('" + a["___idx"] + "','" + basediv + "')</EXE>";
                qsys.fnc["DIV"](arr);        
                break;
            }
            arr["ID"]                   = qsys.gui.arr["ID"] + "tag";
            arr["COORD"]                = "<ALIGN>LEFT</ALIGN><WIDTH>16</WIDTH>";
            arr["className"]            = "_qsys_xmlType";
//            arr["onMouseUpExe"]         = "";
//            arr["onMouseUpExe"]         = "<EXE>qsys.gui.selectElement('"+qsys.gui.arr["ID"]+"','" + basediv + "'); </EXE>";                
            arr["ID"]                   = qsys.gui.arr["ID"] + "text";
            arr["COORD"]                = "<ALIGN>CLIENT</ALIGN>";
            arr["className"]            = "";
            if (bd.type == "checkbox")
            {   arr["innerHTML"] = " <INPUT name='"+bd.ITEMID+"' id='"+bd['ITEMID']+a["___itemid"]+"' type='checkbox' ";
                if (qsys.obj[bd.ITEMID])
                    if (qsys.obj[bd.ITEMID].indexOf("<"+a["___itemid"]+">"+a["___itemid"]+"</"+a["___itemid"]+">") != -1)
                        arr["innerHTML"] += " checked='true' ";
                arr["innerHTML"] += " value='"+a["___itemid"]+"' onClick='qsys.checkBoxToObj(\""+bd['ITEMID']+"\",\""+a["___itemid"]+"\",\""+bd.id+"\");' >"+a["___key"]+"</INPUT>";
            } else {
                if (type == "property") arr["innerHTML"]    = "`" + a["___key"] + "` = `" + a["___value"] + "`";
                else  
                {   if (a["___value"] ==  undefined) arr["innerHTML"]       = a["___key"];
                    else  arr["innerHTML"]       = "`" + a["___key"] + "` = `" + a["___value"] + "`";
                }
            }
            arr["style"]                = "<overflow>hidden</overflow>";
            qsys.fnc["DIV"](arr);        
            qsys.obj["BASEDIV"] = basediv;
            qsys.gui.arrIndex++
            delete basediv;
            delete arr;
        }
//--------------------------------------------------------------------------------
        qsys.gui.closeElm= function(idx,bdid)
        {   qsys.obj["BASEDIV"] = bdid;
            var bd = document.getElementById(bdid);
            var arr = bd.arrWorkingCopy;
            var tag;
            var root = idx.substr(0,idx.indexOf("."));
            idx = idx.substr(idx.indexOf(".")+1,idx.length);
            while(idx != "")
            {   if (idx.indexOf(".")>0)
                {   tag = idx.substr(0,idx.indexOf("."));
                    idx = idx.substr(idx.indexOf(".")+1,idx.length);
                } else {
                    tag = idx;
                    idx = "";
                }
                if (arr[tag]) arr = arr[tag]; 
                else idx ="";
            }
            arr[0]["___open"] = "closed";
            delete arr;
            qsys.gui.getXml();
        }
        qsys.gui.openElm= function(idx,bdid)
        {   qsys.obj["BASEDIV"] = bdid;
            var bd = document.getElementById(bdid);
            var arr = bd.arrWorkingCopy;
            var tag;
            var root = idx.substr(0,idx.indexOf("."));
            idx = idx.substr(idx.indexOf(".")+1,idx.length);
            while(idx != "")
            {   if (idx.indexOf(".")>0)
                {   tag = idx.substr(0,idx.indexOf("."));
                    idx = idx.substr(idx.indexOf(".")+1,idx.length);
                } else {
                    tag = idx;
                    idx = "";
                }
                if (arr[tag]) arr = arr[tag]; 
                else idx ="";
            }
            arr[0]["___open"] = "open";
            delete arr;
            qsys.gui.getXml();
            qsys.checkBoxToObj(bd.ITEMID,arr[0]["___itemid"],bdid);
        }
        qsys.gui.selectElement = function(id)
        {   if (qsys.gui.propertiesSelectedId != id)
            {   if (qsys.gui.propertiesSelectedId)
                    qsys.fnc["CHG"](qsys.XMLToArr("<DIV><ID>"+qsys.gui.propertiesSelectedId+"</ID><className>_qsys_xmlText</className></DIV>"));        
                qsys.gui.propertiesSelectedId = id;
                if (qsys.gui.propertiesSelectedId)
                    qsys.fnc["CHG"](qsys.XMLToArr("<DIV><ID>"+qsys.gui.propertiesSelectedId+"</ID><className>_qsys_xmlTextSelected</className></DIV>"));        
            }
        }
//--------------------------------------------------------------------------------
        qsys.chg["OPT"] = function(arr) 
        {   if (!arr["ID"]) 
                arr["ID"] = qsys.obj["ID"];
            for(var key in arr)
            {   if (arr[key])
                {   switch(key)
                    {   case "BASEDIV":
                        case "ID":
                        case "COORD":
                            break;
                        case "CHECKED":
                            var node = document.getElementById(arr["ID"]+arr[key]);
                            if (node)
                            {   node.checked = true;
                                if (node.ITEMID)
                                   qsys.obj[node.ITEMID] = arr[key];
                                var a = 1;
                                node = document.getElementById(arr["ID"]+a);
                                while(node)
                                {   if (arr[key] != a) node.checked = false;
                                    a++;
                                    node = document.getElementById(arr["ID"]+a);
                                }
                            } else {
                                var a = 1;
                                var node = document.getElementById(arr["ID"]+a);
                                while(node)
                                {   node.checked = false;
                                    if (node.ITEMID)
                                       qsys.obj[node.ITEMID] = 0;
                                    a++;
                                    node = document.getElementById(arr["ID"]+a);
                                }
                            
                            }
                            break;
                        default:
                            if (typeof(node[key]) == "object")
                            {   var innerArray = qsys.XMLToArr(arr[key]);
                                for(var innerKey in innerArray)
                                    node[key][innerKey] = innerArray[innerKey];
                            } 
                            else 
                                node[key] = arr[key];
                            break;
                    }
                }
            }
        };
//--------------------------------------------------------------------------------
        qsys.chg["SEL"] = function(arr) 
        {   if (!arr["ID"]) 
                arr["ID"] = qsys.obj["ID"];
            var node = document.getElementById(arr["ID"]);
            if (!node) 
            {   //alert("Change sel without sel..." + arr["ID"]);
                return;
            }
            if (arr["COORD"])                        
            {   if (typeof(arr["COORD"]) == "string")
                    qsys.div.setCoord(node,qsys.XMLToArr(arr["COORD"]));
                else 
                    qsys.div.setCoord(node,arr["COORD"]);
            }
            for(var key in arr)
            {   if (arr[key])
                {   switch(key)
                    {   case "BASEDIV":
                        case "ID":
                        case "COORD":
                            break;
                        case "ITEMS":
                            var itemIndex           = node.selectedIndex;
                            node.options.length     = 0;
                            qsys.gui.addSelectSetItems(node,arr["ITEMS"],arr["ITEMCOLORS"]);   
                            if (node.options.length > itemIndex)
                                node.selectedIndex = itemIndex;
                            break;
                        case "ITEMINDEX":
                            if (node.options.length > arr["ITEMINDEX"])
                                node.selectedIndex = arr["ITEMINDEX"];
                            if (node.ITEMID)
                               qsys.obj[node.ITEMID] = node.selectedIndex;
//                               alert(node.ITEMID+"_"+node.selectedIndex);
                            break;
                        default:
                            if (typeof(node[key]) == "object")
                            {   var innerArray = qsys.XMLToArr(arr[key]);
                                for(var innerKey in innerArray)
                                    node[key][innerKey] = innerArray[innerKey];
                            } 
                            else 
                                node[key] = arr[key];
                            break;
                    }
                }
            }
        };
//--------------------------------------------------------------------------------
//        qsys.evt["change"] = function(evt,elm) 
//        {   if (elm.onChange) 
//                qsys.execute(elm.onChange,elm.id); 
//        };
//--------------------------------------------------------------------------------
        qsys.gui.chgItem = function(key,id,baseId,outerArray,innerArray)
        {        
        };
//--------------------------------------------------------------------------------
        qsys.gui.addItem = function(key,id,baseId,outerArray,innerArray)
        {   switch(key)
            {   case "PNL":       qsys.gui.addPanel(id,baseId,innerArray);  break;
                case "SPC":       qsys.gui.addSpace(id,baseId,innerArray);  break;
                case "BTN":       qsys.gui.addButton(id,baseId,innerArray); break;
                case "INP":       qsys.gui.addInput(id,baseId,innerArray);  break;
                case "SEL":       qsys.gui.addSelect(id,baseId,innerArray); break;
                case "OPT":       qsys.gui.addOption(id,baseId,innerArray); break;
                case "LST":       qsys.gui.addList(id,baseId,innerArray);   break;
                case "TXT":       qsys.gui.addText (id,baseId,innerArray);  break;
                case "RIGHTPNL":  
                case "RP": 
                    qsys.gui.divArr["COORD"]["ALIGN"] = "RIGHT";  
                    qsys.gui.addPanel(id,baseId,innerArray); 
                    break;
                case "LEFTPNL":   
                case "LP": qsys.gui.divArr["COORD"]["ALIGN"] = "LEFT";   
                    qsys.gui.addPanel(id,baseId,innerArray); 
                    break;
                case "BOTTOMPNL": 
                case "BP": qsys.gui.divArr["COORD"]["ALIGN"] = "BOTTOM"; 
                    delete qsys.gui.divArr["COORD"]["WIDTH"];    
                    qsys.gui.addPanel(id,baseId,innerArray); 
                    break;
                case "TOPPNL":    
                case "TP": qsys.gui.divArr["COORD"]["ALIGN"] = "TOP";    
                    delete qsys.gui.divArr["COORD"]["WIDTH"];    
                    qsys.gui.addPanel(id,baseId,innerArray); 
                    break;
                case "CLIENTPNL": 
                case "CP": qsys.gui.divArr["COORD"]["ALIGN"] = "CLIENT"; 
                    qsys.gui.addPanel(id,baseId,innerArray); 
                    break;
                case "RIGHTSPC":  
                case "RS": qsys.gui.spcArr["COORD"]["ALIGN"] = "RIGHT"; 
                    qsys.gui.addSpace(id,baseId,innerArray); 
                    break;
                case "LEFTSPC":   
                case "LS": qsys.gui.spcArr["COORD"]["ALIGN"] = "LEFT";   
                    qsys.gui.addSpace(id,baseId,innerArray); 
                    break;
                case "BOTTOMSPC": 
                case "BS": qsys.gui.spcArr["COORD"]["ALIGN"] = "BOTTOM"; 
                    delete qsys.gui.spcArr["COORD"]["WIDTH"];    
                    qsys.gui.addSpace(id,baseId,innerArray); 
                    break;
                case "TOPSPC":    
                case "TS": qsys.gui.spcArr["COORD"]["ALIGN"] = "TOP";    
                    delete qsys.gui.spcArr["COORD"]["WIDTH"];    
                    qsys.gui.addSpace(id,baseId,innerArray); 
                    break;
                case "CLIENTSPC": 
                case "CS": qsys.gui.spcArr["COORD"]["ALIGN"] = "CLIENT"; 
                    qsys.gui.addSpace(id,baseId,innerArray); 
                    break;
                case "MIDSPC":      case "MS": 
                case "HEIGHT":      case "WIDTH":
                case "ALIGN":       case "BORDER":
                case "className":   case "innerHTML": break;
                case "GETSCROLLPOSITON":
                    var a = document.getElementById(innerArray);
                    if (!a.scrollTop) 
                        qsys.gui.scrollTop = "0";
                    else 
                        qsys.gui.scrollTop = a.scrollTop;
                    if (!a.scrollLeft) 
                        qsys.gui.scrollLeft = "0";
                    else 
                        qsys.gui.scrollLeft = a.scrollLeft;
                    break;
                case "SETSCROLLPOSITON":
                    var a           = document.getElementById(innerArray);
                    a.scrollTop     = qsys.gui.scrollTop;
                    a.scrollLeft    = qsys.gui.scrollLeft;   
                    break;
                case "RESETSLAVECOORD":
                    var a           = document.getElementById(baseId);
                    a.slaveLeft     = 0;
                    a.slaveTop      = 0;
                    a.slaveRight    = 0;
                    a.slaveBottom   = 0;
                    break;
                default: 
                    if (outerArray["HEIGHT"])       qsys.gui.setAllArrCoordTag("HEIGHT",outerArray["HEIGHT"]);
                    if (outerArray["WIDTH"])        qsys.gui.setAllArrCoordTag("WIDTH",outerArray["WIDTH"]);
                    if (outerArray["ALIGN"])        qsys.gui.setAllArrCoordTag("ALIGN",outerArray["ALIGN"]);
                    if (outerArray["BORDER"])       qsys.gui.setAllArrCoordTag("BORDER",outerArray["BORDER"]);
                    if (outerArray["className"])    qsys.gui.setAllArrTag("className",outerArray["className"]);
                    if (outerArray["innerHTML"])    qsys.gui.setAllArrTag("innerHTML",outerArray["innerHTML"]);
                    id = key;
                    for(key in innerArray)
                    {   qsys.gui.addItem(key,id,baseId,outerArray,qsys.XMLToArr(innerArray[key]));
                        if (outerArray["MS"])       qsys.gui.addSpace(id+"MS",baseId,qsys.XMLToArr(outerArray["MS"]));
                        if (outerArray["MIDSPC"])   qsys.gui.addSpace(id+"MIDSPC",baseId,qsys.XMLToArr(outerArray["MIDSPC"]));

                    }
                    break;
            }
        };
//--------------------------------------------------------------------------------
        qsys.del["GUI"] = function(id)
        {   qsys.del["DIV"](id)
        };
//--------------------------------------------------------------------------------
        qsys.chg["GUI"] = function(arr)
        {   var node = document.getElementById(arr["ID"]);
            if (!node) return;
            for(var key in arr)
            {   switch(key)
                {   //ToDo verdere implementatie..
                }
            }
            if(arr["ID"]) 
            {   qsys.gui.baseId = qsys.obj["BASEDIV"]; 
            }
            var baseId = qsys.gui.baseId;
            qsys.gui.chgItem(key,arr["ID"],baseId,arr,qsys.XMLToArr(arr[key]));
        };
//--------------------------------------------------------------------------------
        qsys.fnc["IOT"] = function(arr)
        {   qsys.gui.addSelectItemsAndOrder(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["BTN"] = function(arr)
        {   qsys.gui.addButton(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["INP"] = function(arr)
        {   qsys.gui.addInput(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["TXT"] = function(arr)
        {   qsys.gui.addText(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["OPT"] = function(arr)
        {   qsys.gui.addOption(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["SEL"] = function(arr)
        {   qsys.gui.addSelect(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["GUI"] = function(arr)
        {   qsys.gui.baseId = qsys.obj["BASEDIV"]; 
            qsys.gui.createGui(arr);
        };
//--------------------------------------------------------------------------------
        qsys.fnc["FIL"] = function(arr)
        {   qsys.gui.addFile(arr["ID"],qsys.obj["BASEDIV"],arr);
        };
//--------------------------------------------------------------------------------
    }; 
//----------------------------------------------------------------------------------------- 
//--------------------------------------------------------------------------------
    if (!qsys.div) 
        alert("DIV routines not loaded");
    else 
    {   qsys.cpi = new Array;
        qsys.cpi.hexColor = "FF0000";
        qsys.cpi.barColor = "FF0000";
        qsys.cpi.barColor = "FF0000";
        qsys.cpi.sliderValue = 255;
        qsys.cpi.left    = 0;
        qsys.cpi.top     = 0;
        qsys.cpi.type   = "normal";
        qsys.cpi.mousex = 0;
        qsys.cpi.mousey = 0;
        qsys.cpi.colR   = 255;
        qsys.cpi.colG   = 0;
        qsys.cpi.colB   = 0;
        
        qsys.cpi.colH   = 0;
        qsys.cpi.colS   = 100;
        qsys.cpi.colV   = 100;

        qsys.cpi.chgset = 1;
        
        qsys.cpi.getSliderValue = function ()
        {   qsys.cpi.sliderValue = (255 - (qsys.obj["scrollY"] - 7));
            return qsys.cpi.sliderValue;
        };
        
        qsys.cpi.setMapOpacity = function (opacity)
        {   qsys.chg["DIV"](qsys.XMLToArr("<ID>mapNode</ID><OPACITY>" + (opacity / 2.55) + "</OPACITY>"));
        };
        
        qsys.cpi.setMapPointer = function (posx, posy)
        {   qsys.chg["DIV"](qsys.XMLToArr("<ID>pointNode</ID><COORD><LEFT>" + posx + "</LEFT><TOP>" + posy + "</TOP></COORD>")); 
        };

        qsys.cpi.setSlider = function (posy)
        {   var a = qsys.XMLToArr("<ID>slideNode</ID><COORD><TOP>" + (posy + 7) + "</TOP></COORD>");
            qsys.chg["DIV"](a); 
            qsys.cpi.sliderValue = parseInt(255 - posy);            
        };

        qsys.cpi.setHSV = function(h,s,v) 
        {   var elmri = document.getElementById("redInput");
            var elmgi = document.getElementById("grnInput");
            var elmbi = document.getElementById("bluInput");
            var elmhi = document.getElementById("hexInput");
            var elmpn = document.getElementById("pointNode");
            var elmExtern = document.getElementById(qsys.cpi.selectedDiv);
            var elmb4 = document.getElementById("bar4Node");
            qsys.cpi.colH = h;
            qsys.cpi.colS = s;
            qsys.cpi.colV = v;
            qsys.cpi.setSlider(255-v);
//            qsys.cpi.setMapOpacity(v);
            elmpn.left = parseInt(0 + h / 1.40626) + 4 + qsys.cpi.left;
            elmpn.top = parseInt((100 - s) * 2.55) + 3;
            elmpn.style.left = elmpn.left + "px";
            elmpn.style.top = elmpn.top + "px";
            qsys.cpi.HSVToRGB(qsys.cpi.colH, qsys.cpi.colS, 255);
            qsys.cpi.barColor = qsys.cpi.intToHex(qsys.cpi.colR) + qsys.cpi.intToHex(qsys.cpi.colG) + qsys.cpi.intToHex(qsys.cpi.colB);
            qsys.cpi.HSVToRGB(qsys.cpi.colH, qsys.cpi.colS, qsys.cpi.colV);
            qsys.cpi.hexColor = qsys.cpi.intToHex(qsys.cpi.colR) + qsys.cpi.intToHex(qsys.cpi.colG) + qsys.cpi.intToHex(qsys.cpi.colB);
            qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
            elmri.value = qsys.cpi.colR;
            elmgi.value = qsys.cpi.colG;
            elmbi.value = qsys.cpi.colB;
            elmhi.value = "#" + qsys.cpi.hexColor;
            if (elmExtern)
            {   elmExtern.style.backgroundColor = "#" + qsys.cpi.hexColor;
                elmExtern.cpiColor = qsys.cpi.hexColor;
            }
            var colNode = document.getElementById("__CPICOLORCOL");
            if (colNode) colNode.style.backgroundColor = "#" + qsys.cpi.hexColor;
            elmb4.style.backgroundColor = "#" + qsys.cpi.barColor;
        };
        qsys.cpi.getColor = function (posx, posy)
        {   var elmri = document.getElementById("redInput");
            var elmgi = document.getElementById("grnInput");
            var elmbi = document.getElementById("bluInput");
            var elmhi = document.getElementById("hexInput");
            qsys.cpi.colH = parseInt(0 + (posx * 1.40626));
            qsys.cpi.colS = parseInt(100 - (posy / 2.55));
            qsys.cpi.colV = qsys.cpi.sliderValue;

            qsys.cpi.HSVToRGB(qsys.cpi.colH, qsys.cpi.colS, 255);
            qsys.cpi.barColor = qsys.cpi.intToHex(qsys.cpi.colR) + qsys.cpi.intToHex(qsys.cpi.colG) + qsys.cpi.intToHex(qsys.cpi.colB);
            qsys.cpi.HSVToRGB(qsys.cpi.colH, qsys.cpi.colS, qsys.cpi.colV);
            qsys.cpi.hexColor = qsys.cpi.intToHex(qsys.cpi.colR) + qsys.cpi.intToHex(qsys.cpi.colG) + qsys.cpi.intToHex(qsys.cpi.colB);
            qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
            elmri.value = qsys.cpi.colR;
            elmgi.value = qsys.cpi.colG;
            elmbi.value = qsys.cpi.colB;
            elmhi.value = "#" + qsys.cpi.hexColor;
            qsys.usbColor = "00" + qsys.cpi.hexColor;
        };
        qsys.cpi.intToHex = function (dec)
        {   var result = (parseInt(dec).toString(16));
		    if (result.length == 1)
			    result = ("0" + result);
		    return result.toUpperCase();
	    };
        qsys.cpi.RGBtoHSV = function (R, G, B) 
        {   var ret = new Array();
            var v, x, f,h;
            x = R;
            if (x > G) x = G;
            if (x > B) x = B;
            v = R;
            if (v < G) v = G;
            if (v < B) v = B;
            if(v == x) 
            {   ret['h'] = 0;
                ret['s'] = 0;
                ret['v'] = v;
                return ret;                
            }
            f = (R == x) ? G - B : ((G == x) ? B - R : R - G);
            i = (R == x) ? 3 : ((G == x) ? 5 : 1);
            h = i - f /(v - x);
            if(h == 6) h = 0;
            else h *= 60;
            ret['h'] = parseInt(h);
            ret['s'] = parseInt((v - x)/v*100);
            ret['v'] = v;
            return ret;                
	    };
        qsys.cpi.HSVToRGB = function (H, S, V) 
        {   var h = H;
		    var s = S;
		    var v = V;
		    if (s == 0) 
		    {   if (v == 0) 
				    qsys.cpi.colR = qsys.cpi.colG = qsys.cpi.colB = 0;
			    else 
				    qsys.cpi.colR = qsys.cpi.colG = qsys.cpi.colB = v;
			}
		    else 
		    {	if (h == 360) 
		        	h = 0;
			    h /= 60;
			    s = (s / 100);
			    v = (v / 100);
			    var i = parseInt(h);
			    var f = (h - i);
			    var p = v * (1 - s);
			    var q = v * (1 - (s * f));
			    var t = v * (1 - (s * (1 - f)));
			    switch (i) 
			    {	case 0:
					    qsys.cpi.colR = v;
					    qsys.cpi.colG = t;
					    qsys.cpi.colB = p;
					    break;
				    case 1:
					    qsys.cpi.colR = q;
					    qsys.cpi.colG = v;
					    qsys.cpi.colB = p;
					    break;
				    case 2:
					    qsys.cpi.colR = p;
					    qsys.cpi.colG = v;
					    qsys.cpi.colB = t;
					    break;
				    case 3:
					    qsys.cpi.colR = p;
					    qsys.cpi.colG = q;
					    qsys.cpi.colB = v;
					    break;
				    case 4:
					    qsys.cpi.colR = t;
					    qsys.cpi.colG = p;
					    qsys.cpi.colB = v;
					    break;
				    case 5:
					    qsys.cpi.colR = v;
					    qsys.cpi.colG = p;
					    qsys.cpi.colB = q;
					    break;
			    }
			    qsys.cpi.colR = parseInt(qsys.cpi.colR * 100.1);
			    qsys.cpi.colG = parseInt(qsys.cpi.colG * 100.1);
			    qsys.cpi.colB = parseInt(qsys.cpi.colB * 100.1);
		    }
	    };
        qsys.fnc["CPI"] = function(arr)
        {   var myvar;
            var colNode = document.getElementById("__CPICOLORCOL");
            if (typeof(arr) == "string")
            {   switch(arr)
                {   case 'SLIDERVALUE':
                        var elmpn = document.getElementById("pointNode");
                        var elmExtern = document.getElementById(qsys.cpi.selectedDiv);
                        qsys.cpi.getSliderValue();
                        qsys.cpi.getColor((elmpn.left - 4 - qsys.cpi.left), (elmpn.top - 3));
                        qsys.cpi.setMapOpacity(qsys.cpi.getSliderValue());
                        if (elmExtern)
                        {   elmExtern.style.backgroundColor = "#" + qsys.cpi.hexColor;
                            elmExtern.cpiColor = qsys.cpi.hexColor;
                        }
                        if (colNode) colNode.style.backgroundColor = "#" + qsys.cpi.hexColor;
                        qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
                        if (qsys.seq) qsys.seq.update();
                        break;
                    case 'SETSLIDER':
                        var elmcp = document.getElementById("colorPicker");
                        if (!elmcp) 
                        	elmcp = document.getElementById("colorPickeriPhone");
                        var elmpn = document.getElementById("pointNode");
                        var elmExtern = document.getElementById(qsys.cpi.selectedDiv);
                        qsys.cpi.mousey = Number(qsys.obj["MOUSEY"]) - Number(elmcp.top) - 11;
                        var node = elmcp;
                        while(node.baseid)
                        {   node = document.getElementById(node.baseid);
                            if (node.top) qsys.cpi.mousey -= node.top;
                        }
                        qsys.cpi.setSlider(qsys.cpi.mousey);
                        qsys.cpi.getColor((elmpn.left - 4 - qsys.cpi.left), (elmpn.top - 3));
                        qsys.cpi.setMapOpacity(qsys.cpi.sliderValue);
                        if (elmExtern)
                        {   elmExtern.style.backgroundColor = "#" + qsys.cpi.hexColor;
                            elmExtern.cpiColor = qsys.cpi.hexColor;
                        }
                        if (colNode) colNode.style.backgroundColor = "#" + qsys.cpi.hexColor;
                        qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
                        if (qsys.seq) qsys.seq.update();
                        break;
                    case 'SETPOINTER':
                        var elmcp = document.getElementById("colorPicker");
                        if (!elmcp) elmcp = document.getElementById("colorPickeriPhone");
                        var elmb4 = document.getElementById("bar4Node");
                        var elmExtern = document.getElementById(qsys.cpi.selectedDiv);
                        qsys.cpi.mousex = Number(qsys.obj["MOUSEX"]) - Number(elmcp.left)- 12 - qsys.cpi.left;
                        qsys.cpi.mousey = Number(qsys.obj["MOUSEY"]) - Number(elmcp.top) - 12;
                        var node = elmcp;
                        while(node.baseid)
                        {   var node = document.getElementById(node.baseid);
                            if (node.left) qsys.cpi.mousex -= node.left;
                            if (node.top) qsys.cpi.mousey -= node.top;
                        }
                        qsys.cpi.setMapPointer(qsys.cpi.mousex + 4 + qsys.cpi.left, qsys.cpi.mousey + 3);
                        qsys.cpi.getColor(qsys.cpi.mousex, qsys.cpi.mousey);
                        if (colNode) colNode.style.backgroundColor = "#" + qsys.cpi.hexColor;
                        if (elmExtern)
                        {   elmExtern.style.backgroundColor = "#" + qsys.cpi.hexColor;
                            elmExtern.cpiColor = qsys.cpi.hexColor;
                        }
                        elmb4.style.backgroundColor = "#" + qsys.cpi.barColor;
                        qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
                        if (qsys.seq) qsys.seq.update();
                        break;
                    case 'DRAGPOINTER':
                        var elmb4 = document.getElementById("bar4Node");
                        var elmExtern = document.getElementById(qsys.cpi.selectedDiv);
                        qsys.cpi.getColor((qsys.obj["DRAGPOSX"] - 4 - qsys.cpi.left), qsys.obj["DRAGPOSY"] - 3);
                        if (colNode) colNode.style.backgroundColor = "#" + qsys.cpi.hexColor;
                        if (elmExtern)
                        {   elmExtern.style.backgroundColor = "#" + qsys.cpi.hexColor;
                            elmExtern.cpiColor = qsys.cpi.hexColor;
                        }
                        elmb4.style.backgroundColor = "#" + qsys.cpi.barColor;
                        qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
                        if (qsys.seq) qsys.seq.update();
                        break;
                    case 'TOGGLECHGSET':
                        var elm = document.getElementById("chgsetButton");
                        if (qsys.cpi.chgset)
                        {   qsys.cpi.chgset = 0;
                           	elm.className = "cpi_dirDownButton";
       	                    elm.title = "get color from current frame";
                        } else {
                            qsys.cpi.chgset = 1;
                           	elm.className = "cpi_dirUpButton";
       	                    elm.title = "put color in current frame";
                        }
                        break;
                }          
            } 
            else 
            {   if (arr["SETCOLOR"])
                {   if (qsys.cpi.chgset)
                    {   var elmExtern = document.getElementById(qsys.cpi.selectedDiv);
                        if (elmExtern)
                        {   elmExtern.style.backgroundColor = "#" + qsys.cpi.hexColor;
                            elmExtern.cpiColor = qsys.cpi.hexColor;
                        }
                        qsys.obj["CPICOLOR"] = qsys.cpi.hexColor;
                        if (qsys.seq) qsys.seq.update();
                    } else{
                        var red = parseInt("0x"+arr["SETCOLOR"].substr(0,2));
                        var green = parseInt("0x"+arr["SETCOLOR"].substr(2,2));
                        var blue = parseInt("0x"+arr["SETCOLOR"].substr(4,2));
                        var hsv;
                        if ((red >= 0) && (red < 256) && (blue >= 0) && (blue < 256) && (green >= 0) && (green < 256))
                            hsv = qsys.cpi.RGBtoHSV(red,green,blue);
                        else {
                            hsv = new Array();
                            hsv["h"] = 180;
                            hsv["s"] = 0;
                            hsv["v"] = 255;
                        }
                        qsys.cpi.setHSV(hsv["h"],hsv["s"],hsv["v"]);
                    }
                }
                if ((arr["ID"]) && (arr["TARGET"]))
                {   var tgtNode             = document.getElementById(arr["TARGET"]);
                    var mapNodeImg          = document.createElement("IMG");
                    if (arr["LEFT"])
                        qsys.cpi.left = Number(arr["LEFT"]);
                    if (arr["TYPE"])
                        qsys.cpi.type = arr["TYPE"];
                    var colCoord            = new Array;
                    var rlCoord             = new Array;
                    var glCoord             = new Array;
                    var blCoord             = new Array;
                    if (qsys.cpi.type == "iPhone")
                    {   colCoord["ALIGN"]       = "CUSTOM";
                        colCoord["TOP"]         = "270";
                        colCoord["LEFT"]        = 10 + qsys.cpi.left;
                        colCoord["WIDTH"]       = "60";
                        colCoord["HEIGHT"]      = "60";
                        colCoord["ZINDEX"]      = "TOP";
                        
                        rlCoord["ALIGN"]       = "CUSTOM";
                        rlCoord["TOP"]         = "270";
                        rlCoord["LEFT"]        = 80 + qsys.cpi.left;
                        rlCoord["WIDTH"]       = "10";
                        rlCoord["HEIGHT"]      = "20";
                        rlCoord["ZINDEX"]      = "TOP";
    
                        glCoord["ALIGN"]       = "CUSTOM";
                        glCoord["TOP"]         = "290";
                        glCoord["LEFT"]        = 80 + qsys.cpi.left;
                        glCoord["WIDTH"]       = "10";
                        glCoord["HEIGHT"]      = "20";
                        glCoord["ZINDEX"]      = "TOP";
    
                        blCoord["ALIGN"]       = "CUSTOM";
                        blCoord["TOP"]         = "310";
                        blCoord["LEFT"]        = 80 + qsys.cpi.left;
                        blCoord["WIDTH"]       = "10";
                        blCoord["HEIGHT"]      = "20";
                        blCoord["ZINDEX"]      = "TOP";
                    } else {
                        colCoord["ALIGN"]       = "CUSTOM";
                        colCoord["TOP"]         = "10";
                        colCoord["LEFT"]        = 330 + qsys.cpi.left;
                        colCoord["WIDTH"]       = "60";
                        colCoord["HEIGHT"]      = "60";
                        colCoord["ZINDEX"]      = "TOP";
                        
                        rlCoord["ALIGN"]       = "CUSTOM";
                        rlCoord["TOP"]         = "80";
                        rlCoord["LEFT"]        = 330 + qsys.cpi.left;
                        rlCoord["WIDTH"]       = "10";
                        rlCoord["HEIGHT"]      = "20";
                        rlCoord["ZINDEX"]      = "TOP";
    
                        glCoord["ALIGN"]       = "CUSTOM";
                        glCoord["TOP"]         = "115";
                        glCoord["LEFT"]        = 330 + qsys.cpi.left;
                        glCoord["WIDTH"]       = "10";
                        glCoord["HEIGHT"]      = "20";
                        glCoord["ZINDEX"]      = "TOP";
    
                        blCoord["ALIGN"]       = "CUSTOM";
                        blCoord["TOP"]         = "150";
                        blCoord["LEFT"]        = 330 + qsys.cpi.left;
                        blCoord["WIDTH"]       = "10";
                        blCoord["HEIGHT"]      = "20";
                        blCoord["ZINDEX"]      = "TOP";
                    }
                    InfCoord                = new Array;
                    InfCoord["ALIGN"]       = "CUSTOM";
                    InfCoord["TOP"]         = "270";
                    InfCoord["LEFT"]        = 10 + qsys.cpi.left;
                    InfCoord["WIDTH"]       = "400";
                    InfCoord["HEIGHT"]      = "20";
                    InfCoord["ZINDEX"]      = "TOP";

                    var rlNode              = document.createElement("DIV");
                    rlNode.creationIndex    = qsys.div.creationIndex++;
                    rlNode.id               = "__CPIREDLABEL";
                    rlNode.name             = "__CPIREDLABEL";
                    rlNode.className        = "_qsys_cpi_redLabel";
                    rlNode.innerHTML        = "R:";
                    qsys.div.setCoord(rlNode, rlCoord);
                    tgtNode.appendChild(rlNode);

                    var glNode              = document.createElement("DIV");
                    glNode.creationIndex    = qsys.div.creationIndex++;
                    glNode.id               = "__CPIGRNLABEL";
                    glNode.name             = "__CPIGRNLABEL";
                    glNode.className        = "_qsys_cpi_grnLabel";
                    glNode.innerHTML        = "G:";
                    qsys.div.setCoord(glNode, glCoord);
                    tgtNode.appendChild(glNode);

                    var blNode              = document.createElement("DIV");
                    blNode.creationIndex    = qsys.div.creationIndex++;
                    blNode.id               = "__CPIBLULABEL";
                    blNode.name             = "__CPIBLULABEL";
                    blNode.className        = "_qsys_cpi_bluLabel";
                    blNode.innerHTML        = "B:";
                    qsys.div.setCoord(blNode, blCoord);
                    tgtNode.appendChild(blNode);

                    var colNode             = document.createElement("DIV");
                    colNode.creationIndex   = qsys.div.creationIndex++;
                    colNode.id              = "__CPICOLORCOL";
                    colNode.name            = "__CPICOLORCOL";
                    colNode.className       = "_qsys_cpi_ColorCol";
                    qsys.div.setCoord(colNode, colCoord);
                    tgtNode.appendChild(colNode);

                    if (qsys.cpi.type == "iPhone")
                    {   var redInput             = "<INPUT>";
                        redInput                += "<ID>redInput</ID>";
                        redInput                += "<className>_qsys_cpi_redInput</className>";
                        redInput                += "<ITEMID>redInput</ITEMID>";
                        redInput                += "<COORD>";
                        redInput                += "<ALIGN>CUSTOM</ALIGN>";
                        redInput                += "<TOP>270</TOP>";
                        redInput                += "<LEFT>"+(100 + qsys.cpi.left)+"</LEFT>";
                        redInput                += "<WIDTH>35</WIDTH>";
                        redInput                += "<HEIGHT>16</HEIGHT>";
                        redInput                += "<ZINDEX>TOP</ZINDEX>";
                        redInput                += "</COORD>";
                        redInput                += "</INPUT>";
                        qsys.execute(redInput, arr["TARGET"]);
    
                        var grnInput             = "<INPUT>";
                        grnInput                += "<ID>grnInput</ID>";
                        grnInput                += "<className>_qsys_cpi_grnInput</className>";
                        grnInput                += "<COORD>";
                        grnInput                += "<ALIGN>CUSTOM</ALIGN>";
                        grnInput                += "<TOP>290</TOP>";
                        grnInput                += "<LEFT>"+(100 + qsys.cpi.left)+"</LEFT>";
                        grnInput                += "<WIDTH>35</WIDTH>";
                        grnInput                += "<HEIGHT>16</HEIGHT>";
                        grnInput                += "<ZINDEX>TOP</ZINDEX>";
                        grnInput                += "</COORD>";
                        grnInput                += "</INPUT>";
                        qsys.execute(grnInput, arr["TARGET"]);
    
                        var bluInput             = "<INPUT>";
                        bluInput                += "<ID>bluInput</ID>";
                        bluInput                += "<className>_qsys_cpi_bluInput</className>";
                        bluInput                += "<COORD>";
                        bluInput                += "<ALIGN>CUSTOM</ALIGN>";
                        bluInput                += "<TOP>310</TOP>";
                        bluInput                += "<LEFT>"+(100 + qsys.cpi.left)+"</LEFT>";
                        bluInput                += "<WIDTH>35</WIDTH>";
                        bluInput                += "<HEIGHT>16</HEIGHT>";
                        bluInput                += "<ZINDEX>TOP</ZINDEX>";
                        bluInput                += "</COORD>";
                        bluInput                += "</INPUT>";
                        qsys.execute(bluInput, arr["TARGET"]);

                        var hexInput             = "<INPUT>";
                        hexInput                += "<ID>hexInput</ID>";
                        hexInput                += "<className>_qsys_cpi_hexInput</className>";
                        hexInput                += "<COORD>";
                        hexInput                += "<ALIGN>CUSTOM</ALIGN>";
                        hexInput                += "<TOP>270</TOP>";
                        hexInput                += "<LEFT>"+(150 + qsys.cpi.left)+"</LEFT>";
                        hexInput                += "<WIDTH>55</WIDTH>";
                        hexInput                += "<HEIGHT>16</HEIGHT>";
                        hexInput                += "<ZINDEX>TOP</ZINDEX>";
                        hexInput                += "</COORD>";
                        hexInput                += "</INPUT>";
                        qsys.execute(hexInput, arr["TARGET"]);
    
                        var dirButton            = "<DIV>";
                        dirButton               += "<ID>chgsetButton</ID>";
                        dirButton               += "<className>_qsys_cpi_dirDownButton</className>";
                        dirButton               += "<COORD>";
                        dirButton               += "<ALIGN>CUSTOM</ALIGN>";
                        dirButton               += "<TOP>300</TOP>";
                        dirButton               += "<LEFT>"+(150 + qsys.cpi.left)+"</LEFT>";
                        dirButton               += "<WIDTH>32</WIDTH>";
                        dirButton               += "<HEIGHT>32</HEIGHT>";
                        dirButton               += "<ZINDEX>TOP</ZINDEX>";
                        dirButton               += "</COORD>";
                        dirButton               += "<className>_qsys_cpi_dirDownButton</className>";
                        dirButton               += "<title>get color from current frame</title>";
                        qsys.cpi.chgset = 0;    
                        dirButton               += "<onMouseUpExe><CPI>TOGGLECHGSET</CPI></onMouseUpExe>";
                        dirButton               += "</DIV>";
                        qsys.execute(dirButton, arr["TARGET"]);
                    } else {
                        var redInput             = "<INPUT>";
                        redInput                += "<ID>redInput</ID>";
                        redInput                += "<className>_qsys_cpi_redInput</className>";
                        redInput                += "<ITEMID>redInput</ITEMID>";
                        redInput                += "<COORD>";
                        redInput                += "<ALIGN>CUSTOM</ALIGN>";
                        redInput                += "<TOP>80</TOP>";
                        redInput                += "<LEFT>"+(350 + qsys.cpi.left)+"</LEFT>";
                        redInput                += "<WIDTH>35</WIDTH>";
                        redInput                += "<HEIGHT>16</HEIGHT>";
                        redInput                += "<ZINDEX>TOP</ZINDEX>";
                        redInput                += "</COORD>";
                        redInput                += "</INPUT>";
                        qsys.execute(redInput, arr["TARGET"]);
    
                        var grnInput             = "<INPUT>";
                        grnInput                += "<ID>grnInput</ID>";
                        grnInput                += "<className>_qsys_cpi_grnInput</className>";
                        grnInput                += "<COORD>";
                        grnInput                += "<ALIGN>CUSTOM</ALIGN>";
                        grnInput                += "<TOP>115</TOP>";
                        grnInput                += "<LEFT>"+(350 + qsys.cpi.left)+"</LEFT>";
                        grnInput                += "<WIDTH>35</WIDTH>";
                        grnInput                += "<HEIGHT>16</HEIGHT>";
                        grnInput                += "<ZINDEX>TOP</ZINDEX>";
                        grnInput                += "</COORD>";
                        grnInput                += "</INPUT>";
                        qsys.execute(grnInput, arr["TARGET"]);
    
                        var bluInput             = "<INPUT>";
                        bluInput                += "<ID>bluInput</ID>";
                        bluInput                += "<className>_qsys_cpi_bluInput</className>";
                        bluInput                += "<COORD>";
                        bluInput                += "<ALIGN>CUSTOM</ALIGN>";
                        bluInput                += "<TOP>150</TOP>";
                        bluInput                += "<LEFT>"+(350 + qsys.cpi.left)+"</LEFT>";
                        bluInput                += "<WIDTH>35</WIDTH>";
                        bluInput                += "<HEIGHT>16</HEIGHT>";
                        bluInput                += "<ZINDEX>TOP</ZINDEX>";
                        bluInput                += "</COORD>";
                        bluInput                += "</INPUT>";
                        qsys.execute(bluInput, arr["TARGET"]);

                        var hexInput             = "<INPUT>";
                        hexInput                += "<ID>hexInput</ID>";
                        hexInput                += "<className>_qsys_cpi_hexInput</className>";
                        hexInput                += "<COORD>";
                        hexInput                += "<ALIGN>CUSTOM</ALIGN>";
                        hexInput                += "<TOP>185</TOP>";
                        hexInput                += "<LEFT>"+(330 + qsys.cpi.left)+"</LEFT>";
                        hexInput                += "<WIDTH>55</WIDTH>";
                        hexInput                += "<HEIGHT>16</HEIGHT>";
                        hexInput                += "<ZINDEX>TOP</ZINDEX>";
                        hexInput                += "</COORD>";
                        hexInput                += "</INPUT>";
                        qsys.execute(hexInput, arr["TARGET"]);
        
                        var dirButton            = "<DIV>";
                        dirButton               += "<ID>chgsetButton</ID>";
                        dirButton               += "<COORD>";
                        dirButton               += "<ALIGN>CUSTOM</ALIGN>";
                        dirButton               += "<TOP>220</TOP>";
                        dirButton               += "<LEFT>"+(350 + qsys.cpi.left)+"</LEFT>";
                        dirButton               += "<WIDTH>32</WIDTH>";
                        dirButton               += "<HEIGHT>32</HEIGHT>";
                        dirButton               += "<ZINDEX>TOP</ZINDEX>";
                        dirButton               += "</COORD>";
                        dirButton               += "<className>_qsys_cpi_dirDownButton</className>";
                        dirButton               += "<title>get color from current frame</title>";
                        qsys.cpi.chgset = 0;    
                        dirButton               += "<onMouseUpExe><CPI>TOGGLECHGSET</CPI></onMouseUpExe>";
                        dirButton               += "</DIV>";
                        qsys.execute(dirButton, arr["TARGET"]);
                    }
                    
               		var bckNode              = "<DIV>";
               		bckNode                 += "<ID>bckNode</ID>";
               		bckNode                 += "<className>_qsys_cpi_ColorMapBck</className>";
               		bckNode                 += "<COORD>";
                    bckNode                 += "<ALIGN>CUSTOM</ALIGN>";
                    bckNode                 += "<TOP>10</TOP>";
                    bckNode                 += "<LEFT>"+(10 + qsys.cpi.left)+"</LEFT>";
                    bckNode                 += "<WIDTH>256</WIDTH>";
                    bckNode                 += "<HEIGHT>256</HEIGHT>";
                    bckNode                 += "<ZINDEX>TOP</ZINDEX>";
               		bckNode                 += "</COORD>";
               		bckNode                 += "<OPACITY>100</OPACITY>";
               		bckNode                 += "</DIV>";
                    qsys.execute(bckNode, arr["TARGET"]);

               		var mapNode              = "<DIV>";
               		mapNode                 += "<ID>mapNode</ID>";
               		mapNode                 += "<className>_qsys_cpi_ColorMap</className>";
               		mapNode                 += "<COORD>";
                    mapNode                 += "<ALIGN>CUSTOM</ALIGN>";
                    mapNode                 += "<TOP>11</TOP>";
                    mapNode                 += "<LEFT>"+(11 + qsys.cpi.left)+"</LEFT>";
                    mapNode                 += "<WIDTH>256</WIDTH>";
                    mapNode                 += "<HEIGHT>256</HEIGHT>";
                    mapNode                 += "<ZINDEX>TOP</ZINDEX>";
               		mapNode                 += "</COORD>";
               		mapNode                 += "<OPACITY>100</OPACITY>";
               		mapNode                 += "<onMouseUpExe><CPI>SETPOINTER</CPI></onMouseUpExe>";
               		mapNode                 += "</DIV>";
                    qsys.execute(mapNode, arr["TARGET"]);

               		var barBNode             = "<DIV>";
               		barBNode                += "<ID>barBNode</ID>";
               		barBNode                += "<className>_qsys_cpi_ColorBarBck</className>";
               		barBNode                += "<COORD>";
                    barBNode                += "<ALIGN>CUSTOM</ALIGN>";
                    barBNode                += "<TOP>10</TOP>";
                    barBNode                += "<LEFT>"+(291 + qsys.cpi.left)+"</LEFT>";
                    barBNode                += "<WIDTH>20</WIDTH>";
                    barBNode                += "<HEIGHT>256</HEIGHT>";
                    barBNode                += "<ZINDEX>TOP</ZINDEX>";
               		barBNode                += "</COORD>";
               		barBNode                += "<OPACITY>100</OPACITY>";
               		barBNode                += "</DIV>";
                    qsys.execute(barBNode, arr["TARGET"]);

               		var bar4Node             = "<DIV>";
               		bar4Node                += "<ID>bar4Node</ID>";
               		bar4Node                += "<className>_qsys_cpi_ColorBar</className>";
               		bar4Node                += "<COORD>";
                    bar4Node                += "<ALIGN>CUSTOM</ALIGN>";
                    bar4Node                += "<TOP>11</TOP>";
                    bar4Node                += "<LEFT>"+(292 + qsys.cpi.left)+"</LEFT>";
                    bar4Node                += "<WIDTH>20</WIDTH>";
                    bar4Node                += "<HEIGHT>256</HEIGHT>";
                    bar4Node                += "<ZINDEX>TOP</ZINDEX>";
               		bar4Node                += "</COORD>";
               		bar4Node                += "<OPACITY>100</OPACITY>";
               		bar4Node                += "<onMouseUpExe><CPI>SETSLIDER</CPI></onMouseUpExe>";
                    bar4Node                += "<IMG>/qsys/publ/graphics/png/colorpicker/bar-brightness.png</IMG>";
               		bar4Node                += "</DIV>";
                    qsys.execute(bar4Node, arr["TARGET"]);

               		var sldNode              = "<DIV>";
               		sldNode                 += "<ID>slideNode</ID>";
               		sldNode                 += "<className>_qsys_cpi_ColorSlider</className>";
               		sldNode                 += "<COORD>";
                    sldNode                 += "<ALIGN>CUSTOM</ALIGN>";
                    sldNode                 += "<TOP>7</TOP>";
                    sldNode                 += "<LEFT>"+(282 + qsys.cpi.left)+"</LEFT>";
                    sldNode                 += "<WIDTH>40</WIDTH>";
                    sldNode                 += "<HEIGHT>9</HEIGHT>";
                    sldNode                 += "<ZINDEX>TOP</ZINDEX>";
               		sldNode                 += "</COORD>";
                    sldNode                 += "<RESIZE><DRAGY><items><0>slideNode</0></items><min>-7</min><max>262</max><onScroll><CPI>SLIDERVALUE</CPI></onScroll></DRAGY></RESIZE>";
               		sldNode                 += "</DIV>";
                    qsys.execute(sldNode, arr["TARGET"]);

               		var pntNode              = "<DIV>";
               		pntNode                 += "<ID>pointNode</ID>";
               		pntNode                 += "<className>_qsys_cpi_ColorPoint</className>";
               		pntNode                 += "<COORD>";
                    pntNode                 += "<ALIGN>CUSTOM</ALIGN>";
                    pntNode                 += "<TOP>3</TOP>";
                    pntNode                 += "<LEFT>"+(4 + qsys.cpi.left)+"</LEFT>";
                    pntNode                 += "<WIDTH>15</WIDTH>";
                    pntNode                 += "<HEIGHT>15</HEIGHT>";
                    pntNode                 += "<ZINDEX>TOP</ZINDEX>";
               		pntNode                 += "</COORD>";
                    pntNode                 += "<RESIZE><DRAGXY><items><0>pointNode</0></items><minX>-24</minX><maxX>279</maxX><minY>-3</minY><maxY>258</maxY><onScroll><CPI>DRAGPOINTER</CPI></onScroll></DRAGXY></RESIZE>";
               		pntNode                 += "</DIV>";

                    qsys.execute(pntNode, arr["TARGET"]);
                    qsys.cpi.getColor(0, 0);
                    if (arr["SELECTEDDIV"]) 
                        qsys.cpi.selectedDiv = arr["SELECTEDDIV"];
                    if (arr["COLOR"]) 
                    {   var red 	= parseInt("0x"+arr["COLOR"].substr(0,2));
                        var green 	= parseInt("0x"+arr["COLOR"].substr(2,2));
                        var blue 	= parseInt("0x"+arr["COLOR"].substr(4,2));
                        var hsv;
                        if ((red >= 0) && (red < 256) && (blue >= 0) && (blue < 256) && (green >= 0) && (green < 256))
                            hsv = qsys.cpi.RGBtoHSV(red,green,blue);
                        else {
                            hsv = new Array();
                            hsv["h"] = 180;
                            hsv["s"] = 0;
                            hsv["v"] = 255;
                        }
                        qsys.cpi.setHSV(hsv["h"],hsv["s"],hsv["v"]);
                    }
                }
            }
            if (qsys.fnc["DBG"] && (qsys.dbg.logFilter & 0x004))
            {   var ar = new Array();
                ar["caption"] = "CPI:" + qsys.xmlToVisual(arr);
                ar["xml"] = qsys.obj["CPIDAT"];
                qsys.fnc["DBG"](ar);
            }
        };
//--------------------------------------------------------------------------------
    };
//--------------------------------------------------------------------------------
    window.onresize();
    var packet = "";
    packet = "<0><FUNCTION>onload</FUNCTION>";
    packet += "<PROJECT>" + qsys.obj["PROJECT"] + "</PROJECT>";
    packet += "<SCRN_WIDTH>" + qsys.obj["SCRN_WIDTH"] + "</SCRN_WIDTH>";
    packet += "<SCRN_HEIGHT>" + qsys.obj["SCRN_HEIGHT"] + "</SCRN_HEIGHT>";
    packet += "<SCRN_COLORDEPTH>" + qsys.obj["SCRN_COLORDEPT"] + "</SCRN_COLORDEPTH>";
    packet += "<SCRN_PIXELDEPTH>" + qsys.obj["SCRN_PIXELDEPT"] + "</SCRN_PIXELDEPTH>";    
    packet += "<WND_WIDTH>" + qsys.obj["WND_WIDTH"] + "</WND_WIDTH>";
    packet += "<WND_HEIGHT>" + qsys.obj["WND_HEIGHT"] + "</WND_HEIGHT>";
    packet += "<CD_WIDTH>" + qsys.obj["CD_WIDTH"] + "</CD_WIDTH>";
    packet += "<CD_HEIGHT>" + qsys.obj["CD_HEIGHT"] + "</CD_HEIGHT>";
    packet += "<SHOPID>" + qsys.obj["SHOPID"] + "</SHOPID></0>";
    qsys.obj["EVENT"] = "ONLOAD";
    return qsys.send(packet,qsys.coredivId,"");
//----------------------------------------------------------------------------------------- 
}