
(function(window,undefined){var document=window.document;var jQuery=(function(){var jQuery=function(selector,context){return new jQuery.fn.init(selector,context,rootjQuery);},_jQuery=window.jQuery,_$=window.$,rootjQuery,quickExpr=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,rnotwhite=/\S/,trimLeft=/^\s+/,trimRight=/\s+$/,rdigit=/\d/,rsingleTag=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,rvalidchars=/^[\],:{}\s]*$/,rvalidescape=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rvalidtokens=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rvalidbraces=/(?:^|:|,)(?:\s*\[)+/g,rwebkit=/(webkit)[ \/]([\w.]+)/,ropera=/(opera)(?:.*version)?[ \/]([\w.]+)/,rmsie=/(msie) ([\w.]+)/,rmozilla=/(mozilla)(?:.*? rv:([\w.]+))?/,userAgent=navigator.userAgent,browserMatch,readyBound=false,readyList,promiseMethods="then done fail isResolved isRejected promise".split(" "),DOMContentLoaded,toString=Object.prototype.toString,hasOwn=Object.prototype.hasOwnProperty,push=Array.prototype.push,slice=Array.prototype.slice,trim=String.prototype.trim,indexOf=Array.prototype.indexOf,class2type={};jQuery.fn=jQuery.prototype={constructor:jQuery,init:function(selector,context,rootjQuery){var match,elem,ret,doc;if(!selector){return this;}
if(selector.nodeType){this.context=this[0]=selector;this.length=1;return this;}
if(selector==="body"&&!context&&document.body){this.context=document;this[0]=document.body;this.selector="body";this.length=1;return this;}
if(typeof selector==="string"){match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;doc=(context?context.ownerDocument||context:document);ret=rsingleTag.exec(selector);if(ret){if(jQuery.isPlainObject(context)){selector=[document.createElement(ret[1])];jQuery.fn.attr.call(selector,context,true);}else{selector=[doc.createElement(ret[1])];}}else{ret=jQuery.buildFragment([match[1]],[doc]);selector=(ret.cacheable?jQuery.clone(ret.fragment):ret.fragment).childNodes;}
return jQuery.merge(this,selector);}else{elem=document.getElementById(match[2]);if(elem&&elem.parentNode){if(elem.id!==match[2]){return rootjQuery.find(selector);}
this.length=1;this[0]=elem;}
this.context=document;this.selector=selector;return this;}}else if(!context||context.jquery){return(context||rootjQuery).find(selector);}else{return this.constructor(context).find(selector);}}else if(jQuery.isFunction(selector)){return rootjQuery.ready(selector);}
if(selector.selector!==undefined){this.selector=selector.selector;this.context=selector.context;}
return jQuery.makeArray(selector,this);},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length;},toArray:function(){return slice.call(this,0);},get:function(num){return num==null?this.toArray():(num<0?this[this.length+num]:this[num]);},pushStack:function(elems,name,selector){var ret=this.constructor();if(jQuery.isArray(elems)){push.apply(ret,elems);}else{jQuery.merge(ret,elems);}
ret.prevObject=this;ret.context=this.context;if(name==="find"){ret.selector=this.selector+(this.selector?" ":"")+selector;}else if(name){ret.selector=this.selector+"."+name+"("+selector+")";}
return ret;},each:function(callback,args){return jQuery.each(this,callback,args);},ready:function(fn){jQuery.bindReady();readyList.done(fn);return this;},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1);},first:function(){return this.eq(0);},last:function(){return this.eq(-1);},slice:function(){return this.pushStack(slice.apply(this,arguments),"slice",slice.call(arguments).join(","));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},end:function(){return this.prevObject||this.constructor(null);},push:push,sort:[].sort,splice:[].splice};jQuery.fn.init.prototype=jQuery.fn;jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[1]||{};i=2;}
if(typeof target!=="object"&&!jQuery.isFunction(target)){target={};}
if(length===i){target=this;--i;}
for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(target===copy){continue;}
if(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=jQuery.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&jQuery.isArray(src)?src:[];}else{clone=src&&jQuery.isPlainObject(src)?src:{};}
target[name]=jQuery.extend(deep,clone,copy);}else if(copy!==undefined){target[name]=copy;}}}}
return target;};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep){window.jQuery=_jQuery;}
return jQuery;},isReady:false,readyWait:1,ready:function(wait){if(wait===true){jQuery.readyWait--;}
if(!jQuery.readyWait||(wait!==true&&!jQuery.isReady)){if(!document.body){return setTimeout(jQuery.ready,1);}
jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return;}
readyList.resolveWith(document,[jQuery]);if(jQuery.fn.trigger){jQuery(document).trigger("ready").unbind("ready");}}},bindReady:function(){if(readyBound){return;}
readyBound=true;if(document.readyState==="complete"){return setTimeout(jQuery.ready,1);}
if(document.addEventListener){document.addEventListener("DOMContentLoaded",DOMContentLoaded,false);window.addEventListener("load",jQuery.ready,false);}else if(document.attachEvent){document.attachEvent("onreadystatechange",DOMContentLoaded);window.attachEvent("onload",jQuery.ready);var toplevel=false;try{toplevel=window.frameElement==null;}catch(e){}
if(document.documentElement.doScroll&&toplevel){doScrollCheck();}}},isFunction:function(obj){return jQuery.type(obj)==="function";},isArray:Array.isArray||function(obj){return jQuery.type(obj)==="array";},isWindow:function(obj){return obj&&typeof obj==="object"&&"setInterval"in obj;},isNaN:function(obj){return obj==null||!rdigit.test(obj)||isNaN(obj);},type:function(obj){return obj==null?String(obj):class2type[toString.call(obj)]||"object";},isPlainObject:function(obj){if(!obj||jQuery.type(obj)!=="object"||obj.nodeType||jQuery.isWindow(obj)){return false;}
if(obj.constructor&&!hasOwn.call(obj,"constructor")&&!hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false;}
var key;for(key in obj){}
return key===undefined||hasOwn.call(obj,key);},isEmptyObject:function(obj){for(var name in obj){return false;}
return true;},error:function(msg){throw msg;},parseJSON:function(data){if(typeof data!=="string"||!data){return null;}
data=jQuery.trim(data);if(rvalidchars.test(data.replace(rvalidescape,"@").replace(rvalidtokens,"]").replace(rvalidbraces,""))){return window.JSON&&window.JSON.parse?window.JSON.parse(data):(new Function("return "+data))();}else{jQuery.error("Invalid JSON: "+data);}},parseXML:function(data,xml,tmp){if(window.DOMParser){tmp=new DOMParser();xml=tmp.parseFromString(data,"text/xml");}else{xml=new ActiveXObject("Microsoft.XMLDOM");xml.async="false";xml.loadXML(data);}
tmp=xml.documentElement;if(!tmp||!tmp.nodeName||tmp.nodeName==="parsererror"){jQuery.error("Invalid XML: "+data);}
return xml;},noop:function(){},globalEval:function(data){if(data&&rnotwhite.test(data)){var head=document.head||document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");if(jQuery.support.scriptEval()){script.appendChild(document.createTextNode(data));}else{script.text=data;}
head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()===name.toUpperCase();},each:function(object,callback,args){var name,i=0,length=object.length,isObj=length===undefined||jQuery.isFunction(object);if(args){if(isObj){for(name in object){if(callback.apply(object[name],args)===false){break;}}}else{for(;i<length;){if(callback.apply(object[i++],args)===false){break;}}}}else{if(isObj){for(name in object){if(callback.call(object[name],name,object[name])===false){break;}}}else{for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}}
return object;},trim:trim?function(text){return text==null?"":trim.call(text);}:function(text){return text==null?"":text.toString().replace(trimLeft,"").replace(trimRight,"");},makeArray:function(array,results){var ret=results||[];if(array!=null){var type=jQuery.type(array);if(array.length==null||type==="string"||type==="function"||type==="regexp"||jQuery.isWindow(array)){push.call(ret,array);}else{jQuery.merge(ret,array);}}
return ret;},inArray:function(elem,array){if(array.indexOf){return array.indexOf(elem);}
for(var i=0,length=array.length;i<length;i++){if(array[i]===elem){return i;}}
return-1;},merge:function(first,second){var i=first.length,j=0;if(typeof second.length==="number"){for(var l=second.length;j<l;j++){first[i++]=second[j];}}else{while(second[j]!==undefined){first[i++]=second[j++];}}
first.length=i;return first;},grep:function(elems,callback,inv){var ret=[],retVal;inv=!!inv;for(var i=0,length=elems.length;i<length;i++){retVal=!!callback(elems[i],i);if(inv!==retVal){ret.push(elems[i]);}}
return ret;},map:function(elems,callback,arg){var ret=[],value;for(var i=0,length=elems.length;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret[ret.length]=value;}}
return ret.concat.apply([],ret);},guid:1,proxy:function(fn,proxy,thisObject){if(arguments.length===2){if(typeof proxy==="string"){thisObject=fn;fn=thisObject[proxy];proxy=undefined;}else if(proxy&&!jQuery.isFunction(proxy)){thisObject=proxy;proxy=undefined;}}
if(!proxy&&fn){proxy=function(){return fn.apply(thisObject||this,arguments);};}
if(fn){proxy.guid=fn.guid=fn.guid||proxy.guid||jQuery.guid++;}
return proxy;},access:function(elems,key,value,exec,fn,pass){var length=elems.length;if(typeof key==="object"){for(var k in key){jQuery.access(elems,k,key[k],exec,fn,value);}
return elems;}
if(value!==undefined){exec=!pass&&exec&&jQuery.isFunction(value);for(var i=0;i<length;i++){fn(elems[i],key,exec?value.call(elems[i],i,fn(elems[i],key)):value,pass);}
return elems;}
return length?fn(elems[0],key):undefined;},now:function(){return(new Date()).getTime();},_Deferred:function(){var
callbacks=[],fired,firing,cancelled,deferred={done:function(){if(!cancelled){var args=arguments,i,length,elem,type,_fired;if(fired){_fired=fired;fired=0;}
for(i=0,length=args.length;i<length;i++){elem=args[i];type=jQuery.type(elem);if(type==="array"){deferred.done.apply(deferred,elem);}else if(type==="function"){callbacks.push(elem);}}
if(_fired){deferred.resolveWith(_fired[0],_fired[1]);}}
return this;},resolveWith:function(context,args){if(!cancelled&&!fired&&!firing){firing=1;try{while(callbacks[0]){callbacks.shift().apply(context,args);}}
catch(e){throw e;}
finally{fired=[context,args];firing=0;}}
return this;},resolve:function(){deferred.resolveWith(jQuery.isFunction(this.promise)?this.promise():this,arguments);return this;},isResolved:function(){return!!(firing||fired);},cancel:function(){cancelled=1;callbacks=[];return this;}};return deferred;},Deferred:function(func){var deferred=jQuery._Deferred(),failDeferred=jQuery._Deferred(),promise;jQuery.extend(deferred,{then:function(doneCallbacks,failCallbacks){deferred.done(doneCallbacks).fail(failCallbacks);return this;},fail:failDeferred.done,rejectWith:failDeferred.resolveWith,reject:failDeferred.resolve,isRejected:failDeferred.isResolved,promise:function(obj){if(obj==null){if(promise){return promise;}
promise=obj={};}
var i=promiseMethods.length;while(i--){obj[promiseMethods[i]]=deferred[promiseMethods[i]];}
return obj;}});deferred.done(failDeferred.cancel).fail(deferred.cancel);delete deferred.cancel;if(func){func.call(deferred,deferred);}
return deferred;},when:function(object){var lastIndex=arguments.length,deferred=lastIndex<=1&&object&&jQuery.isFunction(object.promise)?object:jQuery.Deferred(),promise=deferred.promise();if(lastIndex>1){var array=slice.call(arguments,0),count=lastIndex,iCallback=function(index){return function(value){array[index]=arguments.length>1?slice.call(arguments,0):value;if(!(--count)){deferred.resolveWith(promise,array);}};};while((lastIndex--)){object=array[lastIndex];if(object&&jQuery.isFunction(object.promise)){object.promise().then(iCallback(lastIndex),deferred.reject);}else{--count;}}
if(!count){deferred.resolveWith(promise,array);}}else if(deferred!==object){deferred.resolve(object);}
return promise;},uaMatch:function(ua){ua=ua.toLowerCase();var match=rwebkit.exec(ua)||ropera.exec(ua)||rmsie.exec(ua)||ua.indexOf("compatible")<0&&rmozilla.exec(ua)||[];return{browser:match[1]||"",version:match[2]||"0"};},sub:function(){function jQuerySubclass(selector,context){return new jQuerySubclass.fn.init(selector,context);}
jQuery.extend(true,jQuerySubclass,this);jQuerySubclass.superclass=this;jQuerySubclass.fn=jQuerySubclass.prototype=this();jQuerySubclass.fn.constructor=jQuerySubclass;jQuerySubclass.subclass=this.subclass;jQuerySubclass.fn.init=function init(selector,context){if(context&&context instanceof jQuery&&!(context instanceof jQuerySubclass)){context=jQuerySubclass(context);}
return jQuery.fn.init.call(this,selector,context,rootjQuerySubclass);};jQuerySubclass.fn.init.prototype=jQuerySubclass.fn;var rootjQuerySubclass=jQuerySubclass(document);return jQuerySubclass;},browser:{}});readyList=jQuery._Deferred();jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase();});browserMatch=jQuery.uaMatch(userAgent);if(browserMatch.browser){jQuery.browser[browserMatch.browser]=true;jQuery.browser.version=browserMatch.version;}
if(jQuery.browser.webkit){jQuery.browser.safari=true;}
if(indexOf){jQuery.inArray=function(elem,array){return indexOf.call(array,elem);};}
if(rnotwhite.test("\xA0")){trimLeft=/^[\s\xA0]+/;trimRight=/[\s\xA0]+$/;}
rootjQuery=jQuery(document);if(document.addEventListener){DOMContentLoaded=function(){document.removeEventListener("DOMContentLoaded",DOMContentLoaded,false);jQuery.ready();};}else if(document.attachEvent){DOMContentLoaded=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",DOMContentLoaded);jQuery.ready();}};}
function doScrollCheck(){if(jQuery.isReady){return;}
try{document.documentElement.doScroll("left");}catch(e){setTimeout(doScrollCheck,1);return;}
jQuery.ready();}
return jQuery;})();(function(){jQuery.support={};var div=document.createElement("div");div.style.display="none";div.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var all=div.getElementsByTagName("*"),a=div.getElementsByTagName("a")[0],select=document.createElement("select"),opt=select.appendChild(document.createElement("option")),input=div.getElementsByTagName("input")[0];if(!all||!all.length||!a){return;}
jQuery.support={leadingWhitespace:div.firstChild.nodeType===3,tbody:!div.getElementsByTagName("tbody").length,htmlSerialize:!!div.getElementsByTagName("link").length,style:/red/.test(a.getAttribute("style")),hrefNormalized:a.getAttribute("href")==="/a",opacity:/^0.55$/.test(a.style.opacity),cssFloat:!!a.style.cssFloat,checkOn:input.value==="on",optSelected:opt.selected,deleteExpando:true,optDisabled:false,checkClone:false,noCloneEvent:true,noCloneChecked:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};input.checked=true;jQuery.support.noCloneChecked=input.cloneNode(true).checked;select.disabled=true;jQuery.support.optDisabled=!opt.disabled;var _scriptEval=null;jQuery.support.scriptEval=function(){if(_scriptEval===null){var root=document.documentElement,script=document.createElement("script"),id="script"+jQuery.now();try{script.appendChild(document.createTextNode("window."+id+"=1;"));}catch(e){}
root.insertBefore(script,root.firstChild);if(window[id]){_scriptEval=true;delete window[id];}else{_scriptEval=false;}
root.removeChild(script);root=script=id=null;}
return _scriptEval;};try{delete div.test;}catch(e){jQuery.support.deleteExpando=false;}
if(!div.addEventListener&&div.attachEvent&&div.fireEvent){div.attachEvent("onclick",function click(){jQuery.support.noCloneEvent=false;div.detachEvent("onclick",click);});div.cloneNode(true).fireEvent("onclick");}
div=document.createElement("div");div.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var fragment=document.createDocumentFragment();fragment.appendChild(div.firstChild);jQuery.support.checkClone=fragment.cloneNode(true).cloneNode(true).lastChild.checked;jQuery(function(){var div=document.createElement("div"),body=document.getElementsByTagName("body")[0];if(!body){return;}
div.style.width=div.style.paddingLeft="1px";body.appendChild(div);jQuery.boxModel=jQuery.support.boxModel=div.offsetWidth===2;if("zoom"in div.style){div.style.display="inline";div.style.zoom=1;jQuery.support.inlineBlockNeedsLayout=div.offsetWidth===2;div.style.display="";div.innerHTML="<div style='width:4px;'></div>";jQuery.support.shrinkWrapBlocks=div.offsetWidth!==2;}
div.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";var tds=div.getElementsByTagName("td");jQuery.support.reliableHiddenOffsets=tds[0].offsetHeight===0;tds[0].style.display="";tds[1].style.display="none";jQuery.support.reliableHiddenOffsets=jQuery.support.reliableHiddenOffsets&&tds[0].offsetHeight===0;div.innerHTML="";body.removeChild(div).style.display="none";div=tds=null;});var eventSupported=function(eventName){var el=document.createElement("div");eventName="on"+eventName;if(!el.attachEvent){return true;}
var isSupported=(eventName in el);if(!isSupported){el.setAttribute(eventName,"return;");isSupported=typeof el[eventName]==="function";}
el=null;return isSupported;};jQuery.support.submitBubbles=eventSupported("submit");jQuery.support.changeBubbles=eventSupported("change");div=all=a=null;})();var rbrace=/^(?:\{.*\}|\[.*\])$/;jQuery.extend({cache:{},uuid:0,expando:"jQuery"+(jQuery.fn.jquery+Math.random()).replace(/\D/g,""),noData:{"embed":true,"object":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000","applet":true},hasData:function(elem){elem=elem.nodeType?jQuery.cache[elem[jQuery.expando]]:elem[jQuery.expando];return!!elem&&!isEmptyDataObject(elem);},data:function(elem,name,data,pvt){if(!jQuery.acceptData(elem)){return;}
var internalKey=jQuery.expando,getByName=typeof name==="string",thisCache,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:elem[jQuery.expando]&&jQuery.expando;if((!id||(pvt&&id&&!cache[id][internalKey]))&&getByName&&data===undefined){return;}
if(!id){if(isNode){elem[jQuery.expando]=id=++jQuery.uuid;}else{id=jQuery.expando;}}
if(!cache[id]){cache[id]={};if(!isNode){cache[id].toJSON=jQuery.noop;}}
if(typeof name==="object"||typeof name==="function"){if(pvt){cache[id][internalKey]=jQuery.extend(cache[id][internalKey],name);}else{cache[id]=jQuery.extend(cache[id],name);}}
thisCache=cache[id];if(pvt){if(!thisCache[internalKey]){thisCache[internalKey]={};}
thisCache=thisCache[internalKey];}
if(data!==undefined){thisCache[name]=data;}
if(name==="events"&&!thisCache[name]){return thisCache[internalKey]&&thisCache[internalKey].events;}
return getByName?thisCache[name]:thisCache;},removeData:function(elem,name,pvt){if(!jQuery.acceptData(elem)){return;}
var internalKey=jQuery.expando,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:jQuery.expando;if(!cache[id]){return;}
if(name){var thisCache=pvt?cache[id][internalKey]:cache[id];if(thisCache){delete thisCache[name];if(!isEmptyDataObject(thisCache)){return;}}}
if(pvt){delete cache[id][internalKey];if(!isEmptyDataObject(cache[id])){return;}}
var internalCache=cache[id][internalKey];if(jQuery.support.deleteExpando||cache!=window){delete cache[id];}else{cache[id]=null;}
if(internalCache){cache[id]={};if(!isNode){cache[id].toJSON=jQuery.noop;}
cache[id][internalKey]=internalCache;}else if(isNode){if(jQuery.support.deleteExpando){delete elem[jQuery.expando];}else if(elem.removeAttribute){elem.removeAttribute(jQuery.expando);}else{elem[jQuery.expando]=null;}}},_data:function(elem,name,data){return jQuery.data(elem,name,data,true);},acceptData:function(elem){if(elem.nodeName){var match=jQuery.noData[elem.nodeName.toLowerCase()];if(match){return!(match===true||elem.getAttribute("classid")!==match);}}
return true;}});jQuery.fn.extend({data:function(key,value){var data=null;if(typeof key==="undefined"){if(this.length){data=jQuery.data(this[0]);if(this[0].nodeType===1){var attr=this[0].attributes,name;for(var i=0,l=attr.length;i<l;i++){name=attr[i].name;if(name.indexOf("data-")===0){name=name.substr(5);dataAttr(this[0],name,data[name]);}}}}
return data;}else if(typeof key==="object"){return this.each(function(){jQuery.data(this,key);});}
var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length){data=jQuery.data(this[0],key);data=dataAttr(this[0],key,data);}
return data===undefined&&parts[1]?this.data(parts[0]):data;}else{return this.each(function(){var $this=jQuery(this),args=[parts[0],value];$this.triggerHandler("setData"+parts[1]+"!",args);jQuery.data(this,key,value);$this.triggerHandler("changeData"+parts[1]+"!",args);});}},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});}});function dataAttr(elem,key,data){if(data===undefined&&elem.nodeType===1){data=elem.getAttribute("data-"+key);if(typeof data==="string"){try{data=data==="true"?true:data==="false"?false:data==="null"?null:!jQuery.isNaN(data)?parseFloat(data):rbrace.test(data)?jQuery.parseJSON(data):data;}catch(e){}
jQuery.data(elem,key,data);}else{data=undefined;}}
return data;}
function isEmptyDataObject(obj){for(var name in obj){if(name!=="toJSON"){return false;}}
return true;}
jQuery.extend({queue:function(elem,type,data){if(!elem){return;}
type=(type||"fx")+"queue";var q=jQuery._data(elem,type);if(!data){return q||[];}
if(!q||jQuery.isArray(data)){q=jQuery._data(elem,type,jQuery.makeArray(data));}else{q.push(data);}
return q;},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),fn=queue.shift();if(fn==="inprogress"){fn=queue.shift();}
if(fn){if(type==="fx"){queue.unshift("inprogress");}
fn.call(elem,function(){jQuery.dequeue(elem,type);});}
if(!queue.length){jQuery.removeData(elem,type+"queue",true);}}});jQuery.fn.extend({queue:function(type,data){if(typeof type!=="string"){data=type;type="fx";}
if(data===undefined){return jQuery.queue(this[0],type);}
return this.each(function(i){var queue=jQuery.queue(this,type,data);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type);}});},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type);});},delay:function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(){var elem=this;setTimeout(function(){jQuery.dequeue(elem,type);},time);});},clearQueue:function(type){return this.queue(type||"fx",[]);}});var rclass=/[\n\t\r]/g,rspaces=/\s+/,rreturn=/\r/g,rspecialurl=/^(?:href|src|style)$/,rtype=/^(?:button|input)$/i,rfocusable=/^(?:button|input|object|select|textarea)$/i,rclickable=/^a(?:rea)?$/i,rradiocheck=/^(?:radio|checkbox)$/i;jQuery.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};jQuery.fn.extend({attr:function(name,value){return jQuery.access(this,name,value,true,jQuery.attr);},removeAttr:function(name,fn){return this.each(function(){jQuery.attr(this,name,"");if(this.nodeType===1){this.removeAttribute(name);}});},addClass:function(value){if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);self.addClass(value.call(this,i,self.attr("class")));});}
if(value&&typeof value==="string"){var classNames=(value||"").split(rspaces);for(var i=0,l=this.length;i<l;i++){var elem=this[i];if(elem.nodeType===1){if(!elem.className){elem.className=value;}else{var className=" "+elem.className+" ",setClass=elem.className;for(var c=0,cl=classNames.length;c<cl;c++){if(className.indexOf(" "+classNames[c]+" ")<0){setClass+=" "+classNames[c];}}
elem.className=jQuery.trim(setClass);}}}}
return this;},removeClass:function(value){if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);self.removeClass(value.call(this,i,self.attr("class")));});}
if((value&&typeof value==="string")||value===undefined){var classNames=(value||"").split(rspaces);for(var i=0,l=this.length;i<l;i++){var elem=this[i];if(elem.nodeType===1&&elem.className){if(value){var className=(" "+elem.className+" ").replace(rclass," ");for(var c=0,cl=classNames.length;c<cl;c++){className=className.replace(" "+classNames[c]+" "," ");}
elem.className=jQuery.trim(className);}else{elem.className="";}}}}
return this;},toggleClass:function(value,stateVal){var type=typeof value,isBool=typeof stateVal==="boolean";if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);self.toggleClass(value.call(this,i,self.attr("class"),stateVal),stateVal);});}
return this.each(function(){if(type==="string"){var className,i=0,self=jQuery(this),state=stateVal,classNames=value.split(rspaces);while((className=classNames[i++])){state=isBool?state:!self.hasClass(className);self[state?"addClass":"removeClass"](className);}}else if(type==="undefined"||type==="boolean"){if(this.className){jQuery._data(this,"__className__",this.className);}
this.className=this.className||value===false?"":jQuery._data(this,"__className__")||"";}});},hasClass:function(selector){var className=" "+selector+" ";for(var i=0,l=this.length;i<l;i++){if((" "+this[i].className+" ").replace(rclass," ").indexOf(className)>-1){return true;}}
return false;},val:function(value){if(!arguments.length){var elem=this[0];if(elem){if(jQuery.nodeName(elem,"option")){var val=elem.attributes.value;return!val||val.specified?elem.value:elem.text;}
if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type==="select-one";if(index<0){return null;}
for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected&&(jQuery.support.optDisabled?!option.disabled:option.getAttribute("disabled")===null)&&(!option.parentNode.disabled||!jQuery.nodeName(option.parentNode,"optgroup"))){value=jQuery(option).val();if(one){return value;}
values.push(value);}}
if(one&&!values.length&&options.length){return jQuery(options[index]).val();}
return values;}
if(rradiocheck.test(elem.type)&&!jQuery.support.checkOn){return elem.getAttribute("value")===null?"on":elem.value;}
return(elem.value||"").replace(rreturn,"");}
return undefined;}
var isFunction=jQuery.isFunction(value);return this.each(function(i){var self=jQuery(this),val=value;if(this.nodeType!==1){return;}
if(isFunction){val=value.call(this,i,self.val());}
if(val==null){val="";}else if(typeof val==="number"){val+="";}else if(jQuery.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+"";});}
if(jQuery.isArray(val)&&rradiocheck.test(this.type)){this.checked=jQuery.inArray(self.val(),val)>=0;}else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(val);jQuery("option",this).each(function(){this.selected=jQuery.inArray(jQuery(this).val(),values)>=0;});if(!values.length){this.selectedIndex=-1;}}else{this.value=val;}});}});jQuery.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(elem,name,value,pass){if(!elem||elem.nodeType===3||elem.nodeType===8||elem.nodeType===2){return undefined;}
if(pass&&name in jQuery.attrFn){return jQuery(elem)[name](value);}
var notxml=elem.nodeType!==1||!jQuery.isXMLDoc(elem),set=value!==undefined;name=notxml&&jQuery.props[name]||name;if(elem.nodeType===1){var special=rspecialurl.test(name);if(name==="selected"&&!jQuery.support.optSelected){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}}
if((name in elem||elem[name]!==undefined)&&notxml&&!special){if(set){if(name==="type"&&rtype.test(elem.nodeName)&&elem.parentNode){jQuery.error("type property can't be changed");}
if(value===null){if(elem.nodeType===1){elem.removeAttribute(name);}}else{elem[name]=value;}}
if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name)){return elem.getAttributeNode(name).nodeValue;}
if(name==="tabIndex"){var attributeNode=elem.getAttributeNode("tabIndex");return attributeNode&&attributeNode.specified?attributeNode.value:rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:undefined;}
return elem[name];}
if(!jQuery.support.style&&notxml&&name==="style"){if(set){elem.style.cssText=""+value;}
return elem.style.cssText;}
if(set){elem.setAttribute(name,""+value);}
if(!elem.attributes[name]&&(elem.hasAttribute&&!elem.hasAttribute(name))){return undefined;}
var attr=!jQuery.support.hrefNormalized&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}
if(set){elem[name]=value;}
return elem[name];}});var rnamespaces=/\.(.*)$/,rformElems=/^(?:textarea|input|select)$/i,rperiod=/\./g,rspace=/ /g,rescape=/[^\w\s.|`]/g,fcleanup=function(nm){return nm.replace(rescape,"\\$&");};jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType===3||elem.nodeType===8){return;}
try{if(jQuery.isWindow(elem)&&(elem!==window&&!elem.frameElement)){elem=window;}}
catch(e){}
if(handler===false){handler=returnFalse;}else if(!handler){return;}
var handleObjIn,handleObj;if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;}
if(!handler.guid){handler.guid=jQuery.guid++;}
var elemData=jQuery._data(elem);if(!elemData){return;}
var events=elemData.events,eventHandle=elemData.handle;if(!events){elemData.events=events={};}
if(!eventHandle){elemData.handle=eventHandle=function(){return typeof jQuery!=="undefined"&&!jQuery.event.triggered?jQuery.event.handle.apply(eventHandle.elem,arguments):undefined;};}
eventHandle.elem=elem;types=types.split(" ");var type,i=0,namespaces;while((type=types[i++])){handleObj=handleObjIn?jQuery.extend({},handleObjIn):{handler:handler,data:data};if(type.indexOf(".")>-1){namespaces=type.split(".");type=namespaces.shift();handleObj.namespace=namespaces.slice(0).sort().join(".");}else{namespaces=[];handleObj.namespace="";}
handleObj.type=type;if(!handleObj.guid){handleObj.guid=handler.guid;}
var handlers=events[type],special=jQuery.event.special[type]||{};if(!handlers){handlers=events[type]=[];if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle,false);}else if(elem.attachEvent){elem.attachEvent("on"+type,eventHandle);}}}
if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid;}}
handlers.push(handleObj);jQuery.event.global[type]=true;}
elem=null;},global:{},remove:function(elem,types,handler,pos){if(elem.nodeType===3||elem.nodeType===8){return;}
if(handler===false){handler=returnFalse;}
var ret,type,fn,j,i=0,all,namespaces,namespace,special,eventType,handleObj,origType,elemData=jQuery.hasData(elem)&&jQuery._data(elem),events=elemData&&elemData.events;if(!elemData||!events){return;}
if(types&&types.type){handler=types.handler;types=types.type;}
if(!types||typeof types==="string"&&types.charAt(0)==="."){types=types||"";for(type in events){jQuery.event.remove(elem,type+types);}
return;}
types=types.split(" ");while((type=types[i++])){origType=type;handleObj=null;all=type.indexOf(".")<0;namespaces=[];if(!all){namespaces=type.split(".");type=namespaces.shift();namespace=new RegExp("(^|\\.)"+
jQuery.map(namespaces.slice(0).sort(),fcleanup).join("\\.(?:.*\\.)?")+"(\\.|$)");}
eventType=events[type];if(!eventType){continue;}
if(!handler){for(j=0;j<eventType.length;j++){handleObj=eventType[j];if(all||namespace.test(handleObj.namespace)){jQuery.event.remove(elem,origType,handleObj.handler,j);eventType.splice(j--,1);}}
continue;}
special=jQuery.event.special[type]||{};for(j=pos||0;j<eventType.length;j++){handleObj=eventType[j];if(handler.guid===handleObj.guid){if(all||namespace.test(handleObj.namespace)){if(pos==null){eventType.splice(j--,1);}
if(special.remove){special.remove.call(elem,handleObj);}}
if(pos!=null){break;}}}
if(eventType.length===0||pos!=null&&eventType.length===1){if(!special.teardown||special.teardown.call(elem,namespaces)===false){jQuery.removeEvent(elem,type,elemData.handle);}
ret=null;delete events[type];}}
if(jQuery.isEmptyObject(events)){var handle=elemData.handle;if(handle){handle.elem=null;}
delete elemData.events;delete elemData.handle;if(jQuery.isEmptyObject(elemData)){jQuery.removeData(elem,undefined,true);}}},trigger:function(event,data,elem){var type=event.type||event,bubbling=arguments[3];if(!bubbling){event=typeof event==="object"?event[jQuery.expando]?event:jQuery.extend(jQuery.Event(type),event):jQuery.Event(type);if(type.indexOf("!")>=0){event.type=type=type.slice(0,-1);event.exclusive=true;}
if(!elem){event.stopPropagation();if(jQuery.event.global[type]){jQuery.each(jQuery.cache,function(){var internalKey=jQuery.expando,internalCache=this[internalKey];if(internalCache&&internalCache.events&&internalCache.events[type]){jQuery.event.trigger(event,data,internalCache.handle.elem);}});}}
if(!elem||elem.nodeType===3||elem.nodeType===8){return undefined;}
event.result=undefined;event.target=elem;data=jQuery.makeArray(data);data.unshift(event);}
event.currentTarget=elem;var handle=jQuery._data(elem,"handle");if(handle){handle.apply(elem,data);}
var parent=elem.parentNode||elem.ownerDocument;try{if(!(elem&&elem.nodeName&&jQuery.noData[elem.nodeName.toLowerCase()])){if(elem["on"+type]&&elem["on"+type].apply(elem,data)===false){event.result=false;event.preventDefault();}}}catch(inlineError){}
if(!event.isPropagationStopped()&&parent){jQuery.event.trigger(event,data,parent,true);}else if(!event.isDefaultPrevented()){var old,target=event.target,targetType=type.replace(rnamespaces,""),isClick=jQuery.nodeName(target,"a")&&targetType==="click",special=jQuery.event.special[targetType]||{};if((!special._default||special._default.call(elem,event)===false)&&!isClick&&!(target&&target.nodeName&&jQuery.noData[target.nodeName.toLowerCase()])){try{if(target[targetType]){old=target["on"+targetType];if(old){target["on"+targetType]=null;}
jQuery.event.triggered=true;target[targetType]();}}catch(triggerError){}
if(old){target["on"+targetType]=old;}
jQuery.event.triggered=false;}}},handle:function(event){var all,handlers,namespaces,namespace_re,events,namespace_sort=[],args=jQuery.makeArray(arguments);event=args[0]=jQuery.event.fix(event||window.event);event.currentTarget=this;all=event.type.indexOf(".")<0&&!event.exclusive;if(!all){namespaces=event.type.split(".");event.type=namespaces.shift();namespace_sort=namespaces.slice(0).sort();namespace_re=new RegExp("(^|\\.)"+namespace_sort.join("\\.(?:.*\\.)?")+"(\\.|$)");}
event.namespace=event.namespace||namespace_sort.join(".");events=jQuery._data(this,"events");handlers=(events||{})[event.type];if(events&&handlers){handlers=handlers.slice(0);for(var j=0,l=handlers.length;j<l;j++){var handleObj=handlers[j];if(all||namespace_re.test(handleObj.namespace)){event.handler=handleObj.handler;event.data=handleObj.data;event.handleObj=handleObj;var ret=handleObj.handler.apply(this,args);if(ret!==undefined){event.result=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}
if(event.isImmediatePropagationStopped()){break;}}}}
return event.result;},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(event){if(event[jQuery.expando]){return event;}
var originalEvent=event;event=jQuery.Event(originalEvent);for(var i=this.props.length,prop;i;){prop=this.props[--i];event[prop]=originalEvent[prop];}
if(!event.target){event.target=event.srcElement||document;}
if(event.target.nodeType===3){event.target=event.target.parentNode;}
if(!event.relatedTarget&&event.fromElement){event.relatedTarget=event.fromElement===event.target?event.toElement:event.fromElement;}
if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0);}
if(event.which==null&&(event.charCode!=null||event.keyCode!=null)){event.which=event.charCode!=null?event.charCode:event.keyCode;}
if(!event.metaKey&&event.ctrlKey){event.metaKey=event.ctrlKey;}
if(!event.which&&event.button!==undefined){event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));}
return event;},guid:1E8,proxy:jQuery.proxy,special:{ready:{setup:jQuery.bindReady,teardown:jQuery.noop},live:{add:function(handleObj){jQuery.event.add(this,liveConvert(handleObj.origType,handleObj.selector),jQuery.extend({},handleObj,{handler:liveHandler,guid:handleObj.handler.guid}));},remove:function(handleObj){jQuery.event.remove(this,liveConvert(handleObj.origType,handleObj.selector),handleObj);}},beforeunload:{setup:function(data,namespaces,eventHandle){if(jQuery.isWindow(this)){this.onbeforeunload=eventHandle;}},teardown:function(namespaces,eventHandle){if(this.onbeforeunload===eventHandle){this.onbeforeunload=null;}}}}};jQuery.removeEvent=document.removeEventListener?function(elem,type,handle){if(elem.removeEventListener){elem.removeEventListener(type,handle,false);}}:function(elem,type,handle){if(elem.detachEvent){elem.detachEvent("on"+type,handle);}};jQuery.Event=function(src){if(!this.preventDefault){return new jQuery.Event(src);}
if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=(src.defaultPrevented||src.returnValue===false||src.getPreventDefault&&src.getPreventDefault())?returnTrue:returnFalse;}else{this.type=src;}
this.timeStamp=jQuery.now();this[jQuery.expando]=true;};function returnFalse(){return false;}
function returnTrue(){return true;}
jQuery.Event.prototype={preventDefault:function(){this.isDefaultPrevented=returnTrue;var e=this.originalEvent;if(!e){return;}
if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}},stopPropagation:function(){this.isPropagationStopped=returnTrue;var e=this.originalEvent;if(!e){return;}
if(e.stopPropagation){e.stopPropagation();}
e.cancelBubble=true;},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=returnTrue;this.stopPropagation();},isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse};var withinElement=function(event){var parent=event.relatedTarget;try{if(parent!==document&&!parent.parentNode){return;}
while(parent&&parent!==this){parent=parent.parentNode;}
if(parent!==this){event.type=event.data;jQuery.event.handle.apply(this,arguments);}}catch(e){}},delegate=function(event){event.type=event.data;jQuery.event.handle.apply(this,arguments);};jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(orig,fix){jQuery.event.special[orig]={setup:function(data){jQuery.event.add(this,fix,data&&data.selector?delegate:withinElement,orig);},teardown:function(data){jQuery.event.remove(this,fix,data&&data.selector?delegate:withinElement);}};});if(!jQuery.support.submitBubbles){jQuery.event.special.submit={setup:function(data,namespaces){if(this.nodeName&&this.nodeName.toLowerCase()!=="form"){jQuery.event.add(this,"click.specialSubmit",function(e){var elem=e.target,type=elem.type;if((type==="submit"||type==="image")&&jQuery(elem).closest("form").length){trigger("submit",this,arguments);}});jQuery.event.add(this,"keypress.specialSubmit",function(e){var elem=e.target,type=elem.type;if((type==="text"||type==="password")&&jQuery(elem).closest("form").length&&e.keyCode===13){trigger("submit",this,arguments);}});}else{return false;}},teardown:function(namespaces){jQuery.event.remove(this,".specialSubmit");}};}
if(!jQuery.support.changeBubbles){var changeFilters,getVal=function(elem){var type=elem.type,val=elem.value;if(type==="radio"||type==="checkbox"){val=elem.checked;}else if(type==="select-multiple"){val=elem.selectedIndex>-1?jQuery.map(elem.options,function(elem){return elem.selected;}).join("-"):"";}else if(elem.nodeName.toLowerCase()==="select"){val=elem.selectedIndex;}
return val;},testChange=function testChange(e){var elem=e.target,data,val;if(!rformElems.test(elem.nodeName)||elem.readOnly){return;}
data=jQuery._data(elem,"_change_data");val=getVal(elem);if(e.type!=="focusout"||elem.type!=="radio"){jQuery._data(elem,"_change_data",val);}
if(data===undefined||val===data){return;}
if(data!=null||val){e.type="change";e.liveFired=undefined;jQuery.event.trigger(e,arguments[1],elem);}};jQuery.event.special.change={filters:{focusout:testChange,beforedeactivate:testChange,click:function(e){var elem=e.target,type=elem.type;if(type==="radio"||type==="checkbox"||elem.nodeName.toLowerCase()==="select"){testChange.call(this,e);}},keydown:function(e){var elem=e.target,type=elem.type;if((e.keyCode===13&&elem.nodeName.toLowerCase()!=="textarea")||(e.keyCode===32&&(type==="checkbox"||type==="radio"))||type==="select-multiple"){testChange.call(this,e);}},beforeactivate:function(e){var elem=e.target;jQuery._data(elem,"_change_data",getVal(elem));}},setup:function(data,namespaces){if(this.type==="file"){return false;}
for(var type in changeFilters){jQuery.event.add(this,type+".specialChange",changeFilters[type]);}
return rformElems.test(this.nodeName);},teardown:function(namespaces){jQuery.event.remove(this,".specialChange");return rformElems.test(this.nodeName);}};changeFilters=jQuery.event.special.change.filters;changeFilters.focus=changeFilters.beforeactivate;}
function trigger(type,elem,args){var event=jQuery.extend({},args[0]);event.type=type;event.originalEvent={};event.liveFired=undefined;jQuery.event.handle.call(elem,event);if(event.isDefaultPrevented()){args[0].preventDefault();}}
if(document.addEventListener){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){jQuery.event.special[fix]={setup:function(){this.addEventListener(orig,handler,true);},teardown:function(){this.removeEventListener(orig,handler,true);}};function handler(e){e=jQuery.event.fix(e);e.type=fix;return jQuery.event.handle.call(this,e);}});}
jQuery.each(["bind","one"],function(i,name){jQuery.fn[name]=function(type,data,fn){if(typeof type==="object"){for(var key in type){this[name](key,data,type[key],fn);}
return this;}
if(jQuery.isFunction(data)||data===false){fn=data;data=undefined;}
var handler=name==="one"?jQuery.proxy(fn,function(event){jQuery(this).unbind(event,handler);return fn.apply(this,arguments);}):fn;if(type==="unload"&&name!=="one"){this.one(type,data,fn);}else{for(var i=0,l=this.length;i<l;i++){jQuery.event.add(this[i],type,handler,data);}}
return this;};});jQuery.fn.extend({unbind:function(type,fn){if(typeof type==="object"&&!type.preventDefault){for(var key in type){this.unbind(key,type[key]);}}else{for(var i=0,l=this.length;i<l;i++){jQuery.event.remove(this[i],type,fn);}}
return this;},delegate:function(selector,types,data,fn){return this.live(types,data,fn,selector);},undelegate:function(selector,types,fn){if(arguments.length===0){return this.unbind("live");}else{return this.die(types,null,fn,selector);}},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function(type,data){if(this[0]){var event=jQuery.Event(type);event.preventDefault();event.stopPropagation();jQuery.event.trigger(event,data,this[0]);return event.result;}},toggle:function(fn){var args=arguments,i=1;while(i<args.length){jQuery.proxy(fn,args[i++]);}
return this.click(jQuery.proxy(fn,function(event){var lastToggle=(jQuery._data(this,"lastToggle"+fn.guid)||0)%i;jQuery._data(this,"lastToggle"+fn.guid,lastToggle+1);event.preventDefault();return args[lastToggle].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver);}});var liveMap={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};jQuery.each(["live","die"],function(i,name){jQuery.fn[name]=function(types,data,fn,origSelector){var type,i=0,match,namespaces,preType,selector=origSelector||this.selector,context=origSelector?this:jQuery(this.context);if(typeof types==="object"&&!types.preventDefault){for(var key in types){context[name](key,data,types[key],selector);}
return this;}
if(jQuery.isFunction(data)){fn=data;data=undefined;}
types=(types||"").split(" ");while((type=types[i++])!=null){match=rnamespaces.exec(type);namespaces="";if(match){namespaces=match[0];type=type.replace(rnamespaces,"");}
if(type==="hover"){types.push("mouseenter"+namespaces,"mouseleave"+namespaces);continue;}
preType=type;if(type==="focus"||type==="blur"){types.push(liveMap[type]+namespaces);type=type+namespaces;}else{type=(liveMap[type]||type)+namespaces;}
if(name==="live"){for(var j=0,l=context.length;j<l;j++){jQuery.event.add(context[j],"live."+liveConvert(type,selector),{data:data,selector:selector,handler:fn,origType:type,origHandler:fn,preType:preType});}}else{context.unbind("live."+liveConvert(type,selector),fn);}}
return this;};});function liveHandler(event){var stop,maxLevel,related,match,handleObj,elem,j,i,l,data,close,namespace,ret,elems=[],selectors=[],events=jQuery._data(this,"events");if(event.liveFired===this||!events||!events.live||event.target.disabled||event.button&&event.type==="click"){return;}
if(event.namespace){namespace=new RegExp("(^|\\.)"+event.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");}
event.liveFired=this;var live=events.live.slice(0);for(j=0;j<live.length;j++){handleObj=live[j];if(handleObj.origType.replace(rnamespaces,"")===event.type){selectors.push(handleObj.selector);}else{live.splice(j--,1);}}
match=jQuery(event.target).closest(selectors,event.currentTarget);for(i=0,l=match.length;i<l;i++){close=match[i];for(j=0;j<live.length;j++){handleObj=live[j];if(close.selector===handleObj.selector&&(!namespace||namespace.test(handleObj.namespace))&&!close.elem.disabled){elem=close.elem;related=null;if(handleObj.preType==="mouseenter"||handleObj.preType==="mouseleave"){event.type=handleObj.preType;related=jQuery(event.relatedTarget).closest(handleObj.selector)[0];}
if(!related||related!==elem){elems.push({elem:elem,handleObj:handleObj,level:close.level});}}}}
for(i=0,l=elems.length;i<l;i++){match=elems[i];if(maxLevel&&match.level>maxLevel){break;}
event.currentTarget=match.elem;event.data=match.handleObj.data;event.handleObj=match.handleObj;ret=match.handleObj.origHandler.apply(match.elem,arguments);if(ret===false||event.isPropagationStopped()){maxLevel=match.level;if(ret===false){stop=false;}
if(event.isImmediatePropagationStopped()){break;}}}
return stop;}
function liveConvert(type,selector){return(type&&type!=="*"?type+".":"")+selector.replace(rperiod,"`").replace(rspace,"&");}
jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup error").split(" "),function(i,name){jQuery.fn[name]=function(data,fn){if(fn==null){fn=data;data=null;}
return arguments.length>0?this.bind(name,data,fn):this.trigger(name);};if(jQuery.attrFn){jQuery.attrFn[name]=true;}});(function(){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true,rBackslash=/\\/g,rNonWord=/\W/;[0,0].sort(function(){baseHasDuplicate=false;return 0;});var Sizzle=function(selector,context,results,seed){results=results||[];context=context||document;var origContext=context;if(context.nodeType!==1&&context.nodeType!==9){return[];}
if(!selector||typeof selector!=="string"){return results;}
var m,set,checkSet,extra,ret,cur,pop,i,prune=true,contextXML=Sizzle.isXML(context),parts=[],soFar=selector;do{chunker.exec("");m=chunker.exec(soFar);if(m){soFar=m[3];parts.push(m[1]);if(m[2]){extra=m[3];break;}}}while(m);if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context);}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);while(parts.length){selector=parts.shift();if(Expr.relative[selector]){selector+=parts.shift();}
set=posProcess(selector,set);}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){ret=Sizzle.find(parts.shift(),context,contextXML);context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0];}
if(context){ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;if(parts.length>0){checkSet=makeArray(set);}else{prune=false;}
while(parts.length){cur=parts.pop();pop=cur;if(!Expr.relative[cur]){cur="";}else{pop=parts.pop();}
if(pop==null){pop=context;}
Expr.relative[cur](checkSet,pop,contextXML);}}else{checkSet=parts=[];}}
if(!checkSet){checkSet=set;}
if(!checkSet){Sizzle.error(cur||selector);}
if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet);}else if(context&&context.nodeType===1){for(i=0;checkSet[i]!=null;i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&Sizzle.contains(context,checkSet[i]))){results.push(set[i]);}}}else{for(i=0;checkSet[i]!=null;i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]);}}}}else{makeArray(checkSet,results);}
if(extra){Sizzle(extra,origContext,results,seed);Sizzle.uniqueSort(results);}
return results;};Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;results.sort(sortOrder);if(hasDuplicate){for(var i=1;i<results.length;i++){if(results[i]===results[i-1]){results.splice(i--,1);}}}}
return results;};Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set);};Sizzle.matchesSelector=function(node,expr){return Sizzle(expr,null,null,[node]).length>0;};Sizzle.find=function(expr,context,isXML){var set;if(!expr){return[];}
for(var i=0,l=Expr.order.length;i<l;i++){var match,type=Expr.order[i];if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];match.splice(1,1);if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(rBackslash,"");set=Expr.find[type](match,context,isXML);if(set!=null){expr=expr.replace(Expr.match[type],"");break;}}}}
if(!set){set=typeof context.getElementsByTagName!=="undefined"?context.getElementsByTagName("*"):[];}
return{set:set,expr:expr};};Sizzle.filter=function(expr,set,inplace,not){var match,anyFound,old=expr,result=[],curLoop=set,isXMLFilter=set&&set[0]&&Sizzle.isXML(set[0]);while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.leftMatch[type].exec(expr))!=null&&match[2]){var found,item,filter=Expr.filter[type],left=match[1];anyFound=false;match.splice(1,1);if(left.substr(left.length-1)==="\\"){continue;}
if(curLoop===result){result=[];}
if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);if(!match){anyFound=found=true;}else if(match===true){continue;}}
if(match){for(var i=0;(item=curLoop[i])!=null;i++){if(item){found=filter(item,match,i,curLoop);var pass=not^!!found;if(inplace&&found!=null){if(pass){anyFound=true;}else{curLoop[i]=false;}}else if(pass){result.push(item);anyFound=true;}}}}
if(found!==undefined){if(!inplace){curLoop=result;}
expr=expr.replace(Expr.match[type],"");if(!anyFound){return[];}
break;}}}
if(expr===old){if(anyFound==null){Sizzle.error(expr);}else{break;}}
old=expr;}
return curLoop;};Sizzle.error=function(msg){throw"Syntax error, unrecognized expression: "+msg;};var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href");},type:function(elem){return elem.getAttribute("type");}},relative:{"+":function(checkSet,part){var isPartStr=typeof part==="string",isTag=isPartStr&&!rNonWord.test(part),isPartStrNotTag=isPartStr&&!isTag;if(isTag){part=part.toLowerCase();}
for(var i=0,l=checkSet.length,elem;i<l;i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}
checkSet[i]=isPartStrNotTag||elem&&elem.nodeName.toLowerCase()===part?elem||false:elem===part;}}
if(isPartStrNotTag){Sizzle.filter(part,checkSet,true);}},">":function(checkSet,part){var elem,isPartStr=typeof part==="string",i=0,l=checkSet.length;if(isPartStr&&!rNonWord.test(part)){part=part.toLowerCase();for(;i<l;i++){elem=checkSet[i];if(elem){var parent=elem.parentNode;checkSet[i]=parent.nodeName.toLowerCase()===part?parent:false;}}}else{for(;i<l;i++){elem=checkSet[i];if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part;}}
if(isPartStr){Sizzle.filter(part,checkSet,true);}}},"":function(checkSet,part,isXML){var nodeCheck,doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!rNonWord.test(part)){part=part.toLowerCase();nodeCheck=part;checkFn=dirNodeCheck;}
checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML);},"~":function(checkSet,part,isXML){var nodeCheck,doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!rNonWord.test(part)){part=part.toLowerCase();nodeCheck=part;checkFn=dirNodeCheck;}
checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML);}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m&&m.parentNode?[m]:[];}},NAME:function(match,context){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);for(var i=0,l=results.length;i<l;i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i]);}}
return ret.length===0?null:ret;}},TAG:function(match,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(match[1]);}}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(rBackslash,"")+" ";if(isXML){return match;}
for(var i=0,elem;(elem=curLoop[i])!=null;i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").replace(/[\t\n\r]/g," ").indexOf(match)>=0)){if(!inplace){result.push(elem);}}else if(inplace){curLoop[i]=false;}}}
return false;},ID:function(match){return match[1].replace(rBackslash,"");},TAG:function(match,curLoop){return match[1].replace(rBackslash,"").toLowerCase();},CHILD:function(match){if(match[1]==="nth"){if(!match[2]){Sizzle.error(match[0]);}
match[2]=match[2].replace(/^\+|\s*/g,'');var test=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(match[2]==="even"&&"2n"||match[2]==="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);match[2]=(test[1]+(test[2]||1))-0;match[3]=test[3]-0;}
else if(match[2]){Sizzle.error(match[0]);}
match[0]=done++;return match;},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1]=match[1].replace(rBackslash,"");if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name];}
match[4]=(match[4]||match[5]||"").replace(rBackslash,"");if(match[2]==="~="){match[4]=" "+match[4]+" ";}
return match;},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop);}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);if(!inplace){result.push.apply(result,ret);}
return false;}}else if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true;}
return match;},POS:function(match){match.unshift(true);return match;}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden";},disabled:function(elem){return elem.disabled===true;},checked:function(elem){return elem.checked===true;},selected:function(elem){if(elem.parentNode){elem.parentNode.selectedIndex;}
return elem.selected===true;},parent:function(elem){return!!elem.firstChild;},empty:function(elem){return!elem.firstChild;},has:function(elem,i,match){return!!Sizzle(match[3],elem).length;},header:function(elem){return(/h\d/i).test(elem.nodeName);},text:function(elem){return"text"===elem.getAttribute('type');},radio:function(elem){return"radio"===elem.type;},checkbox:function(elem){return"checkbox"===elem.type;},file:function(elem){return"file"===elem.type;},password:function(elem){return"password"===elem.type;},submit:function(elem){return"submit"===elem.type;},image:function(elem){return"image"===elem.type;},reset:function(elem){return"reset"===elem.type;},button:function(elem){return"button"===elem.type||elem.nodeName.toLowerCase()==="button";},input:function(elem){return(/input|select|textarea|button/i).test(elem.nodeName);}},setFilters:{first:function(elem,i){return i===0;},last:function(elem,i,match,array){return i===array.length-1;},even:function(elem,i){return i%2===0;},odd:function(elem,i){return i%2===1;},lt:function(elem,i,match){return i<match[3]-0;},gt:function(elem,i,match){return i>match[3]-0;},nth:function(elem,i,match){return match[3]-0===i;},eq:function(elem,i,match){return match[3]-0===i;}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];if(filter){return filter(elem,i,match,array);}else if(name==="contains"){return(elem.textContent||elem.innerText||Sizzle.getText([elem])||"").indexOf(match[3])>=0;}else if(name==="not"){var not=match[3];for(var j=0,l=not.length;j<l;j++){if(not[j]===elem){return false;}}
return true;}else{Sizzle.error(name);}},CHILD:function(elem,match){var type=match[1],node=elem;switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false;}}
if(type==="first"){return true;}
node=elem;case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false;}}
return true;case"nth":var first=match[2],last=match[3];if(first===1&&last===0){return true;}
var doneName=match[0],parent=elem.parentNode;if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;for(node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count;}}
parent.sizcache=doneName;}
var diff=elem.nodeIndex-last;if(first===0){return diff===0;}else{return(diff%first===0&&diff/first>=0);}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match;},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName.toLowerCase()===match;},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1;},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!==check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false;},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];if(filter){return filter(elem,i,match,array);}}}};var origPOS=Expr.match.POS,fescape=function(all,num){return"\\"+(num-0+1);};for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+(/(?![^\[]*\])(?![^\(]*\))/.source));Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source.replace(/\\(\d+)/g,fescape));}
var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);if(results){results.push.apply(results,array);return results;}
return array;};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType;}catch(e){makeArray=function(array,results){var i=0,ret=results||[];if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array);}else{if(typeof array.length==="number"){for(var l=array.length;i<l;i++){ret.push(array[i]);}}else{for(;array[i];i++){ret.push(array[i]);}}}
return ret;};}
var sortOrder,siblingCheck;if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(a===b){hasDuplicate=true;return 0;}
if(!a.compareDocumentPosition||!b.compareDocumentPosition){return a.compareDocumentPosition?-1:1;}
return a.compareDocumentPosition(b)&4?-1:1;};}else{sortOrder=function(a,b){var al,bl,ap=[],bp=[],aup=a.parentNode,bup=b.parentNode,cur=aup;if(a===b){hasDuplicate=true;return 0;}else if(aup===bup){return siblingCheck(a,b);}else if(!aup){return-1;}else if(!bup){return 1;}
while(cur){ap.unshift(cur);cur=cur.parentNode;}
cur=bup;while(cur){bp.unshift(cur);cur=cur.parentNode;}
al=ap.length;bl=bp.length;for(var i=0;i<al&&i<bl;i++){if(ap[i]!==bp[i]){return siblingCheck(ap[i],bp[i]);}}
return i===al?siblingCheck(a,bp[i],-1):siblingCheck(ap[i],b,1);};siblingCheck=function(a,b,ret){if(a===b){return ret;}
var cur=a.nextSibling;while(cur){if(cur===b){return-1;}
cur=cur.nextSibling;}
return 1;};}
Sizzle.getText=function(elems){var ret="",elem;for(var i=0;elems[i];i++){elem=elems[i];if(elem.nodeType===3||elem.nodeType===4){ret+=elem.nodeValue;}else if(elem.nodeType!==8){ret+=Sizzle.getText(elem.childNodes);}}
return ret;};(function(){var form=document.createElement("div"),id="script"+(new Date()).getTime(),root=document.documentElement;form.innerHTML="<a name='"+id+"'/>";root.insertBefore(form,root.firstChild);if(document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[];}};Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return elem.nodeType===1&&node&&node.nodeValue===match;};}
root.removeChild(form);root=form=null;})();(function(){var div=document.createElement("div");div.appendChild(document.createComment(""));if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);if(match[1]==="*"){var tmp=[];for(var i=0;results[i];i++){if(results[i].nodeType===1){tmp.push(results[i]);}}
results=tmp;}
return results;};}
div.innerHTML="<a href='#'></a>";if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2);};}
div=null;})();if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div"),id="__sizzle__";div.innerHTML="<p class='TEST'></p>";if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return;}
Sizzle=function(query,context,extra,seed){context=context||document;if(!seed&&!Sizzle.isXML(context)){var match=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(query);if(match&&(context.nodeType===1||context.nodeType===9)){if(match[1]){return makeArray(context.getElementsByTagName(query),extra);}else if(match[2]&&Expr.find.CLASS&&context.getElementsByClassName){return makeArray(context.getElementsByClassName(match[2]),extra);}}
if(context.nodeType===9){if(query==="body"&&context.body){return makeArray([context.body],extra);}else if(match&&match[3]){var elem=context.getElementById(match[3]);if(elem&&elem.parentNode){if(elem.id===match[3]){return makeArray([elem],extra);}}else{return makeArray([],extra);}}
try{return makeArray(context.querySelectorAll(query),extra);}catch(qsaError){}}else if(context.nodeType===1&&context.nodeName.toLowerCase()!=="object"){var oldContext=context,old=context.getAttribute("id"),nid=old||id,hasParent=context.parentNode,relativeHierarchySelector=/^\s*[+~]/.test(query);if(!old){context.setAttribute("id",nid);}else{nid=nid.replace(/'/g,"\\$&");}
if(relativeHierarchySelector&&hasParent){context=context.parentNode;}
try{if(!relativeHierarchySelector||hasParent){return makeArray(context.querySelectorAll("[id='"+nid+"'] "+query),extra);}}catch(pseudoError){}finally{if(!old){oldContext.removeAttribute("id");}}}}
return oldSizzle(query,context,extra,seed);};for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop];}
div=null;})();}
(function(){var html=document.documentElement,matches=html.matchesSelector||html.mozMatchesSelector||html.webkitMatchesSelector||html.msMatchesSelector,pseudoWorks=false;try{matches.call(document.documentElement,"[test!='']:sizzle");}catch(pseudoError){pseudoWorks=true;}
if(matches){Sizzle.matchesSelector=function(node,expr){expr=expr.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!Sizzle.isXML(node)){try{if(pseudoWorks||!Expr.match.PSEUDO.test(expr)&&!/!=/.test(expr)){return matches.call(node,expr);}}catch(e){}}
return Sizzle(expr,null,null,[node]).length>0;};}})();(function(){var div=document.createElement("div");div.innerHTML="<div class='test e'></div><div class='test'></div>";if(!div.getElementsByClassName||div.getElementsByClassName("e").length===0){return;}
div.lastChild.className="e";if(div.getElementsByClassName("e").length===1){return;}
Expr.order.splice(1,0,"CLASS");Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]);}};div=null;})();function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){var match=false;elem=elem[dir];while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;elem.sizset=i;}
if(elem.nodeName.toLowerCase()===cur){match=elem;break;}
elem=elem[dir];}
checkSet[i]=match;}}}
function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){var match=false;elem=elem[dir];while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;elem.sizset=i;}
if(typeof cur!=="string"){if(elem===cur){match=true;break;}}else if(Sizzle.filter(cur,[elem]).length>0){match=elem;break;}}
elem=elem[dir];}
checkSet[i]=match;}}}
if(document.documentElement.contains){Sizzle.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):true);};}else if(document.documentElement.compareDocumentPosition){Sizzle.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16);};}else{Sizzle.contains=function(){return false;};}
Sizzle.isXML=function(elem){var documentElement=(elem?elem.ownerDocument||elem:0).documentElement;return documentElement?documentElement.nodeName!=="HTML":false;};var posProcess=function(selector,context){var match,tmpSet=[],later="",root=context.nodeType?[context]:context;while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];selector=selector.replace(Expr.match.PSEUDO,"");}
selector=Expr.relative[selector]?selector+"*":selector;for(var i=0,l=root.length;i<l;i++){Sizzle(selector,root[i],tmpSet);}
return Sizzle.filter(later,tmpSet);};jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.filters;jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;})();var runtil=/Until$/,rparentsprev=/^(?:parents|prevUntil|prevAll)/,rmultiselector=/,/,isSimple=/^.[^:#\[\.,]*$/,slice=Array.prototype.slice,POS=jQuery.expr.match.POS,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({find:function(selector){var ret=this.pushStack("","find",selector),length=0;for(var i=0,l=this.length;i<l;i++){length=ret.length;jQuery.find(selector,this[i],ret);if(i>0){for(var n=length;n<ret.length;n++){for(var r=0;r<length;r++){if(ret[r]===ret[n]){ret.splice(n--,1);break;}}}}}
return ret;},has:function(target){var targets=jQuery(target);return this.filter(function(){for(var i=0,l=targets.length;i<l;i++){if(jQuery.contains(this,targets[i])){return true;}}});},not:function(selector){return this.pushStack(winnow(this,selector,false),"not",selector);},filter:function(selector){return this.pushStack(winnow(this,selector,true),"filter",selector);},is:function(selector){return!!selector&&jQuery.filter(selector,this).length>0;},closest:function(selectors,context){var ret=[],i,l,cur=this[0];if(jQuery.isArray(selectors)){var match,selector,matches={},level=1;if(cur&&selectors.length){for(i=0,l=selectors.length;i<l;i++){selector=selectors[i];if(!matches[selector]){matches[selector]=jQuery.expr.match.POS.test(selector)?jQuery(selector,context||this.context):selector;}}
while(cur&&cur.ownerDocument&&cur!==context){for(selector in matches){match=matches[selector];if(match.jquery?match.index(cur)>-1:jQuery(cur).is(match)){ret.push({selector:selector,elem:cur,level:level});}}
cur=cur.parentNode;level++;}}
return ret;}
var pos=POS.test(selectors)?jQuery(selectors,context||this.context):null;for(i=0,l=this.length;i<l;i++){cur=this[i];while(cur){if(pos?pos.index(cur)>-1:jQuery.find.matchesSelector(cur,selectors)){ret.push(cur);break;}else{cur=cur.parentNode;if(!cur||!cur.ownerDocument||cur===context){break;}}}}
ret=ret.length>1?jQuery.unique(ret):ret;return this.pushStack(ret,"closest",selectors);},index:function(elem){if(!elem||typeof elem==="string"){return jQuery.inArray(this[0],elem?jQuery(elem):this.parent().children());}
return jQuery.inArray(elem.jquery?elem[0]:elem,this);},add:function(selector,context){var set=typeof selector==="string"?jQuery(selector,context):jQuery.makeArray(selector),all=jQuery.merge(this.get(),set);return this.pushStack(isDisconnected(set[0])||isDisconnected(all[0])?all:jQuery.unique(all));},andSelf:function(){return this.add(this.prevObject);}});function isDisconnected(node){return!node||!node.parentNode||node.parentNode.nodeType===11;}
jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function(elem){return jQuery.dir(elem,"parentNode");},parentsUntil:function(elem,i,until){return jQuery.dir(elem,"parentNode",until);},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},nextUntil:function(elem,i,until){return jQuery.dir(elem,"nextSibling",until);},prevUntil:function(elem,i,until){return jQuery.dir(elem,"previousSibling",until);},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until),args=slice.call(arguments);if(!runtil.test(name)){selector=until;}
if(selector&&typeof selector==="string"){ret=jQuery.filter(selector,ret);}
ret=this.length>1&&!guaranteedUnique[name]?jQuery.unique(ret):ret;if((this.length>1||rmultiselector.test(selector))&&rparentsprev.test(name)){ret=ret.reverse();}
return this.pushStack(ret,name,args.join(","));};});jQuery.extend({filter:function(expr,elems,not){if(not){expr=":not("+expr+")";}
return elems.length===1?jQuery.find.matchesSelector(elems[0],expr)?[elems[0]]:[]:jQuery.find.matches(expr,elems);},dir:function(elem,dir,until){var matched=[],cur=elem[dir];while(cur&&cur.nodeType!==9&&(until===undefined||cur.nodeType!==1||!jQuery(cur).is(until))){if(cur.nodeType===1){matched.push(cur);}
cur=cur[dir];}
return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir]){if(cur.nodeType===1&&++num===result){break;}}
return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){r.push(n);}}
return r;}});function winnow(elements,qualifier,keep){if(jQuery.isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){var retVal=!!qualifier.call(elem,i,elem);return retVal===keep;});}else if(qualifier.nodeType){return jQuery.grep(elements,function(elem,i){return(elem===qualifier)===keep;});}else if(typeof qualifier==="string"){var filtered=jQuery.grep(elements,function(elem){return elem.nodeType===1;});if(isSimple.test(qualifier)){return jQuery.filter(qualifier,filtered,!keep);}else{qualifier=jQuery.filter(qualifier,filtered);}}
return jQuery.grep(elements,function(elem,i){return(jQuery.inArray(elem,qualifier)>=0)===keep;});}
var rinlinejQuery=/ jQuery\d+="(?:\d+|null)"/g,rleadingWhitespace=/^\s+/,rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,rtagName=/<([\w:]+)/,rtbody=/<tbody/i,rhtml=/<|&#?\w+;/,rnocache=/<(?:script|object|embed|option|style)/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;if(!jQuery.support.htmlSerialize){wrapMap._default=[1,"div<div>","</div>"];}
jQuery.fn.extend({text:function(text){if(jQuery.isFunction(text)){return this.each(function(i){var self=jQuery(this);self.text(text.call(this,i,self.text()));});}
if(typeof text!=="object"&&text!==undefined){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));}
return jQuery.text(this);},wrapAll:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapAll(html.call(this,i));});}
if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);}
wrap.map(function(){var elem=this;while(elem.firstChild&&elem.firstChild.nodeType===1){elem=elem.firstChild;}
return elem;}).append(this);}
return this;},wrapInner:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});}
return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},unwrap:function(){return this.parent().each(function(){if(!jQuery.nodeName(this,"body")){jQuery(this).replaceWith(this.childNodes);}}).end();},append:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType===1){this.appendChild(elem);}});},prepend:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType===1){this.insertBefore(elem,this.firstChild);}});},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this);});}else if(arguments.length){var set=jQuery(arguments[0]);set.push.apply(set,this.toArray());return this.pushStack(set,"before",arguments);}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});}else if(arguments.length){var set=this.pushStack(this,"after",arguments);set.push.apply(set,jQuery(arguments[0]).toArray());return set;}},remove:function(selector,keepData){for(var i=0,elem;(elem=this[i])!=null;i++){if(!selector||jQuery.filter(selector,[elem]).length){if(!keepData&&elem.nodeType===1){jQuery.cleanData(elem.getElementsByTagName("*"));jQuery.cleanData([elem]);}
if(elem.parentNode){elem.parentNode.removeChild(elem);}}}
return this;},empty:function(){for(var i=0,elem;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(elem.getElementsByTagName("*"));}
while(elem.firstChild){elem.removeChild(elem.firstChild);}}
return this;},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents);});},html:function(value){if(value===undefined){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(rinlinejQuery,""):null;}else if(typeof value==="string"&&!rnocache.test(value)&&(jQuery.support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=value.replace(rxhtmlTag,"<$1></$2>");try{for(var i=0,l=this.length;i<l;i++){if(this[i].nodeType===1){jQuery.cleanData(this[i].getElementsByTagName("*"));this[i].innerHTML=value;}}}catch(e){this.empty().append(value);}}else if(jQuery.isFunction(value)){this.each(function(i){var self=jQuery(this);self.html(value.call(this,i,self.html()));});}else{this.empty().append(value);}
return this;},replaceWith:function(value){if(this[0]&&this[0].parentNode){if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this),old=self.html();self.replaceWith(value.call(this,i,old));});}
if(typeof value!=="string"){value=jQuery(value).detach();}
return this.each(function(){var next=this.nextSibling,parent=this.parentNode;jQuery(this).remove();if(next){jQuery(next).before(value);}else{jQuery(parent).append(value);}});}else{return this.pushStack(jQuery(jQuery.isFunction(value)?value():value),"replaceWith",value);}},detach:function(selector){return this.remove(selector,true);},domManip:function(args,table,callback){var results,first,fragment,parent,value=args[0],scripts=[];if(!jQuery.support.checkClone&&arguments.length===3&&typeof value==="string"&&rchecked.test(value)){return this.each(function(){jQuery(this).domManip(args,table,callback,true);});}
if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);args[0]=value.call(this,i,table?self.html():undefined);self.domManip(args,table,callback);});}
if(this[0]){parent=value&&value.parentNode;if(jQuery.support.parentNode&&parent&&parent.nodeType===11&&parent.childNodes.length===this.length){results={fragment:parent};}else{results=jQuery.buildFragment(args,this,scripts);}
fragment=results.fragment;if(fragment.childNodes.length===1){first=fragment=fragment.firstChild;}else{first=fragment.firstChild;}
if(first){table=table&&jQuery.nodeName(first,"tr");for(var i=0,l=this.length,lastIndex=l-1;i<l;i++){callback.call(table?root(this[i],first):this[i],results.cacheable||(l>1&&i<lastIndex)?jQuery.clone(fragment,true,true):fragment);}}
if(scripts.length){jQuery.each(scripts,evalScript);}}
return this;}});function root(elem,cur){return jQuery.nodeName(elem,"table")?(elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody"))):elem;}
function cloneCopyEvent(src,dest){if(dest.nodeType!==1||!jQuery.hasData(src)){return;}
var internalKey=jQuery.expando,oldData=jQuery.data(src),curData=jQuery.data(dest,oldData);if((oldData=oldData[internalKey])){var events=oldData.events;curData=curData[internalKey]=jQuery.extend({},oldData);if(events){delete curData.handle;curData.events={};for(var type in events){for(var i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type+(events[type][i].namespace?".":"")+events[type][i].namespace,events[type][i],events[type][i].data);}}}}}
function cloneFixAttributes(src,dest){if(dest.nodeType!==1){return;}
var nodeName=dest.nodeName.toLowerCase();dest.clearAttributes();dest.mergeAttributes(src);if(nodeName==="object"){dest.outerHTML=src.outerHTML;}else if(nodeName==="input"&&(src.type==="checkbox"||src.type==="radio")){if(src.checked){dest.defaultChecked=dest.checked=src.checked;}
if(dest.value!==src.value){dest.value=src.value;}}else if(nodeName==="option"){dest.selected=src.defaultSelected;}else if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue;}
dest.removeAttribute(jQuery.expando);}
jQuery.buildFragment=function(args,nodes,scripts){var fragment,cacheable,cacheresults,doc=(nodes&&nodes[0]?nodes[0].ownerDocument||nodes[0]:document);if(args.length===1&&typeof args[0]==="string"&&args[0].length<512&&doc===document&&args[0].charAt(0)==="<"&&!rnocache.test(args[0])&&(jQuery.support.checkClone||!rchecked.test(args[0]))){cacheable=true;cacheresults=jQuery.fragments[args[0]];if(cacheresults){if(cacheresults!==1){fragment=cacheresults;}}}
if(!fragment){fragment=doc.createDocumentFragment();jQuery.clean(args,doc,fragment,scripts);}
if(cacheable){jQuery.fragments[args[0]]=cacheresults?fragment:1;}
return{fragment:fragment,cacheable:cacheable};};jQuery.fragments={};jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var ret=[],insert=jQuery(selector),parent=this.length===1&&this[0].parentNode;if(parent&&parent.nodeType===11&&parent.childNodes.length===1&&insert.length===1){insert[original](this[0]);return this;}else{for(var i=0,l=insert.length;i<l;i++){var elems=(i>0?this.clone(true):this).get();jQuery(insert[i])[original](elems);ret=ret.concat(elems);}
return this.pushStack(ret,name,insert.selector);}};});function getAll(elem){if("getElementsByTagName"in elem){return elem.getElementsByTagName("*");}else if("querySelectorAll"in elem){return elem.querySelectorAll("*");}else{return[];}}
jQuery.extend({clone:function(elem,dataAndEvents,deepDataAndEvents){var clone=elem.cloneNode(true),srcElements,destElements,i;if((!jQuery.support.noCloneEvent||!jQuery.support.noCloneChecked)&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){cloneFixAttributes(elem,clone);srcElements=getAll(elem);destElements=getAll(clone);for(i=0;srcElements[i];++i){cloneFixAttributes(srcElements[i],destElements[i]);}}
if(dataAndEvents){cloneCopyEvent(elem,clone);if(deepDataAndEvents){srcElements=getAll(elem);destElements=getAll(clone);for(i=0;srcElements[i];++i){cloneCopyEvent(srcElements[i],destElements[i]);}}}
return clone;},clean:function(elems,context,fragment,scripts){context=context||document;if(typeof context.createElement==="undefined"){context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;}
var ret=[];for(var i=0,elem;(elem=elems[i])!=null;i++){if(typeof elem==="number"){elem+="";}
if(!elem){continue;}
if(typeof elem==="string"&&!rhtml.test(elem)){elem=context.createTextNode(elem);}else if(typeof elem==="string"){elem=elem.replace(rxhtmlTag,"<$1></$2>");var tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,depth=wrap[0],div=context.createElement("div");div.innerHTML=wrap[1]+elem+wrap[2];while(depth--){div=div.lastChild;}
if(!jQuery.support.tbody){var hasBody=rtbody.test(elem),tbody=tag==="table"&&!hasBody?div.firstChild&&div.firstChild.childNodes:wrap[1]==="<table>"&&!hasBody?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j){if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length){tbody[j].parentNode.removeChild(tbody[j]);}}}
if(!jQuery.support.leadingWhitespace&&rleadingWhitespace.test(elem)){div.insertBefore(context.createTextNode(rleadingWhitespace.exec(elem)[0]),div.firstChild);}
elem=div.childNodes;}
if(elem.nodeType){ret.push(elem);}else{ret=jQuery.merge(ret,elem);}}
if(fragment){for(i=0;ret[i];i++){if(scripts&&jQuery.nodeName(ret[i],"script")&&(!ret[i].type||ret[i].type.toLowerCase()==="text/javascript")){scripts.push(ret[i].parentNode?ret[i].parentNode.removeChild(ret[i]):ret[i]);}else{if(ret[i].nodeType===1){ret.splice.apply(ret,[i+1,0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))));}
fragment.appendChild(ret[i]);}}}
return ret;},cleanData:function(elems){var data,id,cache=jQuery.cache,internalKey=jQuery.expando,special=jQuery.event.special,deleteExpando=jQuery.support.deleteExpando;for(var i=0,elem;(elem=elems[i])!=null;i++){if(elem.nodeName&&jQuery.noData[elem.nodeName.toLowerCase()]){continue;}
id=elem[jQuery.expando];if(id){data=cache[id]&&cache[id][internalKey];if(data&&data.events){for(var type in data.events){if(special[type]){jQuery.event.remove(elem,type);}else{jQuery.removeEvent(elem,type,data.handle);}}
if(data.handle){data.handle.elem=null;}}
if(deleteExpando){delete elem[jQuery.expando];}else if(elem.removeAttribute){elem.removeAttribute(jQuery.expando);}
delete cache[id];}}}});function evalScript(i,elem){if(elem.src){jQuery.ajax({url:elem.src,async:false,dataType:"script"});}else{jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");}
if(elem.parentNode){elem.parentNode.removeChild(elem);}}
var ralpha=/alpha\([^)]*\)/i,ropacity=/opacity=([^)]*)/,rdashAlpha=/-([a-z])/ig,rupper=/([A-Z])/g,rnumpx=/^-?\d+(?:px)?$/i,rnum=/^-?\d/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssWidth=["Left","Right"],cssHeight=["Top","Bottom"],curCSS,getComputedStyle,currentStyle,fcamelCase=function(all,letter){return letter.toUpperCase();};jQuery.fn.css=function(name,value){if(arguments.length===2&&value===undefined){return this;}
return jQuery.access(this,name,value,true,function(elem,name,value){return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name);});};jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity","opacity");return ret===""?"1":ret;}else{return elem.style.opacity;}}}},cssNumber:{"zIndex":true,"fontWeight":true,"opacity":true,"zoom":true,"lineHeight":true},cssProps:{"float":jQuery.support.cssFloat?"cssFloat":"styleFloat"},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return;}
var ret,origName=jQuery.camelCase(name),style=elem.style,hooks=jQuery.cssHooks[origName];name=jQuery.cssProps[origName]||origName;if(value!==undefined){if(typeof value==="number"&&isNaN(value)||value==null){return;}
if(typeof value==="number"&&!jQuery.cssNumber[origName]){value+="px";}
if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value))!==undefined){try{style[name]=value;}catch(e){}}}else{if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret;}
return style[name];}},css:function(elem,name,extra){var ret,origName=jQuery.camelCase(name),hooks=jQuery.cssHooks[origName];name=jQuery.cssProps[origName]||origName;if(hooks&&"get"in hooks&&(ret=hooks.get(elem,true,extra))!==undefined){return ret;}else if(curCSS){return curCSS(elem,name,origName);}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}
callback.call(elem);for(name in options){elem.style[name]=old[name];}},camelCase:function(string){return string.replace(rdashAlpha,fcamelCase);}});jQuery.curCSS=jQuery.css;jQuery.each(["height","width"],function(i,name){jQuery.cssHooks[name]={get:function(elem,computed,extra){var val;if(computed){if(elem.offsetWidth!==0){val=getWH(elem,name,extra);}else{jQuery.swap(elem,cssShow,function(){val=getWH(elem,name,extra);});}
if(val<=0){val=curCSS(elem,name,name);if(val==="0px"&&currentStyle){val=currentStyle(elem,name,name);}
if(val!=null){return val===""||val==="auto"?"0px":val;}}
if(val<0||val==null){val=elem.style[name];return val===""||val==="auto"?"0px":val;}
return typeof val==="string"?val:val+"px";}},set:function(elem,value){if(rnumpx.test(value)){value=parseFloat(value);if(value>=0){return value+"px";}}else{return value;}}};});if(!jQuery.support.opacity){jQuery.cssHooks.opacity={get:function(elem,computed){return ropacity.test((computed&&elem.currentStyle?elem.currentStyle.filter:elem.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":computed?"1":"";},set:function(elem,value){var style=elem.style;style.zoom=1;var opacity=jQuery.isNaN(value)?"":"alpha(opacity="+value*100+")",filter=style.filter||"";style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):style.filter+' '+opacity;}};}
if(document.defaultView&&document.defaultView.getComputedStyle){getComputedStyle=function(elem,newName,name){var ret,defaultView,computedStyle;name=name.replace(rupper,"-$1").toLowerCase();if(!(defaultView=elem.ownerDocument.defaultView)){return undefined;}
if((computedStyle=defaultView.getComputedStyle(elem,null))){ret=computedStyle.getPropertyValue(name);if(ret===""&&!jQuery.contains(elem.ownerDocument.documentElement,elem)){ret=jQuery.style(elem,name);}}
return ret;};}
if(document.documentElement.currentStyle){currentStyle=function(elem,name){var left,ret=elem.currentStyle&&elem.currentStyle[name],rsLeft=elem.runtimeStyle&&elem.runtimeStyle[name],style=elem.style;if(!rnumpx.test(ret)&&rnum.test(ret)){left=style.left;if(rsLeft){elem.runtimeStyle.left=elem.currentStyle.left;}
style.left=name==="fontSize"?"1em":(ret||0);ret=style.pixelLeft+"px";style.left=left;if(rsLeft){elem.runtimeStyle.left=rsLeft;}}
return ret===""?"auto":ret;};}
curCSS=getComputedStyle||currentStyle;function getWH(elem,name,extra){var which=name==="width"?cssWidth:cssHeight,val=name==="width"?elem.offsetWidth:elem.offsetHeight;if(extra==="border"){return val;}
jQuery.each(which,function(){if(!extra){val-=parseFloat(jQuery.css(elem,"padding"+this))||0;}
if(extra==="margin"){val+=parseFloat(jQuery.css(elem,"margin"+this))||0;}else{val-=parseFloat(jQuery.css(elem,"border"+this+"Width"))||0;}});return val;}
if(jQuery.expr&&jQuery.expr.filters){jQuery.expr.filters.hidden=function(elem){var width=elem.offsetWidth,height=elem.offsetHeight;return(width===0&&height===0)||(!jQuery.support.reliableHiddenOffsets&&(elem.style.display||jQuery.css(elem,"display"))==="none");};jQuery.expr.filters.visible=function(elem){return!jQuery.expr.filters.hidden(elem);};}
var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rhash=/#.*$/,rheaders=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,rinput=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,rlocalProtocol=/(?:^file|^widget|\-extension):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rquery=/\?/,rscript=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,rselectTextarea=/^(?:select|textarea)/i,rspacesAjax=/\s+/,rts=/([?&])_=[^&]*/,rucHeaders=/(^|\-)([a-z])/g,rucHeadersFunc=function(_,$1,$2){return $1+$2.toUpperCase();},rurl=/^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,_load=jQuery.fn.load,prefilters={},transports={},ajaxLocation,ajaxLocParts;try{ajaxLocation=document.location.href;}catch(e){ajaxLocation=document.createElement("a");ajaxLocation.href="";ajaxLocation=ajaxLocation.href;}
ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase());function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*";}
if(jQuery.isFunction(func)){var dataTypes=dataTypeExpression.toLowerCase().split(rspacesAjax),i=0,length=dataTypes.length,dataType,list,placeBefore;for(;i<length;i++){dataType=dataTypes[i];placeBefore=/^\+/.test(dataType);if(placeBefore){dataType=dataType.substr(1)||"*";}
list=structure[dataType]=structure[dataType]||[];list[placeBefore?"unshift":"push"](func);}}};}
function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR,dataType,inspected){dataType=dataType||options.dataTypes[0];inspected=inspected||{};inspected[dataType]=true;var list=structure[dataType],i=0,length=list?list.length:0,executeOnly=(structure===prefilters),selection;for(;i<length&&(executeOnly||!selection);i++){selection=list[i](options,originalOptions,jqXHR);if(typeof selection==="string"){if(!executeOnly||inspected[selection]){selection=undefined;}else{options.dataTypes.unshift(selection);selection=inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR,selection,inspected);}}}
if((executeOnly||!selection)&&!inspected["*"]){selection=inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR,"*",inspected);}
return selection;}
jQuery.fn.extend({load:function(url,params,callback){if(typeof url!=="string"&&_load){return _load.apply(this,arguments);}else if(!this.length){return this;}
var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}
var type="GET";if(params){if(jQuery.isFunction(params)){callback=params;params=undefined;}else if(typeof params==="object"){params=jQuery.param(params,jQuery.ajaxSettings.traditional);type="POST";}}
var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(jqXHR,status,responseText){responseText=jqXHR.responseText;if(jqXHR.isResolved()){jqXHR.done(function(r){responseText=r;});self.html(selector?jQuery("<div>").append(responseText.replace(rscript,"")).find(selector):responseText);}
if(callback){self.each(callback,[responseText,status,jqXHR]);}}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return this.elements?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||rselectTextarea.test(this.nodeName)||rinput.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val,i){return{name:elem.name,value:val.replace(rCRLF,"\r\n")};}):{name:elem.name,value:val.replace(rCRLF,"\r\n")};}).get();}});jQuery.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){if(jQuery.isFunction(data)){type=type||callback;callback=data;data=undefined;}
return jQuery.ajax({type:method,url:url,data:data,success:callback,dataType:type});};});jQuery.extend({getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},ajaxSetup:function(target,settings){if(!settings){settings=target;target=jQuery.extend(true,jQuery.ajaxSettings,settings);}else{jQuery.extend(true,target,jQuery.ajaxSettings,settings);}
for(var field in{context:1,url:1}){if(field in settings){target[field]=settings[field];}else if(field in jQuery.ajaxSettings){target[field]=jQuery.ajaxSettings[field];}}
return target;},ajaxSettings:{url:ajaxLocation,isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":window.String,"text html":true,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML}},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined;}
options=options||{};var
s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=callbackContext!==s&&(callbackContext.nodeType||callbackContext instanceof jQuery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery._Deferred(),statusCode=s.statusCode||{},ifModifiedKey,requestHeaders={},responseHeadersString,responseHeaders,transport,timeoutTimer,parts,state=0,fireGlobals,i,jqXHR={readyState:0,setRequestHeader:function(name,value){if(!state){requestHeaders[name.toLowerCase().replace(rucHeaders,rucHeadersFunc)]=value;}
return this;},getAllResponseHeaders:function(){return state===2?responseHeadersString:null;},getResponseHeader:function(key){var match;if(state===2){if(!responseHeaders){responseHeaders={};while((match=rheaders.exec(responseHeadersString))){responseHeaders[match[1].toLowerCase()]=match[2];}}
match=responseHeaders[key.toLowerCase()];}
return match===undefined?null:match;},overrideMimeType:function(type){if(!state){s.mimeType=type;}
return this;},abort:function(statusText){statusText=statusText||"abort";if(transport){transport.abort(statusText);}
done(0,statusText);return this;}};function done(status,statusText,responses,headers){if(state===2){return;}
state=2;if(timeoutTimer){clearTimeout(timeoutTimer);}
transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status?4:0;var isSuccess,success,error,response=responses?ajaxHandleResponses(s,jqXHR,responses):undefined,lastModified,etag;if(status>=200&&status<300||status===304){if(s.ifModified){if((lastModified=jqXHR.getResponseHeader("Last-Modified"))){jQuery.lastModified[ifModifiedKey]=lastModified;}
if((etag=jqXHR.getResponseHeader("Etag"))){jQuery.etag[ifModifiedKey]=etag;}}
if(status===304){statusText="notmodified";isSuccess=true;}else{try{success=ajaxConvert(s,response);statusText="success";isSuccess=true;}catch(e){statusText="parsererror";error=e;}}}else{error=statusText;if(!statusText||status){statusText="error";if(status<0){status=0;}}}
jqXHR.status=status;jqXHR.statusText=statusText;if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR]);}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error]);}
jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){globalEventContext.trigger("ajax"+(isSuccess?"Success":"Error"),[jqXHR,s,isSuccess?success:error]);}
completeDeferred.resolveWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!(--jQuery.active)){jQuery.event.trigger("ajaxStop");}}}
deferred.promise(jqXHR);jqXHR.success=jqXHR.done;jqXHR.error=jqXHR.fail;jqXHR.complete=completeDeferred.done;jqXHR.statusCode=function(map){if(map){var tmp;if(state<2){for(tmp in map){statusCode[tmp]=[statusCode[tmp],map[tmp]];}}else{tmp=map[jqXHR.status];jqXHR.then(tmp,tmp);}}
return this;};s.url=((url||s.url)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//");s.dataTypes=jQuery.trim(s.dataType||"*").toLowerCase().split(rspacesAjax);if(!s.crossDomain){parts=rurl.exec(s.url.toLowerCase());s.crossDomain=!!(parts&&(parts[1]!=ajaxLocParts[1]||parts[2]!=ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?80:443))!=(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?80:443))));}
if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional);}
inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(state===2){return false;}
fireGlobals=s.global;s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart");}
if(!s.hasContent){if(s.data){s.url+=(rquery.test(s.url)?"&":"?")+s.data;}
ifModifiedKey=s.url;if(s.cache===false){var ts=jQuery.now(),ret=s.url.replace(rts,"$1_="+ts);s.url=ret+((ret===s.url)?(rquery.test(s.url)?"&":"?")+"_="+ts:"");}}
if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){requestHeaders["Content-Type"]=s.contentType;}
if(s.ifModified){ifModifiedKey=ifModifiedKey||s.url;if(jQuery.lastModified[ifModifiedKey]){requestHeaders["If-Modified-Since"]=jQuery.lastModified[ifModifiedKey];}
if(jQuery.etag[ifModifiedKey]){requestHeaders["If-None-Match"]=jQuery.etag[ifModifiedKey];}}
requestHeaders.Accept=s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", */*; q=0.01":""):s.accepts["*"];for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i]);}
if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||state===2)){jqXHR.abort();return false;}
for(i in{success:1,error:1,complete:1}){jqXHR[i](s[i]);}
transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport");}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s]);}
if(s.async&&s.timeout>0){timeoutTimer=setTimeout(function(){jqXHR.abort("timeout");},s.timeout);}
try{state=1;transport.send(requestHeaders,done);}catch(e){if(status<2){done(-1,e);}else{jQuery.error(e);}}}
return jqXHR;},param:function(a,traditional){var s=[],add=function(key,value){value=jQuery.isFunction(value)?value():value;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value);};if(traditional===undefined){traditional=jQuery.ajaxSettings.traditional;}
if(jQuery.isArray(a)||(a.jquery&&!jQuery.isPlainObject(a))){jQuery.each(a,function(){add(this.name,this.value);});}else{for(var prefix in a){buildParams(prefix,a[prefix],traditional,add);}}
return s.join("&").replace(r20,"+");}});function buildParams(prefix,obj,traditional,add){if(jQuery.isArray(obj)&&obj.length){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v);}else{buildParams(prefix+"["+(typeof v==="object"||jQuery.isArray(v)?i:"")+"]",v,traditional,add);}});}else if(!traditional&&obj!=null&&typeof obj==="object"){if(jQuery.isArray(obj)||jQuery.isEmptyObject(obj)){add(prefix,"");}else{for(var name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add);}}}else{add(prefix,obj);}}
jQuery.extend({active:0,lastModified:{},etag:{}});function ajaxHandleResponses(s,jqXHR,responses){var contents=s.contents,dataTypes=s.dataTypes,responseFields=s.responseFields,ct,type,finalDataType,firstDataType;for(type in responseFields){if(type in responses){jqXHR[responseFields[type]]=responses[type];}}
while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("content-type");}}
if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break;}}}
if(dataTypes[0]in responses){finalDataType=dataTypes[0];}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break;}
if(!firstDataType){firstDataType=type;}}
finalDataType=finalDataType||firstDataType;}
if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType);}
return responses[finalDataType];}}
function ajaxConvert(s,response){if(s.dataFilter){response=s.dataFilter(response,s.dataType);}
var dataTypes=s.dataTypes,converters={},i,key,length=dataTypes.length,tmp,current=dataTypes[0],prev,conversion,conv,conv1,conv2;for(i=1;i<length;i++){if(i===1){for(key in s.converters){if(typeof key==="string"){converters[key.toLowerCase()]=s.converters[key];}}}
prev=current;current=dataTypes[i];if(current==="*"){current=prev;}else if(prev!=="*"&&prev!==current){conversion=prev+" "+current;conv=converters[conversion]||converters["* "+current];if(!conv){conv2=undefined;for(conv1 in converters){tmp=conv1.split(" ");if(tmp[0]===prev||tmp[0]==="*"){conv2=converters[tmp[1]+" "+current];if(conv2){conv1=converters[conv1];if(conv1===true){conv=conv2;}else if(conv2===true){conv=conv1;}
break;}}}}
if(!(conv||conv2)){jQuery.error("No conversion from "+conversion.replace(" "," to "));}
if(conv!==true){response=conv?conv(response):conv2(conv1(response));}}}
return response;}
var jsc=jQuery.now(),jsre=/(\=)\?(&|$)|()\?\?()/i;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return jQuery.expando+"_"+(jsc++);}});jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var dataIsString=(typeof s.data==="string");if(s.dataTypes[0]==="jsonp"||originalSettings.jsonpCallback||originalSettings.jsonp!=null||s.jsonp!==false&&(jsre.test(s.url)||dataIsString&&jsre.test(s.data))){var responseContainer,jsonpCallback=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,previous=window[jsonpCallback],url=s.url,data=s.data,replace="$1"+jsonpCallback+"$2",cleanUp=function(){window[jsonpCallback]=previous;if(responseContainer&&jQuery.isFunction(previous)){window[jsonpCallback](responseContainer[0]);}};if(s.jsonp!==false){url=url.replace(jsre,replace);if(s.url===url){if(dataIsString){data=data.replace(jsre,replace);}
if(s.data===data){url+=(/\?/.test(url)?"&":"?")+s.jsonp+"="+jsonpCallback;}}}
s.url=url;s.data=data;window[jsonpCallback]=function(response){responseContainer=[response];};jqXHR.then(cleanUp,cleanUp);s.converters["script json"]=function(){if(!responseContainer){jQuery.error(jsonpCallback+" was not called");}
return responseContainer[0];};s.dataTypes[0]="json";return"script";}});jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(text){jQuery.globalEval(text);return text;}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false;}
if(s.crossDomain){s.type="GET";s.global=false;}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,head=document.head||document.getElementsByTagName("head")[0]||document.documentElement;return{send:function(_,callback){script=document.createElement("script");script.async="async";if(s.scriptCharset){script.charset=s.scriptCharset;}
script.src=s.url;script.onload=script.onreadystatechange=function(_,isAbort){if(!script.readyState||/loaded|complete/.test(script.readyState)){script.onload=script.onreadystatechange=null;if(head&&script.parentNode){head.removeChild(script);}
script=undefined;if(!isAbort){callback(200,"success");}}};head.insertBefore(script,head.firstChild);},abort:function(){if(script){script.onload(0,1);}}};}});var
xhrId=jQuery.now(),xhrCallbacks,testXHR;function xhrOnUnloadAbort(){jQuery(window).unload(function(){for(var key in xhrCallbacks){xhrCallbacks[key](0,1);}});}
function createStandardXHR(){try{return new window.XMLHttpRequest();}catch(e){}}
function createActiveXHR(){try{return new window.ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}
jQuery.ajaxSettings.xhr=window.ActiveXObject?function(){return!this.isLocal&&createStandardXHR()||createActiveXHR();}:createStandardXHR;testXHR=jQuery.ajaxSettings.xhr();jQuery.support.ajax=!!testXHR;jQuery.support.cors=testXHR&&("withCredentials"in testXHR);testXHR=undefined;if(jQuery.support.ajax){jQuery.ajaxTransport(function(s){if(!s.crossDomain||jQuery.support.cors){var callback;return{send:function(headers,complete){var xhr=s.xhr(),handle,i;if(s.username){xhr.open(s.type,s.url,s.async,s.username,s.password);}else{xhr.open(s.type,s.url,s.async);}
if(s.xhrFields){for(i in s.xhrFields){xhr[i]=s.xhrFields[i];}}
if(s.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(s.mimeType);}
if(!(s.crossDomain&&!s.hasContent)&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}
try{for(i in headers){xhr.setRequestHeader(i,headers[i]);}}catch(_){}
xhr.send((s.hasContent&&s.data)||null);callback=function(_,isAbort){var status,statusText,responseHeaders,responses,xml;try{if(callback&&(isAbort||xhr.readyState===4)){callback=undefined;if(handle){xhr.onreadystatechange=jQuery.noop;delete xhrCallbacks[handle];}
if(isAbort){if(xhr.readyState!==4){xhr.abort();}}else{status=xhr.status;responseHeaders=xhr.getAllResponseHeaders();responses={};xml=xhr.responseXML;if(xml&&xml.documentElement){responses.xml=xml;}
responses.text=xhr.responseText;try{statusText=xhr.statusText;}catch(e){statusText="";}
if(!status&&s.isLocal&&!s.crossDomain){status=responses.text?200:404;}else if(status===1223){status=204;}}}}catch(firefoxAccessException){if(!isAbort){complete(-1,firefoxAccessException);}}
if(responses){complete(status,statusText,responses,responseHeaders);}};if(!s.async||xhr.readyState===4){callback();}else{if(!xhrCallbacks){xhrCallbacks={};xhrOnUnloadAbort();}
handle=xhrId++;xhr.onreadystatechange=xhrCallbacks[handle]=callback;}},abort:function(){if(callback){callback(0,1);}}};}});}
var elemdisplay={},rfxtypes=/^(?:toggle|show|hide)$/,rfxnum=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,timerId,fxAttrs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];jQuery.fn.extend({show:function(speed,easing,callback){var elem,display;if(speed||speed===0){return this.animate(genFx("show",3),speed,easing,callback);}else{for(var i=0,j=this.length;i<j;i++){elem=this[i];display=elem.style.display;if(!jQuery._data(elem,"olddisplay")&&display==="none"){display=elem.style.display="";}
if(display===""&&jQuery.css(elem,"display")==="none"){jQuery._data(elem,"olddisplay",defaultDisplay(elem.nodeName));}}
for(i=0;i<j;i++){elem=this[i];display=elem.style.display;if(display===""||display==="none"){elem.style.display=jQuery._data(elem,"olddisplay")||"";}}
return this;}},hide:function(speed,easing,callback){if(speed||speed===0){return this.animate(genFx("hide",3),speed,easing,callback);}else{for(var i=0,j=this.length;i<j;i++){var display=jQuery.css(this[i],"display");if(display!=="none"&&!jQuery._data(this[i],"olddisplay")){jQuery._data(this[i],"olddisplay",display);}}
for(i=0;i<j;i++){this[i].style.display="none";}
return this;}},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2,callback){var bool=typeof fn==="boolean";if(jQuery.isFunction(fn)&&jQuery.isFunction(fn2)){this._toggle.apply(this,arguments);}else if(fn==null||bool){this.each(function(){var state=bool?fn:jQuery(this).is(":hidden");jQuery(this)[state?"show":"hide"]();});}else{this.animate(genFx("toggle",3),fn,fn2,callback);}
return this;},fadeTo:function(speed,to,easing,callback){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:to},speed,easing,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);if(jQuery.isEmptyObject(prop)){return this.each(optall.complete);}
return this[optall.queue===false?"each":"queue"](function(){var opt=jQuery.extend({},optall),p,isElement=this.nodeType===1,hidden=isElement&&jQuery(this).is(":hidden"),self=this;for(p in prop){var name=jQuery.camelCase(p);if(p!==name){prop[name]=prop[p];delete prop[p];p=name;}
if(prop[p]==="hide"&&hidden||prop[p]==="show"&&!hidden){return opt.complete.call(this);}
if(isElement&&(p==="height"||p==="width")){opt.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(jQuery.css(this,"display")==="inline"&&jQuery.css(this,"float")==="none"){if(!jQuery.support.inlineBlockNeedsLayout){this.style.display="inline-block";}else{var display=defaultDisplay(this.nodeName);if(display==="inline"){this.style.display="inline-block";}else{this.style.display="inline";this.style.zoom=1;}}}}
if(jQuery.isArray(prop[p])){(opt.specialEasing=opt.specialEasing||{})[p]=prop[p][1];prop[p]=prop[p][0];}}
if(opt.overflow!=null){this.style.overflow="hidden";}
opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(rfxtypes.test(val)){e[val==="toggle"?hidden?"show":"hide":val](prop);}else{var parts=rfxnum.exec(val),start=e.cur();if(parts){var end=parseFloat(parts[2]),unit=parts[3]||(jQuery.cssNumber[name]?"":"px");if(unit!=="px"){jQuery.style(self,name,(end||1)+unit);start=((end||1)/e.cur())*start;jQuery.style(self,name,start+unit);}
if(parts[1]){end=((parts[1]==="-="?-1:1)*end)+start;}
e.custom(start,end,unit);}else{e.custom(start,val,"");}}});return true;});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue){this.queue([]);}
this.each(function(){for(var i=timers.length-1;i>=0;i--){if(timers[i].elem===this){if(gotoEnd){timers[i](true);}
timers.splice(i,1);}}});if(!gotoEnd){this.dequeue();}
return this;}});function genFx(type,num){var obj={};jQuery.each(fxAttrs.concat.apply([],fxAttrs.slice(0,num)),function(){obj[this]=type;});return obj;}
jQuery.each({slideDown:genFx("show",1),slideUp:genFx("hide",1),slideToggle:genFx("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback);};});jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&typeof speed==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:opt.duration in jQuery.fx.speeds?jQuery.fx.speeds[opt.duration]:jQuery.fx.speeds._default;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false){jQuery(this).dequeue();}
if(jQuery.isFunction(opt.old)){opt.old.call(this);}};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig){options.orig={};}}});jQuery.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this);}
(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop];}
var parsed,r=jQuery.css(this.elem,this.prop);return isNaN(parsed=parseFloat(r))?!r||r==="auto"?0:r:parsed;},custom:function(from,to,unit){var self=this,fx=jQuery.fx;this.startTime=jQuery.now();this.start=from;this.end=to;this.unit=unit||this.unit||(jQuery.cssNumber[this.prop]?"":"px");this.now=this.start;this.pos=this.state=0;function t(gotoEnd){return self.step(gotoEnd);}
t.elem=this.elem;if(t()&&jQuery.timers.push(t)&&!timerId){timerId=setInterval(fx.tick,fx.interval);}},show:function(){this.options.orig[this.prop]=jQuery.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=jQuery.now(),done=true;if(gotoEnd||t>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var i in this.options.curAnim){if(this.options.curAnim[i]!==true){done=false;}}
if(done){if(this.options.overflow!=null&&!jQuery.support.shrinkWrapBlocks){var elem=this.elem,options=this.options;jQuery.each(["","X","Y"],function(index,value){elem.style["overflow"+value]=options.overflow[index];});}
if(this.options.hide){jQuery(this.elem).hide();}
if(this.options.hide||this.options.show){for(var p in this.options.curAnim){jQuery.style(this.elem,p,this.options.orig[p]);}}
this.options.complete.call(this.elem);}
return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;var specialEasing=this.options.specialEasing&&this.options.specialEasing[this.prop];var defaultEasing=this.options.easing||(jQuery.easing.swing?"swing":"linear");this.pos=jQuery.easing[specialEasing||defaultEasing](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}
return true;}};jQuery.extend(jQuery.fx,{tick:function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++){if(!timers[i]()){timers.splice(i--,1);}}
if(!timers.length){jQuery.fx.stop();}},interval:13,stop:function(){clearInterval(timerId);timerId=null;},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(fx){jQuery.style(fx.elem,"opacity",fx.now);},_default:function(fx){if(fx.elem.style&&fx.elem.style[fx.prop]!=null){fx.elem.style[fx.prop]=(fx.prop==="width"||fx.prop==="height"?Math.max(0,fx.now):fx.now)+fx.unit;}else{fx.elem[fx.prop]=fx.now;}}}});if(jQuery.expr&&jQuery.expr.filters){jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};}
function defaultDisplay(nodeName){if(!elemdisplay[nodeName]){var elem=jQuery("<"+nodeName+">").appendTo("body"),display=elem.css("display");elem.remove();if(display==="none"||display===""){display="block";}
elemdisplay[nodeName]=display;}
return elemdisplay[nodeName];}
var rtable=/^t(?:able|d|h)$/i,rroot=/^(?:body|html)$/i;if("getBoundingClientRect"in document.documentElement){jQuery.fn.offset=function(options){var elem=this[0],box;if(options){return this.each(function(i){jQuery.offset.setOffset(this,options,i);});}
if(!elem||!elem.ownerDocument){return null;}
if(elem===elem.ownerDocument.body){return jQuery.offset.bodyOffset(elem);}
try{box=elem.getBoundingClientRect();}catch(e){}
var doc=elem.ownerDocument,docElem=doc.documentElement;if(!box||!jQuery.contains(docElem,elem)){return box?{top:box.top,left:box.left}:{top:0,left:0};}
var body=doc.body,win=getWindow(doc),clientTop=docElem.clientTop||body.clientTop||0,clientLeft=docElem.clientLeft||body.clientLeft||0,scrollTop=(win.pageYOffset||jQuery.support.boxModel&&docElem.scrollTop||body.scrollTop),scrollLeft=(win.pageXOffset||jQuery.support.boxModel&&docElem.scrollLeft||body.scrollLeft),top=box.top+scrollTop-clientTop,left=box.left+scrollLeft-clientLeft;return{top:top,left:left};};}else{jQuery.fn.offset=function(options){var elem=this[0];if(options){return this.each(function(i){jQuery.offset.setOffset(this,options,i);});}
if(!elem||!elem.ownerDocument){return null;}
if(elem===elem.ownerDocument.body){return jQuery.offset.bodyOffset(elem);}
jQuery.offset.initialize();var computedStyle,offsetParent=elem.offsetParent,prevOffsetParent=elem,doc=elem.ownerDocument,docElem=doc.documentElement,body=doc.body,defaultView=doc.defaultView,prevComputedStyle=defaultView?defaultView.getComputedStyle(elem,null):elem.currentStyle,top=elem.offsetTop,left=elem.offsetLeft;while((elem=elem.parentNode)&&elem!==body&&elem!==docElem){if(jQuery.offset.supportsFixedPosition&&prevComputedStyle.position==="fixed"){break;}
computedStyle=defaultView?defaultView.getComputedStyle(elem,null):elem.currentStyle;top-=elem.scrollTop;left-=elem.scrollLeft;if(elem===offsetParent){top+=elem.offsetTop;left+=elem.offsetLeft;if(jQuery.offset.doesNotAddBorder&&!(jQuery.offset.doesAddBorderForTableAndCells&&rtable.test(elem.nodeName))){top+=parseFloat(computedStyle.borderTopWidth)||0;left+=parseFloat(computedStyle.borderLeftWidth)||0;}
prevOffsetParent=offsetParent;offsetParent=elem.offsetParent;}
if(jQuery.offset.subtractsBorderForOverflowNotVisible&&computedStyle.overflow!=="visible"){top+=parseFloat(computedStyle.borderTopWidth)||0;left+=parseFloat(computedStyle.borderLeftWidth)||0;}
prevComputedStyle=computedStyle;}
if(prevComputedStyle.position==="relative"||prevComputedStyle.position==="static"){top+=body.offsetTop;left+=body.offsetLeft;}
if(jQuery.offset.supportsFixedPosition&&prevComputedStyle.position==="fixed"){top+=Math.max(docElem.scrollTop,body.scrollTop);left+=Math.max(docElem.scrollLeft,body.scrollLeft);}
return{top:top,left:left};};}
jQuery.offset={initialize:function(){var body=document.body,container=document.createElement("div"),innerDiv,checkDiv,table,td,bodyMarginTop=parseFloat(jQuery.css(body,"marginTop"))||0,html="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";jQuery.extend(container.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});container.innerHTML=html;body.insertBefore(container,body.firstChild);innerDiv=container.firstChild;checkDiv=innerDiv.firstChild;td=innerDiv.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(checkDiv.offsetTop!==5);this.doesAddBorderForTableAndCells=(td.offsetTop===5);checkDiv.style.position="fixed";checkDiv.style.top="20px";this.supportsFixedPosition=(checkDiv.offsetTop===20||checkDiv.offsetTop===15);checkDiv.style.position=checkDiv.style.top="";innerDiv.style.overflow="hidden";innerDiv.style.position="relative";this.subtractsBorderForOverflowNotVisible=(checkDiv.offsetTop===-5);this.doesNotIncludeMarginInBodyOffset=(body.offsetTop!==bodyMarginTop);body.removeChild(container);body=container=innerDiv=checkDiv=table=td=null;jQuery.offset.initialize=jQuery.noop;},bodyOffset:function(body){var top=body.offsetTop,left=body.offsetLeft;jQuery.offset.initialize();if(jQuery.offset.doesNotIncludeMarginInBodyOffset){top+=parseFloat(jQuery.css(body,"marginTop"))||0;left+=parseFloat(jQuery.css(body,"marginLeft"))||0;}
return{top:top,left:left};},setOffset:function(elem,options,i){var position=jQuery.css(elem,"position");if(position==="static"){elem.style.position="relative";}
var curElem=jQuery(elem),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),calculatePosition=(position==="absolute"&&jQuery.inArray('auto',[curCSSTop,curCSSLeft])>-1),props={},curPosition={},curTop,curLeft;if(calculatePosition){curPosition=curElem.position();}
curTop=calculatePosition?curPosition.top:parseInt(curCSSTop,10)||0;curLeft=calculatePosition?curPosition.left:parseInt(curCSSLeft,10)||0;if(jQuery.isFunction(options)){options=options.call(elem,i,curOffset);}
if(options.top!=null){props.top=(options.top-curOffset.top)+curTop;}
if(options.left!=null){props.left=(options.left-curOffset.left)+curLeft;}
if("using"in options){options.using.call(elem,props);}else{curElem.css(props);}}};jQuery.fn.extend({position:function(){if(!this[0]){return null;}
var elem=this[0],offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=rroot.test(offsetParent[0].nodeName)?{top:0,left:0}:offsetParent.offset();offset.top-=parseFloat(jQuery.css(elem,"marginTop"))||0;offset.left-=parseFloat(jQuery.css(elem,"marginLeft"))||0;parentOffset.top+=parseFloat(jQuery.css(offsetParent[0],"borderTopWidth"))||0;parentOffset.left+=parseFloat(jQuery.css(offsetParent[0],"borderLeftWidth"))||0;return{top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent||document.body;while(offsetParent&&(!rroot.test(offsetParent.nodeName)&&jQuery.css(offsetParent,"position")==="static")){offsetParent=offsetParent.offsetParent;}
return offsetParent;});}});jQuery.each(["Left","Top"],function(i,name){var method="scroll"+name;jQuery.fn[method]=function(val){var elem=this[0],win;if(!elem){return null;}
if(val!==undefined){return this.each(function(){win=getWindow(this);if(win){win.scrollTo(!i?val:jQuery(win).scrollLeft(),i?val:jQuery(win).scrollTop());}else{this[method]=val;}});}else{win=getWindow(elem);return win?("pageXOffset"in win)?win[i?"pageYOffset":"pageXOffset"]:jQuery.support.boxModel&&win.document.documentElement[method]||win.document.body[method]:elem[method];}};});function getWindow(elem){return jQuery.isWindow(elem)?elem:elem.nodeType===9?elem.defaultView||elem.parentWindow:false;}
jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn["inner"+name]=function(){return this[0]?parseFloat(jQuery.css(this[0],type,"padding")):null;};jQuery.fn["outer"+name]=function(margin){return this[0]?parseFloat(jQuery.css(this[0],type,margin?"margin":"border")):null;};jQuery.fn[type]=function(size){var elem=this[0];if(!elem){return size==null?null:this;}
if(jQuery.isFunction(size)){return this.each(function(i){var self=jQuery(this);self[type](size.call(this,i,self[type]()));});}
if(jQuery.isWindow(elem)){var docElemProp=elem.document.documentElement["client"+name];return elem.document.compatMode==="CSS1Compat"&&docElemProp||elem.document.body["client"+name]||docElemProp;}else if(elem.nodeType===9){return Math.max(elem.documentElement["client"+name],elem.body["scroll"+name],elem.documentElement["scroll"+name],elem.body["offset"+name],elem.documentElement["offset"+name]);}else if(size===undefined){var orig=jQuery.css(elem,type),ret=parseFloat(orig);return jQuery.isNaN(ret)?orig:ret;}else{return this.css(type,typeof size==="string"?size:size+"px");}};});window.jQuery=window.$=jQuery;})(window);;(function($){var g=location.href.replace(/#.*/,''),h=$.localScroll=function(a){$('body').localScroll(a)};h.defaults={duration:1e3,axis:'y',event:'click',stop:1};h.hash=function(a){a=$.extend({},h.defaults,a);a.hash=0;if(location.hash)setTimeout(function(){i(0,location,a)},0)};$.fn.localScroll=function(b){b=$.extend({},h.defaults,b);return(b.persistent||b.lazy)?this.bind(b.event,function(e){var a=$([e.target,e.target.parentNode]).filter(c)[0];a&&i(e,a,b)}):this.find('a,area').filter(c).bind(b.event,function(e){i(e,this,b)}).end().end();function c(){var a=this;return!!a.href&&!!a.hash&&a.href.replace(a.hash,'')==g&&(!b.filter||$(a).is(b.filter))}};function i(e,a,b){var c=a.hash.slice(1),d=document.getElementById(c)||document.getElementsByName(c)[0],f;if(d){e&&e.preventDefault();f=$(b.target||$.scrollTo.window());if(b.lock&&f.is(':animated')||b.onBefore&&b.onBefore.call(a,e,d,f)===!1)return;if(b.stop)f.queue('fx',[]).stop();f.scrollTo(d,b).trigger('notify.serialScroll',[d]);if(b.hash)f.queue(function(){location=a.hash;$(this).dequeue()})}}})(jQuery);eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5($){$.V.x({t:5(f){2(!f.d)f.d=$.7.d++;2(!$.7.l)$.7.l=[];j 1.A(5(){2(1.4)j 1.4.n(f);8 1.4=[];1.4.n(f);c s=1;1.6=5(e){e=$.7.R(e||o.7);$.x(e,1.p||{});c a=0,m=P;2(e.u)a=e.u/M;2(e.H)a=-e.H/3;2(o.I)a=-e.u;r(c i=0;i<s.4.q;i++)2(s.4[i])2(s.4[i].U(s,e,a)===9){m=9;e.T();e.S()}j m};2($.k.h&&!1.b){1.b=5(e){1.p={F:e.F,E:e.E,D:e.D,C:e.C}};$(1).Q(\'B\',1.b)}2(1.g)2($.k.h)1.g(\'z\',1.6,9);8 1.g(\'t\',1.6,9);8 1.y=1.6;$.7.l.n($(1))})},v:5(f){j 1.A(5(){2(f&&1.4){r(c i=0;i<1.4.q;i++)2(1.4[i]&&1.4[i].d==f.d)O 1.4[i]}8{2($.k.h&&!1.b)$(1).N(\'B\',1.b);2(1.g)2($.k.h)1.w(\'z\',1.6,9);8 1.w(\'t\',1.6,9);8 1.y=G;1.4=1.6=1.b=1.p=G}})}});$(o).L(\'K\',5(){c a=$.7.l||[];r(c i=0;i<a.q;i++)a[i].v()})})(J);',58,58,'|this|if||_mwHandlers|function|_mwHandler|event|else|false||_mwFixCursorPos|var|guid|||addEventListener|mozilla||return|browser|_mwCache|returnValue|push|window|_mwCursorPos|length|for||mousewheel|wheelDelta|unmousewheel|removeEventListener|extend|onmousewheel|DOMMouseScroll|each|mousemove|clientY|clientX|pageY|pageX|null|detail|opera|jQuery|unload|one|120|unbind|delete|true|bind|fix|stopPropagation|preventDefault|call|fn'.split('|'),0,{}));(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);(function($){$.extend({tablesorter:new function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'.',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}var rows=table.tBodies[0].rows;if(table.tBodies[0].rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,cells[i]);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,node){var l=parsers.length;for(var i=1;i<l;i++){if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)){return parsers[i];}}return parsers[0];}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=table.tBodies[0].rows[i],cols=[];cache.row.push($(c));for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));}cols.push(i);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){if(!node)return"";var t="";if(config.textExtraction=="simple"){if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){t=node.childNodes[0].innerHTML;}else{t=node.innerHTML;}}else{if(typeof(config.textExtraction)=="function"){t=config.textExtraction(node);}else{t=$(node).text();}}return t;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){rows.push(r[n[i][checkCell]]);if(!table.config.appender){var o=r[n[i][checkCell]];var l=o.length;for(var j=0;j<l;j++){tableBody[0].appendChild(o[j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false,tableHeadersRows=[];for(var i=0;i<table.tHead.rows.length;i++){tableHeadersRows[i]=0;};$tableHeaders=$("thead th",table);$tableHeaders.each(function(index){this.count=0;this.column=index;this.order=formatSortingOrder(table.config.sortInitialOrder);if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(!this.sortDisabled){$(this).addClass(table.config.cssHeader);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){i=(v.toLowerCase()=="desc")?1:0;}else{i=(v==(0||1))?v:0;}return i;}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(getCachedSortType(table.config.parsers,c)=="text")?((order==0)?"sortText":"sortTextDesc"):((order==0)?"sortNumeric":"sortNumericDesc");var e="e"+i;dynamicExp+="var "+e+" = "+s+"(a["+c+"],b["+c+"]); ";dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function sortText(a,b){return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){$this.trigger("sortStart");var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){var $cell=$(this);var i=this.column;this.order=this.count++%2;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){var DECIMAL='\\'+config.decimal;var exp='/(^[+]?0('+DECIMAL+'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)'+DECIMAL+'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*'+DECIMAL+'0+$)/';return RegExp(exp).test($.trim(s));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[Â£$â‚¬?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}$("tr:visible",table.tBodies[0]).filter(':even').removeClass(table.config.widgetZebra.css[1]).addClass(table.config.widgetZebra.css[0]).end().filter(':odd').removeClass(table.config.widgetZebra.css[0]).addClass(table.config.widgetZebra.css[1]);if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.10",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);;(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);;(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===c.data(b.target,a.widgetName+".preventClickEvent")){c.removeData(b.target,a.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);;(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);;(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-
this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-
(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])e=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;e=this.originalPageX+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=this.containment?!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:!(e-this.offset.click.left<this.containment[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:g-this.offset.click.top-
this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.10"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var g=d.data(this,"sortable");if(g&&!g.options.disabled){c.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","iframeFix",{start:function(){var a=d(this).data("draggable").options;d(a.iframeFix===true?"iframe":a.iframeFix).each(function(){d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-
c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-
(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,g=b.offset.left,n=g+c.helperProportions.width,m=b.offset.top,o=m+c.helperProportions.height,h=c.snapElements.length-1;h>=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e<g&&g<k+e&&j-e<m&&m<l+e||i-e<g&&g<k+e&&j-e<o&&o<l+e||i-e<n&&n<k+e&&j-e<m&&m<l+e||i-e<n&&n<k+e&&j-e<o&&o<l+e){if(f.snapMode!="inner"){var p=Math.abs(j-o)<=e,q=Math.abs(l-m)<=e,r=Math.abs(i-n)<=e,s=Math.abs(k-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k}).left-c.margins.left}var t=p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(j-m)<=e;q=Math.abs(l-o)<=e;r=Math.abs(i-g)<=e;s=Math.abs(k-n)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[h].snapping&&(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=p||q||r||s||t}else{c.snapElements[h].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);;(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.10"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;switch(c){case"fit":return i<=e&&g<=k&&j<=f&&h<=l;case"intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case"pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case"touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!="none";if(c[f].visible){c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight};e=="mousedown"&&c[f]._activate.call(c[f],b)}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);;(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+
this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.10"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-
g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);;(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.10"})})(jQuery);;(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+
this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+
b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-
1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(a[0].style.width==""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-
this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem[0].parentNode&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.10"})})(jQuery);;(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+
a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(),e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.10",animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);;(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g=false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this;d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery);(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.attr("scrollTop"),c=this.element.height();if(b<0)this.element.attr("scrollTop",g+b);else b>=c&&this.element.attr("scrollTop",g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery);;(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,f=a([]);if(c)f=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return f};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);if(typeof this.options.disabled!=="boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||a(this).removeClass(f)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var e=b.element[0];h(e).not(e).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(e){if(c.disabled)return false;if(e.keyCode==a.ui.keyCode.SPACE||e.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){e.push(f?"ui-button-icons-only":"ui-button-icon-only");b.removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);;(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('<button type="button"></button>').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in
l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case"beforeclose":a="beforeClose";break;case"buttons":d._createButtons(b);break;case"closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case"dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case"disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case"draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case"position":d._position(b);break;case"resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case"title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.10",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);;(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var b=this,a=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");a.disabled&&this.element.addClass("ui-slider-disabled ui-disabled");this.range=d([]);if(a.range){if(a.range===true){this.range=d("<div></div>");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("<div></div>");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length<a.values.length;)d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e=false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h===b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b,g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c<e))c=e;if(c!==this.values(a)){e=this.values();e[a]=c;b=this._trigger("slide",b,{handle:this.handles[a],value:c,values:e});this.values(a?0:1);b!==false&&this.values(a,c,true)}}else if(c!==this.value()){b=this._trigger("slide",b,{handle:this.handles[a],value:c});b!==false&&this.value(c)}},_stop:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("stop",b,c)},_change:function(b,a){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("change",b,c)}},value:function(b){if(arguments.length){this.options.value=this._trimAlignValue(b);this._refreshValue();this._change(null,0)}return this._value()},values:function(b,a){var c,e,f;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f<c.length;f+=1){c[f]=this._trimAlignValue(e[f]);this._change(null,f)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(b):this.value();else return this._values()},_setOption:function(b,a){var c,e=0;if(d.isArray(this.options.values))e=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":if(a){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case"value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case"values":this._animateOff=true;this._refreshValue();for(c=0;c<e;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var a,c;if(arguments.length){a=this.options.values[b];return a=this._trimAlignValue(a)}else{a=this.options.values.slice();for(c=0;c<a.length;c+=1)a[c]=this._trimAlignValue(a[c]);return a}},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.10"})})(jQuery);;(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.10"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);;(function(d,G){function K(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.10"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){var v=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&v?4:p=="o"?3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,v,H){p=o(p)?H:v;for(v=0;v<p.length;v++)if(b.substr(s,p[v].length).toLowerCase()==p[v].toLowerCase()){s+=p[v].length;return v+1}throw"Unknown name at position "+
s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(k)if(a.charAt(z)=="'"&&!o("'"))k=false;else r();else switch(a.charAt(z)){case"d":l=m("d");break;case"D":n("D",f,h);break;case"o":u=m("o");break;case"m":j=m("m");break;case"M":j=n("M",i,g);break;case"y":c=m("y");break;case"@":var w=new Date(m("@"));c=w.getFullYear();j=w.getMonth()+1;l=w.getDate();break;case"!":w=new Date((m("!")-this._ticksTo1970)/1E4);c=w.getFullYear();j=w.getMonth()+
1;l=w.getDate();break;case"'":if(o("'"))r();else k=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case"d":l+=g("d",b.getDate(),2);break;case"D":l+=j("D",b.getDay(),e,f);break;case"o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case"m":l+=g("m",b.getMonth()+1,2);break;case"M":l+=j("M",b.getMonth(),h,c);break;case"y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":l+=b.getTime();break;case"!":l+=b.getTime()*1E4+this._ticksTo1970;break;case"'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case"d":case"D":g+=parseInt(k[1],10);break;case"w":case"W":g+=parseInt(k[1],10)*7;break;case"m":case"M":l+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case"y":case"Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+
(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+
(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var M="",D=0;D<i[1];D++){var N=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-
1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&q<k||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==N.getTime()&&g==a.selectedMonth&&a._keyEvent||L.getTime()==q.getTime()&&L.getTime()==N.getTime()?" "+this._dayOverClass:"")+(J?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!v?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!B||v)&&F[2]?' title="'+F[2]+'"':"")+(J?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!v?"&#xa0;":J?'<span class="ui-state-default">'+q.getDate()+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==u.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?"&#xa0;":""));a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+
a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";if(d.browser.mozilla)k+='<select class="ui-datepicker-year"><option value="'+c+'" selected="selected">'+c+"</option></select>";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.10";window["DP_jQuery_"+y]=d})(jQuery);;(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.10"})})(jQuery);;jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0];h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.10",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case"top":b=0;break;case"middle":b=0.5;break;case"bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case"left":c=0;break;case"center":c=0.5;break;case"right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);;(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);;(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);;(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);;(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e=="show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);;(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);;(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);;(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);;(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);;(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);;(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);;(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);;(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);;(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);;var dfxjQuery=$.noConflict(true);if(!window.dfx){window.dfx=function(){};}
dfx.get=function(url,data,callBack)
{url=dfx.cleanAjaxRequestUrl(url);dfxjQuery.get(url,data,callBack);};dfx.post=function(url,data,successCallback,errorCallback,timeout,extraParams)
{url=dfx.cleanAjaxRequestUrl(url);timeout=timeout||20;var params={url:url,type:'POST',data:data,success:successCallback,error:errorCallback,timeout:(timeout*1000)};if(extraParams){dfx.foreach(extraParams,function(key){params[key]=extraParams[key];return true;});}
dfxjQuery.ajax(params);};dfx.getJSON=function(url,data,callBack)
{url=dfx.cleanAjaxRequestUrl(url);dfxjQuery.getJSON(url,data,callBack);};dfx.cleanAjaxRequestUrl=function(url)
{if(typeof url!=='string'){var url=location.href;}
url=dfx.noAnchorPartUrl(url);return url;};if(!window.dfx){window.dfx=function(){};}
Array.prototype.inArray=function(value)
{if(Array.prototype.indexOf){if(this.indexOf(value)>=0){return true;}else{return false;}}
var len=this.length;for(var i=0;i<len;i++){if(this[i]===value){return true;}}
return false;};Array.prototype.find=function(item)
{var length=this.length;for(var i=0;i<length;i++){if(this[i]===item){return i;}}
return-1;};Array.prototype.mergeCollection=function(collection)
{if(!collection){return;}
var len=collection.length;for(var i=0;i<len;i++){this.push(collection[i]);}};Array.prototype.unique=function()
{var a=[];var l=this.length;for(var i=0;i<l;i++){if(a.find(this[i])<0){a.push(this[i]);}}
return a;};function shiftArrayElements(array,index)
{var len=array.length;for(var i=parseInt(index);i<(len-1);i++){var n=i+1;array[i]=array[n];}
array.pop();return array;};dfx.foreach=function(value,cb)
{if(value instanceof Array){var len=value.length;for(var i=0;i<len;i++){var res=cb.call(this,i);if(res===false){break;}}}else{for(var id in value){if(value.hasOwnProperty(id)===true){var res=cb.call(this,id);if(res===false){break;}}}}};dfx.isEmpty=function(value)
{if(value){if(value instanceof Array){if(value.length>0){return false;}}else{for(var id in value){if(value.hasOwnProperty(id)===true){return false;}}}}
return true;};dfx.isArray=function(v)
{return dfxjQuery.isArray(v);};dfx.inArray=function(needle,haystack,typeSensitive)
{if(dfx.isset(typeSensitive)===false){typeSensitive=true;}
var hln=haystack.length;for(var i=0;i<hln;i++){if((typeSensitive===true&&needle===haystack[i])||(typeSensitive===false&&needle==haystack[i])){return true;}}
return false;};dfx.arrayDiff=function(array1,array2,firstOnly)
{var al=array1.length;var res=[];for(var i=0;i<al;i++){if(dfx.inArray(array1[i],array2)===false){res.push(array1[i]);}}
if(firstOnly!==true){al=array2.length;for(var i=0;i<al;i++){if(dfx.inArray(array2[i],array1)===false){res.push(array2[i]);}}}
return res;};dfx.arrayImplode=function(glue,pieces)
{var ret='';var finalTrimReq=false;dfx.foreach(pieces,function(key){ret+=pieces[key]+glue;finalTrimReq=true;});if(finalTrimReq){var trimLn=(ret.length-glue.length);ret=ret.substr(0,trimLn);}
return ret;};dfx.arrayKeys=function(array)
{var ret=new Array();var i=0;dfx.foreach(array,function(key){ret[i]=key;i++;});return ret;};dfx.arrayMerge=function(array1,array2)
{if(array1 instanceof Array){var maintainIndex=false;}else{var maintainIndex=true;}
dfx.foreach(array2,function(idx){var value=array2[idx];if(maintainIndex===true){array1[idx]=value;}else{array1.push(value);}});return array1;};dfx.removeArrayIndex=function(array,index)
{if(!array||dfx.isset(array[index])===false){return null;}
return array.splice(index,1);};dfx.arraySearch=function(needle,haystack)
{var foundAtIndex=false;if(needle instanceof String){needle=needle.toString();}
if((typeof needle==='string'&&typeof needle==='boolean')||(haystack instanceof Array===false&&haystack instanceof Object===false)){return foundAtIndex;}
dfx.foreach(haystack,function(i){var value=haystack[i];if(value===needle){foundAtIndex=i;return false;}});return foundAtIndex;};dfx.arrayFill=function(startIndex,num,value,nonObjectArray)
{if(nonObjectArray===true&&startIndex===0){var retAr=[];}else{var retAr={};}
for(var i=startIndex;i<num;i++){retAr[i]=value;}
return retAr;};dfx.arrayIntersect=function(array1,array2)
{var tmp={};var unique=[];var count=array2.length;for(var i=0;i<count;i++){tmp[array2[i]]=array2[i];}
count=array1.length;for(var i=count;i>=0;i--){if(dfx.isset(tmp[array1[i]])===false){dfx.unset(array1,i);}}
return array1;};dfx.count=function(anyArray)
{if(anyArray instanceof Array){return anyArray.length;}else{var counter=0;dfx.foreach(anyArray,function(key){counter++;});return counter;}};dfx.unset=function(anyArray,index)
{if(anyArray instanceof Array){anyArray.splice(index,1);}else{delete anyArray[index];}};if(!window.dfx){window.dfx=function(){};}
dfx.setStyle=function(element,property,value)
{if(element){dfxjQuery(element).css(property,value);}};dfx.setStyles=function(elements,property,value)
{dfxjQuery(elements).css(property,value);};dfx.getStyle=function(element,property)
{return dfxjQuery(element).css(property);};dfx.hasClass=function(element,className)
{return dfxjQuery(element).hasClass(className);};dfx.addClass=function(element,classNames)
{dfxjQuery(element).addClass(classNames);};dfx.removeClass=function(element,classNames)
{dfxjQuery(element).removeClass(classNames);};dfx.swapClass=function(element,oldClassName,newClassName)
{if(dfx.hasClass(element,oldClassName)===true){dfx.removeClass(element,oldClassName);}
dfx.addClass(element,newClassName);};dfx.camelCase=function(property)
{var hyphenTest=/-([a-z])/;while(hyphenTest.test(property)==true){property=property.replace(hyphenTest,RegExp.$1.toUpperCase());}
return property;};dfx.getHexColourCode=function(colour)
{if(colour.substring(0,1)==='#'){if(colour.length===4){colour=colour.replace(/#(\d|[a-fA-F])(\d|[a-fA-F])(\d|[a-fA-F])/,'#$1$1$2$2$3$3');}
return colour;}
if(colour.substring(0,3)==='rgb'){var rgb=colour.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);var r=parseInt(rgb[1]).toString(16);var g=parseInt(rgb[2]).toString(16);var b=parseInt(rgb[3]).toString(16);var hexColour='#'+r+g+b;return hexColour;}
return dfx.getColourNameValue(colour);};dfx.getRGBColourCode=function(colour)
{if(colour.substring(0,1)==='#'){var components=dfx.getColourComponents(colour);var colourString='rgb('+components.r+','+components.g+','+components.b+')';return colourString;}
if(colour.substring(0,3)==='rgb'){return colour;}
return dfx.getRGBColourCode(dfx.getColourNameValue(colour));};dfx.getColourComponents=function(colour)
{var components={};if(colour.substring(0,1)==='#'){colour=dfx.getHexColourCode(colour);var rgb=colour.match(/#([a-fA-F\d]{2})([a-fA-F\d]{2})([a-fA-F\d]{2})/);components.r=parseInt(rgb[1],16);components.g=parseInt(rgb[2],16);components.b=parseInt(rgb[3],16);}else if(colour.substring(0,3)==='rgb'){var rgb=colour.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);components.r=rgb[1];components.g=rgb[2];components.b=rgb[3];}else{components=dfx.getColourComponents(dfx.getColourNameValue(colour));}
return components;};dfx.toggle=function(element)
{dfxjQuery(element).toggle();};dfx.setOpacity=function(element,value)
{dfx.setStyle(element,'opacity',value);};dfx.getOpacity=function(element)
{return dfx.getStyle(element,'opacity');};dfx.colourNameString='/aliceblue#f0f8ff/antiquewhite#faebd7/aqua#00ffff/aquamarine#7fffd4/azure#f0ffff/beige#f5f5dc/bisque#ffe4c4/black#000000/blanchedalmond#ffebcd/blue#0000ff/blueviolet#8a2be2/brown#a52a2a/burlywood#deb887/cadetblue#5f9ea0/chartreuse#7fff00/chocolate#d2691e/coral#ff7f50/cornflowerblue#6495ed/cornsilk#fff8dc/crimson#dc143c/cyan#00ffff/darkblue#00008b/darkcyan#008b8b/darkgoldenrod#b8860b/darkgray#a9a9a9/darkgrey#a9a9a9/darkgreen#006400/darkkhaki#bdb76b/darkmagenta#8b008b/darkolivegreen#556b2f/darkorange#ff8c00/darkorchid#9932cc/darkred#8b0000/darksalmon#e9967a/darkseagreen#8fbc8f/darkslateblue#483d8b/darkslategray#2f4f4f/darkslategrey#2f4f4f/darkturquoise#00ced1/darkviolet#9400d3/deeppink#ff1493/deepskyblue#00bfff/dimgray#696969/dimgrey#696969/dodgerblue#1e90ff/firebrick#b22222/floralwhite#fffaf0/forestgreen#228b22/fuchsia#ff00ff/gainsboro#dcdcdc/ghostwhite#f8f8ff/gold#ffd700/goldenrod#daa520/gray#808080/grey#808080/green#008000/greenyellow#adff2f/honeydew#f0fff0/hotpink#ff69b4/indianred #cd5c5c/indigo #4b0082/ivory#fffff0/khaki#f0e68c/lavender#e6e6fa/lavenderblush#fff0f5/lawngreen#7cfc00/lemonchiffon#fffacd/lightblue#add8e6/lightcoral#f08080/lightcyan#e0ffff/lightgoldenrodyellow#fafad2/lightgray#d3d3d3/lightgrey#d3d3d3/lightgreen#90ee90/lightpink#ffb6c1/lightsalmon#ffa07a/lightseagreen#20b2aa/lightskyblue#87cefa/lightslategray#778899/lightslategrey#778899/lightsteelblue#b0c4de/lightyellow#ffffe0/lime#00ff00/limegreen#32cd32/linen#faf0e6/magenta#ff00ff/maroon#800000/mediumaquamarine#66cdaa/mediumblue#0000cd/mediumorchid#ba55d3/mediumpurple#9370d8/mediumseagreen#3cb371/mediumslateblue#7b68ee/mediumspringgreen#00fa9a/mediumturquoise#48d1cc/mediumvioletred#c71585/midnightblue#191970/mintcream#f5fffa/mistyrose#ffe4e1/moccasin#ffe4b5/navajowhite#ffdead/navy#000080/oldlace#fdf5e6/olive#808000/olivedrab#6b8e23/orange#ffa500/orangered#ff4500/orchid#da70d6/palegoldenrod#eee8aa/palegreen#98fb98/paleturquoise#afeeee/palevioletred#d87093/papayawhip#ffefd5/peachpuff#ffdab9/peru#cd853f/pink#ffc0cb/plum#dda0dd/powderblue#b0e0e6/purple#800080/red#ff0000/rosybrown#bc8f8f/royalblue#4169e1/saddlebrown#8b4513/salmon#fa8072/sandybrown#f4a460/seagreen#2e8b57/seashell#fff5ee/sienna#a0522d/silver#c0c0c0/skyblue#87ceeb/slateblue#6a5acd/slategray#708090/slategrey#708090/snow#fffafa/springgreen#00ff7f/steelblue#4682b4/tan#d2b48c/teal#008080/thistle#d8bfd8/tomato#ff6347/turquoise#40e0d0/violet#ee82ee/wheat#f5deb3/white#ffffff/whitesmoke#f5f5f5/yellow#ffff00/yellowgreen#9acd32/';dfx.getColourNameValue=function(colourName)
{colourName=colourName.toLowerCase();var reg=new RegExp('\/'+colourName+'(#[a-f0-9]{6})\/');var matches=reg.exec(dfx.colourNameString);if(matches){return matches[1];}
return'#000000';};dfx.showElement=function(element,visibilityOnly)
{dfx.setStyle(element,'visibility','visible');if(dfx.isset(visibilityOnly)===false||visibilityOnly===false){dfx.setStyle(element,'display','block');}};dfx.hideElement=function(element,visibilityOnly)
{dfx.setStyle(element,'visibility','hidden');if(dfx.isset(visibilityOnly)===false||visibilityOnly===false){dfx.setStyle(element,'display','none');}};dfx.isShowing=function(element)
{var display=dfx.getStyle(element,'display');if(display==='none'||!display){return false;}
var visibility=dfx.getStyle(element,'visibility');if(visibility==='hidden'||!visibility){return false;}
return true;};dfx.toggleClass=function(elems,className)
{dfxjQuery(elems).toggleClass(className);};dfx.getComputedStyle=function(el,styleName)
{if(styleName){styleName=dfx.camelCase(styleName);}
if(document.defaultView&&document.defaultView.getComputedStyle){var styles=document.defaultView.getComputedStyle(el,null);if(styleName){return styles[styleName];}
return styles;}else if(el.currentStyle){if(styleName){return el.currentStyle[styleName];}
return el.currentStyle;}};if(!window.dfx){window.dfx=function(){};}
dfx.date=function(format,timestamp,tsIso8601)
{if(timestamp===null&&tsIso8601){timestamp=dfx.tsIso8601ToTimestamp(tsIso8601);if(!timestamp){return;}}
var date=new Date(timestamp);var formats=format.split('');var fc=formats.length;var dateStr='';for(var i=0;i<fc;i++){var r='';var f=formats[i];switch(f){case'D':case'l':var names=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];r=names[date.getDay()];if(f==='D'){r=r.substring(0,3);}
break;case'F':case'M':months=['January','February','March','April','May','June','July','August','September','October','November','December'];r=months[date.getMonth()];if(f==='M'){r=r.substring(0,3);}
break;case'd':r=date.getDate();break;case'S':r=dfx.getOrdinalSuffix(date.getDate());break;case'Y':case'y':r=date.getFullYear();if(f==='y'){r=r.toString().substring(2);}
break;case'H':r=date.getHours();break;case'h':r=date.getHours();if(r===0){r=12;}else if(r>12){r-=12;}
break;case'i':r=dfx.addNumberPadding(date.getMinutes());break;case'a':r='am';if(date.getHours()>=12){r='pm';}
break;default:r=f;break;}
dateStr+=r;}
return dateStr;};dfx.getOrdinalSuffix=function(number)
{var suffix='';var tmp=(number%100);if(tmp>=4&&tmp<=20){suffix='th';}else{switch(number%10){case 1:suffix='st';break;case 2:suffix='nd';break;case 3:suffix='rd';break;default:suffix='th';break;}}
return suffix;};dfx.addNumberPadding=function(number)
{if(number<10){number='0'+number;}
return number;};dfx.tsIso8601ToTimestamp=function(tsIso8601)
{var regexp=/(\d\d\d\d)(?:-?(\d\d)(?:-?(\d\d)(?:[T ](\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(?:Z|(?:([-+])(\d\d)(?::?(\d\d))?)?)?)?)?)?/;var d=tsIso8601.match(new RegExp(regexp));if(d){var date=new Date();date.setDate(d[3]);date.setFullYear(d[1]);date.setMonth(d[2]-1);date.setHours(d[4]);date.setMinutes(d[5]);date.setSeconds(d[6]);var offset=(d[9]*60);if(d[8]==='+'){offset*=-1;}
offset-=date.getTimezoneOffset();var timestamp=(date.getTime()+(offset*60*1000));return timestamp;}
return null;};if(!window.dfx){window.dfx=function(){};}
function dom()
{this.scrollBarWidth=null;}
dfx.scriptsIncluded=[];dfx.cssIncluded=[];dfx.ELEMENT_NODE=1;dfx.ATTRIBUTE_NODE=2;dfx.TEXT_NODE=3;dfx.CDATA_SECTION_NODE=4;dfx.ENTITY_REFERENCE_NODE=5;dfx.ENTITY_NODE=6;dfx.PROCESSING_INSTRUCTION_NODE=7;dfx.COMMENT_NODE=8;dfx.DOCUMENT_NODE=9;dfx.DOCUMENT_TYPE_NODE=10;dfx.DOCUMENT_FRAGMENT_NODE=11;dfx.NOTATION_NODE=12;dfx.getClass=function(className,startElement,tagName,onlyChildren)
{var ret;if(!startElement){startElement=document.body;}
className='.'+className.split(' ').join('.');if(tagName){className=tagName+className;}
if(onlyChildren===true){ret=dfxjQuery.makeArray(dfxjQuery(startElement).children(className));}else{ret=dfxjQuery.makeArray(dfxjQuery(startElement).find(className));}
return ret;};dfx.getId=dom.getId=function(id,startElement)
{if(!startElement){startElement=document;}
element=startElement.getElementById(id);return element;};dfx.getTag=function(tagName,startElement,onlyChildren)
{var ret;if(!startElement){startElement=document;}
if(onlyChildren===true){ret=dfxjQuery.makeArray(dfxjQuery(startElement).children(tagName));}else{ret=dfxjQuery.makeArray(dfxjQuery(startElement).find(tagName));}
return ret;};dfx.getElements=function(searchString,startElement)
{if(!startElement){startElement=document;}
var searchElems=searchString.split(' ');var matches=[];var searchResults=[];var schLen=searchElems.length;for(var i=0;i<schLen;i++){searchResults=[];if(searchElems[i].match(/.+\./)){var classPieces=searchElems[i].split('.');if(classPieces.length===2){searchResults=dfx.getClass(classPieces[1],startElement,classPieces[0]);}else{searchResults=dfx.getClass(classPieces[0],startElement);}}else if(searchElems[i].match(/^#/)){var idString=searchElems[i].substring(1);searchResults.push(dfx.getId(idString));}else{searchResults=dfx.getTag(searchElems[i],startElement);}
matches.mergeCollection(searchResults);}
return matches;};dfx.getElementCoords=function(element,relative)
{var offset=dfxjQuery(element).offset();return{x:offset.left,y:offset.top};};dfx.setCoords=function(element,x,y)
{dfx.setStyle(element,'top',y+'px');dfx.setStyle(element,'left',x+'px');};dfx.getScrollCoords=function()
{var scrollX=0;var scrollY=0;if(window.pageYOffset){scrollX=window.pageXOffset;scrollY=window.pageYOffset;}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){scrollX=document.body.scrollLeft;scrollY=document.body.scrollTop;}else{scrollX=document.documentElement.scrollLeft;scrollY=document.documentElement.scrollTop;}
var coords={x:scrollX,y:scrollY};return coords;};dfx.getElementWidth=function(element,inner)
{if(inner===true){return element.clientWidth;}else{return element.offsetWidth;}};dfx.getElementHeight=function(element,inner)
{if(inner===true){return element.clientHeight;}else{return element.offsetHeight;}};dfx.getElementDimensions=function(element,inner)
{if(inner===undefined){inner=false;}
var result={'width':dfx.getElementWidth(element,inner),'height':dfx.getElementHeight(element,inner)};return result;};dfx.getBoundingRectangle=function(element)
{var coords=dfx.getElementCoords(element);var dimensions=dfx.getElementDimensions(element);var result={'x1':coords.x,'y1':coords.y,'x2':coords.x+dimensions.width,'y2':coords.y+dimensions.height};return result;};dfx.getWindowDimensions=function()
{var windowWidth=0;var windowHeight=0;if(window.innerWidth){windowWidth=window.innerWidth;windowHeight=window.innerHeight;var scrollWidth=dfx.getScrollbarWidth();if(document.documentElement.scrollHeight>windowHeight){if(typeof scrollWidth==='number'){windowWidth-=scrollWidth;}}
if(document.body.scrollWidth>windowWidth){if(typeof scrollWidth==='number'){windowHeight-=scrollWidth;}}}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
var result={'width':windowWidth,'height':windowHeight};return result;};dfx.getScrollbarWidth=function()
{if(dom.scrollBarWidth){return dom.scrollBarWidth;}
var wrapDiv=null;var childDiv=null;var widthNoScrollBar=0;var widthWithScrollBar=0;wrapDiv=document.createElement('div');wrapDiv.style.position='absolute';wrapDiv.style.top='-1000px';wrapDiv.style.left='-1000px';wrapDiv.style.width='100px';wrapDiv.style.height='50px';wrapDiv.style.overflow='hidden';childDiv=document.createElement('div');childDiv.style.width='100%';childDiv.style.height='200px';wrapDiv.appendChild(childDiv);document.body.appendChild(wrapDiv);widthNoScrollBar=childDiv.offsetWidth;wrapDiv.style.overflow='auto';widthWithScrollBar=childDiv.offsetWidth;document.body.removeChild(document.body.lastChild);var scrollBarWidth=(widthNoScrollBar-widthWithScrollBar);dom.scrollBarWidth=scrollBarWidth;return scrollBarWidth;};dfx.empty=function(element)
{if(element){return dfxjQuery(element).empty();}};dfx.remove=function(element)
{if(element){return dfxjQuery(element).remove();}};dfx.prepend=function(parent,elem)
{dfxjQuery(parent).prepend(elem);};dfx.append=function(parent,elem)
{dfxjQuery(parent).append(elem);};dfx.insertBefore=function(before,elem)
{dfxjQuery(before).before(elem);};dfx.insertAfter=function(after,elem)
{dfxjQuery(after).after(elem);};dfx.getHtml=function(element)
{return dfxjQuery(element).html();};dfx.setHtml=function(element,content)
{if(element){dfxjQuery(element).html(content);}};dfx.appendHtml=function(element,content)
{dfxjQuery(element).html(dfx.getHtml(element)+content);};dfx.prependHtml=function(element,content)
{dfxjQuery(element).html(content+dfx.getHtml());};dfx.getParents=function(elements,filter,stopEl)
{var res=dfxjQuery(elements).parents(filter);var ln=res.length;var ar=[];for(var i=0;i<ln;i++){if(res[i]===stopEl){break;}
ar.push(res[i]);}
return ar;};dfx.getSiblings=function(element,dir,elementNodesOnly,stopElem)
{if(elementNodesOnly===true){if(dir==='prev'){return dfxjQuery(element).prevAll();}else{return dfxjQuery(element).nextAll();}}else{var elems=[];if(dir==='prev'){while(element.previousSibling){element=element.previousSibling;if(element===stopElem){break;}
elems.push(element);}}else{while(element.nextSibling){element=element.nextSibling;if(element===stopElem){break;}
elems.push(element);}}
return elems;}};dfx.normalize=function(element)
{if(dfx.isBlockElement(element)===true){return false;}
while(element.nextSibling){var next=element.nextSibling;if(element.nodeType===dfx.TEXT_NODE){if(next.nodeType===dfx.TEXT_NODE){dfx.remove(next);element.nodeValue+=next.nodeValue;}else{break;}}else if(element.tagName===next.tagName){dfx.remove(next);var childLen=next.childNodes.length;while(childLen>0){element.appendChild(next.firstChild);childLen=next.childNodes.length;}}else{break;}}
while(element.previousSibling){var prev=element.previousSibling;if(element.nodeType===dfx.TEXT_NODE){if(prev.nodeType===dfx.TEXT_NODE){dfx.remove(element);prev.nodeValue+=element.nodeValue;element=prev;}else{break;}}else if(element.tagName===prev.tagName){dfx.remove(element);var childLen=element.childNodes.length;while(childLen>0){prev.appendChild(element.firstChild);childLen=element.childNodes.length;}
element=prev;}else{break;}}};dfx.normalizeChildren=function(parent)
{if(parent.nodeType!==dfx.ELEMENT_NODE){return false;}
var nodeLen=parent.childNodes.length;for(var i=0;i<nodeLen;i++){var child=parent.childNodes[i];if(child){if(child.nodeType!==dfx.TEXT_NODE){dfx.normalizeChildren(child);}
dfx.normalize(child);}}};dfx.includeScript=function(url,callback)
{if(url.indexOf('http://')===-1&&url.indexOf('https://')===-1){return;}
dfxjQuery.getScript(url,callback);};dfx.includeScripts=function(urls,callback)
{if(!urls||urls.length===0){callback.call(this);}else{var url=urls.shift();dfx.includeScript(url,function(){dfx.includeScripts(urls,callback);});}};dfx._includeCss=function(url)
{var head=document.getElementsByTagName('head').item(0);var links=head.getElementsByTagName('link');var lnkLen=links.length;for(var i=0;i<lnkLen;i++){if(links[i].href===url){return;}}
var link=document.createElement('link');dfxjQuery(link).attr({href:url,media:'screen',type:'text/css',rel:'stylesheet'}).appendTo('head');};dfx.includeCss=function(url,callback)
{var self=this;if(Widget.CSS_MINIFIED===true){if(callback){callback.call(self);}}else{if(dfx.cssIncluded[url]!==true){var loadCss=function(cb){var loadData={css:true,action:'loadCss',url:url};dfx.post(window.location.href,loadData,function(cssContent){dfx.addCssToStyle(cssContent);dfx.cssIncluded[url]=true;if(cb){cb.call(self);}});};loadCss(callback);}else{if(callback){callback.call(self);}}}};dfx.addCssToStyle=function(cssContent,id)
{var styleid='backendStyle';if(id){styleid=id;}
var head=document.getElementsByTagName("head").item(0);var styleTag=document.getElementById(styleid);if(styleTag){if(styleTag.styleSheet){styleTag.styleSheet.cssText=styleTag.styleSheet.cssText+cssContent;}else{dfx.setNodeTextContent(styleTag,dfx.getNodeTextContent(styleTag)+cssContent);}}else{styleTag=document.createElement('style');styleTag.setAttribute('type','text/css');styleTag.setAttribute('id',styleid);if(styleTag.styleSheet){styleTag.styleSheet.cssText=cssContent;}else{dfx.setNodeTextContent(styleTag,cssContent);}
head.appendChild(styleTag);}};dfx.getNodeTextContent=function(node)
{return dfxjQuery(node).text();};dfx.setNodeTextContent=function(node,txt)
{return dfxjQuery(node).text(txt);};dfx.getIframeDocument=function(iframe)
{var doc=null;if(iframe.contentDocument){doc=iframe.contentDocument;}else if(iframe.contentWindow){doc=iframe.contentWindow.document;}else if(iframe.document){doc=iframe.document;}
return doc;};dfx.isBlockElement=function(element)
{if(!element){return false;}
switch(element.nodeName.toLowerCase()){case'p':case'div':case'pre':case'ul':case'ol':case'li':case'table':case'tbody':case'td':case'th':case'fieldset':case'form':case'blockquote':case'dl':case'dir':case'center':case'address':case'h1':case'h2':case'h3':case'h4':case'h5':case'h6':case'img':return true;break;default:return false;break;}
return false;};dfx.isStubElement=function(element)
{if(element){switch(element.nodeName.toLowerCase()){case'img':case'br':case'hr':case'iframe':case'param':case'link':case'meta':case'input':case'frame':case'col':case'base':case'area':return true;break;default:return false;break;}}
return false;};dfx.isChildOf=function(el,parent,stopElem)
{try{if(parent instanceof Array){var c=parent.length;while(el&&el!==stopElem&&el.parentNode){for(var i=0;i<c;i++){if(el.parentNode===parent[i]){return true;}}
el=el.parentNode;}}else{while(el&&el!==stopElem&&el.parentNode){if(el.parentNode===parent){return true;}
el=el.parentNode;}}}catch(e){}
return false;};dfx.getFormData=function(element)
{var data={},parent=null;if(element){parent=element;}else{parent=document;}
dfxjQuery(':input',parent).each(function(){var type=this.type;var tag=this.tagName.toLowerCase();if(type==='text'||type==='password'||tag==='textarea'){data[this.name]=this.value;}
if(type==='checkbox'||type==='radio'){data[this.name]=this.checked;}
if(tag==='select'){data[this.name]=this.selectedIndex;}});return data;};dfx.clearFormData=function(element)
{var parent=null;if(element){parent=element;}else{parent=document;}
dfxjQuery(':input',parent).each(function(){var type=this.type;var tag=this.tagName.toLowerCase();if(type==='text'||type==='password'||tag==='textarea'){this.value="";}
if(type==='checkbox'||type==='radio'){this.checked=false;}
if(tag==='select'){this.selectedIndex=-1;}});};dfx.cloneNode=function(elems,cloneEvents)
{if(cloneEvents===undefined){cloneEvents=true;}
return dfxjQuery(elems).clone(cloneEvents);};dfx.attr=function(elements,key,val)
{return dfxjQuery(elements).attr(key,val);};dfx.removeAttr=function(elements,name)
{dfxjQuery(elements).removeAttr(name);};dfx.getElementsBetween=function(fromElem,toElem)
{var elements=[];if(!fromElem||!toElem){return elements;}
if(fromElem===toElem){return elements;}
if(dfx.isChildOf(toElem,fromElem)===true){var fElemLen=fromElem.childNodes.length;for(var i=0;i<fElemLen;i++){if(fromElem.childNodes[i]===toElem){break;}else if(dfx.isChildOf(toElem,fromElem.childNodes[i])===true){return dfx.arrayMerge(elements,dfx.getElementsBetween(fromElem.childNodes[i],toElem));}else{elements.push(fromElem.childNodes[i]);}}
return elements;}
var startEl=fromElem.nextSibling;while(startEl){if(dfx.isChildOf(toElem,startEl)===true){elements=dfx.arrayMerge(elements,dfx.getElementsBetween(startEl,toElem));return elements;}else if(startEl===toElem){return elements;}else{elements.push(startEl);startEl=startEl.nextSibling;}}
var fromParents=dfx.getParents(fromElem);var toParents=dfx.getParents(toElem);var parentElems=dfx.arrayDiff(fromParents,toParents,true);var pElemLen=parentElems.length;for(var j=0;j<(pElemLen-1);j++){elements=dfx.arrayMerge(elements,dfx.getSiblings(parentElems[j],'next'));}
var lastParent=parentElems[(parentElems.length-1)];elements=dfx.arrayMerge(elements,dfx.getElementsBetween(lastParent,toElem));return elements;};dfx.getCommonAncestor=function(a,b)
{var node=a;while(node){if(dfx.isChildOf(b,node)===true){return node;}
node=node.parentNode;}
return null;};dfx.getNextNode=function(node)
{if(node.nextSibling){return node.nextSibling;}else if(node.parentNode){return dfx.getFirstChild(node.parentNode);}
return null;};dfx.getPrevNode=function(node)
{if(node.previousSibling){return node.previousSibling;}else if(node.parentNode){return dfx.getLastChild(node.parentNode);}
return null;};dfx.getFirstChild=function(node)
{if(node.firstChild){if(node.firstChild.nodeType===dfx.ELEMENT_NODE){return dfx.getFirstChild(node.firstChild);}else{return node.firstChild;}}
return node;};dfx.getLastChild=function(node)
{if(node.lastChild){if(node.lastChild.nodeType===dfx.ELEMENT_NODE){return dfx.getLastChild(node.lastChild);}else{return node.lastChild;}}
return node;};dfx.removeEmptyNodes=function(parent,callback)
{var elems=dfxjQuery(parent).find(':empty');var i=elems.length;while(i>0){i--;if(dfx.isStubElement(elems[i])===false){if(!callback||callback.call(this,elems[i])!==false){dfx.remove(elems[i]);}}}};dfx.find=function(parent,exp)
{return dfxjQuery(parent).find(exp);};dfx.getTextNodes=function(parent,removeEmpty)
{var nodes=[];if(parent&&parent.childNodes){var ln=parent.childNodes.length;for(var i=0;i<ln;i++){var child=parent.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){if(removeEmpty===true&&/^\s*$/.test(child.data)===true){dfx.remove(child);}else{nodes.push(child);}}else if(child.childNodes&&child.childNodes.length>0){nodes=nodes.concat(dfx.getTextNodes(child));}}}
return nodes;};dfx.isTag=function(node,tag)
{if(node&&node.tagName&&node.tagName.toLowerCase()===tag.toLowerCase()){return true;}
return false;};dfx.getTagName=function(node)
{if(node&&node.tagName){return node.tagName.toLowerCase();}
return null;};dfx.getFirstBlockParent=function(elem,stopEl)
{while(elem.parentNode){elem=elem.parentNode;if(stopEl&&elem===stopEl){return null;}
if(dfx.isBlockElement(elem)===true){return elem;}}
return null;};dfx.walk=function(elem,callback,lvl)
{if(!elem){return;}
if(!lvl){lvl=0;}
var retVal=callback.call(this,elem,lvl);if(retVal===false){return;}
if(elem.childNodes&&elem.childNodes.length>0){dfx.walk(elem.firstChild,callback,(lvl+1));}else if(elem.nextSibling){dfx.walk(elem.nextSibling,callback,lvl);}else if(elem.parentNode&&elem.parentNode.nextSibling){dfx.walk(elem.parentNode.nextSibling,callback,(lvl-1));}};dfx.revWalk=function(elem,callback)
{if(!elem){return;}
var retVal=callback.call(this,elem);if(retVal===false){return;}
if(elem.childNodes&&elem.childNodes.length>0){dfx.walk(elem.lastChild,callback);}else if(elem.previousSibling){dfx.walk(elem.previousSibling,callback);}else if(elem.parentNode&&elem.parentNode.previousSibling){dfx.walk(elem.parentNode.previousSibling,callback);}};dfx.setUnselectable=function(elem,selectable)
{if(elem){if(selectable===true){elem.unselectable='on';dfx.setStyle(elem,'-moz-user-select','none');dfx.setStyle(elem,'cursor','default');}else{elem.unselectable='off';dfx.setStyle(elem,'-moz-user-select','normal');dfx.setStyle(elem,'cursor','auto');}}};dfx.noDocWriteAllowed=function(){};if(!window.dfx){window.dfx=function(){};}
dfx.move=function(elements,left,top,duration,callback,easing)
{var opts={};if(left!==null){opts.left=left;}
if(top!==null){opts.top=top;}
dfxjQuery(elements).animate(opts,duration,easing,callback);};dfx.animate=function(elements,params,duration,callback,easing)
{dfxjQuery(elements).animate(params,duration,easing,callback);};dfx.fadeIn=function(elements,speed,callback)
{dfxjQuery(elements).fadeIn(speed,callback);};dfx.fadeOut=function(elements,speed,callback)
{dfxjQuery(elements).fadeOut(speed,callback);};dfx.blindDown=function(elements,speed,callback)
{dfxjQuery(elements).slideDown(speed,callback);};dfx.blindUp=function(elements,speed,callback)
{dfxjQuery(elements).slideUp(speed,callback);};dfx.blindToggle=function(elements,speed,callback)
{dfxjQuery(elements).slideToggle(speed,callback);};dfx.bounce=function(element,times,height,callback)
{if(times>0){var coords=dfx.getElementCoords(element);dfx.move(element,null,(coords.y-height),400,function(){dfx.move(element,null,coords.y,400,function(){if(times>0){dfx.bounce(element,(times-1),height,callback);}else if(callback){callback.call(this);}});});}else if(callback){callback.call(this);}};dfx.stop=function(elements)
{dfxjQuery(elements).stop();};if(!window.dfx){window.dfx=function(){};}
dfx.DOM_VK_DELETE=8;dfx.DOM_VK_LEFT=37;dfx.DOM_VK_UP=38;dfx.DOM_VK_RIGHT=39;dfx.DOM_VK_DOWN=40;dfx.DOM_VK_ENTER=13;dfx.registeredEvents=null;dfx.startMousePositionTrack=function(callback)
{dfxjQuery(document.body).bind('mousemove',callback);};dfx.stopMousePositionTrack=function(callback)
{dfxjQuery(document.body).unbind('mousemove',callback);};dfx.addEvent=function(elements,type,callback,data)
{if(elements){if(type==='safedblclick'){dfx.safedblclick(elements,callback,data);}else if(type==='mousewheel'){dfxjQuery(elements).mousewheel(callback);}else{dfxjQuery(elements).bind(type,data,callback);}}};dfx.safedblclick=function(elements,clickCallback,dblClickCallback,data)
{var t=null;dfxjQuery(elements).bind('click',data,function(e){clearTimeout(t);t=setTimeout(function(){clickCallback.call(this,e,data);},250);});dfxjQuery(elements).bind('dblclick',data,function(e){clearTimeout(t);dblClickCallback.call(this,e,data);});};dfx.trigger=function(elements,type,data)
{if(elements){dfxjQuery(elements).trigger(type,data);}};dfx.removeEvent=function(elements,type,func)
{if(elements){dfxjQuery(elements).unbind(type,func);}};dfx.hover=function(elements,over,out)
{if(elements){dfxjQuery(elements).hover(over,out);}};dfx.toggle=function(elements,fn,fn)
{if(elements){dfxjQuery(elements).toggle(fn,fn);}};dfx.addLoadEvent=function(func)
{dfxjQuery(document).ready(func);};dfx.changeEvent=function(element,eventType,oldFunc,newFunc)
{event.removeEvent(element,eventType,oldFunc);event.addEvent(element,eventType,newFunc);};dfx.getMouseEventPosition=function(evt)
{return{x:evt.pageX,y:evt.pageY};};dfx.getMouseEventTarget=function(evt)
{var ret=null;if(evt.target){ret=evt.target;}else if(evt.srcElement){ret=evt.srcElement;}
return ret;};dfx.preventDefault=function(e)
{e.preventDefault();dfx.stopPropagation(e);};dfx.stopPropagation=function(e)
{e.stopPropagation();};dfx.getEventType=function(e)
{return e.type;};dfx.which=function(e)
{return e.which;};dfx.getKeyChar=function(e)
{return String.fromCharCode(dfx.which(e));};dfx.resizeHeight=function(element,handle,startFn,endFn,moveFn,min,max)
{var elH=dfx.getElementHeight(element);var mPosY=0;min=min||null;max=max||null;if(dfx.isFn(moveFn)===false){moveFn=function(){};}
var move=function(e){var pos=dfx.getMouseEventPosition(e);if(pos.y<mPosY){elH=(elH+(mPosY-pos.y));}else if(pos.y>mPosY){elH=(elH-(pos.y-mPosY));}
if(elH>=0&&(min===null||elH>=min)&&(max===null||elH<=max)){element.style.height=elH+'px';var info={prevPosY:mPosY,newPosY:pos.y,height:elH};moveFn.call(this,info);}
mPosY=pos.y;};dfx.addEvent(handle,'mousedown.drag',function(e){elH=dfx.getElementHeight(element);mPosY=0;if(dfx.isFn(startFn)===true){startFn.call(this);}
mPosY=dfx.getMouseEventPosition(e).y;dfx.addEvent(document,'mousemove.drag',function(e){move(e);});dfx.addEvent(document,'mouseup.drag',function(){dfx.removeEvent(document,'mousemove.drag');dfx.removeEvent(document,'mouseup.drag');if(dfx.isFn(endFn)===true){endFn.call(this);}});});};dfx.drag=function(element,options,startFn,endFn,dragFn)
{var offset=0;var maxRight=0;var maxLeft=0;var elemWidth=dfx.getElementWidth(element);if(options){if(options.maxLeft){maxLeft=options.maxLeft;}}
var drag=function(e){var pos=(dfx.getMouseEventPosition(e).x+offset);if(pos<maxLeft){pos=maxLeft;}
if(maxRight!==0&&pos>maxRight){pos=maxRight;}
if(pos>=0){var finalPos=pos;if(options){if(options.offset){finalPos=(pos-options.offset);}}
dfx.setStyle(element,'left',finalPos+'px');if(dragFn){dragFn.call(this,finalPos,maxRight);}}};dfx.addEvent(element,'mousedown.drag',function(e){if(dfx.isFn(startFn)===true){startFn.call(this);}
var elemX=dfx.getElementCoords(element).x;var mPosX=dfx.getMouseEventPosition(e).x;offset=(elemX-mPosX);maxRight=(dfx.getWindowDimensions().width-elemWidth);if(options){if(options.maxRight){maxRight=options.maxRight;}}
dfx.addEvent(document,'mousemove.drag',function(e){drag(e);});dfx.addEvent(document,'mouseup.drag',function(){dfx.removeEvent(document,'mousemove.drag');dfx.removeEvent(document,'mouseup.drag');if(dfx.isFn(endFn)===true){endFn.call(this,maxRight);}});});};if(!window.dfx){window.dfx=function(){};}
dfx.inherits=function(child,parent,noWidgetType)
{if(parent==='Widget'){parent='AbstractWidget';}
var parentObj=null;if(noWidgetType){parentObj=window[parent];}else{parentObj=window[parent+'WidgetType'];}
if(parentObj){dfx.noInclusionInherits(child,parent,noWidgetType);}else{Widget.prototype.includeWidget(parent,function(){dfx.noInclusionInherits(child,parent,noWidgetType);});}};dfx.noInclusionInherits=function(child,parent,noWidgetType)
{if(parent instanceof String||typeof parent==='string'){if(noWidgetType){parent=window[parent];}else{parent=window[parent+'WidgetType'];}}
if(child instanceof String||typeof child==='string'){if(noWidgetType){child=window[child];}else{child=window[child+'WidgetType'];}}
var above=function(){};if(dfx.isset(parent)===true){for(value in parent.prototype){if(child.prototype[value]){above.prototype[value]=parent.prototype[value];continue;}
child.prototype[value]=parent.prototype[value];}}
if(child.prototype){above.prototype.constructor=parent;child.prototype['super']=new above();}};if(!window.dfx){window.dfx=function(){};}
if(!this.JSON){JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(typeof value.length==='number'&&!value.propertyIsEnumerable('length')){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}})();dfx.jsonDecode=function(variable,filter)
{return JSON.parse(variable,filter);};dfx.jsonEncode=function(variable)
{return JSON.stringify(variable);};dfx.jsonDecode=function(variable,filter)
{return JSON.parse(variable,filter);};dfx.jsonEncode=function(variable)
{return JSON.stringify(variable);};if(!window.dfx){window.dfx=function(){};}
var Util={};Util.ObjectHash=function()
{this.objects=[];this.values=[];};Util.ObjectHash.prototype.getObjectIndex=function(object)
{var oln=this.objects.length;for(var i=0;i<oln;i++){if(this.objects[i]===object){return i;}}
return-1;};Util.ObjectHash.prototype.put=function(object,value)
{var index=this.getObjectIndex(object);if(index!==-1){this.values[index]=value;}else{this.objects.push(object);this.values.push(value);}};Util.ObjectHash.prototype.get=function(object)
{var index=this.getObjectIndex(object);if(index!==-1){return this.values[index];}
return null;};Util.ObjectHash.prototype.containsKey=function(object)
{return(this.getObjectIndex(object)!=-1);};Util.ObjectHash.prototype.replace=function(object,value)
{var index=this.getObjectIndex(object);if(index!==-1){this.values[index]=value;}};Util.Xml=function(xml)
{this.xml=xml;};Util.Xml.prototype.parse=function()
{var xml=this.xml;var doc=null;if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(xml);}else{var parser=new DOMParser();doc=parser.parseFromString(xml,"text/xml");}
return doc;};Util.Xml.getElementById=function(id,parent)
{if(parent){if(parent.getElementById){return parent.getElementById(id);}
var pcln=parent.childNodes.length;for(var i=0;i<pcln;i++){if(parent.childNodes[i].getAttribute('id')===id){return parent.childNodes[i];}else{if(parent.childNodes[i].childNodes.length>0){var el=this.getElementById(id,parent.childNodes[i]);if(el&&el.getAttribute('id')===id){return el;}}}}}
return null;};dfx.ltrim=function(str,trimChars)
{trimChars=trimChars||'\\s';return str.replace(new RegExp('^['+trimChars+']+','g'),'');}
dfx.rtrim=function(str,trimChars)
{trimChars=trimChars||'\\s';return str.replace(new RegExp('['+trimChars+']+$','g'),'');}
dfx.trim=function(value,trimChars)
{return dfx.ltrim(dfx.rtrim(value,trimChars),trimChars);};dfx.isBlank=function(value)
{if(!value||/^\s*$/.test(value)){return true;}
return false;};dfx.ellipsize=function(value,length)
{if(typeof value!=='string'||typeof length!=='number'){return'';}
if(length<0){return'';}
if(value.length<=length){return value;}
value=value.substr(0,length);value=value.replace(/\s$/,'');var end=value.substr((length-3),3);var endNoDots=end.replace(/\.$/,'');var numDots=(end.length-endNoDots.length);value=value+dfx.strRepeat('.',(3-numDots));return value;};dfx.ellipsizeDom=function(elem,length)
{var browserInfo=dfx.browser();if(browserInfo.type==='msie'){dfx.setStyle(elem,'text-overflow','ellipsis');dfx.setStyle(elem,'white-space','nowrap');dfx.setStyle(elem,'width',length+'px');}else{dfx.setStyle(elem,'visibility','hidden');var currWidth=dfx.getStyle(elem,'width');currWidth=parseInt(currWidth.substr(0,(currWidth.length-2)),10);if(currWidth>length){var oriName=dfx.getHtml(elem);var tmpName=oriName;while(currWidth>length){tmpName=tmpName.substring(0,(tmpName.length-1));dfx.setHtml(elem,tmpName);currWidth=dfx.getStyle(elem,'width');currWidth=parseInt(currWidth.substr(0,(currWidth.length-2)),10);}
var ellipsisLen=tmpName.length+1;oriName=dfx.ellipsize(oriName,(ellipsisLen-4));dfx.setHtml(elem,oriName);}
dfx.setStyle(elem,'visibility','visible');}};dfx.ucFirst=function(str)
{return str.substr(0,1).toUpperCase()+str.substr(1,str.length);};dfx.ucWords=function(str)
{return str.toLowerCase().replace(/\w+/g,function(s){return s.charAt(0).toUpperCase()+s.substr(1);});};dfx.isFn=function(f)
{if(typeof f==='function'){return true;}
return false;};dfx.isObj=function(v)
{if(v!==null&&typeof v==='object'){return true;}
return false;};dfx.isset=function(v)
{if(typeof v!=='undefined'&&v!==null){return true;}
return false;};dfx.isNumeric=function(str)
{var result=str.match(/^[-+]?[ ]?\d+\.?\d*$/);if(result!==null){return true;}
return false;};dfx.clone=function(value,shallow)
{if(typeof value!=='object'){return value;}
if(value===null){var valueClone=null;}else{var valueClone=new value.constructor();for(var property in value){if(shallow){valueClone[property]=value[property];}
if(value[property]===null){valueClone[property]=null;}else if(typeof value[property]==='object'){valueClone[property]=dfx.clone(value[property],shallow);}else{valueClone[property]=value[property];}}}
return valueClone;};dfx.objDiff=function(obj1,obj2)
{var count1=0;var count2=0;for(var p in obj1){count1++;}
for(var q in obj2){count2++;}
if(count1!==count2){return true;}
for(var p in obj1){if(obj2.hasOwnProperty(p)===false){return true;}
if(typeof obj1[p]==='object'){if(dfx.objDiff(obj1[p],obj2[p])){return true;}}else{if(obj1[p]!==obj2[p]){return true;}}}
return false;};dfx.stripUrlProtcol=function(url)
{var pStartIdx=url.search(/:\/\//);if(pStartIdx===-1){return url;}else{pStartIdx+=3;var protocolStrippedUrl=url.substr(pStartIdx);return protocolStrippedUrl;}};dfx.baseUrl=function(fullUrl)
{var qStartIdx=fullUrl.search(/\?|#/);if(qStartIdx===-1){return fullUrl;}else{var baseUrl=fullUrl.substr(0,qStartIdx);return baseUrl;}};dfx.getUrlPath=function(fullUrl)
{var protocolStrippedUrl=dfx.stripUrlProtcol(fullUrl);var protocolFreeBaseUrl=dfx.baseUrl(protocolStrippedUrl);var pStartIdx=protocolFreeBaseUrl.search(/\//);if(pStartIdx===-1){return'';}else{pStartIdx+=1;var path=protocolFreeBaseUrl.substr(pStartIdx);return path;}};dfx.queryString=function(url)
{var result={};var qStartIdx=url.search(/\?/);if(qStartIdx===-1){return result;}else{var aStartIdx=url.search(/\#/);if(aStartIdx===-1){var anchorPartAdj=0;}else{var anchorPartAdj=(url.length-aStartIdx+1);}
var queryStr=url.substr((qStartIdx+1),(url.length-qStartIdx-anchorPartAdj));if(queryStr.length>0){var pairs=queryStr.split('&');var len=pairs.length;var pair=[];for(var i=0;i<len;i++){if(pairs[i].search('=')!==-1){pair=pairs[i].split('=');result[pair[0]]=pair[1];}}
return result;}else{return result;}}};dfx.anchorPart=function(url)
{if(typeof url==='string'){var aStartIdx=url.search(/\#/);if(aStartIdx===-1){url='';}else{url=url.substr(aStartIdx,(url.length-aStartIdx));}}
return url;};dfx.noAnchorPartUrl=function(url)
{if(typeof url==='string'){var aStartIdx=url.search(/\#/);if(aStartIdx!==-1){var url=url.substr(0,aStartIdx);}}
return url;};dfx.addToQueryString=function(url,addQueries)
{var mergedUrl='';var baseUrl=dfx.baseUrl(url);var queryStringArray=dfx.queryString(url);mergedQry=dfx.objectMerge(queryStringArray,addQueries);var queryStr='?';dfx.foreach(mergedQry,function(key){queryStr=queryStr+key+'='+mergedQry[key]+'&';});if(queryStr.length>1){mergedUrl=baseUrl+queryStr.substr(0,(queryStr.length-1));}else{mergedUrl=url;}
var anchorPartURL=dfx.anchorPart(url);if(anchorPartURL.length>0){mergedUrl=mergedUrl+anchorPartURL;}
return mergedUrl;};dfx.removeFromQueryString=function(url,idenifier)
{if(url==undefined){url='';}
if(idenifier==undefined){idenifier='';}
var trimmedUrl=url.replace(new RegExp('&*'+idenifier+'=[^&\\s\#]*','g'),'');trimmedUrl=trimmedUrl.replace(/^[?&]+|[?&]+$/g,'');trimmedUrl=trimmedUrl.replace(/\?&/g,'?');trimmedUrl=trimmedUrl.replace(/\?\#/g,'\#');return trimmedUrl;};dfx.addToPath=function(url,addPath)
{addPath=dfx.trim(addPath,'/');if(addPath.length>0){var mergedUrl='';var baseUrl=dfx.baseUrl(url);var queryStringArray=dfx.queryString(url);var anchorPartURL=dfx.anchorPart(url);baseUrl=dfx.rtrim(baseUrl,'/');mergedUrl=baseUrl+'/'+addPath;if(!dfx.isEmpty(queryStringArray)){mergedUrl+='?';dfx.foreach(queryStringArray,function(key){mergedUrl+=key+'='+queryStringArray[key]+'&';});mergedUrl=mergedUrl.substr(0,(mergedUrl.length-1));}
if(anchorPartURL.length>0){mergedUrl+=anchorPartURL;}}else{var mergedUrl=url;}
return mergedUrl;};dfx.getFileInputName=function(fileFieldValue)
{var filename='';if(fileFieldValue.indexOf('\\')>-1){filename=fileFieldValue.substring(fileFieldValue.lastIndexOf('\\')+1,fileFieldValue.length);}
if(fileFieldValue.indexOf('/')>-1){filename=fileFieldValue.substring(fileFieldValue.lastIndexOf('/')+1,fileFieldValue.length);}
if(filename===''){return fileFieldValue;}
return filename;};dfx.getUniqueId=function()
{var timestamp=(new Date()).getTime();var random=Math.ceil(Math.random()*1000000);var id=timestamp+''+random;return id.substr(5,18);};dfx.objectMerge=function(ob1,ob2)
{dfx.foreach(ob2,function(key){ob1[key]=ob2[key];return true;});return ob1;};dfx.convertSpaces=function(elem,options)
{options=options||{};if(dfx.isset(options.newLines)===false){options.newLines=true;}
if(dfx.isset(options.tabs)===false){options.tabs=true;}
var count=elem.childNodes.length;var c=String.fromCharCode(160);var content=null;for(var i=0;i<count;i++){var child=elem.childNodes[i];content=null;if(child.nodeType===dfx.TEXT_NODE){content=child.data;}
if(content!==null){var rep='';content=content.replace(/\r/g,rep);if(options.newLines===false){rep='';}else{rep='<br />';}
content=content.replace(/\n/g,rep);if(options.tabs===false){rep='';}else{rep=c+c+c+c;}
content=content.replace(/\t/g,rep);if(child.data){child.data=content;}}
if(child.childNodes&&child.childNodes.length>0){dfx.convertSpaces(child,options);}}};dfx.stripTags=function(content,allowedTags)
{var match;var re=new RegExp(/<\/?(\w+)((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);var resCont=content;while((match=re.exec(content))!=null){if(dfx.isset(allowedTags)===false||dfx.inArray(match[1],allowedTags)!==true){resCont=resCont.replace(match[0],'');}}
return resCont;};dfx.getImage=function(url,callback)
{var img=new Image();img.onload=function(){callback.call(this,img);};img.onerror=function(){callback.call(this,false);};img.src=url;};dfx.resizeImage=function(img,size,sizesOnly)
{var h=dfx.attr(img,'height');var w=dfx.attr(img,'width');var max=null;if((size instanceof Object)===true){max=dfx.clone(size);}else{max={height:size,width:size};}
if(h===w){var min=Math.min(max.width,max.height);h=min;w=min;}else{if(w>=max.width||h>=max.height){if(w>=max.width){h=(h*(max.width/w));w=max.width;}
if(h>=max.height){w=(w*(max.height/h));h=max.height;}}else{if(w>h){h=(h*(max.width/w));w=max.width;}else if(h>w){w=(w*(max.height/h));h=max.height;}}}
h=Math.round(h);w=Math.round(w);if(sizesOnly===true){var result={height:h,width:w};return result;}else{dfx.attr(img,'height',h);dfx.attr(img,'width',w);return img;}};dfx.strRepeat=function(str,multiplier)
{var rstr='';for(var i=0;i<multiplier;i++){rstr+=str;}
return rstr;};dfx.browser=function()
{var result={};result.version=dfxjQuery.browser.version;if(dfxjQuery.browser.mozilla===true){result.type='mozilla';}else if(dfxjQuery.browser.msie===true){result.type='msie';}else if(dfxjQuery.browser.opera===true){result.type='opera';}else if(dfxjQuery.browser.safari===true){result.type='safari';}
return result;};dfx.getElemPositionStyles=function(elem,orientation)
{var h=dfx.getElementHeight(elem);var w=dfx.getElementWidth(elem);var res={};orientation=orientation||Widget.CENTER;switch(orientation){case Widget.CENTER:res={'margin-top':((h/2)*(-1))+'px','top':'50%','margin-left':((w/2)*(-1))+'px','left':'50%'};break;case Widget.TOP:res={'margin-top':(h*(-1))+'px','top':'0px','margin-left':((w/2)*(-1))+'px','left':'50%'};break;case Widget.BOTTOM:res={'margin-top':(h*(-1))+'px','top':'100%','margin-left':((w/2)*(-1))+'px','left':'50%'};break;case Widget.LEFT:res={'margin-top':((h/2)*(-1))+'px','top':'50%','left':'0px'};break;case Widget.RIGHT:res={'margin-top':((h/2)*(-1))+'px','top':'50%','margin-left':(w*(-1))+'px','left':'100%'};break;default:break;}
return res;};dfx.htmlspecialchars=function(str)
{str=str.replace(/&/g,'&amp;');str=str.replace(/"/g,'&quot;');str=str.replace(/'/g,'&#039;');str=str.replace(/</g,'&lt;');str=str.replace(/>/g,'&gt;');return str;};dfx.readableSize=function(size,unit)
{var units=['B','kB','MB','GB'];var maxUnit=(units.length-1);if(unit){var index=units.find(unit);if(index<0){unit=null;}}
if(unit<0){unit=2;}
var factor=0;while(unit!==factor&&size>=1000&&factor<maxUnit){size=(size/1000);factor++;}
var readable=size.toFixed(2)+units[factor];return readable;};dfx.displayThumbViewer=function(thumb,evt,targetWidget)
{var intervalid=null;var thumbViewer=dfx.getId('SplashScreenThumbViewer');if(thumbViewer===null){thumbViewer=dfx.createThumbViewer(thumb,evt);dfx.hideElement(thumbViewer);document.body.appendChild(thumbViewer);}
var oriImage=dfx.getMouseEventTarget(evt);dfx.getId('SplashScreenThumbViewer-img').setAttribute('src',oriImage.getAttribute('src'));dfx.setThumbViewerText(thumb,evt,function(){var thumbWidth=54;var thumbHeight=79;var viewerWidth=236;var viewerHeight=193;var target=dfx.getMouseEventTarget(evt);var coords=dfx.getElementCoords(target);var left=(coords.x-(viewerWidth-thumbHeight));var top=(coords.y-(viewerHeight-thumbWidth));var scrollY=dfx.getScrollCoords().y;if(scrollY>0){top-=scrollY;}
dfx.setStyle(thumbViewer,'left',left);dfx.setStyle(thumbViewer,'top',top);dfx.showElement(thumbViewer);targetWidget.thumbDisplayed=true;var setMousePos=function(e){var scrY=dfx.getScrollCoords().y;var pageX=e.pageX;var pageY=(e.pageY-scrY);if((pageX<left||pageX>(left+viewerWidth))||(pageY<top||pageY>(top+viewerHeight))){dfx.hideElement(dfx.getId('SplashScreenThumbViewer'));clearInterval(intervalid);dfx.stopMousePositionTrack(setMousePos);}};dfx.startMousePositionTrack(setMousePos);});};dfx.createThumbViewer=function(thumb,evt)
{var thumbWrapper=document.createElement('div');thumbWrapper.id='SplashScreenThumbViewer';thumbWrapper.className='SplashScreenThumbViewerWrapper';var imageHolder=document.createElement('div');imageHolder.className='SplashScreenThumbViewerImageHolder';var description=document.createElement('div');description.id='SplashScreenThumbViewer-desc';description.className='SplashScreenThumbViewerDescription';var oriImage=dfx.getMouseEventTarget(evt);var image=document.createElement('img');image.id='SplashScreenThumbViewer-img';image.src=oriImage.getAttribute('src');imageHolder.appendChild(image);thumbWrapper.appendChild(imageHolder);thumbWrapper.appendChild(description);return thumbWrapper;};dfx.setThumbViewerText=function(thumb,evt,callback)
{var oriImage=dfx.getMouseEventTarget(evt);var assetid=oriImage.getAttribute('assetid');var version=oriImage.getAttribute('version');if(version==='0'){AssetManager.getAsset(assetid,function(asset){dfx.getId('SplashScreenThumbViewer-desc').innerHTML=asset.name;callback();},true,{attributes:['name'],type:false,typeIcon:false,linking:[],urls:false});}else{dfx.getId('SplashScreenThumbViewer-desc').innerHTML='Version '+version;callback();}};dfx.preloadStylesheetImages=function(prefix,defaultBaseUrl)
{prefix=prefix||[];defaultBaseUrl=defaultBaseUrl||'/';var styleSheets=document.styleSheets;var sln=styleSheets.length;for(var i=0;i<sln;i++){var baseUrl='';var contents='';if(styleSheets[i].href){baseUrl=styleSheets[i].href.substring(0,styleSheets[i].href.lastIndexOf('/'));}
if(baseUrl!==''){baseUrl+='/';}else{baseUrl=defaultBaseUrl;}
if(styleSheets[i].cssRules){var sheetRules=styleSheets[i].cssRules;var rln=sheetRules.length;for(var j=0;j<rln;j++){contents+=sheetRules[j].cssText;}}else{contents+=styleSheets[i].cssText;}
var re='('+prefix.join('|')+')[^\(]+\.(gif|jpg|png)';var regExp=new RegExp(re,'g');var imgUrls=contents.match(regExp);if(imgUrls!==null&&imgUrls.length>0){dfx.foreach(imgUrls,function(key){var img=new Image();img.src=baseUrl+imgUrls[key];});}}};dfx.getFileExtension=function(filename)
{var parts=filename.split('.');if(parts.length===1){return'';}
var ext=parts[(parts.length-1)].toLowerCase();return ext;};dfx.entitiesArray={160:'&nbsp;',161:'&iexcl;',162:'&cent;',163:'&pound;',164:'&curren;',165:'&yen;',166:'&brvbar;',167:'&sect;',168:'&uml;',169:'&copy;',170:'&ordf;',171:'&laquo;',172:'&not;',173:'&shy;',174:'&reg;',175:'&macr;',176:'&deg;',177:'&plusmn;',178:'&sup2;',179:'&sup3;',180:'&acute;',181:'&micro;',182:'&para;',183:'&middot;',184:'&cedil;',185:'&sup1;',186:'&ordm;',187:'&raquo;',188:'&frac14;',189:'&frac12;',190:'&frac34;',191:'&iquest;',192:'&Agrave;',193:'&Aacute;',194:'&Acirc;',195:'&Atilde;',196:'&Auml;',197:'&Aring;',198:'&AElig;',199:'&Ccedil;',200:'&Egrave;',201:'&Eacute;',202:'&Ecirc;',203:'&Euml;',204:'&Igrave;',205:'&Iacute;',206:'&Icirc;',207:'&Iuml;',208:'&ETH;',209:'&Ntilde;',210:'&Ograve;',211:'&Oacute;',212:'&Ocirc;',213:'&Otilde;',214:'&Ouml;',215:'&times;',216:'&Oslash;',217:'&Ugrave;',218:'&Uacute;',219:'&Ucirc;',220:'&Uuml;',221:'&Yacute;',222:'&THORN;',223:'&szlig;',224:'&agrave;',225:'&aacute;',226:'&acirc;',227:'&atilde;',228:'&auml;',229:'&aring;',230:'&aelig;',231:'&ccedil;',232:'&egrave;',233:'&eacute;',234:'&ecirc;',235:'&euml;',236:'&igrave;',237:'&iacute;',238:'&icirc;',239:'&iuml;',240:'&eth;',241:'&ntilde;',242:'&ograve;',243:'&oacute;',244:'&ocirc;',245:'&otilde;',246:'&ouml;',247:'&divide;',248:'&oslash;',249:'&ugrave;',250:'&uacute;',251:'&ucirc;',252:'&uuml;',253:'&yacute;',254:'&thorn;',255:'&yuml;',402:'&fnof;',913:'&Alpha;',914:'&Beta;',915:'&Gamma;',916:'&Delta;',917:'&Epsilon;',918:'&Zeta;',919:'&Eta;',920:'&Theta;',921:'&Iota;',922:'&Kappa;',923:'&Lambda;',924:'&Mu;',925:'&Nu;',926:'&Xi;',927:'&Omicron;',928:'&Pi;',929:'&Rho;',931:'&Sigma;',932:'&Tau;',933:'&Upsilon;',934:'&Phi;',935:'&Chi;',936:'&Psi;',937:'&Omega;',945:'&alpha;',946:'&beta;',947:'&gamma;',948:'&delta;',949:'&epsilon;',950:'&zeta;',951:'&eta;',952:'&theta;',953:'&iota;',954:'&kappa;',955:'&lambda;',956:'&mu;',957:'&nu;',958:'&xi;',959:'&omicron;',960:'&pi;',961:'&rho;',962:'&sigmaf;',963:'&sigma;',964:'&tau;',965:'&upsilon;',966:'&phi;',967:'&chi;',968:'&psi;',969:'&omega;',977:'&thetasym;',978:'&upsih;',982:'&piv;',8226:'&bull;',8230:'&hellip;',8242:'&prime;',8243:'&Prime;',8254:'&oline;',8260:'&frasl;',8472:'&weierp;',8465:'&image;',8476:'&real;',8482:'&trade;',8501:'&alefsym;',8592:'&larr;',8593:'&uarr;',8594:'&rarr;',8595:'&darr;',8596:'&harr;',8629:'&crarr;',8656:'&lArr;',8657:'&uArr;',8658:'&rArr;',8659:'&dArr;',8660:'&hArr;',8704:'&forall;',8706:'&part;',8707:'&exist;',8709:'&empty;',8711:'&nabla;',8712:'&isin;',8713:'&notin;',8715:'&ni;',8719:'&prod;',8721:'&sum;',8722:'&minus;',8727:'&lowast;',8730:'&radic;',8733:'&prop;',8734:'&infin;',8736:'&ang;',8743:'&and;',8744:'&or;',8745:'&cap;',8746:'&cup;',8747:'&int;',8756:'&there4;',8764:'&sim;',8773:'&cong;',8776:'&asymp;',8800:'&ne;',8801:'&equiv;',8804:'&le;',8805:'&ge;',8834:'&sub;',8835:'&sup;',8836:'&nsub;',8838:'&sube;',8839:'&supe;',8853:'&oplus;',8855:'&otimes;',8869:'&perp;',8901:'&sdot;',8968:'&lceil;',8969:'&rceil;',8970:'&lfloor;',8971:'&rfloor;',9001:'&lang;',9002:'&rang;',9674:'&loz;',9824:'&spades;',9827:'&clubs;',9829:'&hearts;',9830:'&diams;'};dfx.fixHtml=function(html)
{var newHtml='';var ln=html.length;for(i=0;i<ln;i++){code=html.charCodeAt(i);if(code>127){entity=dfx.entitiesArray[code];if(entity){newHtml+=entity;}else{newHtml+='&#'+code+';';}}else{newHtml+=html.charAt(i);}}
return newHtml;};dfx.addAutoComplete=function(element,tags,callback,clearValue,customClass)
{if(!element||!tags){return;}
var anyCharMode=false;if(tags instanceof Array){if(tags.length===0){return;}
tags={'.':tags};anyCharMode=true;}
dfx.attr(element,'autocomplete','off');var lists={};var currTag=null;var insertText=function(hElem){var html=dfx.getHtml(hElem);var appendToField=true;if(callback){appendToField=callback.call(this,html);}
if(appendToField===true){var rstr='';if(anyCharMode===true){rstr='[ ]?([\\w]*)$';currTag='';}else{rstr=' ?\\'+currTag+'[^\\'+currTag+']*$';}
if(clearValue===true){element.value='';return;}
var r=new RegExp(rstr);element.value=dfx.ltrim(element.value.replace(r,' '+currTag+html+' '));}};var regExTags=[];for(var tag in tags){if(tags.hasOwnProperty(tag)===false||tags[tag].length===0){continue;}
regExTags.push(tag);var ul=document.createElement('ul');dfx.addClass(ul,'dfxTagList');if(customClass){dfx.addClass(ul,customClass);}
var content='<li>'+tags[tag].join('</li><li>')+'</li>';dfx.setHtml(ul,content);(function(listElem){var lis=dfx.getTag('li',listElem);dfx.hover(lis,function(e){dfx.removeClass(lis,'highlight');dfx.addClass(dfx.getMouseEventTarget(e),'highlight');},function(e){dfx.removeClass(dfx.getMouseEventTarget(e),'highlight');});dfx.addEvent(lis,'click',function(e){insertText(dfx.getMouseEventTarget(e));listElem.parentNode.removeChild(listElem);element.focus();});})(ul);lists[tag]=ul;}
var rstr='';if(anyCharMode===true){rstr=' ([\\w]*)$';}else{rstr=' (\\'+regExTags.join('|\\')+')([\\w ]*)$';}
var r=new RegExp(rstr);var textSizeCalc=document.createElement('div');dfx.setStyle(textSizeCalc,'position','fixed');dfx.setStyle(textSizeCalc,'left','-1000px');dfx.setStyle(textSizeCalc,'top','-1000px');var elementWidth=parseInt(dfx.getElementWidth(element));dfx.addEvent(element,'keyup',function(e){if(e.which===16||e.which===17||e.which===18||e.which===27||e.which===13){return;}
var match=r.exec(' '+element.value);if(!match){currTag=null;dfx.foreach(lists,function(tagChar){if(lists[tagChar].parentNode){lists[tagChar].parentNode.removeChild(lists[tagChar]);}});return;}
var tagChar=null;if(anyCharMode===true){tagChar='.';}else{tagChar=match[1];}
var searchStr='';if(match[2]){searchStr=match[2].toLowerCase();}else if(anyCharMode===true){searchStr=match[1].toLowerCase();}
var found=false;for(var node=lists[tagChar].firstChild;node;node=node.nextSibling){if(searchStr===''||dfx.getHtml(node).toLowerCase().indexOf(searchStr)===0){dfx.showElement(node);found=true;}else{dfx.hideElement(node);}}
if(found===true){currTag=tagChar;if(!lists[tagChar].parentNode){dfx.removeClass(dfx.getTag('li',lists[tagChar]),'highlight');var elemPos=dfx.getBoundingRectangle(element);var offset=0;dfx.setHtml(textSizeCalc,dfx.ltrim(element.value.substr(0,((' '+element.value).search(r)+1))));document.body.appendChild(textSizeCalc);offset=dfx.getElementWidth(textSizeCalc);document.body.removeChild(textSizeCalc);if(offset>elementWidth){offset=(elementWidth-10);}else if(offset<0){offset=0;}
dfx.setStyle(lists[tagChar],'left',elemPos.x1+offset+'px');dfx.setStyle(lists[tagChar],'top',elemPos.y2+'px');document.body.appendChild(lists[tagChar]);}}else if(lists[tagChar].parentNode){currTag=null;lists[tagChar].parentNode.removeChild(lists[tagChar]);}});dfx.addEvent(element,'keydown',function(e){if(!currTag){return;}
var key=e.which;var hElem=dfx.getClass('highlight',lists[currTag])[0];if(key===40){var node=null;if(!hElem||dfx.getElementHeight(hElem)===0){node=lists[currTag].firstChild;}else{node=hElem.nextSibling;}
for(;node;node=node.nextSibling){if(dfx.getElementHeight(node)!==0){dfx.removeClass(hElem,'highlight');dfx.addClass(node,'highlight');break;}}
dfx.preventDefault(e);return false;}else if(key===38){for(var node=hElem.previousSibling;node;node=node.previousSibling){if(dfx.getElementHeight(node)!==0){dfx.removeClass(hElem,'highlight');dfx.addClass(node,'highlight');break;}}
dfx.preventDefault(e);return false;}else if(key===13){if(hElem&&dfx.getElementHeight(hElem)!==0){insertText(hElem);dfx.preventDefault(e);dfx.foreach(lists,function(tagChar){if(lists[tagChar].parentNode){lists[tagChar].parentNode.removeChild(lists[tagChar]);}});return false;}}else if(key===27){dfx.foreach(lists,function(tagChar){if(lists[tagChar].parentNode){lists[tagChar].parentNode.removeChild(lists[tagChar]);}});dfx.preventDefault(e);return false;}});dfx.addEvent(element,'blur',function(){setTimeout(function(){if(document.activeElement!==element){dfx.foreach(lists,function(tagChar){if(lists[tagChar].parentNode){lists[tagChar].parentNode.removeChild(lists[tagChar]);}});}},150);});};dfx.validateUrl=function(url,requireScheme,allowedSchemes,allowLeadingPathUnderscores,allowUpperCasePath)
{if(allowLeadingPathUnderscores!==false){allowLeadingPathUnderscores=true;}
if(allowUpperCasePath!==false){allowUpperCasePath=true;}
if(requireScheme===true){if(dfx.isEmpty(allowedSchemes)===true){return false;}else{var schemeMatch='('+dfx.arrayImplode('|',allowedSchemes)+'):\/\/';}}else{if(dfx.isEmpty(allowedSchemes)===true){var schemeMatch='';}else{var schemeMatch='(('+dfx.arrayImplode('|',allowedSchemes)+'):\/\/)?';}}
var regExStr='^'+schemeMatch;var domainMatch='[a-z0-9]+';domainMatch+='(([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,})?';var ipMatch='(?:\\d{1,3}\\.){3}\\d{1,3}';regExStr+='('+domainMatch+'|'+ipMatch+')';regExStr+='(:[0-9]{1,5})?';regExStr+='(\\?.*|\/.*|#.*)*$';var regExp=new RegExp(regExStr,'i');var matches=url.match(regExp);if(matches===null){return false;}
var urlValid=true;var urlPath=dfx.getUrlPath(url);if(urlPath!==''){var doubleSlashExp='^\/|\/\/';var regExp=new RegExp(doubleSlashExp,'i');var doubleSlashIdx=urlPath.search(regExp);if(doubleSlashIdx!==-1){return false;}
var individualPaths=urlPath.split('/');dfx.foreach(individualPaths,function(idx){var pathValid=dfx.validateSingleUrlPath(individualPaths[idx],allowLeadingPathUnderscores,allowUpperCasePath);if(pathValid===false){urlValid=false;return false;}});}
return urlValid;};dfx.validateSingleUrlPath=function(singlePath,allowLeadingUnderscores,allowUpperCasePath)
{if(allowLeadingUnderscores!==false){allowLeadingUnderscores=true;}
if(allowUpperCasePath!==false){allowUpperCasePath=true;}
if(allowUpperCasePath===false&&singlePath.toLowerCase()!==singlePath){return false;}
var regExStr='';if(allowLeadingUnderscores===false){regExStr+='^_|';}
regExStr+='[^a-z0-9\-$_@.!*~(),]';var regExp=new RegExp(regExStr,'i');var matches=singlePath.match(regExp);if(matches===null){var urlValid=true;}else{var urlValid=false;}
return urlValid;};dfx.validateEmail=function(email)
{var regExStr='^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.([a-z][a-z]+)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$';var regExp=new RegExp(regExStr,'i');var matches=email.match(regExp);if(matches===null){var emailValid=false;}else{var emailValid=true;}
return emailValid;};if(!window.console){window.console={};window.console.log=function(){};window.console.info=function(){};}
var GUI=new function()
{var _widgetStore={};var _publicDirName='Web';var _modifiedWidgets={};var _modifiedTemplates={};var _widgetCreateCache={};var _widgetTemplates={};var _silentTemplates={};var _loadedTemplates=[];var _reverting=false;var _self=this;var _updateContentAfterMdify={};window.onbeforeunload=function(e){if(GUI.isTemplateModified()===true){return'You have unsaved changes!!!';}};this.addWidget=function(id,obj){if(!obj.id||!obj.settings||!obj.settings.template){return;}
_widgetStore[id]=obj;var parent=_getTemplateKey(obj.settings.template.system,obj.settings.template.name);if(this.isLoadedTemplate(obj.settings.template.system,obj.settings.template.name)===false){if(_silentTemplates[parent]===true){return;}else{var currentTpl=this.getCurrentTemplate();parent=_getTemplateKey(currentTpl.system,currentTpl.template);}}
if(!_widgetTemplates[parent]){_widgetTemplates[parent]={};}
_widgetTemplates[parent][id]=obj;};this.removeWidget=function(id){var removed=false;if(_widgetStore[id]){if(_widgetStore[id].removeWidget){_widgetStore[id].removeWidget();}
_widgetStore[id]=null;delete _widgetStore[id];removed=true;}
if(_modifiedWidgets[id]){delete _modifiedWidgets[id];}
if(_widgetCreateCache&&_widgetCreateCache[id]){delete _widgetCreateCache[id];}
return removed;};this.createWidget=function(id,type,settings,system,template,callback){var params={id:id,type:type,settings:settings,tplSystem:system,tplName:template};if(!_widgetCreateCache){_widgetCreateCache={};}
var encodedParams=dfx.jsonEncode(params);if(_widgetCreateCache[id]){if(_widgetCreateCache[id].params===encodedParams){callback.call(this,_widgetCreateCache[id].content);return;}}
GUI.sendRequest('GUI','createWidget',params,function(data){_widgetCreateCache[id]={params:encodedParams,content:data};callback.call(_self,data);},'raw');};this.getWidget=function(id){return _widgetStore[id];};this.getWidgetWebPath=function(widgetPath){widgetPath=widgetPath.replace(/^\//,'');widgetPath=widgetPath.replace('/','/Widgets/')+'/'+_publicDirName;return widgetPath;};this.getWidgetURL=function(widgetPath){var url=window.location.href.replace(/\/+$/,'');url+='/__web/Systems/'+GUI.getWidgetWebPath(widgetPath);return url;};this.unloadTemplate=function(system,template,force){var parent=_getTemplateKey(system,template);var ln=_loadedTemplates.length;if(_loadedTemplates.inArray(parent)===true){for(var i=(ln-1);i>=0;i--){var p=_loadedTemplates[i];var tplInfo=_getTemplateFromKey(p);if(force!==true&&this.isTemplateModified(tplInfo.system,tplInfo.template)===true){if(this.confirmUnload()===false){return false;}}
dfx.foreach(_widgetTemplates[p],function(idx){var tplKey=_getTemplateKey(_widgetTemplates[p][idx].settings.template.system,_widgetTemplates[p][idx].settings.template.name);if(_silentTemplates[tplKey]!==true){_self.removeWidget(idx);}});delete _widgetTemplates[p];_loadedTemplates.pop();if(_modifiedTemplates[p]){delete _modifiedTemplates[p];}
this.fireTemplateRemovedCallbacks(tplInfo.system,tplInfo.template);dfx.foreach(_self.__eventCallbacks,function(eventName){var eventCount=_self.__eventCallbacks[eventName].length;for(var j=(eventCount-1);j>=0;j--){var eventTpl=_self.__eventCallbacks[eventName][j].template;if(eventTpl&&eventTpl.system===tplInfo.system&&eventTpl.template===tplInfo.template){dfx.unset(_self.__eventCallbacks[eventName],j);}}});if(p===parent){break;}}}};this.isChildOfTemplate=function(childTemplate,parentTemplate){if(!childTemplate||!parentTemplate){return false;}
childTemplate=_getTemplateKey(childTemplate.system,childTemplate.template);parentTemplate=_getTemplateKey(parentTemplate.system,parentTemplate.template);var parentIndex=_loadedTemplates.find(parentTemplate);if(parentIndex<0){return false;}
var childIndex=_loadedTemplates.find(childTemplate);if(childIndex<0){return true;}
if(childIndex>parentIndex){return true;}
return false;};this.isTemplateModified=function(system,template,checkChildTemplates){if(_reverting===true){return false;}
var tpl=null;if(!system&&!template){var tplInfo=GUI.getCurrentTemplate();tpl=_getTemplateKey(tplInfo.system,tplInfo.template);}else{tpl=_getTemplateKey(system,template);}
if(checkChildTemplates===true){if(_loadedTemplates.inArray(tpl)===true){var ln=_loadedTemplates.length;for(var i=(ln-1);i>=0;i--){var p=_loadedTemplates[i];var tplInfo=_getTemplateFromKey(p);if(this.isTemplateModified(tplInfo.system,tplInfo.template,false)===true){return true;}
if(p===tpl){return false;}}}}else if(_modifiedTemplates[tpl]){return true;}
return false;};this.hasModifiedTemplates=function(){return!dfx.isEmpty(_modifiedTemplates);};this.hasModifiedWidgets=function(){return!dfx.isEmpty(_modifiedWidgets);};this.confirmUnload=function(){var msg='You have unsaved changes.\n\nPress OK to continue and lose these changes or Cancel to stay on the current screen.';return confirm(msg);};this.registerLoadedTemplate=function(system,template){if(!system||!template){return GUI.message('developer','Invalid template: '+system+'::'+template,'error');}
var tplKey=system+'::'+template;if(dfx.inArray(tplKey,_loadedTemplates)===false){_loadedTemplates.push(tplKey);this.fireTemplateAddedCallbacks(system,template);}};this.isLoadedTemplate=function(system,template){return _loadedTemplates.inArray(_getTemplateKey(system,template));};this.getCurrentTemplate=function(){if(_loadedTemplates.length<=0){return null;}
return _getTemplateFromKey(_loadedTemplates[(_loadedTemplates.length-1)]);};this.getLoadedTemplates=function(){return _loadedTemplates;};this.addWidgetEvent=function(obj,eventName,fireFunction){if(!obj.__eventCallbacks){obj.__eventCallbacks={};}
if(!obj.__eventCallbacks[eventName]){obj.__eventCallbacks[eventName]=[];}else{return;}
var addEvtid='add'+dfx.ucFirst(eventName)+'Callback';obj[addEvtid]=function(callback,chained,template){if(typeof callback==='function'){var newIndex=dfx.count(obj.__eventCallbacks[eventName]);var callbackInfo={callback:callback,chained:chained};if(template){callbackInfo.template=template;}else{callbackInfo.template=_self.getCurrentTemplate();}
obj.__eventCallbacks[eventName].push(callbackInfo);}};var fireEvtid='fire'+dfx.ucFirst(eventName)+'Callbacks';if(dfx.isFn(fireFunction)===true){obj[fireEvtid]=function(){if(obj.__eventCallbacks){var callbacksInfo=obj.__eventCallbacks[eventName];fireFunction.call(this,callbacksInfo);}};}else{obj[fireEvtid]=function(){if(obj.__eventCallbacks){var callbacks=obj.__eventCallbacks[eventName].concat([]);var chainedCallbacks=[];var len=callbacks.length;for(var i=0;i<len;i++){var callbackInfo=callbacks[i];if(callbackInfo.chained===true){chainedCallbacks.push(callbackInfo.callback);}else{callbackInfo.callback.apply(obj,arguments);}}
if(dfx.isEmpty(chainedCallbacks)===false){var argsHasCallback=false;var origArgs=[];var argsLn=arguments.length;for(var i=0;i<(argsLn-1);i++){var argVal=arguments[i];origArgs.push(argVal);}
var callbackArgs=origArgs;var lastChainedCallback=null;for(var i=(chainedCallbacks.length-1);i>=0;i--){if(lastChainedCallback!==null){var scopeCorrectingFunction=function(previousChainedCallback,previousCallbackArgs){var linkCallback=function(){previousChainedCallback.apply(obj,previousCallbackArgs);};return linkCallback;};nextCallbacksCallback=scopeCorrectingFunction(lastChainedCallback,callbackArgs);callbackArgs=origArgs.concat([]);callbackArgs.push(nextCallbacksCallback);}
lastChainedCallback=chainedCallbacks[i];}
lastChainedCallback.apply(obj,callbackArgs);}}};}
var rmEvtid='removeAll'+dfx.ucFirst(eventName)+'Callbacks';obj[rmEvtid]=function(){obj.__eventCallbacks[eventName]=[];};var hasCallbacks='has'+dfx.ucFirst(eventName)+'Callbacks';obj[hasCallbacks]=function(){if(obj.__eventCallbacks[eventName]&&obj.__eventCallbacks[eventName].length>0){return true;};return false;};};this.addWidgetEvent(this,'modified');this.addWidgetEvent(this,'reverted');this.addWidgetEvent(this,'saved');this.addWidgetEvent(this,'requestComplete');this.addWidgetEvent(this,'reloadTemplate');this.addWidgetEvent(this,'templateAdded');this.addWidgetEvent(this,'templateRemoved');this.addWidgetEvent(this,'overlayEnabled');this.addWidgetEvent(this,'overlayDisabled');this.sendRequest=function(system,action,params,callback,format,errorCallback,decodeExcludedParams){sfapi.post(system,action,params,function(data){if(dfx.isset(data)===false||data.exception||data.toString().indexOf('exception:')===0){var exception='';if(data.exception){exception=data.exception;}else if(data.indexOf('exception:')===0){exception=data.replace('exception:','');}
if(!exception){exception='Invalid response';}
GUI.Overlay.hide();GUI.Overlay.show('error',{content:'<p>'+exception+'</p>'});if(errorCallback){errorCallback.call(this,exception,data);}}else if(callback){callback.call(this,data);}
_self.fireRequestCompleteCallbacks();},errorCallback,format,decodeExcludedParams);};this.redirect=function(resourceid,options,redirectText){if(options===undefined){options={};}
if(redirectText===undefined){redirectText='Currently redirecting...';}
var params={resourceid:resourceid,options:dfx.jsonEncode(options)};this.sendRequest('GUI','getRedirectUrl',params,function(data){if(data.result){GUI.Overlay.hide();GUI.Overlay.show('loading',{content:'<p>'+redirectText+'</p>'});location.href=data.result;}},'json');};this.getRequestURL=function(system,action,params,format){var url=sfapi.createURL(system,action,format);url=dfx.addToQueryString(url,params);url=sfapi.attachTokenToURL(url);return url;};this.loadContent=function(system,method,targetElement,params,callback,tplSystem,tplName){if(dfx.isObj(targetElement)===false){targetElement=dfx.getId(targetElement);}
GUI.sendRequest(system,method,params,function(contents){if(tplSystem&&tplName){_self.registerLoadedTemplate(tplSystem,tplName);}
dfx.setHtml(targetElement,contents);if(callback){callback.call(this);}},'raw');};this.loadTemplate=function(system,templateName,templateOptions,callback,options,silentTemplate){if(templateName!==templateName.replace(/[^a-zA-Z0-9]+/,'')){return GUI.message('developer','Invalid template name: '+templateName,'error');}
if(templateOptions===null){templateOptions=[];}
var params={systemName:system,template:templateName,variables:dfx.jsonEncode(templateOptions)};options=options||{};if(options.modal===true){GUI.Overlay.show();}
var targetElement=document.body;if(options.targetElement){targetElement=options.targetElement;}else if(options.targetElement===null){targetElement=null;}
GUI.sendRequest('GUI','printTemplate',params,function(content){if(!content){GUI.message('developer','Failed to load template content','error');return;}
if(silentTemplate!==true){_self.registerLoadedTemplate(system,templateName);}else{_silentTemplates[_getTemplateKey(system,templateName)]=true;}
var main=document.createElement('div');if(options.empty===true&&targetElement){dfx.empty(targetElement);}
if(targetElement){targetElement.appendChild(main);}
dfx.setHtml(main,content);if(main.firstChild&&main.firstChild.nodeType===1&&main.firstChild===main.lastChild){var firstChild=main.firstChild;dfx.insertBefore(main,firstChild);dfx.remove(main);main=firstChild;}
templateName=templateName.replace(/.tpl$/,'');if(options.dialog){GUI.Dialog.add(options.dialog.dialogid,options.modal,options.dialog.parentid,options.dialog.keepOnTop,system,templateName);}
if(callback){callback.call(this,main);}},'raw');};this.reloadTemplate=function(system,template){if(!system||!template){return GUI.message('developer','Invalid template: '+system+'::'+template,'error');}
this.fireReloadTemplateCallbacks(system,template);};this.getTemplateWidgetValues=function(system,template){var values={};var isEmpty=true;var tplClassName=system+template;if(window[tplClassName]&&window[tplClassName].getValue){values.templateData=window[tplClassName].getValue();isEmpty=false;}
var tplKey=_getTemplateKey(system,template);dfx.foreach(_widgetTemplates[tplKey],function(widgetid){var widget=_self.getWidget(widgetid);if(!widget||!widget.getValue){return;}
isEmpty=false;values[widgetid]=widget.getValue();return true;});if(isEmpty===true){return null;}
return values;};this.save=function(){GUI.Overlay.show('loading',{content:'Saving...'});var values={};var ln=_loadedTemplates.length;var valueCollectionErrors=[];for(var i=(ln-1);i>=0;i--){var template=_loadedTemplates[i];var tplInfo=_getTemplateFromKey(template);values[template]=_self.getTemplateWidgetValues(tplInfo.system,tplInfo.template);if(values[template]===null){delete values[template];}}
var saveCallback=function(){var params={templateData:dfx.jsonEncode(values)};GUI.sendRequest('GUI','saveTemplateData',params,function(data){if(!data.result){}else if(data.result.errors){GUI.Overlay.hide();GUI.Overlay.show('warning',{content:data.result.errorList});}else if(dfx.isEmpty(valueCollectionErrors)===false){var errorString=dfx.arrayImplode('<br />',valueCollectionErrors);GUI.Overlay.hide();GUI.Overlay.show('warning',{content:errorString});}else if(data.result.success){dfx.foreach(data.result.success,function(templateKey){_modifiedWidgets={};_modifiedTemplates={};var retVal=data.result.success[templateKey];var tplClassName=templateKey.split(':').join('')
var saveChildren=true;if(window[tplClassName]&&window[tplClassName].saved){saveChildren=window[tplClassName].saved(retVal);}
if(saveChildren!==false){dfx.foreach(_widgetTemplates[templateKey],function(widgetid){var widget=_widgetTemplates[templateKey][widgetid];if(widget&&widget.saved){widget.saved();}});}
GUI.Overlay.hide();GUI.Overlay.show('saved',{content:'Save Complete'});setTimeout(function(){GUI.Overlay.hide();_self.fireSavedCallbacks();},1000);});}else{}});return values;};var i=(ln-1);var processNextTemplate=function(){var templateid=_loadedTemplates[i];var tplClassName=templateid.split('::').join('');if(i===0){var postFn=saveCallback;}else{var postFn=processNextTemplate;i--;};if(window[tplClassName]&&window[tplClassName].getValueCallback){window[tplClassName].getValueCallback.call(_self,function(callbackData,callbackErrors){if(callbackData!==undefined){if(!values[templateid]){values[templateid]={};}
values[templateid].templateData=callbackData;}
if(callbackErrors!==undefined){valueCollectionErrors=dfx.arrayMerge(valueCollectionErrors,callbackErrors);}
return postFn();});}else{return postFn();}};return processNextTemplate();};this.revert=function(){_reverting=true;var ln=_loadedTemplates.length;for(var i=(ln-1);i>=0;i--){var template=_loadedTemplates[i];var tplInfo=_getTemplateFromKey(template);var tplSystemName=tplInfo.system;var tplTemplateName=tplInfo.template;var tplClassName=tplSystemName+tplTemplateName;var revertTemplate=true;if(window[tplClassName]&&window[tplClassName].revert){revertTemplate=window[tplClassName].revert();}
if(revertTemplate===false){dfx.foreach(_modifiedWidgets,function(widgetid){var widget=GUI.getWidget(widgetid);if(widget&&widget.revert&&widget.settings.template.system===tplSystemName&&widget.settings.template.name===tplTemplateName){widget.revert();}});}else if(i===(ln-1)){GUI.reloadTemplate(tplInfo.system,tplInfo.template);}}
_modifiedWidgets={};_modifiedTemplates={};_reverting=false;this.fireRevertedCallbacks();};this.setTemplateModified=function(system,template,state,dontFireEvents){if(_reverting===true){return;}
var tplKey=_getTemplateKey(system,template);if(state===true){_modifiedTemplates[tplKey]=true;}else if(_modifiedTemplates[tplKey]===true){delete _modifiedTemplates[tplKey];dfx.foreach(_widgetTemplates[tplKey],function(idx){_self.setModified(_widgetTemplates[tplKey][idx],false,true);});}
if(dontFireEvents!==true){this.fireModifiedCallbacks(tplKey,state);}};this.setModified=function(widget,state,dontFireEvents){if(_reverting===true){return;}
if(typeof widget==='string'){return GUI.message('developer','Invalid widget object','error');}else{if(state===true){_modifiedWidgets[widget.id]=true;if(widget.settings&&widget.settings.template){var tplKey=null;if(this.isLoadedTemplate(widget.settings.template.system,widget.settings.template.name)===true){var tplKey=_getTemplateKey(widget.settings.template.system,widget.settings.template.name);}else{var tplInfo=GUI.getCurrentTemplate();tplKey=_getTemplateKey(tplInfo.system,tplInfo.template);}
if(tplKey){_modifiedTemplates[tplKey]=true;}}}else if(_modifiedWidgets[widget.id]===true){delete _modifiedWidgets[widget.id];if(widget.settings&&widget.settings.template){var tplKey=_getTemplateKey(widget.settings.template.system,widget.settings.template.name);if(_modifiedTemplates[tplKey]){var hasModifiedWidgets=false;dfx.foreach(_widgetTemplates[tplKey],function(widgetid){if(_modifiedWidgets[widgetid]){hasModifiedWidgets=true;}});if(hasModifiedWidgets===false){delete _modifiedTemplates[tplKey];}}}}
_updateContents(widget.id);if(dontFireEvents!==true){this.fireModifiedCallbacks(widget.id,state);}}};var _originalFunctions=[];var _fnParents=[];var _hooks={before:{},after:{},hookids:{before:{},after:{}}};this.addHook=function(hookid,originalFn,newFn,parent,position){if(_hooks.hookids[position][originalFn]&&_hooks.hookids[position][originalFn][hookid]){return;}
if(!_hooks.hookids[position][originalFn]){_hooks.hookids[position][originalFn]={};}
_hooks.hookids[position][originalFn][hookid]=true;var oln=_originalFunctions.length;var nIndex=0;_originalFunctions.push(originalFn);_fnParents.push(parent);nIndex=(_originalFunctions.length-1);var originalFunction=eval(originalFn);var _hookFn=function(){if(_hooks.before[nIndex]){var bhln=_hooks.before[nIndex].length;for(var j=0;j<bhln;j++){_hooks.before[nIndex][j].apply(this,arguments);}}
var retval=originalFunction.apply(_fnParents[nIndex],arguments);var args=[retval];if(_hooks.after[nIndex]){var argsLength=arguments.length;for(var a=0;a<argsLength;a++){args.push(arguments[a]);}
var ahln=_hooks.after[nIndex].length;for(var j=0;j<ahln;j++){args[0]=_hooks.after[nIndex][j].apply(this,args);}}
return args[0];};eval(originalFn+' = _hookFn');if(!_hooks[position][nIndex]){_hooks[position][nIndex]=[];}
var ahln=_hooks[position][nIndex].length;for(var i=0;i<ahln;i++){if(_hooks[position][nIndex][i].toString()===newFn.toString()){return;}}
_hooks[position][nIndex].push(newFn);};this.addUpdateContentAfterModify=function(widgetid,contentDOMId){_updateContentAfterMdify[widgetid]=contentDOMId;};this.message=function(type,message,level){switch(type){case'developer':if(window.console){if(level==='warning'&&window.console.warn){console.warn(message);}else if(window.console.error){console.error(message);}}
break;case'user':alert(message);break;default:break;}};this.Overlay={_overlays:[],show:function(type,options){type=type||'blank';type=dfx.ucFirst(type);options=options||{};if(!this['_show'+type]){GUI.message('developer','Invalid Overlay type: '+type,'error');return;}
var elem=this['_show'+type].call(this,options);if(elem===false){var self=this;this['_show'+type].call(this,options,function(elem){if(!elem){return;}
if(self._overlays.length>0){dfx.hideElement(self._overlays[(self._overlays.length-1)].element);}
var overlay={type:type,options:options,element:elem};GUI.Dialog.moveBehind('*');self._overlays.push(overlay);GUI.fireOverlayEnabledCallbacks(type,options);});}else{if(this._overlays.length>0){dfx.hideElement(this._overlays[(this._overlays.length-1)].element);}
var overlay={type:type,options:options,element:elem};GUI.Dialog.moveBehind('*');this._overlays.push(overlay);GUI.fireOverlayEnabledCallbacks(type,options);}},hide:function(){if(this._overlays.length===0){return;}
var overlay=this._overlays.pop();dfx.remove(overlay.element);if(this._overlays.length===0){GUI.fireOverlayDisabledCallbacks(overlay.type,overlay.options,null,null);return;}
var nextOverlay=this._overlays[(this._overlays.length-1)];GUI.fireOverlayDisabledCallbacks(overlay.type,overlay.options,nextOverlay.type,nextOverlay.options);dfx.showElement(nextOverlay.element);GUI.Dialog.bringToFront();},addType:function(type,showCallback){this['_show'+type]=showCallback;},_showBlank:function(){var elem=this._getOverlayElem();document.body.appendChild(elem);return elem;},_getOverlayElem:function(extraContent){var elem=document.createElement('div');dfx.attr(elem,'id','GUI-overlay-'+dfx.getUniqueId());dfx.addClass(elem,'GUI-overlay styleDark');dfx.setHtml(elem,'<div class="GUI-overlayOpacity"></div>'+extraContent);document.body.appendChild(elem);return elem;},_showLoading:function(options){var content='<img src="/__web/Systems/GUI/Web/loading_black.gif" class="GUI-overlay-icon" id="GUI-overlay-loading" />';if(options.content){content+='<div id="GUI-overlay-content" style="margin-top: 65px;">';content+=options.content;content+='</div>';}
return this._getOverlayElem(content);},_showError:function(options,callback){if(!callback){return false;}
var self=this;var buttonOpts={value:'Close',colour:'Dark',click:'GUI.Overlay.hide(); GUI.removeWidget(\'errorMsg\');'}
GUI.createWidget('errorMsg','GUIButton',buttonOpts,null,null,function(data){var content='<img src="/__web/Systems/GUI/Web/error.png" class="GUI-overlay-icon" id="GUI-overlay-error" />';content+='<div id="GUI-overlay-content" style="margin-top: 65px;">';content+=options.content+'<br /><br />'+data;content+='</div>';callback.call(self,self._getOverlayElem(content));});},_showWarning:function(options){var content='<img src="/__web/Systems/GUI/Web/warning.png" class="GUI-overlay-icon" id="GUI-overlay-error" />';if(options.content){content+='<div id="GUI-overlay-content" style="margin-top: 65px;">';content+=options.content;content+='</div>';}
return this._getOverlayElem(content);},_showSaved:function(options){var content='<img src="/__web/Systems/GUI/Web/saved.png" class="GUI-overlay-icon" id="GUI-overlay-error" />';if(options.content){content+='<div id="GUI-overlay-content" style="margin-top: 65px;">';content+=options.content;content+='</div>';}
return this._getOverlayElem(content);}};this.Dialog={_data:{dialogs:[],},add:function(dialogid,hasOverlay,parentid,keepOnTop,system,template){parentid=parentid||null;var dialog={dialogid:dialogid,parentid:parentid,hasOverlay:hasOverlay,children:[],keepOnTop:keepOnTop,system:system,template:template};if(parentid!==null){var parentDialog=this._getDialog(parentid);if(parentDialog){parentDialog.children.push(dialogid);}else{GUI.message('developer','Could not find parent dialog ('+parentid+') for "'+dialogid+'" dialog','error');return;}}else if(keepOnTop===true){dfx.addClass(dfx.getId(dialogid),'GUI-keepOnTop');}
if(hasOverlay===true){this.moveBehind('*');}
this._data.dialogs.push(dialog);},remove:function(dialogid){var dialogIndex=this._getDialog(dialogid,true);var dialog=this._data.dialogs[dialogIndex];if(!dialog){return;}
this.removeChildDialogs(dialog);if(dialog.hasOverlay===true){GUI.Overlay.hide();}
this._data.dialogs.splice(dialogIndex,1);dfx.remove(dfx.getId(dialogid));GUI.unloadTemplate(dialog.system,dialog.template);this.bringToFront();},bringToFront:function(){for(var i=(this._data.dialogs.length-1);i>=0;i--){var nextDialog=this._data.dialogs[i];this._bringToFront(nextDialog.dialogid);if(nextDialog.hasOverlay===true){break;}}},removeChildDialogs:function(dialog){var cln=dialog.children.length;for(var i=(cln-1);i>=0;i--){var childDialog=this._getDialog(dialog.children[i]);if(childDialog){this.remove(childDialog.dialogid);}}},_getDialog:function(dialogid,indexOnly){for(var i=(this._data.dialogs.length-1);i>=0;i--){if(this._data.dialogs[i].dialogid===dialogid){if(indexOnly===true){return i;}
return this._data.dialogs[i];}}
return null;},bringToTop:function(dialogid,ignoreOthers){var self=this;if(ignoreOthers!==true){dfx.foreach(this._data.dialogs,function(i){var dialog=self._data.dialogs[i];if(!dialog){return;}
if(dialogid!==dialog.dialogid){dfx.removeClass(dfx.getId(dialog.dialogid),'GUI-topDialog');}});}
var dialog=this._getDialog(dialogid);var elem=dfx.getId(dialogid);dfx.addClass(elem,'GUI-topDialog');if(dialog!==null&&dialog.hasOverlay===false){dfx.addClass(dfx.getId(dialog.parentid),'GUI-topDialog');}
if(dialog!==null){dfx.foreach(dialog.children,function(i){self.bringToTop(dialog.children[i],true);});}},_bringToFront:function(dialogid){dfx.removeClass(dfx.getId(dialogid),'GUI-behindOverlay');},moveBehind:function(dialogid){if(dialogid==='*'){var self=this;dfx.foreach(this._data.dialogs,function(i){var dialog=self._data.dialogs[i];dfx.addClass(dfx.getId(dialog.dialogid),'GUI-behindOverlay');});}else{var dialog=this._data.dialogs[dialogid];if(dialog){dfx.addClass(dfx.getId(dialog.dialogid),'GUI-behindOverlay');this.moveBehind(dialog.parentid);}}}};var _getTemplateKey=function(system,template){if(!system||!template){return GUI.message('developer','Invalid template: '+system+'::'+template,'error');}
return system+'::'+template;};var _getTemplateFromKey=function(templateKey){var tpl=templateKey.split('::');if(!tpl[0]||!tpl[1]){return GUI.message('developer','Invalid template key: '+templateKey,'error');}
return{system:tpl[0],template:tpl[1]};};var _updateContents=function(widgetid){if(!_updateContentAfterMdify[widgetid]){return;}
var widget=GUI.getWidget(widgetid);var elem=dfx.getId(_updateContentAfterMdify[widgetid]);if(!widget||!elem){return;}
var value=widget.getValue();dfx.setHtml(elem,value);};};var sfapi={};sfapi.rootUrl='./';sfapi.rootUrlSuffix='__api';sfapi.scriptTagid='__sfapi';sfapi._getCallback=null;sfapi._api_token=null;sfapi.get=function(system,action,params,callback,format,apiToken,decodeExcludedParams)
{var scriptTag=document.getElementById(sfapi.scriptTagid);var head=document.getElementsByTagName("head").item(0);if(scriptTag){head.removeChild(scriptTag);}
scriptTag=document.createElement('script');scriptTag.setAttribute('id',sfapi.scriptTagid);scriptTag.setAttribute('type','text/javascript');head.appendChild(scriptTag);var src=sfapi.createURL(system,action,format,params,decodeExcludedParams);src=dfx.addToQueryString(src,{'_callback':'sfapi._getCallback'});if(apiToken){src=dfx.addToQueryString(src,{_api_token:apiToken});}else{src=sfapi.attachTokenToURL(src);}
sfapi._getCallback=function(data){if(data.error){alert('Invalid token');}else{if(callback){callback.call(null,data);}}};scriptTag.src=src;};sfapi.post=function(system,action,params,successCallback,errorCallback,format,decodeExcludedParams)
{var url=sfapi.createURL(system,action,format,{},decodeExcludedParams);var token=document.getElementById('__api_token');if(token){params._api_token=token.value;}
if(!errorCallback){errorCallback=function(xhr){if(console&&console.error&&xhr&&xhr.responseText){console.error(xhr.statusText);}};}
dfx.post(url,params,function(data){if(data.error){alert('Invalid token');}else if(successCallback){successCallback.call(null,data);}},errorCallback);};sfapi.createURL=function(system,action,format,params,decodeExcludedParams)
{params=params||{};format=format||'json';decodeExcludedParams=decodeExcludedParams||[];var queryStringParams=dfx.queryString(sfapi.rootUrl);sfapi.rootUrl=dfx.baseUrl(sfapi.rootUrl);var url=dfx.addToPath(sfapi.rootUrl,sfapi.rootUrlSuffix);url=dfx.addToPath(url,format+'/'+system+'/'+action);if(dfx.isEmpty(decodeExcludedParams)===false){var encodedExcludedParams=decodeExcludedParams.join('|');params.decodeExclude=encodedExcludedParams;}
queryStringParams=dfx.arrayMerge(queryStringParams,params);url=dfx.addToQueryString(url,queryStringParams);return url;};sfapi.attachTokenToURL=function(url)
{var token=document.getElementById('__api_token');if(token){var tokenParam={_api_token:token.value};url=dfx.addToQueryString(url,tokenParam);}
return url;};sfapi.login=function(uname,pass,callback)
{sfapi.get('API','getInterfaceUserToken',{username:uname,password:pass},function(data){if(data.result){var tokenElem=document.createElement('input');tokenElem.id='__api_token';tokenElem.type='hidden';tokenElem.value=data.result;document.body.appendChild(tokenElem);if(callback){callback.call(null,true);}}else{if(callback){callback.call(null,false);}}},'json');};sfapi.logout=function(callback)
{sfapi.get('User','logoutUser',{},function(success){if(success){var tokenElem=document.getElementById('__api_token');document.body.removeChild(tokenElem);if(callback){callback.call(null,true);}}else{if(callback){callback.call(null,false);}}});};function AssetTypePicker(id,settings)
{this.id=id;this.settings=settings;this._visibleKidsElem=null;this._elem=dfx.getId(id);GUI.addWidgetEvent(this,'typeSelectionChanged');this.init();}
AssetTypePicker.prototype={init:function()
{var c=this.settings._lists.length;var self=this;for(var i=0;i<c;i++){(function(listid){var widget=GUI.getWidget(listid);if(widget){widget.addItemClickedCallback(function(itemid,elem){if(dfx.hasClass(elem,'category')===true){if(dfx.hasClass(self._elem,'showKids')===false){self.showKids(itemid);return;}}
if(dfx.hasClass(self._elem,'allSelected')===false&&dfx.hasClass(elem.parentNode,'allSelected')===false){self.setTypeSelection(elem,!dfx.hasClass(elem,'selected'));}});}})(this.settings._lists[i])}
var categories=this.settings._categories;var catCount=categories.length;for(var i=0;i<catCount;i++){(function(category){var widgetid=self.id+'-selectAll-'+category;var checkBox=GUI.getWidget(widgetid);if(!checkBox){return;}
checkBox.addClickCallback(function(state){self.setCategorySelection(category,state);});})(categories[i]);}},setCategorySelection:function(category,selectAll)
{this._setCategorySelection(category,selectAll);this.fireTypeSelectionChangedCallbacks(category,selectAll,true);},_setCategorySelection:function(category,selectAll)
{var categoryList=GUI.getWidget(this.id+'-categories');var categoryItem=categoryList.getItemElement(category);var listElem=dfx.getId(this.id+'-types-'+category);if(!listElem){return;}
if(selectAll===true){dfx.addClass(listElem,'allSelected');dfx.addClass(categoryItem,'allSelected');}else{dfx.removeClass(listElem,'allSelected');dfx.removeClass(categoryItem,'allSelected');}
this._updateCategorySelection(category);},setTypeSelection:function(item,selected)
{var elem=item;if(typeof elem==='string'){var elems=dfx.find(this._elem,'li[itemid="'+elem+'"]');if(elems.length===0){return;}
elem=elems[0];}
var category=elem.parentNode.id.split('-').pop();if(selected===true){dfx.addClass(elem,'selected');}else{dfx.removeClass(elem,'selected');}
this._toggleSelectAll(false);this._setCategorySelection(category,false);this.fireTypeSelectionChangedCallbacks(dfx.attr(item,'itemid'),selected);GUI.setModified(this,true);},toggleSelectAll:function(selectAll)
{this._toggleSelectAll(selectAll);this.fireTypeSelectionChangedCallbacks(true,selectAll);},_toggleSelectAll:function(selectAll)
{if(selectAll===true){dfx.addClass(this._elem,'allSelected');}else{dfx.removeClass(this._elem,'allSelected');}
var allTypesToggle=GUI.getWidget(this.id+'-listAllTypes');if(allTypesToggle){allTypesToggle.setValue(selectAll);}},setAllowedTypes:function(types)
{var unSelectables=dfx.getClass('un-selectable',this._elem);dfx.removeClass(unSelectables,'un-selectable');if(types===true){return;}
var items=dfx.getTag('li',this._elem);var categoryList=dfx.getId(this.id+'-categories');dfx.addClass(items,'un-selectable');var buttons=dfx.getClass('GUIButton',this._elem);var bCount=buttons.length;for(var i=0;i<bCount;i++){var widget=GUI.getWidget(buttons[i].id);if(widget){widget.disable();}}
if(dfx.empty(types)===true){return;}
var categoryList=GUI.getWidget(this.id+'-categories');if(types.categories){var clen=types.categories.length;for(var i=0;i<clen;i++){var category=types.categories[i];var listElem=dfx.getId(this.id+'-types-'+category);dfx.removeClass(dfx.getClass('un-selectable',listElem),'un-selectable');dfx.removeClass(categoryList.getItemElement(category),'un-selectable');var widget=GUI.getWidget(this.id+'-selectAll-'+category);if(widget){widget.enable();}}}
if(types.types){var self=this;dfx.foreach(types.types,function(index){var typeid=types.types[index];dfx.removeClass(self.getTypeElement(typeid),'un-selectable');dfx.removeClass(categoryList.getItemElement(self.getTypeCategory(typeid)),'un-selectable');return true;});}},back:function()
{if(!this._visibleKidsElem){return;}
dfx.removeClass(this._visibleKidsElem,'visible');dfx.removeClass(dfx.getId(this.id),'showKids');},showKids:function(category)
{var elem=dfx.getId(this.id+'-types-'+category+'-container');if(!elem){return;}
this._visibleKidsElem=elem;dfx.addClass(elem,'visible');dfx.addClass(dfx.getId(this.id),'showKids');},getValue:function()
{if(dfx.hasClass(this._elem,'allSelected')===true){return true;}
var categories=this.settings._categories;var c=categories.length;var selected={categories:[],types:[]};for(var i=0;i<c;i++){var elem=dfx.getId(this.id+'-types-'+categories[i]);if(dfx.hasClass(elem,'allSelected')===true){selected.categories.push(categories[i]);}else{var listItems=dfx.getTag('li',elem);var itemCount=listItems.length;for(var j=0;j<itemCount;j++){if(dfx.hasClass(listItems[j],'selected')===true){selected.types.push(dfx.attr(listItems[j],'itemid'));}}}}
return selected;},setValue:function(value)
{var items=dfx.getTag('li',this._elem);var categoryList=dfx.getId(this.id+'-categories');var self=this;dfx.removeClass(items,'selected');dfx.removeClass(items,'parentSelected');dfx.removeClass(dfx.getTag('ul',this._elem),'parentSelected');if(value===true){this._toggleSelectAll(true);return;}
if(!value.categories&&!value.types){return GUI.message('developer','Invalid argument','error');}
if(value.categories){for(var category in value.categories){this._setCategorySelection(category,true);}}
if(value.types){for(var type in value.types){this.setTypeSelection(type,true);}}},getTypeCategory:function(typeid)
{var elem=this.getTypeElement(typeid);var category=elem.parentNode.id.split('-').pop();return category;},getTypeElement:function(type)
{var elems=dfx.find(this._elem,'li[itemid="'+type+'"]');if(elems.length>0){return elems[0];}
return null;},_updateCategorySelection:function(category)
{var categoryList=GUI.getWidget(this.id+'-categories');var categoryItem=categoryList.getItemElement(category);var listElem=dfx.getId(this.id+'-types-'+category);if(!listElem){return;}
var selectedItems=dfx.getClass('selected',listElem);if(selectedItems.length===0){dfx.removeClass(categoryItem,'selected');}else{dfx.addClass(categoryItem,'selected');}},_getTypeCategoryName:function(type)
{var ids=this.settings._categoryTypeids;for(var catName in ids){if(ids[catName]===type){return catName;}}
return null;}}
var BackupBackupScreen=new function()
{this.download=function(name){var params={name:name};var url=GUI.getRequestURL('Backup','downloadBackup',params,'raw');window.location.href=url;};this.restore=function(name){var bubble=GUI.getWidget('backupScreen-confirmRestore');var rowid=dfx.getParents(bubble.targetElement,'tr')[0].getAttribute('rowid');var params={name:rowid};var url=GUI.sendRequest('Backup','queueRestoreBackup',params,function(response){if(response&&response.result){var params={name:rowid};var options={modal:true,dialog:{dialogid:'BackupRestoreDialog-dialog'}};GUI.loadTemplate('Backup','RestoreDialog',params,function(){var intervalid=window.setInterval(function(){GUI.sendRequest('Backup','checkRestoreProgress',params,function(data){var checkAgain=true;if(data.result.complete===true){dfx.addClass(dfx.getId('BackupRestoreDialog-dialog'),'complete');GUI.sendRequest('Backup','notifyRestoreComplete',params,null);checkAgain=false;}else if(data.result.failed===true){dfx.addClass(dfx.getId('BackupRestoreDialog-dialog'),'failed');GUI.sendRequest('Backup','notifyRestoreComplete',params,null);checkAgain=false;}
if(data.result.message!==null){dfx.setHtml(dfx.getId('BackupRestoreDialog-bottom-status'),data.result.message);}
if(checkAgain===false){window.clearInterval(intervalid);}});},10000);GUI.getWidget('BackupRestoreDialog-dialog').addDialogClosedCallback(function(){var params={'sq_mode-switcher':'SystemConfig','sq_SystemConfig-screen-switcher':'BackupScreen'};var url=dfx.addToQueryString(sfapi.rootUrl,params);location.href=url;});},options);}});bubble.hide();};};var ContextContextsScreen=new function()
{var _data=null;var _levels=[1,2,3];var _newCount={1:0,2:0,3:0};this.initScreen=function(data){_data=data;var numLevels=_levels.length;for(var i=1;i<=numLevels;i++){_newCount[i]=(data[i]||[]).length;this.setListValueGetter(i);}
var lvLen=_levels.length;for(var i=0;i<lvLen;i++){var ul=dfx.getTag('ul.ContextScreen-removedList',dfx.getId('ContextsScreen-context-level'+_levels[i]))[0];var lis=dfx.getTag('li',ul);dfx.foreach(lis,function(idx){var btnid='restore-level'+_levels[i]+'-'+lis[idx].getAttribute('itemid')+'-btn';var btn=GUI.getWidget(btnid);btn.addClickCallback(function(){GUI.setTemplateModified('Context','ContextsScreen',true);});return true;});GUI.getWidget('ContextsScreen-level'+_levels[i]+'-contexts').addItemsSortedCallback(function(){GUI.setTemplateModified('Context','ContextsScreen',true);});}};this.setListValueGetter=function(level){GUI.getWidget('ContextsScreen-level'+level+'-contexts').setItemValueGetter(function(itemid,node){var inputs=dfx.getTag('div.GUITextBox',node);var parts=inputs[0].id.replace(/level(\d+)-(\d+)-context-name/,'$1:$2').split(':');return{level:parts[0],id:parts[1],name:GUI.getWidget(inputs[0].id).getValue(),abbr:GUI.getWidget(inputs[1].id).getValue()};});};this.addNewRole=function(level){var itemsData={};itemsData[_newCount[level]]={id:'level'+level+'-new-'+_newCount[level],name:'',abbr:'',level:level};_newCount[level]++;GUI.getWidget('ContextsScreen-level'+level+'-contexts').generateItems(itemsData,function(rows){},'Context','generateSystemConfigField');};this.restoreRole=function(level,cid){var tagName='li';var className='restore-level'+level+'-'+cid;var startElem=dfx.getId('ContextsScreen-context-level'+level);var li=dfx.getTag(tagName+'.'+className,startElem);dfx.addClass(li[0],'restored');var btn=dfx.getTag('button',li[0]);dfx.hideElement(btn[0]);var recoverText=dfx.getClass('ContextScreen-removedContextField-recover',li[0])[0];dfx.removeClass(recoverText,'hidden');};this.getValue=function(){var data={restored:[]};var lvLen=_levels.length;for(var i=0;i<lvLen;i++){var ul=dfx.getTag('ul.ContextScreen-removedList',dfx.getId('ContextsScreen-context-level'+_levels[i]))[0];var lis=dfx.getTag('li.restored',ul);(function(_level){dfx.foreach(lis,function(idx){data.restored.push({level:_level,id:lis[idx].getAttribute('itemid')});return true;});})(_levels[i]);}
return data;};this.saved=function(tplData){GUI.setTemplateModified('Context','ContextsScreen',false);GUI.reloadTemplate('Context','ContextsScreen');if(dfx.isEmpty(tplData)===true){GUI.getWidget('contextSwitcherButton').hideWidget(tplData);}else{GUI.getWidget('contextSwitcherButton').showWidget(tplData);}};};function ContextContextSwitcher(id,settings)
{this.id=id;this.settings=settings;this.init();}
ContextContextSwitcher.prototype={hideWidget:function(contextInfo)
{var widget=dfx.getId(this.id);dfx.addClass(widget,'hidden');this.reloadPanel(contextInfo);},init:function()
{var button=dfx.getId('contextSwitcherButton');var self=this;dfx.addEvent(button,'click',function(e){var mainWidget=dfx.getId(self.id);if(dfx.hasClass(mainWidget,'hidden')===true){return;}
var target=dfx.getMouseEventTarget(e);var targetFound=false;while(!targetFound){if(dfx.hasClass(target,'ContextContextSwitcher-icon')===true||dfx.hasClass(target,'ContextContextSwitcher-text')===true){self.togglePanel();targetFound=true;}else if(target.id===this.id+'-sel-button'){self.switchContext();targetFound=true;}else if(target===mainWidget){targetFound=true;}
target=target.parentNode;}});},reloadPanel:function(contextInfo)
{var panel=dfx.getClass('ContextContextSwitcher-panel',dfx.getId(this.id))[0];dfx.empty(panel);if(dfx.isEmpty(contextInfo)===true){return;}
var context1=contextInfo[1]||{};var context2=contextInfo[2]||{};var context3=contextInfo[3]||{};var options={targetElement:panel};var params={context1:context1,context2:context2,context3:context3};GUI.loadTemplate('ContextContextSwitcher','switcherPanel',params,null,options,true);},showWidget:function(contextInfo)
{var widget=dfx.getId(this.id);dfx.removeClass(widget,'hidden');this.reloadPanel(contextInfo);},switchContext:function()
{var context=this._getActiveContext();var resourceid=this.settings.resourceid;var options={'context':context};var modeSwitcher=GUI.getWidget('mode-switcher');var currentTemplate=GUI.getCurrentTemplate();var currentMode=modeSwitcher.current;if(currentMode.template!=='Edit'){options.mode=currentMode.template;options.screen=currentTemplate.template;}
this.togglePanel();var contextParams={'context':dfx.jsonEncode(context),'persistent':true};GUI.sendRequest('Context','setCurrentContext',contextParams,function(oldContext){if(oldContext){GUI.redirect(resourceid,options);}});},_getActiveContext:function()
{var context='00';for(var i=3;i>=1;i--){var sel=dfx.getId(this.id+'-sel-'+i);if(!sel){context+='00';continue;}
context+=sel.value;}
return context;},togglePanel:function()
{var panel=dfx.getClass('ContextContextSwitcher-panel',dfx.getId(this.id))[0];if(dfx.hasClass(panel,'hidden')===true){dfx.removeClass(panel,'hidden');}else{dfx.addClass(panel,'hidden');}},toggleWidget:function()
{var widget=dfx.getId(this.id);if(dfx.hasClass(widget,'hidden')===true){dfx.removeClass(widget,'hidden');}else{dfx.addClass(widget,'hidden');}}};var CronCronScreen={init:function()
{}};CronCronScreen.init();function GUIAssetFinder(id,settings)
{this.id=id;this.settings=settings;this._selectedAssetsCallback=null;GUI.addWidgetEvent(this,'finderClosed');GUI.addWidgetEvent(this,'finderAssetSelected');var self=this;GUI.getWidget(id+'-dialog').addDialogClosedCallback(function(){self.fireFinderClosedCallbacks();});this.init();}
GUIAssetFinder.prototype={init:function()
{var toolbarHeight=0;var toolbar=dfx.getClass('AssetFinder-toolbar')[0];if(toolbar){toolbarHeight=parseInt(dfx.getElementHeight(toolbar));toolbarHeight=(toolbarHeight+2);}
var linHeight=parseInt(dfx.getElementHeight(dfx.getId(this.id+'-lineage')));var browserElem=dfx.getId(this.id+'-assetBrowser');var midElem=dfx.getClass('GUIDialog-middle',dfx.getId(this.id+'-dialog'))[0];var initHeight=parseInt(dfx.getElementHeight(midElem));var otherHeight=(linHeight+toolbarHeight);var browserHeight=(initHeight-otherHeight-2);dfx.setStyle(browserElem,'height',browserHeight+'px');GUI.getWidget(this.id+'-dialog').addDialogResizedCallback(function(ui,contentSize){dfx.setStyle(dfx.getId(this.id+'-assetBrowser'),'height',(contentSize.height-otherHeight)+'px');});GUI.getWidget(this.id+'-dialog').addDialogClosedCallback(function(){GUI.unloadTemplate('GUIAssetFinder','GUIAssetFinder');});if(toolbar){GUIAssetFinderViewTypes.addEvents(this.id,toolbar);var tBrowserElem=dfx.getId(this.id+'-assetBrowser-thumbs');if(tBrowserElem!==null){dfx.setStyle(tBrowserElem,'height',browserHeight+'px');GUI.getWidget(this.id+'-dialog').addDialogResizedCallback(function(ui,contentSize){dfx.setStyle(tBrowserElem,'height',(contentSize.height-otherHeight)+'px');});}
GUIAssetFinderSearch.addEvents(this.id);var searchResultsElem=dfx.getClass('AssetFinder-searchResults')[0];if(searchResultsElem!==null){dfx.setStyle(searchResultsElem,'height',(initHeight-toolbarHeight)+'px');GUI.getWidget(this.id+'-dialog').addDialogResizedCallback(function(ui,contentSize){dfx.setStyle(searchResultsElem,'height',(contentSize.height-toolbarHeight)+'px');});}}
var self=this;var browserWidget=GUI.getWidget(this.id+'-assetBrowser');if(browserWidget){browserWidget.addItemClickedCallback(function(id,count,element){self._updateCurrentSelection(element);});}
var tBrowserWidget=GUI.getWidget(this.id+'-assetBrowser-thumbs');if(tBrowserWidget){tBrowserWidget.addItemClickedCallback(function(id,count,element){self._updateCurrentSelection(element);});}
var currentSelection=dfx.getClass('AssetFinder-selectedAsset')[0];if(currentSelection&&dfx.hasClass(currentSelection,'hidden')===true){if(browserWidget){var firstItem=dfx.getClass('GUIColumnBrowser-item',browserWidget.elem)[0];var firstId=dfx.attr(firstItem,'itemid');browserWidget.selectItem(firstId,0);}
if(tBrowserWidget){var firstItem=dfx.getClass('GUIThumbBrowser-item',tBrowserWidget.elem)[0];var firstId=dfx.attr(firstItem,'itemid');tBrowserWidget.selectItem(firstId,0);}}},_updateCurrentSelection:function(element)
{var currentSelectionField=dfx.getClass('AssetFinder-selectedAsset')[0];if(currentSelectionField){if(dfx.hasClass(element,'selected')===true){var currentAssetIcon=dfx.getClass('selectedAssetIcon',currentSelectionField)[0];var currentAssetName=dfx.getClass('selectedAssetName',currentSelectionField)[0];var currentAssetid=dfx.getClass('selectedAssetid',currentSelectionField)[0];var icon=dfx.getTag('img',element)[0];var iconUrl=dfx.attr(icon,'src');var name=dfx.attr(element,'itemtitle');var assetid=dfx.attr(element,'itemid');dfx.attr(currentAssetIcon,'style','background-image:url('+iconUrl+');');dfx.attr(currentSelectionField,'title',name);dfx.setHtml(currentAssetName,name+'&nbsp;&nbsp;');dfx.setHtml(currentAssetid,'[ #'+assetid+' ]');dfx.removeClass(currentSelectionField,'hidden');}else{dfx.addClass(currentSelectionField,'hidden');}}},setSelectAssetsCallback:function(callback)
{this._selectedAssetsCallback=callback;},selectAssets:function()
{if(dfx.hasClass(dfx.getClass('AssetFinder-main')[0],'hidden')===true){var selection=[];var items=dfx.getClass('result-item',dfx.getId('searchResults-results'));var itemLength=items.length;for(var i=0;i<itemLength;i++){var item=items[i];if(dfx.hasClass(item.parentNode.parentNode,'selected')===true){selection.push(dfx.attr(item,'assetid'));}}}else{var listBrowser=dfx.getId(this.id+'-assetBrowser');if(dfx.hasClass(listBrowser,'hidden')===true){var activeWidget=GUI.getWidget(this.id+'-assetBrowser-thumbs');if(typeof activeWidget==='undefined'){activeWidget=GUI.getWidget(this.id+'-assetBrowser');}}else{var activeWidget=GUI.getWidget(this.id+'-assetBrowser');}
var selection=activeWidget.getValue();}
if(this._selectedAssetsCallback){if(this._selectedAssetsCallback.call(this,selection)===false){return;}}
this.close();this.fireFinderAssetSelectedCallbacks(selection);},close:function()
{GUI.getWidget(this.id+'-dialog').close();}};var GUIAssetFinderSearch=new function()
{this.id=null;this.lineage={};this.init=function(lineage)
{this.lineage=lineage;};this.addEvents=function(id)
{this.id=id;var toolbar=dfx.getClass('AssetFinder-toolbar')[0];var cancel=dfx.getClass('AssetFinder-cancel',toolbar)[0];var searchField=GUI.getWidget(this.id+'-searchField');var self=this;dfx.addEvent(cancel,'click',function(){self.reset(self.id);});if(searchField){searchField.addKeyPressCallback(function(value,e){var keyValue=dfx.which(e);if(keyValue===13){self.search(self.id);}});}};this.search=function(id)
{this.id=id;var self=this;var listBrowser=GUI.getWidget(this.id+'-assetBrowser');var rootNodes=listBrowser.settings.rootNodes;var searchField=GUI.getWidget(this.id+'-searchField');var term=searchField.getValue();if(term.length>0){var params={'rootNodes':dfx.jsonEncode(rootNodes),'term':term,'settings':dfx.jsonEncode(listBrowser.settings)};GUI.sendRequest('GUIAssetFinder','search',params,function(contents){self.viewSearchDiv(true,true);var searchDiv=dfx.getClass('AssetFinder-searchResults')[0];dfx.setHtml(searchDiv,contents);var listWidget=GUI.getWidget('searchResults-results');listWidget.addItemClickedCallback(function(id,item){self.removeSelected();self.selectItem(item);});var items=dfx.getClass('result-item',searchDiv);var iLength=items.length;if(iLength>0){self.selectItem(items[0].parentNode.parentNode);}
var tContent='<span class="searchResults-main-title">Search Results</span>';tContent+='<span class="searchResults-main-result-count"> ('+iLength+') </span>';self.updateSearchTitle(tContent);},'raw');}};this.removeSelected=function(){var rDiv=dfx.getClass('AssetFinder-searchResults')[0];var items=dfx.getTag('li',rDiv);var itemsLn=items.length;for(var i=0;i<itemsLn;i++){var item=items[i];dfx.removeClass(item,'selected');}};this.selectItem=function(element){if(element!==null){var rDiv=dfx.getClass('AssetFinder-searchResults')[0];var leftside=dfx.getClass('searchResults-left',rDiv)[0];var summaryDiv=dfx.getClass('result-summary',element)[0];var summary=dfx.getHtml(summaryDiv);dfx.setHtml(leftside,summary);dfx.addClass(element,'selected');}};this.removeSearchTitle=function()
{var titleDiv=dfx.getId(this.id+'-title');if(titleDiv!==null){dfx.remove(titleDiv);}};this.reset=function(id)
{this.id=id;var searchField=GUI.getWidget(this.id+'-searchField');if(typeof searchField!=='undefined'){searchField.setValue('',true);}
this.viewSearchDiv(false,true);this.removeSearchTitle();};this.showAsset=function(id,assetid,name){this.id=id;var lineage=[];if(dfx.isset(this.lineage[assetid])===true){lineage=this.lineage[assetid];}
this.reset(this.id);var lineageWidget=GUI.getWidget(this.id+'-lineage');lineageWidget.setLineage(lineage);GUIAssetFinderViewTypes.load(this.id,assetid,name);};this.updateSearchTitle=function(value)
{var titleDiv=dfx.getId(this.id+'-title');if(titleDiv!==null){dfx.setHtml(titleDiv,value);}else{var dialog=dfx.getId(this.id+'-dialog');var dialogMid=dfx.getClass('GUIDialog-middle',dialog)[0];titleDiv=document.createElement('div');dfx.setHtml(titleDiv,value);dfx.attr(titleDiv,'id',this.id+'-title');dfx.insertBefore(dialogMid,titleDiv);}};this.viewSearchDiv=function(show,clear)
{var mainDiv=dfx.getClass('AssetFinder-main')[0];var searchDiv=dfx.getClass('AssetFinder-searchResults')[0];if(show===true){dfx.addClass(mainDiv,'hidden');dfx.removeClass(searchDiv,'hidden');}else{dfx.addClass(searchDiv,'hidden');dfx.removeClass(mainDiv,'hidden');}
if(clear===true){dfx.empty(searchDiv);}};};var GUIAssetFinderViewTypes=new function()
{this.id=null;this._viewTypeContainer=null;this._toolbar=null;this._listBrowser=null;this._thumbBrowser=null;this._selected={};this.addEvents=function(id,toolbar)
{this.id=id;var self=this;var viewTypeDiv=dfx.getClass('AssetFinder-viewTypes',toolbar);if(viewTypeDiv.length>0){this._viewTypeContainer=viewTypeDiv[0];this._toolbar=toolbar;this._listBrowser=GUI.getWidget(this.id+'-assetBrowser');this._thumbBrowser=GUI.getWidget(this.id+'-assetBrowser-thumbs');dfx.addEvent(viewTypeDiv[0],'click',function(e){var targetFound=false;var target=dfx.getMouseEventTarget(e);while(!targetFound){if(dfx.hasClass(target,'viewType-icon')===true){var mainDiv=dfx.getClass('AssetFinder-main')[0];if(dfx.hasClass(mainDiv,'hidden')===true){var searchDiv=dfx.getClass('AssetFinder-searchResults')[0];dfx.addClass(searchDiv,'hidden');dfx.removeClass(mainDiv,'hidden');var searchTitle=dfx.getClass('AssetFinder-title')[0];if(searchTitle!==null){dfx.remove(searchTitle);}}
if(dfx.hasClass(target,'selected')===false){self.viewTypeClicked(target,e);}
targetFound=true;}else if(dfx.hasClass(target,'AssetFinder-viewTypes')===true){break;}
target=target.parentNode;}});}};this.changeToList=function(id,forceReload)
{this.id=id;var self=this;this._listBrowser=GUI.getWidget(this.id+'-assetBrowser');this._thumbBrowser=GUI.getWidget(this.id+'-assetBrowser-thumbs');dfx.removeClass(this._listBrowser.elem,'hidden');if(typeof this._thumbBrowser!=='undefined'){dfx.addClass(this._thumbBrowser.elem,'hidden');}
if(forceReload===true){var lineageWidget=this._listBrowser._lineageWidget;var container=dfx.getClass('AssetFinder-assetBrowser-container')[0];var settings=this._listBrowser.settings;var currentLineage=lineageWidget.getLineage();settings['lineage']=currentLineage;for(var key in this._selected){var add=true;for(var currentKey in settings['lineage']){if(settings['lineage'][currentKey]['assetid']===key){add=false;}}
if(add===true){settings['lineage'].push({'assetid':key,'name':this._selected[key]});}}
var params={id:this.id+'-assetBrowser',type:'GUIColumnBrowser',settings:dfx.jsonEncode(settings),tplSystem:settings.template.system,tplName:settings.template.name};GUI.sendRequest('GUI','createWidget',params,function(contents){dfx.empty(container);dfx.setHtml(container,contents);var toolbarHeight=0;var toolbar=dfx.getClass('AssetFinder-toolbar')[0];if(toolbar){toolbarHeight=parseInt(dfx.getElementHeight(toolbar));toolbarHeight=(toolbarHeight+2);}
var linHeight=parseInt(dfx.getElementHeight(dfx.getId(self.id+'-lineage')));var browserElem=dfx.getId(self.id+'-assetBrowser');var midElem=dfx.getClass('GUIDialog-middle',dfx.getId(self.id+'-dialog'))[0];var initHeight=parseInt(dfx.getElementHeight(midElem));dfx.setStyle(browserElem,'height',(initHeight-linHeight-toolbarHeight-2)+'px');var browserWidget=GUI.getWidget(self.id+'-assetBrowser');if(browserWidget){browserWidget.addItemClickedCallback(function(id,count,element){GUIAssetFinder.prototype._updateCurrentSelection.call(this,element);});lineageWidget=browserWidget._lineageWidget;lineageWidget.setLineage(currentLineage);}},'raw');}};this.changeToThumb=function(id,size,forceReload)
{this.id=id;this._listBrowser=GUI.getWidget(this.id+'-assetBrowser');dfx.addClass(this._listBrowser.elem,'hidden');dfx.removeClass(this._thumbBrowser.elem,'hidden');if(size==='medium'){dfx.removeClass(this._thumbBrowser.elem,'large');dfx.addClass(this._thumbBrowser.elem,'medium');}else{dfx.removeClass(this._thumbBrowser.elem,'medium');dfx.addClass(this._thumbBrowser.elem,'large');}
if(forceReload===true){var wrapper=dfx.getClass('GUIThumbBrowser-thumbWrapper',this._thumbBrowser.elem)[0];var lineageWidget=this._thumbBrowser._lineageWidget;var settings=this._thumbBrowser.settings;var parentid=lineageWidget.getSelectedParent();if(parentid.toString()==='0'){parentid=dfx.attr(wrapper,'parentid');}
settings['startNode']=parentid;settings['size']=size;var self=this;var params={settings:dfx.jsonEncode(settings),parentid:parentid,selected:lineageWidget.getSelectedAsset()};GUI.sendRequest('GUIThumbBrowser','getChildrenContents',params,function(contents){dfx.empty(wrapper);dfx.setHtml(wrapper,contents);dfx.attr(wrapper,'parentid',parentid);self._thumbBrowser.setLineage(lineageWidget.getLineage());var items=dfx.getClass('GUIThumbBrowser-item',self._thumbBrowser.elem);var itemsLn=items.length;for(var i=0;i<itemsLn;i++){var assetid=dfx.attr(items[i],'itemid');if(assetid.toString()===params.selected.toString()){dfx.trigger(items[i],'click');}
if(dfx.inArray(assetid,self._selected,false)===true){dfx.trigger(items[i],'click');}}},'raw');}};this.getSelectedViewType=function()
{var toolbar=dfx.getClass('AssetFinder-toolbar')[0];var viewTypeDiv=dfx.getClass('AssetFinder-viewTypes',toolbar);var viewTypeIcon=null;if(viewTypeDiv.length>0){var viewTypes=dfx.getClass('viewType-icon',viewTypeDiv[0]);var typeLn=viewTypes.length;for(var i=0;i<typeLn;i++){var icon=viewTypes[i];if(dfx.hasClass(icon,'selected')===true){viewTypeIcon=icon;break;}}}
return viewTypeIcon;};this.load=function(id,assetid,name)
{this._selected={};this._selected[assetid]=name;var viewTypeIcon=this.getSelectedViewType();var forceReload=true;if(dfx.hasClass(viewTypeIcon,'medium')===true){this.changeToThumb(id,'medium',forceReload);}else if(dfx.hasClass(viewTypeIcon,'large')===true){this.changeToThumb(id,'large',forceReload);}else{this.changeToList(id,forceReload);}};this.resetViewTypes=function()
{var viewTypes=dfx.getClass('viewType-icon',this._viewTypeContainer);var viewTypesLn=viewTypes.length;for(var type=0;type<viewTypesLn;type++){var icon=viewTypes[type];dfx.removeClass(icon,'selected');}};this.viewChanged=function(current,next,lastSelected)
{var changed=false;if(dfx.jsonEncode(current.getLineage())!==dfx.jsonEncode(next.getLineage())||dfx.jsonEncode(this._selected)!==dfx.jsonEncode(lastSelected)){changed=true;}
return changed;};this.viewTypeClicked=function(element,e)
{var oldSelected=this._selected;if(dfx.hasClass(this._thumbBrowser.elem,'hidden')===false){var currentWidget=GUI.getWidget(this.id+'-assetBrowser-thumbs');}else{var currentWidget=GUI.getWidget(this.id+'-assetBrowser');}
this._selected=currentWidget.getSelected();this.resetViewTypes();dfx.addClass(element,'selected');var forceReload=true;if(dfx.hasClass(element,'list')===true){var nextWidget=GUI.getWidget(this.id+'-assetBrowser');var forceReload=this.viewChanged(currentWidget,nextWidget,oldSelected);this.changeToList(this.id,forceReload);}else if(dfx.hasClass(element,'medium')===true){var nextWidget=GUI.getWidget(this.id+'-assetBrowser-thumbs');var forceReload=this.viewChanged(currentWidget,nextWidget,oldSelected);this.changeToThumb(this.id,'medium',forceReload);}else if(dfx.hasClass(element,'large')===true){var nextWidget=GUI.getWidget(this.id+'-assetBrowser-thumbs');var forceReload=this.viewChanged(currentWidget,nextWidget,oldSelected);this.changeToThumb(this.id,'large',forceReload);}};};function GUIAssetPicker(id,settings)
{this.id=id;this.settings=settings;this.assetid=0;this.hideAssetid=false;this.readOnly=false;GUI.addWidgetEvent(this,'selected');GUI.addWidgetEvent(this,'assetCleared');this.init();}
GUIAssetPicker.prototype={init:function()
{var self=this;this.assetid=this.settings.initialAsset;this.readOnly=this.settings.readOnly
var clearRevertDiv=dfx.getId(this.id+'-clearRevertInner');dfx.addEvent(clearRevertDiv,'click',function(){self.hideAssetid=!self.hideAssetid;self.setValue(self.assetid);});var changeButton=GUI.getWidget(this.id+'-changeButton');changeButton.addClickCallback(function(){var options={modal:true,dialog:{dialogid:'AssetPicker-selectAsset-dialog'}};var templateSettings={id:'AssetPicker-selectAsset',rootNodes:self.settings.rootNode,usedForCode:'guiAssetPicker'};GUI.loadTemplate('GUIAssetFinder','GUIAssetFinder',templateSettings,function(){var assetFinder=GUI.getWidget('AssetPicker-selectAsset');assetFinder.setSelectAssetsCallback(function(selection){dfx.foreach(selection,function(idx){self.assetid=selection[idx];self.hideAssetid=false;self.setValue(self.assetid,false);return true;});return true;});assetFinder.addFinderAssetSelectedCallback(function(assetid){self._setModified(true);});assetFinder.addFinderClosedCallback(function(){self._setModified(false);});},options);});},setValue:function(assetid,activateSave)
{var self=this;var widgetDiv=dfx.getId(this.id);var assetNameDiv=dfx.getId(this.id+'-currentAssetName');var assetidDiv=dfx.getId(this.id+'-currentAssetid');var changeButton=GUI.getWidget(this.id+'-changeButton');if(assetid===null){assetid=0;}
this.assetid=assetid;dfx.removeClass(widgetDiv,'empty');var assetSelectDiv=dfx.getClass('GUI-textOverflow',widgetDiv)[0];var currentWidth=dfx.getStyle(assetSelectDiv,'width');var spacer=35;var icon=dfx.getClass('currentAssetIcon',widgetDiv)[0];currentWidth=parseInt(currentWidth);if(this.hideAssetid===true){if(dfx.hasClass(widgetDiv,'selected')===true){dfx.setStyle(assetSelectDiv,'width',(currentWidth+spacer)+'px');}
dfx.removeClass(widgetDiv,'selected');dfx.setNodeTextContent(assetNameDiv,this.settings.emptyText);dfx.setNodeTextContent(assetidDiv,'');dfx.attr(icon,'src','');changeButton.changeValue('empty');this.fireAssetClearedCallbacks();}else if(this.assetid.toString()!=='0'){var params={assetid:this.assetid};GUI.sendRequest('GUIAssetPicker','getAssetInformation',params,function(data){if(data.result!==null){if(dfx.hasClass(widgetDiv,'selected')===false){dfx.setStyle(assetSelectDiv,'width',(currentWidth-spacer)+'px');}
dfx.setNodeTextContent(assetNameDiv,data.result.name);dfx.setNodeTextContent(assetidDiv,'[#'+assetid+']');dfx.attr(icon,'src',data.result.icon);dfx.addClass(widgetDiv,'selected');changeButton.changeValue('full');self.fireSelectedCallbacks(assetid);}});}
if(activateSave===null){activateSave=true;}
if(activateSave===true){this._setModified(true);}},getValue:function()
{if(this.hideAssetid===true){return this.getValueNotSetValue();}else{return this.assetid;}},revert:function()
{this.hideAssetid=false;this.setValue(this.settings.initialAsset);},saved:function()
{this.settings.initialAsset=this.assetid;this.revert();},setReadOnly:function(readOnly)
{this.readOnly=readOnly;if(readOnly===true){dfx.addClass(dfx.getId(this.id),'readOnly');}else{dfx.removeClass(dfx.getId(this.id),'readOnly');}},getValueNotSetValue:function()
{return 0;},isChangedValue:function(testValue)
{var notSetValue=this.getValueNotSetValue();if(testValue===notSetValue){var valueChanged=false;}else{var valueChanged=true;}
return valueChanged;},_setModified:function(modified)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,modified,true);}else{GUI.setModified(this,modified,false);}}};function GUIBubble(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(id);this.targetElement=undefined;this._alignClassPrefix='arrowAlign-';this._arrowClassPrefix='arrowPosition-';this._closeTimer=null;this._showTimer=null;this._arrowPositionOrder=['top.center','top.left','top.right','bottom.center','bottom.left','bottom.right'];GUI.addWidgetEvent(this,'onClose');GUI.addWidgetEvent(this,'onOpen');GUI.addWidgetEvent(this,'clickedOutside');this.init();}
GUIBubble.prototype={init:function()
{if(!this.elem){return;}
var elem=this.elem;dfx.addLoadEvent(function(){document.body.appendChild(elem);});if(this.settings.onclose){this.addOnCloseCallback(this.settings.onclose);}
var self=this;var clickedInside=false;var members=[elem];if(this.settings.targetElementid){if(!this.settings.memberElements){this.settings.memberElements=[];}
this.settings.memberElements.push(this.settings.targetElementid);}
if(this.settings.memberElements){var mln=this.settings.memberElements.length;for(var i=0;i<mln;i++){var member=dfx.getId(this.settings.memberElements[i]);if(member){members.push(member);}}}
this.settings.memberElements=members;dfx.addEvent(members,'click',function(){clickedInside=true;});dfx.addEvent(document.body,'click.'+this.id,function(){if(clickedInside!==true&&dfx.hasClass(elem,'visible')===true){self.fireClickedOutsideCallbacks();}
clickedInside=false;});if(this.settings.hideDelay){dfx.hover(members,function(){self._clearTimer();},function(){self._startTimer();});}},setTitle:function(newTitle)
{var titleElem=dfx.getClass('GUIBubble-title',this.elem)[0];dfx.setHtml(titleElem,newTitle);},getMemeberElements:function()
{return this.settings.memberElements;},_startTimer:function(dontFireEvents,extraInfo,callback)
{var self=this;this._clearTimer();self._closeTimer=setTimeout(function(){self.hide(dontFireEvents,extraInfo,true,callback);},(self.settings.hideDelay*1000));},_clearTimer:function()
{clearTimeout(this._showTimer);clearTimeout(this._closeTimer);this._closeTimer=null;},hide:function(dontFireEvents,extraInfo,noDelay,callback)
{if(noDelay!==true&&this.settings.hideDelay>0){this._startTimer(dontFireEvents,extraInfo,callback);return;}
clearTimeout(this._showTimer);dfx.removeClass(this.elem,'visible');if(dontFireEvents!==true){this.fireOnCloseCallbacks(extraInfo);}
if(callback){callback.call(this,extraInfo);}},show:function(targetElement,noDelay)
{clearTimeout(this._showTimer);clearTimeout(this._closeTimer);if(noDelay!==true&&this.settings.showDelay>0){var self=this;this._showTimer=setTimeout(function(){self.show(targetElement,true);},(this.settings.showDelay*1000));return;}
dfx.removeClass(this.elem,'visible');dfx.addClass(this.elem,'calc');var classNames=['top','left','right','bottom','middle','center'];var elem=this.elem;dfx.foreach(classNames,function(i){dfx.removeClass(elem,this._alignClassPrefix+classNames[i]);dfx.removeClass(elem,this._arrowClassPrefix+classNames[i]);});if(!targetElement&&this.settings.targetElementid){targetElement=dfx.getId(this.settings.targetElementid);}
if(targetElement){this.determinePosition(this.elem,targetElement,this._getArrowPositionOrder());this.targetElement=targetElement;}else{this.targetElement=undefined;}
if(this.targetElement){var maxZindex=4999;for(var node=this.targetElement;(node&&node!==document.body);node=node.parentNode){var nodeZindex=parseInt(dfx.getStyle(node,'z-index'));if(nodeZindex!==NaN&&nodeZindex>maxZindex){maxZindex=nodeZindex;}}
dfx.setStyle(this.elem,'z-index',(maxZindex+1));}
dfx.addClass(this.elem,'visible');dfx.removeClass(this.elem,'calc');this.fireOnOpenCallbacks();},toggle:function()
{if(dfx.hasClass(this.elem,'visible')===false){this.show();}else{this.hide();}},opened:function()
{if(dfx.hasClass(this.elem,'visible')===false){return false;}
return true;},determinePosition:function(element,targetElement,arrowPositionOrder)
{var targetRect=dfx.getBoundingRectangle(targetElement);var elemRect=dfx.getBoundingRectangle(element);var elemH=(elemRect.y2-elemRect.y1);var elemW=(elemRect.x2-elemRect.x1);var winDim=dfx.getWindowDimensions();var targetMidX=0;var targetMidY=0;if(!this.settings.position||this.settings.position==='middle'){targetMidX=targetRect.x1+((targetRect.x2-targetRect.x1)/2);targetMidY=targetRect.y1+((targetRect.y2-targetRect.y1)/2);}else if(this.settings.position==='bottom'){targetMidX=targetRect.x1+((targetRect.x2-targetRect.x1)/2);targetMidY=targetRect.y2;}else if(this.settings.position==='left'){targetMidX=targetRect.x1;targetMidY=targetRect.y1+((targetRect.y2-targetRect.y1)/2);}else if(this.settings.position==='right'){targetMidX=targetRect.x2;targetMidY=targetRect.y1+((targetRect.y2-targetRect.y1)/2);}
var posX=0;var posY=0;if(this.settings.arrowPosition){arrowPositionOrder=[this.settings.arrowPosition];}
var oln=arrowPositionOrder.length;for(var o=0;o<oln;o++){var classNames=arrowPositionOrder[o];var parts=classNames.split('.');switch(parts[0]){case'top':posY=targetMidY;break;case'bottom':posY=(targetMidY-elemH);break;case'right':posX=(targetRect.x1-elemW);break;case'left':posX=targetRect.x2;break;default:break;}
switch(parts[1]){case'left':posX=targetMidX;break;case'center':posX=(targetMidX-(elemW/2));break;case'right':posX=(targetMidX-elemW);break;case'middle':posY=(targetMidY-(elemH/2));break;case'top':posY=targetMidY;break;default:break;}
var scrollCoords=dfx.getScrollCoords();if(this.settings.fixedPositioning===true){posX-=scrollCoords.x;posY-=scrollCoords.y;posX=Math.abs(posX);posY=Math.abs(posY);}
winDim.width+=scrollCoords.x;winDim.height+=scrollCoords.y;dfx.addClass(element,this._arrowClassPrefix+parts[0]);dfx.addClass(element,this._alignClassPrefix+parts[1]);dfx.setStyle(element,'left',posX+'px');dfx.setStyle(element,'top',posY+'px');if(this.settings.arrowPosition){break;}
var newElemRect=dfx.getBoundingRectangle(element);if((newElemRect.x1>0)&&(winDim.width>newElemRect.x2)&&(newElemRect.y1>0)&&(winDim.height>newElemRect.y2)){break;}else{dfx.removeClass(element,this._arrowClassPrefix+parts[0]);dfx.removeClass(element,this._alignClassPrefix+parts[1]);}}},_getArrowPositionOrder:function()
{var order=[];if(this.settings.arrowPositionOrder){order=this.settings.arrowPositionOrder;}
return order.concat(this._arrowPositionOrder);},removeWidget:function()
{dfx.removeEvent(document.body,'click.'+this.id);dfx.remove(this.elem);}};function GUIButton(id,settings)
{this.id=id;this.settings=settings;this.button=dfx.getId(this.id);GUI.addWidgetEvent(this,'click');this.init();}
GUIButton.prototype={init:function()
{var self=this;dfx.addEvent(this.button,'click',function(e){self.fireClickCallbacks(self.button,e);});},enable:function()
{this.button.disabled=false;},disable:function()
{this.button.disabled=true;},setValue:function(val)
{this.button.value=val;var label=dfx.getTag('span',this.button)[0];dfx.setHtml(label,val);},getValue:function()
{return this.button.value;},changeValue:function(val)
{if(this.settings.alternateValues){this.setValue(this.settings.alternateValues[val]);}}}
function GUICheckBox(id,settings)
{this.id=id;this.settings=settings;var widgetElement=dfx.getId(id);this.input=dfx.getTag('input',widgetElement)[0];GUI.addWidgetEvent(this,'click');GUI.addWidgetEvent(this,'afterClick');GUI.addWidgetEvent(this,'changed');this.init();}
GUICheckBox.prototype={init:function()
{var self=this;var input=this.input;var element=dfx.getId(this.id);var useLabel=false;if(this.settings.label){useLabel=true;element=input;}
dfx.addEvent(element,'click',function(e){if(useLabel===true){var checked=input.checked;}else{var checked=!input.checked;}
self.fireClickCallbacks(checked,e);self.setValue(checked);self.fireAfterClickCallbacks(checked,e);});},getValue:function()
{return this.input.checked;},setValue:function(value,noEvent)
{var changed=false;if(this.input.checked!==value){changed=true;}
this.input.checked=value;if(value===true){dfx.addClass(dfx.getId(this.id),'checked');}else{dfx.removeClass(dfx.getId(this.id),'checked');}
this._setModified(true);if(noEvent!==true&&changed!==false){this.fireChangedCallbacks(value);}},toggle:function()
{if(this.input.checked){this.setValue(false);}else{this.setValue(true);}},focus:function()
{this.input.focus();},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}}
function GUIColumnBrowser(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);this._loaderElem=null;this._isLoading=false;this._lineageWidget=null;if(this.settings.lineageWidgetId){this._lineageWidget=GUI.getWidget(this.settings.lineageWidgetId);}
GUI.addWidgetEvent(this,'itemClicked');this.init();}
GUIColumnBrowser.prototype={init:function()
{var self=this;dfx.addEvent(this.elem,'click',function(e){self._handleClick(e);});if(this._lineageWidget){this._lineageWidget.setLineage(this.getLineage());this._lineageWidget.addItemClickedCallback(function(itemid,index){self.lineageItemClicked(itemid,index);});}
if(dfx.isset(this.settings.initialItemid)===true){this.selectItem(this.settings.initialItemid,0);}},_handleClick:function(e)
{var target=dfx.getMouseEventTarget(e);var elem=null;if((elem=this._hasClass(target,'GUIColumnBrowser-item',this.elem,true))!==null){this.itemClicked(elem,e);}},_hasClass:function(elem,className,stopElem,returnElement)
{if(dfx.hasClass(elem,className)===true){if(returnElement===true){return elem;}else{return true;}}else if(elem.parentNode&&elem.parentNode!==stopElem){return this._hasClass(elem.parentNode,className,stopElem,returnElement);}
return null;},selectItem:function(itemid,columnIndex)
{if(columnIndex<0){var visibleColumns=dfx.getClass('GUIColumnBrowser-column visible',this.elem);if(visibleColumns.length>=(columnIndex*-1)){columnIndex=(visibleColumns.length+columnIndex);}else{return false;}}
var lookupClass='GUIColumnBrowser-column level-'+columnIndex;var columnElem=dfx.getClass(lookupClass,this.elem);if(columnElem.length===0){return false;}
var items=dfx.getClass('GUIColumnBrowser-item',columnElem[0]);var iln=items.length;for(var i=0;i<iln;i++){if(dfx.attr(items[i],'itemid').toString()===itemid.toString()){this.itemClicked(items[i]);return true;}}
return false;},itemClicked:function(itemElement,e)
{if(this._isLoading===true){return;}
if(this.settings.enableMultiSelect!==true||!e||(e.ctrlKey!==true&&e.metaKey!==true)){dfx.removeClass(dfx.getClass('selected',itemElement.parentNode.parentNode),'selected');}
dfx.addClass(itemElement,'selected');dfx.removeClass(dfx.getClass('lastClicked',itemElement.parentNode),'lastClicked');dfx.addClass(itemElement,'lastClicked');this.showChildren(itemElement);this.fireItemClickedCallbacks(dfx.attr(itemElement,'itemid'),dfx.attr(itemElement,'childcount'),itemElement);},showChildren:function(parentElement,forceReload)
{var parentid=dfx.attr(parentElement,'itemid');var childCount=dfx.attr(parentElement,'childcount');var parentColumnElement=parentElement.parentNode.parentNode;var parentLevel=parseInt(parentColumnElement.className.match(/level-(\d+)/)[1]);var lookupClass='GUIColumnBrowser-column level-'+(parentLevel+1);var childColumnElement=dfx.getClass(lookupClass,this.elem);if(forceReload!==true&&childColumnElement&&childColumnElement.length>0){childColumnElement=childColumnElement[0];var cards=dfx.getClass('GUIColumnBrowser-column-card',childColumnElement);var cln=cards.length;var card=null;for(var i=0;i<cln;i++){if(dfx.attr(cards[i],'parentid')!==parentid){dfx.removeClass(cards[i],'visible');}else{card=cards[i];}}
if(card===null&&this.settings.dynamicLoading===true&&childCount!=='0'){this.loadChildren(parentElement);return;}
dfx.addClass(card,'visible');dfx.addClass(childColumnElement,'visible');dfx.removeClass(dfx.getClass('GUIColumnBrowser-item selected',childColumnElement),'selected');dfx.removeClass(dfx.getClass('GUIColumnBrowser-column last',this.elem),'last');dfx.addClass(childColumnElement,'last');}else if(this.settings.dynamicLoading===true&&childCount!=='0'){this.loadChildren(parentElement);return;}
dfx.removeClass(dfx.getClass('GUIColumnBrowser-column active',this.elem),'active');dfx.addClass(parentColumnElement,'active');var self=this;setTimeout(function(){dfxjQuery(self.elem).scrollTo('100%',200,{axis:'x'});},150);this._hideColumn((parentLevel+2));if(this._lineageWidget){this._lineageWidget.setLineage(this.getLineage());}},loadChildren:function(parentElement)
{var parentid=dfx.attr(parentElement,'itemid');var parentColumnElement=parentElement.parentNode.parentNode;var parentLevel=parseInt(parentColumnElement.className.match(/level-(\d+)/)[1]);var params={settings:dfx.jsonEncode(this.settings),parentid:parentid};if(!this._loaderElem){this._loaderElem=document.createElement('div');dfx.addClass(this._loaderElem,'GUIColumnBrowser-column-loader');dfx.setHtml(this._loaderElem,'<img src="'+GUI.getWidgetURL('GUI/AssetFinder')+'/white.gif" />');}
var columnWrapperElem=dfx.getClass('GUIColumnBrowser-columnWrapper',this.elem)[0];var currentWidth=dfx.getElementWidth(columnWrapperElem);var parentColWidth=dfx.getElementWidth(parentColumnElement);dfx.setStyle(columnWrapperElem,'width',currentWidth+parentColWidth+'px');dfx.insertAfter(parentColumnElement,this._loaderElem);var self=this;this._isLoading=true;GUI.sendRequest('GUIColumnBrowser','getChildrenContents',params,function(contents){var childLevel=(parentLevel+1);var lookupClass='GUIColumnBrowser-column level-'+childLevel;var childColumnElement=dfx.getClass(lookupClass,self.elem);if(!childColumnElement||childColumnElement.length===0){var childColumnElement=document.createElement('div');dfx.addClass(childColumnElement,'GUIColumnBrowser-column');dfx.addClass(childColumnElement,'level-'+childLevel);dfx.insertAfter(parentColumnElement,childColumnElement);}else{childColumnElement=childColumnElement[0];}
var card=document.createElement('div');dfx.addClass(card,'GUIColumnBrowser-column-card');dfx.attr(card,'parentid',parentid);childColumnElement.appendChild(card);dfx.setHtml(card,contents);dfx.remove(self._loaderElem);self.showChildren(parentElement);self._isLoading=false;},'raw');},_hideColumn:function(colIndex)
{var columns=dfx.getClass('GUIColumnBrowser-column',this.elem);var cln=columns.length;var width=0;for(var i=0;i<cln;i++){if(i>=colIndex){dfx.removeClass(columns[i],'visible');dfx.removeClass(dfx.getClass('GUIColumnBrowser-column-card visible',columns[i]),'visible');dfx.removeClass(dfx.getClass('GUIColumnBrowser-item selected',columns[i]),'selected');}else{width+=dfx.getElementWidth(columns[i]);}}
dfx.setStyle(dfx.getClass('GUIColumnBrowser-columnWrapper',this.elem),'width',width+'px');},getLineage:function(asArray)
{var selectedItems=dfx.getClass('GUIColumnBrowser-item selected lastClicked',this.elem);var sln=selectedItems.length;var lineage=[];for(var i=0;i<sln;i++){var selected=selectedItems[i];if(dfx.hasClass(selected.parentNode,'visible')!==true){continue;}
var itemid=dfx.attr(selected,'itemid');var title=dfx.attr(selected,'itemtitle');if(!itemid){itemid=null;}
if(asArray===true){lineage.push(itemid);}else{lineage.push({'assetid':itemid,'name':title});}}
if(asArray===true){lineage.unshift(null);}
return lineage;},lineageItemClicked:function(itemid,index)
{this.selectItem(itemid,index);},getSelectedElements:function()
{var col=dfx.getClass('GUIColumnBrowser-column active',this.elem);var selectedElems=dfx.getClass('GUIColumnBrowser-item selected',col);return selectedElems;},getValue:function()
{var selectedElems=this.getSelectedElements();var sln=selectedElems.length;var selection=[];for(var i=0;i<sln;i++){selection.push(dfx.attr(selectedElems[i],'itemid'));}
return selection;},getSelected:function()
{var selectedElems=this.getSelectedElements();var sln=selectedElems.length;var selection={};for(var i=0;i<sln;i++){selection[dfx.attr(selectedElems[i],'itemid')]=dfx.attr(selectedElems[i],'itemtitle');}
return selection;},reload:function()
{var selected=this.getValue();var lineage=this.getLineage(true);var params={settings:dfx.jsonEncode(this.settings),lineage:dfx.jsonEncode(lineage)};var self=this;GUI.sendRequest('GUIColumnBrowser','reloadContents',params,function(contents){var wrapper=dfx.getClass('GUIColumnBrowser-columnWrapper',self.elem)[0];dfx.empty(wrapper);dfx.setHtml(wrapper,contents);var selection=dfx.getClass('GUIColumnBrowser-item selected lastClicked',this.elem);selected=selection.pop();dfx.trigger(selected,'click');},'raw');}};function GUIContentSwitcher(id,settings)
{this.id=id;this.settings=settings;this.className='GUIContentSwitcher';this.loadedWidgets=[];this.customLoader=null;this._initItemLoaded=false;this._ignoreCustomLoader=false;this.current=null;var self=this;if(settings.initialItem){dfx.foreach(settings._items,function(idx){var item=settings._items[idx];if(item.id===settings.initialItem){if(self.settings.loadType==='custom'){if(self.customLoader){self._initItemLoaded=true;self.loadContent(item.system,item.id);}}else{self._initItemLoaded=true;}
self.current={system:item.system,template:item.id,templatevars:item.templatevars};return false;}});}
GUI.addWidgetEvent(this,'itemChanged');GUI.addReloadTemplateCallback(function(system,template){if(!self.current){return;}
if(self.current.system===system&&self.current.template===template){self.reload();}});this.init();}
GUIContentSwitcher.prototype={init:function()
{this.addEvents();},addEvents:function()
{var parentElem=dfx.getId(this.id);if(!parentElem){return;}
var buttons=dfx.getTag('a',parentElem);var self=this;for(var i=0;i<buttons.length;i++){(function(button){dfx.addEvent(button,'click',function(e){self.buttonClicked(button);});})(buttons[i]);}},buttonClicked:function(button)
{var system=button.getAttribute('system');var template=button.getAttribute('template');var templatevars=button.getAttribute('templatevars');if(template===null){template=button.getAttribute('modeid');}
this._removeSelectedClass();dfx.addClass(button.parentNode,'selected');this.fireItemChangedCallbacks(template,system);this.loadContent(system,template,templatevars);},getVisibleContentElement:function()
{var visibleElements=dfx.getClass(this.className+'-itemContent visible',dfx.getId(this.id+'-itemContents'));if(visibleElements.length>0){return visibleElements[0];}
return null;},_removeSelectedClass:function()
{dfx.removeClass(dfx.getTag('li',dfx.getId(this.id)),'selected');},loadContent:function(system,template,templatevars)
{if(this._ignoreCustomLoader!==true&&(this.settings.loadType==='custom'||dfx.isFn(this.customLoader))===true){this.loadCustom(system,template);}else if(this.settings.loadType==='static'){this.showMode(system,template);}else{this.loadDynamic(system,template,templatevars);}
this._ignoreCustomLoader=false;},setCustomLoader:function(fn,noLoad)
{this.customLoader=fn;if(this._initItemLoaded===false&&noLoad!==true){this.loadContent(this.current.system,this.current.template);}},loadCustom:function(system,template)
{if(!this.customLoader){return GUI.message('developer','Custom loader method is not set','error');}
if(this.customLoader(system,template,dfx.getId(this.settings.target))===false){this._ignoreCustomLoader=true;this.loadContent(system,template);}
this.current={system:system,template:template};},showMode:function(system,template)
{var itemContentElem=dfx.getId(this.id+'-itemContent-'+template);if(!itemContentElem){return false;}
var parent=dfx.getId(this.id+'-itemContents');if(!parent){return false;}
for(var node=parent.firstChild;node;node=node.nextSibling){dfx.removeClass(node,'visible');}
dfx.addClass(itemContentElem,'visible');this.current={system:system,template:template};},loadDynamic:function(system,template,templatevars)
{var params={system:system,template:template,templatevars:templatevars};GUI.loadContent(this.className,'getDynamicItemContent',dfx.getId(this.settings.target),params,null,system,template);this.current={system:system,template:template,templatevars:templatevars};},reload:function()
{this.loadContent(this.current.system,this.current.template,this.current.templatevars);},canSwitch:function(showConfirmMessage)
{if(!this.current){return true;}
if(GUI.isTemplateModified(this.current.system,this.current.template,true)===true){if(showConfirmMessage===false){return false;}
if(GUI.confirmUnload()===true){return true;}else{return false;}}
return true;}}
function GUIDateField(id,settings)
{this.id=id;this.settings=settings;this.dateOnly=this.settings.dateOnly;this.timeOnly=this.settings.timeOnly;this._currentValue=this.settings.initialDate;if(this.dateOnly===false){this._hourWidget=GUI.getWidget(this.id+'-hour');this._minWidget=GUI.getWidget(this.id+'-min');}
if(this.timeOnly===false){this._dayWidget=GUI.getWidget(this.id+'-day');this._monthWidget=GUI.getWidget(this.id+'-month');this._yearWidget=GUI.getWidget(this.id+'-year');}
this.changeEnabled=false;GUI.addWidgetEvent(this,'changed');this.init();}
GUIDateField.prototype={init:function()
{var self=this;this.validate();if(this.dateOnly===false){this._hourWidget.addChangedCallback(function(){if(self.changeEnabled===true){self.dateChanged.call(self);}});this._minWidget.addChangedCallback(function(){if(self.changeEnabled===true){self.dateChanged.call(self);}});}
if(this.timeOnly===false){this._dayWidget.addChangedCallback(function(){if(self.changeEnabled===true){self.dateChanged.call(self);}});this._monthWidget.addChangedCallback(function(){if(self.changeEnabled===true){self.dateChanged.call(self);}});this._yearWidget.addChangedCallback(function(){if(self.changeEnabled===true){self.dateChanged.call(self);}});}
this.changeEnabled=true;},validate:function()
{if(this.timeOnly===false){var day=this._dayWidget.getValue()[0];var month=this._monthWidget.getValue()[0];var year=this._yearWidget.getValue()[0];var leapYear=false;if((year%100)===0){if((year%400)===0){leapYear=true;}}else{if((year%4)===0){leapYear=true;}}
var maxDay=31;if(month==='02'){if(leapYear===true){maxDay=29;}else{maxDay=28;}}else{var monthsWith30Days=['04','06','09','11'];if(monthsWith30Days.inArray(month)===true){maxDay=30;}}
if(day>maxDay){var oldCE=this.changeEnabled;this.changeEnabled=false;this._dayWidget.setValue([maxDay.toString()]);this.changeEnabled=oldCE;}
var daySelect=dfx.getId(this._dayWidget.id);var dayOpLen=daySelect.options.length;for(var i=0;i<dayOpLen;i++){var option=daySelect.options[i];if(parseInt(option.value,10)>maxDay){option.disabled=true;}else{option.disabled=false;}}}},dateChanged:function()
{this.validate();var newValue=this.getValue();if(newValue===null){newValue=this.currentValue;}
if(this.currentValue!==newValue){this.currentValue=newValue;this.fireChangedCallbacks(newValue);this._setModified(true);}},getValue:function()
{var ok=true;var value='';if(this.timeOnly===false){if(this._dayWidget.getValue().length===0){ok=false;}
if(this._monthWidget.getValue().length===0){ok=false;}
if(this._yearWidget.getValue().length===0){ok=false;}}
if(this.dateOnly===false){if(this._hourWidget.getValue().length===0){ok=false;}
if(this._minWidget.getValue().length===0){ok=false;}}
if(ok===false){return null;}
if(this.timeOnly===false){var day=this._dayWidget.getValue()[0];var month=this._monthWidget.getValue()[0];var year=this._yearWidget.getValue()[0];if(day<10){day='0'+day;}
if(month<10){month='0'+month;}
value+=(year+'-'+month+'-'+day);}
if(this.dateOnly===false){var hour=this._hourWidget.getValue()[0];var min=this._minWidget.getValue()[0];if(hour<10){hour='0'+hour;}
if(min<10){min='0'+min;}
if(this.timeOnly===false){value+=' ';}
value+=(hour+':'+min);}
return value;},setValue:function(value)
{var pattern=/\d{4}-\d{2}-\d{2} \d{2}:\d{2}/;if(this.dateOnly===true){pattern=/\d{4}-\d{2}-\d{2}/;}else if(this.timeOnly===true){pattern=/\d{2}:\d{2}/;}
var validFormat=pattern.test(value);if(validFormat===false){return false;}
var oldCE=this.changeEnabled;this.changeEnabled=false;if(this.dateOnly===true){var dateParts=value.split(/-/);}else if(this.timeOnly===true){var timeParts=value.split(/:/);}else{var valueParts=value.split(/ /);var dateParts=valueParts[0].split(/-/);var timeParts=valueParts[1].split(/:/);}
if(this.dateOnly===false){this._hourWidget.setValue([parseInt(timeParts[0],10).toString()]);this._minWidget.setValue([parseInt(timeParts[1],10).toString()]);}
if(this.timeOnly===false){this._yearWidget.setValue([parseInt(dateParts[0],10).toString()]);this._monthWidget.setValue([parseInt(dateParts[1],10).toString()]);this._dayWidget.setValue([parseInt(dateParts[2],10).toString()]);}
this.changeEnabled=oldCE;this.dateChanged();},getDateObject:function()
{if(this.dateOnly===true){return new Date(this.getValue());}else if(this.timeOnly===true){return null;}else{var day=this._dayWidget.getValue()[0];var month=this._monthWidget.getValue()[0];var year=this._yearWidget.getValue()[0];var hour=this._hourWidget.getValue()[0];var min=this._minWidget.getValue()[0];var months={'01':'January','02':'Feburary','03':'March','04':'April','05':'May','06':'June','07':'July','08':'August','09':'September','10':'October','11':'November','12':'December'};if(parseInt(hour,10)<10){hour='0'+hour;}
return new Date(months[month]+' '+day+', '+year+' '+hour+':'+min+':00');}},revert:function()
{this.setValue(this.settings.initialDate);},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}};function GUIDialog(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);var midElem=dfx.getClass('GUIDialog-middle',this.elem)[0];GUI.addWidgetEvent(this,'dialogResized');GUI.addWidgetEvent(this,'dialogClosed');GUI.addWidgetEvent(this,'dialogToggled');GUI.addWidgetEvent(this,'dialogConfirmClose',function(callbacks){self.fireConfirmClose(callbacks);});var self=this;this.update();if(this.settings.resizable===true){var resizeTimer=null;dfxjQuery(this.elem).resizable({handles:'se',helper:'GUIDialog-resize',stop:function(e,ui){clearTimeout(resizeTimer);var widthDiff=(ui.size.width-ui.originalSize.width);var heightDiff=(ui.size.height-ui.originalSize.height);var newWidth=parseInt(dfx.getStyle(midElem,'width'))+widthDiff;var newHeight=parseInt(dfx.getStyle(midElem,'height'))+heightDiff;dfx.setStyle(midElem,'width',newWidth+'px');dfx.setStyle(midElem,'height',newHeight+'px');resizeTimer=setTimeout(function(){self.fireDialogResizedCallbacks({width:ui.size.width,height:ui.size.height},{width:newWidth,height:newHeight});},150);},maxWidth:this.settings.maxWidth,minWidth:this.settings.minWidth,maxHeight:this.settings.maxHeight,minHeight:this.settings.minHeight});}
if(this.settings.persistent!==true){var tplInfo={system:self.settings.template.system,template:self.settings.template.name}
GUI.addTemplateRemovedCallback(function(system,template){var removedTpl={system:system,template:template};if(GUI.isChildOfTemplate(removedTpl,tplInfo)===false){self.close();}});}
if(this.settings.draggable===true){dfxjQuery(this.elem).draggable({handle:dfx.getClass('GUIDialog-top',this.elem)[0],start:function(){dfx.addClass(self.elem,'dragging');var elemCoords=dfx.getElementCoords(self.elem);dfx.setStyle(self.elem,'left',elemCoords.x+'px');dfx.setStyle(self.elem,'top',elemCoords.y+'px');dfx.setStyle(self.elem,'right','');dfx.setStyle(self.elem,'bottom','');},stop:function(){dfx.removeClass(self.elem,'dragging');}});}
var fullScreen=this.settings.fullScreen||false;dfx.addEvent(dfx.getClass('GUIDialog-top',this.elem),'safedblclick',function(){},function(){if(fullScreen===true){self.update();fullScreen=false;}else{self.update(true);fullScreen=true;}});dfx.addEvent(this.elem,'click',function(){GUI.Dialog.bringToTop(id);});}
GUIDialog.prototype={update:function(forceFullScreen)
{if(!this.elem){return;}
var resetVis=false;if(dfx.getElementHeight(this.elem)===0||dfx.getElementHeight(this.elem)===0){resetVis=true;dfx.setStyle(this.elem,'visibility','hidden');dfx.setStyle(this.elem,'display','block');}
dfx.setStyle(this.elem,'height','auto');dfx.setStyle(this.elem,'width','auto');var posLeft=this.settings.posLeft||null;var posTop=this.settings.posTop||null;var posRight=this.settings.posRight||null;var posBottom=this.settings.posBottom||null;if(posLeft!==null){dfx.setStyle(this.elem,'left',posLeft);}else if(posRight!==null){dfx.setStyle(this.elem,'right',posRight);}else{dfx.setStyle(this.elem,'left','50%');}
if(posTop!==null){dfx.setStyle(this.elem,'top',posTop);}else if(posBottom!==null){dfx.setStyle(this.elem,'bottom',posBottom);}else{dfx.setStyle(this.elem,'top','50%');}
var contentDiv=dfx.getClass('GUIDialog-middle',this.elem)[0];var topElement=dfx.getClass('GUIDialog-top',this.elem)[0];var bottomElement=dfx.getClass('GUIDialog-bottom',this.elem)[0];var contentWidth=this.settings.width;var contentHeight=null;if(forceFullScreen===true||this.settings.fullScreen===true){var winDim=dfx.getWindowDimensions();contentWidth=(winDim.width-100);contentHeight=(winDim.height-250);}else{contentHeight=(this.settings.height-parseInt(dfx.getElementHeight(topElement))-parseInt(dfx.getElementHeight(bottomElement)));}
dfx.setStyle(contentDiv,'width',contentWidth+'px');dfx.setStyle(contentDiv,'height',contentHeight+'px');var mainWidth=dfx.getElementWidth(this.elem);var mainHeight=dfx.getElementHeight(this.elem);if(dfx.isset(this.settings.posLeft)===false){var marginLeft=(parseInt(mainWidth/2)*-1);dfx.setStyle(this.elem,'margin-left',marginLeft+'px');}
if(dfx.isset(this.settings.posTop)===false){var marginTop=(parseInt(mainHeight/2)*-1);dfx.setStyle(this.elem,'margin-top',marginTop+'px');}
if(resetVis===true){dfx.setStyle(this.elem,'visibility','visible');}
this.fireDialogResizedCallbacks({width:mainWidth,height:mainHeight},{width:contentWidth,height:contentHeight});},getCurrentDialogDimensions:function()
{if(this.settings.resizable===true){var topElement=dfx.getClass('GUIDialog-top',this.elem)[0];var contentDiv=dfx.getClass('GUIDialog-middle',this.elem)[0];var bottomElement=dfx.getClass('GUIDialog-bottom',this.elem)[0];var topHeight=dfx.getElementHeight(topElement);var contentHeight=dfx.getElementHeight(contentDiv);var bottomHeight=dfx.getElementHeight(bottomElement);var contentWidth=dfx.getElementWidth(contentDiv);var currentHeight=parseInt(topHeight+contentHeight+bottomHeight);var currentWidth=parseInt(contentWidth);}else{var currentHeight=this.settings.height;var currentWidth=this.settings.width;}
return{x:currentWidth,y:currentHeight};},getCurrentCoords:function()
{return dfx.getElementCoords(this.elem);},setTitle:function(newTitle)
{var titleEl=dfx.getClass('GUIDialog-title',this.elem)[0];dfx.setHtml(titleEl,newTitle);},fireConfirmClose:function(callbacksInfo)
{var self=this;if(dfx.isArray(callbacksInfo)===true){var len=callbacksInfo.length;if(len>0){var dupeCallbacks=callbacksInfo.concat([]);var lastCallbackInfo=dupeCallbacks.pop();if(len>1){var nextCallback=function(){this.fireConfirmClose(dupeCallbacks);}}else{var nextCallback=function(){self._closeNow();}}
lastCallbackInfo.callback.call(this,nextCallback);}else{this._closeNow();}}else{this._closeNow();}},close:function(clickedElement)
{if(!this.elem.parentNode||!dfx.getId(this.id)){return;}
this.fireDialogConfirmCloseCallbacks();},toggle:function()
{dfx.toggleClass(this.elem,'hidden');this.fireDialogToggledCallbacks(!dfx.hasClass(this.elem,'hidden'));},_closeNow:function()
{if(this.settings.hideOnClose===true){dfx.addClass(this.elem,'hidden');this.fireDialogClosedCallbacks();}else{dfx.remove(this.elem);this.fireDialogClosedCallbacks();GUI.Dialog.remove(this.id);}}};function GUIFileUpload(id,settings)
{this.id=id;this.settings=settings;this.element=dfx.getId(this.id);var fileFormContainerElems=dfx.getClass('GUIFileUpload-top',this.element,'div')
this.fileFormContainerElem=fileFormContainerElems[0];this.uploadForm=dfx.getId(this.id+'-form');this.uploadIFrame=dfx.getId(this.id+'-iframe');this.filesList=dfx.getId(this.id+'-filesList');this.addFileButtonWidget=GUI.getWidget(this.id+'-addFileButton');this._uploadCounter=0;this._previousProgressClass='';this._uploadsCompleteCallback=null;this._lastProgress=0;this._fileInfo=[];this._errors={};this._fileQueueLength=0;this._lastSubmittedInfo=null;var apiUrl=sfapi.createURL('GUIFileUpload','processFileUpload','raw');var apiToken=dfx.attr(this.uploadForm._api_token,'value');var apiTokenAr={'_api_token':apiToken};apiUrl=dfx.addToQueryString(apiUrl,apiTokenAr);this.uploadForm.action=apiUrl;GUI.addWidgetEvent(this,'fileAdded');GUI.addWidgetEvent(this,'fileRemoved');this.init();}
GUIFileUpload.prototype={init:function()
{var self=this;dfx.addEvent(dfx.getClass('GUIFileUpload-fileInput',this.element),'change',function(e){self.addFile(dfx.getMouseEventTarget(e));});dfx.addEvent(this.filesList,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'status')===true){self._statusIconClicked(target);}else{while(target&&target!==self.filesList){if(dfx.isTag(target,'li')===true){self._fileItemClicked(target);break;}
target=target.parentNode;}}});},submit:function(completedCallback)
{var self=this;var iframe=dfx.getId(this.id+'-iframe');if(!iframe){iframe=document.createElement('iframe');iframe.id=this.id+'-iframe';iframe.name=this.id+'-iframe';dfx.setStyle(iframe,'display','none');this.element.appendChild(iframe);this.uploadIFrame=iframe;}
this.disable();this._uploadsCompleteCallback=completedCallback;this._uploadCounter=0;dfx.addClass(this.element,'processing');var inputs=this._getUploadInputElems();if(this._lastSubmittedInfo!==null&&inputs.length<=1){this._uploadsCompleteCallback.call(this,this._fileInfo,this._errors);}else{var fullInterfaceValue=this.getValue(true);this._lastSubmittedInfo={};dfx.foreach(fullInterfaceValue,function(fileId){self._lastSubmittedInfo[fileId]={};self._lastSubmittedInfo[fileId].name='';self._lastSubmittedInfo[fileId].inputElem=fullInterfaceValue[fileId];self._lastSubmittedInfo[fileId].errorMsg='';});this._errors={};this._fileInfo=[];this._sendNextFile();}},_sendFile:function(input)
{var fileInfo={id:input.id,name:input.value.replace('C:\\fakepath\\','')};var formUrl=this.uploadForm.action;var params={'fileid':input.id};formUrl=dfx.addToQueryString(formUrl,{'fileid':input.id});this.uploadForm.action=formUrl;this.uploadForm.appendChild(input);this.uploadForm.submit();var self=this;var current=this._getCurrentFileItem();dfx.addClass(current,'uploading');this._fileInfo.push(fileInfo);var uploadDone=false;var ii=setInterval(function(){sfapi.post('GUIFileUpload','getFileUploadProgress',{progKey:self.settings.widget.apc_key},function(data){data=parseInt(data);if(uploadDone===true||data>=100){dfx.removeClass(current,self._previousProgressClass);dfx.addClass(current,'progress-100');clearInterval(ii);dfx.remove(input);self._sendNextFile();}else{self._updateProgress(data);}},function(data){clearInterval(ii);self._sendNextFile();},'raw');},2000);this.uploadIFrame.onload=function(){var doc=dfx.getIframeDocument(self.uploadIFrame);var content=dfx.getHtml(doc.body);if(content){self.showFileError(input.id,content);}
uploadDone=true;};},_sendNextFile:function()
{var inputs=this._getUploadInputElems();if(inputs.length>1){this._renewAPCKey();dfx.getId(this.id+'-fileid').value=inputs[0].id;this._previousProgressClass='';this._lastProgress=0;this._uploadCounter++;this._sendFile(inputs[0]);}else{this._uploadFinished();}},addFile:function(inputField,doNotAddNewActiveElem)
{if(!inputField){return;}
var fileName=dfx.attr(inputField,'value');if(!fileName){return;}
fileName=fileName.replace('C:\\fakepath\\','');var ext='';var extParts=fileName.split('.');if(extParts.length>0){ext=extParts.pop().toUpperCase();}
var fileInfo=document.createElement('li');fileInfo.id='file-'+inputField.id;var content='<div class="fileDetails"><span class="fileName">'+dfx.ellipsize(fileName,18)+'</span>';content+='<br />'+ext;content+='<span class="status">&nbsp;</span></div>';dfx.setHtml(fileInfo,content);this.filesList.appendChild(fileInfo);var self=this;if(doNotAddNewActiveElem!==true){var newFileInput=inputField.cloneNode(true);newFileInput.id=dfx.getUniqueId();newFileInput.name=newFileInput.id;newFileInput.value='';this.fileFormContainerElem.appendChild(newFileInput);dfx.addEvent(newFileInput,'change',function(e){self.addFile(newFileInput);});}
dfx.setStyle(inputField,'display','none');if(this.settings.fileLimit!==null){if(this.filesList.childNodes.length>=this.settings.fileLimit){this.addFileButtonWidget.disable();if(doNotAddNewActiveElem!==true){dfx.attr(newFileInput,'disabled','disabled');}}}
if(this.settings.requiresSave===true){GUI.setModified(this,true);}
this.fireFileAddedCallbacks(fileName);},_updateProgress:function(prog)
{if(this._lastProgress>prog){return;}
var current=this._getCurrentFileItem();dfx.removeClass(current,this._previousProgressClass);this._previousProgressClass='progress-'+parseInt(prog);dfx.addClass(current,this._previousProgressClass);},_uploadFinished:function()
{this.uploadFinished=true;dfx.removeClass(this.element,'processing');if(dfx.isEmpty(this._errors)===false){dfx.addClass(this.element,'errors');}
if(this._uploadsCompleteCallback){var existingFiles=dfx.getClass('existing',this.element);var eln=existingFiles.length;for(var i=0;i<eln;i++){var fileId=dfx.attr(existingFiles[i],'id');var name=dfx.attr(existingFiles[i],'name');this._fileInfo.push({id:fileId,name:name});this._lastSubmittedInfo[fileId].name=name;}
var self=this;dfx.foreach(this._errors,function(fileId){var errorMsg=self._errors[fileId];self._lastSubmittedInfo[fileId].errorMsg=errorMsg;});this._uploadsCompleteCallback.call(this,this._fileInfo,this._errors);}},_getCurrentFileItem:function()
{var liTags=dfx.getTag('li',this.element);return liTags[(this._uploadCounter-1)];},getValue:function(fullInterfaceValue)
{var self=this;var value={}
var setFileList=dfx.getTag('li',this.filesList);var allFileIds=this.getAllFileIds();dfx.foreach(allFileIds,function(idx){var fileId=allFileIds[idx];if(fullInterfaceValue===true){var inputElem=dfx.getId(fileId);if(!inputElem){inputElem=self._lastSubmittedInfo[fileId].inputElem;}
var newFileInput=inputElem.cloneNode(true);value[fileId]=newFileInput;}else{var liElem=dfx.getId('file-'+fileId);var fileNameElems=dfx.getClass('fileName',liElem,'span');var fileNameElem=fileNameElems[0];var fileName=dfx.getHtml(fileNameElem);value[fileId]=fileName;}});return value;},setValue:function(value)
{var self=this;this.removeAllFiles();var activeUploadInputElem=self.getActiveUploadInputElem();dfx.remove(activeUploadInputElem);var newfileCount=dfx.count(value);var processed=0;var doNotAddNewActiveElem=true;dfx.foreach(value,function(fileId){var inputField=value[fileId].cloneNode(true);inputField.id=dfx.getUniqueId();inputField.name=inputField.id;self.fileFormContainerElem.appendChild(inputField);if(processed>=(newfileCount-1)){doNotAddNewActiveElem=false;}
self.addFile(inputField,doNotAddNewActiveElem);processed++;});},getFileQueueLength:function()
{return dfx.getTag('li',this.element).length;},focus:function()
{(dfx.getTag('input',this.element).pop()).focus();},showFileError:function(fileid,errorMsg,canRemoveFile)
{this._errors[fileid]=errorMsg;var li=dfx.getId('file-'+fileid);errorDiv=dfx.getClass('errorDiv',li)[0];if(!errorDiv){errorDiv=document.createElement('div');dfx.addClass(errorDiv,'errorDiv');dfx.insertBefore(li.firstChild,errorDiv);}
dfx.setHtml(errorDiv,errorMsg);dfx.addClass(li,'error');if(canRemoveFile===true){dfx.addClass(dfx.getClass('status',li),'remove');}else{dfx.addClass(dfx.getClass('status',li),'error');}},setEditable:function(isEditable)
{if(isEditable===true){dfx.removeClass(this.element,'notEditable');}else{dfx.addClass(this.element,'notEditable');}},_renewAPCKey:function()
{var apcKeyElem=dfx.getId(this.id+'-apcKey');apcKeyElem.value=apcKeyElem.value+'1';this.settings.widget.apc_key=apcKeyElem.value;},_getUploadInputElems:function()
{return dfx.getClass('GUIFileUpload-fileInput',this.element);},getAllFileIds:function()
{var fileIds=[];var listItems=dfx.getTag('li',this.filesList);dfx.foreach(listItems,function(idx){var liElem=listItems[idx];var fileId=dfx.attr(liElem,'id');fileId=fileId.replace('file-','');fileIds.push(fileId);});return fileIds;},removeAllFiles:function()
{var self=this;var allFileIds=this.getAllFileIds();dfx.foreach(allFileIds,function(idx){var fileId=allFileIds[idx];self.removeFile(fileId);});},removeFile:function(fileid)
{var inputElem=dfx.getId(fileid);var listElem=dfx.getId('file-'+fileid);var nameElems=dfx.getClass('fileName',listElem,'span');if(dfx.count(nameElems)===1){var deletedFilename=dfx.getHtml(nameElems[0]);}else{var deletedFilename=null;}
dfx.remove(inputElem);dfx.remove(listElem);var errors=dfx.getClass('uploading error',this.element);if(errors.length===0){this.enable();var errorMsg=dfx.getClass('GUIFileUpload-errorMsg',this.error);if(errorMsg){dfx.setStyle(errorMsg,'display','none');}
if(this.filesList.childNodes.length===(this.settings.fileLimit-1)){this.addFileButtonWidget.enable();var allFileInputElems=dfx.getClass(this.settings.widget.type+'-fileInput',this.element);dfx.attr(allFileInputElems,'disabled','');}
if(this.settings.requiresSave===true){GUI.setModified(this,true);}
this.fireFileRemovedCallbacks(deletedFilename);}},_statusIconClicked:function(statusIcon)
{if(dfx.hasClass(statusIcon,'remove')||dfx.hasClass(this.element,'processing')===false){var fileid=statusIcon.parentNode.parentNode.id.replace('file-','');this.removeFile(fileid);}},_fileItemClicked:function(fileElem)
{if(this.settings.click&&dfx.hasClass(this.element,'notEditable')===true){eval(this.settings.click+'("'+dfx.attr(fileElem,'id')+'")');}},disable:function()
{this._changeActiveStatus(true);},enable:function()
{this._changeActiveStatus(false);},_changeActiveStatus:function(disable)
{var allFileIds=this.getAllFileIds();dfx.foreach(allFileIds,function(idx){var fileId=allFileIds[idx];var listElem=dfx.getId('file-'+fileId);if(listElem){var statusElems=dfx.getClass('status',listElem,'span');var statusElem=statusElems[0];if(disable===true){dfx.addClass(statusElem,'disabled');}else{dfx.removeClass(statusElem,'disabled');}}});if(dfx.count(allFileIds)<this.settings.fileLimit){var activeUploadInputElem=this.getActiveUploadInputElem();if(activeUploadInputElem!==null){dfx.attr(activeUploadInputElem,'disabled',disable);}}},getActiveUploadInputElem:function()
{var activeUploadInputElem=null;var fileInputs=dfx.getClass('GUIFileUpload-fileInput',this.element);dfx.foreach(fileInputs,function(idx){if(dfx.getStyle(fileInputs[idx],'display')!=='none'){activeUploadInputElem=fileInputs[idx];return false;}});return activeUploadInputElem;},getFinalProcessFunctionName:function()
{return'submit';},isChangedValue:function(testValue)
{var isChangedValue=(dfx.isEmpty(testValue)===false);return isChangedValue;}}
function GUIGraphBar(id,settings)
{this.id=id;this.settings=settings;this.init();}
GUIGraphBar.prototype={init:function()
{var self=this;var graph=dfx.getId(this.id);dfx.addEvent(graph,'mouseover',function(evt){var target=dfx.getMouseEventTarget(evt);while(dfx.hasClass(target,'data-row')===false){if(target.parentNode===null){return;}else{target=target.parentNode;}}
if(dfx.hasClass(target,'hover')===false){dfx.addClass(target,'hover');var tooltip=dfx.getClass('tooltip',target);if(tooltip.length>0){tooltip=tooltip[0];var left=dfx.getElementCoords(tooltip).x;var right=dfx.getWindowDimensions().width-left;if(left<10){dfx.removeClass(tooltip,'arrowPosition-topMid');dfx.addClass(tooltip,'arrowPosition-topLeft');}else if(right<234){dfx.removeClass(tooltip,'arrowPosition-topMid');dfx.addClass(tooltip,'arrowPosition-topRight');}}}
return true;});dfx.addEvent(graph,'mouseout',function(evt){dfx.removeClass(dfx.getClass('data-row',this),'hover');});}};function GUIGraphPie(id,settings)
{this.id=id;this.settings=settings;this.init();}
GUIGraphPie.prototype={init:function(){var browser=dfx.browser();if((browser.type!=='msie')||(parseInt(browser.version,10)>=9)){var container=dfx.getId(this.id+'-container');var tempUrl=dfx.attr(container,'tempurl');if((typeof tempUrl==='string')&&(tempUrl!=='')){var objectTag=document.createElement('object');dfx.attr(objectTag,'id',this.id);dfx.attr(objectTag,'type','image/svg+xml');dfx.setStyle(objectTag,'width',this.settings.size+'px');dfx.setStyle(objectTag,'height',this.settings.size+'px');var url=sfapi.attachTokenToURL(tempUrl);dfx.attr(objectTag,'data',url);dfx.prepend(container,objectTag);}}}};function GUIGraphSparkline(id,settings)
{this.id=id;this.settings=settings;this.ui={};this.enabled=false;this.dragStart=null;this.current={};this.init();GUI.addWidgetEvent(this,'rangeChanged');}
GUIGraphSparkline.prototype={init:function()
{this.ui.mainDiv=dfx.getId(this.id);this.ui.graph=dfx.getClass('GUIGraphBar',this.ui.mainDiv)[0];this.ui.shovel=dfx.getClass('shovel',this.ui.mainDiv)[0];this.ui.shovelBg=dfx.getClass('shovel-bg',this.ui.mainDiv)[0];this.ui.shovelText=dfx.getClass('shovel-text',this.ui.mainDiv)[0];if(this.settings.range){this.current.range=this.settings.range;this.setRange(this.settings.range,false);}
this.enable();},setRange:function(range,set)
{if(set===undefined){set=true;}
if(range===null){dfx.removeClass(this.ui.mainDiv,'shovel-active');}else{var firstDataRow=dfx.find(this.ui.graph,'.data-row[rowid="'+range.start+'"]')[0];var lastDataRow=dfx.find(this.ui.graph,'.data-row[rowid="'+range.end+'"]')[0];var startLeft=dfx.getElementCoords(firstDataRow).x-dfx.getElementCoords(this.ui.graph).x;var endLeft=dfx.getElementCoords(lastDataRow).x-dfx.getElementCoords(this.ui.graph).x;var endWidth=dfx.getElementDimensions(lastDataRow).width;var graphHeight=dfx.getElementDimensions(this.ui.graph).height-1;var borderWidth=parseFloat(dfx.getStyle(this.ui.shovel,'border-top-width'));var shovelWidth=(endLeft+endWidth-startLeft);var divWidth=dfx.getElementDimensions(this.ui.mainDiv).width;var textWidth=dfx.getElementDimensions(this.ui.shovelText).width;dfx.setStyle(this.ui.shovel,'left',(startLeft-borderWidth)+'px');dfx.setStyle(this.ui.shovel,'width',shovelWidth+'px');dfx.setStyle(this.ui.shovel,'top',(-borderWidth)+'px');dfx.setStyle(this.ui.shovel,'height',graphHeight+'px');dfx.setStyle(this.ui.shovelBg,'left',startLeft+'px');dfx.setStyle(this.ui.shovelBg,'width',shovelWidth+'px');dfx.setStyle(this.ui.shovelBg,'height',graphHeight+'px');dfx.setStyle(this.ui.shovelText,'left',startLeft+'px');dfx.setStyle(this.ui.shovelBg,'width',shovelWidth+'px');var textLeft=startLeft+(shovelWidth/2)-(textWidth/2);textLeft=Math.max(-1,Math.min(textLeft,divWidth-textWidth-1));dfx.setStyle(this.ui.shovelText,'left',textLeft+'px');dfx.addClass(this.ui.mainDiv,'shovel-active');}
if(set===true){if((!this.current.range)||(this.current.range.start!==range.start)||(this.current.range.end!==range.end)){this.current.range=range;this.fireRangeChangedCallbacks(range.start,range.end);}}},determineShovelBounds:function(shovelLeft)
{var shovelWidth=dfx.getElementDimensions(this.ui.shovel,true).width;var divWidth=dfx.getElementDimensions(this.ui.mainDiv,true).width;var barWidth=divWidth/this.settings._rowids.length;var leftBarPos=Math.round(shovelLeft/barWidth);var rightBarPos=leftBarPos+Math.round(shovelWidth/barWidth)-1;var bars={start:this.settings._rowids[leftBarPos],end:this.settings._rowids[rightBarPos]};return bars;},getValue:function()
{var retval=this.current.range;return retval;},revert:function()
{},enable:function()
{if(this.enabled!==true){this.enabled=true;this.enableMouseDown();this.enableClick();}},enableClick:function()
{var self=this;dfx.addEvent(this.ui.mainDiv,'click.GUIGraphSparkline-'+self.id,function(e){if(e.which===1){var target=dfx.getMouseEventTarget(e);if((target!==self.ui.shovel)&&(dfx.getParents(target).inArray(self.ui.shovel)===false)){var clickPosition=(dfx.getMouseEventPosition(e).x-dfx.getElementCoords(self.ui.mainDiv).x);var shovelWidth=dfx.getElementDimensions(self.ui.shovel,true).width;var maxShovelLeft=dfx.getElementDimensions(self.ui.mainDiv,true).width-dfx.getElementDimensions(self.ui.shovel,true).width;var shovelLeft=Math.min(Math.max((clickPosition-(shovelWidth/2)),0),maxShovelLeft);self.setRange(self.determineShovelBounds.call(self,shovelLeft));}}});},enableMouseDown:function()
{var self=this;dfx.addEvent(this.ui.shovel,'mousedown.GUIGraphSparkline-'+self.id,function(e){if(e.which===1){var target=dfx.getMouseEventTarget(e);if(dfx.getParents(target).inArray(self.ui.mainDiv)===true){self.dragStart=dfx.getMouseEventPosition(e).x-parseFloat(dfx.getStyle(self.ui.shovel,'left'));self.enableMouseMove();self.enableMouseUp();e.preventDefault();}}});},enableMouseUp:function()
{var self=this;dfx.addEvent(document,'mouseup.GUIGraphSparkline-'+self.id,function(e){if(self.dragStart!==null){var target=dfx.getMouseEventTarget(e);dfx.removeClass(self.ui.mainDiv,'shovel-moving');dfx.setNodeTextContent(self.ui.shovelText,'');if(dfx.getParents(target).inArray(self.ui.mainDiv)===true){var dragPosition=dfx.getMouseEventPosition(e).x;var shovelLeft=(dragPosition-self.dragStart);var shovelWidth=dfx.getElementDimensions(self.ui.shovel,true).width;var maxShovelLeft=dfx.getElementDimensions(self.ui.mainDiv,true).width-dfx.getElementDimensions(self.ui.shovel,true).width;shovelLeft=Math.min(Math.max(shovelLeft,0),maxShovelLeft);self.setRange(self.determineShovelBounds.call(self,shovelLeft));}else{self.setRange(self.current.range,false);}
self.dragStart=null;}
self.disableMouseMove();self.disableMouseUp();});},enableMouseMove:function()
{var self=this;dfx.addEvent(document,'mousemove.GUIGraphSparkline-'+self.id,function(e){if(self.dragStart!==null){var target=dfx.getMouseEventTarget(e);if(dfx.getParents(target).inArray(self.ui.mainDiv)===true){var dragPosition=dfx.getMouseEventPosition(e).x;var shovelLeft=(dragPosition-self.dragStart);var shovelWidth=dfx.getElementDimensions(self.ui.shovel,true).width;var maxShovelLeft=dfx.getElementDimensions(self.ui.mainDiv,true).width-dfx.getElementDimensions(self.ui.shovel,true).width;shovelLeft=Math.min(Math.max(shovelLeft,0),maxShovelLeft);var bounds=self.determineShovelBounds.call(self,shovelLeft);dfx.addClass(self.ui.mainDiv,'shovel-moving');var i=self.settings._rowids.find(bounds.start);var startName=bounds.start;if(i>=0){startName=self.settings._xAxes[i];}
var i=self.settings._rowids.find(bounds.end);var endName=bounds.start;if(i>=0){endName=self.settings._xAxes[i];}
dfx.setNodeTextContent(self.ui.shovelText,startName+' - '+endName);self.setRange(bounds,false);}else{var bounds=self.current.range;}
var i=self.settings._rowids.find(bounds.start);var startName=bounds.start;if(i>=0){startName=self.settings._xAxes[i];}
var i=self.settings._rowids.find(bounds.end);var endName=bounds.start;if(i>=0){endName=self.settings._xAxes[i];}
dfx.setNodeTextContent(self.ui.shovelText,startName+' - '+endName);self.setRange(bounds,false);}});},disable:function()
{if(this.enabled!==false){this.enabled=false;this.disableClick();this.disableMouseDown();this.disableMouseUp();this.disableMouseMove();}},disableClick:function()
{dfx.removeEvent(this.ui.mainDiv,'click.GUIGraphSparkline-'+this.id);},disableMouseDown:function()
{dfx.removeEvent(this.ui.shovel,'mousedown.GUIGraphSparkline-'+this.id);},disableMouseUp:function()
{dfx.removeEvent(document,'mouseup.GUIGraphSparkline-'+this.id);},disableMouseMove:function()
{dfx.removeEvent(document,'mousemove.GUIGraphSparkline-'+this.id);}}
function GUIIconLink(id,settings)
{this.id=id;this.settings=settings;this.element=dfx.getId(this.id);GUI.addWidgetEvent(this,'click');this.init();}
GUIIconLink.prototype={init:function()
{var self=this;dfx.addEvent(this.element,'click',function(e){self.fireClickCallbacks(self.element,e);});},setValue:function(title)
{dfx.setHtml(dfx.getClass('text',this.element),title);},getValue:function()
{var value=this.settings.icon;if(this.settings.alternateValues){for(var altVal in this.settings.alternateValues){if(dfx.hasClass(this.element,altVal)===true){return altVal;}}}
return value;},changeValue:function(icon)
{if(typeof icon==='string'){var self=this;if(this.settings.icon){dfx.removeClass(this.element,this.settings.icon);}
dfx.foreach(this.settings.iconTypes,function(iconType){dfx.removeClass(self.element,self.settings.iconTypes[iconType]);return true;});if(icon.length>0){dfx.addClass(this.element,icon);}
if(icon===this.settings.icon){this.setValue(this.settings.value);}else{if(this.settings.alternateValues&&this.settings.alternateValues[icon]){this.setValue(this.settings.alternateValues[icon]);}}}},toggle:function(alternateValue)
{if(dfx.hasClass(this.element,alternateValue)===true){this.changeValue();}else{this.changeValue(alternateValue);}}}
function GUIIntervention(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(id);this._data=null;this._orientationOrder=['top.center','top.left','top.right','bottom.center','bottom.left','bottom.right'];this.init();}
GUIIntervention.prototype={init:function()
{if(this.elem){var elem=this.elem;dfx.addLoadEvent(function(){document.body.appendChild(elem);});}
GUI.addWidgetEvent(this,'onClose');if(this.settings.onclose){this.addOnCloseCallback(this.settings.onclose);}
if(this.settings.persistent!==true){var self=this;GUI.addTemplateRemovedCallback(function(){self.hide(null,true);});}},hide:function(info,dontFireEvents)
{dfx.removeClass(this.elem,'visible');if(dontFireEvents!==true){this.fireOnCloseCallbacks(info,this._data);}},show:function(targetElement,data)
{dfx.removeClass(this.elem,'visible');dfx.addClass(this.elem,'calc');var classNames=['top','left','right','bottom','middle','center'];var elem=this.elem;dfx.foreach(classNames,function(i){dfx.removeClass(elem,classNames[i]);});if(!targetElement&&this.settings.targetElementid){targetElement=dfx.getId(this.settings.targetElementid);}
if(targetElement){this.determinePosition(this.elem,targetElement,this.getOrientationOrder());}
dfx.addClass(this.elem,'visible');dfx.removeClass(this.elem,'calc');this._data=data;},getData:function()
{return this._data;},determinePosition:function(element,targetElement,orientationOrder)
{var targetRect=dfx.getBoundingRectangle(targetElement);var elemRect=dfx.getBoundingRectangle(element);var elemH=(elemRect.y2-elemRect.y1);var elemW=(elemRect.x2-elemRect.x1);var winDim=dfx.getWindowDimensions();var targetMidX=targetRect.x1+((targetRect.x2-targetRect.x1)/2);var targetMidY=targetRect.y1+((targetRect.y2-targetRect.y1)/2);var posX=0;var posY=0;if(this.settings.orientation){orientationOrder=[this.settings.orientation];}
var oln=orientationOrder.length;for(var o=0;o<oln;o++){var classNames=orientationOrder[o];var parts=classNames.split('.');switch(parts[0]){case'top':posY=targetMidY;break;case'bottom':posY=(targetMidY-elemH);break;case'right':posX=(targetRect.x1-elemW);break;default:break;}
switch(parts[1]){case'left':posX=targetMidX;break;case'center':posX=(targetMidX-(elemW/2));break;case'right':posX=(targetMidX-elemW);break;case'middle':posY=(targetMidY-(elemH/2));break;default:break;}
var scrollCoords=dfx.getScrollCoords();if(this.settings.fixedPositioning===true){posX-=scrollCoords.x;posY-=scrollCoords.y;posX=Math.abs(posX);posY=Math.abs(posY);}
winDim.width+=scrollCoords.x;winDim.height+=scrollCoords.y;dfx.addClass(element,parts[0]);dfx.addClass(element,parts[1]);dfx.setStyle(element,'left',posX+'px');dfx.setStyle(element,'top',posY+'px');var newElemRect=dfx.getBoundingRectangle(element);if((newElemRect.x1>0)&&(winDim.width>newElemRect.x2)&&(newElemRect.y1>0)&&(winDim.height>newElemRect.y2)){break;}else{dfx.removeClass(element,parts[0]);dfx.removeClass(element,parts[1]);}
if(this.settings.orientation){break;}}},getOrientationOrder:function()
{var order=[];if(this.settings.orientationOrder){order=this.settings.orientationOrder;}
return order.concat(this._orientationOrder);}};function GUILineage(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);this.listElem=dfx.getTag('ul',this.elem)[0];GUI.addWidgetEvent(this,'itemClicked');this.init();}
GUILineage.prototype={init:function()
{var self=this;dfx.addEvent(this.listElem,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.isTag(target,'a')===true){var index=0;for(var node=target.parentNode.previousSibling;node;node=node.previousSibling){if(dfx.isTag(node,'li')===true){index++;}}
self.fireItemClickedCallbacks(dfx.attr(target.parentNode,'itemid'),index,target.parentNode);return;}});},getLineage:function()
{var lineage=[];var liItems=dfx.getTag('li',this.elem);for(var i=0;i<liItems.length;i++){var liItem=liItems[i];var itemid=dfx.attr(liItem,'itemid');var name=dfx.attr(liItem,'itemname');lineage.push({assetid:itemid,name:name});}
return lineage;},getSelectedAsset:function()
{var assetid=0;var liItems=dfx.getTag('li',this.elem);if(liItems.length>0){var element=liItems[(liItems.length-1)];assetid=dfx.attr(element,'itemid');}
return assetid;},getSelectedParent:function()
{var assetid=0;var liItems=dfx.getTag('li',this.elem);if(liItems.length>0){if(dfx.isset(liItems[(liItems.length-2)])===true){var element=liItems[(liItems.length-2)];assetid=dfx.attr(element,'itemid');}}
return assetid;},setLineage:function(lineage)
{var itemTemplate=this.settings._templates.itemTemplate;var elements=[];if(lineage instanceof Array){lineageLn=lineage.length;for(var i=0;i<lineageLn;i++){var lineageElement=lineage[i];var tmp=document.createElement('div');var itemtpl=itemTemplate;var itemid=lineageElement.assetid;var name=lineageElement.name;itemtpl=itemtpl.replace('%itemid%',itemid);itemtpl=itemtpl.replace('%itemname%',name);itemtpl=itemtpl.replace('%title%',name);dfx.setHtml(tmp,itemtpl);elements.push(tmp.firstChild);}}else{dfx.foreach(lineage,function(itemid){var tmp=document.createElement('div');var itemtpl=itemTemplate;itemtpl=itemtpl.replace('%itemid%',itemid);itemtpl=itemtpl.replace('%itemname%',lineage[itemid]);itemtpl=itemtpl.replace('%title%',lineage[itemid]);dfx.setHtml(tmp,itemtpl);elements.push(tmp.firstChild);});}
dfx.empty(this.listElem);var eln=elements.length;for(var i=0;i<eln;i++){this.listElem.appendChild(elements[i]);}}};function GUIList(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(id);this._loadingItem=null;var self=this;if(settings.sortable===true){dfxjQuery(this.elem).sortable({axis:'y',handle:this.settings.dragHandler||'div.GUIList-dragHandle',items:'li.sortable',stop:function(){self.fireItemsSortedCallbacks.apply(this,arguments);}});}
GUI.addWidgetEvent(this,'itemToggled');GUI.addWidgetEvent(this,'itemsSorted');GUI.addWidgetEvent(this,'itemClicked');var self=this;dfx.addEvent(this.elem,'click',function(e){if(self.settings.selectable===false&&self.hasItemClickedCallbacks()===false){return;}
var target=dfx.getMouseEventTarget(e);while(target){if(target.parentNode===self.elem){var itemid=dfx.attr(target,'itemid');if(!itemid){break;}
if(self.settings.selectable!==false){self.selectItem(itemid);}
self.fireItemClickedCallbacks(itemid,target,self.getItemGroup(target));break;}
target=target.parentNode;}});}
GUIList.prototype={toggleDelete:function(itemElement,noEvent)
{var deleteIcon=dfx.getClass(this.id+'-deleteIcon',itemElement)[0];if(!deleteIcon){return;}
dfx.toggleClass(deleteIcon,'deleted');var deleted=dfx.hasClass(deleteIcon,'deleted');if(noEvent===true){this._setModified(true);}else{this.fireItemToggledCallbacks(dfx.attr(itemElement,'itemid'),deleted,itemElement);this._setModified(true);}},getValue:function(activeIdsOnly)
{var items={};var removed={};var ids=[];for(var node=this.elem.firstChild;node;node=node.nextSibling){if(dfx.isTag(node,'li')===false){continue;}
var itemid=dfx.attr(node,'itemid');if(!itemid){continue;}
var deleteIcon=dfx.getClass('GUI-delete',node)[0];if(dfx.hasClass(deleteIcon,'deleted')===true){if(activeIdsOnly===true){continue;}
if(typeof this._itemValueGetter==='function'){removed[itemid]=this._itemValueGetter.call(this,itemid,node);}else{removed[itemid]=true;}}else if(activeIdsOnly===true){ids.push(itemid);}else{if(typeof this._itemValueGetter==='function'){items[itemid]=this._itemValueGetter.call(this,itemid,node);}else{items[itemid]=true;}}}
if(activeIdsOnly===true){return ids;}
var retValue={items:items,removed:removed};return retValue;},setItemValueGetter:function(fn)
{this._itemValueGetter=fn;},getItemElement:function(itemid)
{for(var node=this.elem.firstChild;node;node=node.nextSibling){if(dfx.isTag(node,'li')&&dfx.attr(node,'itemid')===itemid){return node;}}
return null;},getGroupElement:function(groupid)
{for(var node=this.elem.firstChild;node;node=node.nextSibling){if(dfx.isTag(node,'li')&&dfx.attr(node,'groupid')===groupid){return node;}}
return null;},getItemGroup:function(item)
{if(typeof item==='string'){item=this.getItemElement(item);}
if(!item){return null;}
while(item.previousSibling){if(dfx.hasClass(item.previousSibling,'GUIList-groupHeader')===true){return dfx.attr(item.previousSibling,'groupid');}
item=item.previousSibling;}
return null;},selectItem:function(itemid)
{if(this.settings.selectable==='single'){var elem=this.getItemElement(itemid);if(dfx.hasClass(elem,'no-selection')===true){return;}}
for(var node=this.elem.firstChild;node;node=node.nextSibling){if(dfx.isTag(node,'li')&&dfx.attr(node,'itemid')===itemid){if(this.settings.selectable==='multiple'){if(dfx.hasClass(node,'no-selection')===true&&dfx.hasClass(node,'selected')!==true){continue;}
dfx.toggleClass(node,'selected');}else if(this.settings.selectable==='single'&&dfx.hasClass(node,'no-selection')===false){dfx.addClass(node,'selected');}}else if(this.settings.selectable!=='multiple'){dfx.removeClass(node,'selected');}}},getSelectedItems:function()
{var selection=[];var selected=dfx.getClass('selected',this.elem);var c=selected.length;for(var i=0;i<c;i++){selection.push(dfx.attr(selected[i],'itemid'));}
return selection;},addToGroup:function(groupid,element)
{var groupElem=this.getGroupElement(groupid);if(!groupElem){return false;}
var node=groupElem;for(node=groupElem.nextSibling;node;node=node.nextSibling){if(dfx.hasClass(node,'GUIList-groupHeader')===true){node=node.previousSibling;break;}}
if(node){dfx.insertAfter(node,element);return true;}
return false;},generateItems:function(itemsData,callback,system,action,groupid)
{var itemsGenerator=this.settings.itemsGenerator;if(system&&action){itemsGenerator={system:system,action:action};}
if(!this._loadingItem){this._loadingItem=document.createElement('li');dfx.addClass(this._loadingItem,'loadingItem');var loadingItemCont='<div class="GUIList-dragHandle"></div>';loadingItemCont+='<div class="GUIList-itemContent"><img src="'+GUI.getWidgetURL('GUI/Table')+'/ajax-loader.gif" /></div>';loadingItemCont+='<div class="GUI-delete"><span class="GUI-deleteIcon" onclick="GUI.getWidget(\''+this.id+'\').toggleDelete(this.parentNode.parentNode);"/></div>';dfx.setHtml(this._loadingItem,loadingItemCont);}
if(!groupid){this.elem.appendChild(this._loadingItem);}else{this.addToGroup(groupid,this._loadingItem);}
var params={itemsData:dfx.jsonEncode(itemsData),itemsGenerator:dfx.jsonEncode(itemsGenerator),settings:dfx.jsonEncode(this.settings)};var self=this;GUI.sendRequest('GUIList','generateItems',params,function(rowHTML){var tmp=document.createElement('div');dfx.setStyle(tmp,'display','none');document.body.appendChild(tmp);dfx.setHtml(tmp,rowHTML);dfx.remove(self._loadingItem);self.hideNoItemsMsg();while(tmp.firstChild){if(!groupid){self.elem.appendChild(tmp.firstChild);}else{if(self.addToGroup(groupid,tmp.firstChild)===false){GUI.message('developer','Faild to add item to list group','error');break;}}}
dfx.remove(tmp);self._setModified.call(self,true);if(callback){callback.call(self);}},'raw');},removeItems:function(itemids)
{var c=itemids.length;for(var i=0;i<c;i++){var element=this.getItemElement(itemids[i]);if(element){dfx.remove(element);}}
var currentItems=this.getValue();if(dfx.isEmpty(currentItems.items)===true&&dfx.isEmpty(currentItems.removed)===true){this.showNoItemsMsg();}},showNoItemsMsg:function()
{if(!this.settings.noItemsMsg){return;}
dfx.addClass(this.elem,'noItems');var noItemsid=this.id+'-noItemsMsg';var noItemsDiv=dfx.getId(noItemsid);if(!noItemsDiv){noItemsDiv=document.createElement('div');noItemsDiv.id=noItemsid;dfx.addClass(noItemsDiv,'GUIList-noItemsMsg');dfx.setHtml(noItemsDiv,this.settings.noItemsMsg);dfx.insertAfter(this.elem,noItemsDiv);}
dfx.addClass(noItemsDiv,'noItems');},hideNoItemsMsg:function()
{var noItemsDiv=dfx.getId(this.id+'-noItemsMsg');if(noItemsDiv){dfx.removeClass(noItemsDiv,'noItems');}
dfx.removeClass(this.elem,'noItems');},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}};function GUIModeSwitcher(id,settings)
{GUIContentSwitcher.call(this,id,settings);this.className='GUIModeSwitcher';this.numberOfStaticButtons=settings.numberOfStaticButtons||2;var elem=dfx.getId(this.id);this._staticBtnContainer=dfx.getClass('modeList-1',elem)[0];this._mouseOver=false;this._autoCollapseT=null;this._collapseTimeout=1500;this._slideTime=300;this._dynamicBtnContainer=dfx.getClass('modeList-2',elem)[0];this._sliderElement=dfx.getClass('GUIModeSwitcher-overflow',elem)[0];this._lastVisibleButtonIndex=null;this._staticButtonsWidth=0;this._dynamicButtonsWidth=0;this._dynamicButtons=null;this._staticButtons=null;this._leftMargin=15;this._initButtonWidths();this.calculateSwitcherWidth(true);this.addExpandEvent();this._confirmedSwitch=false;GUI.addWidgetEvent(this,'preModeSwitch');var disableLayer=dfx.getClass('disableLayer',elem);GUI.addOverlayEnabledCallback(function(){dfx.showElement(disableLayer);});GUI.addOverlayDisabledCallback(function(disabledType,disabledOptions,nextOverlayType){if(!nextOverlayType){dfx.hideElement(disableLayer);}});}
GUIModeSwitcher.prototype={_initButtonWidths:function()
{var staticButtons=this._getStaticButtons();var sln=staticButtons.length;for(var i=0;i<sln;i++){this._staticButtonsWidth+=dfx.getElementWidth(staticButtons[i]);}
this._staticButtonsWidth=this._staticButtonsWidth;var dynamicButtons=this._getDynamicButtons();var dln=dynamicButtons.length;for(var i=0;i<dln;i++){this._dynamicButtonsWidth+=dfx.getElementWidth(dynamicButtons[i]);}},calculateSwitcherWidth:function(setWidth)
{var elem=dfx.getId(this.id);var minWidth=0;var maxWidth=0;var staticButtons=this._getStaticButtons();var dynamicButtons=this._getDynamicButtons();var width=this._staticButtonsWidth;if(dynamicButtons.length>0){var lastButtonIndex=this.getLastVisibleButtonIndex();var lastButtonWidth=dfx.getElementWidth(dynamicButtons[lastButtonIndex]);width+=lastButtonWidth;}
if(setWidth===true){dfx.setStyle(this._staticBtnContainer.parentNode.parentNode,'width',width+'px');dfx.setStyle(this._dynamicBtnContainer,'left',this._getSlideOffset()+'px');}},_getStaticButtons:function()
{if(!this._staticButtons){this._staticButtons=dfx.getTag('a',this._staticBtnContainer);}
return this._staticButtons;},_getDynamicButtons:function()
{if(!this._dynamicButtons){if(this._dynamicBtnContainer){this._dynamicButtons=dfx.getTag('a',this._dynamicBtnContainer)}else{this._dynamicButtons=[];}}
return this._dynamicButtons;},_isStaticButton:function(button)
{var btns=this._getStaticButtons();var bln=btns.length;for(var i=0;i<bln;i++){if(btns[i].parentNode===button){return true;}}
return false;},getLastVisibleButtonIndex:function()
{if(this._lastVisibleButtonIndex===null){var dynamicButtons=this._getDynamicButtons();var index=0;dfx.foreach(dynamicButtons,function(i){var btn=dynamicButtons[i].parentNode;if(dfx.hasClass(btn,'selected')===true){index=i;return false;}});this._lastVisibleButtonIndex=index;}
return this._lastVisibleButtonIndex;},_getSlideOffset:function()
{var dynamicButtons=this._getDynamicButtons();var lastIndex=this.getLastVisibleButtonIndex();var slideOffset=this._staticButtonsWidth;for(var i=0;i<lastIndex;i++){slideOffset-=dfx.getElementWidth(dynamicButtons[i]);}
return(slideOffset-this._leftMargin);},addExpandEvent:function()
{var elem=dfx.getClass('GUIModeSwitcher-expander',dfx.getId(this.id))[0];var self=this;dfx.addEvent(elem,'click',function(){self.toggle();});dfx.hover(dfx.getId(this.id),function(e){clearTimeout(self._autoCollapseT);self._mouseOver=true;},function(e){self._mouseOver=false;if(dfx.attr(self._staticBtnContainer,'state')==='opened'){self.autoCollapse();}});},toggle:function()
{var state=dfx.attr(this._staticBtnContainer,'state');if(state==='opened'){this.collapse();}else{this.expand();}},expand:function(collapseTime)
{var seconds=this._slideTime;clearTimeout(this._autoCollapseT);dfx.attr(this._staticBtnContainer,'state','opened');var self=this;var newWidth=this._staticButtonsWidth+this._dynamicButtonsWidth;dfx.animate(this._sliderElement,{width:newWidth},seconds,function(){self.autoCollapse(collapseTime);});dfx.animate(this._dynamicBtnContainer,{left:(this._staticButtonsWidth-this._leftMargin)},seconds);var expanderSpan=dfx.getClass('GUIModeSwitcher-expander',dfx.getId(this.id))[0];dfx.addClass(expanderSpan,'expanded');},collapse:function()
{clearTimeout(this._autoCollapseT);var dynamicButtons=this._getDynamicButtons();var lastButtonIndex=this.getLastVisibleButtonIndex();var animate=false;if(dynamicButtons.length>0){animate=true;var lastButtonWidth=dfx.getElementWidth(dynamicButtons[lastButtonIndex]);}
dfx.attr(this._staticBtnContainer,'state','closed');if(animate===true){dfx.animate(this._sliderElement,{width:(this._staticButtonsWidth+lastButtonWidth)},this._slideTime);dfx.animate(this._dynamicBtnContainer,{left:this._getSlideOffset()},this._slideTime);}
var expanderSpan=dfx.getClass('GUIModeSwitcher-expander',dfx.getId(this.id))[0];dfx.removeClass(expanderSpan,'expanded');},autoCollapse:function(collapseTime)
{collapseTime=collapseTime||this._collapseTimeout;if(this._mouseOver===true){return;}
var self=this;clearTimeout(this._autoCollapseT);this._autoCollapseT=setTimeout(function(){if(self._mouseOver===true){return;}
self.collapse();},collapseTime);},buttonClicked:function(button)
{this._confirmedSwitch=true;if(this.canSwitch()===false){return;}
var btn=button.parentNode;if(this._isStaticButton(btn)===false){var index=0;for(var node=btn.previousSibling;node;node=node.previousSibling){if(dfx.isTag(node,'li')===true){index++;}}
this._lastVisibleButtonIndex=index;}
this.collapse();GUIContentSwitcher.prototype.buttonClicked.call(this,button);},removeAllSelectedClasses:function()
{GUIContentSwitcher.prototype._removeSelectedClass.call(this);},addSelectedClass:function(system,modeid)
{var dynamicButtons=this._getDynamicButtons();var staticButtons=this._getStaticButtons();var buttons=dfx.arrayMerge(staticButtons,dynamicButtons);for(var i=0;i<buttons.length;i++){var button=buttons[i];var buttonSystem=dfx.attr(button,'system');var buttonModeid=dfx.attr(button,'modeid');if(buttonSystem===system&&buttonModeid===modeid){dfx.addClass(button.parentNode,'selected');return true;}}
return false;},unloadContent:function()
{if(this.current!==null){var forceSwitch=this._confirmedSwitch;if(GUI.unloadTemplate(this.current.system,this.current.template,forceSwitch)===false){return false;}else{this.current=null;}}},loadContent:function(system,modeid)
{var self=this;self.unloadContent();self.firePreModeSwitchCallbacks(system,modeid);GUIContentSwitcher.prototype.loadContent.call(this,system,modeid);},showButton:function(template,secondsToShow)
{secondsToShow=(secondsToShow*1000)||null;var parts=template.split(':');if(parts.length<2){return;}
var elem=dfx.getId(this.id);var buttons=dfx.getTag('a',elem);var bln=buttons.length;var foundButton=null;for(var i=0;i<bln;i++){var button=buttons[i];if(dfx.attr(button,'system')===parts[0]&&dfx.attr(button,'modeid')===parts[1]){foundButton=button;break;}}
this.expand(secondsToShow);return foundButton;}};dfx.noInclusionInherits('GUIModeSwitcher','GUIContentSwitcher',true);function GUIPassword(id,settings)
{this.id=id;this.settings=settings;var self=this;var elem=dfx.getId(id);var text=GUI.getWidget(id+'-confirmText');var passwordField=GUI.getWidget(id+'-main');this._barElem=dfx.getClass('GUIPassword-strengthBar',elem)[0];this._strengthTextElem=dfx.getClass('GUIPassword-strengthText',elem)[0];this._matchStr=dfx.getClass('GUIPassword-matchText',elem)[0];this._confirmWrapper=dfx.getClass('GUIPassword-confirmWrapper',elem)[0];this._confirmInput=GUI.getWidget(id+'-confirm');this._passwordInput=passwordField;text.addFocusCallback(function(){dfx.addClass(self._confirmWrapper,'typing');self._confirmInput.focus();});passwordField.addKeyUpCallback(function(passwd){var rating=self.getPasswdRating(passwd);var className=self.getRatingClassName(rating);self.maintainPasswordMatchMsg();var barElem=dfx.getClass('GUIPassword-strengthBar',elem)[0];self.initRatingBar();dfx.addClass(barElem,className);self.setBarStrengthText(rating);});this._confirmInput.addKeyUpCallback(function(passwd){self.maintainPasswordMatchMsg();});this._confirmInput.addBlurCallback(function(){var confirmVal=self._confirmInput.getValue()
if(confirmVal===''){dfx.removeClass(self._confirmWrapper,'typing');}});}
GUIPassword.prototype={getValue:function(fullInterfaceValue)
{var value='';var box1=this._passwordInput.getValue();var box2=this._confirmInput.getValue();if(fullInterfaceValue===true){var value=[box1,box2];}else{if(box1===box2){var value=box1;}else{var value=null;}}
return value;},getPasswdRating:function(val)
{var score=0;if(val.length>=1){score++;}
if(val.length>=6){score++;}
if(val.match(/[a-z]+/)!==null&&val.match(/[A-Z]+/)!==null&&val.match(/[0-9]+/)!==null){score++;}
if(val.match(/[ ]+/)!==null){score++;}
if(val.match(/[!@#$%\^&*\?_~\-\(\)]+/)!==null){score++;}
if(val.length>=12){score++;}
return score;},getRatingClassName:function(rating)
{var classN='';switch(rating){case 1:classN='veryWeak';break;case 2:classN='weak';break;case 3:classN='better';break;case 4:classN='medium';break;case 5:classN='strong';break;case 6:classN='veryStrong';break;case 0:default:break;}
return classN;},initRatingBar:function()
{this.setBarStrengthText(0);var classNames=['veryWeak','weak','better','medium','strong','veryStrong'];var len=classNames.length;for(var i=0;i<len;i++){dfx.removeClass(this._barElem,classNames[i]);}},setBarStrengthText:function(rating)
{dfx.setHtml(this._strengthTextElem,this.settings._ratings[rating]);},maintainPasswordMatchMsg:function()
{var index=0;var passwrdVal=this._passwordInput.getValue();var confirmVal=this._confirmInput.getValue()
if(passwrdVal!==''&&passwrdVal===confirmVal){index=1;}
dfx.setHtml(this._matchStr,this.settings._matchStrs[index]);},validateSetValue:function(callback)
{var value=this.getValue(true);if(value[0]!==value[1]){var validationResult=['Passwords do not match.'];}else{var validationResult=[];}
callback.call(self,validationResult);},isChangedValue:function(testValue)
{var isChangedValue=(testValue!=='');return isChangedValue;}};function GUIRadioButton(id,settings)
{this.id=id;this.settings=settings;var widgetElement=dfx.getId(id);this.input=dfx.getTag('input',widgetElement)[0];GUI.addWidgetEvent(this,'click');GUI.addWidgetEvent(this,'afterClick');this.init();}
GUIRadioButton.prototype={init:function()
{var self=this;var input=this.input;var element=dfx.getId(this.id);if(this.settings.label){element=input;}
dfx.addEvent(element,'click',function(e){self.fireClickCallbacks(true,e);self.setValue(true);self.fireAfterClickCallbacks(true,e);});},getValue:function()
{return this.input.checked;},getGroupValue:function()
{var elem=dfx.getClass(this.settings.groupid+' checked')[0];if(elem){return dfx.getTag('input',elem)[0].value;}},setValue:function(value)
{this.input.checked=value;dfx.removeClass(dfx.getClass(this.settings.groupid+' checked'),'checked');if(value===true){dfx.addClass(dfx.getId(this.id),'checked');}else{dfx.removeClass(dfx.getId(this.id),'checked');}
this._setModified(true);},toggle:function()
{if(this.input.checked){this.setValue(false);}else{this.setValue(true);}},focus:function()
{this.input.focus();},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}}
function GUISaveButton(id,settings)
{this.id=id;this.settings=settings;this.className=settings.widget.type;this._saveButton=null;this._revertButton=null;this.init();}
GUISaveButton.prototype={init:function()
{var self=this;this._saveButton=dfx.getId(this.id+'-save');this._revertButton=dfx.getId(this.id+'-revert');GUI.addModifiedCallback(function(widgetid,modified){if(modified===true){self.enable();}else if(self._canDisable()===true){self.disable();}});GUI.addRevertedCallback(function(){self.disable();});GUI.addTemplateRemovedCallback(function(){if(self._canDisable()===true){self.disable();}});GUI.addSavedCallback(function(){if(self._canDisable()===true){self.disable();}});var disabledViaOverlay=false;GUI.addOverlayEnabledCallback(function(){if(dfx.hasClass(dfx.getId(self.id),self.className+'Active')===true){disabledViaOverlay=true;self.disable();}});GUI.addOverlayDisabledCallback(function(){if(disabledViaOverlay===true){self.enable();disabledViaOverlay=false;}});},_canDisable:function()
{if(GUI.hasModifiedTemplates()===false&&GUI.hasModifiedWidgets()===false){return true;}
return false;},revert:function()
{GUI.getWidget(this.id+'-intervention').show(this._revertButton);},enable:function()
{dfx.attr(this._saveButton,'disabled',false);dfx.attr(this._revertButton,'disabled',false);dfx.addClass(dfx.getId(this.id),this.className+'Active');},disable:function()
{dfx.attr(this._saveButton,'disabled',true);dfx.attr(this._revertButton,'disabled',true);dfx.removeClass(dfx.getId(this.id),this.className+'Active');}};function GUIScreenSettings(id,settings)
{this.id=id;this.settings=settings;this.className='GUIScreenSettings';GUI.addWidgetEvent(this,'itemSelected');GUI.addWidgetEvent(this,'itemToggled');this.init();}
GUIScreenSettings.prototype={init:function()
{if(this.settings.selectable===true||this.settings.removable===true){var self=this;dfx.addEvent(dfx.getId(this.id),'click',function(e){self._handleClickEvent(e)});}},_handleClickEvent:function(e)
{var target=dfx.getMouseEventTarget(e);var handled=false;while((handled===false)&&(target!==dfx.getId(this.id))){if(dfx.hasClass(target,'GUI-deleteIcon')===true){this.itemToggle(target.parentNode);handled=true;}else if(dfx.hasClass(target,'GUIScreenSettings-item')===true){if(this.settings.selectable===true){this.selectItem(target);handled=true;}}
if(handled===false){target=target.parentNode;}}},selectItem:function(itemElement,noEvent)
{var prevSelected=dfx.getClass('GUIScreenSettings-item selected',dfx.getId(this.id));if(prevSelected.length>0){prevSelected=prevSelected[0];}else{prevSelected=null;}
if(prevSelected!==itemElement){dfx.removeClass(prevSelected,'selected');dfx.addClass(itemElement,'selected');if(!noEvent){this.fireItemSelectedCallbacks(dfx.attr(itemElement,'itemid'),itemElement,prevSelected);}}},getSelectedItemId:function()
{var selectedItem=dfx.getClass('GUIScreenSettings-item selected',dfx.getId(this.id));return dfx.attr(selectedItem,'itemid');},addItem:function(itemid,title,selected,beforeIndex)
{var template=this.settings._templates.item;template=template.replace('%title%',title);template=template.replace(/%itemid%/g,itemid);var tmpEl=document.createElement('div');dfx.setHtml(tmpEl,template);var newElem=tmpEl.firstChild;var listCont=dfx.getClass('GUIScreenSettings-mid',dfx.getId(this.id))[0];if(beforeIndex){dfx.insertBefore(listCont.childNodes[beforeIndex],newElem);}else{listCont.appendChild(newElem);}
if(selected===true){this.selectItem(newElem);}
return newElem;},itemToggle:function(itemElement,noEvent)
{dfx.toggleClass(itemElement,'deleted');if(noEvent===true){return;}
this.fireItemToggledCallbacks(dfx.attr(itemElement.parentNode,'itemid'),dfx.hasClass(itemElement,'deleted'),itemElement.parentNode);},getItemElement:function(itemid)
{var items=dfx.getClass(this.className+'-item',dfx.getId(this.id));var self=this;var elem=null;dfx.foreach(items,function(i){if(itemid===dfx.attr(items[i],'itemid')){elem=items[i];return false;}
return true;});return elem;},getValue:function()
{var items=dfx.getClass(this.className+'-item',dfx.getId(this.id));var value={};var self=this;dfx.foreach(items,function(i){var item=items[i];var widgetValues=self.getWidgetValues(item);dfx.foreach(widgetValues,function(widgetid){value[widgetid]=widgetValues[widgetid];});});return value;},getWidgetValues:function(itemElem)
{var elems=dfx.find(itemElem,'[id]');var ln=elems.length;var values={};if(ln===0){return null;}
for(var i=0;i<ln;i++){var elem=elems[i];var id=elem.getAttribute('id');if(!id){continue;}
var widget=GUI.getWidget(id);if(!widget){continue;}
if(typeof widget.getValue!=='function'){continue;}
values[id]=widget.getValue();}
return values;}};function GUIScreenSwitcher(id,settings)
{GUIContentSwitcher.call(this,id,settings);this.className='GUIScreenSwitcher';this.elem=dfx.getId(this.id);this.targetid=this.settings.target;this.targetElem=dfx.getId(this.targetid);this.includedFiles={};this.loadedWidgets=[];GUI.addWidgetEvent(this,'screenLoadStarts');GUI.addWidgetEvent(this,'screenLoadFinished');}
GUIScreenSwitcher.prototype={init:function()
{var self=this;dfx.foreach(this.settings._items,function(idx){var itemId=self.settings._items[idx].id;var itemSystem=self.settings._items[idx].system;if(dfx.isset(self.settings._items[idx].template)===true){var template=self.settings._items[idx].template;}else{var template=self.settings._items[idx].id;}
var templatevars=dfx.jsonEncode(self.settings._items[idx].templatevars);var domId=self.id+'-'+itemId;dfx.addEvent(dfx.getId(domId),'click',function(evt){if(self.settings._items[idx].disabled===true){return;}
var current=self.current;if(self.loadContent(itemSystem,template,templatevars)!==false){if(current!==null){var oldDomId=self.id+'-'+current.template;self.unselectButton(dfx.getId(oldDomId));}
self.selectButton(this);self.fireItemChangedCallbacks(itemId,itemSystem);}});dfx.addEvent(dfx.getId(domId),'mouseover',function(evt){var doEvent=true;if(self.current!==null){if(self.current.template===self.settings._items[idx].id){doEvent=false;}}
if(doEvent===true){if(self.settings._items[idx].disabled!=='true'){dfx.addClass(this,'hover');}}});dfx.addEvent(dfx.getId(domId),'mouseout',function(evt){var doEvent=true;if(self.current!==null){if(self.current.template===self.settings._items[idx].id){doEvent=false;}}
if(doEvent===true){if(self.settings._items[idx].disabled!=='true'){dfx.removeClass(this,'hover');}}});return true;});},showButton:function(template)
{var parts=template.split(':');if(parts.length<2){return;}
var button=dfx.getId(this.id+'-'+parts[1]);if(!button){return;}
return dfx.getClass('GUIScreenSwitcher-icon',button)[0];},selectButton:function(button)
{dfx.addClass(button,'selected');dfx.removeClass(button,'inactive');dfx.removeClass(button,'hover');},unselectButton:function(button)
{dfx.addClass(button,'inactive');dfx.removeClass(button,'hover');dfx.removeClass(button,'selected');},loadContent:function(system,template,templatevars)
{if(this.current!==null){if(this.canSwitch()===false||GUI.unloadTemplate(this.current.system,this.current.template,true)===false){return false;}}
GUIContentSwitcher.prototype.loadContent.call(this,system,template,templatevars);return true;},reload:function()
{if(this.current===null){return false;}else{GUIContentSwitcher.prototype.loadContent.call(this,this.current.system,this.current.template,this.current.templatevars);return true;}}};dfx.noInclusionInherits('GUIScreenSwitcher','GUIContentSwitcher',true);function GUISelect(id,settings)
{this.id=id;this.settings=settings;this.currentValue=[];GUI.addWidgetEvent(this,'changed');this.init();}
GUISelect.prototype={init:function()
{var self=this;var selectBox=dfx.getId(this.id);selectBox.getSelectedItems=function(){var selected=[];var len=this.options.length;for(var i=0;i<len;i++){var option=this.options[i];if(option.selected===true){selected.push(option.value);}}
return selected;}
self.currentValue=selectBox.getSelectedItems();dfx.addEvent(selectBox,'change',function(e){var newValue=this.getSelectedItems();self.setValue(newValue,e);});},addOption:function(value,label,beforeIdx)
{var selectBox=dfx.getId(this.id);var op=document.createElement('option');dfx.attr(op,'value',value);dfx.setHtml(op,label);if(typeof beforeIdx==='number'){dfx.insertBefore(selectBox.options[beforeIdx],op);}else{selectBox.appendChild(op);}},removeOption:function(value)
{var selectBox=dfx.getId(this.id);var length=selectBox.options.length;for(var i=0;i<length;i++){if(selectBox.options[i].value===value){dfx.remove(selectBox.options[i]);if(value===this.currentValue[0]){length=selectBox.options.length;for(var j=0;j<length;j++){if(dfx.attr(selectBox.options[j],'disabled')===false){this.setValue(selectBox.options[j].value,null);break;}}}
break;}}},disableOption:function(value)
{var selectBox=dfx.getId(this.id);var length=selectBox.options.length;for(var i=0;i<length;i++){if(selectBox.options[i].value===value){dfx.attr(selectBox.options[i],'disabled',true);if(value===this.currentValue[0]){for(var j=0;j<length;j++){if(dfx.attr(selectBox.options[j],'disabled')===false){this.setValue(selectBox.options[j].value,null);break;}}}
break;}}},enableOption:function(value)
{var selectBox=dfx.getId(this.id);var length=selectBox.options.length;for(var i=0;i<length;i++){if(selectBox.options[i].value===value){dfx.attr(selectBox.options[i],'disabled',false);break;}}},enableAllOptions:function()
{var selectBox=dfx.getId(this.id);var length=selectBox.options.length;for(var i=0;i<length;i++){dfx.attr(selectBox.options[i],'disabled',false);}},getOptionLabel:function(value)
{var selectBox=dfx.getId(this.id);var length=selectBox.options.length;for(var i=0;i<length;i++){if(selectBox.options[i].value===value){return dfx.getHtml(selectBox.options[i]);}}},setOptionLabel:function(value,label)
{var selectBox=dfx.getId(this.id);var length=selectBox.options.length;for(var i=0;i<length;i++){if(selectBox.options[i].value===value){dfx.setHtml(selectBox.options[i],label);break;}}},getValue:function()
{return this.currentValue;},setValue:function(newValue,domEvent,noEvent)
{if((newValue instanceof Array)===false){newValue=[newValue];}
domEvent=domEvent||null;var selectBox=dfx.getId(this.id);selectBox.setSelectedItems=function(selected){if(typeof selected!=='object'){selected=[selected];}
var len=this.options.length;for(var i=0;i<len;i++){var option=this.options[i];if(selected.inArray(option.value)){option.selected=true;}else{option.selected=false;}}}
var self=this;if(self.currentValue!==newValue){var oldValue=self.currentValue;self.currentValue=newValue;selectBox.setSelectedItems(newValue);self._setModified(true);if(noEvent===true){return;}
self.fireChangedCallbacks(oldValue,newValue,domEvent);}},revert:function()
{this.setValue(this.settings.selected);GUI.setModified(this,false);},enable:function()
{var select=dfx.getId(this.id);dfx.removeAttr(select,'disabled');},disable:function()
{var select=dfx.getId(this.id);dfx.attr(select,'disabled','disabled');},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}};function GUISlider(id,settings)
{this.id=id;this.settings=settings;this._lastSnapPos=0;this._slider=dfx.getClass('GUISlider-slider',dfx.getId(this.id))[0];this._element=dfx.getId(this.id);GUI.addWidgetEvent(this,'changed');this.init();}
GUISlider.prototype={init:function()
{var slider=dfx.getClass('GUISlider-slider',dfx.getId(this.id))[0];var main=dfx.getId(this.id);var midPos=null;var leftPos=null;var rightPos=null;var self=this;var currVal=this.getValue();var midPos=null;dfx.addEvent(main,'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'GUISlider-slider')===true){return;}
currVal=self.getValue();var left=Math.floor(dfx.getElementCoords(main).x);var width=Math.floor(dfx.getElementWidth(main));var right=width+left;self._setPosition((self._calPer(e.clientX,(left+(width/2)),right)/2));var newVal=self.getValue();if(newVal!==currVal){self._setModified(true);}
self.fireChangedCallbacks(newVal,currVal);});dfx.addEvent(slider,'mousedown.'+this.id,function(e){if(midPos===null&&leftPos===null){leftPos=dfx.getElementCoords(main).x;rightPos=dfx.getElementWidth(main)+leftPos;midPos=leftPos+(dfx.getElementWidth(main)/2);}
var lastSnap=0;currVal=self.getValue();dfx.addEvent(document,'mousemove.'+self.id,function(e){self._setPosition(self._calPer(e.clientX,midPos,rightPos)/2);});dfx.addEvent(document,'mouseup.'+self.id,function(e){dfx.removeEvent(document,'mousemove.'+self.id);dfx.removeEvent(document,'mouseup.'+self.id);dfx.preventDefault(e);var newVal=self.getValue();if(newVal!==currVal){self._setModified(true);}
self.fireChangedCallbacks(newVal,currVal);return false;});dfx.preventDefault(e);return false;});},_calPer:function(mouseX,midPos,rightPos)
{var current=parseInt(midPos-mouseX);var main=this._element;if(current>0){dfx.removeClass(main,'pos');dfx.addClass(main,'neg');}else if(current<0){dfx.removeClass(main,'neg');dfx.addClass(main,'pos');}else{dfx.removeClass(main,'neg');dfx.removeClass(main,'pos');}
current=Math.abs(current)
var per=((current/(rightPos-midPos))*100);if(per>100){per=100;}
return per;},_setPosition:function(percent)
{if(this.settings.snap===true){var r=percent%this.settings.step;if(r>((this.settings.step/2)+1)){percent=((percent-r)+this.settings.step);}else if(r<((this.settings.step/2)+1)){percent=(percent-r);}else{return;}}
dfx.setStyle(this._slider.parentNode,'width',percent+'%');},getValue:function()
{var main=dfx.getId(this.id);var elem=dfx.getClass('GUISlider-sliderBg',main)[0];var elemWidth=dfx.getStyle(elem,'width');var mainWidth=dfx.getStyle(main,'width');elemWidth=dfx.getElementDimensions(elem,true).width;mainWidth=dfx.getElementDimensions(main,true).width;var percent=(elemWidth/mainWidth*100);var value=(((this.settings.max/2)*percent)/50);if(dfx.hasClass(main,'neg')===true){value=(value*-1);}
return value;},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}};function GUITabPane(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);this.staticContentDiv=null;this.currTabid=null;this.initItem=null;if(dfx.isset(this.settings.initialItem)){this.initItem=this.settings.initialItem;}else{this.initItem=this.settings.tabs[0].id;}
this.currTabid=this.initItem;if(dfx.isset(this.settings.staticContent)){this.staticContentDiv=dfx.getClass('GUITabPane-static',this.elem)[0];}}
GUITabPane.prototype={switchTo:function(tabid)
{dfx.removeClass(dfx.getClass('GUITabPane-tab',this.elem),'active');var tabButton=dfx.getClass('tabButton-'+tabid,this.elem)
dfx.addClass(tabButton,'active');dfx.removeClass(dfx.getClass('GUITabPane-tabContent',this.elem),'active');var tabContent=dfx.getClass('tabContent-'+tabid,this.elem)
dfx.addClass(tabContent,'active');if(this.staticContentDiv!==null){dfx.removeClass(this.staticContentDiv,'GUITabPane-static-'+this.currTabid);dfx.addClass(this.staticContentDiv,'GUITabPane-static-'+tabid,this.elem);}
this.currTabid=tabid;},getVisibleContentElement:function()
{var visibleElement=dfx.getClass('GUITabPane-tabContent active',this.elem)[0];return visibleElement;}};function GUITable(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);this.tbody=dfx.getTag('tbody',this.elem)[0];this._loadingRow=null;if(settings.sortable===true){var self=this;dfxjQuery(this.tbody).sortable({axis:'y',handle:'.GUITable-dragHandle',stop:function(){self.fireRowSortedCallbacks.apply(this,arguments);}});}
this.init();GUI.addWidgetEvent(this,'rowClicked');GUI.addWidgetEvent(this,'rowSorted');GUI.addWidgetEvent(this,'rowToggled');}
GUITable.prototype={init:function()
{if(this.settings.columnSortable===true){dfxjQuery("#"+this.id+"").tablesorter();}
var self=this;var tableElem=dfx.getId(this.id);dfx.addEvent(tableElem,'click',function(e){var target=dfx.getMouseEventTarget(e);while(target&&dfx.isTag(target,'table')===false){if(dfx.isTag(target,'td')===true){self._columnClicked(target);}else if(dfx.isTag(target,'tr')===true){self._rowClicked(target);break;}else if(dfx.isTag(target,'div')===true&&dfx.hasClass(target,'GUI-delete')===true){self.toggleRow.call(self,target.parentNode.parentNode.parentNode);break;}else if(dfx.hasClass(target,'GUITable-colRemovedOverlay')===true){break;}
target=target.parentNode;}});},_columnClicked:function(col){},_rowClicked:function(row)
{if(!row){return;}
if(row.getAttribute('rowselectable')===false||row.getAttribute('rowselectable')==='false'){return;}
if(dfx.getParents(row,'thead',this.id).length>0){return;}
if(this.settings.selectable===true){var parent=row.parentNode;for(var node=parent.firstChild;node;node=node.nextSibling){dfx.removeClass(node,'selected');}
dfx.addClass(row,'selected');}
this.fireRowClickedCallbacks(row.getAttribute('rowid'),row);},generateRows:function(rowsData,callback,system,action)
{var channel=this.settings.rowGenerator;if(system&&action){channel={system:system,action:action};}
var tbody=dfx.getTag('tbody',this.elem)[0];if(!this._loadingRow){this._loadingRow=document.createElement('tr');dfx.addClass(this._loadingRow,'loadingRow');var colCount=0;dfx.foreach(this.settings.columns,function(){colCount++;});dfx.setHtml(this._loadingRow,'<td colspan="'+colCount+'"></td>');}
this.hideNoItemsMsg();tbody.appendChild(this._loadingRow);var params={rowsData:dfx.jsonEncode(rowsData),channel:dfx.jsonEncode(channel),settings:dfx.jsonEncode(this.settings)};var self=this;GUI.sendRequest('GUITable','generateRows',params,function(rowHTML){var tmp=document.createElement('div');dfx.setStyle(tmp,'display','none');document.body.appendChild(tmp);dfx.setHtml(tmp,rowHTML);dfx.remove(self._loadingRow);var currentRowCount=tbody.childNodes.length;var rows=[];while(tmp.firstChild){currentRowCount++;rows.push(tmp.firstChild);if((currentRowCount%2)===0){dfx.removeClass(tmp.firstChild,'rowOdd');dfx.addClass(tmp.firstChild,'rowEven');}else{dfx.removeClass(tmp.firstChild,'rowEven');dfx.addClass(tmp.firstChild,'rowOdd');}
tbody.appendChild(tmp.firstChild);}
dfx.remove(tmp);self._setModified.call(self,true);if(callback){callback.call(self,rows);}},'raw',function(exception){dfx.remove(self._loadingRow);});},generateBulkRows:function(params,callback,system,action)
{var channel=this.settings.rowGenerator;if(system&&action){channel={system:system,action:action};}
var tbody=dfx.getTag('tbody',this.elem)[0];if(!this._loadingRow){this._loadingRow=document.createElement('tr');dfx.addClass(this._loadingRow,'loadingRow');var colCount=0;dfx.foreach(this.settings.columns,function(){colCount++;});dfx.setHtml(this._loadingRow,'<td colspan="'+colCount+'"></td>');}
this.hideNoItemsMsg();tbody.appendChild(this._loadingRow);params.channel=channel;params.settings=this.settings;for(var i in params){params[i]=dfx.jsonEncode(params[i]);};var self=this;GUI.sendRequest('GUITable','generateBulkRows',params,function(rowHTML){var tmp=document.createElement('div');dfx.setStyle(tmp,'display','none');document.body.appendChild(tmp);dfx.setHtml(tmp,rowHTML);dfx.remove(self._loadingRow);var currentRowCount=tbody.childNodes.length;var rows=[];while(tmp.firstChild){currentRowCount++;rows.push(tmp.firstChild);if((currentRowCount%2)===0){dfx.removeClass(tmp.firstChild,'rowOdd');dfx.addClass(tmp.firstChild,'rowEven');}else{dfx.removeClass(tmp.firstChild,'rowEven');dfx.addClass(tmp.firstChild,'rowOdd');}
tbody.appendChild(tmp.firstChild);}
dfx.remove(tmp);self._setModified.call(self,true);if(callback){callback.call(self,rows);}},'raw');},toggleRow:function(rowElement)
{var deleteIcon=dfx.getClass('GUI-delete',rowElement)[0];if(!deleteIcon){return;}
dfx.toggleClass(rowElement,'deleted');var deleted=dfx.hasClass(rowElement,'deleted');this.fireRowToggledCallbacks(dfx.attr(rowElement,'rowid'),deleted,rowElement);this._setModified(true);},getValue:function()
{var elem=dfx.getId(this.id);if(!elem){return null;}
var tds=dfx.getTag('td',elem);var ln=tds.length;var value={};var removed={};for(var i=0;i<ln;i++){var td=tds[i];var colid=td.getAttribute('colid');if(!colid||colid.indexOf(this.id)===-1){continue;}
var rowid=td.parentNode.getAttribute('rowid');if(dfx.hasClass(td.parentNode,'deleted')===true){removed[rowid]=true;continue;}
var colIndex=colid.replace(this.id+'-'+rowid+'-','');var widgetValue=null;if(!value[rowid]){value[rowid]={}}
var colWidget=GUI.getWidget(colid);if(colWidget){widgetValue=colWidget.getValue();}
value[rowid][colIndex]=widgetValue;}
var retValue={items:value,removed:removed};return retValue;},saved:function()
{var tbody=dfx.getTag('tbody',this.elem)[0];var toRemove=[];for(var node=tbody.firstChild;node;node=node.nextSibling){if(dfx.hasClass(node,'deleted')===true){toRemove.push(node);}}
if(toRemove.length>0){dfx.remove(toRemove);}},removeWidget:function()
{this.processColumns(function(colid,colWidget,td){GUI.removeWidget(colWidget.id);});},processColumns:function(callback)
{var elem=dfx.getId(this.id);if(!elem){return null;}
var tds=dfx.getTag('td',elem);var ln=tds.length;var value={};for(var i=0;i<ln;i++){var td=tds[i];var colid=td.getAttribute('colid');if(!colid||colid.indexOf(this.id)===-1){continue;}
var colWidget=GUI.getWidget(colid);if(!colWidget){continue;}
callback.call(this,colid,colWidget,td);}},showNoItemsMsg:function()
{if(!this.settings.noItemsMsg){return;}
dfx.addClass(this.elem,'noItems');var noItemsid=this.id+'-noItemsMsg';var noItemsDiv=dfx.getId(noItemsid);if(!noItemsDiv){noItemsDiv=document.createElement('div');noItemsDiv.id=noItemsid;dfx.addClass(noItemsDiv,'GUIList-noItemsMsg');dfx.setHtml(noItemsDiv,this.settings.noItemsMsg);dfx.insertAfter(this.elem,noItemsDiv);}
dfx.addClass(noItemsDiv,'noItems');},hideNoItemsMsg:function()
{var noItemsDiv=dfx.getId(this.id+'-noItemsMsg');if(noItemsDiv){dfx.removeClass(noItemsDiv,'noItems');}
dfx.removeClass(this.elem,'noItems');},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}};function GUITextArea(id,settings)
{this.id=id;this.settings=settings;var widgetElement=dfx.getId(self.id);this.textArea=dfx.getClass('textarea',widgetElement)[0];this._editor=null;this._isInitVal=false;GUI.addWidgetEvent(this,'keyPress');GUI.addWidgetEvent(this,'keyUp');GUI.addWidgetEvent(this,'focus');GUI.addWidgetEvent(this,'changed');this.init();}
GUITextArea.prototype={init:function()
{if(this.settings.syntaxHighlight){this.syntaxHighlight();}else{var self=this;var widgetElement=dfx.getId(self.id);var textArea=dfx.getClass('textarea',widgetElement)[0];dfx.addEvent(textArea,'blur',function(){if(self.useDefaultValue()!==true){self.useHint();}
dfx.removeClass(textArea,'selected');});dfx.addEvent(textArea,'focus',function(){self.removeHint();dfx.addClass(textArea,'selected');self.fireFocusCallbacks();});var value=textArea.value;dfx.addEvent(textArea,'keypress',function(e){if(value!==this.value){value=this.value;self._setModified(true);}
self.fireKeyPressCallbacks(value,e);});dfx.addEvent(textArea,'keyup',function(e){if(value!==this.value){value=this.value;self._setModified(true);}
self.fireKeyUpCallbacks(value,e);});}},getValue:function()
{if(this._editor!==null){return this._editor.getSession().getValue();}
var widgetElement=dfx.getId(this.id);var textArea=dfx.getClass('textarea',widgetElement)[0];if(!textArea){return'';}
var value=textArea.value;if(this.settings.hintAsDefault!==true){if(value===this.settings.hint&&dfx.hasClass(textArea,'usingHint')===true){value='';}}
return value;},setValue:function(value,isInitialValue)
{this._isInitVal=isInitialValue;if(this._editor!==null){this._editor.getSession().setValue(value);}else if(this.settings.syntaxHighlight){var tmp=document.createElement('textarea');dfx.setHtml(tmp,value);dfx.setHtml(dfx.getId(this.id),dfx.getHtml(tmp));}else{var widgetElement=dfx.getId(this.id);var textArea=dfx.getClass('textarea',widgetElement)[0];if(value!==textArea.value){textArea.value=value;}}
if(isInitialValue!==true){this._setModified(true);}
this._isInitVal=false;},focus:function()
{this.textArea.focus();},select:function()
{this.textArea.select();},removeHint:function()
{if(dfx.hasClass(this.textArea,'usingHint')===true&&this.textArea.value===this.settings.hint){this.textArea.value='';dfx.removeClass(this.textArea,'usingHint');}},useHint:function()
{if(this.textArea.value.length===0&&!this.settings.defaultValue&&this.settings.hint){dfx.addClass(this.textArea,'usingHint');this.textArea.value=this.settings.hint;}},useDefaultValue:function()
{if(this.textArea.value.length===0&&this.settings.defaultValue){this.textArea.value=this.settings.defaultValue;return true;}
return false;},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}},syntaxHighlight:function(type)
{var editor=ace.edit(this.id);this._editor=editor;editor.setTheme("ace/theme/eclipse");editor.getSession().setUseSoftTabs(true);editor.getSession().setUseWrapMode(true);var htmlMode=require("ace/mode/html").Mode;editor.getSession().setMode(new htmlMode());var self=this;editor.getSession().addEventListener('change',function(){if(self._isInitVal!==true){self._setModified(true);}
self.fireChangedCallbacks();});return editor;},resize:function()
{if(this._editor){this._editor.resize();}}};(function(){var _define=function(module,payload){if(typeof module!=='string'){if(_define.original)
_define.original.apply(window,arguments);else{console.error('dropping module because define wasn\'t a string.');console.trace();}
return;}
if(!define.modules)
define.modules={};define.modules[module]=payload;};if(window.define)
_define.original=window.define;window.define=_define;var _require=function(module,callback){if(Object.prototype.toString.call(module)==="[object Array]"){var params=[];for(var i=0,l=module.length;i<l;++i){var dep=lookup(module[i]);if(!dep&&_require.original)
return _require.original.apply(window,arguments);params.push(dep);};if(callback){callback.apply(null,params);}}
if(typeof module==='string'){var payload=lookup(module);if(!payload&&_require.original)
return _require.original.apply(window,arguments);if(callback){callback();}
return payload;};}
if(window.require)
_require.original=window.require;window.require=_require;require.packaged=true;var lookup=function(moduleName){var module=define.modules[moduleName];if(module==null){console.error('Missing module: '+moduleName);return null;}
if(typeof module==='function'){var exports={};module(require,exports,{id:moduleName,uri:''});define.modules[moduleName]=exports;return exports;}
return module;};})();define('pilot/fixoldbrowsers',function(require,exports,module){if(!Function.prototype.bind){Function.prototype.bind=function(obj){var slice=[].slice;var args=slice.call(arguments,1);var self=this;var nop=function(){};if(arguments.length==1){var bound=function(){return self.apply(this instanceof nop?this:obj,arguments);};}
else{var bound=function(){return self.apply(this instanceof nop?this:(obj||{}),args.concat(slice.call(arguments)));};}
nop.prototype=self.prototype;bound.prototype=new nop();bound.name=this.name;bound.displayName=this.displayName;bound.length=this.length;bound.unbound=self;return bound;};}
var F=function(){}
var call=Function.prototype.call;var owns=call.bind(Object.prototype.hasOwnProperty);var getGetter,getSetter,setGetter,setSetter
getGetter=getSetter=setGetter=setSetter=F;if(Object.prototype.__lookupGetter__)
getGetter=call.bind(Object.prototype.__lookupGetter__);if(Object.prototype.__lookupSetter__)
getSetter=call.bind(Object.prototype.__lookupSetter__);if(Object.prototype.__defineGetter__)
setGetter=call.bind(Object.prototype.__defineGetter__);if(Object.prototype.__defineSetter__)
setSetter=call.bind(Object.prototype.__defineSetter__);if(!Array.isArray){Array.isArray=function(data){return data&&Object.prototype.toString.call(data)==="[object Array]";};}
if(!Array.prototype.indexOf)
{Array.prototype.indexOf=function(searchElement)
{if(this===void 0||this===null)
throw new TypeError();var t=Object(this);var len=t.length>>>0;if(len===0)
return-1;var n=0,zero=n;if(arguments.length>0){n=Number(arguments[1]);if(n!==n)
n=0;else if(n!==0&&n!==(1/zero)&&n!==-(1/zero))
n=(n>0||-1)*Math.floor(Math.abs(n));}
if(n>=len)
return-1;var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k<len;k++){if(k in t&&t[k]===searchElement)
return k;}
return-1;};}
if(!Array.prototype.lastIndexOf)
{Array.prototype.lastIndexOf=function(searchElement)
{"use strict";if(this===void 0||this===null)
throw new TypeError();var t=Object(this);var len=t.length>>>0;if(len===0)
return-1;var n=len,zero=false|0;if(arguments.length>0)
{n=Number(arguments[1]);if(n!==n)
n=0;else if(n!==0&&n!==(1/zero)&&n!==-(1/zero))
n=(n>0||-1)*Math.floor(Math.abs(n));}
var k=n>=0?Math.min(n,len-1):len-Math.abs(n);while(k>=0)
{if(k in t&&t[k]===searchElement)
return k;}
return-1;};}
if(!Array.prototype.map){Array.prototype.map=function(fun){if(this===void 0||this===null)
throw new TypeError();var t=Object(this);var len=t.length>>>0;if(typeof fun!=="function")
throw new TypeError();res=new Array(len);var thisp=arguments[1];for(var i=0;i<len;i++){if(i in t)
res[i]=fun.call(thisp,t[i],i,t);}
return res;};}
if(!Array.prototype.forEach){Array.prototype.forEach=function(fun){if(this===void 0||this===null)
throw new TypeError();var t=Object(this);var len=t.length>>>0;if(typeof fun!=="function")
throw new TypeError();var thisp=arguments[1];for(var i=0;i<len;i++){if(i in t)
fun.call(thisp,t[i],i,t);}};}
if(!Array.prototype.filter){Array.prototype.filter=function filter(callback,scope){var values=[],i,ii;for(i=0,ii=this.length;i<ii;i++){if(callback.call(scope,this[i]))values.push(this[i]);}
return values;};}
if(!Array.prototype.every){Array.prototype.every=function every(callback,scope){var i,ii;for(i=0,ii=this.length;i<ii;i++){if(!callback.call(scope,this[i]))return false;}
return true;};}
if(!Array.prototype.some){Array.prototype.some=function(callback,scope){var i,ii;for(i=0,ii=this.length;i<ii;i++){if(callback.call(scope,this[i]))return true;}
return false;};}
if(!Array.prototype.reduce){Array.prototype.reduce=function(fun){var len=this.length>>>0;if(typeof fun!="function")
throw new TypeError();if(len==0&&arguments.length==1)
throw new TypeError();var i=0;if(arguments.length>=2){var rv=arguments[1];}else{do{if(i in this){rv=this[i++];break;}
if(++i>=len)
throw new TypeError();}while(true);}
for(;i<len;i++){if(i in this)
rv=fun.call(null,rv,this[i],i,this);}
return rv;};}
if(!Array.prototype.reduceRight){Array.prototype.reduceRight=function(fun){var len=this.length>>>0;if(typeof fun!="function")
throw new TypeError();if(len==0&&arguments.length==1)
throw new TypeError();var i=len-1;if(arguments.length>=2){var rv=arguments[1];}else{do{if(i in this){rv=this[i--];break;}
if(--i<0)
throw new TypeError();}while(true);}
for(;i>=0;i--){if(i in this)
rv=fun.call(null,rv,this[i],i,this);}
return rv;};}
if(!Object.keys){Object.keys=function keys(object){var name,names=[];for(name in object)
if(owns(object,name))names.push(name);return names;};}
if(!Object.getOwnPropertyNames){Object.getOwnPropertyNames=Object.keys;}
var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object"
if(!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function getOwnPropertyDescriptor(object,name){var descriptor,getter,setter;if(typeof object!=="object"&&typeof object!=="function"||object===null)throw new TypeError(ERR_NON_OBJECT);if(owns(object,name)){descriptor={configurable:true,enumerable:true};getter=descriptor.get=getGetter(object,name);setter=descriptor.set=getSetter(object,name);if(!getter&&!setter){descriptor.writeable=true;descriptor.value=object[name]}}
return descriptor}}
if(!Object.getPrototypeOf){Object.getPrototypeOf=function getPrototypeOf(object){return object.__proto__||object.constructor.prototype;}}
if(!Object.create){Object.create=function create(prototype,properties){var object;if(prototype===null){object={__proto__:null};}else if(typeof prototype!=="object"){throw new TypeError(prototype+" is not an object or null");}else{F.prototype=prototype;object=new F();}
if(typeof properties!=="undefined")
Object.defineProperties(object,properties);return object;};}
if(!Object.defineProperty){Object.defineProperty=function defineProperty(object,name,descriptor){var proto,setter,getter;if("object"!==typeof object&&"function"!==typeof object)
throw new TypeError(object+"is not an object");if(descriptor&&'object'!==typeof descriptor)
throw new TypeError('Property descriptor map must be an object');if('value'in descriptor){if('get'in descriptor||'set'in descriptor){throw new TypeError('Invalid property. "value" present on '
+'property with getter or setter.');}
if(proto=object.__proto__)object.__proto__=Object.prototype;delete object[name];object[name]=descriptor.value;if(proto)object.__proto__=proto;}else{if(getter=descriptor.get)setGetter(object,getter);if(setter=descriptor.set)setSetter(object,setter);}
return object;};}
if(!Object.defineProperties){Object.defineProperties=function defineProperties(object,properties){Object.getOwnPropertyNames(properties).forEach(function(name){Object.defineProperty(object,name,properties[name]);});return object;};}
var passThrough=function(object){return object};if(!Object.seal)Object.seal=passThrough;if(!Object.freeze)Object.freeze=passThrough;if(!Object.preventExtensions)Object.preventExtension=passThrough;var no=function(){return false};var yes=function(){return true};if(!Object.isSealed)Object.isSealed=no;if(!Object.isFrozen)Object.isFrozen=no;if(!Object.isExtensible)Object.isExtensible=yes;if(!String.prototype.trim){String.prototype.trim=function(){return this.trimLeft().trimRight();}}
if(!String.prototype.trimRight){String.prototype.trimRight=function(){return this.replace(/[\t\v\f\s\u00a0\ufeff]+$/,"");}}
if(!String.prototype.trimLeft){String.prototype.trimLeft=function(){return this.replace(/^[\t\v\f\s\u00a0\ufeff]+/,"");}}
exports.globalsLoaded=true;});define('pilot/index',function(require,exports,module){exports.startup=function(data,reason){require('pilot/fixoldbrowsers');require('pilot/types/basic').startup(data,reason);require('pilot/types/command').startup(data,reason);require('pilot/types/settings').startup(data,reason);require('pilot/commands/settings').startup(data,reason);require('pilot/commands/basic').startup(data,reason);require('pilot/settings/canon').startup(data,reason);require('pilot/canon').startup(data,reason);};exports.shutdown=function(data,reason){require('pilot/types/basic').shutdown(data,reason);require('pilot/types/command').shutdown(data,reason);require('pilot/types/settings').shutdown(data,reason);require('pilot/commands/settings').shutdown(data,reason);require('pilot/commands/basic').shutdown(data,reason);require('pilot/settings/canon').shutdown(data,reason);require('pilot/canon').shutdown(data,reason);};});define('pilot/types/basic',function(require,exports,module){var types=require("pilot/types");var Type=types.Type;var Conversion=types.Conversion;var Status=types.Status;var text=new Type();text.stringify=function(value){return value;};text.parse=function(value){if(typeof value!='string'){throw new Error('non-string passed to text.parse()');}
return new Conversion(value);};text.name='text';var number=new Type();number.stringify=function(value){if(!value){return null;}
return''+value;};number.parse=function(value){if(typeof value!='string'){throw new Error('non-string passed to number.parse()');}
if(value.replace(/\s/g,'').length===0){return new Conversion(null,Status.INCOMPLETE,'');}
var reply=new Conversion(parseInt(value,10));if(isNaN(reply.value)){reply.status=Status.INVALID;reply.message='Can\'t convert "'+value+'" to a number.';}
return reply;};number.decrement=function(value){return value-1;};number.increment=function(value){return value+1;};number.name='number';function SelectionType(typeSpec){if(!Array.isArray(typeSpec.data)&&typeof typeSpec.data!=='function'){throw new Error('instances of SelectionType need typeSpec.data to be an array or function that returns an array:'+JSON.stringify(typeSpec));}
Object.keys(typeSpec).forEach(function(key){this[key]=typeSpec[key];},this);};SelectionType.prototype=new Type();SelectionType.prototype.stringify=function(value){return value;};SelectionType.prototype.parse=function(str){if(typeof str!='string'){throw new Error('non-string passed to parse()');}
if(!this.data){throw new Error('Missing data on selection type extension.');}
var data=(typeof(this.data)==='function')?this.data():this.data;var hasMatched=false;var matchedValue;var completions=[];data.forEach(function(option){if(str==option){matchedValue=this.fromString(option);hasMatched=true;}
else if(option.indexOf(str)===0){completions.push(this.fromString(option));}},this);if(hasMatched){return new Conversion(matchedValue);}
else{if(this.noMatch){this.noMatch();}
if(completions.length>0){var msg='Possibilities'+
(str.length===0?'':' for \''+str+'\'');return new Conversion(null,Status.INCOMPLETE,msg,completions);}
else{var msg='Can\'t use \''+str+'\'.';return new Conversion(null,Status.INVALID,msg,completions);}}};SelectionType.prototype.fromString=function(str){return str;};SelectionType.prototype.decrement=function(value){var data=(typeof this.data==='function')?this.data():this.data;var index;if(value==null){index=data.length-1;}
else{var name=this.stringify(value);var index=data.indexOf(name);index=(index===0?data.length-1:index-1);}
return this.fromString(data[index]);};SelectionType.prototype.increment=function(value){var data=(typeof this.data==='function')?this.data():this.data;var index;if(value==null){index=0;}
else{var name=this.stringify(value);var index=data.indexOf(name);index=(index===data.length-1?0:index+1);}
return this.fromString(data[index]);};SelectionType.prototype.name='selection';exports.SelectionType=SelectionType;var bool=new SelectionType({name:'bool',data:['true','false'],stringify:function(value){return''+value;},fromString:function(str){return str==='true'?true:false;}});function DeferredType(typeSpec){if(typeof typeSpec.defer!=='function'){throw new Error('Instances of DeferredType need typeSpec.defer to be a function that returns a type');}
Object.keys(typeSpec).forEach(function(key){this[key]=typeSpec[key];},this);};DeferredType.prototype=new Type();DeferredType.prototype.stringify=function(value){return this.defer().stringify(value);};DeferredType.prototype.parse=function(value){return this.defer().parse(value);};DeferredType.prototype.decrement=function(value){var deferred=this.defer();return(deferred.decrement?deferred.decrement(value):undefined);};DeferredType.prototype.increment=function(value){var deferred=this.defer();return(deferred.increment?deferred.increment(value):undefined);};DeferredType.prototype.name='deferred';exports.DeferredType=DeferredType;function ArrayType(typeSpec){if(typeSpec instanceof Type){this.subtype=typeSpec;}
else if(typeof typeSpec==='string'){this.subtype=types.getType(typeSpec);if(this.subtype==null){throw new Error('Unknown array subtype: '+typeSpec);}}
else{throw new Error('Can\' handle array subtype');}};ArrayType.prototype=new Type();ArrayType.prototype.stringify=function(values){return values.join(' ');};ArrayType.prototype.parse=function(value){return this.defer().parse(value);};ArrayType.prototype.name='array';exports.startup=function(){types.registerType(text);types.registerType(number);types.registerType(bool);types.registerType(SelectionType);types.registerType(DeferredType);types.registerType(ArrayType);};exports.shutdown=function(){types.unregisterType(text);types.unregisterType(number);types.unregisterType(bool);types.unregisterType(SelectionType);types.unregisterType(DeferredType);types.unregisterType(ArrayType);};});define('pilot/types',function(require,exports,module){var Status={VALID:{toString:function(){return'VALID';},valueOf:function(){return 0;}},INCOMPLETE:{toString:function(){return'INCOMPLETE';},valueOf:function(){return 1;}},INVALID:{toString:function(){return'INVALID';},valueOf:function(){return 2;}},combine:function(statuses){var combined=Status.VALID;for(var i=0;i<arguments;i++){if(arguments[i]>combined){combined=arguments[i];}}
return combined;}};exports.Status=Status;function Conversion(value,status,message,predictions){this.value=value;this.status=status||Status.VALID;this.message=message;this.predictions=predictions||[];}
exports.Conversion=Conversion;function Type(){};Type.prototype={stringify:function(value){throw new Error("not implemented");},parse:function(str){throw new Error("not implemented");},name:undefined,increment:function(value){return undefined;},decrement:function(value){return undefined;},getDefault:function(){return this.parse('');}};exports.Type=Type;var types={};exports.registerType=function(type){if(typeof type==='object'){if(type instanceof Type){if(!type.name){throw new Error('All registered types must have a name');}
types[type.name]=type;}
else{throw new Error('Can\'t registerType using: '+type);}}
else if(typeof type==='function'){if(!type.prototype.name){throw new Error('All registered types must have a name');}
types[type.prototype.name]=type;}
else{throw new Error('Unknown type: '+type);}};exports.registerTypes=function registerTypes(types){Object.keys(types).forEach(function(name){var type=types[name];type.name=name;exports.registerType(type);});};exports.deregisterType=function(type){delete types[type.name];};function reconstituteType(name,typeSpec){if(name.substr(-2)==='[]'){var subtypeName=name.slice(0,-2);return new types['array'](subtypeName);}
var type=types[name];if(typeof type==='function'){type=new type(typeSpec);}
return type;}
exports.getType=function(typeSpec){if(typeof typeSpec==='string'){return reconstituteType(typeSpec);}
if(typeof typeSpec==='object'){if(!typeSpec.name){throw new Error('Missing \'name\' member to typeSpec');}
return reconstituteType(typeSpec.name,typeSpec);}
throw new Error('Can\'t extract type from '+typeSpec);};});define('pilot/types/command',function(require,exports,module){var canon=require("pilot/canon");var SelectionType=require("pilot/types/basic").SelectionType;var types=require("pilot/types");var command=new SelectionType({name:'command',data:function(){return canon.getCommandNames();},stringify:function(command){return command.name;},fromString:function(str){return canon.getCommand(str);}});exports.startup=function(){types.registerType(command);};exports.shutdown=function(){types.unregisterType(command);};});define('pilot/canon',function(require,exports,module){var console=require('pilot/console');var Trace=require('pilot/stacktrace').Trace;var oop=require('pilot/oop');var EventEmitter=require('pilot/event_emitter').EventEmitter;var catalog=require('pilot/catalog');var Status=require('pilot/types').Status;var types=require('pilot/types');var lang=require('pilot/lang');var commandExtensionSpec={name:'command',description:'A command is a bit of functionality with optional '+'typed arguments which can do something small like moving '+'the cursor around the screen, or large like cloning a '+'project from VCS.',indexOn:'name'};exports.startup=function(data,reason){catalog.addExtensionSpec(commandExtensionSpec);};exports.shutdown=function(data,reason){catalog.removeExtensionSpec(commandExtensionSpec);};var thingCommand={name:'thing',description:'thing is an example command',params:[{name:'param1',description:'an example parameter',type:'text',defaultValue:null}],exec:function(env,args,request){thing();}};var commands={};var commandNames=[];function addCommand(command){if(!command.name){throw new Error('All registered commands must have a name');}
if(command.params==null){command.params=[];}
if(!Array.isArray(command.params)){throw new Error('command.params must be an array in '+command.name);}
command.params.forEach(function(param){if(!param.name){throw new Error('In '+command.name+': all params must have a name');}
upgradeType(command.name,param);},this);commands[command.name]=command;commandNames.push(command.name);commandNames.sort();};function upgradeType(name,param){var lookup=param.type;param.type=types.getType(lookup);if(param.type==null){throw new Error('In '+name+'/'+param.name+': can\'t find type for: '+JSON.stringify(lookup));}}
function removeCommand(command){var name=(typeof command==='string'?command:command.name);delete commands[name];lang.arrayRemove(commandNames,name);};function getCommand(name){return commands[name];};function getCommandNames(){return commandNames;};function exec(command,env,args,typed){if(typeof command==='string'){command=commands[command];}
if(!command){return false;}
var request=new Request({command:command,args:args,typed:typed});command.exec(env,args||{},request);return true;};exports.removeCommand=removeCommand;exports.addCommand=addCommand;exports.getCommand=getCommand;exports.getCommandNames=getCommandNames;exports.exec=exec;exports.upgradeType=upgradeType;oop.implement(exports,EventEmitter);var requests=[];var maxRequestLength=100;function Request(options){options=options||{};this.command=options.command;this.args=options.args;this.typed=options.typed;this._begunOutput=false;this.start=new Date();this.end=null;this.completed=false;this.error=false;};oop.implement(Request.prototype,EventEmitter);Request.prototype._beginOutput=function(){this._begunOutput=true;this.outputs=[];requests.push(this);while(requests.length>maxRequestLength){requests.shiftObject();}
exports._dispatchEvent('output',{requests:requests,request:this});};Request.prototype.doneWithError=function(content){this.error=true;this.done(content);};Request.prototype.async=function(){if(!this._begunOutput){this._beginOutput();}};Request.prototype.output=function(content){if(!this._begunOutput){this._beginOutput();}
if(typeof content!=='string'&&!(content instanceof Node)){content=content.toString();}
this.outputs.push(content);this._dispatchEvent('output',{});return this;};Request.prototype.done=function(content){this.completed=true;this.end=new Date();this.duration=this.end.getTime()-this.start.getTime();if(content){this.output(content);}
this._dispatchEvent('output',{});};exports.Request=Request;});define('pilot/console',function(require,exports,module){var noop=function(){};var NAMES=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","log","profile","profileEnd","time","timeEnd","trace","warn"];if(typeof(window)==='undefined'){NAMES.forEach(function(name){exports[name]=function(){var args=Array.prototype.slice.call(arguments);var msg={op:'log',method:name,args:args};postMessage(JSON.stringify(msg));};});}else{NAMES.forEach(function(name){if(window.console&&window.console[name]){exports[name]=Function.prototype.bind.call(window.console[name],window.console);}else{exports[name]=noop;}});}});define('pilot/stacktrace',function(require,exports,module){var ua=require("pilot/useragent");var console=require('pilot/console');var mode=(function(){if(ua.isGecko){return'firefox';}else if(ua.isOpera){return'opera';}else{return'other';}
try{(0)();}catch(e){if(e.arguments){return'chrome';}
if(e.stack){return'firefox';}
if(window.opera&&!('stacktrace'in e)){return'opera';}}
return'other';})();function stringifyArguments(args){for(var i=0;i<args.length;++i){var argument=args[i];if(typeof argument=='object'){args[i]='#object';}else if(typeof argument=='function'){args[i]='#function';}else if(typeof argument=='string'){args[i]='"'+argument+'"';}}
return args.join(',');}
var decoders={chrome:function(e){var stack=e.stack;if(!stack){console.log(e);return[];}
return stack.replace(/^.*?\n/,'').replace(/^.*?\n/,'').replace(/^.*?\n/,'').replace(/^[^\(]+?[\n$]/gm,'').replace(/^\s+at\s+/gm,'').replace(/^Object.<anonymous>\s*\(/gm,'{anonymous}()@').split('\n');},firefox:function(e){var stack=e.stack;if(!stack){console.log(e);return[];}
stack=stack.replace(/(?:\n@:0)?\s+$/m,'');stack=stack.replace(/^\(/gm,'{anonymous}(');return stack.split('\n');},opera:function(e){var lines=e.message.split('\n'),ANON='{anonymous}',lineRE=/Line\s+(\d+).*?script\s+(http\S+)(?:.*?in\s+function\s+(\S+))?/i,i,j,len;for(i=4,j=0,len=lines.length;i<len;i+=2){if(lineRE.test(lines[i])){lines[j++]=(RegExp.$3?RegExp.$3+'()@'+RegExp.$2+RegExp.$1:ANON+'()@'+RegExp.$2+':'+RegExp.$1)+' -- '+
lines[i+1].replace(/^\s+/,'');}}
lines.splice(j,lines.length-j);return lines;},other:function(curr){var ANON='{anonymous}',fnRE=/function\s*([\w\-$]+)?\s*\(/i,stack=[],j=0,fn,args;var maxStackSize=10;while(curr&&stack.length<maxStackSize){fn=fnRE.test(curr.toString())?RegExp.$1||ANON:ANON;args=Array.prototype.slice.call(curr['arguments']);stack[j++]=fn+'('+stringifyArguments(args)+')';if(curr===curr.caller&&window.opera){break;}
curr=curr.caller;}
return stack;}};function NameGuesser(){}
NameGuesser.prototype={sourceCache:{},ajax:function(url){var req=this.createXMLHTTPObject();if(!req){return;}
req.open('GET',url,false);req.setRequestHeader('User-Agent','XMLHTTP/1.0');req.send('');return req.responseText;},createXMLHTTPObject:function(){var xmlhttp,XMLHttpFactories=[function(){return new XMLHttpRequest();},function(){return new ActiveXObject('Msxml2.XMLHTTP');},function(){return new ActiveXObject('Msxml3.XMLHTTP');},function(){return new ActiveXObject('Microsoft.XMLHTTP');}];for(var i=0;i<XMLHttpFactories.length;i++){try{xmlhttp=XMLHttpFactories[i]();this.createXMLHTTPObject=XMLHttpFactories[i];return xmlhttp;}catch(e){}}},getSource:function(url){if(!(url in this.sourceCache)){this.sourceCache[url]=this.ajax(url).split('\n');}
return this.sourceCache[url];},guessFunctions:function(stack){for(var i=0;i<stack.length;++i){var reStack=/{anonymous}\(.*\)@(\w+:\/\/([-\w\.]+)+(:\d+)?[^:]+):(\d+):?(\d+)?/;var frame=stack[i],m=reStack.exec(frame);if(m){var file=m[1],lineno=m[4];if(file&&lineno){var functionName=this.guessFunctionName(file,lineno);stack[i]=frame.replace('{anonymous}',functionName);}}}
return stack;},guessFunctionName:function(url,lineNo){try{return this.guessFunctionNameFromLines(lineNo,this.getSource(url));}catch(e){return'getSource failed with url: '+url+', exception: '+e.toString();}},guessFunctionNameFromLines:function(lineNo,source){var reFunctionArgNames=/function ([^(]*)\(([^)]*)\)/;var reGuessFunction=/['"]?([0-9A-Za-z_]+)['"]?\s*[:=]\s*(function|eval|new Function)/;var line='',maxLines=10;for(var i=0;i<maxLines;++i){line=source[lineNo-i]+line;if(line!==undefined){var m=reGuessFunction.exec(line);if(m){return m[1];}
else{m=reFunctionArgNames.exec(line);}
if(m&&m[1]){return m[1];}}}
return'(?)';}};var guesser=new NameGuesser();var frameIgnorePatterns=[/http:\/\/localhost:4020\/sproutcore.js:/];exports.ignoreFramesMatching=function(regex){frameIgnorePatterns.push(regex);};exports.Trace=function Trace(ex,guess){this._ex=ex;this._stack=decoders[mode](ex);if(guess){this._stack=guesser.guessFunctions(this._stack);}};exports.Trace.prototype.log=function(lines){if(lines<=0){lines=999999999;}
var printed=0;for(var i=0;i<this._stack.length&&printed<lines;i++){var frame=this._stack[i];var display=true;frameIgnorePatterns.forEach(function(regex){if(regex.test(frame)){display=false;}});if(display){console.debug(frame);printed++;}}};});define('pilot/useragent',function(require,exports,module){var os=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase();var ua=navigator.userAgent;var av=navigator.appVersion;exports.isWin=(os=="win");exports.isMac=(os=="mac");exports.isLinux=(os=="linux");exports.isIE=!+"\v1";exports.isGecko=exports.isMozilla=window.controllers&&window.navigator.product==="Gecko";exports.isOldGecko=exports.isGecko&&/rv\:1/.test(navigator.userAgent);exports.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]";exports.isWebKit=parseFloat(ua.split("WebKit/")[1])||undefined;exports.isAIR=ua.indexOf("AdobeAIR")>=0;exports.isIPad=ua.indexOf("iPad")>=0;exports.OS={LINUX:'LINUX',MAC:'MAC',WINDOWS:'WINDOWS'};exports.getOS=function(){if(exports.isMac){return exports.OS['MAC'];}else if(exports.isLinux){return exports.OS['LINUX'];}else{return exports.OS['WINDOWS'];}};});define('pilot/oop',function(require,exports,module){exports.inherits=(function(){var tempCtor=function(){};return function(ctor,superCtor){tempCtor.prototype=superCtor.prototype;ctor.super_=superCtor.prototype;ctor.prototype=new tempCtor();ctor.prototype.constructor=ctor;}}());exports.mixin=function(obj,mixin){for(var key in mixin){obj[key]=mixin[key];}};exports.implement=function(proto,mixin){exports.mixin(proto,mixin);};});define('pilot/event_emitter',function(require,exports,module){var EventEmitter={};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(!listeners||!listeners.length)return;var e=e||{};e.type=eventName;for(var i=0;i<listeners.length;i++){listeners[i](e);}};EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(!listeners){var listeners=this._eventRegistry[eventName]=[];}
if(listeners.indexOf(callback)==-1){listeners.push(callback);}};EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(!listeners){return;}
var index=listeners.indexOf(callback);if(index!==-1){listeners.splice(index,1);}};EventEmitter.removeAllListeners=function(eventName){if(this._eventRegistry)this._eventRegistry[eventName]=[];}
exports.EventEmitter=EventEmitter;});define('pilot/catalog',function(require,exports,module){var extensionSpecs={};exports.addExtensionSpec=function(extensionSpec){extensionSpecs[extensionSpec.name]=extensionSpec;};exports.removeExtensionSpec=function(extensionSpec){if(typeof extensionSpec==="string"){delete extensionSpecs[extensionSpec];}
else{delete extensionSpecs[extensionSpec.name];}};exports.getExtensionSpec=function(name){return extensionSpecs[name];};exports.getExtensionSpecs=function(){return Object.keys(extensionSpecs);};});define('pilot/lang',function(require,exports,module){exports.stringReverse=function(string){return string.split("").reverse().join("");};exports.stringRepeat=function(string,count){return new Array(count+1).join(string);};exports.copyObject=function(obj){var copy={};for(var key in obj){copy[key]=obj[key];}
return copy;};exports.arrayToMap=function(arr){var map={};for(var i=0;i<arr.length;i++){map[arr[i]]=1;}
return map;};exports.arrayRemove=function(array,value){for(var i=0;i<=array.length;i++){if(value===array[i]){array.splice(i,1);}}};exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\]\/\\])/g,'\\$1');};exports.deferredCall=function(fcn){var timer=null;var callback=function(){timer=null;fcn();};return{schedule:function(timeout){if(!timer){timer=setTimeout(callback,timeout||0);}
return this;},call:function(){this.cancel();fcn();return this;},cancel:function(){clearTimeout(timer);timer=null;return this;}};};});define('pilot/types/settings',function(require,exports,module){var SelectionType=require('pilot/types/basic').SelectionType;var DeferredType=require('pilot/types/basic').DeferredType;var types=require('pilot/types');var settings=require('pilot/settings').settings;var lastSetting;var setting=new SelectionType({name:'setting',data:function(){return env.settings.getSettingNames();},stringify:function(setting){lastSetting=setting;return setting.name;},fromString:function(str){lastSetting=settings.getSetting(str);return lastSetting;},noMatch:function(){lastSetting=null;}});var settingValue=new DeferredType({name:'settingValue',defer:function(){if(lastSetting){return lastSetting.type;}
else{return types.getType('text');}},getDefault:function(){var conversion=this.parse('');if(lastSetting){var current=lastSetting.get();if(conversion.predictions.length===0){conversion.predictions.push(current);}
else{var removed=false;while(true){var index=conversion.predictions.indexOf(current);if(index===-1){break;}
conversion.predictions.splice(index,1);removed=true;}
if(removed){conversion.predictions.push(current);}}}
return conversion;}});var env;exports.startup=function(data,reason){env=data.env;types.registerType(setting);types.registerType(settingValue);};exports.shutdown=function(data,reason){types.unregisterType(setting);types.unregisterType(settingValue);};});define('pilot/settings',function(require,exports,module){var console=require('pilot/console');var oop=require('pilot/oop');var types=require('pilot/types');var EventEmitter=require('pilot/event_emitter').EventEmitter;var catalog=require('pilot/catalog');var settingExtensionSpec={name:'setting',description:'A setting is something that the application offers as a '+'way to customize how it works',register:'env.settings.addSetting',indexOn:'name'};exports.startup=function(data,reason){catalog.addExtensionSpec(settingExtensionSpec);};exports.shutdown=function(data,reason){catalog.removeExtensionSpec(settingExtensionSpec);};function Setting(settingSpec,settings){this._settings=settings;Object.keys(settingSpec).forEach(function(key){this[key]=settingSpec[key];},this);this.type=types.getType(this.type);if(this.type==null){throw new Error('In '+this.name+': can\'t find type for: '+JSON.stringify(settingSpec.type));}
if(!this.name){throw new Error('Setting.name == undefined. Ignoring.',this);}
if(!this.defaultValue===undefined){throw new Error('Setting.defaultValue == undefined',this);}
if(this.onChange){this.on('change',this.onChange.bind(this))}
this.set(this.defaultValue);}
Setting.prototype={get:function(){return this.value;},set:function(value){if(this.value===value){return;}
this.value=value;if(this._settings.persister){this._settings.persister.persistValue(this._settings,this.name,value);}
this._dispatchEvent('change',{setting:this,value:value});},resetValue:function(){this.set(this.defaultValue);}};oop.implement(Setting.prototype,EventEmitter);function Settings(persister){this._deactivated={};this._settings={};this._settingNames=[];if(persister){this.setPersister(persister);}};Settings.prototype={addSetting:function(settingSpec){var setting=new Setting(settingSpec,this);this._settings[setting.name]=setting;this._settingNames.push(setting.name);this._settingNames.sort();},addSettings:function addSettings(settings){Object.keys(settings).forEach(function(name){var setting=settings[name];if(!('name'in setting))setting.name=name;this.addSetting(setting);},this);},removeSetting:function(setting){var name=(typeof setting==='string'?setting:setting.name);setting=this._settings[name];delete this._settings[name];util.arrayRemove(this._settingNames,name);settings.removeAllListeners('change');},removeSettings:function removeSettings(settings){Object.keys(settings).forEach(function(name){var setting=settings[name];if(!('name'in setting))setting.name=name;this.removeSettings(setting);},this);},getSettingNames:function(){return this._settingNames;},getSetting:function(name){return this._settings[name];},setPersister:function(persister){this._persister=persister;if(persister){persister.loadInitialValues(this);}},resetAll:function(){this.getSettingNames().forEach(function(key){this.resetValue(key);},this);},_list:function(){var reply=[];this.getSettingNames().forEach(function(setting){reply.push({'key':setting,'value':this.getSetting(setting).get()});},this);return reply;},_loadDefaultValues:function(){this._loadFromObject(this._getDefaultValues());},_loadFromObject:function(data){for(var key in data){if(data.hasOwnProperty(key)){var setting=this._settings[key];if(setting){var value=setting.type.parse(data[key]);this.set(key,value);}else{this.set(key,data[key]);}}}},_saveToObject:function(){return this.getSettingNames().map(function(key){return this._settings[key].type.stringify(this.get(key));}.bind(this));},_getDefaultValues:function(){return this.getSettingNames().map(function(key){return this._settings[key].spec.defaultValue;}.bind(this));}};exports.settings=new Settings();function CookiePersister(){};CookiePersister.prototype={loadInitialValues:function(settings){settings._loadDefaultValues();var data=cookie.get('settings');settings._loadFromObject(JSON.parse(data));},persistValue:function(settings,key,value){try{var stringData=JSON.stringify(settings._saveToObject());cookie.set('settings',stringData);}catch(ex){console.error('Unable to JSONify the settings! '+ex);return;}}};exports.CookiePersister=CookiePersister;});define('pilot/commands/settings',function(require,exports,module){var setCommandSpec={name:'set',params:[{name:'setting',type:'setting',description:'The name of the setting to display or alter',defaultValue:null},{name:'value',type:'settingValue',description:'The new value for the chosen setting',defaultValue:null}],description:'define and show settings',exec:function(env,args,request){var html;if(!args.setting){var names=env.settings.getSettingNames();html='';names.sort(function(name1,name2){return name1.localeCompare(name2);});names.forEach(function(name){var setting=env.settings.getSetting(name);var url='https://wiki.mozilla.org/Labs/Skywriter/Settings#'+
setting.name;html+='<a class="setting" href="'+url+'" title="View external documentation on setting: '+
setting.name+'" target="_blank">'+
setting.name+'</a> = '+
setting.value+'<br/>';});}else{if(args.value===undefined){html='<strong>'+setting.name+'</strong> = '+
setting.get();}else{args.setting.set(args.value);html='Setting: <strong>'+args.setting.name+'</strong> = '+
args.setting.get();}}
request.done(html);}};var unsetCommandSpec={name:'unset',params:[{name:'setting',type:'setting',description:'The name of the setting to return to defaults'}],description:'unset a setting entirely',exec:function(env,args,request){var setting=env.settings.get(args.setting);if(!setting){request.doneWithError('No setting with the name <strong>'+
args.setting+'</strong>.');return;}
setting.reset();request.done('Reset '+setting.name+' to default: '+
env.settings.get(args.setting));}};var canon=require('pilot/canon');exports.startup=function(data,reason){canon.addCommand(setCommandSpec);canon.addCommand(unsetCommandSpec);};exports.shutdown=function(data,reason){canon.removeCommand(setCommandSpec);canon.removeCommand(unsetCommandSpec);};});define('pilot/commands/basic',function(require,exports,module){var checks=require("pilot/typecheck");var canon=require('pilot/canon');var helpMessages={plainPrefix:'<h2>Welcome to Skywriter - Code in the Cloud</h2><ul>'+'<li><a href="http://labs.mozilla.com/projects/skywriter" target="_blank">Home Page</a></li>'+'<li><a href="https://wiki.mozilla.org/Labs/Skywriter" target="_blank">Wiki</a></li>'+'<li><a href="https://wiki.mozilla.org/Labs/Skywriter/UserGuide" target="_blank">User Guide</a></li>'+'<li><a href="https://wiki.mozilla.org/Labs/Skywriter/Tips" target="_blank">Tips and Tricks</a></li>'+'<li><a href="https://wiki.mozilla.org/Labs/Skywriter/FAQ" target="_blank">FAQ</a></li>'+'<li><a href="https://wiki.mozilla.org/Labs/Skywriter/DeveloperGuide" target="_blank">Developers Guide</a></li>'+'</ul>',plainSuffix:'For more information, see the <a href="https://wiki.mozilla.org/Labs/Skywriter">Skywriter Wiki</a>.'};var helpCommandSpec={name:'help',params:[{name:'search',type:'text',description:'Search string to narrow the output.',defaultValue:null}],description:'Get help on the available commands.',exec:function(env,args,request){var output=[];var command=canon.getCommand(args.search);if(command&&command.exec){output.push(command.description?command.description:'No description for '+args.search);}else{var showHidden=false;if(!args.search&&helpMessages.plainPrefix){output.push(helpMessages.plainPrefix);}
if(command){output.push('<h2>Sub-Commands of '+command.name+'</h2>');output.push('<p>'+command.description+'</p>');}
else if(args.search){if(args.search=='hidden'){args.search='';showHidden=true;}
output.push('<h2>Commands starting with \''+args.search+'\':</h2>');}
else{output.push('<h2>Available Commands:</h2>');}
var commandNames=canon.getCommandNames();commandNames.sort();output.push('<table>');for(var i=0;i<commandNames.length;i++){command=canon.getCommand(commandNames[i]);if(!showHidden&&command.hidden){continue;}
if(command.description===undefined){continue;}
if(args.search&&command.name.indexOf(args.search)!==0){continue;}
if(!args.search&&command.name.indexOf(' ')!=-1){continue;}
if(command&&command.name==args.search){continue;}
output.push('<tr>');output.push('<th class="right">'+command.name+'</th>');output.push('<td>'+command.description+'</td>');output.push('</tr>');}
output.push('</table>');if(!args.search&&helpMessages.plainSuffix){output.push(helpMessages.plainSuffix);}}
request.done(output.join(''));}};var evalCommandSpec={name:'eval',params:[{name:'javascript',type:'text',description:'The JavaScript to evaluate'}],description:'evals given js code and show the result',hidden:true,exec:function(env,args,request){var result;var javascript=args.javascript;try{result=eval(javascript);}catch(e){result='<b>Error: '+e.message+'</b>';}
var msg='';var type='';var x;if(checks.isFunction(result)){msg=(result+'').replace(/\n/g,'<br>').replace(/ /g,'&#160');type='function';}else if(checks.isObject(result)){if(Array.isArray(result)){type='array';}else{type='object';}
var items=[];var value;for(x in result){if(result.hasOwnProperty(x)){if(checks.isFunction(result[x])){value='[function]';}else if(checks.isObject(result[x])){value='[object]';}else{value=result[x];}
items.push({name:x,value:value});}}
items.sort(function(a,b){return(a.name.toLowerCase()<b.name.toLowerCase())?-1:1;});for(x=0;x<items.length;x++){msg+='<b>'+items[x].name+'</b>: '+items[x].value+'<br>';}}else{msg=result;type=typeof result;}
request.done('Result for eval <b>\''+javascript+'\'</b>'+' (type: '+type+'): <br><br>'+msg);}};var versionCommandSpec={name:'version',description:'show the Skywriter version',hidden:true,exec:function(env,args,request){var version='Skywriter '+skywriter.versionNumber+' ('+
skywriter.versionCodename+')';request.done(version);}};var skywriterCommandSpec={name:'skywriter',hidden:true,exec:function(env,args,request){var index=Math.floor(Math.random()*messages.length);request.done('Skywriter '+messages[index]);}};var messages=['really wants you to trick it out in some way.','is your Web editor.','would love to be like Emacs on the Web.','is written on the Web platform, so you can tweak it.'];var canon=require('pilot/canon');exports.startup=function(data,reason){canon.addCommand(helpCommandSpec);canon.addCommand(evalCommandSpec);canon.addCommand(skywriterCommandSpec);};exports.shutdown=function(data,reason){canon.removeCommand(helpCommandSpec);canon.removeCommand(evalCommandSpec);canon.removeCommand(skywriterCommandSpec);};});define('pilot/typecheck',function(require,exports,module){var objectToString=Object.prototype.toString;exports.isString=function(it){return it&&objectToString.call(it)==="[object String]";};exports.isBoolean=function(it){return it&&objectToString.call(it)==="[object Boolean]";};exports.isNumber=function(it){return it&&objectToString.call(it)==="[object Number]"&&isFinite(it);};exports.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||Array.isArray(it)||exports.isFunction(it));};exports.isFunction=function(it){return it&&objectToString.call(it)==="[object Function]";};});define('pilot/settings/canon',function(require,exports,module){var historyLengthSetting={name:"historyLength",description:"How many typed commands do we recall for reference?",type:"number",defaultValue:50};exports.startup=function(data,reason){data.env.settings.addSetting(historyLengthSetting);};exports.shutdown=function(data,reason){data.env.settings.removeSetting(historyLengthSetting);};});define('pilot/plugin_manager',function(require,exports,module){var Promise=require("pilot/promise").Promise;exports.REASONS={APP_STARTUP:1,APP_SHUTDOWN:2,PLUGIN_ENABLE:3,PLUGIN_DISABLE:4,PLUGIN_INSTALL:5,PLUGIN_UNINSTALL:6,PLUGIN_UPGRADE:7,PLUGIN_DOWNGRADE:8};exports.Plugin=function(name){this.name=name;this.status=this.INSTALLED;};exports.Plugin.prototype={NEW:0,INSTALLED:1,REGISTERED:2,STARTED:3,UNREGISTERED:4,SHUTDOWN:5,install:function(data,reason){var pr=new Promise();if(this.status>this.NEW){pr.resolve(this);return pr;}
require([this.name],function(pluginModule){if(pluginModule.install){pluginModule.install(data,reason);}
this.status=this.INSTALLED;pr.resolve(this);}.bind(this));return pr;},register:function(data,reason){var pr=new Promise();if(this.status!=this.INSTALLED){pr.resolve(this);return pr;}
require([this.name],function(pluginModule){if(pluginModule.register){pluginModule.register(data,reason);}
this.status=this.REGISTERED;pr.resolve(this);}.bind(this));return pr;},startup:function(data,reason){reason=reason||exports.REASONS.APP_STARTUP;var pr=new Promise();if(this.status!=this.REGISTERED){pr.resolve(this);return pr;}
require([this.name],function(pluginModule){if(pluginModule.startup){pluginModule.startup(data,reason);}
this.status=this.STARTED;pr.resolve(this);}.bind(this));return pr;},shutdown:function(data,reason){if(this.status!=this.STARTED){return;}
pluginModule=require(this.name);if(pluginModule.shutdown){pluginModule.shutdown(data,reason);}}};exports.PluginCatalog=function(){this.plugins={};};exports.PluginCatalog.prototype={registerPlugins:function(pluginList,data,reason){var registrationPromises=[];pluginList.forEach(function(pluginName){var plugin=this.plugins[pluginName];if(plugin===undefined){plugin=new exports.Plugin(pluginName);this.plugins[pluginName]=plugin;registrationPromises.push(plugin.register(data,reason));}}.bind(this));return Promise.group(registrationPromises);},startupPlugins:function(data,reason){var startupPromises=[];for(var pluginName in this.plugins){var plugin=this.plugins[pluginName];startupPromises.push(plugin.startup(data,reason));}
return Promise.group(startupPromises);}};exports.catalog=new exports.PluginCatalog();});define('pilot/promise',function(require,exports,module){var console=require("pilot/console");var Trace=require('pilot/stacktrace').Trace;var ERROR=-1;var PENDING=0;var SUCCESS=1;var _nextId=0;var _traceCompletion=false;var _outstanding=[];var _recent=[];Promise=function(){this._status=PENDING;this._value=undefined;this._onSuccessHandlers=[];this._onErrorHandlers=[];this._id=_nextId++;_outstanding[this._id]=this;};Promise.prototype.isPromise=true;Promise.prototype.isComplete=function(){return this._status!=PENDING;};Promise.prototype.isResolved=function(){return this._status==SUCCESS;};Promise.prototype.isRejected=function(){return this._status==ERROR;};Promise.prototype.then=function(onSuccess,onError){if(typeof onSuccess==='function'){if(this._status===SUCCESS){onSuccess.call(null,this._value);}else if(this._status===PENDING){this._onSuccessHandlers.push(onSuccess);}}
if(typeof onError==='function'){if(this._status===ERROR){onError.call(null,this._value);}else if(this._status===PENDING){this._onErrorHandlers.push(onError);}}
return this;};Promise.prototype.chainPromise=function(onSuccess){var chain=new Promise();chain._chainedFrom=this;this.then(function(data){try{chain.resolve(onSuccess(data));}catch(ex){chain.reject(ex);}},function(ex){chain.reject(ex);});return chain;};Promise.prototype.resolve=function(data){return this._complete(this._onSuccessHandlers,SUCCESS,data,'resolve');};Promise.prototype.reject=function(data){return this._complete(this._onErrorHandlers,ERROR,data,'reject');};Promise.prototype._complete=function(list,status,data,name){if(this._status!=PENDING){console.group('Promise already closed');console.error('Attempted '+name+'() with ',data);console.error('Previous status = ',this._status,', previous value = ',this._value);console.trace();if(this._completeTrace){console.error('Trace of previous completion:');this._completeTrace.log(5);}
console.groupEnd();return this;}
if(_traceCompletion){this._completeTrace=new Trace(new Error());}
this._status=status;this._value=data;list.forEach(function(handler){handler.call(null,this._value);},this);this._onSuccessHandlers.length=0;this._onErrorHandlers.length=0;delete _outstanding[this._id];_recent.push(this);while(_recent.length>20){_recent.shift();}
return this;};Promise.group=function(promiseList){if(!(promiseList instanceof Array)){promiseList=Array.prototype.slice.call(arguments);}
if(promiseList.length===0){return new Promise().resolve([]);}
var groupPromise=new Promise();var results=[];var fulfilled=0;var onSuccessFactory=function(index){return function(data){results[index]=data;fulfilled++;if(groupPromise._status!==ERROR){if(fulfilled===promiseList.length){groupPromise.resolve(results);}}};};promiseList.forEach(function(promise,index){var onSuccess=onSuccessFactory(index);var onError=groupPromise.reject.bind(groupPromise);promise.then(onSuccess,onError);});return groupPromise;};exports.Promise=Promise;exports._outstanding=_outstanding;exports._recent=_recent;});define('pilot/environment',function(require,exports,module){var settings=require("pilot/settings").settings;function create(){return{settings:settings};};exports.create=create;});define('ace/editor',function(require,exports,module){require("pilot/fixoldbrowsers");var oop=require("pilot/oop");var event=require("pilot/event");var lang=require("pilot/lang");var useragent=require("pilot/useragent");var TextInput=require("ace/keyboard/textinput").TextInput;var MouseHandler=require("ace/mouse_handler").MouseHandler;var KeyBinding=require("ace/keyboard/keybinding").KeyBinding;var EditSession=require("ace/edit_session").EditSession;var Search=require("ace/search").Search;var BackgroundTokenizer=require("ace/background_tokenizer").BackgroundTokenizer;var Range=require("ace/range").Range;var EventEmitter=require("pilot/event_emitter").EventEmitter;var Editor=function(renderer,session){var container=renderer.getContainerElement();this.container=container;this.renderer=renderer;this.textInput=new TextInput(renderer.getTextAreaContainer(),this);this.keyBinding=new KeyBinding(this);if(useragent.isIPad){}else{this.$mouseHandler=new MouseHandler(this);}
this.$blockScrolling=0;this.$search=new Search().set({wrap:true});this.setSession(session||new EditSession(""));};(function(){oop.implement(this,EventEmitter);this.$forwardEvents={gutterclick:1,gutterdblclick:1};this.$originalAddEventListener=this.addEventListener;this.$originalRemoveEventListener=this.removeEventListener;this.addEventListener=function(eventName,callback){if(this.$forwardEvents[eventName]){return this.renderer.addEventListener(eventName,callback);}else{return this.$originalAddEventListener(eventName,callback);}};this.removeEventListener=function(eventName,callback){if(this.$forwardEvents[eventName]){return this.renderer.removeEventListener(eventName,callback);}else{return this.$originalRemoveEventListener(eventName,callback);}};this.setKeyboardHandler=function(keyboardHandler){this.keyBinding.setKeyboardHandler(keyboardHandler);};this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler();}
this.setSession=function(session){if(this.session==session)return;if(this.session){var oldSession=this.session;this.session.removeEventListener("change",this.$onDocumentChange);this.session.removeEventListener("changeMode",this.$onDocumentModeChange);this.session.removeEventListener("changeTabSize",this.$onDocumentChangeTabSize);this.session.removeEventListener("changeWrapLimit",this.$onDocumentChangeWrapLimit);this.session.removeEventListener("changeWrapMode",this.$onDocumentChangeWrapMode);this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker);this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker);this.session.removeEventListener("changeBreakpoint",this.$onDocumentChangeBreakpoint);this.session.removeEventListener("changeAnnotation",this.$onDocumentChangeAnnotation);var selection=this.session.getSelection();selection.removeEventListener("changeCursor",this.$onCursorChange);selection.removeEventListener("changeSelection",this.$onSelectionChange);this.session.setScrollTopRow(this.renderer.getScrollTopRow());}
this.session=session;this.$onDocumentChange=this.onDocumentChange.bind(this);session.addEventListener("change",this.$onDocumentChange);this.renderer.setSession(session);this.$onDocumentModeChange=this.onDocumentModeChange.bind(this);session.addEventListener("changeMode",this.$onDocumentModeChange);this.$onDocumentChangeTabSize=this.renderer.updateText.bind(this.renderer);session.addEventListener("changeTabSize",this.$onDocumentChangeTabSize);this.$onDocumentChangeWrapLimit=this.onDocumentChangeWrapLimit.bind(this);session.addEventListener("changeWrapLimit",this.$onDocumentChangeWrapLimit);this.$onDocumentChangeWrapMode=this.onDocumentChangeWrapMode.bind(this);session.addEventListener("changeWrapMode",this.$onDocumentChangeWrapMode);this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this);this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker);this.$onChangeBackMarker=this.onChangeBackMarker.bind(this);this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker);this.$onDocumentChangeBreakpoint=this.onDocumentChangeBreakpoint.bind(this);this.session.addEventListener("changeBreakpoint",this.$onDocumentChangeBreakpoint);this.$onDocumentChangeAnnotation=this.onDocumentChangeAnnotation.bind(this);this.session.addEventListener("changeAnnotation",this.$onDocumentChangeAnnotation);this.selection=session.getSelection();this.$onCursorChange=this.onCursorChange.bind(this);this.selection.addEventListener("changeCursor",this.$onCursorChange);this.$onSelectionChange=this.onSelectionChange.bind(this);this.selection.addEventListener("changeSelection",this.$onSelectionChange);this.onDocumentModeChange();this.bgTokenizer.setDocument(session.getDocument());this.bgTokenizer.start(0);this.onCursorChange();this.onSelectionChange();this.onChangeFrontMarker();this.onChangeBackMarker();this.onDocumentChangeBreakpoint();this.onDocumentChangeAnnotation();this.renderer.scrollToRow(session.getScrollTopRow());this.renderer.updateFull();this._dispatchEvent("changeSession",{session:session,oldSession:oldSession});};this.getSession=function(){return this.session;};this.getSelection=function(){return this.selection;};this.resize=function(){this.renderer.onResize();};this.setTheme=function(theme){this.renderer.setTheme(theme);};this.setStyle=function(style){this.renderer.setStyle(style)};this.unsetStyle=function(style){this.renderer.unsetStyle(style)}
this.$highlightBrackets=function(){if(this.$bracketHighlight){this.session.removeMarker(this.$bracketHighlight);this.$bracketHighlight=null;}
if(this.$highlightPending){return;}
var self=this;this.$highlightPending=true;setTimeout(function(){self.$highlightPending=false;var pos=self.session.findMatchingBracket(self.getCursorPosition());if(pos){var range=new Range(pos.row,pos.column,pos.row,pos.column+1);self.$bracketHighlight=self.session.addMarker(range,"ace_bracket");}},10);};this.focus=function(){var _self=this;setTimeout(function(){_self.textInput.focus();});this.textInput.focus();};this.blur=function(){this.textInput.blur();};this.onFocus=function(){this.renderer.showCursor();this.renderer.visualizeFocus();this._dispatchEvent("focus");};this.onBlur=function(){this.renderer.hideCursor();this.renderer.visualizeBlur();this._dispatchEvent("blur");};this.onDocumentChange=function(e){var delta=e.data;var range=delta.range;this.bgTokenizer.start(range.start.row);if(range.start.row==range.end.row&&delta.action!="insertLines"&&delta.action!="removeLines")
var lastRow=range.end.row;else
lastRow=Infinity;this.renderer.updateLines(range.start.row,lastRow);this.renderer.updateCursor(this.getCursorPosition(),this.$overwrite);};this.onTokenizerUpdate=function(e){var rows=e.data;this.renderer.updateLines(rows.first,rows.last);};this.onCursorChange=function(e){this.renderer.updateCursor(this.getCursorPosition(),this.$overwrite);if(!this.$blockScrolling){this.renderer.scrollCursorIntoView();}
this.renderer.moveTextAreaToCursor(this.textInput.getElement());this.$highlightBrackets();this.$updateHighlightActiveLine();};this.$updateHighlightActiveLine=function(){var session=this.getSession();if(session.$highlightLineMarker){session.removeMarker(session.$highlightLineMarker);}
session.$highlightLineMarker=null;if(this.getHighlightActiveLine()&&(this.getSelectionStyle()!="line"||!this.selection.isMultiLine())){var cursor=this.getCursorPosition();var range=new Range(cursor.row,0,cursor.row+1,0);session.$highlightLineMarker=session.addMarker(range,"ace_active_line","line");}};this.onSelectionChange=function(e){var session=this.getSession();if(session.$selectionMarker){session.removeMarker(session.$selectionMarker);}
session.$selectionMarker=null;if(!this.selection.isEmpty()){var range=this.selection.getRange();var style=this.getSelectionStyle();session.$selectionMarker=session.addMarker(range,"ace_selection",style);}
this.onCursorChange(e);};this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers();};this.onChangeBackMarker=function(){this.renderer.updateBackMarkers();};this.onDocumentChangeBreakpoint=function(){this.renderer.setBreakpoints(this.session.getBreakpoints());};this.onDocumentChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations());};this.onDocumentModeChange=function(){var mode=this.session.getMode();if(this.mode==mode)
return;this.mode=mode;var tokenizer=mode.getTokenizer();if(!this.bgTokenizer){var onUpdate=this.onTokenizerUpdate.bind(this);this.bgTokenizer=new BackgroundTokenizer(tokenizer,this);this.bgTokenizer.addEventListener("update",onUpdate);}else{this.bgTokenizer.setTokenizer(tokenizer);}
this.renderer.setTokenizer(this.bgTokenizer);};this.onDocumentChangeWrapLimit=function(){this.renderer.updateCursor(this.getCursorPosition(),this.$overwrite);this.renderer.updateFull();};this.onDocumentChangeWrapMode=function(){this.renderer.onResize(true);};this.getCopyText=function(){if(!this.selection.isEmpty()){return this.session.getTextRange(this.getSelectionRange());}
else{return"";}};this.onCut=function(){if(this.$readOnly)
return;if(!this.selection.isEmpty()){this.session.remove(this.getSelectionRange())
this.clearSelection();}};this.insert=function(text){if(this.$readOnly)
return;var cursor=this.getCursorPosition();text=text.replace("\t",this.session.getTabString());if(!this.selection.isEmpty()){var cursor=this.session.remove(this.getSelectionRange());this.clearSelection();}else if(this.$overwrite){var range=new Range.fromPoints(cursor,cursor);range.end.column+=text.length;this.session.remove(range);}
this.clearSelection();var lineState=this.bgTokenizer.getState(cursor.row);var shouldOutdent=this.mode.checkOutdent(lineState,this.session.getLine(cursor.row),text);var line=this.session.getLine(cursor.row);var lineIndent=this.mode.getNextLineIndent(lineState,line.slice(0,cursor.column),this.session.getTabString());var end=this.session.insert(cursor,text);this.moveCursorToPosition(end);var lineState=this.bgTokenizer.getState(cursor.row);if(cursor.row!==end.row){var size=this.session.getTabSize(),minIndent=Number.MAX_VALUE;for(var row=cursor.row+1;row<=end.row;++row){var indent=0;line=this.session.getLine(row);for(var i=0;i<line.length;++i)
if(line.charAt(i)=='\t')
indent+=size;else if(line.charAt(i)==' ')
indent+=1;else
break;if(/[^\s]/.test(line))
minIndent=Math.min(indent,minIndent);}
for(var row=cursor.row+1;row<=end.row;++row){var outdent=minIndent;line=this.session.getLine(row);for(var i=0;i<line.length&&outdent>0;++i)
if(line.charAt(i)=='\t')
outdent-=size;else if(line.charAt(i)==' ')
outdent-=1;this.session.remove(new Range(row,0,row,i));}
this.session.indentRows(cursor.row+1,end.row,lineIndent);}else{if(shouldOutdent){this.mode.autoOutdent(lineState,this.session,cursor.row);}};}
this.onTextInput=function(text){this.keyBinding.onTextInput(text);};this.onCommandKey=function(e,hashId,keyCode){this.keyBinding.onCommandKey(e,hashId,keyCode);};this.$overwrite=false;this.setOverwrite=function(overwrite){if(this.$overwrite==overwrite)return;this.$overwrite=overwrite;this.$blockScrolling+=1;this.onCursorChange();this.$blockScrolling-=1;this._dispatchEvent("changeOverwrite",{data:overwrite});};this.getOverwrite=function(){return this.$overwrite;};this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite);};this.setScrollSpeed=function(speed){this.$mouseHandler.setScrollSpeed(speed);};this.getScrollSpeed=function(){return this.$mouseHandler.getScrollSpeed()};this.$selectionStyle="line";this.setSelectionStyle=function(style){if(this.$selectionStyle==style)return;this.$selectionStyle=style;this.onSelectionChange();this._dispatchEvent("changeSelectionStyle",{data:style});};this.getSelectionStyle=function(){return this.$selectionStyle;};this.$highlightActiveLine=true;this.setHighlightActiveLine=function(shouldHighlight){if(this.$highlightActiveLine==shouldHighlight)return;this.$highlightActiveLine=shouldHighlight;this.$updateHighlightActiveLine();};this.getHighlightActiveLine=function(){return this.$highlightActiveLine;};this.setShowInvisibles=function(showInvisibles){if(this.getShowInvisibles()==showInvisibles)
return;this.renderer.setShowInvisibles(showInvisibles);};this.getShowInvisibles=function(){return this.renderer.getShowInvisibles();};this.setShowPrintMargin=function(showPrintMargin){this.renderer.setShowPrintMargin(showPrintMargin);};this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin();};this.setPrintMarginColumn=function(showPrintMargin){this.renderer.setPrintMarginColumn(showPrintMargin);};this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn();};this.$readOnly=false;this.setReadOnly=function(readOnly){this.$readOnly=readOnly;};this.getReadOnly=function(){return this.$readOnly;};this.removeRight=function(){if(this.$readOnly)
return;if(this.selection.isEmpty()){this.selection.selectRight();}
this.session.remove(this.getSelectionRange())
this.clearSelection();};this.removeLeft=function(){if(this.$readOnly)
return;if(this.selection.isEmpty())
this.selection.selectLeft();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeWordRight=function(){if(this.$readOnly)
return;if(this.selection.isEmpty())
this.selection.selectWordRight();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeWordLeft=function(){if(this.$readOnly)
return;if(this.selection.isEmpty())
this.selection.selectWordLeft();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeToLineStart=function(){if(this.$readOnly)
return;if(this.selection.isEmpty())
this.selection.selectLineStart();this.session.remove(this.getSelectionRange());this.clearSelection();};this.removeToLineEnd=function(){if(this.$readOnly)
return;if(this.selection.isEmpty())
this.selection.selectLineEnd();this.session.remove(this.getSelectionRange());this.clearSelection();};this.splitLine=function(){if(this.$readOnly)
return;if(!this.selection.isEmpty()){this.session.remove(this.getSelectionRange());this.clearSelection();}
var cursor=this.getCursorPosition();this.insert("\n");this.moveCursorToPosition(cursor);};this.transposeLetters=function(){if(this.$readOnly)
return;if(!this.selection.isEmpty()){return;}
var cursor=this.getCursorPosition();var column=cursor.column;if(column==0)
return;var line=this.session.getLine(cursor.row);if(column<line.length){var swap=line.charAt(column)+line.charAt(column-1);var range=new Range(cursor.row,column-1,cursor.row,column+1)}
else{var swap=line.charAt(column-1)+line.charAt(column-2);var range=new Range(cursor.row,column-2,cursor.row,column)}
this.session.replace(range,swap);};this.indent=function(){if(this.$readOnly)
return;var session=this.session;var range=this.getSelectionRange();if(range.start.row<range.end.row||range.start.column<range.end.column){var rows=this.$getSelectedRows();session.indentRows(rows.first,rows.last,"\t");}else{var indentString;if(this.session.getUseSoftTabs()){var size=session.getTabSize(),position=this.getCursorPosition(),column=session.documentToScreenColumn(position.row,position.column),count=(size-column%size);indentString=lang.stringRepeat(" ",count);}else
indentString="\t";return this.onTextInput(indentString);}};this.blockOutdent=function(){if(this.$readOnly)
return;var selection=this.session.getSelection();this.session.outdentRows(selection.getRange());};this.toggleCommentLines=function(){if(this.$readOnly)
return;var state=this.bgTokenizer.getState(this.getCursorPosition().row);var rows=this.$getSelectedRows()
this.mode.toggleCommentLines(state,this.session,rows.first,rows.last);};this.removeLines=function(){if(this.$readOnly)
return;var rows=this.$getSelectedRows();this.session.remove(new Range(rows.first,0,rows.last+1,0));this.clearSelection();};this.moveLinesDown=function(){if(this.$readOnly)
return;this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesDown(firstRow,lastRow);});};this.moveLinesUp=function(){if(this.$readOnly)
return;this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesUp(firstRow,lastRow);});};this.copyLinesUp=function(){if(this.$readOnly)
return;this.$moveLines(function(firstRow,lastRow){this.session.duplicateLines(firstRow,lastRow);return 0;});};this.copyLinesDown=function(){if(this.$readOnly)
return;this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow);});};this.$moveLines=function(mover){var rows=this.$getSelectedRows();var linesMoved=mover.call(this,rows.first,rows.last);var selection=this.selection;selection.setSelectionAnchor(rows.last+linesMoved+1,0);selection.$moveSelection(function(){selection.moveCursorTo(rows.first+linesMoved,0);});};this.$getSelectedRows=function(){var range=this.getSelectionRange().collapseRows();return{first:range.start.row,last:range.end.row};};this.onCompositionStart=function(text){this.renderer.showComposition(this.getCursorPosition());};this.onCompositionUpdate=function(text){this.renderer.setCompositionText(text);};this.onCompositionEnd=function(){this.renderer.hideComposition();};this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow();};this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow();};this.isRowVisible=function(row){return(row>=this.getFirstVisibleRow()&&row<=this.getLastVisibleRow());};this.getVisibleRowCount=function(){return this.getLastVisibleRow()-this.getFirstVisibleRow()+1;};this.getPageDownRow=function(){return this.renderer.getLastVisibleRow()-1;};this.getPageUpRow=function(){var firstRow=this.renderer.getFirstVisibleRow();var lastRow=this.renderer.getLastVisibleRow();return firstRow-(lastRow-firstRow)+1;};this.selectPageDown=function(){var row=this.getPageDownRow()+Math.floor(this.getVisibleRowCount()/2);this.scrollPageDown();var selection=this.getSelection();selection.$moveSelection(function(){selection.moveCursorTo(row,selection.getSelectionLead().column);});};this.selectPageUp=function(){var visibleRows=this.getLastVisibleRow()-this.getFirstVisibleRow();var row=this.getPageUpRow()+Math.round(visibleRows/2);this.scrollPageUp();var selection=this.getSelection();selection.$moveSelection(function(){selection.moveCursorTo(row,selection.getSelectionLead().column);});};this.gotoPageDown=function(){var row=this.getPageDownRow(),column=Math.min(this.getCursorPosition().column,this.session.getLine(row).length);this.scrollToRow(row);this.getSelection().moveCursorTo(row,column);};this.gotoPageUp=function(){var row=this.getPageUpRow(),column=Math.min(this.getCursorPosition().column,this.session.getLine(row).length);this.scrollToRow(row);this.getSelection().moveCursorTo(row,column);};this.scrollPageDown=function(){this.scrollToRow(this.getPageDownRow());};this.scrollPageUp=function(){this.renderer.scrollToRow(this.getPageUpRow());};this.scrollToRow=function(row){this.renderer.scrollToRow(row);};this.scrollToLine=function(line,center){this.renderer.scrollToLine(line,center);};this.centerSelection=function(){var range=this.getSelectionRange();var line=Math.floor(range.start.row+(range.end.row-range.start.row)/2);this.renderer.scrollToLine(line,true);};this.getCursorPosition=function(){return this.selection.getCursor();};this.getSelectionRange=function(){return this.selection.getRange();};this.selectAll=function(){this.$blockScrolling+=1;this.selection.selectAll();this.$blockScrolling-=1;};this.clearSelection=function(){this.selection.clearSelection();};this.moveCursorTo=function(row,column){this.selection.moveCursorTo(row,column);};this.moveCursorToPosition=function(pos){this.selection.moveCursorToPosition(pos);};this.gotoLine=function(lineNumber,row){this.selection.clearSelection();this.$blockScrolling+=1;this.moveCursorTo(lineNumber-1,row||0);this.$blockScrolling-=1;if(!this.isRowVisible(this.getCursorPosition().row)){this.scrollToLine(lineNumber,true);}},this.navigateTo=function(row,column){this.clearSelection();this.moveCursorTo(row,column);};this.navigateUp=function(times){this.selection.clearSelection();times=times||1;this.selection.moveCursorBy(-times,0);};this.navigateDown=function(times){this.selection.clearSelection();times=times||1;this.selection.moveCursorBy(times,0);};this.navigateLeft=function(times){if(!this.selection.isEmpty()){var selectionStart=this.getSelectionRange().start;this.moveCursorToPosition(selectionStart);}
else{times=times||1;while(times--){this.selection.moveCursorLeft();}}
this.clearSelection();};this.navigateRight=function(times){if(!this.selection.isEmpty()){var selectionEnd=this.getSelectionRange().end;this.moveCursorToPosition(selectionEnd);}
else{times=times||1;while(times--){this.selection.moveCursorRight();}}
this.clearSelection();};this.navigateLineStart=function(){this.selection.moveCursorLineStart();this.clearSelection();};this.navigateLineEnd=function(){this.selection.moveCursorLineEnd();this.clearSelection();};this.navigateFileEnd=function(){this.selection.moveCursorFileEnd();this.clearSelection();};this.navigateFileStart=function(){this.selection.moveCursorFileStart();this.clearSelection();};this.navigateWordRight=function(){this.selection.moveCursorWordRight();this.clearSelection();};this.navigateWordLeft=function(){this.selection.moveCursorWordLeft();this.clearSelection();};this.replace=function(replacement,options){if(options)
this.$search.set(options);var range=this.$search.find(this.session);this.$tryReplace(range,replacement);if(range!==null)
this.selection.setSelectionRange(range);},this.replaceAll=function(replacement,options){if(options){this.$search.set(options);}
var ranges=this.$search.findAll(this.session);if(!ranges.length)
return;var selection=this.getSelectionRange();this.clearSelection();this.selection.moveCursorTo(0,0);this.$blockScrolling+=1;for(var i=ranges.length-1;i>=0;--i)
this.$tryReplace(ranges[i],replacement);this.selection.setSelectionRange(selection);this.$blockScrolling-=1;},this.$tryReplace=function(range,replacement){var input=this.session.getTextRange(range);var replacement=this.$search.replace(input,replacement);if(replacement!==null){range.end=this.session.replace(range,replacement);return range;}else{return null;}};this.getLastSearchOptions=function(){return this.$search.getOptions();};this.find=function(needle,options){this.clearSelection();options=options||{};options.needle=needle;this.$search.set(options);this.$find();},this.findNext=function(options){options=options||{};if(typeof options.backwards=="undefined")
options.backwards=false;this.$search.set(options);this.$find();};this.findPrevious=function(options){options=options||{};if(typeof options.backwards=="undefined")
options.backwards=true;this.$search.set(options);this.$find();};this.$find=function(backwards){if(!this.selection.isEmpty()){this.$search.set({needle:this.session.getTextRange(this.getSelectionRange())});}
if(typeof backwards!="undefined")
this.$search.set({backwards:backwards});var range=this.$search.find(this.session);if(range){this.gotoLine(range.end.row+1,range.end.column);this.selection.setSelectionRange(range);}};this.undo=function(){this.session.getUndoManager().undo();};this.redo=function(){this.session.getUndoManager().redo();};}).call(Editor.prototype);exports.Editor=Editor;});define('pilot/event',function(require,exports,module){var keys=require("pilot/keys");var useragent=require("pilot/useragent");var dom=require("pilot/dom");exports.addListener=function(elem,type,callback){if(elem.addEventListener){return elem.addEventListener(type,callback,false);}
if(elem.attachEvent){var wrapper=function(){callback(window.event);};callback._wrapper=wrapper;elem.attachEvent("on"+type,wrapper);}};exports.removeListener=function(elem,type,callback){if(elem.removeEventListener){return elem.removeEventListener(type,callback,false);}
if(elem.detachEvent){elem.detachEvent("on"+type,callback._wrapper||callback);}};exports.stopEvent=function(e){exports.stopPropagation(e);exports.preventDefault(e);return false;};exports.stopPropagation=function(e){if(e.stopPropagation)
e.stopPropagation();else
e.cancelBubble=true;};exports.preventDefault=function(e){if(e.preventDefault)
e.preventDefault();else
e.returnValue=false;};exports.getDocumentX=function(e){if(e.clientX){return e.clientX+dom.getPageScrollLeft();}else{return e.pageX;}};exports.getDocumentY=function(e){if(e.clientY){return e.clientY+dom.getPageScrollTop();}else{return e.pageY;}};exports.getButton=function(e){if(e.type=="dblclick")
return 0;else if(e.type=="contextmenu")
return 2;if(e.preventDefault){return e.button;}
else{return{1:0,2:2,4:1}[e.button];}};if(document.documentElement.setCapture){exports.capture=function(el,eventHandler,releaseCaptureHandler){function onMouseMove(e){eventHandler(e);return exports.stopPropagation(e);}
function onReleaseCapture(e){eventHandler&&eventHandler(e);releaseCaptureHandler&&releaseCaptureHandler();exports.removeListener(el,"mousemove",eventHandler);exports.removeListener(el,"mouseup",onReleaseCapture);exports.removeListener(el,"losecapture",onReleaseCapture);el.releaseCapture();}
exports.addListener(el,"mousemove",eventHandler);exports.addListener(el,"mouseup",onReleaseCapture);exports.addListener(el,"losecapture",onReleaseCapture);el.setCapture();};}
else{exports.capture=function(el,eventHandler,releaseCaptureHandler){function onMouseMove(e){eventHandler(e);e.stopPropagation();}
function onMouseUp(e){eventHandler&&eventHandler(e);releaseCaptureHandler&&releaseCaptureHandler();document.removeEventListener("mousemove",onMouseMove,true);document.removeEventListener("mouseup",onMouseUp,true);e.stopPropagation();}
document.addEventListener("mousemove",onMouseMove,true);document.addEventListener("mouseup",onMouseUp,true);};}
exports.addMouseWheelListener=function(el,callback){var listener=function(e){if(e.wheelDelta!==undefined){if(e.wheelDeltaX!==undefined){e.wheelX=-e.wheelDeltaX/8;e.wheelY=-e.wheelDeltaY/8;}else{e.wheelX=0;e.wheelY=-e.wheelDelta/8;}}
else{if(e.axis&&e.axis==e.HORIZONTAL_AXIS){e.wheelX=(e.detail||0)*5;e.wheelY=0;}else{e.wheelX=0;e.wheelY=(e.detail||0)*5;}}
callback(e);};exports.addListener(el,"DOMMouseScroll",listener);exports.addListener(el,"mousewheel",listener);};exports.addMultiMouseDownListener=function(el,button,count,timeout,callback){var clicks=0;var startX,startY;var listener=function(e){clicks+=1;if(clicks==1){startX=e.clientX;startY=e.clientY;setTimeout(function(){clicks=0;},timeout||600);}
if(exports.getButton(e)!=button||Math.abs(e.clientX-startX)>5||Math.abs(e.clientY-startY)>5)
clicks=0;if(clicks==count){clicks=0;callback(e);}
return exports.preventDefault(e);};exports.addListener(el,"mousedown",listener);useragent.isIE&&exports.addListener(el,"dblclick",listener);};function normalizeCommandKeys(callback,e,keyCode){var hashId=0;if(useragent.isOpera&&useragent.isMac){hashId=0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0);}else{hashId=0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0);}
if(keyCode in keys.MODIFIER_KEYS){switch(keys.MODIFIER_KEYS[keyCode]){case"Alt":hashId=2;break;case"Shift":hashId=4;break
case"Ctrl":hashId=1;break;default:hashId=8;break;}
keyCode=0;}
if(hashId&8&&(keyCode==91||keyCode==93)){keyCode=0;}
if(hashId==0&&!(keyCode in keys.FUNCTION_KEYS)){return false;}
return callback(e,hashId,keyCode);}
exports.addCommandKeyListener=function(el,callback){var addListener=exports.addListener;if(useragent.isOldGecko){var lastKeyDownKeyCode=null;addListener(el,"keydown",function(e){lastKeyDownKeyCode=e.keyCode;});addListener(el,"keypress",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode);});}else{var lastDown=null;addListener(el,"keydown",function(e){lastDown=e.keyIdentifier||e.keyCode;return normalizeCommandKeys(callback,e,e.keyCode);});if(useragent.isMac&&useragent.isOpera){addListener(el,"keypress",function(e){var keyId=e.keyIdentifier||e.keyCode;if(lastDown!==keyId){return normalizeCommandKeys(callback,e,e.keyCode);}else{lastDown=null;}});}}};});define('pilot/keys',function(require,exports,module){var oop=require("pilot/oop");var Keys=(function(){var ret={MODIFIER_KEYS:{16:'Shift',17:'Ctrl',18:'Alt',224:'Meta'},KEY_MODS:{"ctrl":1,"alt":2,"option":2,"shift":4,"meta":8,"command":8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:' ',48:'0',49:'1',50:'2',51:'3',52:'4',53:'5',54:'6',55:'7',56:'8',57:'9',59:';',61:'=',65:'a',66:'b',67:'c',68:'d',69:'e',70:'f',71:'g',72:'h',73:'i',74:'j',75:'k',76:'l',77:'m',78:'n',79:'o',80:'p',81:'q',82:'r',83:'s',84:'t',85:'u',86:'v',87:'w',88:'x',89:'y',90:'z',107:'+',109:'-',110:'.',188:',',190:'.',191:'/',192:'`',219:'[',220:'\\',221:']',222:'\"'}};for(i in ret.FUNCTION_KEYS){var name=ret.FUNCTION_KEYS[i].toUpperCase();ret[name]=parseInt(i,10);}
oop.mixin(ret,ret.MODIFIER_KEYS);oop.mixin(ret,ret.PRINTABLE_KEYS);oop.mixin(ret,ret.FUNCTION_KEYS);return ret;})();oop.mixin(exports,Keys);});define('pilot/dom',function(require,exports,module){exports.setText=function(elem,text){if(elem.innerText!==undefined){elem.innerText=text;}
if(elem.textContent!==undefined){elem.textContent=text;}};exports.hasCssClass=function(el,name){var classes=el.className.split(/\s+/g);return classes.indexOf(name)!==-1;};exports.addCssClass=function(el,name){if(!exports.hasCssClass(el,name)){el.className+=" "+name;}};exports.setCssClass=function(node,className,include){if(include){exports.addCssClass(node,className);}else{exports.removeCssClass(node,className);}};exports.removeCssClass=function(el,name){var classes=el.className.split(/\s+/g);while(true){var index=classes.indexOf(name);if(index==-1){break;}
classes.splice(index,1);}
el.className=classes.join(" ");};exports.importCssString=function(cssText,doc){doc=doc||document;if(doc.createStyleSheet){var sheet=doc.createStyleSheet();sheet.cssText=cssText;}
else{var style=doc.createElement("style");style.appendChild(doc.createTextNode(cssText));doc.getElementsByTagName("head")[0].appendChild(style);}};exports.getInnerWidth=function(element){return(parseInt(exports.computedStyle(element,"paddingLeft"))
+parseInt(exports.computedStyle(element,"paddingRight"))+element.clientWidth);};exports.getInnerHeight=function(element){return(parseInt(exports.computedStyle(element,"paddingTop"))
+parseInt(exports.computedStyle(element,"paddingBottom"))+element.clientHeight);};if(window.pageYOffset!==undefined){exports.getPageScrollTop=function(){return window.pageYOffset;};exports.getPageScrollLeft=function(){return window.pageXOffset;};}
else{exports.getPageScrollTop=function(){return document.body.scrollTop;};exports.getPageScrollLeft=function(){return document.body.scrollLeft;};}
exports.computedStyle=function(element,style){if(window.getComputedStyle){return(window.getComputedStyle(element,"")||{})[style]||"";}
else{return element.currentStyle[style];}};exports.scrollbarWidth=function(){var inner=document.createElement('p');inner.style.width="100%";inner.style.height="200px";var outer=document.createElement("div");var style=outer.style;style.position="absolute";style.left="-10000px";style.overflow="hidden";style.width="200px";style.height="150px";outer.appendChild(inner);document.body.appendChild(outer);var noScrollbar=inner.offsetWidth;style.overflow="scroll";var withScrollbar=inner.offsetWidth;if(noScrollbar==withScrollbar){withScrollbar=outer.clientWidth;}
document.body.removeChild(outer);return noScrollbar-withScrollbar;};exports.setInnerHtml=function(el,innerHtml){var element=el.cloneNode(false);element.innerHTML=innerHtml;el.parentNode.replaceChild(element,el);return element;};exports.setInnerText=function(el,innerText){if("textContent"in document.body)
el.textContent=innerText;else
el.innerText=innerText;};exports.getInnerText=function(el){if("textContent"in document.body)
return el.textContent;else
return el.innerText;};exports.getParentWindow=function(document){return document.defaultView||document.parentWindow;};exports.getSelectionStart=function(textarea){var start;try{start=textarea.selectionStart||0;}catch(e){start=0;}
return start;};exports.setSelectionStart=function(textarea,start){return textarea.selectionStart=start;};exports.getSelectionEnd=function(textarea){var end;try{end=textarea.selectionEnd||0;}catch(e){end=0;}
return end;};exports.setSelectionEnd=function(textarea,end){return textarea.selectionEnd=end;};});define('ace/keyboard/textinput',function(require,exports,module){var event=require("pilot/event");var useragent=require("pilot/useragent");var TextInput=function(parentNode,host){var text=document.createElement("textarea");text.style.left="-10000px";parentNode.appendChild(text);var PLACEHOLDER=String.fromCharCode(0);sendText();var inCompostion=false;var copied=false;var tempStyle='';function sendText(valueToSend){if(!copied){var value=valueToSend||text.value;if(value){if(value.charCodeAt(value.length-1)==PLACEHOLDER.charCodeAt(0)){value=value.slice(0,-1);if(value)
host.onTextInput(value);}else
host.onTextInput(value);}}
copied=false;text.value=PLACEHOLDER;text.select();}
var onTextInput=function(e){if(useragent.isIE&&text.value.charCodeAt(0)>128)return;setTimeout(function(){if(!inCompostion)
sendText();},0);};var onCompositionStart=function(e){inCompostion=true;if(!useragent.isIE){sendText();text.value="";};host.onCompositionStart();if(!useragent.isGecko)setTimeout(onCompositionUpdate,0);};var onCompositionUpdate=function(){if(!inCompostion)return;host.onCompositionUpdate(text.value);};var onCompositionEnd=function(){inCompostion=false;host.onCompositionEnd();setTimeout(function(){sendText();},0);};var onCopy=function(e){copied=true;var copyText=host.getCopyText();if(copyText)
text.value=copyText;else
e.preventDefault();text.select();setTimeout(function(){sendText();},0);};var onCut=function(e){copied=true;var copyText=host.getCopyText();if(copyText){text.value=copyText;host.onCut();}else
e.preventDefault();text.select();setTimeout(function(){sendText();},0);};event.addCommandKeyListener(text,host.onCommandKey.bind(host));event.addListener(text,"keypress",onTextInput);if(useragent.isIE){var keytable={13:1,27:1};event.addListener(text,"keyup",function(e){if(inCompostion&&(!text.value||keytable[e.keyCode]))
setTimeout(onCompositionEnd,0);if((text.value.charCodeAt(0)|0)<129){return;};inCompostion?onCompositionUpdate():onCompositionStart();});};event.addListener(text,"textInput",onTextInput);event.addListener(text,"paste",function(e){if(e.clipboardData&&e.clipboardData.getData){sendText(e.clipboardData.getData("text/plain"));e.preventDefault();}else
{onTextInput();}});if(!useragent.isIE){event.addListener(text,"propertychange",onTextInput);};if(useragent.isIE){event.addListener(text,"beforecopy",function(e){var copyText=host.getCopyText();if(copyText)
clipboardData.setData("Text",copyText);else
e.preventDefault();});event.addListener(parentNode,"keydown",function(e){if(e.ctrlKey&&e.keyCode==88){var copyText=host.getCopyText();if(copyText){clipboardData.setData("Text",copyText);host.onCut();}
event.preventDefault(e)}});}
else{event.addListener(text,"copy",onCopy);event.addListener(text,"cut",onCut);}
event.addListener(text,"compositionstart",onCompositionStart);if(useragent.isGecko){event.addListener(text,"text",onCompositionUpdate);};if(useragent.isWebKit){event.addListener(text,"keyup",onCompositionUpdate);};event.addListener(text,"compositionend",onCompositionEnd);event.addListener(text,"blur",function(){host.onBlur();});event.addListener(text,"focus",function(){host.onFocus();text.select();});this.focus=function(){host.onFocus();text.select();text.focus();};this.blur=function(){text.blur();};this.getElement=function(){return text;};this.onContextMenu=function(mousePos,isEmpty){if(mousePos){if(!tempStyle)
tempStyle=text.style.cssText;text.style.cssText='position:fixed; z-index:1000;'+'left:'+(mousePos.x-2)+'px; top:'+(mousePos.y-2)+'px;'}
if(isEmpty)
text.value='';}
this.onContextMenuClose=function(){setTimeout(function(){if(tempStyle){text.style.cssText=tempStyle;tempStyle='';}
sendText();},0);}};exports.TextInput=TextInput;});define('ace/mouse_handler',function(require,exports,module){var event=require("pilot/event");var MouseHandler=function(editor){this.editor=editor;event.addListener(editor.container,"mousedown",function(e){editor.focus();return event.preventDefault(e);});event.addListener(editor.container,"selectstart",function(e){return event.preventDefault(e);});var mouseTarget=editor.renderer.getMouseEventTarget();event.addListener(mouseTarget,"mousedown",this.onMouseDown.bind(this));event.addMultiMouseDownListener(mouseTarget,0,2,500,this.onMouseDoubleClick.bind(this));event.addMultiMouseDownListener(mouseTarget,0,3,600,this.onMouseTripleClick.bind(this));event.addMouseWheelListener(mouseTarget,this.onMouseWheel.bind(this));};(function(){this.$scrollSpeed=1;this.setScrollSpeed=function(speed){this.$scrollSpeed=speed;};this.getScrollSpeed=function(){return this.$scrollSpeed;};this.onMouseDown=function(e){var pageX=event.getDocumentX(e);var pageY=event.getDocumentY(e);var editor=this.editor;var pos=editor.renderer.screenToTextCoordinates(pageX,pageY);pos.row=Math.max(0,Math.min(pos.row,editor.session.getLength()-1));var button=event.getButton(e)
if(button!=0){var isEmpty=editor.selection.isEmpty()
if(isEmpty){editor.moveCursorToPosition(pos);}
if(button==2){editor.textInput.onContextMenu({x:pageX,y:pageY},isEmpty);event.capture(editor.container,function(){},editor.textInput.onContextMenuClose);}
return;}
if(e.shiftKey)
editor.selection.selectToPosition(pos)
else{editor.moveCursorToPosition(pos);if(!editor.$clickSelection)
editor.selection.clearSelection(pos.row,pos.column);}
editor.renderer.scrollCursorIntoView();var self=this;var mousePageX,mousePageY;var onMouseSelection=function(e){mousePageX=event.getDocumentX(e);mousePageY=event.getDocumentY(e);};var onMouseSelectionEnd=function(){clearInterval(timerId);self.$clickSelection=null;};var onSelectionInterval=function(){if(mousePageX===undefined||mousePageY===undefined)
return;var cursor=editor.renderer.screenToTextCoordinates(mousePageX,mousePageY);cursor.row=Math.max(0,Math.min(cursor.row,editor.session.getLength()-1));if(self.$clickSelection){if(self.$clickSelection.contains(cursor.row,cursor.column)){editor.selection.setSelectionRange(self.$clickSelection);}else{if(self.$clickSelection.compare(cursor.row,cursor.column)==-1){var anchor=self.$clickSelection.end;}else{var anchor=self.$clickSelection.start;}
editor.selection.setSelectionAnchor(anchor.row,anchor.column);editor.selection.selectToPosition(cursor);}}
else{editor.selection.selectToPosition(cursor);}
editor.renderer.scrollCursorIntoView();};event.capture(editor.container,onMouseSelection,onMouseSelectionEnd);var timerId=setInterval(onSelectionInterval,20);return event.preventDefault(e);};this.onMouseDoubleClick=function(e){this.editor.selection.selectWord();this.$clickSelection=this.editor.getSelectionRange();};this.onMouseTripleClick=function(e){this.editor.selection.selectLine();this.$clickSelection=this.editor.getSelectionRange();};this.onMouseWheel=function(e){var speed=this.$scrollSpeed*2;this.editor.renderer.scrollBy(e.wheelX*speed,e.wheelY*speed);return event.preventDefault(e);};}).call(MouseHandler.prototype);exports.MouseHandler=MouseHandler;});define('ace/keyboard/keybinding',function(require,exports,module){var useragent=require("pilot/useragent");var keyUtil=require("pilot/keys");var event=require("pilot/event");var settings=require("pilot/settings").settings;var HashHandler=require("ace/keyboard/hash_handler").HashHandler;var default_mac=require("ace/keyboard/keybinding/default_mac").bindings;var default_win=require("ace/keyboard/keybinding/default_win").bindings;var canon=require("pilot/canon");require("ace/commands/default_commands");var KeyBinding=function(editor,config){this.$editor=editor;this.$data={};this.$keyboardHandler=null;this.$defaulKeyboardHandler=new HashHandler(config||(useragent.isMac?default_mac:default_win));};(function(){this.setKeyboardHandler=function(keyboardHandler){if(this.$keyboardHandler!=keyboardHandler){this.$data={};this.$keyboardHandler=keyboardHandler;}};this.getKeyboardHandler=function(){return this.$keyboardHandler;};this.$callKeyboardHandler=function(e,hashId,keyOrText,keyCode){var toExecute;if(this.$keyboardHandler){toExecute=this.$keyboardHandler.handleKeyboard(this.$data,hashId,keyOrText,keyCode,e);}
if(!toExecute||!toExecute.command){toExecute=this.$defaulKeyboardHandler.handleKeyboard(this.$data,hashId,keyOrText,keyCode,e);}
if(toExecute){var success=canon.exec(toExecute.command,{editor:this.$editor},toExecute.args);if(success){return event.stopEvent(e);}}};this.onCommandKey=function(e,hashId,keyCode){key=(keyUtil[keyCode]||String.fromCharCode(keyCode)).toLowerCase();this.$callKeyboardHandler(e,hashId,key,keyCode);};this.onTextInput=function(text){this.$callKeyboardHandler({},0,text,0);}}).call(KeyBinding.prototype);exports.KeyBinding=KeyBinding;});define('ace/keyboard/hash_handler',function(require,exports,module){var keyUtil=require("pilot/keys");function HashHandler(config){this.setConfig(config);}
(function(){function splitSafe(s,separator,limit,bLowerCase){return(bLowerCase&&s.toLowerCase()||s).replace(/(?:^\s+|\n|\s+$)/g,"").split(new RegExp("[\\s ]*"+separator+"[\\s ]*","g"),limit||999);}
function parseKeys(keys,val,ret){var key,hashId=0,parts=splitSafe(keys,"\\-",null,true),i=0,l=parts.length;for(;i<l;++i){if(keyUtil.KEY_MODS[parts[i]])
hashId=hashId|keyUtil.KEY_MODS[parts[i]];else
key=parts[i]||"-";}
(ret[hashId]||(ret[hashId]={}))[key]=val;return ret;}
function objectReverse(obj,keySplit){var i,j,l,key,ret={};for(i in obj){key=obj[i];if(keySplit&&typeof key=="string"){key=key.split(keySplit);for(j=0,l=key.length;j<l;++j)
parseKeys.call(this,key[j],i,ret);}
else{parseKeys.call(this,key,i,ret);}}
return ret;}
this.setConfig=function(config){this.$config=config;if(typeof this.$config.reverse=="undefined")
this.$config.reverse=objectReverse.call(this,this.$config,"|");};this.handleKeyboard=function(data,hashId,textOrKey,keyCode){if(hashId!=0||keyCode!=0){return{command:(this.$config.reverse[hashId]||{})[textOrKey]}}else{return{command:"inserttext",args:{text:textOrKey}}}}}).call(HashHandler.prototype)
exports.HashHandler=HashHandler;});define('ace/keyboard/keybinding/default_mac',function(require,exports,module){exports.bindings={"selectall":"Command-A","removeline":"Command-D","gotoline":"Command-L","togglecomment":"Command-7","findnext":"Command-K","findprevious":"Command-Shift-K","find":"Command-F","replace":"Command-R","undo":"Command-Z","redo":"Command-Shift-Z|Command-Y","overwrite":"Insert","copylinesup":"Command-Option-Up","movelinesup":"Option-Up","selecttostart":"Command-Shift-Up","gotostart":"Command-Home|Command-Up","selectup":"Shift-Up","golineup":"Up|Ctrl-P","copylinesdown":"Command-Option-Down","movelinesdown":"Option-Down","selecttoend":"Command-Shift-Down","gotoend":"Command-End|Command-Down","selectdown":"Shift-Down","golinedown":"Down|Ctrl-N","selectwordleft":"Option-Shift-Left","gotowordleft":"Option-Left","selecttolinestart":"Command-Shift-Left","gotolinestart":"Command-Left|Home|Ctrl-A","selectleft":"Shift-Left","gotoleft":"Left|Ctrl-B","selectwordright":"Option-Shift-Right","gotowordright":"Option-Right","selecttolineend":"Command-Shift-Right","gotolineend":"Command-Right|End|Ctrl-E","selectright":"Shift-Right","gotoright":"Right|Ctrl-F","selectpagedown":"Shift-PageDown","pagedown":"PageDown","gotopagedown":"Option-PageDown|Ctrl-V","selectpageup":"Shift-PageUp","pageup":"PageUp","gotopageup":"Option-PageUp","selectlinestart":"Shift-Home","selectlineend":"Shift-End","del":"Delete|Ctrl-D","backspace":"Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H","removetolineend":"Ctrl-K","removetolinestart":"Option-Backspace","removewordleft":"Alt-Backspace|Ctrl-Alt-Backspace","removewordright":"Alt-Delete","outdent":"Shift-Tab","indent":"Tab","transposeletters":"Ctrl-T","splitline":"Ctrl-O","centerselection":"Ctrl-L"};});define('ace/keyboard/keybinding/default_win',function(require,exports,module){exports.bindings={"selectall":"Ctrl-A","removeline":"Ctrl-D","gotoline":"Ctrl-L","togglecomment":"Ctrl-7","findnext":"Ctrl-K","findprevious":"Ctrl-Shift-K","find":"Ctrl-F","replace":"Ctrl-R","undo":"Ctrl-Z","redo":"Ctrl-Shift-Z|Ctrl-Y","overwrite":"Insert","copylinesup":"Ctrl-Alt-Up","movelinesup":"Alt-Up","selecttostart":"Alt-Shift-Up","gotostart":"Ctrl-Home|Ctrl-Up","selectup":"Shift-Up","golineup":"Up","copylinesdown":"Ctrl-Alt-Down","movelinesdown":"Alt-Down","selecttoend":"Alt-Shift-Down","gotoend":"Ctrl-End|Ctrl-Down","selectdown":"Shift-Down","golinedown":"Down","selectwordleft":"Ctrl-Shift-Left","gotowordleft":"Ctrl-Left","selecttolinestart":"Alt-Shift-Left","gotolinestart":"Alt-Left|Home","selectleft":"Shift-Left","gotoleft":"Left","selectwordright":"Ctrl-Shift-Right","gotowordright":"Ctrl-Right","selecttolineend":"Alt-Shift-Right","gotolineend":"Alt-Right|End","selectright":"Shift-Right","gotoright":"Right","selectpagedown":"Shift-PageDown","gotopagedown":"PageDown","selectpageup":"Shift-PageUp","gotopageup":"PageUp","selectlinestart":"Shift-Home","selectlineend":"Shift-End","del":"Delete","backspace":"Ctrl-Backspace|Command-Backspace|Option-Backspace|Shift-Backspace|Backspace","outdent":"Shift-Tab","indent":"Tab"};});define('ace/commands/default_commands',function(require,exports,module){var lang=require("pilot/lang");var canon=require("pilot/canon");canon.addCommand({name:"null",exec:function(env,args,request){}});canon.addCommand({name:"selectall",exec:function(env,args,request){env.editor.selectAll();}});canon.addCommand({name:"removeline",exec:function(env,args,request){env.editor.removeLines();}});canon.addCommand({name:"gotoline",exec:function(env,args,request){var line=parseInt(prompt("Enter line number:"));if(!isNaN(line)){env.editor.gotoLine(line);}}});canon.addCommand({name:"togglecomment",exec:function(env,args,request){env.editor.toggleCommentLines();}});canon.addCommand({name:"findnext",exec:function(env,args,request){env.editor.findNext();}});canon.addCommand({name:"findprevious",exec:function(env,args,request){env.editor.findPrevious();}});canon.addCommand({name:"find",exec:function(env,args,request){var needle=prompt("Find:");env.editor.find(needle);}});canon.addCommand({name:"undo",exec:function(env,args,request){env.editor.undo();}});canon.addCommand({name:"redo",exec:function(env,args,request){env.editor.redo();}});canon.addCommand({name:"redo",exec:function(env,args,request){env.editor.redo();}});canon.addCommand({name:"overwrite",exec:function(env,args,request){env.editor.toggleOverwrite();}});canon.addCommand({name:"copylinesup",exec:function(env,args,request){env.editor.copyLinesUp();}});canon.addCommand({name:"movelinesup",exec:function(env,args,request){env.editor.moveLinesUp();}});canon.addCommand({name:"selecttostart",exec:function(env,args,request){env.editor.getSelection().selectFileStart();}});canon.addCommand({name:"gotostart",exec:function(env,args,request){env.editor.navigateFileStart();}});canon.addCommand({name:"selectup",exec:function(env,args,request){env.editor.getSelection().selectUp();}});canon.addCommand({name:"golineup",exec:function(env,args,request){env.editor.navigateUp(args.times);}});canon.addCommand({name:"copylinesdown",exec:function(env,args,request){env.editor.copyLinesDown();}});canon.addCommand({name:"movelinesdown",exec:function(env,args,request){env.editor.moveLinesDown();}});canon.addCommand({name:"selecttoend",exec:function(env,args,request){env.editor.getSelection().selectFileEnd();}});canon.addCommand({name:"gotoend",exec:function(env,args,request){env.editor.navigateFileEnd();}});canon.addCommand({name:"selectdown",exec:function(env,args,request){env.editor.getSelection().selectDown();}});canon.addCommand({name:"golinedown",exec:function(env,args,request){env.editor.navigateDown(args.times);}});canon.addCommand({name:"selectwordleft",exec:function(env,args,request){env.editor.getSelection().selectWordLeft();}});canon.addCommand({name:"gotowordleft",exec:function(env,args,request){env.editor.navigateWordLeft();}});canon.addCommand({name:"selecttolinestart",exec:function(env,args,request){env.editor.getSelection().selectLineStart();}});canon.addCommand({name:"gotolinestart",exec:function(env,args,request){env.editor.navigateLineStart();}});canon.addCommand({name:"selectleft",exec:function(env,args,request){env.editor.getSelection().selectLeft();}});canon.addCommand({name:"gotoleft",exec:function(env,args,request){env.editor.navigateLeft(args.times);}});canon.addCommand({name:"selectwordright",exec:function(env,args,request){env.editor.getSelection().selectWordRight();}});canon.addCommand({name:"gotowordright",exec:function(env,args,request){env.editor.navigateWordRight();}});canon.addCommand({name:"selecttolineend",exec:function(env,args,request){env.editor.getSelection().selectLineEnd();}});canon.addCommand({name:"gotolineend",exec:function(env,args,request){env.editor.navigateLineEnd();}});canon.addCommand({name:"selectright",exec:function(env,args,request){env.editor.getSelection().selectRight();}});canon.addCommand({name:"gotoright",exec:function(env,args,request){env.editor.navigateRight(args.times);}});canon.addCommand({name:"selectpagedown",exec:function(env,args,request){env.editor.selectPageDown();}});canon.addCommand({name:"pagedown",exec:function(env,args,request){env.editor.scrollPageDown();}});canon.addCommand({name:"gotopagedown",exec:function(env,args,request){env.editor.gotoPageDown();}});canon.addCommand({name:"selectpageup",exec:function(env,args,request){env.editor.selectPageUp();}});canon.addCommand({name:"pageup",exec:function(env,args,request){env.editor.scrollPageUp();}});canon.addCommand({name:"gotopageup",exec:function(env,args,request){env.editor.gotoPageUp();}});canon.addCommand({name:"selectlinestart",exec:function(env,args,request){env.editor.getSelection().selectLineStart();}});canon.addCommand({name:"gotolinestart",exec:function(env,args,request){env.editor.navigateLineStart();}});canon.addCommand({name:"selectlineend",exec:function(env,args,request){env.editor.getSelection().selectLineEnd();}});canon.addCommand({name:"gotolineend",exec:function(env,args,request){env.editor.navigateLineEnd();}});canon.addCommand({name:"del",exec:function(env,args,request){env.editor.removeRight();}});canon.addCommand({name:"backspace",exec:function(env,args,request){env.editor.removeLeft();}});canon.addCommand({name:"removetolinestart",exec:function(env,args,request){env.editor.removeToLineStart();}});canon.addCommand({name:"removetolineend",exec:function(env,args,request){env.editor.removeToLineEnd();}});canon.addCommand({name:"removewordleft",exec:function(env,args,request){env.editor.removeWordLeft();}});canon.addCommand({name:"removewordright",exec:function(env,args,request){env.editor.removeWordRight();}});canon.addCommand({name:"outdent",exec:function(env,args,request){env.editor.blockOutdent();}});canon.addCommand({name:"indent",exec:function(env,args,request){env.editor.indent();}});canon.addCommand({name:"inserttext",exec:function(env,args,request){env.editor.insert(lang.stringRepeat(args.text||"",args.times||1));}});canon.addCommand({name:"centerselection",exec:function(env,args,request){env.editor.centerSelection();}});canon.addCommand({name:"splitline",exec:function(env,args,request){env.editor.splitLine();}});canon.addCommand({name:"transposeletters",exec:function(env,args,request){env.editor.transposeLetters();}});});define('ace/edit_session',function(require,exports,module){var oop=require("pilot/oop");var lang=require("pilot/lang");var EventEmitter=require("pilot/event_emitter").EventEmitter;var Selection=require("ace/selection").Selection;var TextMode=require("ace/mode/text").Mode;var Range=require("ace/range").Range;var Document=require("ace/document").Document;var NO_CHANGE_DELTAS={};var EditSession=function(text,mode){this.$modified=true;this.$breakpoints=[];this.$frontMarkers={};this.$backMarkers={};this.$markerId=1;this.$wrapData=[];this.listeners=[];if(text instanceof Document){this.setDocument(text);}else{this.setDocument(new Document(text));}
this.selection=new Selection(this);if(mode)
this.setMode(mode);};(function(){oop.implement(this,EventEmitter);this.setDocument=function(doc){if(this.doc)
throw new Error("Document is already set");this.doc=doc;doc.on("change",this.onChange.bind(this));};this.getDocument=function(){return this.doc;};this.onChange=function(e){var delta=e.data;this.$modified=true;if(!this.$fromUndo&&this.$undoManager){this.$deltas.push(delta);this.$informUndoManager.schedule();}
this.$updateWrapDataOnChange(e);this._dispatchEvent("change",e);};this.setValue=function(text){this.doc.setValue(text);this.$deltas=[];};this.getValue=this.toString=function(){return this.doc.getValue();};this.getSelection=function(){return this.selection;};this.setUndoManager=function(undoManager){this.$undoManager=undoManager;this.$deltas=[];if(this.$informUndoManager){this.$informUndoManager.cancel();}
if(undoManager){var self=this;this.$informUndoManager=lang.deferredCall(function(){if(self.$deltas.length>0)
undoManager.execute({action:"aceupdate",args:[self.$deltas,self]});self.$deltas=[];});}};this.$defaultUndoManager={undo:function(){},redo:function(){}};this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager;},this.getTabString=function(){if(this.getUseSoftTabs()){return lang.stringRepeat(" ",this.getTabSize());}else{return"\t";}};this.$useSoftTabs=true;this.setUseSoftTabs=function(useSoftTabs){if(this.$useSoftTabs===useSoftTabs)return;this.$useSoftTabs=useSoftTabs;};this.getUseSoftTabs=function(){return this.$useSoftTabs;};this.$tabSize=4;this.setTabSize=function(tabSize){if(isNaN(tabSize)||this.$tabSize===tabSize)return;this.$modified=true;this.$tabSize=tabSize;this._dispatchEvent("changeTabSize");};this.getTabSize=function(){return this.$tabSize;};this.isTabStop=function(position){return this.$useSoftTabs&&(position.column%this.$tabSize==0);};this.getBreakpoints=function(){return this.$breakpoints;};this.setBreakpoints=function(rows){this.$breakpoints=[];for(var i=0;i<rows.length;i++){this.$breakpoints[rows[i]]=true;}
this._dispatchEvent("changeBreakpoint",{});};this.clearBreakpoints=function(){this.$breakpoints=[];this._dispatchEvent("changeBreakpoint",{});};this.setBreakpoint=function(row){this.$breakpoints[row]=true;this._dispatchEvent("changeBreakpoint",{});};this.clearBreakpoint=function(row){delete this.$breakpoints[row];this._dispatchEvent("changeBreakpoint",{});};this.getBreakpoints=function(){return this.$breakpoints;};this.addMarker=function(range,clazz,type,inFront){var id=this.$markerId++;var marker={range:range,type:type||"line",renderer:typeof type=="function"?type:null,clazz:clazz,inFront:!!inFront}
if(inFront){this.$frontMarkers[id]=marker;this._dispatchEvent("changeFrontMarker")}else{this.$backMarkers[id]=marker;this._dispatchEvent("changeBackMarker")}
return id;};this.removeMarker=function(markerId){var marker=this.$frontMarkers[markerId]||this.$backMarkers[markerId];if(!marker)
return;var markers=marker.inFront?this.$frontMarkers:this.$backMarkers;if(marker){delete(markers[markerId]);this._dispatchEvent(marker.inFront?"changeFrontMarker":"changeBackMarker");}};this.getMarkers=function(inFront){return inFront?this.$frontMarkers:this.$backMarkers;};this.setAnnotations=function(annotations){this.$annotations={};for(var i=0;i<annotations.length;i++){var annotation=annotations[i];var row=annotation.row;if(this.$annotations[row])
this.$annotations[row].push(annotation);else
this.$annotations[row]=[annotation];}
this._dispatchEvent("changeAnnotation",{});};this.getAnnotations=function(){return this.$annotations;};this.clearAnnotations=function(){this.$annotations={};this._dispatchEvent("changeAnnotation",{});};this.$detectNewLine=function(text){var match=text.match(/^.*?(\r?\n)/m);if(match){this.$autoNewLine=match[1];}else{this.$autoNewLine="\n";}};this.tokenRe=/^[\w\d]+/g;this.nonTokenRe=/^(?:[^\w\d|[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF])+/g;this.getWordRange=function(row,column){var line=this.getLine(row);var inToken=false;if(column>0){inToken=!!line.charAt(column-1).match(this.tokenRe);}
if(!inToken){inToken=!!line.charAt(column).match(this.tokenRe);}
var re=inToken?this.tokenRe:this.nonTokenRe;var start=column;if(start>0){do{start--;}
while(start>=0&&line.charAt(start).match(re));start++;}
var end=column;while(end<line.length&&line.charAt(end).match(re)){end++;}
return new Range(row,start,row,end);};this.setNewLineMode=function(newLineMode){this.doc.setNewLineMode(newLineMode);};this.getNewLineMode=function(){return this.doc.getNewLineMode();};this.$mode=null;this.setMode=function(mode){if(this.$mode===mode)return;if(this.$worker)
this.$worker.terminate();if(window.Worker)
this.$worker=mode.createWorker(this);else
this.$worker=null;this.$mode=mode;this._dispatchEvent("changeMode");};this.getMode=function(){if(!this.$mode){this.$mode=new TextMode();}
return this.$mode;};this.$scrollTop=0;this.setScrollTopRow=function(scrollTopRow){if(this.$scrollTop===scrollTopRow)return;this.$scrollTop=scrollTopRow;this._dispatchEvent("changeScrollTop");};this.getScrollTopRow=function(){return this.$scrollTop;};this.getWidth=function(){this.$computeWidth();return this.width;};this.getScreenWidth=function(){this.$computeWidth();return this.screenWidth;};this.$computeWidth=function(force){if(this.$modified||force){this.$modified=false;var lines=this.doc.getAllLines();var longestLine=0;var longestScreenLine=0;var tabSize=this.getTabSize();for(var i=0;i<lines.length;i++){var len=lines[i].length;longestLine=Math.max(longestLine,len);lines[i].replace(/\t/g,function(m){len+=tabSize-1;return m;});longestScreenLine=Math.max(longestScreenLine,len);}
this.width=longestLine;if(this.$useWrapMode){this.screenWidth=this.$wrapLimit;}else{this.screenWidth=longestScreenLine;}}};this.getLine=function(row){return this.doc.getLine(row);};this.getDisplayLine=function(row){var tab=new Array(this.getTabSize()+1).join(" ");return this.doc.getLine(row).replace(/\t/g,tab);};this.getLines=function(firstRow,lastRow){return this.doc.getLines(firstRow,lastRow);};this.getLength=function(){return this.doc.getLength();};this.getTextRange=function(range){return this.doc.getTextRange(range);};this.findMatchingBracket=function(position){if(position.column==0)return null;var charBeforeCursor=this.getLine(position.row).charAt(position.column-1);if(charBeforeCursor=="")return null;var match=charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/);if(!match){return null;}
if(match[1]){return this.$findClosingBracket(match[1],position);}else{return this.$findOpeningBracket(match[2],position);}};this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"};this.$findOpeningBracket=function(bracket,position){var openBracket=this.$brackets[bracket];var column=position.column-2;var row=position.row;var depth=1;var line=this.getLine(row);while(true){while(column>=0){var ch=line.charAt(column);if(ch==openBracket){depth-=1;if(depth==0){return{row:row,column:column};}}
else if(ch==bracket){depth+=1;}
column-=1;}
row-=1;if(row<0)break;var line=this.getLine(row);var column=line.length-1;}
return null;};this.$findClosingBracket=function(bracket,position){var closingBracket=this.$brackets[bracket];var column=position.column;var row=position.row;var depth=1;var line=this.getLine(row);var lineCount=this.getLength();while(true){while(column<line.length){var ch=line.charAt(column);if(ch==closingBracket){depth-=1;if(depth==0){return{row:row,column:column};}}
else if(ch==bracket){depth+=1;}
column+=1;}
row+=1;if(row>=lineCount)break;var line=this.getLine(row);var column=0;}
return null;};this.insert=function(position,text){return this.doc.insert(position,text);};this.remove=function(range){return this.doc.remove(range);};this.undoChanges=function(deltas){if(!deltas.length)
return;this.$fromUndo=true;this.doc.revertDeltas(deltas);this.$fromUndo=false;var firstDelta=deltas[0];var lastDelta=deltas[deltas.length-1];this.selection.clearSelection();if(firstDelta.action=="insertText"||firstDelta.action=="insertLines")
this.selection.moveCursorToPosition(firstDelta.range.start);if(firstDelta.action=="removeText"||firstDelta.action=="removeLines")
this.selection.setSelectionRange(Range.fromPoints(lastDelta.range.start,firstDelta.range.end));},this.redoChanges=function(deltas){if(!deltas.length)
return;this.$fromUndo=true;this.doc.applyDeltas(deltas);this.$fromUndo=false;var firstDelta=deltas[0];var lastDelta=deltas[deltas.length-1];this.selection.clearSelection();if(firstDelta.action=="insertText"||firstDelta.action=="insertLines")
this.selection.setSelectionRange(Range.fromPoints(firstDelta.range.start,lastDelta.range.end));if(firstDelta.action=="removeText"||firstDelta.action=="removeLines")
this.selection.moveCursorToPosition(lastDelta.range.start);},this.replace=function(range,text){return this.doc.replace(range,text);};this.indentRows=function(startRow,endRow,indentString){indentString=indentString.replace(/\t/g,this.getTabString());for(var row=startRow;row<=endRow;row++){this.insert({row:row,column:0},indentString);}};this.outdentRows=function(range){var rowRange=range.collapseRows();var deleteRange=new Range(0,0,0,0);var size=this.getTabSize();for(var i=rowRange.start.row;i<=rowRange.end.row;++i){var line=this.getLine(i);deleteRange.start.row=i;deleteRange.end.row=i;for(var j=0;j<size;++j)
if(line.charAt(j)!=' ')
break;if(j<size&&line.charAt(j)=='\t'){deleteRange.start.column=j;deleteRange.end.column=j+1;}else{deleteRange.start.column=0;deleteRange.end.column=j;}
this.remove(deleteRange);}};this.moveLinesUp=function(firstRow,lastRow){if(firstRow<=0)return 0;var removed=this.doc.removeLines(firstRow,lastRow);this.doc.insertLines(firstRow-1,removed);return-1;};this.moveLinesDown=function(firstRow,lastRow){if(lastRow>=this.doc.getLength()-1)return 0;var removed=this.doc.removeLines(firstRow,lastRow);this.doc.insertLines(firstRow+1,removed);return 1;};this.duplicateLines=function(firstRow,lastRow){var firstRow=this.$clipRowToDocument(firstRow);var lastRow=this.$clipRowToDocument(lastRow);var lines=this.getLines(firstRow,lastRow);this.doc.insertLines(firstRow,lines);var addedRows=lastRow-firstRow+1;return addedRows;};this.$clipRowToDocument=function(row){return Math.max(0,Math.min(row,this.doc.getLength()-1));};this.$wrapLimit=80;this.$useWrapMode=false;this.$wrapLimitRange={min:null,max:null};this.setUseWrapMode=function(useWrapMode){if(useWrapMode!=this.$useWrapMode){this.$useWrapMode=useWrapMode;this.$modified=true;if(useWrapMode){var len=this.getLength();this.$wrapMode=[];for(i=0;i<len;i++){this.$wrapData.push([]);}
this.$updateWrapData(0,len-1);}
this._dispatchEvent("changeWrapMode");}};this.getUseWrapMode=function(){return this.$useWrapMode;};this.setWrapLimitRange=function(min,max){if(this.$wrapLimitRange.min!==min||this.$wrapLimitRange.max!==max){this.$wrapLimitRange.min=min;this.$wrapLimitRange.max=max;this.$modified=true;this._dispatchEvent("changeWrapMode");}};this.adjustWrapLimit=function(desiredLimit){var wrapLimit=this.$constrainWrapLimit(desiredLimit);if(wrapLimit!=this.$wrapLimit&&wrapLimit>0){this.$wrapLimit=wrapLimit;this.$modified=true;if(this.$useWrapMode){this.$updateWrapData(0,this.getLength()-1);this._dispatchEvent("changeWrapLimit");}
return true;}
return false;};this.$constrainWrapLimit=function(wrapLimit){var min=this.$wrapLimitRange.min;if(min)
wrapLimit=Math.max(min,wrapLimit);var max=this.$wrapLimitRange.max;if(max)
wrapLimit=Math.min(max,wrapLimit);return Math.max(1,wrapLimit);};this.getWrapLimit=function(){return this.$wrapLimit;};this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max};};this.$updateWrapDataOnChange=function(e){if(!this.$useWrapMode){return;}
var len;var action=e.data.action;var firstRow=e.data.range.start.row,lastRow=e.data.range.end.row;if(action.indexOf("Lines")!=-1){if(action=="insertLines"){lastRow=firstRow+(e.data.lines.length);}else{lastRow=firstRow;}
len=e.data.lines.length;}else{len=lastRow-firstRow;}
if(len!=0){if(action.indexOf("remove")!=-1){this.$wrapData.splice(firstRow,len);lastRow=firstRow;}else{var args=[firstRow,0];for(var i=0;i<len;i++)args.push([]);this.$wrapData.splice.apply(this.$wrapData,args);}}
if(this.$wrapData.length!=this.doc.$lines.length){console.error("The length of doc.$lines and $wrapData have to be the same!");}
this.$updateWrapData(firstRow,lastRow);};this.$updateWrapData=function(firstRow,lastRow){var lines=this.doc.getAllLines();var tabSize=this.getTabSize();var wrapData=this.$wrapData;var wrapLimit=this.$wrapLimit;for(var row=firstRow;row<=lastRow;row++){wrapData[row]=this.$computeWrapSplits(lines[row],wrapLimit,tabSize);}};var CHAR=1,CHAR_EXT=2,SPACE=3,TAB=4,TAB_SPACE=5;this.$computeWrapSplits=function(textLine,wrapLimit,tabSize){textLine=textLine.trimRight();if(textLine.length==0){return[];}
var tabSize=this.getTabSize();var splits=[];var tokens=this.$getDisplayTokens(textLine);var displayLength=tokens.length;var lastSplit=0,lastDocSplit=0;function addSplit(screenPos){var displayed=tokens.slice(lastSplit,screenPos);var len=displayed.length;displayed.join("").replace(/4/g,function(m){len-=tabSize-1;}).replace(/2/g,function(m){len-=1;});lastDocSplit+=len;splits.push(lastDocSplit);lastSplit=screenPos;}
while(displayLength-lastSplit>wrapLimit){var split=lastSplit+wrapLimit;if(tokens[split]>=SPACE){while(tokens[split]>=SPACE){split++;}
addSplit(split);}else{for(split;split!=lastSplit-1;split--){if(tokens[split]>=SPACE){split++;break;}}
if(split>lastSplit){addSplit(split);}
else{addSplit(lastSplit+wrapLimit);}}}
return splits;}
this.$getDisplayTokens=function(str){var arr=[];var tabSize=this.getTabSize();for(var i=0;i<str.length;i++){var c=str.charCodeAt(i);if(c==9){arr.push(TAB);for(var n=1;n<tabSize;n++){arr.push(TAB_SPACE);}}
else if(c==32){arr.push(SPACE);}
else if(c>=0x3040&&c<=0x309F||c>=0x30A0&&c<=0x30FF||c>=0x4E00&&c<=0x9FFF||c>=0xF900&&c<=0xFAFF||c>=0x3400&&c<=0x4DBF){arr.push(CHAR,CHAR_EXT);}else{arr.push(CHAR);}}
return arr;}
this.$getStringScreenWidth=function(str){var screenColumn=0;var tabSize=this.getTabSize();for(var i=0;i<str.length;i++){var c=str.charCodeAt(i);if(c==9){screenColumn+=tabSize;}
else if(c>=0x3040&&c<=0x309F||c>=0x30A0&&c<=0x30FF||c>=0x4E00&&c<=0x9FFF||c>=0xF900&&c<=0xFAFF||c>=0x3400&&c<=0x4DBF){screenColumn+=2;}else{screenColumn+=1;}}
return screenColumn;}
this.getRowHeight=function(config,row){var rows;if(!this.$useWrapMode||!this.$wrapData[row]){rows=1;}else{rows=this.$wrapData[row].length+1;}
return rows*config.lineHeight;}
this.getScreenLastRowColumn=function(screenRow,returnDocPosition){if(!this.$useWrapMode){return this.$getStringScreenWidth(this.getLine(screenRow));}
var rowData=this.$screenToDocumentRow(screenRow);var docRow=rowData[0],row=rowData[1];var start,end;if(this.$wrapData[docRow][row]){start=(this.$wrapData[docRow][row-1]||0);end=this.$wrapData[docRow][row];returnDocPosition&&end--;}else{end=this.getLine(docRow).length;start=(this.$wrapData[docRow][row-1]||0);}
if(!returnDocPosition){return this.$getStringScreenWidth(this.getLine(docRow).substring(start,end));}else{return end;}};this.getDocumentLastRowColumn=function(docRow,docColumn){if(!this.$useWrapMode){return this.getLine(docRow).length;}
var screenRow=this.documentToScreenRow(docRow,docColumn);return this.getScreenLastRowColumn(screenRow,true);}
this.getScreenFirstRowColumn=function(screenRow){if(!this.$useWrapMode){return 0;}
var rowData=this.$screenToDocumentRow(screenRow);var docRow=rowData[0],row=rowData[1];return this.$wrapData[docRow][row-1]||0;};this.getRowSplitData=function(row){if(!this.$useWrapMode){return undefined;}else{return this.$wrapData[row];}};this.$screenToDocumentRow=function(row){if(!this.$useWrapMode){return[row,0];}
var wrapData=this.$wrapData,linesCount=this.getLength();var docRow=0;while(docRow<linesCount&&row>=wrapData[docRow].length+1){row-=wrapData[docRow].length+1;docRow++;}
return[docRow,row];};this.screenToDocumentRow=function(screenRow){return this.$screenToDocumentRow(screenRow)[0];};this.screenToDocumentColumn=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).column;};this.screenToDocumentPosition=function(row,column){var line;var docRow;var docColumn;var remaining=column;var linesCount=this.getLength();if(!this.$useWrapMode){docRow=row>=linesCount?linesCount-1:(row<0?0:row);row=0;docColumn=0;line=this.getLine(docRow);}else{var wrapData=this.$wrapData;var docRow=0;while(docRow<linesCount&&row>=wrapData[docRow].length+1){row-=wrapData[docRow].length+1;docRow++;}
if(docRow>=linesCount){docRow=linesCount-1
row=wrapData[docRow].length;}
docColumn=wrapData[docRow][row-1]||0;line=this.getLine(docRow).substring(docColumn);}
var tabSize=this.getTabSize();for(var i=0;i<line.length;i++){var c=line.charCodeAt(i);if(remaining>0){docColumn+=1;if(c==9){if(remaining>=tabSize){remaining-=tabSize;}else{remaining=0;docColumn-=1;}}
else if(c>=0x3040&&c<=0x309F||c>=0x30A0&&c<=0x30FF||c>=0x4E00&&c<=0x9FFF||c>=0xF900&&c<=0xFAFF||c>=0x3400&&c<=0x4DBF){if(remaining>=2){remaining-=2;}else{remaining=0;docColumn-=1;}}else{remaining-=1;}}else{break;}}
if(this.$useWrapMode){column=wrapData[docRow][row]
if(docColumn>=column){docColumn=column-1;}}else if(line){docColumn=Math.min(docColumn,line.length);}
return{row:docRow,column:docColumn};};this.documentToScreenColumn=function(row,docColumn){return this.documentToScreenPosition(row,docColumn).column;};this.$documentToScreenRow=function(docRow,docColumn){if(!this.$useWrapMode){return[docRow,0];}
var wrapData=this.$wrapData;var screenRow=0;if(docRow>wrapData.length-1){return[this.getScreenLength(),wrapData.length==0?0:(wrapData[wrapData.length-1].length-1)];}
for(var i=0;i<docRow;i++){screenRow+=wrapData[i].length+1;}
var screenRowOffset=0;while(docColumn>=wrapData[docRow][screenRowOffset]){screenRow++;screenRowOffset++;}
return[screenRow,screenRowOffset];}
this.documentToScreenRow=function(docRow,docColumn){return this.$documentToScreenRow(docRow,docColumn)[0];}
this.documentToScreenPosition=function(pos,column){var str;var tabSize=this.getTabSize();var row;if(column!=null){row=pos;}else{row=pos.row;column=pos.column;}
if(!this.$useWrapMode){str=this.getLine(row).substring(0,column);column=this.$getStringScreenWidth(str);return{row:row,column:column};}
var rowData=this.$documentToScreenRow(row,column);var screenRow=rowData[0];if(row>=this.getLength()){return{row:screenRow,column:0};}
var split;var wrapRowData=this.$wrapData[row];var screenColumn;var screenRowOffset=rowData[1];str=this.getLine(row).substring(wrapRowData[screenRowOffset-1]||0,column);screenColumn=this.$getStringScreenWidth(str);return{row:screenRow,column:screenColumn};};this.getScreenLength=function(){if(!this.$useWrapMode){return this.getLength();}
var screenRows=0;for(var row=0;row<this.$wrapData.length;row++){screenRows+=this.$wrapData[row].length+1;}
return screenRows;}}).call(EditSession.prototype);exports.EditSession=EditSession;});define('ace/selection',function(require,exports,module){var oop=require("pilot/oop");var lang=require("pilot/lang");var EventEmitter=require("pilot/event_emitter").EventEmitter;var Range=require("ace/range").Range;var Anchor=require("ace/anchor").Anchor;var Selection=function(session){this.session=session;this.doc=session.getDocument();this.clearSelection();this.selectionLead=new Anchor(this.doc,0,0);this.selectionAnchor=new Anchor(this.doc,0,0);var _self=this;this.selectionLead.on("change",function(e){_self._dispatchEvent("changeCursor");if(!_self.$isEmpty)
_self._dispatchEvent("changeSelection");if(e.old.row==e.value.row)
_self.$updateDesiredColumn();});this.selectionAnchor.on("change",function(){if(!_self.$isEmpty)
_self._dispatchEvent("changeSelection");});};(function(){oop.implement(this,EventEmitter);this.isEmpty=function(){return(this.$isEmpty||(this.selectionAnchor.row==this.selectionLead.row&&this.selectionAnchor.column==this.selectionLead.column));};this.isMultiLine=function(){if(this.isEmpty()){return false;}
return this.getRange().isMultiLine();};this.getCursor=function(){return this.selectionLead.getPosition();};this.setSelectionAnchor=function(row,column){this.selectionAnchor.setPosition(row,column);if(this.$isEmpty){this.$isEmpty=false;this._dispatchEvent("changeSelection");}};this.getSelectionAnchor=function(){if(this.$isEmpty)
return this.getSelectionLead()
else
return this.selectionAnchor.getPosition();};this.getSelectionLead=function(){return this.selectionLead.getPosition();};this.shiftSelection=function(columns){if(this.$isEmpty){this.moveCursorTo(this.selectionLead.row,this.selectionLead.column+columns);return;};var anchor=this.getSelectionAnchor();var lead=this.getSelectionLead();var isBackwards=this.isBackwards();if(!isBackwards||anchor.column!==0)
this.setSelectionAnchor(anchor.row,anchor.column+columns);if(isBackwards||lead.column!==0){this.$moveSelection(function(){this.moveCursorTo(lead.row,lead.column+columns);});}};this.isBackwards=function(){var anchor=this.selectionAnchor;var lead=this.selectionLead;return(anchor.row>lead.row||(anchor.row==lead.row&&anchor.column>lead.column));};this.getRange=function(){var anchor=this.selectionAnchor;var lead=this.selectionLead;if(this.isEmpty())
return Range.fromPoints(lead,lead);if(this.isBackwards()){return Range.fromPoints(lead,anchor);}
else{return Range.fromPoints(anchor,lead);}};this.clearSelection=function(){if(!this.$isEmpty){this.$isEmpty=true;this._dispatchEvent("changeSelection");}};this.selectAll=function(){var lastRow=this.doc.getLength()-1;this.setSelectionAnchor(lastRow,this.doc.getLine(lastRow).length);this.moveCursorTo(0,0);};this.setSelectionRange=function(range,reverse){if(reverse){this.setSelectionAnchor(range.end.row,range.end.column);this.selectTo(range.start.row,range.start.column);}else{this.setSelectionAnchor(range.start.row,range.start.column);this.selectTo(range.end.row,range.end.column);}
this.$updateDesiredColumn();};this.$updateDesiredColumn=function(){var cursor=this.getCursor();this.$desiredColumn=this.session.documentToScreenColumn(cursor.row,cursor.column);};this.$moveSelection=function(mover){var lead=this.selectionLead;if(this.$isEmpty)
this.setSelectionAnchor(lead.row,lead.column);mover.call(this);};this.selectTo=function(row,column){this.$moveSelection(function(){this.moveCursorTo(row,column);});};this.selectToPosition=function(pos){this.$moveSelection(function(){this.moveCursorToPosition(pos);});};this.selectUp=function(){this.$moveSelection(this.moveCursorUp);};this.selectDown=function(){this.$moveSelection(this.moveCursorDown);};this.selectRight=function(){this.$moveSelection(this.moveCursorRight);};this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft);};this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart);};this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd);};this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd);};this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart);};this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight);};this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft);};this.selectWord=function(){var cursor=this.getCursor();var range=this.session.getWordRange(cursor.row,cursor.column);this.setSelectionRange(range);};this.selectLine=function(){this.setSelectionAnchor(this.selectionLead.row,0);this.$moveSelection(function(){this.moveCursorTo(this.selectionLead.row+1,0);});};this.moveCursorUp=function(){this.moveCursorBy(-1,0);};this.moveCursorDown=function(){this.moveCursorBy(1,0);};this.moveCursorLeft=function(){var cursor=this.selectionLead.getPosition();if(cursor.column==0){if(cursor.row>0){this.moveCursorTo(cursor.row-1,this.doc.getLine(cursor.row-1).length);}}
else{var tabSize=this.session.getTabSize();if(this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column-tabSize,cursor.column).split(" ").length-1==tabSize)
this.moveCursorBy(0,-tabSize);else
this.moveCursorBy(0,-1);}};this.moveCursorRight=function(){if(this.selectionLead.column==this.doc.getLine(this.selectionLead.row).length){if(this.selectionLead.row<this.doc.getLength()-1){this.moveCursorTo(this.selectionLead.row+1,0);}}
else{var tabSize=this.session.getTabSize();var cursor=this.selectionLead;if(this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column,cursor.column+tabSize).split(" ").length-1==tabSize)
this.moveCursorBy(0,tabSize);else
this.moveCursorBy(0,1);}};this.moveCursorLineStart=function(){var row=this.selectionLead.row;var column=this.selectionLead.column;var screenRow=this.session.documentToScreenRow(row,column);var firstRowColumn=this.session.getScreenFirstRowColumn(screenRow);var beforeCursor=this.doc.getLine(row).slice(firstRowColumn,column);var leadingSpace=beforeCursor.match(/^\s*/);if(leadingSpace[0].length==0){var lastRowColumn=this.session.getDocumentLastRowColumn(row,column);leadingSpace=this.doc.getLine(row).substring(firstRowColumn,lastRowColumn).match(/^\s*/);this.moveCursorTo(row,firstRowColumn+leadingSpace[0].length);}else if(leadingSpace[0].length>=column){this.moveCursorTo(row,firstRowColumn);}else{this.moveCursorTo(row,firstRowColumn+leadingSpace[0].length);}};this.moveCursorLineEnd=function(){var lead=this.selectionLead;this.moveCursorTo(lead.row,this.session.getDocumentLastRowColumn(lead.row,lead.column));};this.moveCursorFileEnd=function(){var row=this.doc.getLength()-1;var column=this.doc.getLine(row).length;this.moveCursorTo(row,column);};this.moveCursorFileStart=function(){this.moveCursorTo(0,0);};this.moveCursorWordRight=function(){var row=this.selectionLead.row;var column=this.selectionLead.column;var line=this.doc.getLine(row);var rightOfCursor=line.substring(column);var match;this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;if(column==line.length){this.moveCursorRight();return;}
else if(match=this.session.nonTokenRe.exec(rightOfCursor)){column+=this.session.nonTokenRe.lastIndex;this.session.nonTokenRe.lastIndex=0;}
else if(match=this.session.tokenRe.exec(rightOfCursor)){column+=this.session.tokenRe.lastIndex;this.session.tokenRe.lastIndex=0;}
this.moveCursorTo(row,column);};this.moveCursorWordLeft=function(){var row=this.selectionLead.row;var column=this.selectionLead.column;var line=this.doc.getLine(row);var leftOfCursor=lang.stringReverse(line.substring(0,column));var match;this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;if(column==0){this.moveCursorLeft();return;}
else if(match=this.session.nonTokenRe.exec(leftOfCursor)){column-=this.session.nonTokenRe.lastIndex;this.session.nonTokenRe.lastIndex=0;}
else if(match=this.session.tokenRe.exec(leftOfCursor)){column-=this.session.tokenRe.lastIndex;this.session.tokenRe.lastIndex=0;}
this.moveCursorTo(row,column);};this.moveCursorBy=function(rows,chars){if(this.session.getUseWrapMode()){var screenPos=this.session.documentToScreenPosition(this.selectionLead.row,this.selectionLead.column);var screenCol=(chars==0&&this.$desiredColumn)||screenPos.column;var docPos=this.session.screenToDocumentPosition(screenPos.row+rows,screenCol);this.moveCursorTo(docPos.row,docPos.column+chars,chars==0);}else{var docColumn=(chars==0&&this.$desiredColumn)||this.selectionLead.column;this.moveCursorTo(this.selectionLead.row+rows,docColumn+chars,chars==0);}};this.moveCursorToPosition=function(position){this.moveCursorTo(position.row,position.column);};this.moveCursorTo=function(row,column,preventUpdateDesiredColumn){this.selectionLead.setPosition(row,column);if(!preventUpdateDesiredColumn)
this.$updateDesiredColumn(this.selectionLead.column);};}).call(Selection.prototype);exports.Selection=Selection;});define('ace/range',function(require,exports,module){var Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn};this.end={row:endRow,column:endColumn};};(function(){this.toString=function(){return("Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]");};this.contains=function(row,column){return this.compare(row,column)==0;};this.compare=function(row,column){if(!this.isMultiLine()){if(row===this.start.row){return column<this.start.column?-1:(column>this.end.column?1:0);};}
if(row<this.start.row)
return-1;if(row>this.end.row)
return 1;if(this.start.row===row)
return column>=this.start.column?0:-1;if(this.end.row===row)
return column<=this.end.column?0:1;return 0;};this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow){var end={row:lastRow+1,column:0};}
if(this.start.row>lastRow){var start={row:lastRow+1,column:0};}
if(this.start.row<firstRow){var start={row:firstRow,column:0};}
if(this.end.row<firstRow){var end={row:firstRow,column:0};}
return Range.fromPoints(start||this.start,end||this.end);};this.extend=function(row,column){var cmp=this.compare(row,column);if(cmp==0)
return this;else if(cmp==-1)
var start={row:row,column:column};else
var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end);};this.isEmpty=function(){return(this.start.row==this.end.row&&this.start.column==this.end.column);};this.isMultiLine=function(){return(this.start.row!==this.end.row);};this.clone=function(){return Range.fromPoints(this.start,this.end);};this.collapseRows=function(){if(this.end.column==0)
return new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0)
else
return new Range(this.start.row,0,this.end.row,0)};this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start);var screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column);};}).call(Range.prototype);Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column);};exports.Range=Range;});define('ace/anchor',function(require,exports,module){var oop=require("pilot/oop");var EventEmitter=require("pilot/event_emitter").EventEmitter;var Anchor=exports.Anchor=function(doc,row,column){this.document=doc;if(typeof column=="undefined")
this.setPosition(row.row,row.column)
else
this.setPosition(row,column);this.$onChange=this.onChange.bind(this);doc.on("change",this.$onChange);};(function(){oop.implement(this,EventEmitter);this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column);};this.getDocument=function(){return this.document;};this.onChange=function(e){var delta=e.data;var range=delta.range;if(range.start.row==range.end.row&&range.start.row!=this.row)
return;if(range.start.row>this.row)
return;if(range.start.row==this.row&&range.start.column>this.column)
return;var row=this.row;var column=this.column;if(delta.action==="insertText"){if(range.start.row===row&&range.start.column<=column){if(range.start.row===range.end.row){column+=range.end.column-range.start.column;}
else{column-=range.start.column;row+=range.end.row-range.start.row;}}
else if(range.start.row!==range.end.row&&range.start.row<row){row+=range.end.row-range.start.row;}}else if(delta.action==="insertLines"){if(range.start.row<=row){row+=range.end.row-range.start.row;}}
else if(delta.action=="removeText"){if(range.start.row==row&&range.start.column<column){if(range.end.column>=column)
column=range.start.column;else
column=Math.max(0,column-(range.end.column-range.start.column));}else if(range.start.row!==range.end.row&&range.start.row<row){if(range.end.row==row){column=Math.max(0,column-range.end.column)+range.start.column;}
row-=(range.end.row-range.start.row);}
else if(range.end.row==row){row-=range.end.row-range.start.row;column=Math.max(0,column-range.end.column)+range.start.column;}}else if(delta.action=="removeLines"){if(range.start.row<=row){if(range.end.row<=row)
row-=range.end.row-range.start.row;else{row=range.start.row;column=0;}}}
this.setPosition(row,column);};this.setPosition=function(row,column){pos=this.$clipPositionToDocument(row,column);if(this.row==pos.row&&this.column==pos.column)
return;var old={row:this.row,column:this.column};this.row=pos.row;this.column=pos.column;this._dispatchEvent("change",{old:old,value:pos});};this.detach=function(){this.document.removeEventListener("change",this.$onChange);};this.$clipPositionToDocument=function(row,column){var pos={};if(row>=this.document.getLength()){pos.row=Math.max(0,this.document.getLength()-1);pos.column=this.document.getLine(pos.row).length;}
else if(row<0){pos.row=0;pos.column=0;}
else{pos.row=row;pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column));}
if(column<0)
pos.column=0;return pos;};}).call(Anchor.prototype);});define('ace/mode/text',function(require,exports,module){var Tokenizer=require("ace/tokenizer").Tokenizer;var TextHighlightRules=require("ace/mode/text_highlight_rules").TextHighlightRules;var Mode=function(){this.$tokenizer=new Tokenizer(new TextHighlightRules().getRules());};(function(){this.getTokenizer=function(){return this.$tokenizer;};this.toggleCommentLines=function(state,doc,startRow,endRow){};this.getNextLineIndent=function(state,line,tab){return"";};this.checkOutdent=function(state,line,input){return false;};this.autoOutdent=function(state,doc,row){};this.$getIndent=function(line){var match=line.match(/^(\s+)/);if(match){return match[1];}
return"";};this.createWorker=function(session){return null;};}).call(Mode.prototype);exports.Mode=Mode;});define('ace/tokenizer',function(require,exports,module){var Tokenizer=function(rules){this.rules=rules;this.regExps={};for(var key in this.rules){var state=this.rules[key];var ruleRegExps=[];for(var i=0;i<state.length;i++){ruleRegExps.push(state[i].regex);};this.regExps[key]=new RegExp("(?:("+ruleRegExps.join(")|(")+")|(.))","g");}};(function(){this.getLineTokens=function(line,startState){var currentState=startState;var state=this.rules[currentState];var re=this.regExps[currentState];re.lastIndex=0;var match,tokens=[];var lastIndex=0;var token={type:null,value:""};while(match=re.exec(line)){var type="text";var value=match[0];for(var i=0;i<state.length;i++){if(match[i+1]){if(typeof state[i].token=="function"){type=state[i].token(match[0]);}
else{type=state[i].token;}
if(state[i].next&&state[i].next!==currentState){currentState=state[i].next;var state=this.rules[currentState];var lastIndex=re.lastIndex;var re=this.regExps[currentState];re.lastIndex=lastIndex;}
break;}};if(token.type!==type){if(token.type){tokens.push(token);}
token={type:type,value:value};}else{token.value+=value;}
if(lastIndex==line.length){break;}
lastIndex=re.lastIndex;};if(token.type){tokens.push(token);}
return{tokens:tokens,state:currentState};};}).call(Tokenizer.prototype);exports.Tokenizer=Tokenizer;});define('ace/mode/text_highlight_rules',function(require,exports,module){var TextHighlightRules=function(){this.$rules={"start":[{token:"empty_line",regex:'^$'},{token:"text",regex:".+"}]};};(function(){this.addRules=function(rules,prefix){for(var key in rules){var state=rules[key];for(var i=0;i<state.length;i++){var rule=state[i];if(rule.next){rule.next=prefix+rule.next;}else{rule.next=prefix+key;}}
this.$rules[prefix+key]=state;}};this.getRules=function(){return this.$rules;};}).call(TextHighlightRules.prototype);exports.TextHighlightRules=TextHighlightRules;});define('ace/document',function(require,exports,module){var oop=require("pilot/oop");var EventEmitter=require("pilot/event_emitter").EventEmitter;var Range=require("ace/range").Range;var Document=function(text){this.$lines=[];if(Array.isArray(text)){this.insertLines(0,text);}
else if(text.length==0){this.$lines=[""];}else{this.insert({row:0,column:0},text);}};(function(){oop.implement(this,EventEmitter);this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length));this.insert({row:0,column:0},text);};this.getValue=function(){return this.$lines.join(this.getNewLineCharacter());};if("aaa".split(/a/).length==0)
this.$split=function(text){return text.replace(/\r\n|\r/g,"\n").split("\n");}
else
this.$split=function(text){return text.split(/\r\n|\r|\n/);};this.$detectNewLine=function(text){var match=text.match(/^.*?(\r?\n)/m);if(match){this.$autoNewLine=match[1];}else{this.$autoNewLine="\n";}};this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";case"auto":return this.$autoNewLine;}},this.$autoNewLine="\n";this.$newLineMode="auto";this.setNewLineMode=function(newLineMode){if(this.$newLineMode===newLineMode)return;this.$newLineMode=newLineMode;};this.getNewLineMode=function(){return this.$newLineMode;};this.isNewLine=function(text){return(text=="\r\n"||text=="\r"||text=="\n");};this.getLine=function(row){return this.$lines[row]||"";};this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1);};this.getAllLines=function(){return this.$lines;};this.getLength=function(){return this.$lines.length;};this.getTextRange=function(range){if(range.start.row==range.end.row){return this.$lines[range.start.row].substring(range.start.column,range.end.column);}
else{var lines=[];lines.push(this.$lines[range.start.row].substring(range.start.column));lines.push.apply(lines,this.getLines(range.start.row+1,range.end.row-1));lines.push(this.$lines[range.end.row].substring(0,range.end.column));return lines.join(this.getNewLineCharacter());}};this.$clipPosition=function(position){var length=this.getLength();if(position.row>=length){position.row=Math.max(0,length-1);position.column=this.getLine(length-1).length;}
return position;}
this.insert=function(position,text){if(text.length==0)
return position;position=this.$clipPosition(position);if(this.getLength()<=1)
this.$detectNewLine(text);var newLines=this.$split(text);if(this.isNewLine(text)){var end=this.insertNewLine(position);}
else if(newLines.length==1){var end=this.insertInLine(position,text);}
else{var end=this.insertInLine(position,newLines[0]);this.insertNewLine(end);if(newLines.length>2)
this.insertLines(position.row+1,newLines.slice(1,newLines.length-1));var end=this.insertInLine({row:position.row+newLines.length-1,column:0},newLines[newLines.length-1]);}
return end;};this.insertLines=function(row,lines){if(lines.length==0)
return{row:row,column:0};var args=[row,0];args.push.apply(args,lines);this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0);var delta={action:"insertLines",range:range,lines:lines};this._dispatchEvent("change",{data:delta});return range.end;},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||"";this.$lines[position.row]=line.substring(0,position.column);this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0};var delta={action:"insertText",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};this._dispatchEvent("change",{data:delta});return end;};this.insertInLine=function(position,text){if(text.length==0)
return position;var line=this.$lines[position.row]||"";this.$lines[position.row]=line.substring(0,position.column)+text
+line.substring(position.column);var end={row:position.row,column:position.column+text.length};var delta={action:"insertText",range:Range.fromPoints(position,end),text:text};this._dispatchEvent("change",{data:delta});return end;};this.remove=function(range){range.start=this.$clipPosition(range.start);range.end=this.$clipPosition(range.end);if(range.isEmpty())
return range.start;var firstRow=range.start.row;var lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=range.start.column==0?firstRow:firstRow+1;var lastFullRow=lastRow-1;if(range.end.column>0)
this.removeInLine(lastRow,0,range.end.column);if(lastFullRow>=firstFullRow)
this.removeLines(firstFullRow,lastFullRow);if(firstFullRow!=firstRow){this.removeInLine(firstRow,range.start.column,this.$lines[firstRow].length);this.removeNewLine(range.start.row);}}
else{this.removeInLine(firstRow,range.start.column,range.end.column);}
return range.start;};this.removeInLine=function(row,startColumn,endColumn){if(startColumn==endColumn)
return;var range=new Range(row,startColumn,row,endColumn);var line=this.getLine(row);var removed=line.substring(startColumn,endColumn);var newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:"removeText",range:range,text:removed};this._dispatchEvent("change",{data:delta});return range.start;};this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0);var removed=this.$lines.splice(firstRow,lastRow-firstRow+1);var delta={action:"removeLines",range:range,nl:this.getNewLineCharacter(),lines:removed};this._dispatchEvent("change",{data:delta});return removed;};this.removeNewLine=function(row){var firstLine=this.getLine(row);var secondLine=this.getLine(row+1);var range=new Range(row,firstLine.length,row+1,0);var line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:"removeText",range:range,text:this.getNewLineCharacter()};this._dispatchEvent("change",{data:delta});};this.replace=function(range,text){if(text.length==0&&range.isEmpty())
return range.start;if(text==this.getTextRange(range))
return range.end;this.remove(range);if(text){var end=this.insert(range.start,text);}
else{end=range.start;}
return end;};this.applyDeltas=function(deltas){for(var i=0;i<deltas.length;i++){var delta=deltas[i];var range=Range.fromPoints(delta.range.start,delta.range.end);if(delta.action=="insertLines")
this.insertLines(range.start.row,delta.lines)
else if(delta.action=="insertText")
this.insert(range.start,delta.text)
else if(delta.action=="removeLines")
this.removeLines(range.start.row,range.end.row-1)
else if(delta.action=="removeText")
this.remove(range)}};this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i];var range=Range.fromPoints(delta.range.start,delta.range.end);if(delta.action=="insertLines")
this.removeLines(range.start.row,range.end.row-1)
else if(delta.action=="insertText")
this.remove(range)
else if(delta.action=="removeLines")
this.insertLines(range.start.row,delta.lines)
else if(delta.action=="removeText")
this.insert(range.start,delta.text)}};}).call(Document.prototype);exports.Document=Document;});define('ace/search',function(require,exports,module){var lang=require("pilot/lang");var oop=require("pilot/oop");var Range=require("ace/range").Range;var Search=function(){this.$options={needle:"",backwards:false,wrap:false,caseSensitive:false,wholeWord:false,scope:Search.ALL,regExp:false};};Search.ALL=1;Search.SELECTION=2;(function(){this.set=function(options){oop.mixin(this.$options,options);return this;};this.getOptions=function(){return lang.copyObject(this.$options);};this.find=function(session){if(!this.$options.needle)
return null;if(this.$options.backwards){var iterator=this.$backwardMatchIterator(session);}else{iterator=this.$forwardMatchIterator(session);}
var firstRange=null;iterator.forEach(function(range){firstRange=range;return true;});return firstRange;};this.findAll=function(session){if(!this.$options.needle)
return[];if(this.$options.backwards){var iterator=this.$backwardMatchIterator(session);}else{iterator=this.$forwardMatchIterator(session);}
var ranges=[];iterator.forEach(function(range){ranges.push(range);});return ranges;};this.replace=function(input,replacement){var re=this.$assembleRegExp();var match=re.exec(input);if(match&&match[0].length==input.length){if(this.$options.regExp){return input.replace(re,replacement);}else{return replacement;}}else{return null;}};this.$forwardMatchIterator=function(session){var re=this.$assembleRegExp();var self=this;return{forEach:function(callback){self.$forwardLineIterator(session).forEach(function(line,startIndex,row){if(startIndex){line=line.substring(startIndex);}
var matches=[];line.replace(re,function(str){var offset=arguments[arguments.length-2];matches.push({str:str,offset:startIndex+offset});return str;});for(var i=0;i<matches.length;i++){var match=matches[i];var range=self.$rangeFromMatch(row,match.offset,match.str.length);if(callback(range))
return true;}});}};};this.$backwardMatchIterator=function(session){var re=this.$assembleRegExp();var self=this;return{forEach:function(callback){self.$backwardLineIterator(session).forEach(function(line,startIndex,row){if(startIndex){line=line.substring(startIndex);}
var matches=[];line.replace(re,function(str,offset){matches.push({str:str,offset:startIndex+offset});return str;});for(var i=matches.length-1;i>=0;i--){var match=matches[i];var range=self.$rangeFromMatch(row,match.offset,match.str.length);if(callback(range))
return true;}});}};};this.$rangeFromMatch=function(row,column,length){return new Range(row,column,row,column+length);};this.$assembleRegExp=function(){if(this.$options.regExp){var needle=this.$options.needle;}else{needle=lang.escapeRegExp(this.$options.needle);}
if(this.$options.wholeWord){needle="\\b"+needle+"\\b";}
var modifier="g";if(!this.$options.caseSensitive){modifier+="i";}
var re=new RegExp(needle,modifier);return re;};this.$forwardLineIterator=function(session){var searchSelection=this.$options.scope==Search.SELECTION;var range=session.getSelection().getRange();var start=session.getSelection().getCursor();var firstRow=searchSelection?range.start.row:0;var firstColumn=searchSelection?range.start.column:0;var lastRow=searchSelection?range.end.row:session.getLength()-1;var wrap=this.$options.wrap;function getLine(row){var line=session.getLine(row);if(searchSelection&&row==range.end.row){line=line.substring(0,range.end.column);}
return line;}
return{forEach:function(callback){var row=start.row;var line=getLine(row);var startIndex=start.column;var stop=false;while(!callback(line,startIndex,row)){if(stop){return;}
row++;startIndex=0;if(row>lastRow){if(wrap){row=firstRow;startIndex=firstColumn;}else{return;}}
if(row==start.row)
stop=true;line=getLine(row);}}};};this.$backwardLineIterator=function(session){var searchSelection=this.$options.scope==Search.SELECTION;var range=session.getSelection().getRange();var start=searchSelection?range.end:range.start;var firstRow=searchSelection?range.start.row:0;var firstColumn=searchSelection?range.start.column:0;var lastRow=searchSelection?range.end.row:session.getLength()-1;var wrap=this.$options.wrap;return{forEach:function(callback){var row=start.row;var line=session.getLine(row).substring(0,start.column);var startIndex=0;var stop=false;while(!callback(line,startIndex,row)){if(stop)
return;row--;startIndex=0;if(row<firstRow){if(wrap){row=lastRow;}else{return;}}
if(row==start.row)
stop=true;line=session.getLine(row);if(searchSelection){if(row==firstRow)
startIndex=firstColumn;else if(row==lastRow)
line=line.substring(0,range.end.column);}}}};};}).call(Search.prototype);exports.Search=Search;});define('ace/background_tokenizer',function(require,exports,module){var oop=require("pilot/oop");var EventEmitter=require("pilot/event_emitter").EventEmitter;var BackgroundTokenizer=function(tokenizer,editor){this.running=false;this.lines=[];this.currentLine=0;this.tokenizer=tokenizer;var self=this;this.$worker=function(){if(!self.running){return;}
var workerStart=new Date();var startLine=self.currentLine;var doc=self.doc;var processedLines=0;var lastVisibleRow=editor.getLastVisibleRow();var len=doc.getLength();while(self.currentLine<len){self.lines[self.currentLine]=self.$tokenizeRows(self.currentLine,self.currentLine)[0];self.currentLine++;processedLines+=1;if((processedLines%5==0)&&(new Date()-workerStart)>20){self.fireUpdateEvent(startLine,self.currentLine-1);var timeout=self.currentLine<lastVisibleRow?20:100;self.running=setTimeout(self.$worker,timeout);return;}}
self.running=false;self.fireUpdateEvent(startLine,len-1);};};(function(){oop.implement(this,EventEmitter);this.setTokenizer=function(tokenizer){this.tokenizer=tokenizer;this.lines=[];this.start(0);};this.setDocument=function(doc){this.doc=doc;this.lines=[];this.stop();};this.fireUpdateEvent=function(firstRow,lastRow){var data={first:firstRow,last:lastRow};this._dispatchEvent("update",{data:data});};this.start=function(startRow){this.currentLine=Math.min(startRow||0,this.currentLine,this.doc.getLength());this.lines.splice(this.currentLine,this.lines.length);this.stop();this.running=setTimeout(this.$worker,700);};this.stop=function(){if(this.running)
clearTimeout(this.running);this.running=false;};this.getTokens=function(firstRow,lastRow){return this.$tokenizeRows(firstRow,lastRow);};this.getState=function(row){return this.$tokenizeRows(row,row)[0].state;};this.$tokenizeRows=function(firstRow,lastRow){if(!this.doc)
return[];var rows=[];var state="start";var doCache=false;if(firstRow>0&&this.lines[firstRow-1]){state=this.lines[firstRow-1].state;doCache=true;}
var lines=this.doc.getLines(firstRow,lastRow);for(var row=firstRow;row<=lastRow;row++){if(!this.lines[row]){var tokens=this.tokenizer.getLineTokens(lines[row-firstRow]||"",state);var state=tokens.state;rows.push(tokens);if(doCache){this.lines[row]=tokens;}}
else{var tokens=this.lines[row];state=tokens.state;rows.push(tokens);}}
return rows;};}).call(BackgroundTokenizer.prototype);exports.BackgroundTokenizer=BackgroundTokenizer;});define('ace/undomanager',function(require,exports,module){var UndoManager=function(){this.$undoStack=[];this.$redoStack=[];};(function(){this.execute=function(options){var deltas=options.args[0];this.$doc=options.args[1];this.$undoStack.push(deltas);};this.undo=function(){var deltas=this.$undoStack.pop();if(deltas){this.$doc.undoChanges(deltas);this.$redoStack.push(deltas);}};this.redo=function(){var deltas=this.$redoStack.pop();if(deltas){this.$doc.redoChanges(deltas);this.$undoStack.push(deltas);}};}).call(UndoManager.prototype);exports.UndoManager=UndoManager;});define('ace/theme/textmate',function(require,exports,module){var dom=require("pilot/dom");var cssText=require("text!ace/theme/tm.css");dom.importCssString(cssText);exports.cssClass="ace-tm";});define('ace/mode/matching_brace_outdent',function(require,exports,module){var Range=require("ace/range").Range;var MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){if(!/^\s+$/.test(line))
return false;return/^\s*\}/.test(input);};this.autoOutdent=function(doc,row){var line=doc.getLine(row);var match=line.match(/^(\s*\})/);if(!match)return 0;var column=match[1].length;var openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent);};this.$getIndent=function(line){var match=line.match(/^(\s+)/);if(match){return match[1];}
return"";};}).call(MatchingBraceOutdent.prototype);exports.MatchingBraceOutdent=MatchingBraceOutdent;});define('ace/virtual_renderer',function(require,exports,module){var oop=require("pilot/oop");var dom=require("pilot/dom");var event=require("pilot/event");var useragent=require("pilot/useragent");var GutterLayer=require("ace/layer/gutter").Gutter;var MarkerLayer=require("ace/layer/marker").Marker;var TextLayer=require("ace/layer/text").Text;var CursorLayer=require("ace/layer/cursor").Cursor;var ScrollBar=require("ace/scrollbar").ScrollBar;var RenderLoop=require("ace/renderloop").RenderLoop;var EventEmitter=require("pilot/event_emitter").EventEmitter;var editorCss=require("text!ace/css/editor.css");dom.importCssString(editorCss);var VirtualRenderer=function(container,theme){this.container=container;dom.addCssClass(this.container,"ace_editor");this.setTheme(theme);this.$gutter=document.createElement("div");this.$gutter.className="ace_gutter";this.container.appendChild(this.$gutter);this.scroller=document.createElement("div");this.scroller.className="ace_scroller";this.container.appendChild(this.scroller);this.content=document.createElement("div");this.content.className="ace_content";this.scroller.appendChild(this.content);this.$gutterLayer=new GutterLayer(this.$gutter);this.$markerBack=new MarkerLayer(this.content);var textLayer=this.$textLayer=new TextLayer(this.content);this.canvas=textLayer.element;this.$markerFront=new MarkerLayer(this.content);this.characterWidth=textLayer.getCharacterWidth();this.lineHeight=textLayer.getLineHeight();this.$cursorLayer=new CursorLayer(this.content);this.$cursorPadding=8;this.scrollBar=new ScrollBar(container);this.scrollBar.addEventListener("scroll",this.onScroll.bind(this));this.scrollTop=0;this.cursorPos={row:0,column:0};var _self=this;this.$textLayer.addEventListener("changeCharaterSize",function(){_self.characterWidth=textLayer.getCharacterWidth();_self.lineHeight=textLayer.getLineHeight();_self.$updatePrintMargin();_self.$loop.schedule(_self.CHANGE_FULL);});event.addListener(this.$gutter,"click",this.$onGutterClick.bind(this));event.addListener(this.$gutter,"dblclick",this.$onGutterClick.bind(this));this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0};this.$loop=new RenderLoop(this.$renderChanges.bind(this));this.$loop.schedule(this.CHANGE_FULL);this.setPadding(4);this.$updatePrintMargin();};(function(){this.showGutter=true;this.CHANGE_CURSOR=1;this.CHANGE_MARKER=2;this.CHANGE_GUTTER=4;this.CHANGE_SCROLL=8;this.CHANGE_LINES=16;this.CHANGE_TEXT=32;this.CHANGE_SIZE=64;this.CHANGE_MARKER_BACK=128;this.CHANGE_MARKER_FRONT=256;this.CHANGE_FULL=512;oop.implement(this,EventEmitter);this.setSession=function(session){this.session=session;this.$cursorLayer.setSession(session);this.$markerBack.setSession(session);this.$markerFront.setSession(session);this.$gutterLayer.setSession(session);this.$textLayer.setSession(session);this.$loop.schedule(this.CHANGE_FULL);};this.updateLines=function(firstRow,lastRow){if(lastRow===undefined)
lastRow=Infinity;if(!this.$changedLines){this.$changedLines={firstRow:firstRow,lastRow:lastRow};}
else{if(this.$changedLines.firstRow>firstRow)
this.$changedLines.firstRow=firstRow;if(this.$changedLines.lastRow<lastRow)
this.$changedLines.lastRow=lastRow;}
this.$loop.schedule(this.CHANGE_LINES);};this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT);};this.updateFull=function(){this.$loop.schedule(this.CHANGE_FULL);};this.onResize=function(force){var changes=this.CHANGE_SIZE;var height=dom.getInnerHeight(this.container);if(force||this.$size.height!=height){this.$size.height=height;this.scroller.style.height=height+"px";this.scrollBar.setHeight(height);if(this.session){this.scrollToY(this.getScrollTop());changes=changes|this.CHANGE_FULL;}}
var width=dom.getInnerWidth(this.container);if(force||this.$size.width!=width){this.$size.width=width;var gutterWidth=this.showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+"px";this.scroller.style.width=Math.max(0,width-gutterWidth-this.scrollBar.getWidth())+"px";if(this.session.getUseWrapMode()){var availableWidth=this.scroller.clientWidth-this.$padding*2;var limit=Math.floor(availableWidth/this.characterWidth)-1;if(this.session.adjustWrapLimit(limit)||force){changes=changes|this.CHANGE_FULL;}}}
this.$size.scrollerWidth=this.scroller.clientWidth;this.$size.scrollerHeight=this.scroller.clientHeight;this.$loop.schedule(changes);};this.setTokenizer=function(tokenizer){this.$tokenizer=tokenizer;this.$textLayer.setTokenizer(tokenizer);this.$loop.schedule(this.CHANGE_TEXT);};this.$onGutterClick=function(e){var pageX=event.getDocumentX(e);var pageY=event.getDocumentY(e);this._dispatchEvent("gutter"+e.type,{row:this.screenToTextCoordinates(pageX,pageY).row,htmlEvent:e});};this.setShowInvisibles=function(showInvisibles){if(this.$textLayer.setShowInvisibles(showInvisibles))
this.$loop.schedule(this.CHANGE_TEXT);};this.getShowInvisibles=function(){return this.$textLayer.showInvisibles;};this.$showPrintMargin=true;this.setShowPrintMargin=function(showPrintMargin){this.$showPrintMargin=showPrintMargin;this.$updatePrintMargin();};this.getShowPrintMargin=function(){return this.$showPrintMargin;};this.$printMarginColumn=80;this.setPrintMarginColumn=function(showPrintMargin){this.$printMarginColumn=showPrintMargin;this.$updatePrintMargin();};this.getPrintMarginColumn=function(){return this.$printMarginColumn;};this.setShowGutter=function(show){if(this.showGutter===show)
return;this.$gutter.style.display=show?"block":"none";this.showGutter=show;this.onResize(true);}
this.$updatePrintMargin=function(){var containerEl
if(!this.$showPrintMargin&&!this.$printMarginEl)
return;if(!this.$printMarginEl){containerEl=document.createElement("div");containerEl.className="ace_print_margin_layer";this.$printMarginEl=document.createElement("div")
this.$printMarginEl.className="ace_print_margin";containerEl.appendChild(this.$printMarginEl);this.content.insertBefore(containerEl,this.$textLayer.element);}
var style=this.$printMarginEl.style;style.left=((this.characterWidth*this.$printMarginColumn)+this.$padding*2)+"px";style.visibility=this.$showPrintMargin?"visible":"hidden";};this.getContainerElement=function(){return this.container;};this.getMouseEventTarget=function(){return this.content;};this.getTextAreaContainer=function(){return this.container;};this.moveTextAreaToCursor=function(textarea){if(useragent.isIE)
return;var pos=this.$cursorLayer.getPixelPosition();if(!pos)
return;var bounds=this.content.getBoundingClientRect();var offset=(this.layerConfig&&this.layerConfig.offset)||0;textarea.style.left=(bounds.left+pos.left+this.$padding)+"px";textarea.style.top=(bounds.top+pos.top-this.scrollTop+offset)+"px";};this.getFirstVisibleRow=function(){return(this.layerConfig||{}).firstRow||0;};this.getFirstFullyVisibleRow=function(){if(!this.layerConfig)
return 0;return this.layerConfig.firstRow+(this.layerConfig.offset==0?0:1);}
this.getLastFullyVisibleRow=function(){if(!this.layerConfig)
return 0;var flint=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+flint;}
this.getLastVisibleRow=function(){return(this.layerConfig||{}).lastRow||0;};this.$padding=null;this.setPadding=function(padding){this.$padding=padding;this.content.style.padding="0 "+padding+"px";this.$loop.schedule(this.CHANGE_FULL);this.$updatePrintMargin();};this.onScroll=function(e){this.scrollToY(e.data);};this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.session.getScreenLength()*this.lineHeight);this.scrollBar.setScrollTop(this.scrollTop);};this.$renderChanges=function(changes){if(!changes||!this.session||!this.$tokenizer)
return;if(!this.layerConfig||changes&this.CHANGE_FULL||changes&this.CHANGE_SIZE||changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES||changes&this.CHANGE_SCROLL)
this.$computeLayerConfig();if(changes&this.CHANGE_FULL){this.$textLayer.update(this.layerConfig);this.showGutter&&this.$gutterLayer.update(this.layerConfig);this.$markerBack.update(this.layerConfig);this.$markerFront.update(this.layerConfig);this.$cursorLayer.update(this.layerConfig);this.$updateScrollBar();this.scrollCursorIntoView();return;}
if(changes&this.CHANGE_SCROLL){if(changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES)
this.$textLayer.update(this.layerConfig);else
this.$textLayer.scrollLines(this.layerConfig);this.showGutter&&this.$gutterLayer.update(this.layerConfig);this.$markerBack.update(this.layerConfig);this.$markerFront.update(this.layerConfig);this.$cursorLayer.update(this.layerConfig);this.$updateScrollBar();return;}
if(changes&this.CHANGE_TEXT){this.$textLayer.update(this.layerConfig);this.showGutter&&this.$gutterLayer.update(this.layerConfig);}
else if(changes&this.CHANGE_LINES){this.$updateLines();this.$updateScrollBar();this.showGutter&&this.$gutterLayer.update(this.layerConfig);}else if(changes&this.CHANGE_GUTTER){this.showGutter&&this.$gutterLayer.update(this.layerConfig);}
if(changes&this.CHANGE_CURSOR)
this.$cursorLayer.update(this.layerConfig);if(changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)){this.$markerFront.update(this.layerConfig);}
if(changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)){this.$markerBack.update(this.layerConfig);}
if(changes&this.CHANGE_SIZE)
this.$updateScrollBar();};this.$computeLayerConfig=function(){var session=this.session;var offset=this.scrollTop%this.lineHeight;var minHeight=this.$size.scrollerHeight+this.lineHeight;var longestLine=this.$getLongestLine();var widthChanged=!this.layerConfig?true:(this.layerConfig.width!=longestLine);var lineCount=Math.ceil(minHeight/this.lineHeight)-1;var firstRow=Math.max(0,Math.round((this.scrollTop-offset)/this.lineHeight));var lastRow=firstRow+lineCount;var firstRowScreen,firstRowHeight;var lineHeight={lineHeight:this.lineHeight};firstRow=session.screenToDocumentRow(firstRow);firstRowScreen=session.documentToScreenRow(firstRow);firstRowHeight=session.getRowHeight(lineHeight,firstRow);lastRow=Math.min(session.screenToDocumentRow(lastRow),session.getLength()-1);minHeight=this.$size.scrollerHeight+session.getRowHeight(lineHeight,lastRow)+
firstRowHeight;offset=this.scrollTop-firstRowScreen*this.lineHeight;var layerConfig=this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:this.lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,offset:offset,height:this.$size.scrollerHeight};this.$gutterLayer.element.style.marginTop=(-offset)+"px";this.content.style.marginTop=(-offset)+"px";this.content.style.width=longestLine+"px";this.content.style.height=minHeight+"px";};this.$updateLines=function(){var firstRow=this.$changedLines.firstRow;var lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;if(layerConfig.width!=this.$getLongestLine())
return this.$textLayer.update(layerConfig);if(firstRow>layerConfig.lastRow+1){return;}
if(lastRow<layerConfig.firstRow){return;}
if(lastRow===Infinity){this.showGutter&&this.$gutterLayer.update(layerConfig);this.$textLayer.update(layerConfig);return;}
this.$textLayer.updateLines(layerConfig,firstRow,lastRow);};this.$getLongestLine=function(){var charCount=this.session.getScreenWidth()+1;if(this.$textLayer.showInvisibles)
charCount+=1;return Math.max(this.$size.scrollerWidth-this.$padding*2,Math.round(charCount*this.characterWidth));};this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(true));this.$loop.schedule(this.CHANGE_MARKER_FRONT);};this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers());this.$loop.schedule(this.CHANGE_MARKER_BACK);};this.addGutterDecoration=function(row,className){this.$gutterLayer.addGutterDecoration(row,className);this.$loop.schedule(this.CHANGE_GUTTER);}
this.removeGutterDecoration=function(row,className){this.$gutterLayer.removeGutterDecoration(row,className);this.$loop.schedule(this.CHANGE_GUTTER);}
this.setBreakpoints=function(rows){this.$gutterLayer.setBreakpoints(rows);this.$loop.schedule(this.CHANGE_GUTTER);};this.setAnnotations=function(annotations){this.$gutterLayer.setAnnotations(annotations);this.$loop.schedule(this.CHANGE_GUTTER);};this.updateCursor=function(position,overwrite){this.$cursorLayer.setCursor(position,overwrite);this.$loop.schedule(this.CHANGE_CURSOR);};this.hideCursor=function(){this.$cursorLayer.hideCursor();};this.showCursor=function(){this.$cursorLayer.showCursor();};this.scrollCursorIntoView=function(){var pos=this.$cursorLayer.getPixelPosition();var left=pos.left+this.$padding;var top=pos.top;if(this.getScrollTop()>top){this.scrollToY(top);}
if(this.getScrollTop()+this.$size.scrollerHeight<top
+this.lineHeight){this.scrollToY(top+this.lineHeight-this.$size.scrollerHeight);}
if(this.scroller.scrollLeft>left){this.scrollToX(left);}
if(this.scroller.scrollLeft+this.$size.scrollerWidth<left+this.characterWidth){if(left+this.characterWidth>this.scroller.scrollWidth)
this.$renderChanges(this.CHANGE_SIZE);this.scrollToX(Math.round(left+this.characterWidth-this.$size.scrollerWidth));}},this.getScrollTop=function(){return this.scrollTop;};this.getScrollLeft=function(){return this.scroller.scrollLeft;};this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight;};this.scrollToRow=function(row){this.scrollToY(row*this.lineHeight);};this.scrollToLine=function(line,center){var lineHeight={lineHeight:this.lineHeight};var offset=0;for(var l=1;l<line;l++){offset+=this.session.getRowHeight(lineHeight,l-1);}
if(center){offset-=this.$size.scrollerHeight/2;}
this.scrollToY(offset);};this.scrollToY=function(scrollTop){var maxHeight=this.session.getScreenLength()*this.lineHeight-this.$size.scrollerHeight;var scrollTop=Math.max(0,Math.min(maxHeight,scrollTop));if(this.scrollTop!==scrollTop){this.scrollTop=scrollTop;this.$loop.schedule(this.CHANGE_SCROLL);}};this.scrollToX=function(scrollLeft){if(scrollLeft<=this.$padding)
scrollLeft=0;this.scroller.scrollLeft=scrollLeft;};this.scrollBy=function(deltaX,deltaY){deltaY&&this.scrollToY(this.scrollTop+deltaY);deltaX&&this.scrollToX(this.scroller.scrollLeft+deltaX);};this.screenToTextCoordinates=function(pageX,pageY){var canvasPos=this.scroller.getBoundingClientRect();var col=Math.round((pageX+this.scroller.scrollLeft-canvasPos.left-this.$padding-dom.getPageScrollLeft())/this.characterWidth);var row=Math.floor((pageY+this.scrollTop-canvasPos.top-dom.getPageScrollTop())/this.lineHeight);return this.session.screenToDocumentPosition(row,Math.max(col,0));};this.textToScreenCoordinates=function(row,column){var canvasPos=this.scroller.getBoundingClientRect();var pos=this.session.documentToScreenPosition(row,column);var x=this.$padding+Math.round(pos.column*this.characterWidth);var y=pos.row*this.lineHeight;return{pageX:canvasPos.left+x-this.getScrollLeft(),pageY:canvasPos.top+y-this.getScrollTop()}};this.visualizeFocus=function(){dom.addCssClass(this.container,"ace_focus");};this.visualizeBlur=function(){dom.removeCssClass(this.container,"ace_focus");};this.showComposition=function(position){if(!this.$composition){this.$composition=document.createElement("div");this.$composition.className="ace_composition";this.content.appendChild(this.$composition);}
this.$composition.innerHTML="&nbsp;";var pos=this.$cursorLayer.getPixelPosition();var style=this.$composition.style;style.top=pos.top+"px";style.left=(pos.left+this.$padding)+"px";style.height=this.lineHeight+"px";this.hideCursor();};this.setCompositionText=function(text){dom.setInnerText(this.$composition,text);};this.hideComposition=function(){this.showCursor();if(!this.$composition)
return;var style=this.$composition.style;style.top="-10000px";style.left="-10000px";};this.setTheme=function(theme){var _self=this;if(!theme||typeof theme=="string"){theme=theme||"ace/theme/textmate";require([theme],function(theme){afterLoad(theme);});}else{afterLoad(theme);}
var _self=this;function afterLoad(theme){if(_self.$theme)
dom.removeCssClass(_self.container,_self.$theme);_self.$theme=theme?theme.cssClass:null;if(_self.$theme)
dom.addCssClass(_self.container,_self.$theme);if(_self.$size){_self.$size.width=0;_self.onResize();}}};this.setStyle=function setStyle(style){dom.addCssClass(this.container,style)};this.unsetStyle=function unsetStyle(style){dom.removeCssClass(this.container,style)};}).call(VirtualRenderer.prototype);exports.VirtualRenderer=VirtualRenderer;});define('ace/layer/gutter',function(require,exports,module){var dom=require("pilot/dom");var Gutter=function(parentEl){this.element=document.createElement("div");this.element.className="ace_layer ace_gutter-layer";parentEl.appendChild(this.element);this.$breakpoints=[];this.$annotations=[];this.$decorations=[];};(function(){this.setSession=function(session){this.session=session;};this.addGutterDecoration=function(row,className){if(!this.$decorations[row])
this.$decorations[row]="";this.$decorations[row]+=" ace_"+className;}
this.removeGutterDecoration=function(row,className){this.$decorations[row]=this.$decorations[row].replace(" ace_"+className,"");};this.setBreakpoints=function(rows){this.$breakpoints=rows.concat();};this.setAnnotations=function(annotations){this.$annotations=[];for(var row in annotations)if(annotations.hasOwnProperty(row)){var rowAnnotations=annotations[row];if(!rowAnnotations)
continue;var rowInfo=this.$annotations[row]={text:[]};for(var i=0;i<rowAnnotations.length;i++){var annotation=rowAnnotations[i];rowInfo.text.push(annotation.text.replace(/"/g,"&quot;").replace(/'/g,"&rsquo;").replace(/</,"&lt;"));var type=annotation.type;if(type=="error")
rowInfo.className="ace_error";else if(type=="warning"&&rowInfo.className!="ace_error")
rowInfo.className="ace_warning";else if(type=="info"&&(!rowInfo.className))
rowInfo.className="ace_info";}}};this.update=function(config){this.$config=config;var html=[];for(var i=config.firstRow;i<=config.lastRow;i++){var annotation=this.$annotations[i]||{className:"",text:[]};html.push("<div class='ace_gutter-cell",this.$decorations[i]||"",this.$breakpoints[i]?" ace_breakpoint ":" ",annotation.className,"' title='",annotation.text.join("\n"),"' style='height:",this.session.getRowHeight(config,i),"px;'>",(i+1),"</div>");html.push("</div>");}
this.element=dom.setInnerHtml(this.element,html.join(""));this.element.style.height=config.minHeight+"px";};}).call(Gutter.prototype);exports.Gutter=Gutter;});define('ace/layer/marker',function(require,exports,module){var Range=require("ace/range").Range;var dom=require("pilot/dom");var Marker=function(parentEl){this.element=document.createElement("div");this.element.className="ace_layer ace_marker-layer";parentEl.appendChild(this.element);};(function(){this.setSession=function(session){this.session=session;};this.setMarkers=function(markers){this.markers=markers;};this.update=function(config){var config=config||this.config;if(!config)
return;this.config=config;var html=[];for(var key in this.markers){var marker=this.markers[key];var range=marker.range.clipRows(config.firstRow,config.lastRow);if(range.isEmpty())continue;range=range.toScreenRange(this.session);if(marker.renderer){var top=this.$getTop(range.start.row,config);var left=Math.round(range.start.column*config.characterWidth);marker.renderer(html,range,left,top,config);}
else if(range.isMultiLine()){if(marker.type=="text"){this.drawTextMarker(html,range,marker.clazz,config);}else{this.drawMultiLineMarker(html,range,marker.clazz,config);}}
else{this.drawSingleLineMarker(html,range,marker.clazz,config);}}
this.element=dom.setInnerHtml(this.element,html.join(""));};this.$getTop=function(row,layerConfig){return(row-layerConfig.firstRowScreen)*layerConfig.lineHeight;};this.drawTextMarker=function(stringBuilder,range,clazz,layerConfig){var row=range.start.row;var lineRange=new Range(row,range.start.column,row,this.session.getScreenLastRowColumn(row));this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,1);var row=range.end.row;var lineRange=new Range(row,0,row,range.end.column);this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig);for(var row=range.start.row+1;row<range.end.row;row++){lineRange.start.row=row;lineRange.end.row=row;lineRange.end.column=this.session.getScreenLastRowColumn(row);this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,1);}};this.drawMultiLineMarker=function(stringBuilder,range,clazz,layerConfig){var height=layerConfig.lineHeight;var width=Math.round(layerConfig.width-(range.start.column*layerConfig.characterWidth));var top=this.$getTop(range.start.row,layerConfig);var left=Math.round(range.start.column*layerConfig.characterWidth);stringBuilder.push("<div class='",clazz,"' style='","height:",height,"px;","width:",width,"px;","top:",top,"px;","left:",left,"px;'></div>");var top=this.$getTop(range.end.row,layerConfig);var width=Math.round(range.end.column*layerConfig.characterWidth);stringBuilder.push("<div class='",clazz,"' style='","height:",height,"px;","top:",top,"px;","width:",width,"px;'></div>");var height=(range.end.row-range.start.row-1)*layerConfig.lineHeight;if(height<0)
return;var top=this.$getTop(range.start.row+1,layerConfig);stringBuilder.push("<div class='",clazz,"' style='","height:",height,"px;","width:",layerConfig.width,"px;","top:",top,"px;'></div>");};this.drawSingleLineMarker=function(stringBuilder,range,clazz,layerConfig,extraLength){var height=layerConfig.lineHeight;var width=Math.round((range.end.column+(extraLength||0)-range.start.column)*layerConfig.characterWidth);var top=this.$getTop(range.start.row,layerConfig);var left=Math.round(range.start.column*layerConfig.characterWidth);stringBuilder.push("<div class='",clazz,"' style='","height:",height,"px;","width:",width,"px;","top:",top,"px;","left:",left,"px;'></div>");};}).call(Marker.prototype);exports.Marker=Marker;});define('ace/layer/text',function(require,exports,module){var oop=require("pilot/oop");var dom=require("pilot/dom");var lang=require("pilot/lang");var EventEmitter=require("pilot/event_emitter").EventEmitter;var Text=function(parentEl){this.element=document.createElement("div");this.element.className="ace_layer ace_text-layer";parentEl.appendChild(this.element);this.$characterSize=this.$measureSizes();this.$pollSizeChanges();};(function(){oop.implement(this,EventEmitter);this.EOF_CHAR="&para;";this.EOL_CHAR="&not;";this.TAB_CHAR="&rarr;";this.SPACE_CHAR="&middot;";this.setTokenizer=function(tokenizer){this.tokenizer=tokenizer;};this.getLineHeight=function(){return this.$characterSize.height||1;};this.getCharacterWidth=function(){return this.$characterSize.width||1;};this.$pollSizeChanges=function(){var self=this;setInterval(function(){var size=self.$measureSizes();if(self.$characterSize.width!==size.width||self.$characterSize.height!==size.height){self.$characterSize=size;self._dispatchEvent("changeCharaterSize",{data:size});}},500);};this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=function(){var n=1000;if(!this.$measureNode){var measureNode=this.$measureNode=document.createElement("div");var style=measureNode.style;style.width=style.height="auto";style.left=style.top=(-n*40)+"px";style.visibility="hidden";style.position="absolute";style.overflow="visible";style.whiteSpace="nowrap";measureNode.innerHTML=lang.stringRepeat("Xy",n);document.body.insertBefore(measureNode,document.body.firstChild);}
var style=this.$measureNode.style;for(var prop in this.$fontStyles){var value=dom.computedStyle(this.element,prop);style[prop]=value;}
var size={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(n*2)};return size;};this.setSession=function(session){this.session=session;};this.showInvisibles=false;this.setShowInvisibles=function(showInvisibles){if(this.showInvisibles==showInvisibles)
return false;this.showInvisibles=showInvisibles;return true;};this.$computeTabString=function(){var tabSize=this.session.getTabSize();if(this.showInvisibles){var halfTab=(tabSize)/2;this.$tabString="<span class='ace_invisible'>"
+new Array(Math.floor(halfTab)).join("&nbsp;")
+this.TAB_CHAR
+new Array(Math.ceil(halfTab)+1).join("&nbsp;")
+"</span>";}else{this.$tabString=new Array(tabSize+1).join("&nbsp;");}};this.updateLines=function(config,firstRow,lastRow){this.$computeTabString();if(this.config.lastRow!=config.lastRow||this.config.firstRow!=config.firstRow){this.scrollLines(config);}
this.config=config;var first=Math.max(firstRow,config.firstRow);var last=Math.min(lastRow,config.lastRow);var lineElements=this.element.childNodes;var tokens=this.tokenizer.getTokens(first,last);for(var i=first;i<=last;i++){var lineElement=lineElements[i-config.firstRow];if(!lineElement)
continue;var html=[];this.$renderLine(html,i,tokens[i-first].tokens);lineElement=dom.setInnerHtml(lineElement,html.join(""));lineElement.style.height=this.session.getRowHeight(config,i)+"px";}};this.scrollLines=function(config){this.$computeTabString();var oldConfig=this.config;this.config=config;if(!oldConfig||oldConfig.lastRow<config.firstRow)
return this.update(config);if(config.lastRow<oldConfig.firstRow)
return this.update(config);var el=this.element;if(oldConfig.firstRow<config.firstRow)
for(var row=oldConfig.firstRow;row<config.firstRow;row++)
el.removeChild(el.firstChild);if(oldConfig.lastRow>config.lastRow)
for(var row=config.lastRow+1;row<=oldConfig.lastRow;row++)
el.removeChild(el.lastChild);if(config.firstRow<oldConfig.firstRow){var fragment=this.$renderLinesFragment(config,config.firstRow,oldConfig.firstRow-1);if(el.firstChild)
el.insertBefore(fragment,el.firstChild);else
el.appendChild(fragment);}
if(config.lastRow>oldConfig.lastRow){var fragment=this.$renderLinesFragment(config,oldConfig.lastRow+1,config.lastRow);el.appendChild(fragment);}};this.$renderLinesFragment=function(config,firstRow,lastRow){var fragment=document.createDocumentFragment();var tokens=this.tokenizer.getTokens(firstRow,lastRow);for(var row=firstRow;row<=lastRow;row++){var lineEl=document.createElement("div");lineEl.className="ace_line";var style=lineEl.style;style.height=this.session.getRowHeight(config,row)+"px";style.width=config.width+"px";var html=[];if(tokens.length>row-firstRow)
this.$renderLine(html,row,tokens[row-firstRow].tokens);lineEl.innerHTML=html.join("");fragment.appendChild(lineEl);}
return fragment;};this.update=function(config){this.$computeTabString();this.config=config;var html=[];var tokens=this.tokenizer.getTokens(config.firstRow,config.lastRow)
var fragment=this.$renderLinesFragment(config,config.firstRow,config.lastRow);this.element.innerHTML="";this.element.appendChild(fragment);};this.$textToken={"text":true,"rparen":true,"lparen":true};this.$renderLine=function(stringBuilder,row,tokens){if(this.showInvisibles){var self=this;var spaceRe=/( +)|([\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000])/g;var spaceReplace=function(space){if(space.charCodeAt(0)==32)
return new Array(space.length+1).join("&nbsp;");else{var space=new Array(space.length+1).join(self.SPACE_CHAR);return"<span class='ace_invisible'>"+space+"</span>";}};}
else{var spaceRe=/[\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]/g;var spaceReplace="&nbsp;";}
var _self=this;var characterWidth=this.config.characterWidth;function addToken(token,value){var output=value.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(spaceRe,spaceReplace).replace(/\t/g,_self.$tabString).replace(/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF]/g,function(c){return"<span class='ace_cjk' style='width:"+(characterWidth*2)+"px'>"+c+"</span>"});if(!_self.$textToken[token.type]){var classes="ace_"+token.type.replace(/\./g," ace_");stringBuilder.push("<span class='",classes,"'>",output,"</span>");}
else{stringBuilder.push(output);}}
var splits=this.session.getRowSplitData(row);var chars=0,split=0,splitChars;if(!splits||splits.length==0){splitChars=Number.MAX_VALUE;}else{splitChars=splits[0];}
stringBuilder.push("<div style='height:",this.config.lineHeight,"px","'>");for(var i=0;i<tokens.length;i++){var token=tokens[i];var value=token.value;if(chars+value.length<splitChars){addToken(token,value);chars+=value.length;}else{while(chars+value.length>=splitChars){addToken(token,value.substring(0,splitChars-chars));value=value.substring(splitChars-chars);chars=splitChars;stringBuilder.push("</div>","<div style='height:",this.config.lineHeight,"px","'>");split++;splitChars=splits[split]||Number.MAX_VALUE;}
if(value.length!=0){chars+=value.length;addToken(token,value);}}};if(this.showInvisibles){if(row!==this.session.getLength()-1){stringBuilder.push("<span class='ace_invisible'>"+this.EOL_CHAR+"</span>");}else{stringBuilder.push("<span class='ace_invisible'>"+this.EOF_CHAR+"</span>");}}
stringBuilder.push("</div>");};}).call(Text.prototype);exports.Text=Text;});define('ace/layer/cursor',function(require,exports,module){var dom=require("pilot/dom");var Cursor=function(parentEl){this.element=document.createElement("div");this.element.className="ace_layer ace_cursor-layer";parentEl.appendChild(this.element);this.cursor=document.createElement("div");this.cursor.className="ace_cursor";this.isVisible=false;};(function(){this.setSession=function(session){this.session=session;};this.setCursor=function(position,overwrite){this.position=this.session.documentToScreenPosition(position);if(overwrite){dom.addCssClass(this.cursor,"ace_overwrite");}else{dom.removeCssClass(this.cursor,"ace_overwrite");}};this.hideCursor=function(){this.isVisible=false;if(this.cursor.parentNode){this.cursor.parentNode.removeChild(this.cursor);}
clearInterval(this.blinkId);};this.showCursor=function(){this.isVisible=true;this.element.appendChild(this.cursor);var cursor=this.cursor;cursor.style.visibility="visible";this.restartTimer();};this.restartTimer=function(){clearInterval(this.blinkId);if(!this.isVisible){return;}
var cursor=this.cursor;this.blinkId=setInterval(function(){cursor.style.visibility="hidden";setTimeout(function(){cursor.style.visibility="visible";},400);},1000);};this.getPixelPosition=function(onScreen){if(!this.config||!this.position){return{left:0,top:0};}
var pos=this.position;var cursorLeft=Math.round(pos.column*this.config.characterWidth);var cursorTop=(pos.row-(onScreen?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:cursorLeft,top:cursorTop};};this.update=function(config){if(!this.position)
return;this.config=config;this.pixelPos=this.getPixelPosition(true);this.cursor.style.left=this.pixelPos.left+"px";this.cursor.style.top=this.pixelPos.top+"px";this.cursor.style.width=config.characterWidth+"px";this.cursor.style.height=config.lineHeight+"px";if(this.isVisible){this.element.appendChild(this.cursor);}
this.restartTimer();};}).call(Cursor.prototype);exports.Cursor=Cursor;});define('ace/scrollbar',function(require,exports,module){var oop=require("pilot/oop");var dom=require("pilot/dom");var event=require("pilot/event");var EventEmitter=require("pilot/event_emitter").EventEmitter;var ScrollBar=function(parent){this.element=document.createElement("div");this.element.className="ace_sb";this.inner=document.createElement("div");this.element.appendChild(this.inner);parent.appendChild(this.element);this.width=dom.scrollbarWidth();this.element.style.width=this.width;event.addListener(this.element,"scroll",this.onScroll.bind(this));};(function(){oop.implement(this,EventEmitter);this.onScroll=function(){this._dispatchEvent("scroll",{data:this.element.scrollTop});};this.getWidth=function(){return this.width;};this.setHeight=function(height){this.element.style.height=Math.max(0,height-this.width)+"px";};this.setInnerHeight=function(height){this.inner.style.height=height+"px";};this.setScrollTop=function(scrollTop){this.element.scrollTop=scrollTop;};}).call(ScrollBar.prototype);exports.ScrollBar=ScrollBar;});define('ace/renderloop',function(require,exports,module){var event=require("pilot/event");var RenderLoop=function(onRender){this.onRender=onRender;this.pending=false;this.changes=0;};(function(){this.schedule=function(change){this.changes=this.changes|change;if(!this.pending){this.pending=true;var _self=this;this.setTimeoutZero(function(){_self.pending=false;var changes=_self.changes;_self.changes=0;_self.onRender(changes);})}};if(window.postMessage){this.messageName="zero-timeout-message";this.setTimeoutZero=function(callback){if(!this.attached){var _self=this;event.addListener(window,"message",function(e){if(_self.callback&&e.data==_self.messageName){event.stopPropagation(e);_self.callback();}});this.attached=true;}
this.callback=callback;window.postMessage(this.messageName,"*");}}else{this.setTimeoutZero=function(callback){setTimeout(callback,0);}}}).call(RenderLoop.prototype);exports.RenderLoop=RenderLoop;});define("text!ace/css/editor.css",".ace_editor {"+"    position: absolute;"+"    overflow: hidden;"+""+"    font-family: \"Menlo\", \"Monaco\", \"Courier New\", monospace;"+"    font-size: 12px;  "+"}"+""+".ace_scroller {"+"    position: absolute;"+"    overflow-x: scroll;"+"    overflow-y: hidden;     "+"}"+""+".ace_content {"+"    position: absolute;"+"    box-sizing: border-box;"+"    -moz-box-sizing: border-box;"+"    -webkit-box-sizing: border-box;"+"}"+""+".ace_composition {"+"    position: absolute;"+"    background: #555;"+"    color: #DDD;"+"    z-index: 4;"+"}"+""+".ace_gutter {"+"    position: absolute;"+"    overflow-x: hidden;"+"    overflow-y: hidden;"+"    height: 100%;"+"}"+""+".ace_gutter-cell.ace_error {"+"    background-image: url(\"data:image/gif,GIF89a%10%00%10%00%D5%00%00%F5or%F5%87%88%F5nr%F4ns%EBmq%F5z%7F%DDJT%DEKS%DFOW%F1Yc%F2ah%CE(7%CE)8%D18E%DD%40M%F2KZ%EBU%60%F4%60m%DCir%C8%16(%C8%19*%CE%255%F1%3FR%F1%3FS%E6%AB%B5%CA%5DI%CEn%5E%F7%A2%9A%C9G%3E%E0a%5B%F7%89%85%F5yy%F6%82%80%ED%82%80%FF%BF%BF%E3%C4%C4%FF%FF%FF%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%00%25%00%2C%00%00%00%00%10%00%10%00%00%06p%C0%92pH%2C%1A%8F%C8%D2H%93%E1d4%23%E4%88%D3%09mB%1DN%B48%F5%90%40%60%92G%5B%94%20%3E%22%D2%87%24%FA%20%24%C5%06A%00%20%B1%07%02B%A38%89X.v%17%82%11%13q%10%0Fi%24%0F%8B%10%7BD%12%0Ei%09%92%09%0EpD%18%15%24%0A%9Ci%05%0C%18F%18%0B%07%04%01%04%06%A0H%18%12%0D%14%0D%12%A1I%B3%B4%B5IA%00%3B\");"+"    background-repeat: no-repeat;"+"    background-position: 4px center;"+"}"+""+".ace_gutter-cell.ace_warning {"+"    background-image: url(\"data:image/gif,GIF89a%10%00%10%00%D5%00%00%FF%DBr%FF%DE%81%FF%E2%8D%FF%E2%8F%FF%E4%96%FF%E3%97%FF%E5%9D%FF%E6%9E%FF%EE%C1%FF%C8Z%FF%CDk%FF%D0s%FF%D4%81%FF%D5%82%FF%D5%83%FF%DC%97%FF%DE%9D%FF%E7%B8%FF%CCl%7BQ%13%80U%15%82W%16%81U%16%89%5B%18%87%5B%18%8C%5E%1A%94d%1D%C5%83-%C9%87%2F%C6%84.%C6%85.%CD%8B2%C9%871%CB%8A3%CD%8B5%DC%98%3F%DF%9BB%E0%9CC%E1%A5U%CB%871%CF%8B5%D1%8D6%DB%97%40%DF%9AB%DD%99B%E3%B0p%E7%CC%AE%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%00%2F%00%2C%00%00%00%00%10%00%10%00%00%06a%C0%97pH%2C%1A%8FH%A1%ABTr%25%87%2B%04%82%F4%7C%B9X%91%08%CB%99%1C!%26%13%84*iJ9(%15G%CA%84%14%01%1A%97%0C%03%80%3A%9A%3E%81%84%3E%11%08%B1%8B%20%02%12%0F%18%1A%0F%0A%03'F%1C%04%0B%10%16%18%10%0B%05%1CF%1D-%06%07%9A%9A-%1EG%1B%A0%A1%A0U%A4%A5%A6BA%00%3B\");"+"    background-repeat: no-repeat;"+"    background-position: 4px center;"+"}"+""+".ace_editor .ace_sb {"+"    position: absolute;"+"    overflow-x: hidden;"+"    overflow-y: scroll;"+"    right: 0;"+"}"+""+".ace_editor .ace_sb div {"+"    position: absolute;"+"    width: 1px;"+"    left: 0;"+"}"+""+".ace_editor .ace_print_margin_layer {"+"    z-index: 0;"+"    position: absolute;"+"    overflow: hidden;"+"    margin: 0;"+"    left: 0;"+"    height: 100%;"+"    width: 100%;"+"}"+""+".ace_editor .ace_print_margin {"+"    position: absolute;"+"    height: 100%;"+"}"+""+".ace_editor textarea {"+"    position: fixed;"+"    z-index: -1;"+"    width: 10px;"+"    height: 30px;"+"    opacity: 0;"+"    background: transparent;"+"    appearance: none;"+"    border: none;"+"    resize: none;"+"    outline: none;"+"    overflow: hidden;"+"}"+""+".ace_layer {"+"    z-index: 1;"+"    position: absolute;"+"    overflow: hidden;  "+"    white-space: nowrap;"+"    height: 100%;"+"    width: 100%;"+"}"+""+".ace_text-layer {"+"    font-family: Monaco, \"Courier New\", monospace;"+"    color: black;"+"}"+""+".ace_cjk {"+"    display: inline-block;"+"    text-align: center;"+"}"+""+".ace_cursor-layer {"+"    z-index: 4;"+"    cursor: text;"+"    pointer-events: none;"+"}"+""+".ace_cursor {"+"    z-index: 4;"+"    position: absolute;"+"}"+""+".ace_line {"+"    white-space: nowrap;"+"}"+""+".ace_marker-layer {"+"}"+""+".ace_marker-layer .ace_step {"+"    position: absolute;"+"    z-index: 3;"+"}"+""+".ace_marker-layer .ace_selection {"+"    position: absolute;"+"    z-index: 4;"+"}"+""+".ace_marker-layer .ace_bracket {"+"    position: absolute;"+"    z-index: 5;"+"}"+""+".ace_marker-layer .ace_active_line {"+"    position: absolute;"+"    z-index: 2;"+"}"+"");define("text!ace/theme/eclipse.css",".ace-eclipse .ace_editor {"+"  border: 2px solid rgb(159, 159, 159);"+"}"+""+".ace-eclipse .ace_editor.ace_focus {"+"  border: 2px solid #327fbd;"+"}"+""+".ace-eclipse .ace_gutter {"+"  width: 40px;"+"  background: rgb(227, 227, 227);"+"  border-right: 1px solid rgb(159, 159, 159);  "+"  color: rgb(136, 136, 136);"+"}"+""+".ace-eclipse .ace_gutter-layer {"+"  right: 10px;"+"  text-align: right;"+"}"+""+".ace-eclipse .ace_text-layer {"+"  cursor: text;"+"}"+""+".ace-eclipse .ace_cursor {"+"  border-left: 1px solid black;"+"}"+""+".ace-eclipse .ace_line .ace_keyword, .ace-eclipse .ace_line .ace_variable {"+"  color: rgb(127, 0, 85);"+"}"+""+".ace-eclipse .ace_line .ace_constant.ace_buildin {"+"  color: rgb(88, 72, 246);"+"}"+""+".ace-eclipse .ace_line .ace_constant.ace_library {"+"  color: rgb(6, 150, 14);"+"}"+""+".ace-eclipse .ace_line .ace_function {"+"  color: rgb(60, 76, 114);"+"}"+""+".ace-eclipse .ace_line .ace_string {"+"  color: rgb(42, 0, 255);"+"}"+""+".ace-eclipse .ace_line .ace_comment {"+"  color: rgb(63, 127, 95);"+"}"+""+".ace-eclipse .ace_line .ace_comment.ace_doc {"+"  color: rgb(63, 95, 191);"+"}"+""+".ace-eclipse .ace_line .ace_comment.ace_doc.ace_tag {"+"  color: rgb(127, 159, 191);"+"}"+""+".ace-eclipse .ace_line .ace_constant.ace_numeric {"+"}"+""+".ace-eclipse .ace_line .ace_tag {"+" color: rgb(63, 127, 127);"+"}"+""+".ace-eclipse .ace_line .ace_xml_pe {"+"  color: rgb(104, 104, 91);"+"}"+""+".ace-eclipse .ace_marker-layer .ace_selection {"+"  background: rgb(181, 213, 255);"+"}"+""+".ace-eclipse .ace_marker-layer .ace_bracket {"+"  margin: -1px 0 0 -1px;"+"  border: 1px solid rgb(192, 192, 192);"+"}"+""+".ace-eclipse .ace_marker-layer .ace_active_line {"+"  background: rgb(232, 242, 254);"+"}");define("text!ace/theme/tm.css",".ace-tm .ace_editor {"+"  border: 2px solid rgb(159, 159, 159);"+"}"+""+".ace-tm .ace_editor.ace_focus {"+"  border: 2px solid #327fbd;"+"}"+""+".ace-tm .ace_gutter {"+"  width: 50px;"+"  background: #e8e8e8;"+"  color: #333;"+"  overflow : hidden;"+"}"+""+".ace-tm .ace_gutter-layer {"+"  width: 100%;"+"  text-align: right;"+"}"+""+".ace-tm .ace_gutter-layer .ace_gutter-cell {"+"  padding-right: 6px;"+"}"+""+".ace-tm .ace_print_margin {"+"  width: 1px;"+"  background: #e8e8e8;"+"}"+""+".ace-tm .ace_text-layer {"+"  cursor: text;"+"}"+""+".ace-tm .ace_cursor {"+"  border-left: 2px solid black;"+"}"+""+".ace-tm .ace_cursor.ace_overwrite {"+"  border-left: 0px;"+"  border-bottom: 1px solid black;"+"}"+"        "+".ace-tm .ace_line .ace_invisible {"+"  color: rgb(191, 191, 191);"+"}"+""+".ace-tm .ace_line .ace_keyword {"+"  color: blue;"+"}"+""+".ace-tm .ace_line .ace_constant.ace_buildin {"+"  color: rgb(88, 72, 246);"+"}"+""+".ace-tm .ace_line .ace_constant.ace_language {"+"  color: rgb(88, 92, 246);"+"}"+""+".ace-tm .ace_line .ace_constant.ace_library {"+"  color: rgb(6, 150, 14);"+"}"+""+".ace-tm .ace_line .ace_invalid {"+"  background-color: rgb(153, 0, 0);"+"  color: white;"+"}"+""+".ace-tm .ace_line .ace_support.ace_function {"+"  color: rgb(60, 76, 114);"+"}"+""+".ace-tm .ace_line .ace_support.ace_constant {"+"  color: rgb(6, 150, 14);"+"}"+""+".ace-tm .ace_line .ace_support.ace_type,"+".ace-tm .ace_line .ace_support.ace_class {"+"  color: rgb(109, 121, 222);"+"}"+""+".ace-tm .ace_line .ace_keyword.ace_operator {"+"  color: rgb(104, 118, 135);"+"}"+""+".ace-tm .ace_line .ace_string {"+"  color: rgb(3, 106, 7);"+"}"+""+".ace-tm .ace_line .ace_comment {"+"  color: rgb(76, 136, 107);"+"}"+""+".ace-tm .ace_line .ace_comment.ace_doc {"+"  color: rgb(0, 102, 255);"+"}"+""+".ace-tm .ace_line .ace_comment.ace_doc.ace_tag {"+"  color: rgb(128, 159, 191);"+"}"+""+".ace-tm .ace_line .ace_constant.ace_numeric {"+"  color: rgb(0, 0, 205);"+"}"+""+".ace-tm .ace_line .ace_variable {"+"  color: rgb(49, 132, 149);"+"}"+""+".ace-tm .ace_line .ace_xml_pe {"+"  color: rgb(104, 104, 91);"+"}"+""+".ace-tm .ace_marker-layer .ace_selection {"+"  background: rgb(181, 213, 255);"+"}"+""+".ace-tm .ace_marker-layer .ace_step {"+"  background: rgb(252, 255, 0);"+"}"+""+".ace-tm .ace_marker-layer .ace_stack {"+"  background: rgb(164, 229, 101);"+"}"+""+".ace-tm .ace_marker-layer .ace_bracket {"+"  margin: -1px 0 0 -1px;"+"  border: 1px solid rgb(192, 192, 192);"+"}"+""+".ace-tm .ace_marker-layer .ace_active_line {"+"  background: rgb(232, 242, 254);"+"}"+""+".ace-tm .ace_string.ace_regex {"+"  color: rgb(255, 0, 0)   "+"}");define("text!icons/epl.html","<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"+"<!-- saved from url=(0049)http://www.eclipse.org/org/documents/epl-v10.html -->"+"<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">"+""+"<title>Eclipse Public License - Version 1.0</title>"+"<style type=\"text/css\">"+"  body {"+"    size: 8.5in 11.0in;"+"    margin: 0.25in 0.5in 0.25in 0.5in;"+"    tab-interval: 0.5in;"+"    }"+"  p {   "+"    margin-left: auto;"+"    margin-top:  0.5em;"+"    margin-bottom: 0.5em;"+"    }"+"  p.list {"+"   margin-left: 0.5in;"+"    margin-top:  0.05em;"+"    margin-bottom: 0.05em;"+"    }"+"  </style>"+""+"<script src=\"chrome-extension://jgghnecdoiloelcogfmgjgcacadpaejf/inject.js\"></script></head>"+""+"<body lang=\"EN-US\">"+""+"<h2>Eclipse Public License - v 1.0</h2>"+""+"<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE"+"PUBLIC LICENSE (\"AGREEMENT\"). ANY USE, REPRODUCTION OR"+"DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS"+"AGREEMENT.</p>"+""+"<p><b>1. DEFINITIONS</b></p>"+""+"<p>\"Contribution\" means:</p>"+""+"<p class=\"list\">a) in the case of the initial Contributor, the initial"+"code and documentation distributed under this Agreement, and</p>"+"<p class=\"list\">b) in the case of each subsequent Contributor:</p>"+"<p class=\"list\">i) changes to the Program, and</p>"+"<p class=\"list\">ii) additions to the Program;</p>"+"<p class=\"list\">where such changes and/or additions to the Program"+"originate from and are distributed by that particular Contributor. A"+"Contribution 'originates' from a Contributor if it was added to the"+"Program by such Contributor itself or anyone acting on such"+"Contributor's behalf. Contributions do not include additions to the"+"Program which: (i) are separate modules of software distributed in"+"conjunction with the Program under their own license agreement, and (ii)"+"are not derivative works of the Program.</p>"+""+"<p>\"Contributor\" means any person or entity that distributes"+"the Program.</p>"+""+"<p>\"Licensed Patents\" mean patent claims licensable by a"+"Contributor which are necessarily infringed by the use or sale of its"+"Contribution alone or when combined with the Program.</p>"+""+"<p>\"Program\" means the Contributions distributed in accordance"+"with this Agreement.</p>"+""+"<p>\"Recipient\" means anyone who receives the Program under"+"this Agreement, including all Contributors.</p>"+""+"<p><b>2. GRANT OF RIGHTS</b></p>"+""+"<p class=\"list\">a) Subject to the terms of this Agreement, each"+"Contributor hereby grants Recipient a non-exclusive, worldwide,"+"royalty-free copyright license to reproduce, prepare derivative works"+"of, publicly display, publicly perform, distribute and sublicense the"+"Contribution of such Contributor, if any, and such derivative works, in"+"source code and object code form.</p>"+""+"<p class=\"list\">b) Subject to the terms of this Agreement, each"+"Contributor hereby grants Recipient a non-exclusive, worldwide,"+"royalty-free patent license under Licensed Patents to make, use, sell,"+"offer to sell, import and otherwise transfer the Contribution of such"+"Contributor, if any, in source code and object code form. This patent"+"license shall apply to the combination of the Contribution and the"+"Program if, at the time the Contribution is added by the Contributor,"+"such addition of the Contribution causes such combination to be covered"+"by the Licensed Patents. The patent license shall not apply to any other"+"combinations which include the Contribution. No hardware per se is"+"licensed hereunder.</p>"+""+"<p class=\"list\">c) Recipient understands that although each Contributor"+"grants the licenses to its Contributions set forth herein, no assurances"+"are provided by any Contributor that the Program does not infringe the"+"patent or other intellectual property rights of any other entity. Each"+"Contributor disclaims any liability to Recipient for claims brought by"+"any other entity based on infringement of intellectual property rights"+"or otherwise. As a condition to exercising the rights and licenses"+"granted hereunder, each Recipient hereby assumes sole responsibility to"+"secure any other intellectual property rights needed, if any. For"+"example, if a third party patent license is required to allow Recipient"+"to distribute the Program, it is Recipient's responsibility to acquire"+"that license before distributing the Program.</p>"+""+"<p class=\"list\">d) Each Contributor represents that to its knowledge it"+"has sufficient copyright rights in its Contribution, if any, to grant"+"the copyright license set forth in this Agreement.</p>"+""+"<p><b>3. REQUIREMENTS</b></p>"+""+"<p>A Contributor may choose to distribute the Program in object code"+"form under its own license agreement, provided that:</p>"+""+"<p class=\"list\">a) it complies with the terms and conditions of this"+"Agreement; and</p>"+""+"<p class=\"list\">b) its license agreement:</p>"+""+"<p class=\"list\">i) effectively disclaims on behalf of all Contributors"+"all warranties and conditions, express and implied, including warranties"+"or conditions of title and non-infringement, and implied warranties or"+"conditions of merchantability and fitness for a particular purpose;</p>"+""+"<p class=\"list\">ii) effectively excludes on behalf of all Contributors"+"all liability for damages, including direct, indirect, special,"+"incidental and consequential damages, such as lost profits;</p>"+""+"<p class=\"list\">iii) states that any provisions which differ from this"+"Agreement are offered by that Contributor alone and not by any other"+"party; and</p>"+""+"<p class=\"list\">iv) states that source code for the Program is available"+"from such Contributor, and informs licensees how to obtain it in a"+"reasonable manner on or through a medium customarily used for software"+"exchange.</p>"+""+"<p>When the Program is made available in source code form:</p>"+""+"<p class=\"list\">a) it must be made available under this Agreement; and</p>"+""+"<p class=\"list\">b) a copy of this Agreement must be included with each"+"copy of the Program.</p>"+""+"<p>Contributors may not remove or alter any copyright notices contained"+"within the Program.</p>"+""+"<p>Each Contributor must identify itself as the originator of its"+"Contribution, if any, in a manner that reasonably allows subsequent"+"Recipients to identify the originator of the Contribution.</p>"+""+"<p><b>4. COMMERCIAL DISTRIBUTION</b></p>"+""+"<p>Commercial distributors of software may accept certain"+"responsibilities with respect to end users, business partners and the"+"like. While this license is intended to facilitate the commercial use of"+"the Program, the Contributor who includes the Program in a commercial"+"product offering should do so in a manner which does not create"+"potential liability for other Contributors. Therefore, if a Contributor"+"includes the Program in a commercial product offering, such Contributor"+"(\"Commercial Contributor\") hereby agrees to defend and"+"indemnify every other Contributor (\"Indemnified Contributor\")"+"against any losses, damages and costs (collectively \"Losses\")"+"arising from claims, lawsuits and other legal actions brought by a third"+"party against the Indemnified Contributor to the extent caused by the"+"acts or omissions of such Commercial Contributor in connection with its"+"distribution of the Program in a commercial product offering. The"+"obligations in this section do not apply to any claims or Losses"+"relating to any actual or alleged intellectual property infringement. In"+"order to qualify, an Indemnified Contributor must: a) promptly notify"+"the Commercial Contributor in writing of such claim, and b) allow the"+"Commercial Contributor to control, and cooperate with the Commercial"+"Contributor in, the defense and any related settlement negotiations. The"+"Indemnified Contributor may participate in any such claim at its own"+"expense.</p>"+""+"<p>For example, a Contributor might include the Program in a commercial"+"product offering, Product X. That Contributor is then a Commercial"+"Contributor. If that Commercial Contributor then makes performance"+"claims, or offers warranties related to Product X, those performance"+"claims and warranties are such Commercial Contributor's responsibility"+"alone. Under this section, the Commercial Contributor would have to"+"defend claims against the other Contributors related to those"+"performance claims and warranties, and if a court requires any other"+"Contributor to pay any damages as a result, the Commercial Contributor"+"must pay those damages.</p>"+""+"<p><b>5. NO WARRANTY</b></p>"+""+"<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS"+"PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS"+"OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,"+"ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY"+"OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely"+"responsible for determining the appropriateness of using and"+"distributing the Program and assumes all risks associated with its"+"exercise of rights under this Agreement , including but not limited to"+"the risks and costs of program errors, compliance with applicable laws,"+"damage to or loss of data, programs or equipment, and unavailability or"+"interruption of operations.</p>"+""+"<p><b>6. DISCLAIMER OF LIABILITY</b></p>"+""+"<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT"+"NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,"+"INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING"+"WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF"+"LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING"+"NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR"+"DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED"+"HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>"+""+"<p><b>7. GENERAL</b></p>"+""+"<p>If any provision of this Agreement is invalid or unenforceable under"+"applicable law, it shall not affect the validity or enforceability of"+"the remainder of the terms of this Agreement, and without further action"+"by the parties hereto, such provision shall be reformed to the minimum"+"extent necessary to make such provision valid and enforceable.</p>"+""+"<p>If Recipient institutes patent litigation against any entity"+"(including a cross-claim or counterclaim in a lawsuit) alleging that the"+"Program itself (excluding combinations of the Program with other"+"software or hardware) infringes such Recipient's patent(s), then such"+"Recipient's rights granted under Section 2(b) shall terminate as of the"+"date such litigation is filed.</p>"+""+"<p>All Recipient's rights under this Agreement shall terminate if it"+"fails to comply with any of the material terms or conditions of this"+"Agreement and does not cure such failure in a reasonable period of time"+"after becoming aware of such noncompliance. If all Recipient's rights"+"under this Agreement terminate, Recipient agrees to cease use and"+"distribution of the Program as soon as reasonably practicable. However,"+"Recipient's obligations under this Agreement and any licenses granted by"+"Recipient relating to the Program shall continue and survive.</p>"+""+"<p>Everyone is permitted to copy and distribute copies of this"+"Agreement, but in order to avoid inconsistency the Agreement is"+"copyrighted and may only be modified in the following manner. The"+"Agreement Steward reserves the right to publish new versions (including"+"revisions) of this Agreement from time to time. No one other than the"+"Agreement Steward has the right to modify this Agreement. The Eclipse"+"Foundation is the initial Agreement Steward. The Eclipse Foundation may"+"assign the responsibility to serve as the Agreement Steward to a"+"suitable separate entity. Each new version of the Agreement will be"+"given a distinguishing version number. The Program (including"+"Contributions) may always be distributed subject to the version of the"+"Agreement under which it was received. In addition, after a new version"+"of the Agreement is published, Contributor may elect to distribute the"+"Program (including its Contributions) under the new version. Except as"+"expressly stated in Sections 2(a) and 2(b) above, Recipient receives no"+"rights or licenses to the intellectual property of any Contributor under"+"this Agreement, whether expressly, by implication, estoppel or"+"otherwise. All rights in the Program not expressly granted under this"+"Agreement are reserved.</p>"+""+"<p>This Agreement is governed by the laws of the State of New York and"+"the intellectual property laws of the United States of America. No party"+"to this Agreement will bring a legal action under this Agreement more"+"than one year after the cause of action arose. Each party waives its"+"rights to a jury trial in any resulting litigation.</p>"+""+""+""+""+"</body></html>");define("text!styles.css","html {"+"    height: 100%;"+"    overflow: hidden;"+"}"+""+"body {"+"    overflow: hidden;"+"    margin: 0;"+"    padding: 0;"+"    height: 100%;"+"    width: 100%;"+"    font-family: Arial, Helvetica, sans-serif, Tahoma, Verdana, sans-serif;"+"    font-size: 12px;"+"    background: rgb(14, 98, 165);"+"    color: white;"+"}"+""+"#editor {"+"    position: absolute;"+"    top: 60px;"+"    left: 0px;"+"    background: white;"+"}"+""+".cool {"+"    position: absolute;"+"    background: orange;"+"    opacity: 0.8;"+"}"+""+".cool_header {"+"    position: absolute;"+"    background: orange;"+"    color: black;"+"    font-size: 8px;"+"    padding: 1px;"+"    margin-top: -8px;"+"    opacity: 0.8;"+"}"+""+"#controls {"+"    width: 100%;"+"}"+""+"#cockpitInput {"+"    position: absolute;"+"    width: 100%;"+"    bottom: 0;"+""+"    border: none; outline: none;"+"    font-family: consolas, courier, monospace;"+"    font-size: 120%;"+"}"+""+"#cockpitOutput {"+"    padding: 10px;"+"    margin: 0 15px;"+"    border: 1px solid #AAA;"+"    -moz-border-radius-topleft: 10px;"+"    -moz-border-radius-topright: 10px;"+"    border-top-left-radius: 4px; border-top-right-radius: 4px;"+"    background: #DDD; color: #000;"+"}");define("text!icons/error_obj.gif","data:image/gif;base64,R0lGODlhEAAQANUAAPVvcvWHiPVucvRuc+ttcfV6f91KVN5LU99PV/FZY/JhaM4oN84pONE4Rd1ATfJLWutVYPRgbdxpcsgWKMgZKs4lNfE/UvE/U+artcpdSc5uXveimslHPuBhW/eJhfV5efaCgO2CgP+/v+PExP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACUALAAAAAAQABAAAAZwwJJwSCwaj8jSSJPhZDQj5IjTCW1CHU60OPWQQGCSR1uUID4i0ock+iAkxQZBACCxBwJCoziJWC52F4IRE3EQD2kkD4sQe0QSDmkJkgkOcEQYFSQKnGkFDBhGGAsHBAEEBqBIGBINFA0SoUmztLVJQQA7");define("text!icons/warning_obj.gif","data:image/gif;base64,R0lGODlhEAAQANUAAP/bcv/egf/ijf/ij//klv/jl//lnf/mnv/uwf/IWv/Na//Qc//Ugf/Vgv/Vg//cl//enf/nuP/MbHtRE4BVFYJXFoFVFolbGIdbGIxeGpRkHcWDLcmHL8aELsaFLs2LMsmHMcuKM82LNdyYP9+bQuCcQ+GlVcuHMc+LNdGNNtuXQN+aQt2ZQuOwcOfMrv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAQABAAAAZhwJdwSCwaj0ihq1RyJYcrBIL0fLlYkQjLmRwhJhOEKmlKOSgVR8qEFAEalwwDgDqaPoGEPhEIsYsgAhIPGBoPCgMnRhwECxAWGBALBRxGHS0GB5qaLR5HG6ChoFWkpaZCQQA7");define("text!logo.png","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAYAAABoKfh/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAANBxJREFUeNrsfXd0XcW97jczu519qrrVZcuyXHHBDRsXMM2AjSkmEMAQqoEQyg1JIAkBQgiBJHAvKZQklEAwgdCLTTWmGeNecLdlWVavp+42M++PfSRLxgbue/e9++5azFp7aemcXWbPfPOr328OkVLCXPQ4jtgkQAj+040QwHE8uEnHGFyRc9bJY8vnTRxaUFuaa+ZpClOlBCGA5FKKnrSd2tUUb1xf17Hh/c2Nb7S2Jd9mQVVqCgP5Tz6c+F0e0DwuwIX/qZASkYCGyvwghDh4JqUErXELXSkHjJJDhwCOyzGkIARDUyCl7HtHTwD72pOQ8gid6dfsjANBCAyVIagpcDyOtO0hGtSRcTm4yxEJabBdgbTjQUq/v7qm+IMFIKSp0FTq38/jiCcdCCGgKRSuKxA0NXhSQkoJISVcVwBSglICBsCTEtGgjkTGgaEweELCdjkkgJywAV2lAAjiaQfJJy8BACj4v9SEBFxXVP/b2eP//tNzJhyTE9K/7pJhAGbXtyWvv/el9e/8cdkX1whGd7L/HYR+2/5LG/0mEoFRApldUd/0yKSdnCtOGP7Sby855pickH74lXao0JJARUEIf7ji2BNuPWvcUtvmFd9O0X9/U77JxIUDKnrSLsQ3mWkAXEjEQtplP14wdnTvPQgBPI/jxY+2Y93eNvDsvSiA6SNKcPoxw9D/3F8sPHrIa2v23bWlMb5IU9k3exsJREwVCcvFN+zqt+2/AiQCEgGVgQUJWuMZUErxdQrA8TgmVuXPqy6KHrQTpMQ1f3oHjy7dugWa+glALAASUpr41/oT/rg4WXXNvAmQ0geKpjKcOr58/sa6DSVQWePXqzeJsKEiGtDQk3HxrZL6fwiS3tWdY2qwXI6E5X69McllpDRmDumbKQJs3deBJz+q+0zLi52kUBLvf3radmsefX/Hp1fMHZunKqxPCgwriUZByCgCNH4dQAyFoTCs9xmo37b/hzZJr3VPAAyKGAgb6gCv4AhXhIM6C/YCDADq25OwBf6lEMT7xEX2YJTutD1sVxXaZwcBQK5v7BZ+le3DpYSmMJTEAlAZ/VbN/HdJkl6ggPhAAYCE5YIeWaIwknUAJSQICDx/8jp77Zr+1yqUoCPldC/+wztgREJI/7Pd7RlomhInXyVBVIaSqA8Q8S1C/ntB0mdU4iBQkrb3Fbrf/0YICcqILx2khMsFCABKAIX5BqnCCOIO/8nD7+1eBcczoLIieHwfMfU209De6S8e+sMgL6Qjx9RAiA+Yb73l/0Z18yWJAqAgrIOSLweuDhcvOdLnXEg/YCQAgGwCyB0Ljx9R+O4vz5hZXJJTL7n8k+vxjMsFeg8h/CARFxIhXfX78K0A+f8LJAPQ8g0m5+tUgJASXEpYScs8Y3LVK49dM/PS40eXVL9884l/K44aNzpJC47Hs4eAlwVJ77Xf4uP/Z5D0YuRrQCCPGKQ7qBuclG3Onzp4yT9unDPP0FVkXI5JQwvxyq1zf1+cH7oBttdPgX3b/keBBN9MmBz+wVmQ2CnbnD+lask/bpgzz8jmMwAg43JMrC7Ay7eecn9xfrAPKN+2/2Eg6U2mSSm/eSJOAoxSEEJgp+zA/ClVz/QCxMoCpLdlXI5J1YV4+Sen3F+cF7pefguU/5mSpLe5jgfBxdd6GL25IMt2Q/N8gMw3dAUSfryjv2QyVAbLE5g0tBAv3XLyAyUFoR/wQ4D0P7VJmc1OOx4ytoeM48FxeV+G+auuE9kMrxzwuQR3/ayyy8VhJX7f8xwPruPBO+S8/vf+T7nAEkDSciH7GYwEvmfChe8TSynhpB3kxAKIhAykkvZXqhnb5ZhQlfvnf9180hkKo5AADrT2IJ6yUVtZAI8LMEKw6osGjK8tgeUJTB5aiGdunPPvp9z1Rosr8SyBRCLjwvEIpCRZAEo4rt/Pr8sep2wPrsf7LB1KCVJfIam4yD6Py35UAQmFZdP48pujw7JcqJTklOSHxuaEA8NiISMn43Crsztd355Ib0zZ1m4hJCj98hqmFFGF0RIA0uViP4CUcDwIQx00ckjBjLLCSGVdS8+Ofa3xV+HnZSFcDgB6SWF4fEl+eExO2MjpSTnJjp701j1NPZ9LjyeJykApChVG8wDCCcE+APbXgkQCkEKOunT2sF8PLgznuNx3VikhxPWE+9vXNv6tuSfztEL90JntcmI5ngZPZo5gZboAEDW1wLb6jqK/vbkBV50+Hh3daZzzy5dw3YKJGD24EB4HNIXi/pfXYlDOdjyweA4ytos/v7oWnpDFTKXQGD3uurmjfpwT1IJcSAEAjBLak3JSv3ll470Zj7/XCxSCg1Fc4gfqFl5z0ohrAprKeDZ8rDLKVu1q3fu393bcbAbU5v6d9rhANKDOu/G0Md8Pm5rJhT8OhqawldtbOp5YsfNaVWENX6eahctBVFYxd2r19fOPqV5Ynhcq11UFMhsncIVEe4+V+GhLw/LnP9rxQGdn6j1oB5ObjuXlz5s5/J0Ljh8xzPMEHnp93cqX3t166qjaQVdef/bEn1QPihQXhE08/+E23Llk1URG6RqRcciomsIrLjph9DWjqvLHGgrrQ7TtCmze17H9r0s33LNzb9ua6y485vWpI0oKuCvEHU9//AqA8/tAcqQ1Z9keJg/Ju/eeCyaferjvW3vSR9/9wrr3mKE1wXJzLj519DMjynKKfvDHD+7yuPiyOMm4uWdMH/rw3PHlx1758Ie/X/yXjyJJ253y9sYGfL6re3coZFT3Pz0QDmX+/cUNbdGgUbGruRtLPt33mBkxH0pnHHX+1MF/uPXMcSMP168NdR1VSz7eM9Y0VVsCoIyifx65O2GNam3rmX3P92YMuO7yOcOn721O5Lz/RdN8M6CK3oXiZtwRv7xg0lPXnTom0v/8RMrCn15dCwA/IwQNRzLoCQDL8VCQGzz7ZxdOe3BMRW5xR3cSqUQaNqN9UUpPCDAhw2dMqpg3c1TJab//15rfrd3edAt0hVNCICFLqBRjmefCcz2oRE6rrS56/neLjz8tk0xjz/52uPlheJ4HSBnilhM996TRf7/ilNHzUokMOju6oasKVEZBiT8u46uitb/53vTH7nx6ZQPhssxOZWBqDJDi6AHq5kiiUrp83OVzhp8EAGmXDwCTrjBcPHtY9I/LvjgvnvEeXXzm+JcfvPzYGYwSdKfsp7bta2P9b5vMuJgzsfLOv10zKxwyVJiacufVf/n4th8+taaO6spKhM1uSDw2UDUhgVDwzDtf3nwDoaTFjAZ/IqXkjJD5V544YmSvcTsAWCrDVScOr31+5d7ThMQL9DArQDPU3/3mpY3HlecHZ147bwIyWWZWQGX405XHnjb9Zy//oMfmDxgqRTrlqGdMqXr02rmjI7YnwKWEQgkEFzjnntexrr7nJjMU2HToIPZ/rONy5AaNC+67ctYTQcrZll0NyA0b2LG/E6t3NqM7YcM0VIwdXICxQwtR15iArqn0loXjbr7rnyK6ob7zKlNXAELSibSdau6MB7sSaTBI/XunjDkt3tUNx/VAuIfueArxlAXYXvDsE0cvufzEEads39UAVWXQGMUnW/djZ1MPhJAYUhjBpBEliIUNXHx8TVnC5tjd0IrCWBCW4yUG2iSHGUjHExhcHF181tQhisclCACFUTDq2xSOxzGsJIZ5Eyq+8/T722NnTqqYwSiB5QncevYE44v6DthZI9PlvvE556iysKmrAIDTJ5SX3JMbuDZuuRM0lSGTcS47DE51CNFgho1Fffrc8TBtWOG1s0aVwPZ8w0tVGAh8ioLtCRw7ohjTawuvWbG99YWArhxO9Ce0sHnhzU9+9tHw8ryKOeMqkXE5LJdjeGkM91045a7L/vTBB5ZQ1pXnB3/+4GXTpwMEQvq2ksYobvzLcry1qeVxMxq8/6sMEj+HKcdev2D8w5qXYbubu1CUE8JT72zBsg2NWwRVnieM7pNCFLy9qemMqdV50y47eRS6ehKwLQuLT6q98tYla1elbO+vAPFcjwvbsdHa0YORZVHkByRS6TRe+ng3Vu1s9dKu6LEl3TF8WPHlF8wYesrGrXUwdAXxhIM/v7EJe9oyb4GxFQDh4E1TX/587/zr5h1FCmMmEskUeiyOmKlCCOkO8G4I+fLBHa/0opnV5+aGdHApoDKK1q4kNu5uhsZon46/6qQRk5jKIuf/dmnTO2v3wlAouJQYXZXfl6PhUqKyKIKcsAFKgI54Gqfe/iLW13e+ph/UubSfBOmV2RKQatYE8G0kV0y8Yk7tHJVRABIao6hr7MTuAx3Qsp8pjOLyOcNnS49PFRiYNe5bHZTst5m26NIH37XrmrsRUBko8QF96ZzhwfOOrX6QJzLnPHDJtJ+U54fgcg5KCHSF4tE31+OBN7euNCLmtYcC5JAENyzHI8eMKP316JJQcO+BdhTEAnhzzT68uaH5KT0Ummaaxu0BXX3MDOj3mpHQrJV7u+9+dsVO5EVMdMYzCGvA3LGltzsuj4DClj55Fa7HoVIBBQIPvbEZL69pfKTDUyZbTBtpCXLDd46tmdvd1QkhOBihePC1Tek9Pd55ZiR4shnQf2UGtHvMSHBBUwbzH3xtc9xyPDDIPrUiAT5wYg7Jv3tcIiesL/recbU5WYMQCiV4ZeVu3PGPT7P/+1nXacMH0ZmjS4Z2ZnD+wvuWdb+7di80RiGEBKMEjFIolEJmPY7OeBpn/epVrNjZea9pGrf1n7lebLBDrPpejojjCgwtjSw+a8oQJgEo1Jdsj7y5EX96bUNfvySABZMHs9qy2NWOe2SXOaArH9R3uzcsuv8tpC0HPvHa/+7XF0ye/utLpz131tTBau+76ArFx5v348bHVzapQfNCCqS/QWBx4injK05OJNKIBANIWxJvbGhcpwcDVxDI+ICrpPQCQeOny7e3v9nUmUFBNIh42sX02qKykKHMh5ApQojQVRUBXUNhLITVO9vw2Z7uh8yweZXCyDrORevgwvB5R5XHjHjSQXFeFMs3N6G+2/lp0FCfHQBqKRHQlNca495tK7e3oSQ/ClPXoClK1sTvB5JDV5pjucEFEysvqyqMQEp/MiCBF1bVuUs3tyYb2uJglICAgBKCq+YMPw0K7YxDPeOc+5Yl3ltX5wOEUDBCwIg/eV2JDM66+zWs2NF5rxk2f3wkMd3rlch+IXwCgNtuxaIZNeeETS0blCPI2C5eXNtgvby+IZO2XJ/pLoFQQMUls2rOFI5XRXo9nC+pAgkzZDz04fb2P9/06HKQLEClBKoKI/jJ2RP6nq9QiobWOBb9+7tuhigXq4zsPqIbkz24lCiIBuYNL4lSx5Mozo1iY30Xkrb4PSOwjnS5B/Kb1bs7RFFuFIQqKM0NoiIvdDo8oVJKYQYMxEJBxIJBfLqzrYtq6l1ZsQvP48aYyvy5QZUhYOhQFQ2r9nTsVnX1kSNpRaLQp3e0JFtj4RAioSBMXRswVvSQ94KQEprKFlx14ogBnsamujZ8srPtDcsWtz//8a4BD5k3qZKMKo/9hBCyIi7Vc86+d2ni3XV7+8oACAE642mc+atX8MGOjvvMyJEBcqRmc4G8mHHJxbOHRft//t7G/djdmvxrXVv64bfX7xtwzUWzhoULc8xLXS6/Mm4RiJg3PvzuzuUPvrKmb3BkdtX0cm4tx8Ol//EW9nTaPzJ09e3DJSoFH3i4roeS3ODkqKlDUVSYAR3bm+LdhNF3v+pdGaOrdrUm9mqaBkPXEdB1lOcFR4OLGCOEG5qOcNAEB0Fz3FqjUHqgTxJLVA4dFBssCUU4GETc8tAat95nlKa/BOSDi7DLE+RAwDBgGgY0TR/wPT1Uj1q2R48bOeiaiTVFSLkCyay4/seHO5C2+DPU0B575pNdibTDkeYSCZcjoKu4ZPawBdx2qwOG8lZcqgvPuXdZ4p21e0EJ0N6Txtl3v4oPtnfeZ4bNHx0JIBK+Ikx6vI8N1xvo8iwvfPaUwZdWFISRzPZLAPj78u1SEvYYKHvs7x/sEFxKJD2BhCtQmhfCOVOqLnEtNyaPYJtkx8zWwsGLbnp85falq/dAEr8PCY8j5Qm4QuLGR9/H25taHjJDxgOH6z8lBIwNPACixky9vMsWaM0ItGcEOpL2PkZJ21eGwSnJdKedna0ZgQ4baLcEAoaaB8g8V0J02AIdjkSXzeFy2UgGTDjKdEPVm5Iuul2gOWHD4XIL/ZpIuCSQXY5EmyXQZYsBr0izJ/QdRMoZFx0//JhuT6A146LL4djXncbzK/fWQ1VepZR0rtnT+fL7XzQgJSQ6Mh4OpF2cPnWIWZwXvNx2OAydLYtDXXj+/W8nnluxFYvuX4rlOzrvMyNHBgghgCOBLlegPe2hhwOcHFzVAYOdff6s2soWi6M94yLuSWzc34llGxs/IwpdQxW28Z1NjZ+sr+9EwhPoyLhosTjOm1VbHjSUc6SUOJLaAQDu8YZwOPg6DehoyXjoyB7tGRfdrkAsFuZQ1EelEIelUR7hnQxPiuDmlm6sOdCJrW09cLhIEkK9rwu8cUm6dnUmseZABza1dMHyOAOlatLx5KaWbqw90Im6rhQA4vY3mimh4c6Mg7WNnVh7oBON8QwoIT3ya3IzLpfY2taDtQc6sL09PoArTHu9CUoA1+U4qirvmpljSkh3MgPuudAY8M6aOuxuSnzCKMmVUlYKLj969oMdgODwPBfpjI3CnADOmjp4kWd5uRQEjJBl7d3eaef+5u0P31x14GemGfiRoVA4nA+oqBswUVLC9Vx4nguPe1nKJBG242H2qJLFo6pykUhn4HkuVAa8+MlOdCecFQyooJAVPQlnxUsf7YRKAddzkUhnMKIyB8cfVbrYsj3lq0LuVMgT/nDVzCsm1BQhmbb8PmSPeNrCDxdOZBfNrvlDJm5FyCEqOku6g2V7sGyvDzaEEG7ZLleEDYWnQYUNQ1M0IQT5KpAJCQR0JajCBfPS0KWDjOVwgLgEkjBuQeEZMOEeojYACem6tgVd2oCbQkCRYIyGvip7n6V8SOpaoDwDekgcVOl/BXe92gtm1swLGiqcpAUKAtvxMKa6CMt+tWABo/S03vsplCBluaDwQ/IZ28P5M2tKnnh/x1mW4y05a3LV/cNLY0WuRIpATlIIefWv729/pDslXwUloJCghIAf0lsK0ndkW5pIeeyi42qnSKDv84zl4qSJQzDjqMrvU0KuztoFLKBSpDIOWDZxIYTEouNqj359Tf0cCSwjh5kQO2XX3HnhlCdOnVwV7ohnQIkfe9FVBWnLgZASqYyLuy8+5pjdLfGHP9necn7Q1L4kFGW2vDKoG8g4HJSQTHfCatcoHaJrGiglKM41SzfVd0UBdMNPe8C2XGiG4hvNADjnSnFeaAhjFKqiwNBUdMStTlB0ERCqKgyqqoAxehgSF5o74xlZWRIh3SkbkaCOmKmNbE856EufpB0QAii6CkhACEFNQ9UpY2CUQWVsAPgUABAAXE+gND90+RlTBgdSlgtK/JgD5xKDck2UF4QMKWH0IlYICdvjWZfRD7CNrMjDiUeVXvTi8h1dZ02tuvzsY6qRcP34ghASz32yK3RAyFcVBkQNFSqjiNseuJ/RJJrqUwj8IxsncQUdX1N47awxpUjbveUcEpwLVBSEoTBi9k4WIb5UcFy/XwQEadvDsaNKMLE6/9rVdR3LDE3p5zYBVsqOXjSn9pnvzzuqpDtpgRJA11QcaInjheVbcNN3pyNpufCEgKmrePia2eeddufr2+o703eYAeUwy1ICErAdD5RR2dKT2WY5fHIkZCDtCgyvyC15b2Pj0QR4FwBc14PkAp7DQXU/SCUlRo0dOmhY2vEQChrgHGjsSH0BxrooAVMUBaqigLIvF60pjO7Z09jdPGNseTFjCqiqYFRl3py31+03iK5YLCv2hPCNa6ZQSCFLaysLKm0uQBkDY+zL3g0lALfd/IVTh1xUnBfyxW+WqJwbCSAaNGDqGoKGf5i6hlBAR37EhKGpfvqfEAgpcfGc4VNBcXZHwpIJlyOestGdsuF6HGFDDUICQU2BoTAwQhDVFTguh6kpJVWFUXAuwajfsbTjJeGJCRfNGna6aah9xeuaoiA/aiJi6l/qVzigIz9qQlOVLFCAgK7gotnDThYOP0r2A0g66ZAZI4sfue9704/O2H5BF2MUpqrgrn98inueWdP9yofbkR8OgBICy/FQVhDCo9fOuj2o0vMPTclLT4AxWl5aEDktFNDG246HhOW9uX1fB4rzosi4EmVFUYyuyP1BOuNCiKyBmM2kux5HJpHBiIr8G2oq87V42kVpfhR7DnShK+0sIwQOIZQoigJFVcEY+5KuUhTWtasp/lEiZSM/FkR3xsWxY8tq8qPGNXbaznJ//BXFhUAmnsGQkpzvj6stCXcmLVBFheLHSQZKEi4kwkHt/O/OqimyXA+MUt+j8Dh+9uh76Mk4oIeax9LPal51xtGorSyA5XjIOBzHjizRRlYXnrdxTxsuOXFU9joCVWVYfMro0esefP+URNpZKjyB3tgezzijrz5r/AVDS2NIZFwwRsG5wN6mnpaCkug586cMDqVtv18KY+iKp/Dzv74H7zA7HkgJKJC46dxjkJ8TgutxpCwXp08erP3+lY1X1ndmvq+rFJbtoaowdMfD184+lykUti1AKEV+2MAfX/gcr6xuWKIW5v761r+vfO/omqK8suIcZGwP8YyD6aNKcf+l0x6+8qEVO6mhrmaEwOMChbnmuT++eMYfSnLDBYlkxv3Ti6sfWL+n7Y4VGxvqp44pr4iGAuiyPJw9e/j81s41NzW2J38PSgAhISAgLBeFBZHLLzl9wqKuRBrhoIGQyvDO2n1tiqq84HrCAAEYU6Aoh1c3lAAZTzz6/pq6hefPHYdtjV2AynDl6eN/9eTSTcmGjsTjsBwHAoCmmLVV+d+/auHUGxzXgScpVJX44DvUJrEznn7GtKorR1bmoTvtgBKCiKnhjU934o+vbVkBXX8d5Eu0Ag8pa5hhGpc9+P0TYGcTgIam4OpTRpG7l3yG2y+YCl1T4bocacvDWdOHBioLwy+v2dO+QQIZAFAICQwvi42YOrw4lPb1OExDRV1jJ9bvbs+5fsH4M4vzguhM2KCEIGqq+PuyXXhs6faXEDQ+AaB+iY6QykytKS8464ZzJqEzISAkUJRj4rzp1ef9+l/rfuVAaQowev5frzvu52UFYcTTDhghCJka1mw7gDufW1OvhQI3qYw0tabEDTc+vPzvL/ziTKgKA+cC3WkbF80ZHt5+oHvJ715cPzMQMhpd2y1eMPeoPxXlmHmrdx5ARUFYXTir9uat9Z0vHei2fv7aim1PfOfU8djVEgdUhuvPP+Z3b322d8yGHU1PJDJ2fSiglYwdVnzB6bNGLnZcG64QGFocwz+Xrkd9Z+bXZkDvdF1RSrLZW0oZSNYkOLQZuvr2R1ubXxpRuX/BuNGV2NXcg2hIN266YNrDuxq6r2lo6V5PCSFDKvImjq0pGik8Fxu2NMIMBCAJQJXD2CSaSk+98uTRoykl0FUFIIBOCZas2MkRNG8yDW3N4TrjBnTyxrqGY3/WkayNxfxV6wiJ78wahnueX41fPP4hHrzuRKQVhoztIuV4mFBTpE0dWTypvy53ufTtDQCGoSKoUtz77CromlJ92Ykj4UlA1xRfurkcz32yu4fmhBcbKms5LMVBU/Of+2T38VfPGx8LZCsOXQEsmjMi75F3ti7sTjjL/3jd7EdmjyxGh82hawoUhcJO2/jBQ8tFUiqLTUqapATMoP7U8q1tx/3u2ZWX3n7xsei2/bhR2pW466Kp1fXtySef+2TPXMJITTSg5rX3ZJB2BTpTDnICKjSFnEiYdse7mw6cHgooC0+bPRptKRu2x7Hg+OGXzJtZe4nliXTAUE1dpejsSUJhBIPzQ3j5nQ14e33DcwEz8B+9Y0UJgaExGLqCIxXSEwCKpl37+LLNwy6RcuTEsYPRnrSRsCwMrYiOHTOsYKymMKgUUMHx0fo9eH/tPpx3xmT0pDJ9tdsDQDK+KvcHVbkBNDR1+zkWSrCpNY73v2herevquiNFAlRKZGO3teS5D7b94pwZNXBcX0ebGsPC6UPxwHOrG5Npu+RHCydhaGUhVEYgsoZy/2SNphAYigYhgabWbtz8zKdY8sHuFfNn1tSEFFnc1NSV1bcUn29vwvr67qW6obccGvEk2RC6rrL2jQ09r73+6Y4Lp40shZvNFpsqw5TqgtsipnbLnFGDQruauvu4HColuPvZVVhfH/+tGTHf7HNdpIQeCtx03+ubjzlqSP6IicOK4XFfVeoqw0/PPGrOhrqOX+040P3XtV/slxNHFBFJYiiKBLDi891I2W6boWvQA8b3XvxsH/a3xheeMWsECgti8CQHo0A4QExID8IFcgMqDjR24KkV27CxIf5UwDSuIpA8O1hEoYRV5IUQ0hgI55BHII4xShq5qp/26Jubn9q4u2X6cROHoKggAoUC0nFgWRzN3Sl8tG4flq2t3za0sjAa1NXiRNqClBK2e9APJlJK5H3v8dcM6c7urfElALEESaahXMUoeelr2HjlTLhvhJkc3M8mJELRDsQ9LMikrAsjqlw8uTo/Z9zgfJQXRRHWVTB6sMbY5RIt8TQ27mrFB9ta7OaE97gRMm8PKfJZlbtHy360yRQnHQ5VFlJCVg3gFGgKhJBwPJ5NL2CiJtzng0zmy35xBJdpKY0SXbqO0v++QkJ0uHhH0/TvAvJLeRVPyMkKd56OqaRY9HN5NVVBhqhvpRxxruc6z5wwpuSco2uLsbepC69+VrfHJmwaI6SlN3CSsZxrDPAbh5fFqmsr8lCQE4SqMFi2i+aOJLbta8fO5sQmzpTfGbr2RH8/mwsZKQip66vyAoOlEHAEwbbm5C89idvIkdmFum27VzDhXVwY0UflhPQAIQQ9acdt7cnstQR9hlD24MRhRa9dcOq4qc2dceQHNNz3zKf/an500Tl9IDEvetzwhCzv9fMJIZRREmeUNPUFm7JuqcwScHtLIrLvEHKFKIGEzBq4lBB0MELaCSFwuahwLGc2hJgAISoBGe3LQPserQuQJijKBs3Q3lIY3QQ/Ix4RUg7qn+ujhHRQgo6DkUnf5Z0zsRod8QzW72iEoSm9MYNcIWX+Ide3Syk1CUQwwBmGxyjZSw6WPfcF/HqNdiERFVIWHWoIMIJGQkhKAhHLcm4k3JsmCN1uBPQHKCF7DjNxMcfxTuCedyyFrCFAQABxCfKFoqorVJWtINkMc2/uqJdH67h8BOdiAggIISSta8rbBEh8iXYqJUzVL1Hx6RKEcSGGcS5KfLIebWOM7qAE6VTaipw1c+TO6RMqCruTGTDPw73PfPb71FOX/dtB+iKBZah0Z0BXoSjM9wgyTt9D86Im0paDjOUiZOrgXKAnnkbJoBiklOjoTifDAW2HwiiS2UBNH/q5gKkp9bGQ8WQybT/pSw9y+M3NINEfeQQyzgiJ9w5Q//uqjMEMaOhMpCGye4IRAgjOwQX1PTSCTkpIZ98te6vY/Rs1H67QjEsJSig8IVBaEIHHBVq7UsjGoXoUSnoGXnNQbRIgHjC0OwDdD/L0k1SyX3SXUdKta8rz0NTnj1TJ5BOhCRRG/YkWEmFTQ044sLUrkdn6dXVQfX+F8EecSE6BrYrKtkL6QTzBOTwJaAqbM662pLAnmUHE1LBjZwfSNl87IE7iOB40TcHEkWU46ZgajK8tQWlBFLbjG2nja0ugqwyOx2HoKgKGCsmFH5XUVNi2g8qSHEyoLYHtetkaX9/vt2wHg/LDmDyyDLbDUV4YhaZQCC7ABYeUAkIICPnlpJKmKFCYT0fo3Zai1/4ImfqAnQl664qRDQx6nhhgyKmKz2s5EomeEQJDU1FVnAtNYXBcjpxIAKUFEeRFAogEDagK6xf+zvJsFJ8O0ftszkX2nSRUhYFm3ePeSoO8qNmvRknC49xf55AQQoBz4e/YFNRRFAth5JAi3/B2OUxDw5TR5X0gkv2ivIfjs1CKAOfCcBwPCiWw0g6stI1M2oFtObAzDtxEJjJ/xojbYlEDadtFWGNYs70pyRj7aABIPI9DSGiUkhpdU8dqqjK0N1ZxsCMH9XC/eo2olDIKIWEo9MyQqd4khVA9zkGQnVguoDJ6UthUb+FC6MGAVghAtS0Xg0tyETF1FOWGkBcxEcjaFZbtwVAVDK8qRHlRDgpyghg1tAiu66+oLCUwK10IIKQSDqjXGxo7FyK7raMQ/nsJCV1lGF5ViLKiKAqzsZPeHRKElLAyLkrywigtiKKsKNbn/Qkhs5OtIC9sYlhFAWzbg+N4COkqKgflYmhpPopyQ7AsBx4XGFqej2gwgMpBORhbU4KQocF2PHDu32t0dRHyYyZsx4OqUIyoKvTtMo+jtDCCyuIcCClQVhSDoavQVeaDwHcoJkWC2s+lRJ7LBQblR2CoCqyEBdfxBoDGttzwCZOGvPvzS2evHlNddJOuKiPBhSksF9J2ITgPF+YGT1x01uSlx0+pHtfQ1oXSvDD21rdhU13nq5rG9g3M3XgCZXnBnx87uvjGuv3twRFlYVQXRz5oaO66whVy56GrLj9moq25OzBjTOkHEpB1u1smx4LqjRX5wRnS5c9IKZtyckIwDR07Ey0I6nRxRUHwTF2le+dPr37opQ/cP2/oSt4yKD8MK+MgFNTh2Byex+GkOHrpijQb1CPEF7tC+qjmQkJRWIQQGAqlrYSLaFm++YDrOmvhyX8ePaYM+xo70NKZBFMYiKGAUV8i6aqSXe29EkhAcgFKfWnAD1fYlC1YYtRPL3CHQ49RKIz6FAFC/HOERGFOCGnLRW40AE1hh1UHhBBwz48JDcqPYPu+dji2i2g4gIDGUNfUmb2fL5GkxwGPw1DJd6oHhf9NCLHCUJQPIqaOdDLjF2Z5Aop6UFvrGjt++piKYwblBnDV2RN/15Ny7u7syTQk0k4rABkLB0qKC8JVUgocaO1ESW4YImPhyaWbEmDKneRwCT5TV4b0JDLBh15cc4ui0JwfXjD9R8dNrHrgjU93nda/0osLiYqiHOxr6rbfX717KwEENEUIKW0uZAYAkdwXjzRI1KrKAk9ImRZSekLK+D/eXLelLe7sUwM6pPAzp6YpiSREtR3eZwjZjgdCiAYQz3a54NlMoJQSmkK12ePK3mvvSbdv209P2W873OMiZTs8UVSSi9xoUN+5r7XPhbNdDkKISiklactxeierF4wQAo7LETH0gMdlxs0SuIWUcD0B1xNQg0rA8URGcgEQX6UJCSgKC1guz/SKJtfjsB3Pd7sNYtguH+Apid6itl4pZnt9gHVcnt2tyX+uqioBLmSm93wp4Tkuh64xq7wgR3FdIRxXCMBn70NKEOqnR4K6egJxbdi2goxtg1HoxflmdSkLVZOsWsxYGaiMoDIvhF17mvHkW5uttoy4TFeVbYet4JNSeo4nEIyE/ig9kUw7fHEmY+erjI0dXpHz4OZdTb+RXLxuqPSsYWWxG977nF89rKqslVJo+w/s4H1mpZRcCtDxtcU/nTKq5HupjGPHU3bAcbkNSdJTx1UnPlq/r6OnscsszTefM7VBLbUVeUfnRs3wO5/v/cuKtXV3A1KZNq7y9qmjShb1pKxEfUtiMyWggvNLhCCpaaNL/zahtujoVMZ1K4oiqx95ueNml4uu8qJIzdDy3JWVg2LFnuc89c6nO3/OPSEnjS/90cTaoqsoocqWuo7H9h7ovJNRn+gruUBOTmjsyVOrfxkNKtMIVeoSqfRvN2w5sCQ3rN9bmBOsHlmVi+qS2Ky0Kzbtb+76cXtT16rigvCCOZMqbmNEljd2Rt94tj1+I3e8nsKY8VQsNMiuKIrUlBWGKzUmn3nz0523+hpF5JblB19IpjJL99e33xMJ6qcdXVv4wzVb919rc/nF4EGRRxzXYxT0tqmjSu6JGuwUpqn1ze09t+3d2/Y6JAQIwfETqu4eNTi/hqlK50vLt/+mqz3xDGEUnseh6b7UTDv83Z89+v53jx5akDtqSBGK8sNgAR1g1I9VcQ4rZWFnUxc+39qIzfu71xBV+6GuqctxpDJPjwsxKC+MRaeM+VdpYbS0qaUz/O7qul/FwmZJSa45gxH5JqR8XVPIuOK8wAwhxMjSPHMuYzQEIa72Y2QS4CI9bmzlDSdMrLzzkX+tXN+TctoumTfhRC7RIaWsqC2Lnrx+m7JVeuK94lxzbmVhkDzxypoPy4qi4fPmjv/Vhl3Nq4aV50+ePbbkp39+/rNPHI9bi8+afG5rj5WQnhcyQmZq3daG1nHV+byxLZ5a/vneBiGkRUB4eWGo7LGXVx+IhQ3r0gWTb928u2VNbsQsmDSs8J4nXl3zNCVEv/zMSbftauhs3rav/c+EAAqjpVecOeH1+obWomde3bGkdkjh7AtPHvtMQ3NPO6Q4ava4ipMff/nz5mUrNn+84LiR8xedetQ/nnx1/c2nHjPkny+9v+XThub4kotOG/v9E6cMwRtvb74qFtLmDC2JFTz8r89WmwG166pzpv5wx/6O3XsOdD0kATseTw0fX1M47LNVe343vCL3quFlkdkVRZFzvkhYDx41JP+KF5ZvfW3+zGF/ScQTM59/Y+dDwwbnn3L+iaOevffJj2tczq3i/DBWb6mf+tCST5ZOHFN2/IWnjHr67tbufT0p5xNBCTzuq0VKyUsZoax974vWs9/f3HiSqbKRIV3J0zWqSwlpu9xOWF5TxpXrqKq+qAUCLxMgc1jW3cEIHZWpjIUVK7cNfeODjYWxsEGmHlVZ43hcZtWNmxV5Tu//HheWx0Wmn77lICRvyojixZ9t2d+8syk5qzXhnfThhv3LKSWmX6khIKR0skxF79PNBz5r7HJnrtvTeXk8aaEoxzxn0ohBV36wft+O+jZrVnOXM2fV1qYvCJHcdwA4etLeT9OOSCRsvqE16S2AlFtUheas3ta0tb41M3ljXfd3WzuTGJQXnDe2puAyTyBz8qyxXxw3bdR2VVVQUxb7LmwX0hMoHxQ7Jy+slb62su7fklS/6LNtrWc2t8XlmJrCK7iQ1s797XzVjrZTO1x2xosf7b47FlSrp40re1JVmDJu1OANC+YevYeqWlttee4CEFJGCcms3t60b19LeurWhsS5jW1xlBaETpBcgDKa2ri79fmCmFlsxMzjqgZFj/5g9R6MGlIwMy8veLqUEk2dqV2jBuefEjDNrecumFpXWVG0tSBqBPNyzBMJiN3RncL76xuu6ZbK2e+sbfheOm2ToaU535W261MO+hXUM0rqA4Z2vxEMzuWKPqbTo2MbU3Jyc1pO7vbYUVIzxgVC5nd0TVlCsrm0wzWlH6uJpS0PWxoSJ2NPVxtV1LdPmFR95+bdzbfA54NwCAmPC/criHcCjMZ0jRWnLL4GIHG4Hlwh9kNi2mGMOCokmiEFFKZ2ZCkKhZpC8tOOeA9CeKAEAugESDmIn7sBFwGaZdBnXR0FAJUg7RACRGVdfphe5gd0JS+ZytBd2xt/yDSm7K9vbNrXlq7TggYcy4ahkiqPSzieWJ2liW21PJHUFFJqcZKybJ4BF7uYIpBx+SrOJcKGGnIcl+/dvf+7TFM0AqQ7EvY2aAqXUjJJSCsI4RAinTUn9F43+0Bb8jXLdq89enjxHYQg/O66/SsWzhk1edKwQYP2NfcccFyxV1cYmls6hiaS1l1MZXzJ/pbGeNqOR0ytzPU4uMAXhAh4Qq53uIRCSRGk73pLCXgegdp/hwafHhBXCIl/ibz5DQjpykDqGxAJG15+NJipqSz0OrtTipV2BAFQXZZflbZBasrzhxu62rcnSa/PTwjxCWdc9uxp6GicMLx05GebG0tyo8H2cTUlIwghnsxGL0k/8nB2X3yfJM4IpETH9rr2xmljyo+ua4qXg1Bv1JDCwamM7fa9k7+bATE01YhFTcSTFicEhPpp0ewiIgBIT31jd2LU0EFdq/d2H69paqOhKWYqY3dQRqDoGpo6UrsURjFuWPEJO+o7PwnlBKcPLo6FX/9w+9by4py8ipJYoKIsfzgo+by6JDrH4xxrtzW211YVxPZ22JcnrNS7kZARsGw3CS4opVTp1w+ajVTL3jG2bL5yd0NX09ypQ6YuX1O3rrkt+WPLdj+ePrZs1PPvbX06Y7kfdyUy4FR9c01dy7WGpkDXFMWyvFYp5eSivBCGluVOyNjiczPAjs8JG9jX3L2d6TooI32T+V+5TVhfmadte/qg3CAuOW3sS2FTy0+nMiXPvPPFX7gk/3z/8923nTGj9gdTRpee0NXZM7KtIwHGqOF6XlBKGgQBuMdNx/VC0FjH8nX7/1BdHP2PH3xn8ufxtJ1MxpPD4inhUkp023bBpdQBAsf1GOcy0Duxtu1BYTT57ud77y7JDz52yaljtrZ0Jjw7Y0W5IE2QEpRRSE1JbNzRVL9wzugp0XDgvcdeXf8jx/FUj/NgNp5LHdeDwqi3Yt2+B6tLon+5ZdG0ZSmbbxUer3j8jQ03d8UzrxkBHUmbP/fPtzZef8bsEXe0jCg5IS+sTXzvs53JusaePw4pz7tNco+dOaP6Ld0wdkQMOvkfyzau2FrfdefqLfWvXrdw4lPdKfdjQ1OKXlz+xXNdzV33uK4X9jye6KXGOa4HzkWgd2UwlXVvq2//ZOa48rO37ut4F5Su3NXQuX1ISWzE7sbut6nC1jz/7pa3L5p71HkTR5QOAZDZ29hpLFm6eTZjVN3f2IHZY0sfCoWCl+aE1MlvfLStrbXbflw3tN6dJr7RNmX/qc2KpJQILHocKsF5OSa7WNdYNG257W099htQ1L8pCnNc25ldEtNv1VQW3N+eWhoy1GFpD3cZCs4DYKRd3GIw/EChGJ10cZ2Q0qacX19ZFDzPcnh3S7f1aSiglqRd+R9BFT+zPDzjCrwZ0vCoy7HK5vLPFCgKauTfbQ/POly+6DruqTFTWdAdz7QuPHnsJYwS+vTSTTW6oaWYwuB53oySqP4Lyihr7LavCKrkOi5xwPJwLyGIhVT8weF4y+J4UrjuJeX55sUBTcnvSli7uiz+C4BuJNk6VNv2hsQM+tOSPHNSR9za2Rx3fisk+fSUSVXvVA6KHLtk2cY3ygpDgxs70p8lHHmnpiqNtuXMLopqN+aE9epk2m3uSHkPepK8HFTxgJBotzzcJSHDIY38weX4xBZ42C9nk4CUs4IquTrhyttByDYF8gJdwakpF9dTStsdl8cCTNxSlh86QQgp2+LWh2mX3KwpOJVKMZ8L2VVREDqhM2HtbU24d+u6uvqwRcj/hy2V/SkTIqVE8OIn/OovV0BC9DHT+oePXdcPnauK/3svjNEBQS+ZDcVT2otnAsdxQRmFojAILvoYZ70qp3/isDcGI4REfjRw4txpw07bdaBrRX40MG5iTf7PH3lp7VONXdZFSrbeF8S/v8+H8SO1IKQvGce58O+djRtwT/h9UBgY7bexH+ndb1bAdTiYyvzKQMvFacdUf1hbkTvp9//4rIiqrEdTlYMMvew2oY7rEYUpUlV8Bl52q5SDHOHed+x3neyXm+lj+fXlnw7uf+u6HkAIVEXpJyX8zZC564+nopDD/yDRfyFIlAFEFUZ8PvphHqowAil9rnrvy/XPnfiZSvKlfElviWbvDw31/8GhQ398iGWzaGnLGbS/ofnqyrzw9Rnbwp+fX/VmU9z5iaYOJB4r/eh79HD3OuTdJKHZyTp8cZWq+N9LCaiqgm11bQ1NbT0lqqYQxggOZXAySqApVPZ/9qG7ZLPDVEX1jkd/CgM7xI7wGfv+DxTRfglOkk0XUoX+p38w6n+3/a8BAGOtxmE+9d9lAAAAAElFTkSuQmCC");var deps=["pilot/fixoldbrowsers","pilot/index","pilot/plugin_manager","pilot/environment","ace/editor","ace/edit_session","ace/virtual_renderer","ace/undomanager","ace/theme/textmate"];require(deps,function(){var catalog=require("pilot/plugin_manager").catalog;catalog.registerPlugins(["pilot/index"]);var Dom=require("pilot/dom");var Event=require("pilot/event");var Editor=require("ace/editor").Editor;var EditSession=require("ace/edit_session").EditSession;var UndoManager=require("ace/undomanager").UndoManager;var Renderer=require("ace/virtual_renderer").VirtualRenderer;window.ace={edit:function(el){if(typeof(el)=="string"){el=document.getElementById(el);}
var doc=new EditSession(Dom.getInnerText(el));doc.setUndoManager(new UndoManager());el.innerHTML='';var editor=new Editor(new Renderer(el,"ace/theme/textmate"));editor.setSession(doc);var env=require("pilot/environment").create();catalog.startupPlugins({env:env}).then(function(){env.document=doc;env.editor=env;editor.resize();Event.addListener(window,"resize",function(){editor.resize();});el.env=env;});return editor;}};});define("ace/mode/css",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/tokenizer").Tokenizer,g=a("ace/mode/css_highlight_rules").CssHighlightRules,h=a("ace/mode/matching_brace_outdent").MatchingBraceOutdent,i=function(){this.$tokenizer=new f((new g).getRules()),this.$outdent=new h};d.inherits(i,e),function(){this.getNextLineIndent=function(a,b,c){var d=this.$getIndent(b),e=this.$tokenizer.getLineTokens(b,a).tokens;if(e.length&&e[e.length-1].type=="comment")return d;var f=b.match(/^.*\{\s*$/);f&&(d+=c);return d},this.checkOutdent=function(a,b,c){return this.$outdent.checkOutdent(b,c)},this.autoOutdent=function(a,b,c){this.$outdent.autoOutdent(b,c)}}.call(i.prototype),b.Mode=i}),define("ace/mode/css_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/lang"),f=a("ace/mode/text_highlight_rules").TextHighlightRules,g=function(){function g(a){var b=[],c=a.split("");for(var d=0;d<c.length;d++)b.push("[",c[d].toLowerCase(),c[d].toUpperCase(),"]");return b.join("")}var a=e.arrayToMap("-moz-box-sizing|-webkit-box-sizing|azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|-moz-border-radius|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|")),b=e.arrayToMap("rgb|rgba|url|attr|counter|counters".split("|")),c=e.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),d=e.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),f="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:f+g("em")},{token:"constant.numeric",regex:f+g("ex")},{token:"constant.numeric",regex:f+g("px")},{token:"constant.numeric",regex:f+g("cm")},{token:"constant.numeric",regex:f+g("mm")},{token:"constant.numeric",regex:f+g("in")},{token:"constant.numeric",regex:f+g("pt")},{token:"constant.numeric",regex:f+g("pc")},{token:"constant.numeric",regex:f+g("deg")},{token:"constant.numeric",regex:f+g("rad")},{token:"constant.numeric",regex:f+g("grad")},{token:"constant.numeric",regex:f+g("ms")},{token:"constant.numeric",regex:f+g("s")},{token:"constant.numeric",regex:f+g("hz")},{token:"constant.numeric",regex:f+g("khz")},{token:"constant.numeric",regex:f+"%"},{token:"constant.numeric",regex:f},{token:"constant.numeric",regex:"#[a-fA-F0-9]{6}"},{token:"constant.numeric",regex:"#[a-fA-F0-9]{3}"},{token:"lparen",regex:"{"},{token:"rparen",regex:"}"},{token:function(e){return a.hasOwnProperty(e.toLowerCase())?"support.type":b.hasOwnProperty(e.toLowerCase())?"support.function":c.hasOwnProperty(e.toLowerCase())?"support.constant":d.hasOwnProperty(e.toLowerCase())?"support.constant.color":"text"},regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]}};d.inherits(g,f),b.CssHighlightRules=g});define("ace/mode/html",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/mode/javascript").Mode,g=a("ace/mode/css").Mode,h=a("ace/tokenizer").Tokenizer,i=a("ace/mode/html_highlight_rules").HtmlHighlightRules,j=function(){this.$tokenizer=new h((new i).getRules()),this.$js=new f,this.$css=new g};d.inherits(j,e),function(){this.toggleCommentLines=function(a,b,c,d){this.$delegate("toggleCommentLines",arguments,function(){return 0})},this.getNextLineIndent=function(a,b,c){var d=this;return this.$delegate("getNextLineIndent",arguments,function(){return d.$getIndent(b)})},this.checkOutdent=function(a,b,c){return this.$delegate("checkOutdent",arguments,function(){return!1})},this.autoOutdent=function(a,b,c){this.$delegate("autoOutdent",arguments)},this.$delegate=function(a,b,c){var d=b[0],e=d.split("js-");if(!e[0]&&e[1]){b[0]=e[1];return this.$js[a].apply(this.$js,b)}var e=d.split("css-");if(!e[0]&&e[1]){b[0]=e[1];return this.$css[a].apply(this.$css,b)}return c?c():undefined}}.call(j.prototype),b.Mode=j}),define("ace/mode/javascript",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/tokenizer").Tokenizer,g=a("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules,h=a("ace/mode/matching_brace_outdent").MatchingBraceOutdent,i=a("ace/range").Range,j=a("ace/worker/worker_client").WorkerClient,k=function(){this.$tokenizer=new f((new g).getRules()),this.$outdent=new h};d.inherits(k,e),function(){this.toggleCommentLines=function(a,b,c,d){var e=!0,f=[],g=/^(\s*)\/\//;for(var h=c;h<=d;h++)if(!g.test(b.getLine(h))){e=!1;break}if(e){var j=new i(0,0,0,0);for(var h=c;h<=d;h++){var k=b.getLine(h),l=k.match(g);j.start.row=h,j.end.row=h,j.end.column=l[0].length,b.replace(j,l[1])}}else b.indentRows(c,d,"//")},this.getNextLineIndent=function(a,b,c){var d=this.$getIndent(b),e=this.$tokenizer.getLineTokens(b,a),f=e.tokens,g=e.state;if(f.length&&f[f.length-1].type=="comment")return d;if(a=="start"){var h=b.match(/^.*[\{\(\[]\s*$/);h&&(d+=c)}else if(a=="doc-start"){if(g=="start")return"";var h=b.match(/^\s*(\/?)\*/);h&&(h[1]&&(d+=" "),d+="* ")}return d},this.checkOutdent=function(a,b,c){return this.$outdent.checkOutdent(b,c)},this.autoOutdent=function(a,b,c){this.$outdent.autoOutdent(b,c)},this.createWorker=function(a){var b=a.getDocument(),c=new j(["ace","pilot"],"worker-javascript.js","ace/mode/javascript_worker","JavaScriptWorker");c.call("setValue",[b.getValue()]),b.on("change",function(a){a.range={start:a.data.range.start,end:a.data.range.end},c.emit("change",a)}),c.on("jslint",function(b){var c=[];for(var d=0;d<b.data.length;d++){var e=b.data[d];e&&c.push({row:e.line-1,column:e.character-1,text:e.reason,type:"warning",lint:e})}a.setAnnotations(c)}),c.on("narcissus",function(b){a.setAnnotations([b.data])}),c.on("terminate",function(){a.clearAnnotations()});return c}}.call(k.prototype),b.Mode=k}),define("ace/mode/javascript_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/lang"),f=a("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules,g=a("ace/mode/text_highlight_rules").TextHighlightRules;JavaScriptHighlightRules=function(){var a=new f,b=e.arrayToMap("break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|while|with".split("|")),c=e.arrayToMap("null|Infinity|NaN|undefined".split("|")),d=e.arrayToMap("class|enum|extends|super|const|export|import|implements|let|private|public|yield|interface|package|protected|static".split("|"));this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},a.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(a){return a=="this"?"variable.language":b.hasOwnProperty(a)?"keyword":c.hasOwnProperty(a)?"constant.language":d.hasOwnProperty(a)?"invalid.illegal":a=="debugger"?"invalid.deprecated":"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]},this.addRules(a.getRules(),"doc-"),this.$rules["doc-start"][0].next="start"},d.inherits(JavaScriptHighlightRules,g),b.JavaScriptHighlightRules=JavaScriptHighlightRules}),define("ace/mode/doc_comment_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text_highlight_rules").TextHighlightRules,f=function(){this.$rules={start:[{token:"comment.doc",regex:"\\*\\/",next:"start"},{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc",regex:"s+"},{token:"comment.doc",regex:"TODO"},{token:"comment.doc",regex:"[^@\\*]+"},{token:"comment.doc",regex:"."}]}};d.inherits(f,e),function(){this.getStartRule=function(a){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:a}}}.call(f.prototype),b.DocCommentHighlightRules=f}),define("ace/worker/worker_client",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/event_emitter").EventEmitter,f=function(b,c,d,e){this.callbacks=[];if(a.packaged)var f=this.$guessBasePath(),g=this.$worker=new Worker(f+c);else{var h=a.nameToUrl("ace/worker/worker",null,"_"),g=this.$worker=new Worker(h),i={};for(var j=0;j<b.length;j++){var k=b[j];i[k]=a.nameToUrl(k,null,"_").replace(/.js$/,"")}}this.$worker.postMessage({init:!0,tlns:i,module:d,classname:e}),this.callbackId=1,this.callbacks={};var l=this;this.$worker.onerror=function(a){console.log(a);throw a},this.$worker.onmessage=function(a){var b=a.data;switch(b.type){case"log":window.console&&console.log&&console.log(b.data);break;case"event":l._dispatchEvent(b.name,{data:b.data});break;case"call":var c=l.callbacks[b.id];c&&(c(b.data),delete l.callbacks[b.id])}}};(function(){d.implement(this,e),this.$guessBasePath=function(){var a=document.getElementsByTagName("script");for(var b=0;b<a.length;b++){var c=a[b].src.match(/^(.*\/)ace\.js$/);if(c)return c[1]}return""},this.terminate=function(){this._dispatchEvent("terminate",{}),this.$worker.terminate()},this.send=function(a,b){this.$worker.postMessage({command:a,args:b})},this.call=function(a,b,c){if(c){var d=this.callbackId++;this.callbacks[d]=c,b.push(d)}this.send(a,b)},this.emit=function(a,b){this.$worker.postMessage({event:a,data:b})}}).call(f.prototype),b.WorkerClient=f}),define("ace/mode/css",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/tokenizer").Tokenizer,g=a("ace/mode/css_highlight_rules").CssHighlightRules,h=a("ace/mode/matching_brace_outdent").MatchingBraceOutdent,i=function(){this.$tokenizer=new f((new g).getRules()),this.$outdent=new h};d.inherits(i,e),function(){this.getNextLineIndent=function(a,b,c){var d=this.$getIndent(b),e=this.$tokenizer.getLineTokens(b,a).tokens;if(e.length&&e[e.length-1].type=="comment")return d;var f=b.match(/^.*\{\s*$/);f&&(d+=c);return d},this.checkOutdent=function(a,b,c){return this.$outdent.checkOutdent(b,c)},this.autoOutdent=function(a,b,c){this.$outdent.autoOutdent(b,c)}}.call(i.prototype),b.Mode=i}),define("ace/mode/css_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/lang"),f=a("ace/mode/text_highlight_rules").TextHighlightRules,g=function(){function g(a){var b=[],c=a.split("");for(var d=0;d<c.length;d++)b.push("[",c[d].toLowerCase(),c[d].toUpperCase(),"]");return b.join("")}var a=e.arrayToMap("-moz-box-sizing|-webkit-box-sizing|azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|-moz-border-radius|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|")),b=e.arrayToMap("rgb|rgba|url|attr|counter|counters".split("|")),c=e.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),d=e.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),f="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:f+g("em")},{token:"constant.numeric",regex:f+g("ex")},{token:"constant.numeric",regex:f+g("px")},{token:"constant.numeric",regex:f+g("cm")},{token:"constant.numeric",regex:f+g("mm")},{token:"constant.numeric",regex:f+g("in")},{token:"constant.numeric",regex:f+g("pt")},{token:"constant.numeric",regex:f+g("pc")},{token:"constant.numeric",regex:f+g("deg")},{token:"constant.numeric",regex:f+g("rad")},{token:"constant.numeric",regex:f+g("grad")},{token:"constant.numeric",regex:f+g("ms")},{token:"constant.numeric",regex:f+g("s")},{token:"constant.numeric",regex:f+g("hz")},{token:"constant.numeric",regex:f+g("khz")},{token:"constant.numeric",regex:f+"%"},{token:"constant.numeric",regex:f},{token:"constant.numeric",regex:"#[a-fA-F0-9]{6}"},{token:"constant.numeric",regex:"#[a-fA-F0-9]{3}"},{token:"lparen",regex:"{"},{token:"rparen",regex:"}"},{token:function(e){return a.hasOwnProperty(e.toLowerCase())?"support.type":b.hasOwnProperty(e.toLowerCase())?"support.function":c.hasOwnProperty(e.toLowerCase())?"support.constant":d.hasOwnProperty(e.toLowerCase())?"support.constant.color":"text"},regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]}};d.inherits(g,f),b.CssHighlightRules=g}),define("ace/mode/html_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/css_highlight_rules").CssHighlightRules,f=a("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules,g=a("ace/mode/text_highlight_rules").TextHighlightRules,h=function(){this.$rules={start:[{token:"text",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:"xml_pe",regex:"<\\?.*?\\?>"},{token:"comment",regex:"<\\!--",next:"comment"},{token:"text",regex:"<(?=s*script)",next:"script"},{token:"text",regex:"<(?=s*style)",next:"css"},{token:"text",regex:"<\\/?",next:"tag"},{token:"text",regex:"\\s+"},{token:"text",regex:"[^<]+"}],script:[{token:"text",regex:">",next:"js-start"},{token:"keyword",regex:"[-_a-zA-Z0-9:]+"},{token:"text",regex:"\\s+"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"}],css:[{token:"text",regex:">",next:"css-start"},{token:"keyword",regex:"[-_a-zA-Z0-9:]+"},{token:"text",regex:"\\s+"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"}],tag:[{token:"text",regex:">",next:"start"},{token:"keyword",regex:"[-_a-zA-Z0-9:]+"},{token:"text",regex:"\\s+"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"}],cdata:[{token:"text",regex:"\\]\\]>",next:"start"},{token:"text",regex:"\\s+"},{token:"text",regex:".+"}],comment:[{token:"comment",regex:".*?-->",next:"start"},{token:"comment",regex:".+"}]};var a=(new f).getRules();this.addRules(a,"js-"),this.$rules["js-start"].unshift({token:"comment",regex:"\\/\\/.*(?=<\\/script>)",next:"tag"},{token:"text",regex:"<\\/(?=script)",next:"tag"});var b=(new e).getRules();this.addRules(b,"css-"),this.$rules["css-start"].unshift({token:"text",regex:"<\\/(?=style)",next:"tag"})};d.inherits(h,g),b.HtmlHighlightRules=h});define("ace/mode/javascript",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/tokenizer").Tokenizer,g=a("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules,h=a("ace/mode/matching_brace_outdent").MatchingBraceOutdent,i=a("ace/range").Range,j=a("ace/worker/worker_client").WorkerClient,k=function(){this.$tokenizer=new f((new g).getRules()),this.$outdent=new h};d.inherits(k,e),function(){this.toggleCommentLines=function(a,b,c,d){var e=!0,f=[],g=/^(\s*)\/\//;for(var h=c;h<=d;h++)if(!g.test(b.getLine(h))){e=!1;break}if(e){var j=new i(0,0,0,0);for(var h=c;h<=d;h++){var k=b.getLine(h),l=k.match(g);j.start.row=h,j.end.row=h,j.end.column=l[0].length,b.replace(j,l[1])}}else b.indentRows(c,d,"//")},this.getNextLineIndent=function(a,b,c){var d=this.$getIndent(b),e=this.$tokenizer.getLineTokens(b,a),f=e.tokens,g=e.state;if(f.length&&f[f.length-1].type=="comment")return d;if(a=="start"){var h=b.match(/^.*[\{\(\[]\s*$/);h&&(d+=c)}else if(a=="doc-start"){if(g=="start")return"";var h=b.match(/^\s*(\/?)\*/);h&&(h[1]&&(d+=" "),d+="* ")}return d},this.checkOutdent=function(a,b,c){return this.$outdent.checkOutdent(b,c)},this.autoOutdent=function(a,b,c){this.$outdent.autoOutdent(b,c)},this.createWorker=function(a){var b=a.getDocument(),c=new j(["ace","pilot"],"worker-javascript.js","ace/mode/javascript_worker","JavaScriptWorker");c.call("setValue",[b.getValue()]),b.on("change",function(a){a.range={start:a.data.range.start,end:a.data.range.end},c.emit("change",a)}),c.on("jslint",function(b){var c=[];for(var d=0;d<b.data.length;d++){var e=b.data[d];e&&c.push({row:e.line-1,column:e.character-1,text:e.reason,type:"warning",lint:e})}a.setAnnotations(c)}),c.on("narcissus",function(b){a.setAnnotations([b.data])}),c.on("terminate",function(){a.clearAnnotations()});return c}}.call(k.prototype),b.Mode=k}),define("ace/mode/javascript_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/lang"),f=a("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules,g=a("ace/mode/text_highlight_rules").TextHighlightRules;JavaScriptHighlightRules=function(){var a=new f,b=e.arrayToMap("break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|while|with".split("|")),c=e.arrayToMap("null|Infinity|NaN|undefined".split("|")),d=e.arrayToMap("class|enum|extends|super|const|export|import|implements|let|private|public|yield|interface|package|protected|static".split("|"));this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},a.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(a){return a=="this"?"variable.language":b.hasOwnProperty(a)?"keyword":c.hasOwnProperty(a)?"constant.language":d.hasOwnProperty(a)?"invalid.illegal":a=="debugger"?"invalid.deprecated":"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]},this.addRules(a.getRules(),"doc-"),this.$rules["doc-start"][0].next="start"},d.inherits(JavaScriptHighlightRules,g),b.JavaScriptHighlightRules=JavaScriptHighlightRules}),define("ace/mode/doc_comment_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text_highlight_rules").TextHighlightRules,f=function(){this.$rules={start:[{token:"comment.doc",regex:"\\*\\/",next:"start"},{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc",regex:"s+"},{token:"comment.doc",regex:"TODO"},{token:"comment.doc",regex:"[^@\\*]+"},{token:"comment.doc",regex:"."}]}};d.inherits(f,e),function(){this.getStartRule=function(a){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:a}}}.call(f.prototype),b.DocCommentHighlightRules=f}),define("ace/worker/worker_client",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/event_emitter").EventEmitter,f=function(b,c,d,e){this.callbacks=[];if(a.packaged)var f=this.$guessBasePath(),g=this.$worker=new Worker(f+c);else{var h=a.nameToUrl("ace/worker/worker",null,"_"),g=this.$worker=new Worker(h),i={};for(var j=0;j<b.length;j++){var k=b[j];i[k]=a.nameToUrl(k,null,"_").replace(/.js$/,"")}}this.$worker.postMessage({init:!0,tlns:i,module:d,classname:e}),this.callbackId=1,this.callbacks={};var l=this;this.$worker.onerror=function(a){console.log(a);throw a},this.$worker.onmessage=function(a){var b=a.data;switch(b.type){case"log":window.console&&console.log&&console.log(b.data);break;case"event":l._dispatchEvent(b.name,{data:b.data});break;case"call":var c=l.callbacks[b.id];c&&(c(b.data),delete l.callbacks[b.id])}}};(function(){d.implement(this,e),this.$guessBasePath=function(){var a=document.getElementsByTagName("script");for(var b=0;b<a.length;b++){var c=a[b].src.match(/^(.*\/)ace\.js$/);if(c)return c[1]}return""},this.terminate=function(){this._dispatchEvent("terminate",{}),this.$worker.terminate()},this.send=function(a,b){this.$worker.postMessage({command:a,args:b})},this.call=function(a,b,c){if(c){var d=this.callbackId++;this.callbacks[d]=c,b.push(d)}this.send(a,b)},this.emit=function(a,b){this.$worker.postMessage({event:a,data:b})}}).call(f.prototype),b.WorkerClient=f});define("ace/mode/php",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/tokenizer").Tokenizer,g=a("ace/mode/php_highlight_rules").PhpHighlightRules,h=a("ace/mode/matching_brace_outdent").MatchingBraceOutdent,i=a("ace/range").Range,j=function(){this.$tokenizer=new f((new g).getRules()),this.$outdent=new h};d.inherits(j,e),function(){this.toggleCommentLines=function(a,b,c,d){var e=!0,f=[],g=/^(\s*)#/;for(var h=c;h<=d;h++)if(!g.test(b.getLine(h))){e=!1;break}if(e){var j=new i(0,0,0,0);for(var h=c;h<=d;h++){var k=b.getLine(h),l=k.match(g);j.start.row=h,j.end.row=h,j.end.column=l[0].length,b.replace(j,l[1])}}else b.indentRows(c,d,"#")},this.getNextLineIndent=function(a,b,c){var d=this.$getIndent(b),e=this.$tokenizer.getLineTokens(b,a),f=e.tokens,g=e.state;if(f.length&&f[f.length-1].type=="comment")return d;if(a=="start"){var h=b.match(/^.*[\{\(\[\:]\s*$/);h&&(d+=c)}return d},this.checkOutdent=function(a,b,c){return this.$outdent.checkOutdent(b,c)},this.autoOutdent=function(a,b,c){this.$outdent.autoOutdent(b,c)}}.call(j.prototype),b.Mode=j}),define("ace/mode/php_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("pilot/lang"),f=a("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules,g=a("ace/mode/text_highlight_rules").TextHighlightRules;PhpHighlightRules=function(){var a=new f,b=e.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_response_headers|apache_setenv|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_uassoc|array_fill|array_filter|array_flip|array_intersect|array_intersect_assoc|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_push|array_rand|array_reduce|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_unique|array_unshift|array_values|array_walk|arsort|ascii2ebcdic|asin|asinh|asort|aspell_check|aspell_check_raw|aspell_new|aspell_suggest|assert|assert_options|atan|atan2|atanh|base64_decode|base64_encode|base_convert|basename|bcadd|bccomp|bcdiv|bcmod|bcmul|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|call_user_func|call_user_func_array|call_user_method|call_user_method_array|ccvs_add|ccvs_auth|ccvs_command|ccvs_count|ccvs_delete|ccvs_done|ccvs_init|ccvs_lookup|ccvs_new|ccvs_report|ccvs_return|ccvs_reverse|ccvs_sale|ccvs_status|ccvs_textvalue|ccvs_void|ceil|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_exists|clearstatcache|closedir|closelog|com|com_addref|com_get|com_invoke|com_isenum|com_load|com_load_typelib|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|convert_cyr_string|copy|cos|cosh|count|count_chars|cpdf_add_annotation|cpdf_add_outline|cpdf_arc|cpdf_begin_text|cpdf_circle|cpdf_clip|cpdf_close|cpdf_closepath|cpdf_closepath_fill_stroke|cpdf_closepath_stroke|cpdf_continue_text|cpdf_curveto|cpdf_end_text|cpdf_fill|cpdf_fill_stroke|cpdf_finalize|cpdf_finalize_page|cpdf_global_set_document_limits|cpdf_import_jpeg|cpdf_lineto|cpdf_moveto|cpdf_newpath|cpdf_open|cpdf_output_buffer|cpdf_page_init|cpdf_place_inline_image|cpdf_rect|cpdf_restore|cpdf_rlineto|cpdf_rmoveto|cpdf_rotate|cpdf_rotate_text|cpdf_save|cpdf_save_to_file|cpdf_scale|cpdf_set_action_url|cpdf_set_char_spacing|cpdf_set_creator|cpdf_set_current_page|cpdf_set_font|cpdf_set_font_directories|cpdf_set_font_map_file|cpdf_set_horiz_scaling|cpdf_set_keywords|cpdf_set_leading|cpdf_set_page_animation|cpdf_set_subject|cpdf_set_text_matrix|cpdf_set_text_pos|cpdf_set_text_rendering|cpdf_set_text_rise|cpdf_set_title|cpdf_set_viewer_preferences|cpdf_set_word_spacing|cpdf_setdash|cpdf_setflat|cpdf_setgray|cpdf_setgray_fill|cpdf_setgray_stroke|cpdf_setlinecap|cpdf_setlinejoin|cpdf_setlinewidth|cpdf_setmiterlimit|cpdf_setrgbcolor|cpdf_setrgbcolor_fill|cpdf_setrgbcolor_stroke|cpdf_show|cpdf_show_xy|cpdf_stringwidth|cpdf_stroke|cpdf_text|cpdf_translate|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|curl_close|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_version|current|cybercash_base64_decode|cybercash_base64_encode|cybercash_decr|cybercash_encr|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dblist|dbmclose|dbmdelete|dbmexists|dbmfetch|dbmfirstkey|dbminsert|dbmnextkey|dbmopen|dbmreplace|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debugger_off|debugger_on|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|dotnet_load|doubleval|each|easter_date|easter_days|ebcdic2ascii|echo|empty|end|ereg|ereg_replace|eregi|eregi_replace|error_log|error_reporting|escapeshellarg|escapeshellcmd|eval|exec|exif_imagetype|exif_read_data|exif_thumbnail|exit|exp|explode|expm1|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_select_db|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filetype|floatval|flock|floor|flush|fmod|fnmatch|fopen|fpassthru|fprintf|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gd_info|get_browser|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getcwd|getdate|getenv|gethostbyaddr|gethostbyname|gethostbynamel|getimagesize|getlastmod|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getopt|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|gettext|gettimeofday|gettype|glob|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_xor|gmstrftime|gregoriantojd|gzclose|gzcompress|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|header|headers_list|headers_sent|hebrev|hebrevc|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|http_build_query|hw_api_attribute|hw_api_content|hw_api_object|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_hgcsp|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|idate|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|image2wbmp|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepscopyfont|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchstructure|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implode|import_request_variables|in_array|ingres_autocommit|ingres_close|ingres_commit|ingres_connect|ingres_fetch_array|ingres_fetch_object|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_query|ingres_rollback|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|intval|ip2long|iptcembed|iptcparse|ircg_channel_mode|ircg_disconnect|ircg_fetch_error_msg|ircg_get_username|ircg_html_encode|ircg_ignore_add|ircg_ignore_del|ircg_invite|ircg_is_conn_alive|ircg_join|ircg_kick|ircg_list|ircg_lookup_format_messages|ircg_lusers|ircg_msg|ircg_nick|ircg_nickname_escape|ircg_nickname_unescape|ircg_notice|ircg_oper|ircg_part|ircg_pconnect|ircg_register_format_messages|ircg_set_current|ircg_set_file|ircg_set_on_die|ircg_topic|ircg_who|ircg_whois|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isset|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|juliantojd|key|krsort|ksort|lcg_value|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|levenshtein|link|linkinfo|list|localeconv|localtime|log|log10|log1p|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_strlen|mb_strpos|mb_strrpos|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcal_append_event|mcal_close|mcal_create_calendar|mcal_date_compare|mcal_date_valid|mcal_day_of_week|mcal_day_of_year|mcal_days_in_month|mcal_delete_calendar|mcal_delete_event|mcal_event_add_attribute|mcal_event_init|mcal_event_set_alarm|mcal_event_set_category|mcal_event_set_class|mcal_event_set_description|mcal_event_set_end|mcal_event_set_recur_daily|mcal_event_set_recur_monthly_mday|mcal_event_set_recur_monthly_wday|mcal_event_set_recur_none|mcal_event_set_recur_weekly|mcal_event_set_recur_yearly|mcal_event_set_start|mcal_event_set_title|mcal_expunge|mcal_fetch_current_stream_event|mcal_fetch_event|mcal_is_leap_year|mcal_list_alarms|mcal_list_events|mcal_next_recurrence|mcal_open|mcal_popen|mcal_rename_calendar|mcal_reopen|mcal_snooze|mcal_store_event|mcal_time_valid|mcal_week_of_year|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|mcve_adduser|mcve_adduserarg|mcve_bt|mcve_checkstatus|mcve_chkpwd|mcve_chngpwd|mcve_completeauthorizations|mcve_connect|mcve_connectionerror|mcve_deleteresponse|mcve_deletetrans|mcve_deleteusersetup|mcve_deluser|mcve_destroyconn|mcve_destroyengine|mcve_disableuser|mcve_edituser|mcve_enableuser|mcve_force|mcve_getcell|mcve_getcellbynum|mcve_getcommadelimited|mcve_getheader|mcve_getuserarg|mcve_getuserparam|mcve_gft|mcve_gl|mcve_gut|mcve_initconn|mcve_initengine|mcve_initusersetup|mcve_iscommadelimited|mcve_liststats|mcve_listusers|mcve_maxconntimeout|mcve_monitor|mcve_numcolumns|mcve_numrows|mcve_override|mcve_parsecommadelimited|mcve_ping|mcve_preauth|mcve_preauthcompletion|mcve_qc|mcve_responseparam|mcve_return|mcve_returncode|mcve_returnstatus|mcve_sale|mcve_setblocking|mcve_setdropfile|mcve_setip|mcve_setssl|mcve_setssl_files|mcve_settimeout|mcve_settle|mcve_text_avs|mcve_text_code|mcve_text_cv|mcve_transactionauth|mcve_transactionavs|mcve_transactionbatch|mcve_transactioncv|mcve_transactionid|mcve_transactionitem|mcve_transactionssent|mcve_transactiontext|mcve_transinqueue|mcve_transnew|mcve_transparam|mcve_transsend|mcve_ub|mcve_uwait|mcve_verifyconnection|mcve_verifysslcert|mcve_void|md5|md5_file|mdecrypt_generic|memory_get_usage|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_setcubicthreshold|ming_setscale|ming_useswfversion|mkdir|mktime|money_format|move_uploaded_file|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_getdata|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_setdata|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|muscat_close|muscat_get|muscat_give|muscat_setup|muscat_setup_net|mysql_affected_rows|mysql_change_user|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli_affected_rows|mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_change_user|mysqli_character_set_name|mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_dump_debug_info|mysqli_embedded_connect|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|mysqli_free_result|mysqli_get_client_info|mysqli_get_client_version|mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_master_query|mysqli_more_results|mysqli_multi_query|mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_prepare|mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_report|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|mysqli_send_query|mysqli_server_end|mysqli_server_init|mysqli_set_opt|mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt_init|mysqli_stmt_affected_rows|mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_free_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning_count|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|next|ngettext|nl2br|nl_langinfo|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|number_format|ob_clean|ob_end_clean|ob_end_flush|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_by_name|oci_cancel|oci_close|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_copy|oci_lob_is_equal|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|opendir|openlog|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_new|openssl_csr_sign|openssl_error_string|openssl_free_key|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ora_bind|ora_close|ora_columnname|ora_columnsize|ora_columntype|ora_commit|ora_commitoff|ora_commiton|ora_do|ora_error|ora_errorcode|ora_exec|ora_fetch|ora_fetch_into|ora_getcolumn|ora_logoff|ora_logon|ora_numcols|ora_numrows|ora_open|ora_parse|ora_plogon|ora_rollback|ord|output_add_rewrite_var|output_reset_rewrite_vars|overload|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parse_ini_file|parse_str|parse_url|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_page|pdf_begin_pattern|pdf_begin_template|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_curveto|pdf_delete|pdf_end_page|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_stroke|pdf_findfont|pdf_get_buffer|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_initgraphics|pdf_lineto|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_page|pdf_open_png|pdf_open_tiff|pdf_place_image|pdf_place_pdi_page|pdf_rect|pdf_restore|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_font|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_translate|pfpro_cleanup|pfpro_init|pfpro_process|pfpro_process_raw|pfpro_version|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_fetch_all|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_type|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_pconnect|pg_ping|pg_port|pg_put_line|pg_query|pg_result_error|pg_result_seek|pg_result_status|pg_select|pg_send_query|pg_set_client_encoding|pg_trace|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_ctermid|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_isatty|posix_kill|posix_mkfifo|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_grep|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|qdom_error|qdom_tree|quoted_printable_decode|quotemeta|rad2deg|rand|range|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_read_history|readline_write_history|readlink|realpath|recode|recode_file|recode_string|register_shutdown_function|register_tick_function|rename|reset|restore_error_handler|restore_include_path|rewind|rewinddir|rmdir|round|rsort|rtrim|scandir|sem_acquire|sem_get|sem_release|sem_remove|serialize|sesam_affected_rows|sesam_commit|sesam_connect|sesam_diagnostic|sesam_disconnect|sesam_errormsg|sesam_execimm|sesam_fetch_array|sesam_fetch_result|sesam_fetch_row|sesam_field_array|sesam_field_name|sesam_free_result|sesam_num_fields|sesam_query|sesam_rollback|sesam_seek_row|sesam_settransaction|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|set_error_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_time_limit|setcookie|setlocale|setrawcookie|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|sin|sinh|sizeof|sleep|snmp_get_quick_print|snmp_set_quick_print|snmpget|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_iovec_add|socket_iovec_alloc|socket_iovec_delete|socket_iovec_fetch|socket_iovec_free|socket_iovec_set|socket_last_error|socket_listen|socket_read|socket_readv|socket_recv|socket_recvfrom|socket_recvmsg|socket_select|socket_send|socket_sendmsg|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|socket_writev|sort|soundex|split|spliti|sprintf|sql_regcase|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_fetch_array|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqrt|srand|sscanf|stat|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_context_create|stream_context_get_options|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_register_wrapper|stream_select|stream_set_blocking|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_get_name|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_wrapper_register|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpos|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfbutton_keypress|swfdisplayitem|swffill|swffont|swfgradient|swfmorph|swfmovie|swfshape|swfsprite|swftext|swftextfield|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|syslog|system|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy_access_count|tidy_clean_repair|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_body|tidy_get_config|tidy_get_error_buffer|tidy_get_head|tidy_get_html|tidy_get_html_ver|tidy_get_output|tidy_get_release|tidy_get_root|tidy_get_status|tidy_getopt|tidy_is_xhtml|tidy_is_xml|tidy_load_config|tidy_parse_file|tidy_parse_string|tidy_repair_file|tidy_repair_string|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|time|tmpfile|token_get_all|token_name|touch|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|user_error|usleep|usort|utf8_decode|utf8_encode|var_dump|var_export|variant|version_compare|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|wordwrap|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xpath_eval|xpath_eval_expression|xpath_new_context|xptr_eval|xptr_new_context|xsl_xsltprocessor_get_parameter|xsl_xsltprocessor_has_exslt_support|xsl_xsltprocessor_import_stylesheet|xsl_xsltprocessor_register_php_functions|xsl_xsltprocessor_remove_parameter|xsl_xsltprocessor_set_parameter|xsl_xsltprocessor_transform_to_doc|xsl_xsltprocessor_transform_to_uri|xsl_xsltprocessor_transform_to_xml|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|zlib_get_coding_type".split("|")),c=e.arrayToMap("abstract|and|array|as|break|case|catch|cfunction|class|clone|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|for|foreach|function|include|include_once|global|goto|if|implements|interface|instanceof|namespace|new|old_function|or|private|protected|public|return|require|require_once|static|switch|throw|try|use|var|while|xor".split("|")),d=e.arrayToMap("true|false|null|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__CLASS__".split("|")),g=e.arrayToMap("$_GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),h=e.arrayToMap([]);this.$rules={start:[{token:"support",regex:"<\\?(?:php|\\=)"},{token:"support",regex:"\\?>"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"#.*$"},a.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"},{token:"constant.language",regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"},{token:function(a){if(c.hasOwnProperty(a))return"keyword";if(d.hasOwnProperty(a))return"constant.language";if(g.hasOwnProperty(a))return"variable.language";if(h.hasOwnProperty(a))return"invalid.illegal";if(b.hasOwnProperty(a))return"support.function";if(a=="debugger")return"invalid.deprecated";if(a.match(/^(\$[a-zA-Z][a-zA-Z0-9_]*|self|parent)$/))return"variable";return"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]},this.addRules(a.getRules(),"doc-"),this.$rules["doc-start"][0].next="start"},d.inherits(PhpHighlightRules,g),b.PhpHighlightRules=PhpHighlightRules}),define("ace/mode/doc_comment_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text_highlight_rules").TextHighlightRules,f=function(){this.$rules={start:[{token:"comment.doc",regex:"\\*\\/",next:"start"},{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc",regex:"s+"},{token:"comment.doc",regex:"TODO"},{token:"comment.doc",regex:"[^@\\*]+"},{token:"comment.doc",regex:"."}]}};d.inherits(f,e),function(){this.getStartRule=function(a){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:a}}}.call(f.prototype),b.DocCommentHighlightRules=f});define("ace/mode/xml",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text").Mode,f=a("ace/tokenizer").Tokenizer,g=a("ace/mode/xml_highlight_rules").XmlHighlightRules,h=function(){this.$tokenizer=new f((new g).getRules())};d.inherits(h,e),function(){this.getNextLineIndent=function(a,b,c){return this.$getIndent(b)}}.call(h.prototype),b.Mode=h}),define("ace/mode/xml_highlight_rules",function(a,b,c){var d=a("pilot/oop"),e=a("ace/mode/text_highlight_rules").TextHighlightRules,f=function(){this.$rules={start:[{token:"text",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:"xml_pe",regex:"<\\?.*?\\?>"},{token:"comment",regex:"<\\!--",next:"comment"},{token:"text",regex:"<\\/?",next:"tag"},{token:"text",regex:"\\s+"},{token:"text",regex:"[^<]+"}],tag:[{token:"text",regex:">",next:"start"},{token:"keyword",regex:"[-_a-zA-Z0-9:]+"},{token:"text",regex:"\\s+"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"}],cdata:[{token:"text",regex:"\\]\\]>",next:"start"},{token:"text",regex:"\\s+"},{token:"text",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment",regex:".*?-->",next:"start"},{token:"comment",regex:".+"}]}};d.inherits(f,e),b.XmlHighlightRules=f});define("ace/theme/eclipse",function(a,b,c){var d=a("pilot/dom"),e=a("text!ace/theme/eclipse.css");d.importCssString(e),b.cssClass="ace-eclipse"}),define("text!ace/theme/eclipse.css",".ace-eclipse .ace_editor {  border: 2px solid rgb(159, 159, 159);}.ace-eclipse .ace_editor.ace_focus {  border: 2px solid #327fbd;}.ace-eclipse .ace_gutter {  width: 40px;  background: rgb(227, 227, 227);  border-right: 1px solid rgb(159, 159, 159);\t   color: rgb(136, 136, 136);}.ace-eclipse .ace_gutter-layer {  right: 10px;  text-align: right;}.ace-eclipse .ace_text-layer {  cursor: text;}.ace-eclipse .ace_cursor {  border-left: 1px solid black;}.ace-eclipse .ace_line .ace_keyword, .ace-eclipse .ace_line .ace_variable {  color: rgb(127, 0, 85);}.ace-eclipse .ace_line .ace_constant.ace_buildin {  color: rgb(88, 72, 246);}.ace-eclipse .ace_line .ace_constant.ace_library {  color: rgb(6, 150, 14);}.ace-eclipse .ace_line .ace_function {  color: rgb(60, 76, 114);}.ace-eclipse .ace_line .ace_string {  color: rgb(42, 0, 255);}.ace-eclipse .ace_line .ace_comment {  color: rgb(63, 127, 95);}.ace-eclipse .ace_line .ace_comment.ace_doc {  color: rgb(63, 95, 191);}.ace-eclipse .ace_line .ace_comment.ace_doc.ace_tag {  color: rgb(127, 159, 191);}.ace-eclipse .ace_line .ace_constant.ace_numeric {}.ace-eclipse .ace_line .ace_tag {\tcolor: rgb(63, 127, 127);}.ace-eclipse .ace_line .ace_xml_pe {  color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {  background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {  margin: -1px 0 0 -1px;  border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_marker-layer .ace_active_line {  background: rgb(232, 242, 254);}");function GUITextBox(id,settings)
{this.id=id;this.settings=settings;var widgetElement=dfx.getId(this.id);this.textBox=dfx.getClass('input',widgetElement)[0];this._resizeCalcElem=null;this.init();GUI.addWidgetEvent(this,'keyPress');GUI.addWidgetEvent(this,'keyUp');GUI.addWidgetEvent(this,'focus');GUI.addWidgetEvent(this,'blur');}
GUITextBox.prototype={init:function()
{var self=this;var widgetElement=dfx.getId(self.id);var textBox=dfx.getClass('input',widgetElement)[0];dfx.addEvent(textBox,'blur',function(){if(self.useDefaultValue()!==true){self.useHint();}
dfx.removeClass(textBox,'selected');self.fireBlurCallbacks();});dfx.addEvent(textBox,'focus',function(){self.removeHint();dfx.addClass(textBox,'selected');self.fireFocusCallbacks();});var value=textBox.value;dfx.addEvent(textBox,'keypress',function(e){if(value!==this.value){value=this.value;self._setModified(true);}
self.fireKeyPressCallbacks(value,e);});dfx.addEvent(textBox,'keyup',function(e){if(value!==this.value){value=this.value;self._setModified(true);}
self._resize();self.fireKeyUpCallbacks(value,e);});dfx.addEvent(textBox,'input paste',function(e){if(value!==this.value){self._setModified(true);}});},setHintValue:function(newHintValue)
{this.settings.hint=newHintValue;this.useHint();},setHintAsDefaultValue:function(hintAsDefault)
{this.settings.hintAsDefault=hintAsDefault;},getValue:function()
{var widgetElement=dfx.getId(this.id);var textBox=dfx.getClass('input',widgetElement)[0];if(!textBox){return'';}
var value=textBox.value;if(this.hintAsDefault()!==true){if(value===this.settings.hint&&dfx.hasClass(textBox,'usingHint')===true){value='';}}
return value;},setValue:function(value,isInitialValue)
{var widgetElement=dfx.getId(this.id);var textBox=dfx.getClass('input',widgetElement)[0];if(value!==textBox.value){textBox.value=value;this._resize();if(isInitialValue!==true){this._setModified(true);}}},focus:function()
{this.textBox.focus();},select:function()
{this.textBox.select();},revert:function()
{this.setValue(this.settings.value);GUI.setModified(this,false);},removeHint:function()
{if(dfx.hasClass(this.textBox,'usingHint')===true&&this.textBox.value===this.settings.hint){this.textBox.value='';dfx.removeClass(this.textBox,'usingHint');this.fireKeyUpCallbacks(this.textBox.value);}},useHint:function()
{if(this.textBox.value.length===0&&!this.settings.defaultValue&&this.settings.hint){dfx.addClass(this.textBox,'usingHint');this.textBox.value=this.settings.hint;this.fireKeyUpCallbacks(this.textBox.value);}},useDefaultValue:function()
{if(this.textBox.value.length===0&&this.settings.defaultValue){this.textBox.value=this.settings.defaultValue;return true;}
return false;},disable:function()
{this.textBox.disabled=true;},enable:function()
{this.textBox.disabled=false;},setReadOnly:function(value)
{this.textBox.readOnly=true;},_setModified:function(modified)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,modified,true);}else{GUI.setModified(this,modified,false);}},hintAsDefault:function()
{return this.settings.hintAsDefault;},_resize:function()
{if(!this.settings.autoResize){return;}
var value=this.getValue();var width=0;if(value!==''){var calcElem=this._resizeCalcElem;if(calcElem===null){calcElem=document.createElement('span');this._resizeCalcElem=calcElem;}
dfx.setHtml(calcElem,value);document.body.appendChild(calcElem);width=dfx.getElementWidth(calcElem);dfx.remove(calcElem);}
if((this.settings.autoResize.maxWidth&&width>this.settings.autoResize.maxWidth)||(this.settings.autoResize.minWidth&&width<this.settings.autoResize.minWidth)){return;}
dfx.setStyle(this.textBox,'width',width+15+'px');}}
function GUITextBoxWebAddress(id,settings)
{this.id=id;this.settings=settings;var widgetElement=dfx.getId(this.id);this.textBox=dfx.getClass('input',widgetElement)[0];this.init();GUI.addWidgetEvent(this,'keyPress');GUI.addWidgetEvent(this,'keyUp');GUI.addWidgetEvent(this,'focus');GUI.addWidgetEvent(this,'blur');}
GUITextBoxWebAddress.prototype={validateSetValue:function(callback)
{var value=this.getValue();value=dfx.trim(value);var validationResult=[]
if(this.settings.blankValid===true&&value!==''||this.settings.blankValid===false){if(this.settings.addressType==='email'){var valueValid=dfx.validateEmail(value);}else if(this.settings.addressType==='URL'){var requireScheme=true;var allowedSchemes=['http','https'];var valueValid=dfx.validateUrl(value,requireScheme,allowedSchemes,this.settings.allowLeadingPathUnderscore,this.settings.allowUpperCasePath);}else if(this.settings.addressType==='path'){var valueValid=dfx.validateSingleUrlPath(value,this.settings.allowLeadingPathUnderscore,this.settings.allowUpperCasePath);}else{var valueValid=false;}
if(valueValid===false){validationResult=[this.getValidationErrorMessage()];}}
callback.call(self,validationResult);},getValidationErrorMessage:function()
{var supportedDataTypes=['email','URL','path',];if(dfx.inArray(this.settings.addressType,supportedDataTypes)===true){if(this.settings.invalidInputMsg!==''){var errorMessage=this.settings.invalidInputMsg;}else if(this.settings.addressType==='email'){var errorMessage='Entered email address is not valid';}else if(this.settings.addressType==='URL'){var errorMessage='Entered web location is not valid';}else if(this.settings.addressType==='path'){var errorMessage='Entered web path is not valid';}}else{var errorMessage='Text box acting as unknown data type';}
return errorMessage;}};dfx.addLoadEvent(function(){dfx.inherits('GUITextBoxWebAddress','GUITextBox',true)});function GUIThumbBrowser(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);this.wrapper=dfx.getClass('GUIThumbBrowser-thumbWrapper',this.elem)[0];this.lineage=[];this.selected={};this.settings['defaultNode']=this.settings['startNode'];if(dfx.isArray(this.settings['startNode'])===true){this.settings['startNode']=this.settings['startNode'][0];}
this._loaderElem=null;this._lineageWidget=null;if(this.settings.lineageWidgetId){this._lineageWidget=GUI.getWidget(this.settings.lineageWidgetId);}
GUI.addWidgetEvent(this,'itemClicked');GUI.addWidgetEvent(this,'itemDoubleClicked');this.init();}
GUIThumbBrowser.prototype={init:function()
{var self=this;dfx.addEvent(this.elem,'click',function(e){self._handleClick(e);});dfx.addEvent(this.elem,'dblclick',function(e){self._handleDoubleClick(e);});if(this._lineageWidget){this._lineageWidget.setLineage(this.getLineage());this._lineageWidget.addItemClickedCallback(function(itemid,index){self.lineageItemClicked(itemid,index);});}
if(dfx.isset(this.settings.initialItemid)===true){this.selectItem(this.settings.initialItemid,0);}},_handleClick:function(e)
{var target=dfx.getMouseEventTarget(e);var elem=null;if((elem=this._hasClass(target,'GUIThumbBrowser-item',this.elem,true))!==null){this.itemClicked(elem,e);}},_handleDoubleClick:function(e)
{var target=dfx.getMouseEventTarget(e);var elem=null;if((elem=this._hasClass(target,'GUIThumbBrowser-item',this.elem,true))!==null){this.itemDoubleClicked(elem,e);}},_hasClass:function(elem,className,stopElem,returnElement)
{if(dfx.hasClass(elem,className)===true){if(returnElement===true){return elem;}else{return true;}}else if(elem.parentNode&&elem.parentNode!==stopElem){return this._hasClass(elem.parentNode,className,stopElem,returnElement);}
return null;},selectItem:function(itemid,columnIndex)
{var items=dfx.getClass('GUIThumbBrowser-item',dfx.getId(this.id));var iln=items.length;for(var i=0;i<iln;i++){if(dfx.attr(items[i],'itemid').toString()===itemid.toString()){this.itemClicked(items[i]);return true;}}
return false;},itemClicked:function(itemElement,e)
{if(this.settings.enableMultiSelect!==true||!e||(e.ctrlKey!==true&&e.metaKey!==true)){dfx.removeClass(dfx.getClass('selected',this.wrapper),'selected');this.selected={};}
var assetid=dfx.attr(itemElement,'itemid');var name=dfx.attr(itemElement,'itemtitle');dfx.addClass(itemElement,'selected');this.selected[assetid]=name;this.removeLastFromLineage();this.addToLineage(assetid,name);this._lineageWidget.setLineage(this.getLineage());this.fireItemClickedCallbacks(dfx.attr(itemElement,'itemid'),dfx.attr(itemElement,'childcount'),itemElement);},itemDoubleClicked:function(itemElement,e)
{if(this.settings.enableMultiSelect!==true||!e||(e.ctrlKey!==true&&e.metaKey!==true)){dfx.removeClass(dfx.getClass('selected',this.wrapper),'selected');this.selected={};}
var parentElement=this.wrapper;var assetid=dfx.attr(itemElement,'itemid');var name=dfx.attr(itemElement,'itemtitle');this.settings['startNode']=assetid;dfx.attr(parentElement,'parentid',assetid);this.loadChildren(parentElement);var loadStatus=true;if(parentElement.innerHtml==='&nbsp;'){loadStatus=false;}
if(loadStatus===true){this.itemClicked(itemElement,e);this.fireItemDoubleClickedCallbacks(dfx.attr(itemElement,'itemid'),dfx.attr(itemElement,'childcount'),itemElement);}},lineageItemClicked:function(itemid,index)
{if(this.settings.enableMultiSelect!==true||!e||(e.ctrlKey!==true&&e.metaKey!==true)){dfx.removeClass(dfx.getClass('selected',this.wrapper),'selected');this.selected={};}
var name='';var liItems=dfx.getTag('li',this._lineageWidget.elem);var liItemsLn=liItems.length;for(var i=0;i<liItemsLn;i++){if(itemid.toString()===dfx.attr(liItems[i],'itemid')){name=dfx.attr(liItems[i],'itemname');break;}}
var parentElement=this.wrapper;this.selected[itemid]=name;dfx.attr(parentElement,'parentid',this.getParentFromLineage(itemid));this.loadChildren(parentElement);this.removeFromLineage(itemid);this.addToLineage(itemid,name);this._lineageWidget.setLineage(this.lineage);},loadChildren:function(parentElement)
{var self=this;var parentid=dfx.attr(parentElement,'parentid');this.settings['startNode']=parentid;var params={settings:dfx.jsonEncode(this.settings),parentid:parentid};GUI.sendRequest('GUIThumbBrowser','getChildrenContents',params,function(contents){if(contents!=='&nbsp;'){dfx.empty(parentElement);dfx.setHtml(parentElement,contents);dfx.attr(parentElement,'parentid',parentid);var items=dfx.getClass('GUIThumbBrowser-item');dfx.foreach(items,function(id){var item=items[id];var assetid=dfx.attr(item,'itemid');for(var key in self.selected){if(key==assetid){dfx.addClass(item,'selected');}}
return true;});}},'raw');},addToLineage:function(itemid,name)
{var newItem={assetid:itemid,name:name};this.lineage.push(newItem);},removeFromLineage:function(itemid)
{var newLineage=[];var lineageLn=this.lineage.length;for(var id=0;id<lineageLn;id++){var assetid=this.lineage[id]['assetid'];var name=this.lineage[id]['name'];if(assetid.toString()===itemid.toString()){break;}
newLineage.push({assetid:assetid,name:name});}
this.lineage=newLineage;this._lineageWidget.setLineage(newLineage);},removeLastFromLineage:function()
{var removeLast=false;var allClasses=dfx.getClass('GUIThumbBrowser-item',this.wrapper);var classesLn=allClasses.length;var lineageLn=this.lineage.length;for(var i=0;i<classesLn;i++){var assetid=dfx.attr(allClasses[i],'itemid').toString();for(var j=0;j<lineageLn;j++){var id=this.lineage[j]['assetid'].toString();if(id===assetid){removeLast=true;}}}
if(removeLast===true){this.lineage.pop();}},getLineage:function()
{return this.lineage;},getParentFromLineage:function(itemid)
{if(dfx.isArray(this.settings['defaultNode'])===true){var parentid=this.settings['defaultNode'][0];}else{var parentid=this.settings['defaultNode'];}
var lineageLn=this.lineage.length;for(var id=0;id<lineageLn;id++){var assetid=this.lineage[id]['assetid'];if(assetid.toString()===itemid.toString()){var parentkey=(id-1);if(parentkey>=0){parentid=this.lineage[parentkey]['assetid'];break;}}}
return parentid;},setLineage:function(lineage)
{this.lineage=lineage;},getValue:function()
{return dfx.arrayKeys(this.selected);},getSelected:function()
{return this.selected;}};function GUITimeline(id,settings)
{this.id=id;this.settings=settings;this.settings.initialDate=new Date(this.settings.initialDate);if(this.settings.earliestDate!==null){this.settings.earliestDate=new Date(this.settings.earliestDate);}
if(this.settings.latestDate!==null){this.settings.latestDate=new Date(this.settings.latestDate);}
this.current={date:null,view:this.settings.initialView}
GUI.addWidgetEvent(this,'itemSelected');GUI.addWidgetEvent(this,'rangeChanged');this.init();}
GUITimeline.prototype={init:function()
{var self=this;dfx.addEvent(dfx.getId(this.id),'mouseover',function(e){var target=dfx.getMouseEventTarget(e);dfx.removeClass(dfx.getClass('divider',dfx.getId(this.id)),'hover');if(dfx.hasClass(target,'divider')===true){dfx.addClass(target,'hover');}});dfx.addEvent(dfx.getId(this.id),'mouseout',function(e){dfx.removeClass(dfx.getClass('divider',dfx.getId(this.id)),'hover');});dfx.addEvent(dfx.getId(this.id),'click',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'divider')===true){var selectedDate=new Date(self.current.date.toString());switch(self.current.view){case'year':var month=dfx.attr(target,'monthid');selectedDate.setMonth(month-1);selectedDate.setDate(1);selectedDate.setHours(0);break;case'month':var day=dfx.attr(target,'dayid');selectedDate.setDate(day);selectedDate.setHours(0);break;case'day':var hour=dfx.attr(target,'hourid');selectedDate.setHours(hour);break;default:break;}
self.fireItemSelectedCallbacks.call(self,self.current.view,selectedDate);}else if(target.id===(self.id+'-date-indicator-year')){if(self.current.view!=='year'){self.showYear(self.current.date);}}else if(target.id===(self.id+'-date-indicator-month')){if(self.current.view!=='month'){self.showMonth(self.current.date);}}else if(target.id===(self.id+'-date-indicator-day')){if(self.current.view!=='day'){self.showDay(self.current.date);}}else if((target.id===(self.id+'-date-indicator-left-arrow'))||(target.parentNode.id===(self.id+'-date-indicator-left-arrow'))){if(dfx.hasClass(dfx.getId(self.id+'-date-indicator-left-arrow'),'disabled')===false){var newDate=new Date(self.current.date.toString());switch(self.current.view){case'year':if((newDate.getMonth()===1)&&(newDate.getDate()===29)){newDate.setDate(28);}
newDate.setYear(newDate.getFullYear()-1);break;case'month':newDate.setMonth(newDate.getMonth()-1);if(newDate.getDate()!==self.current.date.getDate()){newDate.setDate(0);}
break;case'day':newDate.setDate(newDate.getDate()-1);break;default:break;}
self.updateView(newDate);}}else if((target.id===(self.id+'-date-indicator-right-arrow'))||(target.parentNode.id===(self.id+'-date-indicator-right-arrow'))){if(dfx.hasClass(dfx.getId(self.id+'-date-indicator-right-arrow'),'disabled')===false){var newDate=new Date(self.current.date.toString());switch(self.current.view){case'year':if((newDate.getMonth()===1)&&(newDate.getDate()===29)){newDate.setDate(28);}
newDate.setYear(newDate.getFullYear()+1);break;case'month':newDate.setMonth(newDate.getMonth()+1);if(newDate.getDate()!==self.current.date.getDate()){newDate.setDate(0);}
break;case'day':newDate.setDate(newDate.getDate()+1);break;default:break;}
self.updateView.call(self,newDate);}}});this.updateView(this.settings.initialDate);},getValue:function()
{return{date:this.current.date,view:this.current.view};},updateView:function(date,forceRedraw)
{if(forceRedraw===undefined){forceRedraw=false;}
switch(this.current.view){case'year':this.showYear(date,forceRedraw);break;case'month':this.showMonth(date,forceRedraw);break;case'day':this.showDay(date,forceRedraw);break;default:break;}},updateArrows:function()
{var previous=true;var next=true;var prevDate=new Date(this.current.date.toString());var nextDate=new Date(this.current.date.toString());var earliest=null;var latest=null;if(this.settings.earliestDate!==null){var earliest=new Date(this.settings.earliestDate.toString());}
if(this.settings.latestDate!==null){var latest=new Date(this.settings.latestDate.toString());}
switch(this.current.view){case'year':if((prevDate.getMonth()===1)&&(prevDate.getDate()===29)){prevDate.setDate(28);}
if((nextDate.getMonth()===1)&&(nextDate.getDate()===29)){nextDate.setDate(28);}
prevDate.setFullYear(prevDate.getFullYear()-1);nextDate.setFullYear(nextDate.getFullYear()+1);if(earliest!==null){earliest.setMonth(0);earliest.setDate(1);}
if(latest!==null){latest.setMonth(12);latest.setDate(1);}
break;case'month':prevDate.setMonth(prevDate.getMonth()-1);nextDate.setMonth(nextDate.getMonth()+1);if(prevDate.getDate()!==this.current.date.getDate()){prevDate.setDate(0);}
if(nextDate.getDate()!==this.current.date.getDate()){nextDate.setDate(0);}
if(earliest!==null){earliest.setDate(1);}
if(latest!==null){latest.setMonth(latest.getMonth()+1);latest.setDate(1);}
break;case'day':prevDate.setDate(prevDate.getDate()-1);nextDate.setDate(nextDate.getDate()+1);if(latest!==null){latest.setDate(latest.getDate()+1);}
break;default:break;}
if(earliest!==null){earliest.setHours(0);earliest.setMinutes(0);earliest.setSeconds(0);if(prevDate.getTime()<earliest.getTime()){dfx.addClass(dfx.getId(this.id+'-date-indicator-left-arrow'),'disabled');}else{dfx.removeClass(dfx.getId(this.id+'-date-indicator-left-arrow'),'disabled');}}
if(latest!==null){latest.setHours(0);latest.setMinutes(0);latest.setSeconds(0);if(nextDate.getTime()>=latest.getTime()){dfx.addClass(dfx.getId(this.id+'-date-indicator-right-arrow'),'disabled');}else{dfx.removeClass(dfx.getId(this.id+'-date-indicator-right-arrow'),'disabled');}}},showYear:function(date,forceRedraw)
{var self=this;var year=date.getFullYear();var leapYear=false;if(((year%100===0)&&(year%400===0))||((year%100!==0)&&(year%4===0))){var leapYear=true;}
if(forceRedraw===undefined){forceRedraw=false;}
dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-day'),this.settings._units.day);dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-month'),this.settings._units.month);dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-year'),year);dfx.getId(this.id+'-date-indicator-left-arrow').setAttribute('title',this.settings._arrowText.previous.year);dfx.getId(this.id+'-date-indicator-right-arrow').setAttribute('title',this.settings._arrowText.next.year);dfx.removeClass(dfx.getId(this.id),'day-view');dfx.removeClass(dfx.getId(this.id),'month-view');dfx.addClass(dfx.getId(this.id),'year-view');var viewChanged=false;if((this.current.view!=='year')||(!this.current.date)){viewChanged=true;}else if(year!==this.current.date.getFullYear()){viewChanged=true;}
this.current.date=date;this.current.view='year';if((viewChanged===true)||(forceRedraw===true)){var dividerContainer=dfx.getId(this.id+'-divider-container');dfx.remove(dividerContainer.childNodes);var dividerContainer=dfx.getId(this.id+'-divider-container');var dividerWidth=dfx.getElementDimensions(dividerContainer,true).width;var totalPortion=0;if(leapYear===true){dfx.addClass(dfx.getId(this.id),'leap-year');var dayPortion=(1/366);}else{dfx.removeClass(dfx.getId(this.id),'leap-year');var dayPortion=(1/365);}
var dividerClone=dividerContainer.cloneNode(false);dfx.setStyle(dividerClone,'display','none');for(var i=0;i<12;i++){var node=document.createElement('span');dfx.addClass(node,'divider');var numDays=new Date(year,i+1,1);numDays.setDate(0);numDays=numDays.getDate();if(i===1){dfx.addClass(node,'month-february');}else{dfx.addClass(node,('month-'+numDays+'-days'));}
var left=(dividerWidth*totalPortion);totalPortion+=(numDays*dayPortion);var right=(dividerWidth*totalPortion);var width=(Math.round(right)-Math.round(left));if((i%2)===0){dfx.addClass(node,'odd');}else{dfx.addClass(node,'even');}
dfx.attr(node,'monthid',i);dfx.setStyle(node,'left',Math.round(left)+'px');dfx.setStyle(node,'width',width+'px');dfx.setNodeTextContent(node,this.settings._monthNames[i]);dfx.append(dividerClone,node);}
this.updateArrows();if(forceRedraw===true){dfx.setStyle(dividerClone,'display','block');dfx.insertAfter(dividerContainer,dividerClone);dfx.remove(dividerContainer);if(viewChanged===true){self.fireRangeChangedCallbacks(self.current.view,self.current.date);}}else{this.animateTimeline(dividerClone,function(){if(viewChanged===true){self.fireRangeChangedCallbacks(self.current.view,self.current.date);}});}}},showMonth:function(date,forceRedraw)
{var self=this;var year=date.getFullYear();var month=date.getMonth();if(forceRedraw===undefined){forceRedraw=false;}
dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-day'),this.settings._units.day);dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-month'),this.settings._monthNames[month]);dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-year'),year);dfx.getId(this.id+'-date-indicator-left-arrow').setAttribute('title',this.settings._arrowText.previous.month);dfx.getId(this.id+'-date-indicator-right-arrow').setAttribute('title',this.settings._arrowText.next.month);dfx.removeClass(dfx.getId(this.id),'day-view');dfx.removeClass(dfx.getId(this.id),'year-view');dfx.addClass(dfx.getId(this.id),'month-view');var numDays=new Date(year,(month+1),1);numDays.setDate(0);numDays=numDays.getDate();var viewChanged=false;if((this.current.view!=='month')||(!this.current.date)){viewChanged=true;}else if(year!==this.current.date.getFullYear()){viewChanged=true;}else if(month!==this.current.date.getMonth()){viewChanged=true;}
this.current.date=date;this.current.view='month';if((viewChanged===true)||(forceRedraw===true)){var dividerContainer=dfx.getId(this.id+'-divider-container');var dividerWidth=dfx.getElementDimensions(dividerContainer,true).width;var dayPortion=(1/numDays);var totalPortion=0;var dividerClone=dividerContainer.cloneNode(false);dfx.setStyle(dividerClone,'display','none');for(var i=1;i<=numDays;i++){var left=(dividerWidth*totalPortion);totalPortion+=dayPortion;var right=(dividerWidth*totalPortion);var width=(Math.round(right)-Math.round(left));var node=document.createElement('span');dfx.addClass(node,'divider');dfx.addClass(node,('month-'+numDays+'-days'));if((i%2)===0){dfx.addClass(node,'even');}else{dfx.addClass(node,'odd');}
dfx.attr(node,'dayid',i);dfx.setStyle(node,'left',Math.round(left)+'px');dfx.setStyle(node,'width',width+'px');dfx.setNodeTextContent(node,this.settings._dayNames[i]);dfx.append(dividerClone,node);}
this.updateArrows();if(forceRedraw===true){dfx.setStyle(dividerClone,'display','block');dfx.insertAfter(dividerContainer,dividerClone);dfx.remove(dividerContainer);if(viewChanged===true){self.fireRangeChangedCallbacks(self.current.view,self.current.date);}}else{this.animateTimeline(dividerClone,function(){if(viewChanged===true){self.fireRangeChangedCallbacks(self.current.view,self.current.date);}});}}},showDay:function(date,forceRedraw)
{var self=this;var day=date.getDate();var month=date.getMonth();var year=date.getFullYear();if(forceRedraw===undefined){forceRedraw=false;}
dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-day'),this.settings._dayNames[day]);dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-month'),this.settings._monthNames[month]);dfx.setNodeTextContent(dfx.getId(this.id+'-date-indicator-year'),year);dfx.getId(this.id+'-date-indicator-left-arrow').setAttribute('title',this.settings._arrowText.previous.day);dfx.getId(this.id+'-date-indicator-right-arrow').setAttribute('title',this.settings._arrowText.next.day);dfx.removeClass(dfx.getId(this.id),'month-view');dfx.removeClass(dfx.getId(this.id),'year-view');dfx.addClass(dfx.getId(this.id),'day-view');var viewChanged=false;if((this.current.view!=='day')||(!this.current.date)){viewChanged=true;}else if(year!==this.current.date.getFullYear()){viewChanged=true;}else if(month!==this.current.date.getMonth()){viewChanged=true;}else if(day!==this.current.date.getDate()){viewChanged=true;}
this.current.date=date;this.current.view='day';if((viewChanged===true)||(forceRedraw===true)){var dividerContainer=dfx.getId(this.id+'-divider-container');var dividerWidth=dfx.getElementDimensions(dividerContainer,true).width;var hourPortion=(1/24);var totalPortion=0;var dividerClone=dividerContainer.cloneNode(false);dfx.setStyle(dividerClone,'display','none');for(var i=0;i<=23;i++){var left=(dividerWidth*totalPortion);totalPortion+=hourPortion;var right=(dividerWidth*totalPortion);var width=(Math.round(right)-Math.round(left));var node=document.createElement('span');dfx.addClass(node,'divider');if((i%2)===0){dfx.addClass(node,'even');}else{dfx.addClass(node,'odd');}
dfx.attr(node,'hourid',i);dfx.setStyle(node,'left',Math.round(left)+'px');dfx.setStyle(node,'width',width+'px');dfx.setNodeTextContent(node,this.settings._hourNames[i]);dfx.append(dividerClone,node);}
this.updateArrows();if(forceRedraw===true){dfx.setStyle(dividerClone,'display','block');dfx.insertAfter(dividerContainer,dividerClone);dfx.remove(dividerContainer);if(viewChanged===true){self.fireRangeChangedCallbacks(self.current.view,self.current.date);}}else{this.animateTimeline(dividerClone,function(){if(viewChanged===true){self.fireRangeChangedCallbacks(self.current.view,self.current.date);}});}}},animateTimeline:function(newContainer,callbackFn)
{var self=this;var dividerContainer=dfx.getId(this.id+'-divider-container');if(dfx.getClass('divider',dividerContainer).length>0){dfx.fadeOut(dividerContainer,300,function(){dfx.insertAfter(dividerContainer,newContainer);dfx.fadeIn(newContainer,300,function(){dfx.setStyle(newContainer,'display','block');dfx.remove(dividerContainer);if(dfx.isFn(callbackFn)===true){callbackFn();}});});}else{dfx.insertAfter(dividerContainer,newContainer);dfx.fadeIn(newContainer,300,function(){dfx.setStyle(newContainer,'display','block');dfx.remove(dividerContainer);if(dfx.isFn(callbackFn)===true){callbackFn();}});}}};function GUIToggleButton(id,settings)
{this.id=id;this.settings=settings;this._element=dfx.getId(this.id);GUI.addWidgetEvent(this,'changed');if(dfx.isset(settings.value)===false){this.currentValue=0;}else{this.currentValue=settings.value;}
this.init();}
GUIToggleButton.prototype={init:function()
{if(this.settings.disabled===false){this._addButtonClickEvents();}},_getInputElems:function()
{var inputElems=dfx.getTag('input',this._element);return inputElems;},_addButtonClickEvents:function()
{var self=this;var inputElems=this._getInputElems();dfx.foreach(inputElems,function(index){var elem=inputElems[index];dfx.addEvent(elem,'click',function(e){self.setValue(self.settings.values[index].val);});});},_removeButtonClickEvents:function()
{var inputElems=this._getInputElems();dfx.removeEvent(inputElems,'click');},getValue:function()
{return this.currentValue;},setValue:function(value,isInitValue)
{if(value!==this.currentValue){this.currentValue=value;var index=-1;var c=this.settings.values.length;for(var i=0;i<c;i++){if(this.settings.values[i].val===value){index=i;break;}}
if(index<0){return GUI.message('developer','Invalid argument','warning');}
var labels=dfx.getTag('label',this._element);var selected=labels[index];dfx.unset(labels,index);dfx.removeClass(labels,'selected');dfx.addClass(selected,'selected');if(isInitValue!==true){if(this.settings.toggleAction){eval(this.settings.toggleAction);}
this._setModified(true);this.fireChangedCallbacks(this.currentValue);}}},disable:function()
{var elem=dfx.getId(this.id);dfx.addClass(elem,'disabled');this._removeButtonClickEvents();},enable:function()
{var elem=dfx.getId(this.id);dfx.removeClass(elem,'disabled');this._addButtonClickEvents();},revert:function()
{if(this.getValue()!==this.settings.value){this.setValue(this.settings.value);}},_setModified:function(status)
{if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}}
function GUIToolbarContainer(id,settings)
{this.id=id;this.settings=settings;this.elem=dfx.getId(this.id);this.init();}
GUIToolbarContainer.prototype={init:function()
{var disableLayer=dfx.getClass('disableLayer',dfx.getId(this.id));GUI.addOverlayEnabledCallback(function(){dfx.showElement(disableLayer);});GUI.addOverlayDisabledCallback(function(disabledType,disabledOptions,nextOverlayType){if(!nextOverlayType){dfx.hideElement(disableLayer);}});}};function GUIViper(id,settings)
{this.id=id;this.settings=settings;var viperOpts=settings.viperSettings;viperOpts.viperURL=settings.baseURL+'/viper';var self=this;var viper=new Viper(id,viperOpts,function(viperObj){self.viper=viperObj;viperObj.ViperPluginManager.addPluginSet('all',['ViperToolbarPlugin','ViperCoreStylesPlugin','ViperKeyboardEditorPlugin','ViperRedoPlugin','ViperCopyPastePlugin','ViperFormatPlugin','ViperListPlugin','GUIViperSourceViewPlugin'],true);viperObj.ViperPluginManager.addPluginSet('simple',['ViperRedoPlugin','ViperCopyPastePlugin'],true);self.setPluginSettings(settings.pluginSettings);if(settings.toolbarParentid){var toolbarParentElem=dfx.getId(settings.toolbarParentid)||document.body;viperObj.setPluginSettings('ViperToolbarPlugin',{parent:toolbarParentElem});}
viperObj.ViperPluginManager.usePluginSet('all');if(settings.editableElements&&settings.editableElements.length>0){var targetElem=dfx.getId(settings.editableElements[0]);viperObj.setEditableElement(targetElem);dfx.addEvent(targetElem,'click',function(){if(self.viper.enabled!==true){self.viper.setEnabled(true);}});}});}
GUIViper.prototype={setPluginSettings:function(settings)
{if(!settings){return;}
var self=this;dfx.foreach(settings,function(pluginName){self.viper.ViperPluginManager.setPluginSettings(pluginName,settings[pluginName]);});},getValue:function()
{if(this.viper.element){return this.viper.getHtml();}
return null;},getPlugin:function(pluginName)
{return this.viper.ViperPluginManager.getPlugin(pluginName);},setElement:function(elem)
{if(!elem){this.viper.setEnabled(false);}else{this.viper.setEditableElement(elem);this.viper.setEnabled(true);}},getElement:function()
{return this.viper.getEditableElement();},addUpdateCallback:function(callback)
{this.viper.registerCallback('nodesChanged',this.id,callback);},addClickedOutside:function(callback)
{this.viper.registerCallback('clickedOutside',this.id,callback);},usePluginSet:function(set)
{this.viper.ViperPluginManager.usePluginSet(set);},isPluginElement:function(element)
{return this.viper.isPluginElement(element);},isPluginActive:function()
{return this.viper.pluginActive();}};function GUIViperSourceViewPlugin(viper)
{ViperPlugin.call(this,viper);this._dialogid=viper.getId()+'-GUIViperSourceViewPlugin-dialog';}
GUIViperSourceViewPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('SourceView','sourceview','Show Source View',function(){self.show();});},show:function()
{var html=this.viper.getHtml();var self=this;GUI.loadTemplate('GUIViper','GUIViperSourceViewPlugin',{viperid:this.viper.getId()},function(){var textArea=dfx.getId(self._dialogid+'-source-textarea');var widget=GUI.getWidget(self._dialogid+'-source');if(!widget){GUI.message('developer','Failed to load widget','error');return;}
html=style_html(html,4);widget.setValue(html);console.info(html);widget.resize();widget.focus();},{modal:true,dialog:{dialogid:self._dialogid}});},update:function()
{this.viper.setHtml(GUI.getWidget(this._dialogid+'-source').getValue());GUI.getWidget(this._dialogid).close();this.viper.focus();},close:function()
{GUI.getWidget(this._dialogid).close();},remove:function()
{dfx.remove(this.element);},isPluginElement:function(element)
{return false;}};dfx.addLoadEvent(function(){dfx.noInclusionInherits('GUIViperSourceViewPlugin','ViperPlugin',true);});function style_html(html_source,indent_size,indent_character,max_char,brace_style){var Parser,multi_parser;function Parser(){this.pos=0;this.token='';this.current_mode='CONTENT';this.tags={parent:'parent1',parentcount:1,parent1:''};this.tag_type='';this.token_text=this.last_token=this.last_text=this.token_type='';this.Utils={whitespace:"\n\r\t ".split(''),single_token:'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed'.split(','),extra_liners:'head,body,/html'.split(','),in_array:function(what,arr){for(var i=0;i<arr.length;i++){if(what===arr[i]){return true;}}
return false;}}
this.get_content=function(){var input_char='';var content=[];var space=false;while(this.input.charAt(this.pos)!=='<'){if(this.pos>=this.input.length){return content.length?content.join(''):['','TK_EOF'];}
input_char=this.input.charAt(this.pos);this.pos++;this.line_char_count++;if(this.Utils.in_array(input_char,this.Utils.whitespace)){if(content.length||input_char===' '){space=true;}
this.line_char_count--;continue;}
else if(space){if(this.line_char_count>=this.max_char){content.push('\n');for(var i=0;i<this.indent_level;i++){content.push(this.indent_string);}
this.line_char_count=0;}
else{content.push(' ');this.line_char_count++;}
space=false;}
content.push(input_char);}
if(space===true){content.push(input_char);space=false;}
return content.length?content.join(''):'';}
this.get_script=function(){var input_char='';var content=[];var reg_match=new RegExp('\<\/script'+'\>','igm');reg_match.lastIndex=this.pos;var reg_array=reg_match.exec(this.input);var end_script=reg_array?reg_array.index:this.input.length;while(this.pos<end_script){if(this.pos>=this.input.length){return content.length?content.join(''):['','TK_EOF'];}
input_char=this.input.charAt(this.pos);this.pos++;content.push(input_char);}
return content.length?content.join(''):'';}
this.record_tag=function(tag){if(this.tags[tag+'count']){this.tags[tag+'count']++;this.tags[tag+this.tags[tag+'count']]=this.indent_level;}
else{this.tags[tag+'count']=1;this.tags[tag+this.tags[tag+'count']]=this.indent_level;}
this.tags[tag+this.tags[tag+'count']+'parent']=this.tags.parent;this.tags.parent=tag+this.tags[tag+'count'];}
this.retrieve_tag=function(tag){if(this.tags[tag+'count']){var temp_parent=this.tags.parent;while(temp_parent){if(tag+this.tags[tag+'count']===temp_parent){break;}
temp_parent=this.tags[temp_parent+'parent'];}
if(temp_parent){this.indent_level=this.tags[tag+this.tags[tag+'count']];this.tags.parent=this.tags[temp_parent+'parent'];}
delete this.tags[tag+this.tags[tag+'count']+'parent'];delete this.tags[tag+this.tags[tag+'count']];if(this.tags[tag+'count']==1){delete this.tags[tag+'count'];}
else{this.tags[tag+'count']--;}}}
this.get_tag=function(){var input_char='';var content=[];var space=false;do{if(this.pos>=this.input.length){return content.length?content.join(''):['','TK_EOF'];}
input_char=this.input.charAt(this.pos);this.pos++;this.line_char_count++;if(this.Utils.in_array(input_char,this.Utils.whitespace)){space=true;this.line_char_count--;continue;}
if(input_char==="'"||input_char==='"'){if(!content[1]||content[1]!=='!'){input_char+=this.get_unformatted(input_char);space=true;}}
if(input_char==='='){space=false;}
if(content.length&&content[content.length-1]!=='='&&input_char!=='>'&&space){if(this.line_char_count>=this.max_char){this.print_newline(false,content);this.line_char_count=0;}
else{content.push(' ');this.line_char_count++;}
space=false;}
content.push(input_char);}while(input_char!=='>');var tag_complete=content.join('');var tag_index;if(tag_complete.indexOf(' ')!=-1){tag_index=tag_complete.indexOf(' ');}
else{tag_index=tag_complete.indexOf('>');}
var tag_check=tag_complete.substring(1,tag_index).toLowerCase();if(tag_complete.charAt(tag_complete.length-2)==='/'||this.Utils.in_array(tag_check,this.Utils.single_token)){this.tag_type='SINGLE';}
else if(tag_check==='script'){this.record_tag(tag_check);this.tag_type='SCRIPT';}
else if(tag_check==='style'){this.record_tag(tag_check);this.tag_type='STYLE';}
else if(tag_check==='a'){var comment=this.get_unformatted('</a>',tag_complete);content.push(comment);this.tag_type='INLINE';}
else if(('|pre|strong|em|i|sub|sup|u|strike|').indexOf('|'+tag_check+'|')>=0){content.push(this.get_unformatted('</'+tag_check+'>'));this.tag_type='INLINE';}
else if(tag_check.charAt(0)==='!'){if(tag_check.indexOf('[if')!=-1){if(tag_complete.indexOf('!IE')!=-1){var comment=this.get_unformatted('-->',tag_complete);content.push(comment);}
this.tag_type='START';}
else if(tag_check.indexOf('[endif')!=-1){this.tag_type='END';this.unindent();}
else if(tag_check.indexOf('[cdata[')!=-1){var comment=this.get_unformatted(']]>',tag_complete);content.push(comment);this.tag_type='SINGLE';}
else{var comment=this.get_unformatted('-->',tag_complete);content.push(comment);this.tag_type='SINGLE';}}
else{if(tag_check.charAt(0)==='/'){this.retrieve_tag(tag_check.substring(1));this.tag_type='END';}
else{this.record_tag(tag_check);this.tag_type='START';}
if(this.Utils.in_array(tag_check,this.Utils.extra_liners)){this.print_newline(true,this.output);}}
return content.join('');}
this.get_unformatted=function(delimiter,orig_tag){if(orig_tag&&orig_tag.indexOf(delimiter)!=-1){return'';}
var input_char='';var content='';var space=true;do{if(this.pos>=this.input.length){return content;}
input_char=this.input.charAt(this.pos);this.pos++
if(delimiter==='</pre>'){content+=input_char;continue;}
if(this.Utils.in_array(input_char,this.Utils.whitespace)){if(!space){this.line_char_count--;continue;}
if(input_char==='\n'||input_char==='\r'){content+='\n';for(var i=0;i<this.indent_level;i++){content+=this.indent_string;}
space=false;this.line_char_count=0;continue;}}
content+=input_char;this.line_char_count++;space=true;}while(content.indexOf(delimiter)==-1);return content;}
this.get_token=function(){var token;if(this.last_token==='TK_TAG_SCRIPT'){var temp_token=this.get_script();if(typeof temp_token!=='string'){return temp_token;}
token=js_beautify(temp_token,{indent_size:this.indent_size,indent_char:this.indent_character,indent_level:this.indent_level,brace_style:this.brace_style});return[token,'TK_CONTENT'];}
if(this.current_mode==='CONTENT'){token=this.get_content();if(typeof token!=='string'){return token;}
else{return[token,'TK_CONTENT'];}}
if(this.current_mode==='TAG'){token=this.get_tag();if(typeof token!=='string'){return token;}
else{var tag_name_type='TK_TAG_'+this.tag_type;return[token,tag_name_type];}}}
this.printer=function(js_source,indent_character,indent_size,max_char,brace_style){this.input=js_source||'';this.output=[];this.indent_character=indent_character||' ';this.indent_string='';this.indent_size=indent_size||2;this.brace_style=brace_style||'collapse';this.indent_level=0;this.max_char=max_char||70;this.line_char_count=0;for(var i=0;i<this.indent_size;i++){this.indent_string+=this.indent_character;}
this.print_newline=function(ignore,arr){this.line_char_count=0;if(!arr||!arr.length){return;}
if(!ignore){while(this.Utils.in_array(arr[arr.length-1],this.Utils.whitespace)){arr.pop();}}
arr.push('\n');for(var i=0;i<this.indent_level;i++){arr.push(this.indent_string);}}
this.print_token=function(text){this.output.push(text);}
this.indent=function(){this.indent_level++;}
this.unindent=function(){if(this.indent_level>0){this.indent_level--;}}}
return this;}
multi_parser=new Parser();multi_parser.printer(html_source,indent_character,indent_size,300,brace_style);while(true){var t=multi_parser.get_token();multi_parser.token_text=t[0];multi_parser.token_type=t[1];if(multi_parser.token_type==='TK_EOF'){break;}
switch(multi_parser.token_type){case'TK_TAG_START':case'TK_TAG_SCRIPT':case'TK_TAG_STYLE':multi_parser.print_newline(false,multi_parser.output);multi_parser.print_token(multi_parser.token_text);multi_parser.indent();multi_parser.current_mode='CONTENT';break;case'TK_TAG_END':multi_parser.print_newline(true,multi_parser.output);multi_parser.print_token(multi_parser.token_text);multi_parser.current_mode='CONTENT';break;case'TK_TAG_SINGLE':multi_parser.print_token(multi_parser.token_text);multi_parser.current_mode='CONTENT';break;case'TK_TAG_INLINE':multi_parser.print_token(multi_parser.token_text);multi_parser.current_mode='CONTENT';break;case'TK_CONTENT':if(multi_parser.token_text!==''){if(multi_parser.last_token!=='TK_TAG_INLINE'&&multi_parser.last_token!=='TK_TAG_SINGLE'){multi_parser.print_newline(false,multi_parser.output);}
multi_parser.print_token(multi_parser.token_text);}
multi_parser.current_mode='TAG';break;}
multi_parser.last_token=multi_parser.token_type;multi_parser.last_text=multi_parser.token_text;}
return multi_parser.output.join('');}
function Viper(id,options,callback)
{this.scripts=['ViperSelection','ViperDOMRange','ViperElementMetrics','ViperTextMetrics','ViperIERange','ViperMozRange','XPath','ViperPlugin','ViperPluginManager','ViperUndoManager','ViperChangeTracker'];this.id=id;this.caretInterval=null;this.caret=null;this.CARET_LEFT=1;this.CARET_RIGHT=2;this.currRange=null;this.enabled=false;this.caretContainer=null;this.caretHeight=0;this.caretAtStart=true;this.caretInterval=null;this.inlineMode=false;this._caretColour='#000';this._browserType=null;this._document=document;this._canCleanDom=true;this._isTextChange=false;this._fireNodesChanged=false;this.ViperUndoManager=null;this.ViperPluginManager=null;this._settings={changeTracking:false};this._subElementActive=false;this._mainElem=null;this.callbacks={};this.stylesURL='';this.viperURL='';if(!options){options={};}
var viperURL=options.viperURL||'./viper';var self=this;this.load(viperURL,function(){if(options){self._processOptions(options,function(){callback.call(self,self);});}});}
Viper.document=document;Viper.window=window;Viper.prototype={getId:function()
{return this.id;},load:function(url,callback)
{var self=this;this.loadScripts(url,dfx.clone(this.scripts),function(){self.init();self.setViperURL(url);self.setStylesURL(url);callback.call(self);});},loadScripts:function(url,scripts,callback)
{if(scripts.length===0){callback.call(this);return;}
var script=scripts.shift();if(window[script]){this.loadScripts(url,scripts,callback);}else{var self=this;dfx.includeScript(url+'/'+script+'.js',function(){self.loadScripts(url,scripts,callback);});}},_processOptions:function(options,callback)
{var self=this;for(var op in options){var fn='set'+dfx.ucFirst(op);if(fn==='setSetting'){delete options[op];continue;}
if(dfx.isFn(this[fn])===true){this[fn](options[op],function(){delete options[op];self._processOptions(options,callback);});return;}else{this.setSetting(op,options[op]);delete options[op];self._processOptions(options,callback);return;}}
callback.call(this);},setPluginSets:function(sets,callback)
{var self=this;for(var setName in sets){var set=sets[setName];this.ViperPluginManager.addPluginSet(setName,set.plugins,true,function(){delete sets[setName];self.setPluginSets(sets,callback);});return;}
if(callback){callback.call(this);}},setSetting:function(setting,value)
{this._settings[setting]=value;},getSetting:function(setting)
{return this._settings[setting];},init:function()
{this.ViperUndoManager=new ViperUndoManager(this);this.ViperPluginManager=new ViperPluginManager(this);ViperChangeTracker.init(this,false);this._setupCoreTrackChangeActions();ViperChangeTracker.addChangeType('textRemoved','Deleted','remove');ViperChangeTracker.addChangeType('textAdded','Inserted','insert');ViperChangeTracker.addChangeType('merged','Merged','remove');},setMode:function(mode)
{if(mode==='inline'){this.inlineMode=true;}else{this.inlineMode=false;}},getBrowserType:function()
{if(this._browserType===null){var tests=['msie','firefox','chrome','safari'];var tln=tests.length;for(var i=0;i<tln;i++){var r=new RegExp(tests[i],'i');if(r.test(navigator.userAgent)===true){this._browserType=tests[i];return this._browserType;}}
this._browserType='other';}
return this._browserType;},isBrowser:function(browser)
{return(this.getBrowserType()===browser);},_addEvents:function(elem)
{if(!elem){elem=this.element;}
this._document=elem.ownerDocument;Viper.document=this._document;if(this._document.defaultView){Viper.window=this._document.defaultView;}else{Viper.window=window;}
this._removeEvents(elem);var self=this;dfx.addEvent(elem,'mouseup.viper',function(e){setTimeout(function(){self.mouseUp(e);},200);});dfx.addEvent(this._document,'mousedown.viper',function(e){return self.mouseDown(e);});dfx.addEvent(elem,'keypress.viper',function(e){return self.keyPress(e);});dfx.addEvent(elem,'keydown.viper',function(e){return self.keyDown(e);});dfx.addEvent(elem,'keyup.viper',function(e){self.fireCallbacks('Viper:keyup');self.fireCaretUpdated();if(self._fireNodesChanged){if(self.isBrowser('firefox')===true){var range=self.getCurrentRange();if(range.startContainer&&range.startContainer.parentNode){if(range.startContainer.nodeType===dfx.TEXT_NODE&&range.startContainer.data.length<2){self.cleanDOM(range.startContainer.parentNode,'br');}}
if(range.endContainer&&range.startContainer!==range.endContainer&&range.endContainer.parentNode){self.cleanDOM(range.endContainer.parentNode,'br');}}
self._fireNodesChanged=false;self.fireNodesChanged('Viper:insertNode',null,self._isTextChange);}});dfx.addEvent(elem,'blur.viper',function(e){self.cleanDOM();var range=self.getCurrentRange();var lastSelectable=range._getLastSelectableChild(elem);if(lastSelectable&&lastSelectable.nodeType===dfx.TEXT_NODE){lastSelectable.data=dfx.rtrim(lastSelectable.data);}});},_removeEvents:function(elem)
{if(!elem){elem=this.element;}
dfx.removeEvent(this._document,'.viper');dfx.removeEvent(elem,'.viper');},setEnabled:function(enabled)
{if(enabled===true&&this.enabled===false){this._addEvents();var range=this.getCurrentRange();this.element.focus();this.setRange(range._getFirstSelectableChild(this.element),0);this.enabled=true;this.fireCallbacks('viperEnabled');this.element.setAttribute('contentEditable',true);dfx.setStyle(this.element,'outline','none');}else if(enabled===false&&this.enabled===true){ViperChangeTracker.activateFinalMode();this.cleanDOM(this.element);if(dfx.trim(dfx.getNodeTextContent(this.element))===''){this.initEditableElement();}
this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');this._removeEvents();this.enabled=false;this.fireCallbacks('viperDisabled');ViperChangeTracker.disableChangeTracking();ViperChangeTracker.cleanUp();}},isEnabled:function()
{return this.enabled;},setEditableElement:function(elem)
{if(this.element){this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');}
ViperChangeTracker.cleanUp();this.setSubElementState(null,false);ViperChangeTracker.init(this,false);this.setEnabled(false);this.element=elem;this.initEditableElement();this.setEnabled(true);this.ViperUndoManager.setActiveElement(elem);this.inlineMode=false;elem.setAttribute('contentEditable',true);dfx.setStyle(elem,'outline','none');if(this.getSetting('changeTracking')===true){ViperChangeTracker.enableChangeTracking();}
this.focus();},initEditableElement:function()
{var elem=this.element;if(!elem){return;}
var tmp=Viper.document.createElement('div');dfx.setHtml(tmp,this.getContents());if(dfx.trim(dfx.getNodeTextContent(tmp)).length===0||dfx.getHtml(tmp)==='&nbsp;'){var tags=dfx.getTag('*',tmp);var hasStubElems=false;dfx.foreach(tags,function(i){if(dfx.isStubElement(tags[i])===true){hasStubElems=true;return false;}});if(hasStubElems!==true){var range=this.getCurrentRange();if(this.inlineMode!==true&&dfx.getStyle(this.element,'display')==='block'){dfx.setHtml(this.element,'<p>&nbsp;</p>');range.setStart(this.element.firstChild.firstChild);}else{dfx.setHtml(this.element,'&nbsp;');range.setStart(this.element.firstChild);}}}},getEditableElement:function()
{return this.element;},setSubElementState:function(elem,active)
{if(active===true){if(this._subElementActive===true&&this.element!==elem){this.setSubElementState(this.element,false);}
if(this._subElementActive!==true){this._mainElem=this.element;this.element=elem;this._subElementActive=true;this.element.setAttribute('contentEditable',true);dfx.setStyle(this.element,'outline','none');this._addEvents();this.fireCallbacks('subElementEnabled',elem);}}else if(this.element&&this._subElementActive===true){this.element.setAttribute('contentEditable',false);dfx.setStyle(this.element,'outline','invert');this._removeEvents();var pelem=this.element;this.element=this._mainElem;this._subElementActive=false;this._mainElem=null;this.fireCallbacks('subElementDisabled',pelem);}},getViperElement:function()
{if(this._subElementActive===true){return this._mainElem;}
return this.element;},getViperSubElement:function()
{if(this._subElementActive===true){return this.element;}
return null;},getViperActiveElement:function()
{return this.element;},getCurrentRange:function()
{return ViperSelection.getRangeAt(0);},getCaretCoords:function()
{var coords={};try{var bookmark=this.createBookmark();dfx.setStyle(bookmark.end,'display','inline');coords=dfx.getElementCoords(bookmark.end);dfx.remove(bookmark.start);dfx.remove(bookmark.end);}catch(e){coords={x:-1,y:-1};}
return coords;},rangeInViperBounds:function()
{var range=this.getCurrentRange();if(range===null||this.isOutOfBounds(range.startContainer)||this.isOutOfBounds(range.endContainer)){return false;}
return true;},isOutOfBounds:function(element)
{if(element===this.element||dfx.isChildOf(element,this.element)===true){return false;}else if(this._subElementActive===true&&(element===this._mainElem||dfx.isChildOf(element,this._mainElem)===true)){return false;}
return true;},insertNodeAtCaret:function(node)
{var range=this.getCurrentRange();if(range.collapsed!==true){this.deleteContents();this.initEditableElement();range=this.getCurrentRange();if(range.startContainer===range.endContainer&&this.element===range.startContainer){dfx.empty(this.element);this.initEditableElement();var firstSelectable=range._getFirstSelectableChild(this.element);range.setStart(firstSelectable,0);range.collapse(true);}}else if(dfx.isStubElement(range.startContainer.parentNode)===true){var newNode=Viper.document.createTextNode('');dfx.insertBefore(range.startContainer.parentNode,newNode);dfx.remove(range.startContainer.parentNode);range.setStart(newNode,0);range.collapse(true);ViperSelection.addRange(range);}
if(typeof node==='string'){if(node==='\r'){return;}
var newNode=Viper.document.createTextNode(node);var noBlock=true;var newRange=this.ctmInsertNodeAtCaret(range,newNode);if(newRange!==false){noBlock=false;}else{newRange=range;if(newRange.collapsed===true&&newRange.startContainer.parentNode&&newRange.startContainer.parentNode.firstChild.nodeType===dfx.TEXT_NODE&&newRange.startContainer.parentNode.firstChild===newRange.startContainer.parentNode.lastChild&&dfx.trim(newRange.startContainer.parentNode.firstChild.data)===''){newRange.setStart(newRange.startContainer.parentNode.firstChild,0);newRange.collapse(true);newRange.startContainer.parentNode.firstChild.data='';}else if(newRange.collapsed===true&&dfx.isStubElement(newRange.startContainer)===true){var tmpTextNode=Viper.document.createTextNode('');dfx.insertBefore(newRange.startContainer,tmpTextNode);dfx.remove(newRange.startContainer);newRange.setStart(tmpTextNode,0);newRange.collapse(true);}}
if(this.ViperPluginManager.fireNodeInserted(newNode,newRange)===false){noBlock=false;}
if(noBlock===false){return false;}
this._fireNodesChanged=true;this._isTextChange=true;return;}else{if(node.nodeType===dfx.DOCUMENT_FRAGMENT_NODE){if(this.isBrowser('msie')===true){range.rangeObj.pasteHTML('<span id="__viperMarker"></span>');var marker=dfx.getId('__viperMarker');dfx.insertAfter(marker,node);dfx.remove(marker);range.collapse(false);return;}else{var newNode=null;var clen=node.childNodes.length;for(var i=0;i<clen;i++){var child=node.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){if(dfx.trim(child.data)===''){continue;}}
newNode=Viper.document.importNode(child,true);range.insertNode(newNode);range.selectNode(newNode);range.collapse(false);}
node=newNode;range.moveEnd('character',-1);range.moveEnd('character',1);range.collapse(false);return;}}else if(dfx.isStubElement(range.startContainer)===true){dfx.insertBefore(range.startContainer,node);}else{range.insertNode(node);}
range.setEndAfter(node,(this._getNodeOffset(node)+1));range.collapse(false);}},ctmInsertNodeAtCaret:function(range,node)
{if(ViperChangeTracker.isTracking()===true){if(range.collapsed===false){return range;}
var offset=range.startOffset;var ctNode=null;var startNode=range.getStartNode();if(ViperChangeTracker.getCTNode(startNode,'textRemoved')!==null){return false;}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode===null){if(offset===0){while(startNode){startNode=startNode.previousSibling;if(startNode&&(startNode.nodeType!==dfx.TEXT_NODE||startNode.data.length!==0)){break;}}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode!==null){var newNode=Viper.document.createTextNode('');ctNode.appendChild(newNode);range.setStart(newNode,0);range.collapse(true);}}else if(offset===startNode.data.length){while(startNode){startNode=startNode.nextSibling;if(startNode&&(startNode.nodeType!==dfx.TEXT_NODE||startNode.data.length!==0)){break;}}
ctNode=ViperChangeTracker.getCTNode(startNode,'textAdd');if(ctNode!==null){var newNode=Viper.document.createTextNode('');dfx.insertBefore(ctNode.firstChild,newNode);range.setStart(newNode,0);range.collapse(true);}}}
if(ctNode===null){ctNode=ViperChangeTracker.createCTNode('ins','textAdd',node);ViperChangeTracker.addChange('textAdded',[ctNode]);range.insertNode(ctNode);range.setEnd(node,1);range.collapse(false);ViperSelection.addRange(range);}else{return false;}}else{return false;}
return range;},insertTextAtCaret:function(text)
{if(typeof text!=='string'){throw('InvalidArgumentException: text must be a string');}
return this.insertNodeAtCaret(text);},getInverseColor:function(color)
{color=color.toLowerCase();var forward='0123456789abcdef#';var backward='fedcba9876543210#';var color=color.replace(/./gi,function(chr){return backward.charAt(forward.indexOf(chr));});return color;},_getNodeOffset:function(node)
{var nodes=node.parentNode.childNodes;var ln=nodes.length;for(var i=0;i<ln;i++){if(nodes[i]===node){return i;}}},_getInsertedInfo:function(node)
{return{type:2,node:node,path:XPath.getPath(node)};},_parentWillBeDeleted:function(node)
{if(node.parentNode){var parentContent=dfx.trim(dfx.getNodeTextContent(node.parentNode));if(parentContent===''||parentContent==='&nbsp;'){return true;}else{return false;}}
return false;},_getRangeInfo:function(range)
{var commEl=range.getCommonElement();var info={startOffset:range.startOffset,endOffset:range.endOffset,before:dfx.getHtml(commEl),path:XPath.getPath(commEl),after:'',startContainer:XPath.getPath(range.startContainer),endContainer:XPath.getPath(range.endContainer),collapsed:range.collapsed};return info;},getBlockParent:function(node)
{if(node){while(node.parentNode){node=node.parentNode;if(node===this.element){return null;}
if(dfx.isBlockElement(node)===true){return node;}}}
return null;},getTextContentFromElements:function(elements)
{var text=[];dfx.foreach(elements,function(i){if(elements[i].nodeType===dfx.TEXT_NODE){text.push(elements[i].data);}else{text.push(dfx.getNodeTextContent(elements[i]));}});return text;},deleteContents:function(right)
{var range=this.getCurrentRange();if(range.collapsed===false){this._deleteFromSelection(range);}else{var container=range.startContainer;if(container.nodeType===dfx.ELEMENT_NODE){this._deleteNode(range);}else if(container.nodeType===dfx.TEXT_NODE){if(right===true){this._deleteFromRight(range);}else{this._deleteFromLeft(range);}}}
ViperSelection.addRange(range);this.fireNodesChanged(null,true);},_deleteNode:function(range)
{var container=range.startContainer;if(dfx.isStubElement(container)===true){this.removeElem(container);return;}else if(container===this.element&&range.startOffset===0){if(this.inlineMode!==true&&dfx.getStyle(this.element,'display')==='block'){dfx.setHtml(this.element,'<p>&nbsp;</p>');}else{dfx.setHtml(this.element,'&nbsp;');}
range.setStart(this.element.firstChild.firstChild,0);range.collapse(true);return;}},_deleteFromSelection:function(range)
{var bookmark=this.createBookmark();var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);if(ViperChangeTracker.isTracking()===true){var removedText=(this.getTextContentFromElements(elements)).join('');var changeid=ViperChangeTracker.addChange('textRemoved');var eln=elements.length;for(var i=0;i<eln;i++){var elem=elements[i];if(ViperChangeTracker.getCTNode(elem,'textRemoved')===null){if(dfx.isBlockElement(elem)===true){var del=Viper.document.createElement('del');dfx.insertBefore(elem,del);del.appendChild(elem);ViperChangeTracker.addNodeToChange(changeid,del);}else{this._wrapElement(elem,'del',function(newElem){ViperChangeTracker.addNodeToChange(changeid,newElem);});}}}
var startEl=bookmark.start.previousSibling;if(!startEl){startEl=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,startEl);this.selectBookmark(bookmark);range=this.getCurrentRange();range.setStart(startEl,0);}else{this.selectBookmark(bookmark);range=this.getCurrentRange();range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.moveStart(ViperDOMRange.CHARACTER_UNIT,1);}
range.collapse(true);return;}
this.removeElem(elements);var parent=bookmark.start.parentNode;var endParent=bookmark.end.parentNode;this.selectBookmark(bookmark);if(parent&&dfx.getHtml(parent)===''){dfx.setHtml(parent,'&nbsp;');range.setStart(parent.firstChild,0);}
if(endParent&&parent!==endParent&&dfx.getHtml(endParent)===''){dfx.remove(endParent);}
range.collapse(true);},_deleteFromRight:function(range)
{var container=range.startContainer;if(range.endOffset===container.data.length){var cRange=range.cloneRange();cRange.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);var eParent=this.getBlockParent(cRange.endContainer);if(eParent){if(dfx.isChildOf(eParent,this.element)===false){return;}
var sParent=this.getBlockParent(cRange.startContainer);if(eParent!==sParent){this.mergeContainers(eParent,sParent);range.setStart(cRange.startContainer,cRange.startContainer.data.length);range.collapse(true);return;}}
var nextContainer=range.getNextContainer(container);if(dfx.isChildOf(nextContainer,this.element)===false){return false;}
var firstSelectable=range._getFirstSelectableChild(nextContainer);range.setStart(firstSelectable,0);if(ViperChangeTracker.isTracking()===true){this._addTextNodeTracking(firstSelectable,range);}else{range.collapse(true);range.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);range.deleteContents();range.collapse(true);if(this._parentWillBeDeleted(container)===true){dfx.remove(container.parentNode);}}}else{var textNode=range.getStartNode();var isTracking=ViperChangeTracker.isTracking();var textAddNode=null;if(isTracking===true){textAddNode=ViperChangeTracker.getCTNode(textNode,'textAdd');}
if(isTracking===true&&textAddNode===null){this._addTextNodeTracking(textNode,range,true);}else{range.moveEnd(ViperDOMRange.CHARACTER_UNIT,1);range.deleteContents();if(textAddNode!==null&&dfx.isBlank(dfx.getNodeTextContent(textAddNode))===true){var prevSibling=textAddNode.previousSibling;if(!prevSibling||prevSibling.nodeType!==dfx.TEXT_NODE){prevSibling=Viper.document.createTextNode('');dfx.insertBefore(textAddNode,prevSibling);}
range.setStart(prevSibling,prevSibling.data.length);dfx.remove(textAddNode);}}}},_deleteFromLeft:function(range)
{var container=range.startContainer;if(range.startOffset===0){var cRange=range.cloneRange();cRange.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);var sParent=this.getBlockParent(cRange.startContainer);if(sParent){if(dfx.isChildOf(sParent,this.element)===false){var firstChild=dfx.getFirstChild(this.element);if(!firstChild){return false;}else{cRange.setStart(firstChild,0);sParent=this.getBlockParent(cRange.startContainer);}}
var eParent=this.getBlockParent(cRange.endContainer);if(eParent!==sParent){this.mergeContainers(eParent,sParent);range.setStart(cRange.startContainer,cRange.startContainer.data.length);range.collapse(true);this.removeEmptyNodes();return;}}
var previousContainer=range.getPreviousContainer(container);if(dfx.isChildOf(previousContainer,this.element)===false){return false;}
if(dfx.isStubElement(previousContainer)===true){if(ViperChangeTracker.isTracking()===true){range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);dfx.addClass(previousContainer,ViperChangeTracker.getCTNodeClass('textRemoved'));dfx.attr(previousContainer,'title','Content removed');}else{dfx.remove(previousContainer);}
range.collapse(true);}else{var lastSelectable=range._getLastSelectableChild(previousContainer);range.setStart(lastSelectable,lastSelectable.data.length);if(ViperChangeTracker.isTracking()===true){this._addTextNodeTracking(lastSelectable,range);}else{range.collapse(true);range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.deleteContents();if(this._parentWillBeDeleted(container)===true){dfx.remove(container.parentNode);}}}}else{var textNode=range.getStartNode();var isTracking=ViperChangeTracker.isTracking();var textAddNode=null;if(isTracking===true){textAddNode=ViperChangeTracker.getCTNode(textNode,'textAdd');}
if(isTracking===true&&textAddNode===null){this._addTextNodeTracking(textNode,range);}else{range.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);range.deleteContents();if(textAddNode!==null&&dfx.isBlank(dfx.getNodeTextContent(textAddNode))===true){var prevSibling=textAddNode.previousSibling;if(!prevSibling||prevSibling.nodeType!==dfx.TEXT_NODE){prevSibling=Viper.document.createTextNode('');dfx.insertBefore(textAddNode,prevSibling);}
range.setStart(prevSibling,prevSibling.data.length);dfx.remove(textAddNode);}}}},_addTextNodeTracking:function(textNode,range,del)
{if((del!==true&&range.startOffset===0)||ViperChangeTracker.getCTNode(textNode,'textRemoved')!==null){return;}
var beforeText='';var removedChar='';var afterText='';if(del!==true){beforeText=textNode.nodeValue.substring(0,(range.startOffset-1));removedChar=textNode.nodeValue.substr((range.startOffset-1),1);afterText=textNode.nodeValue.substring(range.startOffset);}else{beforeText=textNode.nodeValue.substring(0,range.endOffset);removedChar=textNode.nodeValue.substr(range.endOffset,1);afterText=textNode.nodeValue.substring((range.endOffset+1));}
if((range.startOffset===1&&del!==true)||(del===true&&range.startOffset===0)){var ctNode=ViperChangeTracker.getCTNode(textNode.previousSibling,'textRemoved');if(ctNode){if(del!==true){if(ctNode.lastChild&&ctNode.lastChild.nodeType===dfx.TEXT_NODE){ctNode.lastChild.nodeValue+=removedChar;range.setStart(ctNode.lastChild,(ctNode.lastChild.nodeValue.length-1));}else{var charNode=Viper.document.createTextNode(removedChar);ctNode.appendChild(charNode);range.setStart(charNode,0);}
textNode.nodeValue=beforeText+afterText;textNode.nodeValue=beforeText+afterText;if(textNode.nodeValue.length===0){var found=false;var previousSibling=textNode.previousSibling;while(found!==true){ctNode=ViperChangeTracker.getCTNode(previousSibling,'textRemoved');if(!ctNode){found=true;}else{previousSibling=previousSibling.previousSibling;}}
if(previousSibling){previousSibling=range._getLastSelectableChild(previousSibling);range.setStart(previousSibling,previousSibling.nodeValue.length);range.collapse(true);}}else{range.collapse(true);}}else{if(ctNode.lastChild&&ctNode.lastChild.nodeType===dfx.TEXT_NODE){ctNode.lastChild.nodeValue+=removedChar;}else{var charNode=Viper.document.createTextNode(removedChar);ctNode.appendChild(charNode);}
textNode.nodeValue=beforeText+afterText;if(textNode.nodeValue.length===0){var found=false;var nextSibling=textNode.nextSibling;while(found!==true){ctNode=ViperChangeTracker.getCTNode(nextSibling,'textRemoved');if(!ctNode){found=true;}else{nextSibling=nextSibling.nextSibling;}}
if(nextSibling){range.setStart(nextSibling,0);range.collapse(true);}}else{range.setStart(textNode,0);range.collapse(true);}}
return;}}
if(range.startOffset===textNode.nodeValue.length){var ctNode=ViperChangeTracker.getCTNode(textNode.nextSibling,'textRemoved');if(ctNode){if(ctNode.firstChild&&ctNode.firstChild.nodeType===dfx.TEXT_NODE){ctNode.firstChild.nodeValue=removedChar+ctNode.firstChild.nodeValue;}else{var charNode=Viper.document.createTextNode(removedChar);dfx.insertBefore(ctNode.firstChild,charNode);}
textNode.nodeValue=beforeText;range.setStart(textNode,textNode.nodeValue.length);range.collapse(true);return;}}
var ctNode=ViperChangeTracker.createCTNode('del','textRemoved');var newNode=null;if(del!==true){newNode=textNode.splitText(range.startOffset-1);newNode.nodeValue=newNode.nodeValue.substring(1);ViperChangeTracker.addChange('textRemoved',[ctNode]);dfx.insertAfter(textNode,newNode);ctNode.firstChild.nodeValue=removedChar;dfx.insertAfter(textNode,ctNode);range.setStart(textNode,textNode.nodeValue.length);range.collapse(true);}else{newNode=textNode.splitText(range.endOffset);newNode.nodeValue=newNode.nodeValue.substring(1);ViperChangeTracker.addChange('textRemoved',[ctNode]);dfx.insertAfter(textNode,newNode);ctNode.firstChild.nodeValue=removedChar;dfx.insertAfter(textNode,ctNode);range.setStart(newNode,0);range.collapse(true);}},getNextSiblingElementNode:function(node)
{while(node.nextSibling){if(node.nextSibling.nodeType===dfx.ELEMENT_NODE){return node.nextSibling;}
node=node.nextSibling;}
return false;},mergeContainers:function(node,mergeToNode)
{if(!node||!mergeToNode){return false;}
if(ViperChangeTracker.isTracking()===true){var del=Viper.document.createElement('del');mergeToNode.appendChild(del);ViperChangeTracker.addChange('merged',[del]);}
if(node.nodeType===dfx.TEXT_NODE||dfx.isStubElement(node)===true){mergeToNode.appendChild(node);}else if(node.nodeType===dfx.ELEMENT_NODE){while(node.firstChild){mergeToNode.appendChild(node.firstChild);}
dfx.remove(node);}
return true;},surroundContents:function(tag)
{var range=this.getCurrentRange();var otag=tag;if(this.rangeInViperBounds()!==true){return;}
if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.getCurrentMode()==='original'){tag='span';}
if(range.collapsed!==true){var startContainer=range.getStartNode();var endContainer=range.getEndNode();if(startContainer===endContainer){if(startContainer.nodeType===dfx.TEXT_NODE){var node=Viper.document.createElement(tag);var rangeContent=range.toString();dfx.setNodeTextContent(node,rangeContent);if(ViperChangeTracker.isTracking()===true){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(node,'tagName',otag);}
ViperChangeTracker.addChange('formatChange',[node]);}
range.deleteContents();range.insertNode(node);range.setStart(node.firstChild,0);range.setEnd(node.firstChild,node.firstChild.length);ViperSelection.addRange(range);}else{var self=this;var changeid=null;if(ViperChangeTracker.isTracking()===true){changeid=ViperChangeTracker.addChange('formatChange',[newElem]);}
this._wrapElement(startContainer.childNodes[range.startOffset],tag,function(newElem){if(changeid!==null){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(newElem,'tagName',otag);}
ViperChangeTracker.addNodeToChange(changeid,newElem);}});}}else{var bookmark=this.createBookmark();var startContainer=null;var endContainer=null;startContainer=bookmark.start.previousSibling;endContainer=bookmark.end.nextSibling;if(!endContainer){endContainer=Viper.document.createTextNode('');dfx.insertAfter(bookmark.end,endContainer);}
if(!startContainer){startContainer=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,startContainer);}
var elements=dfx.getElementsBetween(startContainer,endContainer);var c=elements.length;var self=this;var changeid=null;if(ViperChangeTracker.isTracking()===true){changeid=ViperChangeTracker.addChange('formatChange');}
for(var i=0;i<c;i++){this._wrapElement(elements[i],tag,function(newElem){if(changeid!==null){if(ViperChangeTracker.getCurrentMode()==='original'){ViperChangeTracker.setCTData(newElem,'tagName',otag);}
ViperChangeTracker.addNodeToChange(changeid,newElem);}});}
this.selectBookmark(bookmark);}}},_wrapElement:function(parent,tag,callback)
{if(!parent){return;}else if(dfx.attr(parent,'viperbookmark')){return;}
if(parent.nodeType===dfx.TEXT_NODE){if(dfx.isBlank(parent.data)!==true){if(parent.previousSibling&&parent.previousSibling.nodeType===dfx.TEXT_NODE){if(parent.previousSibling.nodeValue===''){dfx.remove(parent.previousSibling);}}
if(parent.previousSibling&&parent.previousSibling.tagName&&parent.previousSibling.tagName.toLowerCase()===tag&&!dfx.attr(parent.previousSibling,'viperbookmark')){parent.previousSibling.appendChild(parent);}else{var elem=Viper.document.createElement(tag);dfx.setNodeTextContent(elem,parent.nodeValue);dfx.insertBefore(parent,elem);dfx.remove(parent);if(callback){callback.call(this,elem);}}}}else if(dfx.isStubElement(parent)===false){if(dfx.isBlockElement(parent)===false&&this.hasBlockChildren(parent)===false){if(parent.tagName.toLowerCase()!==tag){if(parent.previousSibling&&parent.previousSibling.tagName&&parent.previousSibling.tagName.toLowerCase()===tag&&dfx.isBlockElement(parent)===false&&!dfx.attr(parent.previousSibling,'viperbookmark')){parent.previousSibling.appendChild(parent);}else{var elem=Viper.document.createElement(tag);dfx.insertBefore(parent,elem);elem.appendChild(parent);this.removeTagFromChildren(elem,tag);if(callback){callback.call(this,elem);}}}}else{var c=parent.childNodes.length;for(var i=0;i<c;i++){this._wrapElement(parent.childNodes[i],tag,callback);}}}},removeTagFromChildren:function(parent,tag,incParent)
{if(parent.tagName&&parent.tagName.toLowerCase()==='span'&&dfx.hasClass(parent,'_my4_keyword')===true){return;}
var c=parent.childNodes.length;var childNodes=[];for(var i=0;i<c;i++){childNodes.push(parent.childNodes[i]);}
for(var i=0;i<c;i++){var child=childNodes[i];if(child.nodeType===dfx.ELEMENT_NODE){this.removeTagFromChildren(child,tag,true);}}
if(incParent===true){this.removeTag(parent,tag);}},removeTag:function(elem,tag)
{if(elem.parentNode&&elem.parentNode.nodeType===dfx.ELEMENT_NODE){if(elem.nodeType===dfx.ELEMENT_NODE){if(elem.tagName.toLowerCase()===tag){var span=null;if(ViperChangeTracker.isTracking()===true){span=Viper.document.createElement('span');ViperChangeTracker.setCTData(span,'tagName',tag);dfx.insertBefore(elem,span);ViperChangeTracker.addChange('removedFormat',[span]);}
while(elem.firstChild){if(span!==null){span.appendChild(elem.firstChild);}else{dfx.insertBefore(elem,elem.firstChild);}}
dfx.remove(elem);}}}},removeStylesBetweenElems:function(start,end,style)
{var elems=dfx.getElementsBetween(start,end);elems.unshift(start);var len=elems.length;for(var i=0;i<len;i++){this.removeTagFromChildren(elems[i],style,true);}},_getOuterTag:function(node,right)
{if(right!==true){if(!node.previousSibling||(node.previousSibling.nodeType===dfx.TEXT_NODE&&dfx.isBlank(node.previousSibling.data)===true)){var parent=node.parentNode;if(parent&&dfx.isBlockElement(parent)===false){return this._getOuterTag(parent,right);}}}else{if(!node.nextSibling||(node.nextSibling.nodeType===dfx.TEXT_NODE&&dfx.isBlank(node.nextSibling.data)===true)){var parent=node.parentNode;if(parent&&dfx.isBlockElement(parent)===false){return this._getOuterTag(parent,right);}}}
return node;},removeStyle:function(style)
{var range=this.getCurrentRange();var startNode=range.getStartNode();var endNode=range.getEndNode();var startParents=dfx.getParents(startNode,style,this.element);var endParents=dfx.getParents(endNode,style,this.element);this.removeStylesBetweenElems(startNode,endNode,style);if(startParents.length===0&&endParents.length===0){ViperSelection.addRange(range);return;}
var bookmark=this.createBookmark(range);var startTopParent=startParents.pop();var endTopParent=endParents.pop();if(startTopParent===endTopParent){var start=startTopParent.cloneNode(true);var selection=startTopParent.cloneNode(true);var end=startTopParent.cloneNode(true);var lastChild=dfx.getLastChild(start);var elemsBetween=dfx.getElementsBetween(this.getBookmark(start,'start'),lastChild);elemsBetween.push(this.getBookmark(start,'start'));elemsBetween.push(this.getBookmark(start,'end'));elemsBetween.push(lastChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(end);var elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(end,'end'));elemsBetween.push(this.getBookmark(end,'end'));elemsBetween.push(this.getBookmark(end,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(selection);var elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(selection,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var lastChild=dfx.getLastChild(selection);var elemsBetween=dfx.getElementsBetween(this.getBookmark(selection,'end'),lastChild);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(selection);this.removeTagFromChildren(div,style,true);dfx.removeEmptyNodes(start);dfx.removeEmptyNodes(end);dfx.removeEmptyNodes(div,function(elToDel){if(dfx.isTag(elToDel,'span')===true&&dfx.hasClass(elToDel,'viperBookmark')===true){return false;}});if(start.firstChild){dfx.insertBefore(startTopParent,start);}
dfx.insertBefore(startTopParent,div.childNodes);if(end.firstChild){dfx.insertBefore(startTopParent,end);}
dfx.remove(startTopParent);var originalBookmark={start:this.getBookmark(this.element,'start'),end:this.getBookmark(this.element,'end')};this.selectBookmark(originalBookmark);return;}
if(startTopParent){var clone=startTopParent.cloneNode(true);var lastChild=dfx.getLastChild(startTopParent);var elemsBetween=dfx.getElementsBetween(bookmark.start,lastChild);elemsBetween.push(bookmark.start);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var firstChild=dfx.getFirstChild(clone);elemsBetween=dfx.getElementsBetween(firstChild,this.getBookmark(clone,'start'));elemsBetween.push(firstChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(clone);this.removeTagFromChildren(div,style);dfx.insertAfter(startTopParent,div.childNodes);}
if(endTopParent){var clone=endTopParent.cloneNode(true);var firstChild=dfx.getFirstChild(endTopParent);var elemsBetween=dfx.getElementsBetween(firstChild,bookmark.end);elemsBetween.push(bookmark.end);elemsBetween.push(firstChild);dfx.remove(elemsBetween);var lastChild=dfx.getLastChild(clone);elemsBetween=dfx.getElementsBetween(this.getBookmark(clone,'end'),lastChild);elemsBetween.push(lastChild);dfx.remove(elemsBetween);var div=Viper.document.createElement('div');div.appendChild(clone);this.removeTagFromChildren(div,style);dfx.insertBefore(endTopParent,div.childNodes);}
var originalBookmark={start:this.getBookmark(this.element,'start'),end:this.getBookmark(this.element,'end')};this.selectBookmark(originalBookmark);},selectBookmark:function(bookmark)
{if(this.element){this.element.focus();}
var range=this.getCurrentRange();var startPos=null;var endPos=null;var startOffset=0;var endOffset=null;if(bookmark.start.nextSibling===bookmark.end||dfx.getElementsBetween(bookmark.start,bookmark.end).length===0){if(bookmark.end.nextSibling){startPos=dfx.getFirstChild(bookmark.end.nextSibling);}else if(bookmark.start.previousSibling){startPos=dfx.getFirstChild(bookmark.start.previousSibling);if(startPos.nodeType===dfx.TEXT_NODE){startOffset=startPos.length;}}else{bookmark.end.parentNode.appendChild(Viper.document.createTextNode(''));startPos=dfx.getFirstChild(bookmark.end.nextSibling);}}else{if(bookmark.start.nextSibling){startPos=dfx.getFirstChild(bookmark.start.nextSibling);}else{if(!bookmark.start.previousSibling){var tmp=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,tmp);}
startPos=dfx.getLastChild(bookmark.start.previousSibling);startOffset=startPos.length;}
if(bookmark.end.previousSibling){endPos=dfx.getLastChild(bookmark.end.previousSibling);}else{endPos=dfx.getFirstChild(bookmark.end.nextSibling);endOffset=0;}}
dfx.remove([bookmark.start,bookmark.end]);if(endPos===null){range.setEnd(startPos,startOffset);range.collapse(false);}else{range.setStart(startPos,startOffset);if(endOffset===null){endOffset=(endPos.length||0);}
range.setEnd(endPos,endOffset);}
try{ViperSelection.addRange(range);}catch(e){}},getBookmark:function(parent,type)
{var elem=dfx.getClass('viperBookmark_'+type,parent)[0];return elem;},removeBookmarks:function(elem)
{dfx.remove(dfx.getClass('viperBookmark',elem,'span'));},removeBookmark:function(bookmark)
{if(!bookmark.start||!bookmark.end){return false;}
var elems=dfx.getElementsBetween(bookmark.start,bookmark.end);elems.push(bookmark.start,bookmark.end);dfx.remove(elems);},createBookmark:function(range,keepOldBookmarks)
{if(keepOldBookmarks!==true){this.removeBookmarks(this.element);}
var currRange=range||this.getCurrentRange();var range=currRange.cloneRange();var startContainer=range.startContainer;var endContainer=range.endContainer;var startOffset=range.startOffset;var endOffset=range.endOffset;range.collapse(false);var endBookmark=Viper.document.createElement('span');endBookmark.style.display='none';dfx.setHtml(endBookmark,'&nbsp;');dfx.addClass(endBookmark,'viperBookmark viperBookmark_end');endBookmark.setAttribute('viperBookmark','end');range.insertNode(endBookmark);if(dfx.isChildOf(endBookmark,this.element)===false){this.element.appendChild(endBookmark);}
range.setStart(startContainer,startOffset);range.collapse(true);var startBookmark=Viper.document.createElement('span');startBookmark.style.display='none';dfx.addClass(startBookmark,'viperBookmark viperBookmark_start');dfx.setHtml(startBookmark,'&nbsp;');startBookmark.setAttribute('viperBookmark','start');try{range.insertNode(startBookmark);if(startBookmark.previousSibling===endBookmark){var tmp=startBookmark;startBookmark=endBookmark;endBookmark=tmp;}}catch(e){dfx.insertBefore(endBookmark,startBookmark);}
if(dfx.isChildOf(startBookmark,this.element)===false){if(this.element.firstChild){dfx.insertBefore(this.element.firstChild,startBookmark);}else{this.element.appendChild(startBookmark);}}
if(!endBookmark.previousSibling){var tmp=Viper.document.createTextNode('');dfx.insertBefore(endBookmark,tmp);}
if(!startBookmark.nextSibling){var tmp=Viper.document.createTextNode('');dfx.insertAfter(startBookmark,tmp);}
currRange.setStart(startBookmark.nextSibling,0);currRange.setEnd(endBookmark.previousSibling,(endBookmark.previousSibling.length||0));var bookmark={start:startBookmark,end:endBookmark};return bookmark;},insertNodeAtBookmark:function(node,bookmark,noSelect)
{if(!bookmark||!node){return;}
dfx.insertBefore(bookmark.start,node);if(noSelect!==true){this.selectBookmark(bookmark);}},splitNodeAtRange:function(tag,range,copyMidTags)
{range=range||this.getCurrentRange();var bookmark=this.createBookmark(range);return this.splitNodeAtBookmark(tag,bookmark,copyMidTags);},splitNodeAtBookmark:function(tag,bookmark,copyMidTags)
{if(!bookmark){return;}
var node=bookmark.start.parentNode;var foundNode=null;while(node&&node!==this.element){if(dfx.isTag(node,tag)===true){foundNode=node;}
node=node.parentNode;}
var prevNode=null;var nextNode=null;var midNode=null;if(foundNode===null){prevNode=bookmark.start.previousSibling;nextNode=bookmark.end.nextSibling;if(!prevNode&&!nextNode){prevNode=Viper.document.createTextNode('');dfx.insertBefore(bookmark.start,prevNode);nextNode=prevNode;}else if(!prevNode&&nextNode){prevNode=nextNode;}else if(!nextNode&&prevNode){nextNode=prevNode;}}else{var prevElem=null;var newElem=null;var midElem=null;var toRemove=[];var parents=[];var prevLvl=null;dfx.walk(foundNode,function(elem,lvl){if(elem===bookmark.start){return false;}
if(elem.nodeType===dfx.TEXT_NODE){toRemove.push(elem);parents[(lvl-1)].appendChild(elem.cloneNode(false));}else{var clone=elem.cloneNode(false);if(prevLvl===null){newElem=clone;parents.push(clone);}else if(lvl===prevLvl){parents[(lvl-1)].appendChild(clone);parents.push(clone);}else if(lvl>prevLvl){parents[prevLvl]=prevElem;}else if(lvl<prevLvl){parents.pop();parents.push(clone);parents[(lvl-1)].appendChild(clone);}
if(copyMidTags===true){if(dfx.isTag(elem,tag)===false){if(midElem===null){midElem=elem.cloneNode(false);}else{midElem.appendChild(elem.cloneNode(false));}}}
prevElem=clone;}
prevLvl=lvl;});dfx.remove(toRemove);toRemove=null;if(this.elementIsEmpty(newElem)===false){dfx.insertBefore(foundNode,newElem);}else{newElem=null;}
if(midElem!==null){dfx.insertBefore(foundNode,midElem);}
prevNode=newElem;nextNode=foundNode;midNode=midElem;}
this.selectBookmark(bookmark);return{prevNode:prevNode,nextNode:nextNode,midNode:midNode};},hasBlockChildren:function(parent)
{var c=parent.childNodes.length;for(var i=0;i<c;i++){if(parent.childNodes[i].nodeType===dfx.ELEMENT_NODE){if(dfx.isBlockElement(parent.childNodes[i])===true){return true;}}}
return false;},elementIsEmpty:function(elem)
{if(dfx.isBlank(dfx.getNodeTextContent(elem))===true){var tags=dfx.getTag('*',elem);var ln=tags.length;for(var i=0;i<ln;i++){if(dfx.isStubElement(tags[i])===true){return false;}}
return true;}
return false;},_handleAncillaryKey:function(e)
{var key=e.keyCode;var preventDefault=true;var shiftKey=e.shiftKey;switch(key){case dfx.DOM_VK_DELETE:if(ViperChangeTracker.isTracking()!==true&&this.isBrowser('firefox')!==true){preventDefault=false;}else{var ret=this.deleteContents();if(ret===false){preventDefault=false;}}
this.ViperPluginManager.fireKeyPressed(e);break;case 46:if(this.isBrowser('firefox')&&e.type==='keypress'||!this.isBrowser('firefox')&&e.type==='keydown'){this.deleteContents(true);this.ViperPluginManager.fireKeyPressed(e);}else{preventDefault=false;}
break;case dfx.DOM_VK_DOWN:case dfx.DOM_VK_UP:case dfx.DOM_VK_LEFT:case dfx.DOM_VK_RIGHT:this.ViperPluginManager.fireCaretPositioned();preventDefault=false;break;default:preventDefault=false;break;}
if(preventDefault===true){dfx.preventDefault(e);return false;}
if(key===46&&(this.isBrowser('firefox')&&e.type==='keypress'||!this.isBrowser('firefox')&&e.type==='keydown')){this._fireNodesChanged=true;}
return true;},keyDown:function(e)
{if(this.pluginActive()===true&&this.ViperPluginManager.allowTextInput!==true){return;}
if(!this.ViperPluginManager.fireKeyDown(e)){return false;}
var preventDefaul=false;if(this._handleSpecialKey(e)===false){if(this.isBrowser('msie')!==true){this._preventKeyPress=true;}
return false;}else if((e.ctrlKey===true||e.metaKey===true)&&(this.isBrowser('msie')===true||this.isBrowser('chrome')===true)){if(!this.ViperPluginManager.fireKeyPressed(e)){return false;}}
switch(e.keyCode){case 27:this.fireClickedOutside();break;default:if(/Firefox/.test(navigator.userAgent)!==true){preventDefaul=!(this._handleAncillaryKey(e));}
break;}
if(preventDefaul===true){dfx.preventDefault(e);return false;}
return true;},keyPress:function(e)
{if(this._preventKeyPress===true){this._preventKeyPress=false;return;}
if(this.enabled!==true){return;}
if(this.pluginActive()===true&&this.ViperPluginManager.allowTextInput!==true){return;}
if(!this.rangeInViperBounds()){var range=this.getCurrentRange();if(range===null){return true;}
var commEl=range.getCommonElement();if(dfx.isChildOf(this.element,commEl)===true){var startNode=range.getStartNode();var endNode=range.getEndNode();if(dfx.isChildOf(startNode,this.element)!==true){range.setStart(range._getFirstSelectableChild(this.element),0);}
if(dfx.isChildOf(endNode,this.element)!==true){var lastSelectable=range._getLastSelectableChild(this.element);range.setEnd(lastSelectable,lastSelectable.length);}
ViperSelection.addRange(range);}else{if(e.keyCode===8){return false;}
return true;}}
if(!this.ViperPluginManager.fireKeyPressed(e)){return false;}
var char=null;if(e.which===null){char=String.fromCharCode(e.keyCode);}else if(e.which>0){char=String.fromCharCode(e.which);}
if(char!==null&&e.ctrlKey!==true&&e.metaKey!==true){switch(e.keyCode){case dfx.DOM_VK_DELETE:return this._handleAncillaryKey(e);break;default:if(this.insertTextAtCaret(char)===false){return false;}
break;}}
return this._handleAncillaryKey(e);},_handleSpecialKey:function(e)
{var keyCode=e.which;if(keyCode===null){keyCode=e.keyCode;}
var preventDefault=false;switch(keyCode){case 65:if(e.ctrlKey===true||e.metaKey===true){preventDefault=true;var range=this.getCurrentRange();if(this.isBrowser('msie')===true){var selStart=Viper.document.createTextNode('');var selEnd=Viper.document.createTextNode('');if(this.element.firstChild){dfx.insertBefore(this.element.firstChild,selStart);}else{this.element.appendChild(selStart);}
this.element.appendChild(selEnd);range.setStart(selStart,0);range.setEnd(selEnd,0);}else{range.setStart(range._getFirstSelectableChild(this.element),0);var lastSelectable=range._getLastSelectableChild(this.element);range.setEnd(lastSelectable,lastSelectable.length);}
ViperSelection.addRange(range);}
break;default:break;}
if(preventDefault===true){dfx.preventDefault(e);return false;}
return true;},dragStart:function(e)
{if(!e.target){return;}
this.fireCallbacks('dragStart',{e:e},function(){});},dragDrop:function(e)
{if(!e.target){return;}
this.fireCallbacks('dragDrop',{e:e},function(){});},focus:function()
{if(this.element){try{this.element.focus();this.fireCaretUpdated();}catch(e){}}},setRange:function(elem,pos)
{var range=this.getCurrentRange();range.setStart(elem,pos);range.collapse(true);return range;},mouseUp:function(e,target)
{if(this.ViperPluginManager.fireClicked(e)===false){return false;}
var range=this.getCurrentRange();if(!range){var target=dfx.getMouseEventTarget(e);if(dfx.isStubElement(target)===true){var range=ViperSelection.createRange();range.selectNodeContents(target);ViperSelection.addRange(range);}}else if(range.collapsed===true){var target=dfx.getMouseEventTarget(e);if(dfx.isStubElement(target)===true){range.selectNodeContents(target);}else if(range.startContainer.nodeType!==dfx.TEXT_NODE){var startCont=range.startContainer;var elem=startCont.childNodes[range.startOffset];var selNode=null;if(elem){if(elem.firstChild){selNode=range._getFirstSelectableChild(elem);if(selNode&&dfx.isBlank(selNode.data)===true){selNode.data='';}}else if(dfx.isStubElement(elem)===false){dfx.setHtml(elem,'&nbsp;');selNode=elem.firstChild;}
if(selNode){range.setStart(selNode,0);range.collapse(true);}}}else if(range.startOffset===1&&range.startContainer.data===String.fromCharCode(160)){range.setStart(range.startContainer,0);range.collapse(true);}}
ViperSelection._lastRange=null;if(this.caret){this.caret.style.visibility='hidden';}
this.ViperPluginManager.fireSelectionChanged(range);this.fireCallbacks('caretPositioned',{range:range});},setStylesURL:function(url)
{this.stylesURL=url;var viperCSS=this.stylesURL+'/viper.css';dfx._includeCss(viperCSS);},setViperURL:function(url,callback)
{this.viperURL=url;this.ViperPluginManager.pluginsURL=url+'/plugins/';if(callback){callback.call(this);}},getStylesURL:function()
{return this.stylesURL;},fireCaretUpdated:function()
{this.ViperPluginManager.fireCaretUpdated();},fireNodesChanged:function(type,noFocus,isTextChange)
{type=type||'text_change';if(isTextChange===true){type='text_change';}
this._isTextChange=false;this.fireCallbacks('nodesChanged');this.ViperUndoManager.add('viper',type);ViperChangeTracker.updatePositionMarkers(true);if(noFocus!==true){this.focus();}},isChildOfElems:function(el,parents)
{while(el&&el.parentNode){if(parents.inArray(el.parentNode)===true){return true;}
el=el.parentNode;}
return false;},isChildOfClass:function(el,className,checkSelf)
{if(checkSelf===true&&el&&dfx.hasClass(el.parentNode,className)===true){return true;}
while(el&&el.parentNode){if(dfx.hasClass(el.parentNode,className)===true){return true;}
el=el.parentNode;}
return false;},mouseDown:function(e,target)
{if(e){if(this.ViperPluginManager.fireMouseDown(e)===false){return false;}}
if(!target){target=dfx.getMouseEventTarget(e);}
if(target!==this.element){if(dfx.isTag(target,'html')===true){return;}
var elems=[this.element,dfx.getId('Help'),dfx.getId('HelpEditingToolbarIcon')];if(this._subElementActive===true){if(target===this._mainElem||dfx.isChildOf(target,this._mainElem)===true){this.setSubElementState(null,false);return;}}
if(this.isChildOfElems(target,elems)===false){if(this.isChildOfClass(target,'_viper-CT-marker',true)===false&&this.isChildOfClass(target,'_viper-CT-infoBoxHolder',true)===false){this.fireClickedOutside(target);}}else{this.fireCaretUpdated();}}},_setupCoreTrackChangeActions:function()
{var self=this;ViperChangeTracker.setApproveCallback('textRemoved',function(clone,node){self.removeElem(node);});ViperChangeTracker.setRejectCallback('textRemoved',function(clone,node){while(node.firstChild){if(node.firstChild.nodeType===dfx.ELEMENT_NODE&&ViperChangeTracker.isTrackingNode(node.firstChild)){dfx.remove(node.firstChild);}else{dfx.insertBefore(node,node.firstChild);}}
self.removeElem(node);});ViperChangeTracker.setApproveCallback('textAdded',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
self.removeElem(node);});ViperChangeTracker.setRejectCallback('textAdded',function(clone,node){self.removeElem(node);});ViperChangeTracker.setApproveCallback('merged',function(clone,node){self.removeElem(node);});ViperChangeTracker.setDescriptionCallback('merged',function(node){return'Text';});ViperChangeTracker.setRejectCallback('merged',function(clone,node){var newParent=node.parentNode.cloneNode(false);dfx.insertAfter(node.parentNode,newParent);var elems=dfx.getElementsBetween(node,newParent);var elem=null;while(elem=elems.shift()){newParent.appendChild(elem);}
self.removeElem(node);});ViperChangeTracker.setApproveCallback('viperComment',function(clone,node){ViperChangeTracker.removeTrackChanges(node,false);});},fireClickedOutside:function(clickedElement)
{if(this.isPluginElement(clickedElement)===true){return;}
if(this.pluginActive()===true){return;}
if(this.getSetting('disableOnBlur')!==false){this.setEnabled(false);}
this.fireCallbacks('clickedOutside');},pluginActive:function()
{return(this.ViperPluginManager.getActivePlugin()!==null);},isPluginElement:function(element)
{return this.ViperPluginManager.isPluginElement(element);},registerCallback:function(type,namespace,callback)
{if(dfx.isFn(callback)===false){return;}
if(!this.callbacks[type]){this.callbacks[type]={namespaces:{},others:[]};}
if(namespace){if(!this.callbacks[type].namespaces[namespace]){this.callbacks[type].namespaces[namespace]=[];}
this.callbacks[type].namespaces[namespace]=callback;}else{this.callbacks[type].others.push(callback);}},fireCallbacks:function(type,data,doneCallback)
{var callbackList=[];if(this.callbacks[type]){for(var namespace in this.callbacks[type].namespaces){if(this.callbacks[type].namespaces.hasOwnProperty(namespace)===true){var callback=this.callbacks[type].namespaces[namespace];if(callback){callbackList.push(callback);}}}
var len=this.callbacks[type].others.length;for(var i=0;i<len;i++){callbackList.push(this.callbacks[type].others[i]);}}
this._fireCallbacks(callbackList,data,doneCallback);},_fireCallbacks:function(callbacks,data,doneCallback)
{if(callbacks.length===0){if(doneCallback){doneCallback.call(this,data);}
return;}
var callback=callbacks.shift();if(dfx.isFn(callback)===true){var self=this;var retVal=callback.call(this,data,function(retVal){if(retVal!==false){self._fireCallbacks(callbacks,data,doneCallback);}});if(retVal!==false){this._fireCallbacks(callbacks,data,doneCallback);}}},removeCallback:function(type,namespace)
{if(!type){if(namespace){for(var type in this.callbacks){if(this.callbacks.hasOwnProperty(type)===true){this.removeCallback(type,namespace);}}}}else if(this.callbacks[type]){if(namespace){if(this.callbacks[type].namespaces[namespace]){this.callbacks[type].namespaces[namespace]=[];}}else{delete this.callbacks[type];}}},getHtml:function(elem)
{elem=elem||this.element;if(typeof elem==='string'){var tmp=elem;elem=Viper.document.createElement('div');dfx.setHtml(elem,tmp);}
var clone=elem.cloneNode(true);this.removeEmptyNodes(clone);this._removeViperElements(clone);this.fireCallbacks('getHtml',{element:clone});var html=dfx.getHtml(clone);html=this._fixHtml(html);return html;},getSaveContent:function(elem)
{if(this.element===elem){ViperChangeTracker.activateFinalMode();}
var html=this.getHtml(elem);var info=ViperChangeTracker.getTrackingInfo(elem);if(info){html+='<!--viperTrackInfo='+dfx.jsonEncode(info)+'-->';}
return html;},getContents:function(elem)
{elem=elem||this.element;var clone=elem.cloneNode(true);this._removeViperElements(clone);this.fireCallbacks('getContents',{element:clone});var html=dfx.getHtml(clone);return html;},_removeViperElements:function(elem)
{var bookmarks=dfx.getClass('viperBookmark',elem);if(bookmarks){dfx.remove(bookmarks);}
var caret=dfx.getClass('viper_caret',elem);if(caret){dfx.remove(caret);}
caret=dfx.getId('caret');dfx.remove(caret);},setContents:function(contents)
{if(typeof contents==='string'){this.element.innerHTML=contents;}else if(contents){this.element.appendChild(contents);}
this.fireCallbacks('setContents',{element:this.element});this.initEditableElement();},setHtml:function(contents,callback)
{var clone=Viper.document.createElement('div');if(typeof contents==='string'){dfx.setHtml(clone,contents);}else if(contents){clone.appendChild(contents);}
var range=this.getCurrentRange();var lastSelectable=range._getLastSelectableChild(clone);if(lastSelectable&&lastSelectable.nodeType===dfx.TEXT_NODE){lastSelectable.data=dfx.rtrim(lastSelectable.data);}
this.removeEmptyNodes(clone);var self=this;this.fireCallbacks('setHtml',{element:clone},function(){dfx.setHtml(self.element,dfx.getHtml(clone));self.initEditableElement();if(callback){callback.call(this);}});},setAllowCleanDOM:function(allow)
{this._canCleanDom=allow;},canCleanDOM:function()
{return this._canCleanDom;},cleanDOM:function(elem,tag)
{if(this.canCleanDOM()===false){return;}
if(!elem){elem=this.element;}
this._cleanDOM(elem,tag);return elem;},_cleanDOM:function(elem,tag)
{if(!elem){return;}
if(elem.firstChild&&dfx.isTag(elem,'pre')!==true){this._cleanDOM(elem.firstChild,tag);}
if(elem===this.element){return;}
var nextSibling=elem.nextSibling;this._cleanNode(elem,tag);if(nextSibling){this._cleanDOM(nextSibling,tag);}},_cleanNode:function(node,tag)
{if(node===this.element){return;}
if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tag&&tag!=tagName){return;}
switch(tagName){case'br':if(!node.nextSibling||(node.hasAttribute&&node.hasAttribute('_moz_dirty'))){if(tag){var newNode=Viper.document.createTextNode(' ');dfx.insertBefore(node,newNode);}
dfx.remove(node);}else{var next=node.nextSibling;var brLast=true;while(next){if(next.nodeType!==dfx.TEXT_NODE||dfx.trim(next.nodeValue)!==''){brLast=false;break;}
next=next.nextSibling;}
if(brLast===true){dfx.remove(node);}}
break;case'a':if(!node.getAttribute('name')&&!node.firstChild){dfx.remove(node);}
break;case'td':break;default:if(dfx.isStubElement(node)===false&&!node.firstChild){if(tagName==='span'&&(node.getAttribute('viperchangeid')||dfx.hasClass(node,'_my4_keyword'))){return;}
dfx.remove(node);}
break;}}else if(node.nodeType===dfx.TEXT_NODE&&!tag){if(dfx.trim(node.data,"\f\n\r\t\v\u2028\u2029")===''&&dfx.isTag(node.parentNode,'td')===false){dfx.remove(node);}}},removeEmptyNodes:function(element,content)
{if(content&&!element){element=document.createElement('div');dfx.setHtml(element,content);}else if(!content){if(!element){element=this.element;}}else{return;}
this._cleanDOM(element);return element;},_fixHtml:function(html)
{return dfx.fixHtml(html);},removeElem:function(elem)
{if(dfx.isArray(elem)===true){var eln=elem.length;for(var i=0;i<eln;i++){this.removeElem(elem[i]);}}else if(elem){var parent=elem.parentNode;dfx.remove(elem);if(parent){for(var node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType!==dfx.TEXT_NODE||node.nodeValue.length!==0){return;}}
dfx.remove(parent);}}}};var ViperChangeTracker={_className:'_viper-CT',_nodeClassName:'_viper-CTNode',_tracking:false,_nodeTypeVisibility:{},_viper:null,_updateTimer:null,_updateDelay:600,_infoBoxHolder:null,_markerHolder:null,_processingMarkers:false,_changes:{},_changeSeq:0,_users:{},_descCallbacks:{},_changeTypes:{},_colours:['green','blue','red','yellow','orange','purple','pink'],_userColours:{},_rejectCallbacks:{},_approveCallbacks:{},_comments:{},_batchChangeid:null,_actionTypes:{remove:'Deletes',insert:'Inserts',format:'Format',comment:'Comments'},_actionTypeDisplayStates:{insert:false,remove:true,format:true,comment:true},_currentMode:null,_orientation:'right',_tmpData:{},_currentUserid:null,init:function(viper,trackChanges)
{var self=this;this._viper=viper;this._tracking=trackChanges||false;this.cleanUp();this._viper.registerCallback('nodesChanged','ViperChangeTracker',function(){if(self._viper._subElementActive===true){var commentElemId=self._viper.element.id;var changeid=commentElemId.replace('viperComment-','');self._comments[changeid]=self._viper.getHtml(self._viper.element);}});this._viper.registerCallback('viperEnabled','ViperChangeTracker',function(){self._processingMarkers=false;var childNodes=self._viper.element.childNodes;for(var node=self._viper.element.lastChild;node;node=node.previousSibling){if(node.nodeType===8&&node.data.indexOf('viperTrackInfo=')===0){var loadedData=node.data.replace('viperTrackInfo=','');try{loadedData=dfx.jsonDecode(loadedData);}catch(e){loadedData=[];}
dfx.foreach(loadedData,function(changeid){if(dfx.isset(loadedData[changeid].comment)===true){self._comments[changeid]=loadedData[changeid].comment;}});dfx.remove(node);break;}}
var changes=self.loadCTNodes(self._viper.getViperElement());var foundChanges=false;dfx.foreach(changes,function(changeid){self._changes[changeid]=changes[changeid];foundChanges=true;});ViperChangeTracker.activateFinalMode();if(foundChanges===true){self.updatePositionMarkers(false);ViperChangeTracker._enableChangeTracking();}});this._viper.registerCallback('ViperUndoManager:undo','ViperChangeTracker',function(){self.reLoad();});this._viper.registerCallback('ViperUndoManager:redo','ViperChangeTracker',function(){self.reLoad();});dfxjQuery(window).resize(function(){self.updatePositionMarkers(true);});},reLoad:function()
{this.cleanUp();var self=this;var changes=this.loadCTNodes(this._viper.getViperElement());var foundChanges=false;dfx.foreach(changes,function(changeid){self._changes[changeid]=changes[changeid];foundChanges=true;});if(foundChanges===true){var currMode=self.getCurrentMode();if(currMode==='original'){self.activateOriginalMode();}else{self.activateFinalMode();}
self.updatePositionMarkers(false);}},cleanUp:function()
{this._changes={};this._changeSeq=0;this._userColours=[];this._tmpData={};this._orientation='right';if(this._infoBoxHolder){dfx.remove(this._infoBoxHolder);this._infoBoxHolder=null;}
if(this._markerHolder){dfx.remove(this._markerHolder);this._markerHolder=null;}},hasChanges:function()
{return(dfx.isEmpty(this._changes)!==true);},isTracking:function()
{var tracking=(this._viper._subElementActive!==true&&this._tracking===true);return tracking;},isTrackingNode:function(node,ctNodeType)
{if(node&&node.nodeType===dfx.ELEMENT_NODE&&dfx.hasClass(node,this._nodeClassName)===true){if(!ctNodeType||dfx.hasClass(node,'CT-'+ctNodeType)===true||node.tagName.toLowerCase()==='ins'||node.tagName.toLowerCase()==='del'||this.isInsertType(this.getCTNTypeFromNode(node))===true){return true;}}
return false;},_enableChangeTracking:function()
{this._tracking=true;this._viper.fireCallbacks('ViperChangeTracker:tracking',true);},enableChangeTracking:function()
{this._infoBoxHolder=this._createInfoboxHolder();this._markerHolder=this._createMarkerHolder();if(this._viper.getViperElement()){this._enableChangeTracking();this.loadChanges(this._viper.getViperElement());this.updatePositionMarkers(false);}},disableChangeTracking:function()
{this._tracking=false;this._viper.fireCallbacks('ViperChangeTracker:tracking',false);},loadChanges:function(elem)
{var changes=this.loadCTNodes(this._viper.getViperElement());},setNodeTypeVisibility:function(nodeType,visible)
{this._nodeTypeVisibility[nodeType]=visible;var elems=dfx.getClass('CT-'+nodeType,this._viper.getViperElement());if(visible===false){dfx.addClass(elems,'CT-disabled');}else{dfx.removeClass(elems,'CT-disabled');}},activateFinalMode:function()
{this.setNodeTypeVisibility('textRemoved',false);this.setNodeTypeVisibility('textAdd',true);this.setNodeTypeVisibility('textAdded',true);this.setActionDisplayState('insert',false);this.setActionDisplayState('remove',true);if(this._currentMode!=='final'){this._viper.fireCallbacks('ViperChangeTracker:modeChange','final');}
this._currentMode='final';},activateOriginalMode:function()
{this.setNodeTypeVisibility('textRemoved',true);this.setNodeTypeVisibility('textAdd',false);this.setNodeTypeVisibility('textAdded',false);this.setActionDisplayState('insert',true);this.setActionDisplayState('remove',false);if(this._currentMode!=='original'){this._viper.fireCallbacks('ViperChangeTracker:modeChange','original');}
this._currentMode='original';},getCurrentMode:function()
{return this._currentMode;},isNodeTypeVisible:function(ctNodeType)
{if(dfx.isset(this._nodeTypeVisibility[ctNodeType])===true&&this._nodeTypeVisibility[ctNodeType]!==true){return false;}
return true;},isNodeVisible:function(ctNode)
{if(ctNode){for(var ctType in this._nodeTypeVisibility){if(this._nodeTypeVisibility.hasOwnProperty(ctType)===false){continue;}
if(dfx.hasClass(ctNode,'CT-'+ctType)===true){return this._nodeTypeVisibility[ctType];}}}
return true;},isInsertType:function(ctnType)
{if(this._changeTypes[ctnType]&&this._changeTypes[ctnType].actionType==='insert'){return true;}
return false;},canShowType:function(ctnType)
{var actionType=null;if(this._changeTypes[ctnType]){actionType=this._changeTypes[ctnType].actionType;}
return(this._actionTypeDisplayStates[actionType]===true);},setActionDisplayState:function(actionType,display,nodelay,forceUpdate)
{nodelay=nodelay||false;this._actionTypeDisplayStates[actionType]=display;this.updatePositionMarkers(!nodelay,forceUpdate);},getActionDisplayStates:function()
{return this._actionTypeDisplayStates;},addChangeType:function(typeName,title,actionType)
{if(!this._actionTypes[actionType]){return;}
this._changeTypes[typeName]={title:title,actionType:actionType};},getActionTypes:function()
{return this._actionTypes;},getTypeTitle:function(typeName)
{var title='';if(this._changeTypes[typeName]&&this._changeTypes[typeName].title){title=this._changeTypes[typeName].title;}
return title;},getCTNode:function(node,ctnType)
{while(node&&node!==this._viper.getViperElement()){if(dfx.hasClass(node,'_viper-CTNode')===true){if(ctnType){if(dfx.hasClass(node,'CT-'+ctnType)===true){return node;}}else{return node;}}
node=node.parentNode;}
return null;},getCTNTypeFromNode:function(node)
{var ctnType='';dfx.foreach(this._changeTypes,function(type){if(dfx.hasClass(node,'CT-'+type)===true){ctnType=type;return false;}});return ctnType;},createCTNode:function(nodeType,ctnType,childNode)
{if(ViperChangeTracker.isTracking()!==true){return childNode;}
var node=Viper.document.createElement(nodeType);dfx.addClass(node,this._nodeClassName+' CT-'+ctnType);if(!childNode){var textNode=Viper.document.createTextNode('');node.appendChild(textNode);}else{node.appendChild(childNode);}
if(this.isNodeTypeVisible(ctnType)===false){dfx.addClass(node,'CT-disabled');}
return node;},trackNodes:function(nodes,ctnType)
{var ctnClass=this.getCTNodeClass(ctnType);dfx.foreach(nodes,function(i){dfx.addClass(nodes[i],ctnClass);});},getCTNodeClass:function(ctnType)
{var className=this._nodeClassName+' CT-'+ctnType;if(this.isNodeTypeVisible(ctnType)===false){className+=' CT-disabled';}
return className;},getCTNodes:function(ctnType,parentElement)
{parentElement=parentElement||this._viper.getViperElement();var className=this._nodeClassName;if(ctnType){className='CT-'+ctnType;}
var nodes=dfx.getClass(className,parentElement);return nodes;},getPreviousVisibleContainer:function(range,node)
{while(node){var ctNode=this.getCTNode(node);if(ctNode&&this.isNodeVisible(ctNode)===false){node=range.getPreviousContainer(ctNode);}else{break;}}
return node;},getNextVisibleContainer:function(range,node)
{while(node){var ctNode=this.getCTNode(node);if(ctNode&&this.isNodeVisible(ctNode)===false){node=range.getNextContainer(ctNode);}else{break;}}
return node;},getColour:function(colourIndex)
{return this._colours[colourIndex];},getMarker:function(changeid)
{if(!changeid){return;}
var elemid=this._className+'-marker-'+changeid;var marker=dfx.getId(elemid);if(!marker){return null;}
return marker;},_createMarker:function(ctnType,posX,posY,colourIndex,show,changeid)
{var colour=this._colours[colourIndex];var rect=null;if(!this._tmpData.viperElemRect){rect=dfx.getBoundingRectangle(this._viper.getViperElement());this._tmpData.viperElemRect=rect;}else{rect=this._tmpData.viperElemRect;}
var elem=Viper.document.createElement('div');var c=this._className+'-marker';elem.id=this._className+'-marker-'+changeid;dfx.addClass(elem,c+' CT-'+ctnType+' CT-'+colour);if(this._orientation==='left'){dfx.setStyle(elem,'left',parseInt(rect.x1-26)+'px');}else{dfx.setStyle(elem,'left',parseInt(posX)+'px');}
dfx.setStyle(elem,'top',parseInt(posY)+'px');if(show!==true){dfx.addClass(elem,'CT-ins');}
var orientation='';if(this._orientation==='left'){orientation=' orientationLeft';}
var content='<div class="'+c+'-teardrop'+orientation+'"></div>';dfx.setHtml(elem,content);var width=0;if(this._orientation==='left'){width=parseInt(posX-(rect.x1-30));}else{width=parseInt((rect.x2+30)-posX);}
dfx.setStyle(elem,'width',width+'px');return elem;},getParentCTNode:function(node,type)
{while(node&&node!==this._viper.getViperElement()){node=node.parentNode;if(this.isTrackingNode(node,type)===true){return node;}}
return false;},addPositionMarkers:function(ctNodes,index,displayed,callback)
{if(!ctNodes&&!index){if(this._processingMarkers===true){return;}
this._processingMarkers=true;this.removePositionMarkers();this.removeInfoBoxPosition();this._createMarkerHolder();this.updateInfoBoxPosition();ctNodes=this.getCTNodes();index=0;displayed={};}
var self=this;var node=ctNodes[index];if(!node){if(callback){callback.call(this);}
this._processingMarkers=false;return;}
if(!node.parentNode){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
var ctNodeType=this.getCTNTypeFromNode(node);var parentCTNode=this.getParentCTNode(node,ctNodeType);if(parentCTNode){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
var changeid=node.getAttribute('viperChangeid');if(displayed[changeid]===true){self.addPositionMarkers(ctNodes,(index+1),displayed,callback);return;}
displayed[changeid]=true;var change=self.getChange(changeid);if(change){var idParts=changeid.split('-');colourIndex=parseInt(idParts[2]);this.setUserColour(parseInt(idParts[0]),idParts[2]);var isInsertType=this.isInsertType(change.type);var canShowType=this.canShowType(change.type);var tmp=Viper.document.createElement('span');dfx.setHtml(tmp,'&nbsp;');if(dfx.isBlockElement(node)===true&&dfx.isStubElement(node)!==true){if(node.firstChild){dfx.insertBefore(node.firstChild,tmp);}else{node.appendChild(tmp);}}else{dfx.insertBefore(node,tmp);}
var tmpPos=dfx.getBoundingRectangle(tmp);var marker=self._createMarker(change.type,tmpPos.x1,tmpPos.y2,colourIndex,canShowType,changeid);dfx.remove(tmp);this._markerHolder.appendChild(marker);this.getChangeInfo(changeid,function(changeInfo){if(!self._infoBoxHolder){self._processingMarkers=false;return;}
var infoBox=self._createInfoBox(changeInfo,colourIndex);self._setMouseEvents(infoBox,marker,node,isInsertType,changeid);self._infoBoxHolder.appendChild(infoBox);try{self._positionInfoBox(infoBox,tmpPos,canShowType);}catch(e){}
self._viper.fireCallbacks('ViperChangeTracker:infoBoxAdded',changeid);self.addPositionMarkers(ctNodes,(index+1),displayed,callback);});}},removePositionMarkers:function()
{dfx.remove(dfx.getClass(this._className+'-marker'));},updatePositionMarkers:function(delayed,force,callback)
{if(force!==true&&this._viper._subElementActive===true){return;}
if(this._updateTimer){clearTimeout(this._updateTimer);this._updateTimer=null;}
if(delayed!==true){this.addPositionMarkers(null,null,null,callback);}else{var self=this;this._updateTimer=setTimeout(function(){try{self.addPositionMarkers(null,null,null,callback);}catch(e){};},this._updateDelay);}},_createMarkerHolder:function()
{if(this._markerHolder){dfx.remove(this._markerHolder);}
var holder=Viper.document.createElement('div');dfx.addClass(holder,this._className+'-markerHolder');Viper.document.body.appendChild(holder);this._markerHolder=holder;return holder;},_createInfoBox:function(data,colourIndex)
{if(!data){return;}
var colour=this._colours[colourIndex];var lineBox=Viper.document.createElement('div');dfx.addClass(lineBox,this._className+'-lineBox CT-'+colour);var c=this._className+'-infoBox';var infoBox=Viper.document.createElement('div');dfx.addClass(infoBox,c);var description='';if(dfx.isObj(data.desc)!==true){description=data.desc;}
var isComment='';if(data.typeid==='viperComment'){isComment=' isComment';}
var content='<div class="'+c+'-top">';if(data.typeid==='viperComment'){content+='<div class="clickToReject">Click to remove comment</div>';}else{content+='<div class="clickToAccept">Click to accept change</div>';content+='<div class="clickToReject">Click to reject change</div>';}
content+='<div class="changeBoxTitle"><strong>'+data.ownerName+'</strong> <span>'+data.time+'</span></div>';content+='<div class="'+c+'-actionBtns'+isComment+'">';if(data.typeid!=='viperComment'){content+='<div class="'+c+'-actionBtns-approve"></div>';}
content+='<div class="'+c+'-actionBtns-reject"></div>';content+='</div></div>';content+='<div class="'+c+'-bottom"><strong>'+data.typeName+':</strong> ';content+=description;content+='</div>';dfx.setHtml(infoBox,content);if(dfx.isObj(data.desc)===true){if(dfx.isArray(data.desc)!==true){data.desc=[data.desc];}
dfx.foreach(data.desc,function(i){dfx.getClass(c+'-bottom',infoBox)[0].appendChild(data.desc[i]);});}
lineBox.appendChild(infoBox);return lineBox;},removeInfoBoxPosition:function()
{dfx.empty(this._infoBoxHolder);},_positionInfoBox:function(infoBox,dim,show)
{var height=0;var offset=35;var prevBox=infoBox;while(prevBox=prevBox.previousSibling){var prevRect=dfx.getBoundingRectangle(prevBox.firstChild);if(parseInt(prevRect.y2-prevRect.y1)>0){height=parseInt(prevRect.y2-dim.y2)+offset;break;}}
if(show!==true){dfx.addClass(infoBox,'CT-ins');}
if(this._orientation==='left'){dfx.setStyle(infoBox,'left','auto');dfx.setStyle(infoBox,'right',0);}else{dfx.setStyle(infoBox,'right','auto');dfx.setStyle(infoBox,'left',0);}
dfx.setStyle(infoBox,'top',parseInt(dim.y2)+'px');if(height>0){dfx.setStyle(infoBox,'height',height+'px');}
dfx.addClass(infoBox,'visible');},_createInfoboxHolder:function()
{var id=this._className+'-infoBoxHolder';var holder=dfx.getId(id);if(holder){dfx.remove(holder);}
holder=Viper.document.createElement('div');holder.id=id;dfx.addClass(holder,this._className+'-infoBoxHolder');Viper.document.body.appendChild(holder);return holder;},updateInfoBoxPosition:function()
{if(!this._infoBoxHolder){this._infoBoxHolder=this._createInfoboxHolder();}
var rect=dfx.getBoundingRectangle(this._viper.getViperElement());var windowDim=dfx.getWindowDimensions();var leftPos=rect.x2;if(windowDim){var infoWidth=parseInt(dfx.getStyle(this._infoBoxHolder,'width'));if((windowDim.width<(rect.x2+infoWidth))&&(rect.x1>infoWidth)){leftPos=(rect.x1-infoWidth-26);dfx.addClass(this._infoBoxHolder,'orientationLeft');this._orientation='left';}else{this._orientation='right';dfx.removeClass(this._infoBoxHolder,'orientationLeft');}}else{this._orientation='right';dfx.removeClass(this._infoBoxHolder,'orientationLeft');}
dfx.setStyle(this._infoBoxHolder,'left',leftPos+'px');},getUserAsset:function(userid,callback)
{if(!userid){if(!this.getCurrentUserid()){callback.call(this,null);return null;}
userid=this.getCurrentUserid();}
if(this._users[userid]){callback.call(this,this._users[userid]);}else if(!window['AssetManager']){callback.call(this,null);}else{var self=this;AssetManager.getAsset(userid,function(asset){self._users[userid]=asset;callback.call(self,asset);});}},getUserColour:function(userid)
{var colourIndex=null;if(dfx.isset(this._userColours[userid])===true){colourIndex=this._userColours[userid];}else{colourIndex=this.getAvailableColour();this.setUserColour(userid,colourIndex);}
return colourIndex;},setUserColour:function(userid,colourIndex)
{this._userColours[userid]=colourIndex;},getAvailableColour:function()
{var self=this;var cln=this._colours.length;for(var i=0;i<cln;i++){var found=false;dfx.foreach(this._userColours,function(userid){if(parseInt(self._userColours[userid])===i){found=true;return false;}});if(found===false){return i;}}
return-1;},getChangeId:function()
{var id=this.getCurrentUserid()+'-'+(++this._changeSeq)+'-';id+=this.getUserColour(this.getCurrentUserid())+'-'+Math.ceil(Math.random()*999);if(this._changes[id]){id=this.getChangeId();}
return id;},addChange:function(ctnType,ctNodes,desc)
{if(ViperChangeTracker.isTracking()!==true){return null;}
var changeid=this._batchChangeid;if(changeid===null){if(!this._changes){this._changes={};}
changeid=this.getChangeId();this._changes[changeid]={type:ctnType,nodes:[],time:(new Date()).getTime(),userid:this.getCurrentUserid(),desc:desc};}
var self=this;dfx.foreach(ctNodes,function(i){self.addNodeToChange(changeid,ctNodes[i]);});return changeid;},addNodeToChange:function(changeid,ctNode,replaceNode)
{if(this._batchChangeid!==null){changeid=this._batchChangeid;}
var change=this.getChange(changeid);if(!change){return;}
if(!ctNode.getAttribute('viperChangeid')){ctNode.setAttribute('viperChangeid',changeid);}
if(!ctNode.getAttribute('time')){ctNode.setAttribute('time',parseInt(change.time));}
if(dfx.hasClass(ctNode,ViperChangeTracker.getCTNodeClass(change.type))===false){dfx.addClass(ctNode,ViperChangeTracker.getCTNodeClass(change.type));}
var colourIndex=ViperChangeTracker.getUserColour(change.userid);var colour=ViperChangeTracker.getColour(colourIndex);if(dfx.hasClass(ctNode,'CT-'+colour)===false){dfx.addClass(ctNode,'CT-'+colour);}
if(replaceNode){var nl=change.nodes.length;for(var i=0;i<nl;i++){if(change.nodes[i]===replaceNode){dfx.removeArrayIndex(change.nodes,i);break;}}}
change.nodes.push(ctNode);},getChange:function(changeid)
{var change=null;if(this._changes[changeid]){change=this._changes[changeid];}
return change;},startBatchChange:function(ctnType)
{if(this.isTracking()!==true){return null;}
this._batchChangeid=this.addChange(ctnType);return this._batchChangeid;},endBatchChange:function(changeid)
{if(this.isTracking()===true){if(changeid!==this._batchChangeid){return;}
this._batchChangeid=null;}},getChangeInfo:function(changeid,callback)
{var change=this.getChange(changeid);if(!change){callback.call(this,null);return;}
var userid=change.userid;if(this._users[userid]){var userAsset=this._users[userid];var info={ownerName:dfx.ellipsize(userAsset.name,13),ownerid:userAsset.id,time:dfx.date('d/M/y h:ia',parseInt(change.time)),typeName:ViperChangeTracker.getTypeTitle(change.type),typeid:change.type,desc:ViperChangeTracker.getDescription(change.type,change.nodes[0],changeid)};callback.call(this,info);return;}else{var self=this;ViperChangeTracker.getUserAsset(userid,function(asset){if(asset){this._users[userid]=asset;}else{this._users[userid]={ownerName:'N/A',ownerid:'N/A'};}
self.getChangeInfo(changeid,callback);return;});}},setDescriptionCallback:function(ctnType,callback)
{this._descCallbacks[ctnType]=callback;},getDescription:function(ctnType,node,changeid)
{var desc='';if(dfx.isFn(this._descCallbacks[ctnType])===true){desc=this._descCallbacks[ctnType].call(this,node,ctnType,changeid);}else{var change=this.getChange(changeid);if(change&&change.desc){desc=change.desc;}else{var cnode=node.cloneNode(true);dfx.remove(dfx.getTag('del',cnode));var textContent='';if(node.innerText){textContent=cnode.innerText;}else if(node.textContent){textContent=cnode.textContent;}else{textContent=dfx.getHtml(cnode);}
desc=dfx.ellipsize(textContent,30);cnode=null;}}
return desc;},getDescriptionForNode:function(node)
{var changeid=node.getAttribute('viperchangeid');if(!changeid){return'';}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType){return;}
return this.getDescription(ctnType,node,changeid);},setApproveCallback:function(ctnType,callback)
{this._approveCallbacks[ctnType]=callback;},approveChanges:function(changeid,node)
{if(!changeid&&!node){return;}else if(!node){var change=this.getChange(changeid);if(!change){return;}
var nodes=change.nodes;var ln=nodes.length;for(var i=0;i<ln;i++){this.approveChanges(changeid,nodes[i]);}
this.updatePositionMarkers(false);return;}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType||!this._approveCallbacks[ctnType]){return;}
var clone=node.cloneNode(true);var tmp=Viper.document.createElement('div');tmp.appendChild(clone);if(this.isInsertType(ctnType)===true){var self=this;var ctNodes=this.getCTNodes(null,node);dfx.foreach(ctNodes,function(i){self.approveChanges(ctNodes[i].getAttribute('changeid'),ctNodes[i]);});}
this._approveCallbacks[ctnType].call(this,tmp,node);this._viper.fireNodesChanged('ViperChangeTracker:approve');},setRejectCallback:function(ctnType,callback)
{this._rejectCallbacks[ctnType]=callback;},rejectChanges:function(changeid,node)
{if(!changeid&&!node){return;}else if(!node){var change=this.getChange(changeid);if(!change){return;}
var nodes=change.nodes;var ln=nodes.length;for(var i=0;i<ln;i++){this.rejectChanges(changeid,nodes[i]);}
this.updatePositionMarkers(false,true);return;}
var ctnType=this.getCTNTypeFromNode(node);if(!ctnType||!this._rejectCallbacks[ctnType]){return;}
var clone=node.cloneNode(true);var tmp=Viper.document.createElement('div');tmp.appendChild(clone);this._rejectCallbacks[ctnType].call(this,tmp,node);this._viper.fireNodesChanged('ViperChangeTracker:reject');},showInfoBox:function(marker,infoBox)
{var elems=dfx.getClass('_viper-CT-lineBox',this._infoBoxHolder);dfx.removeClass(elems,'visible');dfx.removeClass(elems,'show');var melems=dfx.getClass('_viper-CT-marker',this._markerHolder);dfx.addClass(melems,'CT-hidden');dfx.removeClass(melems,'show');dfx.addClass(infoBox,'visible');dfx.removeClass(marker,'CT-hidden');var dim=dfx.getBoundingRectangle(marker);dfx.addClass([marker,infoBox],'show');this._positionInfoBox(infoBox,dim,true);var self=this;dfx.addEvent(document,'click.ViperChangeTracker',function(){dfx.removeEvent(document,'click.ViperChangeTracker');self.updatePositionMarkers(false);});},_positionInfoBoxes:function()
{var elems=dfx.getClass(this._className+'-lineBox',this._infoBoxHolder);var eln=elems.length;if(elems.length===0){return;}
var offset=35;var prevBox=null;for(var i=0;i<eln;i++){var box=elems[i];var height=0;var boxRect=dfx.getBoundingRectangle(box);if((boxRect.y2-boxRect.y1)<=0){continue;}else if(prevBox===null){prevBox=box;continue;}
var prevRect=dfx.getBoundingRectangle(prevBox.firstChild);if(parseInt(prevRect.y2-prevRect.y1)>0){height=parseInt(prevRect.y2-boxRect.y1)+offset;dfx.setStyle(box,'height',height+'px');}
prevBox=box;}},_setMouseEvents:function(infoBox,marker,node,isInsertType,changeid)
{var self=this;dfx.addEvent([infoBox,marker,node],'mouseover',function(){dfx.addClass([infoBox,marker],'selected');});dfx.addEvent(marker,'click',function(e){self.showInfoBox(marker,infoBox);self._positionInfoBoxes();dfx.preventDefault(e);return false;});var c=this._className+'-infoBox-actionBtns';var rejectBtn=dfx.getClass(c+'-reject',infoBox)[0];var approveBtn=dfx.getClass(c+'-approve',infoBox)[0];var parentNode=null;if(!approveBtn&&!rejectBtn){return;}
if(rejectBtn){parentNode=rejectBtn.parentNode.parentNode;}else{parentNode=approveBtn.parentNode.parentNode;}
dfx.addEvent([infoBox,marker,node],'mouseout',function(){dfx.removeClass([infoBox,marker],'selected');dfx.removeClass(parentNode,'approve');dfx.removeClass(parentNode,'reject');});if(rejectBtn){dfx.addEvent(rejectBtn,'mouseover',function(){dfx.addClass(parentNode,'reject');dfx.removeClass(parentNode,'approve');});dfx.addEvent(rejectBtn,'click',function(e){self.rejectChanges(changeid);dfx.preventDefault(e);return false;});}
if(approveBtn){dfx.addEvent(approveBtn,'mouseover',function(){dfx.addClass(parentNode,'approve');dfx.removeClass(parentNode,'reject');});dfx.addEvent(approveBtn,'click',function(e){self.approveChanges(changeid);dfx.preventDefault(e);return false;});}},removeTrackChanges:function(node,nodeOnly)
{var elems=[];if(nodeOnly!==true){elems=dfx.getClass(this._nodeClassName,node);}
elems.push(node);var r=new RegExp('_viper-|\\s*CTN?[a-zA-Z-]*','g');var self=this;dfx.foreach(elems,function(i){if(!elems[i].parentNode){return;}
var classAttr=dfx.attr(elems[i],'class');classAttr=classAttr.replace(r,'');dfx.attr(elems[i],'class',classAttr);if(dfx.attr(elems[i],'class')===''){dfx.removeAttr(elems[i],'class');}
dfx.removeAttr(elems[i],'viperchangeid');dfx.removeAttr(elems[i],'time');if(dfx.isTag(elems[i],'del')===true||dfx.isTag(elems[i],'ins')===true){dfx.insertBefore(elems[i],elems[i].childNodes);dfx.remove(elems[i]);}else if(ViperChangeTracker.getCurrentMode()==='original'){var ctdata=self.getCTData(elems[i],'tagName');if(ctdata){var newTag=Viper.document.createElement(ctdata);while(elems[i].firstChild){newTag.appendChild(elems[i].firstChild);}
dfx.insertBefore(elems[i],newTag);dfx.remove(elems[i]);}}
dfx.removeAttr(elems[i],'ctdata');});},setCTData:function(node,type,value)
{if(!node||!type){return false;}
if(this.isTracking()!==true){return false;}
var ctdata=this.getCTData(node);if(!ctdata){if(value===null){return true;}
ctdata={};ctdata[type]=value;}else if(value===null){if(dfx.isset(ctdata[type])===true){delete ctdata[type];}else{return true;}}else{ctdata[type]=value;}
ctdata=dfx.jsonEncode(ctdata);if(ctdata==='{}'){dfx.removeAttr(node,'ctdata');return true;}
dfx.attr(node,'ctdata',ctdata);return true;},getCTData:function(node,type)
{if(!node){return null;}
var ctdata=dfx.attr(node,'ctdata');if(!ctdata){return null;}
ctdata=dfx.jsonDecode(ctdata);if(!type){return ctdata;}
return ctdata[type];},removeCTData:function(node,type)
{if(node){if(!type){dfx.removeAttr(node,'ctdata');}else{this.setCTData(node,type,null);}}},getTrackingInfo:function(elem)
{var info=null;var changes=this.loadCTNodes(elem);dfx.foreach(changes,function(changeid){if(info===null){info={};}
if(dfx.isset(changes[changeid].comment)===true){info[changeid]={comment:changes[changeid].comment};}});return info;},loadCTNodes:function(elem)
{var ctNodes=this.getCTNodes(null,elem);var changes={};var self=this;dfx.foreach(ctNodes,function(i){var node=ctNodes[i];var changeid=node.getAttribute('viperchangeid');if(changes[changeid]){changes[changeid].nodes.push(node);}else{var type=self.getCTNTypeFromNode(node);changes[changeid]={type:type,time:node.getAttribute('time'),nodes:[node],userid:(changeid.split('-')).shift()};if(type==='viperComment'){changes[changeid].comment=(self._comments[changeid]||'');}}});return changes;},setCurrentUserid:function(userid)
{this._currentUserid=userid;},getCurrentUserid:function()
{return this._currentUserid;}};function ViperDOMRange(rangeObj)
{this.rangeObj=rangeObj;this.startContainer=null;this.endContainer=null;this.startOffset=0;this.endOffset=0;this.collapsed=true;this.commonAncestorContainer=null;this.anchorToStart='undefined';}
ViperDOMRange.START_TO_START=0;ViperDOMRange.START_TO_END=1;ViperDOMRange.END_TO_END=3;ViperDOMRange.END_TO_START=4;ViperDOMRange.CHARACTER_UNIT='character';ViperDOMRange.WORD_UNIT='word';ViperDOMRange.LINE_UNIT='line';ViperDOMRange.prototype={setStart:function(node,offset){},setEnd:function(node,offset){},setStartBefore:function(node){},setStartAfter:function(node){},setEndBefore:function(node){},setEndAfter:function(node){},selectNode:function(node){},selectNodeContents:function(node){},surroundContents:function(node){},collapse:function(toStart){},compareBoundaryPoints:function(how,sourceRange){},deleteContents:function(){},extractContents:function(){},cloneContents:function(){},insertNode:function(node){},cloneRange:function(){},toString:function(){},detach:function(){},getCommonElement:function(){},moveStart:function(unitType,units){},moveEnd:function(unitType,units){},setAnchor:function(toStart){},setFocus:function(node,offset){},moveFocus:function(unitType,units){},getRangeCoords:function(toStart){},getBoundingClientRect:function(){},getPreviousContainer:function(container,skippedBlockElem)
{if(!container){return null;}
while(container.previousSibling){container=container.previousSibling;if(container.nodeType!==dfx.TEXT_NODE){if(dfx.isStubElement(container)===true){return container;}else{var child=this._getLastSelectableChild(container);if(child!==null){return child;}}}else if(this._isSelectable(container)===true){return container;}}
while(container&&!container.previousSibling){container=container.parentNode;}
if(!container){return null;}
container=container.previousSibling;if(this._isSelectable(container)===true){return container;}else if(skippedBlockElem&&dfx.isBlockElement(container)===true){skippedBlockElem.push(container);}
var selChild=this._getLastSelectableChild(container);if(selChild!==null){return selChild;}
return this.getPreviousContainer(container,skippedBlockElem);},_isSelectable:function(container)
{if(container&&container.nodeType===dfx.TEXT_NODE&&container.data.length!==0){return true;}
return false;},getNextContainer:function(container,skippedBlockElem)
{if(!container){return null;}
while(container.nextSibling){container=container.nextSibling;if(container.nodeType!==dfx.TEXT_NODE){var child=this._getFirstSelectableChild(container);if(child!==null){return child;}}else if(this._isSelectable(container)===true){return container;}}
while(container&&!container.nextSibling){container=container.parentNode;}
if(!container){return null;}
container=container.nextSibling;if(this._isSelectable(container)===true){return container;}else if(skippedBlockElem&&dfx.isBlockElement(container)===true){skippedBlockElem.push(container);}
var selChild=this._getFirstSelectableChild(container);if(selChild!==null){return selChild;}
return this.getNextContainer(container,skippedBlockElem);},_getFirstSelectableChild:function(element)
{if(element){if(element.nodeType!==dfx.TEXT_NODE){var child=element.firstChild;while(child){if(this._isSelectable(child)===true){return child;}else if(child.firstChild){var res=this._getFirstSelectableChild(child);if(res!==null){return res;}else{child=child.nextSibling;}}else{child=child.nextSibling;}}}else{return element;}}
return null;},_getLastSelectableChild:function(element)
{if(element){if(element.nodeType!==dfx.TEXT_NODE){var child=element.lastChild;while(child){if(this._isSelectable(child)===true){return child;}else if(child.lastChild){var res=this._getLastSelectableChild(child);if(res!==null){return res;}else{child=child.previousSibling;}}else{child=child.previousSibling;}}}else{return element;}}
return null;},_normalizeNode:function(node)
{if(node.nodeType===dfx.ELEMENT_NODE){var c=node.childNodes.length;var str='';var mChild=null;for(var i=0;i<c;i++){var child=node.childNodes[i];if(child.nodeType===dfx.TEXT_NODE){str+=child.data;if(mChild===null){mChild=child;}else{dfx.remove(child);}}else if(mChild!==null){mChild.data=str;mCHild=null;}}
if(mChild!==null){mChild.nodeValue=str;}}else if(node.nodeType===dfx.TEXT_NODE){this._normalizeNode(node.parentNode);}},getNodeIndex:function(node)
{if(!node||!node.parentNode){return;}
var index=0;var prev=node.previousSibling;while(prev){prev=prev.previousSibling;index++;}
return index;},getStartNode:function()
{if(!this.startContainer){return null;}
if(this.startContainer.nodeType===dfx.ELEMENT_NODE){return this.startContainer.childNodes[this.startOffset];}
return this.startContainer;},getEndNode:function()
{if(!this.endContainer){return null;}
if(this.endContainer.nodeType===dfx.ELEMENT_NODE){return this.endContainer.childNodes[this.endOffset];}
return this.endContainer;}};function ViperElementMetrics(){}
ViperElementMetrics.getStyles=function(element)
{if(element===document){return[];}
if(Viper.document.defaultView&&Viper.document.defaultView.getComputedStyle){return Viper.document.defaultView.getComputedStyle(element,'');}else if(element.currentStyle){return element.currentStyle;}};ViperElementMetrics.getBackgroundColor=function(element)
{var backgroundColor;while(element){var styles=ViperElementMetrics.getStyles(element);if(styles.backgroundColor!=='transparent'&&styles.backgroundColor!=='rgba(0, 0, 0, 0)'){backgroundColor=styles.backgroundColor;break;}
element=element.parentNode;}
if(backgroundColor){return backgroundColor;}
return'#FFFFFF';};ViperElementMetrics.getBorderInsets=function(element)
{var border=0;while(element){try{var styles=ViperElementMetrics.getStyles(element);}catch(e){break;}
if(styles.marginTop!==''){border+=parseInt(styles.marginTop);}
element=element.parentNode;}
return border;};ViperElementMetrics.getInsets=function(element)
{var styles=ViperElementMetrics.getStyles(element);return{'top':parseInt(styles.borderTopWidth),'left':parseInt(styles.marginLeft),'bottom':parseInt(styles.marginBottom),'right':parseInt(styles.marginRight)};};function ViperIERange(rangeObj)
{ViperDOMRange.call(this,rangeObj);this._initContainerInfo();this._setCollapsed();this.shy=Viper.document.createElement('span');this.shy.innerHTML='&nbsp;';this._prevHeight=null;this._prevContainer=null;ViperDOMRange.START_TO_START='StartToStart';ViperDOMRange.START_TO_END='StartToEnd';ViperDOMRange.END_TO_END='EndToEnd';ViperDOMRange.END_TO_START='EndToStart';}
ViperIERange.prototype={_initContainerInfo:function()
{var clone=this.rangeObj.duplicate();var eclone=this.rangeObj.duplicate();clone.collapse(true);var info=this._getContainerInfo(clone);this.startContainer=info.container;this.startOffset=info.offset;eclone.collapse(false);var einfo=this._getContainerInfo(eclone);this.endContainer=einfo.container;this.endOffset=einfo.offset;},setStart:function(node,offset)
{var moveTo=node;if(moveTo.nodeType===dfx.TEXT_NODE){moveTo=moveTo.parentNode;}
var clone=this.rangeObj.duplicate();clone.moveToElementText(moveTo);clone.collapse(true);var charOffset=this._getCharOffsetWithinParent(node,offset);clone.move(ViperDOMRange.CHARACTER_UNIT,charOffset);this.rangeObj.setEndPoint('StartToStart',clone);this.startContainer=node;this.startOffset=offset;if(this.endContainer===null&&this.endOffset===null){this.endContainer=node;this.endOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setEnd:function(node,offset)
{var moveTo=node;if(moveTo.nodeType===dfx.TEXT_NODE){moveTo=moveTo.parentNode;}
var clone=this.rangeObj.duplicate();clone.moveToElementText(moveTo);clone.collapse(true);var charOffset=this._getCharOffsetWithinParent(node,offset);clone.move(ViperDOMRange.CHARACTER_UNIT,charOffset);this.rangeObj.setEndPoint('EndToEnd',clone);this.endContainer=node;this.endOffset=offset;if(this.startContainer===null&&this.startOffset===null){this.startContainer=node;this.startOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setStartBefore:function(node)
{this.setStart(node,0);},setStartAfter:function(node)
{var next=this.getNextContainer(node);this.setStart(next,0);this._setCollapsed();this._setCommonAncestorContainer();},setEndBefore:function(node)
{var previous=this.getPreviousContainer(node);if(previous.nodeType===dfx.TEXT_NODE){this.setEnd(previous,previous.length);}else{var clone=this.rangeObj.duplicate();clone.moveToElementText(previous);clone.collapse(false);this.rangeObj.setEndPoint('EndToEnd',clone);this._setCollapsed();this._setCommonAncestorContainer();}},setEndAfter:function(node)
{this.setEnd(node.parentNode,this.getNodeIndex(node)+1);},selectNode:function(node)
{if(node.nodeType===dfx.TEXT_NODE){this.setStart(node,0);this.setEnd(node,node.length);}else{if(node.innerHTML&&node.innerHTML.length===0){node.innerText=' ';}
this.rangeObj.moveToElementText(node);this.endContainer=node.parentNode;this.startContainer=node.parentNode;this.startOffset=this._findElementNodeOffset(node);this.endOffset=this.startOffset+1;this._setCollapsed();this._setCommonAncestorContainer();}},_findElementNodeOffset:function(node)
{if(node.nodeType!==dfx.ELEMENT_NODE){return;}
var parent=node.parentNode;var l=parent.childNodes.length;for(var i=0;i<l;i++){if(parent.childNodes[i]===node){return i;}}
return-1;},selectNodeContents:function(node)
{if(node.nodeType===dfx.TEXT_NODE){this.setStart(node,0);this.setEnd(node,node.length);}else{this.rangeObj.moveToElementText(node);this.rangeObj.moveStart('character',1);this.rangeObj.moveStart('character',-1);this.rangeObj.moveEnd('character',-1);this.rangeObj.moveEnd('character',1);}},surroundContents:function(node)
{var contents=this.extractContents();node.appendChild(contents);this.insertNode(node);},collapse:function(toStart)
{this.rangeObj.collapse(toStart);this.collapsed=true;if(toStart){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;}},compareBoundaryPoints:function(how,sourceRange)
{return this.rangeObj.compareEndPoints(how,sourceRange.rangeObj);},deleteContents:function()
{if(this.startContainer.nodeType===dfx.TEXT_NODE){var nodeValue=this.startContainer.nodeValue;var before=nodeValue.substr(0,this.startOffset);if(this.startContainer===this.endContainer){var after=this.startContainer.nodeValue.substr(this.endOffset,this.startContainer.nodeValue.length);this.startContainer.data=before+after;this.setStart(this.startContainer,this.startOffset);this.collapse(true);return;}else{this.startContainer.nodeValue=before;this.setStart(this.startContainer,this.startOffset);this.collapse(true);this._setCommonAncestorContainer();return;}}else if(this.startContainer.nodeType===dfx.ELEMENT_NODE){var node=this.getNextContainer(this.startContainer);dfx.remove(this.startContainer);if(this.startContainer===this.endContainer){this.setStart(node,0);this.collapse(true);return;}}
this.rangeObj.text='';this.collapse(true);this._setCommonAncestorContainer();this.rangeObj.select();},comparePoint:function(node,offset)
{var clone=this.cloneRange();clone.setStart(node,offset);clone.collapse();return this.rangeObj.compareEndPoints('StartToStart',clone.rangeObj);},extractContents:function()
{var fragment=Viper.document.createDocumentFragment();var div=Viper.document.createElement('div');dfx.setHtml(div,this.rangeObj.htmlText);var c=div.childNodes.length;for(var i=0;i<c;i++){var child=div.childNodes[i].cloneNode(true);fragment.appendChild(child);}
this.rangeObj.text='';return fragment;},createDocumentFragment:function(str)
{var fragment=Viper.document.createDocumentFragment();var div=Viper.document.createElement('div');div.innerHTML=str;var c=div.childNodes.length;for(var i=0;i<c;i++){var child=div.childNodes[i].cloneNode(true);fragment.appendChild(child);}
return fragment;},cloneContents:function()
{var fragment=this.createDocumentFragment(this.rangeObj.htmlText);return fragment;},insertNode:function(node)
{var before=null;if(this.startContainer.nodeType===dfx.ELEMENT_NODE){if(this.startContainer.childNodes.length===this.startOffset){this.startContainer.appendChild(node);}else{this.startContainer.insertBefore(node,this.startContainer.childNodes[this.startOffset]);this.setStart(this.startContainer,this.startOffset+1);}
return;}else if(this.startContainer.nodeType===dfx.TEXT_NODE){if(this.startOffset===0){before=this.startContainer;}else{var length=this.startContainer.data.length;if(length>this.startOffset){before=this.startContainer.splitText(this.startOffset);}else if(this.startContainer.nextSibling){before=this.startContainer.nextSibling;}else{this.startContainer.parentNode.appendChild(node);}}}
if(before!==null){dfx.insertBefore(before,node);}
this.setStart(node,0);this.collapse(true);this._setCommonAncestorContainer();},cloneRange:function()
{var range=new ViperIERange(this.rangeObj.duplicate());range.startContainer=this.startContainer;range.startOffset=this.startOffset;range.endContainer=this.endContainer;range.endOffset=this.endOffset;range.commonAncestorContainer=this.commonAncestorContainer;range.collapsed=this.collapsed;return range;},detach:function()
{this.rangeObj=null;this.commonAncestorContainer=null;},_setCollapsed:function()
{if(this.startContainer===this.endContainer&&this.startOffset===this.endOffset){this.collapsed=true;}else{this.collapsed=false;}},_setCommonAncestorContainer:function()
{if(this.startContainer===this.endContainer){this.commonAncestorContainer=this.startContainer;}else{this.commonAncestorContainer=dfx.getCommonAncestor(this.startContainer,this.endContainer);}},_getContainerInfo:function(textRange)
{var element=textRange.parentElement();var range=element.ownerDocument.body.createTextRange();range.moveToElementText(element);try{range.setEndPoint("EndToStart",textRange);}catch(e){}
var rangeLength=range.text.length;var nodeLength=0;if(rangeLength<(element.innerText.length/2)){var direction=1;var node=element.firstChild;}else{direction=-1;node=element.lastChild;range.moveToElementText(element);try{range.setEndPoint("StartToStart",textRange);}catch(e){}
rangeLength=range.text.length;}
while(node){switch(node.nodeType){case dfx.TEXT_NODE:nodeLength=node.data.length;if(nodeLength<rangeLength){var difference=(rangeLength-nodeLength);if(direction===1){range.moveStart("character",difference);}else{range.moveEnd("character",-difference);}
rangeLength=difference;}else{if(direction===1){return{container:node,offset:rangeLength};}else{return{container:node,offset:(nodeLength-rangeLength)};}}
break;case dfx.ELEMENT_NODE:if(dfx.isStubElement(node)===true){nodeLength=2;}else{nodeLength=node.innerText.length;}
if(direction===1){range.moveStart("character",nodeLength);}else{range.moveEnd("character",-nodeLength);}
rangeLength=(rangeLength-nodeLength);if(rangeLength<0){rangeLength=0;}
break;default:break;}
if(direction===1){node=node.nextSibling;}else{node=node.previousSibling;}}
return{container:element,offset:0};},getStartOffset:function(incSpaces)
{return this.startOffset;},_getCharOffsetWithinParent:function(node,offset)
{var move=null;var tmpNode=null;if(node.nodeType===dfx.TEXT_NODE){move=offset;tmpNode=node.previousSibling;}else if(node.nodeType===dfx.ELEMENT_NODE){move=0;if(offset>0){tmpNode=node.childNodes[(offset-1)];}else{return 0;}}
while(tmpNode){var nodeLength=0;if(tmpNode.nodeType===dfx.ELEMENT_NODE){nodeLength=tmpNode.innerText.length;if(dfx.isStubElement(tmpNode)===true){nodeLength=1;}else if(dfx.isBlockElement(tmpNode)===true){nodeLength++;}}else if(tmpNode.nodeType===dfx.TEXT_NODE){nodeLength=tmpNode.data.length;}
move+=nodeLength;tmpNode=tmpNode.previousSibling;}
return move;},moveStart:function(unitType,units,updateInfo)
{switch(unitType){case ViperDOMRange.CHARACTER_UNIT:case ViperDOMRange.WORD_UNIT:this.rangeObj.moveStart(unitType,units);var text=this.rangeObj.text;var match=text.match(/\r\n/g,'');if(match!==null&&match.length>0){var u=match.length;if(units<0){u=(u*-1);}
this.rangeObj.moveStart(ViperDOMRange.CHARACTER_UNIT,u);}
break;case ViperDOMRange.LINE_UNIT:this._moveLine(true,units);break;default:throw Error('InvalidArgumentException: unitType "'+unitType+'" not valid.');break;}
if(updateInfo!==false){this._initContainerInfo();}},moveEnd:function(unitType,units)
{switch(unitType){case ViperDOMRange.CHARACTER_UNIT:case ViperDOMRange.WORD_UNIT:this.rangeObj.moveEnd(unitType,units);var text=this.rangeObj.text;var match=text.match(/\r\n/g,'');if(match!==null&&match.length>0){this.rangeObj.moveEnd(ViperDOMRange.CHARACTER_UNIT,match.length);}
break;case ViperDOMRange.LINE_UNIT:this._moveLine(false,units);break;default:throw Error('InvalidArgumentException: unitType "'+unitType+'" not valid.');break;}
this._initContainerInfo();},_moveLine:function(moveStart,units)
{var clone=this.cloneRange();clone.collapse(moveStart);var startCoords=clone.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var passed=false;var unitType=ViperDOMRange.WORD_UNIT;units*=2;if(units<0){while(true){clone.moveStart(unitType,units);coords=clone.getRangeCoords(true);if(passed===false){if(coords.y<startCoords.y&&coords.x<=startCoords.x){passed=true;units=1;unitType=ViperDOMRange.CHARACTER_UNIT}}else if(coords.x>=startCoords.x){if(Math.abs(coords.x-startCoords.x)>Math.abs(startCoords.x-prevXCoord)){clone.moveStart(ViperDOMRange.CHARACTER_UNIT,-1);}
break;}else{prevXCoord=coords.x;}}}else{while(true){clone.moveStart(unitType,units);coords=clone.getRangeCoords(true);if(passed===false){if(coords.y>startCoords.y&&coords.x>=startCoords.x){passed=true;units=-1;unitType=ViperDOMRange.CHARACTER_UNIT}}else if(coords.x<=startCoords.x){if(Math.abs(coords.x-startCoords.x)>Math.abs(startCoords.x-prevXCoord)){clone.moveStart(ViperDOMRange.CHARACTER_UNIT,1);}
break;}else{prevXCoord=coords.x;}}}
clone.collapse(true);if(moveStart===true){this.rangeObj.setEndPoint(ViperDOMRange.START_TO_START,clone.rangeObj);this.startContainer=clone.startContainer;this.startOffset=clone.startOffset;}else{this.rangeObj.setEndPoint(ViperDOMRange.END_TO_START,clone.rangeObj);this.endContainer=clone.endContainer;this.endOffset=clone.endOffset;}
this._setCommonAncestorContainer();this._setCollapsed();},getCommonElement:function()
{return this.rangeObj.parentElement();},getRangeCoords:function(toStart)
{var clone=this.cloneRange();clone.collapse(toStart);var normalize=true;if(clone.startContainer.nodeType===dfx.TEXT_NODE){if(clone.startOffset===0){normalize=false;}else if(clone.endOffset===clone.startContainer.data.length){normalize=false;}}else{normalize=false;}
var shy=this.shy;clone.insertNode(shy);var previous=shy.previousSibling;var next=shy.nextSibling;var c=dfxjQuery(shy).position();var coords={x:c.left,y:c.top};if(this.startContainer===this._prevContainer){var height=dfx.getElementHeight(shy);if(this._prevHeight===null){this._prevHeight=height;}else if(height!==this._prevHeight){coords.y=(coords.y+height-this._prevHeight);}}else{this._prevHeight=null;this._prevContainer=this.startContainer;}
dfx.remove(shy);if(normalize&&previous){if(next&&next.nodeType===dfx.TEXT_NODE){if(next===this.endContainer){this.endContainer=previous;}
dfx.remove(next);previous.data+=next.data;}
this.setEnd(this.endContainer,this.endOffset);this.setStart(this.startContainer,this.startOffset);}
return coords;},getBoundingClientRect:function()
{return this.rangeObj.getBoundingClientRect();},getHTMLContents:function()
{return this.rangeObj.htmlText.replace(/\r\n/g,'');},getHTMLContentsObj:function()
{var div=Viper.document.createElement('div');dfx.setHtml(div,this.rangeObj.htmlText);return div;},toString:function()
{var text=this.rangeObj.text;text=text.replace(/\r\n/g,'');return text;}};dfx.noInclusionInherits('ViperIERange','ViperDOMRange',true);function ViperMozRange(rangeObj)
{ViperDOMRange.call(this,rangeObj);this.startContainer=rangeObj.startContainer;this.startOffset=rangeObj.startOffset;this.endContainer=rangeObj.endContainer;this.endOffset=rangeObj.endOffset;this.collapsed=rangeObj.collapsed;this.commonAncestorContainer=rangeObj.commonAncestorContainer;this.posSpan=Viper.document.createElement('span');ViperDOMRange.START_TO_START=Range.START_TO_START;ViperDOMRange.START_TO_END=Range.END_TO_START;ViperDOMRange.END_TO_END=Range.END_TO_END;ViperDOMRange.END_TO_START=Range.START_TO_END;}
ViperMozRange.prototype={setStart:function(node,offset)
{this.rangeObj.setStart(node,offset);this.startContainer=node;this.startOffset=offset;if(this.endContainer===null){this.endContainer=node;this.endOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setEnd:function(node,offset)
{this.rangeObj.setEnd(node,offset);this.endContainer=node;this.endOffset=offset;if(this.startContainer===null){this.startContainer=node;this.startOffset=offset;}
this._setCommonAncestorContainer();this._setCollapsed();},setStartBefore:function(node)
{this.rangeObj.setStartBefore(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setStartAfter:function(node)
{this.rangeObj.setStartAfter(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setEndBefore:function(node)
{this.rangeObj.setEndBefore(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},setEndAfter:function(node)
{this.rangeObj.setEndAfter(node);this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this._setCollapsed();this._setCommonAncestorContainer();},selectNode:function(node)
{this.rangeObj.selectNode(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},selectNodeContents:function(node)
{this.rangeObj.selectNodeContents(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},surroundContents:function(node)
{this.rangeObj.surroundContents(node);this.startContainer=this.rangeObj.startContainer;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endtOffset;this._setCollapsed();this._setCommonAncestorContainer();},collapse:function(toStart)
{this.rangeObj.collapse(toStart);this.collapsed=true;if(toStart){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;}},compareBoundaryPoints:function(how,sourceRange)
{return this.rangeObj.compareBoundaryPoints(how,sourceRange.rangeObj);},deleteContents:function()
{var startContainer=this.startContainer;var startOffset=this.startOffset;this.rangeObj.deleteContents();var nextSibling=startContainer.nextSibling;while(nextSibling){if(nextSibling&&nextSibling.nodeType===dfx.TEXT_NODE){startContainer.data+=nextSibling.data;dfx.remove(nextSibling);nextSibling=startContainer.nextSibling;}else{break;}}
this.setStart(startContainer,startOffset);this.collapse(true);this._setCommonAncestorContainer();},extractContents:function()
{return this.rangeObj.extractContents();},createDocumentFragment:function(str)
{return this.rangeObj.createContextualFragment(str);},cloneContents:function()
{return this.rangeObj.cloneContents();},insertNode:function(node)
{if(this.startContainer.nodeType===dfx.ELEMENT_NODE){if(dfx.isStubElement(this.startContainer)===true){throw Error('HIERARCHY_REQUEST_ERR');}}
this.rangeObj.insertNode(node);if(node.previousSibling&&node.previousSibling.nodeType===dfx.TEXT_NODE){if(node.previousSibling.data===''){dfx.remove(node.previousSibling);}}
if(node.nextSibling&&node.nextSibling.nodeType===dfx.TEXT_NODE){if(node.nextSibling.data===''){dfx.remove(node.nextSibling);}}
this.startContainer=this.rangeObj.startContaier;this.startOffset=this.rangeObj.startOffset;this.endContainer=this.rangeObj.endContainer;this.endOffset=this.rangeObj.endOffset;this._setCollapsed();this._setCommonAncestorContainer();},cloneRange:function()
{var clone=this.rangeObj.cloneRange();return new ViperMozRange(clone);},toString:function()
{return this.rangeObj.toString();},detach:function()
{this.rangeObj.detach();},comparePoint:function(node,offset)
{return this.rangeObj.comparePoint(node,offset);},_setCommonAncestorContainer:function()
{this.commonAncestorContainer=this.rangeObj.commonAncestorContainer;},_setCollapsed:function()
{if(this.startContainer===this.endContainer&&this.startOffset===this.endOffset){this.collapsed=true;}else{this.collapsed=false;}},getStartNode:function()
{if(this.startContainer.nodeType===dfx.ELEMENT_NODE){return this.startContainer.childNodes[this.startOffset];}
return this.startContainer;},getCommonElement:function()
{if(this.commonAncestorContainer.nodeType===dfx.ELEMENT_NODE){return this.commonAncestorContainer;}
return this.commonAncestorContainer.parentNode;},getRangeCoords:function(toStart)
{var clone=this.rangeObj.cloneRange();clone.collapse(toStart);var normalize=true;if(clone.startContainer.nodeType===dfx.TEXT_NODE){if(clone.startOffset===0){if(clone.startContainer.previousSibling&&clone.startContainer.previousSibling.nodeType!==dfx.TEXT_NODE){normalize=false;}}}else{normalize=false;}
var posSpan=this.posSpan;clone.insertNode(posSpan);var previous=posSpan.previousSibling;var next=posSpan.nextSibling;var c=dfxjQuery(posSpan).position();var coords={x:c.left,y:c.top};dfx.remove(posSpan);if(normalize){previous.data+=next.data;dfx.remove(next);this.setEnd(this.endContainer,this.endOffset);this.setStart(this.startContainer,this.startOffset);}
return coords;},moveStart:function(unitType,units)
{if(units===0){throw Error('InvalidArgumentException: units cannot be 0');}
switch(unitType){case ViperDOMRange.CHARACTER_UNIT:if(units>0){this._moveCharRight(true,units);}else{this._moveCharLeft(true,units);}
break;case ViperDOMRange.LINE_UNIT:if(units>0){this._moveLineDown(true);}else{this._moveLineUp(true);}
break;case ViperDOMRange.WORD_UNIT:default:break;}
this._setCommonAncestorContainer();this._setCollapsed();},moveEnd:function(unitType,units)
{if(units===0){throw Error('InvalidArgumentException: units cannot be 0');}
switch(unitType){case ViperDOMRange.CHARACTER_UNIT:if(units>0){this._moveCharRight(false,units);}else{this._moveCharLeft(false,units);}
break;case ViperDOMRange.LINE_UNIT:if(units>0){this._moveLineDown(false);}else{this._moveLineUp(false);}
break;case ViperDOMRange.WORD_UNIT:default:break;}
this._setCommonAncestorContainer();this._setCollapsed();},_setRange:function(start,container,offset)
{if(start){this.setStart(container,offset);}else{this.setEnd(container,offset);}},_moveCharLeft:function(moveStart,units)
{var container,offset;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
offset+=units;if(container.nodeType===dfx.ELEMENT_NODE){if(container.hasChildNodes()){container=container.childNodes[offset];offset=0;}}
if(offset<0){while(offset<0){var skippedBlockElem=[];container=this.getPreviousContainer(container,skippedBlockElem);if(container.nodeType===dfx.ELEMENT_NODE){continue;}
offset=container.data.length;if(container.nodeType===dfx.TEXT_NODE&&skippedBlockElem.length===0){offset--;}}}
this._setRange(moveStart,container,offset);},getStartOffset:function(incSpaces)
{if(incSpaces===true){return this.startOffset;}
var spaces=0;var container=this.startContainer;var cc=container.data.charCodeAt(0);while(cc===10||cc===32){spaces++;cc=container.data.charCodeAt(spaces);}
var offset=(this.startOffset-spaces);return offset;},_getNextTextNode:function(container)
{if(container.nodeType===dfx.ELEMENT_NODE){if(container.childNodes.length!==0){return this._getFirstSelectableChild(container);}}
container=this.getNextContainer(container);if(container.nodeType===dfx.TEXT_NODE){return container;}
return this._getNextTextNode(container);},_moveCharRight:function(moveStart,units)
{var container,offset;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=container.childNodes[offset];if(container.nodeType!==dfx.TEXT_NODE){container=this._getNextTextNode(container);}
offset=units;}else{offset+=units;}
var diff=(offset-container.data.length);if(diff>0){var skippedBlockElem=[];while(diff>0){container=this.getNextContainer(container,skippedBlockElem);if(container.nodeType===dfx.ELEMENT_NODE){continue;}
if(container.data.length>=diff){break;}else if(container.data.length>0){diff-=container.data.length;}}
offset=0;if(container.nodeType===dfx.TEXT_NODE&&skippedBlockElem.length===0){offset++;}}
this._setRange(moveStart,container,offset);},_filterWords:function(words)
{var wc=words.length;var fwords=[];for(var i=0;i<wc;i++){if(words[i].length>0){fwords.push(words[i]);}}
return fwords;},_moveLineUp:function(moveStart)
{var container=null;var offset=null;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=this.getPreviousContainer(container);}
var words=container.data.substr(offset).split(/\s+/);var startCoords=this.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var nextLine=0;var wordLen=0;var prevYCoord=0;var prevCont=null;var prevOffset=0;while(true){prevOffset=offset;prevCont=container;if(nextLine===0&&words.length>0){offset-=words.pop().length;}else{offset--;}
if(offset<=0){var found=false;while(found===false){container=this.getPreviousContainer(container);if(container!==null&&container.nodeType===dfx.TEXT_NODE&&container.data.length!==0){found=true;}}
offset=container.data.length;}
if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}
coords=this.getRangeCoords(moveStart);if(startCoords.y!==coords.y){if(prevYCoord!==coords.y){prevYCoord=coords.y;nextLine++;if(nextLine>1){if(prevCont!==container){prevOffset=prevCont.data.length;}
if(moveStart){this.setStart(prevCont,prevOffset);}else{this.setEnd(prevCont,prevOffset);}
break;}}
if(coords.x<=startCoords.x){if(offset<container.data.length&&Math.abs(coords.x-startCoords.x)>Math.abs(prevXCoord-startCoords.x)){offset++;if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}}
break;}else{prevXCoord=coords.x;}}}},_moveLineDown:function(moveStart)
{var container=null;var offset=null;if(moveStart){container=this.startContainer;offset=this.startOffset;}else{container=this.endContainer;offset=this.endOffset;}
if(container.nodeType===dfx.ELEMENT_NODE){container=this.getNextContainer(container);}
var words=container.data.substr(offset).split(/\s+/);var startCoords=this.getRangeCoords(moveStart);var coords=null;var prevXCoord=0;var nextLine=0;var wordLen=0;var prevYCoord=0;var prevCont=null;var prevOffset=0;while(true){prevOffset=offset;prevCont=container;if(nextLine===0&&words.length>0){offset+=words.shift().length;}else{offset++;}
if(offset>=container.data.length){var found=false;while(found===false){container=this.getNextContainer(container);if(container.data.length!==0){found=true;}}
offset=0;}
if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}
coords=this.getRangeCoords(moveStart);if(startCoords.y!==coords.y){if(prevYCoord!==coords.y){prevYCoord=coords.y;nextLine++;if(nextLine>1){if(prevCont!==container){prevOffset=prevCont.data.length;}
if(moveStart){this.setStart(prevCont,prevOffset);}else{this.setEnd(prevCont,prevOffset);}
break;}}
if(coords.x>=startCoords.x){if(offset>1&&Math.abs(coords.x-startCoords.x)>Math.abs(prevXCoord-startCoords.x)){offset--;if(moveStart){this.setStart(container,offset);}else{this.setEnd(container,offset);}}
break;}else{prevXCoord=coords.x;}}}},getHTMLContents:function(clonedSelection)
{if(!clonedSelection){clonedSelection=this.rangeObj.cloneContents();}
var div=Viper.document.createElement('div');div.appendChild(clonedSelection.cloneNode(true));return div.innerHTML;},getHTMLContentsObj:function()
{return this.rangeObj.cloneContents();}};dfx.noInclusionInherits('ViperMozRange','ViperDOMRange',true);function ViperPlugin(viper)
{this.viper=viper;}
ViperPlugin.ALL_EVENTS=0;ViperPlugin.NODES_DELETED=1;ViperPlugin.NODES_INSERTED=2;ViperPlugin.NODES_CHANGED=3;ViperPlugin.SELECTION_CHANGED=4;ViperPlugin.prototype={start:function(){},clicked:function(e)
{return true;},mouseDown:function(e)
{return true;},keyDown:function(e)
{return true;},keyPress:function(e)
{return true;},selectionChanged:function(range){},setEnabled:function(enabled){},saving:function(){},caretUpdated:function(){},nodeInserted:function(node,range){},caretPositioned:function(){},remove:function(){},setSettings:function(settings){}};dfx.noInclusionInherits('ViperPlugin','AbstractWidgetWidgetType',true);function ViperPluginManager(viper)
{this.plugins={};this.pluginConstructors={};this.keyPressListeners={};this.activePlugin=null;this.pluginSets={};this.activePluginSet=null;this.pluginsURL='';this.callbacks={};this.allowTextInput=false;this._pluginSettings={};this.viper=viper;}
ViperPluginManager.prototype={getPluginNames:function()
{var plugins=[];for(var name in this.plugins){plugins.push(name);}
return plugins;},loadAllPluginStyles:function()
{var self=this;dfx.foreach(this.pluginConstructors,function(pluginName){self.loadPluginStyles(pluginName);});},loadPluginStyles:function(plugin)
{},getPluginStylesURL:function(plugin)
{var url=this.pluginsURL+plugin;return url;},addPluginObject:function(pluginName,pluginObj)
{this.plugins[pluginName]=pluginObj;},addPlugin:function(name,pluginConstructor)
{if(typeof pluginConstructor!=='function'){throw Error('ViperPluginException: plugin must be a constructor function');}
if(dfx.isset(this.pluginConstructors[name])===false){this.pluginConstructors[name]=pluginConstructor;}},loadPluginScripts:function(plugins,callback)
{if(plugins.length===0){callback.call(this);}else{var plugin=plugins.shift();if(typeof plugin==='object'){plugin=plugin.name;}
if(dfx.isset(window[plugin])===true){if(dfx.isset(window[plugin])===true){this.addPlugin(plugin,window[plugin]);}
this.loadPluginScripts(plugins,callback);}else{var self=this;var url=this.pluginsURL+plugin+'/'+plugin+'.js';dfx.includeScript(url,function(){if(dfx.isset(window[plugin])===true){self.addPlugin(plugin,window[plugin]);}
self.loadPluginScripts(plugins,callback);});}}},setActivePlugin:function(name,allowTextInput)
{allowTextInput=allowTextInput||false;this.activePlugin=name;this.allowTextInput=allowTextInput;},getActivePlugin:function()
{return this.activePlugin;},_getPluginName:function(pluginConstructor)
{var fn=pluginConstructor.toString();var start='function '.length;var name=fn.substr(start,(fn.indexOf('(')-start));return name;},removePlugin:function(plugin)
{if(this.plugins[plugin]){this.plugins[plugin].remove();this.removeKeyPressListener(this.plugins[plugin]);this.fireCallbacks('pluginRemoved',plugin);}},getPlugin:function(name)
{return this.plugins[name];},addPluginSet:function(name,plugins,load,callback)
{if(dfx.isset(plugins)===true){this.pluginSets[name]=plugins;}else{this.pluginSets[name]=[];}
if(load===true){var clone=this.pluginSets[name].concat([]);this.loadPluginScripts(clone,function(){if(callback){callback.call(this);}});}else if(callback){callback.call(this);}},removePluginSet:function(name)
{if(this.pluginSetExists(name)===true){delete this.pluginSets[name];}},addPluginToSet:function(setName,pluginName)
{if(this.pluginSetExists(name)===true){this.pluginSets[setName].push(pluginName);}},pluginSetExists:function(name)
{return dfx.isset(this.pluginSets[name]);},usePluginSet:function(setName,disableOnly,callback)
{if(this.pluginSetExists(setName)===true){var self=this;var clone=this.pluginSets[setName].concat([]);this.loadPluginScripts(clone,function(){if(self.activePluginSet!==null){self._removeSet(self.activePluginSet);}
self._enableSet(setName);if(dfx.isFn(callback)===true){callback.call(this,setName);}});}else if(this.activePluginSet!==null){this._removeSet(this.activePluginSet);}},_removeSet:function(name)
{var pSetLen=this.pluginSets[name].length;for(var i=0;i<pSetLen;i++){var plugin=this.pluginSets[name][i];if(typeof plugin==='object'){plugin=plugin.name;}
this.removePlugin(plugin);}
this.activePluginSet=null;},_enableSet:function(name)
{this.activePluginSet=name;var pSetLen=this.pluginSets[name].length;for(var i=0;i<pSetLen;i++){var plugin=this.pluginSets[name][i];var pluginName='';if(typeof plugin==='object'){pluginName=plugin.name;}else{pluginName=plugin;}
var pluginConstructor=this.pluginConstructors[pluginName];if(pluginConstructor){var pluginObj=new pluginConstructor(this.viper);this.plugins[pluginName]=pluginObj;if(dfx.isset(plugin.settings)===true){pluginObj.setSettings(plugin.settings);}else if(this._pluginSettings[pluginName]){pluginObj.setSettings(this._pluginSettings[pluginName]);}
pluginObj.start();}}},setPluginSettings:function(pluginName,settings)
{if(this.plugins[pluginName]){this.plugins[pluginName].setSettings(settings);}
this._pluginSettings[pluginName]=settings;},disablePlugin:function(name)
{this.plugins[name].disable();},isPluginElement:function(element)
{for(var i in this.plugins){if(this.plugins[i].isPluginElement){if(this.plugins[i].isPluginElement(element)===true){return true;}}}
return false;},addKeyPressListener:function(keys,plugin,evtFunction,data)
{var keysArray=keys.toLowerCase().split('+').sort();var listener={plugin:plugin,fn:evtFunction,data:data};var keysStr=keysArray.join('+');if(!this.keyPressListeners[keysStr]){this.keyPressListeners[keysStr]=[];}
this.keyPressListeners[keysStr].push(listener);},removeKeyPressListener:function(plugin,keys)
{if(plugin&&keys&&this.keyPressListeners[keys]){var ln=this.keyPressListeners[keys].length;for(var i=0;i<ln;i++){var listener=this.keyPressListeners[keys][i];if(listener.plugin===plugin){this.keyPressListeners[keys].splice(i,1);break;}}}else if(plugin){for(var k in this.keyPressListeners){if(this.keyPressListeners.hasOwnProperty(k)===false){continue;}
var ln=this.keyPressListeners[k].length;if(ln===0){delete this.keyPressListeners[k];}else{for(var i=0;i<ln;i++){var listener=this.keyPressListeners[k][i];if(listener.plugin===plugin){this.keyPressListeners[k].splice(i,1);break;}}}}}},fireKeyPressed:function(e)
{if(this._fireKeyPressFns(e,'all_keys')===false){return false;}
var eKeys=[];if(e.ctrlKey===true||e.metaKey===true){eKeys.push('ctrl');}
if(e.shiftKey===true){eKeys.push('shift');}
if(e.altKey===true){eKeys.push('alt');}
switch(e.keyCode){case 13:eKeys.push('enter');break;case dfx.DOM_VK_LEFT:eKeys.push('left');break;case dfx.DOM_VK_RIGHT:eKeys.push('right');break;case dfx.DOM_VK_UP:eKeys.push('up');break;case dfx.DOM_VK_DOWN:eKeys.push('down');break;case 9:eKeys.push('tab');break;case dfx.DOM_VK_DELETE:eKeys.push('delete');break;default:var code;if(e.keyCode){code=e.keyCode;}else if(e.which){code=e.which;}
if(code){eKeys.push(String.fromCharCode(code).toLowerCase());}
break;}
var eKeysStr=eKeys.sort().join('+');return this._fireKeyPressFns(e,eKeysStr);},_fireKeyPressFns:function(e,eKeysStr)
{if(this.keyPressListeners[eKeysStr]){var ln=this.keyPressListeners[eKeysStr].length;for(var i=0;i<ln;i++){var listener=this.keyPressListeners[eKeysStr][i];var eventFn=listener.fn;var plugin=listener.plugin;var data=listener.data;if(eventFn){if(dfx.isFn(eventFn)===true){if(eventFn.call(plugin,e,data)===true){dfx.preventDefault(e);return false;}}else if(plugin[eventFn]&&plugin[eventFn].call(plugin,e,data)===true){dfx.preventDefault(e);return false;}}}}
return true;},fireSelectionChanged:function(range)
{for(var i in this.plugins){this.plugins[i].selectionChanged(range);}},fireNodeInserted:function(node,range)
{for(var i in this.plugins){if(this.plugins[i].nodeInserted(node,range)===false){return false;}}},fireCaretPositioned:function()
{for(var i in this.plugins){this.plugins[i].caretPositioned()}},fireClicked:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].clicked(e)===false){val=false;}}
return val;},fireMouseDown:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].mouseDown(e)===false){val=false;}}
return val;},fireKeyDown:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].keyDown(e)===false){val=false;}}
return val;},fireKeyPress:function(e)
{var val=true;for(var i in this.plugins){if(this.plugins[i].keyPress(e)===false){val=false;}}
return val;},fireEnabled:function(enabled)
{for(var i in this.plugins){this.plugins[i].setEnabled(enabled);}},fireSaving:function(elem)
{for(var i in this.plugins){if(this.plugins[i].saving){this.plugins[i].saving(elem);}}},fireCaretUpdated:function()
{for(var i in this.plugins){if(this.plugins[i].caretUpdated){this.plugins[i].caretUpdated();}}},registerCallback:function(type,id,callback)
{if(dfx.isFn(callback)===false){return;}
if(dfx.isset(this.callbacks[type])===false){this.callbacks[type]={};}
this.callbacks[type][id]=callback;},fireCallbacks:function(type,data)
{if(dfx.isset(this.callbacks[type])===true){for(var id in this.callbacks[type]){this.callbacks[type][id].call(type,data);}}},removeCallback:function(type,id)
{delete this.callbacks[type][id];}};var ViperSelection={_lastRange:null,_lastTextRange:null,_selection:null,_getSelection:function()
{if(Viper.window.getSelection){return Viper.window.getSelection();}else if(Viper.document.getSelection){return Viper.document.getSelection();}else if(Viper.document.selection){return Viper.document.selection;}else{return null;}},createRange:function()
{var rangeObj=null;if(Viper.document.body.createTextRange){rangeObj=Viper.document.body.createTextRange();return new ViperIERange(rangeObj);}else if(Viper.document.createRange){rangeObj=Viper.document.createRange();return new ViperMozRange(rangeObj);}else{throw Error('UnsupportedOperationException: createRange() not supported.');}},getRangeAt:function(pos)
{this._selection=ViperSelection._getSelection();var selection=this._selection;if(selection.getRangeAt){try{if(selection.rangeCount>0){var range=selection.getRangeAt(pos);var mozRange=new ViperMozRange(range);}else{var mozRange=this.createRange();}
return mozRange;}catch(e){return null;}}else{var rangeObj=selection.createRange();if(!rangeObj.duplicate){rangeObj=Viper.document.body.createTextRange();}
var range=new ViperIERange(rangeObj);this._lastRange=range;return this._lastRange;}},addRange:function(range)
{this._selection=ViperSelection._getSelection();if(this._selection.addRange){if(this._selection.rangeCount>0){this._selection.removeAllRanges();}
this._selection.addRange(range.rangeObj);}else if(range.rangeObj.select){try{range.rangeObj.select();}catch(e){}}},removeRange:function(range)
{var selection=ViperSelection._getSelection();if(selection){if(selection.removeRange){selection.removeRange(range.rangeObj);}else if(selection.empty){selection.empty();}}}};function ViperTextMetrics(){}
ViperTextMetrics.appendToBody=function(element)
{Viper.document.getElementsByTagName('body')[0].appendChild(element);};ViperTextMetrics.getCharWidth=function(chr)
{var clone=ViperTextMetrics.workNode;var text=clone.innerHTML;clone.innerHTML=chr;var insets=ViperElementMetrics.getInsets(clone);var width=(clone.offsetWidth-insets.left-insets.right);clone.innerHTML=text;return width;};var isInteger=function(num)
{return(!isNaN(parseInt(num))&&parseInt(num).toString()==num);};ViperTextMetrics.getCharHeight=function(element)
{var styles=ViperElementMetrics.getStyles(element);var size=styles.fontSize;var bodyStyles=ViperElementMetrics.getStyles(Viper.document.body);if(bodyStyles.fontSize){var bodyFontSize=parseInt(bodyStyles.fontSize);}
if(size!==''){if(!isInteger(size)){var idx=0;if((idx=size.indexOf('em'))>0){size=size.substring(0,idx);size=(size*bodyFontSize*1.3333);}else if((idx=size.indexOf('pt'))>0){size=size.substring(0,idx);size=(size*1.3333);}else if((idx=size.indexOf('%'))>0){size=parseInt(size.substring(0,idx));size=((size/7)-1);if(size>174){size=(size-1);}}}}
return parseInt(size);};ViperTextMetrics.getWordsBeforeOffset=function(offset)
{return ViperTextMetrics.workNode.innerHTML.substr(0,offset).split(/\s+/);};ViperTextMetrics.getFirstWordOnLine=function(offset)
{var clone=ViperTextMetrics.workNode;var words=ViperTextMetrics.getWordsBeforeOffset(offset);var firstWord=0;var currHeight=0;var text=clone.innerHTML;clone.innerHTML='';var wLen=words.length;for(var i=0;i<wLen;i++){clone.innerHTML=clone.innerHTML+words[i]+' ';if(clone.offsetHeight>currHeight){currHeight=clone.offsetHeight;firstWord=i;}}
clone.innerHTML=text;return firstWord;};ViperTextMetrics.getLineCount=function(offset)
{var clone=ViperTextMetrics.workNode;var words=ViperTextMetrics.getWordsBeforeOffset(offset);var lines=0;var currHeight=0;var text=clone.innerHTML;clone.innerHTML='';var wLen=words.length;for(var i=0;i<wLen;i++){clone.innerHTML=clone.innerHTML+words[i]+' ';if(clone.offsetHeight>currHeight){currHeight=clone.offsetHeight;lines++;}}
clone.innerHTML=text;return lines;};ViperTextMetrics.getLineWidth=function(offset)
{var clone=ViperTextMetrics.element.cloneNode(true);ViperTextMetrics.appendToBody(clone);var words=ViperTextMetrics.getWordsBeforeOffset(offset);var firstWord=ViperTextMetrics.getFirstWordOnLine(offset);clone.innerHTML=words.slice(firstWord).join(' ');clone.style.display='inline';var insets=ViperElementMetrics.getInsets(clone);var coords=dom.getElementCoords(ViperTextMetrics.element);var left=(insets.left-coords.x);if(words[(words.length-1)]===''){width=(clone.offsetWidth-left)+ViperTextMetrics.getCharWidth('&nbsp;');}else{width=(clone.offsetWidth-left);}
return width;};ViperTextMetrics.getCharacterCoords=function(offset)
{var clone=ViperTextMetrics.workNode;var coords=dom.getElementCoords(ViperTextMetrics.element);var insets=ViperElementMetrics.getInsets(clone);clone.style.width=(clone.offsetWidth-insets.left-insets.right)+'px';var x=ViperTextMetrics.getLineWidth(offset);var y=(coords.y+insets.top-ViperTextMetrics.getCharHeight());y=y+(ViperTextMetrics.getCharHeight()*(ViperTextMetrics.getLineCount(offset)-1));return{'x':x,'y':y};};function ViperUndoManager(viper)
{this.viper=viper;this.undoHistory=[];this.redoHistory=[];this.undoHandlers={};this.redoHandlers={};this.batchCount=0;this.batch=null;this._textChangeCount=0;this.historyStore={};this._activeElement=null;this.historyLimit=30;this.handles={};this.undoHistory=[];this.redoHisotory=[];this.historyStore={};var self=this;this.registerUndoHandler('viper',function(action,data){self.handleUndo(action,data);});this.registerRedoHandler('viper',function(action,data){self.handleRedo(action,data);});}
ViperUndoManager.prototype={registerUndoHandler:function(source,callback)
{this.undoHandlers[source]=callback;},registerRedoHandler:function(source,callback)
{this.redoHandlers[source]=callback;},setActiveElement:function(elem)
{if(this._activeElement){if(this.historyStore[this._activeElement]&&this.historyStore[this._activeElement].element!==elem){this._saveHistory(this._activeElement);}else{this.viper.fireCallbacks('ViperUndoManager:newUndoTask');return;}}
var self=this;var loaded=false;dfx.foreach(this.historyStore,function(key){if(self.historyStore[key].element===elem){self._loadHistory(key);loaded=true;return false;}});if(loaded===false){var key=dfx.getUniqueId();this.historyStore[key]={undo:[],redo:[],element:elem};this._loadHistory(key);this.add('viper','change_node');}else{this.viper.fireCallbacks('ViperUndoManager:newUndoTask');}},_loadHistory:function(key)
{if(this.historyStore[key]){this._activeElement=key;this.undoHistory=this.historyStore[key].undo;this.redoHistory=this.historyStore[key].redo;this._textChangeCount=0;this.batch=null;this.batchCount=0;}},_saveHistory:function(key)
{if(this.historyStore[key]){this.historyStore[key].undo=this.undoHistory;this.historyStore[key].redo=this.redoHistory;}},getUndoHistory:function()
{return this.undoHistory;},modify:function(undoIndex,task)
{this.undoHistory[undoIndex]=task;},begin:function()
{this.batchCount++;if(this.batch===null){this.batch=true;}},end:function()
{this.batchCount--;if(this.batchCount===0&&this.batch!==null){if(this.batch!==true){this.undoHistory.push(this.batch);}
this.batch=null;}},add:function(source,action)
{if(this.viper._subElementActive===true){return;}
var modify=false;if(action==='text_change'){this._textChangeCount++;if(this._textChangeCount>1){if(this._textChangeCount<30){modify=true;}else{this._textChangeCount=1;}}}else{this._textChangeCount=0;}
var data={content:dfx.getHtml(this.viper.element),range:this._getRangeInfo()};var task={source:source,action:action,data:data};if(this.batch===null){if(modify===true){this.undoHistory[(this.undoHistory.length-1)]=task;}else{this.undoHistory.push(task);if(this.undoHistory.length>this.historyLimit){this.undoHistory.shift();}}
this.redoHistory=[];}else{this.batch=task;}
this.viper.fireCallbacks('ViperUndoManager:newUndoTask');},undo:function()
{if(this.viper._subElementActive===true){return;}
var undoLength=this.undoHistory.length;if(undoLength===1){return;}
this._textChangeCount=0;var task=this.undoHistory.pop();this.redoHistory.push(task);undoLength=this.undoHistory.length;var undoTask=this.undoHistory[(undoLength-1)];if(undoTask){this.undoHandlers[undoTask.source].call(this,undoTask);}
this.viper.fireCallbacks('nodesChanged');this.viper.fireCallbacks('ViperUndoManager:undo');return undoLength;},redo:function()
{if(this.viper._subElementActive===true){return;}
if(this.redoHistory.length===0){return;}
var task=this.redoHistory.pop();this.undoHistory.push(task);this.redoHandlers[task.source].call(this,task);this.viper.fireCallbacks('nodesChanged');this.viper.fireCallbacks('ViperUndoManager:redo');return this.redoHistory.length;},getUndoCount:function()
{return this.undoHistory.length;},getRedoCount:function()
{return this.redoHistory.length;},handleUndo:function(task)
{this.handleUndoChange(task);},handleRedo:function(task)
{this.handleRedoChange(task);},handleUndoChange:function(task)
{if(task.data.content){dfx.setHtml(this.viper.element,task.data.content);this._setCaretPositon(task);}},handleRedoChange:function(task)
{if(task.data.content){dfx.setHtml(this.viper.element,task.data.content);this._setCaretPositon(task);}},_setCaretPositon:function(task)
{if(task&&task.data&&task.data.range){var taskRange=task.data.range;if(taskRange.startCont&&taskRange.endCont){var range=this.viper.getCurrentRange();try{var startNode=XPath.getNode(taskRange.startCont);var endNode=XPath.getNode(taskRange.endCont);if(startNode&&endNode){range.setStart(startNode,taskRange.startOffset);range.setEnd(endNode,taskRange.endOffset);ViperSelection.addRange(range);this.viper.focus();}}catch(e){}}}},createNodeChangeInfo:function(node,range)
{if(!range){range=this.viper.getCurrentRange();}
var info={before:dfx.getHtml(node),path:XPath.getPath(node)};try{if(range){info.startContainer=XPath.getPath(range.startContainer);info.startOffset=range.startOffset;info.endContainer=XPath.getPath(range.endContainer);info.endOffset=range.endOffset;}}catch(e){};return info;},_getRangeInfo:function()
{var rangeInfo={};try{var range=this.viper.getCurrentRange();var rangeInfo={startCont:XPath.getPath(range.startContainer),startOffset:range.startOffset,endCont:XPath.getPath(range.endContainer),endOffset:range.endOffset};}catch(e){};return rangeInfo;}};var XPath={getPath:function(node)
{var path,step;path='/node()['+this.getPosition(node,false)+']';node=node.parentNode;while(node.parentNode){step='/';switch(node.nodeType){case dfx.ELEMENT_NODE:step+=node.nodeName.toLowerCase()+'['+this.getPosition(node,true)+']';break;default:break;}
path=step+path;node=node.parentNode;}
return path;},getPosition:function(node,matchType)
{var childNodes=node.parentNode.childNodes;var pos=1;var cln=childNodes.length;for(var i=0;i<cln;i++){if(childNodes[i]===node){break;}
if(!matchType){pos++;continue;}
switch(node.nodeType){case dfx.ELEMENT_NODE:if(childNodes[i].nodeType===dfx.ELEMENT_NODE&&childNodes[i].nodeName===node.nodeName){pos++;}
break;case dfx.TEXT_NODE:if(childNodes[i].nodeType===dfx.TEXT_NODE){pos++;}
break;default:break;}}
return pos;},getNode:function(path)
{if(Viper.document.evaluate){var node=Viper.document.evaluate(path,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);return node.singleNodeValue;}else{return this._getNodeFromPath(path);}},_getNodeFromPath:function(path)
{var paths=path.split('/');var parent=document;var pln=paths.length;for(var i=0;i<pln;i++){if(dfx.trim(paths[i])===''){continue;}
parent=this._getNodeFromPathSegment(parent,paths[i]);}
return parent;},_getNodeFromPathSegment:function(parent,path)
{var pos=path.match(/\[(\d+)\]/);pos=parseInt(pos[1]);if(!pos){pos=1;}
var brPos=path.indexOf('[')||path.length;var type=path.substr(0,brPos);var node,found=1;var cln=parent.childNodes.length;for(var i=0;i<cln;i++){node=parent.childNodes[i];if(type==='node()'){if(found===pos){return node;}
found++;}else if(node.tagName&&type===node.tagName.toLowerCase()){if(found===pos){return node;}
found++;}}
throw Error('XPath: node could not be found');},getPreviousNode:function(path)
{var paths=path.split('/');var lastStep=paths.pop();var pos=lastStep.match(/\[(\d+)\]/)[1];lastStep=lastStep.replace(/\[(\d+)\]/,'['+(parseInt(pos)-1)+']');path=paths.join('/')+'/'+lastStep;return this.getNode(path);}};function ViperCopyPastePlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.pasteElement=null;this.pasteValue=null;this.rangeObj=null;this.pasteType='formatted';this.cutType='formatted';this.allowedTags='table|tr|td|th|ul|li|ol|br|p|a|img|form|input|select|option';this.convertTags=null;this._tmpNode=null;this._isFirefox=viper.isBrowser('firefox');this._isMSIE=viper.isBrowser('msie');}
ViperCopyPastePlugin.prototype={setSettings:function(settings)
{if(dfx.isset(settings.pasteType)===true){this.pasteType=settings.pasteType;}
if(dfx.isset(settings.cutType)===true){this.cutType=settings.cutType;}
if(dfx.isset(settings.allowedTags)===true){this.allowedTags=settings.allowedTags;}
if(dfx.isset(settings.convertTags)===true){this.convertTags=settings.convertTags;}},start:function()
{var elem=this.viper.getEditableElement();if(!elem){return;}
var self=this;if(this._isMSIE!==true&&this._isFirefox!==true){elem.onpaste=function(e){if(!e.clipboardData||self._canPaste()===false){return;}
self._beforePaste();if(self.pasteType==='formatted'||self.pasteType==='formattedClean'){self.pasteElement=self._createPasteDiv();dfx.setHtml(self.pasteElement,e.clipboardData.getData('text/html'));self._handleFormattedPasteValue((self.pasteType==='formattedClean'));}else{self._handleRawPasteValue(e.clipboardData.getData('text'));}
self._afterPaste();dfx.preventDefault(e);return false;};}},_canPaste:function()
{if(this.viper.pluginActive()===true&&this.viper.ViperPluginManager.allowTextInput!==true){return false;}
return true;},keyDown:function(e)
{if(this._isMSIE===true||this._isFirefox===true){this._fakePaste(e);}
return true;},handleCut:function(e)
{if(this.cutType==='formatted'){return this.handleFormattedCut();}
var range=this.viper.getCurrentRange();if(range.collapsed===true){return false;}
var startCont=range.startContainer;var startOffset=range.startOffset;var bookmark=this.viper.createBookmark();var textInput=document.createElement('input');dfx.setStyle(textInput,'top','100px');dfx.setStyle(textInput,'left','100px');dfx.setStyle(textInput,'position','fixed');dfx.setStyle(textInput,'width','0px');dfx.setStyle(textInput,'height','0px');dfx.setStyle(textInput,'border','0px');textInput.value=range.toString();this.viper.deleteContents();document.body.appendChild(textInput);textInput.focus();textInput.select();this.viper.selectBookmark(bookmark);this.viper.fireNodesChanged('ViperCopyPastePlugin:cut');return false;},handleFormattedCut:function()
{var range=this.viper.getCurrentRange();if(range.collapsed===true){return false;}
var contents=range.getHTMLContents();this.viper.deleteContents();var bookmark=this.viper.createBookmark();var div=document.createElement('div');div.setAttribute('class','editable_attribute');div.setAttribute('contentEditable',true);dfx.setStyle(div,'width','0px');dfx.setStyle(div,'height','0px');dfx.setStyle(div,'overflow','hidden');dfx.setStyle(div,'position','fixed');dfx.setStyle(div,'top','90px');dfx.setStyle(div,'left','50px');document.body.appendChild(div);dfx.setHtml(div,contents);div.focus();range.selectNode(div);ViperSelection.addRange(range);this.viper.selectBookmark(bookmark);setTimeout(function(){dfx.remove(div);},100);this.viper.fireNodesChanged('ViperCopyPastePlugin:cut');return false;},_beforePaste:function()
{this.viper.setAllowCleanDOM(false);var range=this.viper.getCurrentRange();this.rangeObj=range.cloneRange();this._tmpNode=document.createTextNode('');this.viper.insertNodeAtCaret(this._tmpNode);},_afterPaste:function()
{this.viper.setAllowCleanDOM(true);},_fakePaste:function(e)
{if((e.metaKey!==true&&e.ctrlKey!==true)||e.keyCode!==86){return false;}
this._beforePaste();switch(this.pasteType){case'formatted':this._handleFormattedPaste(false,e);break;case'formattedClean':this._handleFormattedPaste(true,e);break;default:this._handleRawPaste(e);break;}
this._afterPaste();return true;},_handleRawPaste:function(e)
{var textInput=document.createElement('input');this.pasteElement=textInput;dfx.setStyle(textInput,'top','0px');dfx.setStyle(textInput,'left','0px');dfx.setStyle(textInput,'position','fixed');dfx.setStyle(textInput,'width','0px');dfx.setStyle(textInput,'height','0px');dfx.setStyle(textInput,'border','0px');document.body.appendChild(textInput);textInput.focus();var self=this;textInput.onpaste=function(){setTimeout(function(){self._handleRawPasteValue(textInput.value);self.viper.fireNodesChanged('ViperCopyPastePlugin:paste');},100);};return true;},_handleRawPasteValue:function(content)
{if(!content){content='';}
this._tmpNode.data=content;var range=this.viper.getCurrentRange();range.setStart(this._tmpNode,this._tmpNode.data.length);range.collapse(true);ViperSelection.addRange(range);if(this.pasteElement){dfx.remove(this.pasteElement);this.pasteElement=null;}},_createPasteDiv:function()
{var oldEl=dfx.getId('ViperPasteDiv');if(oldEl){dfx.remove(oldEl);}
var div=document.createElement('div');div.setAttribute('id','ViperPasteDiv');div.setAttribute('contentEditable',true);document.body.appendChild(div);return div;},_handleFormattedPaste:function(stripTags,e)
{div=this._createPasteDiv();this.pasteElement=div;var self=this;div.onpaste=function(e){setTimeout(function(){self._handleFormattedPasteValue(stripTags);},100);};div.focus();return true;},_handleFormattedPasteValue:function(stripTags)
{if(stripTags===true){dfxjQuery(this.pasteElement).find('[style]').removeAttr('style');dfxjQuery(this.pasteElement).find('[class]').removeAttr('class');}
this._removeEditableAttrs(this.pasteElement);var html=dfx.getHtml(this.pasteElement);html=this._cleanWordPaste(html);if(stripTags===true){html=dfx.stripTags(html,this.allowedTags.split('|'));}
html=dfx.trim(html);if(!html){this._updateSelection();return;}
var fragment=this.rangeObj.createDocumentFragment(html);var convertTags=this.convertTags;if(stripTags===true&&this.convertTags!==null){dfx.foreach(convertTags,function(tag){var elems=dfx.getTag(tag,fragment.firstChild);var ln=elems.length;for(var i=0;i<ln;i++){var cElem=document.createElement(convertTags[tag]);while(elems[i].firstChild){cElem.appendChild(elems[i].firstChild);}
dfx.insertBefore(elems[i],cElem);dfx.remove(elems[i]);}});}
if(this.viper.hasBlockChildren(fragment)===true){var keyboardEditor=this.viper.ViperPluginManager.getPlugin('ViperKeyboardEditorPlugin');var range=this.viper.getCurrentRange();range.setStart(this._tmpNode,0);range.collapse(true);ViperSelection.addRange(range);var prevBlock=keyboardEditor.handleEnter(true);prevBlock=dfx.getNextNode(prevBlock);var changeid=ViperChangeTracker.startBatchChange('textAdded');while(fragment.firstChild){var ctNode=null;if(dfx.isBlockElement(fragment.firstChild)===true){ctNode=fragment.firstChild;ViperChangeTracker.addChange('textAdd',[ctNode]);}else{ctNode=ViperChangeTracker.createCTNode('ins','textAdd',fragment.firstChild);ViperChangeTracker.addNodeToChange(changeid,ctNode);}
dfx.insertBefore(prevBlock,ctNode);}
ViperChangeTracker.endBatchChange(changeid);}else{var changeid=ViperChangeTracker.startBatchChange('textAdded');var ctNode=null;while(fragment.firstChild){if(fragment.firstChild===ctNode){GUI.message('developer','Failed to move nodes','error');break;}
ctNode=ViperChangeTracker.createCTNode('ins','textAdd',fragment.firstChild);ViperChangeTracker.addNodeToChange(changeid,ctNode);dfx.insertBefore(this._tmpNode,ctNode);}
ViperChangeTracker.endBatchChange(changeid);}
this._updateSelection();this.viper.cleanDOM();this.viper.fireNodesChanged('ViperCopyPastePlugin:paste');},_cleanWordPaste:function(content)
{content=content.replace(/<(meta|link)[^>]+>/g,"");content=content.replace(/<!--(.|\s)*?-->/g,'');content=content.replace(/<style>[\s\S]*?<\/style>/g,'');content=content.replace(/<\/?span[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,'');content=content.replace(/<\\?\?xml[^>]*>/gi,'');content=this._cleanPaste(content);content=this._convertWordPasteList(content);content=content.replace(/<(\w[^>]*) (class|lang)=([^ |>]*)([^>]*)/gi,"<$1$4");content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(new RegExp('<(\\w[^>]*) _viperlistst="([^"]*)"([^>]*)','gi'),"<$1 style=\"$2\"$3");content=this._convertDelNInsTags(content);return content;},_convertDelNInsTags:function(content)
{var tmp=document.createElement('div');dfx.setHtml(tmp,content);var delTags=dfx.getTag('del',tmp);dfx.remove(delTags);var insTags=dfx.getTag('ins',tmp);var ins=null;while(ins=insTags.shift()){while(ins.firstChild){dfx.insertBefore(ins,ins.firstChild);}
dfx.remove(ins);}
content=dfx.getHtml(tmp);return content;},_getListType:function(elem,listTypes)
{var elContent=dfx.getHtml(elem);var info=null;dfx.foreach(listTypes,function(k){dfx.foreach(listTypes[k],function(j){dfx.foreach(listTypes[k][j],function(m){if((new RegExp(listTypes[k][j][m])).test(elContent)===true){info={html:elContent.replace(new RegExp(listTypes[k][j][m]),''),listType:k,listStyle:j};return false;}});if(info!==null){return false;}});if(info!==null){return false;}});return info;},_convertWordPasteList:function(content)
{var div=document.createElement('div');var ul=null;var prevMargin=null;var indentLvl={};var li=null;var newList=true;var listTypes={ul:{circle:['^o(\s|&nbsp;)+'],disc:['^'+String.fromCharCode(183)+'(\\s|&nbsp;)+'],square:['^'+String.fromCharCode(167)+'(\\s|&nbsp;)+'],auto:['^'+String.fromCharCode(8226)+'(\\s|&nbsp;)+']},ol:{decimal:['^\\d+\\.(\s|&nbsp;)+'],'lower-roman':['^[ivxlcdm]+\\.(\\s|&nbsp;)+'],'upper-roman':['^[IVXLCDM]+\\.(\\s|&nbsp;)+'],'lower-alpha':['^[a-z]+\\.(\\s|&nbsp;)+'],'upper-alpha':['^[A-Z]+\\.(\\s|&nbsp;)+']}};dfx.setHtml(div,content);var pElems=dfx.getTag('p',div);var pln=pElems.length;for(var i=0;i<pln;i++){var pEl=pElems[i];var listTypeInfo=this._getListType(pEl,listTypes);if(listTypeInfo!==null){var marginLeft=parseInt(dfx.getStyle(pEl,'margin-left'));var listType=listTypeInfo.listType;var listStyle=listTypeInfo.listStyle;dfx.setHtml(pEl,listTypeInfo.html);if(!listType){listType='ol';}
if(newList===true){ul=document.createElement(listType);indentLvl={};dfx.attr(ul,'_viperlistst','list-style-type:'+listStyle);indentLvl[marginLeft]=ul;dfx.insertBefore(pEl,ul);}else{if(marginLeft!==prevMargin){if(dfx.isset(indentLvl[marginLeft])===true){ul=indentLvl[marginLeft];}else if(marginLeft>prevMargin){ul=document.createElement(listType);dfx.attr(ul,'_viperlistst','list-style-type:'+listStyle);li.appendChild(ul);indentLvl[marginLeft]=ul;}}}
li=this._createListItemFromElement(pEl);ul.appendChild(li);prevMargin=marginLeft;dfx.remove(pEl);newList=false;}else{newList=true;}}
content=dfx.getHtml(div);return content;},_createListItemFromElement:function(elem)
{var li=document.createElement('li');while(elem.firstChild){li.appendChild(elem.firstChild);}
return li;},_cleanPaste:function(content)
{content=content.replace(/<b(\s+|>)/g,"<strong$1");content=content.replace(/<\/b(\s+|>)/g,"</strong$1");content=content.replace(/<i(\s+|>)/g,"<em$1");content=content.replace(/<\/i(\s+|>)/g,"</em$1");return content;},_removeEditableAttrs:function(container)
{var editables=dfx.getClass('editable_attribute',container);var el=editables.length;for(var i=0;i<el;i++){this._moveChildren(editables[i]);dfx.remove(editables[i]);}},_moveChildren:function(cont)
{while(dfx.isset(cont.firstChild)===true){dfx.insertBefore(cont,cont.firstChild);}},_updateSelection:function()
{var range=this.viper.getCurrentRange();range.setStart(this._tmpNode,0);range.collapse(true);ViperSelection.addRange(range);dfx.remove(this.pasteElement);this._tmpNode=null;this.pasteElement=null;}};dfx.noInclusionInherits('ViperCopyPastePlugin','ViperPlugin',true);function ViperCoreStylesPlugin(viper)
{ViperPlugin.call(this,viper);this.styleTags=['strong','em','u','sub','sup','strike'];this.buttons=['strong','emphasise','underline','subscript','superscript','strikethrough'];this.toolbarPlugin=null;this.activeStyles=[];this._caretUpdatedTimeout=null;this._onChangeAddStyle=null;}
ViperCoreStylesPlugin.prototype={handleKeyPress:function(e,type)
{if(type){return this.handleStyle(type);}},start:function()
{var name='CoreStylesKBS';var self=this;var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')>=0){ctrlName='CMD';}
this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');if(this.toolbarPlugin){this.toolbarPlugin.addButton(name,'strong','Strong ('+ctrlName+' + B)',function(){self.handleStyle('strong');});this.toolbarPlugin.setButtonShortcut(this,'strong','CTRL+B','handleKeyPress','strong');this.toolbarPlugin.addButton(name,'emphasise','Emphasise ('+ctrlName+' + I)',function(){self.handleStyle('em');});this.toolbarPlugin.setButtonShortcut(this,'emphasise','CTRL+I','handleKeyPress','em');this.toolbarPlugin.addButton(name,'underline','Underline ('+ctrlName+' + U)',function(){self.handleStyle('u');});this.toolbarPlugin.setButtonShortcut(this,'underline','CTRL+U','handleKeyPress','u');this.toolbarPlugin.addButton(name,'remove-format','Remove Format',function(){self.removeFormat();});this.toolbarPlugin.addButton(name,'subscript','Subscript',function(){self.handleStyle('sub');});this.toolbarPlugin.addButton(name,'superscript','Superscript',function(){self.handleStyle('sup');});this.toolbarPlugin.addButton(name,'strikethrough','Strikethrough',function(){self.handleStyle('strike');});this.toolbarPlugin.addButton(name,'align-left','Left Justfy',function(){self.handleJustfy('left');});this.toolbarPlugin.addButton(name,'align-center','Center Justfy',function(){self.handleJustfy('center');});this.toolbarPlugin.addButton(name,'align-right','Right Justfy',function(){self.handleJustfy('right');});this.toolbarPlugin.addButton(name,'align-justify','Block Justfy',function(){self.handleJustfy('justify');});}else{var shortcuts={strong:'CTRL+B',em:'CTRL+I',u:'CTRL+U'};dfx.foreach(shortcuts,function(type){var keys=shortcuts[type];self.viper.ViperPluginManager.addKeyPressListener(keys,this,function(){return self.handleStyle(type);});});}
var tagNames={em:'Italic',strong:'Bold',u:'Underline',sub:'Subscript',sup:'Superscript',strike:'Strikethrough'};this.viper.registerCallback('ViperChangeTracker:modeChange','ViperCoreStylesPlugin',function(mode){var nodes=ViperChangeTracker.getCTNodes('formatChange');var copyAttr=['class','viperchangeid','time'];if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var span=Viper.document.createElement('span');dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});ViperChangeTracker.setCTData(span,'tagName',node.tagName.toLowerCase());while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'tagName');if(!origTag){return;}
var span=Viper.document.createElement(origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}
var nodes=ViperChangeTracker.getCTNodes('alignmentChange');if(nodes){if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var align=ViperChangeTracker.getCTData(node,'text-align');if(!align){align='';}
ViperChangeTracker.setCTData(node,'fin-text-align',dfx.getStyle(node,'text-align'));dfx.setStyle(node,'text-align',align);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var align=ViperChangeTracker.getCTData(node,'fin-text-align');if(!align){align='';}
dfx.setStyle(node,'text-align',align);});}}
var nodes=ViperChangeTracker.getCTNodes('removedFormat');if(nodes){if(mode==='original'){dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'tagName');if(!origTag){return;}
var span=Viper.document.createElement(origTag);ViperChangeTracker.setCTData(span,'formatRemoved',origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}else{dfx.foreach(nodes,function(i){var node=nodes[i];var origTag=ViperChangeTracker.getCTData(node,'formatRemoved');if(!origTag){return;}
var span=Viper.document.createElement('span');ViperChangeTracker.setCTData(span,'tagName',origTag);dfx.foreach(copyAttr,function(j){var attrVal=dfx.attr(node,copyAttr[j]);if(dfx.isset(attrVal)===true){dfx.attr(span,copyAttr[j],attrVal);}});while(node.firstChild){span.appendChild(node.firstChild);}
var changeid=dfx.attr(span,'viperchangeid');if(changeid){ViperChangeTracker.addNodeToChange(changeid,span,node);}
dfx.insertBefore(node,span);dfx.remove(node);});}}});ViperChangeTracker.addChangeType('formatChange','Formatted','format');ViperChangeTracker.addChangeType('alignmentChange','Formatted','format');ViperChangeTracker.addChangeType('removedFormat','Formatted','format');ViperChangeTracker.setDescriptionCallback('removedFormat',function(node){var changes=[];var desc='';var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);dfx.foreach(ctNodes,function(i){if(dfx.isTag(ctNodes[i],'span')===true){var ctdata=ViperChangeTracker.getCTData(ctNodes[i],'tagName');if(tagNames[ctdata]){changes.push('Not '+tagNames[ctdata]);}}});desc+=changes.join(', ');return desc;});ViperChangeTracker.setDescriptionCallback('formatChange',function(node){var desc='';var changes=[];var ctNodes=ViperChangeTracker.getCTNodes('formatChange',node);ctNodes.unshift(node);dfx.foreach(ctNodes,function(i){var tagName=ctNodes[i].tagName.toLowerCase();if(tagNames[tagName]){changes.push(tagNames[tagName]);}else{tagName=ViperChangeTracker.getCTData(ctNodes[i],'tagName');if(tagNames[tagName]){changes.push(tagNames[tagName]);}}});desc+=changes.join(', ');return desc;});ViperChangeTracker.setDescriptionCallback('alignmentChange',function(node){var style='';if(ViperChangeTracker.getCurrentMode()==='original'){style=ViperChangeTracker.getCTData(node,'fin-text-align')||'';}else{style=dfx.getStyle(node,'text-align')||'';}
if(style){style='Aligned '+dfx.ucFirst(style);}
return style;});ViperChangeTracker.setApproveCallback('formatChange',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('formatChange',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedFormat',function(clone,node){var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);var mode=ViperChangeTracker.getCurrentMode();dfx.foreach(ctNodes,function(i){var elem=ctNodes[i];if(!elem.parentNode){return;}
var ctdata='';if(mode==='original'){ctdata=ViperChangeTracker.getCTData(elem,'removedFormat');}else{ctdata=ViperChangeTracker.getCTData(elem,'tagName');}
if(ctdata){var newElem=Viper.document.createElement(ctdata);while(elem.firstChild){newElem.appendChild(elem.firstChild);}
dfx.insertBefore(elem,newElem);dfx.remove(elem);}});});ViperChangeTracker.setApproveCallback('removedFormat',function(clone,node){var ctNodes=ViperChangeTracker.getCTNodes('removedFormat',node);ctNodes.unshift(node);var mode=ViperChangeTracker.getCurrentMode();dfx.foreach(ctNodes,function(i){var elem=ctNodes[i];if(mode==='original'){var tag=ViperChangeTracker.getCTData(elem,'formatRemoved');if(tag){dfx.insertBefore(elem,elem.childNodes);dfx.remove(elem);}}else if(dfx.isTag(elem,'span')===true&&elem.getAttribute('ctdata')){dfx.insertBefore(elem,elem.childNodes);dfx.remove(elem);}});});ViperChangeTracker.setApproveCallback('alignmentChange',function(clone,node){if(ViperChangeTracker.getCurrentMode()==='original'){var finAlignment=ViperChangeTracker.getCTData(node,'fin-text-align')||'';dfx.setStyle(node,'text-align',finAlignment);}
ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('alignmentChange',function(clone,node){var style=ViperChangeTracker.getCTData(node,'text-align');if(!style){style='left';}
dfx.setStyle(node,'text-align',style);ViperChangeTracker.removeTrackChanges(node);});},handleJustfy:function(type)
{var range=this.viper.getCurrentRange();var start=range.startContainer;var end=range.endContainer;var node=start;var next=null;var common=range.getCommonElement();common=this.getFirstBlockParent(common);if(dfx.isChildOf(common,this.viper.element)===true){this.setJustfyChangeTrackInfo(common);dfx.setStyle(common,'text-align',type);}else{var parent=null;var bookmark=null;var elemsBetween=[];if(range.collapsed!==true||dfx.isStubElement(start)===false){bookmark=this.viper.createBookmark();elemsBetween=dfx.getElementsBetween(bookmark.start,bookmark.end);}else{elemsBetween=dfx.getElementsBetween(start,end);elemsBetween.unshift(start);elemsBetween.push(end);}
while(node=elemsBetween.shift()){if(dfx.isBlockElement(node)===true){this.setJustfyChangeTrackInfo(node);dfx.setStyle(node,'text-align',type);parent=null;}else if(parent===null&&(parent=this.getFirstBlockParent(node))){this.setJustfyChangeTrackInfo(parent);dfx.setStyle(parent,'text-align',type);parent=null;}else{if(parent===null){parent=Viper.document.createElement('p');this.setJustfyChangeTrackInfo(parent);dfx.setStyle(parent,'text-align',type);dfx.insertBefore(node,parent);}
parent.appendChild(node);}
if(node===end){break;}}
if(bookmark!==null){this.viper.selectBookmark(bookmark);}}
this.viper.fireNodesChanged('ViperCoreStylesPlugin:justify');},setJustfyChangeTrackInfo:function(node)
{if(node&&ViperChangeTracker.isTrackingNode(node)===false){var style=dfx.getStyle(node,'text-align');if(style&&(style==='left'||style==='right'||style==='center'||style==='justify')){if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.setCTData(node,'text-align',style);}}
ViperChangeTracker.addChange('alignmentChange',[node]);}},getFirstBlockParent:function(elem)
{if(dfx.isBlockElement(elem)===true){return elem;}
var parents=dfx.getParents(elem);var parent=null;var pln=parents.length;for(var i=0;i<pln;i++){parent=parents[i];if(parent===this.viper.element){return null;}
if(dfx.isBlockElement(parent)===true){return parent;}}},getAlignment:function(element)
{var parent=this.getFirstBlockParent(element);if(parent!==null){return dfx.getStyle(parent,'text-align');}},removeFormat:function()
{var range=this.viper.getCurrentRange().cloneRange();var keywordPlugin=this.viper.ViperPluginManager.getPlugin('ViperKeywordPlugin');var startNode=range.getStartNode();if(dfx.isChildOf(startNode,this.viper.element)===false){range.setStart(this.viper.element,0);}
var endNode=range.getEndNode();if(dfx.isChildOf(endNode,this.viper.element)===false){range.setEnd(this.viper.element,this.viper.element.childNodes.length);}
ViperSelection.addRange(range);var bookmark=this.viper.createBookmark();startNode=dfx.getFirstBlockParent(bookmark.start);if(dfx.isChildOf(startNode,this.viper.element)===false){startNode=bookmark.start;}
dfx.walk(startNode,function(elem){if(elem===bookmark.end){return false;}
if(elem!==bookmark.start){if(elem.nodeType===dfx.ELEMENT_NODE&&(!keywordPlugin||keywordPlugin.isKeyword(elem)!==true)){dfx.removeAttr(elem,'style');dfx.removeAttr(elem,'class');}}});this.viper.selectBookmark(bookmark);var tags=this.styleTags.concat(['font']);var changeid=ViperChangeTracker.startBatchChange('removedFormat');var tln=tags.length;for(var i=0;i<tln;i++){this.viper.removeStyle(tags[i]);}
ViperChangeTracker.endBatchChange(changeid);this.caretUpdated();this.viper.fireNodesChanged('ViperCoreStylesPlugin:removeFormat');},nodeInserted:function(node,range)
{return this._wrapNodeWithActiveStyle(node,range);},mouseDown:function()
{this._onChangeAddStyle=null;},caretPositioned:function()
{this._onChangeAddStyle=null;},_wrapNodeWithActiveStyle:function(node,range)
{if(!node||!this._onChangeAddStyle||!range){return;}
var style=this._onChangeAddStyle;var nodes=this.viper.splitNodeAtRange(style,range,true);this._onChangeAddStyle=null;if(dfx.isTag(nodes.prevNode,style)===true||dfx.isTag(nodes.nextNode,style)===true){if(nodes.midNode===null){dfx.insertAfter(nodes.prevNode,node);}else{var tmpnode=nodes.midNode;while(tmpnode.firstChild){tmpnode=tmpnode.firstChild;}
tmpnode.appendChild(node);}
if(dfx.getNodeTextContent(nodes.nextNode).length===0){dfx.remove(nodes.nextNode);}
range.setStart(node,1);range.collapse(true);ViperSelection.addRange(range);}else{var styleTag=Viper.document.createElement(style);dfx.insertAfter(nodes.prevNode,styleTag);styleTag.appendChild(node);range.setStart(node,1);range.collapse(true);ViperSelection.addRange(range);}
return false;},handleStyle:function(style)
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;if(range.collapsed===true){this._onChangeAddStyle=style;}else{if(dfx.getParents(startNode,style).length>0){if(dfx.getParents(endNode,style).length>0){var changeid=ViperChangeTracker.startBatchChange('removedFormat');this.viper.removeStyle(style);ViperChangeTracker.endBatchChange(changeid);dfx.removeEmptyNodes(this.viper.element);this.viper.fireNodesChanged('ViperCoreStylesPlugin:removeStyle');return true;}}
dfx.removeEmptyNodes(this.viper.element);this.applyTag(style);this.caretUpdated();}
this.viper.fireNodesChanged('ViperCoreStylesPlugin:applyStyle');this.viper.focus();return true;},getStyleTags:function()
{var range=this.viper.getCurrentRange();var tags=dfx.getParents(range.startContainer,this.styleTags.join(','));return tags;},applyTag:function(tag)
{this.viper.ViperUndoManager.begin();this.viper.surroundContents(tag);this.viper.ViperUndoManager.end();},selectionChanged:function()
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;var boldFound=false;var emFound=false;startNode=startNode.parentNode;while(startNode.parentNode){if(startNode===document){break;}
switch(startNode.tagName.toLowerCase()){case'strong':if(this.toolbarPlugin){this.toolbarPlugin.setButtonActive('bold');}
boldFound=true;break;case'em':if(this.toolbarPlugin){this.toolbarPlugin.setButtonActive('italic');}
emFound=true;break;default:break;}
startNode=startNode.parentNode;}
if(!emFound&&this.toolbarPlugin){this.toolbarPlugin.setButtonInactive('italic');}
if(!boldFound&&this.toolbarPlugin){this.toolbarPlugin.setButtonInactive('bold');}},caretUpdated:function()
{var self=this;clearTimeout(this._caretUpdatedTimeout);this._caretUpdatedTimeout=setTimeout(function(){var tags=self.getStyleTags();var asln=self.activeStyles.length;for(var i=0;i<asln;i++){self.setStyleButtonState(self.activeStyles[i],'inactive');}
var tln=tags.length;for(var i=0;i<tln;i++){var tag=tags[i].tagName.toLowerCase();var index=self.styleTags.find(tag);if(index!==-1){self.setStyleButtonState(self.buttons[index],'active');}}
var range=self.viper.getCurrentRange();var style=self.getAlignment(range.startContainer);if(style){if(style==='start'){style='left';}
self.setStyleButtonState('align-'+style,'active');}},200);},setStyleButtonState:function(style,state)
{if(!this.toolbarPlugin){return;}
if(state==='active'){this.toolbarPlugin.setButtonActive(style);this.activeStyles.push(style);}else{this.toolbarPlugin.setButtonInactive(style);}}};dfx.noInclusionInherits('ViperCoreStylesPlugin','ViperPlugin',true);function ViperFormatPlugin(viper)
{ViperPlugin.call(this,viper);this.styleTags={h1:'Heading 1',h2:'Heading 2',h3:'Heading 3',h4:'Heading 4',h5:'Heading 5',h6:'Heading 6',p:'Paragraph',pre:'Preformatted',address:'Address'};this.toolbarPlugin=null;this.activeStyles=[];this._range=null;}
ViperFormatPlugin.prototype={start:function()
{var name='Format';var self=this;ViperChangeTracker.addChangeType('textFormatChange','Formatted','format');ViperChangeTracker.setDescriptionCallback('textFormatChange',function(node){var format=self._getFormat(node);return self.styleTags[format];});var menu=document.createElement('div');dfx.addClass(menu,'ViperFormatPlugin-menu');this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');var subToolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin');var button=this.toolbarPlugin.addButton(name,'format','Format',function(e){dfx.addEvent(document,'mousedown.ViperFormatPlugin',function(){dfx.setStyle(menu,'display','none');self._range=null;dfx.removeEvent(document,'mousedown.ViperFormatPlugin');});if(subToolbarPlugin&&subToolbarPlugin.isActive()===true){dfx.setStyle(menu,'margin-top','30px');}else{dfx.setStyle(menu,'margin-top','0px');}
dfx.setStyle(menu,'display','block');self._range=self.viper.getCurrentRange();var currentFormat=self._getFormat(self._range.startContainer);if(currentFormat!==null){dfx.removeClass(dfx.getClass('ViperFormatPlugin-menu-item',menu),'active');dfx.addClass(dfx.getClass('ViperFormatPlugin-menu-'+currentFormat,menu)[0],'active');}
dfx.preventDefault(e);dfx.stopPropagation(e);return false;});dfx.setStyle(menu,'display','none');button.appendChild(menu);var shadow=document.createElement('div');menu.appendChild(shadow);dfx.addClass(shadow,'ViperFormatPlugin-menu-shadow');var fsize=24;for(var tag in this.styleTags){if(this.styleTags.hasOwnProperty(tag)===false){continue;}
var item=document.createElement('div');dfx.addClass(item,'ViperFormatPlugin-menu-item ViperFormatPlugin-menu-'+tag);menu.appendChild(item);dfx.setHtml(item,this.styleTags[tag]);dfx.setStyle(item,'font',fsize+'px arial');if(fsize>12){fsize-=2;}
(function(el,tagName){dfx.addEvent(el,'mousedown',function(){self.handleFormat(tagName);});})(item,tag);}
dfx.hover(menu.childNodes,function(e){var target=dfx.getMouseEventTarget(e);dfx.addClass(target,'hover');},function(e){dfx.removeClass(menu.childNodes,'hover');});ViperChangeTracker.setApproveCallback('textFormatChange',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('textFormatChange',function(clone,node){if(node.parentNode===self.viper.element){var elem=document.createElement('p');while(node.firstChild){elem.appendChild(node.firstChild);}
dfx.insertBefore(node,elem);}else{while(node.firstChild){dfx.insertBefore(node,node.firstChild);}}
dfx.remove(node);});},_addChangeTrackInfo:function(node)
{if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange('textFormatChange',[node]);}},handleFormat:function(type)
{this.viper.focus();var range=this.viper.getCurrentRange();if(this.viper.isChildOfElems(this._range.startContainer,[this._range.endContainer])===true){var child=range._getFirstSelectableChild(this._range.endContainer);range.setStart(child,0);}
range.setStart(this._range.startContainer,this._range.startOffset);range.setEnd(this._range.endContainer,this._range.endOffset);var startNode=range.getStartNode();if(dfx.isChildOf(startNode,this.viper.element)===false){range.setStart(this.viper.element,0);range.setEnd(this.viper.element,this.viper.element.childNodes.length);}
ViperSelection.addRange(range);var bookmark=this.viper.createBookmark();var elemsBetween=dfx.getElementsBetween(bookmark.start,bookmark.end);if(range.collapsed===true){elemsBetween.unshift(bookmark.start);}
var s=this.styleTags;s.div=1;var self=this;dfx.foreach(elemsBetween,function(i){var elem=elemsBetween[i];var tagName=dfx.getTagName(elem);if(s[tagName]){self._createNewNode(elem,type);}else{var textNodes=null;if(elem.nodeType===dfx.TEXT_NODE){textNodes=[elem];}else{textNodes=dfx.getTextNodes(elem);}
dfx.foreach(textNodes,function(k){var textNode=textNodes[k];var blockParent=self.getFirstBlockParent(textNode);if(blockParent===null){return;}
var t=dfx.getTagName(blockParent);if(s[t]){self._createNewNode(blockParent,type);}else if(type!==t){var newElem=document.createElement(type);self._addChangeTrackInfo(newElem);self._moveChildElements(blockParent,newElem);blockParent.appendChild(newElem);}});}});if(bookmark){this.viper.selectBookmark(bookmark);}
this.viper.fireNodesChanged('ViperFormatPlugin:format');},_createNewNode:function(node,type)
{var newElem=document.createElement(type);this._addChangeTrackInfo(newElem);this._moveChildElements(node,newElem);dfx.insertAfter(node,newElem);dfx.remove(node);return newElem;},_moveChildElements:function(source,dest)
{while(source.firstChild){dest.appendChild(source.firstChild);}},getFirstBlockParent:function(elem)
{if(dfx.isBlockElement(elem)===true){return elem;}
var parents=dfx.getParents(elem);var parent=null;var ln=parents.length;for(var i=0;i<ln;i++){parent=parents[i];if(parent===this.viper.element){return null;}
if(dfx.isBlockElement(parent)===true){return parent;}}},selectionChanged:function()
{var range=this.viper.getCurrentRange();var startNode=range.startContainer;var endNode=range.endContainer;var boldFound=false;var emFound=false;startNode=startNode.parentNode;this.toolbarPlugin.setButtonInactive('format');var tagName=this._getFormat(startNode);if(tagName!==null&&tagName!=='p'){this.toolbarPlugin.setButtonActive('format');}},_getFormat:function(startNode)
{while(startNode.parentNode){if(startNode===document){return null;}
if(startNode.tagName){var tagName=startNode.tagName.toLowerCase();if(this.styleTags[tagName]){return tagName;}}
startNode=startNode.parentNode;}
return null;}};dfx.noInclusionInherits('ViperFormatPlugin','ViperPlugin',true);function ViperKeyboardEditorPlugin(viper)
{ViperPlugin.call(this,viper);this.viper.ViperPluginManager.addKeyPressListener('SHIFT+ENTER',this,'handleSoftEnter');this.viper.ViperPluginManager.addKeyPressListener('ENTER',this,'handleEnter');}
ViperKeyboardEditorPlugin.prototype={start:function()
{var self=this;ViperChangeTracker.addChangeType('splitContainer','Insert','format');ViperChangeTracker.setDescriptionCallback('splitContainer',function(node){return self._getChangeDescription(node,'splitContainer');});ViperChangeTracker.setApproveCallback('splitContainer',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('splitContainer',function(clone,node){var prev=node.previousSibling;if(!prev){return;}
while(node.firstChild){prev.appendChild(node.firstChild);}
dfx.remove(node);});ViperChangeTracker.addChangeType('createContainer','Insert','insert');ViperChangeTracker.setDescriptionCallback('createContainer',function(node){return self._getChangeDescription(node);});ViperChangeTracker.setApproveCallback('createContainer',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('createContainer',function(clone,node){dfx.remove(node);});},_getChangeDescription:function(node,changeType)
{var pImgURL=this.viper.getStylesURL()+'/icon-p_tag.png';var pImg=Viper.document.createElement('img');dfx.attr(pImg,'src',pImgURL);dfx.attr(pImg,'title','Paragraph Break');var desc=pImg;if(changeType!=='splitContainer'){for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===dfx.TEXT_NODE&&dfx.trim(child.nodeValue).length===0){continue;}else if(ViperChangeTracker.isTrackingNode(child)===true){var ctnType=ViperChangeTracker.getCTNTypeFromNode(child);if(ViperChangeTracker.isInsertType(ctnType)===true){var extraDesc=ViperChangeTracker.getDescriptionForNode(child);if(dfx.isObj(extraDesc)===false){extraDesc=Viper.document.createTextNode(extraDesc);}
desc=[desc,extraDesc];}}
break;}}
return desc;},_isKeyword:function()
{var keywordPlugin=this.viper.ViperPluginManager.getPlugin('ViperKeywordPlugin');if(!keywordPlugin){return false;}
var range=this.viper.getCurrentRange();if(keywordPlugin._isKeyword(range.startContainer)===false&&keywordPlugin._isKeyword(range.startContainer)===false){return false;}
return true;},handleTab:function()
{if(this._isKeyword()===true){return true;}
var numSpaces=4;var sp=String.fromCharCode(160);var c='';while(numSpaces-->0){c+=sp;}
this.viper.insertNodeAtCaret(c);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:tab');return true;},handleEnter:function(returnFirstBlock)
{if(this.viper.inlineMode===true){return this.handleSoftEnter();}
var range=this.viper.getCurrentRange();if(range.collapsed!==true){this.viper.deleteContents();}
if(range.startContainer.nodeType===dfx.TEXT_NODE){var parent=range.startContainer.parentNode;var blockQuote=dfx.getParents(range.startContainer,'blockquote',this.viper.element);while(parent){if(parent.tagName.toLowerCase()==='li'){var listPlugin=this.viper.ViperPluginManager.getPlugin('ViperListPlugin');if(listPlugin&&listPlugin.handleEnter(parent)===false){return true;}
break;}else if(dfx.isBlockElement(parent)===true){if(blockQuote.length===0||dfx.isTag(parent,'blockquote')===true){break;}}
if(parent.parentNode&&parent.parentNode===this.viper.element){break;}
parent=parent.parentNode;}}else{parent=range.startContainer;}
var tag=parent.tagName.toLowerCase();if(dfx.isChildOf(parent,this.viper.element)===false){var node=range.endContainer;while(dfx.isset(node.nextSibling)===true){if(dfx.isBlockElement(node.nextSibling)===true){break;}
node=node.nextSibling;}
range.setEndAfter(node);var elem=Viper.document.createElement('p');var docFrag=range.extractContents('p');this.viper.deleteContents();elem.appendChild(docFrag);dfx.insertAfter(range.startContainer,elem);range.collapse(true);node=range.startContainer;while(dfx.isset(node.previousSibling)===true){if(dfx.isBlockElement(node.previousSibling)===true){break;}
node=node.previousSibling;}
range.setStartBefore(node);var felem=Viper.document.createElement('p');docFrag=range.extractContents('p');felem.appendChild(docFrag);dfx.insertBefore(elem,felem);range.setStart(elem.firstChild,0);range.collapse(true);return;}else if(tag==='pre'){this.insertTextAtRange(range,"\n");return true;}else if(tag==='td'||tag==='th'){var bookmark=this.viper.createBookmark(range);var p=Viper.document.createElement('P');while(parent.firstChild){p.appendChild(parent.firstChild);}
parent.appendChild(p);tag='p';parent=p;this.viper.selectBookmark(bookmark);}
if(range.startContainer.nodeType===dfx.TEXT_NODE&&range.startOffset===range.startContainer.data.length){if(!range.startContainer.nextSibling){var newTextNode=Viper.document.createTextNode('');dfx.insertAfter(range.startContainer.parentNode,newTextNode);range.setStart(newTextNode,0);range.collapse(true);}}
try{range.setEndAfter(parent.lastChild);}catch(e){}
ViperSelection.addRange(range);var elem=parent.cloneNode(false);var docFrag=range.extractContents(tag);elem.appendChild(docFrag);var elemClone=elem.cloneNode(true);dfx.remove(dfx.getTag('del',elemClone));if(dfx.isBlank(dfx.getNodeTextContent(elemClone))===true){elem=null;}
if(elem===null||(elem.tagName&&elem.tagName.toLowerCase()!=='li'&&dfx.isBlockElement(elem)===false)){var newTag='p';if(tag==='li'){newTag=tag;}
var pelem=Viper.document.createElement(newTag);if(elem!==null){pelem.appendChild(elem);}else{dfx.setHtml(pelem,'&nbsp;');}
elem=pelem;ViperChangeTracker.addChange('createContainer',[elem]);}else{ViperChangeTracker.removeTrackChanges(elem,true);ViperChangeTracker.addChange('splitContainer',[elem]);}
if(this.viper.elementIsEmpty(parent)===true){dfx.setHtml(parent,'&nbsp;');}
dfx.insertAfter(parent,elem);range.setStart(elem,0);range.setStart(elem,0);try{range.moveStart('character',1);range.moveStart('character',-1);}catch(e){}
range.collapse(true);ViperSelection.addRange(range);if(dfx.isBlockElement(parent)===true&&dfx.trim(dfx.getHtml(parent))===''){dfx.setHtml(parent,'&nbsp;');}
this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:enter');if(returnFirstBlock===true){return parent;}
return true;},handleSoftEnter:function(e)
{if(this._isKeyword()===true){return true;}
var range=this.viper.getCurrentRange();if(e){var startNode=range.getStartNode();if(startNode&&dfx.isTag(startNode.parentNode,'pre')===true){var p=Viper.document.createElement('p');dfx.setHtml(p,'&nbsp;');dfx.insertAfter(startNode.parentNode,p);range.setStart(p.firstChild,0);range.collapse(true);ViperSelection.addRange(range);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:softEnter');return;}}
var node=Viper.document.createElement('br');this.viper.insertNodeAtCaret(node);range=this.viper.getCurrentRange();if(dfx.isTag(node.previousSibling,'br')===true){var text=Viper.document.createTextNode(String.fromCharCode(160));dfx.insertAfter(node.previousSibling,text);}
if(!node.nextSibling||node.nextSibling.nodeType!==dfx.TEXT_NODE){var text=Viper.document.createTextNode(String.fromCharCode(160));dfx.insertAfter(node,text);}
range.setStart(node.nextSibling,0);range.collapse(true);this.viper.fireNodesChanged('ViperKeyboardEditorPlugin:softEnter');return true;},insertTextAtRange:function(range,text)
{var node=range.startContainer;if(node.nodeType===dfx.TEXT_NODE){var newNode=node.splitText(range.startOffset);dfx.insertBefore(newNode,document.createTextNode(text));}else{node=range.startContainer.childNodes[range.startOffset];if(node.nodeType===dfx.TEXT_NODE){var newNode=node.splitText(range.startOffset);dfx.insertBefore(newNode,document.createTextNode(text));}else{newNode=document.createTextNode(text);dfx.insertAfter(node,newNode);}}
range.setStart(newNode,0);range.collapse(true);ViperSelection.addRange(range);if(ViperChangeTracker.isTracking()===true){var ctNode=null;if(newNode.nextSibling){var sibling=newNode.nextSibling;ctNode=ViperChangeTracker.createCTNode('ins','textAdd',newNode);dfx.insertBefore(sibling,ctNode);}else if(newNode.previousSibling){var sibling=newNode.previousSibling;ctNode=ViperChangeTracker.createCTNode('ins','textAdd',newNode);dfx.insertAfter(sibling,ctNode);}else{var parent=newNode.parentNode;ctNode=ViperChangeTracker.createCTNode('ins','textAdd',newNode);parent.appendChild(ctNode);}
if(ctNode){ViperChangeTracker.addChange('textAdded',[ctNode]);}}}};dfx.noInclusionInherits('ViperKeyboardEditorPlugin','ViperPlugin',true);function ViperListPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;}
ViperListPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('List','list-ordered','Insert/Remove Ordered List',function(){self.oderedList();});this.toolbarPlugin.addButton('List','list-unordered','Insert/Remove Un-ordered List',function(){self.unoderedList();});ViperChangeTracker.addChangeType('makeList','Formatted','insert');ViperChangeTracker.addChangeType('removedList-ol','Formatted','format');ViperChangeTracker.addChangeType('removedList-ul','Formatted','format');ViperChangeTracker.addChangeType('makeList-change','Formatted','format');ViperChangeTracker.addChangeType('addedListItem','Inserted','insert');ViperChangeTracker.addChangeType('breakListUP','Formatted','format');ViperChangeTracker.addChangeType('breakListUPDown','Formatted','format');ViperChangeTracker.addChangeType('breakListDown','Formatted','format');ViperChangeTracker.setDescriptionCallback('makeList',function(node){var listType='ordered';if(dfx.isTag(node,'ul')===true){listType='un-ordered';}
return'Changed to '+listType+' list';});ViperChangeTracker.setApproveCallback('makeList',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('makeList',function(clone,node){var children=[];dfx.foreach(node.childNodes,function(i){children.push(node.childNodes[i]);});while(child=children.shift()){self.removeListItem(child,true);}
dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('removedList-ol',function(node){return'Removed from ordered list';});ViperChangeTracker.setApproveCallback('removedList-ol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedList-ol',function(clone,node){var list=document.createElement('ol');dfx.insertBefore(node,list);list.appendChild(self._createListItem(node));});ViperChangeTracker.setDescriptionCallback('removedList-ul',function(node){return'Removed from un-ordered list';});ViperChangeTracker.setApproveCallback('removedList-ul',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedList-ul',function(clone,node){var list=document.createElement('ul');dfx.insertBefore(node,list);list.appendChild(self._createListItem(node));});ViperChangeTracker.setDescriptionCallback('makeList-change',function(node){var listType='unordered';if(dfx.isTag(node,'ol')===true){listType='ordered';}
return'Changed to '+listType+' list';});ViperChangeTracker.setApproveCallback('makeList-change',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('makeList-change',function(clone,node){var newTag='ol'
if(dfx.isTag(node,'ol')===true){newTag='ul';}
var newList=document.createElement(newTag);while(node.firstChild){newList.appendChild(node.firstChild);}
dfx.insertBefore(node,newList);dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('breakListUP',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListUP',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListUP',function(clone,node){var prevList=node.previousSibling;if(dfx.isTag(prevList,'ul')===true||dfx.isTag(prevList,'ol')===true){if(self.isListNode(node)===true){while(node.firstChild){prevList.appendChild(node.firstChild);}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
prevList.appendChild(li);}}});ViperChangeTracker.setDescriptionCallback('breakListUPDown',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListUPDown',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListUPDown',function(clone,node){var prevList=node.previousSibling;var nextList=node.nextSibling;if(dfx.isTag(prevList,'ul')===true||dfx.isTag(prevList,'ol')===true){if(self.isListNode(node)===true){while(node.firstChild){prevList.appendChild(node.firstChild);}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
prevList.appendChild(li);}
if(nextList){while(nextList.firstChild){var li=nextList.firstChild;if(dfx.isTag(nextList.firstChild,'li')===false){li=self._createListItem(nextList.firstChild);}
prevList.appendChild(li);}
dfx.remove(nextList);}}else if(dfx.isTag(nextList,'ul')===true||dfx.isTag(nextList,'ol')===true){if(self.isListNode(node)===true){if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,node.childNodes);}else{while(node.firstChild){nextList.appendChild(node.firstChild);}}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,li);}else{nextList.appendChild(li);}}}});ViperChangeTracker.setDescriptionCallback('breakListDown',function(node){return'Removed from list';});ViperChangeTracker.setApproveCallback('breakListDown',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('breakListDown',function(clone,node){var nextList=node.nextSibling;if(dfx.isTag(nextList,'ul')===true||dfx.isTag(nextList,'ol')===true){if(self.isListNode(node)===true){if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,node.childNodes);}else{while(node.firstChild){nextList.appendChild(node.firstChild);}}
dfx.remove(node);}else{var li=node;if(dfx.isTag(li,'li')===false){li=self._createListItem(node)}
if(nextList.firstChild){dfx.insertBefore(nextList.firstChild,li);}else{nextList.appendChild(li);}}}});},unoderedList:function()
{this._changeType='makeList';this.makeList(false);this.viper.fireNodesChanged('ViperListPlugin:unordered');this.viper.element.focus();},oderedList:function()
{this._changeType='makeList';this.makeList(true);this.viper.fireNodesChanged('ViperListPlugin:ordered');this.viper.element.focus();},removeListItem:function(li,sameList)
{if(!li||!li.parentNode){return false;}
var list=this._getListElement(li);if(!list){return;}
var nextLevelList=this._getListElement(list);if(!nextLevelList){var newElem=document.createElement('p');while(li.firstChild){newElem.appendChild(li.firstChild);}}
var changeType=null;if(li.nextSibling){var clone=list.cloneNode(false);for(var node=li.nextSibling;node;node=li.nextSibling){clone.appendChild(node);}
dfx.insertAfter(list,clone);if(li.previousSibling){changeType='breakListUPDown';}else{changeType='breakListDown';}}else{changeType='breakListUP';}
dfx.remove(li);if(!nextLevelList){dfx.insertAfter(list,newElem);}else{var newElem=document.createElement('br');dfx.insertAfter(list,newElem);dfx.insertAfter(newElem,li.childNodes);}
if(dfx.getNodeTextContent(list)===''){dfx.remove(list);}
if(sameList!==true){this._changeType=changeType;ViperChangeTracker.addChange(changeType,[newElem]);}
return newElem;},makeList:function(ordered,force)
{var tag='ul';if(ordered===true){tag='ol';}
var range=this.viper.getCurrentRange().cloneRange();var bookmark=this.viper.createBookmark(range);if(bookmark.start.parentNode===bookmark.end.parentNode){var li=this._getListItem(range.startContainer);if(li!==null){var br=this._getLineBreak(bookmark.start);if(br){var tmpDiv=document.createElement('div');dfx.insertBefore(br,tmpDiv);var node=null;while(node=br.nextSibling){if(node.nodeType===dfx.ELEMENT_NODE&&node.tagName.toLowerCase()==='br'){tmpDiv=document.createElement('div');dfx.insertBefore(node,tmpDiv);dfx.remove(br);br=node;continue;}
tmpDiv.appendChild(node);}
if(br.parentNode){dfx.remove(br);}
this.viper.selectBookmark(bookmark);this.makeList(ordered,true);return;}}
if(li===null||force===true){var list=null;var elem=this._getBlockParent(range.startContainer);if(elem===null){elem=[range.startContainer];}else{elem=[elem];}
var removeInsAfter=false;var insertAfter=elem[0].previousSibling;if(!insertAfter){insertAfter=document.createTextNode('');dfx.insertBefore(elem[0],insertAfter);removeInsAfter=true;}
list=this._makeList(tag,elem);dfx.insertAfter(insertAfter,list);if(removeInsAfter===true){}
this.viper.selectBookmark(bookmark);}else{var listElement=this._getListElement(li);var convert=(listElement&&listElement.tagName.toLowerCase()!==tag);var newElem=this.removeListItem(li);this.viper.selectBookmark(bookmark);if(convert===true){if(this._changeType==='makeList'){this._changeType+='-change';}
this.makeList(ordered);}}}else{var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);var comParents=this._getCommonParents(elements);if(!comParents){return false;}
var isWholeList=this._isWholeList(comParents);if(dfx.isTag(comParents[0],'li')===true){var sameType=true;dfx.foreach(comParents,function(i){if(dfx.isTag(comParents[i],'li')!==true||dfx.isTag(comParents[i].parentNode,tag)!==true){sameType=false;return false;}});if(sameType===true){var self=this;dfx.foreach(comParents,function(i){var newElem=self.removeListItem(comParents[i],isWholeList);ViperChangeTracker.addChange('removedList-'+tag,[newElem]);});this.viper.selectBookmark(bookmark);return;}else{if(dfx.isTag(comParents[0].parentNode,tag)===true){var firstItem=comParents.shift();this._joinToList(firstItem.parentNode,comParents,firstItem);this.viper.selectBookmark(bookmark);return;}else{var self=this;dfx.foreach(comParents,function(i){self.removeListItem(comParents[i],isWholeList);});this.viper.selectBookmark(bookmark);if(this._changeType==='makeList'){this._changeType+='-change'}
return this.makeList(ordered);}}}
var removeInsAfter=false;var insertAfter=comParents[0].previousSibling;if(!insertAfter){insertAfter=document.createTextNode('');dfx.insertBefore(comParents[0],insertAfter);removeInsAfter=true;}
var list=this._makeList(tag,comParents);dfx.insertAfter(insertAfter,list);if(removeInsAfter===true){dfx.remove(insertAfter);}
this.viper.selectBookmark(bookmark);}},_joinToList:function(listElem,elements,refNode)
{var self=this;dfx.foreach(elements,function(i){var elem=elements[i];if(elem.parentNode!==listElem){if(dfx.isTag(elem,'li')===false){elem=self._createListItem(elem);}
if(elem){if(refNode){dfx.insertAfter(refNode,elem);refNode=elem;}else{listElem.appendChild(elem);}}}});},_getLineBreak:function(ref)
{while(ref=ref.previousSibling){if(ref.nodeType===dfx.ELEMENT_NODE&&ref.tagName.toLowerCase()==='br'){return ref;}}
return null;},_getBlockParent:function(element,tag)
{while(element&&element!==this.viper.element){if(dfx.isBlockElement(element)===true){if(!tag||element.tagName.toLowerCase()===tag){return element;}}
element=element.parentNode;}
return null;},_getCommonParents:function(elems)
{elems=elems.concat([]);var parents=[];var eLen=elems.length;while(eLen>0){var elem=elems.shift();if(dfx.isBlockElement(elem)===true){if(elem.tagName.toLowerCase()==='ol'||elem.tagName.toLowerCase()==='ul'){for(var listChild=elem.firstChild;listChild;listChild=listChild.nextSibling){parents.push(listChild);}}else{parents.push(elem);}}else{while(elem){elem=elem.parentNode;if(elem){if(elem===this.viper.element){break;}else if(dfx.isBlockElement(elem)===true){if(parents.inArray(elem)===false){parents.push(elem);}
break;}}}}
eLen=elems.length;}
return parents;},_makeList:function(tag,elements)
{if(!elements){return;}
tag=tag||'ul';var eln=elements.length;if(eln<=0){return;}
var list=document.createElement(tag);if(ViperChangeTracker.isTracking()===true){ViperChangeTracker.addChange(this._changeType,[list]);}
if(eln===1){var listItems=[];var listLen=listItems.length;while(elements[0].firstChild||listLen>0){var child=elements[0].firstChild;if(child&&dfx.isTag(child,'br')===false){listItems.push(child);}else if(listItems.length>0){var listItem=this._createListItem(listItems.shift());list.appendChild(listItem);while(listElem=listItems.shift()){listItem.appendChild(listElem);}}
if(child){dfx.remove(child);}
listLen=listItems.length;}
dfx.remove(elements[0]);}else{for(var i=0;i<eln;i++){var listItem=this._createListItem(elements[i]);if(listItem!==null){list.appendChild(listItem);}}}
return list;},_createListItem:function(element)
{if(!element){return null;}
var li=document.createElement('li');if(dfx.isBlockElement(element)===true){if(element.childNodes&&element.childNodes.length>0){while(element.firstChild){if(element.firstChild.nodeType===dfx.TEXT_NODE){if(dfx.trim(element.firstChild.data).length<=0){dfx.remove(element.firstChild);continue;}}
li.appendChild(element.firstChild);}}
dfx.remove(element);if(li.childNodes.length===0){return null;}}else{li.appendChild(element);}
return li;},_getList:function(element)
{return this._isListElement(element,null,true);},_isListElement:function(element,type,returnNode)
{while(element&&element!==this.viper.element){if(element.nodeType===dfx.ELEMENT_NODE){var tagName=element.tagName.toLowerCase();if(type){if(tagName===type){if(returnNode===true){return element;}
return true;}}else if(tagName==='ul'||tagName==='ol'||tagName==='li'){if(returnNode===true){return element;}
return true;}}
element=element.parentNode;}
return false;},isListNode:function(node)
{if(dfx.isTag(node,'ul')===true||dfx.isTag(node,'ol')===true){return true;}
return false;},_getListItem:function(element)
{while(element&&element!==this.viper.element){if(element.tagName&&element.tagName.toLowerCase()==='li'){return element;}
element=element.parentNode;}
return null;},_getListElement:function(element)
{element=element.parentNode;while(element&&element!==this.viper.element){if(element.tagName){var tag=element.tagName.toLowerCase();if(tag==='ol'||tag==='ul'){return element;}}
element=element.parentNode;}
return null;},_isWholeList:function(elems)
{var sameParent=false;var parentList=null;if(elems.length>1){var first=elems[0];var last=elems[(elems.length-1)];var firstParent=first.parentNode;var lastParent=last.parentNode;if(firstParent===lastParent){parentList=firstParent;sameParent=true;}}else{sameParent=true;}
if(sameParent===true){var count=0;var child=null;var last=null;for(child=parentList.firstChild;child;child=child.nextSibling){if(dfx.isTag(child,'li')===true){if(count===0&&child!==elems[0]){return false;}
last=child;count++;}}
if(last===elems[(elems.length-1)]){return true;}}
return false;},handleEnter:function(li)
{var content=dfx.getNodeTextContent(li);if(dfx.trim(content).length===0||dfx.getHtml(li)==='&nbsp;'){var parents=dfx.getParents(li,'ul,ol');if(parents.length>0){var listEl=parents[0];if(parents.length>1){var parentLi=parents[(parents.length-1)].parentNode;while(parentLi&&dfx.isTag(parentLi,'li')===false){parentLi=parentLi.parentNode;}
if(parentLi){dfx.insertAfter(parentLi,li);var range=this.viper.getCurrentRange();range.setStart(li.firstChild,0);range.collapse(true);return false;}}
var p=document.createElement('p');dfx.setHtml(p,'&nbsp;');var listClone=listEl.cloneNode(false);dfx.removeAttr(listClone,'id');var c=0;var el=li.nextSibling;while(el){var elem=el;el=el.nextSibling;c++;dfx.remove(elem);listClone.appendChild(elem);}
dfx.remove(li);dfx.insertAfter(listEl,p);if(c>0){dfx.insertAfter(p,listClone);}
var range=this.viper.getCurrentRange();range.setStart(p.firstChild,0);range.collapse(true);return false;}}else if(this._isKeyword()===true){var newLi=li.cloneNode(false);dfx.setHtml(newLi,'&nbsp;');dfx.insertAfter(li,newLi);var range=this.viper.getCurrentRange();range.setStart(newLi.firstChild,0);range.collapse(true);return false;}
return true;},_isKeyword:function()
{var keywordPlugin=this.viper.ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin){var range=this.viper.getCurrentRange();if(keywordPlugin._isKeyword(range.startContainer)===false&&keywordPlugin._isKeyword(range.startContainer)===false){return false;}}
return true;}};dfx.noInclusionInherits('ViperListPlugin','ViperPlugin',true);function ViperRedoPlugin(viper)
{ViperPlugin.call(this,viper);this.viper.ViperPluginManager.addKeyPressListener('CTRL+Z',this,'handleUndo');this.viper.ViperPluginManager.addKeyPressListener('CTRL+Y',this,'handleRedo');}
ViperRedoPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');if(dfx.isset(this.toolbarPlugin)===true){var name='Redo';var ctrlName='CTRL';if(navigator.platform.toLowerCase().indexOf('mac')!==false){ctrlName='CMD';}
this.toolbarPlugin.addButton(name,'undo','Undo ('+ctrlName+' + Z)',function(){return self.handleUndo();});this.toolbarPlugin.setButtonDisabled('undo');this.toolbarPlugin.addButton(name,'redo','Redo ('+ctrlName+' + Y)',function(){return self.handleRedo();});this.toolbarPlugin.setButtonDisabled('redo');}
this.viper.registerCallback('ViperUndoManager:newUndoTask','ViperRedoPlugin',function(){self._updateButtonStates();});},handleUndo:function()
{this.viper.ViperUndoManager.undo();this._updateButtonStates();return true;},handleRedo:function()
{this.viper.ViperUndoManager.redo();this._updateButtonStates();return true;},_updateButtonStates:function()
{if(!this.toolbarPlugin){return;}
if(this.viper.ViperUndoManager.getUndoCount()>1){this.toolbarPlugin.setButtonInactive('undo');}else{this.toolbarPlugin.setButtonDisabled('undo');}
if(this.viper.ViperUndoManager.getRedoCount()>0){this.toolbarPlugin.setButtonInactive('redo');}else{this.toolbarPlugin.setButtonDisabled('redo');}}};dfx.noInclusionInherits('ViperRedoPlugin','ViperPlugin',true);function ViperSubToolbarPlugin(viper)
{ViperPlugin.call(this,viper);this._toolbars={};this._wrapper=null;this._activeBarid=null;}
ViperSubToolbarPlugin.prototype={createToolBar:function(id)
{if(this._wrapper===null){this._wrapper=this._createWrapper();}
var barid='subToolbar-'+id;var oldbar=dfx.getId(barid);if(oldbar){dfx.remove(oldbar);}
var c='ViperSubToolbar';var div=document.createElement('div');div.id=barid;dfx.addClass(div,c);this._toolbars[id]=div;var toolbarId=this.viper.id+'-ViperToolbarPlugin';var toolbarEl=dfx.getId(toolbarId);if(toolbarEl&&toolbarEl.parentNode!==document.body){this.setParentElement(toolbarEl.parentNode);}
var content='<div class="'+c+'-left"></div>';content+='<div class="'+c+'-mid"><div class="'+c+'-mid-wrapper"></div></div>';content+='<div class="'+c+'-right"></div>';dfx.setHtml(div,content);var mid=dfx.getClass(c+'-mid-wrapper',div)[0];this._wrapper.appendChild(div);return mid;},setParentElement:function(parent)
{dfx.remove(this._wrapper);dfx.setStyle(this._wrapper,'position','absolute');dfx.setStyle(this._wrapper,'top','22px');parent.appendChild(this._wrapper);},_createWrapper:function()
{var wrapper=document.createElement('div');dfx.addClass(wrapper,'ViperSubToolbar-wrapper');document.body.appendChild(wrapper);return wrapper;},showToolbar:function(id)
{var bar=this.getBar(id);if(bar){if(this._activeBarid&&id!==this._activeBarid){this.hideToolbar(this._activeBarid);}
dfx.setStyle(bar,'visibility','hidden');dfx.addClass(bar,'active');dfx.setStyle(bar.parentNode,'right',0);var width=dfx.getElementWidth(bar);dfx.setStyle(bar,'margin-right',((width*-1)/2)+'px');dfx.setStyle(bar.parentNode,'right','50%');dfx.setStyle(bar,'visibility','visible');}
this.viper.fireCallbacks('ViperSubToolbar:showToolbar',id);this._activeBarid=id;},hideToolbar:function(id)
{if(this._activeBarid===id){dfx.removeClass(dfx.getClass('ViperSubToolbar',this._wrapper),'active');this._activeBarid=null;this.viper.fireCallbacks('ViperSubToolbar:hideToolbar',id);}},toggleToolbar:function(id)
{if(this._activeBarid===id){this.hideToolbar(id);return false;}else{this.showToolbar(id);return true;}},createOptionsList:function(title)
{var div=document.createElement('div');var c='ViperSubToolbar-optsList';dfx.addClass(div,c);var contents='<div class="'+c+'-title">';contents+='<div class="'+c+'-title-left"></div>';contents+='<div class="'+c+'-title-mid">'+title+'</div>';contents+='<div class="'+c+'-title-right"></div></div>';contents+='<div class="'+c+'-mid"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(div,contents);var contentDiv=dfx.getClass(c+'-mid',div)[0];return{main:div,contentEl:contentDiv};},getBar:function(id)
{return this._toolbars[id];},isPluginElement:function(el)
{return dfx.isChildOf(el,this._wrapper);},remove:function()
{dfx.remove(this._wrapper);},isActive:function()
{if(this._activeBarid){return true;}
return false;}};dfx.noInclusionInherits('ViperSubToolbarPlugin','ViperPlugin',true);function ViperTableEditorPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.activeCell=null;this.vCellButtons=null;this.hCellButtons=null;this._subToolbar=null;this._lastNode=null;this._currentTablePropView='cell';this._settingsWidgets={};this.viper.ViperPluginManager.addKeyPressListener('TAB',this,'handleTab');this.viper.ViperPluginManager.addKeyPressListener('SHIFT+TAB',this,'handleTab');}
ViperTableEditorPlugin.prototype={start:function()
{if(this.viper.isBrowser('firefox')===true){document.execCommand("enableInlineTableEditing",false,false);document.execCommand("enableObjectResizing",false,false);}
var self=this;this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('TableEditor','table','Insert/Edit Table',function(){self.insertTable();});this.viper.ViperPluginManager.addKeyPressListener('DELETE',this,'handleDelete');dfx.removeEvent(document,'click.TableEditorPlugin');dfx.addEvent(document,'click.TableEditorPlugin',function(e){if(self.viper.ViperPluginManager.getActivePlugin()==='TableEditor'){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'ViperTableEditorPlugin-cellButton')!==true){if(dfx.isChildOf(target,self._subToolbar)===false){self.viper.ViperPluginManager.setActivePlugin(null);if(dfx.isChildOf(target,self.viper.element)===false){self.viper.mouseDown(null,target);}}}}});this.viper.registerCallback('setHtml','TablePlugin',function(data){self.hideCellButtons();});ViperChangeTracker.addChangeType('insertedTable','Inserted','insert');ViperChangeTracker.addChangeType('insertedTableRow','Inserted','insert');ViperChangeTracker.addChangeType('insertedTableCol','Inserted','insert');ViperChangeTracker.setDescriptionCallback('insertedTable',function(node){return'Table';});ViperChangeTracker.setDescriptionCallback('insertedTableRow',function(node){return'Table row';});ViperChangeTracker.setDescriptionCallback('insertedTableCol',function(node){return'Table column';});ViperChangeTracker.setApproveCallback('insertedTable',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('insertedTableRow',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setApproveCallback('insertedTableCol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('insertedTable',function(clone,node){self.removeTable(node);});ViperChangeTracker.setRejectCallback('insertedTableRow',function(clone,node){self.removeRow(node);});ViperChangeTracker.setRejectCallback('insertedTableCol',function(clone,node){self.removeCol(node);});ViperChangeTracker.addChangeType('removedTable','Deleted','remove');ViperChangeTracker.addChangeType('removedTableRow','Deleted','remove');ViperChangeTracker.addChangeType('removedTableCol','Deleted','remove');ViperChangeTracker.setDescriptionCallback('removedTable',function(node){return'Table';});ViperChangeTracker.setDescriptionCallback('removedTableRow',function(node){return'Table row';});ViperChangeTracker.setDescriptionCallback('removedTableCol',function(node){return'Table column';});ViperChangeTracker.setApproveCallback('removedTable',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('removedTableRow',function(clone,node){dfx.remove(node);});ViperChangeTracker.setApproveCallback('removedTableCol',function(clone,node){dfx.remove(node);});ViperChangeTracker.setRejectCallback('removedTable',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedTableRow',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});ViperChangeTracker.setRejectCallback('removedTableCol',function(clone,node){ViperChangeTracker.removeTrackChanges(node);});this.viper.registerCallback('ViperChangeTracker:modeChange','ViperTableEditor',function(changedTo){var showInserted=true;var showRemoved=false;if(changedTo==='original'){showInserted=false;showRemoved=true;}
ViperChangeTracker.setNodeTypeVisibility('insertedTable',showInserted);ViperChangeTracker.setNodeTypeVisibility('insertedTableRow',showInserted);ViperChangeTracker.setNodeTypeVisibility('insertedTableCol',showInserted);ViperChangeTracker.setNodeTypeVisibility('removedTable',showRemoved);ViperChangeTracker.setNodeTypeVisibility('removedTableRow',showRemoved);ViperChangeTracker.setNodeTypeVisibility('removedTableCol',showRemoved);});this.viper.registerCallback('ViperUndoManager:undo','ViperTableEditor',function(){self.hideCellButtons();});this.viper.registerCallback('ViperUndoManager:redo','ViperTableEditor',function(){self.hideCellButtons();});},clicked:function(e,elem)
{if(!elem){elem=dfx.getMouseEventTarget(e);}
var cell=this.isTableCell(elem);if(cell!==false){this.showCellButtons(cell);}else{this.hideCellButtons();}},isTableCell:function(elem)
{if(!elem){return false;}
var node=elem;while(node&&node!==this.viper.element){if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return node;}}
node=node.parentNode;}
return false;},handleDelete:function()
{var range=this.viper.getCurrentRange();if(range.startOffset===0&&range.startContainer.nodeType===dfx.TEXT_NODE){node=range.startContainer.parentNode;while(node&&node!==this.viper.element){if(node.nodeType===dfx.ELEMENT_NODE&&node.tagName.toLowerCase()==='td'){if(dfx.getNodeTextContent(node).length===0){dfx.setHtml(node,'&nbsp;');range.setStart(node.firstChild,0);range.collapse(true);}
return true;}
node=node.parentNode;}}},remove:function()
{this.hideCellButtons();dfx.removeEvent(document,'click.TableEditorPlugin');},caretUpdated:function()
{var range=this.viper.getCurrentRange();this._caretUpdated(range.startContainer);},_caretUpdated:function(cell)
{if(!cell){return;}
var keywordPlugin=this.viper.ViperPluginManager.getPlugin('ViperKeywordPlugin');if(keywordPlugin&&keywordPlugin.isKeyword(cell)===true){return;}
while(cell&&cell!==this.viper.element){if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){this.showCellButtons(cell);return;}}
cell=cell.parentNode;}
this.hideCellButtons(cell);},setActiveCell:function(cell,noUpdate)
{this.activeCell=cell;if(noUpdate!==true){this.updateSettings(cell);}},_updatecellButtonPositions:function(cell)
{this.showCellButtons(cell,true);},hideCellButtons:function(noDisable)
{try{var cellTable=this.getCellTable(this.activeCell);if(cellTable){dfx.removeClass(dfx.getClass('delHighlight',cellTable),'delHighlight');}
if(noDisable!==true){this.setActiveCell(null);}
dfx.remove(dfx.getClass('ViperTableEditorPlugin-cellButtonsWrapper'));this.vCellButtons=null;this.hCellButtons=null;if(noDisable!==true){this.viper.ViperPluginManager.setActivePlugin(null);this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin').hideToolbar('TableEditor');}}catch(e){}},showCellButtons:function(cell,noSet)
{if(!cell){return;}
this.hideCellButtons(true);this.setActiveCell(cell,noSet);var coords=dfx.getBoundingRectangle(cell);if(this.vCellButtons===null){this.vCellButtons=this.createVerticalCellButtons();}
if(this.hCellButtons===null){this.hCellButtons=this.createHorizontalCellButtons();}
var wrapper=document.createElement('div');dfx.addClass(wrapper,'ViperTableEditorPlugin-cellButtonsWrapper');wrapper.appendChild(this.vCellButtons);wrapper.appendChild(this.hCellButtons);document.body.appendChild(wrapper);if(noSet!==true){this.viper.ViperPluginManager.setActivePlugin('TableEditor');this.viper.ViperPluginManager.allowTextInput=true;}
this.showVerticalCellButtons(coords);this.showHorizontalCellButtons(coords);if(!this._subToolbar){this._setupSubToolbar();this.updateSettings(cell);}else{var subToolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(subToolbarPlugin){subToolbarPlugin.showToolbar('TableEditor');}}},showHorizontalCellButtons:function(coords)
{dfx.setStyle(this.hCellButtons,'visibility','hidden');dfx.setStyle(this.hCellButtons,'display','block');var h=14;var w=42;dfx.setStyle(this.hCellButtons,'top',(coords.y1-h)+'px');dfx.setStyle(this.hCellButtons,'left',(coords.x2-((coords.x2-coords.x1)/2)-(w/2))+'px');dfx.setStyle(this.hCellButtons,'visibility','visible');},showVerticalCellButtons:function(coords)
{dfx.setStyle(this.vCellButtons,'visibility','hidden');dfx.setStyle(this.vCellButtons,'display','block');var h=42;var w=14;dfx.setStyle(this.vCellButtons,'top',(coords.y1+((coords.y2-coords.y1)/2)-(h/2))+'px');dfx.setStyle(this.vCellButtons,'left',(coords.x1-w)+'px');dfx.setStyle(this.vCellButtons,'visibility','visible');},createVerticalCellButtons:function()
{var main=document.createElement('div');dfx.addClass(main,'ViperTableEditorPlugin-v-cellButtons');var insertRowAfter=document.createElement('div');dfx.attr(insertRowAfter,'title','Insert row below');dfx.addClass(insertRowAfter,'down');var insertRowBefore=document.createElement('div');dfx.attr(insertRowBefore,'title','Insert row above');dfx.addClass(insertRowBefore,'up');var removeRow=document.createElement('div');dfx.addClass(removeRow,'delete');dfx.attr(removeRow,'title','Delete row');dfx.addClass([insertRowAfter,insertRowBefore,removeRow],'ViperTableEditorPlugin-cellButton');main.appendChild(insertRowBefore);main.appendChild(removeRow);main.appendChild(insertRowAfter);var self=this;dfx.addEvent(insertRowAfter,'click',function(){self.insertRowAfter();});dfx.addEvent(insertRowBefore,'click',function(){self.insertRowBefore();});dfx.addEvent(removeRow,'click',function(){self.removeRow();});dfx.hover(insertRowAfter,function(){dfx.addClass(main,'after');},function(){dfx.removeClass(main,'after');});dfx.hover(insertRowBefore,function(){dfx.addClass(main,'before');},function(){dfx.removeClass(main,'before');});dfx.hover(removeRow,function(){dfx.addClass(main,'delete');if(self.activeCell&&self.activeCell.parentNode){dfx.addClass(self.activeCell.parentNode,'delHighlight');}},function(){dfx.removeClass(main,'delete');if(self.activeCell&&self.activeCell.parentNode){dfx.removeClass(self.activeCell.parentNode,'delHighlight');}});return main;},createHorizontalCellButtons:function()
{var main=document.createElement('div');dfx.addClass(main,'ViperTableEditorPlugin-h-cellButtons');var insertColAfter=document.createElement('div');dfx.attr(insertColAfter,'title','Insert column to the right');dfx.addClass(insertColAfter,'right');var insertColBefore=document.createElement('div');dfx.attr(insertColBefore,'title','Insert column to the left');dfx.addClass(insertColBefore,'left');var removeCol=document.createElement('div');dfx.addClass(removeCol,'delete');dfx.attr(removeCol,'title','Delete column');dfx.addClass([insertColAfter,insertColBefore,removeCol],'ViperTableEditorPlugin-cellButton');main.appendChild(insertColBefore);main.appendChild(removeCol);main.appendChild(insertColAfter);var self=this;dfx.addEvent(insertColAfter,'click',function(){self.insertColAfter();});dfx.addEvent(insertColBefore,'click',function(){self.insertColBefore();});dfx.addEvent(removeCol,'click',function(){self.removeCol();});dfx.hover(insertColAfter,function(){dfx.addClass(main,'right');},function(){dfx.removeClass(main,'right');});dfx.hover(insertColBefore,function(){dfx.addClass(main,'left');},function(){dfx.removeClass(main,'left');});dfx.hover(removeCol,function(){dfx.addClass(main,'delete');var table=self.getCellTable(self.activeCell);dfx.addClass(self.getColumnCells(table,self._getColNum(self.activeCell)),'delHighlight');},function(){dfx.removeClass(main,'delete');var table=self.getCellTable(self.activeCell);dfx.removeClass(self.getColumnCells(table,self._getColNum(self.activeCell)),'delHighlight');});return main;},insertRowBefore:function()
{this.insertRow(true);},insertRowAfter:function()
{this.insertRow();},insertRow:function(before)
{if(!this.activeCell){return;}
var tr=this.activeCell.parentNode;var clone=tr.cloneNode(true);var cln=clone.childNodes.length;for(var i=0;i<cln;i++){var el=clone.childNodes[i];if(el.nodeType===dfx.ELEMENT_NODE){dfx.setStyle(el,'width','');dfx.setHtml(el,'&nbsp;');}}
if(before===true){dfx.insertBefore(tr,clone);}else{dfx.insertAfter(tr,clone);}
ViperChangeTracker.addChange('insertedTableRow',[clone]);var cellNum=0;var trcln=tr.childNodes.length;for(cellNum=0;cellNum<trcln;cellNum++){if(this.activeCell===tr.childNodes[cellNum]){break;}}
this.moveCaretToCell(clone.childNodes[cellNum]);this._nodesUpdated();},removeRow:function(tr)
{if(!tr){tr=this.activeCell.parentNode;}
var elem=this._getNextRow(tr);var pos='parent';if(!elem){elem=this._getPreviousRow(tr);if(!elem){elem=null;}else{pos='after';}}else{pos='before';}
if(ViperChangeTracker.isTracking()===true&&ViperChangeTracker.isTrackingNode(tr)!==true){var del=document.createElement('del');dfx.insertBefore(tr,del);del.appendChild(tr);dfx.removeClass(tr,'delHighlight');ViperChangeTracker.addChange('removedTableRow',[del]);}else{dfx.remove(tr);}
if(elem){var colNum=this._getColNum(this.activeCell);var column=this._getColumn(elem,colNum);this.moveCaretToCell(column);}else{var table=this.getCellTable(this.activeCell);this.removeTable(table);}
this._nodesUpdated();},_getColNum:function(cell)
{if(!cell){return null;}
var tr=cell.parentNode;if(!tr){return null;}
var ln=tr.childNodes.length;var c=0;for(var i=0;i<ln;i++){var node=tr.childNodes[i];if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){if(node===cell){break;}
c++;}}}
return c;},_getColumn:function(row,colNum)
{var ln=row.childNodes.length;for(var i=0;i<ln;i++){var node=row.childNodes[i];if(node.nodeType===dfx.ELEMENT_NODE){var tagName=node.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){if(colNum===0){return node;}
colNum--;}}}},_getPreviousRow:function(row)
{while(row=row.previousSibling){if(row.nodeType===dfx.ELEMENT_NODE){var tagName=row.tagName.toLowerCase();if(tagName==='tr'||tagName==='th'){return row;}}}},_getNextRow:function(row,goPrev)
{while(row=row.nextSibling){if(row.nodeType===dfx.ELEMENT_NODE){var tagName=row.tagName.toLowerCase();if(tagName==='tr'||tagName==='th'){return row;}}}
if(goPrev===true){return this._getPreviousRow(row);}},insertColAfter:function()
{this.insertCol();},insertColBefore:function()
{this.insertCol(true);},insertCol:function(before)
{var table=this.activeCell.parentNode.parentNode;var rows=dfx.getTag('tr',table);var activeCellRow=this.activeCell.parentNode;var colNum=this._getColNum(this.activeCell);var changeid=ViperChangeTracker.startBatchChange('insertedTableCol');var td;var rln=rows.length;for(var i=0;i<rln;i++){var col=this._getColumn(rows[i],colNum);td=document.createElement(col.tagName);dfx.setHtml(td,'&nbsp;');if(i===0){dfx.setStyle(td,'width','100px');}
if(before===true){dfx.insertBefore(col,td);}else{dfx.insertAfter(col,td);}
if(changeid!==null){ViperChangeTracker.addNodeToChange(changeid,td);}}
if(changeid){ViperChangeTracker.endBatchChange(changeid);}
if(activeCellRow){if(before!==true){colNum++;}
var column=this._getColumn(activeCellRow,colNum);this.moveCaretToCell(column);}
this._nodesUpdated();},getColumnCells:function(table,colNum)
{if(!table){return;}
var cols=[];var rows=dfx.getTag('tr',table);var rln=rows.length;for(var i=0;i<rln;i++){cols.push(this._getColumn(rows[i],colNum));}
return cols;},removeCol:function(col)
{if(!col){col=this.activeCell;}
var colNum=this._getColNum(col);if(colNum===null){return;}
var row=col.parentNode;var table=this.getRowTable(row);var rows=dfx.getTag('tr',table);var changeid=null;if(ViperChangeTracker.isTrackingNode(col)!==true){changeid=ViperChangeTracker.startBatchChange('removedTableCol');}
var rln=rows.length;for(var i=0;i<rln;i++){col=this._getColumn(rows[i],colNum);if(changeid){var del=document.createElement('del');dfx.insertBefore(col,del);del.appendChild(col);dfx.removeClass(col,'delHighlight');ViperChangeTracker.addNodeToChange(changeid,del);}else{dfx.remove(col);}}
ViperChangeTracker.endBatchChange(changeid);if(colNum>0){colNum--;}
var nextCell=this._getColumn(row,colNum);if(!nextCell){this.removeTable(table,true);}else{this.moveCaretToCell(nextCell);}
this._nodesUpdated();},getNextCell:function(cell,goPrev)
{while(cell.nextSibling){cell=cell.nextSibling;if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return cell;}}}
if(goPrev===true){return this.getPrevCell(cell);}else{var nextRow=this._getNextRow(cell.parentNode);if(nextRow){return this._getColumn(nextRow,0);}}},getPrevCell:function(cell)
{while(cell.previousSibling){cell=cell.previousSibling;if(cell.nodeType===dfx.ELEMENT_NODE){var tagName=cell.tagName.toLowerCase();if(tagName==='td'||tagName==='th'){return cell;}}}
var prevRow=this._getPreviousRow(cell.parentNode);if(prevRow){var col=(dfx.getTag('td,th',prevRow).length-1);return this._getColumn(prevRow,col);}},moveCaretToCell:function(cell)
{if(cell){var range=this.viper.getCurrentRange();range.setStart(cell,0);range.moveStart('character',1);range.moveStart('character',-1);range.collapse(true);return range;}else{this.hideCellButtons();}},removeTable:function(table,emptyOnly)
{if(emptyOnly===true){if(dfx.find(table,'tr > td').length>0||dfx.find(table,'tr > th').length>0){return;}}
if(ViperChangeTracker.isTracking()===true){var del=document.createElement('del');dfx.insertBefore(table,del);del.appendChild(table);ViperChangeTracker.addChange('removedTable',[del]);}else{dfx.remove(table);}
this.hideCellButtons();this._nodesUpdated();},getCellTable:function(cell)
{if(!cell){return null;}
var node=cell;while(node){if(node.nodeType===dfx.ELEMENT_NODE){if(node.tagName.toLowerCase()==='table'){return node;}}
node=node.parentNode;}},getRowTable:function(row)
{return this.getCellTable(row);},insertTable:function(rows,cols)
{rows=rows||2;cols=cols||3;var table=document.createElement('table');dfx.setStyle(table,'display','none');ViperChangeTracker.addChange('insertedTable',[table]);var tbody=document.createElement('tbody');var firstCol=null;for(var i=0;i<rows;i++){var tr=document.createElement('tr');for(var j=0;j<cols;j++){var td=document.createElement('td');if(i===0){dfx.setStyle(td,'width','100px');}
dfx.setHtml(td,'&nbsp;');tr.appendChild(td);if(firstCol===null){firstCol=td;}}
tbody.appendChild(tr);}
table.appendChild(tbody);var bookmark=this.viper.createBookmark();var splitInfo=this.viper.splitNodeAtBookmark('p',bookmark);if(splitInfo){if(splitInfo.prevNode){dfx.insertAfter(splitInfo.prevNode,table);}else if(splitInfo.nextNode){dfx.insertBefore(splitInfo.nextNode,table);if(this.viper.elementIsEmpty(splitInfo.nextNode)===true){dfx.remove(splitInfo.nextNode);}}}
var width=parseInt(dfx.getComputedStyle(table,'width'));if(!width){dfx.setStyle(table,'width','300px');}
var col=dfx.getTag('td',table)[0];var rightWidth=parseInt(dfx.getComputedStyle(col,'border-right-width'));var bottomWidth=parseInt(dfx.getComputedStyle(col,'border-bottom-width'));if(bottomWidth===0||rightWidth===0||isNaN(bottomWidth)===true||isNaN(rightWidth)===true){dfx.attr(table,'border',1);}
dfx.setStyle(table,'display','');this._nodesUpdated();if(firstCol){var range=this.viper.getCurrentRange();range.setStart(firstCol.firstChild,0);range.collapse(true);ViperSelection.addRange(range);}},handleTab:function(e)
{if(this.activeCell!==null){var cell=null;if(e.shiftKey!==true){cell=this.getNextCell(this.activeCell);}else{cell=this.getPrevCell(this.activeCell);}
this.moveCaretToCell(cell);return true;}},isPluginElement:function(elem)
{if(dfx.hasClass(elem,'ViperTableEditorPlugin-cellButton')!==true){if(dfx.isChildOf(elem,self._subToolbar)===false){return false;}}
return true;},_nodesUpdated:function(noFocus)
{this.viper.fireNodesChanged('ViperTableEditorPlugin:update',noFocus);},_setupSubToolbar:function()
{var subToolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('TableEditor');var c='ViperTableEditor-stb';var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(toolbar,contents);this._subToolbar=toolbar;var self=this;this.includeWidgets(['Button','RadioButton','SpinButton','TextField','Select'],function(){var changePropTypeBtn=self.createWidget(c+'-switchToolbar','Button');changePropTypeBtn.setName('Table Properties');changePropTypeBtn.setButtonIconClassName(c+'-switch');changePropTypeBtn.create(function(changePropTypeBtnEl){dfx.addClass(changePropTypeBtn.domElem,c+'-tableProperties');changePropTypeBtn.setMinWidth('110px');dfx.getClass(c+'-right',toolbar)[0].appendChild(changePropTypeBtnEl);});self._currentTablePropView='cell';changePropTypeBtn.addClickEvent(function(){if(self._currentTablePropView==='table'){changePropTypeBtn.setName('Table Properties');dfx.removeClass(changePropTypeBtn.domElem,c+'-cellProperties');dfx.addClass(changePropTypeBtn.domElem,c+'-tableProperties');self._showProperties('cell');}else{dfx.removeClass(changePropTypeBtn.domElem,c+'-tableProperties');dfx.addClass(changePropTypeBtn.domElem,c+'-cellProperties');changePropTypeBtn.setName('Cell Properties');self._showProperties('table');}});self._setupTableProperties(function(tablePropertiesEl){self._setupCellProperties(function(cellPropertiesEl){dfx.getClass(c+'-left',toolbar)[0].appendChild(tablePropertiesEl);dfx.getClass(c+'-left',toolbar)[0].appendChild(cellPropertiesEl);self._showProperties(self._currentTablePropView);subToolbarPlugin.showToolbar('TableEditor');});});});},_setupTableProperties:function(callback)
{var props={tableBorder:'Table Border',cellPadding:'Cell Padding',cellSpacing:'Cell Spacing'};this._settingsWidgets.table={};var self=this;var c='ViperTableEditor-stb';var div=document.createElement('div');dfx.addClass(div,c+'-propertiesWrapper');dfx.addClass(div,c+'-tableProps');var content='';content+='<div class="'+c+'-propContainer" id="'+c+'-propContainer-tableWidth"><label>Table Width</label>';content+='<div class="'+c+'-propWrapper '+c+'-tableWidth-wrapper"></div></div>';dfx.foreach(props,function(propid){content+='<div class="'+c+'-propContainer" id="'+c+'-propContainer-'+propid+'"><label>'+props[propid]+'</label>';content+='<div class="'+c+'-propWrapper '+c+'-'+propid+'-wrapper"></div></div>';});dfx.setHtml(div,content);var tableWidth=this.createWidget(c+'-tableWidth','TextField');var tableWidthType=this.createWidget(c+'-tableWidthType','Select');tableWidthType.addItems({px:'px',pc:'%'});tableWidthType.setSelectedEventValueType('value');tableWidthType.addItemSelectedEvent(function(type){self._changeTableSettingValue('widthType',type);});this._settingsWidgets.table.widthType=tableWidthType;this._settingsWidgets.table.width=tableWidth;tableWidth.create(function(tableWidthEl){tableWidth.setWidth(25);var t=null;dfx.addEvent(tableWidth.domEl,'keyup',function(){if(t){clearTimeout(t);t=null;}
t=setTimeout(function(){var width=parseInt(tableWidth.getValue());self._changeTableSettingValue('width',width);},500);});self._makeOptionEditable(tableWidth.domEl);var parent=dfx.getClass(c+'-tableWidth-wrapper',div)[0];parent.appendChild(tableWidthEl);tableWidthType.create(function(tableWidthTypeEl){dfx.insertAfter(parent,tableWidthTypeEl);});});dfx.foreach(props,function(propid){(function(propid){var widgetid=c+'-'+propid;var widget=self.createWidget(widgetid,'SpinButton',0);widget.setInitialValue(0);widget.allowEmptyValue(true);widget.create(function(el){self._makeOptionEditable(widget.domEl);dfx.getClass(widgetid+'-wrapper',div)[0].appendChild(el);});widget.addOnChangeEvent(function(val){self._changeTableSettingValue(propid,val);});self._settingsWidgets.table[propid]=widget;})(propid);});callback.call(this,div);},_makeOptionEditable:function(elem)
{},_setupCellProperties:function(callback)
{this._settingsWidgets.cell={};var self=this;var c='ViperTableEditor-stb';var div=document.createElement('div');dfx.addClass(div,c+'-propertiesWrapper');dfx.addClass(div,c+'-cellProps');var content='<div class="'+c+'-propContainer" id="'+c+'-propContainer-colWidth"><label>Column Width</label>';content+='<div class="'+c+'-propWrapper '+c+'-columnWidth-wrapper"></div>';content+='<div class="'+c+'-propWrapper '+c+'-columnWidthSel-wrapper"></div></div>';content+='<div class="'+c+'-optionListWrapper"></div>';dfx.setHtml(div,content);var colWidthText=this.createWidget(c+'-colWidth-txt','TextField');colWidthText.create(function(colWidthTextEl){var t=null;dfx.addEvent(colWidthText.domEl,'keyup',function(){if(t){clearTimeout(t);t=null;}
t=setTimeout(function(){var width=parseInt(colWidthText.getValue());self._changeSettingValue('width',width);},500);});self._makeOptionEditable(colWidthText.domEl);colWidthText.setWidth(25);dfx.getClass(c+'-columnWidth-wrapper',div)[0].appendChild(colWidthTextEl);});var colWidthSel=this.createWidget(c+'-colWidth-sel','Select');colWidthSel.addItems({px:'px',pc:'%'});colWidthSel.setSelectedEventValueType('value');colWidthSel.addItemSelectedEvent(function(type){self._changeSettingValue('widthType',type);});this._settingsWidgets.cell.widthType=colWidthSel;this._settingsWidgets.cell.width=colWidthText;colWidthSel.create(function(colWidthSelEl){dfx.getClass(c+'-columnWidthSel-wrapper',div)[0].appendChild(colWidthSelEl);});var optsList=this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin').createOptionsList('Appearance');dfx.addClass(optsList.main,c+'-optionList');(dfx.getClass(c+'-optionListWrapper',div)[0]).appendChild(optsList.main);this._createOptionList(optsList.contentEl);callback.call(this,div);},_createOptionList:function(parent)
{var div=null;var self=this;var opts={tableHeader:'Table Header',noTextWrap:'No Text Wrap'};div=document.createElement('div');var label=document.createElement('label');parent.appendChild(div);dfx.setHtml(label,'Align');div.appendChild(label);dfx.addClass(div,'ViperTableEditor-stb-optItem');div.id='ViperTableEditor-opts-vert';dfx.addClass(div,'first');var alignType={top:'Align to top',middle:'Align to middle',bottom:'Align to bottom'};this._settingsWidgets.cell.valign=div;dfx.foreach(alignType,function(i){var alignDiv=document.createElement('div');dfx.attr(alignDiv,'title',alignType[i]);dfx.addClass(alignDiv,'ViperTableEditor-stb-align');dfx.addClass(alignDiv,'ViperTableEditor-stb-align-'+i);(function(el,alignType){dfx.addEvent(el,'click',function(){dfx.removeClass(dfx.getClass('ViperTableEditor-stb-align',el.parentNode),'active');dfx.addClass(el,'active');self._changeSettingValue('valign',alignType);});})(alignDiv,i);div.appendChild(alignDiv);});dfx.foreach(opts,function(i){div=document.createElement('div');var label=document.createElement('label');parent.appendChild(div);dfx.setHtml(label,opts[i]);div.appendChild(label);dfx.addClass(div,'ViperTableEditor-stb-optItem');div.id='ViperTableEditor-opts-'+i;var radioBtn=self.createWidget(null,'RadioButton',null,false);self._settingsWidgets.cell[i]=radioBtn;radioBtn.create(function(radioBtnEl){dfx.attr(label,'for',radioBtn.id);div.appendChild(radioBtnEl);radioBtn._addEvents();});(function(radioBtnWidget,type){radioBtnWidget.addCheckedEvent(function(checked){self._changeSettingValue(type,checked);});})(radioBtn,i);});if(div){dfx.addClass(div,'last');}},_showProperties:function(type)
{if(!this._subToolbar){return;}
var c='ViperTableEditor-stb';dfx.removeClass(dfx.getClass(c+'-propertiesWrapper',this._subToolbar),'show');dfx.addClass(dfx.getClass(c+'-'+type+'Props',this._subToolbar)[0],'show');this._currentTablePropView=type;this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin').showToolbar('TableEditor');},_changeTableSettingValue:function(type,value)
{if(!this.activeCell||!type){return;}
var table=this.getCellTable(this.activeCell);if(!table){return;}
var changed=false;switch(type){case'tableBorder':if(parseInt(dfx.attr(table,'border'))!==parseInt(value)){dfx.attr(table,'border',value);changed=true;}
break;case'width':if(!value){value='';}else{var widthType=this._settingsWidgets.table.widthType.getValue();if(widthType==='pc'){value+='%';}else{value+='px';}}
if(dfx.setStyle(table,'width')!==value){dfx.setStyle(table,'width',value);changed=true;}
break;case'widthType':var width=parseInt(dfx.getStyle(table,'width'));if(width){if(value==='pc'){value='%';}
if(dfx.setStyle(table,'width')!==(width+value)){dfx.setStyle(table,'width',width+value);changed=true;}}
break;default:value=parseInt(value);if(isNaN(value)===true){value='';}
var currVal=parseInt(dfx.attr(table,type));if(isNaN(currVal)===true){currVal='';}
if(currVal!==value){dfx.attr(table,type,value);changed=true;}
break;}
if(changed===true){this._updatecellButtonPositions(this.activeCell);this._nodesUpdated(true);}},_changeSettingValue:function(type,value)
{if(!this.activeCell||!type){return;}
var changed=false;if(type==='tableHeader'){var toType='th';if(value!==true){toType='td';}
if(dfx.isTag(this.activeCell,toType)===true){return;}
var newEl=document.createElement(toType);var clone=this.activeCell.cloneNode(true);while(clone.firstChild){newEl.appendChild(clone.firstChild);}
var whiteSpace=dfx.getStyle(clone,'white-space');if(whiteSpace==='nowrap'){dfx.setStyle(newEl,'white-space','nowrap');}
var valign=dfx.getStyle(clone,'vertical-align');if(valign){dfx.setStyle(newEl,'vertical-align',valign);}
var width=dfx.getStyle(clone,'width');if(width){dfx.setStyle(newEl,'width',width);}
dfx.insertBefore(this.activeCell,newEl);dfx.remove(this.activeCell);this.setActiveCell(newEl);changed=true;this.moveCaretToCell(this.activeCell);}else if(type==='noTextWrap'){var style='normal';if(value===true){style='nowrap';}
if(dfx.getStyle(this.activeCell,'white-space')!==style){dfx.setStyle(this.activeCell,'white-space',style);changed=true;this.moveCaretToCell(this.activeCell);}}else if(type==='width'){if(!value){value='';}else{var widthType=this._settingsWidgets.cell.widthType.getValue();if(widthType==='pc'){value+='%';}else{value+='px';}}
if(dfx.getStyle(this.activeCell,'width')!==value){dfx.setStyle(this.activeCell,'width',value);changed=true;}}else if(type==='widthType'){var width=parseInt(dfx.getStyle(this.activeCell,'width'));if(width){if(value==='pc'){value='%';}
if(dfx.getStyle(this.activeCell,'width')!==(width+value)){dfx.setStyle(this.activeCell,'width',width+value);changed=true;}}}else if(type==='valign'){if(dfx.getStyle(this.activeCell,'vertical-align')!==value){dfx.setStyle(this.activeCell,'vertical-align',value);changed=true;}}
if(changed===true){this._updatecellButtonPositions(this.activeCell);this._nodesUpdated(true);}},updateSettings:function(cell)
{if(!cell){cell=this.activeCell;}
if(!cell){return;}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.tableHeader){if(dfx.isTag(cell,'th')===true){this._settingsWidgets.cell.tableHeader.check();}else{this._settingsWidgets.cell.tableHeader.uncheck();}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.noTextWrap){if(dfx.getStyle(cell,'white-space')==='nowrap'){this._settingsWidgets.cell.noTextWrap.check();}else{this._settingsWidgets.cell.noTextWrap.uncheck();}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.valign){var val=dfx.getStyle(cell,'vertical-align');var btns=dfx.getClass('ViperTableEditor-stb-align',this._settingsWidgets.cell.valign);dfx.removeClass(btns,'active');if(val){dfx.addClass(dfx.getClass('ViperTableEditor-stb-align-'+val,this._settingsWidgets.cell.valign),'active');}}
if(this._settingsWidgets.cell&&this._settingsWidgets.cell.width){var widthStyle=cell.style.width;var width=parseInt(widthStyle);this._settingsWidgets.cell.width.setValue(width);var widthType='px';if(this._settingsWidgets.cell.widthType){if(widthStyle.indexOf('%')>0){widthType='pc';}}
this._settingsWidgets.cell.widthType.setValue(widthType,true);}
var table=this.getCellTable(cell);if(this._settingsWidgets.table&&table){if(this._settingsWidgets.table.tableBorder){var val=NaN;if(dfx.attr(table,'border')!=='undefined'){val=parseInt(dfx.attr(table,'border'));}
this._settingsWidgets.table.tableBorder.setValue(val);}
if(this._settingsWidgets.table.cellPadding){var val=NaN;if(dfx.attr(table,'cellpadding')!=='undefined'){val=parseInt(dfx.attr(table,'cellpadding'));}
this._settingsWidgets.table.cellPadding.setValue(val);}
if(this._settingsWidgets.table.cellSpacing){var val=NaN;if(dfx.attr(table,'cellspacing')!=='undefined'){val=parseInt(dfx.attr(table,'cellspacing'));}
this._settingsWidgets.table.cellSpacing.setValue(val);}
if(this._settingsWidgets.table.width){var widthStyle=table.style.width;var width=parseInt(widthStyle);this._settingsWidgets.table.width.setValue(width);var widthType='px';if(this._settingsWidgets.table.widthType){if(widthStyle.indexOf('%')>0){widthType='pc';}}
this._settingsWidgets.table.widthType.setValue(widthType,true);}}}};dfx.noInclusionInherits('ViperTableEditorPlugin','ViperPlugin',true);function ViperToolbarPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbar=null;this.buttons={};this.buttonTitles={};this.buttonEvents={};this.pluginButtons={};this.createToolbar();var self=this;this.viper.ViperPluginManager.registerCallback('pluginRemoved','toolbarPluginRemoved',function(pluginName){if(self.pluginButtons[pluginName]){var pln=self.pluginButtons[pluginName].length;for(var i=0;i<pln;i++){var buttonName=self.pluginButtons[pluginName][i];dfx.remove(self.buttons[buttonName]);}}});this.viper.registerCallback('viperDisabled','ViperToolbarPlugin',function(){});this.viper.registerCallback('viperEnabled','ViperToolbarPlugin',function(){});}
ViperToolbarPlugin.prototype={setSettings:function(settings)
{if(!settings){return;}
if(settings.parent){var parent=settings.parent;if(typeof parent==='string'){parent=dfx.getId(settings.parent);}
this.setParentElement(parent);}},createToolbar:function()
{if(this.toolbar===null){var id=this.viper.id+'-ViperToolbarPlugin';this.toolbar=dfx.getId(id);if(!this.toolbar){this.toolbar=Viper.document.createElement('div');this.toolbar.id=id;dfx.setUnselectable(this.toolbar,true);dfx.addClass(this.toolbar,'ViperToolbarPlugin');var span=Viper.document.createElement('span');this.toolbar.appendChild(span);this._append();}}else if(dfx.getId(this.toolbar.id)){this._append();for(var name in this.buttons){dfx.addEvent(this.buttons[name],'mousedown',this.buttonEvents[name]);}}},setParentElement:function(parent)
{dfx.setStyle(this.toolbar,'position','absolute');dfx.setStyle(this.toolbar,'top','0px');parent.appendChild(this.toolbar);},_append:function()
{if(dfx.getId('EditingContents')){dfx.insertBefore(dfx.getId('EditingContents'),this.toolbar);}else{Viper.document.body.appendChild(this.toolbar);}},_setBgPosY:function(buttonEl,pos)
{var bgPosY=dfx.getStyle(buttonEl,'background-position-y');var bgPos=dfx.getStyle(buttonEl,'background-position');if(bgPosY){dfx.setStyle(buttonEl,'background-position-y',(pos+'px'));}else if(bgPos){bgPos=bgPos.split(' ');bgPos[1]=pos+'px';dfx.setStyle(buttonEl,'background-position',bgPos.join(' '));}},setButtonActive:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.addClass(buttonEl,'active');dfx.removeClass(buttonEl,'disabled');this._setBgPosY(buttonEl,-38);if(this.buttonTitles[button]){this.buttons[button].title=this.buttonTitles[button][1];}}},setButtonInactive:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.removeClass(buttonEl,'active');dfx.removeClass(buttonEl,'disabled');this._setBgPosY(buttonEl,0);if(this.buttonTitles[button]){this.buttons[button].title=this.buttonTitles[button][0];}}},setButtonDisabled:function(button)
{if(this.buttons[button]){var buttonEl=this.buttons[button];dfx.addClass(buttonEl,'disabled');dfx.removeClass(buttonEl,'active');if(this.buttonTitles[button]){this.buttons[button].title='';}}},getIconURL:function(plugin,buttonName)
{var url=this.viper.ViperPluginManager.getPluginStylesURL(plugin)+'/'+buttonName+'.png';return url;},addButton:function(plugin,name,title,actionFn)
{var icon=Viper.document.createElement('img');dfx.setUnselectable(icon,true);icon.id='ViperToolbarPlugin-'+name;icon.src=this.getIconURL('ViperToolbarPlugin','transparent');icon.title=title;dfx.addClass(icon,'ViperToolbarPlugin-button');var iconUrl=this.getIconURL(plugin,name);dfx.addClass(icon,name);var self=this;dfx.hover(icon,function(){self._setBgPosY(icon,-19);},function(){if(dfx.hasClass(icon,'active')===true){self._setBgPosY(icon,-38);}else{self._setBgPosY(icon,0);}});this.buttonEvents[name]=actionFn;dfx.addEvent(icon,'mousedown',function(e){if(dfx.hasClass(icon,'disabled')===false&&self.viper.isEnabled()!==false){self.viper.fireCallbacks('toolbarButtonClicked');actionFn(e);dfx.preventDefault(e);return false;}});if(!this.pluginButtons[plugin]){this.pluginButtons[plugin]=[];}
this.pluginButtons[plugin].push(name);this.buttons[name]=icon;var wrapper=Viper.document.createElement('span');wrapper.appendChild(icon);this.toolbar.firstChild.appendChild(wrapper);this.buttonTitles[name]=[title,title];return wrapper;},setButtonShortcut:function(plugin,buttonName,keys,fn,data)
{var self=this;this.viper.ViperPluginManager.addKeyPressListener(keys,this,function(e,evtData){self.viper.fireCallbacks('toolbarButtonClicked');return plugin[fn].call(plugin,e,evtData);},data);},setActiveButtonTitle:function(buttonName,title)
{this.buttonTitles[name][1]=title;},remove:function()
{dfx.remove(this.toolbar);},isPluginElement:function(element)
{if(element!==this.toolbar&&dfx.isChildOf(element,this.toolbar)===false){return false;}
return true;}};dfx.noInclusionInherits('ViperToolbarPlugin','ViperPlugin',true);function ViperTrackChangesPlugin(viper)
{ViperPlugin.call(this,viper);this.toolbarPlugin=null;this.subToolbarPlugin=null;this.optionCheckboxes={};this._barActive=false;this._newCommentid=null;this._initialising=false;this.viewSettings={finalMode:{},originalMode:{}};}
ViperTrackChangesPlugin.prototype={start:function()
{var self=this;this.toolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperToolbarPlugin');this.toolbarPlugin.addButton('TrackChanges','track-changes','Track Changes',function(){if(!self.subToolbarPlugin){self._setupSubToolbar(function(){self.toggleTrackChanges();});}else{self.toggleTrackChanges();}});if(ViperChangeTracker.isTracking()===true){this._setupSubToolbar(function(){if(ViperChangeTracker.isTracking()===true){self._barActive=true;self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});}
this.viper.registerCallback('ViperChangeTracker:tracking','ViperTrackChangesPlugin',function(isTracking){if(isTracking===true){self._setupSubToolbar(function(){if(ViperChangeTracker.isTracking()===true){self._barActive=true;self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});}});this.viper.registerCallback('ViperSubToolbar:hideToolbar','ViperTrackChangesPlugin',function(barid){if(barid!=='TrackChanges'&&self._barActive===true&&ViperChangeTracker.isTracking()===true){self.subToolbarPlugin.showToolbar('TrackChanges');self.toolbarPlugin.setButtonActive('track-changes');}});ViperChangeTracker.addChangeType('viperComment','Comment','comment');ViperChangeTracker.setRejectCallback('viperComment',function(clone,node){while(node.firstChild){dfx.insertBefore(node,node.firstChild);}
dfx.remove(node);});ViperChangeTracker.setDescriptionCallback('viperComment',function(node,ctnType,changeid){var div=Viper.document.createElement('div');dfx.addClass(div,'viperCommentDiv');div.setAttribute('changeid',changeid);div.setAttribute('id','viperComment-'+changeid);var comment=ViperChangeTracker._comments[changeid]||'&nbsp;';dfx.setHtml(div,comment);dfx.addEvent(div,'mousedown',function(){self.viper.setSubElementState(div,true);dfx.removeEvent(div,'mouseup.viperSubElem');dfx.addEvent(div,'mouseup.viperSubElem',function(e){setTimeout(function(){self.viper.mouseUp(e);},200);});var parent=div.parentNode.parentNode.parentNode;dfx.addClass(parent,'active');});if(self._newCommentid===changeid){self.viper.registerCallback('ViperChangeTracker:infoBoxAdded','ViperTrackChangesPlugin',function(chid){if(chid!==changeid){return;}
var markerElem=ViperChangeTracker.getMarker(changeid);if(markerElem){dfx.trigger(markerElem,'click');}
self.viper.setSubElementState(div,true);div.focus();var parent=div.parentNode.parentNode.parentNode;dfx.addClass(parent,'active');var range=self.viper.getCurrentRange();range.setStart(div.firstChild,0);range.collapse(true);self.viper.removeCallback('ViperChangeTracker:infoBoxAdded','ViperTrackChangesPlugin');});self._newCommentid=null;}
return div;});this.viper.registerCallback('subElementDisabled','ViperTrackChangesPlugin',function(elem){if(elem&&elem.parentNode&&elem.parentNode.parentNode){var parent=elem.parentNode.parentNode.parentNode;dfx.removeClass(parent,'active');}});},toggleTrackChanges:function()
{this._barActive=this.subToolbarPlugin.toggleToolbar('TrackChanges');if(this._barActive===true){this.toolbarPlugin.setButtonActive('track-changes');}else{this.toolbarPlugin.setButtonInactive('track-changes');}
if(ViperChangeTracker.isTracking()===false&&ViperChangeTracker.hasChanges()===false){ViperChangeTracker.enableChangeTracking();}},addComment:function()
{this.viper.focus();var info=ViperUndoManager.createNodeChangeInfo(this.viper.element);var bookmark=this.viper.createBookmark();var elements=dfx.getElementsBetween(bookmark.start,bookmark.end);var eln=elements.length;var changeid=ViperChangeTracker.addChange('viperComment');this._newCommentid=changeid;if(eln===0){var el=Viper.document.createElement('span');dfx.insertBefore(bookmark.start,el);ViperChangeTracker.addNodeToChange(changeid,el);}else{for(var i=0;i<eln;i++){if(ViperChangeTracker.getCTNode(elements[i],'viperComment')===null){this.viper._wrapElement(elements[i],'span',function(newElem){ViperChangeTracker.addNodeToChange(changeid,newElem);});}}}
this.viper.selectBookmark(bookmark);this.viper.fireNodesChanged('ViperTrackChangesPlugin:update');},_setupSubToolbar:function(callback)
{this._initialising=true;ViperChangeTracker.setActionDisplayState('format',true);ViperChangeTracker.setActionDisplayState('comment',true);var subToolbarPlugin=this.viper.ViperPluginManager.getPlugin('ViperSubToolbarPlugin');if(!subToolbarPlugin){return;}
var toolbar=subToolbarPlugin.createToolBar('TrackChanges');var c='ViperTrackChanges-stb';var contents='<div class="'+c+'-left"></div>';contents+='<div class="'+c+'-mid"></div>';contents+='<div class="'+c+'-right"></div>';dfx.setHtml(toolbar,contents);var self=this;this.includeWidgets(['Button','RadioButton'],function(){var switchToOriginal=self.createWidget('ViperTrackChanges-switchMode','Button');switchToOriginal.setName('Switch to Original');switchToOriginal.setButtonIconClassName(c+'-switch');switchToOriginal.create(function(el){switchToOriginal.setMinWidth('120px');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');(dfx.getClass(c+'-left',toolbar)[0]).appendChild(el);});switchToOriginal.addClickEvent(function(){if(ViperChangeTracker.getCurrentMode()==='final'){ViperChangeTracker.activateOriginalMode();switchToOriginal.setName('Switch to Final');dfx.removeClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-final');self.changeViewSettings('original');}else{ViperChangeTracker.activateFinalMode();switchToOriginal.setName('Switch to Original');dfx.removeClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-final');dfx.addClass(switchToOriginal.domElem,'ViperTrackChanges-switchMode-original');self.changeViewSettings('final');}});var addComment=self.createWidget('ViperTrackChanges-addComment','Button');addComment.setName('Add Comment');addComment.setButtonIconClassName(c+'-comment');addComment.create(function(el){addComment.setMinWidth('105px');(dfx.getClass(c+'-right',toolbar)[0]).appendChild(el);});addComment.addClickEvent(function(){if(addComment.buttonParts.content){addComment.buttonParts.content.blur();}
self.addComment();});var toggleTracking=self.createWidget('ViperTrackChanges-toggleTracking','Button','ButtonWidgetType-black');toggleTracking.setName('Disable Tracking');toggleTracking.create(function(el){toggleTracking.setMinWidth('101px');dfx.addClass(el,'ViperTrackChanges-toggleTracking-disable');(dfx.getClass(c+'-right',toolbar)[0]).appendChild(el);});toggleTracking.addClickEvent(function(){if(ViperChangeTracker.isTracking()===true){toggleTracking.setName('Enable Tracking');dfx.removeClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-disable');dfx.addClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-enable');ViperChangeTracker.disableChangeTracking();addComment.disable();}else{toggleTracking.setName('Disable Tracking');dfx.removeClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-enable');dfx.addClass(toggleTracking.domElem,'ViperTrackChanges-toggleTracking-disable');ViperChangeTracker.enableChangeTracking();addComment.enable();}});var optsList=subToolbarPlugin.createOptionsList('Display');(dfx.getClass(c+'-mid',toolbar)[0]).appendChild(optsList.main);self._createOptionList(optsList.contentEl);self.changeViewSettings('final');this._initialising=false;self.subToolbarPlugin=subToolbarPlugin;callback.call(self,subToolbarPlugin);return;});},changeViewSettings:function(mode)
{mode+='Mode';if(!this.viewSettings[mode]){return;}
var self=this;dfx.foreach(this.optionCheckboxes,function(i){if(self.viewSettings[mode][i]){self.optionCheckboxes[i].check();}else{self.optionCheckboxes[i].uncheck();}});},updateViewSetting:function(type,display)
{var mode=ViperChangeTracker.getCurrentMode()+'Mode';this.viewSettings[mode][type]=display;},_createOptionList:function(parent)
{var div=null;var self=this;var opts=ViperChangeTracker.getActionTypes();var displayStates=ViperChangeTracker.getActionDisplayStates();dfx.foreach(opts,function(i){self.viewSettings.finalMode[i]=displayStates[i];self.viewSettings.originalMode[i]=displayStates[i];div=Viper.document.createElement('div');var label=Viper.document.createElement('label');parent.appendChild(div);dfx.setHtml(label,opts[i]);div.appendChild(label);dfx.addClass(div,'ViperTrackChanges-stb-optItem');div.id='ViperTrackChanges-opts-'+i;var radioBtn=self.createWidget(null,'RadioButton',null,displayStates[i]);self.optionCheckboxes[i]=radioBtn;radioBtn.create(function(radioBtnEl){dfx.attr(label,'for',radioBtn.id);div.appendChild(radioBtnEl);radioBtn._addEvents();});(function(radioBtnWidget,type){radioBtnWidget.addCheckedEvent(function(checked){self.toggleChangeTypeDisplayState(type,checked);});})(radioBtn,i);if(i==='Inserts'){dfx.addClass(div,'first');}});self.viewSettings.originalMode.insert=true;self.viewSettings.originalMode.remove=false;if(div){dfx.addClass(div,'last');}},toggleChangeTypeDisplayState:function(type,display)
{this.updateViewSetting(type,display);ViperChangeTracker.setActionDisplayState(type,display,!this._initialising,true);}};dfx.noInclusionInherits('ViperTrackChangesPlugin','ViperPlugin',true);var Help=new function()
{var _apiURL=null;var _searchURL=null;var _systemInfos={};var _currentSystem=null;var _iframe=null;var _loadPageOpts=null;var _pageLoadedCallback=null;this.init=function(){var elem=dfx.getId('Help-dialog');if(!elem){return;}
var self=this;this._subTitleDiv=dfx.getId('Help-dialogSubTitle');_searchURL='/__api/raw/Help/searchDocs?_api_token='+dfx.getId('__api_token').value+'&';_apiURL='/__api/raw/Help/getPage?_api_token='+dfx.getId('__api_token').value+'&';var navHeight=parseInt(dfx.getElementHeight(dfx.getClass('Help-controls',elem)[0]));var iframe=dfx.getId('Help-iframe');_iframe=iframe;dfx.addEvent(iframe,'load',function(){self.iframeLoaded();});var midElem=dfx.getClass('GUIDialog-middle',elem)[0];var initHeight=parseInt(dfx.getElementHeight(midElem));dfx.setStyle(iframe,'height',(initHeight-navHeight-27)+'px');GUI.getWidget('Help-dialog').addDialogResizedCallback(function(ui,contentSize){dfx.setStyle(iframe,'height',(contentSize.height-navHeight-27)+'px');});GUI.addRequestCompleteCallback(function(){Help.pointer.updateLinkIconStates(dfx.getIframeDocument(_iframe));});var searchBox=GUI.getWidget('Help-search');searchBox.addKeyPressCallback(function(value,e){if(e.keyCode===13){value=dfx.trim(value);if(value.length===0){return;}
self.search(value);dfx.preventDefault(e);return false;}});var timeout=null;var prevTemplate=GUI.getCurrentTemplate();GUI.addTemplateAddedCallback(function(system,template){if(prevTemplate.system===system&&prevTemplate.template===template){return;}
prevTemplate.system=system;prevTemplate.template=template;_updateShowMeLinks(template);clearTimeout(timeout);timeout=setTimeout(function(){var pageType=_getCurrentPageType();if(pageType==='templateIndexPage'||pageType==='pageNotFound'){self.showMessage('screenChanged');}
Help.pointer.updateLinkIconStates(dfx.getIframeDocument(_iframe));},100);},null,{system:'Help',template:'Help'});GUI.addTemplateRemovedCallback(function(system,template){if(prevTemplate.system===system&&prevTemplate.template===template){return;}
clearTimeout(timeout);timeout=setTimeout(function(){var pageType=_getCurrentPageType();if(pageType==='templateIndexPage'||pageType==='pageNotFound'){self.showMessage('screenChanged');}},100);},null,{system:'Help',template:'Help'});};this.refresh=function(pageid,callback){_pageLoadedCallback=callback;if(!pageid){this.loadIndexPage();}else{this.loadPage(pageid);}};this.loadGlossaryPage=function(template){var pageid=null;if(!template||typeof template!=='string'){template=GUI.getCurrentTemplate();pageid=template.system+'-'+template.template;}else{pageid=template;}
pageid+='-glossary-index.html';this.loadPage(pageid);};this.loadIndexPage=function(template){var pageid=null;if(!template||typeof template!=='string'){template=GUI.getCurrentTemplate();pageid=template.system+'-'+template.template;}else{pageid=template;}
pageid+='-index.html';this.loadPage(pageid);};this.loadGeneralPage=function(){this.loadPage('general.html');};this.loadPage=function(pageid,options){if(this.isPickerActive()===true){return false;}
var helpIframe=dfx.getId('Help-iframe');_loadPageOpts=options;dfx.attr(helpIframe,'src',_apiURL+'pageid='+escape(pageid)+'&templateLineage='+dfx.jsonEncode(GUI.getLoadedTemplates()));};this.iframeLoaded=function(){var self=this;dfx.removeEvent([document,dfx.getIframeDocument(_iframe)],'click.Help-dialog');dfx.addEvent([document,dfx.getIframeDocument(_iframe)],'click.Help-dialog',function(e){var target=dfx.getMouseEventTarget(e);var menuButton=dfx.getClass('Help-control-button menu',dfx.getId('Help-dialog'))[0];if(target!==menuButton){self.closeMenu();}});_handlePageLoadOptions();if(_pageLoadedCallback){_pageLoadedCallback.call(self);_pageLoadedCallback=null;}
self.hideMessages();};_getCurrentPageType=function(){var iframeDoc=dfx.getIframeDocument(_iframe);if(!iframeDoc||!iframeDoc.body){return null;}
var classNames=iframeDoc.body.className.split(' ');if(classNames.length<2||classNames[0]!=='Help-iframe'){return;}
return classNames[1];};_handlePageLoadOptions=function(){if(!_loadPageOpts){return;}
var iframeDoc=dfx.getIframeDocument(_iframe);if(_loadPageOpts.searchedWords){var sln=_loadPageOpts.searchedWords.length;for(var i=0;i<sln;i++){var word=_loadPageOpts.searchedWords[i];var textNodes=dfx.getTextNodes(iframeDoc.body);var tln=textNodes.length;var regExp=new RegExp(word,'gi');for(var j=0;j<tln;j++){if(dfx.isTag(textNodes[j].parentNode,'script')===true){continue;}
textNodes[j].nodeValue=textNodes[j].nodeValue.replace(regExp,'__REPLACE_'+i+'__$&__');}}
var c=1;var html=dfx.getHtml(iframeDoc.body);for(var i=0;i<sln;i++){if(c>7){c=1;}
var word=_loadPageOpts.searchedWords[i];var regExp=new RegExp('__REPLACE_'+i+'__('+word+')__','ig');html=html.replace(regExp,'<span class="Help-searchTerm-'+c+'">$1</span>');c++;}
dfx.setHtml(iframeDoc.body,html);}
_loadPageOpts=null;};this.search=function(value){var helpIframe=dfx.getId('Help-iframe');dfx.attr(helpIframe,'src',_searchURL+'searchString='+escape(value));};this.getSearchResults=function(searchString,startOffset){var params={searchString:searchString,startOffset:startOffset};GUI.sendRequest('Help','searchDocs',params,function(content){var wrapper=document.createElement('div');dfx.setHtml(wrapper,content);var iframeDoc=dfx.getIframeDocument(_iframe);var searchResultsList=dfx.getClass('Help-searchResults-list',iframeDoc)[0];var currentMoreLink=dfx.getClass('Help-searchResults-moreLink',iframeDoc)[0];dfx.insertAfter(searchResultsList.lastChild,wrapper.firstChild.childNodes);if(wrapper.childNodes[1]){dfx.insertAfter(currentMoreLink,wrapper.childNodes[1]);}
dfx.remove(currentMoreLink);},'raw');};this.back=function(){if(this.isPickerActive()===true){return false;}
history.back(1);};this.forward=function(){if(this.isPickerActive()===true){return false;}
history.forward(1);};this.home=function(){this.loadIndexPage();};this.toggleMenu=function(){var menuButton=dfx.getClass('Help-control-button menu',dfx.getId('Help-dialog'))[0];var menuElem=dfx.getClass('Help-systemsMenu',dfx.getId('Help-dialog'))[0];dfx.toggleClass([menuElem,menuButton],'active');};this.openMenu=function(){var menuElem=dfx.getClass('Help-systemsMenu',dfx.getId('Help-dialog'))[0];var menuButton=dfx.getClass('Help-control-button menu',dfx.getId('Help-dialog'))[0];dfx.addClass([menuElem,menuButton],'active');};this.closeMenu=function(){var menuElem=dfx.getClass('Help-systemsMenu',dfx.getId('Help-dialog'))[0];var menuButton=dfx.getClass('Help-control-button menu',dfx.getId('Help-dialog'))[0];if(menuElem&&menuButton){dfx.removeClass([menuElem,menuButton],'active');}};this.picker=function(showMessage){if(showMessage!==false){this.showMessage('pointer');}
var self=this;dfx.addEvent(document,'keypress.Help_finder',function(e){if(e.keyCode===27){dfx.removeEvent(document,'keypress.Help_finder');dfx.removeEvent(document,'mousedown.Help_finder');dfx.removeEvent(document,'mouseup.Help_finder');dfx.removeEvent(document,'click.Help_finder');self.hideMessages();}});dfx.addEvent(document,'mousedown.Help_finder',function(e){dfx.preventDefault(e);dfx.stopPropagation(e);var target=dfx.getMouseEventTarget(e);dfx.removeEvent(document,'keypress.Help_finder');var target=dfx.getMouseEventTarget(e);var parents=dfx.getParents(target);var parentEvents=_removeEvents(parents);var targetEvents=_removeEvents([target]);dfx.addEvent(document,'click.Help_finder',function(e){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'Help-message-close')===false){dfx.preventDefault(e);dfx.stopPropagation(e);}});dfx.addEvent(document,'mouseup.Help_finder',function(){setTimeout(function(){_addElemEvents(parentEvents);_addElemEvents(targetEvents);},150);dfx.removeEvent(document,'mouseup.Help_finder');});dfx.removeEvent(document,'mousedown.Help_finder');if(dfx.hasClass(target,'Help-message-close')===true){return true;}
var elemInfos=_getIds(parents);if(target.id){elemInfos.ids.unshift(target.id);}
if(target.className){elemInfos.classNames.unshift(target.className);}
var params={ids:dfx.jsonEncode(elemInfos.ids),classNames:dfx.jsonEncode(elemInfos.classNames)};GUI.sendRequest('Help','findArticleForElement',params,function(result){dfx.removeEvent(document,'click.Help_finder');var resultParts=result.split('|');if(resultParts.length!==3){self.showMessage('pointer-noInfo');self.picker(false);}else{var pageid=resultParts[0];Help.pointer.pointTo(resultParts[1],resultParts[2]);Help.loadPage(pageid);}},'raw');return false;});};this.isPickerActive=function(){var msgElem=dfx.getId('Help-dialog-msg-pointer-noInfo');if(msgElem&&dfx.hasClass(msgElem,'active')===true){return true;}
msgElem=dfx.getId('Help-dialog-msg-pointer');if(msgElem&&dfx.hasClass(msgElem,'active')===true){return true;}
return false;};var _removeEvents=function(elements){var events={elements:[],dfxEvents:[],browserEvents:[]};var eventTypes=['onmousedown','onmouseup','onclick','click'];var eventTypesCount=eventTypes.length;var ln=elements.length;for(var i=0;i<ln;i++){var element=elements[i];if(element.tagName.toLowerCase()==='body'){break;}
var es=null;if(element.tagName.toLowerCase()==='label'){var elem=dfx.getId(element.htmlFor);if(elem){es=dfxjQuery.data(dfx.getId(element.htmlFor),'events');if(es){events.elements.push(dfx.getId(element.htmlFor));events.dfxEvents.push(es);dfxjQuery.data(dfx.getId(element.htmlFor),'events',{});}}}else{var copiedEvents=null;var jqueryEvents=dfxjQuery.data(element,'events');if(jqueryEvents){copiedEvents=_copyEvents(jqueryEvents);dfx.removeEvent(element);}
var browserEvents={};for(var j=0;j<eventTypesCount;j++){var eventType=eventTypes[j];var eventStr=element[eventType];if(eventStr){browserEvents[eventType]=eventStr;element[eventType]='';}}
events.elements.push(element);events.dfxEvents.push(copiedEvents);events.browserEvents.push(browserEvents);}}
return events;};var _copyEvents=function(events){var copiedEvents=[];dfx.foreach(events,function(type){dfx.foreach(events[type],function(i){var event=events[type][i];copiedEvents.push(event);});});return copiedEvents;};var _addElemEvents=function(events){var ln=events.elements.length;for(var i=0;i<ln;i++){if(events.dfxEvents[i]){if(!events.dfxEvents[i]){continue;}
var jln=events.dfxEvents[i].length;for(var j=0;j<jln;j++){dfx.addEvent(events.elements[i],events.dfxEvents[i][j].type,events.dfxEvents[i][j].handler);}}
dfx.foreach(events.browserEvents[i],function(eventType){events.elements[i][eventType]=events.browserEvents[i][eventType];});}};var _getIds=function(elements){var elemInfos={ids:[],classNames:[]};var ln=elements.length;for(var i=0;i<ln;i++){if(elements[i].id){elemInfos.ids.push(elements[i].id);}
if(elements[i].className){elemInfos.classNames.push(elements[i].className);}}
return elemInfos;};this.glossary=function(){this.loadGlossaryPage();};this.general=function(){this.loadGeneralPage();};this.setSystems=function(systemInfos){_systemInfos=systemInfos;};this.setCurrentSystem=function(systemid){if(_currentSystem!==systemid){var dialogElem=dfx.getId('Help-dialog');dfx.addClass(dialogElem,'activeItem-'+systemid);dfx.setHtml(this._subTitleDiv,_systemInfos[systemid].title);_currentSystem=systemid;var selectedItem=dfx.getId('Help-dialog-sysMenuItem-'+systemid);if(selectedItem){var listItems=dfx.getTag('li',dfx.getClass('Help-systemsMenu',dialogElem));dfx.removeClass(listItems,'selected');dfx.addClass(selectedItem,'selected');}}};this.showMessage=function(msgid){var elemid='Help-dialog-msg-'+msgid;var msgElem=dfx.getId(elemid);if(msgElem){if(dfx.attr(dfx.getClass('Help-message',msgElem)[0],'iniframe')==='true'){var iframeDoc=dfx.getIframeDocument(_iframe);if(!iframeDoc.body||dfx.getId(elemid,iframeDoc)){return;}
var tmpDiv=iframeDoc.createElement('div');tmpDiv.id=msgElem.id;dfx.addClass(tmpDiv,'Help-iframe-msg');dfx.setHtml(tmpDiv,dfx.trim(dfx.getHtml(msgElem)));dfx.insertBefore(iframeDoc.body.firstChild,tmpDiv);_fadeInMessage(tmpDiv);}else{if(dfx.hasClass(msgElem,'visible')===true){dfxjQuery(msgElem).effect("bounce",{distance:10,times:3},300);}else{this.hideMessages();dfx.addClass(msgElem,'visible');}
dfx.addClass(dfx.getId('Help-overlay'),'visible');}}};this.hideMessages=function(inIframe){if(inIframe===true){var iframeDoc=dfx.getIframeDocument(_iframe);var msgElem=dfx.getClass('Help-iframe-msg',iframeDoc.body)[0];dfx.removeClass(msgElem,'visible');self._fadeOutMessage(msgElem,function(){dfx.remove(msgElem);});}else{dfx.removeClass(dfx.getClass('Help-dialog-msg',dfx.getId('Help-iframeWrapper')),'visible');dfx.removeClass(dfx.getId('Help-overlay'),'visible');}};_fadeInMessage=function(msgElem){dfx.setStyle(msgElem,'opacity','0');dfx.setStyle(msgElem,'display','block');dfx.setStyle(msgElem,'margin-top',-dfx.getElementHeight(msgElem));dfx.animate(msgElem,{marginTop:0,opacity:1},1000,function(){dfx.setStyle(msgElem,'display','block');dfx.setStyle(msgElem,'margin-top','10px');dfx.setStyle(msgElem,'opacity',1);});};_fadeOutMessage=function(msgElem,callback){dfx.animate(msgElem,{marginTop:(-dfx.getElementHeight(msgElem)),opacity:0},500,function(){dfx.setStyle(msgElem,'display','none');dfx.setStyle(msgElem,'margin-top','0px');dfx.setStyle(msgElem,'opacity',1);if(callback){callback.call(this,msgElem);}});};this.showMe=function(widgetid,template){var widget=GUI.getWidget(widgetid);if(!widget){return;}
var element=widget.showButton(template,5);if(element){this.pointer.pointTo(null,null,element);}};_updateShowMeLinks=function(newTemplate){var iframeDoc=dfx.getIframeDocument(_iframe);if(!iframeDoc){return;}
var steps=dfx.getClass('Help-message-step',iframeDoc.body);var sln=steps.length;if(sln===0){return;}
var complete=true;for(var i=0;i<sln;i++){var step=steps[i];if(complete===true&&dfx.attr(step,'template')===newTemplate){dfx.addClass(step,'complete');}else{complete=dfx.hasClass(step,'complete');}}
if(complete===true){setTimeout(function(){Help.hideMessages(true);},1500);}},this.pointer={pointer:null,pointerDim:{},container:null,pointTo:function(elemid,elemClass,elem){this.container=dfx.getId('Help-dialog');if(!elem){if(!elemid||elemid===''){if(!elemClass||elemClass===''){return;}
var celems=dfx.getClass(elemClass);var cln=celems.length;for(var i=0;i<cln;i++){if(dfx.getElementWidth(celems[i])>0){elem=celems[i];break;}}}else if(elemClass&&elemClass!=='*'){elem=dfx.getClass(elemClass,dfx.getId(elemid))[0];}else{elem=dfx.getId(elemid);}}
if(!elem){return;}
if(dfx.getStyle(elem,'visibility','hidden')===true){return;}
var rect=dfx.getBoundingRectangle(elem);if(rect.x1===0&&rect.x2===0||rect.x1===rect.x2||rect.y1===rect.y2){return;}
var winDim=dfx.getWindowDimensions();var pointer=this.getPointer();dfx.setStyle(pointer,'display','block');if(dfxjQuery.support.opacity===true){dfx.setOpacity(pointer,1);}
var pointerRect=dfx.getBoundingRectangle(pointer);var pointerH=(pointerRect.y2-pointerRect.y1);var pointerW=(pointerRect.x2-pointerRect.x1);this.pointerDim.height=pointerH;this.pointerDim.width=pointerW;var bounceHeight=20;var scroll=dfx.getScrollCoords();if(elem.scrollIntoView&&(rect.y1<scroll.y||rect.y1>scroll.y+winDim.height)){elem.scrollIntoView(false);}
if((rect.y1-pointerH-bounceHeight)>scroll.y){this.showPointer(elem,'down');}else if((rect.y2+pointerH)<(winDim.height-scroll.y)){this.showPointer(elem,'up');}else if((rect.y2+pointerW)<winDim.width){this.showPointer(elem,'left');}else if((rect.y1-pointerW)>0){this.showPointer(elem,'right');}},getPointer:function(){if(!this.pointer){this.pointer=document.createElement('div');var c='Help';dfx.addClass(this.pointer,c+'-pointer');dfx.addClass(this.pointer,c+'-pointer-hidden');document.body.appendChild(this.pointer);}
return this.pointer;},showPointer:function(elem,direction){var c='Help';this._removeDirectionClasses();dfx.addClass(this.pointer,c+'-pointer-'+direction);dfx.removeClass(this.pointer,c+'-pointer-hidden');var rect=dfx.getBoundingRectangle(elem);var top=0;var left=0;var bounceHeight=20;switch(direction){case'up':bounceHeight=(-bounceHeight);top=rect.y2;if((rect.x2-rect.x1)<250){left=(this.getRectMidPnt(rect)-(this.pointerDim.width/2));}else{left=rect.x1;}
break;case'left':left=rect.x2;top=this.getRectMidPnt(rect,true);break;case'right':left=(rect.x1-this.pointerDim.width);top=this.getRectMidPnt(rect,true);break;case'down':default:top=(rect.y1-this.pointerDim.height);if((rect.x2-rect.x1)<250){left=(this.getRectMidPnt(rect)-(this.pointerDim.width/2));}else{left=rect.x1;}
break;}
dfx.setStyle(this.pointer,'top',top+'px');dfx.setStyle(this.pointer,'left',left+'px');if(dfx.isChildOf(elem,dfx.getId('Help-dialog'))!==true){var coords=dfx.getBoundingRectangle(this.container);rect=dfx.getBoundingRectangle(this.pointer);var posOffset=20;var newPos=null;var midX=(rect.x1+((rect.x2-rect.x1)/2));var midY=(rect.y1+((rect.y2-rect.y1)/2));if(coords.x1<=midX&&coords.x2>=midX&&coords.y1<=midY&&coords.y2>=midY){var winDim=dfx.getWindowDimensions();if(rect.x2+posOffset+(coords.x2-coords.x1)<winDim.width){newPos=(rect.x2+posOffset);}else{newPos=(rect.x1-posOffset-(coords.x2-coords.x1));}
dfx.setStyle(this.container,'margin-left','0');dfx.setStyle(this.container,'right','auto');dfx.setStyle(this.container,'left',newPos+'px');}}
dfx.stop(this.pointer);clearTimeout(this._fadeTimer);var self=this;dfx.bounce(this.pointer,4,bounceHeight,function(){self._fadeTimer=setTimeout(function(){if(dfxjQuery.support.opacity===true){dfx.fadeOut(self.pointer,600);}else{dfx.setStyle(self.pointer,'display','none');}},1000);});},hidePointer:function(){if(this.pointer){dfx.stop(this.pointer);dfx.fadeOut(this.pointer,200);}},getRectMidPnt:function(rect,height){var midPnt=0;if(height===true){midPnt=(rect.y1+((rect.y2-rect.y1)/2));}else{midPnt=(rect.x1+((rect.x2-rect.x1)/2));}
return midPnt;},_removeDirectionClasses:function(){var c='Help';var d=['down','up','left','right'];var l=d.length;for(var i=0;i<l;i++){dfx.removeClass(this.pointer,c+'-pointer-'+d[i]);}},updateLinkIconStates:function(parentElem){var self=this;var locators=dfx.getClass('Help-locator-img',parentElem);dfx.foreach(locators,function(i){self.updateLinkIconState(locators[i]);});},updateLinkIconState:function(pointerIconElem){var elemid=dfx.attr(pointerIconElem,'elemid');var elemClass=dfx.attr(pointerIconElem,'elemClass');var refElems=[];if(elemid){var elem=dfx.getId(elemid);if(elem){if(elemClass&&elemClass!=='*'){refElems=dfx.getClass(elemClass,elem);}else{refElems.push(elem);}}}else if(!elemClass||elemClass==='*'){return;}else{refElems=dfx.getClass(elemClass);}
var refElemsCount=refElems.length;for(var i=(refElemsCount-1);i>=0;i--){if(dfx.getElementHeight(refElems[i])===0&&dfx.getElementWidth(refElems[i])===0){refElems.splice(i,1);}}
if(refElems.length>0){dfx.setStyle(pointerIconElem,'display','inline');}else{dfx.setStyle(pointerIconElem,'display','none');}}};};function HelpToolbarButton(id,settings)
{this.id=id;this.settings=settings;this.className=settings.widget.type;this.loopCheck=0;this._showWelcomeMsg=false;this.init();if(this.settings._openOnLoad){this._showWelcomeMsg=true;var self=this;dfx.addLoadEvent(function(){self.showHelp(self.settings._openOnLoad);});}}
HelpToolbarButton.prototype={init:function()
{var self=this;dfx.addEvent(dfx.getId(this.id),'click',function(){self.toggleHelp();});},_loadHelp:function(pageid)
{var self=this;var options={modal:false,dialog:{dialogid:'Help-dialog',keepOnTop:true}};self.loopCheck++;if(self.loopCheck>5){self.loopCheck=0;return;}
var silentTemplate=true;GUI.loadTemplate('Help','Help',[],function(){self.showHelp(pageid);},options,silentTemplate);},toggleHelp:function()
{var dialog=dfx.getId('Help-dialog');if(!dialog||dfx.getElementHeight(dialog)===0){this._loadHelp();}else{dfx.removeClass(dfx.getId(this.id),'active');GUI.getWidget('Help-dialog').close();}},showHelp:function(pageid)
{var dialog=dfx.getId('Help-dialog');if(!dialog||dfx.getElementHeight(dialog)===0){this._loadHelp(pageid);return;}
var self=this;self.loopCheck=0;var elem=dfx.getId(this.id);GUI.getWidget('Help-dialog').addDialogClosedCallback(function(){dfx.removeClass(elem,'active');});dfx.addClass(dfx.getId(this.id),'active');Help.init();var callback=null;if(this.settings._openOnLoad&&this._showWelcomeMsg===true){callback=function(){Help.showMessage('welcomeMsg');self._showWelcomeMsg=false;};}
Help.refresh(pageid,callback);}};var UserUserManagerScreen_ldap=new function()
{var _fields={details:{host:null,port:null,baseDN:null,bindDN:null,password:null,authDN:null,authFilter:null},userAttributes:{uid:null,cn:null,givenname:null,sn:null,mail:null},groupAttributes:{ou:null,groupMembership:null,groupMembers:null},uniqueIdSettings:{uniqueIdUsers:null,uniqueIdGroups:null},performanceSettings:{maxChildren:null}};this.createConnection=function(){var browserWidget=GUI.getWidget('userManager-assetBrowser');var details=_getValue('LDAPConnection',true);GUI.sendRequest('LDAPConnection','createConnection',details,function(response){if(response.match(/^\d+$/)){UserUserManagerScreen.reloadBrowser();}},'raw');};this.getValue=function(assetType){return _getValue(assetType);};var _getValue=function(assetType,jsonEncode){var browserWidget=GUI.getWidget('userManager-assetBrowser');var idPrefix='LDAPUserManagerScreen-new';var details={};switch(assetType){case'LDAPUser':case'LDAPUserGroup':details.assetid=dfx.jsonEncode((browserWidget.getValue()).pop());details.parents=GUI.getWidget('UserManagerScreen-parentsList').getValue();break;case'LDAPConnection':details.name=GUI.getWidget(idPrefix+'-name').getValue();details.parentAssetid=dfx.jsonEncode((browserWidget.getValue()).pop());dfx.foreach(_fields,function(groupName){if(!details[groupName]){details[groupName]={};}
dfx.foreach(_fields[groupName],function(fieldid){details[groupName][fieldid]=GUI.getWidget(idPrefix+'-'+fieldid).getValue();});if(jsonEncode===true){details[groupName]=dfx.jsonEncode(details[groupName]);}});break;}
return details;};};var LockManager=new function()
{this.tokens={};this.updateInterval=30;this.updateIntervalId=null;this.add=function(token,tokenInfo){if(!tokenInfo){this.tokens[token]={};}else{this.tokens[token]=tokenInfo;}};this.hasLock=function(token){if(this.tokens[token]){return true;}
return false;};this.release=function(tokens,callback){if(this.updateIntervalId!==null){clearInterval(this.updateIntervalId);this.updateIntervalId=null;}
var self=this;var validTokens=[];var validTokensInfo={};dfx.foreach(tokens,function(idx){if(self.hasLock(tokens[idx])===true){validTokens.push(tokens[idx]);validTokensInfo[tokens[idx]]=self.tokens[tokens[idx]];}
return true;});if(validTokens.length>0){var params={locktokens:dfx.jsonEncode(validTokens),locktokensInfo:dfx.jsonEncode(validTokensInfo)};sfapi.post('Locking','releaseLocks',params,function(data){if(data.result===true){dfx.foreach(validTokens,function(idx){delete self.tokens[tokens[idx]];return true;});}
if(callback){callback.call(self,data.result,params.locktokens);}});}else{if(callback){callback.call(self);}}};this.releaseAll=function(callback){if(this.updateIntervalId!==null){clearInterval(this.updateIntervalId);this.updateIntervalId=null;}
var params={locktokens:[],locktokensInfo:{}};dfx.foreach(this.tokens,function(token){params.locktokens.push(token);return true;});if(params.locktokens.length>0){var self=this;params.locktokens=dfx.jsonEncode(params.locktokens);params.locktokensInfo=dfx.jsonEncode(this.tokens);sfapi.post('Locking','releaseLocks',params,function(data){if(data.result===true){self._reset();}
if(callback){callback.call(self,data.result,params.locktokens);}});}else{if(callback){callback.call(self,false);}}};this._reset=function(){if(this.updateIntervalId!==null){clearInterval(this.updateIntervalId);this.updateIntervalId=null;}
this.tokens={};};this.startLockUpdate=function(callback){var self=this;if(this.updateIntervalId===null){this.updateIntervalId=setInterval(function(){self.updateAll(callback);},(this.updateInterval*1000));}};this.stopLockUpdate=function(){this._reset();}
this.updateAll=function(callback){var self=this;var params={locktokens:[],locktokensInfo:{}};var tokens=[];dfx.foreach(this.tokens,function(token){tokens.push(token);return true;});if(tokens.length>0){params.locktokens=dfx.jsonEncode(tokens);params.locktokensInfo=dfx.jsonEncode(this.tokens);var self=this;sfapi.post('Locking','updateLocks',params,function(data){if(data.result!==true){dfx.foreach(tokens,function(idx){var token=tokens[idx];if(data.result===false){if(typeof self.tokens[token].updateFailCallback==='function'){self.tokens[token].updateFailCallback.call(self);}}else if(data.result.inArray(token)===false){if(typeof self.tokens[token].updateFailCallback==='function'){self.tokens[token].updateFailCallback.call(self);}}
return true;});}
if(callback){callback.call(self,data.result);}});}};this.forceAcquireLock=function(resource,userid,callback){var self=this;var params={resource:resource,owner:userid,expire:-1,force:true};sfapi.post('Locking','acquireLock',params,function(data){var token=data.result;if(callback){callback.call(self,token);}});};};GUI.addTemplateRemovedCallback(function(system,template){var templateToken=null;dfx.foreach(LockManager.tokens,function(token){if(LockManager.tokens[token].template===(system+':'+template)){templateToken=token;return false;}
return true;});if(templateToken!==null){LockManager.release([templateToken]);}});var PatchingPatchingScreen=new function()
{var _patchingSettingsWdgt=null;var _patchingSettingsDiv=null;var _notifyToggleBtn=null;var _newUpdatesTableDiv=null;var _scheduleUpdateWdgt=null;var _updateBoxDiv=null;var _asapCheckBtnWdgt=null;var _config={};this.initScreen=function(data){var self=this;this._config=data.config;this._usersFolderid=data.usersFolderid;this._patchingSettingsDiv=dfx.getId('patchingSettings');this._notify=data.config.notify;this._notifyToggleBtn=GUI.getWidget('PatchingScreen-notifyUpdates');this._asapCheckBtnWdgt=GUI.getWidget('PatchingScreen-checkAsapBtn');this._notificationRecipients=data.config.recipient;this._deleteNotificationUser={};this._addNotificationUser=[];if(this._notifyToggleBtn){if(this._notify===false){this.hideRecipients();}
this._notifyToggleBtn.addChangedCallback(function(newValue){if(newValue===true){self.showRecipients();}else{self.hideRecipients();}});}
var delNotifyBtns=dfx.getClass('PatchingScreen-notifyDelete',this._patchingSettingsDiv);this.attachRemoveRecipientEvents(delNotifyBtns);this._updateBoxDiv=dfx.getId('updatesBox');var expanders=dfx.getClass('PatchingScreen-expander',this._updateBoxDiv);dfx.foreach(expanders,function(idx){dfx.addEvent(expanders[idx],'click',function(e){dfx.removeClass(dfx.getClass('hidden',expanders[idx].parentNode.parentNode)[0],'hidden');dfx.addClass(expanders[idx].parentNode,'hidden');});return true;});this._newUpdatesTableDiv=dfx.getId('newUpdates-table');this._scheduleUpdateWdgt=GUI.getWidget('PatchingScreen-schedulePatch');if(this._scheduleUpdateWdgt){var datePickerWrap=dfx.getClass('PatchingScreen-scheduleDatePicker',this._newUpdatesTableDiv)[0];this._scheduleUpdateWdgt.addToggleOnCallback(function(){dfx.removeClass(datePickerWrap,'hidden');});this._scheduleUpdateWdgt.addToggleOffCallback(function(){dfx.addClass(datePickerWrap,'hidden');});}};this.showRecipients=function(){var settingMid=dfx.getClass('GUIScreenSettings-mid',this._patchingSettingsDiv)[0]
var childLen=settingMid.childNodes.length;var notifLen=this._notificationRecipients.length;for(var i=(childLen-1);i>(childLen-2-notifLen);i--){dfx.showElement(settingMid.childNodes[i]);}},this.attachRemoveRecipientEvents=function(btns){var self=this;dfx.foreach(btns,function(idx){dfx.addEvent(btns[idx],'click',function(e){var userid=btns[idx].getAttribute('userid');if(dfx.hasClass(btns[idx],'deleted')===true){dfx.removeClass(btns[idx],'deleted');dfx.removeClass(btns[idx].parentNode.parentNode.parentNode,'deleted');self._deleteNotificationUser[userid]=false;}else{dfx.addClass(btns[idx],'deleted');dfx.addClass(btns[idx].parentNode.parentNode.parentNode,'deleted');self._deleteNotificationUser[userid]=true;}
GUI.setTemplateModified('Patching','PatchingSettings',true);});return true;});},this.hideRecipients=function(){var settingMid=dfx.getClass('GUIScreenSettings-mid',this._patchingSettingsDiv)[0];var childLen=settingMid.childNodes.length;var notifLen=this._notificationRecipients.length;for(var i=(childLen-1);i>(childLen-notifLen-2);i--){dfx.hideElement(settingMid.childNodes[i]);}},this.toggleActivation=function(){var activWrap=dfx.getClass('PatchingScreen-activateWrap',this._patchingSettingsDiv)[0];var cancelWrap=dfx.getClass('PatchingScreen-idTextFieldWrap',this._patchingSettingsDiv)[0];if(dfx.hasClass(activWrap,'hidden')===true){dfx.removeClass(activWrap,'hidden');dfx.addClass(cancelWrap,'hidden');}else{dfx.removeClass(cancelWrap,'hidden');dfx.addClass(activWrap,'hidden');}};this.changeActivationID=function(){dfx.addClass(dfx.getId('PatchingScreen-systemidWrap'),'hidden');dfx.removeClass(dfx.getId('PatchingScreen-newActivationTextWrap'),'hidden');dfx.addClass(dfx.getId('PatchingScreen-changeIdBtnWrap'),'hidden');dfx.removeClass(dfx.getId('PatchingScreen-cancel-changeIdBtnWrap'),'hidden');};this.cancelNewActivationID=function(){dfx.removeClass(dfx.getId('PatchingScreen-systemidWrap'),'hidden');dfx.addClass(dfx.getId('PatchingScreen-newActivationTextWrap'),'hidden');dfx.removeClass(dfx.getId('PatchingScreen-changeIdBtnWrap'),'hidden');dfx.addClass(dfx.getId('PatchingScreen-cancel-changeIdBtnWrap'),'hidden');};this.checkUpdateASAP=function(){var self=this;var params={};GUI.sendRequest('Patching','checkUpdateASAP',params,function(data){if(data.result==='updated'){GUI.sendRequest('Patching','getNextUpdateCheckTime',params,function(data){var text=dfx.getClass('PatchingScreen-nextCheckString',self._patchingSettingsDiv)[0];dfx.setHtml(text,data.result);self._asapCheckBtnWdgt.disable();});}});};this.addNotificationUser=function(){var options={modal:true,dialog:{dialogid:'Patching-addUser-dialog'}};var templateSettings={id:'Patching-addUser',rootNodes:this._usersFolderid,usedForCode:'patchingScreen'};var self=this;GUI.loadTemplate('GUIAssetFinder','GUIAssetFinder',templateSettings,function(){GUI.getWidget('Patching-addUser').setSelectAssetsCallback(function(selection){self.addSelectedUsers(selection);});},options);};this.addSelectedUsers=function(users){var self=this;dfx.foreach(users,function(idx){var userid=users[idx];if(dfx.inArray(userid,self._config.recipient)===false&&dfx.inArray(userid,self._addNotificationUser)===false){GUI.sendRequest('User','getUserById',{userid:userid},function(data){var c='<div class="PatchingScreen-notifyRow">';c+='    <div class="PatchingScreen-notifyUserIcon">&nbsp;</div>';c+='    <div class="PatchingScreen-notifyName">';c+=dfx.ucFirst(data.result.first_name)+' '+dfx.ucFirst(data.result.last_name);c+='</div>';c+='    <div userid="'+data.result.userid+'" class="PatchingScreen-notifyDelete">&nbsp;</div>';c+='</div>';self._addNotificationUser.push(data.result.userid);var settingMid=dfx.getClass('GUIScreenSettings-mid',self._patchingSettingsDiv)[0]
var targetIdx=(settingMid.childNodes.length-1);GUI.getWidget('patchingSettings').addItem('new',c,false,targetIdx);var delNotifyBtn=dfx.getClass('PatchingScreen-notifyDelete',settingMid.childNodes[targetIdx]);self.attachRemoveRecipientEvents(delNotifyBtn);GUI.setTemplateModified('Patching','PatchingSettings',true);});}
return true;});};this.getValue=function(){var data={'deleteNotification':this._deleteNotificationUser,'addNotification':this._addNotificationUser};return data;};this.saved=function(retval){GUI.reloadTemplate('Patching','PatchingScreen');};}
var Project={setApiRootUrl:function()
{sfapi.rootUrl=location.href;var hashLoc=sfapi.rootUrl.indexOf('#');if(hashLoc>-1){sfapi.rootUrl=sfapi.rootUrl.substr(0,hashLoc);}}};Project.setApiRootUrl();var ProjectProjectSelector={addProjectClicked:function()
{var buttons=dfx.getTag('a',dfx.getId('mode-switcher'));var btnCount=buttons.length;for(var i=0;i<btnCount;i++){var btn=buttons[i];if(dfx.attr(btn,'modeid')==='SystemConfig'){dfx.trigger(btn,'click');break;}}}};function ProjectSwitcherButton(id,settings)
{this.id=id;this.settings=settings;this.className=settings.widget.type;this._loaded=false;this.init();}
ProjectSwitcherButton.prototype={init:function()
{var self=this;dfx.addEvent(dfx.getId(this.id),'click',function(){self.toggleProjectSwitcher();});},_loadProjectSwitcher:function(showAfterLoad)
{var self=this;var options={modal:true,dialog:{dialogid:'ProjectSwitcher-dialog'}};GUI.loadTemplate('Project','ProjectSwitcher',[],function(){self._loaded=true;self.showProjectSwitcher();dfx.addClass(dfx.getId(self.id),'active');GUI.getWidget('ProjectSwitcher-dialog').addDialogClosedCallback(function(){GUI.unloadTemplate('Project','ProjectSwitcher');dfx.removeClass(dfx.getId(self.id),'active');});},options);},toggleProjectSwitcher:function()
{this.showProjectSwitcher();},showProjectSwitcher:function()
{if(this._loaded===false){this._loadProjectSwitcher(true);return;}
this._loaded=false;}};var RoleRoleScreen=new function()
{var _data=null;var _prevSelectedRole=null;var _removedRoles={};this.initScreen=function(data){_data=data;removedRoles={};var elems=dfx.getClass('RoleScreen-privListItem');dfx.hover(elems,function(e){dfx.addClass(e.currentTarget,'hover');},function(e){dfx.removeClass(e.currentTarget,'hover');});var topElem=dfx.getClass('RoleScreen-privilegeList',dfx.getId('RolesScreen'));dfx.addEvent(topElem,'click',function(e){_handleClick(e,topElem);});_prevSelectedRole=GUI.getWidget('rolesList').getSelectedItemId();if(_prevSelectedRole!==undefined){GUI.addUpdateContentAfterModify('role-name','rolesList-item-'+_prevSelectedRole);GUI.getWidget('role-name').setValue(_data[_prevSelectedRole].name);GUI.setModified(GUI.getWidget('role-name'),false);}
var self=this;GUI.getWidget('rolesList').addItemSelectedCallback(function(selectedRoleid){self.showRoleSettings(selectedRoleid);});GUI.getWidget('rolesList').addItemToggledCallback(function(itemid,deleted,itemElement){GUI.setTemplateModified('Role','RoleScreen',true);if(deleted===true){removedRoles[itemid]=true;}else if(removedRoles[itemid]){delete removedRoles[itemid];}});var toggleButtons=dfx.getClass('GUIToggleButton',dfx.getClass('RoleScreen-unrestrictedToggle'));dfx.foreach(toggleButtons,function(idx){var buttonElement=toggleButtons[idx];var toggleWidget=GUI.getWidget(buttonElement.id);if(!toggleWidget){return;}
toggleWidget.addChangedCallback(function(currentValue){if(currentValue===true){self.setAllPrivilegesState(true);}else{self.setAllPrivilegesState(false);}});});};this.showRoleSettings=function(roleid){if(!roleid||!_data[roleid]){return;}
this.saveRoleSettings(_prevSelectedRole);GUI.addUpdateContentAfterModify('role-name','rolesList-item-'+roleid);var role=_data[roleid];GUI.getWidget('role-name').setValue(role.name);GUI.setModified(GUI.getWidget('role-name'),false);var toggleButtons=dfx.getClass('GUIToggleButton',dfx.getClass('RoleScreen-unrestrictedToggle'));dfx.foreach(toggleButtons,function(idx){var buttonElement=toggleButtons[idx];var toggleWidget=GUI.getWidget(buttonElement.id);if(!toggleWidget){return;}
var privid=toggleWidget.id.split('-')[0];if(role.unrestricted&&role.unrestricted.inArray(privid)===true){toggleWidget.setValue(true,true);}else{toggleWidget.setValue(false,true);}
GUI.setModified(toggleWidget,false);});_updatePrivilegeStates(role.granted);_prevSelectedRole=roleid;};this.saveRoleSettings=function(roleid){if(!_data[roleid]){return;}
_data[roleid].name=GUI.getWidget('role-name').getValue();var toggleButtons=dfx.getClass('GUIToggleButton main',dfx.getId('RolesScreen'));_data[roleid].unrestricted=[];dfx.foreach(toggleButtons,function(i){var id=toggleButtons[i].id;var value=GUI.getWidget(id).getValue();if(value===true){_data[roleid].unrestricted.push(id.split('-')[0]);}});var granted=[];dfx.foreach(_data[roleid].unrestricted,function(i){var priv=_data[roleid].unrestricted[i]+'.%';granted.push(priv);});var items=dfx.getClass('RoleScreen-privListItem',dfx.getId('RolesScreen'));var iln=items.length;for(var i=0;i<iln;i++){var item=items[i];if(granted.inArray(item.id.split('.')[0]+'.%')===true){continue;}
if(dfx.hasClass(item,'enabled')===true||dfx.hasClass(item,'enabledByParent')===true){if(dfx.hasClass(item,'expand')===true||dfx.hasClass(item,'collapse')===true){granted.push(item.id+'.%');}else{granted.push(item.id);}}}
_data[roleid].granted=granted;};var _updatePrivilegeStates=function(granted){var items=dfx.getClass('RoleScreen-privListItem',dfx.getId('RolesScreen'));var iln=items.length;var gln=granted.length;for(var i=0;i<iln;i++){var privilege=items[i].id;var selected=false;for(var j=0;j<gln;j++){var grantedPriv=granted[j];if(privilege===grantedPriv||privilege+'.%'===grantedPriv){selected=true;break;}else if(privilege.indexOf(grantedPriv.replace('%',''))===0){selected='sel-inherit';break;}}
dfx.removeClass(items[i],'enabled');dfx.removeClass(items[i],'enabledByParent');if(selected===true){dfx.addClass(items[i],'enabled');}else if(selected==='sel-inherit'){dfx.addClass(items[i],'enabledByParent');}}};var _handleClick=function(e,topElem){var target=dfx.getMouseEventTarget(e);if(dfx.hasClass(target,'RoleScreen-privListItem-toggle')===true){GUI.setTemplateModified('Role','RoleScreen',true);if(changeToggleState(target.parentNode)===true){return;}}else{if(toggleExpandCollapse(target,topElem)===true){return;}}};var toggleExpandCollapse=function(target,topElem){var elem=target;if(dfx.hasClass(target,'RoleScreen-privListItem')===false){var parents=dfx.getParents(target,'div.RoleScreen-privListItem',topElem);if(parents.length>0){elem=parents[0];}}
if(dfx.hasClass(elem,'expand')===true){dfx.swapClass(elem,'expand','collapse');toggleChildPrivileges(elem,'hide');return true;}else if(dfx.hasClass(elem,'collapse')===true){dfx.swapClass(elem,'collapse','expand');toggleChildPrivileges(elem,'show');return true;}
return false;};var toggleChildPrivileges=function(elem,state){var parentid=elem.id+'.';for(var node=elem.nextSibling;node;node=node.nextSibling){if(node.nodeType!==1){continue;}else if(node.id.indexOf(parentid)===0){if(state==='hide'){dfx.hideElement(node);}else{dfx.showElement(node);}}else{break;}}};var changeToggleState=function(toggle,forceState,unrestricted){if(dfx.isset(forceState)===false&&dfx.hasClass(toggle,'enabledByParent')===true){return;}
var className='enabled';if(unrestricted===true){className='enabledByParent';dfx.removeClass(toggle,'enabled');}
if(dfx.hasClass(toggle,'expand')===true||dfx.hasClass(toggle,'collapse')===true){if(forceState===true){dfx.addClass(toggle,className);changeChildPrivilegeStates(toggle,true);}else if(forceState===false){dfx.removeClass(toggle,className);changeChildPrivilegeStates(toggle,false);}else{if(dfx.hasClass(toggle,className)===true){dfx.removeClass(toggle,className);changeChildPrivilegeStates(toggle,false);}else{dfx.addClass(toggle,className);changeChildPrivilegeStates(toggle,true);}}}else{if(forceState===false||(forceState!==true&&dfx.hasClass(toggle,className)===true)){dfx.removeClass(toggle,className);}else{dfx.addClass(toggle,className);}}};var changeChildPrivilegeStates=function(elem,state){var parentid=elem.id+'.';for(var node=elem.nextSibling;node;node=node.nextSibling){if(node.nodeType!==1){continue;}else if(node.id.indexOf(parentid)===0){dfx.removeClass(node,'enabled');if(state===true){dfx.addClass(node,'enabledByParent');}else{dfx.removeClass(node,'enabledByParent');}}else{break;}}};this.setAllPrivilegesState=function(state){var visibleElement=GUI.getWidget('role-switcher').getVisibleContentElement();if(!visibleElement){return;}
var privListElements=dfx.getClass('RoleScreen-privListItem level-1',visibleElement);dfx.foreach(privListElements,function(i){changeToggleState(privListElements[i],state,true);});};this.createNewRole=function(){var itemid='new_'+dfx.getUniqueId();var title='New Role';if(_data instanceof Array){_data={};}
_data[itemid]={granted:{},name:title};GUI.getWidget('rolesList').addItem(itemid,title,true);GUI.addUpdateContentAfterModify('role-name','rolesList-item-'+itemid);GUI.getWidget('role-name').select();dfx.addClass(dfx.getClass('RolesScreenMainContent'),'has-roles');dfx.removeClass(dfx.getClass('RolesScreenMainContent'),'no-roles');GUI.setTemplateModified('Role','RoleScreen',true);};this.getValue=function(){this.saveRoleSettings(GUI.getWidget('rolesList').getSelectedItemId());var data={roles:_data,removedRoles:removedRoles};return data;};this.saved=function(){GUI.setTemplateModified('Role','RoleScreen',false);GUI.reloadTemplate('Role','RoleScreen');};};var RoleRoleScreenReadOnly=new function()
{var _data=null;var _prevSelectedRole=null;var _removedRoles={};this.initScreen=function(data){_data=data;removedRoles={};var elems=dfx.getClass('RoleScreen-privListItem');dfx.hover(elems,function(e){dfx.addClass(e.currentTarget,'hover');},function(e){dfx.removeClass(e.currentTarget,'hover');});_prevSelectedRole=GUI.getWidget('rolesList').getSelectedItemId();var self=this;GUI.getWidget('rolesList').addItemSelectedCallback(function(selectedRoleid){self.showRoleSettings(selectedRoleid);});};this.showRoleSettings=function(roleid){if(!roleid||!_data[roleid]){return;}
GUI.addUpdateContentAfterModify('role-name','rolesList-item-'+roleid);var role=_data[roleid];var toggleButtons=dfx.getClass('GUIToggleButton',dfx.getClass('RoleScreen-unrestrictedToggle'));dfx.foreach(toggleButtons,function(idx){var buttonElement=toggleButtons[idx];var toggleWidget=GUI.getWidget(buttonElement.id);if(!toggleWidget){return;}
var privid=toggleWidget.id.split('-')[0];if(role.unrestricted&&role.unrestricted.inArray(privid)===true){toggleWidget.setValue(true,true);}else{toggleWidget.setValue(false,true);}
GUI.setModified(toggleWidget,false);});_updatePrivilegeStates(role.granted);_prevSelectedRole=roleid;};var _updatePrivilegeStates=function(granted){var items=dfx.getClass('RoleScreen-privListItem',dfx.getId('RolesScreen'));var iln=items.length;var gln=granted.length;for(var i=0;i<iln;i++){var privilege=items[i].id;var selected=false;for(var j=0;j<gln;j++){var grantedPriv=granted[j];if(privilege===grantedPriv||privilege+'.%'===grantedPriv){selected=true;break;}else if(privilege.indexOf(grantedPriv.replace('%',''))===0){selected='sel-inherit';break;}}
dfx.removeClass(items[i],'enabled');dfx.removeClass(items[i],'enabledByParent');if(selected===true){dfx.addClass(items[i],'enabled');}else if(selected==='sel-inherit'){dfx.addClass(items[i],'enabledByParent');}}};};var NetworkConfiguration=new function()
{var _deletedProducts={};var _ipTableDOM=null;var _savingMsgDOM=null;var _savingProgDOM=null;var _completeMsgSuccess=null;var _completeMsgFailed=null;var _confirmBtnDOM=null;this.initScreen=function(data){var self=this;this._ipTableDOM=dfx.getId('ipTable');this._savingMsgDOM=dfx.getId('savingMessage');this._savingProgDOM=dfx.getId('savingProgress');this._completeMsgSuccess=dfx.getId('completeMessage-success');this._completeMsgFailed=dfx.getId('completeMessage-failed');this._confirmBtnDOM=dfx.getId('confirm');var confirmBtn=GUI.getWidget('confirm');confirmBtn.addClickCallback(function(e){var params={action:'saveNetworkConfig',values:GUI.getTemplateWidgetValues('ServerConfig','NetworkConfiguration')};GUI.sendRequest('ServerConfig','processNetworkConfiguration',params,function(data){if(data.result==='success'){self.showProgress();var iid=setInterval(function(){params={action:'checkNetworkConfigUpdate'};GUI.sendRequest('ServerConfig','processNetworkConfiguration',params,function(res){if(res.result==='true'){self.showCompleteMessage('success');clearInterval(iid);}else if(res==='false'){self.showCompleteMessage('failed');clearInterval(iid);}});},10000);}else if(data.result==='failed'){alert('The new network settings caused the system to stop responding. The previous settings have been restored.');}else if(data.result==='invalid'){alert('Invalid IP address has been entered.');}});});GUI.setTemplateModified('SquizSuite','SquizSuiteScreen',true);};this.showIPTable=function(){dfx.showElement(this._ipTableDOM);dfx.hideElement(this._savingMsgDOM);dfx.hideElement(this._savingProgDOM);dfx.hideElement(this._completeMsgSuccess);dfx.hideElement(this._completeMsgFailed);dfx.showElement(this._confirmBtnDOM);};this.showProgress=function(){dfx.hideElement(this._ipTableDOM);dfx.showElement(this._savingMsgDOM);dfx.showElement(this._savingProgDOM);dfx.hideElement(this._completeMsgSuccess);dfx.hideElement(this._completeMsgFailed);dfx.hideElement(this._confirmBtnDOM);};this.showCompleteMessage=function(type){dfx.hideElement(this._ipTableDOM);dfx.hideElement(this._savingMsgDOM);dfx.hideElement(this._savingProgDOM);if(type==='success'){dfx.showElement(this._completeMsgSuccess);dfx.removeClass(this._completeMsgSuccess,'hidden');dfx.hideElement(this._completeMsgFailed);}else if(type==='failed'){dfx.showElement(this._completeMsgFailed);dfx.removeClass(this._completeMsgFailed,'hidden');dfx.hideElement(this._completeMsgSuccess);}
dfx.hideElement(this._confirmBtnDOM);};this.getValue=function(){var data={};return data;};this.saved=function(retval){GUI.reloadTemplate('SquizSuite','SquizSuiteScreen');};}
var SimplePermissionPermissionScreen=new function()
{var _usersFolderid=null;var _readOnly=false;this.initScreen=function(usersFolderid,readOnly){_usersFolderid=usersFolderid;_readOnly=readOnly;var self=this;GUI.getWidget('projectList').addItemSelectedCallback(function(selectedProjectid){self.showRolesForProject(selectedProjectid);});};this.showRolesForProject=function(projectid){var elem=dfx.getId('PermissionScreen-rolesLists-'+projectid);if(elem){dfx.removeClass(dfx.getClass('PermissionScreen-rolesLists'),'active');dfx.addClass(elem,'active');return;}
var wrapperDiv=dfx.getId('PermissionScreenMainContent');elem=document.createElement('div');wrapperDiv.appendChild(elem);var params={resourceid:projectid,readOnly:_readOnly};dfx.removeClass(dfx.getClass('PermissionScreen-rolesLists'),'active');GUI.loadContent('Permission','getPermissionListForScreen',elem,params,function(){wrapperDiv.appendChild(elem);});};this.addNew=function(resourceid,roleid){var options={modal:true,dialog:{dialogid:'SimplePermission-addNew-dialog'}};var templateSettings={id:'SimplePermission-addNew',rootNodes:_usersFolderid,usedForCode:'simplePermissionScreen'};var self=this;GUI.loadTemplate('GUIAssetFinder','GUIAssetFinder',templateSettings,function(){GUI.getWidget('SimplePermission-addNew').setSelectAssetsCallback(function(selection){self.addSelectedUsers(resourceid,roleid,selection);});},options);},this.addSelectedUsers=function(resourceid,roleid,userids){var rowsData={};dfx.foreach(userids,function(i){var rowid=userids[i];rowsData['new-'+rowid]=userids[i];});var listid='PermissionScreen-role-'+resourceid+'-'+roleid+'-list';GUI.getWidget(listid).generateItems(rowsData);};this.saved=function(){GUI.reloadTemplate('SimplePermission','PermissionScreen');};};var SquizAnalyticsDashboard=new function(){this.prefix='SquizAnalyticsDashboard';var self=this;this.initEvents=function(){var summaryDiv=dfx.getId('Dashboard-summary-row');var boxes=dfx.getClass('GUIBox-content',summaryDiv);var maxHeight=0;dfx.foreach(boxes,function(itemid){maxHeight=Math.max(maxHeight,dfx.getElementHeight(boxes[itemid]));});dfx.setStyles(boxes,'height',maxHeight+'px');var mainSwitcher=GUI.getWidget(this.prefix+'-content-switcher-type');var subSwitcher=GUI.getWidget(this.prefix+'-content-switcher-overlay');var container=dfx.getId(self.prefix+'-graph-body');SquizAnalyticsMain.makeSwitchable(mainSwitcher,container);if(subSwitcher){SquizAnalyticsMain.makeSwitchable(subSwitcher,container);}else{dfx.addClass(container,'showing-overlaySources');}};};var SquizAnalyticsMain={_monthList:{'1':1,'3':3,'6':6},setApiRootUrl:function(url)
{if(url===undefined){url=location.href;}
sfapi.rootUrl=url;var hashLoc=sfapi.rootUrl.indexOf('#');if(hashLoc>-1){sfapi.rootUrl=sfapi.rootUrl.substr(0,hashLoc);}},initEvents:function(info)
{var self=this;dfx.addLoadEvent(function(){for(var months in self._monthList){dfx.addEvent(dfx.getId('SquizAnalyticsMain-date-switcher-'+months),'click',function(event){self.reloadMonths.call(self,event);});dfx.addEvent(dfx.getId('SquizAnalyticsMain-date-switcher-'+months),'mouseover',function(event){dfx.addClass(event.currentTarget,'hover');});dfx.addEvent(dfx.getId('SquizAnalyticsMain-date-switcher-'+months),'mouseout',function(event){dfx.removeClass(event.currentTarget,'hover');});}});},reloadMonths:function(event)
{var months=dfx.attr(event.currentTarget,'months');if(dfx.hasClass(event.currentTarget,'months-selected-'+months)){return false;}
var buttons=dfx.getClass('GUI-focusTag',event.currentTarget.parentNode);for(var oldMonths in this._monthList){dfx.removeClass(buttons,'months-selected-'+oldMonths);}
dfx.addClass(buttons,'months-selected-'+months);var url=sfapi.rootUrl.split('/');url.pop();url.pop();url=url.join('/');var newUrl=url+'/'+months;var modeSwitcher=GUI.getWidget('mode-switcher');newUrl+='/'+modeSwitcher.current.template.toLowerCase();var templateClassName=modeSwitcher.current.system+modeSwitcher.current.template;if(eval('typeof '+templateClassName)!=='undefined'){var templateClass=eval(templateClassName);if(dfx.isFn(templateClass.getPathState)){var extraPath=templateClass.getPathState();if(extraPath.length>0){newUrl+='/'+extraPath.join('/');}}}
location.href=newUrl;},makeSwitchable:function(switcher,container)
{var self=this;dfx.addClass(container,'showing-'+switcher.settings.initialItem);if(switcher){switcher.setCustomLoader(function(system,template){var oldTemplate=switcher.current.template;dfx.removeClass(container,'showing-'+oldTemplate);dfx.addClass(container,'showing-'+template);});}},makeExpandable:function(tables,callbackFn)
{if((tables instanceof Array)===false){tables=[tables];}
for(var i=0;i<tables.length;i++){dfx.addEvent(dfx.getTag('tbody',tables[i]),'click',function(e){var target=dfx.getMouseEventTarget(e);if((dfx.hasClass(target,'GUI-delete')===false)&&(dfx.hasClass(target,'GUI-deleteIcon')===false)){if(target.nodeName.toLowerCase()!=='tr'){target=dfx.getParents(target,'tr',tables[i])[0];}
if((dfx.hasClass(target,'major-row')===true)&&(dfx.hasClass(target,'expandable')===true)&&(dfx.hasClass(target,'deleted')===false)){dfx.toggleClass(target,'expanded');var minorRow=dfx.getNextNode(target);while((minorRow)&&(dfx.hasClass(minorRow,'minor-row'))){dfx.toggleClass(minorRow,'expanded');var minorRow=dfx.getNextNode(minorRow);}
if(dfx.isFn(callbackFn)===true){callbackFn(dfx.attr(target,'rowid'),target,dfx.hasClass(target,'expanded'));}
e.stopPropagation();}}});}}};var SquizAnalyticsMainNoData={};dfx.addLoadEvent(function(){SquizAnalyticsMainNoData=SquizAnalyticsMain;SquizAnalyticsMainNoData.initEvents();});var SquizAnalyticsNoData={projectid:null,timeoutid:null,initEvents:function(projectid)
{var self=this;this.projectid=projectid;this.testActive();},testActive:function()
{var self=this;var params={projectid:this.projectid};GUI.sendRequest('SquizAnalytics','getProjectReCacheStatus',params,function(data){var ok=false;if(data.result){if(data.result.active===true){ok=true;}else{var progressPar=dfx.getClass('SquizAnalyticsNoData-percent-par');var progressSpan=dfx.getId('SquizAnalyticsNoData-percent');dfx.setNodeTextContent(progressSpan,Math.floor((data.result.completed/data.result.total*100.0)));dfx.setStyle(progressPar,'display','block');}}
if(ok===true){dfx.addClass(dfx.getId('SquizAnalyticsNoData'),'report-done');dfx.removeClass(dfx.getId('SquizAnalyticsNoData'),'report-not-done');}else{self.timeoutid=window.setTimeout(function(){self.testActive.call(self);},15000);}},'json');}};var SquizAnalyticsProjectsScreen={_prefix:'SquizAnalyticsProjectsScreen-',deletedAccounts:{},deletedProjects:{},init:function()
{var self=this;dfx.addLoadEvent(function(){var accountsTable=dfx.getId(self._prefix+'table-connected-accounts');var projectsTable=dfx.getId(self._prefix+'table-enabled-projects');var accountsWidget=GUI.getWidget(accountsTable.id);var projectsWidget=GUI.getWidget(projectsTable.id);accountsWidget.addRowToggledCallback(function(rowid,deleted,rowElement){if(dfx.hasClass(rowElement,'major-row')===true){var detailRow=rowElement.nextSibling;if(deleted===true){if(dfx.hasClass(rowElement,'awaiting-confirmation')===true){dfx.removeClass(rowElement,'deleted-on-load');dfx.removeClass(rowElement,'expanded');dfx.removeClass(detailRow,'expanded');var projectRows=dfx.getClass('for-account-'+rowid,projectsTable);for(var i=0;i<projectRows.length;i++){if(dfx.hasClass(projectRows[i],'deleted')===false){projectsWidget.toggleRow(projectRows[i]);}else{dfx.addClass(projectRows[i],'keep-deleted');}}
dfx.addClass(projectRows,'account-deleted');self.deletedAccounts[rowid]=true;}else{var deleteIcon=dfx.getClass('GUI-deleteIcon',rowElement)[0];accountsWidget.toggleRow(rowElement);dfx.addClass(rowElement,'awaiting-confirmation');GUI.getWidget(self._prefix+'confirmAccountDelete').show(deleteIcon);}}else{dfx.removeClass(rowElement,'deleted-on-load');delete self.deletedAccounts[rowid];if(dfx.hasClass(rowElement,'awaiting-confirmation')===false){var projectRows=dfx.getClass('deleted account-deleted for-account-'+rowid,projectsTable);dfx.removeClass(projectRows,'account-deleted');for(var i=0;i<projectRows.length;i++){projectsWidget.toggleRow(projectRows[i]);}}}}else{var accountRow=rowElement.prevSibling;if(deleted===true){dfx.removeClass(accountRow,'expanded');dfx.removeClass(rowElement,'expanded');}else{dfx.addClass(rowElement,'expanded');}}});GUI.getWidget(self._prefix+'confirmAccountDelete').addOnCloseCallback(function(){dfx.removeClass(dfx.getTag('tr',accountsTable),'awaiting-confirmation');});projectsWidget.addRowToggledCallback(function(rowid,deleted,rowElement){if(dfx.hasClass(rowElement,'major-row')===true){var detailRow=rowElement.nextSibling;if(deleted===true){dfx.removeClass(rowElement,'deleted-on-load');dfx.removeClass(rowElement,'expanded');dfx.removeClass(detailRow,'expanded');self.deletedProjects[rowid]=true;}else{if(dfx.hasClass(rowElement,'account-deleted')===true){var deletedOnLoad=dfx.hasClass(rowElement,'deleted-on-load');var deleteIcon=dfx.getClass('GUI-deleteIcon',rowElement)[0];projectsWidget.toggleRow(rowElement);if(deletedOnLoad===true){dfx.addClass(rowElement,'deleted-on-load');}
GUI.getWidget('SquizAnalyticsProjectsScreen-cantUndeleteProject').show(deleteIcon);}else{dfx.removeClass(rowElement,'deleted-on-load');if(dfx.hasClass(rowElement,'keep-deleted')===true){projectsWidget.toggleRow(rowElement);dfx.removeClass(rowElement,'keep-deleted');}
delete self.deletedProjects[rowid];}}}else{var accountRow=rowElement.prevSibling;if(deleted===true){dfx.removeClass(accountRow,'expanded');dfx.removeClass(rowElement,'expanded');}else{dfx.addClass(rowElement,'expanded');}}});var projectLinkButtons=dfx.getClass('project-link',projectsTable);dfx.addEvent(projectLinkButtons,'click',function(event){event.stopPropagation();});SquizAnalyticsMain.makeExpandable(accountsTable,function(rowid,rowElement,expanded){var detailRow=rowElement.nextSibling;if(dfx.hasClass(detailRow,'loaded')===false){self.fillAccountDetailRow(detailRow,rowid);}});SquizAnalyticsMain.makeExpandable(projectsTable);self.fillProjectRows();});},fillAccountDetailRow:function(detailRow,accountid)
{dfx.addClass(detailRow,'loaded');var accountsTableid=this._prefix+'table-'+accountid+'-details';var tableWidget=GUI.getWidget(accountsTableid);var params={accountid:accountid,readOnly:false};var callback=function(){};tableWidget.generateBulkRows(params,callback,'SquizAnalytics','fillAccountProjectData');},fillProjectRows:function()
{var tableid=this._prefix+'table-enabled-projects';var tableEl=dfx.getId(tableid);if(!tableEl){return;}
var tableWidget=GUI.getWidget(tableid);var params={};var self=this;var spinners=dfx.getClass('cell-project-data-loading',tableEl);for(var i=0;i<spinners.length;i++){var projectid=spinners[i].parentNode.getAttribute('rowid');var rowid=projectid;params[rowid]=projectid;}
var needsReloadRows=dfx.getClass('needs-reload',tableEl);for(var i=0;i<needsReloadRows.length;i++){var projectid=needsReloadRows[i].getAttribute('rowid');var rowid=projectid;params[rowid]=projectid;}
this.setProjectTableSave(false);tableWidget.generateRows(params,function(rows){var stillNeedsReload=false;for(var i=0;i<rows.length;i++){var row=rows[i];var projectid=rows[i].getAttribute('rowid');var oldClass='row-'+projectid;var oldRow=dfx.getClass(oldClass,tableEl)[0];dfx.insertAfter(oldRow,row);dfx.remove(oldRow);dfx.removeClass(row,'dynamic-load-project');if(dfx.hasClass(row,'needs-reload')&&(stillNeedsReload===false)){stillNeedsReload=true;window.setTimeout(function(){self.fillProjectRows();},20000);}}
self.setProjectTableSave(true);});},setProjectTableSave:function(status)
{var tableid=this._prefix+'table-enabled-projects';var tableEl=dfx.getId(tableid);var tableWidget=GUI.getWidget(tableid);if(status===true){dfx.removeClass(tableEl,'during-dynamic-load');}else{dfx.addClass(tableEl,'during-dynamic-load');}
if(tableWidget){tableWidget.settings.requiresSave=status;}},addProjectRow:function(accountid,tableid)
{var buttonid=this._prefix+'add-project-'+accountid+'-'+tableid;var button=dfx.getId(buttonid);var td=button.parentNode.parentNode;dfx.addClass(td,'added');var projectsTableid=this._prefix+'table-enabled-projects';var tableWidget=GUI.getWidget(projectsTableid);var params={accountid:accountid,tableid:tableid}
this.setProjectTableSave(true);tableWidget.generateBulkRows(params,function(){var noItemsMsg=dfx.getClass('GUITable-noItemsMsg',dfx.getId(projectsTableid));dfx.remove(noItemsMsg);},'SquizAnalytics','getProjectsTableNewRows');},connectAccount:function()
{var self=this;var redirectUrl=window.location.href.toString().replace(window.location.search,'')+'?sq_oauth_cb=1';var response=GUI.sendRequest('SquizAnalyticsGoogleAccount','startConnectAccount',{'redirectUrl':redirectUrl},function(data){if(data.result.url){window.location.href=data.result.url;}});},confirmAccountDelete:function()
{var bubble=GUI.getWidget(this._prefix+'confirmAccountDelete');var accountsWidget=GUI.getWidget(this._prefix+'table-connected-accounts');var tableRow=dfx.getParents(bubble.targetElement,'tr',dfx.getId(accountsWidget.id))[0];if(tableRow){accountsWidget.toggleRow(tableRow,true);}
bubble.hide();},saved:function()
{GUI.reloadTemplate('SquizAnalytics','ProjectsScreen');}};var SquizAnalyticsProjectsScreenReadOnly={_prefix:'SquizAnalyticsProjectsScreen-',deletedAccounts:{},deletedProjects:{},init:function()
{var self=this;dfx.addLoadEvent(function(){var accountsTable=dfx.getId(self._prefix+'table-connected-accounts');var projectsTable=dfx.getId(self._prefix+'table-enabled-projects');var projectLinkButtons=dfx.getClass('project-link',projectsTable);dfx.addEvent(projectLinkButtons,'click',function(e){e.stopPropagation();});SquizAnalyticsMain.makeExpandable(accountsTable,function(rowid,rowElement,expanded){var detailRow=rowElement.nextSibling;if(dfx.hasClass(detailRow,'deleted')===false){self.fillAccountDetailRow(detailRow,rowid);}});SquizAnalyticsMain.makeExpandable(projectsTable);self.fillProjectRows();});},fillAccountDetailRow:function(detailRow,accountid)
{dfx.addClass(detailRow,'loaded');var accountsTableid=this._prefix+'table-'+accountid+'-details';var tableWidget=GUI.getWidget(accountsTableid);var params={accountid:accountid,readOnly:true};var callback=function(){};tableWidget.generateBulkRows(params,callback,'SquizAnalytics','fillAccountProjectData');},fillProjectRows:function()
{var tableid=this._prefix+'table-enabled-projects';var tableEl=dfx.getId(tableid);if(!tableEl){return;}
var tableWidget=GUI.getWidget(tableid);var params={};var self=this;var spinners=dfx.getClass('cell-project-data-loading',tableEl);for(var i=0;i<spinners.length;i++){var projectid=spinners[i].parentNode.getAttribute('rowid');var rowid=projectid;params[rowid]=projectid;}
var needsReloadRows=dfx.getClass('needs-reload',tableEl);for(var i=0;i<needsReloadRows.length;i++){var projectid=needsReloadRows[i].getAttribute('rowid');var rowid=projectid;params[rowid]=projectid;}
dfx.addClass(tableEl,'during-dynamic-load');tableWidget.generateRows(params,function(rows){var stillNeedsReload=false;for(var i=0;i<rows.length;i++){var row=rows[i];var projectid=rows[i].getAttribute('rowid');var oldClass='row-'+projectid;var oldRow=dfx.getClass(oldClass,tableEl)[0];dfx.insertAfter(oldRow,row);dfx.remove(oldRow);dfx.removeClass(row,'dynamic-load-project');if(dfx.hasClass(row,'needs-reload')&&(stillNeedsReload===false)){stillNeedsReload=true;window.setTimeout(function(){self.fillProjectRows();},20000);}}
dfx.removeClass(tableEl,'during-dynamic-load');});},};function SquizAnalyticsContextSelector(id,settings)
{this.id=id;this.settings=settings;this.init();}
SquizAnalyticsContextSelector.prototype={init:function()
{var self=this;var contextSelects=dfx.getClass('GUISelect',dfx.getId(this.id));var options=dfx.getTag('option',contextSelects);var numOptions=options.length;for(var i=0;i<numOptions;i++){var option=options[i];if(option.value==='00'){dfx.addClass(option,'master');}}
var selectWidgetids=[this.id+'-level-1',this.id+'-level-2',this.id+'-level-3'];var numWidgets=selectWidgetids.length;for(var i=0;i<numWidgets;i++){var selectWidget=GUI.getWidget(selectWidgetids[i]);var widgetEl=dfx.getId(selectWidget.id);var widgetValue=selectWidget.getValue();if((widgetValue.length===1)&&(widgetValue[0]==='00')){dfx.addClass(widgetEl,'master');}else{dfx.removeClass(widgetEl,'master');}
selectWidget.addChangedCallback(function(){var widgetEl=dfx.getId(this.id);var widgetValue=this.getValue();if((widgetValue.length===1)&&(widgetValue[0]==='00')){dfx.addClass(widgetEl,'master');}else{dfx.removeClass(widgetEl,'master');}
self._setModified.call(self);});}},getValue:function()
{var contextid='00';var selectWidgetids=[this.id+'-level-3',this.id+'-level-2',this.id+'-level-1'];var numWidgets=selectWidgetids.length;for(var i=0;i<numWidgets;i++){var selectWidget=GUI.getWidget(selectWidgetids[i]);var widgetValue=selectWidget.getValue();contextid+=widgetValue[0];}
return contextid;},setValue:function(newContext)
{newContext=newContext.substr(2);var selectWidgetids=[this.id+'-level-3',this.id+'-level-2',this.id+'-level-1'];var numWidgets=selectWidgetids.length;for(var i=0;i<numWidgets;i++){var contextPart=newContext.substr(0,2);var selectWidget=GUI.getWidget(selectWidgetids[i]);selectWidget.setValue([contextPart]);newContext=newContext.substr(2);}},_setModified:function(status)
{var selectWidgetids=[this.id+'-level-1',this.id+'-level-2',this.id+'-level-3'];var numWidgets=selectWidgetids.length;for(var i=0;i<numWidgets;i++){var selectWidget=GUI.getWidget(selectWidgetids[i]);GUI.setModified(selectWidget,false);}
if(this.settings.requiresSave===false){return;}
if(this.settings.enablesSaveButton===false){GUI.setModified(this,status,true);}else{GUI.setModified(this,status,false);}}};var SquizAnalyticsGoalsGoalEdit={prefix:'SquizAnalyticsGoalsGoalEdit-',currentGoalid:null,currentGoalType:null,currentPageName:null,loadedTemplates:[],loadWhenClosed:null,initEvents:function()
{var self=this;var switcherId=this.prefix+'switcher-goal-type';dfx.addEvent(dfx.getId(switcherId),'click',function(e){var target=dfx.getMouseEventTarget(e);var divs=dfx.getParents(target,'div',dfx.getId(self.prefix+'dialog'));divs.unshift(target);for(var i=0;i<divs.length;i++){var goalType=dfx.attr(divs[i],'goalType');if(goalType!==undefined){self.changeGoalType.call(self,goalType);self.showPage.call(self,'details');}}});},showPage:function(pageName){var topPages=dfx.getClass('SquizAnalyticsGoalsGoalEdit-dialog-wrapper');if(self.currentPageName!==null){dfx.removeClass(topPages,'showing-'+self.currentPageName);}
dfx.addClass(topPages,'showing-'+pageName);self.currentPageName=pageName;},changeGoalType:function(goalType)
{var goalTypeDiv=dfx.getId('SquizAnalyticsGoalsGoalEdit-dialog-goal-details');if(self.currentGoalType!==null){dfx.removeClass(goalTypeDiv,'goal-type-'+self.currentGoalType);}
if(goalType!==null){dfx.addClass(goalTypeDiv,'goal-type-'+goalType);}
self.currentGoalType=goalType;},resetDialog:function()
{var templateValues=GUI.getTemplateWidgetValues('SquizAnalyticsGoals','GoalEdit');for(widgetid in templateValues){var widget=GUI.getWidget(widgetid);if(widget&&(dfx.isFn(widget.revert)===true)){widget.revert();}}
this.changeGoalType(null);this.showPage('goal-type');},getWidgetValues:function()
{var value={};var widgetValues=GUI.getTemplateWidgetValues('SquizAnalyticsGoals','GoalEdit');var currentModeid=currentGoalType;currentModeid=currentModeid.replace(/([A-Z])/g,'-$1').toLowerCase();var widgetPrefix=this.prefix+'settings-'+currentModeid+'-';value.currentGoalid=this.currentGoalid;value.goalType=currentModeid.replace(/(\-)/g,' ');value.widgets={};for(widgetid in widgetValues){if(widgetid.substr(0,widgetPrefix.length)===widgetPrefix){var widgetSuffix=widgetid.substr(widgetPrefix.length);value.widgets[widgetSuffix]=widgetValues[widgetid];}}
return value;},finishDialog:function()
{var self=this;var value=this.getWidgetValues();GUI.sendRequest('SquizAnalyticsGoals','saveGoalEdit',{data:dfx.jsonEncode(value)},function(data){if(data.result){if(data.result.success){var success=data.result.success;if(self.loadWhenClosed===null){self.loadWhenClosed=success.goalid;}else{self.loadWhenClosed=0;}
var goalType=success.goalType;if(success.goalType==='destination'){var paths=success.definition.paths;if(paths.length===1){goalType+=' single';}else{goalType+=' multi';}}
SquizAnalyticsGoalsGoals.updateCurrentGoalsRow(success.goalid);if(success.created===true){var goalNameSpan=dfx.getId(self.prefix+'added-goal-name');dfx.setNodeTextContent(goalNameSpan,success.goalName);self.showPage.call(self,'added');}else{var goalNameSpan=dfx.getId(self.prefix+'edited-goal-name');dfx.setNodeTextContent(goalNameSpan,success.goalName);if(success.updated===true){var goalChangedText=dfx.getId(self.prefix+'edited-goal-changed');dfx.setStyle(goalChangedText,'display','none');}
self.showPage.call(self,'edited');}}else if(data.result.errors){GUI.Overlay.show('warning',{content:data.result.errorList});var overlayDiv=dfx.getId('GUI-overlay');var dialogDiv=dfx.getClass('GUIDialog')[0];var oldZindex=dfx.getStyle(overlayDiv,'z-index');dfx.setStyle(overlayDiv,'z-index',parseInt(dfx.getStyle(dialogDiv,'z-index'),10)+1);var returnBtn=dfx.getId('GUI-save-returnButton');var onclickFn=dfx.attr(returnBtn,'onclick');dfx.attr(returnBtn,'onclick','');dfx.addEvent(returnBtn,'click',function(){onclickFn.call(returnBtn);dfx.setStyle(overlayDiv,'z-index',oldZindex);});}}else if(data.exception){GUI.message('developer',data.exception);}else{GUI.message('developer','Server unreachable');}});},closeDialog:function()
{GUI.getWidget(this.prefix+'dialog').close();if(this.loadWhenClosed===0){GUI.reloadTemplate('SquizAnalyticsGoals','Goals');}else if(this.loadWhenClosed!==null){SquizAnalyticsGoalsGoals.loadGoalScreen(this.loadWhenClosed);}},openDialog:function(currentGoalid,initialGoalType)
{this.currentGoalid=currentGoalid;this.loadWhenClosed=null;initialGoalType=initialGoalType||null;if(currentGoalid!=='new'){var goalTypeParts=initialGoalType.split(/\s/);var initialGoalType=goalTypeParts[0];var numGoalTypeParts=goalTypeParts.length;for(var i=1;i<numGoalTypeParts;i++){initialGoalType+=goalTypeParts[i].substr(0,1).toUpperCase()+goalTypeParts[i].substr(1);}
this.changeGoalType(initialGoalType);this.showPage('details');}else{this.showPage('goal-type');}}};var SquizAnalyticsGoalsGoalTypeDestination={prefix:'SquizAnalyticsGoalsGoalEdit-settings-destination-',initEvents:function()
{var self=this;var pathsId=this.prefix+'required-urls';var pathsWidget=GUI.getWidget(pathsId);pathsWidget.setItemValueGetter(function(itemid){var widgetid=pathsId+'-'+itemid;return GUI.getWidget(widgetid).getValue();});var makeNewRow=function(input){var row=input.parentNode.parentNode.parentNode;if(dfx.hasClass(row,'new-row')===true){console.info('New row clicked');dfx.removeClass(row,'new-row');dfx.addClass(row,'sortable');var widget=GUI.getWidget(input.parentNode.id);widget.settings.hint='';widget.removeHint();dfx.removeEvent(dfx.getId(input.parentNode.id),'focus');var rowid='r'+dfx.getTag('li',row.parentNode).length;var items={};items[rowid]={'path':'','new':true,};pathsWidget.generateItems(items,function(){var newInputid=pathsId+'-'+rowid+'-input';dfx.addEvent(dfx.getId(newInputid),'focus',function(e){makeNewRow(e.target);});});}};dfx.addEvent(dfx.getId(pathsId),'click',function(e){var target=dfx.getMouseEventTarget(e);if(target.nodeName.toLowerCase()==='input'){makeNewRow(target);}});var lastRowid=dfx.getTag('li',dfx.getId(pathsId)).length-1;var lastInputid=pathsId+'-r'+lastRowid+'-input';dfx.addEvent(dfx.getId(lastInputid),'focus',function(e){makeNewRow(e.target);});},};var SquizAnalyticsGoalsGoals=new function(){this.pollTimeoutId=null;var self=this;this.loadGoalScreen=function(goalid)
{var goalsTableWidget=GUI.getWidget('Goals-table-current-goals');goalsTableWidget.settings.selectable=false;var params={currentGoal:goalid};var options={targetElement:dfx.getClass('page-right',dfx.getId('SquizAnalyticsGoals'))[0]};dfx.setHtml(options.targetElement,'');GUI.unloadTemplate('SquizAnalyticsGoals','SingleGoal');GUI.loadTemplate('SquizAnalyticsGoals','SingleGoal',params,function(){goalsTableWidget.settings.selectable=true;if(goalid!=='new'){var currentGoalsBody=dfx.getTag('tbody',dfx.getId('Goals-table-current-goals'))[0];var goalRow=dfx.getClass('row-goal-'+goalid,currentGoalsBody)[0];if(dfx.getClass('spinner',goalRow).length>0){self.pollCurrentGoalStatus.call(self);}}},options);};this.initEvents=function()
{dfx.addLoadEvent(function(){var goalsTableWidget=GUI.getWidget('Goals-table-current-goals');goalsTableWidget.addRowClickedCallback(function(rowid,rowElement){if(this.settings.selectable===true){var goalid=rowid.replace(/^goal\-(\d+)$/,'$1');self.loadGoalScreen.call(self,goalid);}});var summaryDivs=dfx.getClass('Goals-summary-column');var heights=[];var maxHeight=0;dfx.foreach(summaryDivs,function(itemid){heights[itemid]=dfx.getElementHeight(summaryDivs[itemid]);maxHeight=Math.max(maxHeight,heights[itemid]);});dfx.foreach(summaryDivs,function(itemid){var boxes=dfx.getClass('GUIBox-content',summaryDivs[itemid]);if(boxes.length>0){var heightDiff=((maxHeight-heights[itemid])/boxes.length);dfx.foreach(boxes,function(boxid){var height=(dfx.getElementHeight(boxes[boxid])-6);dfx.setStyles(boxes[boxid],'height',(height+heightDiff)+'px');});}});if(dfx.getClass('spinner',dfx.getId(goalsTableWidget.id)).length>0){self.pollCurrentGoalStatus.call(self);}
var switcher=GUI.getWidget('SquizAnalyticsGoals-content-switcher-overlay');if(switcher){SquizAnalyticsMain.makeSwitchable(switcher,dfx.getId('SquizAnalyticsGoals-graph-body'));}});};this.updateCurrentGoalsRow=function(goalid)
{var rowid='goal-'+goalid;var currentGoalsWidget=GUI.getWidget('Goals-table-current-goals');var currentGoalRows=dfx.find(dfx.getId(currentGoalsWidget.id),'tr[rowid='+rowid+']');if(currentGoalRows.length===0){var params={};params[rowid]=goalid;currentGoalsWidget.generateRows(params,function(){});}else{var currentGoalRow=currentGoalRows[0];var columnPrefix=currentGoalsWidget.id+'-'+rowid+'-';var params={goalid:goalid,rowid:rowid};GUI.sendRequest('SquizAnalyticsGoals','generateCurrentGoalsRow',params,function(data){var nameColumn=dfx.find(dfx.getId(currentGoalsWidget.id),'td[colid='+columnPrefix+'name] div.GUITable-colWrapper')[0];var convColumn=dfx.find(dfx.getId(currentGoalsWidget.id),'td[colid='+columnPrefix+'conversions] div.GUITable-colWrapper')[0];dfx.setHtml(nameColumn,data.result.name);dfx.setHtml(convColumn,data.result.conversions);});}};this.removeCurrentGoalsTableRow=function(goalid)
{var retval=false;var currentGoalsTable=dfx.getId('Goals-table-current-goals');var goalRows=dfx.getClass('row-goal-'+goalid,currentGoalsTable);if(goalRows.length>0){dfx.remove(goalRows);}
return true;};this.getValue=function()
{var value={};return value;};this.saved=function(data)
{if(data.goalid){var goalid=data.goalid;this.loadGoalScreen(goalid);}};this.openAddGoalDialog=function(goalid,initialGoalType)
{initialGoalType=initialGoalType||null;var params={currentGoal:goalid};var options={modal:true,dialog:{dialogid:'SquizAnalyticsGoalsGoalEdit-dialog'}};GUI.loadTemplate('SquizAnalyticsGoals','GoalEdit',params,function(){SquizAnalyticsGoalsGoalEdit.openDialog(goalid,initialGoalType);GUI.getWidget('SquizAnalyticsGoalsGoalEdit-dialog').addDialogClosedCallback(function(){GUI.unloadTemplate('SquizAnalyticsGoals','GoalEdit');});},options);};this.pollCurrentGoalStatus=function()
{var currentGoalsBody=dfx.getTag('tbody',dfx.getId('Goals-table-current-goals'))[0];var goalRows=dfx.getTag('tr',currentGoalsBody);var numGoalRows=goalRows.length;if(self.pollTimeoutId!==null){window.clearTimeout(self.pollTimeoutId);self.pollTimeoutId=null;}
var goalsToPoll=[];for(var i=0;i<numGoalRows;i++){var goalid=dfx.attr(goalRows[i],'rowid').replace(/^goal-/,'');if(dfx.getClass('spinner',goalRows[i]).length>0){goalsToPoll.push(goalid);}}
if(goalsToPoll.length>0){var params={goalids:dfx.jsonEncode(goalsToPoll)};GUI.sendRequest('SquizAnalyticsGoals','getGoalActiveStatuses',params,function(data){if(data.result){for(var resultGoalid in data.result){var goalResult=data.result[resultGoalid];var goalRow=dfx.getClass('row-goal-'+resultGoalid,currentGoalsBody)[0];if(goalResult.status===true){var spinner=dfx.getClass('spinner',goalRow)[0];var convSpan=document.createElement('span');dfx.addClass(convSpan,'GUI-focusTag');dfx.setNodeTextContent(convSpan,goalResult.conversions);dfx.prepend(spinner.parentNode,convSpan);dfx.remove(spinner);}}}
if(dfx.getClass('spinner',currentGoalsBody).length>0){self.pollTimeoutId=window.setTimeout(function(){self.pollCurrentGoalStatus.call(self);},60000);}},'json');}};};var SquizAnalyticsGoalsSingleGoal={currentGoalid:null,initEvents:function(currentGoalid)
{var self=this;dfx.addLoadEvent(function(){var detailsBox=dfx.getId('SingleGoal-box-goal-details');var goalDeleteIcon=dfx.getId('SingleGoal-goal-delete-icon');dfx.addEvent(goalDeleteIcon,'click',self.toggleDelete);self.currentGoalid=currentGoalid;var recommendationsTable=dfx.getId('SingleGoal-table-recommendations');if(recommendationsTable){var recommendationsOddRows=dfx.getClass('rowOdd',recommendationsTable);dfx.addEvent(recommendationsOddRows,'click',self.toggleNextRow);}
if(dfx.getId('SquizAnalyticsGoalsSingleGoal-no-data')){self.pollGoalStatus.call(self);}
var switcher=GUI.getWidget('SquizAnalyticsGoalsSingleGoal-content-switcher-overlay');if(switcher){SquizAnalyticsMain.makeSwitchable(switcher,dfx.getId('SquizAnalyticsGoalsSingleGoal-graph-body'));}});},toggleRecommendations:function(event)
{var detailsBox=dfx.getId('SingleGoal-box-goal-details');dfx.toggleClass(detailsBox,'recsShown');},toggleDelete:function(event)
{var detailsBox=dfx.getId('SingleGoal-box-goal-details');dfx.toggleClass(detailsBox,'deleted');GUI.setTemplateModified('SquizAnalyticsGoals','SingleGoal',true);var statsDiv=dfx.getId('SingleGoal-stats');if(statsDiv){var boxes=dfx.getClass('GUIBox',statsDiv);dfx.toggleClass(boxes,'GUIBox-faded');}},toggleNextRow:function(event)
{var detailRow=dfx.getNextNode(event.currentTarget);dfx.toggleClass(event.currentTarget,'expanded');dfx.toggleClass(detailRow,'expanded');event.stopPropagation();},getValue:function()
{var result={goalid:this.currentGoalid,settings:{}};var detailsBox=dfx.getId('SingleGoal-box-goal-details');if(dfx.hasClass(detailsBox,'deleted')===true){result.deleted=true;}
return result;},saved:function(data)
{if(data.deletedGoalid){SquizAnalyticsGoalsGoals.removeCurrentGoalsTableRow(data.deletedGoalid);GUI.reloadTemplate('SquizAnalyticsGoals','Goals');}},revert:function()
{var detailsBox=dfx.getId('SingleGoal-box-goal-details');dfx.removeClass(detailsBox,'deleted');var statsDiv=dfx.getId('SingleGoal-stats');if(statsDiv){var boxes=dfx.getClass('GUIBox',statsDiv);dfx.removeClass(boxes,'GUIBox-faded');}},pollGoalStatus:function()
{var self=this;var timeoutFn=function(){self.pollGoalStatus.call(self);};var params={goalid:self.currentGoalid};GUI.sendRequest('SquizAnalyticsGoals','getGoalReCacheStatus',params,function(data){var resetTimeout=true;var noDataDiv=dfx.getId('SquizAnalyticsGoalsSingleGoal-no-data');if(data.result){if(data.result.goalActive===true){resetTimeout=false;dfx.addClass(noDataDiv,'report-done');dfx.removeClass(noDataDiv,'report-not-done');SquizAnalyticsGoalsGoals.pollCurrentGoalStatus.call(SquizAnalyticsGoalsGoals);}else{var progressPar=dfx.getClass('percent',noDataDiv)[0];var progressSpan=dfx.getClass('pct-value',progressPar)[0];dfx.setNodeTextContent(progressSpan,Math.floor((data.result.completed/data.result.total*100.0)));dfx.setStyle(progressPar,'display','block');}}
if(resetTimeout===true){window.setTimeout(function(){self.pollGoalStatus.call(self);},10000);}},'json');}};var SquizAnalyticsReportsContentScreen={initEvents:function(info)
{var self=this;SquizAnalyticsMain.makeSwitchable(GUI.getWidget('SquizAnalyticsReportsContentScreen-content-switcher'),dfx.getId('SquizAnalyticsReportsContentScreen-body'));this.resetDrilldownExpandableRows();var lineageWidget=GUI.getWidget('SquizAnalyticsReportsContentScreen-lineage-content-drilldown');lineageWidget.addItemClickedCallback(function(itemid,index,listItem){var listElem=lineageWidget.listElem;var nodes=dfx.getTag('li',listElem);var numNodes=nodes.length;if(index<(numNodes-1)){var rootPath=undefined;for(var i=0;i<numNodes;i++){if(i>index){dfx.remove(nodes[i]);}else if(i===index){rootPath=dfx.attr(nodes[i],'itemid');if(rootPath==='root'){rootPath='';}else{rootPath=rootPath.replace(/^root\/(.*)$/,'/$1');}}}
self.updateDrilldownTable();}});},resetDrilldownExpandableRows:function()
{var self=this;var drilldownTable=dfx.getId('SquizAnalyticsReportsContentScreen-table-content-drilldown');var drilldownBody=dfx.getTag('tbody',drilldownTable);var drilldownRows=dfx.getTag('tr',drilldownBody);var lineageWidget=GUI.getWidget('SquizAnalyticsReportsContentScreen-lineage-content-drilldown');dfx.addEvent(dfx.getClass('expandable-row',drilldownBody),'click',function(event){var row=event.currentTarget;var path=dfx.getNodeTextContent(dfx.getClass('GUI-textOverflow-text',dfx.getClass('col-item-name',row)));var lineage={};var listElem=lineageWidget.listElem;var lastItemid=undefined;var nodes=dfx.getTag('li',listElem);var numNodes=nodes.length;for(var i=0;i<numNodes;i++){var node=nodes[i];var itemid=dfx.attr(node,'itemid');var itemName=dfx.getNodeTextContent(dfx.getTag('a',node)[0]);lineage[itemid]=itemName;lastItemid=itemid;}
if(path==='/'){lineage[lastItemid+path]=path;}else{lineage[lastItemid+path]=path.substr(1);}
lineageWidget.setLineage(lineage);self.updateDrilldownTable();event.stopPropagation();});},updateDrilldownTable:function()
{var self=this;var drilldownTable=dfx.getId('SquizAnalyticsReportsContentScreen-table-content-drilldown');var drilldownBody=dfx.getTag('tbody',drilldownTable)[0];var existingRows=dfx.getTag('tr',drilldownBody);var lineageWidget=GUI.getWidget('SquizAnalyticsReportsContentScreen-lineage-content-drilldown');var listElem=lineageWidget.listElem;var nodes=dfx.getTag('li',listElem);var rootPath=dfx.attr(nodes[(nodes.length-1)],'itemid');if(rootPath==='root'){rootPath='';}else{rootPath=rootPath.replace(/^root\/(.*)$/,'/$1');}
var params={'rootPath':rootPath};var overlayDiv=document.createElement('div');dfx.addClass(overlayDiv,'SquizAnalyticsReportsContentScreen-overlay-content-drilldown');dfx.setStyle(overlayDiv,'left',dfx.getElementCoords(drilldownTable).x);dfx.setStyle(overlayDiv,'top',dfx.getElementCoords(lineageWidget.listElem).y);dfx.setStyle(overlayDiv,'height',dfx.getElementDimensions(lineageWidget.listElem).height+dfx.getElementDimensions(drilldownTable).height);dfx.setStyle(overlayDiv,'width',dfx.getElementDimensions(drilldownTable).width);dfx.append(document.body,overlayDiv);var callback=function(){GUI.setModified(this,false);dfx.remove(existingRows);dfx.remove(overlayDiv);self.resetDrilldownExpandableRows();};var tableWidget=GUI.getWidget(drilldownTable.id);tableWidget.generateBulkRows(params,callback,'SquizAnalyticsReports','getContentDrilldownReportTableData');var loadingRow=dfx.getClass('loadingRow',drilldownBody);dfx.setStyle(loadingRow,'display','none');}};var SquizAnalyticsReportsReports={makeExpandable:function(tables)
{if((tables instanceof Array)===false){tables=[tables];}
for(var i=0;i<tables.length;i++){dfx.addEvent(dfx.getTag('tbody',tables[i]),'click',function(e){var target=dfx.getMouseEventTarget(e);if(target.nodeName.toLowerCase()!=='tr'){target=dfx.getParents(target,'tr',tables[i])[0];}
if((dfx.hasClass(target,'major-row')===true)&&(dfx.hasClass(target,'expandable')===true)){dfx.toggleClass(target,'expanded');var minorRow=dfx.getNextNode(target);while((minorRow)&&(dfx.hasClass(minorRow,'minor-row'))){dfx.toggleClass(minorRow,'expanded');var minorRow=dfx.getNextNode(minorRow);}
e.stopPropagation();}});}},getPathState:function(){var retval=[];var screenSwitcher=GUI.getWidget('SquizAnalyticsReports-screen-switcher');var screenName=screenSwitcher.current.template.replace(/Screen$/,'').replace(/([^A-Z])([A-Z])/g,'$1-$2').toLowerCase();retval.push(screenName);var templateClassName=screenSwitcher.current.system+screenSwitcher.current.template;var extraPath=null;if(eval('typeof '+templateClassName)!=='undefined'){var templateClass=eval(templateClassName);if(dfx.isFn(templateClass.getPathState)){var extraPath=templateClass.getPathState();}}
if(extraPath===null){var subWidgetId=templateClassName+'-content-switcher';var subWidget=GUI.getWidget(subWidgetId);if(subWidget){extraPath=[subWidget.current.template];}}
if(extraPath!==null){retval=retval.concat(extraPath);}
return retval;}};var SquizAnalyticsReportsTechScreen={initEvents:function(info)
{var widget=GUI.getWidget(info.subSwitcherid);var mainContainer=dfx.getId(info.mainSwitcherid+'-itemContents');widget.addItemChangedCallback(function(itemid){if(itemid==='mobile'){dfx.addClass(dfx.getClass('SquizAnalyticsReportsTechScreen-tables-desktop',mainContainer),'hidden');dfx.removeClass(dfx.getClass('SquizAnalyticsReportsTechScreen-tables-mobile',mainContainer),'hidden');}else if(itemid==='desktop'){dfx.addClass(dfx.getClass('SquizAnalyticsReportsTechScreen-tables-mobile',mainContainer),'hidden');dfx.removeClass(dfx.getClass('SquizAnalyticsReportsTechScreen-tables-desktop',mainContainer),'hidden');}});var boxContents=dfx.getId('SquizAnalyticsReportsTechScreen-box');var techBodies=dfx.getTag('tbody',boxContents);var techRows=dfx.getTag('tr',techBodies);dfx.addEvent(dfx.getClass('major-row expandable',techBodies),'click',function(event){var targetRow=event.currentTarget;dfx.toggleClass(targetRow,'expanded');var nextRow=dfx.getNextNode(targetRow);while((nextRow)&&(dfx.hasClass(nextRow,'minor-row'))){dfx.toggleClass(nextRow,'expanded');var nextRow=dfx.getNextNode(nextRow);}
event.stopPropagation();});},getPathState:function(){var platformSwitcher=GUI.getWidget('SquizAnalyticsReportsTechScreen-content-switcher-platform');var typeSwitcher=GUI.getWidget('SquizAnalyticsReportsTechScreen-content-switcher-type');var pathState=[typeSwitcher.current.template.replace(/^type/,'').toLowerCase(),platformSwitcher.current.template.replace(/^platform/,'').toLowerCase()];return pathState;}};var SquizAnalyticsReportsVisitorsScreen={browserClicked:function()
{var clicked=true;var interval=null;dfx.trigger(dfx.getId('SquizAnalyticsReports-screen-switcher-TechScreen'),'click');interval=setInterval(function(){var elem=dfx.getId('SquizAnalyticsReportsTechScreen-content-switcher-type-link-typeBrowser');if(elem){dfx.trigger(elem,'click');clearInterval(interval);}},500);},osClicked:function()
{dfx.trigger(dfx.getId('SquizAnalyticsReports-screen-switcher-TechScreen'),'click');},mobileClicked:function()
{var clicked=true;var interval=null;dfx.trigger(dfx.getId('SquizAnalyticsReports-screen-switcher-TechScreen'),'click');interval=setInterval(function(){var elem=dfx.getId('SquizAnalyticsReportsTechScreen-content-switcher-platform-link-platformMobile');if(elem){dfx.trigger(elem,'click');clearInterval(interval);}},500);}};var SquizAnalyticsTestsNewTest={prefix:'SquizAnalyticsTestsNewTest-',countVariations:null,initEvents:function()
{var self=this;var varWidgetid=this.prefix+'list-variations';var masterRow=dfx.find(dfx.getId(varWidgetid),'li[itemid="master"]')[0];dfx.setStyle(dfx.getClass('GUI-delete',masterRow),'display','none');this.countVariations=dfx.getTag('li',dfx.getId(varWidgetid)).length;if(this.countVariations>=5){var newButton=dfx.getId(this.prefix+'button-new-variation');dfx.toggleClass(newButton,'disabled');newButton.disabled=true;}},addVariation:function()
{var rowid='new-'+dfx.getUniqueId();var varWidgetid=this.prefix+'list-variations';var position=this.countVariations+1;var variationsWidget=GUI.getWidget(varWidgetid);var items={};items['row-'+rowid]={testid:'new',varid:rowid,position:position};variationsWidget.generateItems(items);var variationsEl=dfx.getId(varWidgetid);var listItems=dfx.getTag('li',variationsEl);this.countVariations++;if(this.countVariations>=5){var newButton=dfx.getId(this.prefix+'button-new-variation');dfx.toggleClass(newButton,'disabled');newButton.disabled=true;}},toggleSchedule:function()
{var value=GUI.getWidget('SquizAnalyticsTestsNewTest-schedule').currentValue;var scheduleDiv=dfx.getId('SquizAnalyticsTestsNewTest-schedule-line');if(value===true){dfx.removeClass(scheduleDiv,'unscheduled');}else{dfx.addClass(scheduleDiv,'unscheduled');}},getVariations:function()
{var vars=[];var varWidgetid=this.prefix+'list-variations';var listItems=GUI.getWidget(varWidgetid).getValue().items;for(var listItem in listItems){if(listItem!=='master'){var textWidgetid=this.prefix+listItem+'-name';var contextWidgetid=this.prefix+listItem+'-context';vars.push({name:GUI.getWidget(textWidgetid).getValue(),context:GUI.getWidget(contextWidgetid).getValue()});}}
return vars;},getValue:function()
{var value={};value.name=GUI.getWidget(this.prefix+'textbox-test-name').getValue();value.url=GUI.getWidget(this.prefix+'textbox-test-url').getValue();value.variations=this.getVariations();value.schedule=GUI.getWidget(this.prefix+'schedule').getValue();if(value.schedule===true){value.startDate=GUI.getWidget(this.prefix+'start-date').getValue();value.duration=GUI.getWidget(this.prefix+'duration').getValue();}else{value.startDate=null;value.duration=null;}
return value;},resetDialog:function()
{var templateValues=GUI.getTemplateWidgetValues('SquizAnalyticsTests','NewTest');for(widgetid in templateValues){var widget=GUI.getWidget(widgetid);if(widget&&(dfx.isFn(widget.revert)===true)){widget.revert();}}
dfx.addClass(dfx.getClass('SquizAnalyticsTestsNewTest-dialog-wrapper'),'showing-details');dfx.removeClass(dfx.getClass('SquizAnalyticsTestsNewTest-dialog-wrapper'),'showing-added');},finishDialog:function()
{var self=this;GUI.sendRequest('SquizAnalyticsTests','saveNewTest',{value:dfx.jsonEncode(this.getValue())},function(data){if(data.result.success){dfx.addClass(dfx.getClass('SquizAnalyticsTestsNewTest-dialog-wrapper'),'showing-added');dfx.removeClass(dfx.getClass('SquizAnalyticsTestsNewTest-dialog-wrapper'),'showing-details');dfx.setNodeTextContent(dfx.getId(self.prefix+'added-test-name'),data.result.success.name);SquizAnalyticsTestsTests.updateCurrentTestRow(data.result.success.testid,'active');}else if(data.result.errors){GUI.Overlay.show('warning',{content:data.result.errorList});var overlayDiv=dfx.getId('GUI-overlay');var dialogDiv=dfx.getClass('GUIDialog')[0];var oldZindex=dfx.getStyle(overlayDiv,'z-index');dfx.setStyle(overlayDiv,'z-index',parseInt(dfx.getStyle(dialogDiv,'z-index'),10)+1);var returnBtn=dfx.getId('GUI-save-returnButton');var onclickFn=dfx.attr(returnBtn,'onclick');dfx.attr(returnBtn,'onclick','');dfx.addEvent(returnBtn,'click',function(){onclickFn.call(returnBtn);dfx.setStyle(overlayDiv,'z-index',oldZindex);});}else if(data.exception){GUI.message('developer',data.exception);}else{GUI.message('developer','Server unreachable.');}});},closeDialog:function()
{GUI.getWidget(this.prefix+'dialog').close();GUI.revert();GUI.reloadTemplate('SquizAnalyticsTests','Tests');}};var SquizAnalyticsTestsSingleTest={prefix:'SquizAnalyticsTestsSingleTest-',currentTestid:null,countVariations:null,initEvents:function(testid)
{var self=this;this.currentTestid=testid;var drillDownTable=dfx.getId(this.prefix+'conv-table');var drillDownBody=dfx.getTag('tbody',drillDownTable)[0];var drillDownRows=dfx.getTag('tr',drillDownRows);dfx.addEvent(drillDownRows,'mouseover',function(event){var rowid=this.getAttribute('rowid');var pieGraph=dfx.getId(self.prefix+'drill-down-pie-for-'+rowid);dfx.addClass(pieGraph,'hover');dfx.addClass(this,'hover');});dfx.addEvent(drillDownRows,'mouseout',function(event){var rowid=this.getAttribute('rowid');var pieGraph=dfx.getId(self.prefix+'drill-down-pie-for-'+rowid);dfx.removeClass(pieGraph,'hover');dfx.removeClass(this,'hover');});var stopTestButton=dfx.getId(this.prefix+'button-stop-test-now');var stopTestBubble=GUI.getWidget(this.prefix+'iv-confirmStopTestNow');dfx.addEvent(stopTestButton,'click',function(){stopTestBubble.show(stopTestButton);});var drillDownBox=dfx.getId(this.prefix+'section-details');var drillDownContents=dfx.getClass('GUIBox-content',drillDownBox);var numPieBoxes=drillDownContents.length;for(var j=0;j<numPieBoxes;j++){var drillDownC=drillDownContents[j];var drillDownPies=dfx.getClass('GUIGraphPie-container',drillDownC);var numPies=drillDownPies.length;var newHeight=(parseInt(dfx.getStyle(drillDownC,'height'),10)-15);for(var i=0;i<numPies;i++){var ddPie=drillDownPies[i];dfx.setStyle(ddPie,'height',newHeight+'px');}}
var varWidgetid=this.prefix+'list-variations';var masterRow=dfx.find(dfx.getId(varWidgetid),'li[itemid="master"]')[0];dfx.setStyle(dfx.getClass('GUI-delete',masterRow),'display','none');this.countVariations=dfx.getTag('li',dfx.getId(varWidgetid)).length;if(this.countVariations>=5){var newButton=dfx.getId(this.prefix+'button-new-variation');dfx.toggleClass(newButton,'disabled');newButton.disabled=true;}
var testDeleteIcon=dfx.getId(this.prefix+'test-delete-icon');dfx.addEvent(testDeleteIcon,'click',function(){self.toggleDelete.call(self);});},addVariation:function()
{var rowid='new-'+dfx.getUniqueId();var varWidgetid=this.prefix+'list-variations';var position=this.countVariations+1;var variationsWidget=GUI.getWidget(varWidgetid);var items={};items['row-'+rowid]={testid:this.currentTestid,varid:rowid,position:position};variationsWidget.generateItems(items);var variationsEl=dfx.getId(varWidgetid);var listItems=dfx.getTag('li',variationsEl);this.countVariations++;if(this.countVariations>=5){var newButton=dfx.getId(this.prefix+'button-new-variation');dfx.toggleClass(newButton,'disabled');newButton.disabled=true;}},toggleDelete:function(event)
{var detailsBox=dfx.getId(this.prefix+'box-editor');dfx.toggleClass(detailsBox,'deleted');GUI.setTemplateModified('SquizAnalyticsTests','SingleTest',true);var statsDiv=dfx.getId(this.prefix+'section-details');if(statsDiv){var boxes=dfx.getClass('GUIBox',statsDiv);dfx.toggleClass(boxes,'GUIBox-faded');}},toggleDetails:function(event)
{var detailsBox=dfx.getId(this.prefix+'box-editor');dfx.toggleClass(detailsBox,'detailsShown');},toggleSchedule:function()
{var value=GUI.getWidget('SquizAnalyticsTestsSingleTest-schedule').currentValue;var scheduleDiv=dfx.getId('SquizAnalyticsTestsSingleTest-schedule-line');if(value===true){dfx.removeClass(scheduleDiv,'unscheduled');}else{dfx.addClass(scheduleDiv,'unscheduled');}},toggleDisable:function(event)
{var varWidgetid=this.prefix+'list-variations';var varList=dfx.getId(varWidgetid);var settingsDiv=dfx.getId(this.prefix+'editor-section-settings');dfx.toggleClass(varList,'deletable');if(dfx.hasClass(varList,'deletable')===true){dfx.attr(dfx.getTag('input',settingsDiv),'disabled',null);dfx.attr(dfx.getTag('select',settingsDiv),'disabled',null);dfx.setStyle(dfx.getTag('button',settingsDiv),'visibility','visible');}else{dfx.attr(dfx.getTag('input',settingsDiv),'disabled','disabled');dfx.attr(dfx.getTag('select',settingsDiv),'disabled','disabled');dfx.setStyle(dfx.getTag('button',settingsDiv),'visibility','hidden');}},selectStatusLine:function(lineid)
{var statusLines=dfx.getClass(this.prefix+'editor-status');var numLines=statusLines.length;for(var i=0;i<numLines;i++){var statusLine=statusLines[i];if(dfx.hasClass(statusLine,lineid)===true){dfx.addClass(statusLine,'selected');}else{dfx.removeClass(statusLine,'selected');}}},getValue:function()
{var result={testid:this.currentTestid,settings:{},deleted:false};var detailsBox=dfx.getId(this.prefix+'box-editor');if(dfx.hasClass(detailsBox,'deleted')===true){result.deleted=true;}
return result;},saved:function(data)
{if(data.deletedTestid){GUI.reloadTemplate('SquizAnalyticsTests','Tests');}else{var testid=data.testid;var testName=data.testName;SquizAnalyticsTestsTests.loadTestScreen(testid);}},stopTestNow:function()
{GUI.getWidget('SquizAnalyticsTestsSingleTest-iv-confirmStopTestNow').hide();var currentTestid=SquizAnalyticsTestsSingleTest.currentTestid;var self=this;var params={testid:currentTestid};GUI.sendRequest('SquizAnalyticsTests','stopTestNow',params,function(data){if(data.result){if(data.result.success){dfx.showElement(dfx.getId('SquizAnalyticsTests-table-current-completed'));SquizAnalyticsTestsTests.loadTestScreen(data.result.testid);SquizAnalyticsTestsTests.removeCurrentTestsTableRow(data.result.testid,'active');SquizAnalyticsTestsTests.updateCurrentTestRow(data.result.testid,'completed');}}else if(data.exception){GUI.message('developer',data.exception);}else{GUI.message('developer','Server unreachable');}});},revert:function()
{var detailsBox=dfx.getId(this.prefix+'box-editor');dfx.removeClass(detailsBox,'deleted');var statsDiv=dfx.getId(this.prefix+'section-details');if(statsDiv){var boxes=dfx.getClass('GUIBox',statsDiv);dfx.removeClass(boxes,'GUIBox-faded');}}};var SquizAnalyticsTestsTests=new function(){var self=this;this.initEvents=function()
{var currentTestsBox=dfx.getId('SquizAnalyticsTests-box-current-tests');var activeTestsWidget=GUI.getWidget('SquizAnalyticsTests-table-current-active');var completedTestsWidget=GUI.getWidget('SquizAnalyticsTests-table-current-completed');var selectionCb=function(rowid,rowElement){if(this.settings.selectable===true){var testid=rowid.replace(/^test\-(\d+)$/,'$1');self.loadTestScreen.call(self,testid);}}
activeTestsWidget.addRowClickedCallback(function(rowid,rowElement){dfx.removeClass(dfx.getClass('selected',dfx.getId(completedTestsWidget.id)),'selected');selectionCb.call(this,rowid,rowElement);});completedTestsWidget.addRowClickedCallback(function(rowid,rowElement){dfx.removeClass(dfx.getClass('selected',dfx.getId(activeTestsWidget.id)),'selected');selectionCb.call(this,rowid,rowElement);});var completedTestsRows=dfx.getTag('tr',dfx.getTag('tbody',dfx.getId(completedTestsWidget.id)));if(completedTestsRows.length>0){dfx.hideElement(dfx.getClass('GUITable-noItemsMsg',currentTestsBox));}else{dfx.showElement(dfx.getClass('GUITable-noItemsMsg',currentTestsBox));dfx.hideElement(dfx.getId(completedTestsWidget.id));}};this.loadTestScreen=function(testid)
{var activeTestsWidget=GUI.getWidget('SquizAnalyticsTests-table-current-active');var completedTestsWidget=GUI.getWidget('SquizAnalyticsTests-table-current-completed');activeTestsWidget.settings.selectable=false;completedTestsWidget.settings.selectable=false;var params={testid:testid};var options={targetElement:dfx.getClass('page-right',dfx.getId('SquizAnalyticsTests'))[0]};dfx.setHtml(options.targetElement,'');GUI.unloadTemplate('SquizAnalyticsTests','SingleTest');GUI.loadTemplate('SquizAnalyticsTests','SingleTest',params,function(){activeTestsWidget.settings.selectable=true;completedTestsWidget.settings.selectable=true;},options);};this.updateCurrentTestRow=function(testid,table)
{if(table===undefined){table='active';}
var rowid='test-'+testid;var testsTableWidget=GUI.getWidget('SquizAnalyticsTests-table-current-'+table);var testsTableRows=dfx.find(dfx.getId(testsTableWidget.id),'tr[rowid='+rowid+']');if(testsTableRows.length===0){var params={};params[rowid]=testid;testsTableWidget.generateRows(params,function(){});}else{var testsTableRow=testsTableRows[0];var columnPrefix=testsTableWidget.id+'-'+rowid+'-';var params={testid:testid,rowid:rowid};GUI.sendRequest('SquizAnalyticsTests','generateCurrentTestsRow',params,function(data){var nameColumn=dfx.find(dfx.getId(testsTableWidget.id),'td[colid='+columnPrefix+'name] div.GUITable-colWrapper')[0];var progColumn=dfx.find(dfx.getId(testsTableWidget.id),'td[colid='+columnPrefix+'progress] div.GUITable-colWrapper')[0];dfx.setHtml(nameColumn,data.result.name);dfx.setHtml(progColumn,data.result.progress);});}};this.removeCurrentTestsTableRow=function(testid,table)
{var retval=false;if(table===undefined){var currentTestsTables=[dfx.getId('SquizAnalyticsTests-table-current-active'),dfx.getId('SquizAnalyticsTests-table-current-completed'),];}else{var currentTestsTables=[dfx.getId('SquizAnalyticsTests-table-current-'+table),];}
var testRows=dfx.getClass('row-test-'+testid,currentTestsTables);if(testRows.length>0){dfx.remove(testRows);}
return true;};this.openAddTestDialog=function()
{GUI.loadTemplate('SquizAnalyticsTests','NewTest',{},function(){GUI.getWidget('SquizAnalyticsTestsNewTest-dialog').addDialogClosedCallback(function(){GUI.unloadTemplate('SquizAnalyticsTests','NewTest');});},{modal:true,dialog:{dialogid:'SquizAnalyticsTestsNewTest-dialog'}});};};var SquizSuiteSquizSuiteScreen=new function()
{var _currentProduct=null;var _connectedProducts=[];var _currentTableDOM=null;var _connectedTableDOM=null;var _connectedProductRows=null;var _liveProductsIdx=[];var _refreshScheduled=false;var _newRow=null;var _newDetailRow=null;var _deletedProducts={};this.initScreen=function(data){var self=this;_currentProduct=data.currentProduct;_connectedProducts=data.connectedProducts;_currentTableDOM=dfx.getId('currProductTable');_connectedTableDOM=dfx.getId('connProductsTable');_connectedProductRows=dfx.getTag('tr',dfx.getTag('tbody',_connectedTableDOM));_refreshScheduled=data.refreshScheduled;dfx.foreach(_connectedProductRows,function(idx){if(idx===0){return true;}
if(dfx.hasClass(_connectedProductRows[idx],'rowEven')===true){dfx.addClass(_connectedProductRows[idx],'hidden');}
return true;});var expanders=dfx.getClass('SquizSuiteScreen-productExpander',_connectedTableDOM);dfx.foreach(expanders,function(idx){var span=expanders[idx];dfx.addEvent(span,'click',function(){self.toggleProductDetails(span);});return true;});_deletedProducts={}
var delBtns=dfx.getClass('SquizSuiteScreen-deleteColBtn',_connectedTableDOM);dfx.foreach(delBtns,function(idx){var delBtn=delBtns[idx];dfx.addEvent(delBtn,'click',function(){self.toggleProductDelete(delBtn);});return true;});var btnCon=dfx.getClass('addNewButtonContainer',dfx.getId('squizSuite-connectedProduct-box'))[0];if(data.currentProduct.url===''){dfx.hideElement(btnCon);}else{dfx.showElement(btnCon);}
if(_refreshScheduled===true){var refreshBtn=GUI.getWidget('refreshStatus');refreshBtn.disable();}
_newRow=_connectedProductRows[(_connectedProductRows.length-3)];_newDetailRow=_connectedProductRows[(_connectedProductRows.length-1)];dfx.hideElement(dfx.getClass('GUI-delete',_newDetailRow)[0]);this.toggleNewRow();_liveProductsIdx=[];dfx.foreach(_connectedProducts,function(idx){if(_connectedProducts[idx].status==='live'){_liveProductsIdx.push(idx);}
return true;});if(_liveProductsIdx.length>0){self._initLiveProductStatus(0,null);}};this.toggleProductDetails=function(span){var rowid=parseInt(span.getAttribute('rowid'));var row=_connectedProductRows[rowid+1];if(dfx.hasClass(row,'hidden')===true){dfx.removeClass(row,'hidden');dfx.addClass(span,'expanded');}else{dfx.addClass(row,'hidden');dfx.removeClass(span,'expanded');}};this.toggleProductDelete=function(delBtn){var trDom=dfx.getParents(delBtn,'tr',_connectedTableDOM)[0];var rowid=parseInt(trDom.getAttribute('rowid'));var row=_connectedProductRows[rowid+1];var suiteid=delBtn.getAttribute('suiteid');if(dfx.hasClass(trDom,'deleted')===true){dfx.removeClass(trDom,'deleted');dfx.removeClass(delBtn,'recover');dfx.removeClass(row,'deleted');_deletedProducts[suiteid]=false;}else{dfx.addClass(trDom,'deleted');dfx.addClass(delBtn,'recover');dfx.addClass(row,'deleted');_deletedProducts[suiteid]=true;}
GUI.setTemplateModified('SquizSuite','SquizSuiteScreen',true);};this.addProduct=function(){if(dfx.hasClass(_newRow,'hidden')===true){this.toggleNewRow();}};this.refreshNow=function(event){var screenid='SquizSuite::SquizSuiteScreen';var data={};data[screenid]={type:'refreshNow',schedule:true};var alt=event.altKey;if(alt===true){data[screenid].schedule=false;dfx.foreach(_connectedProducts,function(idx){if(_connectedProducts[idx].status==='live'&&_connectedProducts[idx].type!=='Squiz Update'){var statusDiv=dfx.getId('squizSuite-'+_connectedProducts[idx].suiteid+'-statusWrap');dfx.swapClass(statusDiv,'live','loading');}
return true;});}
var self=this;var params={templateData:dfx.jsonEncode(data)};GUI.sendRequest('GUI','saveTemplateData',params,function(data){if(data.result&&data.result.success){if(alt===true){GUI.reloadTemplate('SquizSuite','SquizSuiteScreen');}else{var refreshBtn=GUI.getWidget('refreshStatus');refreshBtn.setValue('Checking Now ...');refreshBtn.disable();}}});};this.toggleNewRow=function(){if(dfx.hasClass(_newRow,'hidden')===true){dfx.removeClass(_newRow,'hidden');dfx.removeClass(_newDetailRow,'hidden');}else{dfx.addClass(_newRow,'hidden');dfx.addClass(_newDetailRow,'hidden');}};this.approveConnection=function(btn){var screenid='SquizSuite::SquizSuiteScreen';var suiteid=btn.id.replace('squizSuite-','');suiteid=suiteid.replace('-approve-btn','');var data={};data[screenid]={type:'approveConnection',suiteid:suiteid};var self=this;var params={templateData:dfx.jsonEncode(data)};GUI.sendRequest('GUI','saveTemplateData',params,function(data){if(data.result&&data.result.success){self._requestProductSummary(suiteid,function(){});}});};this._initLiveProductStatus=function(idx,callback){var self=this;var suiteid=_connectedProducts[_liveProductsIdx[idx]].suiteid;this._requestProductSummary(suiteid,function(){if(idx<(_liveProductsIdx.length-1)){self._initLiveProductStatus((idx+1),callback);}else{if(callback){callback.call(self);}}});};this._requestProductSummary=function(suiteid,callback){var self=this;var data={};var screenid='SquizSuite::SquizSuiteScreen';data[screenid]={type:'getProductSummary',suiteid:suiteid};var params={templateData:dfx.jsonEncode(data)};GUI.sendRequest('GUI','saveTemplateData',params,function(data){var statusDiv=dfx.getId('squizSuite-'+suiteid+'-statusWrap');var summaryDiv=dfx.getId('squizSuite-'+suiteid+'-summary');if(data.result&&data.result.success){var summaryInfo=data.result.success[screenid];if(dfx.hasClass(statusDiv,'pending')===true){dfx.swapClass(statusDiv,'pending','live');}else{dfx.swapClass(statusDiv,'loading','live');}
var c='<span class="SquizSuiteScreen-summaryLabel">No summary information</span>';var first=true;dfx.foreach(summaryInfo,function(idx){if(first===true){c='';first=false;}
c+='<span class="SquizSuiteScreen-summaryLabel">'+summaryInfo[idx].label+'</span>';c+='<span class="SquizSuiteScreen-summaryValue">'+summaryInfo[idx].value+'</span>';return true;});dfx.setHtml(summaryDiv,c);}else{dfx.swapClass(statusDiv,'loading','error');var c='<span class="SquizSuiteScreen-summaryLabel">';c+='Failed to get the product summary ...</span>';c+='</span>';dfx.setHtml(summaryDiv,c);}
if(callback){callback.call(self);}});};this.getValue=function(){var data={};data.currProductName=GUI.getWidget('squizSuite-currProductName').getValue();data.deletedProducts=_deletedProducts;return data;};this.saved=function(retval){GUI.reloadTemplate('SquizSuite','SquizSuiteScreen');};}
var UserLoginScreen=new function()
{this.hashEnabled=true;var _loadingAnim=null;if(document.images){_loadingAnim=new Image(16,16);_loadingAnim.src='/__web/Systems/User/Web/Templates/save_inact.gif'}
this.displayError=function(msg){dfx.setHtml(dfx.getId('LoginError'),msg);};this.submit=function(reload){var url=(new String(document.location)).valueOf();url=url.replace('#','');if(reload===true){return true;}
dfx.setHtml(dfx.getId('LoginError'),'&nbsp;');var username=GUI.getWidget('loginName').getValue();var password=GUI.getWidget('loginPassword').getValue();if(!username||!password){return false;}
var params={};params.auth_action='login';var self=this;var _processLoginResponse=function(data){data=dfx.jsonDecode(data.result);var status=data.login;if(status===0){self.hideLoadingAnimation();self.displayError(data.error);return false;}else{document.forms[0].submit(true);return true;}};self.showLoadingAnimation();if(this.hashEnabled===true){params.step='req_chal';params.username=username;GUI.sendRequest('User','processAuthentication',params,function(data){data=dfx.jsonDecode(data.result);var challenge=data.challenge;if(challenge!==0){var hashedPassword=hex_md5(hex_hmac_sha1(challenge,hex_sha1(password)));var browserInfo=dfx.browser();if(challenge===-1){hashedPassword=password;}
params.step='req_auth';params.password=hashedPassword;params.bt=browserInfo.type;params.bv=browserInfo.version;GUI.sendRequest('User','processAuthentication',params,_processLoginResponse);}else{data=dfx.jsonDecode(data.result);var errorMsg=data.error;self.displayError(errorMsg);return false;}});}else{params.step='req_auth';params.username=username;params.password=password;GUI.sendRequest('User','processAuthentication',params,_processLoginResponse);}
return false;};this.showLoadingAnimation=function(){var button=dfx.getId('LoginSubmitButton');dfx.attr(button,'disabled',true);button.blur();var buttonSpan=dfx.getTag('span',button)[0];dfx.setStyle(buttonSpan,'visibility','hidden');var spinner=_loadingAnim;dfx.setStyle(spinner,'top','-15px');dfx.setStyle(spinner,'position','relative');button.appendChild(spinner);}
this.hideLoadingAnimation=function(){var button=dfx.getId('LoginSubmitButton');var buttonSpan=dfx.getTag('span',button)[0];var spinner=dfx.getTag('img',button)[0];dfx.remove(spinner);dfx.setStyle(buttonSpan,'visibility','visible');dfx.attr(button,'disabled',false);};this.setHashing=function(enabled){this.hashEnabled=enabled;};};var UserSuperUsersScreen=new function()
{var _screenData=null;this.init=function(screenData){_screenData=screenData;};this.addUser=function(){var options={modal:true,dialog:{dialogid:'SuperUser-addUser-dialog'}};var templateSettings={id:'SuperUser-addUser',usedForCode:'superUserScreen',rootNodes:_screenData.usersFolderid};var self=this;GUI.loadTemplate('GUIAssetFinder','GUIAssetFinder',templateSettings,function(){GUI.getWidget('SuperUser-addUser').setSelectAssetsCallback(function(selection){self.addSelectedUsers(selection);});},options);},this.addSelectedUsers=function(userids){var rowsData={};dfx.foreach(userids,function(i){var rowid=userids[i];rowsData[rowid]=userids[i];});GUI.getWidget('superUsersList').generateRows(rowsData,function(){});};};var UserUserManagerScreen=new function()
{var _usersFolderid=0;var _screenData={};var _assetTypes={};var _reloading=false;this.init=function(data){_usersFolderid=data.usersFolderid;_screenData=data.editTemplates;_assetTypes=data.assetTypes;var browser=GUI.getWidget('userManager-assetBrowser');if(browser){browser.addItemClickedCallback(function(itemid,childCount,itemElement){_loadEditContents(itemid);});browser.selectItem(data.localUsersFolderid,0);}};var _loadEditContents=function(assetid){var params={assetid:assetid};if(_reloading===false&&GUI.isTemplateModified()===true){var currentTemplate=GUI.getCurrentTemplate();if(GUI.unloadTemplate(currentTemplate.system,currentTemplate.template)===false){return false;}}
GUI.loadContent('User','loadUserManagerEditContents',dfx.getId('userManager-editPane'),params,function(){_reloading=false;var parentsList=GUI.getWidget('UserManagerScreen-parentsList');if(!parentsList){return;}
parentsList.addItemToggledCallback(function(itemid,deleted,itemElement){var deleteIcon=dfx.getClass('GUI-deleteIcon',itemElement)[0];if(deleted===true){var value=parentsList.getValue();if(dfx.isEmpty(value.items)===true){var interventionId='UserManagerScreen-lastLinkIntervention';if(UserUserManagerScreen.isUserType()===true){interventionId+='-user';}else{interventionId+='-userGroup';}
GUI.getWidget(interventionId).show(deleteIcon,deleteIcon);}}});});};this.cancelGroupDelete=function(id){var interventionWidget=GUI.getWidget(id);if(!interventionWidget){return;}
var data=interventionWidget.getData();if(data){dfx.trigger(data,'click');}
interventionWidget.hide();};this.cancelCreate=function(){dfx.hideElement(dfx.getClass('UserManagerScreen-createPanel'));dfx.showElement(dfx.getId('UserManagerScreen-infoSection'));};this.createUser=function(){var browserWidget=GUI.getWidget('userManager-assetBrowser');var userDetails={username:GUI.getWidget('UserManagerScreen-newUser-username').getValue(),firstName:GUI.getWidget('UserManagerScreen-newUser-firstName').getValue(),lastName:GUI.getWidget('UserManagerScreen-newUser-lastName').getValue(),email:GUI.getWidget('UserManagerScreen-newUser-email').getValue(),password:GUI.getWidget('UserManagerScreen-newUser-password').getValue(),userGroups:dfx.jsonEncode(browserWidget.getValue())};GUI.sendRequest('User','createUser',userDetails,function(response){if(response&&response.result){_reloadBrowser();}});};this.showCreatePanel=function(panelName){dfx.hideElement(dfx.getId('UserManagerScreen-infoSection'));dfx.showElement(dfx.getId('UserManagerScreen-createSection'));dfx.showElement(dfx.getId('UserManagerScreen-'+panelName));};this.createUserGroup=function(){var browserWidget=GUI.getWidget('userManager-assetBrowser');var details={name:GUI.getWidget('UserManagerScreen-newGroup-groupName').getValue(),parentids:dfx.jsonEncode(browserWidget.getValue())};GUI.sendRequest('User','createUserGroup',details,function(response){if(response&&response.result){_reloadBrowser();}});};this.addExistingAsset=function(){_showAssetFinder(function(selection){if(selection.length<=0){return;}
var browserWidget=GUI.getWidget('userManager-assetBrowser');var params={userids:dfx.jsonEncode(selection),userGroups:dfx.jsonEncode(browserWidget.getValue())};GUI.sendRequest('User','addUsersToGroups',params,function(response){if(response&&response.result){_reloadBrowser();}});});};this.addToGroups=function(){_showAssetFinder(function(userids){if(userids.length<=0){return;}
var groupsList=GUI.getWidget('UserManagerScreen-parentsList');if(!groupsList){return;}
var itemsData={};dfx.foreach(userids,function(i){itemsData['new_'+userids[i]]=userids[i];});groupsList.generateItems(itemsData);});};this.toggleMarkForDeletion=function(){var id='UserManagerScreen-deleteOverlay';var delEl=dfx.getId(id);if(!delEl){var del=document.createElement('div');del.id=id;dfx.getId('userManager-editPane').appendChild(del);dfx.addClass(dfx.getId('userManager-deleteButton'),'deleted');}else{dfx.remove(delEl);dfx.removeClass(dfx.getId('userManager-deleteButton'),'deleted');}
GUI.setTemplateModified('User','UserManagerScreen',true);};this.resetPassword=function(){var elem=dfx.getId('UserManagerScreen-editExistingUser-resetPasswordBox');var button=dfx.getId('UserManagerScreen-editUser-resetPassword');dfx.remove(button);dfx.showElement(elem);};this.toggleUserStatus=function(){var status=GUI.getWidget('UserManagerScreen-editUser-existingUser-toggleStatus').getValue();var header=dfx.getClass('UserManagerScreen-status-header')[0];if(status===true){dfx.removeClass(header,'Inactive');}else{dfx.addClass(header,'Inactive');}};this.isUserType=function(assetType){if(!assetType){var editorPanel=dfx.getId('UserManagerScreen-editor');assetType=dfx.attr(editorPanel,'assetType');}
if(_assetTypes.user.inArray(assetType)===true){return true;}
return false;};this.getValue=function(){var editorPanel=dfx.getId('UserManagerScreen-editor');if(!editorPanel){return;}
var idPrefix='UserManagerScreen';var saveData={};var assetType=dfx.attr(editorPanel,'assetType');var assetid=GUI.getWidget('userManager-assetBrowser').getValue().pop();if(dfx.getId('UserManagerScreen-deleteOverlay')){saveData.deleted=true;}else{switch(assetType){case'user':idPrefix+='-editUser-existingUser';saveData.first_name=GUI.getWidget(idPrefix+'-firstName').getValue();saveData.last_name=GUI.getWidget(idPrefix+'-lastName').getValue();saveData.email=GUI.getWidget(idPrefix+'-email').getValue();saveData.username=GUI.getWidget(idPrefix+'-username').getValue();saveData.status=GUI.getWidget(idPrefix+'-toggleStatus').getValue();saveData.parents=GUI.getWidget('UserManagerScreen-parentsList').getValue();saveData.password=GUI.getWidget(idPrefix+'-password').getValue();break;case'userGroup':idPrefix+='-editUserGroup';saveData.name=GUI.getWidget(idPrefix+'-groupName').getValue();saveData.parents=GUI.getWidget('UserManagerScreen-parentsList').getValue();break;default:if(!_screenData[assetType]){GUI.message('developer','Failed to get asset type from editor panel','warning');return null;}else{var objName=_screenData[assetType].jsObjectName;saveData=window[objName].getValue(assetType);}
break;}}
saveData.assetType=assetType;saveData.assetid=assetid;return saveData;};this.saved=function(){_reloadBrowser();};this.reloadBrowser=function(){var template=GUI.getCurrentTemplate();GUI.setTemplateModified(template.system,template.template,false);_reloading=true;GUI.getWidget('userManager-assetBrowser').reload();};var _showAssetFinder=function(callback){var options={modal:true,dialog:{dialogid:'Users-addUser-dialog'}};var templateSettings={id:'Users-addUser',rootNodes:_usersFolderid,usedForCode:'userManagerScreen'};var self=this;GUI.loadTemplate('GUIAssetFinder','GUIAssetFinder',templateSettings,function(){GUI.getWidget('Users-addUser').setSelectAssetsCallback(callback);},options);};var _reloadBrowser=function(){UserUserManagerScreen.reloadBrowser();};};var UserUserManagerScreenReadOnly=new function()
{var _usersFolderid=0;var _screenData={};var _assetTypes={};var _reloading=false;this.init=function(data){_usersFolderid=data.usersFolderid;_screenData=data.editTemplates;_assetTypes=data.assetTypes;var browser=GUI.getWidget('userManager-assetBrowser');if(browser){browser.addItemClickedCallback(function(itemid,childCount,itemElement){_loadEditContents(itemid);});browser.selectItem(data.localUsersFolderid,0);}};var _loadEditContents=function(assetid){var params={assetid:assetid,readOnly:true};if(_reloading===false&&GUI.isTemplateModified()===true){var currentTemplate=GUI.getCurrentTemplate();if(GUI.unloadTemplate(currentTemplate.system,currentTemplate.template)===false){return false;}}
GUI.loadContent('User','loadUserManagerEditContents',dfx.getId('userManager-editPane'),params,function(){_reloading=false;var parentsList=GUI.getWidget('UserManagerScreen-parentsList');if(!parentsList){return;}
parentsList.addItemToggledCallback(function(itemid,deleted,itemElement){var deleteIcon=dfx.getClass('GUI-deleteIcon',itemElement)[0];if(deleted===true){var value=parentsList.getValue();if(dfx.isEmpty(value.items)===true){var interventionId='UserManagerScreen-lastLinkIntervention';if(UserUserManagerScreen.isUserType()===true){interventionId+='-user';}else{interventionId+='-userGroup';}
GUI.getWidget(interventionId).show(deleteIcon,deleteIcon);}}});});};this.isUserType=function(assetType){if(!assetType){var editorPanel=dfx.getId('UserManagerScreen-editor');assetType=dfx.attr(editorPanel,'assetType');}
if(_assetTypes.user.inArray(assetType)===true){return true;}
return false;};};var hexcase=0;var b64pad="";var chrsz=8;function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
var hexcase=0;var b64pad="";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_vm_test()
{return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}
function core_sha1(x,len)
{x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++)
{if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}
a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}
return Array(a,b,c,d,e);}
function sha1_ft(t,b,c,d)
{if(t<20)return(b&c)|((~b)&d);if(t<40)return b^c^d;if(t<60)return(b&c)|(b&d)|(c&d);return b^c^d;}
function sha1_kt(t)
{return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data)
{var bkey=str2binb(key);if(bkey.length>16)bkey=core_sha1(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binb(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);return bin;}
function binb2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);return str;}
function binb2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(3-i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
function UserUsernameTextBox(id,settings)
{this.id=id;this.settings=settings;var widgetElement=dfx.getId(this.id);this.textBox=dfx.getClass('input',widgetElement)[0];this.init();GUI.addWidgetEvent(this,'keyPress');GUI.addWidgetEvent(this,'keyUp');GUI.addWidgetEvent(this,'focus');GUI.addWidgetEvent(this,'blur');}
UserUsernameTextBox.prototype={validateSetValue:function(callback)
{var self=this;var value=this.getValue();var requestParams={};requestParams.username=value;GUI.sendRequest('User','validateUsername',requestParams,function(validateResults){var validationResult=validateResults.result;if(validationResult===true){validationResult=[];}else{validationResult=[validationResult];}
callback.call(self,validationResult);});}};dfx.addLoadEvent(function(){dfx.inherits('UserUsernameTextBox','GUITextBox',true)});
