function Event() { } var p = Event.prototype; p.add = function(name,func,obj) { if(!this.events) { this.events = new Object(); this.eventhandle = 0; } if(!this.events[name]) this.events[name] = new Object(); this.eventhandle++; var i = this.eventhandle; this.events[name][i] = new Object(); this.events[name][i].obj = obj; this.events[name][i].func = func; return this.eventhandle; }; p.count = function(name) { var i = 0; if(this.events[name]) for(var i1 in this.events[name]) i++; return i; } p.remove = function(name,handle) { if(this.events&&this.events[name]&&this.events[name][handle]) { this.events[name][handle].obj = null; this.events[name][handle].func = null; delete(this.events[name][handle]); } }; p.trigger = function(name) { if(this.events&&this.events[name]) { var a = arguments; var p = ""; var s = a.length; var i; for(i=1;i1)? "," : "")+"a["+i+"]"; for(i in this.events[name]) { var o = this.events[name][i]; if(o.obj[o.func]) eval("o.obj[o.func]("+p+")"); } } }; function Comp(k,pk,n,l,a,js,scpr,scpo) { this._app = a; this._appSource = l.replace("app/",""); this._appSource = this._appSource.substring(0,this._appSource.indexOf("/")); this._basePath = l; this._baseDir = l.substring(0,l.lastIndexOf("/")); this._key = k; this._parentKey = pk; this._name = n; this._event = new Event(); this._children = new Object(); this._timers = new Object(); this._timerHandle = 0; this._styleClassPostfix = scpo; this._styleClassPrefix = scpr; this._core = CORE; this._eventRespawn = 0; this._eventProxy = {}; this._eventDebug = 0; this.public = CORE.public; var p = CORE.getComp(pk); if(p) p._children[n] = k; this._setJs(js); var path = this._basePath.substr(4).replace("/comp/","/"); path = "//"+path; path = path.replace(/[/]/g,"__").replace(/\./g,"__"); this._handlerPath = path; } var p = Comp.prototype; p.call = function(f) { var c = "0"; if(f=="start") c = "2"; if(f=="startInit") { c = "3"; f = "start"; } CORE.signalDefaultSocketStart(); CORE.sendSocketState(this._key,this._basePath,this._app,this._parentKey,c,this._styleClassPrefix,this._styleClassPostfix); var a = arguments; var s = a.length; var p = new Object(); for(var i=1;i"; var data = new Object(); data.p = this._key; data.n = name; data.j = ''; if(path.substr(0,1)=="/") { if(path.substr(1,1)=="/") { path = path.substr(2); var p = path.indexOf("/"); path = 'app/'+path.substr(0,p)+"/comp"+path.substr(p); } else path = 'app/'+this._app+'/comp'+path; } else path = this._baseDir+"/"+path; data.l = path; data.a = this._app; data.scpo = this._styleClassPostfix; data.scpr = this._styleClassPrefix; CORE.newComp(key,data); str = ""; var a = arguments; var s = a.length; for(var i=3;i1)? "," : "") + "evalVarP["+(i-1)+"]"; } return this.eventFireRemote(event); } p.eventFireRemote = function(event) { if(this._eventRespawn==1) { event.comp = this; event.handler = this._eventHandlerGet(event.name); } if(this._eventDebug==1) debug({comp:event.comp._basePath, name:event.name, parms:event.parm},5); var p = event.parm; var localResult = true; var parentResult = true; var result = true; var evalVarEvent = event; var evalVarP = p; if(this[event.handler]) eval("localResult = this[evalVarEvent.handler]("+event.parmstring+");"); if(this[event.handler+"_P"]) eval("this[evalVarEvent.handler+'_P']("+event.parmstring+");"); var parent = this.parent(); if(parent&&localResult!="[STOPEVENT]") parentResult = parent.eventFireRemote(event); if(parentResult==false||localResult==false) result=false; this.eventFireRemoteProxies(event); return result; } p.eventFireRemoteProxies = function(event) { for(var i in this._eventProxy) this._eventProxy[i].eventFireRemote(event); } p.eventProxyAdd = function(comp){this._eventProxy[comp._key] = comp;} p.eventProxyRemove = function(comp) { delete(this._eventProxy[comp._key]); } p.eventRespawnEnable = function(){this._eventRespawn=1;} p.eventRespawnDisable = function(){this._eventRespawn=0;} p.eventDebugEnable = function(){this._eventDebug=1;} p.eventDebugDisable = function(){this._eventDebug=0;} p.fieldSet = function(name, value) { var field = this.id(name); if(field) field.value = value; } p.fieldGet = function(name) { var field = this.id(name); if(field) return field.value; else return null; } p.fieldsSet = function(data) { for(var i in data) this.fieldSet(i,data[i]); } p.fieldsGet = function() { var fields = this.fields.split(','); var data = new Object(); for(var i in fields) data[fields[i]] = this.fieldGet(fields[i]); return data; } p.timerSet = function(func,timeout) { this._timerHandle++; this._timers[this._timerHandle] = new Object(); var o = this._timers[this._timerHandle]; o.object = this; o.func = func; o.timer = timeout; s = arguments.length; o.parms = new Object(); for(var i=2;i
"); this.socketForm = ID("CORE_DEFAULT_FORM"); this.socketValue = ID("CORE_DEFAULT_FORM_VALUE"); this.socketMode = 'idle'; this.keyPressBufferLength = 5; this.keyPressBuffer = new Object(); this.debugMode = 0; this.messageCounter = 0; this.app = 'default'; this.public = new Object(); this.version = 1.0; this.showMessages = 1; this.showDialogs = 1; this.showJsErrors = 1; for(var i=0;i=0;i--) if(keyFill != this.keyPressBuffer[i]) keyFill = ""; if(keyFill==83) this.debugSocket(); if(keyFill==68) this.debugEnable(); if(keyFill==67) this.debugComp(); } var p = Core.prototype; p.messageJsError = function(comp,func,message) { if(this.showJsErrors==1) return this.messageCreateDialog("JS Error","COMPONENT:   "+comp+"
INITIAL FUNC:   "+func+"
ERROR:   "+message+"","","","","#880000","#FFFFFF"); } p.messageCreateDialog = function(caption,html,x,y,c,b,bor) { if(this.showDialogs==1) { if(!c) c = '#FFFFFF'; if(!b) b = '#FF0000'; if(!bor) bor = ""; else bor = "border:2px solid "+bor; if(!x) x = '10'; if(!y) y = '10'; if(document.body.scrollTop) y = parseInt(y)+document.body.scrollTop; if(document.body.scrollLeft) x = parseInt(x)+document.body.scrollLeft; h = ""; h += ""; h += ""; h += "
"; h += "
"+caption+"X
"+html+"
"; return this.messageCreate(h,null,x,y,c,b,bor); } } p.messageDialogSetContent = function(id,html) { var o = document.getElementById(id+"_content"); o.innerHTML = html; } p.messageCreateBasic = function(html,t,x,y,c,b,bor) { if(!c) c = '#FFFFFF'; if(!b) b = '#FF0000'; if(!bor) bor = ""; else bor = "border:1px solid "+bor; if(!x) x = '10'; if(!y) y = '10'; if(document.body.scrollTop) y = parseInt(y)+document.body.scrollTop; if(document.body.scrollLeft) x = parseInt(x)+document.body.scrollLeft; return this.messageCreate("
"+html+"
",t,x,y); } p.messageGet = function(id) { return document.getElementById(id); } p.messageCreate = function(html,t,x,y) { if(this.showMessages==1) { if(!x) x = '10'; if(!y) y = '10'; this.messageCounter++; var o = document.createElement("DIV"); o.id = "core_message_"+this.messageCounter; o.style.position = 'absolute'; o.style.left = x+'px'; o.style.top = y+'px'; o.style.width = '1px'; o.style.height = '1px'; o.style.overflow = 'visible'; o.onmousedown = function(){this.style.zIndex = CORE.messageOnTopZ();} document.body.appendChild(o); o.innerHTML = html.replace(/\[HANDLE\]/g,o.id); if(t) eval("window.setTimeout(function(){CORE.messageDestroy('"+o.id+"')},t);"); return o.id; } } p.messageOnTopZ = function() { if(!this.messageZ) this.messageZ = 1000; this.messageZ++; return this.messageZ; } p.messageDestroy = function(handle) { var o = ID(handle); if(o) { o.parentNode.removeChild(o); o = null; } } p.messageMouseMove = function(id) { var o; if(typeof(id)=="object") o = id; else o = document.getElementById(id); this.messageMouseDx = this.mouseX - o.offsetLeft; this.messageMouseDy = this.mouseY - o.offsetTop; this.messageMouseCanvas = o; if(this.messageMouseCanvas.onmovestart) this.messageMouseCanvas.onmovestart(); } p.messageMouseMoveRun = function(event) { if(this.messageMouseCanvas!=null) { this.messageMouseCanvas.style.left = (this.mouseX - this.messageMouseDx) + "px"; this.messageMouseCanvas.style.top = (this.mouseY - this.messageMouseDy) + "px"; if(this.messageMouseCanvas.onmoverun) this.messageMouseCanvas.onmoverun(); } } p.messageMouseUpRun = function(event) { if(this.messageMouseCanvas!=null&&this.messageMouseCanvas.onmovestop) this.messageMouseCanvas.onmovestop(); this.messageMouseCanvas = null; } function serial_getstring(o) { var s,n,r,v,t,i,l,ls; r=""; for(i in o) { n=i+""; v=o[i]; t=typeof(v); if(t=="object") { s=serial_getstring(v); l=n.length; ls=s.length; if(l==1)l=""; if(ls==1)ls=""; r+=l+":"+n+"a"+ls+":"+s; } else if(t!='function') { v+=""; l=n.length; ls=v.length; if(l==1)l=""; if(ls==1)ls=""; r+=l+":"+n+ls+":"+v; } } o=null; return r; } function serial_getobject(s) { var re=new Object(); var l,n,t,p=0,r=1,sp,k,v,m=0,op=0; while(r) { n=s.charAt(p); if(n=="a"){t="a";p++;n=s.charAt(p)} else t="s"; if(n==":"){l=1;p++} else{sp=s.indexOf(":",p);if(sp>-1){l=parseInt(s.substring(p,sp));p=sp+1}else r=0;} if(r==1) { v=s.substr(p,l);p+=l; if(t=='a')v=serial_getobject(v); if(m==0){k=v;m=1;} else{re[k]=v;m=0;} if(op==p)r=0;op=p; } } return re; } function serial_setobject(o,p,d) { if(typeof(o)=='object') { var a,b,l; a=p.split('/'); b=o; l=a.length; for(var i=0;i1) r += debug_string(o[i],d-1,s+" "); } else r += s+i+' = '+(o[i]+"").replace(/\n/g,"\n"+s).replace(/\r/g,"")+'\n'; } } else r = o+""; return r; } function debug_alert(o,d) { alert(debug_string(o,d)); } function debug(o,d) { /* var message = "
";
	message += debug_string(o,d).replace(/&/g,"&").replace(/").replace(/ /g," ").replace(/\t/g,"        ");
	message += "
"; */ var message = "
";
	message += debug_string(o,d).replace(/&/g,"&").replace(/