{Array.prototype.index=0;Array.prototype.get=function(index,wrap){if(!wrap||!this.length)return this[index];index=index%this.length;if(index<0)index+=this.length;return this[index];};Array.prototype.current=function(){return this[this.index];};Array.prototype.next=function(wrap){this.index++;if(wrap&&this.index>=this.length)this.index=0;return this[this.index];};Array.prototype.previous=function(wrap){this.index--;if(wrap&&this.index<0)this.index=this.length-1;return this[this.index];};Array.prototype.jumpTo=function(index,wrap){this.index=index;if(!wrap||!this.length)return(index>=this.length)?this[0]:this[index];this.index=this.index%this.length;if(this.index<0)this.index+=this.length;return this[this.index];};Array.prototype.jumpBy=function(amount,wrap){return this.jumpTo(this.index+amount,wrap);};Array.prototype.copy=function(){var tempArray=[];var i=this.length;while(i--)tempArray[i]=(this[i]instanceof Array)?this[i].copy():this[i];return tempArray;};Array.prototype.swap=function(firstIndex,secondIndex){if(firstIndex<0)firstIndex=this.length+firstIndex;if(secondIndex<0)secondIndex=this.length+secondIndex;if(this[firstIndex]==this[secondIndex])return;var tempIndex=this[firstIndex];this[firstIndex]=this[secondIndex];this[secondIndex]=tempIndex;};Array.prototype.range=function(from,to,step){if(from==null&&to==null)return[];if(from!=null&&from==to)return[from];var range=[];var i=from;if(!step)step=1;if((step>0&&from>to)||(step<0&&from<to)){step*=-1;}while(true){range.push(i);if((from<to&&i>=to)||(from>to&&i<=to)){return range;}i+=step;}};Array.prototype.contains=function(value){var i=this.length;while(i--)if(this[i]===value)return true;return false;};Array.prototype.indexOf=function(value){for(var i=0;i<this.length;i++){if(this[i]===value)return i;}return false;};Array.prototype.indicesOf=function(value){var results=[];for(var i=0;i<this.length;i++){if(this[i]===value)results.push(i);}return results.length?results:false;};Array.prototype.map=function(func){for(var results=[],i=0;i<this.length;i++){results.push(func(this[i]));}return results;};}{String.prototype.pad=function(chars,char){for(var padding="",i=this.length;i<chars;i++){padding+=char;}return padding+this;};String.prototype.trim=function(){var str=this.replace(/^\s\s*/,"");var ws=/\s/;var i=str.length;while(ws.test(str.charAt(--i)));return str.slice(0,i+1);};String.prototype.strip=function(){return this.replace(/\s+/," ");};String.prototype.reverse=function(){return this.split("").reverse().join("");};String.prototype.contains=function(value){return(this.indexOf(value)>=0);};String.prototype.beginsWith=function(value){return(value==this.substring(0,value.length));};String.prototype.endsWith=function(value){return(value==this.substring(this.length-value.length));};String.prototype.stripTags=function(){return this.replace(/<\/?[^>]+>/gi,"");};String.prototype.htmlEncode=function(){var entities={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};var t=this;for(var i in entities)t=t.replace(i,entities[i]);return t;};String.prototype.htmlDecode=function(){var entities={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};var t=this;for(var i in entities)t=t.replace(entities[i],i);return t;};String.prototype.urlEncode=function(){return encodeURIComponent(this);};String.prototype.urlDecode=function(){return decodeURIComponent(this);};}{document.getClientWidth=function(){var doc=document.documentElement;return(doc&&doc.clientWidth)?doc.clientWidth:document.body.clientWidth;};document.getClientHeight=function(){var doc=document.documentElement;return(doc&&doc.clientHeight)?doc.clientHeight:document.body.clientHeight;};}{window.isArray=function(value){return isObject(value)&&value.constructor==Array;};window.isBoolean=function(value){return typeof value=="boolean";};window.isFunction=function(value){return typeof value=="function";};window.isObject=function(value){return(value&&typeof value=="object")||isFunction(value);};window.isNull=function(value){return typeof value=="object"&&!value;};window.isNumber=function(value){return typeof value=="number"&&isFinite(value);};window.isNaNNumber=function(value){return typeof value=="number"&&isNaN(value);};window.isUnNumber=function(value){return typeof value=="number"&&(isNaN(value)||!isFinite(value));};window.isString=function(value){return typeof value=="string";};window.isUndefined=function(value){return typeof value=="undefined";};window.isUnknown=function(value){return isObject(value)&&typeof value.constructor!="function";};window.isWidget=function(value,type){if(!isObject(value)||!value.hasAttribute||!value.hasAttribute("widget"))return false;if(!type)return true;var wtype=value.getAttribute("widget").split(" ");var i=wtype.length;while(i--)if(wtype[i]==type)return true;return false;};window.isComponent=function(value,type){if(!isObject(value)||!value.hasAttribute||!value.hasAttribute("component"))return false;return(type)?value.getAttribute("component")==type:value.hasAttribute("component");};}{window.getElementsById=function(){if(arguments.length==1){return(isString(arguments[0]))?document.getElementById(arguments[0]):arguments[0];}for(var elements=[],i=0;i<arguments.length;i++){var element=arguments[i];elements.push((isString(element))?document.getElementById(element):element);}return elements;};window.$=window.getElementsById;window.getElementsByClassName=function(className,tag){return document.getElementsByClassName(className,tag);};window.$C=window.getElementsByClassName;window.getElementsBySelector=function(selector){var levels=selector.trim().split(/\s+/);var scope=[document];for(var i=0,level;(level=levels[i])!=null;i++){var id="";var tagName="";var className="";var classNames=[];var state=0;for(var j=0,chr;(chr=level.charAt(j))!="";j++){switch(chr){case"#":if(state==1||id)return[];state=1;break;case".":if(state==2&&!className)return[];if(state==2){classNames.push(className);className="";}state=2;break;default:switch(state){case 0:tagName+=chr;break;case 1:id+=chr;break;case 2:className+=chr;break;}break;}}if(state==1&&!id)return[];if(state==2&&!className)return[];if(state==2)classNames.push(className);var element=(id)?$(id):null;if(id){if(!element)return[];if(tagName&&element.nodeName.toLowerCase()!=tagName)return[];for(var j=0;j<classNames.length;j++){if(!element.className||!element.className.match(new RegExp("(\\s|^)"+classNames[j]+"(\\s|$)"))){return[];}}scope=[element];continue;}var found=[];for(var j=0;j<scope.length;j++){var elements=scope[j].getElementsByTagName(tagName||"*");for(var k=0;k<elements.length;k++){found.push(elements[k]);}}scope=[];for(var j=0,item;(item=found[j])!=null;j++){if(!classNames.length){scope.push(item);continue;}if(!item.className)continue;for(var matched=true,k=0;k<classNames.length;k++){if(!item.className.match(new RegExp("(\\s|^)"+classNames[k]+"(\\s|$)"))){matched=false;break;}}if(matched)scope.push(item);}}return scope;};window.$S=window.getElementsBySelector;}window.SOAPI=window.SOAPI||{};var SOAPI=window.SOAPI;SOAPI.Core_Opera_HTMLElement=function(){{HTMLElement.prototype.getElementsByClassName=function(className,tag){var elements=[];var tagElements=this.getElementsByTagName(tag||"*");var pattern=new RegExp("(^|\\s)"+className+"(\\s|$)");for(var i=0;i<tagElements.length;i++){if(pattern.test(tagElements[i].className)){elements.push(tagElements[i]);}}return elements;};HTMLElement.prototype.$C=HTMLElement.prototype.getElementsByClassName;HTMLElement.prototype.replaceHTML=function(html){var parent=this.parentNode;var newElement=this.cloneNode(false);newElement.innerHTML=html;parent.replaceChild(newElement,this);SOAPI.Event.copyEventHandlers(this,newElement,false);};HTMLElement.prototype.insertAfter=function(node,referenceNode){this.insertBefore(node,referenceNode.nextSibling);};HTMLElement.prototype.prependChild=function(node){this.insertBefore(node,this.firstChild);};HTMLElement.prototype.contains=function(node){while(node&&(this!=node))node=node.parentNode;return this==node;};HTMLElement.prototype.getAppliedStyle=function(name){return document.defaultView.getComputedStyle(this,null).getPropertyValue(name);};HTMLElement.prototype.refresh=function(){};}};SOAPI.Core_Opera_CreateElement=function(){document._createElement=document.createElement;document.createElement=function(type){var element=document._createElement(type);if(type.toLowerCase()=="input"||type.toLowerCase()=="textarea"){SOAPI.Event.addEventHandler(element,"focus");SOAPI.Event.addEventHandler(element,"blur");}return element;};};window.SOAPI=window.SOAPI||{};var SOAPI=window.SOAPI;SOAPI.Core_IE_HTMLElement=function(){SOAPI.HTMLElement={getElementsByClassName:function(className,tag){var elements=[];var tagElements=this.getElementsByTagName(tag||"*");var pattern=new RegExp("(^|\\s)"+className+"(\\s|$)");for(var i=0;i<tagElements.length;i++){if(pattern.test(tagElements[i].className)){elements.push(tagElements[i]);}}return elements;},replaceHTML:function(html){this.innerHTML=html;},hasAttribute:function(name){switch(name){case"class":name="className";break;case"for":name="htmlFor";break;}return this[name]!=null;},getAttribute:function(name){switch(name){case"class":return this.className;case"style":return this.style.cssText;case"for":return this.htmlFor;default:return String(this[name]);}},setAttribute:function(name,value){switch(name){case"class":this.className=value;break;case"style":this.style.cssText=value;break;case"for":this.htmlFor=value;break;default:this[name]=value;}this.refresh();},insertAfter:function(node,referenceNode){this.insertBefore(node,referenceNode.nextSibling);},prependChild:function(node){this.insertBefore(node,this.firstChild);},contains:function(node){while(node&&(this!=node))node=node.parentNode;return this==node;},getAppliedStyle:function(name){name=name.replace(/\-(\w)/g,function(match,p1){return p1.toUpperCase();});return this.currentStyle[name];},refresh:function(){this.className=this.className;}};SOAPI.HTMLElement.$C=SOAPI.HTMLElement.getElementsByClassName;};SOAPI.Core_IE_CreateElement=function(){document._createElement=document.createElement;document.createElement=function(type){var element=document._createElement(type);var HTMLElement=SOAPI.HTMLElement;for(var pName in HTMLElement)element[pName]=HTMLElement[pName];return element;};};window.SOAPI=window.SOAPI||{};var SOAPI=window.SOAPI;SOAPI.Core_Gecko_HTMLElement=function(){{HTMLElement.prototype.getElementsByClassName=function(className,tag){var elements=[];var tagElements=this.getElementsByTagName(tag||"*");var pattern=new RegExp("(^|\\s)"+className+"(\\s|$)");for(var i=0;i<tagElements.length;i++){if(pattern.test(tagElements[i].className)){elements.push(tagElements[i]);}}return elements;};HTMLElement.prototype.$C=HTMLElement.prototype.getElementsByClassName;HTMLElement.prototype.replaceHTML=function(html){var parent=this.parentNode;var newElement=this.cloneNode(false);newElement.innerHTML=html;parent.replaceChild(newElement,this);SOAPI.Event.copyEventHandlers(this,newElement,false);};HTMLElement.prototype.insertAdjacentHTML=function(location,html){var range=this.ownerDocument.createRange();switch(String(location).toLowerCase()){case"beforebegin":range.setStartBefore(this);this.parentNode.insertBefore(range.createContextualFragment(html),this);break;case"afterbegin":range.selectNodeContents(this);range.collapse(true);this.insertBefore(range.createContextualFragment(html),this.firstChild);break;case"beforeend":range.selectNodeContents(this);range.collapse(false);this.appendChild(range.createContextualFragment(html));break;case"afterend":range.setStartAfter(this);this.parentNode.insertBefore(range.createContextualFragment(html),this.nextSibling);break;}};HTMLElement.prototype.__defineGetter__("outerHTML",function(){var html="<"+this.tagName;var emptyTags={BR:true,HR:true,IMG:true,INPUT:true,LINK:true,META:true,PARAM:true};for(var i=0,attribute;attribute=this.attributes[i];i++){html+=" "+attribute.name+"=\""+attribute.value+"\"";}return html+((emptyTags[this.tagName])?" />":">"+this.innerHTML+"</"+this.tagName+">");});HTMLElement.prototype.__defineSetter__("outerHTML",function(html){var range=this.ownerDocument.createRange();range.setStartBefore(this);this.parentNode.replaceChild(range.createContextualFragment(html),this);});HTMLElement.prototype.insertAfter=function(node,referenceNode){this.insertBefore(node,referenceNode.nextSibling);};HTMLElement.prototype.prependChild=function(node){this.insertBefore(node,this.firstChild);};HTMLElement.prototype.__defineGetter__("isDisabled",function(){return this.hasAttribute("disabled");});HTMLElement.prototype.contains=function(node){while(node&&(this!=node))node=node.parentNode;return this==node;};HTMLElement.prototype.getAppliedStyle=function(name){return document.defaultView.getComputedStyle(this,null).getPropertyValue(name);};HTMLElement.prototype.refresh=function(){};}};SOAPI.Core_Gecko_CreateElement=function(){document._createElement=document.createElement;document.createElement=function(type){var element=document._createElement(type);if(type.toLowerCase()=="input"||type.toLowerCase()=="textarea"){SOAPI.Event.addEventHandler(element,"focus");SOAPI.Event.addEventHandler(element,"blur");}return element;};};{window.opera=window.opera||false;window.ie=(!window.opera&&typeof HTMLElement=="undefined");window.gecko=(!window.ie);}if(opera){SOAPI.Core_Opera_HTMLElement.call();SOAPI.Core_Opera_CreateElement.call();}else  if(ie){SOAPI.Core_IE_HTMLElement.call();SOAPI.Core_IE_CreateElement.call();}else {SOAPI.Core_Gecko_HTMLElement.call();SOAPI.Core_Gecko_CreateElement.call();}window.SOAPI=window.SOAPI||{};var SOAPI=window.SOAPI;{SOAPI.version="4.7";SOAPI.progress=false;SOAPI.built=false;SOAPI.action=null;SOAPI.widgets=SOAPI.widgets||{};SOAPI.setupActions=[];SOAPI.setup=function(progress,action,build){while(SOAPI.setupActions.length){var setupAction=SOAPI.setupActions.shift();setupAction();}if(progress)SOAPI.progress=true;if(action)SOAPI.action=action;if(SOAPI.built){if(SOAPI.action&&isFunction(SOAPI.action))SOAPI.action();if(SOAPI.action&&!isFunction(SOAPI.action))eval(SOAPI.action);SOAPI.action=null;return;}var theHTMLElement=(ie&&SOAPI.HTMLElement)?SOAPI.HTMLElement:window.HTMLElement.prototype;for(var member in SOAPI.Sprite.prototype){if(["parentClass","construct","isSprite","dragger","animators","timer","callParent"].contains(member))continue;theHTMLElement[member]=SOAPI.Sprite.prototype[member];}if(ie&&SOAPI.HTMLElement){var elements=document.getElementsByTagName("*");var HTMLElement=SOAPI.HTMLElement;for(var i=elements.length-1;i>=0;i--){var element=elements[i];if(typeof element.hasAttribute=="undefined"){if(element.tagName=="OBJECT"){for(var pName in HTMLElement){if(!element[pName])element[pName]=HTMLElement[pName];}continue;}for(var pName in HTMLElement)element[pName]=HTMLElement[pName];}}}SOAPI.Event.setupEventHandlers();if(build)return SOAPI.buildWidgets();if(SOAPI.action&&isFunction(SOAPI.action))SOAPI.action();if(SOAPI.action&&!isFunction(SOAPI.action))eval(SOAPI.action);};SOAPI.createElement=function(parameters){var p={type:"div",element:null,parent:document.body,attributes:null,styles:null,content:null,insert:true};for(var pName in parameters){if(parameters[pName]!=null)p[pName]=parameters[pName];}var px={left:true,top:true,width:true,height:true};if(isString(p.parent))p.parent=document.getElementById(p.parent);if(isString(p.element))p.element=document.getElementById(p.element);var e=(p.element)?p.element:document.createElement(p.type);for(pName in p.attributes){if(p.attributes[pName]!=null)e.setAttribute(pName,p.attributes[pName]);}for(pName in p.styles){if(p.styles[pName]!=null){e.style[pName]=(px[pName]==null)?p.styles[pName]:parseFloat(p.styles[pName])+"px";}}if(p.content!=null)e.innerHTML=p.content;if(!p.element&&p.insert)p.parent.appendChild(e);return e;};SOAPI.destroyElement=function(element){if(isString(element))element=document.getElementById(element);element.innerHTML="";element.outerHTML="";};SOAPI.findAllChildElements=function(parent,type,attributes,recurse,limit,forwards){type=(type)?type.toLowerCase():"*";var a=(attributes)?attributes:{};var children=[];var childNodes=(recurse)?parent.getElementsByTagName(type):parent.childNodes;var i=childNodes.length;while(i--){var child=childNodes[(forwards)?childNodes.length-i-1:i];if(child.nodeType!=1||(type!="*"&&child.tagName.toLowerCase()!=type)){continue;}var found=true;for(var aName in a){var found=false;if(!child.hasAttribute(aName))break;var attribute=child.getAttribute(aName);if(isArray(a[aName])){var aSub=a[aName];var j=aSub.length;while(j--){var aSubName=aSub[j];switch(aName){case"widget":found=isWidget(child,aSubName);break;case"class":found=attribute.split(" ").contains(aSubName);break;default:found=attribute==aSubName;break;}if(found)break;}}else {switch(aName){case"widget":found=isWidget(child,a[aName]);break;case"class":found=attribute.split(" ").contains(a[aName]);break;default:found=attribute==a[aName];break;}}if(!found)break;}if(found)children.push(child);if(children.length>=limit)break;}return children;};SOAPI.findFirstChildElement=function(parent,type,attributes,recurse){return this.findAllChildElements(parent,type,attributes,recurse,1,true)[0];};SOAPI.findLastChildElement=function(parent,type,attributes,recurse){return this.findAllChildElements(parent,type,attributes,recurse,1)[0];};SOAPI.findAllChildComponents=function(parent,cType,eType,recurse){return this.findAllChildElements(parent,eType,{component:cType},recurse);};SOAPI.findFirstChildComponent=function(parent,cType,eType,recurse){return this.findFirstChildElement(parent,eType,{component:cType},recurse);};SOAPI.findLastChildComponent=function(parent,cType,eType,recurse){return this.findLastChildElement(parent,eType,{component:cType},recurse);};SOAPI.findAllChildWidgets=function(parent,wType,eType,recurse){return this.findAllChildElements(parent,eType,{widget:wType},recurse);};SOAPI.findFirstChildWidget=function(parent,wType,eType,recurse){return this.findFirstChildElement(parent,eType,{widget:wType},recurse);};SOAPI.findLastChildWidget=function(parent,wType,eType,recurse){return this.findLastChildElement(parent,eType,{widget:wType},recurse);};SOAPI.getMatchingAttributes=function(element,attributes){for(var i in attributes){if(element.hasAttribute(i))attributes[i]=element.getAttribute(i);}return attributes;};SOAPI.buildWidgets=function(element){element=element||document.body;var elements=[];var allelements=element.getElementsByTagName("*");var stack=[element];var buildsubs=0;for(var i=0,e;(e=allelements[i])!=null;i++){if(((isWidget(e)&&this.widgets[e.getAttribute("widget")])||isComponent(e))&&!e.built){var hasBuild=e.hasAttribute("build");var hasBuildsubs=e.hasAttribute("buildsubs");var j=stack.length-1;while(j>=0){if(stack[j]===document.body||stack[j].contains(e)){stack.push(e);if(buildsubs==j&&((hasBuildsubs&&e.getAttribute("buildsubs")!="false")||(!hasBuildsubs))){buildsubs=j+1;}j++;break;}stack.pop();j--;if(buildsubs>j)buildsubs=j;}if(isWidget(e)&&buildsubs>=j-1&&(j==1||((hasBuild&&e.getAttribute("build")!="false")||(!hasBuild)))){elements.push(e);}}}if(isWidget(element))element.builtsubs=true;var progress=this.progress;if(!this.ProgressBar)progress=false;if(progress){progress=this.progress={};progress.time=0;progress.elements=elements;progress.element=0;progress.bar=new this.ProgressBar({element:document.getElementById("SOAPI_LoadBar")});return this.buildNextWidget();}for(var i=0,e;(e=elements[i])!=null;i++)this.widgets[e.getAttribute("widget")]({element:e});this.built=true;SOAPI.setup();};SOAPI.buildNextWidget=function(){var progress=SOAPI.progress;var e=progress.elements[progress.element];SOAPI.widgets[e.getAttribute("widget")]({element:e});progress.element++;if(progress.element<progress.elements.length){var now=new Date();var time=now.getTime();if(time-progress.time>1000){progress.bar.updatePosition(progress.element/progress.elements.length*100);progress.time=time;return setTimeout(SOAPI.buildNextWidget,0);}else {return SOAPI.buildNextWidget();}}progress.bar.parentNode.removeChild(progress.bar);SOAPI.progress=true;SOAPI.built=true;SOAPI.setup();};SOAPI.findParentWidget=function(element,type){while((element=element.parentNode)!==document){if(isWidget(element,type))return element;}return false;};SOAPI.findParentComponent=function(element,type){while((element=element.parentNode)!==document){if(isComponent(element,type))return element;}return false;};SOAPI.configureWidgetPieces=function(config){for(var i in config){var pieces=config[i];var widget=SOAPI[i].prototype;if(!isObject(pieces)){widget.parameters=SOAPI.merge(widget.parameters);widget.parameters.pieces=pieces;continue;}for(var j in pieces){if(j=="self"){widget.parameters.pieces=pieces[j];continue;}widget.ctypes[j]=widget.ctypes[j].duplicate();var proto=widget.ctypes[j].prototype;proto.parameters=SOAPI.merge(proto.parameters);proto.parameters.pieces=pieces[j];}}};SOAPI.merge=function(){if(isArray(arguments[0]))return[].concat(arguments);var result={};for(var i=0;i<arguments.length;i++){var object=arguments[i];for(var j in object)result[j]=object[j];}return result;};SOAPI.applyBackgroundCSS=function(element){if(isString(element))element=document.getElementById(element);if(element.tagName.toLowerCase()!="img")return;var bg=element.getAppliedStyle("background-image");if(bg.length>5)element.src=(ie)?bg.slice(5,-2):bg.slice(4,-1);else  if(element.src=="")element.style.display="none";element.style.backgroundImage="none";};}SOAPI.Validator={NO_FILTER:0,UPPERCASE:1,LOWERCASE:2,ALPHABETIC:3,NUMERIC:4,ALPHANUMERIC:7,ALL:7,definitions:{},addDefinition:function(name,parameters){var p={filters:this.NO_FILTER,custom:"",description:"",actionBefore:null,actionAfter:null};for(var pName in parameters)p[pName]=parameters[pName];this.definitions[name]=p;},validateKey:function(object,event,definition,maxlength){var e=event.event;var keyCode=e.keyCode;var charCode=e.charCode||e.keyCode;if(!keyCode&&!charCode)return true;if((opera&&(!e.which||keyCode==16||keyCode==17))||(!ie&&!opera&&(keyCode==8||keyCode==9||keyCode==35||keyCode==36||keyCode==46||(keyCode>=37&&keyCode<=40)||(charCode==120&&e.ctrlKey)||(charCode==99&&e.ctrlKey)))){return true;}if((charCode==118&&e.ctrlKey)){function validate(object,definition,maxlength){return function(){object.value=SOAPI.Validator.validateText(object.value,definition,maxlength);}}this.timer=setTimeout(validate(object,definition,maxlength),0);return true;}var selectionStart=object.selectionStart;var selectionEnd=object.selectionEnd;if(object.value.length>=maxlength&&(ie||selectionStart==selectionEnd)){event.preventDefault();return 0;}var keyChar=String.fromCharCode(charCode);var newKeyChar=this.validateText(keyChar,definition);if(!newKeyChar){event.preventDefault();return false;}if(ie){if(newKeyChar!=keyChar)e.keyCode=newKeyChar.charCodeAt(0);return true;}if(newKeyChar!=keyChar){object.value=object.value.substring(0,selectionStart)+newKeyChar+object.value.substring(selectionEnd);object.setSelectionRange(selectionStart+newKeyChar.length,selectionStart+newKeyChar.length);event.preventDefault();}return true;},validateText:function(text,definition,maxlength){var definition=this.definitions[definition];if(!definition)return text;if(definition.actionBefore)text=this.executeAction(definition.actionBefore,text);var validText="";for(var i=0;i<text.length;i++){var charCode=text.charCodeAt(i);if((((definition.filters&this.UPPERCASE)==this.UPPERCASE)&&(charCode>64&&charCode<91))||(((definition.filters&this.LOWERCASE)==this.LOWERCASE)&&(charCode>96&&charCode<123))||(((definition.filters&this.NUMERIC)==this.NUMERIC)&&(charCode>47&&charCode<58))||(definition.custom.indexOf(text.charAt(i))!==-1)){validText+=text.charAt(i);}}if(definition.actionAfter)validText=this.executeAction(definition.actionAfter,validText);return(maxlength)?validText.substring(0,maxlength):validText;},executeAction:function(action,data){if(isFunction(action))return action(data);if(isString(action))eval(action);if(isArray(action)){for(var key in action)eval(action[key]);}return data;}};{var valid=SOAPI.Validator;valid.addDefinition("Alphabetic",{filters:valid.ALPHABETIC,custom:"",description:"A-Z and a-z only"});valid.addDefinition("Alphabetic_S",{filters:valid.ALPHABETIC,custom:" ",description:"A-Z, a-z, and space only"});valid.addDefinition("Alphanumeric",{filters:valid.ALPHANUMERIC,custom:"",description:"A-Z, a-z, and 0-9 only"});valid.addDefinition("Alphanumeric_S",{filters:valid.ALPHANUMERIC,custom:" ",description:"A-Z, a-z, 0-9, and space only"});valid.addDefinition("Any",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~",description:"all characters except ' and \""});valid.addDefinition("Any_BQ",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~'\"",description:"all characters"});valid.addDefinition("Any_DQ",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~\"",description:"all characters except '"});valid.addDefinition("Any_Multi",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\r\n",description:"all characters except ' and \""});valid.addDefinition("Any_Multi_BQ",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~'\"\t\r\n",description:"all characters"});valid.addDefinition("Any_Multi_DQ",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~\"\t\r\n",description:"all characters except '"});valid.addDefinition("Any_Multi_SQ",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~'\t\r\n",description:"all characters except \""});valid.addDefinition("Any_SQ",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()*+,-./:;<=>?@[\\]^_`{|}~'",description:"all characters except \""});valid.addDefinition("Boolean",{filters:valid.NO_FILTER,custom:"01",description:"0 and 1 only"});valid.addDefinition("Date",{filters:valid.ALPHANUMERIC,custom:" ,-./:",description:"A-Z, a-z, 0-9, space, and ,-./: only"});valid.addDefinition("Decimal",{filters:valid.NUMERIC,custom:".",description:"0-9 and . only"});valid.addDefinition("Decimal_S",{filters:valid.NUMERIC,custom:" .",description:"0-9, space, and . only"});valid.addDefinition("Email",{filters:valid.LOWERCASE|valid.NUMERIC,custom:".-@_",description:"a-z, 0-9, and .-@_ only",actionBefore:'data=data.toLowerCase()'});valid.addDefinition("Filename",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()+,-.;=@[]^_`{}~'",description:"all characters except \\/:*?\"<>|"});valid.addDefinition("Filepath",{filters:valid.ALPHANUMERIC,custom:" !#\u00A3$%&()+,-./;=@[]^_`{}~'",description:"all characters except \\:*?\"<>|"});valid.addDefinition("Integer",{filters:valid.NUMERIC,custom:"-",description:"0-9 and - only"});valid.addDefinition("Integer_S",{filters:valid.NUMERIC,custom:" -",description:"0-9, space, and - only"});valid.addDefinition("Lowercase",{filters:valid.LOWERCASE,custom:"",description:"a-z only",actionBefore:'data=data.toLowerCase()'});valid.addDefinition("Lowercase_S",{filters:valid.LOWERCASE,custom:" ",description:"a-z and space only",actionBefore:'data=data.toLowerCase()'});valid.addDefinition("Number",{filters:valid.NUMERIC,custom:"-.",description:"0-9 and -. only"});valid.addDefinition("Number_S",{filters:valid.NUMERIC,custom:" -.",description:"0-9, space, and -. only"});valid.addDefinition("Numeric",{filters:valid.NUMERIC,custom:"",description:"0-9 only"});valid.addDefinition("Numeric_S",{filters:valid.NUMERIC,custom:" ",description:"0-9 and space only"});valid.addDefinition("Uppercase",{filters:valid.UPPERCASE,custom:"",description:"A-Z only",actionBefore:'data=data.toUpperCase()'});valid.addDefinition("Uppercase_S",{filters:valid.UPPERCASE,custom:" ",description:"A-Z and space only",actionBefore:'data=data.toUpperCase()'});valid.addDefinition("URL",{filters:valid.ALPHANUMERIC,custom:":/.-_?&#=+%",description:"A-Z, a-z, 0-9, and :/.-_?&#=+% only"});valid.addDefinition("Variable_PHP",{filters:valid.ALPHANUMERIC,custom:"_",description:"A-Z, a-z, 0-9, and _ only"});}SOAPI.Class=function(){};{SOAPI.Class.prototype.construct=function(){};SOAPI.Class.extension=function(){var subClass=this.duplicate();subClass.prototype.parentClass=this.prototype;return subClass;};SOAPI.Class.extend=function(members){for(var member in members)this.prototype[member]=members[member];};SOAPI.Class.duplicate=function(){var Class=SOAPI.Class;var sibClass=function(){if(arguments[0]!==Class)return this.construct.apply(this,arguments);};sibClass.prototype=new this(Class);sibClass.extension=this.extension;sibClass.extend=this.extend;sibClass.duplicate=this.duplicate;return sibClass;};SOAPI.Class.prototype.callParent=function(object,name,parameters){var currentClass=this;var found=null;while(currentClass!=null){if(currentClass[name]===object)found=currentClass;currentClass=currentClass.parentClass;}currentClass=found||this;return currentClass.parentClass[name].apply(this,parameters);};}SOAPI.Events={mousedown:["onMouseDown","mousedown"],mousemove:["onMouseMove","mousemove"],mouseup:["onMouseUp","mouseup"],mousewheel:["onMouseWheel",(!ie)?"DOMMouseScroll":"mousewheel"],mouseover:["onMouseOver","mouseover"],mouseout:["onMouseOut","mouseout"],focus:["onFocus",(!ie)?"focus":"activate"],blur:["onBlur",(!ie)?"blur":"deactivate"],keypress:["onKeyPress","keypress"],keydown:["onKeyDown","keydown"],keyup:["onKeyUp","keyup"],change:["onChange","change"],nodeinserted:["onNodeInserted","DOMNodeInserted"],noderemoved:["onNodeRemoved","DOMNodeRemoved"],nodeinsertedintodocument:["onNodeInsertedIntoDocument","DOMNodeInsertedIntoDocument"],noderemovedfromdocument:["onNodeRemovedFromDocument","DOMNodeRemovedFromDocument"],drag:["onDrag"],dragstart:["onDragStart"],dragend:["onDragEnd"],dragover:["onDragOver"],dragout:["onDragOut"],drop:["onDrop"],sizechange:["onSizeChange"],contentchange:["onContentChange"],action:["onAction"],onmousedown:function(event){return SOAPI.Event.processEvent("mousedown",event,this);},onmousemove:function(event){return SOAPI.Event.processEvent("mousemove",event,this);},onmouseup:function(event){return SOAPI.Event.processEvent("mouseup",event,this);},onmousewheel:function(event){return SOAPI.Event.processEvent("mousewheel",event,this);},onmouseover:function(event){return SOAPI.Event.processEvent("mouseover",event,this);},onmouseout:function(event){return SOAPI.Event.processEvent("mouseout",event,this);},onfocus:function(event){return SOAPI.Event.processEvent("focus",event,this);},onblur:function(event){return SOAPI.Event.processEvent("blur",event,this);},onkeypress:function(event){return SOAPI.Event.processEvent("keypress",event,this);},onkeydown:function(event){return SOAPI.Event.processEvent("keydown",event,this);},onkeyup:function(event){return SOAPI.Event.processEvent("keyup",event,this);},onchange:function(event){return SOAPI.Event.processEvent("change",event,this);},onnodeinserted:function(event){return SOAPI.Event.processEvent("nodeinserted",event,this);},onnoderemoved:function(event){return SOAPI.Event.processEvent("noderemoved",event,this);},onnodeinsertedintodocument:function(event){return SOAPI.Event.processEvent("nodeinsertedintodocument",event,this);},onnoderemovedfromdocument:function(event){return SOAPI.Event.processEvent("noderemovedfromdocument",event,this);},onMouseDown:function(event){var E=SOAPI.Event;var e=event.event;var element=event.element;E.button=event.getMouseButton();E.x=e.clientX+document.body.scrollLeft;E.y=e.clientY+document.body.scrollTop;E.currentLeft=(element.isSprite)?element.get("left"):element.offsetLeft;E.currentTop=(element.isSprite)?element.get("top"):element.offsetTop;E.offsetX=E.x-E.currentLeft;E.offsetY=E.y-E.currentTop;if(!element.isSprite)return true;if(element.isUsable&&!element.isUsable()){if(element.parentNode)E.triggerEvent("focus",element.parentNode,null,true);return false;}if(E.button==E.LEFT&&element.dragger&&element.dragger.enabled){E.triggerEvent("focus",element,null,true);E.dragImminent=element;event.stopPropagation();}return true;},onMouseMove:function(event){var E=SOAPI.Event;var e=event.event;E.x=e.clientX+document.body.scrollLeft;E.y=e.clientY+document.body.scrollTop;E.distanceX=E.x-E.offsetX-E.currentLeft;E.distanceY=E.y-E.offsetY-E.currentTop;E.currentLeft+=E.distanceX;E.currentTop+=E.distanceY;if(!E.dragActive){if(!E.dragImminent){if(event.element.isUsable&&!event.element.isUsable())event.stopProcessing();return true;}event.element=E.dragImminent;E.triggerEvent("dragstart",event.element);E.dragImminent=false;}event.element=E.dragActive;if(!event.element.isSprite)return false;if(event.getMouseButton()){E.triggerEvent("drag",event.element);}else {E.triggerEvent("dragend",event.element);}event.stopPropagation();return false;},onMouseUp:function(event){var E=SOAPI.Event;var e=event.event;E.x=e.clientX+document.body.scrollLeft;E.y=e.clientY+document.body.scrollTop;E.dragImminent=false;if(!E.dragActive){if(event.element.isUsable&&!event.element.isUsable())event.stopProcessing();return true;}E.triggerEvent("dragend",E.dragActive);event.stopPropagation();return true;},onMouseWheel:function(event){var E=SOAPI.Event;var e=event.event;if(e.wheelDelta)E.wheelDelta=e.wheelDelta/120*((opera)?1:-1);if(e.detail)E.wheelDelta=e.detail;if(E.dragActive)return false;if(event.element.isUsable&&!event.element.isUsable())event.stopProcessing();return true;},onMouseOver:function(event){if(SOAPI.Event.dragActive&&event.element!=SOAPI.Event.dragActive)event.stopProcessing();if(event.element.isUsable&&!event.element.isUsable())event.stopProcessing();return true;},onMouseOut:function(event){if(SOAPI.Event.dragActive&&event.element!=SOAPI.Event.dragActive)event.stopProcessing();if(event.element.isUsable&&!event.element.isUsable())event.stopProcessing();return true;},onDragStart:function(event){SOAPI.Event.dragActive=event.element;var elements=event.element.getElementsByTagName("*");var i=elements.length;while(i--){if(elements[i].eventHandlers&&elements[i].eventHandlers["sizechange"]){SOAPI.Event.changeOnDrag.push(elements[i]);}}return true;},onDrag:function(event){var E=SOAPI.Event;var element=E.dragActive;if(E.distanceX||E.distanceY)SOAPI.Events.doDrag(E,element.dragger.partners,false);if(E.distanceX||E.distanceY)SOAPI.Events.doDrag(E,element.dragger.partners,true);var targets=element.dragger.targets;var topTarget=null;var topZIndex=null;var i=targets.length;while(i--){var target=targets[i];var sprite=target.sprite;var zIndex=parseInt(sprite.style.zIndex);if(E.x>sprite.get("ActualLeft")&&E.x<sprite.get("ActualLRight")&&E.y>sprite.get("ActualTop")&&E.y<sprite.get("ActualTBottom")&&(zIndex>topZIndex||(isNaN(zIndex)&&topZIndex==null))&&sprite.isVisible()){topTarget=target;if(!isNaN(zIndex))topZIndex=zIndex;}}if(topTarget&&!topTarget.over){E.triggerEvent("dragover",topTarget.sprite);topTarget.over=true;}var i=targets.length;while(i--){var target=targets[i];if(target!==topTarget&&target.over){E.triggerEvent("dragout",target.sprite);target.over=false;}}var i=E.changeOnDrag.length;while(i--)E.triggerEvent("sizechange",E.changeOnDrag[i]);return true;},onDragEnd:function(event){var partners=SOAPI.Event.dragActive.dragger.partners;var i=partners.length;while(i--){var r=partners[i].sprite.dragger.restrictions;for(style in r)r[style].delta=0;}var targets=SOAPI.Event.dragActive.dragger.targets;var i=targets.length;while(i--){if(targets[i].over){SOAPI.Event.triggerEvent("dragdrop",target.sprite);break;}}SOAPI.Event.dragActive=false;SOAPI.Event.changeOnDrag=[];return true;},doDrag:function(object,partners,apply){var i=partners.length;while(i--){var partner=partners[i];var sprite=partner.sprite;for(var axis in{X:null,Y:null}){var multiply=partner["multiply"+axis];for(var style in multiply){if(multiply[style]==null)continue;var d=object["distance"+axis]*multiply[style];if(apply){sprite.styleBy(style,d);continue;}var styles=[[style,1]];switch(style){case"width":{var sl=sprite.style.left;var sr=sprite.style.right;if(sl!=""||sr==""){styles.push(["right",-1],["lright",1]);}else {styles.push(["left",-1],["rleft",1]);}}break;case"left":{var sw=sprite.style.width;var sl=sprite.style.left;if((sw=="auto"||sw=="")&&sl!=""){styles.push(["width",-1]);}else {styles.push(["right",-1],["lright",1]);}styles.push(["rleft",-1]);}break;case"right":{var sw=sprite.style.width;var sr=sprite.style.right;if((sw=="auto"||sw=="")&&sr!=""){styles.push(["width",-1]);}else {styles.push(["left",-1],["rleft",1]);}styles.push(["lright",-1]);}break;case"height":{var st=sprite.style.top;var sb=sprite.style.bottom;if(st!=""||sb==""){styles.push(["bottom",-1],["tbottom",1]);}else {styles.push(["top",-1],["btop",1]);}}break;case"top":{var sh=sprite.style.height;var st=sprite.style.top;if((sh=="auto"||sh=="")&&st!=""){styles.push(["height",-1]);}else {styles.push(["bottom",-1],["tbottom",1]);}styles.push(["btop",-1]);}break;case"bottom":{var sh=sprite.style.height;var sb=sprite.style.bottom;if((sh=="auto"||sh=="")&&sb!=""){styles.push(["height",-1]);}else {styles.push(["top",-1],["btop",1]);}styles.push(["tbottom",-1]);}break;}if(!sprite.dragger.restrict)continue;var j=styles.length;while(j--){var r=sprite.dragger.restrictions[styles[j][0]];if(!r)continue;var value=parseFloat(sprite.get(styles[j][0]));d*=styles[j][1];r.delta+=d;if(d<0&&r.min!=null&&value+d<=r.min){d=r.min-value;}else  if(d>0&&r.max!=null&&value+d>=r.max){d=r.max-value;}else  if(SOAPI.Event.dragActive&&((d<0&&r.delta>0&&r.delta+d>0)||(d>0&&r.delta<0&&r.delta+d<0))){d=0;}r.delta-=d;d*=styles[j][1];if(!d||r.step==null)continue;d*=styles[j][1];r.delta+=d;var steps=Math.floor(Math.abs(r.delta)/r.step);var part=r.delta%r.step;if(Math.abs(part)>r.step/2){steps++;d=steps*r.step*((r.delta>0)?1:-1);r.delta-=d;d*=styles[j][1];}else {d=0;}}if(partner.key)object["distance"+axis]=d/multiply[style];}}}},onFocus:function(event){SOAPI.Event.propogateEvent(event,event.element);if(SOAPI.Event.dragActive)event.preventDefault();return true;},onBlur:function(event){SOAPI.Event.propogateEvent(event,event.element);return true;},onKeyPress:function(event){return true;},onKeyDown:function(event){return true;},onKeyUp:function(event){return true;},onChange:function(event){return true;},onSizeChange:function(event){return true;},onContentChange:function(event){return true;},onNodeInserted:function(event){return true;},onNodeRemoved:function(event){return true;},onNodeInsertedIntoDocument:function(event){return true;},onNodeRemovedFromDocument:function(event){return true;}};SOAPI.Event={button:0,LEFT:1,RIGHT:2,MIDDLE:4,wheelDelta:0,x:0,y:0,offsetX:0,offsetY:0,distanceX:0,distanceY:0,currentLeft:0,currentTop:0,dragActive:false,dragImminent:false,changeOnDrag:[],setupEventHandlers:function(){SOAPI.Event.addEventHandler(document,"mousemove");SOAPI.Event.addEventHandler(document,"mousedown");SOAPI.Event.addEventHandler(document,"mouseup");var sets=[document.getElementsByTagName("input"),document.getElementsByTagName("textarea")];var s=sets.length;while(s--){var elements=sets[s];var i=elements.length;while(i--){SOAPI.Event.addEventHandler(elements[i],"focus");SOAPI.Event.addEventHandler(elements[i],"blur");}}},addEventHandler:function(element,type,handler,name,order){if(isString(element))element=document.getElementById(element);if(!isArray(order))order=(order)?[order]:["last"];type=type.toLowerCase().replace(/^on/,"");if(!SOAPI.Events[type])return false;if(!element.eventHandlers){element.eventHandlers={};element.eventQueues={};}if(!element.eventHandlers[type]){var defaultName=SOAPI.Events[type][0];element.eventHandlers[type]={};element.eventHandlers[type][defaultName]={handler:SOAPI.Events[defaultName],pos:0};element.eventQueues[type]=[defaultName];if(SOAPI.Events[type][1]){if(element.addEventListener){element.addEventListener(SOAPI.Events[type][1],SOAPI.Events["on"+type],false);}else {element["on"+SOAPI.Events[type][1]]=SOAPI.Events["on"+type];}}}if(!handler||!name)return true;var handlers=element.eventHandlers[type];var queue=element.eventQueues[type];if(handlers[name])queue.splice(handlers[name].pos,1);var pos=false;for(var i=0;i<order.length;i++){if(order[i]=="last"){pos=queue.push(name);break;}if(order[i]=="first"){pos=queue.unshift(name);break;}var info=order[i].split(" ",2);if(handlers[info[1]]){pos=handlers[info[1]].pos;if(info[0]!="before")pos++;queue.splice(pos,0,name);break;}}if(isArray(handler)){handlers[name]={element:handler[0],handler:handler[1]};}else {handlers[name]={handler:handler};}for(var i=0;i<queue.length;i++){handlers[queue[i]].pos=i;}return true;},removeEventHandler:function(element,type,name){if(isString(element))element=document.getElementById(element);type=type.toLowerCase().replace(/^on/,"");if(!SOAPI.Events["on"+type]||!element.eventHandlers||!element.eventHandlers[type]||!element.eventHandlers[type][name]){return false;}var handlers=element.eventHandlers[type];var queue=element.eventQueues[type];queue.splice(handlers[name].pos,1);handlers[name]=null;for(var i=0;i<queue.length;i++)handlers[queue[i]].pos=i;if(!queue.length){element.eventHandlers[type]=null;element.eventQueues[type]=null;if(SOAPI.Events[type][1]){if(element.removeEventListener){element.removeEventListener(SOAPI.Events[type][1],SOAPI.Events["on"+type],false);}else {element.detachEvent("on"+SOAPI.Events[type][1],SOAPI.Events["on"+type]);}}}return true;},copyEventHandlers:function(from,to,deep){if(isString(from))from=document.getElementById(from);if(isString(to))to=document.getElementById(to);if(deep){for(var i=0;i<from.childNodes.length;i++){SOAPI.Event.copyEventHandlers(from.childNodes[i],to.childNodes[i],true);}}if(isWidget(from))SOAPI.widgets[from.getAttribute("widget")]({element:to});if(!from.eventQueues)return;for(var type in from.eventQueues){for(var i=0;i<from.eventQueues[type].length;i++){var name=from.eventQueues[type][i];if(name.match(/^on/))continue;SOAPI.Event.addEventHandler(to,type,from.eventHandlers[type][name].handler,name);}}},processEvent:function(type,event,element){var e=event||window.event;var E=(e.event)?e:{event:e};element=(ie)?(e.srcElement&&e.srcElement.eventHandlers&&e.srcElement.eventHandlers[type]?e.srcElement:element):element||e.target;var p={type:type,element:element,stop:false,stopPropagation:this._stopPropagation,preventDefault:this._preventDefault,stopProcessing:this._stopProcessing,getMouseButton:this._getMouseButton};for(var i in p)E[i]=p[i];if(ie&&e.fromElement)e.relatedTarget=(e.type=="mouseover")?e.fromElement:e.toElement;if(!element.eventHandlers||!element.eventHandlers[type])return true;var handlers=element.eventHandlers[type];var queue=element.eventQueues[type];for(var i=0;i<queue.length;i++){var handler=handlers[queue[i]];if(!handler.handler.apply((handler.element)?handler.element:element,[E]))return false;if(E.stop)return true;}return true;},triggerEvent:function(type,element,properties,propogate,percolate,pass){if(isString(element))element=document.getElementById(element);type=type.toLowerCase().replace(/^on/,"");if(!SOAPI.Events[type])return false;var E=properties||{};E.event=E.event||{};E.event.target=element;SOAPI.Event.processEvent(type,E,element);if(propogate&&!E.cancelPropogation)this.propogateEvent(E,element,pass);if(percolate&&!E.cancelPercolation)this.percolateEvent(E,element);return true;},propogateEvent:function(event,element,pass){while(element!==document){element=element.parentNode;if(!element)return;if(element.eventHandlers&&element.eventHandlers[event.type]){if(pass&&element[event.type])element[event.type]();else  this.processEvent(event.type,event,element);break;}}},percolateEvent:function(event,element){var elements=element.getElementsByTagName("*");for(var i=0;i<elements.length;i++){if(elements[i].eventHandlers&&elements[i].eventHandlers[event.type]){this.processEvent(event.type,event,elements[i]);}}},_stopPropagation:function(){var e=this.event;if(e.stopPropagation)e.stopPropagation();else  e.cancelBubble=true;this.cancelPropogation=true;},stopPercolation:function(){this.cancelPercolation=true;},_preventDefault:function(){var e=this.event;if(e.preventDefault)e.preventDefault();else  e.returnValue=false;},_stopProcessing:function(){this.stop=true;},_getMouseButton:function(){var E=SOAPI.Event;var e=this.event;return(e.which)?((e.which==2)?E.MIDDLE:((e.which==3)?E.RIGHT:E.LEFT)):e.button;}};SOAPI.Dragger=SOAPI.Class.extension();SOAPI.Dragger.extend({enabled:false,bringToTop:false,restrict:false,restrictions:null,partners:null,targets:null,construct:function(){this.restrictions={};this.partners=[];this.targets=[];},addRestriction:function(style,properties){var p={min:null,max:null,step:null,delta:0};for(var pName in properties)p[pName]=properties[pName];if(!isString(style))return;this.restrictions[style]=p;},removeRestriction:function(style){if(!isString(style))return;var restrictions={};for(var i in this.restrictions){if(i!=style){restrictions[i]=this.restrictions[i];}}this.restrictions=restrictions;},addPartner:function(sprite,x,y,key){if(isString(sprite))sprite=document.getElementById(sprite);if(!isObject(x))x={};if(!isObject(y))y={};for(var i in x){if(x[i]==null)x[i]=1;}for(var i in y){if(y[i]==null)y[i]=1;}this.partners.push({sprite:sprite,multiplyX:x,multiplyY:y,key:key});},removePartner:function(sprite){if(isString(sprite))sprite=document.getElementById(sprite);var i=this.partners.length;while(i--){if(this.partners[i].sprite===sprite){this.partners.splice(i,1);break;}}},addTarget:function(sprite){if(isString(sprite))sprite=document.getElementById(sprite);this.targets.push({sprite:sprite,over:false});},removeTarget:function(sprite){if(isString(sprite))sprite=document.getElementById(sprite);var i=this.targets.length;while(i--){if(this.targets[i].sprite===sprite){this.targets.splice(i,1);break;}}}});SOAPI.Sprite=SOAPI.Class.extension();SOAPI.Sprite.extend({isSprite:true,timer:0,dragger:null,animators:null,construct:function(element,draggable){if(isString(element))element=document.getElementById(element);if(!element.isSprite){for(var member in this)element[member]=this[member];element.animators={};}if(draggable&&!element.dragger){element.dragger=new SOAPI.Dragger();element.dragger.addPartner(element,{left:1},{top:1},true);}return element;},enable:function(){this.removeAttribute("disabled");},disable:function(){this.setAttribute("disabled",true);},get:function(name,giveUnits){switch(name.replace(/-/g,"").toLowerCase()){case"width":{var value=this.getAppliedStyle("width");return(!isNumber(value)&&value.indexOf("px")<0)?this.clientWidth:parseFloat(value);}case"offsetwidth":return this.offsetWidth;case"clientwidth":return this.clientWidth;case"scrollwidth":return this.scrollWidth;case"actualwidth":return this.offsetWidth;case"contentwidth":{var value=0;var i=this.childNodes.length;while(i--){var node=this.childNodes[i];if(node.nodeType!=1)continue;var width=node.offsetLeft+node.offsetWidth;if(width>value)value=width;}return value;}case"height":{var value=this.getAppliedStyle("height");return(!isNumber(value)&&value.indexOf("px")<0)?this.clientHeight:parseFloat(value);}case"offsetheight":return this.offsetHeight;case"clientheight":return this.clientHeight;case"scrollheight":return this.scrollHeight;case"actualheight":return this.offsetHeight;case"contentheight":{var value=0;var i=this.childNodes.length;while(i--){var node=this.childNodes[i];if(node.nodeType!=1)continue;var height=node.offsetTop+node.offsetHeight;if(height>value)value=height;}return value;}case"minwidth":return parseFloat(this.getAppliedStyle("min-width"));case"maxwidth":return parseFloat(this.getAppliedStyle("max-width"));case"minheight":return parseFloat(this.getAppliedStyle("min-height"));case"maxheight":return parseFloat(this.getAppliedStyle("max-height"));case"left":{var value=this.getAppliedStyle("left");return(!isNumber(value)&&value.indexOf("px")<0)?this.offsetLeft:parseFloat(value);}case"offsetleft":return this.offsetLeft;case"clientleft":return this.clientLeft;case"scrollleft":return this.scrollLeft;case"actualleft":return this.getActual("offsetLeft");case"right":{var value=this.getAppliedStyle("right");return(!isNumber(value)&&value.indexOf("px")<0)?this.offsetRight:parseFloat(value);}case"offsetright":return this.offsetRight;case"clientright":return this.clientRight;case"scrollright":return this.scrollRight;case"actualright":return this.getActual("offsetRight");case"top":{var value=this.getAppliedStyle("top");return(!isNumber(value)&&value.indexOf("px")<0)?this.offsetTop:parseFloat(value);}case"offsettop":return this.offsetTop;case"clienttop":return this.clientTop;case"scrolltop":return this.scrollTop;case"actualtop":return this.getActual("offsetTop");case"bottom":{var value=this.getAppliedStyle("bottom");return(!isNumber(value)&&value.indexOf("px")<0)?this.offsetBottom:parseFloat(value);}case"offsetbottom":return this.offsetBottom;case"clientbottom":return this.clientBottom;case"scrollbottom":return this.scrollBottom;case"actualbottom":return this.getActual("offsetBottom");case"rleft":return this.get("right")+this.get("width");case"offsetrleft":return this.get("offsetright")+this.get("offsetwidth");case"clientrleft":return this.get("clientright")+this.get("clientwidth");case"scrollrleft":return this.get("scrollright")+this.get("scrollwidth");case"actualrleft":return this.get("actualright")+this.get("actualwidth");case"lright":return this.get("left")+this.get("width");case"offsetlright":return this.get("offsetleft")+this.get("offsetwidth");case"clientlright":return this.get("clientleft")+this.get("clientwidth");case"scrolllright":return this.get("scrollleft")+this.get("scrollwidth");case"actuallright":return this.get("actualleft")+this.get("actualwidth");case"btop":return this.get("bottom")+this.get("height");case"offsetbtop":return this.get("offsetbottom")+this.get("offsetheight");case"clientbtop":return this.get("clientbottom")+this.get("clientheight");case"scrollbtop":return this.get("scrollbottom")+this.get("scrollheight");case"actualbtop":return this.get("actualbottom")+this.get("actualheight");case"tbottom":return this.get("top")+this.get("height");case"offsettbottom":return this.get("offsettop")+this.get("offsetheight");case"clienttbottom":return this.get("clienttop")+this.get("clientheight");case"scrolltbottom":return this.get("scrolltop")+this.get("scrollheight");case"actualtbottom":return this.get("actualtop")+this.get("actualheight");case"clip":{var regex=(giveUnits)?/rect|\(|\)|\s/ig:/rect|\(|\)|px|\s/ig;var clip=this.getAppliedStyle("clip").replace(regex,"").split(",");if(clip.length<4){if(clip.length==1&&clip[0]=="")return["auto","auto","auto","auto"];if(clip.length==1)return[clip[0],clip[0],clip[0],clip[0]];if(clip.length==2)return[clip[0],clip[1],clip[0],clip[1]];clip[3]="auto";}return clip;}case"opacity":return parseFloat(this.getAppliedStyle("opacity"))*100;case"borderleftwidth":case"borderrightwidth":case"bordertopwidth":case"borderbottomwidth":return parseFloat(this.getAppliedStyle(name));default:return this.getAppliedStyle(name);}},getActual:function(name){var obj=this;var value=obj[name];var offsetName=(name.substring(0,6)=="offset")?name.substring(6).toLowerCase():"";var borderName=(offsetName)?"border-"+offsetName+"-width":"";while(obj=obj.offsetParent){var borderWidth=(borderName)?parseFloat(obj.getAppliedStyle(borderName)):0;value+=obj[name]+(isNaN(borderWidth)?0:borderWidth);if(gecko&&obj.getAppliedStyle("overflow")=="hidden"){value+=isNaN(borderWidth)?0:borderWidth;}}return value;},moveTo:function(left,top){this.styleTo({left:left,top:top});},moveBy:function(left,top){this.moveTo((left!=null)?this.get("left")+left:left,(top!=null)?this.get("top")+top:top);},sizeTo:function(width,height){this.styleTo({width:(width<0)?0:width,height:(height<0)?0:height});},sizeBy:function(width,height){this.sizeTo((width!=null)?this.get("width")+width:width,(height!=null)?this.get("height")+height:height);},clipTo:function(clipTop,clipRight,clipBottom,clipLeft){var clip=this.get("clip",true);if(clipTop!=null)clip[0]=(clipTop=="auto")?"auto":clipTop+"px";if(clipRight!=null)clip[1]=(clipRight=="auto")?"auto":clipRight+"px";if(clipBottom!=null)clip[2]=(clipBottom=="auto")?"auto":clipBottom+"px";if(clipLeft!=null)clip[3]=(clipLeft=="auto")?"auto":clipLeft+"px";this.style.clip="rect("+clip[0]+" "+clip[1]+" "+clip[2]+" "+clip[3]+")";},clipBy:function(clipTop,clipRight,clipBottom,clipLeft){var clip=this.get("clip",false);clipTop=parseFloat(clipTop);clipRight=parseFloat(clipRight);clipBottom=parseFloat(clipBottom);clipLeft=parseFloat(clipLeft);clipTop=(clipTop)?clipTop+((clip[0]=="auto")?0:parseFloat(clip[0])):clip[0];clipRight=(clipRight)?clipRight+((clip[1]=="auto")?this.scrollWidth:parseFloat(clip[1])):clip[1];clipBottom=(clipBottom)?clipBottom+((clip[2]=="auto")?this.scrollHeight:parseFloat(clip[2])):clip[2];clipLeft=(clipLeft)?clipLeft+((clip[3]=="auto")?0:parseFloat(clip[3])):clip[3];this.clipTo(clipTop,clipRight,clipBottom,clipLeft);},blendTo:function(opacity){if(!isNumber(opacity))return;this.style.opacity=opacity/100;if(ie)this.style.filter="alpha(opacity="+opacity+")";},blendBy:function(opacity){this.blendTo((this.get("opacity")*100)+opacity);},hide:function(){this.style.visibility="hidden";if(this.getAppliedStyle("display")!="none"){this.previousDisplayCSS=this.getAppliedStyle("display");this.style.display="none";}},show:function(){this.style.visibility="visible";if(this.getAppliedStyle("display")=="none"){this.style.display=(this.previousDisplayCSS)?this.previousDisplayCSS:"block";}SOAPI.Event.triggerEvent("sizechange",this,null,false,true);SOAPI.Event.triggerEvent("contentchange",this,null,true);},visibilityTo:function(visible){this[(visible)?"show":"hide"]();},isVisible:function(){return!(this.getAppliedStyle("visibility")=="hidden"||this.getAppliedStyle("display")=="none");},toggleVisibility:function(){this[(this.isVisible)?"hide":"show"]();},classNames:function(){return this.className.split(/\s+/);},hasClassName:function(className){return(this.className&&this.className.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))?true:false;},addClassName:function(className){if(this.hasClassName(className))return;this.className+=(this.className?" ":"")+className;},removeClassName:function(className){this.className=this.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)")," ").trim();},toggleClassName:function(className){this[(this.hasClassName(className))?"removeClassName":"addClassName"](className);},styleTo:function(name,value){var px={"width":true,"height":true,"left":true,"right":true,"top":true,"bottom":true};var pos={"width":true,"height":true};var scroll={"scrollTop":true,"scrollLeft":true};var styles=isObject(name)?name:{};if(!isObject(name))styles[name]=value;for(var i in styles){if(styles[i]==null||isUnNumber(styles[i]))continue;if(pos[i]&&styles[i]<0)styles[i]=0;if(scroll[i])this[i]=styles[i];else  this.style[i]=styles[i]+((isNumber(styles[i])&&px[i])?"px":"");}},styleBy:function(name,value){var styles=isObject(name)?name:{};if(!isObject(name))styles[name]=value;for(var i in styles){if(isNumber(styles[i]))styles[i]+=this.get(i);}this.styleTo(styles);},write:function(html,append,position){position=position||"beforeend";if(append)this.insertAdjacentHTML(position,html);else  this.innerHTML=html;}});SOAPI.Widget=SOAPI.Class.extension();SOAPI.Widget.extend({wtype:"",ctypes:{},built:true,builtsubs:false,handlers:null,components:null,elementType:"div",parameters:{element:null,parent:document.body,id:null,"class":null,style:null,pieces:0,disabled:"false"},construct:function(parameters){this.components={};var result=this.setup(parameters);var p=result.p;var w=result.w;if(p.element==null)p.parent.appendChild(w);this.configure.apply(w);return w;},setup:function(parameters){var p=this.setupParameters(parameters);var w=this.createWidget(p,null,this.elementType);var c=w.components;var pieces={16:"top",32:"bottom",64:"left",128:"right",256:"topleft",512:"topright",1024:"bottomleft",2048:"bottomright"};for(var i in pieces){if(p.pieces&i){c[pieces[i]]=this.createComponent({element:p.element,parent:w,cType:pieces[i]});}}if(p.pieces&8){c.filler=this.createComponent({element:p.element,parent:w,cType:"filler",eType:"img"});}if(p.pieces&2){c.inner=this.createComponent({element:p.element,parent:w,cType:"inner"});if(p.pieces&4){var inner=w.components.inner;inner.components=c={};c.filler=this.createComponent({element:inner,parent:inner,widget:w,cType:"filler",eType:"img"});}}return{p:p,w:w};},configure:function(){},setupParameters:function(parameters){var p=SOAPI.merge(this.parameters,parameters);if(p.element!=null){for(var pName in p){if(pName!="element"&&pName!="parent"&&p.element.hasAttribute(pName)){p[pName]=p.element.getAttribute(pName);}}}p.disabled=(p.disabled!="false"&&p.disabled!=null)?true:null;p.usable=!p.disabled;return p;},createWidget:function(parameters,extras,type){var a={widget:this.wtype};for(var pName in extras)a[pName]=extras[pName];for(var pName in parameters){if(pName!="element"&&pName!="parent"){a[pName]=parameters[pName];}}var w=new SOAPI.Sprite(SOAPI.createElement({type:type,element:parameters.element,attributes:a,insert:false}),this.draggable);for(var member in this)w[member]=this[member];return w;},createComponent:function(parameters,makeSprite,draggable){var p={element:null,parent:null,widget:null,cType:null,eType:"div",extras:null,criteria:null,parameters:null,recurse:false};for(var pName in parameters){if(parameters[pName]!=null)p[pName]=parameters[pName];}p.eType=p.eType.toLowerCase();p.widget=p.widget||p.parent;var a={};var c={component:p.cType};for(var pName in p.extras)a[pName]=p.extras[pName];for(var pName in p.criteria)c[pName]=p.criteria[pName];var child=null;if(p.element!=null)child=SOAPI.findLastChildElement(p.element,"*",c,p.recurse);if(child!=null)a=SOAPI.getMatchingAttributes(child,a);a.component=p.cType;var component=SOAPI.createElement({type:p.eType,element:child,parent:p.parent,attributes:a});var parameters=p.parameters||{};parameters.element=component;parameters.parent=p.parent;if(this.ctypes[p.cType]!=null)component=new this.ctypes[p.cType](parameters);component.parentWidget=p.widget;if(makeSprite)component=new SOAPI.Sprite(component,draggable);SOAPI.applyBackgroundCSS(component);return component;},createComponents:function(parameters,makeSprite,draggable){var p={element:null,parent:null,widget:null,cType:null,eType:"div",extras:null,criteria:null,parameters:null,recurse:false};for(var pName in parameters){if(parameters[pName]!=null)p[pName]=parameters[pName];}p.eType=p.eType.toLowerCase();p.widget=p.widget||p.parent;var ctypes=this.ctypes;var children=null;var c={component:p.cType};for(var pName in p.criteria)c[pName]=p.criteria[pName];if(p.element!=null)children=SOAPI.findAllChildElements(p.element,"*",c,p.recurse);if(!children)return[];var items=[];var i=children.length;var j=0;while(i--){var a={id:null,"class":null,style:null};for(var pName in p.extras)a[pName]=p.extras[pName];var child=children[i];a=SOAPI.getMatchingAttributes(child,a);items[j]=SOAPI.createElement({type:p.eType,element:child,parent:p.parent,attributes:a});var cType=items[j].getAttribute("component");var parameters=p.parameters||{};parameters.element=items[j];if(ctypes[cType]!=null)items[j]=new ctypes[cType](parameters);items[j].parentWidget=p.widget;if(makeSprite)items[j]=new SOAPI.Sprite(items[j],draggable);SOAPI.applyBackgroundCSS(items[j++]);}return items;},allow:function(noBubble){if(!this.isDisabled)this.setAttribute("usable",true);if(!noBubble)this.allowChildren();},deny:function(noBubble){this.setAttribute("usable",false);if(!noBubble)this.denyChildren();},allowChildren:function(){var elements=this.getElementsByTagName("*");for(var i=0,e;(e=elements[i])!=null;i++){if(isWidget(e)&&e.allow)e.allow(true);}},denyChildren:function(){var elements=this.getElementsByTagName("*");for(var i=0,e;(e=elements[i])!=null;i++){if(isWidget(e)&&e.deny)e.deny(true);}},isUsable:function(){return this.getAttribute("usable")!="false";},enable:function(){this.removeAttribute("disabled");this.allow();},disable:function(){this.setAttribute("disabled",true);this.deny();},onFocus:function(event){this.setAttribute("focused",true);return true;},onBlur:function(event){this.setAttribute("focused",false);return true;}});SOAPI.widgets.textbox=function(p){new SOAPI.Textbox(p);};SOAPI.Textbox=SOAPI.Widget.extension();SOAPI.Textbox.extend({wtype:"textbox",parameters:SOAPI.merge(SOAPI.Widget.prototype.parameters,{tabindex:0,value:"",password:"false"}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Textbox_Handlers;w.setAttribute("tabindex","");w.setAttribute("password",p.password!="false");SOAPI.Event.addEventHandler(w,"focus",w.onFocus,"Widget");SOAPI.Event.addEventHandler(w,"blur",w.onBlur,"Widget");SOAPI.Event.addEventHandler(w,"focus",handlers.onFocus,"Textbox");SOAPI.Event.addEventHandler(w,"blur",handlers.onBlur,"Textbox");var type=(p.password=="false")?"text":"password";var textbox=c.textbox=this.createComponent({element:p.element,parent:w,cType:"textbox",eType:"input",extras:{type:type,name:w.getAttribute("name"),tabindex:p.tabindex,value:p.value},criteria:{type:type}},true);textbox.disabled=!w.isUsable();textbox.write=handlers.textbox.write;SOAPI.Event.addEventHandler(textbox,"focus",w.onFocus,"Widget");SOAPI.Event.addEventHandler(textbox,"blur",w.onBlur,"Widget");SOAPI.Event.addEventHandler(textbox,"keypress",handlers.textbox.onKeyPress,"Textbox");SOAPI.Event.addEventHandler(textbox,"change",handlers.textbox.onChange,"Textbox");return result;},write:function(html,append,position){this.components.textbox.write(html,append,position);},allow:function(){this.callParent(arguments.callee,"allow");this.components.textbox.disabled=this.isDisabled;},deny:function(){this.callParent(arguments.callee,"deny");this.components.textbox.disabled=true;}});SOAPI.Textbox_Handlers={onFocus:function(event){this.components.textbox.focus();return true;},onBlur:function(event){if(this.hasAttribute("tooltip"))document.getElementById(this.getAttribute("tooltip")).deactivate(this);return true;},textbox:{write:function(text,append){this.value=(append)?this.value+text:text;},onKeyPress:function(event){var valid=(this.parentWidget.getAttribute("filter"))?SOAPI.Validator.validateKey(this,event,this.parentWidget.getAttribute("filter"),this.parentWidget.getAttribute("maxlength")):true;if(!valid&&this.parentWidget.hasAttribute("tooltip")){var tooltip=document.getElementById(this.parentWidget.getAttribute("tooltip"));tooltip.write((valid===false)?((event.event.keyCode==13)?"<b>Invalid key pressed.</b><br />"+"Please use the Tab key to move between<br />"+"fields, rather than the Enter key.":"<b>Invalid character entered.</b><br />"+"The characters allowed are:<br />"+SOAPI.Validator.definitions[this.parentWidget.getAttribute("filter")].description):"<b>Maximum length reached.</b><br />"+"Only "+this.parentWidget.getAttribute("maxlength")+" characters are allowed in this field.");tooltip.activate(this.parentWidget);}return valid;},onChange:function(event){if(this.parentWidget.getAttribute("filter")){this.value=SOAPI.Validator.validateText(this.value,this.parentWidget.getAttribute("filter"),this.parentWidget.getAttribute("maxlength"));}return true;}}};SOAPI.widgets.panel=function(p){new SOAPI.Panel(p);};SOAPI.Panel=SOAPI.Widget.extension();SOAPI.Panel.extend({wtype:"panel",setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;w._write=SOAPI.Sprite.prototype.write;if(p.pieces&1){c.content=this.createComponent({element:p.element,parent:w,cType:"content"},true);}return result;},configure:function(){if(this.hasAttribute("text"))this.write(this.getAttribute("text"),true,"afterbegin");this.removeAttribute("text");},write:function(html,append,position){if(this.components.content){this.components.content.write(html,append,position);}else {this._write(html,append,position);}}});SOAPI.Events.action=["onAction"];SOAPI.Events.onAction=function(event){return true};SOAPI.widgets.button=function(p){new SOAPI.Button(p);};SOAPI.Button=SOAPI.Panel.extension();SOAPI.Button.extend({wtype:"button",parameters:SOAPI.merge(SOAPI.Panel.prototype.parameters,{tabindex:0,action:""}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Button_Handlers;w.setAttribute("tabindex",p.tabindex);w.setAttribute("state","default");SOAPI.Event.addEventHandler(w,"mousedown",handlers.onMouseDown,"Button");SOAPI.Event.addEventHandler(w,"mouseup",handlers.onMouseUp,"Button");SOAPI.Event.addEventHandler(w,"mouseup",handlers.onMouseUpAction,"Action");SOAPI.Event.addEventHandler(w,"mouseover",handlers.onMouseOver,"Button");SOAPI.Event.addEventHandler(w,"mouseout",handlers.onMouseOut,"Button");SOAPI.Event.addEventHandler(w,"action");SOAPI.Event.addEventHandler(w,"focus",w.onFocus,"Widget");SOAPI.Event.addEventHandler(w,"blur",w.onBlur,"Widget");if(w.hasAttribute("onaction")){eval("var func = function(event) {"+w.getAttribute("onaction")+"}");SOAPI.Event.addEventHandler(w,"action",func,"Attribute");w.removeAttribute("onaction");}if(p.pieces&4096){var icon=c.icon=this.createComponent({element:p.element,parent:w,cType:"icon"});}return result;}});SOAPI.Button_Handlers={onMouseOver:function(event){this.setAttribute("state","over");event.stopPropagation();return true;},onMouseOut:function(event){this.setAttribute("state","default");event.stopPropagation();return true;},onMouseDown:function(event){this.setAttribute("state","down");event.stopPropagation();return true;},onMouseUp:function(event){this.setAttribute("state","over");event.stopPropagation();return true;},onMouseUpAction:function(event){SOAPI.Event.triggerEvent("action",this);return true;}};SOAPI.Events.scrollstart=["onScrollStart"];SOAPI.Events.scrollend=["onScrollEnd"];SOAPI.Events.scroll=["onScroll"];SOAPI.Events.onScrollStart=function(event){return true};SOAPI.Events.onScrollEnd=function(event){return true};SOAPI.Events.onScroll=function(event){return true};SOAPI.widgets.scrollbar=function(p){new SOAPI.Scrollbar(p);};SOAPI.Scrollbar=SOAPI.Widget.extension();SOAPI.Scrollbar.extend({wtype:"scrollbar",ctypes:{track:SOAPI.Panel,upleft:SOAPI.Button,downright:SOAPI.Button,handle:SOAPI.Button},orientation:"horizontal",initialDelay:500,repeatDelay:50,timer:null,initialDone:false,active:false,distanceFactor:20,partners:null,min:0,max:100,position:0,slice:10,ratio:1,trackStart:0,trackSize:100,handleSize:10,parameters:SOAPI.merge(SOAPI.Widget.prototype.parameters,{orientation:"horizontal"}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Scrollbar_Handlers;var vertical=(p.orientation=="vertical");w.orientation=(vertical)?"vertical":"horizontal";w.setAttribute("orientation",w.orientation);SOAPI.Event.addEventHandler(w,"mousewheel",handlers.onMouseWheel,"Scrollbar");SOAPI.Event.addEventHandler(w,"scrollstart",handlers.onScrollStart,"Scrollbar");SOAPI.Event.addEventHandler(w,"scrollend",handlers.onScrollEnd,"Scrollbar");SOAPI.Event.addEventHandler(w,"contentchange",handlers.onContentChange,"Scrollbar");var track=c.track=this.createComponent({element:p.element,parent:w,cType:"track"});SOAPI.Event.addEventHandler(track,"mousedown",handlers.track.onMouseDown,"Scrollbar");SOAPI.Event.addEventHandler(track,"mouseup",handlers.track.onMouseUp,"Scrollbar");SOAPI.Event.addEventHandler(track,"mouseout",handlers.track.onMouseOut,"Scrollbar");var upleft=c.upleft=this.createComponent({element:p.element,parent:w,cType:"upleft"});upleft.setAttribute("tabindex","");SOAPI.Event.addEventHandler(upleft,"mousedown",handlers.upleft.onMouseDown,"Scrollbar");SOAPI.Event.addEventHandler(upleft,"mouseup",handlers.upleft.onMouseUp,"Scrollbar",["before Action"]);SOAPI.Event.addEventHandler(upleft,"mouseout",handlers.upleft.onMouseOut,"Scrollbar");var downright=c.downright=this.createComponent({element:p.element,parent:w,cType:"downright"});downright.setAttribute("tabindex","");SOAPI.Event.addEventHandler(downright,"mousedown",handlers.downright.onMouseDown,"Scrollbar");SOAPI.Event.addEventHandler(downright,"mouseup",handlers.downright.onMouseUp,"Scrollbar",["before Action"]);SOAPI.Event.addEventHandler(downright,"mouseout",handlers.downright.onMouseOut,"Scrollbar");var handle=c.handle=this.createComponent({element:p.element,parent:w,cType:"handle"},true,true);handle.minSize=10;handle.dragger.enabled=true;handle.dragger.restrict=true;handle.dragger.removePartner(handle);handle.dragger.addPartner(handle,(vertical)?null:{left:1},(vertical)?{top:1}:null,true);handle.setAttribute("tabindex","");SOAPI.Event.addEventHandler(handle,"mouseover",handlers.handle.onMouseOver,"Scrollbar",["after onMouseOver"]);SOAPI.Event.addEventHandler(handle,"mouseout",handlers.handle.onMouseOut,"Scrollbar",["after onMouseOut"]);SOAPI.Event.addEventHandler(handle,"dragstart",handlers.handle.onDragStart,"Scrollbar");SOAPI.Event.addEventHandler(handle,"dragend",handlers.handle.onDragEnd,"Scrollbar");SOAPI.Event.addEventHandler(handle,"drag",handlers.handle.onDrag,"Scrollbar");w.partners=[];return result;},configure:function(){this.recalculateScrollProperties(0,500,0,100);},addPartner:function(sprite,property,min,max){if(isString(sprite))sprite=document.getElementById(sprite);this.partners.push({sprite:sprite,property:property,min:min,max:max});},removePartner:function(sprite,property){if(isString(sprite))sprite=document.getElementById(sprite);var i=this.partners.length;while(i--){if(this.partners[i].sprite===sprite&&(property==null||this.partners[i].property==property)){this.partners.splice(i,1);}}},recalculateScrollProperties:function(min,max,position,slice){var vertical=(this.orientation=="vertical");var track=this.components.track;var handle=this.components.handle;var trackStart=(vertical)?track.get("top"):track.get("left");var trackSize=(vertical)?track.get("height"):track.get("width");var handleStart=(vertical)?handle.get("top"):handle.get("left");var area=max-min;this.max=max;this.min=min;this.position=position/(area-slice);this.slice=slice/area;this.ratio=area/trackSize;this.trackStart=trackStart;this.trackSize=trackSize;var handleSize=Math.round(trackSize*this.slice);if(this.position<0)this.position=0;if(this.position>1)this.position=1;if(handleSize<handle.minSize)handleSize=handle.minSize;if(handleSize>trackSize)handleSize=trackSize;handle.visibilityTo(handleSize!=trackSize);handle.styleTo((vertical)?"height":"width",handleSize);this.handleSize=handleSize;var trackArea=trackSize-handleSize;var property=(vertical)?"top":"left";handle.dragger.removeRestriction(property);handle.dragger.addRestriction(property,{min:trackStart,max:trackStart+trackArea});handle.styleTo(property,trackStart+this.position*trackArea);this.updateScrollPartners();},doScroll:function(direction,trackPressed,wheelUsed){var vertical=(this.orientation=="vertical");var handle=this.components.handle;var pos=(vertical)?SOAPI.Event.y:SOAPI.Event.x;var start=(vertical)?handle.get("ActualTop"):handle.get("ActualLeft");var end=start+((vertical)?handle.get("height"):handle.get("width"));var distance=this.distanceFactor/this.ratio*direction*((trackPressed)?10:1);var property="distance"+((vertical)?"Y":"X");handle[property]=(trackPressed&&!(direction<0&&pos<start)&&!(direction>0&&pos>end))?0:distance;if(handle[property])SOAPI.Events.doDrag(handle,handle.dragger.partners,false);if(handle[property])SOAPI.Events.doDrag(handle,handle.dragger.partners,true);if(handle[property])this.updateScrollPosition();if(this.active&&this.isUsable()){function timer(scrollbar,direction,trackPressed){return function(){scrollbar.doScroll(direction,trackPressed);};}this.timer=setTimeout(timer(this,direction,trackPressed),(this.initialDone)?this.repeatDelay:this.initialDelay);this.initialDone=true;}else {clearTimeout(this.timer);this.initialDone=false;}return true;},updateScrollPosition:function(){var handle=this.components.handle;var handleStart=(this.orientation=="vertical")?handle.get("top"):handle.get("left");this.position=(handleStart-this.trackStart)/(this.trackSize-this.handleSize);if(!isNumber(this.position))this.position=0;this.updateScrollPartners();},updateScrollPartners:function(){for(var i=this.partners.length-1;i>=0;i--){var p=this.partners[i];if(p.sprite.isSprite){p.sprite.styleTo(p.property,(p.min+(p.max-p.min)*this.position));}else {SOAPI.Sprite.prototype.styleTo.apply(p.sprite,[p.property,(p.min+(p.max-p.min)*this.position)]);}}},scrollTo:function(percent){if(!isNumber(percent))return;percent/=100;if(percent<0)percent=0;if(percent>1)percent=1;this.position=percent;this.components.handle.styleTo((this.orientation=="vertical")?"top":"left",this.trackStart+percent*(this.trackSize-this.handleSize));this.updateScrollPartners();},scrollBy:function(percent){if(!isNumber(percent))return;this.scrollTo(percent+this.position*100);},allow:function(noBubble){this.callParent(arguments.callee,"allow",arguments);this.components.handle.visibilityTo(this.handleSize!=this.trackSize);},deny:function(noBubble){this.callParent(arguments.callee,"deny",arguments);this.components.handle.hide();}});SOAPI.Scrollbar_Handlers={onMouseWheel:function(event){event.stopPropagation();event.preventDefault();SOAPI.Event.triggerEvent("scrollstart",this,{direction:SOAPI.Event.wheelDelta,wheelUsed:true});return true;},onScrollStart:function(event){if(event.direction!=null&&this.isUsable()){this.active=!event.wheelUsed;this.doScroll(event.direction,event.trackPressed,event.wheelUsed);}else {this.active=false;}return true;},onScrollEnd:function(event){this.active=false;this.initialDone=false;clearTimeout(this.timer);return true;},onContentChange:function(event){return event.stopPropagation()||true;},track:{onMouseDown:function(event){if(SOAPI.Event.button!=SOAPI.Event.LEFT)return true;var vertical=(this.parentWidget.orientation=="vertical");var handle=this.parentWidget.components.handle;var pos=(vertical)?SOAPI.Event.y:SOAPI.Event.x;var start=(vertical)?handle.get("ActualTop"):handle.get("ActualLeft");var end=start+((vertical)?handle.get("height"):handle.get("width"));var direction=0;if(pos<start)direction=-1;if(pos>end)direction=1;SOAPI.Event.triggerEvent("scrollstart",this.parentWidget,{direction:direction,trackPressed:true});return true;},onMouseUp:function(event){SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;},onMouseOut:function(event){SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;}},handle:{onMouseOver:function(event){if(SOAPI.Event.dragActive)this.out=event.stopProcessing()&&false;return true;},onMouseOut:function(event){if(SOAPI.Event.dragActive)this.out=event.stopProcessing()||true;return true;},onDragStart:function(event){SOAPI.Event.triggerEvent("scrollstart",this.parentWidget);return true;},onDrag:function(event){this.parentWidget.updateScrollPosition();return true;},onDragEnd:function(event){if(this.out)this.out=SOAPI.Event.triggerEvent("mouseout",this)&&false;SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;}},upleft:{onMouseDown:function(event){if(SOAPI.Event.button!=SOAPI.Event.LEFT)return true;SOAPI.Event.triggerEvent("scrollstart",this.parentWidget,{direction:-1});return true;},onMouseUp:function(event){SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;},onMouseOut:function(event){SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;}},downright:{onMouseDown:function(event){if(SOAPI.Event.button!=SOAPI.Event.LEFT)return true;SOAPI.Event.triggerEvent("scrollstart",this.parentWidget,{direction:1});return true;},onMouseUp:function(event){SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;},onMouseOut:function(event){SOAPI.Event.triggerEvent("scrollend",this.parentWidget);return true;}}};SOAPI.widgets.scrollbox=function(p){new SOAPI.Scrollbox(p);};SOAPI.Scrollbox=SOAPI.Panel.extension();SOAPI.Scrollbox.extend({wtype:"scrollbox",ctypes:{scrollbarV:SOAPI.Scrollbar,scrollbarH:SOAPI.Scrollbar},parameters:SOAPI.merge(SOAPI.Panel.prototype.parameters,{scrollbars:"",scrollbarH:"",scrollbarV:""}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Scrollbox_Handlers;if(p.scrollbars!="both"&&p.scrollbars!="none"&&p.scrollbars!="horizontal"&&p.scrollbars!="vertical"){p.scrollbars="auto";}if(p.scrollbarH!="on"&&p.scrollbarH!="off"&&p.scrollbarH!="auto"){p.scrollbarH=(p.scrollbars=="both"||p.scrollbars=="horizontal")?"on":((p.scrollbars=="none"||p.scrollbars=="vertical")?"off":"auto");}if(p.scrollbarV!="on"&&p.scrollbarV!="off"&&p.scrollbarV!="auto"){p.scrollbarV=(p.scrollbars=="both"||p.scrollbars=="vertical")?"on":((p.scrollbars=="none"||p.scrollbars=="horizontal")?"off":"auto");}w.setAttribute("scrollbars",p.scrollbars);w.setAttribute("scrollbarH",p.scrollbarH);w.setAttribute("scrollbarV",p.scrollbarV);w.setAttribute("scrollH",p.scrollbarH=="on");w.setAttribute("scrollV",p.scrollbarV=="on");SOAPI.Event.addEventHandler(w,"mousewheel",handlers.onMouseWheel,"Scrollbox");SOAPI.Event.addEventHandler(w,"sizechange",handlers.onSizeChange,"Scrollbox");SOAPI.Event.addEventHandler(w,"contentchange",handlers.onContentChange,"Scrollbox");var content=c.content=this.createComponent({element:p.element,parent:w,cType:"content"},true);content.write=handlers.content.write;var scrollbarV=c.scrollbarV=this.createComponent({element:p.element,parent:w,cType:"scrollbarV",parameters:{orientation:"vertical"}});var scrollbarH=c.scrollbarH=this.createComponent({element:p.element,parent:w,cType:"scrollbarH",parameters:{orientation:"horizontal"}});return result;},configure:function(){if(this.getAttribute("scrollbarV")!="on")this.hideScrollbarV();if(this.getAttribute("scrollbarH")!="on")this.hideScrollbarH();SOAPI.Event.triggerEvent("contentchange",this);},recalculate:function(){if(!this.isUsable())return false;var content=this.components.content;var scrollbarV=this.components.scrollbarV;var scrollbarH=this.components.scrollbarH;var contentHeight=content.get("actualHeight");var contentWidth=content.get("actualWidth");var scrollHeight=content.get("scrollHeight");var scrollWidth=content.get("scrollWidth");var scrollTop=content.get("scrollTop");var scrollLeft=content.get("scrollLeft");if(scrollHeight-scrollTop<contentHeight){content.styleTo("scrollTop",scrollHeight-contentHeight);scrollTop=content.get("scrollTop");}if(scrollWidth-scrollLeft<contentWidth){content.styleTo("scrollLeft",scrollWidth-contentWidth);scrollLeft=content.get("scrollLeft");}this.setupScrollPartners();scrollbarV.recalculateScrollProperties(0,scrollHeight,scrollTop,contentHeight);scrollbarH.recalculateScrollProperties(0,scrollWidth,scrollLeft,contentWidth);if(contentHeight<scrollHeight){if(!scrollbarV.isUsable())this.showScrollbarV();}else {if(scrollbarV.isUsable())this.hideScrollbarV();}if(content.get("actualWidth")<content.get("scrollWidth")){if(!scrollbarH.isUsable())this.showScrollbarH();}else {if(scrollbarH.isUsable())this.hideScrollbarH();}return true;},setupScrollPartners:function(){var content=this.components.content;var scrollbarV=this.components.scrollbarV;var scrollbarH=this.components.scrollbarH;var contentHeight=content.get("actualHeight");var contentWidth=content.get("actualWidth");var scrollHeight=content.get("scrollHeight");var scrollWidth=content.get("scrollWidth");scrollbarV.removePartner(content);scrollbarH.removePartner(content);scrollbarV.addPartner(content,"scrollTop",0,scrollHeight-contentHeight);scrollbarH.addPartner(content,"scrollLeft",0,scrollWidth-contentWidth);},showScrollbarH:function(){if(this.getAttribute("scrollbarH")=="off")return;this.components.scrollbarH.allow();this.components.scrollbarH.show();if(this.getAttribute("scrollH")=="true")return;this.setAttribute("scrollH",true);this.recalculate();},hideScrollbarH:function(){this.components.scrollbarH.deny();if(this.getAttribute("scrollbarH")=="on")return;this.components.scrollbarH.hide();if(this.getAttribute("scrollH")=="false")return;this.setAttribute("scrollH",false);this.recalculate();},showScrollbarV:function(){if(this.getAttribute("scrollbarV")=="off")return;this.components.scrollbarV.allow();this.components.scrollbarV.show();if(this.getAttribute("scrollV")=="true")return;this.setAttribute("scrollV",true);this.recalculate();},hideScrollbarV:function(){this.components.scrollbarV.deny();if(this.getAttribute("scrollbarV")=="on")return;this.components.scrollbarV.hide();if(this.getAttribute("scrollV")=="false")return;this.setAttribute("scrollV",false);this.recalculate();},allow:function(noBubble){this.callParent(arguments.callee,"allow",arguments);SOAPI.Event.triggerEvent("contentchange",this);}});SOAPI.Scrollbox_Handlers={onMouseWheel:function(event){event.stopPropagation();event.preventDefault();var scrollbar=(this.components.scrollbarV.isUsable())?"scrollbarV":"scrollbarH";SOAPI.Event.triggerEvent("scrollstart",this.components[scrollbar],{direction:SOAPI.Event.wheelDelta,wheelUsed:true});return false;},onSizeChange:function(event){return this.recalculate();},onContentChange:function(event){return this.recalculate()||true;},content:{write:function(html){this.innerHTML=html;SOAPI.Event.triggerEvent("contentchange",this.parentWidget);}}};SOAPI.widgets.textarea=function(p){new SOAPI.Textarea(p);};SOAPI.Textarea=SOAPI.Widget.extension();SOAPI.Textarea.extend({wtype:"textarea",ctypes:{scrollbox:SOAPI.Scrollbox},parameters:SOAPI.merge(SOAPI.Widget.prototype.parameters,{tabindex:0}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Textarea_Handlers;w.allow=SOAPI.Textbox.prototype.allow;w.deny=SOAPI.Textbox.prototype.deny;w.write=SOAPI.Textbox.prototype.write;w.setAttribute("tabindex","");SOAPI.Event.addEventHandler(w,"focus",w.onFocus,"Widget");SOAPI.Event.addEventHandler(w,"blur",w.onBlur,"Widget");SOAPI.Event.addEventHandler(w,"focus",SOAPI.Textbox_Handlers.onFocus,"Textarea");SOAPI.Event.addEventHandler(w,"blur",SOAPI.Textbox_Handlers.onBlur,"Textarea");SOAPI.Event.addEventHandler(w,"noderemovedfromdocument",handlers.onNodeRemovedFromDocument,"Textarea");SOAPI.Event.addEventHandler(w,"nodeinsertedintodocument",handlers.onNodeInsertedIntoDocument,"Textarea");var scrollbox=c.scrollbox=this.createComponent({element:p.element,parent:w,cType:"scrollbox"});scrollbox.disabled=!w.isUsable();scrollbox.components.scrollbarV.removePartner(scrollbox.components.content);scrollbox.components.scrollbarH.removePartner(scrollbox.components.content);scrollbox.setupScrollPartners=handlers.scrollbox.setupScrollPartners;scrollbox.recalculate=handlers.scrollbox.recalculate;var textbox=c.textbox=this.createComponent({element:scrollbox.components.content,parent:scrollbox.components.content,widget:w,cType:"textbox",eType:"iframe",extras:{name:w.getAttribute("name"),tabindex:p.tabindex}},true);textbox.disabled=!w.isUsable();textbox.write=handlers.textbox.write;SOAPI.Event.addEventHandler(textbox,"focus",w.onFocus,"Widget");SOAPI.Event.addEventHandler(textbox,"blur",w.onBlur,"Widget");c.scrollbox.components.content.components={};c.scrollbox.components.content.components.textbox=c.textbox;return result;},configure:function(){this.setupIframe();if(this.hasAttribute("text"))this.write(this.getAttribute("text"),true,"afterbegin");this.removeAttribute("text");},getValue:function(){return this.components.textbox.body.innerHTML;},setValue:function(value){this.components.textbox.body.innerHTML=value;},setupIframe:function(){var handlers=SOAPI.Textarea_Handlers;var textbox=this.components.textbox;textbox.contentWindow.HTMLElement=HTMLElement;var doc=textbox.contentWindow.document;doc.parentWidget=this;doc.designMode="On";doc.open();doc.write("<html><head></head><body style='font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 11px; color: #001563; margin: 0px; padding: 1px 3px;'></body></html>");doc.close();SOAPI.Event.addEventHandler(doc,"keypress",handlers.textbox.onKeyPress,"Textarea");SOAPI.Event.addEventHandler(doc,"change",handlers.textbox.onChange,"Textarea");SOAPI.Event.addEventHandler(textbox,"keypress",SOAPI.Textbox_Handlers.textbox.onKeyPress,"Textbox");SOAPI.Event.addEventHandler(textbox,"change",SOAPI.Textbox_Handlers.textbox.onChange,"Textbox");textbox.body=doc.body;},updateSize:function(){var content=this.components.scrollbox.components.content;var textbox=this.components.textbox;var body=textbox.body;var contentHeight=content.get("height");var textboxHeight=textbox.get("clientHeight");var bodyHeight=body.offsetHeight+20;if(bodyHeight>textboxHeight||(bodyHeight<textboxHeight&&bodyHeight>contentHeight)){textbox.styleTo("height",bodyHeight);SOAPI.Event.triggerEvent("contentchange",this.components.scrollbox);}else  if(bodyHeight<contentHeight){textbox.styleTo("height",contentHeight);SOAPI.Event.triggerEvent("contentchange",this.components.scrollbox);}}});SOAPI.Textarea_Handlers={onNodeRemovedFromDocument:function(event){this.savedValue=this.getValue();return true;},onNodeInsertedIntoDocument:function(event){this.setupIframe();this.setValue(this.savedValue);this.savedValue=null;return true;},scrollbox:{recalculate:function(){if(!this.isUsable())return false;var content=this.components.content.components.textbox.body;var scrollbarV=this.components.scrollbarV;var scrollbarH=this.components.scrollbarH;var contentHeight=content.clientHeight;var contentWidth=content.clientWidth;var scrollHeight=content.scrollHeight;var scrollWidth=content.scrollWidth;var scrollTop=content.scrollTop;var scrollLeft=content.scrollLeft;if(scrollHeight-scrollTop<contentHeight){SOAPI.Sprite.prototype.styleTo.apply(content,["scrollTop",scrollHeight-contentHeight]);scrollTop=content.scrollTop;}if(scrollWidth-scrollLeft<contentWidth){SOAPI.Sprite.prototype.styleTo.apply(content,["scrollLeft",scrollWidth-contentWidth]);scrollLeft=content.scrollLeft;}this.setupScrollPartners();scrollbarV.recalculateScrollProperties(0,scrollHeight,scrollTop,contentHeight);scrollbarH.recalculateScrollProperties(0,scrollWidth,scrollLeft,contentWidth);if(contentHeight<scrollHeight){if(!scrollbarV.isUsable())this.showScrollbarV();}else {if(scrollbarV.isUsable())this.hideScrollbarV();}if(content.clientWidth<content.scrollWidth){if(!scrollbarH.isUsable())this.showScrollbarH();}else {if(scrollbarH.isUsable())this.hideScrollbarH();}},setupScrollPartners:function(){var content=this.components.content.components.textbox.body;var scrollbarV=this.components.scrollbarV;var scrollbarH=this.components.scrollbarH;var contentHeight=content.clientHeight;var contentWidth=content.clientWidth;var scrollHeight=content.scrollHeight;var scrollWidth=content.scrollWidth;scrollbarV.removePartner(content);scrollbarH.removePartner(content);scrollbarV.addPartner(content,"scrollTop",0,scrollHeight-contentHeight);scrollbarH.addPartner(content,"scrollLeft",0,scrollWidth-contentWidth);}},textbox:{write:function(html,append,position){position=position||"beforeend";if(append)this.body.insertAdjacentHTML(position,html);else  this.body.innerHTML=html;},onKeyPress:function(event){SOAPI.Event.triggerEvent("contentchange",this.parentWidget.components.scrollbox);return true;},onChange:function(event){SOAPI.Event.triggerEvent("contentchange",this.parentWidget.components.scrollbox);return true;}}};SOAPI.Animator=SOAPI.Class.extension();SOAPI.Animator.extend({parentNode:null,id:null,animations:null,construct:function(sprite,id){if(isString(sprite))sprite=document.getElementById(sprite);this.parentNode=sprite;this.parentNode.animators[id]=this;this.id=id;this.animations=[];},addAnimation:function(aIndex,properties,settings,custom){var p={left:[],top:[],width:[],height:[],clipTop:[],clipRight:[],clipBottom:[],clipLeft:[],opacity:[]};var s={interval:[40],frameMin:null,frameMax:null,stepLimit:null,direction:1,repeat:true,relative:false,action:[]};var c={};for(var pName in properties)p[pName]=properties[pName];for(var pName in settings)s[pName]=settings[pName];if(isObject(custom))c=custom;for(var pName in p){if(!isObject(p[pName]))p[pName]=[p[pName]];}for(var pName in c){if(!isObject(c[pName]))c[pName]=[c[pName]];}if(!isObject(s.interval))s.interval=[s.interval];if(!isObject(s.action))s.action=[s.action];var animation={timer:null,frame:0,step:1,busy:false,updated:false,properties:p,settings:s,custom:c};this.animations[aIndex]=animation;},runAnimation:function(aIndex){var animation=this.animations[aIndex];var properties=animation.properties;var settings=animation.settings;var custom=animation.custom;animation.frame+=settings.direction;animation.step++;if((settings.frameMax!=null&&animation.frame>settings.frameMax)||(settings.frameMin!=null&&animation.frame<settings.frameMin)||(settings.stepLimit&&animation.step>settings.stepLimit)){return this.doActions(aIndex);}for(var pName in properties)properties[pName].jumpBy(settings.direction,settings.repeat);for(var pName in custom)custom[pName].jumpBy(settings.direction,settings.repeat);animation.updated=false;if(!this.Update(aIndex))return this.doActions(aIndex);function timer(animator,aIndex){return function(){animator.runAnimation(aIndex);};}animation.timer=setTimeout(timer(this,aIndex),settings.interval.jumpBy(settings.direction,settings.repeat));},doActions:function(aIndex){this.Pause(aIndex);for(var i=0,action;action=this.animations[aIndex].settings.action[i];i++){if(isFunction(action))action();if(isString(action))eval(action);if(isArray(action)){for(var key in action)eval(action[key]);}}},Play:function(aIndex){if(this.animations[aIndex].busy)return;this.animations[aIndex].busy=true;this.runAnimation(aIndex);},PlayAll:function(){var aIndex=this.animations.length;while(aIndex--)this.Play(aIndex);},Stop:function(aIndex){this.Pause(aIndex);this.Reset(aIndex);},StopAll:function(){this.PauseAll();this.ResetAll();},Pause:function(aIndex){this.animations[aIndex].busy=false;clearTimeout(this.animations[aIndex].timer);},PauseAll:function(){var aIndex=this.animations.length;while(aIndex--)this.Pause(aIndex);},Reset:function(aIndex){var animation=this.animations[aIndex];var properties=animation.properties;var settings=animation.settings;var custom=animation.custom;animation.frame=0;animation.step=1;for(var pName in properties)properties[pName].jumpTo(0);for(var pName in custom)custom[pName].jumpTo(0);settings.interval.jumpTo(0);},ResetAll:function(){var aIndex=this.animations.length;while(aIndex--)this.Reset(aIndex);},Reverse:function(aIndex){this.animations[aIndex].settings.direction*=-1;},ReverseAll:function(){var aIndex=this.animations.length;while(aIndex--)this.Reverse(aIndex);},JumpTo:function(aIndex,frame){var animation=this.animations[aIndex];var properties=animation.properties;var settings=animation.settings;var custom=animation.custom;animation.frame=frame;for(var pName in properties)properties[pName].jumpTo(frame,settings.repeat);for(var pName in custom)custom[pName].jumpTo(frame,settings.repeat);settings.interval.jumpTo(frame,settings.repeat);},JumpToAll:function(frame){var aIndex=this.animations.length;while(aIndex--)this.JumpTo(aIndex,frame);},JumpBy:function(aIndex,frames){var animation=this.animations[aIndex];var properties=animation.properties;var settings=animation.settings;var custom=animation.custom;animation.frame+=frames;for(var pName in properties)properties[pName].jumpBy(frames,settings.repeat);for(var pName in custom)custom[pName].jumpBy(frames,settings.repeat);settings.interval.jumpBy(frames,settings.repeat);},JumpByAll:function(frames){var aIndex=this.animations.length;while(aIndex--)this.JumpBy(aIndex,frames);},Update:function(aIndex){var animation=this.animations[aIndex];var properties=animation.properties;var settings=animation.settings;var custom=animation.custom;var p={};var values=0;var method=(settings.relative)?"By":"To";if(settings.relative&&animation.updated)return;for(var pName in properties){p[pName]=properties[pName].current();if(p[pName]!=null)values++;}if(p.clipTop!=null||p.clipRight!=null||p.clipBottom!=null||p.clipLeft!=null){this.parentNode["clip"+method](p.clipTop,p.clipRight,p.clipBottom,p.clipLeft);}if(p.width!=null||p.height!=null)this.parentNode["size"+method](p.width,p.height);if(p.left!=null||p.top!=null)this.parentNode["move"+method](p.left,p.top);if(p.opacity!=null)this.parentNode["blend"+method](p.opacity);for(var pName in custom){var value=custom[pName].current();if(value==null)continue;values++;this.parentNode["style"+method](pName,value);}animation.updated=true;return values;},UpdateAll:function(){var aIndex=this.animations.length;while(aIndex--)this.Update(aIndex);},Clear:function(aIndex){this.Stop(aIndex);this.animations[aIndex]=null;},ClearAll:function(){var aIndex=this.animations.length;while(aIndex--)this.Clear(aIndex);}});SOAPI.Events.minimize=["onMinimize"];SOAPI.Events.maximize=["onMaximize"];SOAPI.Events.restore=["onRestore"];SOAPI.Events.close=["onClose"];SOAPI.Events.onMinimize=function(event){return true};SOAPI.Events.onMaximize=function(event){return true};SOAPI.Events.onRestore=function(event){return true};SOAPI.Events.onClose=function(event){return true};SOAPI.widgets.window=function(p){new SOAPI.Window(p);};SOAPI.Window=SOAPI.Panel.extension();SOAPI.Window.extend({wtype:"window",ctypes:{titlebar:SOAPI.Panel,task:SOAPI.Button,minimize:SOAPI.Button,maximize:SOAPI.Button,close:SOAPI.Button},draggable:true,parameters:SOAPI.merge(SOAPI.Panel.prototype.parameters,{tabindex:0,resizeable:"false",taskbar:"true"}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Window_Handlers;w.setAttribute("resizeable",p.resizeable!="false");w.setAttribute("taskbar",p.taskbar!="false");w.setAttribute("state","default");w.dragger.enabled=p.resizeable!="false";w.dragger.removePartner(w);SOAPI.Event.addEventHandler(w,"mousedown");SOAPI.Event.addEventHandler(w,"mouseup");SOAPI.Event.addEventHandler(w,"focus",w.onFocus,"Widget");SOAPI.Event.addEventHandler(w,"focus",handlers.onFocus,"Window");SOAPI.Event.addEventHandler(w,"blur",w.onBlur,"Widget");SOAPI.Event.addEventHandler(w,"blur",handlers.onBlur,"Window");SOAPI.Event.addEventHandler(w,"drag");SOAPI.Event.addEventHandler(w,"dragstart",handlers.onDragStart,"Window");SOAPI.Event.addEventHandler(w,"dragend",handlers.onDragEnd,"Window");SOAPI.Event.addEventHandler(w,"minimize",handlers.onMinimize,"Window");SOAPI.Event.addEventHandler(w,"maximize",handlers.onMaximize,"Window");SOAPI.Event.addEventHandler(w,"restore",handlers.onRestore,"Window");SOAPI.Event.addEventHandler(w,"close",handlers.onClose,"Window");var content=c.content=this.createComponent({element:p.element,parent:w,cType:"content"},true);SOAPI.Event.addEventHandler(content,"mousedown",handlers.content.onMouseDown,"Window");SOAPI.Event.addEventHandler(content,"mouseup",handlers.content.onMouseUp,"Window");var titlebar=c.titlebar=this.createComponent({element:p.element,parent:w,cType:"titlebar"},true,true);titlebar.dragger.enabled=true;titlebar.dragger.removePartner(titlebar);titlebar.dragger.addPartner(w,{left:1},{top:1});SOAPI.Event.addEventHandler(titlebar,"mousedown");SOAPI.Event.addEventHandler(titlebar,"mouseup");SOAPI.Event.addEventHandler(titlebar,"drag");SOAPI.Event.addEventHandler(titlebar,"dragstart",handlers.titlebar.onDragStart,"Window");SOAPI.Event.addEventHandler(titlebar,"dragend",handlers.titlebar.onDragEnd,"Window");if(w.getAttribute("taskbar")!="false"){var task=c.task=this.createComponent({element:p.element,parent:w,cType:"task",extras:{"class":w.className}});SOAPI.Event.addEventHandler(task,"mouseup",handlers.task.onMouseUp,"Window",["before Action"]);SOAPI.Event.addEventHandler(task,"mousedown",handlers.task.onMouseDown,"Window");SOAPI.Event.addEventHandler(task,"focus",handlers.task.onFocus,"Window",["before onFocus"]);}var minimize=c.minimize=this.createComponent({element:p.element,parent:w,cType:"minimize"});SOAPI.Event.addEventHandler(minimize,"mouseup",handlers.minimize.onMouseUp,"Window",["before Action"]);var maximize=c.maximize=this.createComponent({element:p.element,parent:w,cType:"maximize"});SOAPI.Event.addEventHandler(maximize,"mouseup",handlers.maximize.onMouseUp,"Window",["before Action"]);var close=c.close=this.createComponent({element:p.element,parent:w,cType:"close"});SOAPI.Event.addEventHandler(close,"mouseup",handlers.close.onMouseUp,"Window",["before Action"]);var animator=new SOAPI.Animator(w,"fade");var opacity=0;var opacities=[];for(var i=0;i<=5;i++){opacities[i]=opacity+(i*(100-opacity)/5);}animator.addAnimation(1,{opacity:opacities},{interval:0,direction:-1,repeat:false,relative:false});if(p.pieces&4096){var icon=c.icon=this.createComponent({element:p.element,parent:w,cType:"icon"});}if(p.pieces&8192){var gripper=c.gripper=this.createComponent({element:p.element,parent:w,cType:"gripper"});}return result;},configure:function(){var c=this.components;if(this.hasAttribute("text"))c.titlebar.write(this.getAttribute("text"),true);if(this.hasAttribute("text"))c.task.write(this.getAttribute("text"),true);if(this.getAttribute("taskbar")!="false"){var desktop=SOAPI.findParentWidget(this,"desktop");if(desktop)desktop.components.taskbar.components.content.appendChild(c.task);if(desktop)desktop.recalculateWorkspace();}function show(object){return function(){object.show();try{object.parentWidget.focus();}catch(err){}}}var animator=this.animators.fade;animator.animations[1].settings.action=[show(c.content)];c.content.hide();animator.Reverse(1);animator.Play(1);},minimize:function(){SOAPI.Event.triggerEvent("minimize",this);},maximize:function(){SOAPI.Event.triggerEvent("maximize",this);},restore:function(){SOAPI.Event.triggerEvent("restore",this);},close:function(){SOAPI.Event.triggerEvent("close",this);}});SOAPI.Window_Handlers={onFocus:function(event){var current=SOAPI.findLastChildElement(this.parentNode,"div",{widget:"window"});if(current!==this){SOAPI.Event.triggerEvent("noderemovedfromdocument",this,{event:{relatedTarget:this}},false,true);this.parentNode.insertAfter(this,current);SOAPI.Event.triggerEvent("nodeinsertedintodocument",this,{event:{relatedTarget:this}},false,true);}if(this.components.task)this.components.task.setAttribute("focused",true);return true;},onBlur:function(event){if(this.components.task)this.components.task.setAttribute("focused",false);return true;},onDragStart:function(event){var multiplyX={width:1};var multiplyY={height:1};if(SOAPI.Event.offsetX<this.get("width")/2){multiplyX.left=1;multiplyX.width=-1;}if(SOAPI.Event.offsetY<this.get("height")/2){multiplyY.top=1;multiplyY.height=-1;}this.dragger.addPartner(this,multiplyX,multiplyY,true);this.dragger.addRestriction("width",{min:this.get("minWidth")});this.dragger.addRestriction("height",{min:this.get("minHeight")});this.dragger.restrict=true;return true;},onDragEnd:function(event){this.dragger.removePartner(this);this.dragger.removeRestriction("width");this.dragger.removeRestriction("height");return true;},onMinimize:function(event){this.hide();this.blur();return true;},onMaximize:function(event){this.setAttribute("state","maximized");this.dragger.enabled=false;this.components.titlebar.dragger.enabled=false;SOAPI.Event.triggerEvent("sizechange",this,null,false,true);return true;},onRestore:function(event){if(!this.isVisible()){this.show();}else {this.setAttribute("state","default");this.dragger.enabled=this.getAttribute("resizeable")!="false";this.components.titlebar.dragger.enabled=true;SOAPI.Event.triggerEvent("sizechange",this,null,false,true);}this.focus();return true;},onClose:function(event){if(!this.closing){this.closing=true;function close(object){return function(){object.close();}}var animator=this.animators.fade;animator.animations[1].settings.action=[close(this)];this.components.content.hide();animator.Reverse(1);animator.Play(1);return true;}var desktop=SOAPI.findParentWidget(this,"desktop");this.hide();if(this.components.task)this.components.task.parentNode.removeChild(this.components.task);this.parentNode.removeChild(this);if(desktop)desktop.recalculateWorkspace();return true;},titlebar:{onDragStart:function(event){this.parentWidget.components.content.hide();return true;},onDragEnd:function(event){this.parentWidget.components.content.show();return true;}},content:{onMouseDown:function(event){event.stopPropagation();return true;},onMouseUp:function(event){event.stopPropagation();return true;}},task:{onMouseUp:function(event){if(!this.parentWidget.isVisible()){SOAPI.Event.triggerEvent("restore",this.parentWidget);}else  if(this.parentWidget.getAttribute("focused")=="true"){SOAPI.Event.triggerEvent("minimize",this.parentWidget);}else {this.parentWidget.focus();}return true;},onMouseDown:function(event){event.stopPropagation();event.preventDefault();return false;},onFocus:function(event){event.stopPropagation();event.preventDefault();return false;}},minimize:{onMouseUp:function(event){SOAPI.Event.triggerEvent("mouseout",this);SOAPI.Event.triggerEvent("minimize",this.parentWidget);return true;}},maximize:{onMouseUp:function(event){var w=this.parentWidget;SOAPI.Event.triggerEvent("mouseout",this);SOAPI.Event.triggerEvent((w.getAttribute("state")=="maximized")?"restore":"maximize",w);return true;}},close:{onMouseUp:function(event){SOAPI.Event.triggerEvent("mouseout",this);SOAPI.Event.triggerEvent("close",this.parentWidget);return true;}}};SOAPI.widgets.tooltip=function(p){new SOAPI.Tooltip(p);};SOAPI.Tooltip=SOAPI.Panel.extension();SOAPI.Tooltip.extend({wtype:"tooltip",point:"bottom",action:null,delay:5000,caller:null,parameters:SOAPI.merge(SOAPI.Panel.prototype.parameters,{tabindex:0,point:"bottom"}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Tooltip_Handlers;w.point=p.point;SOAPI.Event.addEventHandler(w,"mouseup",handlers.onMouseUp,"Tooltip");SOAPI.Event.addEventHandler(w,"mouseover",handlers.onMouseOver,"Tooltip");SOAPI.Event.addEventHandler(w,"mouseout",handlers.onMouseOut,"Tooltip");SOAPI.Event.addEventHandler(w,"focus",handlers.onFocus,"Tooltip");var content=c.content=this.createComponent({element:p.element,parent:w,cType:"content"},true);if(p.pieces&4096){c.point=this.createComponent({element:p.element,parent:w,cType:"point"},true);}var animator=new SOAPI.Animator(w,"fadein");var opacity=0;var opacities=[];for(var i=0;i<=5;i++){opacities[i]=opacity+(i*(90-opacity)/5);}animator.addAnimation(1,{opacity:opacities},{interval:40,repeat:false,relative:false});var animator=new SOAPI.Animator(w,"fadeout");animator.addAnimation(1);return result;},configure:function(){this.hide();},activate:function(caller,action){this.caller=caller;clearTimeout(this.timer);this.animators.fadein.Reset(1);var animator=this.animators.fadeout;animator.Stop(1);animator.Reset(1);this.action=action;var parentLayer=SOAPI.findParentWidget(caller,"desktop")||SOAPI.findParentWidget(caller,"desktop").parentNode||document.body;parentLayer.appendChild(this);this.show();this.moveTo(0,0);var width=this.get("actualWidth");var height=this.get("actualHeight");if(this.point=="bottomleft"){var vertDiff=this.components.point.get("actualTBottom")-this.get("actualTBottom");var horizDiff=this.get("actualLeft")-this.components.point.get("actualLeft");var callerWidth=caller.get("actualWidth");var callerHeight=caller.get("actualHeight");var callerLRight=caller.get("actualLRight");var callerTop=caller.get("actualTop");var minWidth=(callerWidth>40)?20:callerWidth/2;var minHeight=(callerHeight>40)?20:callerHeight/2;this.moveTo(callerLRight-minWidth+horizDiff,callerTop+minHeight-height-vertDiff);}if(!this.active)this.animators.fadein.Play(1);this.active=true;function close(object){return function(){object.deactivate(object.caller);}}this.timer=setTimeout(close(this),this.delay);},deactivate:function(caller,value){if(caller!==this.caller)return;if(this.action&&isFunction(this.action))this.action(value);if(this.action&&!isFunction(this.action))eval(this.action);this.action=null;this.close();},close:function(){this.active=false;var animator=this.animators.fadeout;var opacity=this.get("opacity");var opacities=[];for(var i=0;i<=5;i++){opacities[i]=opacity-(i*opacity/5);}animator.addAnimation(1,{opacity:opacities},{interval:40,repeat:false,relative:false});function close(object){return function(){object.hide();}}animator.animations[1].settings.action=[close(this)];animator.Play(1);return true;}});SOAPI.Tooltip_Handlers={onMouseOver:function(event){event.stopPropagation();this.blendTo(100);clearTimeout(this.timer);return true;},onMouseOut:function(event){event.stopPropagation();this.blendTo(90);function close(object){return function(){object.deactivate(object.caller);}}this.timer=setTimeout(close(this),this.delay);return true;},onMouseUp:function(event){event.stopPropagation();this.deactivate(this);return true;},onFocus:function(event){event.preventDefault();this.caller.focus();return false;}};SOAPI.setupActions.push(function(){SOAPI.DialogLayer=SOAPI.createElement({parent:document.body});});SOAPI.widgets.dialog=function(p){new SOAPI.Dialog(p);};SOAPI.Dialog=SOAPI.Widget.extension();SOAPI.Dialog.extend({wtype:"dialog",ctypes:{window:SOAPI.Window},action:null,parameters:SOAPI.merge(SOAPI.Widget.prototype.parameters,{resizeable:"false"}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;var c=w.components;var handlers=SOAPI.Dialog_Handlers;var window=c.window=this.createComponent({element:p.element,parent:w,cType:"window",extras:{taskbar:"false"}});SOAPI.Event.removeEventHandler(window,"blur","Widget");SOAPI.Event.removeEventHandler(window.components.close,"mouseup","Window");SOAPI.Event.addEventHandler(window.components.close,"mouseup",handlers.close.onMouseUp,"Dialog",["before Action"]);return result;},configure:function(){if(this.hasAttribute("text"))this.components.window.components.titlebar.write(this.getAttribute("text"),true);this.hide();},activate:function(action){this.action=action;var window=this.components.window;if(this.parentNode!==SOAPI.DialogLayer)SOAPI.DialogLayer.appendChild(this);this.show();this.moveTo(0,0);window.styleTo("left",(document.getClientWidth()-window.get("width"))/2);window.styleTo("top",(document.getClientHeight()-window.get("height"))/2);window.focus();},deactivate:function(value){if(this.action&&isFunction(this.action))this.action(value);if(this.action&&!isFunction(this.action))eval(this.action);this.action=null;this.hide();}});SOAPI.Dialog_Handlers={close:{onMouseUp:function(event){SOAPI.Event.triggerEvent("mouseout",this);this.parentWidget.parentWidget.deactivate("close");return true;}}};SOAPI.Events.response=["onResponse"];SOAPI.Events.onResponse=function(event){return true};SOAPI.widgets.form=function(p){new SOAPI.Form(p);};SOAPI.Form=SOAPI.Widget.extension();SOAPI.Form.extend({wtype:"form",mimetype:"text/html",elementType:"form",parameters:SOAPI.merge(SOAPI.Widget.prototype.parameters,{url:"",method:"",action:""}),setup:function(parameters){var result=this.callParent(arguments.callee,"setup",arguments);var p=result.p;var w=result.w;SOAPI.Event.addEventHandler(w,"response");if(w.hasAttribute("onresponse")){eval("var func = function(event) {"+w.getAttribute("onresponse")+"}");SOAPI.Event.addEventHandler(w,"response",func,"Attribute");w.removeAttribute("onresponse");}return result;},submit:function(object){this.request(this.gather(),object);},gather:function(){var data=[];var elements=[];var inputs=this.getElementsByTagName("input");var textareas=this.getElementsByTagName("textarea");for(var i=0,e;(e=inputs[i])!=null;i++)elements.push(e);for(var i=0,e;(e=textareas[i])!=null;i++)elements.push(e);for(var i=0,e;(e=elements[i])!=null;i++){if(isComponent(e)&&!SOAPI.findParentWidget(e).built)continue;if(e.name==""||(e.name.indexOf("[")!==false&&e.value==""))continue;data.push(e.name+"="+encodeURIComponent(e.value));}var textareas=SOAPI.findAllChildWidgets(this,"textarea","div",true);for(var i=0,e;(e=textareas[i])!=null;i++){if(!e.built||!e.hasAttribute("name"))continue;data.push(e.getAttribute("name")+"="+encodeURIComponent(e.getValue()));}return data.join("&");},request:function(data,object){function xhrProcessor(form,xhr,object){return function(){if(xhr.readyState!=4)return;if(xhr.status!=200)return alert("There was a problem with the request.");SOAPI.Event.triggerEvent("response",form,{data:xhr.responseText,object:object});};}var xhr=new XMLHttpRequest();if(xhr.overrideMimeType)xhr.overrideMimeType(this.mimetype);xhr.onreadystatechange=xhrProcessor(this,xhr,object||this);xhr.open(this.getAttribute("method"),this.getAttribute("url"),true);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");xhr.setRequestHeader("Content-length",data.length);xhr.setRequestHeader("Connection","close");xhr.send(data);}});