var core={};core.ColorPicker=function(){this.palette="7x10"; this._palettes={"7x10":[["fff","fcc","fc9","ff9","ffc","9f9","9ff","cff","ccf","fcf"],["ccc","f66","f96","ff6","ff3","6f9","3ff","6ff","99f","f9f"],["c0c0c0","f00","f90","fc6","ff0","3f3","6cc","3cf","66c","c6c"],["999","c00","f60","fc3","fc0","3c0","0cc","36f","63f","c3c"],["666","900","c60","c93","990","090","399","33f","60c","939"],["333","600","930","963","660","060","366","009","339","636"],["000","300","630","633","330","030","033","006","309","303"]],"3x4":[["ffffff","00ff00","008000","0000ff"],["c0c0c0","ffff00","ff00ff","000080"],["808080","ff0000","800080","000000"]]} }; core.ColorPicker.buildRendering=function(){this.domNode=document.createElement("table"); with(this.domNode){cellPadding="0"; cellSpacing="1"; border="1"; style.backgroundColor="white" }var colors=this._palettes[this.palette]; for(var i=0; i0){for(var i=0; i0){for(var i=0; i\n\n"); doc.write("Log4js - "+this.logger.category+"\n"); doc.write('\n'); win.blur(); win.focus() }this.docReference=doc; this.winReference=win }else{this.docReference=document; this.winReference=window }this.outputCount=0; this.tagPattern=".*"; this.logElement=this.docReference.createElement("div"); this.docReference.body.appendChild(this.logElement); this.logElement.style.display="none"; this.logElement.style.position="absolute"; this.logElement.style.left="0px"; this.logElement.style.width="100%"; this.logElement.style.textAlign="left"; this.logElement.style.fontFamily="lucida console"; this.logElement.style.fontSize="100%"; this.logElement.style.backgroundColor="darkgray"; this.logElement.style.opacity=0.9; this.logElement.style.zIndex=2000; this.toolbarElement=this.docReference.createElement("div"); this.logElement.appendChild(this.toolbarElement); this.toolbarElement.style.padding="0 0 0 2px"; this.buttonsContainerElement=this.docReference.createElement("span"); this.toolbarElement.appendChild(this.buttonsContainerElement); if(this.inline){var closeButton=this.docReference.createElement("button"); closeButton.style.cssFloat="right"; closeButton.style.styleFloat="right"; closeButton.style.color="black"; closeButton.innerHTML="close"; closeButton.onclick=Log4js.bind(this.toggle,this); this.buttonsContainerElement.appendChild(closeButton) }var clearButton=this.docReference.createElement("button"); clearButton.style.cssFloat="right"; clearButton.style.styleFloat="right"; clearButton.style.color="black"; clearButton.innerHTML="clear"; clearButton.onclick=Log4js.bind(this.logger.clear,this.logger); this.buttonsContainerElement.appendChild(clearButton); this.tagFilterContainerElement=this.docReference.createElement("span"); this.toolbarElement.appendChild(this.tagFilterContainerElement); this.tagFilterContainerElement.style.cssFloat="left"; this.tagFilterContainerElement.appendChild(this.docReference.createTextNode("Log4js - "+this.logger.category)); this.tagFilterContainerElement.appendChild(this.docReference.createTextNode(" | Level Filter: ")); this.tagFilterElement=this.docReference.createElement("input"); this.tagFilterContainerElement.appendChild(this.tagFilterElement); this.tagFilterElement.style.width="200px"; this.tagFilterElement.value=this.tagPattern; this.tagFilterElement.setAttribute("autocomplete","off"); Log4js.attachEvent(this.tagFilterElement,"keyup",Log4js.bind(this.updateTags,this)); Log4js.attachEvent(this.tagFilterElement,"click",Log4js.bind(function(){this.tagFilterElement.select() },this)); this.outputElement=this.docReference.createElement("div"); this.logElement.appendChild(this.outputElement); this.outputElement.style.overflow="auto"; this.outputElement.style.clear="both"; this.outputElement.style.height=(this.inline)?("200px"):("650px"); this.outputElement.style.width="100%"; this.outputElement.style.backgroundColor="black"; this.inputContainerElement=this.docReference.createElement("div"); this.inputContainerElement.style.width="100%"; this.logElement.appendChild(this.inputContainerElement); this.inputElement=this.docReference.createElement("input"); this.inputContainerElement.appendChild(this.inputElement); this.inputElement.style.width="100%"; this.inputElement.style.borderWidth="0px"; this.inputElement.style.margin="0px"; this.inputElement.style.padding="0px"; this.inputElement.value="Type command here"; this.inputElement.setAttribute("autocomplete","off"); Log4js.attachEvent(this.inputElement,"keyup",Log4js.bind(this.handleInput,this)); Log4js.attachEvent(this.inputElement,"click",Log4js.bind(function(){this.inputElement.select() },this)); if(this.inline){window.setInterval(Log4js.bind(this.repositionWindow,this),500); this.repositionWindow(); var accessElement=this.docReference.createElement("button"); accessElement.style.position="absolute"; accessElement.style.top="-100px"; accessElement.accessKey=this.accesskey; accessElement.onclick=Log4js.bind(this.toggle,this); this.docReference.body.appendChild(accessElement) }else{this.show() }},toggle:function(){if(this.logElement.style.display=="none"){this.show(); return true }else{this.hide(); return false }},show:function(){this.logElement.style.display=""; this.outputElement.scrollTop=this.outputElement.scrollHeight; this.inputElement.select() },hide:function(){this.logElement.style.display="none" },output:function(message,style){var shouldScroll=(this.outputElement.scrollTop+(2*this.outputElement.clientHeight))>=this.outputElement.scrollHeight; this.outputCount++; style=(style?style+=";":""); style+="padding:1px;margin:0 0 5px 0"; if(this.outputCount%2===0){style+=";background-color:#101010" }message=message||"undefined"; message=message.toString(); this.outputElement.innerHTML+="
"+message+"
"; if(shouldScroll){this.outputElement.scrollTop=this.outputElement.scrollHeight }},updateTags:function(){var pattern=this.tagFilterElement.value; if(this.tagPattern==pattern){return }try{new RegExp(pattern) }catch(e){return }this.tagPattern=pattern; this.outputElement.innerHTML=""; this.outputCount=0; for(var i=0; i"+e.message); break }this.logger.trace(consoleOutput); break }if(this.inputElement.value!==""&&this.inputElement.value!==this.commandHistory[0]){this.commandHistory.unshift(this.inputElement.value) }this.commandIndex=0; this.inputElement.value="" }else{if(e.keyCode==38&&this.commandHistory.length>0){this.inputElement.value=this.commandHistory[this.commandIndex]; if(this.commandIndex0){if(this.commandIndex>0){this.commandIndex-=1 }this.inputElement.value=this.commandHistory[this.commandIndex] }else{this.commandIndex=0 }}}},toString:function(){return"Log4js.ConsoleAppender[inline="+this.inline+"]" }}); Log4js.MetatagAppender=function(){this.currentLine=0 }; Log4js.MetatagAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){var now=new Date(); var lines=loggingEvent.message.split("\n"); var headTag=document.getElementsByTagName("head")[0]; for(var i=1; i<=lines.length; i++){var value=lines[i-1]; if(i==1){value=loggingEvent.level.toString()+": "+value }else{value="> "+value }var metaTag=document.createElement("meta"); metaTag.setAttribute("name","X-log4js:"+this.currentLine); metaTag.setAttribute("content",value); headTag.appendChild(metaTag); this.currentLine+=1 }},toString:function(){return"Log4js.MetatagAppender" }}); Log4js.AjaxAppender=function(loggingUrl){this.isInProgress=false; this.loggingUrl=loggingUrl||"logging.log4js"; this.threshold=1; this.timeout=2000; this.loggingEventMap=new Log4js.FifoBuffer(); this.layout=new Log4js.XMLLayout(); this.httpRequest=null }; Log4js.AjaxAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){log4jsLogger.trace("> AjaxAppender.append"); if(this.loggingEventMap.length()<=this.threshold||this.isInProgress===true){this.loggingEventMap.push(loggingEvent) }if(this.loggingEventMap.length()>=this.threshold&&this.isInProgress===false){this.send() }log4jsLogger.trace("< AjaxAppender.append") },doClear:function(){log4jsLogger.trace("> AjaxAppender.doClear"); if(this.loggingEventMap.length()>0){this.send() }log4jsLogger.trace("< AjaxAppender.doClear") },setThreshold:function(threshold){log4jsLogger.trace("> AjaxAppender.setThreshold: "+threshold); this.threshold=threshold; log4jsLogger.trace("< AjaxAppender.setThreshold") },setTimeout:function(milliseconds){this.timeout=milliseconds },send:function(){if(this.loggingEventMap.length()>0){log4jsLogger.trace("> AjaxAppender.send"); this.isInProgress=true; var a=[]; for(var i=0; i AjaxAppender.timeout"); appender.httpRequest.onreadystatechange=function(){return }; appender.httpRequest.abort(); appender.isInProgress=false; if(appender.loggingEventMap.length()>0){appender.send() }log4jsLogger.trace("< AjaxAppender.timeout") },this.timeout) }catch(e){log4jsLogger.fatal(e) }log4jsLogger.trace("> AjaxAppender.send") }},onReadyStateChanged:function(){log4jsLogger.trace("> AjaxAppender.onReadyStateChanged"); var req=this.httpRequest; if(this.httpRequest.readyState!=4){log4jsLogger.trace("< AjaxAppender.onReadyStateChanged: readyState "+req.readyState+" != 4"); return }var success=((typeof req.status==="undefined")||req.status===0||(req.status>=200&&req.status<300)); if(success){log4jsLogger.trace(" AjaxAppender.onReadyStateChanged: success"); this.isInProgress=false }else{var msg=" AjaxAppender.onReadyStateChanged: XMLHttpRequest request to URL "+this.loggingUrl+" returned status code "+this.httpRequest.status; log4jsLogger.error(msg) }log4jsLogger.trace("< AjaxAppender.onReadyStateChanged: readyState == 4") },getXmlHttpRequest:function(){log4jsLogger.trace("> AjaxAppender.getXmlHttpRequest"); var httpRequest=false; try{if(window.XMLHttpRequest){httpRequest=new XMLHttpRequest(); if(httpRequest.overrideMimeType){httpRequest.overrideMimeType(this.layout.getContentType()) }}else{if(window.ActiveXObject){try{httpRequest=new ActiveXObject("Msxml2.XMLHTTP") }catch(e){httpRequest=new ActiveXObject("Microsoft.XMLHTTP") }}}}catch(e){httpRequest=false }if(!httpRequest){log4jsLogger.fatal("Unfortunatelly your browser does not support AjaxAppender for log4js!") }log4jsLogger.trace("< AjaxAppender.getXmlHttpRequest"); return httpRequest },toString:function(){return"Log4js.AjaxAppender[loggingUrl="+this.loggingUrl+", threshold="+this.threshold+"]" }}); Log4js.FileAppender=function(file){this.layout=new Log4js.SimpleLayout(); this.isIE="undefined"; this.file=file||"log4js.log"; try{this.fso=new ActiveXObject("Scripting.FileSystemObject"); this.isIE=true }catch(e){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); this.fso=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); this.isIE=false }catch(e){log4jsLogger.error(e) }}}; Log4js.FileAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){try{var fileHandle=null; if(this.isIE==="undefined"){log4jsLogger.error("Unsupported ") }else{if(this.isIE){fileHandle=this.fso.OpenTextFile(this.file,8,true); fileHandle.WriteLine(this.layout.format(loggingEvent)); fileHandle.close() }else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); this.fso.initWithPath(this.file); if(!this.fso.exists()){this.fso.create(0,384) }fileHandle=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); fileHandle.init(this.fso,4|8|16,52,0); var line=this.layout.format(loggingEvent); fileHandle.write(line,line.length); fileHandle.close() }}}catch(e){log4jsLogger.error(e) }},doClear:function(){try{if(this.isIE){var fileHandle=this.fso.GetFile(this.file); fileHandle.Delete() }else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); this.fso.initWithPath(this.file); if(this.fso.exists()){this.fso.remove(false) }}}catch(e){log4jsLogger.error(e) }},toString:function(){return"Log4js.FileAppender[file="+this.file+"]" }}); Log4js.WindowsEventAppender=function(){this.layout=new Log4js.SimpleLayout(); try{this.shell=new ActiveXObject("WScript.Shell") }catch(e){log4jsLogger.error(e) }}; Log4js.WindowsEventAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){var winLevel=4; switch(loggingEvent.level){case Log4js.Level.FATAL:winLevel=1; break; case Log4js.Level.ERROR:winLevel=1; break; case Log4js.Level.WARN:winLevel=2; break; default:winLevel=4; break }try{this.shell.LogEvent(winLevel,this.level.format(loggingEvent)) }catch(e){log4jsLogger.error(e) }},toString:function(){return"Log4js.WindowsEventAppender" }}); Log4js.JSAlertAppender=function(){this.layout=new Log4js.SimpleLayout() }; Log4js.JSAlertAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){alert(this.layout.getHeader()+this.layout.format(loggingEvent)+this.layout.getFooter()) },toString:function(){return"Log4js.JSAlertAppender" }}); Log4js.MozillaJSConsoleAppender=function(){this.layout=new Log4js.SimpleLayout(); try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); this.jsConsole=Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService); this.scriptError=Components.classes["@mozilla.org/scripterror;1"].createInstance(Components.interfaces.nsIScriptError) }catch(e){log4jsLogger.error(e) }}; Log4js.MozillaJSConsoleAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); this.scriptError.init(this.layout.format(loggingEvent),null,null,null,null,this.levelCode(loggingEvent),loggingEvent.categoryName); this.jsConsole.logMessage(this.scriptError) }catch(e){log4jsLogger.error(e) }},toString:function(){return"Log4js.MozillaJSConsoleAppender" },levelCode:function(loggingEvent){var retval; switch(loggingEvent.level){case Log4js.Level.FATAL:retval=2; break; case Log4js.Level.ERROR:retval=0; break; case Log4js.Level.WARN:retval=1; break; default:retval=1; break }return retval }}); Log4js.OperaJSConsoleAppender=function(){this.layout=new Log4js.SimpleLayout() }; Log4js.OperaJSConsoleAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){opera.postError(this.layout.format(loggingEvent)) },toString:function(){return"Log4js.OperaJSConsoleAppender" }}); Log4js.SafariJSConsoleAppender=function(){this.layout=new Log4js.SimpleLayout() }; Log4js.SafariJSConsoleAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){window.console.log(this.layout.format(loggingEvent)) },toString:function(){return"Log4js.SafariJSConsoleAppender" }}); Log4js.BrowserConsoleAppender=function(){this.consoleDelegate=null; if(window.console){this.consoleDelegate=new Log4js.SafariJSConsoleAppender() }else{if(window.opera){this.consoleDelegate=new Log4js.OperaJSConsoleAppender() }else{if(netscape){this.consoleDelegate=new Log4js.MozillaJSConsoleAppender() }else{log4jsLogger.error("Unsupported Browser") }}}}; Log4js.BrowserConsoleAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){this.consoleDelegate.doAppend(loggingEvent) },doClear:function(){this.consoleDelegate.doClear() },setLayout:function(layout){this.consoleDelegate.setLayout(layout) },toString:function(){return"Log4js.BrowserConsoleAppender: "+this.consoleDelegate.toString() }}); Log4js.SimpleLayout=function(){this.LINE_SEP="\n"; this.LINE_SEP_LEN=1 }; Log4js.SimpleLayout.prototype=Log4js.extend(new Log4js.Layout(),{format:function(loggingEvent){return loggingEvent.level.toString()+" - "+loggingEvent.message+this.LINE_SEP },getContentType:function(){return"text/plain" },getHeader:function(){return"" },getFooter:function(){return"" }}); Log4js.BasicLayout=function(){this.LINE_SEP="\n" }; Log4js.BasicLayout.prototype=Log4js.extend(new Log4js.Layout(),{format:function(loggingEvent){return loggingEvent.categoryName+"~"+loggingEvent.startTime.toLocaleString()+" ["+loggingEvent.level.toString()+"] "+loggingEvent.message+this.LINE_SEP },getContentType:function(){return"text/plain" },getHeader:function(){return"" },getFooter:function(){return"" }}); Log4js.HtmlLayout=function(){return }; Log4js.HtmlLayout.prototype=Log4js.extend(new Log4js.Layout(),{format:function(loggingEvent){return'
'+loggingEvent.getFormattedTimestamp()+" - "+loggingEvent.level.toString()+" - "+loggingEvent.message+"
\n" },getContentType:function(){return"text/html" },getHeader:function(){return"log4js</head><body>" },getFooter:function(){return"</body></html>" },getStyle:function(loggingEvent){var style; if(loggingEvent.level.toString().search(/ERROR/)!=-1){style="color:red" }else{if(loggingEvent.level.toString().search(/FATAL/)!=-1){style="color:red" }else{if(loggingEvent.level.toString().search(/WARN/)!=-1){style="color:orange" }else{if(loggingEvent.level.toString().search(/DEBUG/)!=-1){style="color:green" }else{if(loggingEvent.level.toString().search(/INFO/)!=-1){style="color:white" }else{style="color:yellow" }}}}}return style }}); Log4js.XMLLayout=function(){return }; Log4js.XMLLayout.prototype=Log4js.extend(new Log4js.Layout(),{format:function(loggingEvent){var useragent="unknown"; try{useragent=navigator.userAgent }catch(e){useragent="unknown" }var referer="unknown"; try{referer=location.href }catch(e){referer="unknown" }var content='<log4js:event logger="'; content+=loggingEvent.categoryName+'" level="'; content+=loggingEvent.level.toString()+'" useragent="'; content+=useragent+'" referer="'; content+=referer.replace(/&/g,"&")+'" timestamp="'; content+=loggingEvent.getFormattedTimestamp()+'">\n'; content+="\t<log4js:message><![CDATA["+this.escapeCdata(loggingEvent.message)+"]]></log4js:message>\n"; if(loggingEvent.exception){content+=this.formatException(loggingEvent.exception) }content+="</log4js:event>\n"; return content },getContentType:function(){return"text/xml" },getHeader:function(){return'<log4js:eventSet version="'+Log4js.version+'" xmlns:log4js="http://log4js.berlios.de/2007/log4js/">\n' },getFooter:function(){return"</log4js:eventSet>\n" },getSeparator:function(){return"\n" },formatException:function(ex){if(ex){var exStr="\t<log4js:throwable>"; if(ex.message){exStr+="\t\t<log4js:message><![CDATA["+this.escapeCdata(ex.message)+"]]></log4js:message>\n" }if(ex.description){exStr+="\t\t<log4js:description><![CDATA["+this.escapeCdata(ex.description)+"]]></log4js:description>\n" }exStr+="\t\t<log4js:stacktrace>"; exStr+='\t\t\t<log4js:location fileName="'+ex.fileName+'" lineNumber="'+ex.lineNumber+'" />'; exStr+="\t\t</log4js:stacktrace>"; exStr="\t</log4js:throwable>"; return exStr }return null },escapeCdata:function(str){return str.replace(/\]\]>/,"]]>]]><![CDATA[") }}); Log4js.JSONLayout=function(){this.df=new Log4js.DateFormatter() }; Log4js.JSONLayout.prototype=Log4js.extend(new Log4js.Layout(),{format:function(loggingEvent){var useragent="unknown"; try{useragent=navigator.userAgent }catch(e){useragent="unknown" }var referer="unknown"; try{referer=location.href }catch(e){referer="unknown" }var jsonString='{\n "LoggingEvent": {\n'; jsonString+='\t"logger": "'+loggingEvent.categoryName+'",\n'; jsonString+='\t"level": "'+loggingEvent.level.toString()+'",\n'; jsonString+='\t"message": "'+loggingEvent.message+'",\n'; jsonString+='\t"referer": "'+referer+'",\n'; jsonString+='\t"useragent": "'+useragent+'",\n'; jsonString+='\t"timestamp": "'+this.df.formatDate(loggingEvent.startTime,"yyyy-MM-ddThh:mm:ssZ")+'",\n'; jsonString+='\t"exception": "'+loggingEvent.exception+'"\n'; jsonString+="}}"; return jsonString },getContentType:function(){return"text/json" },getHeader:function(){return'{"Log4js": [\n' },getFooter:function(){return"\n]}" },getSeparator:function(){return",\n" }}); Log4js.PatternLayout=function(pattern){if(pattern){this.pattern=pattern }else{this.pattern=Log4js.PatternLayout.DEFAULT_CONVERSION_PATTERN }}; Log4js.PatternLayout.TTCC_CONVERSION_PATTERN="%r %p %c - %m%n"; Log4js.PatternLayout.DEFAULT_CONVERSION_PATTERN="%m%n"; Log4js.PatternLayout.ISO8601_DATEFORMAT="yyyy-MM-dd HH:mm:ss,SSS"; Log4js.PatternLayout.DATETIME_DATEFORMAT="dd MMM YYYY HH:mm:ss,SSS"; Log4js.PatternLayout.ABSOLUTETIME_DATEFORMAT="HH:mm:ss,SSS"; Log4js.PatternLayout.prototype=Log4js.extend(new Log4js.Layout(),{getContentType:function(){return"text/plain" },getHeader:function(){return null },getFooter:function(){return null },format:function(loggingEvent){var regex=/%(-?[0-9]+)?(\.?[0-9]+)?([cdmnpr%])(\{([^\}]+)\})?|([^%]+)/; var formattedString=""; var result; var searchString=this.pattern; while((result=regex.exec(searchString))){var matchedString=result[0]; var padding=result[1]; var truncation=result[2]; var conversionCharacter=result[3]; var specifier=result[5]; var text=result[6]; if(text){formattedString+=""+text }else{var replacement=""; switch(conversionCharacter){case"c":var loggerName=loggingEvent.categoryName; if(specifier){var precision=parseInt(specifier,10); var loggerNameBits=loggingEvent.categoryName.split("."); if(precision>=loggerNameBits.length){replacement=loggerName }else{replacement=loggerNameBits.slice(loggerNameBits.length-precision).join(".") }}else{replacement=loggerName }break; case"d":var dateFormat=Log4js.PatternLayout.ISO8601_DATEFORMAT; if(specifier){dateFormat=specifier; if(dateFormat=="ISO8601"){dateFormat=Log4js.PatternLayout.ISO8601_DATEFORMAT }else{if(dateFormat=="ABSOLUTE"){dateFormat=Log4js.PatternLayout.ABSOLUTETIME_DATEFORMAT }else{if(dateFormat=="DATE"){dateFormat=Log4js.PatternLayout.DATETIME_DATEFORMAT }}}}replacement=(new Log4js.SimpleDateFormat(dateFormat)).format(loggingEvent.startTime); break; case"m":replacement=loggingEvent.message; break; case"n":replacement="\n"; break; case"p":replacement=loggingEvent.level.toString(); break; case"r":replacement=""+loggingEvent.startTime.toLocaleTimeString(); break; case"%":replacement="%"; break; default:replacement=matchedString; break }var len; if(truncation){len=parseInt(truncation.substr(1),10); replacement=replacement.substring(0,len) }if(padding){if(padding.charAt(0)=="-"){len=parseInt(padding.substr(1),10); while(replacement.length<len){replacement+=" " }}else{len=parseInt(padding,10); while(replacement.length<len){replacement=" "+replacement }}}formattedString+=replacement }searchString=searchString.substr(result.index+result[0].length) }return formattedString }}); if(!Array.prototype.push){Array.prototype.push=function(){var startLength=this.length; for(var i=0; i<arguments.length; i++){this[startLength+i]=arguments[i] }return this.length } }Log4js.FifoBuffer=function(){this.array=new Array() }; Log4js.FifoBuffer.prototype={push:function(obj){this.array[this.array.length]=obj; return this.array.length },pull:function(){if(this.array.length>0){var firstItem=this.array[0]; for(var i=0; i<this.array.length-1; i++){this.array[i]=this.array[i+1] }this.array.length=this.array.length-1; return firstItem }return null },length:function(){return this.array.length }}; Log4js.DateFormatter=function(){return }; Log4js.DateFormatter.DEFAULT_DATE_FORMAT="yyyy-MM-ddThh:mm:ssO"; Log4js.DateFormatter.prototype={formatDate:function(vDate,vFormat){var vDay=this.addZero(vDate.getDate()); var vMonth=this.addZero(vDate.getMonth()+1); var vYearLong=this.addZero(vDate.getFullYear()); var vYearShort=this.addZero(vDate.getFullYear().toString().substring(3,4)); var vYear=(vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort); var vHour=this.addZero(vDate.getHours()); var vMinute=this.addZero(vDate.getMinutes()); var vSecond=this.addZero(vDate.getSeconds()); var vTimeZone=this.O(vDate); var vDateString=vFormat.replace(/dd/g,vDay).replace(/MM/g,vMonth).replace(/y{1,4}/g,vYear); vDateString=vDateString.replace(/hh/g,vHour).replace(/mm/g,vMinute).replace(/ss/g,vSecond); vDateString=vDateString.replace(/O/g,vTimeZone); return vDateString },addZero:function(vNumber){return((vNumber<10)?"0":"")+vNumber },O:function(date){var os=Math.abs(date.getTimezoneOffset()); var h=String(Math.floor(os/60)); var m=String(os%60); h.length==1?h="0"+h:1; m.length==1?m="0"+m:1; return date.getTimezoneOffset()<0?"+"+h+m:"-"+h+m }}; var log4jsLogger=Log4js.getLogger("Log4js"); log4jsLogger.addAppender(new Log4js.ConsoleAppender()); log4jsLogger.setLevel(Log4js.Level.ALL);core.Monitor=function(fadeElement,logContentElem){$assert(fadeElement,"fadeElement can not be null"); $assert(logContentElem,"logContentElem can not be null"); this.pendingMessages=[]; this.inProgress=false; this._container=fadeElement; this._currentMessage=null; this._logContentElem=logContentElem; this._fxOpacity=fadeElement.effect("opacity",{duration:6000}) }; core.Monitor.prototype._logMessage=function(msg,msgKind){this._fxOpacity.clearTimer(); if(msgKind==core.Monitor.MsgKind.ERROR){msg="<div id='small_error_icon'>"+msg+"</div>" }this._currentMessage=msg; this._fxOpacity.start(1,0); this._logContentElem.innerHTML=msg }; core.Monitor.prototype.logError=function(userMsg){this.logMessage(userMsg,core.Monitor.MsgKind.ERROR) }; core.Monitor.prototype.logFatal=function(userMsg){this.logMessage(userMsg,core.Monitor.MsgKind.FATAL) }; core.Monitor.prototype.logMessage=function(msg,msgKind){if(!msgKind){msgKind=core.Monitor.MsgKind.INFO }if(msgKind==core.Monitor.MsgKind.FATAL){new Windoo.Alert(msg,{window:{theme:Windoo.Themes.aero,title:"Outch!!. An unexpected error.",onClose:function(){}}}) }else{var messages=this.pendingMessages; var monitor=this; if(!this.executer){monitor._logMessage(msg,msgKind); var disptacher=function(){if(messages.length>0){var msgToDisplay=messages.shift(); monitor._logMessage(msgToDisplay) }if(messages.length==0){$clear(monitor.executer); monitor.executer=null; monitor._fxOpacity.hide(); this._currentMessage=null }}; this.executer=disptacher.periodical(600) }else{if(this._currentMessage!=msg){messages.push(msg) }}}}; core.Monitor.setInstance=function(monitor){this.monitor=monitor }; core.Monitor.getInstance=function(){var result=this.monitor; if(result==null){result={logError:function(){},logMessage:function(){}} }return result }; core.Monitor.MsgKind={INFO:1,WARNING:2,ERROR:3,FATAL:4};core.Point=function(x,y){this.x=x; this.y=y }; core.Point.prototype.setValue=function(x,y){this.x=x; this.y=y }; core.Point.prototype.inspect=function(){return"{x:"+this.x+",y:"+this.y+"}" }; core.Point.prototype.clone=function(){return new core.Point(this.x,this.y) }; core.Point.fromString=function(point){var values=point.split(","); return new core.Point(values[0],values[1]) };core.UserAgent={isMozillaFamily:function(){return this.browser=="Netscape"||this.browser=="Firefox" },isIE:function(){return this.browser=="Explorer" },init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser"; this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version"; this.OS=this.searchString(this.dataOS)||"an unknown OS" },searchString:function(data){for(var i=0; i<data.length; i++){var dataString=data[i].string; var dataProp=data[i].prop; this.versionSearchString=data[i].versionSearch||data[i].identity; if(dataString){if(dataString.indexOf(data[i].subString)!=-1){return data[i].identity }}else{if(dataProp){return data[i].identity }}}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString); if(index==-1){return }return parseFloat(dataString.substring(index+this.versionSearchString.length+1)) },dataBrowser:[{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",identity:"Safari"},{string:navigator.vendor,subString:"Google Inc.",identity:"Chrome"},{prop:window.opera,identity:"Opera"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.platform,subString:"Win",identity:"Windows"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.platform,subString:"Linux",identity:"Linux"}]}; core.UserAgent.init();core.Utils={escapeInvalidTags:function(text){return text }}; function $defined(obj){return(obj!=undefined) }objects={}; objects.extend=function(subClass,baseClass){function inheritance(){}inheritance.prototype=baseClass.prototype; subClass.prototype=new inheritance(); subClass.prototype.constructor=subClass; subClass.baseConstructor=baseClass; subClass.superClass=baseClass.prototype }; $assert=function(assert,message){if(!$defined(assert)||!assert){var stack; try{null.eval() }catch(e){stack=e }wLogger.error(message+","+stack) }}; Math.sign=function(value){return(value>=0)?1:-1 }; function $import(src){var scriptElem=document.createElement("script"); scriptElem.setAttribute("src",src); scriptElem.setAttribute("type","text/javascript"); document.getElementsByTagName("head")[0].appendChild(scriptElem) }core.Utils.getMousePosition=function(event){var xcoord=-1; var ycoord=-1; if(!$defined(event)){if($defined(window.event)){event=window.event }else{throw"Could not obtain mouse position" }}if($defined(event.$extended)){event=event.event }if(typeof (event.pageX)=="number"){xcoord=event.pageX; ycoord=event.pageY }else{if(typeof (event.clientX)=="number"){xcoord=event.clientX; ycoord=event.clientY; var badOldBrowser=(window.navigator.userAgent.indexOf("Opera")+1)||(window.ScriptEngine&&ScriptEngine().indexOf("InScript")+1)||(navigator.vendor=="KDE"); if(!badOldBrowser){if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){xcoord+=document.body.scrollLeft; ycoord+=document.body.scrollTop }else{if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){xcoord+=document.documentElement.scrollLeft; ycoord+=document.documentElement.scrollTop }}}}else{throw"Could not obtain mouse position" }}return{x:xcoord,y:ycoord} }; core.Utils.workOutDivElementPosition=function(divElement){var curleft=0; var curtop=0; if($defined(divElement.offsetParent)){curleft=divElement.offsetLeft; curtop=divElement.offsetTop; while(divElement=divElement.offsetParent){curleft+=divElement.offsetLeft; curtop+=divElement.offsetTop }}return{x:curleft,y:curtop} }; core.Utils.innerXML=function(node){if($defined(node.innerXML)){return node.innerXML }else{if($defined(node.xml)){return node.xml }else{if($defined(XMLSerializer)){return(new XMLSerializer()).serializeToString(node) }}}}; core.Utils.createDocument=function(){var doc=null; var _document=window.document; if($defined(window.ActiveXObject)){var prefixes=["MSXML2","Microsoft","MSXML","MSXML3"]; for(var i=0; i<prefixes.length; i++){try{doc=new ActiveXObject(prefixes[i]+".XMLDOM") }catch(e){}if($defined(doc)){break }}}else{if((_document.implementation)&&(_document.implementation.createDocument)){doc=_document.implementation.createDocument("","",null) }}return doc }; core.Utils.createDocumentFromText=function(str,mimetype){if(!$defined(mimetype)){mimetype="text/xml" }if($defined(window.DOMParser)){var parser=new DOMParser(); return parser.parseFromString(str,mimetype) }else{if($defined(window.ActiveXObject)){var domDoc=core.Utils.createDocument(); if($defined(domDoc)){domDoc.async=false; domDoc.loadXML(str); return domDoc }}}return null }; core.Utils.calculateRelationShipPointCoordinates=function(topic,controlPoint){var size=topic.getSize(); var position=topic.getPosition(); var m=(position.y-controlPoint.y)/(position.x-controlPoint.x); var y,x; var gap=5; if(controlPoint.y>position.y+(size.height/2)){y=position.y+(size.height/2)+gap; x=position.x-((position.y-y)/m); if(x>position.x+(size.width/2)){x=position.x+(size.width/2) }else{if(x<position.x-(size.width/2)){x=position.x-(size.width/2) }}}else{if(controlPoint.y<position.y-(size.height/2)){y=position.y-(size.height/2)-gap; x=position.x-((position.y-y)/m); if(x>position.x+(size.width/2)){x=position.x+(size.width/2) }else{if(x<position.x-(size.width/2)){x=position.x-(size.width/2) }}}else{if(controlPoint.x<(position.x-size.width/2)){x=position.x-(size.width/2)-gap; y=position.y-(m*(position.x-x)) }else{x=position.x+(size.width/2)+gap; y=position.y-(m*(position.x-x)) }}}return new core.Point(x,y) }; core.Utils.calculateDefaultControlPoints=function(srcPos,tarPos){var y=srcPos.y-tarPos.y; var x=srcPos.x-tarPos.x; var m=y/x; var l=Math.sqrt(y*y+x*x)/3; var fix=1; if(srcPos.x>tarPos.x){fix=-1 }var x1=srcPos.x+Math.sqrt(l*l/(1+(m*m)))*fix; var y1=m*(x1-srcPos.x)+srcPos.y; var x2=tarPos.x+Math.sqrt(l*l/(1+(m*m)))*fix*-1; var y2=m*(x2-tarPos.x)+tarPos.y; return[new core.Point(-srcPos.x+x1,-srcPos.y+y1),new core.Point(-tarPos.x+x2,-tarPos.y+y2)] }; core.Utils.setVisibilityAnimated=function(elems,isVisible,doneFn){core.Utils.animateVisibility(elems,isVisible,doneFn) }; core.Utils.setChildrenVisibilityAnimated=function(rootElem,isVisible){var children=core.Utils._addInnerChildrens(rootElem); core.Utils.animateVisibility(children,isVisible) }; core.Utils.animateVisibility=function(elems,isVisible,doneFn){var _fadeEffect=null; var _opacity=(isVisible?0:1); if(isVisible){elems.forEach(function(child,index){if($defined(child)){child.setOpacity(_opacity); child.setVisibility(isVisible) }}) }var fadeEffect=function(index){var step=10; if((_opacity<=0&&!isVisible)||(_opacity>=1&&isVisible)){$clear(_fadeEffect); _fadeEffect=null; elems.forEach(function(child,index){if($defined(child)){child.setVisibility(isVisible) }}); if($defined(doneFn)){doneFn.attempt() }}else{var fix=1; if(isVisible){fix=-1 }_opacity-=(1/step)*fix; elems.forEach(function(child,index){if($defined(child)){child.setOpacity(_opacity) }}) }}; _fadeEffect=fadeEffect.periodical(10) }; core.Utils.animatePosition=function(elems,doneFn,designer){var _moveEffect=null; var i=10; var step=10; var moveEffect=function(){if(i>0){var keys=elems.keys(); for(var j=0; j<keys.length; j++){var id=keys[j]; var mod=elems.get(id); var allTopics=designer._getTopics(); var currentTopic=allTopics.filter(function(node){return node.getId()==id })[0]; var xStep=(mod.originalPos.x-mod.newPos.x)/step; var yStep=(mod.originalPos.y-mod.newPos.y)/step; var newPos=currentTopic.getPosition().clone(); newPos.x+=xStep; newPos.y+=yStep; currentTopic.setPosition(newPos,false) }}else{$clear(_moveEffect); var keys=elems.keys(); for(var j=0; j<keys.length; j++){var id=keys[j]; var mod=elems.get(id); var allTopics=designer._getTopics(); var currentTopic=allTopics.filter(function(node){return node.getId()==id })[0]; currentTopic.setPosition(mod.originalPos,false) }if($defined(doneFn)){doneFn.attempt() }}i-- }; _moveEffect=moveEffect.periodical(10) }; core.Utils._addInnerChildrens=function(elem){var children=[]; var childs=elem._getChildren(); for(var i=0; i<childs.length; i++){var child=childs[i]; children.push(child); children.push(child.getOutgoingLine()); var relationships=child.getRelationships(); children=children.concat(relationships); var innerChilds=core.Utils._addInnerChildrens(child); children=children.concat(innerChilds) }return children };core.WaitDialog=new Class({yPos:0,xPos:0,initialize:function(){},activate:function(changeCursor,dialogContent){this.content=dialogContent; this._initLightboxMarkup(); this.displayLightbox("block"); if(changeCursor){window.document.body.style.cursor="wait" }},changeContent:function(dialogContent,changeCursor){this.content=dialogContent; if(!$("lbContent")){window.document.body.style.cursor="pointer"; return }this.processInfo(); if(changeCursor){window.document.body.style.cursor="wait" }else{window.document.body.style.cursor="auto" }},displayLightbox:function(display){if(display!="none"){this.processInfo() }$("overlay").style.display=display; $("lightbox").style.display=display },processInfo:function(){if($("lbContent")){$("lbContent").dispose() }var lbContentElement=new Element("div").setProperty("id","lbContent"); lbContentElement.innerHTML=this.content.innerHTML; lbContentElement.inject($("lbLoadMessage"),"before"); $("lightbox").className="done" },actions:function(){lbActions=document.getElementsByClassName("lbAction"); for(i=0; i<lbActions.length; i++){$(lbActions[i]).addEvent("click",function(){this[lbActions[i].rel].pass(this) }.bind(this)); lbActions[i].onclick=function(){return false } }},deactivate:function(time){if($("lbContent")){$("lbContent").dispose() }this.displayLightbox("none"); window.document.body.style.cursor="default" },_initLightboxMarkup:function(){var bodyElem=document.getElementsByTagName("body")[0]; var overlayElem=new Element("div").setProperty("id","overlay"); overlayElem.inject(bodyElem); var lightboxElem=new Element("div").setProperty("id","lightbox"); lightboxElem.addClass("loading"); var lbLoadMessageElem=new Element("div").setProperty("id","lbLoadMessage"); lbLoadMessageElem.inject(lightboxElem); lightboxElem.inject(bodyElem) }});var wLogger=new Log4js.getLogger("WiseMapping"); wLogger.setLevel(Log4js.Level.ALL); if($defined(window.LoggerService)){Log4js.WiseServerAppender=function(){this.layout=new Log4js.SimpleLayout() }; Log4js.WiseServerAppender.prototype=Log4js.extend(new Log4js.Appender(),{doAppend:function(loggingEvent){try{var message=this.layout.format(loggingEvent); var level=this.levelCode(loggingEvent); window.LoggerService.logError(level,message) }catch(e){alert(e) }},toString:function(){return"Log4js.WiseServerAppender" },levelCode:function(loggingEvent){var retval; switch(loggingEvent.level){case Log4js.Level.FATAL:retval=3; break; case Log4js.Level.ERROR:retval=3; break; case Log4js.Level.WARN:retval=2; break; default:retval=1; break }return retval }}); wLogger.addAppender(new Log4js.WiseServerAppender()) };core.Executor=new Class({options:{isLoading:true},initialize:function(options){this._pendingFunctions=[] },setLoading:function(isLoading){this.options.isLoading=isLoading; if(!isLoading){this._pendingFunctions.forEach(function(item){var result=item.fn.attempt(item.args,item.bind); $assert(result!=false,"execution failed") }); this._pendingFunctions=[] }},isLoading:function(){return this.options.isLoading },delay:function(fn,delay,bind,args){if(this.options.isLoading){this._pendingFunctions.push({fn:fn,bind:bind,args:args}) }else{fn.delay(delay,bind,args) }}}); core.Executor.instance=new core.Executor();