
function PageExpnader(expand){var terminate=this.disconnectOnScroll=partial(disconnect,connect(window,'onscroll',this,'onScroll'));this.expand=partial(callSingularize(expand),terminate);this.triggerHeight=PageExpnader.TRIGGER_HEIGHT;}
PageExpnader.TRIGGER_HEIGHT=800;update(PageExpnader.prototype,{onScroll:function(evt){var remainHeight=getDocumentDimension().h-
getViewportPosition().y-
getViewportDimensions().h;if(remainHeight<this.triggerHeight)
this.expand();}})
function callSingularize(target){var running;var end=function(){running=false;}
return function(){if(running)return;running=true;return target.apply(null,[].concat(end,[].slice.call(arguments)));}}
function dynamicBind(func,self){return function(){return self[func].apply(self,arguments);}}
CancelEvent=new NamedError('CancelEvent');if(document.addEventListener){connect=function(src,sig){sig=sig=='onmousewheel'?'onDOMMouseScroll':sig;return MochiKit.Signal.connect.apply(null,[].slice.apply(arguments));}}
MochiKit.Base.update(MochiKit.Signal.Event.prototype,{wheelDelta:function(){var evt=this.event();return evt.wheelDelta?evt.wheelDelta/120*(window.opera?1:-1):evt.detail/3;},isStopped:function(){var evt=this.event();return evt.getPreventDefault?evt.getPreventDefault():evt.cancelBubble;}})
MochiKit.Base.update(MochiKit.Signal._specialKeys,{61:'KEY_SEMICOLON',226:'KEY_HORIZONTAL_BAR'});function getDocumentDimension(){var dim=new MochiKit.Style.Dimensions();if(document.compatMode=='CSS1Compat'){dim.w=document.documentElement.scrollWidth;dim.h=document.documentElement.scrollHeight;}else{dim.w=document.body.scrollWidth;dim.h=document.body.scrollHeight;}
return dim;}
function getPluguinVersion(pluginName){if(navigator.plugins){var numTest=/^[\d\.]+$/;var plugins=navigator.plugins;for(var i=0;i<plugins.length;i++){if(plugins[i].name.indexOf(pluginName)!=-1){var tokens=(plugins[i].name+' '+plugins[i].description).split(' ');for(var j=0;j<tokens.length;j++){if(numTest.test(tokens[j]))
return tokens[j];}}}}
if(navigator.userAgent.indexOf('MSIE')!=-1){var comName={QuickTime:'QuickTimeCheckObject.QuickTimeCheck',Flash:'ShockwaveFlash.ShockwaveFlash'}[pluginName];try{var obj=new ActiveXObject(comName);switch(pluginName){case'QuickTime':return obj.QuickTimeVersion;case'Flash':return obj.GetVariable("$version").split(' ')[1].replace(/,/g,'.');}}catch(e){}}
return 0;}
function doSimplePostXMLHttpRequest(url){var self=MochiKit.Async;var req=self.getXMLHttpRequest();if(arguments.length>1){var m=MochiKit.Base;var qs=m.queryString.apply(null,m.extend(null,arguments,1));}
req.open("POST",url,true);var requestHeaders=['Accept','text/javascript, text/html, application/xml, text/xml, */*','Content-type','application/x-www-form-urlencoded'];if(req.overrideMimeType){requestHeaders.push('Connection','close');}
for(var i=0;i<requestHeaders.length;i+=2){req.setRequestHeader(requestHeaders[i],requestHeaders[i+1]);}
return self.sendXMLHttpRequest(req,qs);}
function addElementClass(element,className){if(element)MochiKit.DOM.addElementClass(element,className);}
function removeElementClass(element,className){if(element)MochiKit.DOM.removeElementClass(element,className);}
function isVisible(elm){return elm.style.display!='none';}
function isMatchedElement(elm,tagName,className){if(!elm)return false;return(elm.tagName==tagName.toUpperCase()&&(!className||hasElementClass(elm,className)));}
function setInnerText(elm,text){elm.innerHTML=escapeHTML(text);}
function getInnerText(elm,text){return unescapeHTML(elm.innerHTML);}
function unescapeHTML(s){return s.replace(/&amp;/g,'&').replace(/&quot;/g,'"').replace(/&lt;/g,'<').replace(/&gt;/g,'>');}
function getText(url){var xhr=getXMLHttpRequest();xhr.open("GET",url,false);xhr.send(null);return xhr.responseText;}
function createSet(keys){keys=(keys instanceof Array)?keys:keys.split(/\s/);var set={};for(var i in keys)
set[keys[i]]=true;return set;}
function indexOf(arr,key){for(var i=0,len=arr.length;i<len;i++)
if(arr[i]==key)
return i;return-1;}
function getDocument(elm){return elm.ownerDocument||elm.document;}
function getWindow(elm){var doc=(elm.getElementById)?elm:C.getDocument(elm);return doc.defaultView||doc.parentWindow;;}
function getMessage(key){var msg=eval('messages.'+key);for(var i=1;i<arguments.length;i++)
msg=msg.replace('\$'+i,arguments[i]);return msg;}
function moreThan(num,start){return(num<start)?start:num;}
var browser={};var ua=navigator.userAgent;if(ua.indexOf('MSIE')>-1)browser.isIE=true;if(ua.indexOf('Opera')>-1)browser.isOpera=true;if(ua.indexOf('Firefox')>-1)browser.isFirefox=true;if(ua.indexOf('Safari')>-1)browser.isSafari=true;var DOMBuilder={};(function(){forEach(('html head title style script body h1 h2 h3 h4 h5 h6 '+'table tbody tr td col '+'br hr dl ul ol li '+'a img span div style strong b big em p q pre center '+'form input textarea button select option '+'').split(' '),function(tag){DOMBuilder[tag]=partial(createElement,tag)});function createElement(){var tag=Array.prototype.shift.call(arguments);var element=document.createElement(tag);var text=[];forEach(flattenArguments(arguments),function(value){if(value&&value.nodeType){element.appendChild(value);return;}else if(isUndefinedOrNull(value)){return;}
switch(typeof(value)){case'string':case'number':element.appendChild(document.createTextNode(value))
break;default:for(var key in value){var attr=value[key];if(typeof(attr)=='function'){connect(element,key,attr);continue;}
switch(key){case'class':element.className=attr;case'style':element.style.cssText=attr;default:element.setAttribute(key,attr);}};break;}});return element;};})()
var HTMLBuilder={};(function(){forEach(('html head title style script body h1 h2 h3 h4 h5 h6 '+'table tbody tr td col '+'br hr dl ul ol li '+'a img span div style strong b big em p q pre center '+'form input textarea button select option '+'').split(' '),function(tag){HTMLBuilder[tag]=partial(createElement,tag)});function createElement(){var tag=Array.prototype.shift.call(arguments);var text=[];var attr=[];forEach(flattenArguments(arguments),function(value){if(isUndefinedOrNull(value))return;switch(typeof(value)){case'string':case'number':text.push(value);break;default:keys(value).forEach(function(key){attr.push(key+'="'+value[key]+'"')});break;}});attr=(attr.length?' ':'')+attr.join(' ');if(text.length==0)
return"<"+tag+attr+"/>";return"<"+tag+attr+">"+text.join('')+"</"+tag+">";};})()
function Button(elmButton,enable,handler){this.elmButton=getElement(elmButton);connect(elmButton,'onclick',this,'onClick');enable?this.enable():this.disable();if(handler)
connect(this,'onClick',handler);}
MochiKit.Base.update(Button.prototype,{elmButton:null,enable:function(){removeElementClass(this.elmButton,'disabled');addElementClass(this.elmButton,'enabled');},disable:function(){removeElementClass(this.elmButton,'enabled');addElementClass(this.elmButton,'disabled');},isEnabled:function(){return hasElementClass(this.elmButton,'enabled');},isDisabled:function(){return hasElementClass(this.elmButton,'disabled');},onClick:function(evt){if(!this.isDisabled())
signal(this,'onClick',this);}});var State={make:function(cls,stateSetName,stateSet,defaultStateName){if(arguments.length==3){defaultStateName=stateSet;stateSet=stateSetName;stateSetName=void(0);}
var p=cls.prototype;var K=this.K;forEach(this.gatherProperties(stateSet),function(prop){for(var i in stateSet){var state=stateSet[i];if(!state[prop])
state[prop]=K;}});update(p,stateSet[defaultStateName]);if(stateSetName){update(p,this._multiProto);if(!p.state){p.state={};p.stateSet={};}
p.state[stateSetName]=defaultStateName;p.stateSet[stateSetName]=stateSet;}else{update(p,this._singleProto);p.state=defaultStateName;p.stateSet=stateSet;}},gatherProperties:function(stateSet){var props={};for(var i in stateSet)
for(var prop in stateSet[i])
props[prop]=true;return keys(props);},K:function(arg){return arg;},_singleProto:{changeState:function(stateName){update(this,this.stateSet[stateName]);this.state=stateName;}},_multiProto:{changeState:function(stateSetName,stateName){update(this,this.stateSet[stateSetName][stateName]);this.state=update({},this.state);this.state[stateSetName]=stateName;}}}
function QuickTimeSound(url,correctSecondDuration,isMovie){this.correctSecondDuration=correctSecondDuration;var qt_opt={src:url,type:'video/quicktime',controller:'false',autoplay:'false',width:'1px',height:'1px'};if(isMovie){qt_opt['width']='320px';qt_opt['height']='240px';qt_opt['scale']='aspect';}
var qt=this.quicktime=createDOM('embed',qt_opt);document.getElementById('emb').appendChild(qt);setTimeout(function(){qt.blur()},0);QuickTimeSound.instances.push(this);}
MochiKit.Base.update(QuickTimeSound,{instances:[],create:function(url,correctDuration,isMovie){var sound=new QuickTimeSound(url,correctDuration,isMovie);return QuickTimeSound.waitForPlayable(sound);},waitForPlayable:function(sound){var qt=sound.quicktime;var deferred=new Deferred();var interval=100;var interval_count=0;var wait_total=0;var timeout_count=0;var timeout_count_warning=4;var f=function(){try{var qts=qt.GetPluginStatus()
if(/^Error/.test(qts)){clearInterval(intervalId);throw'error';}
switch(qts){case'Waiting':interval_count++
wait_total+=interval
if(interval_count>10){timeout_count++
clearInterval(intervalId)
if(timeout_count==timeout_count_warning){messagePanel.show(getMessage('warn.mediaFile'),7);}
interval*=2;interval_count=0;intervalId=setInterval(f,interval);}
break;case'Playable':case'Complete':clearInterval(intervalId);deferred.callback(sound);}}catch(error){clearInterval(intervalId);removeElement(qt);deferred.errback(error);}}
var intervalId=setInterval(f,interval);return deferred;}})
MochiKit.Base.update(QuickTimeSound.prototype,{quicktime:null,rate:1,playing:false,timeLagScale:0.9953,timeScale:-1,correctSecondDuration:-1,loadSound:function(url){this.quicktime.SetURL(url);return QuickTimeSound.waitForPlayable(this);},start:function(secondOffset){var qt=this.quicktime;if(secondOffset!=null)
this.setPosition(secondOffset*1000);this.quicktime.SetRate(this.rate);this.playing=true;},stop:function(){this.quicktime.Stop()
this.playing=false;},getBytesTotal:function(){return this.quicktime.GetMovieSize()},getBytesLoaded:function(){return this.quicktime.GetMaxBytesLoaded()},getDuration:function(){var qt=this.quicktime;return qt.GetMaxTimeLoaded()/this.getTimeScale()*1000;},getPosition:function(){var qt=this.quicktime;return qt.GetTime()/this.getTimeScale()*1000;},setPosition:function(milliSecond){var qt=this.quicktime;qt.SetTime(Math.floor(this.getTimeScale()*(milliSecond/1000)));},setRate:function(rate){this.rate=rate;if(this.playing)
this.quicktime.SetRate(rate);},getRate:function(){return this.rate;},getTimeScale:function(){return this.timeScale>0?this.timeScale:this.adjustTimeScale(this.getCorrectSecondDuration());},getCorrectSecondDuration:function(){var qt=this.quicktime;return this.correctSecondDuration>0?this.correctSecondDuration:qt.GetDuration()/qt.GetTimeScale()*this.timeLagScale;},adjustTimeScale:function(correctSecondDuration){var qt=this.quicktime;this.timeLagScale=correctSecondDuration*qt.GetTimeScale()/qt.GetDuration();return(this.timeScale=qt.GetTimeScale()/this.timeLagScale);}})
Cookie={get:function(name){var cookies=document.cookie.split('; ');for(var i=0,len=cookies.length;i<len;i++){var pair=cookies[i].split('=');if(pair[0]==name)
return pair[1];}},set:function(name,value,expires){expires=expires==null?'':'; expires='+expires.toGMTString()
document.cookie=name+'='+value+expires+'; path=/';},remove:function(name){this.set(name,'',new Date(0));}}
function addStyle(sel,val){if(document.createStyleSheet){var sheet=document.createStyleSheet();sheet.addRule(sel,val);}
else{var st=document.createElement('style');st.type='text/css';var t=document.createTextNode([sel,'{',val,'}'].join(''));st.appendChild(t);document.getElementsByTagName('head')[0].appendChild(st);}}
function QT(opt){this.correctSecondDuration=opt['duration'];this.loadingInterval=opt['loadingInterval']||(function(){});var qt_opt={src:opt['url'],enablejavascript:true,type:'video/quicktime',controller:opt['controller']||false,autoplay:opt['autoplay']||false,scale:opt['scale']||'aspect'};if(opt['isMovie']){qt_opt['width']=opt['width']||'320px';qt_opt['height']=opt['height']||'240px';}
else{qt_opt['width']=opt['width']||(opt['controller']?'200px':'1px');qt_opt['height']=opt['height']||(opt['controller']?'16px':'1px');qt_opt['style']='position:fixed;top:0;left:0;z-index:999;';}
if(opt['autoplay']){this.playing=opt['autoplay']||false;}
this.qt_opt=qt_opt;var qt=this.quicktime=createDOM('embed',qt_opt);var el=document.getElementById(opt['element_id']);if(!el){el=createDOM('div');document.body.appendChild(el);}
el.appendChild(qt);setTimeout(function(){qt.blur();},0);QT.instances.push(this);}
MochiKit.Base.update(QT,{instances:[],create:function(opt){var sound=new QT(opt);return QT.waitForPlayable(sound);},waitForPlayable:function(sound){var qt=sound.quicktime;var deferred=new Deferred();var interval=100;var interval_count=0;var wait_total=0;var timeout_count=0;var timeout_count_warning=4;var f=function(){try{var qts=qt.GetPluginStatus()
if(/^Error/.test(qts)){clearInterval(intervalId);throw'error';}
sound.loadingInterval(sound);switch(qts){case'Waiting':interval_count++;wait_total+=interval;if(interval_count>10){timeout_count++;clearInterval(intervalId);if(timeout_count==timeout_count_warning){messagePanel.show(getMessage('warn.mediaFile'),7);}
interval*=2;interval_count=0;intervalId=setInterval(f,interval);}
break;case'Playable':case'Complete':clearInterval(intervalId);deferred.callback(sound);}}catch(error){clearInterval(intervalId);removeElement(qt);deferred.errback(error);}}
var intervalId=setInterval(f,interval);return deferred;}})
MochiKit.Base.update(QT.prototype,{quicktime:null,rate:1,playing:false,timeLagScale:0.9953,timeScale:-1,correctSecondDuration:-1,loadSound:function(url){this.quicktime.SetURL(url);return QT.waitForPlayable(this);},start:function(secondOffset){var qt=this.quicktime;if(secondOffset!=null)
this.setPosition(secondOffset*1000);this.quicktime.SetRate(this.rate);this.playing=true;qt.Play();},stop:function(){this.quicktime.Stop()
this.playing=false;},getBytesTotal:function(){return this.quicktime.GetMovieSize();},getBytesLoaded:function(){return this.quicktime.GetMaxBytesLoaded();},getLoadedRatio:function(){var ms=this.quicktime.GetMovieSize();return ms>0?(this.quicktime.GetMaxBytesLoaded()/ms):0;},getDuration:function(){var qt=this.quicktime;return qt.GetMaxTimeLoaded()/this.getTimeScale()*1000;},getPosition:function(){var qt=this.quicktime;return qt.GetTime()/this.getTimeScale()*1000;},setPosition:function(milliSecond){var qt=this.quicktime;qt.SetTime(Math.floor(this.getTimeScale()*(milliSecond/1000)));},setRate:function(rate){this.rate=rate;if(this.playing)
this.quicktime.SetRate(rate);},getRate:function(){return this.rate;},getTimeScale:function(){return this.timeScale>0?this.timeScale:this.adjustTimeScale(this.getCorrectSecondDuration());},getCorrectSecondDuration:function(){var qt=this.quicktime;return this.correctSecondDuration>0?this.correctSecondDuration:qt.GetDuration()/qt.GetTimeScale()*this.timeLagScale;},adjustTimeScale:function(correctSecondDuration){var qt=this.quicktime;this.timeLagScale=correctSecondDuration*qt.GetTimeScale()/qt.GetDuration();return(this.timeScale=qt.GetTimeScale()/this.timeLagScale);},getVolume:function(){var vol=this.quicktime.GetVolume();vol=vol>256?256:vol;vol=vol<0?0:vol;return Math.round(vol/256*100);},setVolume:function(vol){vol=vol>100?100:vol;vol=vol<0?0:vol;return this.quicktime.SetVolume(Math.round(vol*256/100));},hideMovie:function(){this.quicktime.width='1px';this.quicktime.height='1px';},showMovie:function(){this.quicktime.width=this.qt_opt['width'];this.quicktime.height=this.qt_opt['width'];}})
function MessagePanel(elmPanel,displayTime){this.elmPanel=getElement(elmPanel);this.connect();}
MochiKit.Base.update(MessagePanel.prototype,{connectIds:null,elmPanel:null,timeoutId:-1,displayTime:2,connect:function(){this.connectIds=[connect(this.elmPanel,'onclick',this,'onClick')]},disconnect:function(){forEach(this.connectIds,disconnect);this.connectIds=[];},show:function(message,stickyOrTime){clearTimeout(this.timeoutId);var elmPanel=this.elmPanel;elmPanel.innerHTML=message;appear(elmPanel,{to:0.85,duration:0.5});if(typeof(stickyOrTime)=='number'){this.waitAndHide(stickyOrTime);}else if(stickyOrTime==null||!stickyOrTime){this.waitAndHide();}},hide:function(){setTimeout(partial(fade,this.elmPanel),0);},onClick:function(evt){this.hide();},waitAndHide:function(time){time=time||this.displayTime;clearTimeout(this.timeoutId);this.timeoutId=setTimeout(bind('hide',this),time*1000);}})
function KeyRegistry(){this.handlers=[];this.register.apply(this,arguments);}
MochiKit.Base.update(KeyRegistry,{MODIFIER_KEYS:createSet('ALT CTRL SHIFT'),getKeyString:function(evt){var keys=[];var mod=evt.modifier();mod.shift&&keys.push('SHIFT');mod.ctrl&&keys.push('CTRL');mod.alt&&keys.push('ALT');var key=evt.key().string.replace(/^KEY_/,'');(key in KeyRegistry.MODIFIER_KEYS)||keys.push(key);return keys.join('+');},keyChecker:function(expected){if(typeof(expected)=='function')
return expected;expected=[].concat(expected);return function(target,evt,key){for(var i in expected)
if(expected[i]==key)
return true;return false;}},createHelp:function(handler){return{keys:handler.keys,message:getMessage('help.'+handler.name)};}});MochiKit.Base.update(KeyRegistry.prototype,{help:function(key){return key?KeyRegistry.createHelp(this.findHandlerByKey(key)):map(KeyRegistry.createHelp,this.handlers);},add:function(keyOrName,newKey,swap){var handler=this.findHandlerByKey(keyOrName);if(handler){if(swap)
handler.keys.splice(indexOf(handler.keys,keyOrName),1);}else{handler=this.findHandlerByName(keyOrName);if(swap)
handler.keys=[];}
this.remove(newKey);handler.keys.push(newKey);handler.check=KeyRegistry.keyChecker(handler.keys);},swap:function(keyOrName,newKey){this.add(keyOrName,newKey,true);},remove:function(keyOrName){if(this.findHandlerByName(keyOrName,true))
return;var handler=this.findHandlerByKey(keyOrName);if(!handler)
return;if(handler.keys.length==1){this.findHandlerByName(handler.name,true);return;}
handler.keys.splice(indexOf(handler.keys,keyOrName),1);handler.check=KeyRegistry.keyChecker(handler.keys);},getName:function(key){var handler=this.findHandlerByKey(key);return handler?handler.name:void(0);},findHandlerByName:function(name,pop){var handlers=this.handlers;for(var i in handlers)
if(handlers[i].name==name)
return pop?handlers.splice(i,1):handlers[i];return void(0);},findHandlerByKey:function(key,pop){key=key.toUpperCase();var handlers=this.handlers;for(var i in handlers)
if(indexOf(handlers[i].keys,key)!=-1)
return pop?handlers.splice(i,1):handlers[i];return void(0);},match:function(target,evt){if(evt.isStopped())return;var key=KeyRegistry.getKeyString(evt);for(var i=0,handlers=this.handlers,len=handlers.length;i<len;i++){if(handlers[i].check.call(this,target,evt,key)){if(handlers[i].action.call(this,target,evt,key)!=false)
evt.stop();return true;}}
return false;},register:function(name,keys,action){var defs=isArrayLike(name)?arguments:[[name,keys,action]];var handlers=this.handlers;forEach(defs,function(def){var keys=map(methodcaller('toUpperCase'),[].concat(def[1]));handlers.unshift({name:def[0],keys:keys,check:KeyRegistry.keyChecker(keys),action:def[2]});});}});function TabPanel(tabs){this.tabs=tabs;forEach(tabs,bind(function(tab){connect(tab,'onclick',this,'onClick');},this));}
MochiKit.Base.update(TabPanel.prototype,{selected:null,tabs:null,onClick:function(evt){var elmTab=evt.target();if(this.selected==elmTab)return;this.selectTab(elmTab);},selectTab:function(elmTab){elmTab=getElement(elmTab);try{signal(this,'onChange',elmTab);}catch(e){if(e==CancelEvent)return;throw e;}
removeElementClass(this.selected,'selected')
addElementClass(elmTab,'selected');this.selected=elmTab;},getSelectedTabId:function(){return this.selected?this.selected.id:'';},nextTab:function(){this.rollTab(1);},previousTab:function(){this.rollTab(-1);},rollTab:function(amount){var len=this.tabs.length;this.selectTab(this.tabs[(this.getCurrentIndex()+amount+len)%len]);},getCurrentIndex:function(){var tabs=this.tabs;for(var i=0;i<tabs.length;i++)
if(tabs[i]==this.selected)
return i;}});