var Prototype={Version:'1.5.0',BrowserFeatures:{XPath:!!document.evaluate},ScriptFragment:'(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',emptyFunction:function(){},K:function(x){return x}}
var Class={create:function(){return function(){this.initialize.apply(this,arguments);}}}
var Abstract=new Object();Object.extend=function(destination,source){for(var property in source){destination[property]=source[property];}
return destination;}
Object.extend(Object,{inspect:function(object){try{if(object===undefined)return'undefined';if(object===null)return'null';return object.inspect?object.inspect():object.toString();}catch(e){if(e instanceof RangeError)return'...';throw e;}},keys:function(object){var keys=[];for(var property in object)
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);}});Function.prototype.bind=function(){var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}}
Function.prototype.bindAsEventListener=function(object){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[(event||window.event)].concat(args).concat($A(arguments)));}}
Object.extend(Number.prototype,{toColorPart:function(){var digits=this.toString(16);if(this<16)return'0'+digits;return digits;},succ:function(){return this+1;},times:function(iterator){$R(0,this,true).each(iterator);return this;}});var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
return returnValue;}}
var PeriodicalExecuter=Class.create();PeriodicalExecuter.prototype={initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.callback(this);}finally{this.currentlyExecuting=false;}}}}
String.interpret=function(value){return value==null?'':String(value);}
Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return this;},truncate:function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:this;},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML;},unescapeHTML:function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var name=decodeURIComponent(pair[0]);var value=pair[1]?decodeURIComponent(pair[1]):undefined;if(hash[name]!==undefined){if(hash[name].constructor!=Array)
hash[name]=[hash[name]];if(value)hash[name].push(value);}
else hash[name]=value;}
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.replace(/\\/g,'\\\\');if(useDoubleQuotes)
return'"'+escapedString.replace(/"/g,'\\"')+'"';else
return"'"+escapedString.replace(/'/g,'\\\'')+"'";}});String.prototype.gsub.prepareReplacement=function(replacement){if(typeof replacement=='function')return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};}
String.prototype.parseQuery=String.prototype.toQueryParams;var Template=Class.create();Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;Template.prototype={initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){return this.template.gsub(this.pattern,function(match){var before=match[1];if(before=='\\')return match[2];return before+String.interpret(object[match[3]]);});}}
var $break=new Object();var $continue=new Object();var Enumerable={each:function(iterator){var index=0;try{this._each(function(value){try{iterator(value,index++);}catch(e){if(e!=$continue)throw e;}});}catch(e){if(e!=$break)throw e;}
return this;},eachSlice:function(number,iterator){var index=-number,slices=[],array=this.toArray();while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.map(iterator);},all:function(iterator){var result=true;this.each(function(value,index){result=result&&!!(iterator||Prototype.K)(value,index);if(!result)throw $break;});return result;},any:function(iterator){var result=false;this.each(function(value,index){if(result=!!(iterator||Prototype.K)(value,index))
throw $break;});return result;},collect:function(iterator){var results=[];this.each(function(value,index){results.push((iterator||Prototype.K)(value,index));});return results;},detect:function(iterator){var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break;}});return result;},findAll:function(iterator){var results=[];this.each(function(value,index){if(iterator(value,index))
results.push(value);});return results;},grep:function(pattern,iterator){var results=[];this.each(function(value,index){var stringValue=value.toString();if(stringValue.match(pattern))
results.push((iterator||Prototype.K)(value,index));})
return results;},include:function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=fillWith===undefined?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator){this.each(function(value,index){memo=iterator(memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value>=result)
result=value;});return result;},min:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value<result)
result=value;});return result;},partition:function(iterator){var trues=[],falses=[];this.each(function(value,index){((iterator||Prototype.K)(value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value,index){results.push(value[property]);});return results;},reject:function(iterator){var results=[];this.each(function(value,index){if(!iterator(value,index))
results.push(value);});return results;},sortBy:function(iterator){return this.map(function(value,index){return{value:value,criteria:iterator(value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(typeof args.last()=='function')
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}}
Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable)return[];if(iterable.toArray){return iterable.toArray();}else{var results=[];for(var i=0,length=iterable.length;i<length;i++)
results.push(iterable[i]);return results;}}
Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)
Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(value&&value.constructor==Array?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},indexOf:function(object){for(var i=0,length=this.length;i<length;i++)
if(this[i]==object)return i;return-1;},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(){return this.inject([],function(array,value){return array.include(value)?array:array.concat([value]);});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';}});Array.prototype.toArray=Array.prototype.clone;function $w(string){string=string.strip();return string?string.split(/\s+/):[];}
if(window.opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(arguments[i].constructor==Array){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
return array;}}
var Hash=function(obj){Object.extend(this,obj||{});};Object.extend(Hash,{toQueryString:function(obj){var parts=[];this.prototype._each.call(obj,function(pair){if(!pair.key)return;if(pair.value&&pair.value.constructor==Array){var values=pair.value.compact();if(values.length<2)pair.value=values.reduce();else{key=encodeURIComponent(pair.key);values.each(function(value){value=value!=undefined?encodeURIComponent(value):'';parts.push(key+'='+encodeURIComponent(value));});return;}}
if(pair.value==undefined)pair[1]='';parts.push(pair.map(encodeURIComponent).join('='));});return parts.join('&');}});Object.extend(Hash.prototype,Enumerable);Object.extend(Hash.prototype,{_each:function(iterator){for(var key in this){var value=this[key];if(value&&value==Hash.prototype[key])continue;var pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},merge:function(hash){return $H(hash).inject(this,function(mergedHash,pair){mergedHash[pair.key]=pair.value;return mergedHash;});},remove:function(){var result;for(var i=0,length=arguments.length;i<length;i++){var value=this[arguments[i]];if(value!==undefined){if(result===undefined)result=value;else{if(result.constructor!=Array)result=[result];result.push(value)}}
delete this[arguments[i]];}
return result;},toQueryString:function(){return Hash.toQueryString(this);},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';}});function $H(object){if(object&&object.constructor==Hash)return object;return new Hash(object);};ObjectRange=Class.create();Object.extend(ObjectRange.prototype,Enumerable);Object.extend(ObjectRange.prototype,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);}
var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0}
Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++;},onComplete:function(){Ajax.activeRequestCount--;}});Ajax.Base=function(){};Ajax.Base.prototype={setOptions:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:''}
Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(typeof this.options.parameters=='string')
this.options.parameters=this.options.parameters.toQueryParams();}}
Ajax.Request=Class.create();Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(),{_complete:false,initialize:function(url,options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=this.options.parameters;if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
params=Hash.toQueryString(params);if(params&&/Konqueror|Safari|KHTML/.test(navigator.userAgent))params+='&_=';if(this.method=='get'&&params)
this.url+=(this.url.indexOf('?')>-1?'&':'?')+params;try{Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)
setTimeout(function(){this.respondToReadyState(1)}.bind(this),10);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();var body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
this.onStateChange();}
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['Connection']='close';}
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function')
for(var i=0,length=extras.length;i<length;i+=2)
headers[extras[i]]=extras[i+1];else
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
for(var name in headers)
this.transport.setRequestHeader(name,headers[name]);},success:function(){return!this.transport.status||(this.transport.status>=200&&this.transport.status<300);},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState];var transport=this.transport,json=this.evalJSON();if(state=='Complete'){try{this._complete=true;(this.options['on'+this.transport.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(transport,json);}catch(e){this.dispatchException(e);}
if((this.getHeader('Content-type')||'text/javascript').strip().match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
this.evalResponse();}
try{(this.options['on'+state]||Prototype.emptyFunction)(transport,json);Ajax.Responders.dispatch('on'+state,this,transport,json);}catch(e){this.dispatchException(e);}
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null}},evalJSON:function(){try{var json=this.getHeader('X-JSON');return json?eval('('+json+')'):null;}catch(e){return null}},evalResponse:function(){try{return eval(this.transport.responseText);}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Updater=Class.create();Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize:function(container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))}
this.transport=Ajax.getTransport();this.setOptions(options);var onComplete=this.options.onComplete||Prototype.emptyFunction;this.options.onComplete=(function(transport,param){this.updateContent();onComplete(transport,param);}).bind(this);this.request(url);},updateContent:function(){var receiver=this.container[this.success()?'success':'failure'];var response=this.transport.responseText;if(!this.options.evalScripts)response=response.stripScripts();if(receiver=$(receiver)){if(this.options.insertion)
new this.options.insertion(receiver,response);else
receiver.update(response);}
if(this.success()){if(this.onComplete)
setTimeout(this.onComplete.bind(this),10);}}});Ajax.PeriodicalUpdater=Class.create();Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize:function(container,url,options){this.setOptions(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(request){if(this.options.decay){this.decay=(request.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=request.responseText;}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay*this.frequency*1000);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));return elements;}
if(typeof element=='string')
element=document.getElementById(element);return Element.extend(element);}
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
results.push(query.snapshotItem(i));return results;};}
document.getElementsByClassName=function(className,parentElement){if(Prototype.BrowserFeatures.XPath){var q=".//*[contains(concat(' ', @class, ' '), ' "+className+" ')]";return document._getElementsByXPath(q,parentElement);}else{var children=($(parentElement)||document.body).getElementsByTagName('*');var elements=[],child;for(var i=0,length=children.length;i<length;i++){child=children[i];if(Element.hasClassName(child,className))
elements.push(Element.extend(child));}
return elements;}};if(!window.Element)
var Element=new Object();Element.extend=function(element){if(!element||_nativeExtensions||element.nodeType==3)return element;if(!element._extended&&element.tagName&&element!=window){var methods=Object.clone(Element.Methods),cache=Element.extend.cache;if(element.tagName=='FORM')
Object.extend(methods,Form.Methods);if(['INPUT','TEXTAREA','SELECT'].include(element.tagName))
Object.extend(methods,Form.Element.Methods);Object.extend(methods,Element.Methods.Simulated);for(var property in methods){var value=methods[property];if(typeof value=='function'&&!(property in element))
element[property]=cache.findOrStore(value);}}
element._extended=true;return element;};Element.extend.cache={findOrStore:function(value){return this[value]=this[value]||function(){return value.apply(null,[this].concat($A(arguments)));}}};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){$(element).style.display='none';return element;},show:function(element){$(element).style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,html){html=typeof html=='undefined'?'':html.toString();$(element).innerHTML=html.stripScripts();setTimeout(function(){html.evalScripts()},10);return element;},replace:function(element,html){element=$(element);html=typeof html=='undefined'?'':html.toString();if(element.outerHTML){element.outerHTML=html.stripScripts();}else{var range=element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()),element);}
setTimeout(function(){html.evalScripts()},10);return element;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
if(element.nodeType==1)
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $A($(element).getElementsByTagName('*'));},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(typeof selector=='string')
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){return Selector.findElement($(element).ancestors(),expression,index);},down:function(element,expression,index){return Selector.findElement($(element).descendants(),expression,index);},previous:function(element,expression,index){return Selector.findElement($(element).previousSiblings(),expression,index);},next:function(element,expression,index){return Selector.findElement($(element).nextSiblings(),expression,index);},getElementsBySelector:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},getElementsByClassName:function(element,className){return document.getElementsByClassName(className,element);},readAttribute:function(element,name){element=$(element);if(document.all&&!window.opera){var t=Element._attributeTranslations;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];var attribute=element.attributes[name];if(attribute)return attribute.nodeValue;}
return element.getAttribute(name);},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;if(elementClassName.length==0)return false;if(elementClassName==className||elementClassName.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
return true;return false;},addClassName:function(element,className){if(!(element=$(element)))return;Element.classNames(element).add(className);return element;},removeClassName:function(element,className){if(!(element=$(element)))return;Element.classNames(element).remove(className);return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;Element.classNames(element)[element.hasClassName(className)?'remove':'add'](className);return element;},observe:function(){Event.observe.apply(Event,arguments);return $A(arguments).first();},stopObserving:function(){Event.stopObserving.apply(Event,arguments);return $A(arguments).first();},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
element.removeChild(node);node=nextNode;}
return element;},empty:function(element){return $(element).innerHTML.match(/^\s*$/);},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);while(element=element.parentNode)
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=Position.cumulativeOffset(element);window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);if(['float','cssFloat'].include(style))
style=(typeof element.style.styleFloat!='undefined'?'styleFloat':'cssFloat');style=style.camelize();var value=element.style[style];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}else if(element.currentStyle){value=element.currentStyle[style];}}
if((value=='auto')&&['width','height'].include(style)&&(element.getStyle('display')!='none'))
value=element['offset'+style.capitalize()]+'px';if(window.opera&&['left','top','right','bottom'].include(style))
if(Element.getStyle(element,'position')=='static')value='auto';if(style=='opacity'){if(value)return parseFloat(value);if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(value[1])return parseFloat(value[1])/100;return 1.0;}
return value=='auto'?null:value;},setStyle:function(element,style){element=$(element);for(var name in style){var value=style[name];if(name=='opacity'){if(value==1){value=(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1.0;if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');}else if(value==''){if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');}else{if(value<0.00001)value=0;if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+value*100+')';}}else if(['float','cssFloat'].include(name))name=(typeof element.style.styleFloat!='undefined')?'styleFloat':'cssFloat';element.style[name.camelize()]=value;}
return element;},getDimensions:function(element){element=$(element);var display=$(element).getStyle('display');if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0;}}
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=element.style.overflow||'auto';if((Element.getStyle(element,'overflow')||'visible')!='hidden')
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;}};Object.extend(Element.Methods,{childOf:Element.Methods.descendantOf});Element._attributeTranslations={};Element._attributeTranslations.names={colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",datetime:"dateTime",accesskey:"accessKey",tabindex:"tabIndex",enctype:"encType",maxlength:"maxLength",readonly:"readOnly",longdesc:"longDesc"};Element._attributeTranslations.values={_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){var node=element.getAttributeNode('title');return node.specified?node.nodeValue:null;}};Object.extend(Element._attributeTranslations.values,{href:Element._attributeTranslations.values._getAttr,src:Element._attributeTranslations.values._getAttr,disabled:Element._attributeTranslations.values._flag,checked:Element._attributeTranslations.values._flag,readonly:Element._attributeTranslations.values._flag,multiple:Element._attributeTranslations.values._flag});Element.Methods.Simulated={hasAttribute:function(element,attribute){var t=Element._attributeTranslations;attribute=t.names[attribute]||attribute;return $(element).getAttributeNode(attribute).specified;}};if(document.all&&!window.opera){Element.Methods.update=function(element,html){element=$(element);html=typeof html=='undefined'?'':html.toString();var tagName=element.tagName.toUpperCase();if(['THEAD','TBODY','TR','TD'].include(tagName)){var div=document.createElement('div');switch(tagName){case'THEAD':case'TBODY':div.innerHTML='<table><tbody>'+html.stripScripts()+'</tbody></table>';depth=2;break;case'TR':div.innerHTML='<table><tbody><tr>'+html.stripScripts()+'</tr></tbody></table>';depth=3;break;case'TD':div.innerHTML='<table><tbody><tr><td>'+html.stripScripts()+'</td></tr></tbody></table>';depth=4;}
$A(element.childNodes).each(function(node){element.removeChild(node)});depth.times(function(){div=div.firstChild});$A(div.childNodes).each(function(node){element.appendChild(node)});}else{element.innerHTML=html.stripScripts();}
setTimeout(function(){html.evalScripts()},10);return element;}};Object.extend(Element,Element.Methods);var _nativeExtensions=false;if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
['','Form','Input','TextArea','Select'].each(function(tag){var className='HTML'+tag+'Element';if(window[className])return;var klass=window[className]={};klass.prototype=document.createElement(tag?tag.toLowerCase():'div').__proto__;});Element.addMethods=function(methods){Object.extend(Element.Methods,methods||{});function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;var cache=Element.extend.cache;for(var property in methods){var value=methods[property];if(!onlyIfAbsent||!(property in destination))
destination[property]=cache.findOrStore(value);}}
if(typeof HTMLElement!='undefined'){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);copy(Form.Methods,HTMLFormElement.prototype);[HTMLInputElement,HTMLTextAreaElement,HTMLSelectElement].each(function(klass){copy(Form.Element.Methods,klass.prototype);});_nativeExtensions=true;}}
var Toggle=new Object();Toggle.display=Element.toggle;Abstract.Insertion=function(adjacency){this.adjacency=adjacency;}
Abstract.Insertion.prototype={initialize:function(element,content){this.element=$(element);this.content=content.stripScripts();if(this.adjacency&&this.element.insertAdjacentHTML){try{this.element.insertAdjacentHTML(this.adjacency,this.content);}catch(e){var tagName=this.element.tagName.toUpperCase();if(['TBODY','TR'].include(tagName)){this.insertContent(this.contentFromAnonymousTable());}else{throw e;}}}else{this.range=this.element.ownerDocument.createRange();if(this.initializeRange)this.initializeRange();this.insertContent([this.range.createContextualFragment(this.content)]);}
setTimeout(function(){content.evalScripts()},10);},contentFromAnonymousTable:function(){var div=document.createElement('div');div.innerHTML='<table><tbody>'+this.content+'</tbody></table>';return $A(div.childNodes[0].childNodes[0].childNodes);}}
var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{initializeRange:function(){this.range.setStartBefore(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element);}).bind(this));}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(true);},insertContent:function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment,this.element.firstChild);}).bind(this));}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment);}).bind(this));}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{initializeRange:function(){this.range.setStartAfter(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling);}).bind(this));}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);var Selector=Class.create();Selector.prototype={initialize:function(expression){this.params={classNames:[]};this.expression=expression.toString().strip();this.parseExpression();this.compileMatcher();},parseExpression:function(){function abort(message){throw'Parse error in selector: '+message;}
if(this.expression=='')abort('empty expression');var params=this.params,expr=this.expression,match,modifier,clause,rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||''});expr=match[1];}
if(expr=='*')return this.params.wildcard=true;while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){modifier=match[1],clause=match[2],rest=match[3];switch(modifier){case'#':params.id=clause;break;case'.':params.classNames.push(clause);break;case'':case undefined:params.tagName=clause.toUpperCase();break;default:abort(expr.inspect());}
expr=rest;}
if(expr.length>0)abort(expr.inspect());},buildMatchExpression:function(){var params=this.params,conditions=[],clause;if(params.wildcard)
conditions.push('true');if(clause=params.id)
conditions.push('element.readAttribute("id") == '+clause.inspect());if(clause=params.tagName)
conditions.push('element.tagName.toUpperCase() == '+clause.inspect());if((clause=params.classNames).length>0)
for(var i=0,length=clause.length;i<length;i++)
conditions.push('element.hasClassName('+clause[i].inspect()+')');if(clause=params.attributes){clause.each(function(attribute){var value='element.readAttribute('+attribute.name.inspect()+')';var splitValueBy=function(delimiter){return value+' && '+value+'.split('+delimiter.inspect()+')';}
switch(attribute.operator){case'=':conditions.push(value+' == '+attribute.value.inspect());break;case'~=':conditions.push(splitValueBy(' ')+'.include('+attribute.value.inspect()+')');break;case'|=':conditions.push(splitValueBy('-')+'.first().toUpperCase() == '+attribute.value.toUpperCase().inspect());break;case'!=':conditions.push(value+' != '+attribute.value.inspect());break;case'':case undefined:conditions.push('element.hasAttribute('+attribute.name.inspect()+')');break;default:throw'Unknown operator '+attribute.operator+' in selector';}});}
return conditions.join(' && ');},compileMatcher:function(){this.match=new Function('element','if (!element.tagName) return false; \
      element = $(element); \
      return '+this.buildMatchExpression());},findElements:function(scope){var element;if(element=$(this.params.id))
if(this.match(element))
if(!scope||Element.childOf(element,scope))
return[element];scope=(scope||document).getElementsByTagName(this.params.tagName||'*');var results=[];for(var i=0,length=scope.length;i<length;i++)
if(this.match(element=scope[i]))
results.push(Element.extend(element));return results;},toString:function(){return this.expression;}}
Object.extend(Selector,{matchElements:function(elements,expression){var selector=new Selector(expression);return elements.select(selector.match.bind(selector)).map(Element.extend);},findElement:function(elements,expression,index){if(typeof expression=='number')index=expression,expression=false;return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){return expressions.map(function(expression){return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null],function(results,expr){var selector=new Selector(expr);return results.inject([],function(elements,result){return elements.concat(selector.findElements(result||element));});});}).flatten();}});function $$(){return Selector.findChildElements(document,$A(arguments));}
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,getHash){var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){var key=element.name,value=$(element).getValue();if(value!=undefined){if(result[key]){if(result[key].constructor!=Array)result[key]=[result[key]];result[key].push(value);}
else result[key]=value;}}
return result;});return getHash?data:Hash.toQueryString(data);}};Form.Methods={serialize:function(form,getHash){return Form.serializeElements(Form.getElements(form),getHash);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(Element.extend(input));}
return matchingInputs;},disable:function(form){form=$(form);form.getElements().each(function(element){element.blur();element.disabled='true';});return form;},enable:function(form){form=$(form);form.getElements().each(function(element){element.disabled='';});return form;},findFirstElement:function(form){return $(form).getElements().find(function(element){return element.type!='hidden'&&!element.disabled&&['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;}}
Object.extend(Form,Form.Methods);Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}}
Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Hash.toQueryString(pair);}}
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
element.select();return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.blur();element.disabled=false;return element;}}
Object.extend(Form.Element,Form.Element.Methods);var Field=Form.Element;var $F=Form.Element.getValue;Form.Element.Serializers={input:function(element){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element);default:return Form.Element.Serializers.textarea(element);}},inputSelector:function(element){return element.checked?element.value:null;},textarea:function(element){return element.value;},select:function(element){return this[element.type=='select-one'?'selectOne':'selectMany'](element);},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}}
Abstract.TimedObserver=function(){}
Abstract.TimedObserver.prototype={initialize:function(element,frequency,callback){this.frequency=frequency;this.element=$(element);this.callback=callback;this.lastValue=this.getValue();this.registerCallback();},registerCallback:function(){setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},onTimerEvent:function(){var value=this.getValue();var changed=('string'==typeof this.lastValue&&'string'==typeof value?this.lastValue!=value:String(this.lastValue)!=String(value));if(changed){this.callback(this.element,value);this.lastValue=value;}}}
Form.Element.Observer=Class.create();Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create();Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=function(){}
Abstract.EventObserver.prototype={initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback.bind(this));},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}}
Form.Element.EventObserver=Class.create();Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create();Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(),{getValue:function(){return Form.serialize(this.element);}});if(!window.Event){var Event=new Object();}
Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},pointerX:function(event){return event.pageX||(event.clientX+
(document.documentElement.scrollLeft||document.body.scrollLeft));},pointerY:function(event){return event.pageY||(event.clientY+
(document.documentElement.scrollTop||document.body.scrollTop));},stop:function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation();}else{event.returnValue=false;event.cancelBubble=true;}},findElement:function(event,tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element;},observers:false,_observeAndCache:function(element,name,observer,useCapture){if(!this.observers)this.observers=[];if(element.addEventListener){this.observers.push([element,name,observer,useCapture]);element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){this.observers.push([element,name,observer,useCapture]);element.attachEvent('on'+name,observer);}},unloadCache:function(){if(!Event.observers)return;for(var i=0,length=Event.observers.length;i<length;i++){Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i][0]=null;}
Event.observers=false;},observe:function(element,name,observer,useCapture){if(element!="[object HTMLTableRowElement]"){element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
name='keydown';Event._observeAndCache(element,name,observer,useCapture);}},stopObserving:function(element,name,observer,useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name,observer,useCapture);}else if(element.detachEvent){try{element.detachEvent('on'+name,observer);}catch(e){}}}});if(navigator.appVersion.match(/\bMSIE\b/))
Event.observe(window,'unload',Event.unloadCache,false);var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},realOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return[valueL,valueT];},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName=='BODY')break;var p=Element.getStyle(element,'position');if(p=='relative'||p=='absolute')break;}}while(element);return[valueL,valueT];},offsetParent:function(element){if(element.offsetParent)return element.offsetParent;if(element==document.body)return element;while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return element;return document.body;},within:function(element,x,y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=this.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},page:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!window.opera||element.tagName=='BODY'){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return[valueL,valueT];},clone:function(source,target){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{})
source=$(source);var p=Position.page(source);target=$(target);var delta=[0,0];var parent=null;if(Element.getStyle(target,'position')=='absolute'){parent=Position.offsetParent(target);delta=Position.page(parent);}
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
if(options.setLeft)target.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)target.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)target.style.width=source.offsetWidth+'px';if(options.setHeight)target.style.height=source.offsetHeight+'px';},absolutize:function(element){element=$(element);if(element.style.position=='absolute')return;Position.prepare();var offsets=Position.positionedOffset(element);var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';},relativize:function(element){element=$(element);if(element.style.position=='relative')return;Position.prepare();element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;}}
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){Position.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return[valueL,valueT];}}
Element.addMethods();String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
return(color.length==7?color:(arguments[0]||this));}
Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');}
Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');}
Element.setContentZoom=function(element,percent){element=$(element);Element.setStyle(element,{fontSize:(percent/100)+'em'});if(navigator.appVersion.indexOf('AppleWebKit')>0)window.scrollBy(0,0);}
Element.getOpacity=function(element){var opacity;if(opacity=Element.getStyle(element,'opacity'))
return parseFloat(opacity);if(opacity=(Element.getStyle(element,'filter')||'').match(/alpha\(opacity=(.*)\)/))
if(opacity[1])return parseFloat(opacity[1])/100;return 1.0;}
Element.setOpacity=function(element,value){element=$(element);if(value==1){Element.setStyle(element,{opacity:(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:null});if(/MSIE/.test(navigator.userAgent))
Element.setStyle(element,{filter:Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});}else{if(value<0.00001)value=0;Element.setStyle(element,{opacity:value});if(/MSIE/.test(navigator.userAgent))
Element.setStyle(element,{filter:Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+value*100+')'});}}
Element.getInlineOpacity=function(element){return $(element).style.opacity||'';}
Element.childrenWithClassName=function(element,className,findFirst){var classNameRegExp=new RegExp("(^|\\s)"+className+"(\\s|$)");var results=$A($(element).getElementsByTagName('*'))[findFirst?'detect':'select'](function(c){return(c.className&&c.className.match(classNameRegExp));});if(!results)results=[];return results;}
Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};Array.prototype.call=function(){var args=arguments;this.each(function(f){f.apply(this,args)});}
var Effect={tagifyText:function(element){var tagifyStyle='position:relative';if(/MSIE/.test(navigator.userAgent))tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(Builder.node('span',{style:tagifyStyle},character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||(typeof element=='function'))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};var Effect2=Effect;Effect.Transitions={}
Effect.Transitions.linear=function(pos){return pos;}
Effect.Transitions.sinoidal=function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;}
Effect.Transitions.reverse=function(pos){return 1-pos;}
Effect.Transitions.flicker=function(pos){return((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;}
Effect.Transitions.wobble=function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;}
Effect.Transitions.pulse=function(pos){return(Math.floor(pos*10)%2==0?(pos*10-Math.floor(pos*10)):1-(pos*10-Math.floor(pos*10)));}
Effect.Transitions.none=function(pos){return 0;}
Effect.Transitions.full=function(pos){return 1;}
Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string')?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this),40);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();this.effects.invoke('loop',timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(typeof queueName!='string')return queueName;if(!this.instances[queueName])
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName];}}
Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1.0,fps:25.0,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'}
Effect.Base=function(){};Effect.Base.prototype={position:null,start:function(options){this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
var pos=(timePos-this.startOn)/(this.finishOn-this.startOn);var frame=Math.round(pos*this.options.fps*this.options.duration);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},render:function(pos){if(this.state=='idle'){this.state='running';this.event('beforeSetup');if(this.setup)this.setup();this.event('afterSetup');}
if(this.state=='running'){if(this.options.transition)pos=this.options.transition(pos);pos*=(this.options.to-this.options.from);pos+=this.options.from;this.position=pos;this.event('beforeUpdate');if(this.update)this.update(pos);this.event('afterUpdate');}},cancel:function(){if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string'?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){return'#<Effect:'+$H(this).inspect()+',options:'+$H(this.options).inspect()+'>';}}
Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);if(/MSIE/.test(navigator.userAgent)&&(!this.element.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:this.options.x*position+this.originalLeft+'px',top:this.options.y*position+this.originalTop+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(element,percent){this.element=$(element)
var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width+'px';if(this.options.scaleY)d.height=height+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
this.element.setStyle(d);}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
this.oldStyle={backgroundImage:this.element.getStyle('background-image')};this.element.setStyle({backgroundImage:'none'});if(!this.options.endcolor)
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);this.start(arguments[1]||{});},setup:function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset)offsets[1]+=this.options.offset;var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-
(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart;},update:function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta));}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide();effect.element.setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);}
Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from);effect.element.show();}},arguments[1]||{});return new Effect.Opacity(element,options);}
Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position')};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){effect.effects[0].element.setStyle({position:'absolute'});},afterFinishInternal:function(effect){effect.effects[0].element.hide();effect.effects[0].element.setStyle(oldStyle);}},arguments[1]||{}));}
Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide();effect.element.undoClipping();}},arguments[1]||{}));}
Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping();effect.element.setStyle({height:'0px'});effect.element.show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));}
Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,{duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned();effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide();effect.element.undoClipping();effect.element.undoPositioned();effect.element.setStyle({opacity:oldOpacity});}})}});}
Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide();effect.effects[0].element.undoPositioned();effect.effects[0].element.setStyle(oldStyle);}},arguments[1]||{}));}
Effect.Shake=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:20,y:0,duration:0.05,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:40,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.05,afterFinishInternal:function(effect){effect.element.undoPositioned();effect.element.setStyle(oldStyle);}})}})}})}})}})}});}
Effect.SlideDown=function(element){element=$(element);element.cleanWhitespace();var oldInnerBottom=$(element.firstChild).getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.firstChild.makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping();effect.element.setStyle({height:'0px'});effect.element.show();},afterUpdateInternal:function(effect){effect.element.firstChild.setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping();if(/MSIE/.test(navigator.userAgent)){effect.element.undoPositioned();effect.element.firstChild.undoPositioned();}else{effect.element.firstChild.undoPositioned();effect.element.undoPositioned();}
effect.element.firstChild.setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));}
Effect.SlideUp=function(element){element=$(element);element.cleanWhitespace();var oldInnerBottom=$(element.firstChild).getStyle('bottom');return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(effect){effect.element.makePositioned();effect.element.firstChild.makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping();effect.element.show();},afterUpdateInternal:function(effect){effect.element.firstChild.setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide();effect.element.undoClipping();effect.element.firstChild.undoPositioned();effect.element.undoPositioned();effect.element.setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));}
Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping(effect.element);},afterFinishInternal:function(effect){effect.element.hide(effect.element);effect.element.undoClipping(effect.element);}});}
Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide();effect.element.makeClipping();effect.element.makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'});effect.effects[0].element.show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping();effect.effects[0].element.undoPositioned();effect.effects[0].element.setStyle(oldStyle);}},options))}});}
Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned();effect.effects[0].element.makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide();effect.effects[0].element.undoClipping();effect.effects[0].element.undoPositioned();effect.effects[0].element.setStyle(oldStyle);}},options));}
Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:3.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));}
Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};Element.makeClipping(element);return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide();effect.element.undoClipping();effect.element.setStyle(oldStyle);}});}},arguments[1]||{}));};['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass','childrenWithClassName'].each(function(f){Element.Methods[f]=Element[f];});Element.Methods.visualEffect=function(element,effect,options){s=effect.gsub(/_/,'-').camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element,options);return $(element);};Element.addMethods();var Autocompleter={}
Autocompleter.Base=function(){};Autocompleter.Base.prototype={baseInitialize:function(element,update,options){this.element=$(element);this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;if(this.setOptions)
this.setOptions(options);else
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){$('mudidi').hide();if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
this.options.tokens=new Array(this.options.tokens);this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.element,"keyup",this.onKeyPress.bindAsEventListener(this));Event.observe(this.element,"input",this.onKeyPress.bindAsEventListener(this));Event.observe(this.element,"propertychange",this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(navigator.appVersion.indexOf('MSIE')>0)&&(navigator.userAgent.indexOf('Opera')<0)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){Position.clone(this.update,this.iefix);this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0)Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0)Event.stop(event);return;}
else
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(navigator.appVersion.indexOf('AppleWebKit')>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'LI');if(this.index!=element.autocompleteIndex)
{this.index=element.autocompleteIndex;this.render();}
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){setTimeout(this.hide.bind(this),250);if($('mudidi')){setTimeout(function(){$('mudidi').hide();},100);}
this.hasFocus=false;this.active=false;},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++)
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--
else this.index=this.entryCount-1;},markNext:function(){if(this.index<this.entryCount-1)this.index++
else this.index=0;},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
var value='';if(this.options.select){var nodes=document.getElementsByClassName(this.options.select,selectedElement)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');var lastTokenPos=this.findLastToken();if(lastTokenPos!=-1){var newValue=this.element.value.substr(0,lastTokenPos+1);var whitespace=this.element.value.substr(lastTokenPos+1).match(/^\s+/);if(whitespace)
newValue+=whitespace[0];this.element.value=newValue+value;}else{if($('mudidi'))
{this.element.value=value.split(" ")[0];}
else
{this.element.value=value;}}
this.element.focus();if(this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.firstChild);if(this.update.firstChild&&this.update.firstChild.childNodes){this.entryCount=this.update.firstChild.childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
this.stopIndicator();this.index=0;this.render();}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;if(this.getToken().length>=this.options.minChars){this.startIndicator();this.getUpdatedChoices();}else{this.active=false;this.hide();}},getToken:function(){var tokenPos=this.findLastToken();if(tokenPos!=-1)
var ret=this.element.value.substr(tokenPos+1).replace(/^\s+/,'').replace(/\s+$/,'');else
var ret=this.element.value;return/\n/.test(ret)?'':ret;},findLastToken:function(){var lastTokenPos=-1;for(var i=0;i<this.options.tokens.length;i++){var thisTokenPos=this.element.value.lastIndexOf(this.options.tokens[i]);if(thisTokenPos>lastTokenPos)
lastTokenPos=thisTokenPos;}
return lastTokenPos;}}
Ajax.Autocompleter=Class.create();Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){entry=encodeURIComponent(this.options.paramName)+'='+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create();Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
if(partial.length)
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length))
return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);}
Ajax.InPlaceEditor=Class.create();Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99";Ajax.InPlaceEditor.prototype={initialize:function(element,url,options){this.url=url;this.element=$(element);this.options=Object.extend({okButton:true,okText:"ok",cancelLink:true,cancelText:"cancel",savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightcolor});},onFailure:function(transport){alert("Error communicating with the server: "+transport.responseText.stripTags());},callback:function(form){return Form.serialize(form);},handleLineBreaks:true,loadingText:'Loading...',savingClassName:'inplaceeditor-saving',loadingClassName:'inplaceeditor-loading',formClassName:'inplaceeditor-form',highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,submitOnBlur:false,ajaxOptions:{},evalScripts:false},options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+"-inplaceeditor";if($(this.options.formId)){this.options.formId=null;}}
if(this.options.externalControl){this.options.externalControl=$(this.options.externalControl);}
this.originalBackground=Element.getStyle(this.element,'background-color');if(!this.originalBackground){this.originalBackground="transparent";}
this.element.title=this.options.clickToEditText;this.onclickListener=this.enterEditMode.bindAsEventListener(this);this.mouseoverListener=this.enterHover.bindAsEventListener(this);this.mouseoutListener=this.leaveHover.bindAsEventListener(this);Event.observe(this.element,'click',this.onclickListener);Event.observe(this.element,'mouseover',this.mouseoverListener);Event.observe(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.observe(this.options.externalControl,'click',this.onclickListener);Event.observe(this.options.externalControl,'mouseover',this.mouseoverListener);Event.observe(this.options.externalControl,'mouseout',this.mouseoutListener);}},enterEditMode:function(evt){if(this.saving)return;if(this.editing)return;this.editing=true;this.onEnterEditMode();if(this.options.externalControl){Element.hide(this.options.externalControl);}
Element.hide(this.element);this.createForm();this.element.parentNode.insertBefore(this.form,this.element);Field.scrollFreeActivate(this.editField);if(evt){Event.stop(evt);}
return false;},createForm:function(){this.form=document.createElement("form");this.form.id=this.options.formId;Element.addClassName(this.form,this.options.formClassName)
this.form.onsubmit=this.onSubmit.bind(this);this.createEditField();if(this.options.textarea){var br=document.createElement("br");this.form.appendChild(br);}
if(this.options.okButton){okButton=document.createElement("input");okButton.type="submit";okButton.value=this.options.okText;okButton.className='editor_ok_button';this.form.appendChild(okButton);}
if(this.options.cancelLink){cancelLink=document.createElement("a");cancelLink.href="#";cancelLink.appendChild(document.createTextNode(this.options.cancelText));cancelLink.onclick=this.onclickCancel.bind(this);cancelLink.className='editor_cancel';this.form.appendChild(cancelLink);}},hasHTMLLineBreaks:function(string){if(!this.options.handleLineBreaks)return false;return string.match(/<br/i)||string.match(/<p>/i);},convertHTMLLineBreaks:function(string){return string.replace(/<br>/gi,"\n").replace(/<br\/>/gi,"\n").replace(/<\/p>/gi,"\n").replace(/<p>/gi,"");},createEditField:function(){var text;if(this.options.loadTextURL){text=this.options.loadingText;}else{text=this.getText();}
var obj=this;if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){this.options.textarea=false;var textField=document.createElement("input");textField.obj=this;textField.type="text";textField.name="value";textField.value=text;textField.style.backgroundColor=this.options.highlightcolor;textField.className='editor_field';var size=this.options.size||this.options.cols||0;if(size!=0)textField.size=size;if(this.options.submitOnBlur)
textField.onblur=this.onSubmit.bind(this);this.editField=textField;}else{this.options.textarea=true;var textArea=document.createElement("textarea");textArea.obj=this;textArea.name="value";textArea.value=this.convertHTMLLineBreaks(text);textArea.rows=this.options.rows;textArea.cols=this.options.cols||40;textArea.className='editor_field';if(this.options.submitOnBlur)
textArea.onblur=this.onSubmit.bind(this);this.editField=textArea;}
if(this.options.loadTextURL){this.loadExternalText();}
this.form.appendChild(this.editField);},getText:function(){return this.element.innerHTML;},loadExternalText:function(){Element.addClassName(this.form,this.options.loadingClassName);this.editField.disabled=true;new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions));},onLoadedExternalText:function(transport){Element.removeClassName(this.form,this.options.loadingClassName);this.editField.disabled=false;this.editField.value=transport.responseText.stripTags();},onclickCancel:function(){this.onComplete();this.leaveEditMode();return false;},onFailure:function(transport){this.options.onFailure(transport);if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;this.oldInnerHTML=null;}
return false;},onSubmit:function(){var form=this.form;var value=this.editField.value;this.onLoading();if(this.options.evalScripts){new Ajax.Request(this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this),asynchronous:true,evalScripts:true},this.options.ajaxOptions));}else{new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(form,value),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions));}
if(arguments.length>1){Event.stop(arguments[0]);}
return false;},onLoading:function(){this.saving=true;this.removeForm();this.leaveHover();this.showSaving();},showSaving:function(){this.oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;Element.addClassName(this.element,this.options.savingClassName);this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);},removeForm:function(){if(this.form){if(this.form.parentNode)Element.remove(this.form);this.form=null;}},enterHover:function(){if(this.saving)return;this.element.style.backgroundColor=this.options.highlightcolor;if(this.effect){this.effect.cancel();}
Element.addClassName(this.element,this.options.hoverClassName)},leaveHover:function(){if(this.options.backgroundColor){this.element.style.backgroundColor=this.oldBackground;}
Element.removeClassName(this.element,this.options.hoverClassName)
if(this.saving)return;this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground});},leaveEditMode:function(){Element.removeClassName(this.element,this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this.originalBackground;Element.show(this.element);if(this.options.externalControl){Element.show(this.options.externalControl);}
this.editing=false;this.saving=false;this.oldInnerHTML=null;this.onLeaveEditMode();},onComplete:function(transport){this.leaveEditMode();this.options.onComplete.bind(this)(transport,this.element);},onEnterEditMode:function(){},onLeaveEditMode:function(){},dispose:function(){if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;}
this.leaveEditMode();Event.stopObserving(this.element,'click',this.onclickListener);Event.stopObserving(this.element,'mouseover',this.mouseoverListener);Event.stopObserving(this.element,'mouseout',this.mouseoutListener);if(this.options.externalControl){Event.stopObserving(this.options.externalControl,'click',this.onclickListener);Event.stopObserving(this.options.externalControl,'mouseover',this.mouseoverListener);Event.stopObserving(this.options.externalControl,'mouseout',this.mouseoutListener);}}};Ajax.InPlaceCollectionEditor=Class.create();Object.extend(Ajax.InPlaceCollectionEditor.prototype,Ajax.InPlaceEditor.prototype);Object.extend(Ajax.InPlaceCollectionEditor.prototype,{createEditField:function(){if(!this.cached_selectTag){var selectTag=document.createElement("select");var collection=this.options.collection||[];var optionTag;collection.each(function(e,i){optionTag=document.createElement("option");optionTag.value=(e instanceof Array)?e[0]:e;if(this.options.value==optionTag.value)optionTag.selected=true;optionTag.appendChild(document.createTextNode((e instanceof Array)?e[1]:e));selectTag.appendChild(optionTag);}.bind(this));this.cached_selectTag=selectTag;}
this.editField=this.cached_selectTag;if(this.options.loadTextURL)this.loadExternalText();this.form.appendChild(this.editField);this.options.callback=function(form,value){return"value="+encodeURIComponent(value);}}});Form.Element.DelayedObserver=Class.create();Form.Element.DelayedObserver.prototype={initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}};Browser={ie:"6",msie:"Microsoft Internet Explorer",firefox:"Firefox",checkBrowser:function(){if(navigator.appName=="Microsoft Internet Explorer"){if(parseInt(navigator.appVersion.split(" ")[3])<this.ie)
return window.confirm("Warning:browser version is low");else
return true;}
else if(navigator.userAgent.indexOf(this.firefox)!=-1)
return true
return window.confirm("Warning: your browser is not supported well")},warningLoginMessage:function(element,info){if(navigator.appName!=this.msie&&navigator.userAgent.indexOf(this.firefox)==-1){var element=$(element);var content=element.innerHTML+info;element.innerHTML=content;element.style.color="red";}},version:function(){return navigator.appName;}}
Tabs={active:function(ulId,tab){this.deactiveAll(ulId);Element.addClassName(tab,'active');},deactiveAll:function(ulId){var tabs=Element.descendants(ulId);tabs.each(function(e){Element.removeClassName(e,'active');});}}
xanadu=Class.create();Object.extend(xanadu.prototype,{initialize:function(){if($('search-main')&&$('search-main-inner')){this.smcb=Element.getStyle('search-main','background-image');this.smicb=Element.getStyle('search-main-inner','background-image');this.init_checkboxes();var div=$("country_div");if(div!=null){div.style.display="none";div.style.position="absolute";div.style.left="180px";div.style.top="65px";div.style.width="100px";div.style.zIndex="9";}}},product_summary:function(){$('product_info').removeClassName('active');$('product_summary').addClassName('active');$('detail').hide();$('summary').show();},product_info:function(){$('product_summary').removeClassName('active');$('product_info').addClassName('active');$('detail').show();$('summary').hide();},search:function(Id){Tabs.active('tabs',Id);if(Id=='simple'){new Effect.Fade('advanced_search');}else{new Effect.Appear('advanced_search');}},information:function(){if(!Element.visible('info_panel_contents')){new Effect.toggle('info_panel_contents','slide');}else{Element.hide('detail');Element.show('detail_loader');}
if($('order_details')){if(!Element.visible('order_details')){new Effect.Appear('order_details');}}},info_complete:function(){Element.hide('detail_loader');Element.show('info_panel_contents');},searchover:function(){Element.setStyle('search-main',{background:'transparent url(/images/bg-search-over.gif) no-repeat scroll 0pt 100%;'});Element.setStyle('search-main-inner',{background:'transparent url(/images/bg-search-over.gif) no-repeat scroll 0pt 0%;'});return false;},searchout:function(){Element.setStyle('search-main',{background:'transparent '+this.smcb+' no-repeat scroll 0pt 100%;'});Element.setStyle('search-main-inner',{background:'transparent '+this.smicb+' no-repeat scroll 0pt 0%;'});return false;},init_checkboxes:function(){var inputFields=document.getElementsByTagName("span");var checkboxIndex=0;for(var inputIndex=0;inputIndex<inputFields.length;inputIndex++){if(inputFields[inputIndex].className.indexOf("cbStyled")==0){var styleType="";styleType=inputFields[inputIndex].className.replace("cbStyled ","");if(styleType=="cbStyled"){styleType="";}
inputFields[inputIndex].className="checkbox"+styleType;var inputCurrent=inputFields[inputIndex].getElementsByTagName("input").item(0);if(inputCurrent.getAttribute("type")=="checkbox"){inputCurrent.className="inputhidden";if(inputCurrent.id==null)inputCurrent.setAttribute("id","StyledCheckbox"+checkboxIndex);if(navigator.appName.indexOf("Internet Explorer")>0||navigator.userAgent.indexOf("Netscape")>0){var inputHTML=inputFields[inputIndex].innerHTML;var styledHTML="<a";styledHTML+=" tabindex=\""+inputIndex+"\"";styledHTML+=" id=\"styled_cb_"+inputCurrent.id+"\"";if(inputCurrent.hasAttribute){if(inputCurrent.hasAttribute("title")){styledHTML+=" title=\""+inputCurrent.getAttribute("title")+"\"";}}
if(inputCurrent.checked){styledHTML+=" class=\"checkboxchecked"+styleType+"\"";}else{styledHTML+=" class=\"checkboxunchecked"+styleType+"\"";}
styledHTML+=" onClick=\"Xanadu.toggleCheckbox(this,'','"+inputCurrent.id+"');return false;\""
styledHTML+=" onKeyPress=\"return Xanadu.toggleCheckbox(this,event.keyCode,'"+inputCurrent.id+"');\""
if(navigator.userAgent.indexOf("Netscape")>0){styledHTML+="><img src=\"formStyle.gif\" /></a>";}else{styledHTML+="></a>";}
inputFields[inputIndex].innerHTML=inputHTML+styledHTML;inputFields[inputIndex].className="Radiobox"+styleType;}
else{var styledCheckbox=document.createElement("a");styledCheckbox.setAttribute("href","#");styledCheckbox.setAttribute("id","styled_cb_"+inputCurrent.id);if(inputCurrent.hasAttribute){if(inputCurrent.hasAttribute("title")){styledCheckbox.setAttribute("title",inputCurrent.getAttribute("title"));}}
styledCheckbox.setAttribute("onClick","Xanadu.toggleCheckbox(this,'','"+inputCurrent.id+"');return false;");styledCheckbox.setAttribute("onKeyPress","return Xanadu.toggleCheckbox(this,event.keyCode,'"+inputCurrent.id+"');");if(inputCurrent.checked){styledCheckbox.className="checkboxchecked"+styleType;}else{styledCheckbox.className="checkboxunchecked"+styleType;}
inputFields[inputIndex].appendChild(styledCheckbox);}
checkboxIndex++;}}}},toggleCheckbox:function(cbId,cbKey,ffId){if(cbKey==0||cbKey==32){var cbFF=$(ffId);var cbFFValue=cbFF.checked;if(cbId.className.indexOf("checkboxchecked")<0){var checkBoxType=cbId.className.replace("checkboxunchecked","");if(cbFF.checked!=true){clickObj(cbFF);if(cbFF.checked!=true)cbFF.checked=true;}
cbId.className="checkboxchecked"+checkBoxType;}else{var checkBoxType=cbId.className.replace("checkboxchecked","");if(cbFF.checked!=false){clickObj(cbFF);if(cbFF.checked!=false)cbFF.checked=false;}
cbId.className="checkboxunchecked"+checkBoxType;}
return false;}}});function clickObj(o){xanadu_fireEvent("click",o);}
function xanadu_fireEvent(eve,o){if(typeof(o)=="string")o=document.getElementById(o);if(document.all&&typeof(document.all)=="object")
{o.click();}
else
{var e=document.createEvent('MouseEvent');e.initEvent(eve,false,false);o.dispatchEvent(e);}}
if(typeof Effect=='undefined'){throw("lightWindow.js requires including script.aculo.us' effects.js library!");}
var lightWindow=Class.create();lightWindow.prototype={element:null,contentToFetch:null,boxOverFlow:'hidden',retroIE:null,windowType:null,animating:false,scrollX:null,scrollY:null,imageArray:[],preloadImage:null,activeGallery:null,activeImage:0,galleryDirection:null,showDataToggle:false,galleryToggle:false,showTitleToggle:true,initialize:function(options){this.options=Object.extend({resizeSpeed:11,cushion:10,dimensions:{image:{height:100,width:100},page:{height:50,width:100},inline:{height:50,width:100},media:{height:50,width:100},external:{height:50,width:100},dataHeight:40,titleHeight:25},classNames:{standard:'lWOn',action:'lWAction'},fileTypes:{page:['asp','aspx','cgi','htm','html','pl','php4','php3','php','php5','phtml','rhtml','shtml','txt','vbs','rb'],media:['aif','aiff','asf','avi','divx','m1v','m2a','m2v','m3u','mid','midi','mov','moov','movie','mp2','mp3','mpa','mpa','mpe','mpeg','mpg','mpg','mpga','pps','qt','rm','ram','swf','viv','vivo','wav'],image:['bmp','gif','jpg','png','tiff']},mimeTypes:{avi:'video/avi',aif:'audio/aiff',aiff:'audio/aiff',gif:'image/gif',bmp:'image/bmp',jpeg:'image/jpeg',m1v:'video/mpeg',m2a:'audio/mpeg',m2v:'video/mpeg',m3u:'audio/x-mpequrl',mid:'audio/x-midi',midi:'audio/x-midi',mjpg:'video/x-motion-jpeg',moov:'video/quicktime',mov:'video/quicktime',movie:'video/x-sgi-movie',mp2:'audio/mpeg',mp3:'audio/mpeg3',mpa:'audio/mpeg',mpa:'video/mpeg',mpe:'video/mpeg',mpeg:'video/mpeg',mpg:'audio/mpeg',mpg:'video/mpeg',mpga:'audio/mpeg',pdf:'application/pdf',png:'image/png',pps:'application/mspowerpoint',qt:'video/quicktime',ram:'audio/x-pn-realaudio-plugin',rm:'application/vnd.rn-realmedia',swf:'application/x-shockwave-flash',tiff:'image/tiff',viv:'video/vivo',vivo:'video/vivo',wav:'audio/wav'},loadingDialog:{message:'Loading',image:'/images/ajax-loading.gif',options:'<a onclick="javascript: lw.deactivate();">Cancel</a>',delay:3.0},authorLead:'by ',galleryTab:{name:'Galleries',height:20,visible:true},overlay:{color:'#fff',opacity:70,image:'/images/black-70.png'},formMethod:'get',hideFlash:true,showTitleBar:true},options||{})
this.duration=((11-this.options.resizeSpeed)*0.15);this.setupLinks();this.addLightWindowMarkup(false);this.setupDimensions(true);},setupLinks:function(){var links=$$('.'+this.options.classNames.standard);links.each(function(link){if(this.fileType(link.href)=='image'){if(gallery=this.getGalleryInfo(link.rel)){if(!this.imageArray[gallery[0]])this.imageArray[gallery[0]]=new Array();if(!this.imageArray[gallery[0]][gallery[1]])this.imageArray[gallery[0]][gallery[1]]=new Array();if(link.getAttribute('tip').length>0){title=link.getAttribute('tip');alert(title);}else{title=link.getAttribute('title')}
this.imageArray[gallery[0]][gallery[1]].push(new Array(link.href,title,link.getAttribute('caption'),link.getAttribute('author'),link.getAttribute('rel'),link.getAttribute('params')));}}
var url=link.getAttribute('href');if(link.href.indexOf('?')>-1)url=url.substring(0,url.indexOf('?'));container=url.substring(url.indexOf('#')+1);if($(container))$(container).style.display='none';Event.observe(link,'click',this.activate.bindAsEventListener(this,link));link.onclick=function(){return false;};}.bind(this));},initializeWindow:function(id){var link=$(id);if(this.fileType(link.href)=='image'){if(gallery=this.getGalleryInfo(link.rel)){if(!this.imageArray[gallery[0]])this.imageArray[gallery[0]]=new Array();if(!this.imageArray[gallery[0]][gallery[1]])this.imageArray[gallery[0]][gallery[1]]=new Array();this.imageArray[gallery[0]][gallery[1]].push(new Array(link.href,link.getAttribute('title'),link.getAttribute('caption'),link.getAttribute('author'),link.getAttribute('rel'),link.getAttribute('params')));}}
var url=link.getAttribute('href');if(link.href.indexOf('?')>-1)url=url.substring(0,url.indexOf('?'));container=url.substring(url.indexOf('#')+1);if($(container))$(container).style.display='none';Event.observe(link,'click',this.activate.bindAsEventListener(this,link));link.onclick=function(){return false;};},addLightWindowMarkup:function(rebuild){if(!rebuild){var overlay=document.createElement('div');overlay.setAttribute('id','overlay');if(this.checkBrowser('firefox')){overlay.style.backgroundImage='url('+this.options.overlay.image+')';overlay.style.backgroundRepeat='repeat';}else{overlay.style.backgroundColor=this.options.overlay.color;overlay.style.MozOpacity='.'+this.options.overlay.opacity;overlay.style.opacity='.'+this.options.overlay.opacity;overlay.style.filter='alpha(opacity='+this.options.overlay.opacity+')';}
var lw=document.createElement('div');lw.setAttribute('id','lightWindow');}else{var lw=$('lightWindow');}
if(this.options.showTitleBar)lw=this.addTitleBarMarkup(lw);var lwc=document.createElement('div');lwc.setAttribute('id','lightWindow-contents');var lwcc=document.createElement('div');lwcc.setAttribute('id','lightWindow-contents-container');lwc.appendChild(lwcc);var lwl=document.createElement('div');lwl.setAttribute('id','lightWindow-loading');var lwi=document.createElement('img');lwi.setAttribute('src',this.options.loadingDialog.image);lwl.appendChild(lwi);var lwld=document.createElement('span');lwld.setAttribute('id','lightWindow-loading-message');lwld.innerHTML+=this.options.loadingDialog.message;lwl.appendChild(lwld);var lwlo=document.createElement('span');lwlo.setAttribute('id','lightWindow-loading-options');lwlo.setAttribute('style','display:none;');lwlo.innerHTML+=this.options.loadingDialog.options;lwl.appendChild(lwlo);lwc.appendChild(lwl);lw.appendChild(lwc);if(!rebuild){var body=document.getElementsByTagName('body')[0];body.appendChild(overlay);body.appendChild(lw);Event.observe(overlay,'click',this.deactivate.bindAsEventListener(this),false);overlay.onclick=function(){return false;};}
this.addDataWindowMarkup();this.actions('#lightWindow-loading-options');},addTitleBarMarkup:function(lw){var lwdt=document.createElement('div');lwdt.setAttribute('id','lightWindow-title-bar');lwdt.style.visibility='hidden';var lwdtt=document.createElement('div');lwdtt.setAttribute('id','lightWindow-title-bar-title');lwdt.appendChild(lwdtt);var lwdtc=document.createElement('div');lwdtc.setAttribute('id','lightWindow-title-bar-close');var lwdtca=document.createElement('a');lwdtca.setAttribute('id','lightWindow-title-bar-close-link');lwdtca.innerHTML='close';Event.observe(lwdtca,'click',this.deactivate.bindAsEventListener(this));lwdtca.onclick=function(){return false;};lwdtc.appendChild(lwdtca);lwdt.appendChild(lwdtc);lw.appendChild(lwdt);return lw;},addDataWindowMarkup:function(){var lw=$('lightWindow');var lwd=document.createElement('div');lwd.setAttribute('id','lightWindow-data');lwd.style.display='none';var lwds=document.createElement('div');lwds.setAttribute('id','lightWindow-data-slide');if(!this.options.showTitleBar){var lwdt=document.createElement('div');lwdt.setAttribute('id','lightWindow-data-title');lwds.appendChild(lwdt);}
var lwdc=document.createElement('div');lwdc.setAttribute('id','lightWindow-data-caption');lwds.appendChild(lwdc);var lwda=document.createElement('div');lwda.setAttribute('id','lightWindow-data-author');lwds.appendChild(lwda);var lwdi=document.createElement('div');lwdi.setAttribute('id','lightWindow-data-image');lwds.appendChild(lwdi);lwd.appendChild(lwds);lw.appendChild(lwd);},addPhotoWindowMarkup:function(){var lwc=$('lightWindow-contents');var lwpc=document.createElement('div');lwpc.setAttribute('id','lightWindow-photo-container');lwpc.style.display='none';if(images=parseInt(this.getParameter('lWShowImages'))){for(var x=0;x<images;x++){lwp=document.createElement('img');lwp.setAttribute('id','lightWindow-photo-'+x);lwpc.appendChild(lwp);}}else{lwp=document.createElement('img');lwp.setAttribute('id','lightWindow-photo-0');lwpc.appendChild(lwp);}
lwps=document.createElement('img');lwps.setAttribute('id','lightWindow-photo-sizer');lwps.style.display='none';lwps.style.height='1px';lwpc.appendChild(lwps);lwc.appendChild(lwpc);},addGalleryWindowMarkup:function(){var lwpc=$('lightWindow-photo-container');var lwpg=document.createElement('div');lwpg.setAttribute('id','lightWindow-photo-galleries');lwpg.style.display='none';if(!this.options.galleryTab.visible)lwpg.style.visibility='hidden';var lwptc=document.createElement('div');lwptc.setAttribute('id','lightWindow-photo-tab-container');var lwpgt=document.createElement('a');lwpgt.setAttribute('id','lightWindow-photo-galleries-tab');lwpgt.className='up';lwpgt.innerHTML=this.options.galleryTab.name;Event.observe(lwpgt,'click',this.getGallery.bindAsEventListener(this));lwpgt.onclick=function(){return false;};lwptc.appendChild(lwpgt);lwpg.appendChild(lwptc);var lwpgl=document.createElement('div');lwpgl.setAttribute('id','lightWindow-photo-galleries-list');lwpg.appendChild(lwpgl);lwpc.appendChild(lwpg);},activate:function(e,link){link.blur();this.element=link;this.element.title=link.getAttribute('title');this.element.author=link.getAttribute('author');this.element.caption=link.getAttribute('caption');this.element.rel=link.getAttribute('rel');this.element.params=this.element.getAttribute('params');this.windowType=this.fileType(this.contentToFetch=link.href);if(this.element.caption||this.element.author)this.showDataToggle=true;if(this.options.showTitleBar&&this.element.title)this.showTitleToggle=true;else if(!this.options.showTitleBar&&this.element.title)this.showDataToggle=true;if(this.getGalleryInfo(this.element.rel))this.galleryToggle=true;this.prepareIE(true);this.toggleTroubleElements('hidden',false);this.displayLightWindow(true);this.setupDimensions(true);this.monitorKeyboard(true);this.loadInfo();},deactivate:function(){var queue=Effect.Queues.get('lightWindowAnimation').each(function(e){e.cancel();});queue=Effect.Queues.get('lightWindowAnimation-loading').each(function(e){e.cancel();});if($('lightWindow-iframe'))Element.remove($('lightWindow-iframe'));Element.remove($('lightWindow-contents'));if($('lightWindow-data'))Element.remove($('lightWindow-data'));if($('lightWindow-title-bar'))Element.remove($('lightWindow-title-bar'));this.displayLightWindow(false);this.boxOverFlow='hidden';this.prepareIE(false);this.setStatus(false);this.showDataToggle=this.galleryToggle=this.showTitleToggle=false;this.addLightWindowMarkup(true);this.setupDimensions(true);this.monitorKeyboard(false);this.toggleTroubleElements('visible',false);},actions:function(prefix){if(prefix)links=$$(prefix+' .'+this.options.classNames.action);else links=$$('.'+this.options.classNames.action);links.each(function(link){Event.observe(link,'click',this[link.rel].bindAsEventListener(this,link),false);link.onclick=function(){return false;};}.bind(this));},setStatus:function(status){this.animating=status;if(this.showTitleToggle&&!status&&$('lightWindow-title-bar')){$('lightWindow-title-bar').setStyle({visibility:'visible'});}},setupDataDimensions:function(){if($('lightWindow-contents')&&$('lightWindow-data')&&this.showDataToggle){$('lightWindow-data').setStyle({height:this.options.dimensions.dataHeight+'px',width:(parseFloat($('lightWindow-contents').style.width)+this.options.cushion*2)+'px'});$('lightWindow-data-slide').setStyle({height:this.options.dimensions.dataHeight+'px',overflow:'hidden'});}
if(this.showTitleToggle&&$('lightWindow-title-bar')){$('lightWindow-title-bar').setStyle({height:this.options.dimensions.titleHeight+'px',width:(parseFloat($('lightWindow-contents').style.width)+this.options.cushion*2)+'px'});}},setupDimensions:function(reset){if(this.showDataToggle||(this.galleryToggle&&this.options.galleryTab.visible))var adjust=this.options.dimensions.dataHeight;else var adjust=0;var originalHeight,originalWidth,titleHeight;switch(this.windowType){case'page':originalHeight=this.options.dimensions.page.height;originalWidth=this.options.dimensions.page.width;break;case'image':originalHeight=this.options.dimensions.image.height;originalWidth=this.options.dimensions.image.width;break;case'media':originalHeight=this.options.dimensions.media.height;originalWidth=this.options.dimensions.media.width;break;case'external':originalHeight=this.options.dimensions.external.height;originalWidth=this.options.dimensions.external.width;break;case'inline':originalHeight=this.options.dimensions.inline.height;originalWidth=this.options.dimensions.inline.width;break;default:originalHeight=this.options.dimensions.page.height;originalWidth=this.options.dimensions.page.width;break;}
if(this.showTitleToggle){titleHeight=this.options.dimensions.titleHeight;}else{titleHeight=0;}
if(reset){if(parseFloat($('lightWindow-contents').style.height)!=originalHeight){$('lightWindow-contents').setStyle({top:titleHeight+'px',width:(originalWidth+this.options.cushion)+'px',height:(originalHeight+this.options.cushion)+'px'});}else{$('lightWindow-contents').setStyle({top:'0px',width:(originalWidth+this.options.cushion)+'px',height:(originalHeight+this.options.cushion)+'px'});}
$('lightWindow').setStyle({padding:'0 0 0 0',width:'0px',height:'0px',margin:(-(((originalHeight+this.options.cushion*3)/2)+(adjust/2)+(titleHeight/2)))+'px 0 0 '+(-((originalWidth+this.options.cushion*3)/2))+'px'});}else{$('lightWindow').setStyle({padding:parseFloat($('lightWindow-contents').style.height)+2*this.options.cushion+titleHeight+'px 0 0 0',width:'0px',height:'0px',margin:(-(((parseFloat($('lightWindow-contents').style.height)+this.options.cushion*2)/2)+(adjust/2)+(titleHeight/2)))+'px 0 0 '+(-((parseFloat($('lightWindow-contents').style.width)+this.options.cushion*2)/2))+'px'});if(parseFloat($('lightWindow-contents').style.height)!=originalHeight){$('lightWindow-contents').setStyle({top:titleHeight+'px',left:'0px'});}}},setupOverlay:function(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}
$('overlay').style.height=pageHeight;$('overlay').style.width=pageWidth;},displayLightWindow:function(display){if(display){$('overlay').style.display=$('lightWindow').style.display=$('lightWindow-contents').style.display='block';}else{$('overlay').style.display=$('lightWindow').style.display='none';}},checkBrowser:function(type){var detect=navigator.userAgent.toLowerCase();var version=parseInt(navigator.appVersion);var place=detect.indexOf(type)+1;return place;},prepareIE:function(setup){if(this.checkBrowser('msie')){var height,overflowX,overflowY;if(setup){this.getScroll();this.setScroll(0,0);var height='100%';}else{var height='auto';}
var body=document.getElementsByTagName('body')[0];var html=document.getElementsByTagName('html')[0];html.style.height=body.style.height=height;html.style.margin=body.style.margin='0';this.setupOverlay();if(!setup)this.setScroll(this.scrollX,this.scrollY);}},toggleTroubleElements:function(visibility,content){if(content)var selects=$('lightWindow-contents').getElementsByTagName('select');else var selects=document.getElementsByTagName('select');for(var i=0;i<selects.length;i++){selects[i].style.visibility=visibility;}
if(!content){if(this.options.hideFlash){var objects=document.getElementsByTagName('object');for(i=0;i!=objects.length;i++){objects[i].style.visibility=visibility;}
var embeds=document.getElementsByTagName('embed');for(i=0;i!=embeds.length;i++){embeds[i].style.visibility=visibility;}}
var iframes=document.getElementsByTagName('iframe');for(i=0;i!=iframes.length;i++){iframes[i].style.visibility=visibility;}}},getScroll:function(){if(typeof(window.pageYOffset)=='number'){this.scrollY=window.pageYOffset;this.scrollX=window.pageXOffset;}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){this.scrollY=document.body.scrollTop;this.scrollX=document.body.scrollLeft;}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){this.scrollY=document.documentElement.scrollTop;this.scrollX=document.documentElement.scrollLeft;}},setScroll:function(x,y){document.documentElement.scrollLeft=x;document.documentElement.scrollTop=y;},getParameter:function(parameter,parameterString){if(!parameterString){if(this.element.params){var parameterString=this.element.params;}else{return;}}
var parameterValue;var parameterPair=parameterString.split(',');var compareString=parameter+'=';var compareStringLength=compareString.length;for(var i=0;i<parameterPair.length;i++){if(parameterPair[i].substr(0,compareStringLength)==compareString){var tmp=parameterPair[i].split('=');parameterValue=tmp[1];break;}}
if(!parameterValue){return false;}else{return unescape(parameterValue);}},getDomain:function(url){var leadSlashes=url.indexOf('//');var domainStart=leadSlashes+2;var withoutResource=url.substring(domainStart,url.length);var nextSlash=withoutResource.indexOf('/');var domain=withoutResource.substring(0,nextSlash);if(domain.indexOf(':')>-1){var portColon=domain.indexOf(':');domain=domain.substring(0,portColon);}
return domain;},fileType:function(url){var image=new RegExp("[^\.]\.("+this.options.fileTypes.image.join('|')+")\s*$","i");if(image.test(url))return'image';if(url.indexOf('#')>-1&&(document.domain==this.getDomain(url)))return'inline';if(url.indexOf('?')>-1)url=url.substring(0,url.indexOf('?'));var type='unknown';var page=new RegExp("[^\.]\.("+this.options.fileTypes.page.join('|')+")\s*$","i");var media=new RegExp("[^\.]\.("+this.options.fileTypes.media.join('|')+")\s*$","i");if(document.domain!=this.getDomain(url))type='external';if(media.test(url))type='media';if(type=='external'||type=='media')return type;if(page.test(url)||url.substr((url.length-1),url.length)=='/')type='page';return type;},fileExtension:function(url){if(url.indexOf('?')>-1)url=url.substring(0,url.indexOf('?'));var extenstion='';for(var x=(url.length-1);x>-1;x--){if(url.charAt(x)=='.'){return extenstion;}
extenstion=url.charAt(x)+extenstion;}},monitorKeyboard:function(status){if(status)document.onkeydown=this.eventKeypress.bind(this);else document.onkeydown='';},eventKeypress:function(e){if(e==null)var keycode=event.keyCode;else var keycode=e.which;switch(keycode){case 27:this.deactivate();break;case 13:return;default:break;}
if(this.animating||!this.galleryToggle)return;switch(String.fromCharCode(keycode).toLowerCase()){case'p':this.galleryDirection=-1;this.changeImage();break;case'n':this.galleryDirection=1;this.changeImage();break;default:break;}},showData:function(){if(this.galleryToggle)$('lightWindow-photo-galleries').style.display='block';this.setupDataDimensions();this.setupDimensions(false);if(this.showDataToggle){var showDatabox=new Effect.Parallel([new Effect.SlideDown('lightWindow-data',{sync:true,duration:this.duration+1.0,from:0.0,to:1.0}),new Effect.Appear('lightWindow-data',{sync:true,duration:1.0})],{duration:0.65,afterFinish:this.setStatus.bind(this,false),queue:{position:'end',scope:'lightWindowAnimation'}});}else{this.setStatus(false);}},insertData:function(){if(this.element.title){if(this.showTitleToggle)$('lightWindow-title-bar-title').innerHTML=this.element.title;else $('lightWindow-data-title').innerHTML=this.element.title;}
if(this.element.caption)$('lightWindow-data-caption').innerHTML=this.element.caption;if(this.element.author)$('lightWindow-data-author').innerHTML=this.options.authorLead+this.element.author;},getGalleryInfo:function(rel){if(rel.indexOf('[')>-1){return new Array(escape(rel.substring(0,rel.indexOf('['))),escape(rel.substring(rel.indexOf('[')+1,rel.indexOf(']'))));}else{return false;}},getGallery:function(){var isBadBrowser=this.checkBrowser('msie 6');if(!$('lightWindow-photo-galleries').style.height||parseInt($('lightWindow-photo-galleries').style.height)==this.options.galleryTab.height){if(isBadBrowser){var gallerySize=100;}else{var gallerySize=((parseInt($('lightWindow-contents').style.height)*0.95)/this.options.galleryTab.height)*100;}
$('lightWindow-photo-galleries-list').setStyle({height:(parseInt($('lightWindow-contents').style.height)*0.95)-this.options.galleryTab.height+'px'});$('lightWindow-photo-galleries-list').innerHTML='';var output='';for(i in this.imageArray){if(typeof this.imageArray[i]=='object'){output+='<div class="lightWindow-photo-gallery-listing"><h1>'+unescape(i)+'</h1><ul>';for(j in this.imageArray[i]){if(typeof this.imageArray[i][j]=='object'){if(this.imageArray[i][j][0][5])showImages=',lWShowImages='+this.getParameter('lWShowImages',this.imageArray[i][j][0][5]);else showImages='';output+='<li><a href="#" params="lWGallery='+escape(i)+',lWCategory='+escape(j)+''+showImages+'" class="'+this.options.classNames.action+'" rel="reloadGallery" >'+unescape(j)+'</a></li>';}}
output+='</ul></div>';}}
new Insertion.Top('lightWindow-photo-galleries-list',output);this.actions('.lightWindow-photo-gallery-listing');if(isBadBrowser){$('lightWindow-photo-galleries').setStyle({height:(parseInt($('lightWindow-contents').style.height)*0.95)+'px',bottom:'0px'});$('lightWindow-photo-galleries-tab').className='down';}else{var showGalleries=new Effect.CushionScale('lightWindow-photo-galleries',gallerySize,{duration:this.duration,afterFinish:function(){$('lightWindow-photo-galleries-list').style.overflow='auto';$('lightWindow-photo-galleries-tab').className='down';},scaleX:false,scaleY:true,scaleContent:false,scaleFromCenter:false,queue:{position:'end',scope:'lightWindowAnimation'}});}}else{if(isBadBrowser){var bottom=-(parseInt($('lightWindow-contents').style.height)*0.95)+this.options.galleryTab.height;}else{var bottom=0;}
$('lightWindow-photo-galleries').setStyle({height:this.options.galleryTab.height+'px',bottom:bottom+'px',top:''});$('lightWindow-photo-galleries-list').setStyle({overflow:'hidden'});$('lightWindow-photo-galleries-tab').className='up';}},setupGallery:function(gallery,start)
{var lwc=$('lightWindow-photo-container');if(!(images=parseInt(this.getParameter('lWShowImages'))))images=1;for(var x=0;x<this.imageArray[gallery[0]][gallery[1]].length;x++){if(this.imageArray[gallery[0]][gallery[1]][x][0]==this.contentToFetch)break;}
this.activeImage=x;this.activeGallery=gallery;var lwn=document.createElement("div");lwn.setAttribute('id','lightWindow-navigation');lwc.appendChild(lwn);if(x!=0&&this.imageArray[gallery[0]][gallery[1]][x-images]){var lwnp=document.createElement("a");lwnp.setAttribute('id','lightWindow-previous');lwnp.setAttribute('href','#');lwn.appendChild(lwnp);Event.observe(lwnp,'click',this.changeImage.bindAsEventListener(this,this.imageArray[gallery[0]][gallery[1]][x-images][0],this.imageArray[gallery[0]][gallery[1]][x-images][1],this.imageArray[gallery[0]][gallery[1]][x-images][2],this.imageArray[gallery[0]][gallery[1]][x-images][3],this.imageArray[gallery[0]][gallery[1]][x-images][4]));lwnp.onclick=function(){return false;};}
if((x+1)<this.imageArray[gallery[0]][gallery[1]].length&&this.imageArray[gallery[0]][gallery[1]][x+images]){var lwnn=document.createElement("a");lwnn.setAttribute('id','lightWindow-next');lwnn.setAttribute('href','#');lwn.appendChild(lwnn);Event.observe(lwnn,'click',this.changeImage.bindAsEventListener(this,this.imageArray[gallery[0]][gallery[1]][x+images][0],this.imageArray[gallery[0]][gallery[1]][x+images][1],this.imageArray[gallery[0]][gallery[1]][x+images][2],this.imageArray[gallery[0]][gallery[1]][x+images][3],this.imageArray[gallery[0]][gallery[1]][x+images][4]));lwnn.onclick=function(){return false;};}
if(images==1)$('lightWindow-data-image').innerHTML='Image '+(x+1)+' of '+this.imageArray[gallery[0]][gallery[1]].length;this.addGalleryWindowMarkup();},loadInfo:function(){var showLoadingOptions=new Effect.Appear('lightWindow-loading-options',{delay:this.options.loadingDialog.delay,duration:this.duration,queue:{position:'front',scope:'lightWindowAnimation-loading'}});switch(this.windowType){case'image':this.preloadImage=new Array();if(!$('lightWindow-photo-container')){this.addPhotoWindowMarkup();this.addDataWindowMarkup();this.addGalleryWindowMarkup();}
var totalWidth=0;var totalHeight=0;var gallery=this.getGalleryInfo(this.element.rel);if(images=parseInt(this.getParameter('lWShowImages'))){for(var z=0;z<this.imageArray[gallery[0]][gallery[1]].length;z++){if(this.imageArray[gallery[0]][gallery[1]][z][0]==this.contentToFetch)break;}
$('lightWindow-photo-container').style.display='none';this.loading=images-1;for(var x=0;x<images;x++){if(this.imageArray[gallery[0]][gallery[1]][x+z]){this.preloadImage[x]=new Image();this.preloadImage[x].onload=function(){if($('lightWindow-photo-container').style.display!='block'){for(var t=0;t<=x;t++){if(this.preloadImage[t]&&(this.preloadImage[t].width!=0&&this.preloadImage[t].height!=0)){totalWidth=totalWidth+this.preloadImage[t].width;totalHeight=this.preloadImage[t].height;this.preloadImage.splice(t,1);this.loading--;}}
if(this.loading<0){$('lightWindow-photo-container').setStyle({display:'block'});$('lightWindow-photo-sizer').setStyle({width:totalWidth+'px',height:totalHeight+'px'});this.processInfo();}}}.bind(this,x);this.preloadImage[x].src=$('lightWindow-photo-'+x).src=this.imageArray[gallery[0]][gallery[1]][x+z][0];}}
this.activeImage=this.activeImage+x-1;if(this.galleryToggle)this.setupGallery(this.getGalleryInfo(this.element.rel));}else{this.preloadImage[0]=new Image();this.preloadImage[0].onload=function(){totalWidth=this.preloadImage[0].width;totalHeight=this.preloadImage[0].height;$('lightWindow-photo-container').setStyle({display:'block'});$('lightWindow-photo-sizer').setStyle({width:totalWidth+'px',height:totalHeight+'px'});this.processInfo();}.bind(this);this.preloadImage[0].src=$('lightWindow-photo-0').src=this.contentToFetch;if(this.galleryToggle)this.setupGallery(this.getGalleryInfo(this.element.rel));}
break;case'media':this.processInfo();break;case'external':var lwi='<iframe id="lightWindow-iframe" name="lightWindow-iframe" height="100%" width="100%" frameborder="0" scrolling="auto"></iframe>';new Insertion.Top($('lightWindow-contents'),lwi);parent.$('lightWindow-iframe').style.visibility='hidden';this.processInfo();break;case'page':var newAJAX=new Ajax.Request(this.contentToFetch,{method:'get',parameters:'',onComplete:this.processInfo.bind(this)});break;case'inline':var content=this.contentToFetch;if(content.indexOf('?')>-1){content=content.substring(0,content.indexOf('?'));}
content=content.substring(content.indexOf('#')+1);new Insertion.Top($('lightWindow-contents-container'),$(content).innerHTML);this.toggleTroubleElements('hidden',true);this.processInfo();break;default:throw('Page Type could not be determined, please amend this lightWindow URL '+this.contentToFetch);break;}},loadFinish:function(){this.actions();this.insertData(false);switch(this.windowType){case'page':var hideLoading=new Effect.Fade('lightWindow-loading',{duration:this.duration,afterFinish:this.windowAdjust.bind(this),queue:{position:'end',scope:'lightWindowAnimation'}});break;case'image':var hideLoading=new Effect.Fade('lightWindow-loading',{duration:this.duration,afterFinish:this.windowAdjust.bind(this),queue:{position:'end',scope:'lightWindowAnimation'}});break;case'media':var lwi='<iframe id="lightWindow-iframe" name="lightWindow-iframe" height="100%" width="100%" frameborder="0" scrolling="no" ></iframe>';new Insertion.Top($('lightWindow-contents'),lwi);iframeContent='<html><head><style type="text/css">*, html, body{ margin: 0px; padding: 0px;}</style></head><body><embed type="'+this.options.mimeTypes[this.fileExtension(this.contentToFetch)]+'" src="'+this.contentToFetch+'" width="100%" height="100%" name="lightWindow-media" id="lightWindow-media" quality="high" wmode="opaque" /></body></html>';if(parent.$('lightWindow-iframe').contentWindow){parent.$('lightWindow-iframe').contentWindow.document.open();parent.$('lightWindow-iframe').contentWindow.document.write(iframeContent);parent.$('lightWindow-iframe').contentWindow.document.close();}else{parent.$('lightWindow-iframe').contentDocument.open();parent.$('lightWindow-iframe').contentDocument.write(iframeContent);parent.$('lightWindow-iframe').contentDocument.close();}
var hideLoading=new Effect.Fade('lightWindow-loading',{duration:0,afterFinish:this.windowAdjust.bind(this),queue:{position:'end',scope:'lightWindowAnimation'}});break;case'external':parent.$('lightWindow-iframe').src=this.contentToFetch;var hideLoading=new Effect.Fade('lightWindow-loading',{duration:this.duration,afterFinish:this.windowAdjust.bind(this),queue:{position:'end',scope:'lightWindowAnimation'}});break;case'inline':var hideLoading=new Effect.Fade('lightWindow-loading',{duration:this.duration,afterFinish:this.windowAdjust.bind(this),queue:{position:'end',scope:'lightWindowAnimation'}});break;default:break;}},windowAdjust:function(){if(this.windowType=='external'||this.windowType=='media'){if(this.checkBrowser('firefox')){if($('overlay').style.height=='100%'||!$('overlay').style.height)$('overlay').style.height='101%';else $('overlay').style.height='100%';}
parent.$('lightWindow-iframe').style.visibility='visible';}
$('lightWindow-contents').style.overflow=this.boxOverFlow;this.toggleTroubleElements('visible',true);if(this.showDataToggle||this.showTitleToggle){this.showData();}},processInfo:function(response){if(this.checkBrowser('msie')){var windowHeight=document.documentElement.clientHeight;var windowWidth=document.documentElement.clientWidth;}else{var windowHeight=window.innerHeight;var windowWidth=window.innerWidth;}
if(this.showDataToggle)var dataWindow=this.options.dimensions.dataHeight;else var dataWindow=0;if(this.options.showTitleBar)titleHeight=this.options.dimensions.titleHeight;else titleHeight=0;var lWcWidth=parseInt($('lightWindow-contents').style.width);var lWcHeight=parseInt($('lightWindow-contents').style.height);var availableHeight=windowHeight-dataWindow-2*this.options.cushion-titleHeight;var availableWidth=windowWidth-2*this.options.cushion;var boxWidth,boxScrollWidth,boxHeight,boxScrollHeight,scaleX,scaleY;var totalHeight=0;var totalWidth=0;switch(this.windowType){case'image':if(!(images=parseInt(this.getParameter('lWShowImages'))))images=1;boxWidth=$('lightWindow-contents').offsetWidth;boxHeight=$('lightWindow-contents').offsetHeight;if($('lightWindow-photo-0').height>availableHeight){var totalWidth=0;for(var x=0;x<images;x++){$('lightWindow-photo-'+x).height=availableHeight;totalWidth=totalWidth+$('lightWindow-photo-'+x).width;}
if(images>1)totalWidth++;boxScrollHeight=availableHeight;boxScrollWidth=totalWidth;$('lightWindow-photo-sizer').style.height=availableHeight+'px';$('lightWindow-photo-sizer').style.width=totalWidth+'px';}else{boxScrollHeight=parseInt($('lightWindow-photo-sizer').style.height);boxScrollWidth=parseInt($('lightWindow-photo-sizer').style.width);}
break;case'external':boxWidth=$('lightWindow-contents').offsetWidth;boxHeight=$('lightWindow-contents').offsetHeight;break;case'media':boxWidth=$('lightWindow-contents').offsetWidth;boxHeight=$('lightWindow-contents').offsetHeight;break;case'page':new Insertion.Top($('lightWindow-contents-container'),response.responseText);this.toggleTroubleElements('hidden',true);boxWidth=$('lightWindow-contents').offsetWidth;boxScrollWidth=$('lightWindow-contents').scrollWidth;boxHeight=$('lightWindow-contents').offsetHeight;boxScrollHeight=$('lightWindow-contents').scrollHeight;break;case'inline':boxWidth=$('lightWindow-contents').offsetWidth;boxScrollWidth=$('lightWindow-contents').scrollWidth;boxHeight=$('lightWindow-contents').offsetHeight;boxScrollHeight=$('lightWindow-contents').scrollHeight+3;break;default:break;}
var ignorelWHeight=false;if(lWWidth=this.getParameter('lWWidth')){boxScrollWidth=parseFloat(lWWidth);if(boxScrollWidth>(windowWidth*.95)){tmp=boxScrollWidth;boxScrollWidth=0.90*windowWidth;lWHeight=this.getParameter('lWHeight');boxScrollHeight=parseFloat(lWHeight);boxScrollHeight=boxScrollHeight*(boxScrollWidth/tmp)
ignorelWHeight=true;}}
if(lWHeight=this.getParameter('lWHeight')){if(!ignorelWHeight){boxScrollHeight=parseFloat(lWHeight);if(boxScrollHeight>(windowHeight*.8)){boxScrollHeight=0.8*windowHeight;}}}
if(lWOverflow=this.getParameter('lWOverflow'))this.boxOverFlow=lWOverflow;if((boxScrollHeight<(windowHeight*.8))&&this.windowType!='external'&&this.windowType!='image'){scaleY=parseFloat((boxScrollHeight/boxHeight)*100);}else if(this.windowType=='external'&&!lWHeight){scaleY=parseFloat((windowHeight/(1.2*boxHeight))*100);}else if(this.windowType=='external'&&lWHeight){scaleY=parseFloat((boxScrollHeight/(boxHeight))*100);}else if(this.windowType=='image'||this.windowType=='media'){scaleY=parseFloat(((boxScrollHeight)/boxHeight)*100);}else{if(this.windowType!='media')this.boxOverFlow='auto';$('lightWindow-contents-container').marginRight='16px';scaleY=parseFloat((windowHeight/(1.2*boxHeight))*100);}
if((boxScrollWidth<(windowWidth*.8))&&this.windowType!='external'&&this.windowType!='image'&&this.windowType!='media'){scaleX=parseFloat(((boxScrollWidth)/boxWidth)*100);}else if(this.windowType=='external'&&!lWWidth){scaleX=parseFloat((windowWidth/(1.1*boxWidth))*100);}else if(this.windowType=='external'&&lWWidth){scaleX=parseFloat((boxScrollWidth/(boxWidth))*100);}else if(this.windowType=='image'||this.windowType=='media'){scaleX=parseFloat(((boxScrollWidth)/boxWidth)*100);}else{if(this.windowType!='media')this.boxOverFlow='auto';$('lightWindow-contents-container').marginRight='16px';scaleX=parseFloat((windowWidth/(1.1*boxWidth))*100);}
this.setStatus(true);var doDelay=0;if(scaleX!=100&&lWcWidth!=boxScrollWidth){if(scaleY==100)var doX=new Effect.CushionScale('lightWindow-contents',scaleX,{duration:this.duration,scaleX:true,scaleY:false,scaleCushion:{top:this.options.cushion,left:this.options.cushion},afterFinish:this.loadFinish.bind(this),scaleFromCenter:true,scaleContent:false,queue:{position:'front',scope:'lightWindowAnimation'}});else var doX=new Effect.CushionScale('lightWindow-contents',scaleX,{duration:this.duration,scaleX:true,scaleY:false,scaleCushion:{top:this.options.cushion,left:this.options.cushion},scaleContent:false,scaleFromCenter:true,queue:{position:'front',scope:'lightWindowAnimation'}});doDelay=this.duration/2;}
if(scaleY!=100&&lWcHeight!=boxScrollHeight){var doY=new Effect.CushionScale('lightWindow-contents',scaleY,{duration:this.duration,delay:doDelay,scaleX:false,scaleY:true,scaleCushion:{top:this.options.cushion,left:this.options.cushion},afterFinish:this.loadFinish.bind(this),scaleContent:false,scaleFromCenter:true,queue:{position:'end',scope:'lightWindowAnimation'}});}
if((!doX&&!doY)||(doX&&scaleY!=100&&!doY))this.loadFinish();},reloadWindow:function(element){Element.remove($('lightWindow-contents'));if($('lightWindow-data'))Element.remove($('lightWindow-data'));this.element=element;this.contentToFetch=this.element.href;this.addLightWindowMarkup(true);this.setupDimensions(true);this.displayLightWindow(true);this.loadInfo();},reloadGallery:function(e,link){this.element.params=link.getAttribute('params');var gallery=this.getParameter('lWGallery',this.element.params);var category=this.getParameter('lWCategory',this.element.paramse);this.element.rel=this.imageArray[gallery][category][0][4];this.element.title=this.imageArray[gallery][category][0][1];this.element.caption=this.imageArray[gallery][category][0][2];this.element.author=this.imageArray[gallery][category][0][3];this.contentToFetch=this.imageArray[gallery][category][0][0];Element.remove($('lightWindow-photo-container'));if($('lightWindow-data'))Element.remove($('lightWindow-data'));if($('lightWindow-title-bar'))$('lightWindow-title-bar').style.display='none';this.galleryToggle=true;this.activeGallery[0]=gallery
this.activeGallery[1]=category;this.activeImage=0;var showLoading=Effect.Appear('lightWindow-loading',{duration:0,afterFinish:this.loadInfo.bind(this)});},changeImage:function(e){var queue=Effect.Queues.get('lightWindowAnimation').each(function(e){e.cancel();});var data=$A(arguments);data.shift();if(data!=''){this.contentToFetch=data[0];this.element.title=data[1];this.element.caption=data[2];this.element.author=data[3];this.element.rel=data[4];}else{if(!(images=parseInt(this.getParameter('lWShowImages'))))images=1;if((this.galleryDirection<0&&(this.activeImage-1*images)<0)||(this.galleryDirection>0&&(this.activeImage+1*images)>=this.imageArray[this.activeGallery[0]][this.activeGallery[1]].length))return false;this.element.title=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][this.activeImage+this.galleryDirection*images][1];this.element.caption=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][this.activeImage+this.galleryDirection*images][2];this.element.author=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][this.activeImage+this.galleryDirection*images][3];this.element.params=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][0][5];this.element.rel=unescape(this.activeGallery[0]+'['+this.activeGallery[1]+']');this.contentToFetch=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][this.activeImage+this.galleryDirection*images][0];this.activeImage=this.activeImage+this.galleryDirection*images;}
if((this.activeImage-1)>=0){var preloadNextImage=new Image();preloadNextImage.src=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][this.activeImage-1][0];}
if((this.activeImage+1)<this.imageArray[this.activeGallery[0]][this.activeGallery[1]].length){var preloadPrevImage=new Image();preloadPrevImage.src=this.imageArray[this.activeGallery[0]][this.activeGallery[1]][this.activeImage+1][0];}
Element.remove($('lightWindow-photo-container'));if($('lightWindow-data'))Element.remove($('lightWindow-data'));if($('lightWindow-title-bar'))$('lightWindow-title-bar').style.visibility='hidden';this.galleryToggle=true;$('lightWindow-loading-options').style.display='none';var showLoading=Effect.Appear('lightWindow-loading',{duration:0,afterFinish:this.loadInfo.bind(this)});},insertForm:function(e){var element=Event.element(e).parentNode;var parameterString=Form.serialize(this.getParameter('lWForm',element.getAttribute('params')));if(this.options.formMethod=='post'){var newAJAX=new Ajax.Request(element.href,{method:'post',postBody:parameterString,onComplete:this.reloadWindow.bind(this,element)});}else if(this.options.formMethod=='get'){var newAJAX=new Ajax.Request(element.href,{method:'get',parameters:parameterString,onComplete:this.reloadWindow.bind(this,element)});}}}
Event.observe(window,'load',lightWindowInit,false);var lw=null;function lightWindowInit(){}
Effect.CushionScale=Class.create();Object.extend(Object.extend(Effect.CushionScale.prototype,Effect.Base.prototype),{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent,scaleCushion:'none'},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width+'px';if(this.options.scaleY)d.height=height+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleCushion=='none'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=(this.originalTop-topd-this.options.scaleCushion.top)+'px';if(this.options.scaleX)d.left=(this.originalLeft-leftd-this.options.scaleCushion.left)+'px';}}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
this.element.setStyle(d);}});Array.prototype.inArray=function(value){var i;for(i=0;i<this.length;i++){if(this[i]===value){return true;}}
return false;};function addEvent(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false);EventCache.add(obj,type,fn);}
else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type,obj[type+fn]);EventCache.add(obj,type,fn);}
else{obj["on"+type]=obj["e"+type+fn];}}
var EventCache=function(){var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler){listEvents.push(arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];};if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};}};}();var Xanadu=null;Xanadu=new xanadu();function pageloader(){alert(Xanadu);}
var old_hightlight;var old_backgroundColor;var tmp1;var tmp2;function highLight(row){if(old_hightlight){old_hightlight.style.backgroundColor=old_backgroundColor;}
var r=document.getElementById(row);if(r){old_hightlight=r;old_backgroundColor=r.style.backgroundColor;r.style.backgroundColor="#cccccc";}}
var active_scaffold_old_hightlight;var active_scaffold_old_className;function active_scaffold_highLight(row){if(active_scaffold_old_hightlight){active_scaffold_old_hightlight.className=active_scaffold_old_className;}
var r=document.getElementById(row);if(r){active_scaffold_old_hightlight=r;active_scaffold_old_className=r.className;r.className='highlight';}}
var uesr_details_showing=false;var last_details_showing=null;function show_detail(obj){if(last_details_showing!=null&&last_details_showing!=obj)Element.hide(last_details_showing);Element.show(obj);last_details_showing=obj;uesr_details_showing=true;}
function trig_hidden_detail(obj){setTimeout(function(){hidden_detail(obj);},2000);uesr_details_showing=false;}
function hidden_detail(obj){if(uesr_details_showing==false){Element.hide(obj);}}
var FloatPane=Class.create();FloatPane.prototype={initialize:function(binding,fl,opts){this.DEBUG_ENABLED=!true;this.fl=fl;this.options=null;if(opts!=null)this.options=opts;else this.options={};this.dynamicPosition=false;this.closeDom=null;this.click_events=true;this.hide_delay_time=700;this.show_and_hide_effect=true;if(this.options.dynamicPosition!=null&&this.options.dynamicPosition==true)this.dynamicPosition=true;if(this.options.closeDomId!=null)this.closeDom=$(this.options.closeDomId);if(this.options.clickEvents!=null&&this.options.clickEvents==false)this.click_events=false;if(this.options.displayEffect!=null&&this.options.displayEffect==false)this.show_and_hide_effect=false;if(this.options.hideDelayTime!=null)this.hide_delay_time=this.options.hideDelayTime;this.inEvent=false;this.div=document.createElement("div");this.div.style.position="absolute";this.div.style.zIndex="99";this.div.id="__float_pane";document.body.appendChild(this.div);this.bindObj=null;this._bindBodyClickEvent();if(this.click_events)this._bindDivClickEvent();else this._bindDivMousemovingEvent();this.bindElement(binding,fl);this._initHide();},initStyle:function(){if(this.options.style!=null){for(attr in this.options.style){eval("this.div.style."+attr+"=this.options.style."+attr);}}},bindElement:function(object,fl){var obj=$(object);if(obj!=null){this.bindObj=obj;this._bindBindingEvent();if(fl==true){this.applyElement(this.bindObj.parentNode,true);}
this._initPosition();}else{}},appendChild:function(obj){try{this.div.appendChild(obj);}catch(e){alert("FloatPane.appendChild() execute faild:"+e);}},applyElement:function(obj,where){obj=$(obj);if(where==true){this.div.parentNode.removeChild(this.div);obj.appendChild(this.div);this._initPosition();}else{obj.parentNode.removeChild(obj);this.appendChild(obj);}},setInnerHTML:function(html){Element.update(this.div,html);},setX:function(n){this.div.style.left=n;},setY:function(n){this.div.style.top=n;},setRX:function(n){this.div.style.right=n;},setBY:function(n){this.div.style.buttom=n;},setW:function(n){this.div.style.width=n;},setH:function(n){this.div.style.height=n;},hide:function(){if(!this.show_and_hide_effect)Element.hide(this.div);else new Effect.Fade(this.div,{duration:0.3});},show:function(){if(this.dynamicPosition)this.bindElement(this.bindObj,this.fl);if(!this.show_and_hide_effect)Element.show(this.div);else new Effect.Appear(this.div,{duration:0.3,to:1.0});},isShow:function(){return this.div.style.display!="none";},_will_hide:function(){this._debug("this.inEvent:",this.inEvent);if(!this._inEvent())this.hide();},onclick:function(evt){},_stopEvent:function(evt){var e=(evt)?evt:window.event;if(window.event){e.cancelBubble=true;}else{e.stopPropagation();}},_initPosition:function(){var offsetParent=this.div.offsetParent==null?this.bindObj.offsetParent:this.div.offsetParent;var pos=this._getBindElementPositionForOffsetParent(offsetParent);if(this.options.rx!=null)this.setRX(this.options.rx+"px");else if(this.options.x!=null)this.setX(this.options.x+"px");else this.setX(pos.absoluteLeft+"px");if(this.options.by!=null)this.setBY(this.options.by+"px");if(this.options.y!=null)this.setY(this.options.y+"px");else this.setY(pos.absoluteTop+pos.offsetHeight+5+"px");this.initStyle();},_initHide:function(){Element.hide(this.div);},_getBindElementPosition:function(){var element=this.bindObj;var offsetTop=element.offsetTop;var offsetLeft=element.offsetLeft;var offsetWidth=element.offsetWidth;var offsetHeight=element.offsetHeight;return{absoluteTop:offsetTop,absoluteLeft:offsetLeft,offsetWidth:offsetWidth,offsetHeight:offsetHeight};},_getBindElementPositionForOffsetParent:function(offsetParent){var element=this.bindObj;if(element==null)
{return null;}
var offsetTop=element.offsetTop;var offsetLeft=element.offsetLeft;var offsetWidth=element.offsetWidth;var offsetHeight=element.offsetHeight;while((element=element.offsetParent)&&(element!=offsetParent))
{offsetTop+=element.offsetTop;offsetLeft+=element.offsetLeft;}
return{absoluteTop:offsetTop,absoluteLeft:offsetLeft,offsetWidth:offsetWidth,offsetHeight:offsetHeight};},_getBindElementOffsetPosition:function(){var element=this.bindObj;if(element==null)
{return null;}
var offsetTop=element.offsetTop;var offsetLeft=element.offsetLeft;var offsetWidth=element.offsetWidth;var offsetHeight=element.offsetHeight;while(element=element.offsetParent)
{offsetTop+=element.offsetTop;offsetLeft+=element.offsetLeft;}
return{absoluteTop:offsetTop,absoluteLeft:offsetLeft,offsetWidth:offsetWidth,offsetHeight:offsetHeight};},_bindBindingEvent:function(){if(this.click_events)this._bindBindingClickEvent();else this._bindBindingMousemovingEvent();if(this.closeDom!=null)
Event.observe(this.closeDom,'click',this._bindingOnClick.bindAsEventListener(this),false);},_bindBindingClickEvent:function(){Event.observe(this.bindObj,'click',this._bindingOnClick.bindAsEventListener(this),false);},_bindBindingMousemovingEvent:function(){Event.observe(this.bindObj,'mouseover',this._bindingOnMouseover.bindAsEventListener(this),false);Event.observe(this.bindObj,'mouseout',this._bindingOnMouseout.bindAsEventListener(this),false);if(this.closeDom!=null)
Event.observe(this.closeDom,'click',this._bindingOnClick.bindAsEventListener(this),false);},_bindingOnClick:function(evt){if(this.isShow()){this.hide();}else{this.show();}
this._skipEventTransfer();},_bindingOnMouseover:function(evt){this._setInEvent();if(!this.isShow()){this.show();}},_bindingOnMouseout:function(evt){this._setNotInEvent();this._hide_later();},_hide_later:function(){if(this.isShow()){setTimeout(this._will_hide.bind(this),this.hide_delay_time);}},_bindBodyClickEvent:function(){Event.observe(document.body,'click',this._bodyOnClick.bindAsEventListener(this),false);},_bodyOnClick:function(evt){if(!this._inEvent())this.hide();},_bindDivClickEvent:function(){Event.observe(this.div,'click',this._divOnClick.bindAsEventListener(this),false);},_divOnClick:function(evt){this._stopEvent(evt);},_bindDivMousemovingEvent:function(){Event.observe(this.div,'mouseover',this._divOnMouseover.bindAsEventListener(this),false);Event.observe(this.div,'mouseout',this._divOnMouseout.bindAsEventListener(this),false);},_divOnMouseover:function(evt){this._debug('div on mouseover');this._setInEvent();},_divOnMouseout:function(evt){this._debug('div on mouseout');this._setNotInEvent();this._hide_later();},_closerOnClick:function(evt){this.hide();},_inEvent:function(){return this.inEvent;},_setInEvent:function(){this.inEvent=true;this._debug("_setInEvent:",this.inEvent);},_setNotInEvent:function(){this.inEvent=false;this._debug("_setNotInEvent:",this.inEvent);},_skipEventTransfer:function(){this._setInEvent();setTimeout(this._setNotInEvent.bind(this),100);},_debug:function(){var s=null;for(var ags=0;ags<arguments.length;ags++){if(s==null)s="";s+=arguments[ags]+"\n";}
if(s!=null&&this.DEBUG_ENABLED)alert(s);},other:function(){}}
log_info=function(sender,communication)
{address=document.location.href
sender=sender
communication=communication
new Ajax.Request('/customer_event/log_info?address='+address+'&sender='+sender+'&communication='+communication,{asynchronous:true,evalScripts:true,method:'post',parameters:$H({})});}
var PriceComputer=Class.create();PriceComputer.prototype={initialize:function(argus){this.all_pepole_num=0;this.baby_num=0;this.child_num=0;this.adult_num=0;this.adult_unit_price=null;this.baby_unit_price=null;this.child_unit_price=null;this.set_arguments(argus);this.all_pepole_total_price=null;this.baby_total_price=null;this.child_total_price=null;this.adult_total_price=null;this._compute();},validate_number_format:function(str){var reg=/^[0-9]*$/;return reg.test(str);},set_arguments:function(argus){if(argus!=null){if(argus.all_pepole_num!=null)this.all_pepole_num=argus.all_pepole_num;if(argus.baby_num!=null)this.baby_num=argus.baby_num;if(argus.child_num!=null)this.child_num=argus.child_num;if(argus.adult_unit_price!=null)this.adult_unit_price=argus.adult_unit_price;if(argus.baby_unit_price!=null)this.baby_unit_price=argus.baby_unit_price;if(argus.child_unit_price!=null)this.child_unit_price=argus.child_unit_price;}},set_adult_num:function(num){this.adult_num=num;this._compute();},set_baby_num:function(num){this.baby_num=num;this._compute();},set_child_num:function(num){this.child_num=num;this._compute();},compute_baby_price:function(){return this.baby_total_price;},compute_child_price:function(){return this.child_total_price;},compute_adult_price:function(){return this.adult_total_price;},compute_total_price:function(){return this.all_pepole_total_price;},_compute:function(){this.all_pepole_num=this.adult_num+this.baby_num+this.child_num;if(this.baby_unit_price!=null)this.baby_total_price=this.baby_num*this.baby_unit_price;if(this.child_unit_price!=null)this.child_total_price=this.child_num*this.child_unit_price;if(this.adult_unit_price!=null)this.adult_total_price=this.adult_num*this.adult_unit_price;this.all_pepole_total_price=(this.baby_total_price!=null?this.baby_total_price:0)+(this.child_total_price!=null?this.child_total_price:0)+(this.adult_total_price!=null?this.adult_total_price:0);},other:function(){}}
var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)});},add:function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if((typeof containment=='object')&&(containment.constructor==Array)){containment.each(function(c){options._containers.push($(c))});}else{options._containers.push($(containment));}}
if(options.accept)options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
if(Element.isParent(drops[i].element,deepest.element))
deepest=drops[i];return deepest;},isContained:function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
return drop._containers.detect(function(c){return containmentNode==c});},isAffected:function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]));},deactivate:function(drop){if(drop.hoverclass)
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null;},activate:function(drop){if(drop.hoverclass)
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop;},show:function(point,element){if(!this.drops.length)return;var affected=[];if(this.last_active)this.deactivate(this.last_active);this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop))
affected.push(drop);});if(affected.length>0){drop=Droppables.findDeepestChild(affected);Position.within(drop.element,point[0],point[1]);if(drop.onHover)
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));Droppables.activate(drop);}},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
if(this.last_active.onDrop)
this.last_active.onDrop(element,this.last_active.element,event);},reset:function(){if(this.last_active)
this.deactivate(this.last_active);}}
var Draggables={drags:[],observers:[],register:function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress);}
this.drags.push(draggable);},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress);}},activate:function(draggable){window.focus();this.activeDraggable=draggable;},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(!this.activeDraggable)return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable)
this.activeDraggable.keyPress(event);},addObserver:function(observer){this.observers.push(observer);this._cacheObserverCallbacks();},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});this._cacheObserverCallbacks();},notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
this.observers.each(function(o){if(o[eventName])o[eventName](eventName,draggable,event);});},_cacheObserverCallbacks:function(){['onStart','onEnd','onDrag'].each(function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(function(o){return o[eventName];}).length;});}}
var Draggable=Class.create();Draggable.prototype={initialize:function(element){var options=Object.extend({handle:false,starteffect:function(element){new Effect.Opacity(element,{duration:0.2,from:1.0,to:0.7});},reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;element._revert=new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur});},endeffect:function(element){new Effect.Opacity(element,{duration:0.2,from:0.7,to:1.0});},zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false},arguments[1]||{});this.element=$(element);if(options.handle&&(typeof options.handle=='string')){var h=Element.childrenWithClassName(this.element,options.handle,true);if(h.length>0)this.handle=h[0];}
if(!this.handle)this.handle=$(options.handle);if(!this.handle)this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML)
options.scroll=$(options.scroll);Element.makePositioned(this.element);this.delta=this.currentDelta();this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this);},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this);},currentDelta:function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')]);},initDrag:function(event){if(Event.isLeftClick(event)){var src=Event.element(event);if(src.tagName&&(src.tagName=='INPUT'||src.tagName=='SELECT'||src.tagName=='OPTION'||src.tagName=='BUTTON'||src.tagName=='TEXTAREA'))return;if(this.element._revert){this.element._revert.cancel();this.element._revert=null;}
var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);Position.prepare();Droppables.show(pointer,this.element);Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height];}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft;p[1]+=this.options.scroll.scrollTop;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight);}
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed);}
if(navigator.appVersion.indexOf('AppleWebKit')>0)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.ghosting){Position.relativize(this.element);Element.remove(this._clone);this._clone=null;}
if(success)Droppables.fire(event,this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&typeof revert=='function')revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
if(this.options.zindex)
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset();},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,false);Event.stop(event);},endDrag:function(event){if(!this.dragging)return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event);},draw:function(point){var pos=Position.cumulativeOffset(this.element);var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(typeof this.options.snap=='function'){p=this.options.snap(p[0],p[1]);}else{if(this.options.snap instanceof Array){p=p.map(function(v,i){return Math.round(v/this.options.snap[i])*this.options.snap[i]}.bind(this))}else{p=p.map(function(v){return Math.round(v/this.options.snap)*this.options.snap}.bind(this))}}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
style.top=p[1]+"px";if(style.visibility=="hidden")style.visibility="";},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null;}},startScrolling:function(speed){this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0)
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);if(this.options.change)this.options.change(this);},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight}}
return{top:T,left:L,width:W,height:H};}}
var SortableObserver=Class.create();SortableObserver.prototype={initialize:function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element);},onStart:function(){this.lastValue=Sortable.serialize(this.element);},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
this.observer(this.element)}}
var Sortable={sortables:{},_findRootElement:function(element){while(element.tagName!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode;}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id];},destroy:function(element){var s=Sortable.options(element);if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id];}},create:function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:/^[^_]*_(.*)$/,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};if(options.starteffect)
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
options_for_draggable.reverteffect=options.reverteffect;else
if(options.ghosting)options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0;};if(options.endeffect)
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover}
var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass}
Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element);}
(this.findElements(element,options)||[]).each(function(e){var handle=options.handle?Element.childrenWithClassName(e,options.handle)[0]:e;options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree)e.treeNode=element;options.droppables.push(e);});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e);});}
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate));},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag);},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return;}else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}else{Sortable.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap);}else if(offset-(Element.offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
dropon.insertBefore(element,child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){if(Sortable._marker)Element.hide(Sortable._marker);},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting)return;if(!Sortable._marker){Sortable._marker=$('dropmarker')||document.createElement('DIV');Element.hide(Sortable._marker);Element.addClassName(Sortable._marker,'dropmarker');Sortable._marker.style.position='absolute';document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.style.left=offsets[0]+'px';Sortable._marker.style.top=offsets[1]+'px';if(position=='after')
if(sortable.overlap=='horizontal')
Sortable._marker.style.left=(offsets[0]+dropon.clientWidth)+'px';else
Sortable._marker.style.top=(offsets[1]+dropon.clientHeight)+'px';Element.show(Sortable._marker);},_tree:function(element,options,parent){var children=Sortable.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match)continue;var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:new Array,position:parent.children.length,container:Sortable._findChildrenElement(children[i],options.treeTag.toUpperCase())}
if(child.container)
this._tree(child.container,options,child)
parent.children.push(child);}
return parent;},_findChildrenElement:function(element,containerTag){if(element&&element.hasChildNodes)
for(var i=0;i<element.childNodes.length;++i)
if(element.childNodes[i].tagName==containerTag)
return element.childNodes[i];return null;},tree:function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:new Array,container:element,position:0}
return Sortable._tree(element,options,root);},_constructIndex:function(node){var index='';do{if(node.id)index='['+node.position+']'+index;}while((node=node.parent)!=null);return index;},sequence:function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';});},setSequence:function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each(function(n){if(n.id.match(options.format))
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n);});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}});},serialize:function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map(function(item){return[name+Sortable._constructIndex(item)+"="+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));}).flatten().join('&');}else{return Sortable.sequence(element,arguments[1]).map(function(item){return name+"[]="+encodeURIComponent(item);}).join('&');}}}
Element.isParent=function(child,element){if(!child.parentNode||child==element)return false;if(child.parentNode==element)return true;return Element.isParent(child.parentNode,element);}
Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes())return null;tagName=tagName.toUpperCase();if(only)only=[only].flatten();var elements=[];$A(element.childNodes).each(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren)elements.push(grandchildren);}});return(elements.length>0?elements.flatten():[]);}
Element.offsetSize=function(element,type){if(type=='vertical'||type=='height')
return element.offsetHeight;else
return element.offsetWidth;}
var Window=Class.create();Window.keepMultiModalWindow=false;Window.prototype={initialize:function(id){if($(id))
alert("Window "+id+" is already register is the DOM!!, be sure to use setDestroyOnClose()")
this.hasEffectLib=String.prototype.parseColor!=null;this.options=Object.extend({className:"dialog",minWidth:100,minHeight:20,resizable:true,closable:true,minimizable:true,maximizable:true,draggable:true,userData:null,showEffect:(this.hasEffectLib?Effect.Appear:Element.show),hideEffect:(this.hasEffectLib?Effect.Fade:Element.hide),showEffectOptions:{},hideEffectOptions:{},effectOptions:null,parent:document.getElementsByTagName("body").item(0),title:"&nbsp;",url:null,onload:Prototype.emptyFunction,width:200,height:300,opacity:1,recenterAuto:true,wiredDrag:false},arguments[1]||{});if(this.options.effectOptions){Object.extend(this.options.hideEffectOptions,this.options.effectOptions);Object.extend(this.options.showEffectOptions,this.options.effectOptions);}
if(this.options.hideEffect==Element.hide)
this.options.hideEffect=function(){Element.hide(this.element);if(this.destroyOnClose)this.destroy();}.bind(this)
this.element=this._createWindow(id);this.eventMouseDown=this._initDrag.bindAsEventListener(this);this.eventMouseUp=this._endDrag.bindAsEventListener(this);this.eventMouseMove=this._updateDrag.bindAsEventListener(this);this.eventOnLoad=this._getWindowBorderSize.bindAsEventListener(this);this.eventMouseDownContent=this.toFront.bindAsEventListener(this);this.eventResize=this._recenter.bindAsEventListener(this);this.topbar=$(this.element.id+"_top");this.bottombar=$(this.element.id+"_bottom");this.content=$(this.element.id+"_content");Event.observe(this.topbar,"mousedown",this.eventMouseDown);Event.observe(this.bottombar,"mousedown",this.eventMouseDown);Event.observe(this.content,"mousedown",this.eventMouseDownContent);Event.observe(window,"load",this.eventOnLoad);Event.observe(window,"resize",this.eventResize);Event.observe(window,"scroll",this.eventResize);if(this.options.draggable){this.bottombar.addClassName("bottom_draggable");this.topbar.addClassName("top_draggable");}
if(this.options.resizable){this.sizer=$(this.element.id+"_sizer");Event.observe(this.sizer,"mousedown",this.eventMouseDown);}
this.useLeft=null;this.useTop=null;if(arguments[1].left!=null){this.element.setStyle({left:parseFloat(arguments[1].left)+'px'});this.useLeft=true;}
if(arguments[1].right!=null){this.element.setStyle({right:parseFloat(arguments[1].right)+'px'});this.useLeft=false;}
if(this.useLeft==null){this.element.setStyle({left:"0px"});this.useLeft=true;}
if(arguments[1].top!=null){this.element.setStyle({top:parseFloat(arguments[1].top)+'px'});this.useTop=true;}
if(arguments[1].bottom!=null){this.element.setStyle({bottom:parseFloat(arguments[1].bottom)+'px'});this.useTop=false;}
if(this.useTop==null){this.element.setStyle({top:"0px"});this.useTop=true;}
this.storedLocation=null;this.setOpacity(this.options.opacity);if(this.options.zIndex)
this.setZIndex(this.options.zIndex)
this.destroyOnClose=false;this._getWindowBorderSize();this.width=this.options.width;this.height=this.options.height;this.visible=false;if(this.width&&this.height)
this.setSize(this.options.width,this.options.height);this.setTitle(this.options.title)
Windows.register(this);},destroy:function(){Windows.notify("onDestroy",this);Event.stopObserving(this.topbar,"mousedown",this.eventMouseDown);Event.stopObserving(this.bottombar,"mousedown",this.eventMouseDown);Event.stopObserving(this.content,"mousedown",this.eventMouseDownContent);Event.stopObserving(window,"load",this.eventOnLoad);Event.stopObserving(window,"resize",this.eventResize);Event.stopObserving(window,"scroll",this.eventResize);Event.stopObserving(this.content,"load",this.options.onload);if(this._oldParent){var content=this.getContent();var originalContent=null;for(var i=0;i<content.childNodes.length;i++){originalContent=content.childNodes[i];if(originalContent.nodeType==1)
break;originalContent=null;}
if(originalContent)
this._oldParent.appendChild(originalContent);this._oldParent=null;}
if(this.sizer)
Event.stopObserving(this.sizer,"mousedown",this.eventMouseDown);if(this.options.url)
this.content.src=null
if(this.iefix)
Element.remove(this.iefix);Element.remove(this.element);Windows.unregister(this);},setDelegate:function(delegate){this.delegate=delegate},getDelegate:function(){return this.delegate;},getContent:function(){return this.content;},setContent:function(id,autoresize,autoposition){var element=$(id);if(null==element)throw"Unable to find element '"+id+"' in DOM";this._oldParent=element.parentNode;var d=null;var p=null;if(autoresize)
d=Element.getDimensions(element);if(autoposition)
p=Position.cumulativeOffset(element);var content=this.getContent()
content.appendChild(element);element.show();if(autoresize)
this.setSize(d.width,d.height);if(autoposition)
this.setLocation(p[1]-this.heightN,p[0]-this.widthW);},setAjaxContent:function(url,options,showCentered,showModal){this.showFunction=showCentered?"showCenter":"show";this.showModal=showModal||false;if(options==null)
options={}
this.onComplete=options.onComplete;options.onComplete=this._setAjaxContent.bind(this);new Ajax.Request(url,options);},_setAjaxContent:function(originalRequest){Element.update(this.getContent(),originalRequest.responseText);if(this.onComplete)
this.onComplete(originalRequest);this[this.showFunction](this.showModal)},setCookie:function(name,expires,path,domain,secure){name=name||this.element.id;this.cookie=[name,expires,path,domain,secure];var value=WindowUtilities.getCookie(name)
if(value){var values=value.split(',');var x=values[0].split(':');var y=values[1].split(':');var w=parseFloat(values[2]),h=parseFloat(values[3]);var mini=values[4];var maxi=values[5];this.setSize(w,h);if(mini=="true")
this.doMinimize=true;else if(maxi=="true")
this.doMaximize=true;this.useLeft=x[0]=="l";this.useTop=y[0]=="t";this.element.setStyle(this.useLeft?{left:x[1]}:{right:x[1]});this.element.setStyle(this.useTop?{top:y[1]}:{bottom:y[1]});}},getId:function(){return this.element.id;},setDestroyOnClose:function(){var destroyFunc=this.destroy.bind(this);if(this.options.hideEffectOptions.afterFinish){var func=this.options.hideEffectOptions.afterFinish;this.options.hideEffectOptions.afterFinish=function(){func();destroyFunc()}}
else
this.options.hideEffectOptions.afterFinish=function(){destroyFunc()}
this.destroyOnClose=true;},_initDrag:function(event){this.pointer=[Event.pointerX(event),Event.pointerY(event)];if(this.options.wiredDrag)
this.currentDrag=this._createWiredElement();else
this.currentDrag=this.element;if(Event.element(event)==this.sizer){this.doResize=true;this.widthOrg=this.width;this.heightOrg=this.height;this.bottomOrg=parseFloat(this.element.getStyle('bottom'));this.rightOrg=parseFloat(this.element.getStyle('right'));Windows.notify("onStartResize",this);}
else{this.doResize=false;var closeButton=$(this.getId()+'_close');if(closeButton&&Position.within(closeButton,this.pointer[0],this.pointer[1])){this.currentDrag=null;return;}
this.toFront();if(!this.options.draggable)
return;Windows.notify("onStartMove",this);}
Event.observe(document,"mouseup",this.eventMouseUp,false);Event.observe(document,"mousemove",this.eventMouseMove,false);WindowUtilities.disableScreen('__invisible__','__invisible__');document.body.ondrag=function(){return false;};document.body.onselectstart=function(){return false;};this.currentDrag.show();Event.stop(event);},_updateDrag:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var dx=pointer[0]-this.pointer[0];var dy=pointer[1]-this.pointer[1];if(this.doResize){this.setSize(this.widthOrg+dx,this.heightOrg+dy);dx=this.width-this.widthOrg
dy=this.height-this.heightOrg
if(!this.useLeft)
this.currentDrag.setStyle({right:(this.rightOrg-dx)+'px'});if(!this.useTop)
this.currentDrag.setStyle({bottom:(this.bottomOrg-dy)+'px'});}
else{this.pointer=pointer;if(this.useLeft)
this.currentDrag.setStyle({left:parseFloat(this.currentDrag.getStyle('left'))+dx+'px'});else
this.currentDrag.setStyle({right:parseFloat(this.currentDrag.getStyle('right'))-dx+'px'});if(this.useTop)
this.currentDrag.setStyle({top:parseFloat(this.currentDrag.getStyle('top'))+dy+'px'});else
this.currentDrag.setStyle({bottom:parseFloat(this.currentDrag.getStyle('bottom'))-dy+'px'});}
if(this.iefix)
this._fixIEOverlapping();this._removeStoreLocation();Event.stop(event);},_endDrag:function(event){WindowUtilities.enableScreen('__invisible__');if(this.doResize)
Windows.notify("onEndResize",this);else
Windows.notify("onEndMove",this);Event.stopObserving(document,"mouseup",this.eventMouseUp,false);Event.stopObserving(document,"mousemove",this.eventMouseMove,false);Event.stop(event);this._hideWiredElement();this._saveCookie()
document.body.ondrag=null;document.body.onselectstart=null;},_createWindow:function(id){var className=this.options.className;var win=document.createElement("div");win.setAttribute('id',id);win.className="dialog";var content;if(this.options.url)
content="<iframe frameborder=\"0\" name=\""+id+"_content\"  id=\""+id+"_content\" src=\""+this.options.url+"\"> </iframe>";else
content="<div id=\""+id+"_content\" class=\""+className+"_content\"> </div>";var closeDiv=this.options.closable?"<div class='"+className+"_close' id='"+id+"_close' onclick='Windows.close(\""+id+"\", event)'> </div>":"";var minDiv=this.options.minimizable?"<div class='"+className+"_minimize' id='"+id+"_minimize' onclick='Windows.minimize(\""+id+"\", event)'> </div>":"";var maxDiv=this.options.maximizable?"<div class='"+className+"_maximize' id='"+id+"_maximize' onclick='Windows.maximize(\""+id+"\", event)'> </div>":"";var seAttributes=this.options.resizable?"class='"+className+"_sizer' id='"+id+"_sizer'":"class='"+className+"_se'";win.innerHTML=closeDiv+minDiv+maxDiv+"\
      <table id='"+id+"_row1' class=\"top table_window\">\
        <tr>\
          <td class='"+className+"_nw'>&nbsp;</td>\
          <td class='"+className+"_n'><div id='"+id+"_top' class='"+className+"_title title_window'>"+this.options.title+"</div></td>\
          <td class='"+className+"_ne'>&nbsp;</td>\
        </tr>\
      </table>\
      <table id='"+id+"_row2' class=\"mid table_window\">\
        <tr>\
          <td class='"+className+"_w'></td>\
            <td id='"+id+"_table_content' class='"+className+"_content' valign='top'>"+content+"</td>\
          <td class='"+className+"_e'></td>\
        </tr>\
      </table>\
        <table id='"+id+"_row3' class=\"bot table_window\">\
        <tr>\
          <td class='"+className+"_sw'>&nbsp;</td>\
            <td class='"+className+"_s'><div id='"+id+"_bottom' class='status_bar'>&nbsp;</div></td>\
            <td "+seAttributes+">&nbsp;</td>\
        </tr>\
      </table>\
    ";Element.hide(win);this.options.parent.insertBefore(win,this.options.parent.firstChild);Event.observe($(id+"_content"),"load",this.options.onload);return win;},setLocation:function(top,left){if(top<0)
top=0;if(left<0)
left=0
this.element.setStyle({top:top+'px'});this.element.setStyle({left:left+'px'});this.useLeft=true;this.useTop=true;},getLocation:function(){var location={};if(this.useTop)
location=Object.extend(location,{top:this.element.getStyle("top")});else
location=Object.extend(location,{bottom:this.element.getStyle("bottom")});if(this.useLeft)
location=Object.extend(location,{left:this.element.getStyle("left")});else
location=Object.extend(location,{right:this.element.getStyle("right")});return location;},getSize:function(){return{width:this.width,height:this.height};},setSize:function(width,height){width=parseFloat(width);height=parseFloat(height);if(width<this.options.minWidth)
width=this.options.minWidth;if(height<this.options.minHeight)
height=this.options.minHeight;if(this.options.maxHeight&&height>this.options.maxHeight)
height=this.options.maxHeight;if(this.options.maxWidth&&width>this.options.maxWidth)
width=this.options.maxWidth;this.width=width;this.height=height;var e=this.currentDrag?this.currentDrag:this.element;e.setStyle({width:width+this.widthW+this.widthE+"px"})
e.setStyle({height:height+this.heightN+this.heightS+"px"})
if(!this.currentDrag||this.currentDrag==this.element){var content=$(this.element.id+'_content');content.setStyle({height:height+'px'});content.setStyle({width:width+'px'});}},updateHeight:function(){this.setSize(this.width,this.content.scrollHeight)},updateWidth:function(){this.setSize(this.content.scrollWidth,this.height)},toFront:function(){if(Windows.focusedWindow==this)
return;this.setZIndex(Windows.maxZIndex+20);Windows.notify("onFocus",this);},show:function(modal){if(modal){Windows.addModalWindow(this);this.modal=true;this.setZIndex(Windows.maxZIndex+20);Windows.unsetOverflow(this);}
if(this.oldStyle)
this.getContent().setStyle({overflow:this.oldStyle});if(!this.width||!this.height){var size=WindowUtilities._computeSize(this.content.innerHTML,this.content.id,this.width,this.height,0)
if(this.height)
this.width=size+5
else
this.height=size+5}
this.setSize(this.width,this.height);if(this.centered)
this._center(this.centerTop,this.centerLeft);if(this.options.showEffect!=Element.show&&this.options.showEffectOptions)
this.options.showEffect(this.element,this.options.showEffectOptions);else
this.options.showEffect(this.element);this._checkIEOverlapping();this.visible=true;WindowUtilities.focusedWindow=this
Windows.notify("onShow",this);},showCenter:function(modal,top,left){this.centered=true;this.centerTop=top;this.centerLeft=left;this.show(modal);},isVisible:function(){return this.visible;},_center:function(top,left){var windowScroll=WindowUtilities.getWindowScroll();var pageSize=WindowUtilities.getPageSize();if(!top)
top=(pageSize.windowHeight-(this.height+this.heightN+this.heightS))/2;top+=windowScroll.top
if(!left)
left=(pageSize.windowWidth-(this.width+this.widthW+this.widthE))/2;left+=windowScroll.left
this.setLocation(top,left);this.toFront();},_recenter:function(event){if(this.modal&&this.centered){var pageSize=WindowUtilities.getPageSize();if(this.pageSize&&this.pageSize.pageWidth==pageSize.windowWidth&&this.pageSize.pageHeight==pageSize.windowHeight)
return;this.pageSize=pageSize;if($('overlay_modal')){$('overlay_modal').style.height=(pageSize.pageHeight+'px');$('overlay_modal').style.width=(pageSize.pageWidth+'px');}
if(this.options.recenterAuto)
this._center(this.centerTop,this.centerLeft);}},hide:function(){this.visible=false;if(this.modal){Windows.removeModalWindow(this);Windows.resetOverflow();}
this.oldStyle=this.getContent().getStyle('overflow')||"auto"
this.getContent().setStyle({overflow:"hidden"});this.options.hideEffect(this.element,this.options.hideEffectOptions);if(this.iefix)
this.iefix.hide();Windows.notify("onHide",this);},minimize:function(){var r2=$(this.getId()+"_row2");var dh=r2.getDimensions().height;if(r2.visible()){var h=this.element.getHeight()-dh
r2.hide()
this.element.setStyle({height:h+"px"})
if(!this.useTop){var bottom=parseFloat(this.element.getStyle('bottom'));this.element.setStyle({bottom:(bottom+dh)+'px'});}}
else{var h=this.element.getHeight()+dh;this.element.setStyle({height:h+"px"})
if(!this.useTop){var bottom=parseFloat(this.element.getStyle('bottom'));this.element.setStyle({bottom:(bottom-dh)+'px'});}
r2.show();this.toFront();}
Windows.notify("onMinimize",this);this._saveCookie()},maximize:function(){if(this.storedLocation!=null){this._restoreLocation();if(this.iefix)
this.iefix.hide();}
else{this._storeLocation();Windows.unsetOverflow(this);var windowScroll=WindowUtilities.getWindowScroll();var pageSize=WindowUtilities.getPageSize();this.element.setStyle(this.useLeft?{left:windowScroll.left}:{right:windowScroll.left});this.element.setStyle(this.useTop?{top:windowScroll.top}:{bottom:windowScroll.top});this.setSize(pageSize.windowWidth-this.widthW-this.widthE,pageSize.windowHeight-this.heightN-this.heightS)
this.toFront();if(this.iefix)
this._fixIEOverlapping();}
Windows.notify("onMaximize",this);this._saveCookie()},isMinimized:function(){var r2=$(this.getId()+"_row2");return!r2.visible();},isMaximized:function(){return(this.storedLocation!=null);},setOpacity:function(opacity){if(Element.setOpacity)
Element.setOpacity(this.element,opacity);},setZIndex:function(zindex){this.element.setStyle({zIndex:zindex});Windows.updateZindex(zindex,this);},setTitle:function(newTitle){if(!newTitle||newTitle=="")
newTitle="&nbsp;";Element.update(this.element.id+'_top',newTitle);},setStatusBar:function(element){var statusBar=$(this.getId()+"_bottom");if(typeof(element)=="object"){if(this.bottombar.firstChild)
this.bottombar.replaceChild(element,this.bottombar.firstChild);else
this.bottombar.appendChild(element);}
else
this.bottombar.innerHTML=element;},_checkIEOverlapping:function(){if(!this.iefix&&(navigator.appVersion.indexOf('MSIE')>0)&&(navigator.userAgent.indexOf('Opera')<0)&&(this.element.getStyle('position')=='absolute')){new Insertion.After(this.element.id,'<iframe id="'+this.element.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.element.id+'_iefix');}
if(this.iefix)
setTimeout(this._fixIEOverlapping.bind(this),50);},_fixIEOverlapping:function(){Position.clone(this.element,this.iefix);this.iefix.style.zIndex=this.element.style.zIndex-1;this.iefix.show();},_getWindowBorderSize:function(event){var div=this._createHiddenDiv(this.options.className+"_n")
this.heightN=Element.getDimensions(div).height;div.parentNode.removeChild(div)
var div=this._createHiddenDiv(this.options.className+"_s")
this.heightS=Element.getDimensions(div).height;div.parentNode.removeChild(div)
var div=this._createHiddenDiv(this.options.className+"_e")
this.widthE=Element.getDimensions(div).width;div.parentNode.removeChild(div)
var div=this._createHiddenDiv(this.options.className+"_w")
this.widthW=Element.getDimensions(div).width;div.parentNode.removeChild(div);if(isIE){this.heightS=$(this.getId()+"_row3").getDimensions().height;this.heightN=$(this.getId()+"_row1").getDimensions().height;}
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
this.setSize(this.width,this.height);if(this.doMaximize)
this.maximize();if(this.doMinimize)
this.minimize();},_createHiddenDiv:function(className){var objBody=document.getElementsByTagName("body").item(0);var win=document.createElement("div");win.setAttribute('id',this.element.id+"_tmp");win.className=className;win.style.display='none';win.innerHTML='';objBody.insertBefore(win,objBody.firstChild);return win;},_storeLocation:function(){if(this.storedLocation==null){this.storedLocation={useTop:this.useTop,useLeft:this.useLeft,top:this.element.getStyle('top'),bottom:this.element.getStyle('bottom'),left:this.element.getStyle('left'),right:this.element.getStyle('right'),width:this.width,height:this.height};}},_restoreLocation:function(){if(this.storedLocation!=null){this.useLeft=this.storedLocation.useLeft;this.useTop=this.storedLocation.useTop;this.element.setStyle(this.useLeft?{left:this.storedLocation.left}:{right:this.storedLocation.right});this.element.setStyle(this.useTop?{top:this.storedLocation.top}:{bottom:this.storedLocation.bottom});this.setSize(this.storedLocation.width,this.storedLocation.height);Windows.resetOverflow();this._removeStoreLocation();}},_removeStoreLocation:function(){this.storedLocation=null;},_saveCookie:function(){if(this.cookie){var value="";if(this.useLeft)
value+="l:"+(this.storedLocation?this.storedLocation.left:this.element.getStyle('left'))
else
value+="r:"+(this.storedLocation?this.storedLocation.right:this.element.getStyle('right'))
if(this.useTop)
value+=",t:"+(this.storedLocation?this.storedLocation.top:this.element.getStyle('top'))
else
value+=",b:"+(this.storedLocation?this.storedLocation.bottom:this.element.getStyle('bottom'))
value+=","+(this.storedLocation?this.storedLocation.width:this.width);value+=","+(this.storedLocation?this.storedLocation.height:this.height);value+=","+this.isMinimized();value+=","+this.isMaximized();WindowUtilities.setCookie(value,this.cookie)}},_createWiredElement:function(){if(!this.wiredElement){if(isIE)
this._getWindowBorderSize();var div=document.createElement("div");div.className="wired_frame "+this.options.className+"_wired_frame";div.style.position='absolute';document.body.insertBefore(div,document.body.firstChild);div=$(div);var dim=this.element.getDimensions();div.setStyle({width:dim.width+"px",height:dim.height+"px"});if(this.useLeft)
div.setStyle({left:this.element.getStyle('left')});else
div.setStyle({right:this.element.getStyle('right')});if(this.useTop)
div.setStyle({top:this.element.getStyle('top')});else
div.setStyle({bottom:this.element.getStyle('bottom')});this.wiredElement=div}
this.wiredElement.setStyle({zIndex:Windows.maxZIndex+30});return this.wiredElement;},_hideWiredElement:function(){if(this.currentDrag==this.element)
this.currentDrag=null;else{if(this.useLeft)
this.element.setStyle({left:this.currentDrag.getStyle('left')});else
this.element.setStyle({right:this.currentDrag.getStyle('right')});if(this.useTop)
this.element.setStyle({top:this.currentDrag.getStyle('top')});else
this.element.setStyle({bottom:this.currentDrag.getStyle('bottom')});this.currentDrag.hide();this.currentDrag=null;this.setSize(this.width,this.height);}}};var Windows={windows:[],modalWindows:[],observers:[],focusedWindow:null,maxZIndex:0,addObserver:function(observer){this.removeObserver(observer);this.observers.push(observer);},removeObserver:function(observer){this.observers=this.observers.reject(function(o){return o==observer});},notify:function(eventName,win){this.observers.each(function(o){if(o[eventName])o[eventName](eventName,win);});},getWindow:function(id){return this.windows.detect(function(d){return d.getId()==id});},getFocusedWindow:function(){return this.focusedWindow;},register:function(win){this.windows.push(win);},addModalWindow:function(win){if(this.modalWindows.length==0)
WindowUtilities.disableScreen(win.options.className,'overlay_modal',win.getId());else{if(Window.keepMultiModalWindow){$('overlay_modal').style.zIndex=Windows.maxZIndex+20;Windows.maxZIndex+=20;WindowUtilities._hideSelect(this.modalWindows.last().getId());}
else
this.modalWindows.last().element.hide();WindowUtilities._showSelect(win.getId());}
this.modalWindows.push(win);},removeModalWindow:function(win){this.modalWindows.pop();if(this.modalWindows.length==0)
WindowUtilities.enableScreen();else{if(Window.keepMultiModalWindow){this.modalWindows.last().toFront();WindowUtilities._showSelect(this.modalWindows.last().getId());}
else
this.modalWindows.last().element.show();}},register:function(win){this.windows.push(win);},unregister:function(win){this.windows=this.windows.reject(function(d){return d==win});},close:function(id,event){var win=this.getWindow(id);if(win&&win.visible){if(win.getDelegate()&&!win.getDelegate().canClose(win))
return;this.focusedWindow=this.windows.length>=2?this.windows[this.windows.length-2]:null;this.notify("onClose",win);win.hide();}
if(event)
Event.stop(event);},closeAll:function(){this.windows.each(function(w){Windows.close(w.getId())});},closeAllModalWindows:function(){WindowUtilities.enableScreen();this.modalWindows.each(function(win){win.hide()});},minimize:function(id,event){var win=this.getWindow(id)
if(win&&win.visible)
win.minimize();Event.stop(event);},maximize:function(id,event){var win=this.getWindow(id)
if(win&&win.visible)
win.maximize();Event.stop(event);},unsetOverflow:function(except){this.windows.each(function(d){d.oldOverflow=d.getContent().getStyle("overflow")||"auto";d.getContent().setStyle({overflow:"hidden"})});if(except&&except.oldOverflow)
except.getContent().setStyle({overflow:except.oldOverflow});},resetOverflow:function(){this.windows.each(function(d){if(d.oldOverflow)d.getContent().setStyle({overflow:d.oldOverflow})});},updateZindex:function(zindex,win){if(zindex>this.maxZIndex)
this.maxZIndex=zindex;this.focusedWindow=win;}};var Dialog={dialogId:null,onCompleteFunc:null,callFunc:null,parameters:null,confirm:function(content,parameters){if(typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.confirm);return}
parameters=parameters||{};var okLabel=parameters.okLabel?parameters.okLabel:"Ok";var cancelLabel=parameters.cancelLabel?parameters.cancelLabel:"Cancel";var windowParam=parameters.windowParameters||{};windowParam.className=windowParam.className||"alert";var okButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" ok_button'"
var cancelButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" cancel_button'"
var content="\
      <div class='"+windowParam.className+"_message'>"+content+"</div>\
        <div class='"+windowParam.className+"_buttons'>\
          <input type='button' value='"+okLabel+"' onclick='Dialog.okCallback()'"+okButtonClass+"/>\
          <input type='button' value='"+cancelLabel+"' onclick='Dialog.cancelCallback()' "+cancelButtonClass+"/>\
        </div>\
    ";return this._openDialog(content,parameters)},alert:function(content,parameters){if(typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.alert);return}
parameters=parameters||{};var okLabel=parameters.okLabel?parameters.okLabel:"Ok";var windowParam=parameters.windowParameters||{};windowParam.className=windowParam.className||"alert";var okButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" ok_button'"
var content="\
      <div class='"+windowParam.className+"_message'>"+content+"</div>\
        <div class='"+windowParam.className+"_buttons'>\
          <input type='button' value='"+okLabel+"' onclick='Dialog.okCallback()'"+okButtonClass+"/>\
        </div>";return this._openDialog(content,parameters)},info:function(content,parameters){if(typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.info);return}
parameters=parameters||{};parameters.windowParameters=parameters.windowParameters||{};var className=parameters.windowParameters.className||"alert";var content="<div id='modal_dialog_message' class='"+className+"_message'>"+content+"</div>";if(parameters.showProgress)
content+="<div id='modal_dialog_progress' class='"+className+"_progress'>  </div>";parameters.windowParameters.ok=null;parameters.windowParameters.cancel=null;parameters.windowParameters.className=className;return this._openDialog(content,parameters)},setInfoMessage:function(message){$('modal_dialog_message').update(message);},closeInfo:function(){Windows.close(this.dialogId);},_openDialog:function(content,parameters){if(!parameters.windowParameters.height&&!parameters.windowParameters.width){parameters.windowParameters.width=WindowUtilities.getPageSize().pageWidth/2;}
if(parameters.id)
this.dialogId=parameters.id;else{var t=new Date();this.dialogId='modal_dialog_'+t.getTime();}
if(!parameters.windowParameters.height||!parameters.windowParameters.width){var size=WindowUtilities._computeSize(content,this.dialogId,parameters.windowParameters.width,parameters.windowParameters.height)
if(parameters.windowParameters.height)
parameters.windowParameters.width=size+5
else
parameters.windowParameters.height=size+5}
var windowParam=parameters&&parameters.windowParameters?parameters.windowParameters:{};windowParam.resizable=windowParam.resizable||false;windowParam.effectOptions=windowParam.effectOptions||{duration:1};windowParam.minimizable=false;windowParam.maximizable=false;windowParam.closable=false;var win=new Window(this.dialogId,windowParam);win.getContent().innerHTML=content;win.showCenter(true,parameters.top,parameters.left);win.setDestroyOnClose();win.cancelCallback=parameters.cancel;win.okCallback=parameters.ok;return win;},_getAjaxContent:function(originalRequest){Dialog.callFunc(originalRequest.responseText,Dialog.parameters)},_runAjaxRequest:function(message,parameters,callFunc){if(message.options==null)
message.options={}
Dialog.onCompleteFunc=message.options.onComplete;Dialog.parameters=parameters;Dialog.callFunc=callFunc;message.options.onComplete=Dialog._getAjaxContent;new Ajax.Request(message.url,message.options);},okCallback:function(){var win=Windows.focusedWindow;if(!win.okCallback||win.okCallback(win)){$$("#"+win.getId()+" input").each(function(element){element.onclick=null;})
win.hide();}},cancelCallback:function(){var win=Windows.focusedWindow;$$("#"+win.getId()+" input").each(function(element){element.onclick=null})
win.hide();if(win.cancelCallback)
win.cancelCallback(win);}}
var isIE=navigator.appVersion.match(/MSIE/)=="MSIE";var WindowUtilities={getWindowScroll:function(){var w=window;var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight}}
return{top:T,left:L,width:W,height:H};},getPageSize:function(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
var pageHeight,pageWidth;if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}
return{pageWidth:pageWidth,pageHeight:pageHeight,windowWidth:windowWidth,windowHeight:windowHeight};},disableScreen:function(className,overlayId,contentId){WindowUtilities.initLightbox(overlayId,className);var objBody=document.getElementsByTagName("body").item(0);var objOverlay=$(overlayId);var pageSize=WindowUtilities.getPageSize();if(contentId&&isIE){WindowUtilities._hideSelect();WindowUtilities._showSelect(contentId);}
objOverlay.style.height=(pageSize.pageHeight+'px');objOverlay.style.width=(pageSize.windowWidth+'px');objOverlay.style.display='block';},enableScreen:function(id){id=id||'overlay_modal';var objOverlay=$(id);if(objOverlay){objOverlay.style.display='none';if(id!="__invisible__")
WindowUtilities._showSelect();objOverlay.parentNode.removeChild(objOverlay);}},_hideSelect:function(id){if(isIE){id=id==null?"":"#"+id+" ";$$(id+'select').each(function(element){if(!WindowUtilities.isDefined(element.oldVisibility)){element.oldVisibility=element.style.visibility?element.style.visibility:"visible";element.style.visibility="hidden";}});}},_showSelect:function(id){if(isIE){id=id==null?"":"#"+id+" ";$$(id+'select').each(function(element){if(WindowUtilities.isDefined(element.oldVisibility)){try{element.style.visibility=element.oldVisibility;}catch(e){element.style.visibility="visible";}
element.oldVisibility=null;}
else{if(element.style.visibility)
element.style.visibility="visible";}});}},isDefined:function(object){return typeof(object)!="undefined"&&object!=null;},initLightbox:function(id,className){if($(id)){Element.setStyle(id,{zIndex:Windows.maxZIndex+10});}
else{var objBody=document.getElementsByTagName("body").item(0);var objOverlay=document.createElement("div");objOverlay.setAttribute('id',id);objOverlay.className="overlay_"+className
objOverlay.style.display='none';objOverlay.style.position='absolute';objOverlay.style.top='0';objOverlay.style.left='0';objOverlay.style.zIndex=Windows.maxZIndex+10;objOverlay.style.width='100%';objBody.insertBefore(objOverlay,objBody.firstChild);}},setCookie:function(value,parameters){document.cookie=parameters[0]+"="+escape(value)+
((parameters[1])?"; expires="+parameters[1].toGMTString():"")+
((parameters[2])?"; path="+parameters[2]:"")+
((parameters[3])?"; domain="+parameters[3]:"")+
((parameters[4])?"; secure":"");},getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null;}else{begin+=2;}
var end=document.cookie.indexOf(";",begin);if(end==-1){end=dc.length;}
return unescape(dc.substring(begin+prefix.length,end));},_computeSize:function(content,id,width,height,margin){if(margin==null)
margin=5;var objBody=document.getElementsByTagName("body").item(0);var tmpObj=document.createElement("div");tmpObj.setAttribute('id',id);if(height)
tmpObj.style.height=height+"px"
else
tmpObj.style.width=width+"px"
tmpObj.style.position='absolute';tmpObj.style.top='0';tmpObj.style.left='0';tmpObj.style.display='none';tmpObj.innerHTML=content;objBody.insertBefore(tmpObj,objBody.firstChild);var size;if(height)
size=$(id).getDimensions().width+margin;else
size=$(id).getDimensions().height+margin;objBody.removeChild(tmpObj);return size;}}
var album={startup:function(){new PeriodicalExecuter(album.cycle,5)},cycle:function(){new Effect.Fade('image',{duration:1,fps:50,afterFinish:function(){new Ajax.Updater('image','/album/next',{asynchronous:true,onSuccess:function(){new Effect.Appear('image',{duration:1,fps:50,queue:'end'})}})}})}}
sfHover=function(){var sfEls=document.getElementById("gallery").getElementsByTagName("LI");for(var i=0;i<sfEls.length;i++){sfEls[i].onmouseover=function(){this.className+=" sfhover";}
sfEls[i].onmouseout=function(){this.className=this.className.replace(new RegExp(" sfhover\\b"),"");}}}
function LiveTree(id,options){this.id=id;if(options==null){options={};}
this.dataUrl=options.dataUrl;this.cssClass=options.cssClass;this.cssStyle=options.cssStyle;this.expandRootItem=(options.expandRootItem==null?true:options.expandRootItem);this.hideRootItem=(options.hideRootItem==null?false:options.hideRootItem);this.rootItemId=options.rootItemId;this.expandItemOnClick=(options.expandItemOnClick==null?true:options.expandItemOnClick);this.initialData=options.initialData;this.scroll=(options.scroll==null?true:options.scroll);this.preloadItems=(options.preloadItems==null?true:options.preloadItems);this.collapsedItemIconHtml=options.collapsedItemIconHtml;this.expandedItemIconHtml=options.expandedItemIconHtml;this.leafIconHtml=options.leafIconHtml;this.loadingIconHtml=options.loadingIconHtml;this.loadingTreeHtml=options.loadingTreeHtml;this.searchingHtml=options.searchingHtml;this.loadingItemHtml=options.loadingItemHtml;this.onClickItem=options.onClickItem;this.allowClickBranch=(options.allowClickBranch==null?true:options.allowClickBranch);this.allowClickLeaf=(options.allowClickLeaf==null?true:options.allowClickLeaf);this.onExpandItem=options.onExpandItem;this.onCollapseItem=options.onCollapseItem;this.onLoadItem=options.onLoadItem;this._root={};this._itemsIndex={};this._activeItemId=null;this._scrollToItemIdOnLoad=null;this._scrollToItemMustBeExpanded=false;this._searchCount=0;this._preloadCount=0;this._updateItemDisplay=null;}
LiveTree.prototype._markItemForUpdateDisplay=function(item){var tree=this;if(tree._updateItemDisplay==null){tree._updateItemDisplay=item;}else if(tree._updateItemDisplay!=item){tree._updateItemDisplay=tree._root;}}
LiveTree.prototype._getClass=function(suffix){if(suffix!=""){suffix="_"+suffix;}
result='live_tree'+suffix;if(this.cssClass!=null){result+=' '+this.cssClass+suffix;}
return result;}
LiveTree.prototype._escapeId=function(itemId){return escape(itemId);}
LiveTree.prototype._getCollapsedItemIconHtml=function(item){if(this.collapsedItemIconHtml!=null){return this.collapsedItemIconHtml;}else{return'<img src="/images/live_tree_transparent_pixel.gif" alt="&gt;" id="'+this.id+'_item_icon_'+this._escapeId(item.id)+'" class="'+this._getClass("item_icon")+' '+this._getClass("branch_collapsed_icon")+'" />';}}
LiveTree.prototype._getExpandedItemIconHtml=function(item){if(this.expandedItemIconHtml!=null){return this.expandedItemIconHtml;}else{return'<img src="/images/live_tree_transparent_pixel.gif" alt="v" id="'+this.id+'_item_icon_'+this._escapeId(item.id)+'" class="'+this._getClass("item_icon")+' '+this._getClass("branch_expanded_icon")+'" />';}}
LiveTree.prototype._getLeafIconHtml=function(item){if(this.leafIconHtml!=null){return this.leafIconHtml;}else{return'<img src="/images/live_tree_transparent_pixel.gif" alt=" " id="'+this.id+'_item_icon_'+this._escapeId(item.id)+'" class="'+this._getClass("item_icon")+' '+this._getClass("leaf_icon")+'" />';}}
LiveTree.prototype._getLoadingIconHtml=function(){if(this.loadingIconHtml!=null){return this.loadingIconHtml;}else{return'<img src="/images/live_tree_loading_spinner.gif" alt="[loading]" class="'+this._getClass("loading_icon")+'" />';}}
LiveTree.prototype._getLoadingTreeHtml=function(){if(this.loadingTreeHtml!=null){return this.loadingTreeHtml;}else{return'<span class="'+this._getClass("loading_tree")+'">'+this._getLoadingIconHtml()+'Loading tree data&hellip;</span>';}}
LiveTree.prototype._getSearchingHtml=function(){if(this.searchingHtml!=null){return this.searchingHtml;}else{return'<div class="'+this._getClass("searching")+'">'+this._getLoadingIconHtml()+'Searching for item&hellip;</div>';}}
LiveTree.prototype._getLoadingItemHtml=function(){if(this.loadingItemHtml!=null){return this.loadingItemHtml;}else{return this._getLoadingIconHtml()+'Loading&hellip;';}}
LiveTree.prototype._startPreloads=function(item){var tree=this;if(!tree.preloadItems||tree._preloadCount>0){return false;}
if(item==null){item=tree._root;}
if(!item.isExpanded||item.isLoading){return false;}
var tailBranch=true;for(var i=0;i<item.children.length;i++){var child=item.children[i];if(!child.isLeaf&&(child.isLoaded||child.isLoading)){tailBranch=false;}}
var doLoad=false;if(tailBranch){for(var i=0;i<item.children.length;i++){var child=item.children[i];if(!child.isLeaf){if(!child.isLoaded&&!child.isLoading){doLoad=true;child.isLoading=true;child.isLoadingBackground=true;}}}}
var didLoad=false;if(doLoad){tree._preloadCount++;if(item==tree._root){tree._requestItem(tree._root.children[0].id,2,tree._onPreloadItemReceived.bind(tree));}else{tree._requestItem(item.id,3,tree._onPreloadItemReceived.bind(tree));}
if(LiveTree.DEV_SHOW_PRELOADS){tree._markItemForUpdateDisplay(item);}
didLoad=true;}else{for(var i=0;i<item.children.length;i++){var child=item.children[i];if(!child.isLeaf&&child.isLoaded){if(tree._startPreloads(child)){didLoad=true;}}}}
return didLoad;}
LiveTree.prototype._stopLoading=function(){var tree=this;function recurse(item){if(item.isLoading){item.isLoading=false;item.isExpanded=false;}
if(item.children!=null){for(var i=0;i<item.children.length;i++){recurse(item.children[i]);}}}
recurse(tree._root);tree._markItemForUpdateDisplay(tree._root);tree._searchCount=0;tree._preloadCount=0;tree._updateDisplay();}
LiveTree.prototype._onItemFailure=function(request){alert("LiveTree error: could not get data from server: HTTP error: "+request.status);this._stopLoading();}
LiveTree.prototype._requestItem=function(itemId,depth,onItemCallback,options){var tree=this;if(options==null){options={};}
var url=tree.dataUrl;var requestOptions=new Object();var delim="?";if(itemId!=null){requestOptions.itemId=itemId;url+=delim+"item_id="+escape(itemId);delim="&";}
if(depth!=null){requestOptions.depth=depth;url+=delim+"depth="+depth;delim="&";}
if(options.includeParents){requestOptions.includeParents=true;requestOptions.rootItemId=tree.rootItemId;url+=delim+"include_parents=1&root_item_id="+escape(tree.rootItemId);tree._searchCount++;}
if(options.initialRequest){requestOptions.initialRequest=true;}
new Ajax.Request(url,{onSuccess:function(request){tree._onItemResponse(request,onItemCallback,requestOptions)},onFailure:tree._onItemFailure.bind(tree),evalScripts:true,asynchronous:true,method:"get"});return true;}
LiveTree.prototype._onExpandItemReceived=function(item,requestOptions){var tree=this;item.isLoading=false;tree._markItemForUpdateDisplay(item);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype._onPreloadItemReceived=function(item,requestOptions){var tree=this;if(tree._preloadCount<=0){return;}
tree._preloadCount--;item.isLoading=false;for(var i=0;i<item.children.length;i++){item.children[i].isLoading=false;}
tree._startPreloads();tree._markItemForUpdateDisplay(item);tree._updateDisplay();}
LiveTree.prototype._onClickExpand=function(item){var tree=this;var expanded=tree._expandItem(item);tree._updateDisplay();if(expanded){tree.scrollToItem(item.id);if(item.isLoading){tree._scrollToItemIdOnLoad=item.id;tree._scrollToItemMustBeExpanded=true;}
if(tree.onExpandItem!=null){tree.onExpandItem(item);}}}
LiveTree.prototype._onClickCollapse=function(item){var tree=this;if(!item.isExpanded){return;}
item.isExpanded=false;tree._markItemForUpdateDisplay(item);tree._updateDisplay();if(tree.onCollapseItem!=null){tree.onCollapseItem(item);}}
LiveTree.prototype._onClickItem=function(item){var tree=this;if(tree.expandItemOnClick&&!item.isExpanded&&!item.isLeaf){tree._onClickExpand(item);}
if(tree.onClickItem!=null&&((tree.allowClickLeaf&&item.isLeaf)||(tree.allowClickBranch&&!item.isLeaf))){tree.onClickItem(item);}
tree._updateDisplay();}
LiveTree.prototype._getItem=function(itemId){return this._itemsIndex[itemId];}
LiveTree.prototype._getItemElementId=function(itemId){return this.id+"_item_"+this._escapeId(itemId);}
LiveTree.prototype._getItemElement=function(itemId){return $(this._getItemElementId(itemId));}
LiveTree.prototype._isRootItem=function(item){var tree=this;return item==tree._root||(tree.hideRootItem&&item==tree._root.children[0]);}
LiveTree.prototype._renderItemHeading=function(item){var tree=this;var html='';if(!item.isLeaf){html+='<a href="#" id="'+tree.id+'_branch_expand_collapse_link_'+tree._escapeId(item.id)+'" class="'+this._getClass("branch_expand_collapse_link")+'">';if(item.isExpanded){html+=tree._getExpandedItemIconHtml(item);}else{html+=tree._getCollapsedItemIconHtml(item);}
html+='</a>';}else{html+=tree._getLeafIconHtml(item);}
var itemLinkExists=false;var extraNameClass="";if(item.id==tree._activeItemId){extraNameClass=" "+this._getClass("active_item_name");}
var name_html='<span id="'+tree.id+'_item_name_'+tree._escapeId(item.id)+'" class="'+this._getClass("item_name")+extraNameClass+'">'+item.name+'</span>';if(((tree.onClickItem!=null&&((tree.allowClickLeaf&&item.isLeaf)||(tree.allowClickBranch&&!item.isLeaf)))||(tree.expandItemOnClick&&!item.isLeaf&&!item.isExpanded))&&!item.isLoadingDisplay){name_html='<a href="#" id="'+tree.id+'_item_link_'+tree._escapeId(item.id)+'" class="'+this._getClass("item_link")+'">'+name_html+'</a>';itemLinkExists=true;}
if(LiveTree.DEV_SHOW_ITEM_IDS){name_html="("+item.id+") "+name_html;}
html+=name_html;if(LiveTree.DEV_SHOW_PRELOADS){if(item.isLoading&&item.isLoadingBackground){html+=" "+tree._getLoadingIconHtml();}}
$(tree.id+"_item_heading_"+tree._escapeId(item.id)).innerHTML=html;if(!item.isLeaf){if(item.isExpanded){$(tree.id+'_branch_expand_collapse_link_'+tree._escapeId(item.id)).onclick=function(){tree._onClickCollapse(item);return false}}else{$(tree.id+'_branch_expand_collapse_link_'+tree._escapeId(item.id)).onclick=function(){tree._onClickExpand(item);return false}}}
if(itemLinkExists){$(tree.id+'_item_link_'+tree._escapeId(item.id)).onclick=function(){tree._onClickItem(item);return false}}}
LiveTree.prototype._hideItem=function(child){var tree=this;var elem=tree._getItemElement(child.id);if(elem){$(tree.id).removeChild(elem);if(child.isLoaded||(child.isLoading&&!child.isLoadingBackground)){tree._hideItemChildren(child);}}}
LiveTree.prototype._hideItemChildren=function(item){var tree=this;tree._hideItem(tree._getLoadingDisplayChild(item));if(!item.isLoading){for(var i=0;i<item.children.length;i++){tree._hideItem(item.children[i]);}}
item.childrenVisible=false;}
LiveTree.prototype._updateItemChildren=function(item,afterElem,indentLevel,containerElem){var tree=this;function doUpdateChild(child){var elem=tree._getItemElement(child.id);if(elem==null){var html="";html+='<div id="'+tree.id+'_item_'+tree._escapeId(child.id)+'" class="'+tree._getClass("item")+'">';for(var j=0;j<indentLevel;j++){html+='<div class="'+tree._getClass("item_indent")+'">';}
html+='<span id="'+tree.id+'_item_heading_'+tree._escapeId(child.id)+'" class="'+tree._getClass("item_heading")+'"></span>';for(var j=0;j<indentLevel;j++){html+='</div>';}
html+='</div>';new Insertion.After(afterElem,html);elem=tree._getItemElement(child.id);}
tree._renderItemHeading(child);afterElem=elem;if(child.isLoaded||(child.isLoading&&!child.isLoadingBackground)){afterElem=tree._updateItemChildren(child,afterElem,indentLevel+1,containerElem);}}
if(!item.isExpanded){tree._hideItemChildren(item);}else{if(item.isLoaded){tree._hideItem(tree._getLoadingDisplayChild(item));for(var i=0;i<item.children.length;i++){doUpdateChild(item.children[i]);}}else{doUpdateChild(tree._getLoadingDisplayChild(item));}
item.childrenVisible=true;}
return afterElem;}
LiveTree.prototype._getLoadingDisplayChild=function(item){var tree=this;var loadingChild={id:"___LIVE_TREE_LOADING_"+item.id+"___",name:tree._getLoadingItemHtml(),children:[],isLoadingDisplay:true};tree._setItemDerivedAttributes(loadingChild);return loadingChild;}
LiveTree.prototype._updateDisplay=function(){var tree=this;if(tree._searchCount>0){Element.show(tree.id+"_searching");}else{Element.hide(tree.id+"_searching");}
var updateItem=tree._updateItemDisplay;if(updateItem!=null){tree._updateItemDisplay=null;if(tree._isRootItem(updateItem)){if(tree.hideRootItem){updateItem=tree._root.children[0];}
tree._updateItemChildren(updateItem,$(tree.id+"_root"),0,$(tree.id));}else{tree._renderItemHeading(updateItem);var indentLevel=0;var parentItem=updateItem;while(!tree._isRootItem(parentItem)){indentLevel++;parentItem=parentItem.parent;}
if(updateItem.isLoaded||(updateItem.isLoading&&!updateItem.isLoadingBackground)){tree._updateItemChildren(updateItem,tree._getItemElement(updateItem.id),indentLevel,$(tree.id));}}}
tree._checkScrollOnLoad();}
LiveTree.prototype._checkScrollOnLoad=function(){var tree=this;if(tree._scrollToItemIdOnLoad==null){return;}
var item=tree._itemsIndex[tree._scrollToItemIdOnLoad];if(item==null){return;}
if(tree._scrollToItemMustBeExpanded){if(item.isLoaded){if(item.isExpanded){tree.scrollToItem(item.id);}
tree._scrollToItemIdOnLoad=null;}}else{tree.scrollToItem(item.id);tree._scrollToItemIdOnLoad=null;}}
LiveTree.prototype._getElementPosition=function(destinationLink){var destx=destinationLink.offsetLeft;var desty=destinationLink.offsetTop;var thisNode=destinationLink;while(thisNode.offsetParent&&(thisNode.offsetParent!=document.body)){thisNode=thisNode.offsetParent;destx+=thisNode.offsetLeft;desty+=thisNode.offsetTop;}
return{x:destx,y:desty}}
LiveTree.prototype._scrollTo=function(top){var tree=this;if(!tree.scroll){return;}
var containerElem=$(tree.id);containerElem.scrollTop=top;}
LiveTree.prototype.scrollToItem=function(itemId){var tree=this;if(!tree.scroll){return;}
var itemElem=tree._getItemElement(itemId);if(itemElem==null){return;}
var containerElem=$(tree.id);var itemPos=tree._getElementPosition(itemElem);var containerPos=tree._getElementPosition(containerElem);var itemTop=itemPos.y-containerPos.y;var containerHeight=containerElem.offsetHeight-35;if(itemTop+itemElem.offsetHeight>containerElem.scrollTop+containerHeight||itemTop<containerElem.scrollTop){if(itemElem.offsetHeight>containerHeight){tree._scrollTo(itemTop);}else{if(itemTop<containerElem.scrollTop+containerHeight){tree._scrollTo(itemTop+itemElem.offsetHeight-containerHeight);}else{tree._scrollTo(itemTop-containerHeight/2+itemElem.offsetHeight/2);}}}
tree._scrollToItemOnLoad=null;}
LiveTree.prototype._expandItem=function(item){var tree=this;var didExpand=false;var parent=item.parent;while(parent!=tree._root&&parent!=null){if(!parent.isExpanded){parent.isExpanded=true;tree._markItemForUpdateDisplay(parent);didExpand=true;}
parent=parent.parent;}
var needToLoad=false;if(!item.isExpanded){needToLoad=(item.children==null&&!item.isLoading);if(needToLoad){item.isLoading=true;}
item.isLoadingBackground=false;item.isExpanded=true;tree._markItemForUpdateDisplay(item);didExpand=true;}
if(needToLoad){tree._requestItem(item.id,2,tree._onExpandItemReceived.bind(tree));}
tree._startPreloads();return didExpand;}
LiveTree.prototype._onExpandItemParentsReceived=function(item,requestOptions){var tree=this;var requestedItem=tree._getItem(requestOptions.itemId);this._expandItem(requestedItem);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype.expandItem=function(itemId){var tree=this;var item=tree._getItem(itemId);var search=false;if(item==null){tree._requestItem(itemId,2,tree._onExpandItemParentsReceived.bind(tree),{includeParents:true});search=true;}else{this._expandItem(this._itemsIndex[itemId]);}
tree._updateDisplay();if(search){tree._scrollTo(0);tree._scrollToItemIdOnLoad=itemId;tree._scrollToItemMustBeExpanded=false;}else{tree.scrollToItem(itemId);}}
LiveTree.prototype._onExpandParentsOfItemReceived=function(item,requestOptions){var tree=this;var requestedItem=tree._getItem(requestOptions.itemId);tree._expandItem(requestedItem.parent);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype.expandParentsOfItem=function(itemId){var tree=this;var item=tree._getItem(itemId);var search=false;if(item==null){tree._requestItem(itemId,1,tree._onExpandParentsOfItemReceived.bind(tree),{includeParents:true});search=true;}else{tree._expandItem(item.parent);}
tree._updateDisplay();if(search){tree._scrollTo(0);tree._scrollToItemIdOnLoad=itemId;tree._scrollToItemMustBeExpanded=false;}else{tree.scrollToItem(itemId);}}
LiveTree.prototype.activateItem=function(itemId){var tree=this;var oldElem=$(tree.id+'_item_name_'+tree._escapeId(tree._activeItemId));if(oldElem!=null){oldElem.className=tree._getClass("item_name");}
var elem=$(tree.id+'_item_name_'+tree._escapeId(itemId));if(elem!=null){elem.className=tree._getClass("item_name")+" "+tree._getClass("active_item_name");}
tree._activeItemId=itemId;tree.scrollToItem(itemId);}
LiveTree.prototype.getHtml=function(){var tree=this;var html='';html+='<div id="'+tree.id+'" class="'+tree._getClass("")+'"';if(tree.cssStyle!=null){html+=' style="'+tree.cssStyle+'"';}
html+='>';html+='<div id="'+tree.id+'_searching" style="display:none">'+tree._getSearchingHtml()+'</div>';html+='<div id="'+tree.id+'_loading">'+tree._getLoadingTreeHtml()+'</div>';html+='<div id="'+tree.id+'_root"></div>';html+='</div>';return html;}
LiveTree.prototype._setItemDerivedAttributes=function(child){child.isLeaf=!(child.children==null||child.children.length>0);child.isLoaded=child.children!=null;}
LiveTree.prototype._setupNewItemChildren=function(item){var tree=this;if(item.children!=null){for(var i=0;i<item.children.length;i++){var child=item.children[i];tree._setItemDerivedAttributes(child);child.parent=item;tree._itemsIndex[child.id]=child;tree._setupNewItemChildren(child);}}}
LiveTree.prototype._addNewItems=function(newItem){var tree=this;var oldItem=tree._getItem(newItem.id);if(newItem.children!=null&&oldItem!=null){if(!oldItem.isLoaded){oldItem.children=newItem.children;tree._setupNewItemChildren(oldItem);oldItem.isLoaded=true;}else{for(var i=0;i<newItem.children.length;i++){tree._addNewItems(newItem.children[i]);}}}
return oldItem;}
LiveTree.prototype._onItemResponse=function(request,onItemCallback,requestOptions){var tree=this;if(requestOptions.includeParents&&tree._searchCount>0){tree._searchCount--;}
var item;try{eval("item = "+request.responseText);}catch(e){alert("LiveTree error: cannot parse data from server: "+e);tree._stopLoading();return;}
if(requestOptions.initialRequest){tree._handleInitialItem(item);}else{var oldItem=tree._addNewItems(item);if(oldItem==null){alert("LiveTree error: cannot add received item to tree");tree._stopLoading();return;}}
onItemCallback(oldItem,requestOptions);}
LiveTree.prototype._onInitialItemReceived=function(){var tree=this;this.rootItemId=tree._root.children[0].id;Element.hide($(tree.id+"_loading"));if(tree.hideRootItem||tree.expandRootItem){tree._expandItem(tree._root.children[0]);}
tree._root.isExpanded=true;tree._markItemForUpdateDisplay(tree._root);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype._handleInitialItem=function(item){var tree=this;tree._root.children=[item];tree._root.isLoaded=true;tree._setupNewItemChildren(tree._root);}
LiveTree.prototype.start=function(){var tree=this;if(tree.initialData!=null){tree._handleInitialItem(tree.initialData);tree._onInitialItemReceived(tree.initialData);}else{tree._requestItem(tree.rootItemId,(tree.expandRootItem||tree.hideRootItem)?2:1,tree._onInitialItemReceived.bind(tree),{initialRequest:true});}}
LiveTree.prototype.render=function(){var tree=this;document.write(tree.getHtml());tree.start();}
function change_back_color(obj,year,month,day){var ex_argus="";var len=arguments.length;for(var arg_index=4;arg_index<len;arg_index++){ex_argus+=",arguments["+arg_index+"]";}
if(obj.className=='normalDay'){eval("_do_callback('canlandar_select_callback','selectedDay',obj,year,month,day"+ex_argus+");");}else if(obj.className=='specialDay'||obj.className=='selectedDay'){eval("_do_callback('canlandar_unselected_callback','normalDay',obj,year,month,day"+ex_argus+");");}else if(obj.className=='specialDay weekendDay'||obj.className=='selectedDay weekendDay'){eval("_do_callback('canlandar_unselected_callback','normalDay weekendDay',obj,year,month,day"+ex_argus+");");}else if(obj.className=='normalDay weekendDay'){eval("_do_callback('canlandar_select_callback','selectedDay weekendDay',obj,year,month,day"+ex_argus+");");}}
function _do_callback(callback_name,new_class_name,obj,year,month,day){var callback=eval(callback_name);var ex_argus="";for(var i=6;i<arguments.length;i++){ex_argus+=",arguments["+i+"]";}
if(callback!=undefined&&typeof(callback)=="function"){if(eval("callback(year,month,day"+ex_argus+")")==null||eval("callback(year,month,day"+ex_argus+")")==true){obj.className=new_class_name;}}}
if(typeof Prototype=='undefined')
{warning="ActiveScaffold Error: Prototype could not be found. Please make sure that your application's layout includes prototype.js (e.g. <%= javascript_include_tag :defaults %>) *before* it includes active_scaffold.js (e.g. <%= active_scaffold_includes %>).";alert(warning);}
if(Prototype.Version.substring(0,8)=='1.5.0_rc')
{warning="ActiveScaffold Error: Prototype 1.5.0_rc is not supported. Please update prototype.js (rake rails:update:javascripts).";alert(warning);}
var ActiveScaffold={records_for:function(tbody_id){var rows=[];var child=$(tbody_id).down('.record');while(child){rows.push(child);child=child.next('.record');}
return rows;},stripe:function(tbody_id){var even=false;var rows=this.records_for(tbody_id);for(var i=0;i<rows.length;i++){var child=rows[i];if(child.tagName!='SCRIPT'&&!child.hasClassName("create")&&!child.hasClassName("update")&&!child.hasClassName("inline-adapter")&&!child.hasClassName("active-scaffold-calculations")){if(even)child.addClassName("even-record");else child.removeClassName("even-record");even=!even;}}},hide_empty_message:function(tbody,empty_message_id){if(this.records_for(tbody).length!=0){$(empty_message_id).hide();}},reload_if_empty:function(tbody,url){var content_container_id=tbody.replace('tbody','content');if(this.records_for(tbody).length==0){new Ajax.Updater($(content_container_id),url,{method:'get',asynchronous:true,evalScripts:true});}},removeSortClasses:function(scaffold_id){$$('#'+scaffold_id+' td.sorted').each(function(element){element.removeClassName("sorted");});$$('#'+scaffold_id+' th.sorted').each(function(element){element.removeClassName("sorted");element.removeClassName("asc");element.removeClassName("desc");});},decrement_record_count:function(scaffold_id){count=$$('#'+scaffold_id+' span.active-scaffold-records').first();count.innerHTML=parseInt(count.innerHTML)-1;},increment_record_count:function(scaffold_id){count=$$('#'+scaffold_id+' span.active-scaffold-records').first();count.innerHTML=parseInt(count.innerHTML)+1;},server_error_response:'',report_500_response:function(active_scaffold_id){messages_container=$(active_scaffold_id).down('td.messages-container');new Insertion.Top(messages_container,this.server_error_response);}}
function addActiveScaffoldPageToHistory(url,active_scaffold_id){if(typeof dhtmlHistory=='undefined')return;var array=url.split('?');var qs=new Querystring(array[1]);var sort=qs.get('sort')
var dir=qs.get('sort_direction')
var page=qs.get('page')
if(sort||dir||page)dhtmlHistory.add(active_scaffold_id+":"+page+":"+sort+":"+dir,url);}
Element.replace=function(element,html){element=$(element);if(element.outerHTML){try{element.outerHTML=html.stripScripts();}catch(e){var tn=element.tagName;if(tn=='TBODY'||tn=='TR'||tn=='TD')
{var tempDiv=document.createElement("div");tempDiv.innerHTML='<table id="tempTable" style="display: none">'+html.stripScripts()+'</table>';element.parentNode.replaceChild(tempDiv.getElementsByTagName(tn).item(0),element);}
else throw e;}}else{var range=element.ownerDocument.createRange();range.selectNodeContents(element.parentNode);element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()),element);}
setTimeout(function(){html.evalScripts()},10);return element;};Object.extend(String.prototype,{append_params:function(params){url=this;if(url.indexOf('?')==-1)url+='?';else if(url.lastIndexOf('&')!=url.length)url+='&';url+=$H(params).collect(function(item){return item.key+'='+item.value;}).join('&');return url;}});Element.Methods.Simulated={hasAttribute:function(element,attribute){var t=Element._attributeTranslations;attribute=(t.names&&t.names[attribute])||attribute;try{return $(element).getAttributeNode(attribute).specified;}catch(e){return false;}}};ActiveScaffold.Actions=new Object();ActiveScaffold.Actions.Abstract=function(){}
ActiveScaffold.Actions.Abstract.prototype={initialize:function(links,target,loading_indicator,options){this.target=$(target);this.loading_indicator=$(loading_indicator);this.options=options;this.links=links.collect(function(link){return this.instantiate_link(link);}.bind(this));},instantiate_link:function(link){throw'unimplemented'}}
ActiveScaffold.ActionLink=new Object();ActiveScaffold.ActionLink.Abstract=function(){}
ActiveScaffold.ActionLink.Abstract.prototype={initialize:function(a,target,loading_indicator){this.tag=$(a);this.url=this.tag.href;this.target=target;this.loading_indicator=loading_indicator;this.hide_target=false;this.position=this.tag.getAttribute('position');this.page_link=this.tag.getAttribute('page_link');this.onclick=this.tag.onclick;this.tag.onclick=null;this.tag.observe('click',function(event){this.open();Event.stop(event);}.bind(this));this.tag.action_link=this;},open:function(){if(this.is_disabled())return;if(this.url.indexOf("notshowdetail")<0)Xanadu.information();if(this.tag.hasAttribute("dhtml_confirm")){if(this.onclick)this.onclick();return;}else{if(this.onclick&&!this.onclick())return;this.open_action();}},open_action:function(){if(this.position)this.disable();if(this.page_link){window.location=this.url;}else{if(this.loading_indicator)this.loading_indicator.style.visibility='visible';new Ajax.Request(this.url,{asynchronous:true,evalScripts:true,onSuccess:function(request){if(this.position){this.insert(request.responseText);if(this.hide_target)this.target.hide();}else{request.evalResponse();}}.bind(this),onFailure:function(request){ActiveScaffold.report_500_response(this.scaffold_id());if(this.position)this.enable()}.bind(this),onComplete:function(request){if(this.loading_indicator)this.loading_indicator.style.visibility='hidden';Xanadu.info_complete();}.bind(this)});}},insert:function(content){throw'unimplemented'},close:function(){this.enable();this.adapter.remove();if(this.hide_target)this.target.show();},register_cancel_hooks:function(){var self=this;this.adapter.getElementsByClassName('cancel').each(function(elem){elem.observe('click',this.close_handler.bind(this));elem.link=self;}.bind(this))},reload:function(){this.close();this.open();},get_new_adapter_id:function(){var id='adapter_';var i=0;while($(id+i))i++;return id+i;},enable:function(){return this.tag.removeClassName('disabled');},disable:function(){return this.tag.addClassName('disabled');},is_disabled:function(){return this.tag.hasClassName('disabled');},scaffold_id:function(){return this.tag.up('div.active-scaffold').id;}}
ActiveScaffold.Actions.Record=Class.create();ActiveScaffold.Actions.Record.prototype=Object.extend(new ActiveScaffold.Actions.Abstract(),{instantiate_link:function(link){var l=new ActiveScaffold.ActionLink.Record(link,this.target,this.loading_indicator);l.refresh_url=this.options.refresh_url;if(l.position)l.url=l.url.append_params({adapter:'_list_inline_adapter'});l.set=this;return l;}});ActiveScaffold.ActionLink.Record=Class.create();ActiveScaffold.ActionLink.Record.prototype=Object.extend(new ActiveScaffold.ActionLink.Abstract(),{insert:function(content){this.set.links.each(function(item){if(item.url!=this.url&&item.is_disabled()&&item.adapter)item.close();}.bind(this));if(this.position=='replace'){this.position='after';this.hide_target=true;}
if(this.position=='after'){new Insertion.After(this.target,content);this.adapter=this.target.next();}
else if(this.position=='before'){new Insertion.Before(this.target,content);this.adapter=this.target.previous();}
else{return false;}
this.adapter.down('a.inline-adapter-close').observe('click',this.close_handler.bind(this));this.register_cancel_hooks();new Effect.Highlight(this.adapter.down('td'));},close_handler:function(event){this.close_with_refresh();if(event)Event.stop(event);},close_with_refresh:function(){new Ajax.Request(this.refresh_url,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.replace(this.target,request.responseText);var new_target=$(this.target.id);if(this.target.hasClassName('even-record'))new_target.addClassName('even-record');this.target=new_target;this.close();}.bind(this),onFailure:function(request){ActiveScaffold.report_500_response(this.scaffold_id());}});},enable:function(){this.set.links.each(function(item){if(item.url!=this.url)return;item.tag.removeClassName('disabled');}.bind(this));},disable:function(){this.set.links.each(function(item){if(item.url!=this.url)return;item.tag.addClassName('disabled');}.bind(this));}});ActiveScaffold.Actions.Table=Class.create();ActiveScaffold.Actions.Table.prototype=Object.extend(new ActiveScaffold.Actions.Abstract(),{instantiate_link:function(link){var l=new ActiveScaffold.ActionLink.Table(link,this.target,this.loading_indicator);if(l.position)l.url=l.url.append_params({adapter:'_list_inline_adapter'});return l;}});ActiveScaffold.ActionLink.Table=Class.create();ActiveScaffold.ActionLink.Table.prototype=Object.extend(new ActiveScaffold.ActionLink.Abstract(),{insert:function(content){if(this.position=='top'){new Insertion.Top(this.target,content);this.adapter=this.target.immediateDescendants().first();}
else{throw'Unknown position "'+this.position+'"'}
this.adapter.down('a.inline-adapter-close').observe('click',this.close_handler.bind(this));this.register_cancel_hooks();new Effect.Highlight(this.adapter.down('td'));},close_handler:function(event){this.close();if(event)Event.stop(event);}});TextFieldWithExample=Class.create();TextFieldWithExample.prototype={initialize:function(inputElementId,defaultText,options){this.setOptions(options);this.input=$(inputElementId);this.name=this.input.name;this.defaultText=defaultText;this.createHiddenInput();this.checkAndShowExample();Event.observe(this.input,"blur",this.onBlur.bindAsEventListener(this));Event.observe(this.input,"focus",this.onFocus.bindAsEventListener(this));Event.observe(this.input,"select",this.onFocus.bindAsEventListener(this));Event.observe(this.input,"keydown",this.onKeyPress.bindAsEventListener(this));Event.observe(this.input,"click",this.onClick.bindAsEventListener(this));},createHiddenInput:function(){this.hiddenInput=document.createElement("input");this.hiddenInput.type="hidden";this.hiddenInput.value="";this.input.parentNode.appendChild(this.hiddenInput);},setOptions:function(options){this.options={exampleClassName:'example'};Object.extend(this.options,options||{});},onKeyPress:function(event){if(!event)var event=window.event;var code=(event.which)?event.which:event.keyCode
if(this.isAlphanumeric(code)){this.removeExample();}},onBlur:function(event){this.checkAndShowExample();},onFocus:function(event){if(this.exampleShown()){this.removeExample();}},onClick:function(event){this.removeExample();},isAlphanumeric:function(keyCode){return keyCode>=40&&keyCode<=90;},checkAndShowExample:function(){if(this.input.value==''){this.input.value=this.defaultText;this.input.name=null;this.hiddenInput.name=this.name;Element.addClassName(this.input,this.options.exampleClassName);}},removeExample:function(){if(this.exampleShown()){this.input.value='';this.input.name=this.name;this.hiddenInput.name=null;Element.removeClassName(this.input,this.options.exampleClassName);}},exampleShown:function(){return Element.hasClassName(this.input,this.options.exampleClassName);}}
Form.disable=function(form){var elements=this.getElements(form);for(var i=0;i<elements.length;i++){var element=elements[i];try{element.blur();}catch(e){}
element.disabled='disabled';Element.addClassName(element,'disabled');}}
Form.enable=function(form){var elements=this.getElements(form);for(var i=0;i<elements.length;i++){var element=elements[i];element.disabled='';Element.removeClassName(element,'disabled');}}
var Rico={Version:'1.1.0',prototypeVersion:parseFloat(Prototype.Version.split(".")[0]+"."+Prototype.Version.split(".")[1])}
Rico.Color=Class.create();Rico.Color.prototype={initialize:function(red,green,blue){this.rgb={r:red,g:green,b:blue};},blend:function(other){this.rgb.r=Math.floor((this.rgb.r+other.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+other.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+other.rgb.b)/2);},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}};Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++)hexCode+=(shortHexCode.charAt(i)+shortHexCode.charAt(i));}
if(hexCode.indexOf('#')==0)
hexCode=hexCode.substring(1);var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));}
Rico.Color.createColorFromBackground=function(elem){var actualColor=$(elem).getStyle('backgroundColor');if(actualColor=="transparent"&&elem.parentNode)
return Rico.Color.createColorFromBackground(elem.parentNode);if(actualColor==null)
return new Rico.Color(255,255,255);if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));}
else if(actualColor.indexOf("#")==0){return Rico.Color.createFromHex(actualColor);}
else
return new Rico.Color(255,255,255);}
Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var br=Math.round(brightness/100*255);if(this[1]==0){return[br,br,br];}else{var hue=this[0]%360;var f=hue%60;var p=Math.round((brightness*(100-saturation))/10000*255);var q=Math.round((brightness*(6000-saturation*f))/600000*255);var t=Math.round((brightness*(6000-saturation*(60-f)))/600000*255);switch(Math.floor(hue/60)){case 0:return{r:br,g:t,b:p};case 1:return{r:q,g:br,b:p};case 2:return{r:p,g:br,b:t};case 3:return{r:p,g:q,b:br};case 4:return{r:t,g:p,b:br};case 5:return{r:br,g:p,b:q};}}
return false;}
Rico.Color.RGBtoHSB=function(red,green,blue){var hue,saturation,brightness;var max=Math.max(red,green,blue),min=Math.min(red,green,blue);var delta=max-min;brightness=max/255;saturation=(max!=0)?delta/max:0;if(saturation==0){hue=0;}else{var rr=(max-red)/delta;var gr=(max-green)/delta;var br=(max-blue)/delta;if(red==max)hue=br-gr;else if(green==max)hue=2+rr-br;else hue=4+gr-rr;hue/=6;if(hue<0)hue++;}
return{h:Math.round(hue*360),s:Math.round(saturation*100),b:Math.round(brightness*100)};}
Rico.Corner={round:function(e,options){var e=$(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement")
color=this._background(e);var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent")
bgColor=this._background(e.offsetParent);this._roundCornersImpl(e,color,bgColor);},_roundCornersImpl:function(e,color,bgColor){if(this.options.border)
this._renderBorder(e,bgColor);if(this._isTopRounded())
this._roundTopCorners(e,color,bgColor);if(this._isBottomRounded())
this._roundBottomCorners(e,color,bgColor);},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>"},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++)
corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));el.style.paddingTop=0;el.insertBefore(corner,el.firstChild);},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--)
corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;}
else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";}
if(!this.options.compact&&(n==(this.options.numSlices-1)))
inStyle.height="2px";this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false}
Object.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent())
this.options.blend=false;},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top"))
return"";if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0)
return"";if(this.options.corners.indexOf("tl")>=0)
return"left";else if(this.options.corners.indexOf("tr")>=0)
return"right";return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom"))
return"";if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0)
return"";if(this.options.corners.indexOf("bl")>=0)
return"left";else if(this.options.corners.indexOf("br")>=0)
return"right";return"";},_borderColor:function(color,bgColor){if(color=="transparent")
return bgColor;else if(this.options.border)
return this.options.border;else if(this.options.blend)
return this._blend(bgColor,color);else
return"";},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";}
else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";}
else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";}
else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";}
else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}
if(this.options.border!=false)
el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";},_marginSize:function(n){if(this._isTransparent())
return 0;var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend)
return smBlendedMarginSizes[n];else if(this.options.compact)
return compactMarginSizes[n];else if(this.options.blend)
return blendedMarginSizes[n];else
return marginSizes[n];},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent()))
return 1;else if(this.options.compact)
return compactBorderSizes[n];else if(this.options.blend)
return blendedBorderSizes[n];else if(this.options.border)
return actualBorderSizes[n];else if(this._isTransparent())
return transparentBorderSizes[n];return 0;},_hasString:function(str){for(var i=1;i<arguments.length;i++)if(str.indexOf(arguments[i])>=0)return true;return false;},_blend:function(c1,c2){var cc1=Rico.Color.createFromHex(c1);cc1.blend(Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}}
window.dhtmlHistory={initialize:function(){if(this.isInternetExplorer()==false){return;}
if(historyStorage.hasKey("DhtmlHistory_pageLoaded")==false){this.fireOnNewListener=false;this.firstLoad=true;historyStorage.put("DhtmlHistory_pageLoaded",true);}
else{this.fireOnNewListener=true;this.firstLoad=false;}},addListener:function(callback){this.listener=callback;if(this.fireOnNewListener==true){this.fireHistoryEvent(this.currentLocation);this.fireOnNewListener=false;}},add:function(newLocation,historyData){var self=this;var addImpl=function(){if(self.currentWaitTime>0)
self.currentWaitTime=self.currentWaitTime-self.WAIT_TIME;newLocation=self.removeHash(newLocation);var idCheck=$(newLocation);if(idCheck!=undefined||idCheck!=null){var message="Exception: History locations can not have "
+"the same value as _any_ id's "
+"that might be in the document, "
+"due to a bug in Internet "
+"Explorer; please ask the "
+"developer to choose a history "
+"location that does not match "
+"any HTML id's in this "
+"document. The following ID "
+"is already taken and can not "
+"be a location: "
+newLocation;throw message;}
historyStorage.put(newLocation,historyData);self.ignoreLocationChange=true;this.ieAtomicLocationChange=true;self.currentLocation=newLocation;window.location.hash=newLocation;if(self.isInternetExplorer())
self.iframe.src="/blank.html?"+newLocation;this.ieAtomicLocationChange=false;};window.setTimeout(addImpl,this.currentWaitTime);this.currentWaitTime=this.currentWaitTime+this.WAIT_TIME;},isFirstLoad:function(){if(this.firstLoad==true){return true;}
else{return false;}},isInternational:function(){return false;},getVersion:function(){return"0.05";},getCurrentLocation:function(){var currentLocation=this.removeHash(window.location.hash);return currentLocation;},currentLocation:null,listener:null,iframe:null,ignoreLocationChange:null,WAIT_TIME:200,currentWaitTime:0,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,create:function(){var initialHash=this.getCurrentLocation();this.currentLocation=initialHash;if(this.isInternetExplorer()){document.write("<iframe style='border: 0px; width: 1px; "
+"height: 1px; position: absolute; bottom: 0px; "
+"right: 0px; visibility: visible;' "
+"name='DhtmlHistoryFrame' id='DhtmlHistoryFrame' "
+"src='/blank.html?"+initialHash+"'>"
+"</iframe>");this.WAIT_TIME=400;}
var self=this;window.onunload=function(){self.firstLoad=null;};if(this.isInternetExplorer()==false){if(historyStorage.hasKey("DhtmlHistory_pageLoaded")==false){this.ignoreLocationChange=true;this.firstLoad=true;historyStorage.put("DhtmlHistory_pageLoaded",true);}
else{this.ignoreLocationChange=false;this.fireOnNewListener=true;}}
else{this.ignoreLocationChange=true;}
if(this.isInternetExplorer()){this.iframe=$("DhtmlHistoryFrame");}
var self=this;var locationHandler=function(){self.checkLocation();};setInterval(locationHandler,100);},fireHistoryEvent:function(newHash){var historyData=historyStorage.get(newHash);this.listener.call(null,newHash,historyData);},checkLocation:function(){if(this.isInternetExplorer()==false&&this.ignoreLocationChange==true){this.ignoreLocationChange=false;return;}
if(this.isInternetExplorer()==false&&this.ieAtomicLocationChange==true){return;}
var hash=this.getCurrentLocation();if(hash==this.currentLocation)
return;this.ieAtomicLocationChange=true;if(this.isInternetExplorer()&&this.getIFrameHash()!=hash){this.iframe.src="/blank.html?"+hash;}
else if(this.isInternetExplorer()){return;}
this.currentLocation=hash;this.ieAtomicLocationChange=false;this.fireHistoryEvent(hash);},getIFrameHash:function(){var historyFrame=$("DhtmlHistoryFrame");var doc=historyFrame.contentWindow.document;var hash=new String(doc.location.search);if(hash.length==1&&hash.charAt(0)=="?")
hash="";else if(hash.length>=2&&hash.charAt(0)=="?")
hash=hash.substring(1);return hash;},removeHash:function(hashValue){if(hashValue==null||hashValue==undefined)
return null;else if(hashValue=="")
return"";else if(hashValue.length==1&&hashValue.charAt(0)=="#")
return"";else if(hashValue.length>1&&hashValue.charAt(0)=="#")
return hashValue.substring(1);else
return hashValue;},iframeLoaded:function(newLocation){if(this.ignoreLocationChange==true){this.ignoreLocationChange=false;return;}
var hash=new String(newLocation.search);if(hash.length==1&&hash.charAt(0)=="?")
hash="";else if(hash.length>=2&&hash.charAt(0)=="?")
hash=hash.substring(1);if(this.pageLoadEvent!=true){window.location.hash=hash;}
this.fireHistoryEvent(hash);},isInternetExplorer:function(){var userAgent=navigator.userAgent.toLowerCase();if(document.all&&userAgent.indexOf('msie')!=-1){return true;}
else{return false;}}};window.historyStorage={debugging:false,storageHash:new Object(),hashLoaded:false,put:function(key,value){this.assertValidKey(key);if(this.hasKey(key)){this.remove(key);}
this.storageHash[key]=value;this.saveHashTable();},get:function(key){this.assertValidKey(key);this.loadHashTable();var value=this.storageHash[key];if(value==undefined)
return null;else
return value;},remove:function(key){this.assertValidKey(key);this.loadHashTable();delete this.storageHash[key];this.saveHashTable();},reset:function(){this.storageField.value="";this.storageHash=new Object();},hasKey:function(key){this.assertValidKey(key);this.loadHashTable();if(typeof this.storageHash[key]=="undefined")
return false;else
return true;},isValidKey:function(key){return(typeof key=="string");},storageField:null,init:function(){var newContent="<div id='historyStorageFieldFormDiv' style='display:none;'><form id='historyStorageFieldForm'>"+"<input type='textarea' id='historyStorageField' name='historyStorageField'/></form></div>";document.write(newContent);this.storageField=$("historyStorageField");},assertValidKey:function(key){if(this.isValidKey(key)==false){throw"Please provide a valid key for "
+"window.historyStorage, key= "
+key;}},loadHashTable:function(){if(this.hashLoaded==false){var serializedHashTable=this.storageField.value;if(serializedHashTable!=""&&serializedHashTable!=null){this.storageHash=eval('('+serializedHashTable+')');}
this.hashLoaded=true;}},saveHashTable:function(){this.loadHashTable();var serializedHashTable=JSON.stringify(this.storageHash);this.storageField.value=serializedHashTable;}};Array.prototype.______array='______array';var JSON={org:'http://www.JSON.org',copyright:'(c)2005 JSON.org',license:'http://www.crockford.com/JSON/license.html',stringify:function(arg){var c,i,l,s='',v;switch(typeof arg){case'object':if(arg){if(arg.______array=='______array'){for(i=0;i<arg.length;++i){v=this.stringify(arg[i]);if(s){s+=',';}
s+=v;}
return'['+s+']';}else if(typeof arg.toString!='undefined'){for(i in arg){v=arg[i];if(typeof v!='undefined'&&typeof v!='function'){v=this.stringify(v);if(s){s+=',';}
s+=this.stringify(i)+':'+v;}}
return'{'+s+'}';}}
return'null';case'number':return isFinite(arg)?String(arg):'null';case'string':l=arg.length;s='"';for(i=0;i<l;i+=1){c=arg.charAt(i);if(c>=' '){if(c=='\\'||c=='"'){s+='\\';}
s+=c;}else{switch(c){case'\b':s+='\\b';break;case'\f':s+='\\f';break;case'\n':s+='\\n';break;case'\r':s+='\\r';break;case'\t':s+='\\t';break;default:c=c.charCodeAt();s+='\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16);}}}
return s+'"';case'boolean':return String(arg);default:return'null';}},parse:function(text){var at=0;var ch=' ';function error(m){throw{name:'JSONError',message:m,at:at-1,text:text};}
function next(){ch=text.charAt(at);at+=1;return ch;}
function white(){while(ch!=''&&ch<=' '){next();}}
function str(){var i,s='',t,u;if(ch=='"'){outer:while(next()){if(ch=='"'){next();return s;}else if(ch=='\\'){switch(next()){case'b':s+='\b';break;case'f':s+='\f';break;case'n':s+='\n';break;case'r':s+='\r';break;case't':s+='\t';break;case'u':u=0;for(i=0;i<4;i+=1){t=parseInt(next(),16);if(!isFinite(t)){break outer;}
u=u*16+t;}
s+=String.fromCharCode(u);break;default:s+=ch;}}else{s+=ch;}}}
error("Bad string");}
function arr(){var a=[];if(ch=='['){next();white();if(ch==']'){next();return a;}
while(ch){a.push(val());white();if(ch==']'){next();return a;}else if(ch!=','){break;}
next();white();}}
error("Bad array");}
function obj(){var k,o={};if(ch=='{'){next();white();if(ch=='}'){next();return o;}
while(ch){k=str();white();if(ch!=':'){break;}
next();o[k]=val();white();if(ch=='}'){next();return o;}else if(ch!=','){break;}
next();white();}}
error("Bad object");}
function num(){var n='',v;if(ch=='-'){n='-';next();}
while(ch>='0'&&ch<='9'){n+=ch;next();}
if(ch=='.'){n+='.';while(next()&&ch>='0'&&ch<='9'){n+=ch;}}
if(ch=='e'||ch=='E'){n+='e';next();if(ch=='-'||ch=='+'){n+=ch;next();}
while(ch>='0'&&ch<='9'){n+=ch;next();}}
v=+n;if(!isFinite(v)){error("Bad number");}else{return v;}}
function word(){switch(ch){case't':if(next()=='r'&&next()=='u'&&next()=='e'){next();return true;}
break;case'f':if(next()=='a'&&next()=='l'&&next()=='s'&&next()=='e'){next();return false;}
break;case'n':if(next()=='u'&&next()=='l'&&next()=='l'){next();return null;}
break;}
error("Syntax error");}
function val(){white();switch(ch){case'{':return obj();case'[':return arr();case'"':return str();case'-':return num();default:return ch>='0'&&ch<='9'?num():word();}}
return val();}};function Querystring(qs){this.params=new Object()
this.get=Querystring_get
if(qs==null)
qs=location.search.substring(1,location.search.length)
if(qs.length==0)return
qs=qs.replace(/\+/g,' ')
qs=qs.replace(/&amp;/g,'&')
var args=qs.split('&')
for(var i=0;i<args.length;i++){var value;var pair=args[i].split('=')
var name=unescape(pair[0])
if(pair.length==2)
value=unescape(pair[1])
else
value=name
this.params[name]=value}}
function Querystring_get(key,default_){if(default_==null)default_=null;var value=this.params[key]
if(value==null)value=default_;return value}
window.historyStorage.init();window.dhtmlHistory.create();function initialize(){dhtmlHistory.initialize();dhtmlHistory.addListener(handleHistoryChange);}
function handleHistoryChange(pageId,pageData){var info=pageId.split(':');var id=info[0];new Ajax.Updater(id+'-content',pageData,{asynchronous:true,evalScripts:true,onLoading:function(request){Element.show(id+'-pagination-loading-indicator');}});}
function debugMsg(msg){var debugMsg=$("debugMsg");debugMsg.innerHTML=msg;}
function addAjaxTableUrlToHistory(url){var array=url.split('?');var qs=new Querystring(array[1]);var sort=qs.get('sort')
var dir=qs.get('sort_direction')
dhtmlHistory.add(qs.get('scaffold_id')+":"+qs.get('page')+":"+sort+":"+dir,url);}
Event.observe(window,'load',initialize,false);if(configDateType!='undefined'&&configDateType!=''){configDateType=configDateType;}else{var configDateType='iso';}
var configAutoRollOver=true;var calendarFormatString='';var calendarIfFormat='';setConfigDateType(configDateType);function dateBocksKeyListener(event){var keyCode=event.keyCode?event.keyCode:event.which?event.which:event.charCode;if(keyCode==13||keyCode==10){return false;}}
function windowProperties(param_properties){var oRegex=new RegExp('');oRegex.compile("(?:^|,)([^=]+)=(\\d+|yes|no|auto)",'gim');var oProperties=new Object();var oPropertiesMatch;while((oPropertiesMatch=oRegex.exec(param_properties))!=null){var sValue=oPropertiesMatch[2];if(sValue==('yes'||'1')){oProperties[oPropertiesMatch[1]]=true;}else if((!isNaN(sValue)&&sValue!=0)||('auto'==sValue)){oProperties[oPropertiesMatch[1]]=sValue;}}
return oProperties;}
function windowOpenCenter(window_url,window_name,window_properties){try{var oProperties=windowProperties(window_properties);w=parseInt(oProperties['width']);h=parseInt(oProperties['height']);w=w>0?w:640;h=h>0?h:480;if(screen){t=(screen.height-h)/2;l=(screen.width-w)/2;}else{t=250;l=250;}
window_properties=(w>0?",width="+w:"")+(h>0?",height="+h:"")+(t>0?",top="+t:"")+(l>0?",left="+l:"")+","+window_properties.replace(/,(width=\s*\d+\s*|height=\s*\d+\s*|top=\s*\d+\s*||left=\s*\d+\s*)/gi,"");return window.open(window_url,window_name,window_properties);}catch(e){};}
Array.prototype.indexOf=function(item){for(var i=0;i<this.length;i++){if(this[i]==item){return i;}}
return-1;};Array.prototype.filter=function(test){var matches=[];for(var i=0;i<this.length;i++){if(test(this[i])){matches[matches.length]=this[i];}}
return matches;};String.prototype.right=function(intLength){if(intLength>=this.length)
return this;else
return this.substr(this.length-intLength,intLength);};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/,'');};var monthNames="January February March April May June July August September October November December".split(" ");var weekdayNames="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" ");function parseMonth(month){var matches=monthNames.filter(function(item){return new RegExp("^"+month,"i").test(item);});if(matches.length==0){throw new Error("Invalid month string");}
if(matches.length<1){throw new Error("Ambiguous month");}
return monthNames.indexOf(matches[0]);}
function parseWeekday(weekday){var matches=weekdayNames.filter(function(item){return new RegExp("^"+weekday,"i").test(item);});if(matches.length==0){throw new Error("Invalid day string");}
if(matches.length<1){throw new Error("Ambiguous weekday");}
return weekdayNames.indexOf(matches[0]);}
function DateInRange(yyyy,mm,dd)
{if(mm<0||mm>11)
throw new Error('Invalid month value.  Valid months values are 1 to 12');if(!configAutoRollOver){var d=(11==mm)?new Date(yyyy+1,0,0):new Date(yyyy,mm+1,0);if(dd<1||dd>d.getDate())
throw new Error('Invalid date value.  Valid date values for '+monthNames[mm]+' are 1 to '+d.getDate().toString());}
return true;}
function getDateObj(yyyy,mm,dd){var obj=new Date();obj.setDate(1);obj.setYear(yyyy);obj.setMonth(mm);obj.setDate(dd);return obj;}
var dateParsePatterns=[{re:/^tod|now/i,handler:function(){return new Date();}},{re:/^tom/i,handler:function(){var d=new Date();d.setDate(d.getDate()+1);return d;}},{re:/^yes/i,handler:function(){var d=new Date();d.setDate(d.getDate()-1);return d;}},{re:/^(\d{1,2})(st|nd|rd|th)?$/i,handler:function(bits){var d=new Date();var yyyy=d.getFullYear();var dd=parseInt(bits[1],10);var mm=d.getMonth();if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/^(\d{1,2})(?:st|nd|rd|th)? (?:of\s)?(\w+)$/i,handler:function(bits){var d=new Date();var yyyy=d.getFullYear();var dd=parseInt(bits[1],10);var mm=parseMonth(bits[2]);if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/^(\d{1,2})(?:st|nd|rd|th)? (?:of )?(\w+),? (\d{4})$/i,handler:function(bits){var d=new Date();d.setDate(parseInt(bits[1],10));d.setMonth(parseMonth(bits[2]));d.setYear(bits[3]);return d;}},{re:/^(\w+) (\d{1,2})(?:st|nd|rd|th)?$/i,handler:function(bits){var d=new Date();var yyyy=d.getFullYear();var dd=parseInt(bits[2],10);var mm=parseMonth(bits[1]);if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/^(\w+) (\d{1,2})(?:st|nd|rd|th)?,? (\d{4})$/i,handler:function(bits){var yyyy=parseInt(bits[3],10);var dd=parseInt(bits[2],10);var mm=parseMonth(bits[1]);if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/((next|last)\s(week|month|year))/i,handler:function(bits){var objDate=new Date();var dd=objDate.getDate();var mm=objDate.getMonth();var yyyy=objDate.getFullYear();switch(bits[3]){case'week':var newDay=(bits[2]=='next')?(dd+7):(dd-7);objDate.setDate(newDay);break;case'month':var newMonth=(bits[2]=='next')?(mm+1):(mm-1);objDate.setMonth(newMonth);break;case'year':var newYear=(bits[2]=='next')?(yyyy+1):(yyyy-1);objDate.setYear(newYear);break;}
return objDate;}},{re:/^next (\w+)$/i,handler:function(bits){var d=new Date();var day=d.getDay();var newDay=parseWeekday(bits[1]);var addDays=newDay-day;if(newDay<=day){addDays+=7;}
d.setDate(d.getDate()+addDays);return d;}},{re:/^last (\w+)$/i,handler:function(bits){var d=new Date();var wd=d.getDay();var nwd=parseWeekday(bits[1]);var addDays=(-1*(wd+7-nwd))%7;if(0==addDays)
addDays=-7;d.setDate(d.getDate()+addDays);return d;}},{re:/(\d{1,2})\/(\d{1,2})\/(\d{4})/,handler:function(bits){if(configDateType=='dd/mm/yyyy'){var yyyy=parseInt(bits[3],10);var dd=parseInt(bits[1],10);var mm=parseInt(bits[2],10)-1;}else{var yyyy=parseInt(bits[3],10);var dd=parseInt(bits[2],10);var mm=parseInt(bits[1],10)-1;}
if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(\d{1,2})\/(\d{1,2})\/(\d{1,2})/,handler:function(bits){var d=new Date();var yyyy=d.getFullYear()-(d.getFullYear()%100)+parseInt(bits[3],10);var dd=parseInt(bits[2],10);var mm=parseInt(bits[1],10)-1;if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(\d{1,2})\/(\d{1,2})/,handler:function(bits){var d=new Date();var yyyy=d.getFullYear();var dd=parseInt(bits[2],10);var mm=parseInt(bits[1],10)-1;if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(\d{1,2})-(\d{1,2})-(\d{4})/,handler:function(bits){if(configDateType=='dd-mm-yyyy'){var yyyy=parseInt(bits[3],10);var dd=parseInt(bits[1],10);var mm=parseInt(bits[2],10)-1;}else{var yyyy=parseInt(bits[3],10);var dd=parseInt(bits[2],10);var mm=parseInt(bits[1],10)-1;}
if(DateInRange(yyyy,mm,dd)){return getDateObj(yyyy,mm,dd);}}},{re:/(\d{1,2})\.(\d{1,2})\.(\d{4})/,handler:function(bits){var dd=parseInt(bits[1],10);var mm=parseInt(bits[2],10)-1;var yyyy=parseInt(bits[3],10);if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(\d{4})-(\d{1,2})-(\d{1,2})/,handler:function(bits){var yyyy=parseInt(bits[1],10);var dd=parseInt(bits[3],10);var mm=parseInt(bits[2],10)-1;if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(\d{1,2})-(\d{1,2})-(\d{1,2})/,handler:function(bits){var d=new Date();var yyyy=d.getFullYear()-(d.getFullYear()%100)+parseInt(bits[1],10);var dd=parseInt(bits[3],10);var mm=parseInt(bits[2],10)-1;if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(\d{1,2})-(\d{1,2})/,handler:function(bits){var d=new Date();var yyyy=d.getFullYear();var dd=parseInt(bits[2],10);var mm=parseInt(bits[1],10)-1;if(DateInRange(yyyy,mm,dd))
return getDateObj(yyyy,mm,dd);}},{re:/(^mon.*|^tue.*|^wed.*|^thu.*|^fri.*|^sat.*|^sun.*)/i,handler:function(bits){var d=new Date();var day=d.getDay();var newDay=parseWeekday(bits[1]);var addDays=newDay-day;if(newDay<=day){addDays+=7;}
d.setDate(d.getDate()+addDays);return d;}},];function parseDateString(s){for(var i=0;i<dateParsePatterns.length;i++){var re=dateParsePatterns[i].re;var handler=dateParsePatterns[i].handler;var bits=re.exec(s);if(bits){return handler(bits);}}
throw new Error("Invalid date string");}
function magicDateOnlyOnSubmit(id,event){var keyCode=event.keyCode?event.keyCode:event.which?event.which:event.charCode;if(keyCode==13||keyCode==10){magicDate(id);}}
function magicDate(id,onlyOnSubmit){var input=document.getElementById(id);var messagespan=input.id+'Msg';try{if(input.value=='')
{if(configDateType==null)
configDateType='yyyy-mm-dd';input.className='';document.getElementById(messagespan).innerHTML=configDateType;document.getElementById(messagespan).className='normal';return;}
var d=parseDateString(input.value);var day=(d.getDate()<=9)?'0'+d.getDate().toString():d.getDate();var month=((d.getMonth()+1)<=9)?'0'+(d.getMonth()+1):(d.getMonth()+1);switch(configDateType){case'dd/mm/yyyy':input.value=day+'/'+month+'/'+d.getFullYear();break;case'dd-mm-yyyy':input.value=day+'-'+month+'-'+d.getFullYear();break;case'mm/dd/yyyy':case'us':input.value=month+'/'+day+'/'+d.getFullYear();break;case'mm.dd.yyyy':case'de':input.value=month+'.'+day+'.'+d.getFullYear();break;case'iso':case'yyyy-mm-dd':default:input.value=d.getFullYear()+'-'+month+'-'+day;break;}
input.className='';document.getElementById(messagespan).className='normal';}
catch(e){input.className='error';var message=e.message;if(message.indexOf('is null or not an object')>-1){message='Invalid date string';}
document.getElementById(messagespan).innerHTML=message;document.getElementById(messagespan).className='error';}}
function setConfigDateType(type){switch(configDateType){case'mm/dd/yyyy':case'us':calendarIfFormat='%m/%d/%Y';calendarFormatString='mm/dd/yyyy';break;case'mm.dd.yyyy':case'de':calendarIfFormat='%m.%d.%Y';calendarFormatString='mm.dd.yyyy';break;case'dd/mm/yyyy':calendarIfFormat='%d/%m/%Y';calendarFormatString='dd/mm/yyyy';break;case'dd-mm-yyyy':calendarIfFormat='%d-%m-%Y';calendarFormatString='dd-mm-yyyy';break;case'yyyy-mm-dd':case'iso':default:calendarIfFormat='%Y-%m-%d';calendarFormatString='yyyy-mm-dd';break;}}
Calendar=function(firstDayOfWeek,dateStr,onSelected,onClose){this.activeDiv=null;this.currentDateEl=null;this.getDateStatus=null;this.getDateToolTip=null;this.getDateText=null;this.timeout=null;this.onSelected=onSelected||null;this.onClose=onClose||null;this.dragging=false;this.hidden=false;this.minYear=1970;this.maxYear=2050;this.dateFormat=Calendar._TT["DEF_DATE_FORMAT"];this.ttDateFormat=Calendar._TT["TT_DATE_FORMAT"];this.isPopup=true;this.weekNumbers=true;this.firstDayOfWeek=typeof firstDayOfWeek=="number"?firstDayOfWeek:Calendar._FD;this.showsOtherMonths=false;this.dateStr=dateStr;this.ar_days=null;this.showsTime=false;this.time24=true;this.yearStep=2;this.hiliteToday=true;this.multiple=null;this.table=null;this.element=null;this.tbody=null;this.firstdayname=null;this.monthsCombo=null;this.yearsCombo=null;this.hilitedMonth=null;this.activeMonth=null;this.hilitedYear=null;this.activeYear=null;this.dateClicked=false;if(typeof Calendar._SDN=="undefined"){if(typeof Calendar._SDN_len=="undefined")
Calendar._SDN_len=3;var ar=new Array();for(var i=8;i>0;){ar[--i]=Calendar._DN[i].substr(0,Calendar._SDN_len);}
Calendar._SDN=ar;if(typeof Calendar._SMN_len=="undefined")
Calendar._SMN_len=3;ar=new Array();for(var i=12;i>0;){ar[--i]=Calendar._MN[i].substr(0,Calendar._SMN_len);}
Calendar._SMN=ar;}};Calendar._C=null;Calendar.is_ie=(/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent));Calendar.is_ie5=(Calendar.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Calendar.is_opera=/opera/i.test(navigator.userAgent);Calendar.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Calendar.getAbsolutePos=function(el){var SL=0,ST=0;var is_div=/^div$/i.test(el.tagName);if(is_div&&el.scrollLeft)
SL=el.scrollLeft;if(is_div&&el.scrollTop)
ST=el.scrollTop;var r={x:el.offsetLeft-SL,y:el.offsetTop-ST};if(el.offsetParent){var tmp=this.getAbsolutePos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;}
return r;};Calendar.isRelated=function(el,evt){var related=evt.relatedTarget;if(!related){var type=evt.type;if(type=="mouseover"){related=evt.fromElement;}else if(type=="mouseout"){related=evt.toElement;}}
while(related){if(related==el){return true;}
related=related.parentNode;}
return false;};Calendar.removeClass=function(el,className){if(!(el&&el.className)){return;}
var cls=el.className.split(" ");var ar=new Array();for(var i=cls.length;i>0;){if(cls[--i]!=className){ar[ar.length]=cls[i];}}
el.className=ar.join(" ");};Calendar.addClass=function(el,className){Calendar.removeClass(el,className);el.className+=" "+className;};Calendar.getElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.currentTarget;while(f.nodeType!=1||/^div$/i.test(f.tagName))
f=f.parentNode;return f;};Calendar.getTargetElement=function(ev){var f=Calendar.is_ie?window.event.srcElement:ev.target;while(f.nodeType!=1)
f=f.parentNode;return f;};Calendar.stopEvent=function(ev){ev||(ev=window.event);if(Calendar.is_ie){ev.cancelBubble=true;ev.returnValue=false;}else{ev.preventDefault();ev.stopPropagation();}
return false;};Calendar.addEvent=function(el,evname,func){if(el.attachEvent){el.attachEvent("on"+evname,func);}else if(el.addEventListener){el.addEventListener(evname,func,true);}else{el["on"+evname]=func;}};Calendar.removeEvent=function(el,evname,func){if(el.detachEvent){el.detachEvent("on"+evname,func);}else if(el.removeEventListener){el.removeEventListener(evname,func,true);}else{el["on"+evname]=null;}};Calendar.createElement=function(type,parent){var el=null;if(document.createElementNS){el=document.createElementNS("http://www.w3.org/1999/xhtml",type);}else{el=document.createElement(type);}
if(typeof parent!="undefined"){parent.appendChild(el);}
return el;};Calendar._add_evs=function(el){with(Calendar){addEvent(el,"mouseover",dayMouseOver);addEvent(el,"mousedown",dayMouseDown);addEvent(el,"mouseout",dayMouseOut);if(is_ie){addEvent(el,"dblclick",dayMouseDblClick);el.setAttribute("unselectable",true);}}};Calendar.findMonth=function(el){if(typeof el.month!="undefined"){return el;}else if(typeof el.parentNode.month!="undefined"){return el.parentNode;}
return null;};Calendar.findYear=function(el){if(typeof el.year!="undefined"){return el;}else if(typeof el.parentNode.year!="undefined"){return el.parentNode;}
return null;};Calendar.showMonthsCombo=function(){var cal=Calendar._C;if(!cal){return false;}
var cal=cal;var cd=cal.activeDiv;var mc=cal.monthsCombo;if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}
if(cal.activeMonth){Calendar.removeClass(cal.activeMonth,"active");}
var mon=cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];Calendar.addClass(mon,"active");cal.activeMonth=mon;var s=mc.style;s.display="block";if(cd.navtype<0)
s.left=cd.offsetLeft+"px";else{var mcw=mc.offsetWidth;if(typeof mcw=="undefined")
mcw=50;s.left=(cd.offsetLeft+cd.offsetWidth-mcw)+"px";}
s.top=(cd.offsetTop+cd.offsetHeight)+"px";};Calendar.showYearsCombo=function(fwd){var cal=Calendar._C;if(!cal){return false;}
var cal=cal;var cd=cal.activeDiv;var yc=cal.yearsCombo;if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}
if(cal.activeYear){Calendar.removeClass(cal.activeYear,"active");}
cal.activeYear=null;var Y=cal.date.getFullYear()+(fwd?1:-1);var yr=yc.firstChild;var show=false;for(var i=12;i>0;--i){if(Y>=cal.minYear&&Y<=cal.maxYear){yr.innerHTML=Y;yr.year=Y;yr.style.display="block";show=true;}else{yr.style.display="none";}
yr=yr.nextSibling;Y+=fwd?cal.yearStep:-cal.yearStep;}
if(show){var s=yc.style;s.display="block";if(cd.navtype<0)
s.left=cd.offsetLeft+"px";else{var ycw=yc.offsetWidth;if(typeof ycw=="undefined")
ycw=50;s.left=(cd.offsetLeft+cd.offsetWidth-ycw)+"px";}
s.top=(cd.offsetTop+cd.offsetHeight)+"px";}};Calendar.tableMouseUp=function(ev){var cal=Calendar._C;if(!cal){return false;}
if(cal.timeout){clearTimeout(cal.timeout);}
var el=cal.activeDiv;if(!el){return false;}
var target=Calendar.getTargetElement(ev);ev||(ev=window.event);Calendar.removeClass(el,"active");if(target==el||target.parentNode==el){Calendar.cellClick(el,ev);}
var mon=Calendar.findMonth(target);var date=null;if(mon){date=new Date(cal.date);if(mon.month!=date.getMonth()){date.setMonth(mon.month);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}else{var year=Calendar.findYear(target);if(year){date=new Date(cal.date);if(year.year!=date.getFullYear()){date.setFullYear(year.year);cal.setDate(date);cal.dateClicked=false;cal.callHandler();}}}
with(Calendar){removeEvent(document,"mouseup",tableMouseUp);removeEvent(document,"mouseover",tableMouseOver);removeEvent(document,"mousemove",tableMouseOver);cal._hideCombos();_C=null;return stopEvent(ev);}};Calendar.tableMouseOver=function(ev){var cal=Calendar._C;if(!cal){return;}
var el=cal.activeDiv;var target=Calendar.getTargetElement(ev);if(target==el||target.parentNode==el){Calendar.addClass(el,"hilite active");Calendar.addClass(el.parentNode,"rowhilite");}else{if(typeof el.navtype=="undefined"||(el.navtype!=50&&(el.navtype==0||Math.abs(el.navtype)>2)))
Calendar.removeClass(el,"active");Calendar.removeClass(el,"hilite");Calendar.removeClass(el.parentNode,"rowhilite");}
ev||(ev=window.event);if(el.navtype==50&&target!=el){var pos=Calendar.getAbsolutePos(el);var w=el.offsetWidth;var x=ev.clientX;var dx;var decrease=true;if(x>pos.x+w){dx=x-pos.x-w;decrease=false;}else
dx=pos.x-x;if(dx<0)dx=0;var range=el._range;var current=el._current;var count=Math.floor(dx/10)%range.length;for(var i=range.length;--i>=0;)
if(range[i]==current)
break;while(count-->0)
if(decrease){if(--i<0)
i=range.length-1;}else if(++i>=range.length)
i=0;var newval=range[i];el.innerHTML=newval;cal.onUpdateTime();}
var mon=Calendar.findMonth(target);if(mon){if(mon.month!=cal.date.getMonth()){if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}
Calendar.addClass(mon,"hilite");cal.hilitedMonth=mon;}else if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}}else{if(cal.hilitedMonth){Calendar.removeClass(cal.hilitedMonth,"hilite");}
var year=Calendar.findYear(target);if(year){if(year.year!=cal.date.getFullYear()){if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}
Calendar.addClass(year,"hilite");cal.hilitedYear=year;}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}else if(cal.hilitedYear){Calendar.removeClass(cal.hilitedYear,"hilite");}}
return Calendar.stopEvent(ev);};Calendar.tableMouseDown=function(ev){if(Calendar.getTargetElement(ev)==Calendar.getElement(ev)){return Calendar.stopEvent(ev);}};Calendar.calDragIt=function(ev){var cal=Calendar._C;if(!(cal&&cal.dragging)){return false;}
var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posX=ev.pageX;posY=ev.pageY;}
cal.hideShowCovered();var st=cal.element.style;st.left=(posX-cal.xOffs)+"px";st.top=(posY-cal.yOffs)+"px";return Calendar.stopEvent(ev);};Calendar.calDragEnd=function(ev){var cal=Calendar._C;if(!cal){return false;}
cal.dragging=false;with(Calendar){removeEvent(document,"mousemove",calDragIt);removeEvent(document,"mouseup",calDragEnd);tableMouseUp(ev);}
cal.hideShowCovered();};Calendar.dayMouseDown=function(ev){var el=Calendar.getElement(ev);if(el.disabled){return false;}
var cal=el.calendar;cal.activeDiv=el;Calendar._C=cal;if(el.navtype!=300)with(Calendar){if(el.navtype==50){el._current=el.innerHTML;addEvent(document,"mousemove",tableMouseOver);}else
addEvent(document,Calendar.is_ie5?"mousemove":"mouseover",tableMouseOver);addClass(el,"hilite active");addEvent(document,"mouseup",tableMouseUp);}else if(cal.isPopup){cal._dragStart(ev);}
if(el.navtype==-1||el.navtype==1){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout("Calendar.showMonthsCombo()",250);}else if(el.navtype==-2||el.navtype==2){if(cal.timeout)clearTimeout(cal.timeout);cal.timeout=setTimeout((el.navtype>0)?"Calendar.showYearsCombo(true)":"Calendar.showYearsCombo(false)",250);}else{cal.timeout=null;}
return Calendar.stopEvent(ev);};Calendar.dayMouseDblClick=function(ev){Calendar.cellClick(Calendar.getElement(ev),ev||window.event);if(Calendar.is_ie){document.selection.empty();}};Calendar.dayMouseOver=function(ev){var el=Calendar.getElement(ev);if(Calendar.isRelated(el,ev)||Calendar._C||el.disabled){return false;}
if(el.ttip){if(el.ttip.substr(0,1)=="_"){el.ttip=el.caldate.print(el.calendar.ttDateFormat)+el.ttip.substr(1);}
el.calendar.tooltips.innerHTML=el.ttip;}
if(el.navtype!=300){Calendar.addClass(el,"hilite");if(el.caldate){Calendar.addClass(el.parentNode,"rowhilite");}}
return Calendar.stopEvent(ev);};Calendar.dayMouseOut=function(ev){with(Calendar){var el=getElement(ev);if(isRelated(el,ev)||_C||el.disabled)
return false;removeClass(el,"hilite");if(el.caldate)
removeClass(el.parentNode,"rowhilite");if(el.calendar)
el.calendar.tooltips.innerHTML=_TT["SEL_DATE"];return stopEvent(ev);}};Calendar.cellClick=function(el,ev){var cal=el.calendar;var closing=false;var newdate=false;var date=null;if(typeof el.navtype=="undefined"){if(cal.currentDateEl){Calendar.removeClass(cal.currentDateEl,"selected");Calendar.addClass(el,"selected");closing=(cal.currentDateEl==el);if(!closing){cal.currentDateEl=el;}}
cal.date.setDateOnly(el.caldate);date=cal.date;var other_month=!(cal.dateClicked=!el.otherMonth);if(!other_month&&!cal.currentDateEl)
cal._toggleMultipleDate(new Date(date));else
newdate=!el.disabled;if(other_month)
cal._init(cal.firstDayOfWeek,date);}else{if(el.navtype==200){Calendar.removeClass(el,"hilite");cal.callCloseHandler();return;}
date=new Date(cal.date);if(el.navtype==0)
date.setDateOnly(new Date());cal.dateClicked=false;var year=date.getFullYear();var mon=date.getMonth();function setMonth(m){var day=date.getDate();var max=date.getMonthDays(m);if(day>max){date.setDate(max);}
date.setMonth(m);};switch(el.navtype){case 400:Calendar.removeClass(el,"hilite");var text=Calendar._TT["ABOUT"];if(typeof text!="undefined"){text+=cal.showsTime?Calendar._TT["ABOUT_TIME"]:"";}else{text="Help and about box text is not translated into this language.\n"+"If you know this language and you feel generous please update\n"+"the corresponding file in \"lang\" subdir to match calendar-en.js\n"+"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution  ;-)\n\n"+"Thank you!\n"+"http://dynarch.com/mishoo/calendar.epl\n";}
alert(text);return;case-2:if(year>cal.minYear){date.setFullYear(year-1);}
break;case-1:if(mon>0){setMonth(mon-1);}else if(year-->cal.minYear){date.setFullYear(year);setMonth(11);}
break;case 1:if(mon<11){setMonth(mon+1);}else if(year<cal.maxYear){date.setFullYear(year+1);setMonth(0);}
break;case 2:if(year<cal.maxYear){date.setFullYear(year+1);}
break;case 100:cal.setFirstDayOfWeek(el.fdow);return;case 50:var range=el._range;var current=el.innerHTML;for(var i=range.length;--i>=0;)
if(range[i]==current)
break;if(ev&&ev.shiftKey){if(--i<0)
i=range.length-1;}else if(++i>=range.length)
i=0;var newval=range[i];el.innerHTML=newval;cal.onUpdateTime();return;case 0:if((typeof cal.getDateStatus=="function")&&cal.getDateStatus(date,date.getFullYear(),date.getMonth(),date.getDate())){return false;}
break;}
if(!date.equalsTo(cal.date)){cal.setDate(date);newdate=true;}else if(el.navtype==0)
newdate=closing=true;}
if(newdate){ev&&cal.callHandler();}
if(closing){Calendar.removeClass(el,"hilite");ev&&cal.callCloseHandler();}};Calendar.prototype.create=function(_par){var parent=null;if(!_par){parent=document.getElementsByTagName("body")[0];this.isPopup=true;}else{parent=_par;this.isPopup=false;}
this.date=this.dateStr?new Date(this.dateStr):new Date();var table=Calendar.createElement("table");this.table=table;table.cellSpacing=0;table.cellPadding=0;table.calendar=this;Calendar.addEvent(table,"mousedown",Calendar.tableMouseDown);var div=Calendar.createElement("div");this.element=div;div.className="calendar";if(this.isPopup){div.style.position="absolute";div.style.display="none";}
div.appendChild(table);var thead=Calendar.createElement("thead",table);var cell=null;var row=null;var cal=this;var hh=function(text,cs,navtype){cell=Calendar.createElement("td",row);cell.colSpan=cs;cell.className="button";if(navtype!=0&&Math.abs(navtype)<=2)
cell.className+=" nav";Calendar._add_evs(cell);cell.calendar=cal;cell.navtype=navtype;cell.innerHTML="<div unselectable='on'>"+text+"</div>";return cell;};row=Calendar.createElement("tr",thead);var title_length=6;(this.isPopup)&&--title_length;(this.weekNumbers)&&++title_length;hh("?",1,400).ttip=Calendar._TT["INFO"];this.title=hh("",title_length,300);this.title.className="title";if(this.isPopup){this.title.ttip=Calendar._TT["DRAG_TO_MOVE"];this.title.style.cursor="move";hh("&#x00d7;",1,200).ttip=Calendar._TT["CLOSE"];}
row=Calendar.createElement("tr",thead);row.className="headrow";this._nav_py=hh("&#x00ab;",1,-2);this._nav_py.ttip=Calendar._TT["PREV_YEAR"];this._nav_pm=hh("&#x2039;",1,-1);this._nav_pm.ttip=Calendar._TT["PREV_MONTH"];this._nav_now=hh(Calendar._TT["TODAY"],this.weekNumbers?4:3,0);this._nav_now.ttip=Calendar._TT["GO_TODAY"];this._nav_nm=hh("&#x203a;",1,1);this._nav_nm.ttip=Calendar._TT["NEXT_MONTH"];this._nav_ny=hh("&#x00bb;",1,2);this._nav_ny.ttip=Calendar._TT["NEXT_YEAR"];row=Calendar.createElement("tr",thead);row.className="daynames";if(this.weekNumbers){cell=Calendar.createElement("td",row);cell.className="name wn";cell.innerHTML=Calendar._TT["WK"];}
for(var i=7;i>0;--i){cell=Calendar.createElement("td",row);if(!i){cell.navtype=100;cell.calendar=this;Calendar._add_evs(cell);}}
this.firstdayname=(this.weekNumbers)?row.firstChild.nextSibling:row.firstChild;this._displayWeekdays();var tbody=Calendar.createElement("tbody",table);this.tbody=tbody;for(i=6;i>0;--i){row=Calendar.createElement("tr",tbody);if(this.weekNumbers){cell=Calendar.createElement("td",row);}
for(var j=7;j>0;--j){cell=Calendar.createElement("td",row);cell.calendar=this;Calendar._add_evs(cell);}}
if(this.showsTime){row=Calendar.createElement("tr",tbody);row.className="time";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;cell.innerHTML=Calendar._TT["TIME"]||"&nbsp;";cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=this.weekNumbers?4:3;(function(){function makeTimePart(className,init,range_start,range_end){var part=Calendar.createElement("span",cell);part.className=className;part.innerHTML=init;part.calendar=cal;part.ttip=Calendar._TT["TIME_PART"];part.navtype=50;part._range=[];if(typeof range_start!="number")
part._range=range_start;else{for(var i=range_start;i<=range_end;++i){var txt;if(i<10&&range_end>=10)txt='0'+i;else txt=''+i;part._range[part._range.length]=txt;}}
Calendar._add_evs(part);return part;};var hrs=cal.date.getHours();var mins=cal.date.getMinutes();var t12=!cal.time24;var pm=(hrs>12);if(t12&&pm)hrs-=12;var H=makeTimePart("hour",hrs,t12?1:0,t12?12:23);var span=Calendar.createElement("span",cell);span.innerHTML=":";span.className="colon";var M=makeTimePart("minute",mins,0,59);var AP=null;cell=Calendar.createElement("td",row);cell.className="time";cell.colSpan=2;if(t12)
AP=makeTimePart("ampm",pm?"pm":"am",["am","pm"]);else
cell.innerHTML="&nbsp;";cal.onSetTime=function(){var pm,hrs=this.date.getHours(),mins=this.date.getMinutes();if(t12){pm=(hrs>=12);if(pm)hrs-=12;if(hrs==0)hrs=12;AP.innerHTML=pm?"pm":"am";}
H.innerHTML=(hrs<10)?("0"+hrs):hrs;M.innerHTML=(mins<10)?("0"+mins):mins;};cal.onUpdateTime=function(){var date=this.date;var h=parseInt(H.innerHTML,10);if(t12){if(/pm/i.test(AP.innerHTML)&&h<12)
h+=12;else if(/am/i.test(AP.innerHTML)&&h==12)
h=0;}
var d=date.getDate();var m=date.getMonth();var y=date.getFullYear();date.setHours(h);date.setMinutes(parseInt(M.innerHTML,10));date.setFullYear(y);date.setMonth(m);date.setDate(d);this.dateClicked=false;this.callHandler();};})();}else{this.onSetTime=this.onUpdateTime=function(){};}
var tfoot=Calendar.createElement("tfoot",table);row=Calendar.createElement("tr",tfoot);row.className="footrow";cell=hh(Calendar._TT["SEL_DATE"],this.weekNumbers?8:7,300);cell.className="ttip";if(this.isPopup){cell.ttip=Calendar._TT["DRAG_TO_MOVE"];cell.style.cursor="move";}
this.tooltips=cell;div=Calendar.createElement("div",this.element);this.monthsCombo=div;div.className="combo";for(i=0;i<Calendar._MN.length;++i){var mn=Calendar.createElement("div");mn.className=Calendar.is_ie?"label-IEfix":"label";mn.month=i;mn.innerHTML=Calendar._SMN[i];div.appendChild(mn);}
div=Calendar.createElement("div",this.element);this.yearsCombo=div;div.className="combo";for(i=12;i>0;--i){var yr=Calendar.createElement("div");yr.className=Calendar.is_ie?"label-IEfix":"label";div.appendChild(yr);}
this._init(this.firstDayOfWeek,this.date);parent.appendChild(this.element);};Calendar._keyEvent=function(ev){var cal=window._dynarch_popupCalendar;if(!cal||cal.multiple)
return false;(Calendar.is_ie)&&(ev=window.event);var act=(Calendar.is_ie||ev.type=="keypress"),K=ev.keyCode;if(ev.ctrlKey){switch(K){case 37:act&&Calendar.cellClick(cal._nav_pm);break;case 38:act&&Calendar.cellClick(cal._nav_py);break;case 39:act&&Calendar.cellClick(cal._nav_nm);break;case 40:act&&Calendar.cellClick(cal._nav_ny);break;default:return false;}}else switch(K){case 32:Calendar.cellClick(cal._nav_now);break;case 27:act&&cal.callCloseHandler();break;case 37:case 38:case 39:case 40:if(act){var prev,x,y,ne,el,step;prev=K==37||K==38;step=(K==37||K==39)?1:7;function setVars(){el=cal.currentDateEl;var p=el.pos;x=p&15;y=p>>4;ne=cal.ar_days[y][x];};setVars();function prevMonth(){var date=new Date(cal.date);date.setDate(date.getDate()-step);cal.setDate(date);};function nextMonth(){var date=new Date(cal.date);date.setDate(date.getDate()+step);cal.setDate(date);};while(1){switch(K){case 37:if(--x>=0)
ne=cal.ar_days[y][x];else{x=6;K=38;continue;}
break;case 38:if(--y>=0)
ne=cal.ar_days[y][x];else{prevMonth();setVars();}
break;case 39:if(++x<7)
ne=cal.ar_days[y][x];else{x=0;K=40;continue;}
break;case 40:if(++y<cal.ar_days.length)
ne=cal.ar_days[y][x];else{nextMonth();setVars();}
break;}
break;}
if(ne){if(!ne.disabled)
Calendar.cellClick(ne);else if(prev)
prevMonth();else
nextMonth();}}
break;case 13:if(act)
Calendar.cellClick(cal.currentDateEl,ev);break;default:return false;}
return Calendar.stopEvent(ev);};Calendar.prototype._init=function(firstDayOfWeek,date){var today=new Date(),TY=today.getFullYear(),TM=today.getMonth(),TD=today.getDate();this.table.style.visibility="hidden";var year=date.getFullYear();if(year<this.minYear){year=this.minYear;date.setFullYear(year);}else if(year>this.maxYear){year=this.maxYear;date.setFullYear(year);}
this.firstDayOfWeek=firstDayOfWeek;this.date=new Date(date);var month=date.getMonth();var mday=date.getDate();var no_days=date.getMonthDays();date.setDate(1);var day1=(date.getDay()-this.firstDayOfWeek)%7;if(day1<0)
day1+=7;date.setDate(-day1);date.setDate(date.getDate()+1);var row=this.tbody.firstChild;var MN=Calendar._SMN[month];var ar_days=this.ar_days=new Array();var weekend=Calendar._TT["WEEKEND"];var dates=this.multiple?(this.datesCells={}):null;for(var i=0;i<6;++i,row=row.nextSibling){var cell=row.firstChild;if(this.weekNumbers){cell.className="day wn";cell.innerHTML=date.getWeekNumber();cell=cell.nextSibling;}
row.className="daysrow";var hasdays=false,iday,dpos=ar_days[i]=[];for(var j=0;j<7;++j,cell=cell.nextSibling,date.setDate(iday+1)){iday=date.getDate();var wday=date.getDay();cell.className="day";cell.pos=i<<4|j;dpos[j]=cell;var current_month=(date.getMonth()==month);if(!current_month){if(this.showsOtherMonths){cell.className+=" othermonth";cell.otherMonth=true;}else{cell.className="emptycell";cell.innerHTML="&nbsp;";cell.disabled=true;continue;}}else{cell.otherMonth=false;hasdays=true;}
cell.disabled=false;cell.innerHTML=this.getDateText?this.getDateText(date,iday):iday;if(dates)
dates[date.print("%Y%m%d")]=cell;if(this.getDateStatus){var status=this.getDateStatus(date,year,month,iday);if(this.getDateToolTip){var toolTip=this.getDateToolTip(date,year,month,iday);if(toolTip)
cell.title=toolTip;}
if(status===true){cell.className+=" disabled";cell.disabled=true;}else{if(/disabled/i.test(status))
cell.disabled=true;cell.className+=" "+status;}}
if(!cell.disabled){cell.caldate=new Date(date);cell.ttip="_";if(!this.multiple&&current_month&&iday==mday&&this.hiliteToday){cell.className+=" selected";this.currentDateEl=cell;}
if(date.getFullYear()==TY&&date.getMonth()==TM&&iday==TD){cell.className+=" today";cell.ttip+=Calendar._TT["PART_TODAY"];}
if(weekend.indexOf(wday.toString())!=-1)
cell.className+=cell.otherMonth?" oweekend":" weekend";}}
if(!(hasdays||this.showsOtherMonths))
row.className="emptyrow";}
this.title.innerHTML=Calendar._MN[month]+", "+year;this.onSetTime();this.table.style.visibility="visible";this._initMultipleDates();};Calendar.prototype._initMultipleDates=function(){if(this.multiple){if(Prototype){this.muliple.each(function(multiple){var cell=this.datesCells[multiple.key];var d=multiple.value;if(!d)
return;if(cell)
cell.className+=" selected";})}else{for(var i in this.multiple){var cell=this.datesCells[i];var d=this.multiple[i];if(!d)
continue;if(cell)
cell.className+=" selected";}}}};Calendar.prototype._toggleMultipleDate=function(date){if(this.multiple){var ds=date.print("%Y%m%d");var cell=this.datesCells[ds];if(cell){var d=this.multiple[ds];if(!d){Calendar.addClass(cell,"selected");this.multiple[ds]=date;}else{Calendar.removeClass(cell,"selected");delete this.multiple[ds];}}}};Calendar.prototype.setDateToolTipHandler=function(unaryFunction){this.getDateToolTip=unaryFunction;};Calendar.prototype.setDate=function(date){if(!date.equalsTo(this.date)){this._init(this.firstDayOfWeek,date);}};Calendar.prototype.refresh=function(){this._init(this.firstDayOfWeek,this.date);};Calendar.prototype.setFirstDayOfWeek=function(firstDayOfWeek){this._init(firstDayOfWeek,this.date);this._displayWeekdays();};Calendar.prototype.setDateStatusHandler=Calendar.prototype.setDisabledHandler=function(unaryFunction){this.getDateStatus=unaryFunction;};Calendar.prototype.setRange=function(a,z){this.minYear=a;this.maxYear=z;};Calendar.prototype.callHandler=function(){if(this.onSelected){this.onSelected(this,this.date.print(this.dateFormat));}};Calendar.prototype.callCloseHandler=function(){if(this.onClose){this.onClose(this);}
this.hideShowCovered();};Calendar.prototype.destroy=function(){var el=this.element.parentNode;el.removeChild(this.element);Calendar._C=null;window._dynarch_popupCalendar=null;};Calendar.prototype.reparent=function(new_parent){var el=this.element;el.parentNode.removeChild(el);new_parent.appendChild(el);};Calendar._checkCalendar=function(ev){var calendar=window._dynarch_popupCalendar;if(!calendar){return false;}
var el=Calendar.is_ie?Calendar.getElement(ev):Calendar.getTargetElement(ev);for(;el!=null&&el!=calendar.element;el=el.parentNode);if(el==null){window._dynarch_popupCalendar.callCloseHandler();return Calendar.stopEvent(ev);}};Calendar.prototype.show=function(){var rows=this.table.getElementsByTagName("tr");for(var i=rows.length;i>0;){var row=rows[--i];Calendar.removeClass(row,"rowhilite");var cells=row.getElementsByTagName("td");for(var j=cells.length;j>0;){var cell=cells[--j];Calendar.removeClass(cell,"hilite");Calendar.removeClass(cell,"active");}}
this.element.style.display="block";this.hidden=false;if(this.isPopup){window._dynarch_popupCalendar=this;Calendar.addEvent(document,"keydown",Calendar._keyEvent);Calendar.addEvent(document,"keypress",Calendar._keyEvent);Calendar.addEvent(document,"mousedown",Calendar._checkCalendar);}
this.hideShowCovered();};Calendar.prototype.hide=function(){if(this.isPopup){Calendar.removeEvent(document,"keydown",Calendar._keyEvent);Calendar.removeEvent(document,"keypress",Calendar._keyEvent);Calendar.removeEvent(document,"mousedown",Calendar._checkCalendar);}
this.element.style.display="none";this.hidden=true;this.hideShowCovered();};Calendar.prototype.showAt=function(x,y){var s=this.element.style;s.left=x+"px";s.top=y+"px";this.show();};Calendar.prototype.showAtElement=function(el,opts){var self=this;var p=Calendar.getAbsolutePos(el);if(!opts||typeof opts!="string"){this.showAt(p.x,p.y+el.offsetHeight);return true;}
function fixPosition(box){if(box.x<0)
box.x=0;if(box.y<0)
box.y=0;var cp=document.createElement("div");var s=cp.style;s.position="absolute";s.right=s.bottom=s.width=s.height="0px";document.body.appendChild(cp);var br=Calendar.getAbsolutePos(cp);document.body.removeChild(cp);if(Calendar.is_ie){br.y+=document.body.scrollTop;br.x+=document.body.scrollLeft;}else{br.y+=window.scrollY;br.x+=window.scrollX;}
var tmp=box.x+box.width-br.x;if(tmp>0)box.x-=tmp;tmp=box.y+box.height-br.y;if(tmp>0)box.y-=tmp;};this.element.style.display="block";Calendar.continuation_for_the_fucking_khtml_browser=function(){var w=self.element.offsetWidth;var h=self.element.offsetHeight;self.element.style.display="none";var valign=opts.substr(0,1);var halign="l";if(opts.length>1){halign=opts.substr(1,1);}
switch(valign){case"T":p.y-=h;break;case"B":p.y+=el.offsetHeight;break;case"C":p.y+=(el.offsetHeight-h)/2;break;case"t":p.y+=el.offsetHeight-h;break;case"b":break;}
switch(halign){case"L":p.x-=w;break;case"R":p.x+=el.offsetWidth;break;case"C":p.x+=(el.offsetWidth-w)/2;break;case"l":p.x+=el.offsetWidth-w;break;case"r":break;}
p.width=w;p.height=h+40;self.monthsCombo.style.display="none";fixPosition(p);self.showAt(p.x,p.y);};if(Calendar.is_khtml)
setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()",10);else
Calendar.continuation_for_the_fucking_khtml_browser();};Calendar.prototype.setDateFormat=function(str){this.dateFormat=str;};Calendar.prototype.setTtDateFormat=function(str){this.ttDateFormat=str;};Calendar.prototype.parseDate=function(str,fmt){if(!fmt)
fmt=this.dateFormat;this.setDate(Date.parseDate(str,fmt));};Calendar.prototype.hideShowCovered=function(){if(!Calendar.is_ie&&!Calendar.is_opera)
return;function getVisib(obj){var value=obj.style.visibility;if(!value){if(document.defaultView&&typeof(document.defaultView.getComputedStyle)=="function"){if(!Calendar.is_khtml)
value=document.defaultView.getComputedStyle(obj,"").getPropertyValue("visibility");else
value='';}else if(obj.currentStyle){value=obj.currentStyle.visibility;}else
value='';}
return value;};var tags=new Array("applet","iframe","select");var el=this.element;var p=Calendar.getAbsolutePos(el);var EX1=p.x;var EX2=el.offsetWidth+EX1;var EY1=p.y;var EY2=el.offsetHeight+EY1;for(var k=tags.length;k>0;){var ar=document.getElementsByTagName(tags[--k]);var cc=null;for(var i=ar.length;i>0;){cc=ar[--i];p=Calendar.getAbsolutePos(cc);var CX1=p.x;var CX2=cc.offsetWidth+CX1;var CY1=p.y;var CY2=cc.offsetHeight+CY1;if(this.hidden||(CX1>EX2)||(CX2<EX1)||(CY1>EY2)||(CY2<EY1)){if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}
cc.style.visibility=cc.__msh_save_visibility;}else{if(!cc.__msh_save_visibility){cc.__msh_save_visibility=getVisib(cc);}
cc.style.visibility="hidden";}}}};Calendar.prototype._displayWeekdays=function(){var fdow=this.firstDayOfWeek;var cell=this.firstdayname;var weekend=Calendar._TT["WEEKEND"];for(var i=0;i<7;++i){cell.className="day name";var realday=(i+fdow)%7;if(i){cell.ttip=Calendar._TT["DAY_FIRST"].replace("%s",Calendar._DN[realday]);cell.navtype=100;cell.calendar=this;cell.fdow=realday;Calendar._add_evs(cell);}
if(weekend.indexOf(realday.toString())!=-1){Calendar.addClass(cell,"weekend");}
cell.innerHTML=Calendar._SDN[(i+fdow)%7];cell=cell.nextSibling;}};Calendar.prototype._hideCombos=function(){this.monthsCombo.style.display="none";this.yearsCombo.style.display="none";};Calendar.prototype._dragStart=function(ev){if(this.dragging){return;}
this.dragging=true;var posX;var posY;if(Calendar.is_ie){posY=window.event.clientY+document.body.scrollTop;posX=window.event.clientX+document.body.scrollLeft;}else{posY=ev.clientY+window.scrollY;posX=ev.clientX+window.scrollX;}
var st=this.element.style;this.xOffs=posX-parseInt(st.left);this.yOffs=posY-parseInt(st.top);with(Calendar){addEvent(document,"mousemove",calDragIt);addEvent(document,"mouseup",calDragEnd);}};Date._MD=new Array(31,28,31,30,31,30,31,31,30,31,30,31);Date.SECOND=1000;Date.MINUTE=60*Date.SECOND;Date.HOUR=60*Date.MINUTE;Date.DAY=24*Date.HOUR;Date.WEEK=7*Date.DAY;Date.parseDate=function(str,fmt){var today=new Date();var y=0;var m=-1;var d=0;var a=str.split(/\W+/);var b=fmt.match(/%./g);var i=0,j=0;var hr=0;var min=0;for(i=0;i<a.length;++i){if(!a[i])
continue;switch(b[i]){case"%d":case"%e":d=parseInt(a[i],10);break;case"%m":m=parseInt(a[i],10)-1;break;case"%Y":case"%y":y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);break;case"%b":case"%B":for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){m=j;break;}}
break;case"%H":case"%I":case"%k":case"%l":hr=parseInt(a[i],10);break;case"%P":case"%p":if(/pm/i.test(a[i])&&hr<12)
hr+=12;else if(/am/i.test(a[i])&&hr>=12)
hr-=12;break;case"%M":min=parseInt(a[i],10);break;}}
if(isNaN(y))y=today.getFullYear();if(isNaN(m))m=today.getMonth();if(isNaN(d))d=today.getDate();if(isNaN(hr))hr=today.getHours();if(isNaN(min))min=today.getMinutes();if(y!=0&&m!=-1&&d!=0)
return new Date(y,m,d,hr,min,0);y=0;m=-1;d=0;for(i=0;i<a.length;++i){if(a[i].search(/[a-zA-Z]+/)!=-1){var t=-1;for(j=0;j<12;++j){if(Calendar._MN[j].substr(0,a[i].length).toLowerCase()==a[i].toLowerCase()){t=j;break;}}
if(t!=-1){if(m!=-1){d=m+1;}
m=t;}}else if(parseInt(a[i],10)<=12&&m==-1){m=a[i]-1;}else if(parseInt(a[i],10)>31&&y==0){y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);}else if(d==0){d=a[i];}}
if(y==0)
y=today.getFullYear();if(m!=-1&&d!=0)
return new Date(y,m,d,hr,min,0);return today;};Date.prototype.getMonthDays=function(month){var year=this.getFullYear();if(typeof month=="undefined"){month=this.getMonth();}
if(((0==(year%4))&&((0!=(year%100))||(0==(year%400))))&&month==1){return 29;}else{return Date._MD[month];}};Date.prototype.getDayOfYear=function(){var now=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var then=new Date(this.getFullYear(),0,0,0,0,0);var time=now-then;return Math.floor(time/Date.DAY);};Date.prototype.getWeekNumber=function(){var d=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var DoW=d.getDay();d.setDate(d.getDate()-(DoW+6)%7+3);var ms=d.valueOf();d.setMonth(0);d.setDate(4);return Math.round((ms-d.valueOf())/(7*864e5))+1;};Date.prototype.equalsTo=function(date){return((this.getFullYear()==date.getFullYear())&&(this.getMonth()==date.getMonth())&&(this.getDate()==date.getDate())&&(this.getHours()==date.getHours())&&(this.getMinutes()==date.getMinutes()));};Date.prototype.setDateOnly=function(date){var tmp=new Date(date);this.setDate(1);this.setFullYear(tmp.getFullYear());this.setMonth(tmp.getMonth());this.setDate(tmp.getDate());};Date.prototype.print=function(str){var m=this.getMonth();var d=this.getDate();var y=this.getFullYear();var wn=this.getWeekNumber();var w=this.getDay();var s={};var hr=this.getHours();var pm=(hr>=12);var ir=(pm)?(hr-12):hr;var dy=this.getDayOfYear();if(ir==0)
ir=12;var min=this.getMinutes();var sec=this.getSeconds();s["%a"]=Calendar._SDN[w];s["%A"]=Calendar._DN[w];s["%b"]=Calendar._SMN[m];s["%B"]=Calendar._MN[m];s["%C"]=1+Math.floor(y/100);s["%d"]=(d<10)?("0"+d):d;s["%e"]=d;s["%H"]=(hr<10)?("0"+hr):hr;s["%I"]=(ir<10)?("0"+ir):ir;s["%j"]=(dy<100)?((dy<10)?("00"+dy):("0"+dy)):dy;s["%k"]=hr;s["%l"]=ir;s["%m"]=(m<9)?("0"+(1+m)):(1+m);s["%M"]=(min<10)?("0"+min):min;s["%n"]="\n";s["%p"]=pm?"PM":"AM";s["%P"]=pm?"pm":"am";s["%s"]=Math.floor(this.getTime()/1000);s["%S"]=(sec<10)?("0"+sec):sec;s["%t"]="\t";s["%U"]=s["%W"]=s["%V"]=(wn<10)?("0"+wn):wn;s["%u"]=w+1;s["%w"]=w;s["%y"]=(''+y).substr(2,2);s["%Y"]=y;s["%%"]="%";var re=/%./g;if(!Calendar.is_ie5&&!Calendar.is_khtml)
return str.replace(re,function(par){return s[par]||par;});var a=str.match(re);for(var i=0;i<a.length;i++){var tmp=s[a[i]];if(tmp){re=new RegExp(a[i],'g');str=str.replace(re,tmp);}}
return str;};Date.prototype.__msh_oldSetFullYear=Date.prototype.setFullYear;Date.prototype.setFullYear=function(y){var d=new Date(this);d.__msh_oldSetFullYear(y);if(d.getMonth()!=this.getMonth())
this.setDate(28);this.__msh_oldSetFullYear(y);};window._dynarch_popupCalendar=null;Calendar._DN=new Array
("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");Calendar._SDN=new Array
("日","一","二","三","四","五","六","日");Calendar._MN=new Array
("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");Calendar._SMN=new Array
("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");Calendar._TT={};Calendar._TT["INFO"]="帮助";Calendar._TT["ABOUT"]="DHTML Date/Time Selector\n"+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n"+"For latest version visit: http://www.dynarch.com/projects/calendar/\n"+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details."+"\n\n"+"选择日期:\n"+"- 点击 \xab, \xbb 按钮选择年份\n"+"- 点击 "+String.fromCharCode(0x2039)+", "+String.fromCharCode(0x203a)+" 按钮选择月份\n"+"- 长按以上按钮可从菜单中快速选择年份或月份";Calendar._TT["ABOUT_TIME"]="\n\n"+"选择时间:\n"+"- 点击小时或分钟可使改数值加一\n"+"- 按住Shift键点击小时或分钟可使改数值减一\n"+"- 点击拖动鼠标可进行快速选择";Calendar._TT["PREV_YEAR"]="上一年 (按住出菜单)";Calendar._TT["PREV_MONTH"]="上一月 (按住出菜单)";Calendar._TT["GO_TODAY"]="转到今日";Calendar._TT["NEXT_MONTH"]="下一月 (按住出菜单)";Calendar._TT["NEXT_YEAR"]="下一年 (按住出菜单)";Calendar._TT["SEL_DATE"]="选择日期";Calendar._TT["DRAG_TO_MOVE"]="拖动";Calendar._TT["PART_TODAY"]=" (今日)";Calendar._TT["DAY_FIRST"]="最左边显示%s";Calendar._TT["WEEKEND"]="0,6";Calendar._TT["CLOSE"]="关闭";Calendar._TT["TODAY"]="今日";Calendar._TT["TIME_PART"]="(Shift-)点击鼠标或拖动改变值";Calendar._TT["DEF_DATE_FORMAT"]="%Y-%m-%d";Calendar._TT["TT_DATE_FORMAT"]="%A, %b %e日";Calendar._TT["WK"]="周";Calendar._TT["TIME"]="时间:";Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("formName",null);param_default("inputFieldYear",null);param_default("inputFieldMonth",null);param_default("inputFieldDay",null);param_default("inputFieldHour",null);param_default("inputFieldMinute",null);param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("help",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button","help","inputFieldDay","inputFieldMonth","inputFieldYear","inputFieldHour","inputFieldMinute"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){if(params['formName'])
params[tmp[i]]=document.forms[params['formName']][params[tmp[i]]];else
params[tmp[i]]=document.getElementById(params[tmp[i]]);}}
if(!(params.flat||params.multiple||params.inputField||params.inputFieldDay||params.inputFieldMonth||params.inputFieldYear||params.inputFieldHour||params.inputFieldMinute||params.displayArea||params.button)){alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false;}
function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")
p.inputField.onchange();}
if(update&&p.inputFieldHour){p.inputFieldHour.value=cal.date.getHours();if(typeof p.inputFieldHour.onchange=="function")
p.inputFieldHour.onchange();}
if(update&&p.inputFieldMinute){p.inputFieldMinute.value=cal.date.getMinutes();if(typeof p.inputFieldMinute.onchange=="function")
p.inputFieldMinute.onchange();}
if(update&&p.inputFieldDay){p.inputFieldDay.value=cal.date.getDate();if(typeof p.inputFieldDay.onchange=="function")
p.inputFieldDay.onchange();}
if(update&&p.inputFieldMonth){p.inputFieldMonth.value=cal.date.getMonth()+1;if(typeof p.inputFieldMonth.onchange=="function")
p.inputFieldMonth.onchange();}
if(update&&p.inputFieldYear){p.inputFieldYear.value=cal.date.getFullYear();if(typeof p.inputFieldYear.onchange=="function")
p.inputFieldYear.onchange();}
if(update&&p.displayArea)
p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")
p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")
p.flatCallback(cal);}
if(update&&p.singleClick&&cal.dateClicked)
cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")
params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n  Flat specified but can't find parent.");return false;}
var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}
if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}
cal.create(params.flat);cal.show();return false;}
var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)
params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)
cal.setDate(params.date);cal.hide();}
if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}
cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)
cal.create();cal.refresh();if(!params.position){cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);}else{cal.showAt(params.position[0],params.position[1]);}
return false;};return cal;};