function $(el,tagName,cssClass)
{if(!exists(el))return false;if(cssClass==null&&tagName==null)
{if(typeof el=="string")
{return document.getElementById(el);}
else
{return el;}}
else
{var ReturnArray=new Array;var list=$(el).getElementsByTagName(tagName);for(var i=0;i<list.length;i++)
{if(exists(list[i].className)&&list[i].className.match(cssClass))
{ReturnArray.push(list[i])}}
if(ReturnArray.length==1)
return ReturnArray[0]
else
return ReturnArray;}}
function exists(el)
{if(typeof el!="unindentified"&&el!=null)
return true;else
return false;}
function getIndex(item,collection)
{var l=collection.length;for(var i=0;i<l;i++)
{if(item==collection[i])
{return i;break;}}
return false;}
function eventAdd(eType,func,el)
{if(el.addEventListener)
addEventListener(eType,func,false);else
el.attachEvent("on"+eType,func)}
function eventClear(eType,func,el)
{if(el.removeEventListener)
el.removeEventListener(eType,func,false);else
el.detachEvent("on"+eType,func)}
function onLoad(func)
{eventAdd("load",func,window);}
function getScroll(){var returnvar={}
returnvar.top=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;returnvar.left=document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;return returnvar;}
function GetLocus(element,relative)
{var el=$(element);var returnvar={};if(el.offsetParent&&el&&relative==null)
{returnvar.x=el.offsetLeft;returnvar.y=el.offsetTop;while(el.offsetParent)
{el=el.offsetParent;returnvar.x+=el.offsetLeft;returnvar.y+=el.offsetTop;}}
else
{returnvar.x=el.offsetLeft;returnvar.y=el.offsetTop;}
returnvar.w=element.offsetWidth;returnvar.h=element.offsetHeight;return returnvar;}
function trueMouseOut(event,el)
{if(!event)event=window.event;var target=event.relatedTarget||event.toElement;if(target)
{if(target==el)return false;if(target.parentNode)
{var x=0;while(target.parentNode)
{target=target.parentNode;if(target==el)
return false;else if(target.tagName=="HTML"||x>5)
{return true;break;}}}}}
onLoad(function(){document.body.className=document.body.className.replace(" noJS","");var commentsDiv=$("commentsDiv");if(commentsDiv)
{comments.init(commentsDiv)}});function show(el)
{el=$("div")
el.className=el.className.replace("noDisplay","");}
function hide(div)
{div=$("div")
div.className+=" noDisplay";}
var tooltip={timeout:null,T:2000,tip:null,obj:null,adjustY:0,adjustX:0,fx:null,closebutton:false,init:function(obj,msg,width)
{if(this.fx==null)
this.fx=new Anim();obj=$(obj);if(this.obj!=null&&this.obj==obj)
return false;var tip=$("cooltip");tip.className="cooltip tailtop";var html=$("cooltipHTML");if(width)
tip.style.width=width+"px";else
tip.style.width="";var scroll=getScroll();tip.style.display=" block";html.innerHTML=msg;var tail=$("cooltiptail");if(obj!=null)
{var pos=GetLocus(obj);var left;if((pos.y+tip.clientHeight+14)>=(document.documentElement.clientHeight+scroll.top))
{var top=pos.y-tip.clientHeight-tooltip.adjustY;tip.className="cooltip tailbottom";}
else
top=pos.y+obj.clientHeight+tooltip.adjustY;if((pos.x+obj.clientWidth+tip.clientWidth+10)>=(document.documentElement.clientWidth+scroll.left))
left=pos.x-tip.clientWidth/2;else
left=pos.x-tip.clientWidth/2+pos.w/2+tooltip.adjustX;if(left<0)
left=pos.x+scroll.left-tooltip.adjustX;var tailLeft=pos.x-left+3;if(tailLeft<0)
{left=pos.x+tooltip.adjustX;tailLeft=10;}
this.tip=tip;this.obj=obj;var start=new Array(top-5,0);var end=new Array(top,100);tip.style.left=left+"px";tip.style.top=top-5+"px";tip.style.opacity=0;tip.style.filter="alpha(opacity=0)";tail.style.left=tailLeft+"px";this.show(top,left,start,end)}},show:function(top,left,start,end)
{var tip=this.tip;this.fx.init(start,end,function(v)
{tip.style.top=v[0]+"px";tip.style.opacity=v[1]/100;tip.style.filter="alpha(opacity="+v[1]+");";},10,function()
{tip.style.opacity=null;tip.style.filter=null;tooltip.timeout=setTimeout("tooltip.hide();",tooltip.T);tooltip.T=2000;tooltip.adjustY=0;tooltip.adjustX=0;});},hide:function()
{var tip=this.tip;if(tip!=null)
{clearTimeout(this.timeout);var top=parseInt(tip.style.top);var start=new Array(top,100);var end=new Array(top+5,0);this.fx.init(start,end,function(v)
{if(isNaN(v[0]))
tip.style.top=0+"px";else
tip.style.top=v[0]+"px";tip.style.opacity=v[1]/100;tip.style.filter="alpha(opacity="+v[1]+");";},10,function(){tip.style.left="-2000px";tip.style.top=null;tip.style.opacity=null;tip.style.filter=null;tooltip.obj=null;});}}}
var Anim=function(){};Anim.prototype={fps:40,z:null,x:0,a:null,type:null,totalframes:null,endtime:null,init:function(start,end,callback,speed,callbackEnd,obj)
{if(this.z)this.clear();this.totalframes=50/(1*speed);this.endtime=new Date().getTime()+(this.totalframes*this.fps);var animObj=this;if(callbackEnd)
this.callbackEnd=callbackEnd;this.z=window.setInterval(function(){animObj.proccess(start,end,callback,speed,start.length);},this.fps);},proccess:function(start,end,callback,speed,l)
{var t=new Date().getTime();if(this.type=="linear")
var y=this.x/50
else
var y=Math.sin(this.x/100*Math.PI);var v=new Array;if(start.length)
{for(var i=l;i--;)
{v[i]=Math.round((end[i]-start[i])*y+start[i])}}
else
v=Math.round((end-start)*y+start)
if(t>=this.endtime||this.x>=50)
{callback(end);this.callbackEnd();this.clear();return;}
callback(v);this.x+=1*speed;},callbackEnd:function(){},clear:function()
{this.endtime=null;this.x=0;window.clearInterval(this.z);this.z=null;}}
var Prototype={Version:'1.4.0_pre10_ajax',emptyFunction:function(){},K:function(x){return x},ScriptFragment:'<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/}
var Class={create:function(){return function(){this.initialize.apply(this,arguments);}}}
var Abstract=new Object();Object.extend=function(destination,source){for(property in source){destination[property]=source[property];}
return destination;}
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;}}
Function.prototype.bind=function(object){var __method=this;return function(){return __method.apply(object,arguments);}}
Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){return __method.call(object,event||window.event);}}
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;i<arguments.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(){setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.callback();}finally{this.currentlyExecuting=false;}}}}
var Ajax={getTransport:function(){return Try.these(function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')},function(){return new XMLHttpRequest()})||false;}}
Ajax.Base=function(){};Ajax.Base.prototype={setOptions:function(options){this.options={method:'post',asynchronous:true,parameters:''}
Object.extend(this.options,options||{});},responseIsSuccess:function(){return this.transport.status==undefined||this.transport.status==0||(this.transport.status>=200&&this.transport.status<300);},responseIsFailure:function(){return!this.responseIsSuccess();}}
Ajax.Request=Class.create();Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(),{initialize:function(url,options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url);},request:function(url){var parameters=this.options.parameters||'';if(parameters.length>0)parameters+='&_=';try{if(this.options.method=='get')
url+='?'+parameters;this.transport.open(this.options.method,url,this.options.asynchronous);if(this.options.asynchronous){this.transport.onreadystatechange=this.onStateChange.bind(this);setTimeout((function(){this.respondToReadyState(1)}).bind(this),10);}
this.setRequestHeaders();var body=this.options.postBody?this.options.postBody:parameters;this.transport.send(this.options.method=='post'?body:null);}catch(e){}},setRequestHeaders:function(){var requestHeaders=['X-Requested-With','XMLHttpRequest','X-Prototype-Version',Prototype.Version];if(this.options.method=='post'){requestHeaders.push('Content-type','application/x-www-form-urlencoded');if(this.transport.overrideMimeType)
requestHeaders.push('Connection','close');}
if(this.options.requestHeaders)
requestHeaders.push.apply(requestHeaders,this.options.requestHeaders);for(var i=0;i<requestHeaders.length;i+=2)
this.transport.setRequestHeader(requestHeaders[i],requestHeaders[i+1]);},onStateChange:function(){var readyState=this.transport.readyState;if(readyState!=1)
this.respondToReadyState(this.transport.readyState);},evalJSON:function(){try{var json=this.transport.getResponseHeader('X-JSON'),object;object=eval(json);return object;}catch(e){}},respondToReadyState:function(readyState){var event=Ajax.Request.Events[readyState];var transport=this.transport,json=this.evalJSON();if(event=='Complete')
(this.options['on'+this.transport.status]||this.options['on'+(this.responseIsSuccess()?'Success':'Failure')]||Prototype.emptyFunction)(transport,json);(this.options['on'+event]||Prototype.emptyFunction)(transport,json);if(event=='Complete')
this.transport.onreadystatechange=Prototype.emptyFunction;}});Ajax.Updater=Class.create();Ajax.Updater.ScriptFragment='(?:<script.*?>)((\n|.)*?)(?:<\/script>)';Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize:function(container,url,options){this.containers={success:container.success?$(container.success):$(container),failure: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,object){this.updateContent();onComplete(transport,object);}).bind(this);this.request(url);},updateContent:function(){var receiver=this.responseIsSuccess()?this.containers.success:this.containers.failure;var match=new RegExp(Ajax.Updater.ScriptFragment,'img');var response=this.transport.responseText.replace(match,'');var scripts=this.transport.responseText.match(match);if(receiver){if(this.options.insertion){new this.options.insertion(receiver,response);}else{receiver.innerHTML=response;}}
if(this.responseIsSuccess()){if(this.onComplete)
setTimeout(this.onComplete.bind(this),10);}
if(this.options.evalScripts&&scripts){match=new RegExp(Ajax.Updater.ScriptFragment,'im');setTimeout((function(){for(var i=0;i<scripts.length;i++)
eval(scripts[i].match(match)[1]);}).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=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.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Ajax.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);}});
