var Prototype={Version:"1.6.1",Browser:(function(){var ua=navigator.userAgent;var isOpera=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!isOpera,Opera:isOpera,WebKit:ua.indexOf("AppleWebKit/")>-1,Gecko:ua.indexOf("Gecko")>-1&&ua.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile.*Safari/.test(ua)};})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var constructor=window.Element||window.HTMLElement;return !!(constructor&&constructor.prototype);})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true;}var div=document.createElement("div");var form=document.createElement("form");var isSupported=false;if(div.__proto__&&(div.__proto__!==form.__proto__)){isSupported=true;}div=form=null;return isSupported;})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x;}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false;}var Abstract={};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 Class=(function(){function subclass(){}function create(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0])){parent=properties.shift();}function klass(){this.initialize.apply(this,arguments);}Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);}for(var i=0;i<properties.length;i++){klass.addMethods(properties[i]);}if(!klass.prototype.initialize){klass.prototype.initialize=Prototype.emptyFunction;}klass.prototype.constructor=klass;return klass;}function addMethods(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length){if(source.toString!=Object.prototype.toString){properties.push("toString");}if(source.valueOf!=Object.prototype.valueOf){properties.push("valueOf");}}for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value;value=(function(m){return function(){return ancestor[m].apply(this,arguments);};})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method);}this.prototype[property]=value;}return this;}return{create:create,Methods:{addMethods:addMethods}};})();(function(){var _toString=Object.prototype.toString;function extend(destination,source){for(var property in source){destination[property]=source[property];}return destination;}function inspect(object){try{if(isUndefined(object)){return"undefined";}if(object===null){return"null";}return object.inspect?object.inspect():String(object);}catch(e){if(e instanceof RangeError){return"...";}throw e;}}function toJSON(object){var type=typeof object;switch(type){case"undefined":case"function":case"unknown":return;case"boolean":return object.toString();}if(object===null){return"null";}if(object.toJSON){return object.toJSON();}if(isElement(object)){return;}var results=[];for(var property in object){var value=toJSON(object[property]);if(!isUndefined(value)){results.push(property.toJSON()+": "+value);}}return"{"+results.join(", ")+"}";}function toQueryString(object){return $H(object).toQueryString();}function toHTML(object){return object&&object.toHTML?object.toHTML():String.interpret(object);}function keys(object){var results=[];for(var property in object){results.push(property);}return results;}function values(object){var results=[];for(var property in object){results.push(object[property]);}return results;}function clone(object){return extend({},object);}function isElement(object){return !!(object&&object.nodeType==1);}function isArray(object){return _toString.call(object)=="[object Array]";}function isHash(object){return object instanceof Hash;}function isFunction(object){return typeof object==="function";}function isString(object){return _toString.call(object)=="[object String]";}function isNumber(object){return _toString.call(object)=="[object Number]";}function isUndefined(object){return typeof object==="undefined";}extend(Object,{extend:extend,inspect:inspect,toJSON:toJSON,toQueryString:toQueryString,toHTML:toHTML,keys:keys,values:values,clone:clone,isElement:isElement,isArray:isArray,isHash:isHash,isFunction:isFunction,isString:isString,isNumber:isNumber,isUndefined:isUndefined});})();Object.extend(Function.prototype,(function(){var slice=Array.prototype.slice;function update(array,args){var arrayLength=array.length,length=args.length;while(length--){array[arrayLength+length]=args[length];}return array;}function merge(array,args){array=slice.call(array,0);return update(array,args);}function argumentNames(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return names.length==1&&!names[0]?[]:names;}function bind(context){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this;}var __method=this,args=slice.call(arguments,1);return function(){var a=merge(args,arguments);return __method.apply(context,a);};}function bindAsEventListener(context){var __method=this,args=slice.call(arguments,1);return function(event){var a=update([event||window.event],args);return __method.apply(context,a);};}function curry(){if(!arguments.length){return this;}var __method=this,args=slice.call(arguments,0);return function(){var a=merge(args,arguments);return __method.apply(this,a);};}function delay(timeout){var __method=this,args=slice.call(arguments,1);timeout=timeout*1000;return window.setTimeout(function(){return __method.apply(__method,args);},timeout);}function defer(){var args=update([0.01],arguments);return this.delay.apply(this,args);}function wrap(wrapper){var __method=this;return function(){var a=update([__method.bind(this)],arguments);return wrapper.apply(this,a);};}function methodize(){if(this._methodized){return this._methodized;}var __method=this;return this._methodized=function(){var a=update([this],arguments);return __method.apply(null,a);};}return{argumentNames:argumentNames,bind:bind,bindAsEventListener:bindAsEventListener,curry:curry,delay:delay,defer:defer,wrap:wrap,methodize:methodize};})());Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+'Z"';};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1");};var PeriodicalExecuter=Class.create({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);},execute:function(){this.callback(this);},stop:function(){if(!this.timer){return;}clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false;}catch(e){this.currentlyExecuting=false;throw e;}}}});Object.extend(String,{interpret:function(value){return value==null?"":String(value);},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement;}var template=new Template(replacement);return function(match){return template.evaluate(match);};}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern);}if(!(pattern.length||pattern.source)){replacement=replacement("");return replacement+source.split("").join(replacement)+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;}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0];}return replacement(match);});}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this);}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"");}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi,"");}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"");}function extractScripts(){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];});}function evalScripts(){return this.extractScripts().map(function(script){return eval(script);});}function escapeHTML(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");}function unescapeHTML(){return this.stripTags().replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&");}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{};}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=decodeURIComponent(value);}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]];}hash[key].push(value);}else{hash[key]=value;}}return hash;});}function toArray(){return this.split("");}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1);}function times(count){return count<1?"":new Array(count+1).join(this);}function camelize(){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;}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase();}function dasherize(){return this.replace(/_/g,"-");}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character];}return"\\u00"+character.charCodeAt().toPaddedString(2,16);});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"';}return"'"+escapedString.replace(/'/g,"\\'")+"'";}function toJSON(){return this.inspect(true);}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1");}function isJSON(){var str=this;if(str.blank()){return false;}str=this.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,"");return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);}function evalJSON(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON()){return eval("("+json+")");}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect());}function include(pattern){return this.indexOf(pattern)>-1;}function startsWith(pattern){return this.indexOf(pattern)===0;}function endsWith(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;}function empty(){return this=="";}function blank(){return/^\s*$/.test(this);}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object);}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim?String.prototype.trim:strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,toJSON:toJSON,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:evalJSON,include:include,startsWith:startsWith,endsWith:endsWith,empty:empty,blank:blank,interpolate:interpolate};})());var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(object&&Object.isFunction(object.toTemplateReplacements)){object=object.toTemplateReplacements();}return this.template.gsub(this.pattern,function(match){if(object==null){return(match[1]+"");}var before=match[1]||"";if(before=="\\"){return match[2];}var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null){return before;}while(match!=null){var comp=match[1].startsWith("[")?match[2].replace(/\\\\]/g,"]"):match[1];ctx=ctx[comp];if(null==ctx||""==match[3]){break;}expr=expr.substring("["==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);}return before+String.interpret(ctx);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function each(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break){throw e;}}return this;}function eachSlice(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1){return array;}while((index+=number)<array.length){slices.push(array.slice(index,index+number));}return slices.collect(iterator,context);}function all(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result){throw $break;}});return result;}function any(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index)){throw $break;}});return result;}function collect(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index));});return results;}function detect(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result;}function findAll(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index)){results.push(value);}});return results;}function grep(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter)){filter=new RegExp(RegExp.escape(filter));}this.each(function(value,index){if(filter.match(value)){results.push(iterator.call(context,value,index));}});return results;}function include(object){if(Object.isFunction(this.indexOf)){if(this.indexOf(object)!=-1){return true;}}var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;}function inGroupsOf(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number){slice.push(fillWith);}return slice;});}function inject(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index);});return memo;}function invoke(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});}function max(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result){result=value;}});return result;}function min(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result){result=value;}});return result;}function partition(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value);});return[trues,falses];}function pluck(property){var results=[];this.each(function(value){results.push(value[property]);});return results;}function reject(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index)){results.push(value);}});return results;}function sortBy(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck("value");}function toArray(){return this.map();}function zip(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last())){iterator=args.pop();}var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});}function size(){return this.toArray().length;}function inspect(){return"#<Enumerable:"+this.toArray().inspect()+">";}return{each:each,eachSlice:eachSlice,all:all,every:all,any:any,some:any,collect:collect,map:collect,detect:detect,findAll:findAll,select:findAll,filter:findAll,grep:grep,include:include,member:include,inGroupsOf:inGroupsOf,inject:inject,invoke:invoke,max:max,min:min,partition:partition,pluck:pluck,reject:reject,sortBy:sortBy,toArray:toArray,entries:toArray,zip:zip,size:size,inspect:inspect,find:detect};})();function $A(iterable){if(!iterable){return[];}if("toArray" in Object(iterable)){return iterable.toArray();}var length=iterable.length||0,results=new Array(length);while(length--){results[length]=iterable[length];}return results;}function $w(string){if(!Object.isString(string)){return[];}string=string.strip();return string?string.split(/\s+/):[];}Array.from=$A;(function(){var arrayProto=Array.prototype,slice=arrayProto.slice,_each=arrayProto.forEach;function each(iterator){for(var i=0,length=this.length;i<length;i++){iterator(this[i]);}}if(!_each){_each=each;}function clear(){this.length=0;return this;}function first(){return this[0];}function last(){return this[this.length-1];}function compact(){return this.select(function(value){return value!=null;});}function flatten(){return this.inject([],function(array,value){if(Object.isArray(value)){return array.concat(value.flatten());}array.push(value);return array;});}function without(){var values=slice.call(arguments,0);return this.select(function(value){return !values.include(value);});}function reverse(inline){return(inline!==false?this:this.toArray())._reverse();}function uniq(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value))){array.push(value);}return array;});}function intersect(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value;});});}function clone(){return slice.call(this,0);}function size(){return this.length;}function inspect(){return"["+this.map(Object.inspect).join(", ")+"]";}function toJSON(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value)){results.push(value);}});return"["+results.join(", ")+"]";}function indexOf(item,i){i||(i=0);var length=this.length;if(i<0){i=length+i;}for(;i<length;i++){if(this[i]===item){return i;}}return -1;}function lastIndexOf(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1;}function concat(){var array=slice.call(this,0),item;for(var i=0,length=arguments.length;i<length;i++){item=arguments[i];if(Object.isArray(item)&&!("callee" in item)){for(var j=0,arrayLength=item.length;j<arrayLength;j++){array.push(item[j]);}}else{array.push(item);}}return array;}Object.extend(arrayProto,Enumerable);if(!arrayProto._reverse){arrayProto._reverse=arrayProto.reverse;}Object.extend(arrayProto,{_each:_each,clear:clear,first:first,last:last,compact:compact,flatten:flatten,without:without,reverse:reverse,uniq:uniq,intersect:intersect,clone:clone,toArray:clone,size:size,inspect:inspect,toJSON:toJSON});var CONCAT_ARGUMENTS_BUGGY=(function(){return[].concat(arguments)[0][0]!==1;})(1,2);if(CONCAT_ARGUMENTS_BUGGY){arrayProto.concat=concat;}if(!arrayProto.indexOf){arrayProto.indexOf=indexOf;}if(!arrayProto.lastIndexOf){arrayProto.lastIndexOf=lastIndexOf;}})();function $H(object){return new Hash(object);}var Hash=Class.create(Enumerable,(function(){function initialize(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object);}function _each(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}}function set(key,value){return this._object[key]=value;}function get(key){if(this._object[key]!==Object.prototype[key]){return this._object[key];}}function unset(key){var value=this._object[key];delete this._object[key];return value;}function toObject(){return Object.clone(this._object);}function keys(){return this.pluck("key");}function values(){return this.pluck("value");}function index(value){var match=this.detect(function(pair){return pair.value===value;});return match&&match.key;}function merge(object){return this.clone().update(object);}function update(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result;});}function toQueryPair(key,value){if(Object.isUndefined(value)){return key;}return key+"="+encodeURIComponent(String.interpret(value));}function toQueryString(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=="object"){if(Object.isArray(values)){return results.concat(values.map(toQueryPair.curry(key)));}}else{results.push(toQueryPair(key,values));}return results;}).join("&");}function inspect(){return"#<Hash:{"+this.map(function(pair){return pair.map(Object.inspect).join(": ");}).join(", ")+"}>";}function toJSON(){return Object.toJSON(this.toObject());}function clone(){return new Hash(this);}return{initialize:initialize,_each:_each,set:set,get:get,unset:unset,toObject:toObject,toTemplateReplacements:toObject,keys:keys,values:values,index:index,merge:merge,update:update,toQueryString:toQueryString,inspect:inspect,toJSON:toJSON,clone:clone};})());Hash.from=$H;Object.extend(Number.prototype,(function(){function toColorPart(){return this.toPaddedString(2,16);}function succ(){return this+1;}function times(iterator,context){$R(0,this,true).each(iterator,context);return this;}function toPaddedString(length,radix){var string=this.toString(radix||10);return"0".times(length-string.length)+string;}function toJSON(){return isFinite(this)?this.toString():"null";}function abs(){return Math.abs(this);}function round(){return Math.round(this);}function ceil(){return Math.ceil(this);}function floor(){return Math.floor(this);}return{toColorPart:toColorPart,succ:succ,times:times,toPaddedString:toPaddedString,toJSON:toJSON,abs:abs,round:round,ceil:ceil,floor:floor};})());function $R(start,end,exclusive){return new ObjectRange(start,end,exclusive);}var ObjectRange=Class.create(Enumerable,(function(){function initialize(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;}function _each(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}}function include(value){if(value<this.start){return false;}if(this.exclusive){return value<this.end;}return value<=this.end;}return{initialize:initialize,_each:_each,include:include};})());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(Object.isFunction(responder[callback])){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=Class.create({initialize:function(options){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters)){this.options.parameters=this.options.parameters.toQueryParams();}else{if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject();}}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=Object.clone(this.options.parameters);if(!["get","post"].include(this.method)){params._method=this.method;this.method="post";}this.parameters=params;if(params=Object.toQueryString(params)){if(this.method=="get"){this.url+=(this.url.include("?")?"&":"?")+params;}else{if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){params+="&_=";}}}try{var response=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(response);}Ajax.Responders.dispatch("onCreate",this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1);}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||params):null;this.transport.send(this.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(Object.isFunction(extras.push)){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(){var status=this.getStatus();return !status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0;}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=="Complete"){try{this._complete=true;(this.options["on"+response.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);}var contentType=response.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse();}}try{(this.options["on"+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch("on"+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}if(state=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return !m||(m[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}catch(e){return null;}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch("onException",this,exception);}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();}if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||"";}catch(e){return"";}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null;}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader("X-JSON");if(!json){return null;}json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null;}try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete)){onComplete(response,json);}}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?"success":"failure"],options=this.options;if(!options.evalScripts){responseText=responseText.stripScripts();}if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);}else{options.insertion(receiver,responseText);}}else{receiver.update(responseText);}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(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(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},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(Object.isString(element)){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(Element.extend(query.snapshotItem(i)));}return results;};}if(!window.Node){var Node={};}if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}(function(global){var SETATTRIBUTE_IGNORES_NAME=(function(){var elForm=document.createElement("form");var elInput=document.createElement("input");var root=document.documentElement;elInput.setAttribute("name","test");elForm.appendChild(elInput);root.appendChild(elForm);var isBuggy=elForm.elements?(typeof elForm.elements.test=="undefined"):null;root.removeChild(elForm);elForm=elInput=null;return isBuggy;})();var element=global.Element;global.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(SETATTRIBUTE_IGNORES_NAME&&attributes.name){tagName="<"+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);}if(!cache[tagName]){cache[tagName]=Element.extend(document.createElement(tagName));}return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(global.Element,element||{});if(element){global.Element.prototype=element.prototype;}})(this);Element.cache={};Element.idCounter=1;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=$(element);element.style.display="none";return element;},show:function(element){element=$(element);element.style.display="";return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:(function(){var SELECT_ELEMENT_INNERHTML_BUGGY=(function(){var el=document.createElement("select"),isBuggy=true;el.innerHTML='<option value="test">test</option>';if(el.options&&el.options[0]){isBuggy=el.options[0].nodeName.toUpperCase()!=="OPTION";}el=null;return isBuggy;})();var TABLE_ELEMENT_INNERHTML_BUGGY=(function(){try{var el=document.createElement("table");if(el&&el.tBodies){el.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var isBuggy=typeof el.tBodies[0]=="undefined";el=null;return isBuggy;}}catch(e){return true;}})();var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING=(function(){var s=document.createElement("script"),isBuggy=false;try{s.appendChild(document.createTextNode(""));isBuggy=!s.firstChild||s.firstChild&&s.firstChild.nodeType!==3;}catch(e){isBuggy=true;}s=null;return isBuggy;})();function update(element,content){element=$(element);if(content&&content.toElement){content=content.toElement();}if(Object.isElement(content)){return element.update().insert(content);}content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName==="SCRIPT"&&SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING){element.text=content;return element;}if(SELECT_ELEMENT_INNERHTML_BUGGY||TABLE_ELEMENT_INNERHTML_BUGGY){if(tagName in Element._insertionTranslations.tags){while(element.firstChild){element.removeChild(element.firstChild);}Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node);});}else{element.innerHTML=content.stripScripts();}}else{element.innerHTML=content.stripScripts();}content.evalScripts.bind(content).defer();return element;}return update;})(),replace:function(element,content){element=$(element);if(content&&content.toElement){content=content.toElement();}else{if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());}}element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML))){insertions={bottom:insertions};}var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement){content=content.toElement();}if(Object.isElement(content)){insert(element,content);continue;}content=Object.toHTML(content);tagName=((position=="before"||position=="after")?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=="top"||position=="after"){childNodes.reverse();}childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer();}return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper)){$(wrapper).writeAttribute(attributes||{});}else{if(Object.isString(wrapper)){wrapper=new Element(wrapper,attributes);}else{wrapper=new Element("div",wrapper);}}if(element.parentNode){element.parentNode.replaceChild(wrapper,element);}wrapper.appendChild(element);return wrapper;},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(element,"parentNode");},descendants:function(element){return Element.select(element,"*");},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1){element=element.nextSibling;}return $(element);},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(element,"previousSibling");},nextSiblings:function(element){return Element.recursivelyCollect(element,"nextSibling");},siblings:function(element){element=$(element);return Element.previousSiblings(element).reverse().concat(Element.nextSiblings(element));},match:function(element,selector){if(Object.isString(selector)){selector=new Selector(selector);}return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1){return $(element.parentNode);}var ancestors=Element.ancestors(element);return Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1){return Element.firstDescendant(element);}return Object.isNumber(expression)?Element.descendants(element)[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1){return $(Selector.handlers.previousElementSibling(element));}var previousSiblings=Element.previousSiblings(element);return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1){return $(Selector.handlers.nextElementSibling(element));}var nextSiblings=Element.nextSiblings(element);return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},select:function(element){var args=Array.prototype.slice.call(arguments,1);return Selector.findChildElements(element,args);},adjacent:function(element){var args=Array.prototype.slice.call(arguments,1);return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=Element.readAttribute(element,"id");if(id){return id;}do{id="anonymous_element_"+Element.idCounter++;}while($(id));Element.writeAttribute(element,"id",id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name]){return t.values[name](element,name);}if(t.names[name]){name=t.names[name];}if(name.include(":")){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}}return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=="object"){attributes=name;}else{attributes[name]=Object.isUndefined(value)?true:value;}for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr]){name=t.values[attr](element,value);}if(value===false||value===null){element.removeAttribute(name);}else{if(value===true){element.setAttribute(name,name);}else{element.setAttribute(name,value);}}}return element;},getHeight:function(element){return Element.getDimensions(element).height;},getWidth:function(element){return Element.getDimensions(element).width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element))){return;}var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element))){return;}if(!Element.hasClassName(element,className)){element.className+=(element.className?" ":"")+className;}return element;},removeClassName:function(element,className){if(!(element=$(element))){return;}element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)")," ").strip();return element;},toggleClassName:function(element,className){if(!(element=$(element))){return;}return Element[Element.hasClassName(element,className)?"removeClassName":"addClassName"](element,className);},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.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition){return(element.compareDocumentPosition(ancestor)&8)===8;}if(ancestor.contains){return ancestor.contains(element)&&ancestor!==element;}while(element=element.parentNode){if(element==ancestor){return true;}}return false;},scrollTo:function(element){element=$(element);var pos=Element.cumulativeOffset(element);window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=="float"?"cssFloat":style.camelize();var value=element.style[style];if(!value||value=="auto"){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}if(style=="opacity"){return value?parseFloat(value):1;}return value=="auto"?null:value;},getOpacity:function(element){return $(element).getStyle("opacity");},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=";"+styles;return styles.include("opacity")?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;}for(var property in styles){if(property=="opacity"){element.setOpacity(styles[property]);}else{elementStyle[(property=="float"||property=="cssFloat")?(Object.isUndefined(elementStyle.styleFloat)?"cssFloat":"styleFloat"):property]=styles[property];}}return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==="")?"":(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=Element.getStyle(element,"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";if(originalPosition!="fixed"){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(Prototype.Browser.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.getStyle(element,"overflow")||"auto";if(element._overflow!=="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;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(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.toUpperCase()=="BODY"){break;}var p=Element.getStyle(element,"position");if(p!=="static"){break;}}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(Element.getStyle(element,"position")=="absolute"){return element;}var offsets=Element.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";return element;},relativize:function(element){element=$(element);if(Element.getStyle(element,"position")=="relative"){return element;}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;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent: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);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,"position")=="absolute"){break;}}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||(element.tagName&&(element.tagName.toUpperCase()=="BODY"))){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=Element.viewportOffset(source);element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,"position")=="absolute"){parent=Element.getOffsetParent(element);delta=Element.viewportOffset(parent);}if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}if(options.setLeft){element.style.left=(p[0]-delta[0]+options.offsetLeft)+"px";}if(options.setTop){element.style.top=(p[1]-delta[1]+options.offsetTop)+"px";}if(options.setWidth){element.style.width=source.offsetWidth+"px";}if(options.setHeight){element.style.height=source.offsetHeight+"px";}return element;}};Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:"class",htmlFor:"for"},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case"left":case"top":case"right":case"bottom":if(proceed(element,"position")==="static"){return null;}case"height":case"width":if(!Element.visible(element)){return null;}var dim=parseInt(proceed(element,style),10);if(dim!==element["offset"+style.capitalize()]){return dim+"px";}var properties;if(style==="height"){properties=["border-top-width","padding-top","padding-bottom","border-bottom-width"];}else{properties=["border-left-width","padding-left","padding-right","border-right-width"];}return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+"px";default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==="title"){return element.title;}return proceed(element,attribute);});}else{if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent;}catch(e){return $(document.body);}var position=element.getStyle("position");if(position!=="static"){return proceed(element);}element.setStyle({position:"relative"});var value=proceed(element);element.setStyle({position:position});return value;});$w("positionedOffset viewportOffset").each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent;}catch(e){return Element._returnOffset(0,0);}var position=element.getStyle("position");if(position!=="static"){return proceed(element);}var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle("position")==="fixed"){offsetParent.setStyle({zoom:1});}element.setStyle({position:"relative"});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent;}catch(e){return Element._returnOffset(0,0);}return proceed(element);});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=="float"||style=="cssFloat")?"styleFloat":style.camelize();var value=element.style[style];if(!value&&element.currentStyle){value=element.currentStyle[style];}if(style=="opacity"){if(value=(element.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){if(value[1]){return parseFloat(value[1])/100;}}return 1;}if(value=="auto"){if((style=="width"||style=="height")&&(element.getStyle("display")!="none")){return element["offset"+style.capitalize()]+"px";}return null;}return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,"");}element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=="normal")){element.style.zoom=1;}var filter=element.getStyle("filter"),style=element.style;if(value==1||value===""){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute("filter");return element;}else{if(value<0.00001){value=0;}}style.filter=stripAlpha(filter)+"alpha(opacity="+(value*100)+")";return element;};Element._attributeTranslations=(function(){var classProp="className";var forProp="for";var el=document.createElement("div");el.setAttribute(classProp,"x");if(el.className!=="x"){el.setAttribute("class","x");if(el.className==="x"){classProp="class";}}el=null;el=document.createElement("label");el.setAttribute(forProp,"x");if(el.htmlFor!=="x"){el.setAttribute("htmlFor","x");if(el.htmlFor==="x"){forProp="htmlFor";}}el=null;return{read:{names:{"class":classProp,className:classProp,"for":forProp,htmlFor:forProp},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute);},_getAttr2:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:(function(){var el=document.createElement("div");el.onclick=Prototype.emptyFunction;var value=el.getAttribute("onclick");var f;if(String(value).indexOf("{")>-1){f=function(element,attribute){attribute=element.getAttribute(attribute);if(!attribute){return null;}attribute=attribute.toString();attribute=attribute.split("{")[1];attribute=attribute.split("}")[0];return attribute.strip();};}else{if(value===""){f=function(element,attribute){attribute=element.getAttribute(attribute);if(!attribute){return null;}return attribute.strip();};}}el=null;return f;})(),_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};})();Element._attributeTranslations.write={names:Object.extend({cellpadding:"cellPadding",cellspacing:"cellSpacing"},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:"";}}};Element._attributeTranslations.has={};$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder").each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr2,src:v._getAttr2,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);if(Prototype.BrowserFeatures.ElementExtensions){(function(){function _descendants(element){var nodes=element.getElementsByTagName("*"),results=[];for(var i=0,node;node=nodes[i];i++){if(node.tagName!=="!"){results.push(node);}}return results;}Element.Methods.down=function(element,expression,index){element=$(element);if(arguments.length==1){return element.firstDescendant();}return Object.isNumber(expression)?_descendants(element)[expression]:Element.select(element,expression)[index||0];};})();}}else{if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==="")?"":(value<0.00001)?0:value;return element;};}else{if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==="")?"":(value<0.00001)?0:value;if(value==1){if(element.tagName.toUpperCase()=="IMG"&&element.width){element.width++;element.width--;}else{try{var n=document.createTextNode(" ");element.appendChild(n);element.removeChild(n);}catch(e){}}}return element;};Element.Methods.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 Element._returnOffset(valueL,valueT);};}}}}if("outerHTML" in document.documentElement){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement){content=content.toElement();}if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;}content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling){fragments.each(function(node){parent.insertBefore(node,nextSibling);});}else{fragments.each(function(node){parent.appendChild(node);});}}else{element.outerHTML=content.stripScripts();}content.evalScripts.bind(content).defer();return element;};}Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element("div"),t=Element._insertionTranslations.tags[tagName];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild;});}else{div.innerHTML=html;}return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};(function(){var tags=Element._insertionTranslations.tags;Object.extend(tags,{THEAD:tags.TBODY,TFOOT:tags.TBODY,TH:tags.TD});})();Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return !!(node&&node.specified);}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);(function(div){if(!Prototype.BrowserFeatures.ElementExtensions&&div.__proto__){window.HTMLElement={};window.HTMLElement.prototype=div.__proto__;Prototype.BrowserFeatures.ElementExtensions=true;}div=null;})(document.createElement("div"));Element.extend=(function(){function checkDeficiency(tagName){if(typeof window.Element!="undefined"){var proto=window.Element.prototype;if(proto){var id="_"+(Math.random()+"").slice(2);var el=document.createElement(tagName);proto[id]="x";var isBuggy=(el[id]!=="x");delete proto[id];el=null;return isBuggy;}}return false;}function extendElementWith(element,methods){for(var property in methods){var value=methods[property];if(Object.isFunction(value)&&!(property in element)){element[property]=value.methodize();}}}var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY=checkDeficiency("object");if(Prototype.BrowserFeatures.SpecificElementExtensions){if(HTMLOBJECTELEMENT_PROTOTYPE_BUGGY){return function(element){if(element&&typeof element._extendedByPrototype=="undefined"){var t=element.tagName;if(t&&(/^(?:object|applet|embed)$/i.test(t))){extendElementWith(element,Element.Methods);extendElementWith(element,Element.Methods.Simulated);extendElementWith(element,Element.Methods.ByTag[t.toUpperCase()]);}}return element;};}return Prototype.K;}var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||typeof element._extendedByPrototype!="undefined"||element.nodeType!=1||element==window){return element;}var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase();if(ByTag[tagName]){Object.extend(methods,ByTag[tagName]);}extendElementWith(element,methods);element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute){return element.hasAttribute(attribute);}return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods)});}if(arguments.length==2){var tagName=methods;methods=arguments[1];}if(!tagName){Object.extend(Element.Methods,methods||{});}else{if(Object.isArray(tagName)){tagName.each(extend);}else{extend(tagName);}}function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName]){Element.Methods.ByTag[tagName]={};}Object.extend(Element.Methods.ByTag[tagName],methods);}function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value)){continue;}if(!onlyIfAbsent||!(property in destination)){destination[property]=value.methodize();}}}function findDOMClass(tagName){var klass;var trans={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(trans[tagName]){klass="HTML"+trans[tagName]+"Element";}if(window[klass]){return window[klass];}klass="HTML"+tagName+"Element";if(window[klass]){return window[klass];}klass="HTML"+tagName.capitalize()+"Element";if(window[klass]){return window[klass];}var element=document.createElement(tagName);var proto=element.__proto__||element.constructor.prototype;element=null;return proto;}var elementPrototype=window.HTMLElement?HTMLElement.prototype:Element.prototype;if(F.ElementExtensions){copy(Element.Methods,elementPrototype);copy(Element.Methods.Simulated,elementPrototype,true);}if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass)){continue;}copy(T[tag],klass.prototype);}}Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh){Element.extend.refresh();}Element.cache={};};document.viewport={getDimensions:function(){return{width:this.getWidth(),height:this.getHeight()};},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};(function(viewport){var B=Prototype.Browser,doc=document,element,property={};function getRootElement(){if(B.WebKit&&!doc.evaluate){return document;}if(B.Opera&&window.parseFloat(window.opera.version())<9.5){return document.body;}return document.documentElement;}function define(D){if(!element){element=getRootElement();}property[D]="client"+D;viewport["get"+D]=function(){return element[property[D]];};return viewport["get"+D]();}viewport.getWidth=define.curry("Width");viewport.getHeight=define.curry("Height");})(document.viewport);Element.Storage={UID:1};Element.addMethods({getStorage:function(element){if(!(element=$(element))){return;}var uid;if(element===window){uid=0;}else{if(typeof element._prototypeUID==="undefined"){element._prototypeUID=[Element.Storage.UID++];}uid=element._prototypeUID[0];}if(!Element.Storage[uid]){Element.Storage[uid]=$H();}return Element.Storage[uid];},store:function(element,key,value){if(!(element=$(element))){return;}if(arguments.length===2){Element.getStorage(element).update(key);}else{Element.getStorage(element).set(key,value);}return element;},retrieve:function(element,key,defaultValue){if(!(element=$(element))){return;}var hash=Element.getStorage(element),value=hash.get(key);if(Object.isUndefined(value)){hash.set(key,defaultValue);value=defaultValue;}return value;},clone:function(element,deep){if(!(element=$(element))){return;}var clone=element.cloneNode(deep);clone._prototypeUID=void 0;if(deep){var descendants=Element.select(clone,"*"),i=descendants.length;while(i--){descendants[i]._prototypeUID=void 0;}}return Element.extend(clone);}});var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();if(this.shouldUseSelectorsAPI()){this.mode="selectorsAPI";}else{if(this.shouldUseXPath()){this.mode="xpath";this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}}},shouldUseXPath:(function(){var IS_DESCENDANT_SELECTOR_BUGGY=(function(){var isBuggy=false;if(document.evaluate&&window.XPathResult){var el=document.createElement("div");el.innerHTML="<ul><li></li></ul><div><ul><li></li></ul></div>";var xpath=".//*[local-name()='ul' or local-name()='UL']//*[local-name()='li' or local-name()='LI']";var result=document.evaluate(xpath,el,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);isBuggy=(result.snapshotLength!==2);el=null;}return isBuggy;})();return function(){if(!Prototype.BrowserFeatures.XPath){return false;}var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty"))){return false;}if((/(\[[\w-]*?:|:checked)/).test(e)){return false;}if(IS_DESCENDANT_SELECTOR_BUGGY){return false;}return true;};})(),shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI){return false;}if(Selector.CASE_INSENSITIVE_CLASS_NAMES){return false;}if(!Selector._div){Selector._div=new Element("div");}try{Selector._div.querySelector(this.expression);}catch(e){return false;}return true;},compileMatcher:function(){var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m,len=ps.length,name;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;}this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i=0;i<len;i++){p=ps[i].re;name=ps[i].name;if(m=e.match(p)){this.matcher.push(Object.isFunction(c[name])?c[name](m):new Template(c[name]).evaluate(m));e=e.replace(m[0],"");break;}}}this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join("\n"));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m,len=ps.length,name;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;}this.matcher=[".//*"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i=0;i<len;i++){name=ps[i].name;if(m=e.match(ps[i].re)){this.matcher.push(Object.isFunction(x[name])?x[name](m):new Template(x[name]).evaluate(m));e=e.replace(m[0],"");break;}}}this.xpath=this.matcher.join("");Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;var e=this.expression,results;switch(this.mode){case"selectorsAPI":if(root!==document){var oldId=root.id,id=$(root).identify();id=id.replace(/([\.:])/g,"\\$1");e="#"+id+" "+e;}results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case"xpath":return document._getElementsByXPath(this.xpath,root);default:return this.matcher(root);}},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m,len=ps.length,name;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i=0;i<len;i++){p=ps[i].re;name=ps[i].name;if(m=e.match(p)){if(as[name]){this.tokens.push([name,Object.clone(m)]);e=e.replace(m[0],"");}else{return this.findElements(document).include(element);}}}}var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}}return match;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});if(Prototype.BrowserFeatures.SelectorsAPI&&document.compatMode==="BackCompat"){Selector.CASE_INSENSITIVE_CLASS_NAMES=(function(){var div=document.createElement("div"),span=document.createElement("span");div.id="prototype_test_id";span.className="Test";div.appendChild(span);var isIgnored=(div.querySelector("#prototype_test_id .test")!==null);div=span=null;return isIgnored;})();}Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:"/following-sibling::*",tagName:function(m){if(m[1]=="*"){return"";}return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h){return"";}if(Object.isFunction(h)){return h(m);}return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{"=":"[@#{1}='#{3}']","!=":"[@#{1}!='#{3}']","^=":"[starts-with(@#{1}, '#{3}')]","$=":"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']","*=":"[contains(@#{1}, '#{3}')]","~=":"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]","|=":"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{"first-child":"[not(preceding-sibling::*)]","last-child":"[not(following-sibling::*)]","only-child":"[not(preceding-sibling::* or following-sibling::*)]",empty:"[count(*) = 0 and (count(text()) = 0)]",checked:"[@checked]",disabled:"[(@disabled) and (@type!='hidden')]",enabled:"[not(@disabled) and (@type!='hidden')]",not:function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,v,len=p.length,name;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i=0;i<len;i++){name=p[i].name;if(m=e.match(p[i].re)){v=Object.isFunction(x[name])?x[name](m):new Template(x[name]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],"");break;}}}return"[not("+exclusion.join(" and ")+")]";},"nth-child":function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},"nth-last-child":function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},"nth-of-type":function(m){return Selector.xpath.pseudos.nth("position() ",m);},"nth-last-of-type":function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},"first-of-type":function(m){m[6]="1";return Selector.xpath.pseudos["nth-of-type"](m);},"last-of-type":function(m){m[6]="1";return Selector.xpath.pseudos["nth-last-of-type"](m);},"only-of-type":function(m){var p=Selector.xpath.pseudos;return p["first-of-type"](m)+p["last-of-type"](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=="even"){formula="2n+0";}if(formula=="odd"){formula="2n+1";}if(mm=formula.match(/^(\d+)$/)){return"["+fragment+"= "+mm[1]+"]";}if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-"){mm[1]=-1;}var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and ((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c);      c = false;',className:'n = h.className(n, r, "#{1}", c);    c = false;',id:'n = h.id(n, r, "#{1}", c);           c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);},pseudo:function(m){if(m[6]){m[6]=m[6].replace(/"/g,'\\"');}return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:[{name:"laterSibling",re:/^\s*~\s*/},{name:"child",re:/^\s*>\s*/},{name:"adjacent",re:/^\s*\+\s*/},{name:"descendant",re:/^\s/},{name:"tagName",re:/^\s*(\*|[\w\-]+)(\b|$)?/},{name:"id",re:/^#([\w\-\*]+)(\b|$)/},{name:"className",re:/^\.([\w\-\*]+)(\b|$)/},{name:"pseudo",re:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/},{name:"attrPresence",re:/^\[((?:[\w-]+:)?[\w-]+)\]/},{name:"attr",re:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/}],assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++){a.push(node);}return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++){node._countedByPrototype=_true;}return nodes;},unmark:(function(){var PROPERTIES_ATTRIBUTES_MAP=(function(){var el=document.createElement("div"),isBuggy=false,propName="_countedByPrototype",value="x";el[propName]=value;isBuggy=(el.getAttribute(propName)===value);el=null;return isBuggy;})();return PROPERTIES_ATTRIBUTES_MAP?function(nodes){for(var i=0,node;node=nodes[i];i++){node.removeAttribute("_countedByPrototype");}return nodes;}:function(nodes){for(var i=0,node;node=nodes[i];i++){node._countedByPrototype=void 0;}return nodes;};})(),index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._countedByPrototype)){node.nodeIndex=j++;}}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++){if(node.nodeType==1&&(!ofType||node._countedByPrototype)){node.nodeIndex=j++;}}}},unique:function(nodes){if(nodes.length==0){return nodes;}var results=[],n;for(var i=0,l=nodes.length;i<l;i++){if(typeof(n=nodes[i])._countedByPrototype=="undefined"){n._countedByPrototype=Prototype.emptyFunction;results.push(Element.extend(n));}}return Selector.handlers.unmark(results);},descendant:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){h.concat(results,node.getElementsByTagName("*"));}return results;},child:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){for(var j=0,child;child=node.childNodes[j];j++){if(child.nodeType==1&&child.tagName!="!"){results.push(child);}}}return results;},adjacent:function(nodes){for(var i=0,results=[],node;node=nodes[i];i++){var next=this.nextElementSibling(node);if(next){results.push(next);}}return results;},laterSibling:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){h.concat(results,Element.nextSiblings(node));}return results;},nextElementSibling:function(node){while(node=node.nextSibling){if(node.nodeType==1){return node;}}return null;},previousElementSibling:function(node){while(node=node.previousSibling){if(node.nodeType==1){return node;}}return null;},tagName:function(nodes,root,tagName,combinator){var uTagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++){h.concat(results,node.getElementsByTagName(tagName));}return results;}else{nodes=this[combinator](nodes);}if(tagName=="*"){return nodes;}}for(var i=0,node;node=nodes[i];i++){if(node.tagName.toUpperCase()===uTagName){results.push(node);}}return results;}else{return root.getElementsByTagName(tagName);}},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;if(root==document){if(!targetNode){return[];}if(!nodes){return[targetNode];}}else{if(!root.sourceIndex||root.sourceIndex<1){var nodes=root.getElementsByTagName("*");for(var j=0,node;node=nodes[j];j++){if(node.id===id){return[node];}}}}if(nodes){if(combinator){if(combinator=="child"){for(var i=0,node;node=nodes[i];i++){if(targetNode.parentNode==node){return[targetNode];}}}else{if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++){if(Element.descendantOf(targetNode,node)){return[targetNode];}}}else{if(combinator=="adjacent"){for(var i=0,node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(targetNode)==node){return[targetNode];}}}else{nodes=h[combinator](nodes);}}}}for(var i=0,node;node=nodes[i];i++){if(node==targetNode){return[targetNode];}}return[];}return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[];},className:function(nodes,root,className,combinator){if(nodes&&combinator){nodes=this[combinator](nodes);}return Selector.handlers.byClassName(nodes,root,className);},byClassName:function(nodes,root,className){if(!nodes){nodes=Selector.handlers.descendant([root]);}var needle=" "+className+" ";for(var i=0,results=[],node,nodeClassName;node=nodes[i];i++){nodeClassName=node.className;if(nodeClassName.length==0){continue;}if(nodeClassName==className||(" "+nodeClassName+" ").include(needle)){results.push(node);}}return results;},attrPresence:function(nodes,root,attr,combinator){if(!nodes){nodes=root.getElementsByTagName("*");}if(nodes&&combinator){nodes=this[combinator](nodes);}var results=[];for(var i=0,node;node=nodes[i];i++){if(Element.hasAttribute(node,attr)){results.push(node);}}return results;},attr:function(nodes,root,attr,value,operator,combinator){if(!nodes){nodes=root.getElementsByTagName("*");}if(nodes&&combinator){nodes=this[combinator](nodes);}var handler=Selector.operators[operator],results=[];for(var i=0,node;node=nodes[i];i++){var nodeValue=Element.readAttribute(node,attr);if(nodeValue===null){continue;}if(handler(nodeValue,value)){results.push(node);}}return results;},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator){nodes=this[combinator](nodes);}if(!nodes){nodes=root.getElementsByTagName("*");}return Selector.pseudos[name](nodes,value,root);}},pseudos:{"first-child":function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(node)){continue;}results.push(node);}return results;},"last-child":function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.nextElementSibling(node)){continue;}results.push(node);}return results;},"only-child":function(nodes,value,root){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){if(!h.previousElementSibling(node)&&!h.nextElementSibling(node)){results.push(node);}}return results;},"nth-child":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root);},"nth-last-child":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true);},"nth-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true);},"nth-last-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true);},"first-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true);},"last-of-type":function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true);},"only-of-type":function(nodes,formula,root){var p=Selector.pseudos;return p["last-of-type"](p["first-of-type"](nodes,formula,root),formula,root);},getIndices:function(a,b,total){if(a==0){return b>0?[b]:[];}return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0){memo.push(i);}return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0){return[];}if(formula=="even"){formula="2n+0";}if(formula=="odd"){formula="2n+1";}var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._countedByPrototype){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}}if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++){if(node.nodeIndex==formula){results.push(node);}}}else{if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-"){m[1]=-1;}var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j<l;j++){if(node.nodeIndex==indices[j]){results.push(node);}}}}}h.unmark(nodes);h.unmark(indexed);return results;},empty:function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.tagName=="!"||node.firstChild){continue;}results.push(node);}return results;},not:function(nodes,selector,root){var h=Selector.handlers,selectorType,m;var exclusions=new Selector(selector).findElements(root);h.mark(exclusions);for(var i=0,results=[],node;node=nodes[i];i++){if(!node._countedByPrototype){results.push(node);}}h.unmark(exclusions);return results;},enabled:function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(!node.disabled&&(!node.type||node.type!=="hidden")){results.push(node);}}return results;},disabled:function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.disabled){results.push(node);}}return results;},checked:function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.checked){results.push(node);}}return results;}},operators:{"=":function(nv,v){return nv==v;},"!=":function(nv,v){return nv!=v;},"^=":function(nv,v){return nv==v||nv&&nv.startsWith(v);},"$=":function(nv,v){return nv==v||nv&&nv.endsWith(v);},"*=":function(nv,v){return nv==v||nv&&nv.include(v);},"~=":function(nv,v){return(" "+nv+" ").include(" "+v+" ");},"|=":function(nv,v){return("-"+(nv||"").toUpperCase()+"-").include("-"+(v||"").toUpperCase()+"-");}},split:function(expression){var expressions=[];expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++){if(element._countedByPrototype){results.push(element);}}h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;}return Selector.matchElements(elements,expression||"*")[index||0];},findChildElements:function(element,expressions){expressions=Selector.split(expressions.join(","));var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i<l;i++){selector=new Selector(expressions[i].strip());h.concat(results,selector.findElements(element));}return(l>1)?h.unique(results):results;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++){if(node.tagName!=="!"){a.push(node);}}return a;}});}function $$(){return Selector.findChildElements(document,$A(arguments));}var Form={reset:function(form){form=$(form);form.reset();return form;},serializeElements:function(elements,options){if(typeof options!="object"){options={hash:!!options};}else{if(Object.isUndefined(options.hash)){options.hash=true;}}var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!="file"&&(element.type!="submit"||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key])){result[key]=[result[key]];}result[key].push(value);}else{result[key]=value;}}}return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){var elements=$(form).getElementsByTagName("*"),element,arr=[],serializers=Form.Element.Serializers;for(var i=0;element=elements[i];i++){arr.push(element);}return arr.inject([],function(elements,child){if(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(form).invoke("disable");return form;},enable:function(form){form=$(form);Form.getElements(form).invoke("enable");return form;},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return"hidden"!=element.type&&!element.disabled;});var firstByIndex=elements.findAll(function(element){return element.hasAttribute("tabIndex")&&element.tabIndex>=0;}).sortBy(function(element){return element.tabIndex;}).first();return firstByIndex?firstByIndex:elements.find(function(element){return/^(?:input|select|textarea)$/i.test(element.tagName);});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute("action")||"";if(action.blank()){action=window.location.href;}options.parameters=form.serialize(true);if(params){if(Object.isString(params)){params=params.toQueryParams();}Object.extend(options.parameters,params);}if(form.hasAttribute("method")&&!options.method){options.method=form.method;}return new Ajax.Request(action,options);}};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 Object.toQueryString(pair);}}return"";},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value="";return element;},present:function(element){return $(element).value!="";},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!="input"||!(/^(?:button|reset|submit)$/i.test(element.type)))){element.select();}}catch(e){}return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case"checkbox":case"radio":return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(Object.isUndefined(value)){return element.checked?element.value:null;}else{element.checked=!!value;}},textarea:function(element,value){if(Object.isUndefined(value)){return element.value;}else{element.value=value;}},select:function(element,value){if(Object.isUndefined(value)){return this[element.type=="select-one"?"selectOne":"selectMany"](element);}else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return;}}else{opt.selected=value.include(currentValue);}}}},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=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue();},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({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,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(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});(function(){var 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,KEY_INSERT:45,cache:{}};var docEl=document.documentElement;var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED="onmouseenter" in docEl&&"onmouseleave" in docEl;var _isButton;if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};_isButton=function(event,code){return event.button===buttonMap[code];};}else{if(Prototype.Browser.WebKit){_isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==1&&event.metaKey;default:return false;}};}else{_isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code);};}}function isLeftClick(event){return _isButton(event,0);}function isMiddleClick(event){return _isButton(event,1);}function isRightClick(event){return _isButton(event,2);}function element(event){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&&currentTarget.tagName){if(type==="load"||type==="error"||(type==="click"&&currentTarget.tagName.toLowerCase()==="input"&&currentTarget.type==="radio")){node=currentTarget;}}if(node.nodeType==Node.TEXT_NODE){node=node.parentNode;}return Element.extend(node);}function findElement(event,expression){var element=Event.element(event);if(!expression){return element;}var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0);}function pointer(event){return{x:pointerX(event),y:pointerY(event)};}function pointerX(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0};return event.pageX||(event.clientX+(docElement.scrollLeft||body.scrollLeft)-(docElement.clientLeft||0));}function pointerY(event){var docElement=document.documentElement,body=document.body||{scrollTop:0};return event.pageY||(event.clientY+(docElement.scrollTop||body.scrollTop)-(docElement.clientTop||0));}function stop(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true;}Event.Methods={isLeftClick:isLeftClick,isMiddleClick:isMiddleClick,isRightClick:isRightClick,element:element,findElement:findElement,pointer:pointer,pointerX:pointerX,pointerY:pointerY,stop:stop};var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m;});if(Prototype.Browser.IE){function _relatedTarget(event){var element;switch(event.type){case"mouseover":element=event.fromElement;break;case"mouseout":element=event.toElement;break;default:return null;}return Element.extend(element);}Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.returnValue=false;},inspect:function(){return"[object Event]";}});Event.extend=function(event,element){if(!event){return false;}if(event._extendedByPrototype){return event;}event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement||element,relatedTarget:_relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods);};}else{Event.prototype=window.Event.prototype||document.createEvent("HTMLEvents").__proto__;Object.extend(Event.prototype,methods);Event.extend=Prototype.K;}function _createResponder(element,eventName,handler){var registry=Element.retrieve(element,"prototype_event_registry");if(Object.isUndefined(registry)){CACHE.push(element);registry=Element.retrieve(element,"prototype_event_registry",$H());}var respondersForEvent=registry.get(eventName);if(Object.isUndefined(respondersForEvent)){respondersForEvent=[];registry.set(eventName,respondersForEvent);}if(respondersForEvent.pluck("handler").include(handler)){return false;}var responder;if(eventName.include(":")){responder=function(event){if(Object.isUndefined(event.eventName)){return false;}if(event.eventName!==eventName){return false;}Event.extend(event,element);handler.call(element,event);};}else{if(!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED&&(eventName==="mouseenter"||eventName==="mouseleave")){if(eventName==="mouseenter"||eventName==="mouseleave"){responder=function(event){Event.extend(event,element);var parent=event.relatedTarget;while(parent&&parent!==element){try{parent=parent.parentNode;}catch(e){parent=element;}}if(parent===element){return;}handler.call(element,event);};}}else{responder=function(event){Event.extend(event,element);handler.call(element,event);};}}responder.handler=handler;respondersForEvent.push(responder);return responder;}function _destroyCache(){for(var i=0,length=CACHE.length;i<length;i++){Event.stopObserving(CACHE[i]);CACHE[i]=null;}}var CACHE=[];if(Prototype.Browser.IE){window.attachEvent("onunload",_destroyCache);}if(Prototype.Browser.WebKit){window.addEventListener("unload",Prototype.emptyFunction,false);}var _getDOMEventName=Prototype.K;if(!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED){_getDOMEventName=function(eventName){var translations={mouseenter:"mouseover",mouseleave:"mouseout"};return eventName in translations?translations[eventName]:eventName;};}function observe(element,eventName,handler){element=$(element);var responder=_createResponder(element,eventName,handler);if(!responder){return element;}if(eventName.include(":")){if(element.addEventListener){element.addEventListener("dataavailable",responder,false);}else{element.attachEvent("ondataavailable",responder);element.attachEvent("onfilterchange",responder);}}else{var actualEventName=_getDOMEventName(eventName);if(element.addEventListener){element.addEventListener(actualEventName,responder,false);}else{element.attachEvent("on"+actualEventName,responder);}}return element;}function stopObserving(element,eventName,handler){element=$(element);var registry=Element.retrieve(element,"prototype_event_registry");if(Object.isUndefined(registry)){return element;}if(eventName&&!handler){var responders=registry.get(eventName);if(Object.isUndefined(responders)){return element;}responders.each(function(r){Element.stopObserving(element,eventName,r.handler);});return element;}else{if(!eventName){registry.each(function(pair){var eventName=pair.key,responders=pair.value;responders.each(function(r){Element.stopObserving(element,eventName,r.handler);});});return element;}}var responders=registry.get(eventName);if(!responders){return;}var responder=responders.find(function(r){return r.handler===handler;});if(!responder){return element;}var actualEventName=_getDOMEventName(eventName);if(eventName.include(":")){if(element.removeEventListener){element.removeEventListener("dataavailable",responder,false);}else{element.detachEvent("ondataavailable",responder);element.detachEvent("onfilterchange",responder);}}else{if(element.removeEventListener){element.removeEventListener(actualEventName,responder,false);}else{element.detachEvent("on"+actualEventName,responder);}}registry.set(eventName,responders.without(responder));return element;}function fire(element,eventName,memo,bubble){element=$(element);if(Object.isUndefined(bubble)){bubble=true;}if(element==document&&document.createEvent&&!element.dispatchEvent){element=document.documentElement;}var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType=bubble?"ondataavailable":"onfilterchange";}event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}return Event.extend(event);}Object.extend(Event,Event.Methods);Object.extend(Event,{fire:fire,observe:observe,stopObserving:stopObserving});Element.addMethods({fire:fire,observe:observe,stopObserving:stopObserving});Object.extend(document,{fire:fire.methodize(),observe:observe.methodize(),stopObserving:stopObserving.methodize(),loaded:false});if(window.Event){Object.extend(window.Event,Event);}else{window.Event=Event;}})();(function(){var timer;function fireContentLoadedEvent(){if(document.loaded){return;}if(timer){window.clearTimeout(timer);}document.loaded=true;document.fire("dom:loaded");}function checkReadyState(){if(document.readyState==="complete"){document.stopObserving("readystatechange",checkReadyState);fireContentLoadedEvent();}}function pollDoScroll(){try{document.documentElement.doScroll("left");}catch(e){timer=pollDoScroll.defer();return;}fireContentLoadedEvent();}if(document.addEventListener){document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);}else{document.observe("readystatechange",checkReadyState);if(window==top){timer=pollDoScroll.defer();}}Event.observe(window,"load",fireContentLoadedEvent);})();Element.addMethods();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');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;},within:function(element,x,y){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(element,x,y);}this.xcomp=x;this.ycomp=y;this.offset=Element.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=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.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;}},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element);},relativize:function(element){Position.prepare();return Element.relativize(element);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options);}};if(!document.getElementsByClassName){document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]";}instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(""):iter(className);return cond?document._getElementsByXPath(".//*"+cond,element):[];}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className){return elements;}var nodes=$(element).getElementsByTagName("*");className=" "+className+" ";for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=" "+child.className+" ")&&(cn.include(className)||(classNames&&classNames.all(function(name){return !name.toString().blank()&&cn.include(" "+name+" ");})))){elements.push(Element.extend(child));}}return elements;};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className);};}(Element.Methods);}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 Scriptaculous={Version:"1.8.3",require:function(libraryName){try{document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');}catch(e){var script=document.createElement("script");script.type="text/javascript";script.src=libraryName;document.getElementsByTagName("head")[0].appendChild(script);}},REQUIRED_PROTOTYPE:"1.6.0.3",load:function(){function convertVersionString(versionString){var v=versionString.replace(/_.*|\./g,"");v=parseInt(v+"0".times(4-v.length));return versionString.indexOf("_")>-1?v-1:v;}if((typeof Prototype=="undefined")||(typeof Element=="undefined")||(typeof Element.Methods=="undefined")||(convertVersionString(Prototype.Version)<convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE))){throw ("script.aculo.us requires the Prototype JavaScript framework >= "+Scriptaculous.REQUIRED_PROTOTYPE);}var js=/scriptaculous\.js(\?.*)?$/;$$("script[src]").findAll(function(s){return s.src.match(js);}).each(function(s){var path=s.src.replace(js,""),includes=s.src.match(/\?.*load=([a-z,]*)/);(includes?includes[1]:"builder,effects,dragdrop,controls,slider,sound").split(",").each(function(include){Scriptaculous.require(path+include+".js");});});}};Scriptaculous.load();var Builder={NODEMAP:{AREA:"map",CAPTION:"table",COL:"table",COLGROUP:"table",LEGEND:"fieldset",OPTGROUP:"select",OPTION:"select",PARAM:"object",TBODY:"table",TD:"table",TFOOT:"table",TH:"table",THEAD:"table",TR:"table"},node:function(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||"div";var parentElement=document.createElement(parentTag);try{parentElement.innerHTML="<"+elementName+"></"+elementName+">";}catch(e){}var element=parentElement.firstChild||null;if(element&&(element.tagName.toUpperCase()!=elementName)){element=element.getElementsByTagName(elementName)[0];}if(!element){element=document.createElement(elementName);}if(!element){return;}if(arguments[1]){if(this._isStringOrNumber(arguments[1])||(arguments[1] instanceof Array)||arguments[1].tagName){this._children(element,arguments[1]);}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+attrs+"></"+elementName+">";}catch(e){}element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1]){element[attr=="class"?"className":attr]=arguments[1][attr];}}if(element.tagName.toUpperCase()!=elementName){element=parentElement.getElementsByTagName(elementName)[0];}}}}if(arguments[2]){this._children(element,arguments[2]);}return $(element);},_text:function(text){return document.createTextNode(text);},ATTR_MAP:{className:"class",htmlFor:"for"},_attributes:function(attributes){var attrs=[];for(attribute in attributes){attrs.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute)+'="'+attributes[attribute].toString().escapeHTML().gsub(/"/,"&quot;")+'"');}return attrs.join(" ");},_children:function(element,children){if(children.tagName){element.appendChild(children);return;}if(typeof children=="object"){children.flatten().each(function(e){if(typeof e=="object"){element.appendChild(e);}else{if(Builder._isStringOrNumber(e)){element.appendChild(Builder._text(e));}}});}else{if(Builder._isStringOrNumber(children)){element.appendChild(Builder._text(children));}}},_isStringOrNumber:function(param){return(typeof param=="string"||typeof param=="number");},build:function(html){var element=this.node("div");$(element).update(html.strip());return element.down();},dump:function(scope){if(typeof scope!="object"&&typeof scope!="function"){scope=window;}var tags=("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);tags.each(function(tag){scope[tag]=function(){return Builder.node.apply(Builder,[tag].concat($A(arguments)));};});}};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({fontSize:(percent/100)+"em"});if(Prototype.Browser.WebKit){window.scrollBy(0,0);}return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||"";};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(" ");element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-0.5)*2)*Math.PI)/2)+0.5;},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(element){var tagifyStyle="position:relative";if(Prototype.Browser.IE){tagifyStyle+=";zoom:1";}element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element("span",{style:tagifyStyle}).update(character==" "?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=="object")||Object.isFunction(element))&&(element.length)){elements=element;}else{elements=$(element).childNodes;}var options=Object.extend({speed:0.1,delay: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,options){element=$(element);effect=(effect||"appear").toLowerCase();return Effect[Effect.PAIRS[effect][element.visible()?1:0]](element,Object.extend({queue:{position:"end",scope:(element.id||"global"),limit:1}},options||{}));}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(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=Object.isString(effect.options.queue)?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"with-last":timestamp=this.effects.pluck("startOn").max()||timestamp;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),15);}},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();for(var i=0,len=this.effects.length;i<len;i++){this.effects[i]&&this.effects[i].loop(timePos);}}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName)){return queueName;}return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get("global");Effect.Base=Class.create({position:null,start:function(options){if(options&&options.transition===false){options.transition=Effect.Transitions.linear;}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.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+"Internal"]){effect.options[eventName+"Internal"](effect);}if(effect.options[eventName]){effect.options[eventName](effect);}}return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,"beforeSetup");if(this.setup){this.setup();}dispatch(this,"afterSetup");}if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,"beforeUpdate");if(this.update){this.update(pos);}dispatch(this,"afterUpdate");}};})();this.event("beforeStart");if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this);}},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish();}this.event("afterFinish");return;}var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"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(){var data=$H();for(property in this){if(!Object.isFunction(this[property])){data.set(property,this[property]);}}return"#<Effect:"+data.inspect()+",options:"+$H(this.options).inspect()+">";}});Effect.Parallel=Class.create(Effect.Base,{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);effect.cancel();effect.event("beforeFinish");if(effect.finish){effect.finish(position);}effect.event("afterFinish");});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value;};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}var options=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}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).round()+"px",top:(this.options.y*position+this.originalTop).round()+"px"});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{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,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","%","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)+(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.round()+"px";}if(this.options.scaleY){d.height=height.round()+"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(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}var options=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();return;}this.oldStyle={};if(!this.options.keepBackgroundImage){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+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset){elementOffsets[1]+=options.offset;}return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round());});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1,to:0,afterFinishInternal:function(effect){if(effect.options.to!=0){return;}effect.element.hide().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:element.getOpacity()||0),to:1,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle("position"),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};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})],Object.extend({duration:1,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){effect.effects[0].element.hide().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().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().setStyle({height:"0px"}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({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().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}});}},arguments[1]||{}));};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})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10;var oldStyle={top:element.getStyle("top"),left:element.getStyle("left")};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}});}});}});}});}});}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom");var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera){effect.element.setStyle({top:""});}effect.element.makeClipping().setStyle({height:"0px"}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom");var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera){effect.element.setStyle({top:""});}effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().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();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};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().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1,from: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"}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().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,from:1,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().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+0.5);};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2,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();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().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style)){this.style=$H(options.style);}else{if(options.style.include(":")){this.style=options.style.parseStyle();}else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]="";});};}}this.start(options);},setup:function(){function parseColor(color){if(!color||["rgba(0, 0, 0, 0)","transparent"].include(color)){color="#ffffff";}color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16);});}this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor("#zzzzzz")!="#zzzzzz"){value=value.parseColor();unit="color";}else{if(property=="opacity"){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}}else{if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}}}var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=="color"?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=="color"?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!="color"&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))));});},update:function(position){var style={},transform,i=this.transforms.length;while(i--){style[(transform=this.transforms[i]).style]=transform.unit=="color"?"#"+(Math.round(transform.originalValue[0]+(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+(Math.round(transform.originalValue[1]+(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+(Math.round(transform.originalValue[2]+(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+(transform.targetValue-transform.originalValue)*position).toFixed(3)+(transform.unit===null?"":transform.unit);}this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get("ids"),effect=track.get("effect"),options=track.get("options");var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options));});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement("div");String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit){style=new Element("div",{style:this}).style;}else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style;}Element.CSS_PROPERTIES.each(function(property){if(style[property]){styleRules.set(property,style[property]);}});if(Prototype.Browser.IE&&this.include("opacity")){styleRules.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);}return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results;});if(!styles.opacity){styles.opacity=element.getOpacity();}return styles;};}Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;};});$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);if(Object.isUndefined(Effect)){throw ("dragdrop.js requires including script.aculo.us' effects.js library");}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(Object.isArray(containment)){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 drop,affected=[];this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop)){affected.push(drop);}});if(affected.length>0){drop=Droppables.findDeepestChild(affected);}if(this.last_active&&this.last_active!=drop){this.deactivate(this.last_active);}if(drop){Position.within(drop.element,point[0],point[1]);if(drop.onHover){drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));}if(drop!=this.last_active){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);return true;}}},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){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable;}.bind(this),draggable.options.delay);}else{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._timeout){clearTimeout(this._timeout);this._timeout=null;}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);}});}if(draggable.options[eventName]){draggable.options[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({initialize:function(element){var defaults={handle:false,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:"_draggable",position:"end"}});},endeffect:function(element){var toOpacity=Object.isNumber(element._opacity)?element._opacity:1;new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue:{scope:"_draggable",position:"end"},afterFinish:function(){Draggable._dragging[element]=false;}});},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||Object.isUndefined(arguments[1].endeffect)){Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});}});}var options=Object.extend(defaults,arguments[1]||{});this.element=$(element);if(options.handle&&Object.isString(options.handle)){this.handle=this.element.down("."+options.handle,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);this._isScrollChild=Element.childOf(this.element,options.scroll);}Element.makePositioned(this.element);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(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element]){return;}if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(tag_name=="INPUT"||tag_name=="SELECT"||tag_name=="OPTION"||tag_name=="BUTTON"||tag_name=="TEXTAREA")){return;}var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=this.element.cumulativeOffset();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.delta){this.delta=this.currentDelta();}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);this._originallyAbsolute=(this.element.getStyle("position")=="absolute");if(!this._originallyAbsolute){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);}if(!this.options.quiet){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+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;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(Prototype.Browser.WebKit){window.scrollBy(0,0);}Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element);}if(this.options.ghosting){if(!this._originallyAbsolute){Position.relativize(this.element);}delete this._originallyAbsolute;Element.remove(this._clone);this._clone=null;}var dropped=false;if(success){dropped=Droppables.fire(event,this.element);if(!dropped){dropped=false;}}if(dropped&&this.options.onDropped){this.options.onDropped(this.element);}Draggables.notify("onEnd",this,event);var revert=this.options.revert;if(revert&&Object.isFunction(revert)){revert=revert(this.element);}var d=this.currentDelta();if(revert&&this.options.reverteffect){if(dropped==0||revert!="failure"){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=this.element.cumulativeOffset();if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){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(Object.isFunction(this.options.snap)){p=this.options.snap(p[0],p[1],this);}else{if(Object.isArray(this.options.snap)){p=p.map(function(v,i){return(v/this.options.snap[i]).round()*this.options.snap[i];}.bind(this));}else{p=p.map(function(v){return(v/this.options.snap).round()*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){if(!(speed[0]||speed[1])){return;}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);if(this._isScrollChild){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};}});Draggable._dragging={};var SortableObserver=Class.create({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={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="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){element=$(element);var s=Sortable.sortables[element.id];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,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,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);}(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):(options.handle?$(e).select("."+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.identify()]=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>0.33&&overlap<0.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,only:droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1-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){Sortable._marker.hide();}},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting){return;}if(!Sortable._marker){Sortable._marker=($("dropmarker")||Element.extend(document.createElement("DIV"))).hide().addClassName("dropmarker").setStyle({position:"absolute"});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}var offsets=dropon.cumulativeOffset();Sortable._marker.setStyle({left:offsets[0]+"px",top:offsets[1]+"px"});if(position=="after"){if(sortable.overlap=="horizontal"){Sortable._marker.setStyle({left:(offsets[0]+dropon.clientWidth)+"px"});}else{Sortable._marker.setStyle({top:(offsets[1]+dropon.clientHeight)+"px"});}}Sortable._marker.show();},_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:[],position:parent.children.length,container:$(children[i]).down(options.treeTag)};if(child.container){this._tree(child.container,options,child);}parent.children.push(child);}return parent;},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:[],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)+"[id]="+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){return element["offset"+((type=="vertical"||type=="height")?"Height":"Width")];};if(typeof Effect=="undefined"){throw ("controls.js requires including script.aculo.us' effects.js library");}var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(element,update,options){element=$(element);this.element=element;this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.oldElementValue=this.element.value;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){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);}if(!this.options.tokens.include("\n")){this.options.tokens.push("\n");}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,"keydown",this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,"display")=="none"){this.options.onShow(this.element,this.update);}if(!this.iefix&&(Prototype.Browser.IE)&&(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,{setTop:(!this.update.style.height)});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();Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();Event.stop(event);return;}}else{if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>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);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;}this.getEntry(this.index).scrollIntoView(true);},markNext:function(){if(this.index<this.entryCount-1){this.index++;}else{this.index=0;}this.getEntry(this.index).scrollIntoView(false);},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=$(selectedElement).select("."+this.options.select)||[];if(nodes.length>0){value=Element.collectTextNodes(nodes[0],this.options.select);}}else{value=Element.collectTextNodesIgnoreClass(selectedElement,"informal");}var bounds=this.getTokenBounds();if(bounds[0]!=-1){var newValue=this.element.value.substr(0,bounds[0]);var whitespace=this.element.value.substr(bounds[0]).match(/^\s+/);if(whitespace){newValue+=whitespace[0];}this.element.value=newValue+value+this.element.value.substr(bounds[1]);}else{this.element.value=value;}this.oldElementValue=this.element.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.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().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;if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{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;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices();}else{this.active=false;this.hide();}this.oldElementValue=this.element.value;},getToken:function(){var bounds=this.getTokenBounds();return this.element.value.substring(bounds[0],bounds[1]).strip();},getTokenBounds:function(){if(null!=this.tokenBounds){return this.tokenBounds;}var value=this.element.value;if(value.strip().empty()){return[-1,0];}var diff=arguments.callee.getFirstDifferencePos(value,this.oldElementValue);var offset=(diff==this.oldElementValue.length?1:0);var prevTokenPos=-1,nextTokenPos=value.length;var tp;for(var index=0,l=this.options.tokens.length;index<l;++index){tp=value.lastIndexOf(this.options.tokens[index],diff+offset-1);if(tp>prevTokenPos){prevTokenPos=tp;}tp=value.indexOf(this.options.tokens[index],diff+offset);if(-1!=tp&&tp<nextTokenPos){nextTokenPos=tp;}}return(this.tokenBounds=[prevTokenPos+1,nextTokenPos]);}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(newS,oldS){var boundary=Math.min(newS.length,oldS.length);for(var index=0;index<boundary;++index){if(newS[index]!=oldS[index]){return index;}}return boundary;};Ajax.Autocompleter=Class.create(Autocompleter.Base,{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(){this.startIndicator();var 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.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({initialize:function(element,url,options){this.url=url;this.element=element=$(element);this.prepareOptions();this._controls={};arguments.callee.dealWithDeprecatedOptions(options);Object.extend(this.options,options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+"-inplaceeditor";if($(this.options.formId)){this.options.formId="";}}if(this.options.externalControl){this.options.externalControl=$(this.options.externalControl);}if(!this.options.externalControl){this.options.externalControlOnly=false;}this._originalBackground=this.element.getStyle("background-color")||"transparent";this.element.title=this.options.clickToEditText;this._boundCancelHandler=this.handleFormCancellation.bind(this);this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);this._boundFailureHandler=this.handleAJAXFailure.bind(this);this._boundSubmitHandler=this.handleFormSubmission.bind(this);this._boundWrapperHandler=this.wrapUp.bind(this);this.registerListeners();},checkForEscapeOrReturn:function(e){if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey){return;}if(Event.KEY_ESC==e.keyCode){this.handleFormCancellation(e);}else{if(Event.KEY_RETURN==e.keyCode){this.handleFormSubmission(e);}}},createControl:function(mode,handler,extraClasses){var control=this.options[mode+"Control"];var text=this.options[mode+"Text"];if("button"==control){var btn=document.createElement("input");btn.type="submit";btn.value=text;btn.className="editor_"+mode+"_button";if("cancel"==mode){btn.onclick=this._boundCancelHandler;}this._form.appendChild(btn);this._controls[mode]=btn;}else{if("link"==control){var link=document.createElement("a");link.href="#";link.appendChild(document.createTextNode(text));link.onclick="cancel"==mode?this._boundCancelHandler:this._boundSubmitHandler;link.className="editor_"+mode+"_link";if(extraClasses){link.className+=" "+extraClasses;}this._form.appendChild(link);this._controls[mode]=link;}}},createEditField:function(){var text=(this.options.loadTextURL?this.options.loadingText:this.getText());var fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement("input");fld.type="text";var size=this.options.size||this.options.cols||0;if(0<size){fld.size=size;}}else{fld=document.createElement("textarea");fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);fld.cols=this.options.cols||40;}fld.name=this.options.paramName;fld.value=text;fld.className="editor_field";if(this.options.submitOnBlur){fld.onblur=this._boundSubmitHandler;}this._controls.editor=fld;if(this.options.loadTextURL){this.loadExternalText();}this._form.appendChild(this._controls.editor);},createForm:function(){var ipe=this;function addText(mode,condition){var text=ipe.options["text"+mode+"Controls"];if(!text||condition===false){return;}ipe._form.appendChild(document.createTextNode(text));}this._form=$(document.createElement("form"));this._form.id=this.options.formId;this._form.addClassName(this.options.formClassName);this._form.onsubmit=this._boundSubmitHandler;this.createEditField();if("textarea"==this._controls.editor.tagName.toLowerCase()){this._form.appendChild(document.createElement("br"));}if(this.options.onFormCustomization){this.options.onFormCustomization(this,this._form);}addText("Before",this.options.okControl||this.options.cancelControl);this.createControl("ok",this._boundSubmitHandler);addText("Between",this.options.okControl&&this.options.cancelControl);this.createControl("cancel",this._boundCancelHandler,"editor_cancel");addText("After",this.options.okControl||this.options.cancelControl);},destroy:function(){if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;}this.leaveEditMode();this.unregisterListeners();},enterEditMode:function(e){if(this._saving||this._editing){return;}this._editing=true;this.triggerCallback("onEnterEditMode");if(this.options.externalControl){this.options.externalControl.hide();}this.element.hide();this.createForm();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL){this.postProcessEditField();}if(e){Event.stop(e);}},enterHover:function(e){if(this.options.hoverClassName){this.element.addClassName(this.options.hoverClassName);}if(this._saving){return;}this.triggerCallback("onEnterHover");},getText:function(){return this.element.innerHTML.unescapeHTML();},handleAJAXFailure:function(transport){this.triggerCallback("onFailure",transport);if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;this._oldInnerHTML=null;}},handleFormCancellation:function(e){this.wrapUp();if(e){Event.stop(e);}},handleFormSubmission:function(e){var form=this._form;var value=$F(this._controls.editor);this.prepareSubmission();var params=this.options.callback(form,value)||"";if(Object.isString(params)){params=params.toQueryParams();}params.editorId=this.element.id;if(this.options.htmlResponse){var options=Object.extend({evalScripts:true},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Updater({success:this.element},this.url,options);}else{var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,options);}if(e){Event.stop(e);}},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl){this.options.externalControl.show();}this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback("onLeaveEditMode");},leaveHover:function(e){if(this.options.hoverClassName){this.element.removeClassName(this.options.hoverClassName);}if(this._saving){return;}this.triggerCallback("onLeaveHover");},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName);this._controls.editor.disabled=true;var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._form.removeClassName(this.options.loadingClassName);var text=transport.responseText;if(this.options.stripLoadedTextTags){text=text.stripTags();}this._controls.editor.value=text;this._controls.editor.disabled=false;this.postProcessEditField();}.bind(this),onFailure:this._boundFailureHandler});new Ajax.Request(this.options.loadTextURL,options);},postProcessEditField:function(){var fpc=this.options.fieldPostCreation;if(fpc){$(this._controls.editor)["focus"==fpc?"focus":"activate"]();}},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);[this._extraDefaultOptions].flatten().compact().each(function(defs){Object.extend(this.options,defs);}.bind(this));},prepareSubmission:function(){this._saving=true;this.removeForm();this.leaveHover();this.showSaving();},registerListeners:function(){this._listeners={};var listener;$H(Ajax.InPlaceEditor.Listeners).each(function(pair){listener=this[pair.value].bind(this);this._listeners[pair.key]=listener;if(!this.options.externalControlOnly){this.element.observe(pair.key,listener);}if(this.options.externalControl){this.options.externalControl.observe(pair.key,listener);}}.bind(this));},removeForm:function(){if(!this._form){return;}this._form.remove();this._form=null;this._controls={};},showSaving:function(){this._oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;this.element.addClassName(this.options.savingClassName);this.element.style.backgroundColor=this._originalBackground;this.element.show();},triggerCallback:function(cbName,arg){if("function"==typeof this.options[cbName]){this.options[cbName](this,arg);}},unregisterListeners:function(){$H(this._listeners).each(function(pair){if(!this.options.externalControlOnly){this.element.stopObserving(pair.key,pair.value);}if(this.options.externalControl){this.options.externalControl.stopObserving(pair.key,pair.value);}}.bind(this));},wrapUp:function(transport){this.leaveEditMode();this._boundComplete(transport,this.element);}});Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,element,url,options){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;$super(element,url,options);},createEditField:function(){var list=document.createElement("select");list.name=this.options.paramName;list.size=1;this._controls.editor=list;this._collection=this.options.collection||[];if(this.options.loadCollectionURL){this.loadCollection();}else{this.checkForExternalText();}this._form.appendChild(this._controls.editor);},loadCollection:function(){this._form.addClassName(this.options.loadingClassName);this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js)){throw ("Server returned an invalid collection representation.");}this._collection=eval(js);this.checkForExternalText();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadCollectionURL,options);},showLoadingText:function(text){this._controls.editor.disabled=true;var tempOption=this._controls.editor.firstChild;if(!tempOption){tempOption=document.createElement("option");tempOption.value="";this._controls.editor.appendChild(tempOption);tempOption.selected=true;}tempOption.update((text||"").stripScripts().stripTags());},checkForExternalText:function(){this._text=this.getText();if(this.options.loadTextURL){this.loadExternalText();}else{this.buildOptionList();}},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var options=Object.extend({method:"get"},this.options.ajaxOptions);Object.extend(options,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._text=transport.responseText.strip();this.buildOptionList();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadTextURL,options);},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName);this._collection=this._collection.map(function(entry){return 2===entry.length?entry:[entry,entry].flatten();});var marker=("value" in this.options)?this.options.value:this._text;var textFound=this._collection.any(function(entry){return entry[0]==marker;}.bind(this));this._controls.editor.update("");var option;this._collection.each(function(entry,index){option=document.createElement("option");option.value=entry[0];option.selected=textFound?entry[0]==marker:0==index;option.appendChild(document.createTextNode(entry[1]));this._controls.editor.appendChild(option);}.bind(this));this._controls.editor.disabled=false;Field.scrollFreeActivate(this._controls.editor);}});Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(options){if(!options){return;}function fallback(name,expr){if(name in options||expr===undefined){return;}options[name]=expr;}fallback("cancelControl",(options.cancelLink?"link":(options.cancelButton?"button":options.cancelLink==options.cancelButton==false?false:undefined)));fallback("okControl",(options.okLink?"link":(options.okButton?"button":options.okLink==options.okButton==false?false:undefined)));fallback("highlightColor",options.highlightcolor);fallback("highlightEndColor",options.highlightendcolor);};Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:"link",cancelText:"cancel",clickToEditText:"Click to edit",externalControl:null,externalControlOnly:false,fieldPostCreation:"activate",formClassName:"inplaceeditor-form",formId:null,highlightColor:"#ffff99",highlightEndColor:"#ffffff",hoverClassName:"",htmlResponse:true,loadingClassName:"inplaceeditor-loading",loadingText:"Loading...",okControl:"button",okText:"ok",paramName:"value",rows:1,savingClassName:"inplaceeditor-saving",savingText:"Saving...",size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:"",textBeforeControls:"",textBetweenControls:""},DefaultCallbacks:{callback:function(form){return Form.serialize(form);},onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightColor,keepBackgroundImage:true});},onEnterEditMode:null,onEnterHover:function(ipe){ipe.element.style.backgroundColor=ipe.options.highlightColor;if(ipe._effect){ipe._effect.cancel();}},onFailure:function(transport,ipe){alert("Error communication with the server: "+transport.responseText.stripTags());},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:true});}},Listeners:{click:"enterEditMode",keydown:"checkForEscapeOrReturn",mouseover:"enterHover",mouseout:"leaveHover"}});Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:"Loading options..."};Form.Element.DelayedObserver=Class.create({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));}});if(!Control){var Control={};}Control.Slider=Class.create({initialize:function(handle,track,options){var slider=this;if(Object.isArray(handle)){this.handles=handle.collect(function(e){return $(e);});}else{this.handles=[$(handle)];}this.track=$(track);this.options=options||{};this.axis=this.options.axis||"horizontal";this.increment=this.options.increment||1;this.step=parseInt(this.options.step||"1");this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map(function(){return 0;});this.spans=this.options.spans?this.options.spans.map(function(s){return $(s);}):false;this.options.startSpan=$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||"0");this.alignY=parseInt(this.options.alignY||"0");this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?(this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,"")):(this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,""));this.active=false;this.dragging=false;this.disabled=false;if(this.options.disabled){this.setDisabled();}this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false;if(this.allowedValues){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max();}this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);this.handles.each(function(h,i){i=slider.handles.length-1-i;slider.setValue(parseFloat((Object.isArray(slider.options.sliderValue)?slider.options.sliderValue[i]:slider.options.sliderValue)||slider.range.start),i);h.makePositioned().observe("mousedown",slider.eventMouseDown);});this.track.observe("mousedown",this.eventMouseDown);document.observe("mouseup",this.eventMouseUp);document.observe("mousemove",this.eventMouseMove);this.initialized=true;},dispose:function(){var slider=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);this.handles.each(function(h){Event.stopObserving(h,"mousedown",slider.eventMouseDown);});},setDisabled:function(){this.disabled=true;},setEnabled:function(){this.disabled=false;},getNearestValue:function(value){if(this.allowedValues){if(value>=this.allowedValues.max()){return(this.allowedValues.max());}if(value<=this.allowedValues.min()){return(this.allowedValues.min());}var offset=Math.abs(this.allowedValues[0]-value);var newValue=this.allowedValues[0];this.allowedValues.each(function(v){var currentOffset=Math.abs(v-value);if(currentOffset<=offset){newValue=v;offset=currentOffset;}});return newValue;}if(value>this.range.end){return this.range.end;}if(value<this.range.start){return this.range.start;}return value;},setValue:function(sliderValue,handleIdx){if(!this.active){this.activeHandleIdx=handleIdx||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles();}handleIdx=handleIdx||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((handleIdx>0)&&(sliderValue<this.values[handleIdx-1])){sliderValue=this.values[handleIdx-1];}if((handleIdx<(this.handles.length-1))&&(sliderValue>this.values[handleIdx+1])){sliderValue=this.values[handleIdx+1];}}sliderValue=this.getNearestValue(sliderValue);this.values[handleIdx]=sliderValue;this.value=this.values[0];this.handles[handleIdx].style[this.isVertical()?"top":"left"]=this.translateToPx(sliderValue);this.drawSpans();if(!this.dragging||!this.event){this.updateFinished();}},setValueBy:function(delta,handleIdx){this.setValue(this.values[handleIdx||this.activeHandleIdx||0]+delta,handleIdx||this.activeHandleIdx||0);},translateToPx:function(value){return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(value-this.range.start))+"px";},translateToValue:function(offset){return((offset/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start);},getRange:function(range){var v=this.values.sortBy(Prototype.K);range=range||0;return $R(v[range],v[range+1]);},minimumOffset:function(){return(this.isVertical()?this.alignY:this.alignX);},maximumOffset:function(){return(this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-this.alignX);},isVertical:function(){return(this.axis=="vertical");},drawSpans:function(){var slider=this;if(this.spans){$R(0,this.spans.length-1).each(function(r){slider.setSpan(slider.spans[r],slider.getRange(r));});}if(this.options.startSpan){this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value));}if(this.options.endSpan){this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum));}},setSpan:function(span,range){if(this.isVertical()){span.style.top=this.translateToPx(range.start);span.style.height=this.translateToPx(range.end-range.start+this.range.start);}else{span.style.left=this.translateToPx(range.start);span.style.width=this.translateToPx(range.end-range.start+this.range.start);}},updateStyles:function(){this.handles.each(function(h){Element.removeClassName(h,"selected");});Element.addClassName(this.activeHandle,"selected");},startDrag:function(event){if(Event.isLeftClick(event)){if(!this.disabled){this.active=true;var handle=Event.element(event);var pointer=[Event.pointerX(event),Event.pointerY(event)];var track=handle;if(track==this.track){var offsets=this.track.cumulativeOffset();this.event=event;this.setValue(this.translateToValue((this.isVertical()?pointer[1]-offsets[1]:pointer[0]-offsets[0])-(this.handleLength/2)));var offsets=this.activeHandle.cumulativeOffset();this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}else{while((this.handles.indexOf(handle)==-1)&&handle.parentNode){handle=handle.parentNode;}if(this.handles.indexOf(handle)!=-1){this.activeHandle=handle;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();var offsets=this.activeHandle.cumulativeOffset();this.offsetX=(pointer[0]-offsets[0]);this.offsetY=(pointer[1]-offsets[1]);}}}Event.stop(event);}},update:function(event){if(this.active){if(!this.dragging){this.dragging=true;}this.draw(event);if(Prototype.Browser.WebKit){window.scrollBy(0,0);}Event.stop(event);}},draw:function(event){var pointer=[Event.pointerX(event),Event.pointerY(event)];var offsets=this.track.cumulativeOffset();pointer[0]-=this.offsetX+offsets[0];pointer[1]-=this.offsetY+offsets[1];this.event=event;this.setValue(this.translateToValue(this.isVertical()?pointer[1]:pointer[0]));if(this.initialized&&this.options.onSlide){this.options.onSlide(this.values.length>1?this.values:this.value,this);}},endDrag:function(event){if(this.active&&this.dragging){this.finishDrag(event,true);Event.stop(event);}this.active=false;this.dragging=false;},finishDrag:function(event,success){this.active=false;this.dragging=false;this.updateFinished();},updateFinished:function(){if(this.initialized&&this.options.onChange){this.options.onChange(this.values.length>1?this.values:this.value,this);}this.event=null;}});Sound={tracks:{},_enabled:true,template:new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'),enable:function(){Sound._enabled=true;},disable:function(){Sound._enabled=false;},play:function(url){if(!Sound._enabled){return;}var options=Object.extend({track:"global",url:url,replace:false},arguments[1]||{});if(options.replace&&this.tracks[options.track]){$R(0,this.tracks[options.track].id).each(function(id){var sound=$("sound_"+options.track+"_"+id);sound.Stop&&sound.Stop();sound.remove();});this.tracks[options.track]=null;}if(!this.tracks[options.track]){this.tracks[options.track]={id:0};}else{this.tracks[options.track].id++;}options.id=this.tracks[options.track].id;$$("body")[0].insert(Prototype.Browser.IE?new Element("bgsound",{id:"sound_"+options.track+"_"+options.id,src:options.url,loop:1,autostart:true}):Sound.template.evaluate(options));}};if(Prototype.Browser.Gecko&&navigator.userAgent.indexOf("Win")>0){if(navigator.plugins&&$A(navigator.plugins).detect(function(p){return p.name.indexOf("QuickTime")!=-1;})){Sound.template=new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>');}else{if(navigator.plugins&&$A(navigator.plugins).detect(function(p){return p.name.indexOf("Windows Media")!=-1;})){Sound.template=new Template('<object id="sound_#{track}_#{id}" type="application/x-mplayer2" data="#{url}"></object>');}else{if(navigator.plugins&&$A(navigator.plugins).detect(function(p){return p.name.indexOf("RealPlayer")!=-1;})){Sound.template=new Template('<embed type="audio/x-pn-realaudio-plugin" style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>');}else{Sound.play=function(){};}}}}if(typeof window.console=="undefined"||typeof console.firebug=="undefined"){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupCollapsed","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i){window.console[names[i]]=function(){};}}if((typeof Prototype=="undefined")||Playray.PrototypeVersion<1.6){throw ("Playray requires the Prototype JavaScript framework >= 1.6.0");}if(typeof CM8ShowAdMargin=="undefined"){CM8ShowAdMargin=function(){};}if(typeof CM8ShowAd=="undefined"){CM8ShowAd=function(){};}Object.extend(Playray,{Navigate:function(e,dest,target,features){if(e){if(typeof e=="string"){if(dest){target=dest;}dest=e;}else{var elem=Event.element(e);var a=e.findElement("a");if(!Playray.LoggedIn&&elem.up("*[rel~=login]")){Playray.ModalLogin.open(e,dest);return;}if((a&&a.href)||!dest){return;}if((elem.tagName=="INPUT"&&(elem.getAttribute("type")=="checkbox"||elem.getAttribute("type")=="radio"||elem.getAttribute("type")=="text"))||elem.hasClassName("nolink")){return;}}}if(!target||target=="_self"){document.location=dest;return true;}else{if(!features){features=null;}return window.open(dest,target,features);}},navigate:function(e,dest,target){this.Navigate(e,dest,target);},Reload:function(){if(top.location&&top.location.reload){top.location.reload(true);}else{self.location.reload(true);}},Resize:function(selector,h){var els=$$(selector);var h=parseInt(h)+20;if(h<100){h=120;}els.each(function(el){el.setAttribute("height",h);el.setStyle({height:h+"px"});});},AddOnLoadEvent:Playray.onload,AddOnloadEvent:Playray.onload,GameFaceGallery:function(){},reloadSWF:function(){var i,o,flashvars,fo,matches;for(i=0;i<arguments.length;i++){o=$(arguments[i]);if(typeof(o)=="undefined"||!o){continue;}if(Playray.Browser.isIE){if(o.childNodes.length>0&&o.childNodes[0].childNodes.length>0){o=o.childNodes[0];for(j=0;j<o.childNodes.length;j++){if(o.childNodes[j].name=="flashvars"){flashvars=o.childNodes[j].value.split("&");break;}}}if(flashvars&&flashvars.length>0){fo=new SWFObject(o.Movie,o.parentNode.id,o.width,o.height,7);for(j=0;j<flashvars.length;j++){matches=/(\w+)=([\s\S]+)/.exec(flashvars[j]);if(matches&&matches.length==3){fo.addVariable(unescape(matches[1]),unescape(matches[2]));}}fo.write(o.parentNode.id);}}else{o.innerHTML=o.innerHTML;}}},getBitmapUrl:function(userId,skinId,size,completeFunc){var uid,ret,params,req;size=size||60;if(userId>0&&skinId>0){uid=userId+"";ret=Playray.Config.ImgServer+"/bitmap/"+uid.charAt(uid.length-1)+"/"+uid.charAt(uid.length-2)+"/"+uid.charAt(uid.length-3)+"/"+uid+"/head_"+uid+"_"+skinId+"_"+size+"x"+size+".png";return ret;}else{params=(userId>0)?{uid:userId}:{login:unescape(userId)};req=new Ajax.Request("/q/get_bitmap/"+size+"x"+size,{method:"get",parameters:params,onComplete:function(request){if(!request||request.status!=200){return;}response=request.responseXML.getElementsByTagName("bitmap");if(!response||response.length!=1){return;}completeFunc(response[0].firstChild.nodeValue);}});}},translate:function(str){if(typeof str=="object"&&str.length>0){str=str[Math.round(Math.random()*(str.length-1))];}if(arguments.length<2){return str||"";}var args=$A(arguments);if(typeof arguments[1]=="object"||typeof arguments[1]=="array"){args=arguments[1];args.splice(0,0,str);}var t=new Template(str,/(^|.|\r|\n)(%(\d))/);try{str=t.evaluate(args);}catch(e){}return str;},updateCount:function(type,val,params){var val=parseInt(val);if(val==0||isNaN(val)){return;}var params=params||{};params=Object.extend(params,{pulsate:false});var re=/(\d+)/;var ttre=new RegExp(_("\brel=['\"][^'\"]*%1",type),"i");var tgts=typeof type=="object"?$A([type]):$$(_("*[rel~=%1]",type));tgts.each(function(el){var html=el.innerHTML.replace(/[\D]/,"");var matches=re.exec(html);var old=parseInt(matches[1]);var ttmatch=new RegExp(old.toString().split("").join("\\s*"));if(isNaN(old)||val!=old){if(params.highlight){Playray.Effects.highlight(el);}if(params.pulsate){Playray.Effects.pulsate(el);}el.innerHTML=html.replace(re,val+" ");var tt=el.up(".tooltip");if(tt&&tt._title){if(re.test(tt._title)){tt._title=tt._title.replace(ttmatch,val+" ");}}if(params.onUpdate&&typeof params.onUpdate=="function"){params.onUpdate(el);}}}.bind(this));},getCount:function(type){var tgts=typeof type=="object"?$A([type]):$$(_("*[rel~=%1]",type));var tgt=tgts.pop();if(!tgt){return null;}var ret=parseInt(tgt.innerHTML.replace(/[\D]/,""));return isNaN(ret)?0:ret;},fixPNG:function(searchNode){if(Playray.Browser.isIE55||Playray.Browser.isIE6x){searchNode=searchNode||$(document.documentElement);var images=searchNode.select("img.png");images.each(function(img){var _size,_id,_class,_title,_style,_str;if(img.src.indexOf(".png")!=-1){_size=img.className.match(/icon-([\d]+)/);if(_size&&_size[1]){img.width=_size[1];img.height=_size[1];}_id=(img.id)?'id="'+img.id+'" ':"";_class=(img.className)?'class="'+img.className+'" ':"";_title=(img.title)?"title='"+img.title+"'":"";_display=img.getStyle("display");if(_display=="none"||_display=="inline"){_style="display: inline-block; "+img.style.cssText;}else{_style=img.style.cssText;}var _str='<img width="'+img.width+'" height="'+img.height+'" src="'+Playray.Config.FileServer+'/img/clear.gif" '+_id+_class+_title+' style="'+_style+"; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"', sizingMethod='image');\" />";img.outerHTML=_str;img=null;}});}},setCookie:function(cookieName,value,expireDays){var exdate=new Date();var domain=location.host.replace(/^(\w+)\./,".");if(expireDays!==null){exdate.setDate(exdate.getDate()+expireDays);}document.cookie=cookieName+"="+escape(value)+";domain="+domain+";path=/"+((expireDays!==null)?";expires="+exdate.toGMTString():"");},getCookie:function(cookieName){var ret=null;if(document.cookie.length>0){var c_start=document.cookie.indexOf(cookieName+"=");if(c_start!=-1){c_start=c_start+cookieName.length+1;var c_end=document.cookie.indexOf(";",c_start);if(c_end==-1){c_end=document.cookie.length;}ret=unescape(document.cookie.substring(c_start,c_end));}}return ret&&ret!=""&&ret!="null"?ret:null;},deleteCookie:function(cookieName){this.setCookie(cookieName,"",-1);},observeHashChange:function(func){if(!func){return;}this._onHashChangeFunc=func;this._lastHash="";if(!this._hashTimer){this._hashTimer=setInterval(this._onHashChange.bind(this),100);}},_onHashChange:function(){if(this._lastHash!==location.hash){this._lastHash=location.hash;this._onHashChangeFunc(location.hash.substring(1));}},hashLauncher:function(){Playray.observeHashChange(this.parseHash.bind(this));},parseHash:function(hash){var toks=hash.replace(/^[/\s]+|[/\s]+$/g,"").split("/");switch(toks[0]){case"shop":Playray.Siteshop.open(hash);break;case"seteli":if(Playray.LoggedIn){Playray.Modal.openModal("/seteli/");}else{Playray.ModalLogin.open();}break;case"login":Playray.ModalLogin.open();break;case"signup":case"register":Playray.Modal.openModal("/account/create/");break;}},keepAlive:function(sec){Playray.Config.KeepAlive=sec||60*15;if(Playray.Config.KeepAlive>0){this.checkTimer=setTimeout("Playray._keepAlive()",1000*Playray.Config.KeepAlive);}},_keepAlive:function(){var req=new Ajax.Request("/q/sessionkeepalive",{method:"post"});if(Playray.Config.KeepAlive){this.checkTimer=setTimeout("Playray._keepAlive()",1000*Playray.Config.KeepAlive);}},encodeBase64:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else{if(isNaN(chr3)){enc4=64;}}output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);}while(i<input.length);return output;},openImage:function(url,e){var div,b,container;b=document.getElementsByTagName("body")[0];container=$("modalCharacter");if(!container){container=new Element("div",{id:"modalImage"}).hide();b.appendChild(container);}var req=new Ajax.Request("/q/getimagesize",{method:"post",parameters:{url:url},onLoading:function(request){Playray.Modal.toggle(container,true,function(){container.hide();Playray.Modal.toggle(container,false);});Playray.Modal.showSpinner();},onComplete:function(request){Playray.Modal.hideSpinner();var json=request.responseText.evalJSON();if(json.width&&json.height){var width=parseInt(json.width);var height=parseInt(json.height);var windowWidth=parseInt(window.getWidth()-100);var windowHeight=parseInt(window.getHeight()-100);if(width>windowWidth||height>windowHeight){var ratio=width/height;if(width>windowWidth){width=windowWidth;height=Math.round(width*ratio);}if(height>windowHeight){height=windowHeight;width=Math.round(height*ratio);}}div=container.down("div.image");if(!div){div=new Element("div",{"class":"image rounded9"});var ci=new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/icons/15x15/close.png","class":"hover icon-15",rel:"close"});ci.onclick=function(){container.hide();Playray.Modal.toggle(container,false);};div.insert(ci);}else{img=div.down("img.image");img.remove();}var img=new Element("img",{"class":"image",src:url+" ",width:width,height:height,alt:"",border:0});div.insert(img);div.setStyle({width:width+"px",height:height+"px"});container.update(div);container.show();Playray.Modal.center(container);}else{Playray.Modal.hideSpinner();Playray.Modal.toggle(null,false);}},onError:function(){Playray.Modal.hideSpinner();Playray.Modal.toggle(container,false);}});if(e){Event.stop(e);}return false;}});var _=Playray.translate;if(typeof Position!="object"){var Position={};Position.cumulativeOffset=function(el){return $(el).cumulativeOffset();};}Object.extend(Position,{center:function(element,options){if(!element||!element.visible()){return;}var dims,winWidth,winHeight,offLeft,offTop;options=Object.extend({zIndex:999,update:false,top:true,left:true},arguments[1]||{});if(!element._centered){Element.setStyle(element,{position:"absolute",zIndex:options.zIndex});element._centered=true;}dims=element.getDimensions();if(dims.height==0&&dims.width==0){dims=element.down().getDimensions();}if(options.top){if(!options.offTop){winHeight=window.getHeight();options.offTop=Math.floor((winHeight-dims.height)/2*0.8);}}element.style.top=((options.offTop)?parseInt(options.offTop):"0")+"px";if(parseInt(element.style.top)<0){element.style.top="3px";}if(options.left){if(!options.offLeft){winWidth=window.getWidth();options.offLeft=Math.floor((winWidth-dims.width)/2);}}element.style.left=((options.offLeft)?parseInt(options.offLeft):"0")+"px";},magnet:function(element,magnetElement,params){if(!element||!magnetElement){return;}var options,dims,offLeft,offTop;options=Object.extend({zIndex:999,update:false,offsetLeft:0,offsetTop:0},arguments[2]||{});if(!element._positioned){Element.setStyle(element,{position:"absolute",zIndex:options.zIndex});element._positioned=true;}dims=Element.getDimensions(element);Position.prepare();var offset=Position.cumulativeOffset(magnetElement);element.style.top=(offset[1]+parseInt(options.offsetTop))+"px";element.style.left=(offset[0]+parseInt(options.offsetLeft))+"px";if(options.update){options.update=false;Event.observe(window,"resize",function(e){Position.magnet(element,magnetElement,options);},false);Event.observe(window,"scroll",function(e){Position.magnet(element,magnetElement,options);},false);}}});Object.extend(window,{getWidth:function(){if(Playray.Browser.isKHTML){return this.innerWidth;}if(Playray.Browser.isOpera&&Playray.Browser.isUnix){return document.body.clientWidth;}return document.documentElement.clientWidth;},getHeight:function(){if(Playray.Browser.isKHTML){return this.innerHeight;}return document.documentElement.clientHeight;},getScrollWidth:function(){if(Playray.Browser.isIE){return Math.max(document.documentElement.offsetWidth,document.documentElement.scrollWidth);}if(Playray.Browser.isKHTML){return document.body.scrollWidth;}return document.documentElement.scrollWidth;},getScrollHeight:function(){if(Playray.Browser.isIE){return Math.max(document.documentElement.offsetHeight,document.documentElement.scrollHeight);}if(Playray.Browser.isKHTML){return document.body.scrollHeight;}return document.documentElement.scrollHeight;},getScrollLeft:function(){return this.pageXOffset||document.documentElement.scrollLeft;},getScrollTop:function(){return this.pageYOffset||document.documentElement.scrollTop;},getSize:function(){return{size:{x:this.getWidth(),y:this.getHeight()},scrollSize:{x:this.getScrollWidth(),y:this.getScrollHeight()},scroll:{x:this.getScrollLeft(),y:this.getScrollTop()}};}});Object.extend(RegExp,{escape:function(str){var specials=new RegExp("[.*+?|()\\[\\]{}\\\\]","g");return str?str.replace(specials,"\\$&"):str;}});Object.extend(String.prototype,{escapeRegExp:function(){return RegExp.escape(this.toString());}});var MD5=(function(){function core_md5(x,len){x[len>>5]|=128<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}return[a,b,c,d];}function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t);}function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t);}function core_hmac_md5(key,data){var bkey=str2binl(key);if(bkey.length>16){bkey=core_md5(bkey,key.length*MD5.chrsz);}var ipad=[],opad=[];for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828;}var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*MD5.chrsz);return core_md5(opad.concat(hash),512+128);}function safe_add(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&65535);}function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}function str2binl(str){var bin=[],chrsz=MD5.chrsz;var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);}return bin;}function binl2str(bin){var str="",chrsz=MD5.chrsz;var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz){str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);}return str;}function binl2hex(binarray){var hex_tab=MD5.hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&15)+hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&15);}return str;}function binl2b64(binarray){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3){var triplet=(((binarray[i>>2]>>8*(i%4))&255)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&255)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&255);for(var j=0;j<4;j++){if(i*8+j*6>binarray.length*32){str+=MD5.b64pad;}else{str+=tab.charAt((triplet>>6*(3-j))&63);}}}return str;}return{hexcase:0,b64pad:"",chrsz:8,hex:function(s){return binl2hex(core_md5(str2binl(s),s.length*MD5.chrsz));},base64:function(s){return binl2b64(core_md5(str2binl(s),s.length*MD5.chrsz));},string:function(s){return binl2str(core_md5(str2binl(s),s.length*MD5.chrsz));},hmac:{hex:function(key,data){return binl2hex(core_hmac_md5(key,data));},base64:function(key,data){return binl2b64(core_hmac_md5(key,data));},string:function(key,data){return binl2str(core_hmac_md5(key,data));}}};})();if(typeof Playray.Coinshop!="object"){Playray.Coinshop={init:function(){},attach:function(){}};}Playray.Init=Class.create({initialize:function(){this.browser=Playray.Browser.init();document.observe("dom:loaded",this.onDOMLoad);Playray.triggerOnload("init");},onDOMLoad:function(){Playray.fixPNG();Playray.Site.init();Playray.Login.init();Playray.Coinshop.init();Playray.Character.init();Playray.Character.Archive.init();Playray.Tooltips.init();Playray.Layout.init();Playray.Forms.init();Playray.Comments.init();Playray.Textareas.init();Playray.Dialog.init();Playray.Dropdowns.init();Playray.AutoComplete.init();Playray.Userpage.init();Playray.Events.init();Playray.Gadgets.init();Playray.Mood.init();Playray.SiteShop.init();Playray.SiteShop.Lifts.init();Playray.Rate.init();Playray.Notify.init();Playray.Modal.attach();Playray.ModalLogin.attach();Playray.Tooltips.attach();Playray.Forms.attach();Playray.Comments.attach();Playray.Rate.attach();Playray.Site.attach();Playray.Interstitial.open();Playray.Fightems.init();Playray.Config.isFramed=(top.location!=self.location);Playray.triggerOnload("dom");Playray.parseHash(document.location.hash.toLowerCase().substring(1));if(Playray.getCookie("OVERLAY")){var url=Playray.getCookie("OVERLAY");Playray.deleteCookie("OVERLAY");if($("gamecontainer")){Playray.Layout.Overlay.ajax(url,{parent:$("gamecontainer")});}else{Playray.Modal.openModal(url);}}$(document.body).observe("Playray:onAdClick",function(e){if(e.memo&&e.memo.id>0){var xhr=new Ajax.Request(_("/r/click/%1",e.memo.id));}});}});Playray.Site={init:function(){Playray.Site.Header.init();Playray.Site.Spotlight.init();Playray.Site.Ecard.init();Playray.Site.Coinshop.init();Playray.Site.Coinshop.New.init();Playray.Site.Registration.init();Playray.Site.FavGames.init();Playray.Site.Searchfields.init();Playray.Site.CharacterWidget.init();Playray.Site.Scorelist.init();this.checkLogin();this.checkRegister();this.bumpFooter();Event.observe(window,"resize",this.bumpFooter);if(screen.width==1280&&$$("applet").length==0){document.body.style.overflowX="hidden";}},attach:function(){Playray.Site.Coinshop.attach();},bumpFooter:function(){if(typeof draugiemResizeIframe!="undefined"){return;}var wh=window.getHeight();if(!$("header")){return;}var hh=$("header").getHeight();var ch=$("content").getHeight();if(ch+hh<wh){$("content").setStyle({minHeight:wh-hh-17+"px"});}var rc=$("padright");if(rc){var rch=rc.getHeight();if(ch<rch){$("content").setStyle({minHeight:rch-20+"px"});}}},checkLogin:function(){var b=$$("body")[0];if(b.hasClassName("showlogin")){Playray.setCookie("playray_login_shown",1);document.location.hash="#login";}},checkRegister:function(){var b=$$("body")[0];if(b.hasClassName("showregister")){Playray.Modal.openModal("/account/create");Playray.setCookie("playray_register_shown",1);}}};Playray.Site.Header={_header:null,_userinfo:null,_infoarea:null,_menu:null,init:function(){this._header=$("header");if(!this._header){return;}this.initNagger();this.Userinfo.init();},initNagger:function(){var ui=$("userinfo");if(!ui){return;}var ei=ui.down("div.extrainfo");if(!ei||!ei.down()){return;}this.nagger={expanded:false,userinfo:ui,bottom:ui.down("div.bottom"),triggers:ui.select(".expand-trigger"),arrow:ui.down("div.bottom .expand-trigger img"),extrainfo:ei};var fx=null;var toggle=function(e,params){params=params||{};params=Object.extend({duration:0.2},params);if(!this.expanded){if(this.nagger.arrow){this.nagger.arrow.up().show();}if(Playray.Browser.isIE){$("content").setStyle({marginTop:this.nagger.extrainfo.getHeight()+this.nagger.bottom.getHeight()-40+"px"});}fx=Playray.Effects.slideDown(this.nagger.extrainfo,{duration:params.duration,beforeStart:function(){this.nagger.userinfo.addClassName("expanded");this.nagger.arrow.addClassName("arrow-up-white");this.nagger.arrow.removeClassName("arrow-down-white");}.bind(this),afterFinish:function(){this.expanded=true;Playray.setCookie("nstate","0");Playray.Layout.Shim.show(this.nagger.userinfo,{height:this.nagger.userinfo.getHeight()+this.nagger.bottom.getHeight()-9,left:-this.nagger.bottom.getWidth(),top:1});}.bind(this)});}else{if(Playray.Browser.isIE){$("content").setStyle({marginTop:0});}fx=Playray.Effects.slideUp(this.nagger.extrainfo,{duration:params.duration,afterFinish:function(){this.nagger.userinfo.removeClassName("expanded");this.expanded=false;Playray.Layout.Shim.hide(this.nagger.userinfo);Playray.setCookie("nstate","1");this.nagger.arrow.removeClassName("arrow-up-white");this.nagger.arrow.addClassName("arrow-down-white");}.bind(this)});}if(e&&e.stop){e.stop();}};this.nagger.triggers.invoke("observe","click",toggle.bindAsEventListener(this));var naggerCookie=Playray.getCookie("nstate");if((!naggerCookie||naggerCookie==0)&&!Playray.URL.match(/^\/games\/play/)){setTimeout(toggle.bind(this,null,{duration:0.5}),1000);}else{if(this.nagger.extrainfo&&this.nagger.arrow){this.nagger.arrow.up().show();}}}};Playray.Site.Header.Userinfo={container:null,dropdown:null,tabs:null,tabcontainers:null,_handlers:null,init:function(){this.container=$("userinfo-v2");if(!this.container){return;}this._handlers=$H({tab:this.tab.bindAsEventListener(this)});this.dropdown={fx:null,container:this.container.down("div.dropdown"),wrapper:this.container.down("div.dropdown div.dwrapper"),elements:this.container.select("div.dropdown div.tab"),current:null,currentHeight:0};if(this.dropdown.container){this.dropdown.container.setStyle({height:"0px"});}if(this.dropdown.wrapper){this.dropdown.wrapper.setStyle({bottom:"0px"});}this.tabs={container:this.container.down("div.tabs"),elements:this.container.select("div.tabs div.tab"),current:null};this.tabs.elements.each(function(t){var f=t.className.match(/tab-(\w+)/);if(f&&f[1]){t._ref=f[1];}t.observe("click",this._handlers.get("tab"));}.bind(this));this.Friends.init(this);this.Messages.init(this);},tab:function(e){tab=Object.isElement(e)?e:e.findElement("div.tab");if((this.dropdown.fx&&typeof this.dropdown.fx=="object"&&this.dropdown.fx.state!="finished")||!tab._ref){Event.stop(e);return;}var targetElement=this.dropdown.elements.find(function(t){return t.hasClassName(tab._ref);}.bind(this));if(!targetElement){return;}if(targetElement.immediateDescendants().length==0){return;}var targetWidth=this.dropdown.container.getWidth();var targetHeight=(this.tabs.current&&this.tabs.current==tab)?0:targetElement.getHeight();var duration=0.2;if(targetHeight!=this.dropdown.currentHeight){this.dropdown.fx=new Effect.Morph(this.dropdown.container,{style:"height:"+targetHeight+"px;",duration:duration,beforeStart:function(effect){if(this.dropdown.current&&this.dropdown.current!=targetElement){Playray.Effects.crossfade(targetElement,this.dropdown.current,0.2);if(this.tabs.current){this.tabs.current.removeClassName("current");}}else{targetElement.show();}tab.addClassName("current");}.bind(this),afterFinish:function(effect){this.dropdown.current=targetElement;this.dropdown.currentHeight=targetHeight;if(targetHeight==0){tab.removeClassName("current");this.tabs.current=null;Playray.Layout.Shim.hide(this.dropdown.container);}else{this.tabs.current=tab;Playray.Layout.Shim.show(this.dropdown.container,{top:90,left:60});}}.bind(this)});}else{if(targetHeight>0){if(this.tabs.current){this.tabs.current.removeClassName("current");}tab.addClassName("current");Playray.Effects.crossfade(targetElement,this.dropdown.current,0.2,{afterFinish:function(){this.dropdown.current=targetElement;this.tabs.current=tab;Playray.Layout.Shim.show(this.dropdown.current);}.bind(this)});}}Event.stop(e);},Friends:{parent:null,elems:null,_handlers:null,scrollerOffset:0,totalFriends:0,totalPending:0,totalPages:0,perPage:4,curPage:1,fx:null,init:function(parent){if(!parent){return;}this.parent=parent;this._handlers=$H({left:this.left.bindAsEventListener(this),right:this.right.bindAsEventListener(this),post:this.post.bindAsEventListener(this),postAll:this.postAll.bindAsEventListener(this)});this.elems={container:this.parent.container.down("div.fcontainer"),online:this.parent.container.down("div.friends div.online"),pending:this.parent.container.down("div.friends div.pending"),list:this.parent.container.down("div.fcontainer div.flist"),left:this.parent.container.down("div.fcontainer div.left"),right:this.parent.container.down("div.fcontainer div.right"),scroller:this.parent.container.down("div.fcontainer div.fscroller"),pager:this.parent.container.down("div.fcontainer div.fpager"),forms:this.parent.container.select("form.unconfirmed_friends")};if(this.elems.left&&this.elems.right){this.elems.left.observe("click",this._handlers.get("left"));this.elems.right.observe("click",this._handlers.get("right"));this.totalFriends=this.elems.list.immediateDescendants().length;if(this.totalFriends>this.perPage){this.elems.right.addClassName("enabled");}this.totalPages=Math.ceil(this.totalFriends/this.perPage);this.pager();}if(this.elems.pending){this.totalPending=this.elems.pending.select("div.eventcontainer").length;}if(this.elems.forms){this.elems.forms.each(function(f){if(f.hasClassName("all")){f.observe("Playray::formSuccess",this._handlers.get("postAll"));}else{f.observe("Playray::formSuccess",this._handlers.get("post"));}}.bind(this));}},right:function(e){if((this.fx&&typeof this.fx=="object"&&this.fx.state!="finished")||!this.elems.right.hasClassName("enabled")){Event.stop(e);return;}this.elems.left.addClassName("enabled");this.curPage++;var offset=this.elems.scroller.clientWidth+4;this.move(this.scrollerOffset-offset,offset);},left:function(e){if((this.fx&&typeof this.fx=="object"&&this.fx.state!="finished")||!this.elems.left.hasClassName("enabled")){Event.stop(e);return;}this.curPage--;var offset=this.elems.scroller.clientWidth+4;this.move(this.scrollerOffset+offset);},move:function(position){this.fx=new Effect.Move(this.elems.scroller.down(),{x:position,y:0,mode:"absolute",duration:0.2,beforeStart:function(){this.elems.right.removeClassName("enabled");this.elems.left.removeClassName("enabled");}.bind(this),afterFinish:function(){this.scrollerOffset=position;if(this.curPage>1){this.elems.left.addClassName("enabled");}if(this.curPage<this.totalPages){this.elems.right.addClassName("enabled");}this.pager();}.bind(this)});},pager:function(){this.elems.pager.update("");if(this.totalPages<=1){return;}$R(1,this.totalPages).each(function(i){var a=new Element("a");a.onclick=function(){var offset=this.elems.scroller.clientWidth+4;var position=-(i*offset-offset);this.curPage=i;this.move(position);}.bind(this);if(i==this.curPage){this.elems.pager.insert(a.update(new Element("strong").update(" &bull; ")));}else{this.elems.pager.insert(a.update(" &bull; "));}}.bind(this));},refresh:function(){var qry=new Ajax.Updater(this.elems.scroller.down("div"),"/q/userinfo_friends",{method:"get",onLoading:function(){this.elems.left.removeClassName("enabled");this.elems.right.removeClassName("enabled");}.bind(this),onComplete:function(){this.elems.list=this.elems.scroller.down("div.flist");this.totalFriends=this.elems.list.immediateDescendants().length||0;this.updateCounts();if(this.totalFriends==0){this.totalPages=0;if(this.totalPending>0){this.elems.online.hide();this.updateHeight();}else{this.elems.container.hide();this.parent.dropdown.current.down("div.heading").addClassName("notice").update(Playray.L10n.NoFriendsOnline);this.updateHeight();}}else{this.elems.online.show();this.updateHeight();this.totalPages=Math.ceil(this.totalFriends/this.perPage);if(this.curPage>this.totalPages){var offset=this.elems.scroller.clientWidth+4;var position=-(this.totalPages*offset-offset);this.curPage=this.totalPages;this.move(position);}if(this.curPage>1){this.elems.left.addClassName("enabled");}if(this.curPage<this.totalPages){this.elems.right.addClassName("enabled");}}this.pager();}.bind(this)});},updateCounts:function(){if(this.elems.pending&&this.elems.pending.visible()){this.totalPending=this.elems.pending.select("div.eventcontainer").select(function(s){return s.visible();}).length;if(this.elems.pending.down("div.heading > span")){this.elems.pending.down("div.heading > span").update(this.totalPending);}}else{this.totalPending=0;}if(this.totalPending==0){this.parent.tabs.elements[1].down("span.badge").remove();}else{this.parent.tabs.elements[1].down("span.badge").update(this.totalPending);if(this.parent.dropdown.current.down("div.heading > span")){this.parent.dropdown.current.down("div.heading > span").update(this.totalFriends);}}},updateHeight:function(){var height=this.parent.dropdown.current.clientHeight;height=(height>0)?height:42;new Effect.Morph(this.parent.dropdown.container,{style:"height:"+height+"px;",duration:0.2});this.parent.dropdown.container.setStyle({height:height+"px"});},post:function(e){var elem=e.element();var ec=elem.up("div.eventcontainer");var json=e.memo||{};if(json.msg&&json.result){Playray.Dialog.open(json.result,Playray.Dialog.parseMsgs(json.msg));if(json.result=="ok"){var doRefresh=Object.isElement(ec.down("span"));if(this.totalPending==1){ec=this.elems.pending;}new Effect.Fade(ec,{duration:0.2,afterFinish:function(){if(doRefresh){this.refresh();}else{this.updateCounts();this.updateHeight();}}.bind(this)});}}},postAll:function(e){var json=e.memo||{};if(json.msg&&json.result){Playray.Dialog.open(json.result,Playray.Dialog.parseMsgs(json.msg));if(json.result=="ok"){new Effect.Fade(this.elems.pending,{duration:0.2,afterFinish:function(){this.refresh();}.bind(this)});}}}},Messages:{parent:null,elems:null,_handlers:null,scrollerOffset:0,totalMessages:0,totalPages:0,perPage:4,curPage:1,fx:null,hasNagger:false,init:function(parent){if(!parent){return;}this.parent=parent;this._handlers=$H({top:this.top.bindAsEventListener(this),bottom:this.bottom.bindAsEventListener(this),mark:this.mark.bindAsEventListener(this)});this.elems={container:this.parent.container.down("div.mcontainer"),list:this.parent.container.down("div.mcontainer div.mlist"),top:this.parent.container.down("div.mcontainer div.top"),bottom:this.parent.container.down("div.mcontainer div.bottom"),scroller:this.parent.container.down("div.mcontainer div.mscroller"),pager:this.parent.container.down("div.mcontainer div.mpager"),nagger:this.parent.container.down("div.mcontainer div.mlist div.nagger")};if(!this.elems.list){return;}this.hasNagger=(this.elems.nagger)?true:false;this.totalMessages=this.elems.list.immediateDescendants().length;if(this.hasNagger){this.totalMessages+=3;}this.totalPages=Math.ceil(this.totalMessages/this.perPage);if(this.elems.top&&this.elems.bottom){this.elems.top.observe("click",this._handlers.get("top"));this.elems.bottom.observe("click",this._handlers.get("bottom"));if(this.totalMessages>this.perPage){this.elems.bottom.addClassName("enabled");}this.pager();this.elems.pager.setStyle({top:Math.round((270-this.totalPages*12)/2).toString()+"px"});}this.elems.list.select("input[name=mark_as_read]").each(function(input){input.checked=false;input.observe("click",this._handlers.get("mark"));}.bind(this));},top:function(e){if((this.fx&&typeof this.fx=="object"&&this.fx.state!="finished")||!this.elems.top.hasClassName("enabled")){Event.stop(e);return;}this.curPage--;var offset=this.elems.scroller.clientHeight+5;this.move(this.scrollerOffset+offset);},bottom:function(e){if((this.fx&&typeof this.fx=="object"&&this.fx.state!="finished")||!this.elems.bottom.hasClassName("enabled")){Event.stop(e);return;}this.curPage++;var offset=this.elems.scroller.clientHeight+5;this.move(this.scrollerOffset-offset);},move:function(position){this.fx=new Effect.Move(this.elems.scroller.down(),{x:0,y:position,mode:"absolute",duration:0.2,beforeStart:function(){this.elems.top.removeClassName("enabled");this.elems.bottom.removeClassName("enabled");}.bind(this),afterFinish:function(){this.elems.top.addClassName("enabled");this.elems.bottom.addClassName("enabled");this.scrollerOffset=position;if(this.scrollerOffset-(this.elems.scroller.clientHeight+5)+this.elems.list.clientHeight<=0){this.elems.bottom.removeClassName("enabled");}else{if(this.scrollerOffset>=0){this.elems.top.removeClassName("enabled");}}this.pager();}.bind(this)});},pager:function(){this.elems.pager.update("");$R(1,this.totalPages).each(function(i){var a=new Element("a");a.onclick=function(){var offset=this.elems.scroller.clientHeight+5;var position=-(i*offset-offset);this.curPage=i;this.move(position);}.bind(this);if(i==this.curPage){this.elems.pager.insert(a.update(new Element("strong").update(" &bull; ")));}else{this.elems.pager.insert(a.update(" &bull; "));}}.bind(this));this.elems.pager.setStyle({top:Math.round((270-this.totalPages*12)/2).toString()+"px"});},mark:function(e){var input=e.element();var container=input.up("div.eventcontainer");var qry=new Ajax.Request("/q/mark_as_read",{method:"post",parameters:{idx:input.value},onLoading:function(){input.hide();input.up("span").addClassName("spinner");}.bind(this),onComplete:function(){input.up("span").removeClassName("spinner");Playray.Effects.puff(container);this.totalMessages--;this.totalPages=this.totalMessages>0?Math.ceil(this.totalMessages/this.perPage):1;if(this.curPage>this.totalPages){var offset=this.elems.scroller.clientHeight+5;var position=-(this.totalPages*offset-offset);this.curPage=this.totalPages;this.move(position);}console.log(this.totalMessages);if(this.totalMessages<=this.perPage){if(this.totalMessages==this.perPage){this.elems.top.remove();this.elems.bottom.remove();this.elems.pager.remove();this.elems.container.setStyle({height:"auto"});this.elems.scroller.setStyle({height:"auto"});this.elems.list.setStyle({height:"auto",position:"relative"});}else{if(this.totalMessages==0){this.parent.tabs.elements[0].down("span.badge").remove();this.elems.container.up("div").hide();this.parent.dropdown.current.down("div.heading").update(Playray.L10n.NoNewMessages).addClassName("notice");}}var height=this.parent.dropdown.current.clientHeight-60;height=(height>0)?height:42;this.parent.dropdown.container.setStyle({height:height+"px"});}this.parent.container.select(".message_count").invoke("update",this.totalMessages);this.pager();}.bind(this)});e.stop();}}};Playray.Site.Spotlight={_container:null,_form:null,_timer:null,init:function(){this._container=$("box_spotlight");if(!this._container){return;}this._form=this._container.down("form");this._spotlight=this._container.down("div.spotlight div.current");var containers={showform:this._form.down("div.showform"),form:this._form.down("div.form")};if(Playray.LoggedIn){containers.showform.down("button").observe("click",function(e){Playray.Effects.crossfade(containers.form,containers.showform);}.bindAsEventListener());containers.form.down("button[type=reset]").observe("click",function(e){Playray.Effects.crossfade(containers.showform,containers.form);textarea._initialized=false;textarea.removeClassName("focused");}.bindAsEventListener());var btn=Playray.Forms.disable(containers.form.down("button[type=submit]"));var textarea=containers.form.down("textarea");var textvalue=textarea.value;textarea.observe("focus",function(e){if(!textarea._initialized){textarea.value="";textarea._initialized=true;textarea.setAttribute("spellcheck","true");Playray.Forms.enable(btn);}textarea.addClassName("focused");}.bindAsEventListener());textarea.observe("blur",function(e){textarea.setAttribute("spellcheck","false");if(!textarea.present()){this._form.reset();textarea._initialized=false;textarea.removeClassName("focused");Playray.Forms.disable(btn);}}.bindAsEventListener(this));this._form.observe("Playray::formSuccess",function(e){if(typeof e.memo=="object"&&e.memo.injectcontent){var content=decodeURIComponent(e.memo.injectcontent);this._spotlight.update(content);this.refresh();Playray.Effects.crossfade(containers.showform,containers.form);this._form.reset();textarea._initialized=false;textarea.removeClassName("focused");Playray.Forms.disable(btn);}}.bindAsEventListener(this));}else{if(containers.showform&&containers.showform.down("button")){containers.showform.down("button").observe("click",function(e){Playray.ModalLogin.open(e);}.bindAsEventListener());}}this.refresh();},refresh:function(){var el=this._form.down("input[name=refresh]");if(el){var timer=parseInt(el.getValue())*1000;this._timer=setTimeout(this._refresh.bind(this),timer);}},_refresh:function(){if(!this._spotlight){return;}var qry=new Ajax.Updater(this._spotlight,"/q/spotlight/template",{onSuccess:this.refresh.bind(this)});qry=null;}};Playray.Site.Ecard={_handlers:null,_formId:"ecardForm",_form:null,_selectorId:"ecardBackgroundSelector",_selector:null,init:function(){this._form=$(this._formId);if(!this._form){return;}this._handlers=$H({changebg:this._changebg.bindAsEventListener(this),toggle:this._toggle.bindAsEventListener(this)});this._form.down("button.preview").observe("click",this._handlers.get("toggle"));this._form.down("button.edit").observe("click",this._handlers.get("toggle"));this._container=this._form.down("div.ecard");this._selector=$(this._selectorId);if(this._selector){this._selector.select("a img").each(function(img){img.observe("click",this._handlers.get("changebg"));}.bind(this));}},_toggle:function(e){this._container.down("div.edit").toggle();this._container.down("div.preview").toggle();this._form.down("button.preview").toggle();this._form.down("button.edit").toggle();this._container.down("div.preview div.quoted").update(this._form.elements["tip[message]"].value);e.stop();},_changebg:function(e){var elem=e.element();var bgindex=elem.getAttribute("alt").toString();if(elem.src.match(/ecard/)){var bgfile=elem.src.substring(0,elem.src.lastIndexOf("/")+1).replace(/thumb/,"bg")+bgindex.substr(bgindex.lastIndexOf("/")+1)+".jpg";}else{var bgfile=elem.src.replace(/thumb/,"bg");}var bgclass=elem.className.toString();this._container.setStyle({backgroundImage:"url("+bgfile+")"});this._container.removeClassName("light");this._container.removeClassName("dark");this._container.addClassName(bgclass);$("selectedBg").value=bgindex;e.stop();return false;}};Playray.Site.Coinshop={_containerId:"coinshop",_container:null,_selector:"*[rel~=section]",_baseURL:"/shop/coins/",_handlers:new Hash(),_justloaded:true,_singlecontainer:false,init:function(){this.QuickSMSBar.init();this._container=$(this._containerId);if(!this._container){return;}this._singlecontainer=this._container.hasClassName("singlecontainer");if(this._singlecontainer){var maxHeight=(window.getHeight()>600)?600:window.getHeight()-100;this._container.setStyle({height:maxHeight+"px"});Playray.Modal.center(this._container.up("div.modalContent"));}this._handlers.set("click",this._click.bindAsEventListener(this));this._handlers.set("payment",this._payment.bindAsEventListener(this));},attach:function(){if(!this._container){return;}if(!Playray.LoggedIn){Playray.ModalLogin.open();}var links=this._container.select(this._selector);links.each(function(lnk){lnk.observe("click",this._handlers.get("click"));}.bind(this));this._container.select("*[rel~=payment]").each(function(lnk){lnk.observe("click",this._handlers.get("payment"));}.bind(this));},update:function(href,container,doScroll){doScroll=(typeof doScroll=="boolean")?doScroll:true;var qry=new Ajax.Updater(this._container,href,{parameters:{type:"ajax",mode:this._singlecontainer?"single":""},onLoading:this._loading.bind(this,container),onComplete:this._complete.bind(this,container,doScroll)});},_click:function(e){var lnk=e.findElement(this._selector);var container=lnk.up("div.innerbox");var href=lnk.getAttribute("href");if(!href&&lnk.down("a")){href=lnk.down("a").getAttribute("href");}if(href&&container){var hash=href.substring(Playray.Config.SiteServer.length).replace(this._baseURL,"");hash=hash.replace(/\//g,"-").replace(/^\-/,"").replace(/\-$/,"");this.update(href,container);var toks=href.match(/\/(\w+)[^/]*\/[\w\d]+$/);if(toks&&toks[1].match(/sms/i)){var fn=null;var f=$("coinshop").down("iframe");if(!(f&&f.getAttribute("name").match(/zong/i))){fn=function(){f=Playray.Modal.isActive()?Playray.Modal.openModal:Playray.Navigate;f("/shop/ok/");};}this.invokeBalanceChecker(fn);}}else{clearInterval(this.balanceCheck);}e.stop();return false;},_loading:function(container,req){if(container){container.addClassName("loading");}$(document.documentElement).addClassName("loading");},_complete:function(container,doScroll,req){if(container){container.removeClassName("loading");}$(document.documentElement).removeClassName("loading");this.attach();if(doScroll){var boxes=this._container.select("div.innerbox");var box=boxes.last();if(box&&!box.visible()){for(var i=boxes.length-1;i>=0;i--){if(boxes[i].visible()){box=boxes[i];break;}}}if(!Playray.Config.isFramed&&!this._singlecontainer&&!Playray.Modal.isActive()){Effect.ScrollTo(box,{duration:1,offset:-10});}$(document).fire("Playray:resize");}Playray.setCookie("shurl",req.request.url);Playray.Track.impr(Playray.getCookie("shurl"));},_payment:function(e){var lnk=e.findElement("*[rel~=payment]");var container=lnk.up("div.innerbox");var frame=this._container.down("iframe");if(!frame){return;}if(this._container.hasClassName("singlecontainer")){container.hide();var wrapper=container.up(".bcwrapper");if(wrapper){wrapper.hide();}if(wrapper.next("div.rowbreak.divider")){wrapper.next("div.rowbreak.divider").hide();}}frame.src=lnk.getAttribute("href");frame.up(".innerbox").show();if(!Playray.Config.isFramed&&!Playray.Modal.isActive()){Effect.ScrollTo(container,{duration:1,offset:-10});}$(document).fire("Playray:resize");var lnkVal=lnk.getAttribute("rel").replace(/\bpayment\b/,"").replace(/\s/,"");Playray.setCookie("shurl",_("%1/%2/",Playray.getCookie("shurl").replace(/\/$/,""),lnkVal));Playray.Track.impr(Playray.getCookie("shurl"));this.invokeBalanceChecker();e.stop();return false;},invokeBalanceChecker:function(onConversion){this.balanceCheck=setInterval(function(){var qry=new Ajax.Request("/q/credits",{method:"post",parameters:"_=1",onSuccess:function(res){var res=parseInt(res.responseText.evalJSON());if(res>Playray.LoggedUserCredits+3){clearInterval(this.balanceCheck);Playray.LoggedUserCredits=res;this.recordConversion();if(typeof onConversion=="function"){onConversion();}}}.bind(this)});}.bind(this),10000);},recordConversion:function(){if(Playray.getCookie("shurl")){var url=_("%1/ok/",Playray.getCookie("shurl").replace(/\/$/,""));Playray.Track.impr(url);Playray.deleteCookie("shurl");}}};Playray.Site.Coinshop.QuickSMSBar={_autoScrollInterval:60000,_containerId:"quicksmsbar",_container:null,init:function(){this._container=$(this._containerId);if(!this._container){return;}var elems={products:this._container.down("div.products"),arrowup:this._container.down("div.arrow-up"),arrowdown:this._container.down("div.arrow-down")};this.elems=elems;if(elems.products){var products=elems.products.select("div.item");}this.maxHeight=products.length*30;this.step=30;this.curPos=parseInt(elems.products.getStyle("top"));if(!isNaN(this.curPos)){this.curPos=(this.curPos<0)?-this.curPos:this.curPos;}else{this.curPos=0;}if(elems.arrowup){elems.arrowup.observe("click",this.onUp.bindAsEventListener(this));}if(elems.arrowdown){elems.arrowdown.observe("click",this.onDown.bindAsEventListener(this));}if(elems.arrowup&&elems.arrowdown&&this._autoScrollInterval>0){this._autoScroller=setInterval(this.onUp.bind(this),this._autoScrollInterval);}},onUp:function(e){if(this.curPos+this.step>this.maxHeight){var fx=new Effect.Move(this.elems.products,{x:0,y:0,mode:"absolute",duration:0.5,queue:"end"});this.curPos=0;if(e){Event.stop(e);}return;}this.curPos+=this.step;var fx=new Effect.Move(this.elems.products,{x:0,y:-(this.step),mode:"relative",duration:0.5,queue:"end"});},onDown:function(e){if(this.curPos<=0){var fx=new Effect.Move(this.elems.products,{x:0,y:-this.maxHeight,mode:"absolute",duration:0.5,queue:"end"});this.curPos=this.maxHeight;if(e){Event.stop(e);}return;}this.curPos-=this.step;var fx=new Effect.Move(this.elems.products,{x:0,y:+(this.step),mode:"relative",duration:0.5,queue:"end"});}};Playray.Site.Registration={_containerId:"registration",_container:null,_form:null,_fields:null,_steps:null,_step:0,_errors:new Hash(),_gender:0,_skin:0,_haspermission:false,_needpermission:true,_timer:null,_prev:{method:null,params:null},_canSubmit:false,init:function(container){this._gender=0;this._skin=0;this._step=0;this._container=container?$(container):$(this._containerId);if(!this._container){return;}this._form=this._container.down("form");if(!this._form){return;}this._steps=this._container.select("div.step");if(this._steps.length==0){return;}this._fields={username:$(this._form.username),email1:$(this._form.email1),password1:$(this._form.password1),password2:$(this._form.password2),birth_year:$(this._form.birth_year),permission:$(this._form.permission),submitbtn:$(this._form.submitbtn)};var start=this._container.select(".start");start.each(function(lnk){lnk.observe("click",this.start.bindAsEventListener(this));}.bind(this));var gender=this._container.select(".selectgender");gender.each(function(lnk){lnk.observe("click",this.selectGender.bindAsEventListener(this));}.bind(this));var skin=this._container.select(".selectskin");skin.each(function(lnk){lnk.observe("click",this.selectSkin.bindAsEventListener(this));}.bind(this));var back=this._container.select(".back");back.each(function(lnk){lnk.observe("click",this.back.bindAsEventListener(this));}.bind(this));this._fields.username.observe("keyup",this._checkField.bindAsEventListener(this,"check_username",3,500));this._fields.username.observe("blur",this._checkField.bindAsEventListener(this,"check_username",3));if(this._fields.email1){this._fields.email1.observe("keyup",this._checkField.bindAsEventListener(this,"check_email",5,500));this._fields.email1.observe("blur",this._checkField.bindAsEventListener(this,"check_email",5));}if(this._fields.password2){this._fields.password2.observe("keyup",this._checkField.bindAsEventListener(this,"check_password",0,500));this._fields.password2.observe("blur",this._checkField.bindAsEventListener(this,"check_password",0));}if(this._fields.birth_year){this._fields.birth_year.observe("change",this._checkAge.bindAsEventListener(this,300));this._fields.birth_year.observe("keyup",this._checkAge.bindAsEventListener(this,300));this._fields.birth_year.observe("blur",this._checkAge.bindAsEventListener(this,0));}else{this._needpermission=false;}if(this._fields.permission){this._fields.permission.observe("click",function(e){this._checkAge();this._checkErrors();}.bindAsEventListener(this));}this._form.observe("submit",this._checkSubmit.bindAsEventListener(this));this._fields.submitbtn.disabled=true;this._fields.submitbtn.up("div.button").addClassName("disabled");this._container.down(".eula").hide();this._container.down(".fill").show();var err=this._container.down("div.error");err.hide();err.select("span").each(function(el){var cat=(el.hasAttribute("rel"))?el.getAttribute("rel").toString().replace(/nofollow/,"").strip():"";if(cat=="password"){this._addError(this._fields.password2,el.innerHTML);}else{if(cat=="email"){this._addError(this._fields.email1,el.innerHTML);}else{if(cat=="username"){this._addError(this._fields.username,el.innerHTML);}}}}.bind(this));if(this._form.gender.value>0){this._gender=(this._form.gender.value==1)?"female":"male";this._step=1;}if(this._form.skin.value>0){this._skin=this._form.skin.value;this._step=2;}if(!$F(this._form.username).empty()){this._checkField(this._form.username,"check_username",3,0);}if(Playray.Modal.isActive()||this._step>0){Playray.Track.impr(_("/account/create/%1/",this._step));if(!this.tracked){Playray.Track.event("regform","start",Playray.URL);this.tracked=true;}}},start:function(e){if(this._gender!=0){this._step--;this.selectGender(e,this._gender);e.stop();}else{this._start(0.4);Playray.Track.impr(_("/account/create/%1/",this._step+1));if(!this.tracked){Playray.Track.event("regform","start",Playray.URL);this.tracked=true;}e.stop();}},_start:function(duration){duration=duration||0.4;var start={btn:this._container.down("div.right div.startbutton"),text:this._container.down("div.left div.starttext")};var gender={btn:this._container.down("div.right div.genderselection"),text:this._container.down("div.left div.gendertext")};Playray.Effects.crossfade(gender.btn,start.btn,duration);Playray.Effects.crossfade(gender.text,start.text,duration);},back:function(e){this.gotoStep(this._step-1);if(e){e.stop();}},forward:function(e){this.gotoStep(this._step+1);if(e){e.stop();}},selectGender:function(e,gender){var el=e.findElement("a");if(gender){this._gender=gender;}else{this._gender=(el.rel)?el.rel.toString().replace(/nofollow/,"").strip():null;}this._container.removeClassName("female","male");this._container.addClassName(this._gender);this._form.gender.value=this._gender=="female"?1:2;this._container.select(".gendercheck").invoke("addClassName","hidden");this._container.select(".gendercheck."+this._gender).invoke("removeClassName","hidden");this.forward();e.stop();},selectSkin:function(e){var el=e.findElement("a");this._skin=(el.rel)?parseInt(el.rel.toString().replace(/nofollow/,"").strip()):0;this._form.skin.value=this._skin;var preview=this._container.down("img.skinpreview");if(preview){preview.src=preview.src.substring(0,preview.src.lastIndexOf("/")+1)+this._gender.toString()+this._skin.toString()+"-preview.png";}this.forward();if(!this._form.username.empty()){this._checkField(this._form.username,"check_username",3,0);}e.stop();},gotoStep:function(step){step=Math.min(step,this._steps.length-1);if(this._step==step){this._step--;}Playray.Effects.crossfade(this._steps[step],this._steps[this._step],0.4,{afterFinish:function(){this._step=step;Playray.Track.impr(_("/account/create/%1/",step+1));}.bind(this)});},_checkSubmit:function(e){if(!this._canSubmit){if(e){e.stop();}return false;}Playray.Track.impr(_("/account/create/%1/",this._step+2));Playray.Track.event("regform","submit",Playray.URL);},_checkField:function(e,method,minLength,wait){var el=Object.isElement(e)?e:e.element();var params=this._form.serialize();if(e.type!="blur"&&(method==null||el.value.length<minLength||(method==this._prev.method&&params==this._prev.params))){return;}el.removeClassName("ok","error");clearTimeout(this._timer);this._prev.method=method;this._prev.params=params;var wait=(wait>0)?wait:0;this._timer=setTimeout(function(){var qry=new Ajax.Request("/q/"+method,{method:"post",parameters:params,onSuccess:this._success.bind(this,el)});}.bind(this),wait);},_checkAge:function(e,wait){clearTimeout(this._timer);if(this._fields.birth_year&&this._container.down(".checkpermission")&&this._container.down(".checkpermission").visible()){if(e&&e.keyCode==Event.KEY_TAB){return;}this._timer=setTimeout(function(){var _curyear=new Date().getFullYear();var _year=Form.Element.getValue(this._form.birth_year)||_curyear+1;var _diff=_curyear-_year;if(_diff<13){this._container.down(".checkpermission").show();this._needpermission=true;this._haspermission=this._fields.permission.checked;if(this._haspermission){this._fields.birth_year.addClassName("ok");}else{this._fields.birth_year.removeClassName("ok");}}else{this._container.down(".checkpermission").hide();this._fields.birth_year.addClassName("ok");this._haspermission=true;this._needpermission=false;}this._checkErrors();}.bind(this),wait);}else{if(this._fields.birth_year){this._fields.birth_year.addClassName("ok");this._haspermission=true;this._needpermission=false;this._checkErrors();}}if(e){e.stop();}},_success:function(el,request){var msg=request.responseText;if(msg.length>0){this._addError(el,msg);}else{this._clearError(el);}this._checkErrors();},_addError:function(el,msg){var fs=el.up("fieldset");fs.select("input","select").each(function(el){el.removeClassName("ok");el.addClassName("error");});var elem=new Element("div",{"class":"error rounded5"}).update(msg);this._errors.set(el.name,{container:fs,msg:msg,elem:elem});var err=fs.down("div.error");if(err){err.remove();}fs.insert(this._errors.get(el.name).elem);},_clearError:function(el){var fs=el.up("fieldset");fs.select("input","select").each(function(el){el.removeClassName("error");el.addClassName("ok");});var err=fs.down("div.error");if(err){err.remove();}this._errors.unset(el.name);},_checkErrors:function(){var errors=this._errors.keys(),empty=0;this._canSubmit=false;$H(this._fields).keys().each(function(key){if(key){var el=this._fields[key];if(!el){return;}if(!el.visible()||(el.up("fieldset")&&!el.up("fieldset").visible())){return;}if(el.type&&el.type=="submit"){return;}if(el.tagName.toLowerCase()=="select"&&el.value==""){empty++;}else{if(!el.present()){empty++;}}}}.bind(this));if(empty==0&&errors.length==0&&this._gender!=null&&this._skin>0&&(!this._needpermission||this._haspermission)){this._canSubmit=true;this._fields.submitbtn.disabled=false;this._fields.submitbtn.up("div.button").removeClassName("disabled");this._container.down(".fill").hide();this._container.down(".eula").show();}else{this._fields.submitbtn.disabled=true;this._fields.submitbtn.up("div.button").addClassName("disabled");this._container.down(".fill").show();this._container.down(".eula").hide();}}};Playray.Site.FavGames={_containerId:"favGames",_container:null,_form:null,_handlers:$H(),_favs:$A(),_elems:$A(),init:function(){if(!Playray.LoggedIn){return;}this._container=$(this._containerId);if(!this._container){return;}this._handlers.set("setgame",this._setgame.bindAsEventListener(this));this._form=this._container.down("form");this._favs=this._container.select(".fav-container");this._gamers=$(this._form.playing_template).value.split(",");this._favs.each(function(el,idx){var index=idx+1;var elems={links:el.select("a"),link:el.down("a[rel~=name]"),icon:el.down(".link .gameicon-15, .link .gameicon-30, .link .gameimg-90x80, .link .gameimg-310x140"),dropdown:el.down(".dropdown"),gamers:el.down(".gamers"),input:el.down("input"),index:index};if(elems.dropdown){elems.dropdown.select("a[rel~=select]").each(function(lnk){lnk.observe("click",this._handlers.get("setgame"));}.bind(this));}this._elems.push(elems);}.bind(this));this._update(false);},_update:function(doTooltips){var icons=this._elems.pluck("icon");icons.each(function(icon){if(icon.hasClassName("unknown")){}else{if(!icon.down("img.trigger")){var timer=null;var img=new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png",alt:"","class":"trigger icon-15 hover icon edit sa absolute tooltip",style:"top: 5px; right: 5px;",title:Playray.L10n.Change});img.hide();icon.down("span.inner").insert(img);img.observe("mouseover",function(e){clearTimeout(timer);}.bindAsEventListener(this));icon.observe("mouseover",function(e){clearTimeout(timer);img.show();}.bindAsEventListener(this));icon.observe("mouseout",function(e){timer=setTimeout(function(){img.hide();},200);}.bindAsEventListener(this));}}}.bind(this));if(doTooltips){Playray.Tooltips.attach(this._container);}},_setgame:function(e){var el=e.element();var dropdown=el.up(".dropdown");var index=parseInt(dropdown.getAttribute("rel").toString().replace(/nofollow/,"").strip())-1;var values={str:el.getAttribute("playray:gamestr"),name:el.getAttribute("playray:gamename"),gamers:parseInt(el.getAttribute("playray:gamers")),url:el.getAttribute("playray:gameurl")};var elem=this._elems[index];var search=elem.icon.className.match(/(game[-\w\d]+)/);elem.icon.className=search[0]+" "+values.str;if(elem.link.descendants()){elem.link.descendants().last().update(values.name);}else{elem.link.update(values.name);}elem.input.value=values.str;if(values.gamers==1){elem.gamers.update(this._gamers[0]);}else{if(values.gamers>1){elem.gamers.update(this._gamers[1].replace(/\d+/,values.gamers));}else{elem.gamers.update("");}}elem.links.invoke("setAttribute","href",values.url);this._update(true);Playray.Dropdowns.hide();this._form.request();var favs=this._form.select("input.fav").collect(function(i){if(i.value.length>0){return i.value;}return false;});this._container.select(".dropdown li").invoke("show");this._container.select(".dropdown li."+favs.join(", li.")).invoke("hide");e.stop();return false;}};Playray.Site.Searchfields={init:function(){var forms=$$("form.usersearch","form.clansearch");if(forms&&forms.length>0){forms.each(function(form){var input=form.down("input[name=q]");input._is_default_value=!(input.hasClassName("not_default"));input._origvalue=input.value;input._origcolor=input.getStyle("color");if(input.hasAttribute("minlength")){input._minlength=parseInt(input.getAttribute("minlength"));}else{input._minlength=3;}if(input._is_default_value){input.setStyle({color:"#999999"});}input.observe("focus",function(e){if(input.value==input._origvalue&&input._is_default_value){input.value="";}input.setStyle({color:input._origcolor});});input.observe("blur",function(e){if(input.value==""){if(!(input.hasClassName("not_default"))){input.setStyle({color:"#999999"});}input.value=input._origvalue;}});if(input.hasClassName("show_after_init")){input.show();}form.observe("submit",function(e){if(input.value.length<input._minlength||(input.value==input._origvalue&&input._is_default_value)){e.stop();return false;}});});}}};Playray.Site.CharacterWidget={init:function(){if(!$("charWidgetWizard")||!$("widgetCode")){return;}var charWidgetPreview=$("charWidgetPreview");var widgetCode=$("widgetCode");charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();attachColorPicker($("prWidgetBgColor1"));attachColorPicker($("prWidgetBgColor2"));attachColorPicker($("prWidgetBgColor1"));attachColorPicker($("prWidgetBgColor2"));attachColorPicker($("prWidgetColor1"));attachColorPicker($("prWidgetColor2"));attachColorPicker($("prWidgetBorderColor1"));attachColorPicker($("prWidgetLinkColor"));Event.observe($("prWidgetBgColor1"),"blur",function(){_prWidgetBgColor1=$("prWidgetBgColor1").value;$("prWidgetBgColor1").style.backgroundColor=$("prWidgetBgColor1").value;$("prWidgetBgColor1").style.color=$("prWidgetBgColor1").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetBgColor2"),"blur",function(){_prWidgetBgColor2=$("prWidgetBgColor2").value;$("prWidgetBgColor2").style.backgroundColor=$("prWidgetBgColor2").value;$("prWidgetBgColor2").style.color=$("prWidgetBgColor2").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetColor1"),"blur",function(){_prWidgetColor1=$("prWidgetColor1").value;$("prWidgetColor1").style.backgroundColor=$("prWidgetColor1").value;$("prWidgetColor1").style.color=$("prWidgetColor1").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetColor2"),"blur",function(){_prWidgetColor2=$("prWidgetColor2").value;$("prWidgetColor2").style.backgroundColor=$("prWidgetColor2").value;$("prWidgetColor2").style.color=$("prWidgetColor2").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetBorderColor1"),"blur",function(){_prWidgetBorderColor1=$("prWidgetBorderColor1").value;_prWidgetBorderColor2=$("prWidgetBorderColor1").value;$("prWidgetBorderColor1").style.backgroundColor=$("prWidgetBorderColor1").value;$("prWidgetBorderColor1").style.color=$("prWidgetBorderColor1").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetLinkColor"),"blur",function(){_prWidgetLinkColor=$("prWidgetLinkColor").value;$("prWidgetLinkColor").style.backgroundColor=$("prWidgetLinkColor").value;$("prWidgetLinkColor").style.color=$("prWidgetLinkColor").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetType1"),"click",function(){_prWidgetType=$("prWidgetType1").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();$("charWidgetIntro").style.display="block";});Event.observe($("prWidgetType2"),"click",function(){$("charWidgetIntro").style.display="none";_prWidgetType=$("prWidgetType2").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetType3"),"click",function(){$("charWidgetIntro").style.display="none";_prWidgetType=$("prWidgetType3").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetType4"),"click",function(){$("charWidgetIntro").style.display="none";_prWidgetType=$("prWidgetType4").value;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetShowRanking"),"click",function(){_prWidgetShowRanking=($("prWidgetShowRanking").checked)?1:0;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetShowFavoriteGames"),"click",function(){_prWidgetShowFavoriteGames=($("prWidgetShowFavoriteGames").checked)?1:0;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("prWidgetShowOnlineStatus"),"click",function(){_prWidgetShowOnlineStatus=($("prWidgetShowOnlineStatus").checked)?1:0;charWidgetPreview.innerHTML=_prWidgetOutput(true);widgetCode.value=getWidgetCode();});Event.observe($("showAdvanced"),"click",function(){if($("showAdvanced").checked){widgetCode.rows=20;}else{widgetCode.rows=6;}widgetCode.style.width="560px";widgetCode.value=getWidgetCode();});}};Playray.Site.Scorelist={_containerId:"scorelist",_container:null,_blockwrapper:null,_fx:null,_offset:84,_handlers:new Hash(),init:function(){this._container=$(this._containerId);if(!this._container){return;}this._handlers.set("moveright",this._moveleft.bindAsEventListener(this));this._handlers.set("moveleft",this._moveright.bindAsEventListener(this));this._blockwrapper=this._container.down("div.blocks").down("div.wrapper");this._blockwrapper._offset=parseInt(this._blockwrapper.getStyle("left"));this._counter=this._blockwrapper.select("div.block").length+1;var arrows={left:this._container.down("div.arrowleft"),right:this._container.down("div.arrowright")};arrows.left.observe("click",this._handlers.get("moveleft"));arrows.right.observe("click",this._handlers.get("moveright"));},_moveleft:function(e){if(this._fx&&typeof this._fx=="object"&&this._fx.state&&this._fx.state!="finished"){return;}this._fx=new Effect.Move(this._blockwrapper,{y:0,x:-this._offset,mode:"relative",duration:0.2,afterFinish:function(){block=new Element("div",{"class":"block"}).update(this._counter++);this._blockwrapper.insert({bottom:block});this._blockwrapper._offset-=this._offset;}.bind(this)});},_moveright:function(e){if(this._fx&&typeof this._fx=="object"&&this._fx.state&&this._fx.state!="finished"){return;}block=new Element("div",{"class":"block"}).update(this._counter++);block.setStyle({width:"0px"});this._blockwrapper.insert({top:block});this._fx=new Effect.Morph(block,{style:"width: "+this._offset+"px",duration:0.2});}};Playray.Site.UserBubble={init:function(){},attach:function(searchNode){var searchNode=searchNode||$(document.documentElement);var elems=searchNode.getElementsByTagName("img");var re=/^http.*?\/bitmap\/\d+\/\d+\/\d+\/(\d+)\/head_\d+_\d+_(30x30|60x60)\.png$/;var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.src||!(match=el.src.match(re))){continue;}var bitmap=match[0],uid=match[1],size=match[2];}}};Playray.Login={_form:null,_container:null,_handlers:new Hash(),_username:null,_password:null,_timer:null,init:function(){if(Playray.LoggedIn){return;}var forms=$$("form.login");if(forms){this._handlers.set("preauth",this._authnew.bindAsEventListener(this));this._handlers.set("focus",this._focus.bindAsEventListener(this));this._handlers.set("blur",this._blur.bindAsEventListener(this));this._handlers.set("check",this._check.bindAsEventListener(this));forms.each(function(frm){var username=$(frm.login);var password=$(frm.password);var button=frm.down("button[type=submit]");username._origName=username.getAttribute("name");username.setAttribute("name","xlogin");password._origName=password.getAttribute("name");password.setAttribute("name","xpassword");[username,password].each(function(elem){if(elem.hasClassName("event-label")){elem._origType=elem.getAttribute("type");if(!Playray.Browser.isIE){elem.observe("focus",this._handlers.get("focus"));elem.observe("blur",this._handlers.get("blur"));elem.observe("keyup",this._handlers.get("check"));if(!elem.present()){elem.setAttribute("type","text");elem.type="text";elem.addClassName("blur");elem.setValue(Playray.L10n.Labels[elem._origName]);}}}}.bind(this));frm._inited=true;frm.observe("submit",this._handlers.get("preauth"));}.bind(this));}},_authnew:function(e){this._form=e.element();this._username=this._form.down("input[name=xlogin]");this._password=this._form.down("input[name=xpassword]");this._button=this._form.down("button[type=submit]");this._container=this._form.up("div.box");if(this._username.present()&&!this._username.hasClassName("blur")&&this._password.present()&&!this._password.hasClassName("blur")){this._password.value=encodeURIComponent(this._password.value);var qry=new Ajax.Request("/q/auth",{method:"post",parameters:this._form.serialize(),onLoading:this._loading.bind(this),onSuccess:this._success.bind(this),onError:this._error.bind(this),onException:this._error.bind(this)});}else{Playray.ModalLogin.open();if(!this._username.hasClassName("blur")){Playray.ModalLogin.setLogin(this._username.getValue());}}e.stop();return false;},_loading:function(){this._username.disable();this._password.disable();this._button.disabled=true;this._button.addClassName("disabled");this._button.addClassName("spinner");},_success:function(request){var json=request.responseText.evalJSON(true);if(typeof json!="object"){throw"Invalid response, JSON expected";return;}if(json.result==1){if(!json.redirect||json.redirect==""){Playray.Reload();}else{var oldloc=self.document.location.href.toString().replace(/#.*$/,"");var newloc=json.redirect.toString().replace(/#.*$/,"");if(oldloc==newloc){json.redirect=json.redirect.toString().replace("#",(json.redirect.indexOf("?")==-1?"?":"&")+"#");}Playray.Navigate(json.redirect);}}else{if(json.redirect){Playray.Navigate(json.redirect);}else{this._username.enable();this._password.enable();this._button.disabled=false;this._button.removeClassName("disabled");this._button.removeClassName("spinner");var dlgWidth=(this._container)?parseInt(this._container.getWidth())+"px":"320px";var dlgHeight=(this._container)?parseInt(this._container.getHeight())+"px":"auto";if(json.errors){var dlg=Playray.Dialog.open("error",Playray.Dialog.parseMsgs(json.errors),{dropshadow:false,style:{width:dlgWidth,height:dlgHeight},onClose:function(){clearTimeout(Playray.Login._timer);}});if(this._container){dlg.up("div.modalContent").clonePosition(this._container.up("div.modalContent"));this._timer=setTimeout(function(){Playray.Effects.fade(dlg,2,{afterFinish:function(){Playray.Dialog.close();dlg.show();}});},3000);}}}}},_error:function(request,e){if(e&&e.message){var msg=e.message;}else{if(request&&request.statusText){var msg=request.statusText;}else{var msg="Unknown error occured";}}Playray.Dialog.open("error",msg);this._password.value=unescape(this._password.value);},_focus:function(e){var elem=e.element();if(elem.hasClassName("blur")){elem.setValue("");elem.removeClassName("blur");if(elem._origType){elem.setAttribute("type",elem._origType);}}elem.focus();},_blur:function(e){var elem=e.element();if(!elem.present()){elem.addClassName("blur");elem.setAttribute("type","text");elem.setValue(Playray.L10n.Labels[elem._origName]);}},_check:function(e){var elem=e.element();if(!elem._checked&&elem.present()&&elem.hasClassName("blur")){elem.removeClassName("blur");if(elem._origType){elem.setAttribute("type",elem._origType);}var regexp=new RegExp("^"+Playray.L10n.Labels[elem._origName]);elem.value=elem.value.replace(regexp,"");elem._checked=1;}}};Playray.Site.Coinshop.New={init:function(){}};Playray.Coinshop={_containerId:"coinshop-v2",_container:null,_stepcontainer:null,_steps:null,_step:0,_width:980,_fx:false,_handlers:null,_hashes:[],selectedLocale:null,selectedProduct:null,selectedMethod:null,validProductSets:["featured","all"],productSet:"featured",baseURL:"/shop/coins/",init:function(locale){this._container=$(this._containerId);if(!this._container){return;}if(!Playray.LoggedIn){self.document.location.hash="login";return 0;}this._handlers=$H({product:this.product.bindAsEventListener(this),method:this.method.bindAsEventListener(this),secure:this.secure.bindAsEventListener(this),"switch":this.switchProductState.bindAsEventListener(this),jump:this.jump.bindAsEventListener(this)});if(!this._container){return;}this._stepcontainer=this._container.down("div.stepcontainer");this._steps=this._container.select("div.steps div.step");this._countryselection=this._container.down("div.switchcountry");if(this._countryselection){var s=this._countryselection.down("*[name=locale]");this.selectedLocale=(s.nodeName.toLowerCase()=="input")?s.value:s[s.selectedIndex].value;}else{this.selectedLocale=Playray.Config.Country;}var qry=new Ajax.Updater(this._stepcontainer,this.baseURL+this.selectedLocale,{parameters:{mode:"ajax",template:"new"},onComplete:function(){this._init();Playray.triggerOnload("coinshop");}.bind(this)});},_init:function(){this._methodcontainer=this._container.down("div.step-2 div.methods");this._providercontainer=this._container.down("div.step-2 div.providers");this._smscontainer=this._container.down("div.step-3 div.sms");this._securecontainer=this._container.down("div.step-3 div.secure");this._loadercontainer=this._container.down("div.step-3 div.loader");this._productcontainers=this._container.select("div.step div.productcontainer");this._methodcontainers=this._container.select("div.step div.methodcontainer");this._links=this._container.select("div.step table.provider a");this._products=[this._container.down("div.step-1 div.everything"),this._container.down("div.step-1 div.popular")];if(this._container.down("div.step-1 div.everything")){this._container.down("div.step-1 div.everything span.showfeatured").observe("click",this._handlers.get("switch"));}this._container.select(".history-back").each(function(lnk){lnk.observe("click",function(){history.go(-1);});}.bind(this));this._productcontainers.each(function(p){p.observe("click",this._handlers.get("product"));}.bind(this));this._methodcontainers.each(function(m){m.observe("click",this._handlers.get("method"));}.bind(this));this._links.each(function(m){m.observe("click",this._handlers.get("secure"));}.bind(this));this._steps.each(function(step,idx){if(step.hasClassName("switchproducts")){step.observe("click",this._handlers.get("switch"));}else{step.observe("click",this._handlers.get("jump"));}}.bind(this));if(this._countryselection){var s=this._countryselection.down("*[name=locale]");this.selectedLocale=(s.nodeName.toLowerCase()=="input")?s.value:s[s.selectedIndex].value;var form=this._countryselection.down("form");if(form){form.observe("submit",function(e){e.stop();return false;});s.observe("change",this.changeLocale.bindAsEventListener(this));s.setStyle({backgroundImage:_("url(%1/img/flags/new/%2.png)",Playray.Config.FileServer,this.selectedLocale=="en"?"us":this.selectedLocale)});}}this.initHash();this._loader=this._container.down("div.initloader");setTimeout(function(){Playray.Effects.crossfade(this._stepcontainer,this._loader,0.2);this._steps.invoke("appear");if(this._countryselection){this._countryselection.appear();}}.bind(this),1000);this._container.select(".restart").each(function(el){el.observe("click",function(e){this.gotoStep(0);this.clearMessages();e.stop();}.bindAsEventListener(this));}.bind(this));},changeLocale:function(e){if(!this._countryselection||this._step>0){return;}var elem=this._countryselection.down("select");if(typeof e=="string"){locale=e;}else{var locale=elem[elem.selectedIndex].value;e.stop();}if(locale){var qry=new Ajax.Updater(this._stepcontainer,"/shop/coins/"+locale,{parameters:{mode:"ajax",template:"new"},onLoading:function(){Playray.Effects.crossfade(this._loader,this._stepcontainer,0.2);document.documentElement.addClassName("loading");}.bind(this),onComplete:function(){document.documentElement.removeClassName("loading");this._selectedLocale=locale;this._init();Playray.setCookie("shurl",this.baseURL+this.selectedLocale);Playray.Track.impr(Playray.getCookie("shurl"));}.bind(this)});}},switchProductState:function(e,duration){var elem=this._steps.last();var duration=duration||0.4;if(this._step>0&&elem.hasClassName("disabled")){return;}if(typeof this._fx=="object"&&this._fx.state!="finished"){if(e){Event.stop(e);}return;}this._fx=Playray.Effects.crossfade(this._products[0],this._products[1],duration,{afterFinish:function(){this._products.reverse();this._productState=(this._productState=="all")?"featured":"all";this._hashes[0]=this._productState;self.document.location.hash=this._productState;elem.toggleClassName("disabled");Playray.setCookie("shurl",this.baseURL+this.selectedLocale+"/?v=2"+(this._productState=="all"?"&view=all":""));Playray.Track.impr(Playray.getCookie("shurl"));}.bind(this)});if(e){Event.stop(e);}},product:function(e){var elem=e.findElement("div.productcontainer");var check=e.findElement("div.product");if(check){if(check.hasClassName("more")){this.switchProductState(e);}else{if(check.hasClassName("extra")){return;}else{this._product(elem,true);this.gotoStep(1);}}}if(e){Event.stop(e);}},_product:function(elem,track){var track=track||false;var container=elem.down("div.product");this.selectedProduct=container.getAttribute("playray:product");this.selectedProductTitle=container.getAttribute("playray:title");var methodcount=container.getAttribute("playray:methodcount");var products=this._container.select("div.step-2 div[class|=product]");var product=products.find(function(m){return m.hasClassName("product-"+this.selectedProduct);}.bind(this));products.invoke("hide");product.show();elem.addClassName("selected");this._hashes[1]=this.selectedProduct.replace(/^[^0-9]+/,"");this._steps[0].down("small").update(this.selectedProductTitle);this._methodcontainer.show();this._providercontainer.hide();if(track){Playray.setCookie("shurl",this.baseURL+this.selectedLocale+"/"+this.selectedProduct+"/?v=2");Playray.Track.impr(Playray.getCookie("shurl"));}this._singleMethod=false;if(methodcount==1){this._singleMethod=true;var method=this._methodcontainer.down("div.product-"+this.selectedProduct+" div.methodcontainer");if(method){this._method(method,true);this._methodcontainer.hide();this._providercontainer.show();if(this._keywordSMS){this.gotoStep(2);}}}},method:function(e){var elem=e.findElement("div.methodcontainer");this._method(elem,true);if(this._keywordSMS){this.gotoStep(2);}else{Playray.Effects.crossfade(this._providercontainer,this._methodcontainer,0.4);self.document.location.hash=this._hashes.compact().join("/");}Event.stop(e);},_method:function(elem,track){var transition="crossfade";var track=track||false;var container=elem.down("div.method");this.selectedMethod=container.getAttribute("playray:method");this.selectedMethodTitle=container.getAttribute("playray:title");var products=this._container.select("div.step-2 div.providers div[class|=product]");var methods=this._container.select("div.step-2 div.providers div[class|=method]");var product=products.find(function(m){return m.hasClassName("product-"+this.selectedProduct);}.bind(this));var method=product.down("div[class=method-"+this.selectedMethod+"]");this._keywordSMS=false;this._singleProvider=false;if(this.selectedMethod=="sms"&&(method.down("div.relocate"))){this.invokeBalanceChecker();this._smscontainer.update(Element.show(method.clone(true)));this._securecontainer.hide();this._smscontainer.show();this._keywordSMS=true;}else{var check=method.select("table.provider a");if(check.length==1){this._singleProvider=true;this.secure(check.first());}else{products.invoke("hide");methods.invoke("hide");product.show();method.show();}}this._hashes[2]=this.selectedMethod;this._steps[1].down("small").update(this.selectedMethodTitle);if(track){Playray.setCookie("shurl",this.baseURL+this.selectedLocale+"/"+this.selectedProduct+"/"+this.selectedMethod+"/?v=2");Playray.Track.impr(Playray.getCookie("shurl"));}return transition;},secure:function(e){var elem=Object.isElement(e)?e:e.findElement("a");var href=elem.href;if(href){this.selectedProvider=elem.getAttribute("playray:provider");this.selectedProviderTitle=elem.getAttribute("playray:title");this._steps[2].down("small").update(this.selectedProvidertTitle);var frame=new Element("iframe",{src:href,width:"100%",height:"100%",frameborder:0,scrolling:"no"});this._securecontainer.insert(frame);this._smscontainer.hide();this._loadercontainer.show();this._hashes[3]=this.selectedProvider;this.gotoStep(2);this._steps[1].down("small").update(this.selectedProviderTitle);document.documentElement.addClassName("loading");setTimeout(function(){document.documentElement.removeClassName("loading");Playray.setCookie("shurl",this.baseURL+this.selectedLocale+"/"+this.selectedProduct+"/"+this.selectedMethod+"-"+this.selectedProvider+"/?v=2");Playray.Track.impr(Playray.getCookie("shurl"));Playray.Effects.crossfade(this._securecontainer,this._loadercontainer,0.4,{afterFinish:function(){this.check();}.bind(this)});}.bind(this),2000);}if(typeof e.stop=="function"){Event.stop(e);}},check:function(){this._timer=setInterval(function(){new Ajax.Request("/shop/xdc/get",{method:"get",onSuccess:function(res){var json=res.responseText.evalJSON(true);if(json&&json.type){clearInterval(this._timer);this.showMessage(json);return;}else{if(json&&json.event){if(json.event=="provider-opened"){Playray.setCookie("shurl",this.baseURL+this.selectedLocale+"/"+this.selectedProduct+"/"+this.selectedMethod+"-"+this.selectedProvider+"/secure/?v=2");Playray.Track.impr(Playray.getCookie("shurl"));}}}}.bind(this)});}.bind(this),2500);},balance:function(onSuccess){var qry=new Ajax.Request("/q/credits",{method:"post",parameters:"_=1",onSuccess:function(res){var res=parseInt(res.responseText.evalJSON());if(res>Playray.LoggedUserCredits){Playray.LoggedUserCredits=res;}if(typeof onSuccess=="function"){onSuccess();}}.bind(this)});},jump:function(e,step){var elem=e.findElement("div.step");step=step||parseInt(elem.getAttribute("playray:step"));if(elem.hasClassName("done")){if(this._step==3&&step==2){step=1;}else{if(this._step==2&&step==1&&(this._keywordSMS||(this._singleMethod&&this._singleProvider))){step=0;}}if(this._timer){clearInterval(this._timer);}if(this.balanceCheck){clearInterval(this.balanceCheck);}this.clearMessages();this.gotoStep(step);}Event.stop(e);},navigate:function(hash){hash=hash||new String();var hashes=(hash.length>0)?hash.split("/"):new Array();if(hashes.join("")!=this._hashes.join("")){this.checkHash(hashes);if(this._timer){clearInterval(this._timer);}if(this.balanceCheck){clearInterval(this.balanceCheck);}this.clearMessages();if(this.selectedMethod){if(this.keywordSMS){this.gotoStep(2);}else{Playray.Effects.crossfade(this._providercontainer,this._methodcontainer,0.4);this.gotoStep(1);}}else{if(this.selectedProduct){this.gotoStep(1);}else{this.gotoStep(0);if(this._productState!=this._hashes[0]){this.switchProductState();}}}}},gotoStep:function(step,duration){if(this._step==step){return;}if(typeof this._fx=="object"&&this._fx.state!="finished"){return;}var offset=-(step*this._width);duration=duration||0.5;this._fx=new Effect.Move(this._stepcontainer,{x:offset,y:0,mode:"absolute",duration:duration,beforeStart:function(){this._stepcontainer.addClassName("moving");}.bind(this),afterFinish:function(){this._stepcontainer.removeClassName("moving");this._step=step;this.setState(step);}.bind(this)});},setState:function(step){switch(step){case 0:this._container.select("div.step-1 div.productcontainer").invoke("removeClassName","selected");this._container.select("div.step-2 div.methodcontainer").invoke("removeClassName","selected");this._hashes[3]=null;this._hashes[2]=null;this._hashes[1]=null;break;case 1:this._container.select("div.step-2 div.methodcontainer").invoke("removeClassName","selected");this._container.down("div.step-3 div.secure").hide();if(this._container.down("div.step-3 div.secure iframe")){this._container.down("div.step-3 div.secure iframe").remove();}this._hashes[3]=null;if(this._singleMethod){this._methodcontainer.hide();this._providercontainer.show();}else{this._methodcontainer.show();this._providercontainer.hide();this._hashes[2]=null;}break;case 2:break;}this._steps.each(function(s,idx){if(s.hasClassName("switchproducts")){if(step==0){s.removeClassName("disabled");}else{s.addClassName("disabled");}}else{s.removeClassName("current");s.removeClassName("done");if(idx<step){s.addClassName("done");}else{if(idx==step){s.addClassName("current");}else{s.removeClassName("error");}}}}.bind(this));if(this._countryselection){s=this._countryselection.down("form");if(s){if(step>0){Form.disable(s);s.addClassName("disabled");}else{Form.enable(s);s.removeClassName("disabled");}}}self.document.location.hash=this._hashes.compact().join("/");},initHash:function(){var hash=new String(),hashes=new Array();hash=self.document.location.hash.replace(/^#/,"");hashes=hash.split("/");if(hashes[0]){if(hashes[0]!="seteli"){if(this.validProductSets.indexOf(hashes[0])>-1&&hashes[0]!=this.productSet){this.switchProductState(null,0);}}}else{self.document.location.hash=this.productSet;hashes[0]=this.productSet;}this._hashes[0]=hashes[0];Playray.observeHashChange(this.navigate.bind(this));self.document.location.hash=hashes.join("/");},checkHash:function(hashes){if(hashes[1]){var productLabel=new String(this.selectedLocale+"credit"+hashes[1]).toUpperCase();var elem=this._productcontainers.find(function(m){return m.down("div.product").getAttribute("playray:product")==productLabel;}.bind(this));if(elem){this._product(elem);if(hashes[2]){var methodLabel=hashes[2].toLowerCase();var elem=this._methodcontainers.find(function(m){var el=m.down("div.method");return(el.getAttribute("playray:product")==productLabel&&el.getAttribute("playray:method")==methodLabel);}.bind(this));if(elem){this._method(elem);}else{hashes[2]=null;this.selectedMethod=null;}}else{this.selectedMethod=null;}}else{hashes[1]=null;this.selectedProduct=null;}}else{this.selectedProduct=null;this.selectedMethod=null;}this._hashes=hashes.compact();},showMessage:function(msg){if(Playray.Modal.isActive()){Playray.Modal.close();}containers={error:this._container.down("div.step-4 div.error").hide(),success:this._container.down("div.step-4 div.success").hide()};setTimeout(function(){this["_"+msg.type](msg,containers[msg.type]);containers[msg.type].show();this.gotoStep(3);}.bind(this),1000);if(this._timer){clearInterval(this._timer);}if(this.balanceCheck){clearInterval(this.balanceCheck);}},_error:function(msg,container){var title=container.down("h3.event-"+msg.event);var reason=container.down(".reason-"+msg.reason);var message=container.down(".message");var providermsg=container.down(".error-provider ."+msg.provider);if(title){title.show();}if(msg.reason&&reason){reason.show();}if(msg.message&&message){message.update(msg.message);}if(msg.provider&&providermsg){providermsg.show();}this._steps[3].addClassName("error");this._steps[3].down(".normal").hide();this._steps[3].down(".error").show();this.recordConversion("error");},_success:function(msg,container){var title=container.down("h3.event-"+msg.event);var balance=title.down("span.balance");var providermsg=container.down(".provider-"+msg.provider);if(balance){this.balance(function(){balance.update(Playray.LoggedUserCredits);Playray.updateCount("credits",Playray.LoggedUserCredits);}.bind(this));}var content=container.down("div.event-"+msg.event);content.show();title.show();if(msg.provider&&providermsg){providermsg.show();}if(msg.event=="pending"){this._steps[3].down(".normal").hide();this._steps[3].down(".pending").show();}this.recordConversion("ok");},clearMessages:function(){containers={error:this._container.down("div.step-4 div.error").hide(),success:this._container.down("div.step-4 div.success").hide()};containers.error.hide();containers.success.hide();this._steps[3].removeClassName("error");this._steps[3].down(".normal").show();this._steps[3].down(".error").hide();this._steps[3].down(".pending").hide();},invokeBalanceChecker:function(onConversion){this.balanceCheck=setInterval(function(){var qry=new Ajax.Request("/q/credits",{method:"post",parameters:"_=1",onSuccess:function(res){var res=parseInt(res.responseText.evalJSON());if(res>Playray.LoggedUserCredits){clearInterval(this.balanceCheck);Playray.LoggedUserCredits=res;this.recordConversion();this.gotoStep(3);this.showMessage({type:"success",event:"complete",provider:"sms"});if(typeof onConversion=="function"){onConversion();}}}.bind(this)});}.bind(this),10000);},recordConversion:function(result){result=result||"ok";if(Playray.getCookie("shurl")){var url=_("%1/%2/?v=2",Playray.getCookie("shurl").replace(/(\/?secure)?\/?\?v\=2$/,""),result);Playray.Track.impr(url);Playray.deleteCookie("shurl");if(this.selectedMethod=="sms"){var href=Playray.Config.SiteServer+"/q/ab/goal/"+(this.abGoalId)?this.abGoalId:"2135999883";var frame=new Element("iframe",{src:href,width:"0",height:"0",frameborder:"0",scrolling:"no"});this._container.insert(frame);}}}};Playray.ModalBox=Class.create({initialize:function(containerId,contentURL,params){var params=params||{};this.onOpen=params.onOpen||null;this.onClose=params.onClose||null;this.greedy=params.greedy||true;this.container=this.createContainer(containerId);this.container.absolutize();this.container.hide();this.container.setStyle({width:"auto",height:"auto",zIndex:910});this.active=false;this._hidetags=false;var cbtns=this.container.select("*[rel~=close]");cbtns.each(function(btn){btn.observe("click",this.hide.bindAsEventListener(this));}.bind(this));},show:function(e,params){params=params||{appear:true};this.container.removeClassName("hidden");if(params.appear){this.container.hide();Playray.Effects.appear(this.container);}this.container.show();this.box=this.container.down("div.box");if(!this.box.visible()){this.box.adjacent("div.box").each(function(el){if(el.visible()){this.box=el;return;}}.bind(this));}Playray.DropShadow.add(this.box);if(e&&e.element().hasClassName("hidetags")){this._hidetags=true;this.hideTags("hidden");}this.active=true;if(this.greedy){document.observe("click",function(ev){if(!Event.element(ev).up("#"+this.container.id)){this.hide();document.stopObserving("click");}}.bind(this));}if(this.onOpen&&typeof this.onOpen=="function"){this.onOpen(e,this);}e.stop();},hide:function(e){this.container.hide();if(this._hidetags){this.hideTags("visible");}this.active=false;if(e){e.stop();}Playray.DropShadow.remove(this.box);if(this.onClose&&typeof this.onClose=="function"){this.onClose(e,this);}if(this.greedy){document.stopObserving("click");}},setPosition:function(posx,posy){this.container.setStyle({left:posx+"px",top:posy+"px"});},magnet:function(to,params){var params=params||{};params.update=true;Position.magnet(this.container,to,params);},toggle:function(el,toggle){var b,o;toggle=toggle||!this._modalActive;this._modalActive=toggle;if(!$(this._modalId)){b=document.getElementsByTagName("body")[0];o=new Element("div",{id:this._modalId});b.appendChild(o);}else{o=$(this._modalId);}if(toggle===true){if(Playray.Browser.isIE){this.getScroll();this.prepareIE("100%","hidden");this.setScroll(0,0);}this.hideTags("hidden",el);o.setStyle({display:"block"});if(el){el.addClassName("modalContent");}if(this.onOpen&&typeof this.onOpen=="function"){this.onOpen(e,this);}}else{if(Playray.Browser.isIE){this.setScroll(0,this.yPos);this.prepareIE("auto","auto");}o.setStyle({display:"none"});o.onclick="";this.hideTags("visible");if(el){el.removeClassName("modalContent");}this.hideSpinner();if(this.onClose&&typeof this.onClose=="function"){this.onClose(e,this);}}},hideTags:function(visibility,ignoreElem){if($("character")){$("character").style.visibility=visibility;}if(Playray.Browser.isIE){var elems=$$("select");elems.each(function(elem){elem.style.visibility=visibility;});}if(Playray.Browser.isFirefox3){var elems=$$("object","embed","applet","div.zone","iframe");elems.each(function(elem){if(!ignoreElem||!elem.descendantOf(ignoreElem)){elem.style.visibility=visibility;}});}},createContainer:function(containerId){if($(containerId)){return $(containerId);}var b=document.getElementsByTagName("body")[0];var container=new Element("div",{id:containerId,"class":"modalContent"});container.hide();b.appendChild(container);return container;}});Playray.Modal={_modalId:"modalOverlay",_modalActive:false,_bindTo:"a[rel~=modal]",_containerId:"modalContent",_container:null,_active:false,_handlers:new Hash(),params:{},centerparams:{},attach:function(searchNode){var searchNode=searchNode||$(document.documentElement);this._handlers.set("open",this.openModal.bindAsEventListener(this));this._handlers.set("close",this.closeModal.bindAsEventListener(this));var elems=searchNode.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.rel||!el.rel.match(/\bmodal\b/)||(el.rel.match(/\blogin\b/)&&!Playray.LoggedIn)){continue;}Event.observe(el,"click",this._handlers.get("open"));}Event.observe(document.body,"click",function(e){if(Playray.LoggedIn){var eSrc=Event.element(e);if(eSrc.href&&eSrc.href.match(/\w+\/character\/?/)){Playray.Modal.openModal(eSrc.href);Event.stop(e);return false;}}});},openModal:function(tgt,params){if(typeof tgt=="object"){var e=tgt;var elem=e.findElement(this._bindTo);if(!elem){return true;}var href=elem.getAttribute("href");if(!href){return true;}}else{var href=tgt;}if(href.match("/account/create")){if(!href.match("/account/create/start")&&!href.match(/(fe)?male/)){href=href.replace("/account/create","/account/create/start");}href+=_("%1from=%2",href.indexOf("?")==-1?"?":"&",document.location.pathname);if(Playray.URL.match("/games/play/")&&(Playray.Layout.Shim.isNeeded()&&!Playray.Layout.Shim.isAvailable())){window.open(href,"_blank");if(e){e.stop();}return false;}}else{if(Playray.LoggedIn&&href.match(/^(http:\/\/[^\/]+)?\/mypage/)){href=href.replace("/mypage","/community/user/"+encodeURIComponent(Playray.LoggedUser));}}if(!this._handlers.get("open")){this._handlers.set("open",this.openModal.bindAsEventListener(this));}if(!this._handlers.get("close")){this._handlers.set("close",this.closeModal.bindAsEventListener(this));}if(this.isActive()){this._handlers.get("close")();}this._active=false;params=params||{};this.centerparams={};if(params.pos){this.centerparams.pos=params.pos;}if(params.update){this.centerparams.update=true;}if(params.top){this.centerparams.top=false;}else{if(params.left){this.centerparams.left=false;}else{if(params.nocenter){this.centerparams.disabled=true;}}}if(!this._container){this._container=this.createContainer(this._containerId);}new Ajax.Updater(this._container,href,{method:"get",evalScripts:true,onLoading:function(){if(params.nongreedy||(elem&&elem.hasClassName("nongreedy"))){this.toggle(this._container,true,this.closeModal.bind(this),params);}else{this.toggle(this._container,true,null,params);}if(params.onLoading&&typeof params.onLoading=="function"){params.onLoading();}this.showSpinner();}.bind(this),onSuccess:function(request){this.hideSpinner();this._container.show();this._active=true;}.bind(this),onComplete:function(request){if(this._container&&this._active){if(this._container.getDimensions().height>screen.height-200){this._container.hide();Playray.Navigate(href);return;}this.center(this._container);Playray.DropShadow.add(this._container.down("div.box"));this._container.select("*[rel~=close]").each(function(btn){if(btn.hasClassName("confirm")){var title=btn.getAttribute("title");btn.observe("click",function(e){var str=title;if(str){str+="\n\n";}str+=Playray.L10n.ConfirmClose;if(confirm(str)){if(params.onClose&&typeof params.onClose=="function"){btn.observe("click",params.onClose);}this._handlers.get("close")(e);}}.bindAsEventListener(this));}else{if(params.onClose&&typeof params.onClose=="function"){btn.observe("click",params.onClose);}btn.observe("click",this._handlers.get("close"));}}.bind(this));this._container.select("*[rel~=reload]").each(function(btn){if(params.onClose&&typeof params.onClose=="function"){btn.observe("click",params.onClose);}btn.observe("click",Playray.Navigate.bindAsEventListener(Playray,document.location.href.replace(/#.*$/,"")));}.bind(this));$(document.body).setStyle({overflow:"hidden",paddingRight:"15px"});this.attach(this._container);Playray.Forms.attach(this._container);Playray.Tooltips.attach(this._container);Playray.Textareas.init(this._container);Playray.Forms.init(this._container);Playray.AutoComplete.init(this._container);Playray.Site.Registration.init(this._container.down("div"));Playray.DropShadow.update(this._container.down("div.box"));Playray.Layout.checkResolution(this._container);Playray.Site.Coinshop.init();Playray.Site.Coinshop.attach();if(params.draggable){var title=this._container.down(".box .title");title.addClassName("move");new Draggable(this._container,{handle:title});}if(params.transparent){this.clearFade();}if(params.onComplete&&typeof params.onComplete=="function"){params.onComplete();}if(Playray.Facebook){Playray.Facebook.attach(this._container);}Playray.Layout.Shim.show(this._container);this._modalActive=true;}}.bind(this),onFailure:function(request,e){this.hideSpinner();switch(request.status){case 404:default:if(params.noerror){this.toggle(false);}else{Playray.Dialog.open("error",request.statusText);}break;}}.bind(this)});if(e){e.stop();}return false;},open:function(tgt,params){this.openModal(tgt,params);},center:function(el){if(!el){return;}if(this.centerparams&&this.centerparams.pos){el.setStyle({position:"absolute",zIndex:999,left:parseInt(this.centerparams.pos[0])+"px",top:parseInt(this.centerparams.pos[1])+"px"});}else{if(Playray.Config.isFramed){this.centerparams.top=false;this.centerparams.offTop=50;}Position.center(el,this.centerparams);}},closeModal:function(e){ce=Element.fire(document.documentElement,"Playray:closeModal");if(ce.stopped){return;}if(!Playray.Dialog.isActive()&&this._modalActive){this.toggle(null,false);}else{this.toggleElements(true);}Playray.Layout.Shim.hide(this._container);if(this._container){this._container.hide();}$(document.body).setStyle({overflow:"auto",paddingRight:"0"});this._active=false;if(Playray.Site.Coinshop.balanceCheck){clearInterval(Playray.Site.Coinshop.balanceCheck);}Playray.ModalLogin.close();if(e){e.stop();return false;}},close:function(e){this.closeModal(e);},isActive:function(){return this._modalActive;},createOverlay:function(){if(!$(this._modalId)){b=document.getElementsByTagName("body")[0];o=new Element("div",{id:this._modalId});b.appendChild(o);}else{o=$(this._modalId);}return o;},toggle:function(el,toggle,closeFunc,params){var b,o;toggle=toggle||!this._modalActive;o=this.createOverlay();if(params&&params.transparent){$(this._modalId).addClassName("transparent");}else{$(this._modalId).removeClassName("transparent");}if(toggle===true){if(Playray.Browser.isIE){this.getScroll();this.prepareIE("100%","hidden");this.setScroll(0,0);}if(!this._active&&(!params||!params.transparent)){this.toggleElements(false,el);}o.setStyle({display:"block"});if(el){el.addClassName("modalContent");}if(typeof closeFunc=="function"){$(this._modalId).onclick=closeFunc;}this.center(el);}else{if(Playray.Browser.isIE){this.setScroll(0,this.yPos);this.prepareIE("auto","auto");}o.setStyle({display:"none"});o.onclick="";this.toggleElements(true);if(el){el.removeClassName("modalContent");}this.hideSpinner();}this._modalActive=toggle;},prepareIE:function(height,overflow){var b,h;b=document.getElementsByTagName("body")[0];b.style.height=height;b.style.overflow=overflow;h=document.getElementsByTagName("html")[0];h.style.height=height;h.style.overflow=overflow;},toggleElements:function(visible,ignoreElem){var fn=visible?"show":"hide";$$("#character, .simplegrid").invoke(fn);if(Playray.Browser.isIE){var selects=document.getElementsByTagName("select");var i=0;l=selects.length;for(;i<l;i++){elem=$(selects[i]);visible?elem.hide():elem.show();}}if(Playray.Browser.isFirefox3){var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var elem=elems[i];if(elem.tagName.toLowerCase()=="div"&&!elem.className.match(/\b(zone|gadget)\b/)){continue;}else{if(!elem.tagName.match(/^(object|applet|iframe)$/i)){continue;}}elem=$(elem);if(ignoreElem){if(ignoreElem.descendantOf(elem)||elem.descendantOf(ignoreElem)){continue;}if(Playray.Siteshop.shop&&ignoreElem.descendantOf(Playray.Siteshop.shop)){continue;}}visible?elem.setStyle({display:""}):elem.setStyle({display:"none"});}}},getScroll:function(){if(self.pageYOffset){this.yPos=self.pageYOffset;}else{if(document.documentElement&&document.documentElement.scrollTop){this.yPos=document.documentElement.scrollTop;}else{if(document.body){this.yPos=document.body.scrollTop;}}}},setScroll:function(x,y){window.scrollTo(x,y);},createContainer:function(containerId){if($(containerId)){return $(containerId);}var b=document.getElementsByTagName("body")[0];var container=new Element("div",{id:containerId,"class":"modalContent"});container.hide();b.appendChild(container);try{return container;}finally{container=null;}},showSpinner:function(){$(this._modalId).addClassName("loading");document.body.setStyle({cursor:"progress"});},hideSpinner:function(){document.body.setStyle({cursor:"default"});$(this._modalId).removeClassName("loading");},toggleSpinner:function(toggle){toggle=toggle?true:false;if(toggle){this.toggle(null,true);this.showSpinner();}else{this.toggle(null,false);this.hideSpinner();}},clearFade:function(){if(!this._modalBg){this._modalBg=$(this._modalId).getStyle("background-color");}$(this._modalId).setStyle({backgroundColor:"transparent"});},setFade:function(){this.createOverlay();$(this._modalId).setStyle({backgroundColor:this._modalBg});this.toggleElements(false);}};Playray.Interstitial={_active:false,_containerId:null,_container:null,open:function(e){this._containerId="interstitialContainer";this._container=$(this._containerId);this._closingStripId="interstitialClosingStrip";this._closingStrip=$(this._closingStripId);if(this._closingStrip){this._closingStrip.removeClassName("hidden");$$("#"+this._closingStripId+" a[rel~=close]","#"+this._closingStripId+" img[rel~=close]").each(function(el){Event.observe(el,"click",function(e){Playray.Interstitial.close();Event.stop(e);});});}if(this._container){this._active=true;Playray.Modal.toggle(this._container,true,function(){Playray.Interstitial.close();});setTimeout(function(){this._container.removeClassName("hidden");Position.center(this._container);}.bind(this),500);$$("#"+this._containerId+" a[rel~=close]","#"+this._containerId+" img[rel~=close]").each(function(el){Event.observe(el,"click",function(e){Playray.Interstitial.close();Event.stop(e);});});if(e){Event.stop(e);}return false;}},close:function(){if(this._active){this._container.addClassName("hidden");Playray.Modal.toggle(this._container,false);this._active=false;if(this._closingStrip){this._closingStrip.addClassName("hidden");}}}};Playray.ModalLogin={defaultContainerId:"modalLogin",defaultBindTo:"*[rel~=login]",_bindTo:null,_containerId:null,_container:null,_formTarget:null,_active:false,attach:function(bindTo,containerId){if(Playray.LoggedIn){return;}this._bindTo=bindTo||this.defaultBindTo;this._containerId=containerId||this.defaultContainerId;var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.rel||!el.rel.match(/\blogin\b/)){continue;}if(el.href&&!((el.href+"").match(/^javascript:/))){Event.observe(el,"click",this.open.bindAsEventListener(this,el.href));}}this._container=$(this._containerId);},open:function(e,tgt){if(this._container){this._active=true;Playray.Modal._active=true;var frm=this._container.down("form");if(frm){if(!frm.down("input[name=redirect]")){var tgt=tgt&&tgt.match("/login")?document.location.toString():tgt||document.location.toString();tgt=tgt.replace(document.location.hash.toString(),"");var i=document.createElement("input");i.setAttribute("type","hidden");i.setAttribute("name","redirect");i.setAttribute("id","redirect");i.setAttribute("value",tgt);frm.appendChild(i);}}this._container.removeClassName("hidden");Playray.DropShadow.add($("loginModal"));Playray.Modal.toggle(this._container,true,function(){Playray.ModalLogin.close();});Playray.Layout.Shim.show(this._container.down("div.box"),{top:0.1,left:0.1});if(frm){frm.focusFirstElement();}$$("#"+this._containerId+" *[rel~=close]").each(function(el){Event.observe(el,"click",function(e){Playray.ModalLogin.close();Event.stop(e);});Event.observe(document,"keyup",function(e){if(e.keyCode==Event.KEY_ESC){Playray.ModalLogin.close();Event.stop(e);}});});if($("loginModal")){$("loginModal").focus();}if(e){Event.stop(e);}return false;}else{this._active=false;Playray.Modal._active=false;}},setLogin:function(str){if(this._active){$("usernameModal").setValue(str);$("passwordModal").focus();}},close:function(){if(this._active){Event.stopObserving(document,"keyup",function(e){if(e.keyCode==Event.KEY_ESC){Playray.ModalLogin.close();Event.stop(e);}});this._container.addClassName("hidden");Playray.Modal.toggle(this._container,false);Playray.Layout.Shim.hide(this._container);this._active=false;}}};Playray.Effects={toggle:function(el,duration,effect,options){if(Object.isArray(el)){el.each(function(el){return this.toggle(el,duration,effect,options);}.bind(this));}var duration=duration||0;var effect=effect||"slide";if(duration>0){var options=options||{};options=Object.extend(options,{duration:duration});var fx=new Effect.toggle(el,effect,options);try{return fx;}finally{fx=null;}}else{$(el).toggle();return null;}},appear:function(el,duration){if(Object.isArray(el)){el.each(function(el){return this.appear(el,duration);}.bind(this));}if(Playray.Browser.isIE&&!Playray.Browser.isIE8up){el.show();return;}var duration=duration||0.3;if(el.hasClassName("hidden")){el.hide();el.removeClassName("hidden");}var fx=el.appear({duration:duration});try{return fx;}finally{fx=null;}},fade:function(el,duration,options){if(Object.isArray(el)){el.each(function(el){return this.fade(el,duration,options);}.bind(this));}if(Playray.Browser.isIE&&!Playray.Browser.isIE8up){el.hide();return;}var duration=duration||0.3;var options=options||{};var fx=el.fade(Object.extend({duration:duration},options));try{return fx;}finally{fx=null;}},pulsate:function(el,duration,pulses){if(Object.isArray(el)){el.each(function(el){return this.pulsate(el,duration,pulses);}.bind(this));}var duration=duration||0.8;var pulses=pulses||2;var fx=el.pulsate({duration:duration,pulses:pulses});try{return fx;}finally{fx=null;}},highlight:function(el,options){if(Object.isArray(el)){el.each(function(el){return this.highlight(el,options);}.bind(this));}var options=options||{};fx=el.highlight(options);try{return fx;}finally{fx=null;}},puff:function(el,options){if(Object.isArray(el)){el.each(function(el){return this.puff(el,options);}.bind(this));}var options=options||{};var fx=el.puff(options);try{return fx;}finally{fx=null;}},slideDown:function(el,options){if(Object.isArray(el)){el.each(function(el){return this.slideDown(el,options);}.bind(this));}options=options||{};if(Playray.Browser.isIE&&!Playray.Browser.isIE8up){if(options.beforeStart&&typeof options.beforeStart=="function"){options.beforeStart();}el.show();if(options.afterFinish&&typeof options.afterFinish=="function"){options.afterFinish();}return;}var options=options||{duration:0.5};var fx=el.slideDown(options);try{return fx;}finally{fx=null;}},slideUp:function(el,options){if(Object.isArray(el)){el.each(function(el){return this.slideUp(el,options);}.bind(this));}options=options||{};if(Playray.Browser.isIE&&!Playray.Browser.isIE8up){if(options.beforeStart&&typeof options.beforeStart=="function"){options.beforeStart();}el.hide();if(options.afterFinish&&typeof options.afterFinish=="function"){options.afterFinish();}return;}var options=options||{duration:0.5};var fx=el.slideUp(options);try{return fx;}finally{fx=null;}},slideSwitch:function(hide,show){if(Playray.Browser.isIE&&!Playray.Browser.isIE8up){hide.hide();show.show();return;}if(hide.getHeight()<show.getHeight()){hide.hide();return this.slideDown(show,{duration:0.5});}else{return this.slideUp(hide,{duration:0.5,afterFinish:function(){show.show();}});}},crossfade:function(show,hide,duration,options){var options=options||{};var duration=duration||0.5;options=Object.extend(options,{duration:duration,queue:{scope:"crossfade"}});if(!show){return this.fade(hide,duration);}else{if(!hide){return this.appear(show,duration);}else{var fx=new Effect.Parallel([Effect.Fade(hide,{sync:true}),Effect.Appear(show,{sync:true})],options);try{return fx;}finally{fx=null;}}}}};Playray.Effects.Accordion=Class.create();Playray.Effects.Accordion.prototype={container:null,showAccordion:null,currentAccordion:null,duration:null,effects:[],animating:false,initialize:function(container,options){this.container=$(container);if(!this.container){return false;}this.options=Object.extend({resizeSpeed:8,classNames:{toggle:"accordion-toggle",toggleActive:"accordion-toggle-active",content:"accordion-content"},defaultSize:{height:null,width:null},direction:"vertical",onEvent:"click"},options||{});this.duration=((11-this.options.resizeSpeed)*0.15);var accordions=this.container.select("."+this.options.classNames.toggle);accordions.each(function(accordion){if(accordion.up(".accordion")!=this.container){return;}Event.observe(accordion,this.options.onEvent,this.activate.bind(this,accordion),false);if(this.options.onEvent=="click"){accordion.onclick=function(){return false;};}if(this.options.direction=="horizontal"){var options=$H({width:"0px"});}else{var options=$H({height:"0px"});}options=options.merge({display:"none",overflow:"hidden"});if(accordion.next(0)){this.currentAccordion=$(accordion.next(0)).setStyle(options.toObject());}}.bind(this));var o=this.container.down("."+this.options.classNames.toggle+".open");if(o){this.activate(o);}else{this.activate(this.container.down("."+this.options.classNames.toggle));}},activate:function(accordion){if(this.animating){return false;}this.effects=[];this.currentAccordion=$(accordion.next(0));this.currentAccordion.setStyle({display:"block"});this.currentAccordion.previous(0).addClassName(this.options.classNames.toggleActive);if(this.options.direction=="horizontal"){this.scaling=$H({scaleX:true,scaleY:false});}else{this.scaling=$H({scaleX:false,scaleY:true});}if(this.currentAccordion==this.showAccordion){this.deactivate();}else{this._handleAccordion();}},deactivate:function(){var options=$H({duration:this.duration,scaleContent:false,transition:Effect.Transitions.sinoidal,queue:{position:"end",scope:"accordionAnimation"},scaleMode:{originalHeight:this.options.defaultSize.height?this.options.defaultSize.height:this.currentAccordion.scrollHeight,originalWidth:this.options.defaultSize.width?this.options.defaultSize.width:this.currentAccordion.scrollWidth},afterFinish:function(){this.showAccordion.setStyle({height:"0px",display:"none"});this.showAccordion=null;this.animating=false;}.bind(this)});options=options.merge(this.scaling);this.showAccordion.previous(0).removeClassName(this.options.classNames.toggleActive);new Effect.Scale(this.showAccordion,0,options.toObject());},open:function(idx){var accordion=this.container.select(this.options.classNames.toggle)[idx];if(accordion){this.activete(accordion);}},_handleAccordion:function(){var options=$H({sync:true,scaleFrom:0,scaleContent:false,transition:Effect.Transitions.sinoidal,scaleMode:{originalHeight:this.options.defaultSize.height?this.options.defaultSize.height:this.currentAccordion.scrollHeight,originalWidth:this.options.defaultSize.width?this.options.defaultSize.width:this.currentAccordion.scrollWidth}});options=options.merge(this.scaling);this.effects.push(new Effect.Scale(this.currentAccordion,100,options.toObject()));if(this.showAccordion){this.showAccordion.previous(0).removeClassName(this.options.classNames.toggleActive);options=$H({sync:true,scaleContent:false,transition:Effect.Transitions.sinoidal});options=options.merge(this.scaling);this.effects.push(new Effect.Scale(this.showAccordion,0,options.toObject()));}new Effect.Parallel(this.effects,{duration:this.duration,queue:{position:"end",scope:"accordionAnimation"},beforeStart:function(){this.animating=true;}.bind(this),afterFinish:function(){if(this.showAccordion){this.showAccordion.setStyle({display:"none"});}$(this.currentAccordion).setStyle({height:"auto"});this.showAccordion=this.currentAccordion;this.animating=false;$(document).fire("Playray:resize");}.bind(this)});}};Playray.DropShadow={add:function(el){var el=$(el);if(!el){return;}if(Playray.Browser.isIE6x){el.addClassName("ie6dropshadow");}else{new Effect.Tween(el,0,100,{queu:"end"},function(p){if(el._hasDropShadow){Playray.DropShadow.update(el);return;}var width=el.className.match(/b(\d+)/);if(width&&width[1]){width=parseInt(width[1]);if(!isNaN(width)&&width>0){el.absolutize();el.setStyle({zIndex:910,width:width+"px",height:"auto"});el._hasDropShadow=true;ds=Playray.DropShadow.create(el,width);}}});}},create:function(parentElem,width){var ds=new Element("div",{"class":"ds"+width.toString()});var dst=new Element("div",{"class":"ds_top"});var dsm=new Element("div",{"class":"ds_mid"});var dsb=new Element("div",{"class":"ds_btm"});ds.insert(dst,ds).insert(dsm,ds).insert(dsb,ds);parentElem.parentNode.insertBefore(ds,parentElem);this.update(parentElem);return ds;},update:function(el){if(Playray.Browser.isIE6x){return;}var el=$(el);if(!el){return;}var width=el.className.match(/b(\d+)/);if(width&&width[1]){width=parseInt(width[1]);if(!isNaN(width)&&width>0){var ds=el.previous("div.ds"+width.toString());if(typeof ds=="object"){if(!el._hasDropShadow){ds.absolutize();}ds.clonePosition(el,{setWidth:false,setHeight:false});var dsm=ds.down("div.ds_mid");ds.style.zIndex=900;}if(typeof dsm=="object"){dsm.setStyle({height:(el.getHeight()-18)+"px"});}}}},remove:function(el){var el=$(el);if(!el){return;}if(Playray.Browser.isIE6x){el.removeClassName("ie6dropshadow");}else{if(el._hasDropShadow){var width=el.className.match(/b(\d+)/);width=parseInt(width[1]);if(!isNaN(width)&&width>0){var ds=el.previous("div.ds"+width.toString());if(ds){ds.remove();el._hasDropShadow=false;}}}}}};Playray.Tooltips={defaultContainerId:"tooltip",defaultBindTo:"*[class~=tooltip]",_bindTo:null,_containerId:null,_container:null,_handlers:null,_size:null,_over:null,_out:null,_visible:false,_anchored:false,_initialized:false,init:function(containerId){if(this._initialized){return;}this._containerId=containerId||this.defaultContainerId;this._container=$(this._containerId);this._handlers=$H({show:this.show.bindAsEventListener(this),hide:this.hide.bindAsEventListener(this),move:this.move.bindAsEventListener(this),ahide:this.ahide.bindAsEventListener(this),cancelhide:this.cancelhide.bindAsEventListener(this)});Event.observe(document,"mousemove",this._handlers.get("move"));this._initialized=true;},attach:function(searchNode){var searchNode=searchNode||$(document.documentElement);var tooltips=searchNode.getElementsByTagName("*");var i=0;l=tooltips.length;for(;i<l;i++){var el=tooltips[i];if(el._hastooltip){continue;}if(!el.className.match(/\btooltip\b/)){if(el.tagName.toLowerCase()=="a"){el.title="";}continue;}if(el.title){el._title=el.title;el.title="";el._hastooltip=true;Event.observe(el,"mouseover",this._handlers.get("show"));Event.observe(el,"mouseout",this._handlers.get("hide"));Event.observe(el,"click",this._handlers.get("hide"));var cn=el.childNodes,c=null;var j=0;k=cn.length;}}this._size=this._container.getDimensions();},show:function(e){clearTimeout(this._out);var _el=Event.element(e);var el=_el.up(this.defaultBindTo)||_el;if(!el||!this._container.down("span")){return;}this._container.down("span").update(el._title);this._size=this._container.getDimensions();if(el.hasClassName("anchored")){this._anchored=true;var pos=el.cumulativeOffset();var anchor=this._container.down(".anchor");var offset=(anchor)?anchor.positionedOffset():{top:0,left:0};this.updatePosition(e,pos.left-offset.left-40,pos.top-offset.top);Playray.Forms.attach(this._container);Playray.Modal.attach(this._container);if(this._visible){return;}this._container.observe("mouseout",this._handlers.get("ahide"));this._container.childElements().each(function(c){c.observe("mouseover",this._handlers.get("cancelhide"));}.bind(this));Event.stopObserving(document,"mousemove",this._handlers.get("move"));}else{this._anchored=false;this.updatePosition(e);if(this._visible){return;}}this._over=setTimeout(function(){Playray.Effects.appear(this._container,0.3);this._visible=true;}.bind(this),200);Event.stop(e);},setContent:function(content){if(typeof content=="function"){content(this._container.down("span"));}else{this._container.down("span").update(content);}},hide:function(e){clearTimeout(this._over);var _el=Event.element(e);var el=_el.up(this._bindTo)||_el;var _time=(Playray.Browser.isIE6x)?300:10;if(e.type=="click"){this._container.hide();this._visible=false;}else{this._out=setTimeout(function(){this._container.hide();this._visible=false;if(this._anchored){Event.observe(document,"mousemove",this._handlers.get("move"));this._container.childElements().each(function(c){c.stopObserving("mouseover");}.bind(this));}}.bind(this),_time);Event.stop(e);}},move:function(e){if(this._visible){this.updatePosition(e);}},updatePosition:function(e,x,y){if(!this._size){return;}var w,h,px,py,x,y;px=x||Event.pointerX(e);py=y||Event.pointerY(e);w=window.getWidth()+window.getScrollLeft();h=window.getHeight()+window.getScrollTop();x=(px+this._size.width+40>w)?(0-this._size.width-20):20;y=(py+this._size.height>h)?(0-this._size.height):0;this._container.setStyle({top:(py+y)+"px",left:(px+x)+"px"});},ahide:function(e){this.hide(e);},cancelhide:function(e){if(this._visible){clearTimeout(this._out);}}};Playray.Character={currentDefaultSkinId:-1,_editingSkinId:null,_containerElement:false,_placeHolder:null,init:function(){$$("*[rel~=editcharacter").each(function(el){el.observe("click",this.edit.bindAsEventListener(this,Playray.LoggedUserId,Playray.LoggedUserArchiveId));});},display:function(userId,skinId,w,h,tgtId){userId=userId||this._userId||Playray.LoggedUserId;skinId=skinId||this._skinId;if(userId<=0){return;}var w=w||318;var h=h||450;var tgtId=tgtId||"character";Playray.flash(Playray.Config.FileServer+"/swf/character_v3/character.v"+parseInt(Playray.Config.GenVersion)+".swf",tgtId,tgtId+skinId,w,h,10,{charData:Playray.Config.SiteServer+"/q/chargen/character.xml?nb=1&id="+userId+((typeof skinId=="number"&&skinId>0)?"&archiveid="+skinId:"")},{wmode:"opaque"});if(tgtId!="characterZoom"){$(tgtId).addClassName("relative");var zoomBtn=new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/zoom_magnifier.png","class":"icon-30 absolute hover tooltip",title:Playray.L10n.ViewFullsizeChar});zoomBtn.setStyle({zIndex:100,top:"10px",left:"5px"});zoomBtn.onclick=function(){skinId=skinId||-1;Playray.Character.zoom(userId,skinId);};$(tgtId).insert(zoomBtn);}this._userId=userId;this._skinId=skinId;},displayLegacy:function(userId,skinId,w,h,tgtId){if(userId<=0){return;}var w=w||320;var h=h||475;var tgtId=tgtId||"character";var url=Playray.Config.FileServer+"/swf/chargen_v2.87/character2.swf";var vars={charData:Playray.Config.SiteServer+"/chargen_v2.php?nb=1&id="+userId+((typeof skinId=="number"&&skinId>0)?"&archiveid="+skinId:""),swfPath:Playray.Config.FileServer+"/swf/bodyparts_v2/",preloaderData:"FFFFFF."+Playray.L10n.LoadingCharacter};Playray.embedSWF(url,tgtId,tgtId+skinId,w,h,9,vars,{wmode:"opaque"});if(tgtId!="characterZoom"){$(tgtId).addClassName("relative");var zoomBtn=new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/zoom_magnifier.png","class":"icon-30 absolute hover tooltip",title:Playray.L10n.ViewFullsizeChar});zoomBtn.setStyle({zIndex:100,top:"10px",left:"5px"});zoomBtn.onclick=function(){skinId=skinId||-1;Playray.Character.zoom(userId,skinId,null,null,2);};$(tgtId).insert(zoomBtn);}this._userId=userId;this._skinId=skinId;},edit:function(userId,skinId,vars){var userId=userId||this._userId||Playray.LoggedUserId||null;var skinId=skinId||this._skinId||Playray.LoggedUserArchiveId||null;if(userId<=0){return;}vars=vars||{};vars=Object.extend(vars,{bootstrap:Playray.Config.SiteServer+"/q/chargen/bootstrap.xml?archiveid="+skinId,notify:"Playray.Notify.delegate"});Playray.flash(Playray.Config.FileServer+"/swf/chargen_v3/chargen.v"+parseInt(Playray.Config.GenVersion)+".swf","chargen","_chargen"+skinId,"960","570","10.0.0",vars,{menu:"false",wmode:"window",allowFullScreen:"true"});this._editingSkinId=skinId;},editLegacy:function(userId,skinId){var userId=userId||this._userId||Playray.LoggedUserId||null;var skinId=skinId||this._skinId||Playray.LoggedUserArchiveId||null;var url=Playray.Config.FileServer+"/swf/chargen_v2.87/chargen.swf";var vars={chargenData:Playray.Config.SiteServer+"/xml/chargen_v2.xml",charData:Playray.Config.SiteServer+"/chargen_v2.php?id="+userId+(typeof(skinId)!="undefined"?"&archiveid="+skinId:""),preloaderData:"FFFFFF."+Playray.L10n.LoadingChargen};Playray.embedSWF(url,"chargen","chargen"+skinId,590,400,7,vars);this.getDefaultSkinId();this._editingSkinId=skinId;},zoom:function(userId,skinId,modal,skinName,version){var userId=userId||Playray.LoggedUserId||null;var skinId=skinId||Playray.LoggedUserArchiveId||null;var useModal=modal||true;var version=version||3;var container=$("modalCharacter");var maxHeight=window.getHeight()-100;var maxWidth=window.getWidth()-100;var charWidth=Math.round(maxHeight*0.67);var charHeight=maxHeight;if(charWidth>maxWidth){charWidth=maxWidth-100;charHeight=Math.round(charWidth*1.25);}if(!container){var b=document.getElementsByTagName("body")[0];container=new Element("div",{id:"modalCharacter"});var ci=new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/icons/15x15/close.png","class":"hover icon-15",rel:"close"});ci.onclick=function(){container.addClassName("hidden");Playray.Modal.toggle(container,false);if(Playray.Browser.isIE6up&&$("character")){$("character").style.visibility="visible";}};var sc=new Element("div",{id:"characterZoom","class":"swf rounded9"});sc.setStyle({width:charWidth+"px",height:charHeight+"px"});container.insert(ci);if(skinName){var sn=Element.extend(document.createElement("h3"));sn.appendChild(document.createTextNode(skinName));container.appendChild(sn);}container.insert(sc);b.appendChild(container);}else{if(skinName){Element.update(container.down("h3"),skinName.escapeHTML());container.down("div").setStyle({width:charWidth+"px",height:charHeight+"px"});}}if(Playray.Browser.isIE6up&&$("character")){$("character").style.visibility="hidden";}if(useModal){Playray.Modal.toggle(container,true,function(){container.addClassName("hidden");Playray.Modal.toggle(container,false);if(Playray.Browser.isIE6up&&$("character")){$("character").style.visibility="visible";}});}var fn=version==3?this.display:this.displayLegacy;fn(userId,skinId,charWidth,charHeight,"characterZoom");container.removeClassName("hidden");Position.center(container,{update:true});},setDefaultAndDisplay:function(userId,skinId){var userId=userId||Playray.LoggedUserId||null;var skinId=skinId||Playray.LoggedUserArchiveId||null;if(userId<=0){return;}Playray.Modal.toggleSpinner(true);var qry=new Ajax.Request("/q/chargen/skin/setdefault",{method:"post",parameters:{uid:userId,sid:skinId},asynchronous:false,onSuccess:function(res){var res=res.responseText.evalJSON()||{};if(res.ok){Playray.Layout.setDefaultsFromSkin(skinId,function(){Playray.Navigate("/people/user/"+Playray.LoggedUser);});}else{Playray.Modal.toggleSpinner(false);}}.bind(this)});qry=null;},getDefaultSkinId:function(){var skinId=-1;if(this.currentDefaultSkinId>-1){return this.currentDefaultSkinId;}var qry=new Ajax.Request("/q/getdefaultskin",{method:"post",asynchronous:false,parameters:"uid="+Playray.LoggedUserId,onSuccess:function(request){var node=request.responseXML.getElementsByTagName("skin");if(typeof node=="undefined"){return;}skinId=node[0].getAttribute("skinId");}});qry=null;this.currentDefaultSkinId=skinId;return skinId;},expand:function(){if(!this._containerElement){this._containerElement=$("character").up("div.box");this._placeHolder=new Element("div").clonePosition(this._containerElement);}if(this._containerElement){var el=this._containerElement;el.insert({after:this._placeHolder});el.absolutize();}},contract:function(){if(this._containerElement){var el=this._containerElement;console.log("contract",el);var div=new Element("div",{"class":"bottomspacer"}).clonePosition(el);el.removeClassName("expanded");}},refreshBitmaps:function(skinId){skinId=skinId||Playray.LoggedUserArchiveId;var re=new RegExp(_("%1/\\w+_%1_%2_",Playray.LoggedUserId,skinId));$$(".userface-30, .userface-60, .portrait").each(function(el){if(re.match(el.src)){el.src=el.src.replace(/\.(png|jpg|gif)(\?.*)?$/,".$1?"+(new Date()).getTime());}else{if(re.match(el.getStyle("background-image"))){el.setStyle({backgroundImage:el.getStyle("background-image").replace(/\.(png|jpg|gif)(\?[^"']*)?/,".$1?"+(new Date()).getTime())});}}});},saved:function(){this.refreshBitmaps();if(Playray.IsCurrentUser){var qry=new Ajax.Request("/q/getdefaultskin",{method:"post",parameters:"uid="+Playray.LoggedUserId,onSuccess:this._saved.bind(this)});qry=null;}else{var d=Playray.Dialog.open("ok",Playray.L10n.CharacterSaved||"OK!");d.stopObserving("Playray::close");d.observe("Playray::close",function(e){Playray.Modal.closeModal();});}},_saved:function(request){var node,userId,skinId;node=request.responseXML.getElementsByTagName("skin");if(typeof node=="undefined"){return;}userId=node[0].getAttribute("userId");skinId=node[0].getAttribute("skinId");if(this.currentDefaultSkinId==-1&&skinId>0){this.currentDefaultSkinId=skinId;Playray.Dialog.open("ok",Playray.L10n.CharacterAward);this.display(Playray.LoggedUserId,this._editingSkinId||null);}else{var d=Playray.Dialog.open("ok",Playray.L10n.CharacterSaved||"OK!");d.observe("Playray::close",function(e){Playray.Reload();});}}};Playray.Character.Archive={_containerId:"characterarchive",_container:null,_faces:null,_handlers:null,_scrollers:null,_step:37,_smallstep:2,init:function(containerId){this._containerId=containerId||this._containerId;this._container=$(this._containerId);if(!this._container){return;}this._faces=this._container.down(".faces");if(this._faces){this._handlers=$H({left:this.scrollLeft.bindAsEventListener(this),right:this.scrollRight.bindAsEventListener(this)});var div=this._faces.wrap("div",{"class":"faces-wrapper"});if(Playray.IsCurrentUser){this._container._width=this._container.getWidth()-75;}else{this._container._width=this._container.getWidth()-37;}div.setStyle({position:"absolute",overflow:"hidden",height:"35px",width:(this._container._width)+"px",left:"18px"});this.makeScrollable();this._container.show();}},makeScrollable:function(){this._faces._width=parseInt(this._faces.childElements().length)*this._step;this._faces.setStyle({position:"absolute",whiteSpace:"nowrap",height:"35px",width:this._faces._width+"px"});this._scrollers=$H({left:this._container.down(".scroll-left"),right:this._container.down(".scroll-right")});if(this._faces._width<this._container._width){return;}this._scrollers.each(function(h){var el=h.value;el.removeClassName("hidden");el.setStyle({display:"block",width:"18px",height:"34px",position:"absolute",top:"0px",zIndex:"999"});if(h.key=="left"){el.setStyle({left:"0px"});}else{el.setStyle({right:"0px"});}Event.observe(el,"click",this._handlers.get(h.key));}.bind(this));this._checkscrollers();},scrollLeft:function(e){this._scroll(this._step,"left");},scrollRight:function(e){this._scroll(this._step,"right");},_scroll:function(step,dir){var fp=this._faces.positionedOffset();if(dir=="left"&&fp.left<0){this._faces.setStyle({left:(fp.left+step)+"px"});}else{if(dir=="right"&&(this._container._width-this._faces._width)-fp.left<-4){this._faces.setStyle({left:(fp.left-step)+"px"});}}this._checkscrollers();},_checkscrollers:function(){var fp=this._faces.positionedOffset();if(fp.left==0){this._scrollers.get("left").hide();}else{this._scrollers.get("left").show();}if((this._container._width-this._faces._width)-fp.left>-4){this._scrollers.get("right").hide();}else{this._scrollers.get("right").show();}}};Playray.Skins=Playray.Character;Playray.Comments={_containers:new Array(),_handlers:new Hash(),_bindTo:"*[rel~=newcomment]",_checkedCount:0,attach:function(bindTo,searchNode){var bindTo=bindTo||this._bindTo;var searchNode=searchNode||$(document.documentElement);var elems=document.getElementsByTagName("*");var i=0;l=elems.length;if(l>0){this._handlers.set("newcomment",this.newComment.bindAsEventListener(this));for(;i<l;i++){link=elems[i];if(!link.rel||!link.rel.match(/\bnewcomment\b/)){continue;}var targetId=link.className.match(/\bnewcomment\-(\w+)\b/);if(targetId[1]&&$("comments-"+targetId[1])){link._target=targetId[1];Event.observe(link,"click",this._handlers.get("newcomment"));}}}},init:function(searchNode){searchNode=searchNode||$(document.documentElement);var containers=searchNode.select("div.comments");if(!containers){return;}this._handlers.set("showactions",this._showactions.bindAsEventListener(this));this._handlers.set("editreply",this._editreply.bindAsEventListener(this));containers.each(function(container){this.initContainer(container);this.initComments(container);this.initReplies(container);}.bind(this));},initContainer:function(container){var _id=container.identify();if(this._containers[_id]){return;}this._containers[_id]=container;var comments=container.select("div.comment");if(comments){comments.each(function(c){this._initcomment(c);}.bind(this));}var deleteBtn=container.down("div.button.deletemultiple");if(deleteBtn){var deleteFrm=deleteBtn.up("form");var checkboxes=container.select("input.delete");checkboxes.each(function(checkbox){checkbox.observe("click",function(){checkbox.toggleClassName("checked");this._checkedCount=checkbox.checked?this._checkedCount+1:this._checkedCount-1;if(this._checkedCount>0){deleteBtn.show();}else{deleteBtn.hide();}}.bindAsEventListener(this));}.bind(this));deleteBtn.down("button").observe("click",function(e){var idList=checkboxes.findAll(function(s){return s.checked;}).pluck("value").join(",");deleteFrm.down("input#id_list").value=idList;console.log(deleteFrm);}.bindAsEventListener(this));}},initComments:function(container){var formcontainers=container.select("div.commentform");formcontainers.each(function(formcontainer){var form=formcontainer.down("form");form.observe("Playray::formSuccess",this._commentsuccess.bindAsEventListener(this));var cancelBtn=form.down("button.cancel");if(cancelBtn){cancelBtn.observe("click",function(){form.reset();formcontainer.addClassName("hidden");}.bindAsEventListener());}}.bind(this));},initReplies:function(container){var formcontainers=container.select("div.replyform");formcontainers.each(function(formcontainer){var form=formcontainer.down("form");var saved="";if(form){form.observe("Playray::formSuccess",this._replysuccess.bindAsEventListener(this));form.observe("Playray::cancelProceed",function(){form.down("textarea").value=saved;}.bindAsEventListener(this));var cancelBtn=form.down("button.cancel");if(cancelBtn){cancelBtn.observe("click",function(){if(this._reply){this._reply.show();}form.reset();formcontainer.addClassName("hidden");}.bindAsEventListener(this));}var deleteBtn=form.down("button.delete");if(deleteBtn){deleteBtn.observe("click",function(){var ta=form.down("textarea");saved=ta.value;ta.value="";}.bindAsEventListener(this));}}}.bind(this));},newComment:function(e){var form=this._showform(e,"div.commentform");if(form){form.up(".box").scrollTo();Playray.Textareas.setFocus(form.down("textarea"));}e.stop();return false;},_editreply:function(e){var elem=e.findElement("a");var c=e.element().up("div.commentwrapper");var rc=c.down("div.replycontainer");var fc=this._relocatereplyform(e,c);if(this._reply){this._reply.show();}if(rc){this._reply=rc.hide();fc.down("textarea").value=rc.down("div.plaintext").innerHTML;fc.down("button.delete").show();}else{fc.down("textarea").value="";fc.down("button.delete").hide();}var query=elem.getAttribute("href").toString().parseQuery();fc.down("form")["comment_id"].value=query.reply;e.stop();return false;},_showactions:function(e){var c=e.element().up("div.comment");var action=c.down("div.actions");action.toggleClassName("open");action.toggleClassName("closed");e.stop();return false;},_initcomment:function(c){var actioncontainer=c.down("div.actions");if(actioncontainer){trigger=actioncontainer.down(".trigger");if(trigger){trigger.observe("click",this._handlers.get("showactions"));trigger.addClassName("hover");}actions=actioncontainer.select("a[rel]");actions.each(function(action){switch(action.rel){case"reply":action.observe("click",this._handlers.get("editreply"));break;case"editreply":action.observe("click",this._handlers.get("editreply"));break;}}.bind(this));forms=actioncontainer.select("form");forms.each(function(f){if(f.hasClassName("deletecomment")){f.observe("Playray::formSuccess",this._deletesuccess.bindAsEventListener(this));}}.bind(this));}},_relocatereplyform:function(e,c){var container=this._showform(e,"div.replyform");Playray.Textareas.deinitTextarea(container.down("textarea"));container=container.remove();c.insert({bottom:container});Playray.Textareas.initTextarea(container.down("textarea"));return container;},_showform:function(e,selector){var elem=e.findElement("a");var container=null;if(elem._target){container=$("comments-"+elem._target);}else{container=elem.up("div.comments");}if(container){var formcontainer=container.down(selector);if(formcontainer){var form=formcontainer.down("form");formcontainer.removeClassName("hidden");return formcontainer;}}return null;},_commentsuccess:function(e){var elem=e.element();var json=e.memo;if(typeof json=="object"&&json.injectcontent){var formcontainer=elem.up("div.commentform");formcontainer.down("textarea").value="";formcontainer.addClassName("hidden");var content=decodeURIComponent(json.injectcontent);if(formcontainer.next("div.commentwrapper")){var sibling=formcontainer.next("div.commentwrapper");sibling.insert({before:content});injected=sibling.previous("div.commentwrapper");}else{var sibling=formcontainer.previous("div.commentwrapper");sibling.insert({after:content});injected=sibling.next("div.commentwrapper");}Playray.Effects.highlight(injected.down("div.comment"));if(sibling.down("div").hasClassName("nocomments")){sibling.remove();}e.stop();}},_replysuccess:function(e){var elem=e.element();var json=e.memo;if(typeof json!="object"){return;}if(json.injectcontent){var w=elem.up("div.commentwrapper");var f=w.down("div.replyform");var cc=w.down("div.commentcontainer");var rc=w.down("div.replycontainer");var content=decodeURIComponent(json.injectcontent);f.down("textarea").value="";f.addClassName("hidden");if(rc){var injected=rc.replace(content).show();}else{cc.insert({after:content});var injected=w.down("div.replycontainer");}Playray.Effects.highlight(injected.down("div.comment"));e.stop();}else{if(json.type&&json.type=="removenode"){var w=elem.up("div.commentwrapper");var f=w.down("div.replyform");var rc=w.down("div.replycontainer");f.addClassName("hidden");if(rc){rc.show();rc.setStyle({zIndex:99999});Playray.Effects.puff(rc);}}}},_deletesuccess:function(e){var elem=e.element();var w=elem.up("div.commentwrapper");var c=w.up("div.comments");w.setStyle({zIndex:99999});Playray.Effects.puff(w,{afterFinish:function(){w.remove();var comments=c.select("div.commentwrapper");if(!comments||comments.length==0){var div=new Element("div",{"class":"commentwrapper"}).insert(new Element("div",{"class":"commentcontainer nocomments bottomspacer topspacer"})).insert(new Element("em").update(Playray.L10n.NoComments));c.insert({top:div});}}});},_deletemultiple:function(e){}};Playray.Userpage={init:function(){Playray.Userpage.Gallery.init();Playray.Userpage.Blog.init();Playray.Userpage.Messages.init();Playray.Userpage.Friends.init();Playray.Userpage.Description.init();Playray.Userpage.Poll.init();Playray.Userpage.Messages.attach();Playray.Userpage.Description.attach();var favEdit=$("favedit");if(favEdit){var favForm=favEdit.down("form");favForm.observe("Playray::formSuccess",function(e){if(typeof e.memo=="object"&&e.memo.injectcontent&&$("favlist")){var content=decodeURIComponent(e.memo.injectcontent);$("favlist").update(content);$("favlist").show();$("favedit").hide();Playray.Tooltips.attach($("favlist"));}}.bindAsEventListener(this));}}};Playray.Userpage={init:function(){this.initFavEdit();if(!self.document.location.pathname.match(/^\/community\/user\//)){return;}Playray.Userpage.Gallery.init();Playray.Userpage.Blog.init();Playray.Userpage.Messages.init();Playray.Userpage.Friends.init();Playray.Userpage.Description.init();Playray.Userpage.Poll.init();Playray.Userpage.Messages.attach();Playray.Userpage.Description.attach();Playray.Userpage.Poll.attach();Playray.Userpage.Blog.attach();},initFavEdit:function(){var favEdit=$("favedit");if(favEdit){var favForm=favEdit.down("form");favForm.observe("Playray::formSuccess",function(e){if(typeof e.memo=="object"&&e.memo.injectcontent&&$("favlist")){var content=decodeURIComponent(e.memo.injectcontent);$("favlist").update(content);$("favlist").show();$("favedit").hide();Playray.Tooltips.attach($("favlist"));}}.bindAsEventListener(this));}}};Playray.Userpage.Description={_bindTo:"*[rel~=editdescription]",_ismodal:false,attach:function(bindTo){var bindTo=bindTo||this._bindTo;var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.rel||!el.rel.match(/\beditdescription\b/)){continue;}Event.observe(el,"click",function(e){var el=e.element();var href=el.getAttribute("href");if(!href){return true;}Playray.Modal.openModal(href,{onComplete:this.modalinit.bind(this)});e.stop();return false;}.bindAsEventListener(this));}},init:function(){this._ismodal=false;var editDesc=$("edituserdesc");var viewDesc=$("viewuserdesc");if(editDesc&&viewDesc){var editForm=editDesc.down("form");var editBtn=viewDesc.down("button.edituserdesc");if(editBtn){editBtn.observe("click",function(e){viewDesc.hide();editDesc.show();}.bindAsEventListener(this));}editForm.observe("Playray::formSuccess",this.update.bindAsEventListener(this));}},update:function(e){if(typeof e.memo=="object"&&e.memo.injectcontent){var content=decodeURIComponent(e.memo.injectcontent);if(this._ismodal){if($("userdescshort")){$("userdescshort").update(content);}Playray.Modal.closeModal(e);}else{var viewDesc=$("viewuserdesc");viewDesc.down("div.userdesc").update(content);viewDesc.show();$("edituserdesc").hide();}}},modalinit:function(){this.init();this._ismodal=true;}};Playray.Userpage.Poll={_bindTo:"*[rel~=adduserpoll]",_ismodal:false,_container:null,attach:function(bindTo){var bindTo=bindTo||this._bindTo;var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.rel||!el.rel.match(/\badduserpoll\b/)){continue;}Event.observe(el,"click",function(e){var el=e.element();var href=el.getAttribute("href");if(!href){return true;}Playray.Modal.openModal(href,{onComplete:this.modalinit.bind(this)});e.stop();return false;}.bindAsEventListener(this));}},init:function(){this._container=$("box_userpoll");if(!this._container){return;}var replyOptions=this._container.down("ul.userpoll");if(replyOptions){replyOptions.select("li").each(function(li){var lnk=li.down("a");li.observe("click",this.vote.bindAsEventListener(this,lnk.href));}.bind(this));}},vote:function(e,url){var qry=new Ajax.Request(url,{method:"post",parameters:{mode:"ajax"},onSuccess:this._success.bind(this)});qry=null;e.stop();return false;},_success:function(request){var json=request.responseText.evalJSON(true);if(typeof json!="object"){throw"Invalid response, JSON excpected";return;}Playray.Forms.success(json,null);if(json.injectcontent){var content=decodeURIComponent(json.injectcontent);this._container.down("div.bcontent").update(content);}},modalinit:function(){this._ismodal=true;var form=$("userPollForm");if(form){form.observe("Playray::formSuccess",function(e){if(typeof e.memo=="object"&&e.memo.injectcontent){var content=decodeURIComponent(e.memo.injectcontent);if(this._container){this._container.down("div.bcinner").update(content);this.attach();Playray.Forms.init(this._container);}Playray.Modal.closeModal(e);}}.bindAsEventListener(this));}}};Playray.Userpage.Gallery={_form:null,init:function(){if(Playray.Browser.isIE6x){return;}this._form=$("gallery-upload");if(!this._form){return;}var input=new Element("input",{type:"hidden",name:"mode",value:"iframe"});this._form.insert({top:input});container=$$("div.imagecontainer").first();if(container){container.select("div.comment.new").each(function(el){Playray.Effects.pulsate(el);});}},submit:function(form){if(Playray.Browser.isIE6x){return true;}if(!Playray.Forms.canSubmit(form)){return false;}var n="f"+Math.floor(Math.random()*99999);var div=new Element("div").hide();div.update('<iframe style="display:none;" width="1" height="1" frameborder="0" src="about:blank" id="'+n+'" name="'+n+'" onload="Playray.Userpage.Gallery.loaded(\''+n+"')\"></iframe>");this._form.insert({after:div});this._form.setAttribute("target",n);Playray.Forms.loading(this._form);$$("body")[0].addClassName("loading");return true;},loaded:function(id){var i=document.getElementById(id);if(i.contentDocument){var d=i.contentDocument;}else{if(i.contentWindow){var d=i.contentWindow.document;}else{var d=window.frames[id].document;}}if(d.location.href=="about:blank"){return;}var data=d.getElementById("json_data");var json=data.innerHTML.toString().evalJSON();this.refresh(1);if(typeof json=="object"){this._form.reset();Playray.Forms.empty(this._form);Playray.Forms.success(json,this._form);}$$("body")[0].removeClassName("loading");return;},refresh:function(page,e){var params=location.search.parseQuery();page=page||params.page||1;container=$$("div.imagecontainer").first();if(container){url=location.pathname;var qry=new Ajax.Updater(container,url,{evalScripts:true,method:"get",parameters:{mode:"refresh",page:parseInt(page)},onComplete:function(request){Playray.fixPNG(container);request=null;}});qry=null;}}};Playray.Userpage.Blog={_editBindTo:"*[rel~=editblogentry]",_newBindTo:"*[rel~=newblogentry]",_formContainerId:"blog_edit",_formContainer:null,_blogContainerId:"blog_entry",_blogContainer:null,_form:null,_box:null,_handlers:new Hash(),init:function(){this._blogContainer=$(this._blogContainerId);this._formContainer=$(this._formContainerId);if(this._blogContainer){this._box=this._blogContainer.up("div.box");}if(this._formContainer){this._form=this._formContainer.down("form");this._form.observe("Playray::formSuccess",this._success.bindAsEventListener(this));}this._handlers.set("newblog",this.newBlogEntry.bindAsEventListener(this));this._handlers.set("editblog",this.editBlogEntry.bindAsEventListener(this));},attach:function(searchNode){var searchNode=searchNode||$(document.documentElement);var elems=searchNode.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var link=elems[i];if(!link.rel||!link.rel.match(/\b(editblogentry|newblogentry)\b/)){continue;}if(link.rel=="editblogentry"){link.observe("click",this._handlers.get("editblog"));}else{if(link.rel=="newblogentry"){link.observe("click",this._handlers.get("newblog"));}}}},newBlogEntry:function(e){this._toggleform();this._box.down("span.new_entry").removeClassName("hidden");Playray.Forms.empty(this._form);Playray.Textareas.setFocus(this._form.down("textarea"));this._form.down("input[name=edit_id]").value="";this._form.down("button[name=delete]").hide();this._comments=this._box.next("div.box").hide();if(e){e.stop();}return false;},editBlogEntry:function(e){this._toggleform();this._box.down("span.edit_entry").removeClassName("hidden");Playray.Forms.reset(this._form);Playray.Textareas.setFocus(this._form.down("textarea"));this._form.down("button[name=delete]").show();var cancelBtn=this._form.down(".button.cancel");if(cancelBtn){cancelBtn.observe("click",this.showBlog.bindAsEventListener(this));}if(e){e.stop();}return false;},showBlog:function(e){this._toggleform();this._comments=this._box.next("div.box").show();if(e){e.stop();}return false;},_toggleform:function(e){if(this._blogContainer&&this._formContainer){this._blogContainer.toggleClassName("hidden");this._formContainer.toggleClassName("hidden");this._box.down("div.subtitle").toggleClassName("hidden");this._box.down("span.new_entry").addClassName("hidden");this._box.down("span.edit_entry").addClassName("hidden");}if(e){e.stop();}return false;},_success:function(e){var elem=e.element();var json=e.memo;if(typeof json=="object"){if(json.injectcontent){var content=decodeURIComponent(json.injectcontent);Playray.Textareas.deinitTextarea(this._form.down("textarea"));this._box.replace(content);Playray.Userpage.Blog.init(this._box);Playray.Userpage.Blog.attach(this._box);Playray.Forms.attach(this._box);Playray.Textareas.initTextarea(this._form.down("textarea"));this._box.scrollTo();e.stop();}}}};Playray.Userpage.Messages={_bindTo:"*[rel~=newprivmsg]",_containerId:"box_privmsg",_container:null,_form:null,_timer:null,attach:function(bindTo){var bindTo=bindTo||this._bindTo;var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.rel||!el.rel.match(/\bnewprivmsg\b/)){continue;}Event.observe(el,"click",function(e){var el=e.element();var href=el.getAttribute("href");if(!href){return true;}Playray.Modal.openModal(href,{onComplete:this.init.bind(this)});e.stop();return false;}.bindAsEventListener(this));}},init:function(){this._container=$(this._containerId);if(!this._container){return;}this._form=this._container.down("form");if(this._form){Playray.Forms.attach(this._container);this._initform();}},_initform:function(){if(this._form.id="msgform"){var recipient=this._form.down("input#recipient");var friends=this._form.down("select#friends");if(recipient){recipient.observe("keyup",this._checkrecipient.bindAsEventListener(this,recipient,friends));recipient.observe("Playray::acSelected",this._checkrecipient.bindAsEventListener(this,recipient,friends));}if(friends){friends.observe("change",this._checkrecipient.bindAsEventListener(this,recipient,friends));}}},_checkrecipient:function(e,recipient,friends){var wait=0;if(this._timer){clearTimeout(this._timer);}switch(e.type){case"keyup":if(friends&&Form.Element.present(recipient)){friends.disable();}else{if(friends){friends.enable();}}wait=500;break;case"change":if(friends.present()){recipient.disable();}else{recipient.enable();}break;}var username=(recipient.present())?recipient.getValue():friends.getValue();if(wait>0){this._timer=setTimeout(function(){if(recipient._acActive||recipient._acInProgress||username.length<Playray.AutoComplete._minimumCharacters){clearTimeout(this._timer);return;}Playray.getBitmapUrl(username,null,"60",function(src){$("recipientBitmap").src=src;});}.bind(this),wait);}else{Playray.getBitmapUrl(username,null,"60",function(src){$("recipientBitmap").src=src;});}}};Playray.Userpage.Friends={_handlers:null,init:function(){var forms=$$("form.unconfirmed_friends","form.pending_friends","form.unconfirmed_friends_all");if(forms){this._handlers=$H({confirm:this._confirm.bindAsEventListener(this),confirm_all:this._confirm_all.bindAsEventListener(this),cancel:this._cancel.bindAsEventListener(this)});forms.each(function(form){if(form.hasClassName("unconfirmed_friends")){form.observe("Playray::formSuccess",this._handlers.get("confirm"));}if(form.hasClassName("unconfirmed_friends_all")){form.observe("Playray::formSuccess",this._handlers.get("confirm_all"));}if(form.hasClassName("pending_friends")){form.observe("Playray::formSuccess",this._handlers.get("cancel"));}}.bind(this));}},_confirm:function(e){var form=e.element();var elem=form.up("div.eventcontainer");var container=elem.up("div.box");if(typeof e.memo=="object"&&e.memo.injectcontent&&$("box_friends_confirmed")){$("box_friends_confirmed").down("div.bcontent").update(decodeURIComponent(e.memo.injectcontent));Playray.Forms.attach($("box_friends_confirmed").down("div.bcontent"));Playray.Tooltips.attach();}elem.remove();if(container.select("div.eventcontainer").length==0){Playray.Effects.toggle(container,0.2);}var newFriends=$$("#box_friends_confirmed div.new");if(newFriends){newFriends.each(function(f){Playray.Effects.pulsate(f,2,4);});var el=$("userinfo").down(".counter-friends");if(el){Playray.Effects.slideUp(el);}}},_confirm_all:function(e){var form=e.element();var container=form.up("div.box");if(typeof e.memo=="object"&&e.memo.injectcontent&&$("box_friends_confirmed")){$("box_friends_confirmed").down("div.bcontent").update(decodeURIComponent(e.memo.injectcontent));Playray.Forms.attach($("box_friends_confirmed").down("div.bcontent"));Playray.Tooltips.attach();}Playray.Effects.toggle(container,0.2);var newFriends=$$("#box_friends_confirmed div.new");if(newFriends){newFriends.each(function(f){Playray.Effects.pulsate(f,2,4);});}var el=$("userinfo").down(".counter-friends");if(el){Playray.Effects.slideUp(el);}},_cancel:function(e){var form=e.element();var elem=form.up("div.eventcontainer");var container=elem.up("div.box");elem.remove();if(container.select("div.eventcontainer").length==0){Playray.Effects.toggle(container,0.2);}}};Playray.Forms={_handlers:new Hash(),_button:null,_form:null,_dialog:null,_formdata:null,init:function(searchNode){var searchNode=searchNode||$(document.documentElement);var maxlengths=searchNode.select("input[maxlength], textarea[maxlength]");if(maxlengths){this._handlers.set("maxlength",this._maxlength.bindAsEventListener(this));maxlengths.each(function(el){if(el._inited_maxlength){return;}var charsLeftId=el.name.replace(/\[\]/,"")+"_charsleft";var charsLeft=$(charsLeftId);if(charsLeft){el._charsleft=charsLeft;}else{if(el.tagName.toLowerCase()=="textarea"){charsLeft=new Element("span",{"class":"s-icon pen",id:charsLeftId});el.insert({after:charsLeft.wrap(new Element("div",{"class":"right"}))});el._charsleft=charsLeft;}}if(charsLeft){charsLeft.update(parseInt(el.getAttribute("maxlength"))-parseInt(el.value.length));}el.observe("focus",this._handlers.get("maxlength"));el.observe("keyup",this._handlers.get("maxlength"));el._inited_maxlength=true;}.bind(this));}},attach:function(searchNode){searchNode=searchNode||$(document.documentElement);var forms=searchNode.select("form.checksubmit");if(!forms){return;}this._handlers.set("checksubmit",this._checksubmit.bindAsEventListener(this));this._handlers.set("submit",this._submit.bindAsEventListener(this));this._handlers.set("click",this._click.bindAsEventListener(this));this._handlers.set("cancel",this._cancel.bindAsEventListener(this));forms.each(function(form){if(form._initialized){return;}form.observe("submit",this._handlers.get("checksubmit"));document.observe("Playray::submit",this._handlers.get("submit"));var btns=form.getElementsBySelector("*[type=submit]","*[type=image]");btns.each(function(btn){if(!btn.hasClassName("tooltip")){var msg=btn.getAttribute("title");if(msg){btn.setAttribute("title","");btn._msg=msg.toString();}}btn.observe("click",this._handlers.get("click"));btn=null;}.bind(this));form._initialized=true;}.bind(this));var inputs=$$("input.checkuncheck");inputs.each(function(input){var form=input.up("form");if(form){input.observe("click",function(e){elem=e.element();form.select("input.cuc").each(function(i){i.checked=elem.checked;});}.bindAsEventListener(this));}});},reset:function(form){var textareas=form.select("textarea");Form.reset(form);textareas.each(function(ta){if(ta.hasClassName("wysiwyg")&&typeof tinyMCE=="object"){var _id=ta.identify();var _ed=tinyMCE.get(_id);if(_ed){_ed.setContent(ta.value);}}});},empty:function(form){var textareas=form.select("textarea");textareas.each(function(ta){ta.value="";if(ta.hasClassName("wysiwyg")&&typeof tinyMCE=="object"){var _id=ta.identify();var _ed=tinyMCE.get(_id);if(_ed){_ed.setContent(ta.value);}}});Form.getInputs(form,"text").invoke("clear");},enable:function(el){if(el.tagName.toLowerCase()=="button"){el.disabled=false;try{return el;}finally{el=null;}}else{return el.enable();}},disable:function(el){if(el.tagName.toLowerCase()=="button"){el.disabled=true;try{return el;}finally{el=null;}}else{return el.disable();}},submit:function(e,options,params){options=options||{};params=params||{};Object.extend(params,{mode:"ajax"});Object.extend(options,{parameters:params,onLoading:this._loading.bind(this),onSuccess:this._success.bind(this),onFailure:this._error.bind(this),onException:this._error.bind(this)});var qry=this._form.request(options);qry=null;Event.stop(e);return false;},loading:function(form){form.addClassName("block");var div=new Element("div",{"class":"overlay-spinner"}).setOpacity("0.7");form.insert(div,{position:"top"});div.clonePosition(form);form.select("button").each(function(btn){Playray.Forms.disable(btn);});},success:function(json,form){if(form&&json.type!="refresh"&&json.type!="refresh-dialog"){form.select("button").each(function(btn){Playray.Forms.enable(btn);});var overlay=form.down("div.overlay-spinner");if(overlay){overlay.remove();}if(!json.result=="ok"){Form.reset(form);}}switch(json.type){case"dialog":Playray.Dialog.open(json.result,Playray.Dialog.parseMsgs(json.msg));break;case"refresh-dialog":case"refresh":document.location.href=decodeURIComponent(json.url);return false;break;case"removenode":if(!form){break;}var ec=form.up("*[class~=eventcontainer]");if(ec){ec.setStyle({zIndex:9999});Playray.Effects.puff(ec);}break;case"cancel":Playray.Modal.closeModal();$("modalOverlay").hide();break;}return true;},canSubmit:function(f){f=f||this._form;if(!f){return true;}if(typeof tinyMCE=="object"){var textareas=f.select("textarea.wysiwyg");textareas.each(function(ta){var _id=ta.identify();var _ed=tinyMCE.get(_id);if(_ed){ta.value=_ed.getContent();ta._wysiwyg=true;}});}var required=null;if(f["required-fields"]&&(required=Form.Element.getValue(f["required-fields"]))){required=$A(required.split(" "));var errors=new Array();var messages=new Array();required.each(function(fe){if(Form.Element.getValue(f[fe]).empty()){if(f[fe]._wysiwyg){_ed=tinyMCE.get(f[fe].id);el=$(_ed.editorContainer).down("table");}else{el=$(f[fe]);}Playray.Effects.pulsate(el);errors.push(fe);if(f["required-fields-messages-"+fe]){messages.push(Form.Element.getValue(f["required-fields-messages-"+fe]));}}});if(errors.length==0){return true;}if(messages.length>0){var ul=new Element("ul");messages.each(function(m){ul.insert(new Element("li").update(m));});if(ul&&ul.hasChildNodes()){Playray.Dialog.open("error",ul);}}return false;}return true;},_maxlength:function(e){var elem=e.element();var maxlength=parseInt(elem.getAttribute("maxlength"));var curlength=elem.value.length;if(curlength>maxlength){elem.value=elem.value.substring(0,maxlength);curlength=elem.value.length;if(!elem.restorecolor){elem.restorecolor=elem.getStyle("background-color");}Playray.Effects.highlight(elem,{startcolor:"#ffcccc"});}else{if(elem.restorecolor){elem.setStyle({backgroundColor:elem.restorecolor});}}if(elem._charsleft){elem._charsleft.update(maxlength-curlength);}},_checksubmit:function(e){var elem=e.element();if(this._button){this._form=elem;if(this._button.hasClassName("confirm")||this._button.hasClassName("ask")){this._dialog=this._button.hasClassName("ask")?Playray.Dialog.ask(e,this._button._msg):Playray.Dialog.confirm(e,this._button._msg);this._dialog.observe("Playray::proceed",this._handlers.get("submit"));this._dialog.observe("Playray::cancel",this._handlers.get("cancel"));e.stop();return false;}else{if(this._button.hasClassName("save")||this._button.hasClassName("submit")){if(this.canSubmit()){this._submit(e);}e.stop();return false;}else{if(this._button.hasClassName("savefile")){return true;}}}}return true;},_click:function(e){var elem=e.element();if(elem.type&&(elem.type=="submit"||elem.type=="image")){this._button=elem;}},_submit:function(e){var elem=e.element();if(this._form){var _name=this._button.name;switch(_name){case"delete":this.submit(e,null,{"delete":1});break;case"save":this.submit(e,null,{save:1});break;case"ignore":this.submit(e,null,{ignore:1});break;case"dismiss":this.submit(e,null,{dismiss:1});break;case"confirm":this.submit(e,null,{confirm:1});break;case"cancel":this.submit(e,null,{cancel:1});break;default:this.submit(e);break;}}e.stop();return false;},_loading:function(request){if(this._form){this.loading(this._form);}},_success:function(request){Playray.Dialog.close();try{if(request.responseText.match(/^\s*<!DOCTYPE/)){return this._error(request,{message:"Oops, an error occured. Please retry!"});}var json=request.responseText.evalJSON(true);if(this.success(json,this._form)){this._form.fire("Playray::formSuccess",json);}}catch(e){}this._dialog=null;},_error:function(request,error){if(this._form){this._form.select("button").each(function(btn){Playray.Forms.enable(btn);});var overlay=this._form.down("div.overlay-spinner");if(overlay){overlay.remove();}}if(error){Playray.Dialog.open("error",error.message);}else{if(request.status&&request.status!=200){Playray.Dialog.open("error",request.statusText);}}},_cancel:function(e){if(this._form){this._form.fire("Playray::cancelProceed");}}};Playray.Textareas={_textareas:[],init:function(searchNode){searchNode=searchNode||$(document.documentElement);var textareas=searchNode.select("textarea");if(!textareas){return;}textareas.each(function(textarea){this.initTextarea(textarea);}.bind(this));},initTextarea:function(textarea){if(textarea._inited){return;}var container=textarea.up("div.bbcode");if(container){var smileylist=$("smileylist");if(smileylist){smileylist.hide();smileylist.removeClassName("hidden");var smileys=smileylist.select(".smiley");smileys.each(function(smiley){smiley.observe("click",this.addBBCodeSmiley.bindAsEventListener(this,textarea,smileylist));}.bind(this));}}if(textarea.hasClassName("wysiwyg")&&typeof tinyMCE=="object"){if(textarea.hasClassName("fullwidth")){textarea.setStyle({width:"100%"});}var rows=textarea.getAttribute("rows")||4;var height=parseInt(rows)*15;textarea.setStyle({height:height+"px"});var editor=new tinymce.Editor(textarea.identify(),this._getoptions());editor.render();}else{if(container){var btncontainer=container.down("div.buttons");if(!btncontainer){return;}btncontainer.removeClassName("hidden");var btns=btncontainer.select("div.button");btns.each(function(btn){btn.observe("click",function(e){var search=btn.className.match(/bb\-(\w+)/);var action=(search[1])?search[1]:null;switch(action){case"bold":this.addBBCode(textarea,"[b]","[/b]");break;case"italics":this.addBBCode(textarea,"[i]","[/i]");break;case"underline":this.addBBCode(textarea,"[u]","[/u]");break;case"image":this.addBBCodeImage(textarea);break;case"url":this.addBBCodeURL(textarea);break;case"code":this.addBBCode(textarea,"[code]","[/code]");break;case"smiley":this.addSmiley(e,textarea,smileylist);}e.stop();return false;}.bindAsEventListener(this));}.bind(this));}}textarea._inited=true;},addBBCode:function(textarea,startTag,endTag){if(document.selection){textarea.focus();var sel=document.selection.createRange();sel.text=startTag+sel.text+endTag;}else{var len=textarea.value.length;var start=textarea.selectionStart;var end=textarea.selectionEnd;var scrollTop=textarea.scrollTop;var scrollLeft=textarea.scrollLeft;var sel=textarea.value.substring(start,end);var rep=startTag+sel+endTag;textarea.value=textarea.value.substring(0,start)+rep+textarea.value.substring(end,len);textarea.scrollTop=scrollTop;textarea.scrollLeft=scrollLeft;textarea.focus();}},addBBCodeURL:function(textarea){var url=prompt("Enter the URL:","http://");if(!url||url=="http://"){textarea.focus();return;}if(document.selection){textarea.focus();var sel=document.selection.createRange();sel.text=(sel.text=="")?"[url]"+url+"[/url]":"[url="+url+"]"+sel.text+"[/url]";}else{var len=textarea.value.length;var start=textarea.selectionStart;var end=textarea.selectionEnd;var scrollTop=textarea.scrollTop;var scrollLeft=textarea.scrollLeft;var sel=textarea.value.substring(start,end);var rep=(sel=="")?"[url]"+url+"[/url]":"[url="+url+"]"+sel+"[/url]";textarea.value=textarea.value.substring(0,start)+rep+textarea.value.substring(end,len);textarea.scrollTop=scrollTop;textarea.scrollLeft=scrollLeft;textarea.focus();}},addBBCodeImage:function(textarea){var url=prompt("Enter the image URL:","http://");if(!url||url=="http://"){textarea.focus();return;}if(document.selection){textarea.focus();var sel=document.selection.createRange();sel.text="[img]"+url+"[/img]";}else{var len=textarea.value.length;var start=textarea.selectionStart;var end=textarea.selectionEnd;var scrollTop=textarea.scrollTop;var scrollLeft=textarea.scrollLeft;var sel=textarea.value.substring(start,end);var rep="[img]"+url+"[/img]";textarea.value=textarea.value.substring(0,start)+rep+textarea.value.substring(end,len);textarea.scrollTop=scrollTop;textarea.scrollLeft=scrollLeft;textarea.focus();}},addBBCodeSmiley:function(e,textarea,smileylist){var elem=e.element();var code=elem.getAttribute("alt");if(document.selection){textarea.focus();var sel=(textarea._sel)?textarea._sel:document.selection.createRange();sel.text=code;}else{var len=textarea.value.length;var start=textarea.selectionStart;var end=textarea.selectionEnd;var scrollTop=textarea.scrollTop;var scrollLeft=textarea.scrollLeft;var sel=textarea.value.substring(start,end);var prev=(textarea.value.substring(start-1,start));var next=(textarea.value.substring(end,end+1));var rep=code;if(prev!=" "&&prev!=""){rep=" "+code;}if(next!=" "){rep+=" ";}textarea.value=textarea.value.substring(0,start)+rep+textarea.value.substring(end,len);textarea.scrollTop=scrollTop;textarea.scrollLeft=scrollLeft;textarea.focus();}Playray.Effects.fade(smileylist);},deinitTextarea:function(textarea){if(textarea.hasClassName("wysiwyg")&&typeof tinyMCE=="object"){tinyMCE.execCommand("mceRemoveControl",false,textarea.identify());}},setFocus:function(textarea){if(textarea.hasClassName("wysiwyg")&&typeof tinyMCE=="object"){var _ed=tinyMCE.get(textarea.identify());if(_ed){_ed.focus();}else{Form.Element.focus(textarea);}}else{Form.Element.focus(textarea);}},addImage:function(e,ed){},addSmiley:function(e,ed,smileylist){var elem=e.findElement("div.button");var pos=elem.cumulativeOffset();var smileylist=smileylist||elem.up("div.bbcode").down("div.smileys");if(!smileylist){return;}if(!smileylist.visible()){smileylist.setStyle({position:"absolute",zIndex:500,left:(pos.left-Math.floor(smileylist.getWidth()/2)+elem.getWidth())+"px",top:(pos.top-smileylist.getHeight())+"px",width:"auto",height:"auto"});Playray.Effects.appear(smileylist);if(Playray.Browser.isIE){var textarea=elem.up("div.bbcode").down("textarea");textarea.focus();var sel=document.selection.createRange();textarea._sel=sel;}document.observe("click",function(e){if(!Event.element(e).up(".yellowbox")){e.stop();Playray.Effects.fade(smileylist);document.stopObserving("click");}}.bind(this));}else{Playray.Effects.fade(smileylist);document.stopObserving("click");}},_getoptions:function(options){options=options||{};options=Object.extend({theme:"advanced",skin:"playray",mode:"none",plugins:"bbcode",theme_advanced_buttons1:"bold,italic,underline,forecolor,primage,prsmiley,separator,undo,redo,link,unlink,removeformat,cleanup",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"bottom",theme_advanced_toolbar_align:"center",theme_advanced_more_colors:false,entity_encoding:"raw",add_unload_trigger:false,remove_linebreaks:false,inline_styles:false,content_css:Playray.Config.FileServer+"/themes/global-editor.css",convert_fonts_to_spans:false,setup:function(ed){ed.addButton("prsmiley",{title:"Add smiley","class":"btn-smiley",onclick:function(e){Playray.Textareas.addSmiley(e,ed);}});ed.addButton("primage",{title:"Add image","class":"btn-image",onclick:function(e){Playray.Textareas.addImage(e,ed);}});}},options);try{return options;}finally{options=null;}}};Playray.Dialog={_containerId:"modalDialog",_container:null,_dialog:null,_event:null,_handlers:null,_options:{},_active:null,init:function(){var data=$("json_data");if(data){var json=data.innerHTML.toString().evalJSON();if(typeof json=="object"){Playray.Dialog.open(json.result,Playray.Dialog.parseMsgs(json.msg));}}},confirm:function(e,msg){this._event=e;return this.open("confirm",msg);},ask:function(e,msg){this._event=e;return this.open("ask",msg);},open:function(type,msg,options){var options=options||{};this._options=Object.extend({dropshadow:true,showbuttons:true,transparent:false,style:{width:"auto",height:"auto"}},options);this._container=$(this._containerId);if(Playray.Modal._modalActive){Playray.Modal.closeModal();}Playray.Modal.toggleSpinner(false);Playray.Modal.toggle(this._container,true);if(this._options.transparent){Playray.Modal.clearFade();}if(msg){this._container.down("div.msg").update(msg);}this._container.removeClassName("hidden");Position.center(this._container);this._dialog=this._container.down("div.box");if(this._dialog){if(this._options.style&&typeof this._options.style=="object"){this._dialog.setStyle(options.style);}if(this._handlers==null){this._handlers=$H({close:this.close.bindAsEventListener(this),cancel:this.cancel.bindAsEventListener(this),proceed:this.proceed.bindAsEventListener(this)});this.addBehaviours();}this._dialog.getElementsBySelector(".btns").each(function(btn){btn.addClassName("hidden");});this._dialog.addClassName(type);this._dialog.down("div.icons").getElementsBySelector("img").each(function(img){img.addClassName("hidden");});switch(type){case"confirm":if(this._options.showbuttons){this._dialog.down("div.confirm_buttons").removeClassName("hidden");}this._dialog.down("img.icon-confirm").removeClassName("hidden");break;case"ask":if(this._options.showbuttons){this._dialog.down("div.ask_buttons").removeClassName("hidden");}this._dialog.down("img.icon-confirm").removeClassName("hidden");break;case"success":case"ok":if(this._options.showbuttons){this._dialog.down("div.ok_buttons").removeClassName("hidden");}this._dialog.down("img.icon-success").removeClassName("hidden");break;case"error":if(this._options.showbuttons){this._dialog.down("div.ok_buttons").removeClassName("hidden");}this._dialog.down("img.icon-error").removeClassName("hidden");break;}if(this._options.dropshadow){Playray.DropShadow.add(this._dialog);}this.enable();this._active=true;return this._dialog;}return null;},close:function(e){if(this._container&&this._active){this._container.addClassName("hidden");if(Playray.Modal.isActive()){Playray.Modal.toggle(this._container,false);}Playray.Layout.Overlay.close();if(this._options.onClose&&typeof this._options.onClose=="function"){this._options.onClose();}}if(e){e.stop();var elem=e.findElement("button");if(elem){elem.fire("Playray::close");}}this._active=false;this._dialog=null;},cancel:function(e){var elem=e.findElement("button");if(elem){elem.fire("Playray::cancel");}this.close(e);},proceed:function(e){var elem=e.findElement("button");if(elem){elem.fire("Playray::proceed");}this.disable();e.stop();},disable:function(){this._container.select("button").each(function(btn){Form.Element.disable(btn);});},enable:function(){this._container.select("button").each(function(btn){Form.Element.enable(btn);});},loading:function(){},parseMsgs:function(msg){var msgs=$H(msg);var ul=new Element("ul",{"class":"nolist"});msgs.keys().each(function(key){var type=msgs.get(key);if(typeof type=="object"){type.each(function(msg){var li=new Element("li",{"class":key}).update(msg);ul.insert({bottom:li});});}else{if(typeof type=="string"){var li=new Element("li",{"class":key}).update(type);ul.insert({bottom:li});}}});return ul;},isActive:function(){return this._active;},addBehaviours:function(){var closeBtns=this._dialog.getElementsBySelector(".close");if(closeBtns){closeBtns.each(function(btn){btn.observe("click",this._handlers.get("close"));}.bind(this));}var proceedBtns=this._dialog.getElementsBySelector(".proceed");if(proceedBtns){proceedBtns.each(function(btn){btn.observe("click",this._handlers.get("proceed"));}.bind(this));}var cancelBtns=this._dialog.getElementsBySelector(".cancel");if(cancelBtns){cancelBtns.each(function(btn){btn.observe("click",this._handlers.get("cancel"));}.bind(this));}}};Playray.Dropdowns={_selector:".dropdown-container",_dropdown:null,init:function(){$$(this._selector).each(function(el){var dropdown=el.down(".dropdown");dropdown.identify();dropdown.descendants().each(function(c){c._dropdown=true;});var triggers=el.select(".trigger");triggers.each(function(t){t.observe("click",this.toggle.bindAsEventListener(this,dropdown));}.bind(this));}.bind(this));$(document.documentElement).observe("click",this.click.bindAsEventListener(this));},toggle:function(e,dropdown){var box=dropdown.up("div.box");if(Object.isElement(this._dropdown)&&this._dropdown._opened){var _fx=new Effect.SlideUp(this._dropdown,{duration:0.2,afterFinish:function(){this._dropdown._opened=false;this._dropdown=null;Playray.Layout.Shim.close(this._dropdown);}.bind(this)});}if(dropdown._opened){var fx=new Effect.SlideUp(dropdown,{duration:0.2,afterFinish:function(){dropdown._opened=false;this._dropdown=null;Playray.Layout.Shim.close(dropdown);}.bind(this)});}else{var fx=new Effect.SlideDown(dropdown,{duration:0.2,afterFinish:function(){dropdown._opened=true;dropdown.setStyle({height:"auto"});this._dropdown=dropdown;Playray.Layout.Shim.open(dropdown,{top:15,left:-7});}.bind(this)});}e.stop();return false;},click:function(e){var elem=e.element();if(Object.isElement(this._dropdown)&&!elem.hasClassName("trigger")&&elem._dropdown!=true){this.hide();}},hide:function(){if(this._dropdown){this._dropdown._opened=false;this._dropdown.hide();Playray.Layout.Shim.close(this._dropdown);}}};Playray.AutoComplete={_containerId:"autocomplete-container",_container:null,_input:null,_handlers:null,_data:[],_minimumCharacters:3,_hilite:-1,_timer:null,_previousValue:null,init:function(searchNode){searchNode=searchNode||$(document.documentElement);inputs=searchNode.select("input.autocomplete-users, input.autocomplete-clans");this._container=$(this._containerId);if(!this._container){this._container=$(document.documentElement).insert({bottom:new Element("div",{id:this._containerId})});}this._handlers=$H({focus:this.setFocused.bindAsEventListener(this),blur:this.unsetFocused.bindAsEventListener(this),keypress:this.getKeyPress.bindAsEventListener(this),select:this.setInputValue.bindAsEventListener(this)}),inputs.each(function(input,count){type=input.className.toString().match(/autocomplete-([a-z]+)/);if(type[1]){input.observe("focus",this._handlers.get("focus"));input.observe("blur",this._handlers.get("blur"));input.observe("keyup",this._handlers.get("keypress"));input.observe("keydown",this._handlers.get("keypress"));input.setAttribute("autocomplete","off");input._type=type[1];input._index=count;}}.bind(this));},setFocused:function(e){this._input=e.findElement("input");this._container.clonePosition(this._input,{offsetTop:this._input.getHeight()+3});this._container.setStyle({height:"auto"});},unsetFocused:function(e){this.hideContainer();},showContainer:function(e){this._container.addClassName("show");this._input._acActive=true;},hideContainer:function(e){this._container.removeClassName("show");this._input._acActive=false;},setInputValue:function(e){if(this._data.length<=0){return;}if(e){this._hilite=e.element().index;}if(this._hilite>-1){this._input.value=this._data[this._hilite].firstChild.nodeValue;this._input.fire("Playray::acSelected");}this._hilite=-1;},getData:function(qs){this._input._acInProgress=true;var params="type="+this._input._type+"&qs="+qs+"&qslen="+this._minimumCharacters;var qry=new Ajax.Request("/q/get_aclist",{method:"get",parameters:params,onLoading:this._loading.bind(this),onSuccess:this._success.bind(this)});qry=null;},getKeyPress:function(e){var code=e.which||e.keyCode;var type=e.type;if(type=="keyup"){switch(code){case Event.KEY_UP:this._hilitePrevItem();break;case Event.KEY_DOWN:this._hiliteNextItem();break;case Event.KEY_ESC:this.hideContainer();break;default:this.doSearch(e);break;case Event.KEY_RETURN:case Event.KEY_TAB:if(this._container.hasClassName("show")){this.input.focus();Event.stop(e);return false;}else{return true;}break;}}else{if(type=="keydown"){switch(code){case Event.KEY_TAB:if(!this._container.hasClassName("show")){return true;}case Event.KEY_RETURN:this.setInputValue();this.hideContainer();if(this._timer){clearTimeout(this._timer);}Event.stop(e);return false;break;}}}},doSearch:function(e){if(this._timer){clearTimeout(this._timer);}if(this._input.value.length>=this._minimumCharacters){if(this._input.value!=this._previousValue){this._timer=setTimeout(function(){this._hilite=-1;this.getData(this._input.value);}.bind(this),300);}}else{this.hideContainer();}this._previousValue=this._input.value;},_hiliteNextItem:function(){if(this._data.length<=0){return;}if(this._hilite>-1){Element.removeClassName(this._data[this._hilite],"hover");}this._hilite++;if(this._hilite>=this._data.length){this._hilite=0;}Element.addClassName(this._data[this._hilite],"hover");},_hilitePrevItem:function(){if(this._data.length<=0){return;}if(this._hilite>-1){Element.removeClassName(this._data[this._hilite],"hover");}this._hilite--;if(this._hilite<0){this._hilite=this._data.length-1;}Element.addClassName(this._data[this._hilite],"hover");},_loading:function(){this._input.addClassName("spinner");},_success:function(request){var response=request.responseXML.getElementsByTagName("aclist");if(response==null||response.length!=1){return;}this._clearContainer();for(var i=0;i<response[0].childNodes.length;i++){var elem=response[0].childNodes[i];if(elem.nodeType!=1){continue;}if(elem.nodeName=="acitem"&&elem.firstChild){this._addContainerNode(elem.firstChild.nodeValue,i);}}this._data=this._container.getElementsByTagName("div");if(this._data.length>0){this.showContainer();}else{this.hideContainer();}this._input.removeClassName("spinner");this._input._acInProgress=false;},_addContainerNode:function(value,index){var div=new Element("div").update(value);div.onmouseover=function(){Element.addClassName(this,"hover");};div.onmouseout=function(){Element.removeClassName(this,"hover");};div.onmousedown=this._handlers.get("select");div.index=index;this._container.insert({bottom:div});div=null;},_clearContainer:function(){this._container.update("");}};Playray.Layout={init:function(){if(typeof this.DragAndDrop=="object"){this.DragAndDrop.init();}if(!$("sectionid")){document.body.appendChild(new Element("div",{id:"sectionid","playray:section":"null","playray:theme":"","playray:bg":""}));}Playray.timer("Layout.Customizable.init()");this.Customizable.init();Playray.timer("Layout.Closables.init()");this.Closables.init();Playray.timer("Layout.Tabbed.init()");this.Tabbed.init();Playray.timer("Layout.Theme.init()");this.Theme.init();Playray.timer("Layout.Updater.init()");this.Updater.init();Playray.timer("Layout.populate()");this.populate();Playray.timer("Layout.checkResolution()");this.checkResolution();Playray.timer();},checkResolution:function(node){node=node||$(document.body);var func=screen.width<1280?"removeClassName":"addClassName";node.select(".w1024").invoke(func,"hidden");},populate:function(pos){var cols=$$("div.col1, div.col2, div.col3, div.col12, div.col23");if(!cols){return;}var section=$("sectionid").getAttribute("playray:section");if(!section){return null;}var theme=$("sectionid").getAttribute("playray:theme")||null;var bg=$("sectionid").getAttribute("playray:bg")||null;var data=$H();if(!pos||pos.match(/rel/i)){if(theme){data.set("theme",{theme:theme});}if(bg){data.set("bg",{theme:bg});}var c=1;cols.each(function(col){var r=1;boxes=col.select("div.box").each(function(box){if(!box.id||box.className.toString().match(/preview/i)){return;}var vis=box.getAttribute("playray:vis")||"max";var theme=box.getAttribute("playray:theme")||null;if(box.hasClassName("hidden")){vis="hidden";}var o=box.hasClassName("draggable")?{box:box.id,pos:"rel",x:c,y:r,vis:vis,theme:theme}:{theme:theme};data.set(box.id,o);r++;});c++;});}if(!pos||pos.match(/abs/i)){$$("div.gadget").each(function(gadget){var o=gadget.down(".gadgetElement");if(!o){return;}var pos={left:gadget.getStyle("left"),top:gadget.getStyle("top")};var vis=gadget.getAttribute("playray:vis")||"max";if(gadget.hasClassName("hidden")){vis="hidden";}data.set(gadget.getAttribute("playray:label")+"-"+gadget.getAttribute("playray:id"),{id:gadget.getAttribute("playray:id"),pos:"abs",vis:vis,x:parseInt(pos.left),y:parseInt(pos.top)});});}var combined=$H();combined.set(section,data);return combined;},save:function(callback,pos){if(typeof pos=="undefined"&&typeof callback=="string"){pos=callback;callback=null;}var data=this.populate(pos);if(data){data=data.toJSON();if(data==this._prevData){return;}this._prevData=data;var qry=new Ajax.Request("/q/mypage/pos/save",{method:"post",parameters:{pos:data},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}if(typeof callback=="function"){callback();}}.bind(this)});qry=null;}},unhide:function(id,label,callback,section){var section=section||$("sectionid").getAttribute("playray:section");if(!section){return null;}this._prevData=null;if(Playray.Gadgets.nVisible<Playray.Config.MaxGadgetsVisible){var qry=new Ajax.Request("/q/mypage/pos/unhide",{method:"post",parameters:{section:section,label:label,id:id,pos:"abs",vis:"max",x:425,y:50},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}if(typeof callback=="function"){callback();}}.bind(this)});}},handleError:function(res,params){if(res.ok||!res.error){return;}if(res.error=="session"){Playray.Navigate((document.location.toString().match(/\?/)?"&":"?")+"login=1");}else{var d=Playray.Dialog.open("error",res.msg||res.error);if(params.onClose){d.stopObserving("Playray::close");d.observe("Playray::close",params.onClose);}}},setDefault:function(type,label,callback){if(label&&type){if(type=="theme"){this.Customizable.customizableBoxes.each(function(box){Playray.SiteShop._replaceTheme(label,box,true);}.bind(this));}else{Playray.SiteShop._replaceBg(label);}$("sectionid").setAttribute("playray:"+type,label);if(typeof callback=="function"){callback();}}},setDefaultAll:function(type,label,section,callback){var target=section?section+"/"+type:type;var qry=new Ajax.Request("/q/mypage/pos/default/"+target,{method:"post",parameters:{label:label},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}this.setDefault(type,label,callback);}.bind(this)});qry=null;},setDefaultsFromSkin:function(aid,callback){var qry=new Ajax.Request("/q/mypage/pos/default",{method:"post",parameters:{aid:aid},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}if(typeof callback=="function"){callback();}}.bind(this)});qry=null;}};Playray.Layout.Customizable={_handlers:null,target:null,minimizable:"div.box.minimizable",customizable:"div.box.customizable",closable:"div.box.closable",customize:null,itemCounts:{},init:function(){if(!Playray.LoggedIn){return;}this._handlers=$H({hideElement:this.hideElement.bindAsEventListener(this),customizeBox:this.customizeBox.bindAsEventListener(this)});this.minimizableBoxes=$$(this.minimizable);if(this.minimizableBoxes){this.minimizableBoxes.each(function(box){var header=box.down("div.title");if(!header){return;}var img=new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png","class":"icon-15 rcicon hide hover tooltip",title:Playray.L10n.Shop.HideBox,alt:"",border:0});img.observe("click",this._handlers.get("hideElement"));header.insert(img);if(Playray.Browser.isIE6x){var _timer=null;img.observe("mouseover",function(e){img.addClassName("ie6hover_hide");});header.observe("mouseover",function(e){img.addClassName("ie6hover_hide");e.stop();});header.observe("mouseout",function(e){img.removeClassName("ie6hover_hide");e.stop();});}}.bind(this));}this.closableBoxes=$$(this.closable);if(this.closableBoxes){this.closableBoxes.each(function(box){var header=box.down("div.title");if(!header){return;}var img=new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png","class":"icon-15 rcicon hide hover tooltip",title:Playray.L10n.Shop.CloseBox,alt:"",border:0});img.observe("click",function(e){var fx=new Effect.SwitchOff(box);}.bindAsEventListener(this));header.insert(img);if(Playray.Browser.isIE6x){var _timer=null;img.observe("mouseover",function(e){img.addClassName("ie6hover_hide");});header.observe("mouseover",function(e){img.addClassName("ie6hover_hide");e.stop();});header.observe("mouseout",function(e){img.removeClassName("ie6hover_hide");e.stop();});}}.bind(this));}this.customizableBoxes=$$(this.customizable);if(this.customizableBoxes){this.customizableBoxes.each(function(box){var header=box.down("div.title");var extraclass=box.id=="box_character"?"hidetags":"";if(!header){return;}var img=new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png","class":"icon-15 rcicon2 customize hover tooltip "+extraclass,title:Playray.L10n.Shop.CustomizeBox,alt:"",border:0});img.observe("click",this._handlers.get("customizeBox"));header.insert(img);if(Playray.Browser.isIE6x){var _timer=null;img.observe("mouseover",function(e){img.addClassName("ie6hover_customize");});header.observe("mouseover",function(e){img.addClassName("ie6hover_customize");e.stop();});header.observe("mouseout",function(e){img.removeClassName("ie6hover_customize");e.stop();});}}.bind(this));}this.customizeBtn=$("customizeBtn");if(this.customizeBtn){this.customizeBtn.observe("click",this.customizePage.bindAsEventListener(this));this.customize=new Playray.ModalBox("customize",null,{onClose:this.reset.bind(this)});this.checkCustomize();this.boxEl=this.customize.container.down("*[rel=box]");if(this.boxEl){this.boxEl.hide();this.boxEl.removeClassName("hidden");}this.pageEl=this.customize.container.down("*[rel=page]");if(this.pageEl){this.pageEl.hide();this.pageEl.removeClassName("hidden");}}},reset:function(e,callback){if(this.customize){this.customize.container.select(".shadow").invoke("hide");if(!callback){this.customize.hide();}}Playray.SiteShop.reset();this.checkCustomize();},checkCustomize:function(){if(!this.customize||!($("themeAllItems")&&$("themeItems")&&$("bgItems")&&$("hiddenItems"))){return;}this.themeAllItems=$("themeAllItems").down(".items").childElements();this.themeItems=$("themeItems").down(".items").childElements();this.bgItems=$("bgItems").down(".items").childElements();this.hiddenItems=$("hiddenItems").down(".items").childElements();if(this.themeAllItems.length>2||this.bgItems.length>2||this.hiddenItems.length>1){if(!(this.themeAllItems.length>2)){$("themeAllItems").hide();}else{$("themeAllItems").show();}if(!(this.bgItems.length>2)){$("bgItems").hide();}else{$("bgItems").show();}if(!(this.hiddenItems.length>1)){$("hiddenItems").hide();}else{$("hiddenItems").show();}this.customizeBtn.removeClassName("hidden");}else{this.customizeBtn.addClassName("hidden");}},customizeBox:function(e,close){var close=close||false;if(close){document.stopObserving("click");Playray.SiteShop.reset();return;}var items=$("themeItems").down(".items").childElements();if(!(items.length>1)){Playray.SiteShop.open(e);e.stop();return;}this.target=e.findElement("div.box")||null;var currentTheme=this.target.getAttribute("playray:theme");if(currentTheme){Playray.SiteShop._replaceTheme(currentTheme,this.boxEl);}else{Playray.SiteShop.resetTheme();}items.each(function(el){if(el.getAttribute("playray:label")==currentTheme){el.addClassName("faded");}else{el.removeClassName("faded");}}.bind(this));this.boxEl.show();this.customize.magnet(Event.element(e),{offsetLeft:-320,offsetTop:-145});this.customize.show(e,{appear:false});var defaultTheme=$("sectionid").getAttribute("playray:theme")||null;if(defaultTheme){var btn=this.boxEl.down("img[rel~=reset]");btn.stopObserving("click");btn.observe("click",function(e){e.stop();var section=$("sectionid").getAttribute("playray:section")||"mypage";var box=this.target.id;new Ajax.Request("/q/mypage/pos/reset/"+section+(box?"/"+box:""),{method:"post",parameters:{current:this.target.getAttribute("playray:theme")||defaultTheme},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}var newTheme=res.theme||defaultTheme;Playray.SiteShop._replaceTheme(newTheme,this.target,true);if($F("allboxes")){Playray.Layout.setDefaultAll("theme",newTheme);$("allboxes").checked=false;}this.reset(e);}.bind(this)});}.bindAsEventListener(this));}},customizePage:function(e,close){var close=close||false;if(close){document.stopObserving("click");Playray.SiteShop.reset();}this.pageEl.show();this.customize.magnet(Event.element(e),{offsetLeft:-280,offsetTop:-145});this.customize.show(e,{appear:false});Playray.SiteShop.resetTheme();var section=$("sectionid").getAttribute("playray:section")||"mypage";var defaultBg=$("sectionid").getAttribute("playray:bg")||null;var defaultTheme=$("sectionid").getAttribute("playray:theme")||null;if(defaultBg||defaultTheme){this.themeAllItems.each(function(el){if(el.getAttribute("playray:theme")==defaultTheme){el.addClassName("faded");}else{el.removeClassName("faded");}}.bind(this));this.bgItems.each(function(el){if(el.getAttribute("playray:label")==defaultBg){el.addClassName("faded");}else{el.removeClassName("faded");}}.bind(this));var btn=this.pageEl.down("img[rel~=resetbg]");btn.stopObserving("click");btn.observe("click",function(e){e.stop();var qry=new Ajax.Request("/q/mypage/pos/reset/"+section+"/bg",{parameters:{current:defaultBg},method:"post",requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}var newBg=res.theme||defaultBg;Playray.SiteShop._replaceBg(newBg);if($F("allpages")){Playray.Layout.setDefaultAll("bg",newBg);$("allpages").checked=false;}this.reset(e);}.bind(this)});qry=null;}.bindAsEventListener(this));var btn=this.pageEl.down("img[rel~=resettheme]");btn.stopObserving("click");btn.observe("click",function(e){e.stop();var section=$("sectionid").getAttribute("playray:section")||"mypage";new Ajax.Request("/q/mypage/pos/reset/"+section+"/theme",{method:"post",parameters:{current:defaultTheme},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){return this.handleError(res);}var newTheme=res.theme||defaultTheme;if($F("allthemes")){Playray.Layout.setDefaultAll("theme",newTheme);$("allthemes").checked=false;}else{Playray.Layout.setDefault("theme",newTheme);}this.reset(e);}.bind(this)});qry=null;}.bindAsEventListener(this));}},applyTheme:function(e,setDefaultAll,callback){if(typeof e=="string"){var label=e,setDefault=setDefaultAll=setDefaultAll||false;applyBoxes=this.customizableBoxes;}else{var eSrc=Event.element(e);if(!eSrc.getAttribute("playray:label")){eSrc=eSrc.up(".item");if(!eSrc.getAttribute("playray:label")){return;}}var label=eSrc.getAttribute("playray:label");var setDefault,applyBoxes;if(eSrc.id.toString().match(/^themeall-/)){applyBoxes=this.customizableBoxes;setDefault=true;setDefaultAll=$F("allthemes");$("allthemes").checked=false;}else{applyBoxes=$F("allboxes")?this.customizableBoxes:$A([this.target]);$("allboxes").checked=false;}}applyBoxes.each(function(el){Playray.SiteShop._replaceTheme(label,el,true);});if(setDefault){$("sectionid").setAttribute("playray:theme",label);var section=setDefaultAll?null:$("sectionid").getAttribute("playray:section");Playray.Layout.setDefaultAll("theme",label,section);}else{Playray.Layout.save("rel");}this.reset(e);if(typeof callback=="function"){callback();}},applyBg:function(e,setDefaultAll,callback){if(typeof e=="string"){var label=e,setDefaultAll=setDefaultAll||false;}else{var eSrc=Event.element(e);if(!eSrc.getAttribute("playray:label")){eSrc=eSrc.up(".item");if(!eSrc.getAttribute("playray:label")){return;}}var label=eSrc.getAttribute("playray:label");setDefaultAll=$F("allpages");if(setDefaultAll){$("allpages").checked=false;}}Playray.SiteShop._replaceBg(label);if(setDefaultAll){Playray.Layout.setDefaultAll("bg",label);}Playray.Layout.save("rel");this.reset(e);if(typeof callback=="function"){callback();}},applyHidden:function(e,id,label,callback){if(typeof e=="string"){var type=e;}else{var eSrc=Event.element(e);var type=eSrc.getAttribute("playray:type"),id=eSrc.getAttribute("playray:id");if(type=="gadget"){label=eSrc.getAttribute("playray:label");}}if(!type||!id){return;}if(type=="gadget"){Playray.Layout.unhide(id,label,function(){Playray.Gadgets.unhide(id);this.removeHidden(id);}.bind(this));}else{var el=$(id);if(el){el.setAttribute("playray:vis","max");el.hide();el.removeClassName("hidden");Playray.Effects.appear(el);}Playray.Layout.save();this.removeHidden(id);}if(typeof callback=="function"){callback();}},hideElement:function(e){var el=e.findElement(".box, .gadget");el.setAttribute("playray:vis","hidden");var fx=new Effect.SwitchOff(el);if(el.hasClassName("gadget")){this.addHiddenGadget(el.getAttribute("playray:label"),el.getAttribute("playray:id"),el.getAttribute("playray:name"));Playray.Layout.save("abs");}else{this.addHiddenBox(el.id,el.getAttribute("playray:label"));Playray.Layout.save("rel");}this.checkCustomize();if(!this._pulsating){this._pulsating=setTimeout(function(){Playray.Effects.pulsate($("customizeBtn"));},750);}},removeHidden:function(id){this._remove($("hiddenItems"),id);},_remove:function(el,id){if(!el||!el.down(".items")){return;}el.down(".items").childElements().each(function(el){if(el.getAttribute("playray:id")==id){el.remove();}}.bind(this));this.reset();},addTheme:function(label,name,desc){var item=this._add($("themeItems"),this.applyTheme.bindAsEventListener(this),label,label,name,desc,"theme");if(item){item.src=_(item.getAttribute("playray:src"),label);}var item=this._add($("themeAllItems"),this.applyTheme.bindAsEventListener(this,true),label,label,name,desc,"themeAll");if(item){item.src=_(item.getAttribute("playray:src"),label);}},addBg:function(label,name,desc){var item=this._add($("bgItems"),this.applyBg.bindAsEventListener(this),label,label,name,desc,"bg");if(item){item.src=Playray.Config.FileServer+"/themes/"+label+"/"+label+"_60_bg.png";}},addHiddenBox:function(label,name,desc){var item=this._add($("hiddenItems"),this.applyHidden.bindAsEventListener(this),label,label,name,desc,"box");if(item&&$(label)){var orig=$(label).down("div.title img.icon");item.className+=" "+orig.className;item.src=orig.src;if(!label||!name||label==name){var name=$(label).down("div.title h2");if(name&&name!=""){item.setAttribute("playray:name",name.innerHTML);item.setAttribute("title",name.innerHTML);}}}},addHiddenGadget:function(label,id,name,desc){var item=this._add($("hiddenItems"),this.applyHidden.bindAsEventListener(this),label,id,name,desc,"gadget");if(item){item.src=_("%1/gadgets/%2/%2_30.png",Playray.Config.FileServer,label);}},_add:function(el,clickFunc,label,id,name,desc,type){var name=name||"";var desc=desc||"";if(!el||!el.down(".items *[rel=proto]")){return;}var item=el.down("*[rel=proto]").cloneNode(true);Element.extend(item);item.setAttribute("rel",null);item.removeClassName("hidden");item.setAttribute("playray:id",id);item.setAttribute("playray:label",label);item.setAttribute("playray:name",name);item.setAttribute("playray:type",type);item.setAttribute("title",name);if(desc){item.setAttribute("playray:description",desc);}var container=el.down("div.items");if(container){if(!this.itemCounts[type]){this.itemCounts[type]=0;}this.itemCounts[type]++;if(this.itemCounts[type]>16){container.setStyle({overflow:"auto",height:"90px"});}item.id=_(item.id,this.itemCounts[type]);item.stopObserving("click");item.observe("click",clickFunc);container.insert({bottom:item});this.checkCustomize();return item;}return null;}};Playray.Layout.DragAndDrop={placeholder:null,target:null,_cols:null,_lasts:null,_pos:null,_prevpos:null,_size:null,_ref:null,_droppable:null,init:function(){var boxes=$$("div.box.draggable");if(boxes){this.placeholder=new Element("div",{"class":"box-placeholder"});this.target=new Element("div",{"class":"box-target"});boxes.each(function(box){new Draggable(box,{scroll:window,onStart:this._start.bind(this),onDrag:this._drag.bind(this),onEnd:this._end.bind(this),handle:"title"});}.bind(this));}var droppables=$$("div.droppable");droppables.each(function(d){Droppables.add(d,{accept:"box",onHover:this._hover.bind(this),onDrop:this._drop.bind(this)});}.bind(this));this._cols=$$("div.col1","div.col2","div.col3");this._lasts=$$("div.col1 div.droppable.last","div.col2 div.droppable.last","div.col3 div.droppable.last");if(this._cols.length==3&&this._lasts.length==3){this._lasts.invoke("identify");this._recalculate();}},_recalculate:function(){this._lasts.invoke("setStyle",{height:"20px"});var maxHeight=this._cols.max(function(col){return col.getHeight();});this._cols.each(function(col,n){var last=this._lasts[n];if(last){var lastHeight=(col.getHeight()<maxHeight)?maxHeight-col.getHeight():20;last.setStyle({height:lastHeight+"px"});}}.bind(this));},_start:function(draggable,e){var elem=$(draggable.element);this._size=elem.getDimensions();this.placeholder.setStyle({width:(this._size.width-2)+"px",height:(this._size.height-2)+"px",zIndex:10});elem.absolutize();elem.insert({before:this.placeholder});},_drag:function(draggable,e){if(this._droppable&&e){var elem=$(draggable.element);var droppableOffset=this._droppable.cumulativeOffset();var droppableMidpoint=droppableOffset.top+parseInt(this._droppable.getHeight()/2);var topEdge=e.pointerY()-draggable.offset[1];var bottomEdge=e.pointerY()-draggable.offset[1]+elem.getHeight();this._pos=(topEdge<droppableMidpoint)?"before":"after";}},_end:function(draggable,e){var elem=$(draggable.element);elem.setStyle({position:"relative",top:"auto",left:"auto",height:"auto"});this.placeholder=this.placeholder.remove();if(this.target.up("div")){this._drop(elem,null,e);}this._prevPos=null;this._ref=null;this._recalculate();if(e){e.stop();}},_hover:function(draggable,droppable,overlap){this._droppable=droppable;if(this._pos){if(droppable.id!=this._ref||this._prevPos!=this._pos){if(this._droppable.hasClassName("last")){this._pos="before";}switch(this._pos){case"before":droppable.insert({before:this.target});break;case"after":droppable.insert({after:this.target});break;}this.placeholder.hide();this.target.setStyle({width:(this._size.width-2)+"px",height:(this._size.height-2)+"px",zIndex:10});Droppables.add(this.target,{onDrop:this._drop.bind(this)});this._ref=droppable.id;this._prevPos=this._pos;this._recalculate();}}},_drop:function(draggable,droppable,e){if(this.target&&!draggable.hasClassName("modalContent")){Droppables.remove(this.target);this.target=this.target.replace(draggable);draggable.setStyle({top:"auto",left:"auto"});Playray.Layout.save("rel");}if(e){e.stop();}}};Playray.Layout.Closables={closables:"div.closable",_fx:null,init:function(){var closables=$$(this.closables);closables.each(function(el){if(el.hasClassName("box")||Playray.getCookie("closables_"+el.identify())){return;}el.hide();el.removeClassName("hidden");var img=new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/icons/15x15/close.png","class":"icon-15 rcicon hover tooltip",title:Playray.L10n.Shop.HideBox,alt:"",border:0});img.observe("click",this.close.bindAsEventListener(this,el));el.insert(img);var t=el.className.match(/tail-(\w+)/);if(t&&t[1]){var div=new Element("div",{"class":"tail tail-"+t[1]});switch(t[1]){case"up":el.addClassName("up");el.addClassName("bottomspacer");break;}el.insert({top:div});Playray.Effects.appear(el,0.7);if(el.hasClassName("pulsate")){this._fx=new Effect.Pulsate(el,{duration:30,pulses:50,from:0.7,queu:"end"});el.observe("mouseover",function(e){if(typeof this._fx=="object"){this._fx.cancel();}el.setStyle({opacity:1});}.bindAsEventListener(this));}}if(Playray.Browser.isIE6x){img.observe("mouseover",function(e){img.addClassName("ie6hover_customize");});el.observe("mouseover",function(e){img.addClassName("ie6hover_customize");e.stop();});el.observe("mouseout",function(e){img.removeClassName("ie6hover_customize");e.stop();});}}.bind(this));},close:function(e,el){var fx=new Effect.SwitchOff(el);Playray.setCookie("closables_"+el.identify(),1,30);e.stop();}};Playray.Layout.Gifts={open:function(id){var qry=new Ajax.Request("/q/mypage/gifts/open",{method:"post",parameters:{id:id},requestHeaders:{Accept:"application/json"},onComplete:function(res){var res=res.responseText.evalJSON()||{};if(!res.ok||res.ok=="false"){Playray.Reload();return;}if(res.type=="theme"){Playray.Layout.Customizable.addTheme(res.label,res.name,res.description);}else{if(res.type=="bg"){Playray.Layout.Customizable.addBg(res.label,res.name,res.description);}else{if(res.type=="gadget"){Playray.Layout.Customizable.addHiddenGadget(res.label,res.bought_id,res.name,res.description);}else{if(res.type=="game"&&res.chips>0){Playray.updateCount("chips",res.chips);}}}}$$(".unopened").invoke("hide");Playray.Effects.appear($$(".onceopened"));}.bind(this)});}};Playray.Layout.Tabbed={containerClass:"tabbed",tabClass:"tab",linkSelector:".tabs ul li",activeClass:"active",_links:$H(),_tabs:$H(),init:function(){first=true;$$("."+this.containerClass).each(function(el){var hash=$H({container:el,tabs:$H()});el.select("."+this.tabClass).each(function(tab){hash.get("tabs").set(tab.getAttribute("rel"),tab);});if(!el.id){el.id="tabbed-"+parseInt(Math.random()*10000);}if(hash.get("tabs").keys().length){this._tabs.set(el.id,hash);}}.bind(this));this._tabs.each(function(o){this._links.set(o.key,o.value.get("container").select(this.linkSelector));}.bind(this));this._links.each(function(o){o.value.invoke("observe","click",this.onClick.bindAsEventListener(this));}.bind(this));},onClick:function(e){var eSrc=Event.element(e).up("li");if(!eSrc){return false;}var tgt=eSrc.getAttribute("rel");if(!tgt){return false;}var cId=eSrc.up("."+this.containerClass).id;if(!cId){return false;}var tabs=this._tabs.get(cId).get("tabs");if(!tabs){return false;}var links=this._links.get(cId);links.invoke("removeClassName","active");eSrc.addClassName("active");tabs.each(function(o){var el=o.value;if(o.key.toLowerCase()==tgt){Playray.Effects.appear(el);}else{el.hide();}}.bind(this));e.stop();return false;}};Playray.Layout.Theme={_tear:null,_container:null,_fx:null,_timer:null,_is:{w:25,h:25},_ds:{w:300,h:300},init:function(){this._tear=$("skinTear");if(!this._tear){return;}this._tear.show();this._tear.observe("mouseover",this.peel.bindAsEventListener(this));this._tear.observe("mouseout",this.peelBack.bindAsEventListener(this));this._tear.descendants().each(function(c){c.observe("mouseover",function(){clearTimeout(this._timer);}.bindAsEventListener(this));}.bind(this));},peel:function(e){this._fx=new Effect.Morph(this._tear,{style:"width: "+this._ds.w+"px; height: "+this._ds.h+"px",duration:0.3,beforeStart:function(){this._tear.addClassName("peeled");$$("div#top.zone").each(function(c){c.setStyle({visibility:"hidden"});});}.bind(this),afterFinish:function(){this._tear.down("div.content").setStyle({zIndex:503});}.bind(this)});},peelBack:function(e){this._timer=setTimeout(function(){if(typeof this._fx=="object"){this._fx.cancel();}this._fx=new Effect.Morph(this._tear,{style:"width: "+this._is.w+"px; height: "+this._is.h+"px",duration:0.3,afterFinish:function(){this._tear.removeClassName("peeled");$$("div#top.zone").each(function(c){c.setStyle({visibility:"visible"});});}.bind(this),beforeStart:function(){this._tear.down("div.content").setStyle({zIndex:501});}.bind(this)});}.bind(this),500);},change:function(theme){var body=$$("body")[0];var links=$$("link[rel=stylesheet]");var css={site:null,box:null};var timestamp=Playray.NOW;links.each(function(lnk){var reg=new RegExp("^.*/"+Playray.Theme.CSS+"/css/(site|box).v(\\d+).css$","g");var check=reg.exec(lnk.href);if(check&&check[1]){css[check[1]]=lnk;timestamp=check[2];}});var qry=new Ajax.Request("/q/theme/set/"+theme,{method:"get",onLoading:function(req){body.addClassName("loading");},onSuccess:function(req){var res=req.responseText.evalJSON()||{};css.site.href=Playray.Config.FileServer+"/themes/"+res.css+"/css/site.v"+timestamp+".css";css.box.href=Playray.Config.FileServer+"/themes/"+res.css+"/css/box.v"+timestamp+".css";body.removeClassName("t_"+Playray.Theme.CSS);body.addClassName("t_"+res.css);Playray.setCookie("theme",theme,90);$$("img").each(function(img){if(img.src.indexOf(Playray.Theme.IMG+"/img/")>0){img.src=img.src.replace(Playray.Theme.IMG+"/img/",res.img+"/img/");}});Playray.Theme={CSS:res.css,IMG:res.img,Icons:res.icons};},onComplete:function(){body.removeClassName("loading");}});}};Playray.Layout.Overlay={queue:[],active:null,isActive:function(){return this.active!==null;},_closeTimer:null,ajax:function(url,options){options=Object.extend({parent:null,onLoading:function(){},onComplete:function(){}},options||{});var el=new Element("div",{style:"display: none; position: absolute;"});$(document.body).insert(el);new Ajax.Updater(el,url,{method:"post",parameters:{layout:"modal"},evalScripts:true,onLoading:function(){if(options.onLoading&&typeof options.onLoading=="function"){options.onLoading();}},onComplete:function(){this.close();this.show(el,{parent:options.parent});if(options.onComplete&&typeof options.onComplete=="function"){options.onComplete(el);}}.bind(this)});},box:function(options){var box=$("modalBox").clone(true);if(!box){return null;}box.setAttribute("id","modalBox-"+parseInt(new Date().getTime()));$("modalBox").insert({after:box});box.down("h2").update(options.headline||"");box.down(".subtitle").update(options.subtitle||"");box.down(".content").update(options.content||"");return this.show(box,{parent:options.parent||null},{removeOnHide:true});},show:function(el,options,shimOpts){options=options||{};if(this.active){return this.queue.push([el,options,shimOpts]);}if(!el){return;}if(!el.parentNode){$(document.body).insert({bottom:el});}else{if(el.parentNode.tagName!="BODY"){$(document.body).insert({bottom:el.remove()});}}this.options=options;if(!this.options.modal){var img=new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/icons/15x15/close.png",className:"icon-15 rcicon hover right spacing5",rel:"close",style:"z-index: 950; position: absolute; right: 0pt;"});img.observe("click",this.onClose.bindAsEventListener(this,el));}var tgt=el.down(".ad")||el.down(".title")||el;if(tgt&&!tgt.down("*[rel~=close]")){tgt.insert({top:new Element("div").insert(img)});tgt.setStyle({height:parseInt(tgt.getStyle("height"))+20+"px"});}var btns=el.select("*[rel~=close]").invoke("observe","click",this.onClose.bindAsEventListener(this,el));el.setStyle({position:"absolute",zIndex:901});if(this.options.parent){var pos=this.options.parent.cumulativeOffset();var top=parseInt(pos[1])+20;if(top+el.getHeight()>this.options.parent.getHeight()){top=pos[1]+2;}var left=parseInt(pos[0]+(this.options.parent.getWidth()-el.getWidth())/2);el.setStyle({top:top+"px",left:left+"px"});}if(this.options.modal){Playray.Modal.toggle(null,true,function(){Playray.Layout.Overlay.close();});el._zIndex=el.getStyle("z-index");el.setStyle({zIndex:1001});}el.show();if(!this.options.parent){Position.center(el);}if(!Playray.Layout.Shim.show(el,shimOpts)&&Playray.Layout.Shim.isNeeded()){el.setStyle({position:"static",width:tgt.getWidth()+"px",className:"spacer5"});if(this.options.parent){this.options.parent.up().insert({top:el.remove()});}}this.active=el.visible()?el:null;if(this.active){if(this.options.closeTimeout&&parseInt(this.options.closeTimeout)>=500){this._closeTimer=setTimeout(function(){this.close();}.bind(this),this.options.closeTimeout);}if(this.options.onReady&&typeof this.options.onReady=="function"){this.options.onReady(el);}if(el.id&&!el.id.match(/unnamed/i)){Playray.Track.event("overlay",el.id);}}return el;},onClose:function(e,el){Event.stop(e);this.close(el);return false;},close:function(el){if(!this.active){return;}clearTimeout(this._closeTimer);this.active.hide();Playray.Layout.Shim.hide(this.active);if(this.options.modal){Playray.Modal.toggle(null,false);if(this.active){this.active.setStyle({zIndex:this.active._zIndex});}}this.active=null;if(this.options&&this.options.onClose&&typeof this.options.onClose=="function"){this.options.onClose(el);}if(!this.queueTimer){var q=this.queue.pop();if(q){this.queueTimer=setTimeout(this.show.bind(this,q[0],q[1],q[2]),500);}}}};Playray.Layout.Shim={shims:{},open:function(el,options){return this.show(el,options);},show:function(el,options){if(!this.isAvailable()||!this.isNeeded()){return false;}var el=$(el);if(!el){return false;}options=options||{};if(!options.offset){options.offset={};}options.offset=Object.extend({width:0,height:0,top:0,left:0},options.offset||{});if(!options.width||!options.height){var dims=el.getDimensions();options.width=options.width||dims.width;options.width+=options.offset.width;options.height=options.height||dims.height;options.height+=options.offset.height;}if(!options.top||!options.left){var pos=el.cumulativeOffset();options.top=options.top||pos.top;options.top+=options.offset.top;options.left=options.left||pos.left;options.left+=options.offset.left;}if(!options.zIndex){options.zIndex=el.getStyle("z-index");if(!options.zIndex){options.zIndex=1;el.setStyle({zIndex:options.zIndex});}}if(!options.background){options.background=$(document.body).getStyle("background-color");}if(!options.id){options.id=el.getAttribute("id");if(!options.id){options.id="unnamed-"+parseInt(new Date().getTime());el.setAttribute("id",options.id);}}options.update=options.update||false;options.removeOnHide=options.removeOnHide||false;if(!isNaN(parseInt(options.width))&&!isNaN(parseInt(options.height))&&!isNaN(parseInt(options.top))&&!isNaN(parseInt(options.left))){var id="overlay-"+options.id;var shim=$(id)?$(id).remove():new Element("iframe",{id:id,frameborder:0,allowtransparency:"true",src:"about:blank"});shim.setAttribute("width",parseInt(options.width));shim.setAttribute("height",parseInt(options.height));shim.setStyle({position:options.update?"fixed":"absolute",width:parseInt(options.width)+"px",height:parseInt(options.height)+"px",top:parseInt(options.top)+"px",left:parseInt(options.left)+"px",zIndex:options.zIndex-1,border:0,background:options.background});el.insert({before:shim});if(el.getStyle("position")=="static"){el.setStyle("position","relative");}this.shims[options.id]={target:el,shim:shim,options:options};return true;}return false;},close:function(el){return this.hide(el);},hide:function(el){if(el&&this.shims[el.getAttribute("id")]){var shim=this.shims[el.getAttribute("id")];if(shim.options.removeOnHide&&shim.target.parentNode){shim.target.remove();}shim.shim.remove();delete this.shims[el.getAttribute("id")];}},isNeeded:function(){var needed=($("gameclient")&&$("gameclient").up().select("applet").length)||$("character")||$("td_flash")||$("application")||$("chargen");if(!needed){$$("embed").each(function(el){if(el.id&&el.id.match(/^fusionflash/i)){needed=true;}});}return needed;},isAvailable:function(){return Playray.Browser.hasShimSupport;}};Playray.Layout.Updater={containerClass:"xhr",itemClass:"updater",targetRe:/\btargetid:([^\s]+)\b/,targetIdx:1,urlAttr:"rel",_cache:$H(),_cacheLimit:30,init:function(){this.bind(document.body);},bind:function(container){container=container||document.body;$(container).select("."+this.containerClass).each(function(el){var evType="click";if(el.tagName=="SELECT"){evType="change";}el.observe(evType,this.get.bindAsEventListener(this));}.bind(this));},get:function(e){var eSrc=Event.element(e);if(eSrc.tagName=="SELECT"){eSrc=eSrc.options[eSrc.selectedIndex];}else{if(!eSrc.hasClassName(this.itemClass)){eSrc=eSrc.up("."+this.itemClass);}}if(!eSrc){return;}eSrc=$(eSrc);if(eSrc.hasClassName("login")&&!Playray.LoggedIn){return Playray.ModalLogin.open();}var toks=eSrc.up("."+this.containerClass).className.match(this.targetRe);var targetId=toks[this.targetIdx];var href=eSrc.getAttribute(this.urlAttr);this.now=new Date().getTime();if($(targetId)&&href){$(targetId).addClassName("alpha");var cached=this._cache.get(href);if(cached){$(targetId).innerHTML=cached.value;this.current=href;this.bind(targetId);setTimeout(function(){$(targetId).removeClassName("alpha");},500);Playray.Track.impr(href);}else{var xhr=new Ajax.Updater(targetId,href,{method:"get",onComplete:this.handle.bind(this,targetId,href)});}Event.stop(e);}},handle:function(targetId,href){var el=$(targetId);this.current=href;this.cache(href,el.innerHTML);this.bind(el);el.removeClassName("alpha");Playray.Track.impr(href);},cache:function(key,value){var cached=this._cache.get(key);if(!cached&&this._cache.keys().length<this._cacheLimit){this._cache.set(key,{ts:this.now,value:value});}}};if(typeof ucfirst=="undefined"){var ucfirst=function(s){return s?s.toString().substr(0,1).toUpperCase()+s.toString().substr(1).toLowerCase():"";};}Playray.SiteShop={section:"mypage",sampleMode:"click",numlifts:4,enabledSections:"mypage-bgs mypage-themes games-chips games-access gadgets",enabledLifts:"mypage-bgs mypage-themes games-chips games-access",defaultTheme:null,defaultBg:null,previewElement:null,themeTarget:null,isHashNavigation:true,isActive:false,hasNavigated:false,hasChanges:false,mainMode:"shop",init:function(){if(!Playray.LoggedIn){return;}var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];var rel=el.rel||el.getAttribute("rel")||null;if(!rel||!rel.match(/^(\/gifts|\/shop|\#\/shop|\#\/gifts)/)){continue;}Element.extend(el);el.addClassName("hover");el.observe("click",this.open.bindAsEventListener(this));el.setAttribute("rel",el.getAttribute("rel").replace(/\s?login/,"").replace(/\s?nofollow/,""));}if($("sectionid")){this.section=$("sectionid").getAttribute("playray:section")||this.section;this.defaultTheme=$("sectionid").getAttribute("playray:theme")||this.defaultTheme;this.defaultBg=$("sectionid").getAttribute("playray:bg")||this.defaultBg;}this.previewElements=$$("div.box.customizable");$$("head link[rel=stylesheet]").each(function(el){if(!el.id){var matches=el.href.match(/\/themes\/([^/]+)\/css\/(box|site)\.(v?[0-9]*\.)?css/);if(matches&&matches.length>1){el.id=matches[2]+"-"+matches[1];}}});if(this.isHashNavigation&&self.document.location.hash.match(/^#\/?(shop|gifts)/)){this.open(self.document.location.hash);}},open:function(e,tgt){if(!Playray.LoggedIn){return Playray.ModalLogin.open();}if(this.isActive){this.close();}if(typeof e=="string"||typeof e=="undefined"||!e){this.themeTarget=null;if(!tgt){tgt=e;}}else{this.themeTarget=e.findElement("div.box.customizable")||null;Playray.Layout.Customizable.reset();var _tgt=Event.element(e).getAttribute("rel");if(!_tgt||!_tgt.match(/^\//)){_tgt=Event.element(e).up().getAttribute("rel");}if(_tgt&&_tgt.match(/^\/?(shop|gifts)/)){tgt=_tgt;}var el=Event.element(e);this.eSrc=el.tagName=="IMG"?el:el.up().down("img");if(this.eSrc){this.eSrc._src=this.eSrc.src;this.eSrc.src=Playray.Config.FileServer+"/img/clear.gif";this.eSrc.addClassName("spinner");}}tgt=tgt||this.relTarget||"";if(!tgt){tgt=Playray.IsCurrentUser?"/shop/":"/gifts/";}if(tgt.match("/gifts/")&&!Playray.LoggedUserHasBought){var d=Playray.Dialog.open("ask",Playray.L10n.Shop.GiftsNeedBought||"Complimentary coins cannot be used to give gifts. Please purchase Playray coins first!");d.stopObserving("Playray::close");d.observe("Playray::proceed",function(){Playray.Navigate("/shop/");});if(this.eSrc){this.eSrc.src=this.eSrc._src;this.eSrc.removeClassName("spinner");}return;}if(tgt.match("/gifts")&&!Playray.IsCurrentUser){this.mainMode="gifts";}if(this.mainMode=="shop"&&self.document.location.href.toString().indexOf("/(people|community)/user")!=-1&&!Playray.IsCurrentUser){Playray.Navigate("/people/user/"+escape(Playray.LoggedUser)+"#"+tgt);return;}Playray.Modal.openModal("/q/mypage/shop/"+this.mainMode+(this.mainMode=="gifts"?"/"+Playray.CurrentUserId:""),{top:true,pos:null,update:true,transparent:true,onComplete:this.prepare.bind(this,tgt),onClose:this.onClose.bind(this)});if(typeof e=="object"){e.stop();return false;}return;},prepare:function(tgt){if(tgt){this.relTarget=tgt;}this.relTarget=this.relTarget.replace(/^#/,"");this.shop=$("siteshop");if(!this.shop){return;}$$(".zone").invoke("hide");if($("siteshoplogo")){var dims=$("siteshoplogo").getDimensions();Playray.embedSWF(Playray.Config.FileServer+"/img/siteshop/v3/siteshop_logo.swf","siteshoplogo","_siteshoplogo",dims.width,dims.height,9,{shopLabelText:Playray.L10n.Shop.Shop,shopSiteText:Playray.Branding});}this.info=$("itemInfo");this.delivered=$("itemDelivered");[this.info,this.delivered].each(function(el){el.select(".shopnavi").each(function(el){el.stopObserving("click");el.observe("click",function(e){this.reset();var hash=self.document.location.hash;if(hash.match("/charshop/collection")){hash=hash.substring(1).split("/").slice(0,5).join("/");}else{if(hash.match("/charshop/item")){hash=hash.substring(1).split("/").slice(0,3).join("/");}else{hash=hash.substring(1).split("/").slice(0,4).join("/");}}self.document.location.hash=hash;this.delivered.hide();this.shop.show();}.bindAsEventListener(this));}.bind(this));}.bind(this));this.shop.select("*[rel^=/shop], *[rel^=/gifts]").each(function(el){el.stopObserving("click");el.observe("click",function(e){var el=Event.element(e);if(!el){return;}if(!el.getAttribute("rel")){el=el.up("*[rel^=/shop], *[rel^=/gifts]");if(!el){return;}}this.navigateTo(el.getAttribute("rel"));}.bindAsEventListener(this));}.bind(this));this.lifts={};this.enabledLifts.split(/[\s,]/).each(function(lift){this.lifts[lift]=[];}.bind(this));this.enabledSections.split(/[\s,]/).each(function(lift){if(!$(lift)){return;}var sect=lift.split("-")[0];$(lift).select(".item").each(function(el){if(el.hasClassName("bought")){el.hide();}else{el.show();if(this.lifts[lift]){this.lifts[lift].push(el);}}}.bind(this));}.bind(this));$H(this.lifts).each(function(o){if(!o.value||!o.value.length){return;}var lift=o.key;var uri="/"+this.mainMode+"/"+lift.replace(/-/g,"/");var items=o.value.sort(function(a,b){var ao=parseInt(a.getAttribute("playray:ordering")),bo=parseInt(b.getAttribute("playray:ordering"));return ao==bo?0:ao<bo?-1:1;});var div=new Element("div",{"class":"items left"});var sect=lift.split("-")[0];var n=0;items.each(function(el){if(n++>=this.numlifts){return;}var clone=el.cloneNode(true);clone.addClassName("preview");clone.id=null;div.insert(clone);}.bind(this));var tgt=$(sect+"-index").down("div[rel^="+uri+"].items");if(tgt){if(n<=4){tgt.up().down("a.plusbtn").hide();}tgt.insert({bottom:div});}this.shop.select("*[rel^="+uri+"].itemcount").each(function(el){el.innerHTML=_(el.innerHTML,items.length-1);}.bind(this));div=null;}.bind(this));this.enabledSections.split(/[\s,]/).each(function(lift){if(!$(lift)){return;}$(lift).select(".items").each(function(el){el.stopObserving(this.sampleMode);el.observe(this.sampleMode,function(e,type){var el=Event.element(e).up(".item");if(!el){return;}if(this.isHashNavigation&&el.getAttribute("rel")){self.document.location.hash=el.getAttribute("rel");}else{this.navigateTo(el.getAttribute("rel"));}return false;}.bindAsEventListener(this,lift));}.bind(this));}.bind(this));if(this.eSrc){this.eSrc.src=this.eSrc._src;this.eSrc.removeClassName("spinner");}if(Playray.Branding=="Playforia"){$("header").down(".deco").scrollTo();}Playray.Modal.attach(this.shop);this.reset();this.shop.show();this.isActive=true;if(this.isHashNavigation){Playray.observeHashChange(this._navigateTo.bind(this));}if(this.relTarget){this.navigateTo(this.relTarget);}},onClose:function(){if(this.hasChanges){return Playray.reload();}document.location.hash="#";this.isActive=false;this.reset();this.shop.hide();Playray.Modal.closeModal();$$(".zone").invoke("show");},close:function(){this.onClose();},disableEventSource:function(e){var el=Event.element(e);if(el){el.disabled=true;el.addClassName("disabled");}},navigateTo:function(tgt){if(tgt){if(this.isHashNavigation){self.document.location.hash=tgt.replace(/-/g,"/").replace(/^[#]*/,"");}else{this._navigateTo(tgt);}}},_navigateTo:function(tgt){if(tgt.match(/^[#/]*(shop|gifts)/)){if(!this.isActive){this.open(tgt);return;}}else{this.close();return;}id=tgt.replace(/^[#/]*/,"").replace(/\/$/,"").replace(/^(shop|gifts)\/?/,"").replace(/\//g,"-");var toks,mode,type,label,product;toks=id.split("-");id=toks[0]||"shop-index";type=toks[1];label=toks[2];product=toks.slice(3).join("-");this.shop.select(".shop").invoke(this.mainMode.match("shop")?"show":"hide");this.info.select(".shop").invoke(this.mainMode.match("shop")?"show":"hide");this.delivered.select(".shop").invoke(this.mainMode.match("shop")?"show":"hide");this.shop.select(".gifts").invoke(this.mainMode.match("gifts")?"show":"hide");this.info.select(".gifts").invoke(this.mainMode.match("gifts")?"show":"hide");this.delivered.select(".gifts").invoke(this.mainMode.match("gifts")?"show":"hide");if(!id||!$(id)){return;}if(id.match(/^charshop/)&&type){if(type.match("item")&&label){return this.previewCharshop(label);}else{if(product){return this.previewCharshop(product);}else{if(type&&type.match(/^collection/)&&label){var tgtEl=$(id+"-"+type);if(tgtEl){var srcEl=$(id+"-"+type+"-"+label);if(srcEl&&srcEl.getAttribute("playray:name")&&tgtEl.down("*[rel~=label]")){tgtEl.down("*[rel~=label]").innerHTML=srcEl.getAttribute("playray:name");}if(tgtEl.down("img[rel~=thumbnail]")){tgtEl.down("img[rel~=thumbnail]").setAttribute("src",img.getAttribute("src").replace(/(.*)\/(.*)\.(\w+)$/,"$1/"+label+".$3"));}}this.itemGrid=function(){return{productUrl:_("%1/xml/charshop/products.xml?collection=",Playray.Config.SiteServer),collectionId:_("%1/%2",label,Playray.CurrentUserG||Playray.LoggedUserG),gridFunction:"Playray.SiteShop.previewCharshopGridInterface",itemFolder:_("%1/swf/bodyparts_v3/",Playray.Config.FileServer),rows:2,columns:5,padding:4,itemSize:[130,130],arrowSize:[15,40],hScrolling:true};};Playray.embedSWF(_("%1/swf/itemGrid/0.9/itemGrid.v%2.swf",Playray.Config.FileServer,Playray.Config.GridVersion),"itemgrid","_itemgrid",710,300,10,{json:"Playray.SiteShop.itemGrid"});var thumb=this.shop.down("img[rel~=shopimage]");var thumboverride=this.shop.down("*[rel~=shopimageoverride]");if(thumboverride&&thumboverride.getAttribute("rel").toLowerCase().split(/\s+/).indexOf(label.toLowerCase())!=-1){thumb.hide();thumboverride.select(".zone, .ad").invoke("show");thumboverride.show();}else{if(thumb){thumb.src=thumb.src.replace(/(shopImages\/)[^.]+(\.png)$/,"$1"+label+"$2");thumb.show();if(thumboverride){thumboverride.hide();}}}}}}}else{if(id.match(/^gadgets/)&&!label&&$("gadgets")&&$("gadgets").select(".collections .collection").length<2){var cc=$("gadgets").select(".collections .collection");if(cc.length){type=cc.pop().getAttribute("playray:label");}}else{if(type&&label&&$(id+"-"+type+"-"+label)){var el=$(id+"-"+type+"-"+label);if(id.match(/^(mypage)/)){id=type;}var fn="preview"+ucfirst(id);if(typeof this[fn]=="function"){eval("Playray.Siteshop."+fn+"(el);");}return;}}}tgtEl=type&&$(id+"-"+type)?$(id+"-"+type):$(id);if($("shopnavi").visible()){$("shopnavi").select(".tabnavi").invoke("removeClassName","active");$("shopnavi").select("*[rel~=/"+this.mainMode+"/"+id+"]").invoke("addClassName","active");if(type){$("shopnavi").select("*[rel~=/"+this.mainMode+"/"+id+"/"+type+"]").invoke("addClassName","active");}if($("shopsubnavi")){$("shopsubnavi").childElements().invoke("hide");$("shopsubnavi").select("*[rel~="+tgt+"]").invoke("show");}}this.shop.select(".footer .toolbar").invoke("hide");var hits=this.shop.select(".footer .toolbar[rel~="+tgt+"]");if(hits.length>0){hits.invoke("show");this.shop.down(".footer").addClassName("toolbar");}else{this.shop.down(".footer").removeClassName("toolbar");}if(!Playray.Browser.isIE){this.shop.down(".content").setStyle({minHeight:"400px"});}this.shop.select(".tab").invoke("hide");this.resetTheme();this.resetBg();tgtEl.show();this.shop.down(".content").setStyle({minHeight:"auto"});if(tgtEl.down(".tab")){tgtEl.down(".tab").show();}if(tgtEl.up(".tab")){tgtEl.up(".tab").show();}this.relTarget=tgt;Playray.Layout.Shim.show(Playray.Modal._container,{update:true,offset:{width:-10,height:-30,left:10}});this._track();return tgtEl;},reset:function(){if(!this.info){return;}var sample=this.info.down("#itemSample");if(sample){sample.update("");}var sampleDeliv=this.info.down("#itemDeliveredSample");if(sampleDeliv){sampleDeliv.update("");}if(this.infoTimer){clearTimeout(this.infoTimer);}this.info.hide();this.delivered.hide();this.resetTheme();this.resetBg();this.shop.select("button").concat(this.delivered.select("button")).each(function(el){el.disabled=false;el.removeClassName("disabled");});this.info.select("#rgbcolor, #rgbcolor2").each(function(el){el.hide();el.setStyle({backgroundColor:"white"});el.removeAttribute("playray:rgb");});if($("available")){$("available").hide();$("available").removeAttribute("playray:ts");if($("availabletime").getAttribute("playray:originalcontent")){$("availabletime").update($("availabletime").getAttribute("playray:originalcontent"));}}this.info.select(".colorpicker, .datepicker").invoke("hide");},previewGadgets:function(el){if(!el.getAttribute("playray:label")){el=el.up(".item");if(!el.getAttribute("playray:label")){return;}}var label=el.getAttribute("playray:label");this.showDetails(el,{type:"gadget",preview:function(label,w,h){Playray.embedSWF(_("%1/swf/giftViewer/"+Playray.Config.GiftViewerVersion+"/giftViewer.swf",Playray.Config.FileServer),"itemSample","_itemSample",w,h,9,{thumb:_("%1/gadgets/%2/%2.swf",Playray.Config.FileServer,label),opened:1});},checkout:function(e){this.disableEventSource(e);this.checkout("gadget",label,function(res,label,section,box){if(Playray.IsCurrentUser&&this.mainMode=="shop"){var deliv=res.delivered[label];Playray.Gadgets.register(label,deliv.id,{x:deliv.x,y:deliv.y,w:deliv.w,h:deliv.h,vis:"hidden"});Playray.Layout.Customizable.addHiddenGadget(label,deliv.id);}this.delivered.down("button[rel~=close]").show();if(Playray.Layout.Customizable.customize){Playray.Layout.Customizable.customize.hide();}if(this.info){this.info.hide();}}.bind(this));if(e){e.stop();return false;}}});},previewThemes:function(el,boxes){this.boxes=boxes||this.previewElements||null;if(!el.getAttribute("playray:label")){el=el.up(".item");if(!el.getAttribute("playray:label")){return;}}var label=el.getAttribute("playray:label");var name=el.getAttribute("playray:name");var sample=el.cloneNode(true);sample.addClassName("preview");this.showDetails(el,{type:"theme",sample:sample,preview:function(label){if(label=="none"){this._replaceTheme();if(this.boxes){this.boxes.each(function(box){this._replaceTheme(null,box);}.bind(this));}}else{if(this.themeTarget){this._replaceTheme(label,this.themeTarget);}else{this._replaceTheme(label);if(this.boxes){this.boxes.each(function(box){this._replaceTheme(label,box);}.bind(this));}}}},checkout:function(e){this.disableEventSource(e);this.checkout("theme",label,function(res,label){if(Playray.IsCurrentUser&&this.mainMode=="shop"){if(!this.themeTarget){Playray.Layout.setDefault("theme",label);Playray.Layout.save();}else{this._replaceTheme(label,this.themeTarget,true);}$("sectionid").setAttribute("playray:theme",label);var b=this.delivered.down("button.theme[rel~=apply]");b.stopObserving("click");b.observe("click",function(e){b=e.findElement("button");b.addClassName("spinner");Playray.Layout.setDefaultAll("theme",label,null,function(){Playray.Layout.save("rel");b.hide();b.removeClassName("spinner");this.delivered.down("*[rel~=ack]").update(Playray.L10n.SettingsSaved);});this.disableEventSource(e);}.bind(this));Playray.Layout.Customizable.addTheme(label,name);Playray.Layout.Customizable.reset();if(Playray.Layout.Customizable.customize){Playray.Layout.Customizable.customize.hide();}}}.bind(this));if(e){e.stop();return false;}}});},resetTheme:function(){if(this.boxes){this.boxes.each(function(box){var theme=box.getAttribute("playray:originaltheme")||this.defaultTheme;this._replaceTheme(theme,box);}.bind(this));}this._replaceTheme(this.defaultTheme);},_replaceTheme:function(newTheme,box,permanent){var ret=false;var tgt=box||this.shop||this.previewElements.pop();if(this.info){this.info.hide();}if(tgt&&!tgt.hasClassName(newTheme)){var cls=tgt.className.split(/\s+/);if(cls.length>0){cls.each(function(cl){if(cl.match(/^t_/)){tgt.removeClassName(cl);}}.bind(this));}if(newTheme){if(!$("box-"+newTheme)){$$("head").pop().appendChild(new Element("link",{href:Playray.Config.FileServer+"/themes/"+newTheme+"/css/box."+Playray.LIBTS+".css",type:"text/css",rel:"stylesheet",id:"box-"+newTheme}));}tgt.addClassName("t_"+newTheme);if(permanent||!tgt.getAttribute("playray:originaltheme")){tgt.setAttribute("playray:originaltheme",tgt.getAttribute("playray:theme"));}tgt.setAttribute("playray:theme",newTheme);ret=true;}}return ret;},previewBgs:function(el){if(!el.getAttribute("playray:label")){el=el.up(".item");if(!el.getAttribute("playray:label")){return;}}var label=el.getAttribute("playray:label");var sample=el.cloneNode(true);sample.addClassName("preview");this.showDetails(el,{type:"bg",sample:sample,preview:this._replaceBg,checkout:function(e){this.disableEventSource(e);this.checkout("bg",label,function(res,label){if(Playray.IsCurrentUser&&this.mainMode=="shop"){this.defaultBg=label;this.resetBg();$("sectionid").setAttribute("playray:bg",label);Playray.Layout.save();var b=this.delivered.down("button.bg[rel~=apply]");b.stopObserving("click");b.observe("click",function(e){b=e.findElement("button");b.addClassName("spinner");Playray.Layout.setDefaultAll("bg",label,null,function(){this.delivered.down("*[rel~=ack]").update(Playray.L10n.SettingsSaved);b.hide();b.removeClassName("spinner");this.delivered.down("button[rel~=close]").show();}.bind(this));this.disableEventSource(e);}.bind(this));Playray.Layout.Customizable.addBg(label);Playray.Layout.Customizable.reset();}}.bind(this));if(e){e.stop();return false;}}});},resetBg:function(e){this._replaceBg();},_replaceBg:function(label){var label=label||this.defaultBg;var re=new RegExp("/themes/([^/]+)/css/site.(v?[0-9]*.)?css");$$("link[rel=stylesheet]").each(function(el,n){if(n<2){return;}var matches=re.exec(el.href);if(matches&&matches.length>1){el.href=el.href.replace(matches[1],label);}});$("sectionid").setAttribute("playray:bg",label);},previewGames:function(el){if(!el.getAttribute("playray:label")){el=el.up(".item");if(!el.getAttribute("playray:label")){return;}}var label=el.getAttribute("playray:label");var sample=el.cloneNode(true);sample.addClassName("preview");this.showDetails(el,{type:"game",sample:sample,checkout:function(e){this.disableEventSource(e);this.checkout("game",label,function(res){if(this.mainMode=="shop"){if(res.delivered.chips){Playray.updateCount("chips",res.delivered.chips);}this.delivered.select("*[rel~=togame]").each(function(el){el.setAttribute("playray:url",res.delivered.url);var g=el.down("*[rel~=game]");if(g){g.innerHTML=res.delivered.game;}}.bind(this));}}.bind(this));if(e){e.stop();return false;}}});},previewCharshopGridInterface:function(label){self.document.location.hash=self.document.location.hash.split("/").slice(0,5).join("/")+"/"+label;},previewCharshop:function(el){var label=el;if(label.constructor==Array){label=label.pop();}else{if(typeof el=="object"){label=el.getAttribute("playray:label");if(!el.getAttribute("playray:label")){el=el.up(".item");if(!el||!el.getAttribute("playray:label")){return;}}}}var xhr=new Ajax.Request("/q/mypage/shop/meta",{method:"post",parameters:{label:label,mode:this.mainMode,uid:Playray.CurrentUserId},onComplete:function(res){var res=res.responseText.evalJSON();if(!res.ok||res.ok=="false"){return Playray.Layout.handleError(res);}var el=new Element("div");var details=res.category_name+": "+res.name;$H({type:"charshop",label:label,name:details,description:res.description,price:res.price,w:180,h:160}).each(function(x){el.setAttribute("playray:"+x.key,x.value);});this.showDetails(el,{type:"charshop",preview:function(label,w,h){var cat=label.split("_")[0];Playray.embedSWF(_("%1/swf/itemGrid/0.9/itemViewer.v%2.swf",Playray.Config.FileServer,Playray.Config.GridVersion),"itemSample","_itemSample",w,h,9,{swfToView:_("%1/swf/bodyparts_v3/%2/%3.swf",Playray.Config.FileServer,cat,label)});this.info.select("#rgbcolor").invoke(res.has_color1?"show":"hide");this.info.select("#rgbcolor2").invoke(res.has_color2?"show":"hide");var cp=this.info.down(".colorpicker");if(cp){if(res.has_color1||res.has_color2){cp.show();}else{cp.hide();}}Playray.ColorPicker.bind(function(id,color){if(!$(id)){return;}color=color.replace(/^0x/i,"").replace(/[^0-9a-f]/i,"");if(typeof $("_itemSample").setColor=="function"){$("_itemSample").setColor(id,color);}$(id).setStyle({backgroundColor:"#"+color});$(id).setAttribute("playray:rgb","0x"+color);},Playray.Siteshop.info);},checkout:function(e){this.disableEventSource(e);this.checkout("charshop",label);this.delivered.down("button[rel~=close]").show();this.delivered.down("[rel~=itemdetails]").update("("+details+")");if(e){e.stop();return false;}}});}.bind(this)});},itemGrid:function(){},showDetails:function(el,params){var type,label,price,name,description,w,h;var checkoutBtn;this.reset();type=el.getAttribute("playray:type");label=el.getAttribute("playray:label");price=el.getAttribute("playray:price");name=el.getAttribute("playray:name");description=el.getAttribute("playray:description");w=el.getAttribute("playray:w");h=el.getAttribute("playray:h");if(w>200){var x=w/h;w=200;h=parseInt(w*x);}if(h>200){var x=h/w;h=200;w=parseInt(h*x);}var checkoutBtn=this.info.down("*[rel~=checkout]");checkoutBtn.removeClassName("disabled");checkoutBtn.disabled=false;checkoutBtn.show();checkoutBtn.stopObserving("click");checkoutBtn.observe("click",params.checkout.bindAsEventListener(this));this.info.select("*[rel~=close]").each(function(el){el.stopObserving("click");el.observe("click",this.close.bindAsEventListener(this));if(params.close&&typeof params.close=="function"){el.observe("click",params.close.bindAsEventListener(this));}}.bind(this));if(this.mainMode=="gifts"){if($("giftMessage")){$("giftMessage").clear();}if($("giftAnonymous")){$("giftAnonymous").clear();}if($("available")){$("available").show();Playray.DatePicker.bind(function(ts,readable){$("available").setAttribute("playray:ts",ts);if(!$("availabletime").getAttribute("playray:originalcontent")){$("availabletime").setAttribute("playray:originalcontent",$("availabletime").innerHTML);}$("availabletime").update(readable);},this.info);}}this.info.select(".shop, .gifts").invoke("hide");this.info.select("."+this.mainMode).invoke("show");this.info.select(".type").invoke("hide");this.info.select(".type."+this.mainMode+"."+type).invoke("show");o=this.info.down("*[rel~=name]");if(o){o.update(name);}o=this.info.down("*[rel~=description]");if(o){o.update(description);}o=this.info.down("*[rel~=free]");if(o){if(price>0){o.hide();}else{o.show();}}o=this.info.down("span[rel~=price]");if(o){if(price>0){o.show();o.update(price);var ib=this.info.select(".insufficientbalance");var bb=this.info.down("*[rel~=checkout]");if(ib.length&&bb){var bal=this.info.down("*[rel~=credits]");if(price>Playray.getCount("credits")){bb.hide();ib.invoke("show");if(bal){bal.removeClassName("green");bal.up().addClassName("red");}}else{if(bal){bal.up().removeClassName("red");bal.addClassName("green");}bb.show();ib.invoke("hide");}}}else{o.hide();}}if(params.preview&&typeof params.preview=="function"){params.preview=params.preview.bind(this);params.preview(label,w,h);}if(params.sample&&typeof params.sample=="object"){if(params.sample.id){params.sample.id=null;}this.info.down("#itemSample").innerHTML="";this.info.down("#itemSample").appendChild(params.sample);}Playray.Tooltips.init(this.info);this.shop.hide();this.info.show();this._track();},closeDetails:function(e){if(e){var el=Event.element(e);if(el.getAttribute("rel")!="close"){if(el.tagName=="BUTTON"||el.up("button")){return;}if(el.up(".siteshop")){return;}}}document.stopObserving("click");this.info.hide();this.shop.show();this.reset();var hash=self.document.location.hash.toString();if(hash.match("/charshop/collection")){hash=hash.substring(1).split("/").slice(0,5).join("/");}else{if(hash.match("/charshop/item")){hash=hash.substring(1).split("/").slice(0,3).join("/");}else{hash=hash.substring(1).split("/").slice(0,4).join("/");}}self.document.location.hash=hash;},checkout:function(type,label,completeFunc,params){var params=params||{};var section=params.section||this.section||"";var box=params.box||"";if(this.themeTarget){box=this.themeTarget.id;}if(label){Playray.Modal.toggleSpinner(true);if(type.match(/(bg|theme|gadget)/)){Playray.Layout.save();}var params={type:type,label:label,uid:parseInt(Playray.LoggedUserId)};if(this.mainMode=="gifts"){params.recipient=parseInt(Playray.CurrentUserId);params.msg=$("giftMessage")?$F("giftMessage"):"";params.anonymous=$("giftAnonymous")?$F("giftAnonymous")||false:false;params.container=$("container")?$F("container"):null;params.available=$("available")?parseInt($("available").getAttribute("playray:ts")):null;if(params.msg.length==0){Playray.Modal.toggleSpinner(false);Playray.Effects.pulsate($("giftMessage"));checkoutBtn=this.info.down("*[rel~=checkout]");checkoutBtn.disabled=false;checkoutBtn.removeClassName("disabled");return;}}if(type.match(/charshop/)&&($("rgbcolor")||$("rgbcolor2"))){if($("rgbcolor")&&$("rgbcolor").getAttribute("playray:rgb")){params.color1=$("rgbcolor").getAttribute("playray:rgb");}if($("rgbcolor2")&&$("rgbcolor2").getAttribute("playray:rgb")){params.color1=$("rgbcolor2").getAttribute("playray:rgb");}}var qry=new Ajax.Request("/q/mypage/shop/checkout"+(this.mainMode.match("shop")?"/"+section+(box?"/"+box:""):""),{method:"post",parameters:params,onComplete:function(res){var res=res.responseText.evalJSON();if(!res.ok||res.ok=="false"){return Playray.Layout.handleError(res,{onClose:this.open});}if(completeFunc||res.headline){if(res.balance){Playray.updateCount("credits",res.balance,{pulsate:true});}if(completeFunc){completeFunc(res,label,params);}this.delivered.select(".shop, .gifts").invoke("hide");this.delivered.select("."+this.mainMode).invoke("show");this.delivered.select(".type").invoke("hide");this.delivered.select(".type."+this.mainMode+"."+type).invoke("show");this.info.hide();this.delivered.show();this.delivered.down("*[rel~=headline]").update(res.headline);this.delivered.down("*[rel~=text]").update(res.text);if(this["delivered"+ucfirst(type)]){this["delivered"+ucfirst(type)].invoke("show");}}else{Playray.Modal.closeModal();}if(res.json){Playray.Notify.delegate(res.json);}this._track("checkout/"+type);this.hasChanges=true;Playray.Modal.toggleSpinner(false);}.bind(this)});qry=null;}},_track:function(addtl){Playray.Track.hash("siteshop",addtl);}};Playray.SiteShop.Lifts={inited:false,lifts:$H(),fn:{},defaultOptions:{width:415,height:140,itemSize:115,rows:1,cols:3},register:function(coll,options){options=Object.extend(Object.clone(this.defaultOptions,true),options||{});if(!options.id){options.id="itemgrid_"+coll;}this.lifts.set(coll,options);if(this.inited){this.create(coll);}},init:function(){if(this.lifts.keys().length){this.lifts.keys().each(function(lift){this.create(lift);}.bind(this));this.inited=true;}},create:function(lift){var options=this.lifts.get(lift);this.fn["f"+lift]={load:this._load.bind(this,lift),click:this._click.bind(this,lift)};Playray.embedSWF(_("%1/swf/itemGrid/0.9/itemGrid.v%2.swf",Playray.Config.FileServer,Playray.Config.GridVersion),options.id,"_"+options.id,options.width,options.height,10,{json:"Playray.SiteShop.Lifts.fn.f"+lift+".load"});},_load:function(lift){var options=this.lifts.get(lift);return{productUrl:_("%1/xml/charshop/products.xml?collection=",Playray.Config.SiteServer),collectionId:_("%1/%2",lift,Playray.CurrentUserG||Playray.LoggedUserG),gridFunction:_("Playray.SiteShop.Lifts.fn.f%1.click",lift),itemFolder:_("%1/swf/bodyparts_v3/",Playray.Config.FileServer),rows:options.rows,columns:options.cols,padding:4,itemSize:[options.itemSize,options.itemSize],arrowSize:[15,40],hScrolling:true};},_click:function(lift,label){if(!Playray.LoggedIn){Playray.Modal.open("/account/create/");}else{Playray.Track.event("charlift",lift,label);Playray.Modal.openModal(_("/community/user/%1/character/?coll=%2&label=%3",encodeURIComponent(Playray.LoggedUser),lift,label));}}};Playray.Siteshop=Playray.SiteShop;Playray.Siteshop.Modal={container:null,containerId:"siteshopModal",options:null,labels:null,title:"",text:"",defaultOptions:{width:440,height:220,itemSize:200,rows:1,cols:2,adId:null},init:function(options){if(!Object.isArray(options.labels)){return;}this.methods={load:this._load.bind(this),click:this._click.bind(this),close:this.close.bind(this)};this.labels=options.labels;this.title=options.title||"";this.text=options.text||"";this.options=Object.extend(Object.clone(this.defaultOptions,true),options.options||{});if(!this.options.id){this.options.id="itemgrid_modal";}this.labels=this.labels.eachSlice(this.options.cols).first();this.container=$(this.containerId);if(!this.container){var b=document.getElementsByTagName("body")[0];this.container=new Element("div",{id:this.containerId,"class":"siteshop modal"});this.container.setStyle({width:"440px",height:"360px",padding:"20px 20px",textAlign:"center",backgroundImage:_("url(%1/img/siteshop/v3/bg_instaShop.png)",Playray.Config.FileServer),backgroundRepeat:"no-repeat",backgroundPosition:"0 0"});b.insert({bottom:this.container});}},open:function(){if(!this.container){return;}this.container.insert({top:new Element("img",{src:Playray.Config.FileServer+"/themes/common/img/icons/15x15/close.png","class":"hover icon-15 absolute",rel:"close",style:"top: 20px; right: 20px;"}).observe("click",this.methods.close)});this.container.insert({bottom:new Element("h3",{"class":"topspacer leftspacer bottomspacer aleft"}).update(this.title)});this.container.insert({bottom:new Element("div",{"class":"leftspacer bottomspacer aleft"}).update(this.text)});this.container.insert({bottom:new Element("div",{id:this.options.id})});var btnwrap=new Element("div",{style:"margin-left: 4px"});this.labels.each(function(label,i){var btn=new Element("button",{"class":"checkout left"}).update(Playray.L10n.Shop.TryItOn);btn.onclick=function(){Playray.Siteshop.Modal.methods.click(label);};btnwrap.insert({bottom:btn});}.bind(this));this.container.insert({bottom:btnwrap});this.container.show();Playray.Dialog._active=true;Playray.Modal.toggle(this.container,true,this.close.bind(this));Playray.embedSWF(_("%1/swf/itemGrid/0.9/itemGrid.v%2.swf",Playray.Config.FileServer,Playray.Config.GridVersion),this.options.id,"_"+this.options.id,this.options.width,this.options.height,10,{json:"Playray.SiteShop.Modal.methods.load"});},close:function(){Playray.Dialog._active=false;this.container.update("").hide();Playray.Modal.toggle(this.container,false);},_load:function(){return{productUrl:_("%1/xml/charshop/products.xml?label=",Playray.Config.SiteServer),collectionId:this.labels.join(","),gridFunction:"Playray.SiteShop.Modal.methods.click",itemFolder:_("%1/swf/bodyparts_v3/",Playray.Config.FileServer),rows:this.options.rows,columns:this.options.cols,padding:10,itemSize:[this.options.itemSize,this.options.itemSize],arrowSize:[0,0],hScrolling:true,disablePriceTags:true};},_click:function(label){if(!Playray.LoggedIn){Playray.ModalLogin.open();}else{Playray.Modal.openModal(_("/community/user/%1/character/?label=%2",encodeURIComponent(Playray.LoggedUser),label));this.close();}if(this.options.adId){this.container.fire("Playray:onAdClick",{id:this.options.adId});}}};Playray.Events={_containers:"[rel~=events]",_publicContainerId:"events",_nVisible:0,_nHidden:0,init:function(){if(!Playray.LoggedIn){return;}this.containers=$A();var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];var rel=el.getAttribute("rel");if(!rel||!rel.match(/\bevents\b/)){continue;}this.containers.push($(el));}this.containers.each(function(container){container.up().select("*[rel~=news]").each(function(el){Event.observe(el,"click",this._touchNews.bindAsEventListener(this));}.bind(this));container.select("div.event").each(function(el){if(el.getAttribute("ev:url")){el.addClassName("hover");Event.observe(el,"click",this._click.bindAsEventListener(this));}if(!el.hasClassName("hidden")){el.addClassName("visible");this._nVisible++;}else{this._nHidden++;}}.bind(this));if(this._nVisible<1||this._nHidden==1){this._showHidden();}container.select("div.event *[rel~=expand]").each(function(el){Event.observe(el,"click",this._expand.bindAsEventListener(this));}.bind(this));container.select("div.event *[rel~=close]").each(function(el){Event.observe(el,"click",this._close.bindAsEventListener(this));}.bind(this));container.select("div.event *[rel~=share]").each(function(el){Event.observe(el,"click",this._share.bindAsEventListener(this));}.bind(this));container.select("*[rel~=showhid]").each(function(el){Event.observe(el,"click",this._showHidden.bindAsEventListener(this));if(this._nHidden>0){el.removeClassName("hidden");}}.bind(this));}.bind(this));},add:function(el,type){if(typeof el=="string"){var newEl=new Element("div");newEl.innerHTML=el;el=newEl.down();}this.hide(type);$(this._publicContainerId).insert({top:el});return el;},hide:function(type){if(type){$$("div[rel~="+type+"].event").each(function(el){el.remove();});}},_expand:function(e){var el=Event.element(e);var ev=el.up(".event").id;$$("#"+ev+" .siblings.hidden").each(function(el){el.hide();el.removeClassName("hidden");Playray.Effects.slideDown(el);});el.hide();},_click:function(e){var el=Event.element(e);if(el.getAttribute("rel")!="action"&&el.getAttribute("ev:url")){Playray.Navigate(e,el.getAttribute("ev:url"));}},_closeRunning:false,_close:function(e){if(this._closeRunning||!e){return;}var el=e.element().up("div.event");if(!el){return;}var siblings=el.getAttribute("ev:siblings");var req=new Ajax.Request("/q/mypage/events/ack",{method:"post",parameters:{id:el.id.replace(/[\D]*/,""),siblings:siblings},requestHeaders:{Accept:"application/json"},onLoading:function(req){this._closeRunning=true;el.addClassName("loading");}.bind(this),onSuccess:function(req){this._closeRunning=false;var res=req.responseText.evalJSON();if(res.ok){if($$(".event.visible").length==0){this._showHidden();}el.removeClassName("loading");Playray.Effects.slideUp(el);}}.bind(this)});if(e){e.stop();}return false;},_showHidden:function(e){var els=$$("#"+this._publicContainerId+" div.event.hidden");var animate=els.length<3;els.each(function(el){if(animate){el.hide();el.removeClassName("hidden");Playray.Effects.slideDown(el);}else{el.removeClassName("hidden");}}.bind(this));$$("#"+this._publicContainerId+" *[rel~=showhid]").each(function(el){el.hide();}.bind(this));if(e){Event.stop(e);}return false;},_touchNews:function(e){if(this._closeRunning||!e){return;}var el=e.element().up("div.eventcontainer");if(!el){return;}var qry=new Ajax.Request("/q/mypage/events/news",{method:"post",requestHeaders:{Accept:"application/json"},onCreate:function(req){this._closeRunning=true;el.down(".content").addClassName("loading alpha");}.bind(this),onSuccess:function(req){this._closeRunning=false;Playray.Effects.slideUp(el);}.bind(this)});delete qry;},_share:function(e){var eSrc=Event.element(e);if(eSrc){var eid=parseInt(eSrc.up(".event").getAttribute("id").replace(/[^0-9]*/,""));Playray.Facebook.handleEvent(eid);}if(e){Event.stop(e);}return false;}};Playray.Gadgets={restrictedId:"content",nVisible:0,_initDelayMs:1500,_inited:false,_elements:$H(),_ids:$H(),_timer:null,register:function(label,id,params){if(!params){params={};}if(parseInt(id).toString()=="NaN"){toks=label.split("-");params=id||{};id=toks[1];label=toks[0];}params.label=label;params.id=id;if(!(params.label&&params.id)){return;}params._inited=false;this._elements.set(id,params);if(!id.match(/^preview/)){this._ids.set(id,this._elements.get(id));if(params.data){this.API.objects.set(id,params.data);}}if(this._inited){return this._initElement(id);}},unregister:function(id){this._ids.unset(id);this.API.objects.unset(id);this._elements.unset(id);},init:function(){if(this._inited){return;}this._timer=setTimeout(function(){this._init();}.bind(this),this._initDelayMs);},reinit:function(){this._init();},hide:function(id){var o=this._elements.get(id);if(o){o.vis="hidden";this.reinit();}},unhide:function(id){if(this.nVisible<Playray.Config.MaxGadgetsVisible){var o=this._elements.get(id);if(o){o.vis="max";this.reinit();}}},_init:function(){if(this._timer){clearTimeout(this._timer);}if(this.restrictedId&&$(this.restrictedId)){this.restricted=$(this.restrictedId);}this.nVisible=0;this._elements.each(function(o){if(this._initElement(o.key)){this.nVisible++;}}.bind(this));if(Playray.LoggedIn&&$("hiddenItems")){if(this.nVisible>=Playray.Config.MaxGadgetsVisible){$("hiddenItems").addClassName("faded");}else{$("hiddenItems").removeClassName("faded");}}this._inited=true;},_initElement:function(id){var params=this._elements.get(id);if(!params||params.vis=="hidden"){return false;}if(params._inited){if(params.container){params.container.setAttribute("playray:vis",params.vis);params.container.show();}return params.container;}id=params.label+"-"+id;params.container=$("gadgetProto").cloneNode(true);if(params.parentNode){params.parentNode.appendChild(params.container);}else{$("absolute").appendChild(params.container);var x=params.x>0?parseInt(params.x):425,y=params.y>0?parseInt(params.y):50;if(!this.headerPos){this.headerPos=$("sectionid").positionedOffset();}if(this.headerPos[1]>45){y+=this.headerPos[1]-45;}params.container.setStyle({top:y+"px",left:x+"px"});}if(params.zIndex){params.container.setStyle({zIndex:parseInt(params.zIndex)});}params.container.id=id;params.container.addClassName("gadget");params.container.setAttribute("rel","gadget");params.container.setAttribute("playray:label",params.label);params.container.setAttribute("playray:id",params.id);if(params.vis=="hidden"){params.container.addClassName("hidden");}if(Playray.IsCurrentUser){params.container.setStyle({cursor:"move"});var d=new Draggable(params.container,{scroll:window,snap:function(x,y,draggable){if(Playray.Gadgets.restricted){var maxX=Playray.Gadgets.restricted.getWidth()-draggable.element.getWidth(),maxY=Playray.Gadgets.restricted.getHeight()-draggable.element.getHeight();if(x<1){x=1;}else{if(x>maxX){x=maxX-1;}}if(y<1){y=1;}else{if(y>maxY){y=maxY-1;}}}return[x,y];},onEnd:params.preview?null:function(draggable){Playray.Layout.save("abs");}});}var swf=params.container.down("div.gadgetElement");swf.setAttribute("playray:label",params.label);swf.setAttribute("playray:id",params.id);swf.setAttribute("id","_"+id);params.toolbar=params.container.down("div.gadgetToolbar");if(params.toolbar){toolbarActive=false;if(params.parentNode){params.toolbar.remove();}if(Playray.IsCurrentUser){toolbarActive=true;var close=new Element("span",{"class":"hover tooltip",title:Playray.L10n.Hide});close.observe("click",function(e){var el=Event.element(e).up(".gadget");el.removeClassName("focus");Playray.Gadgets.hide(el.getAttribute("playray:id"));Playray.Layout.Customizable.hideElement(e);}.bindAsEventListener(this));close.insert(new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png","class":"icon-15 hide",alt:"",border:0}));params.toolbar.insert(close);var get=new Element("span",{"class":"hover tooltip",title:Playray.L10n.OpenShop});get.observe("click",function(e){Playray.Gadgets.onBlur(Event.element(e).up(".gadget").id);Playray.Siteshop.open("/shop/gadgets");return false;}.bindAsEventListener(this));get.insert(new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png","class":"icon-15 customize",alt:"",border:0}));params.toolbar.insert(get);}else{if(Playray.LoggedIn){toolbarActive=true;var get=new Element("span",{"class":"hover tooltip",title:Playray.L10n.GetGadget});get.observe("click",function(e){Playray.Navigate(_("/people/user/%1/#/shop/gadgets",escape(Playray.LoggedUser)));return false;}.bindAsEventListener(this));get.insert(new Element("img",{src:Playray.Config.FileServer+"/themes/global/img/blank.png","class":"icon-15 customize right",alt:"",border:0}));params.toolbar.insert(get);}}if(toolbarActive){Playray.Tooltips.attach(params.toolbar);}}var vars={contentUrl:Playray.Config.FileServer+"/gadgets/"+params.label+"/"+params.label+".swf",contentId:id};Playray.embedSWF(Playray.Config.FileServer+"/gadgets/"+params.label+"/"+params.label+".swf","_"+id,"__"+id,params.w,params.h,9,vars);params._inited=true;return params.container;},getWrapperVars:function(id){var el=Playray.Gadgets._ids.get(id);if(!el){return null;}var vars={w:el.w,h:el.h};return vars;},onFocus:function(id){},onBlur:function(id){},onClick:function(){},onClose:function(){},API:{objects:$H(),save:function(id,o){var json=o.toJSON();new Ajax.Request("/q/mypage/api/obj",{method:"post",params:{id:id,data:json},onFailure:this._saveFailure.bind(this,res),onComplete:function(res){var res=res.responseText.fromJSON();if(!res.ok||res.ok=="false"){this._saveFailure(res);}}.bind(this)});this.objects.set(id,o);},_saveFailure:function(res){},load:function(id){return this.objects.get(id)||null;},hide:function(id){if($(id)){$(id).hide();}},scale:function(id,pct){if(!$(id)){return;}var pct=pct||1;if(pct>1.5){pct/=100;}if(pct<0.5){pct=0.5;}if(pct>1.5){pct=1.5;}var dim=$(id).getDimensions();var w=parseInt(parseInt(dim.width)*pct),h=parseInt(parseInt(dim.height)*pct);$(id).setStyle({width:w+"px",height:h+"px"});var o=$("_"+id);o.width=w;o.height=h;},move:function(id,dx,dy){if(!$(id)){return;}var x=$(id).getStyle("left");var y=$(id).getStyle("top");$(id).setStyle({left:parseInt(parseInt(x)+parseInt(dx))+"px",top:parseInt(parseInt(y)+parseInt(dy))+"px"});},tween:function(id,dx,dy,dur){if(!$(id)){return;}var dur=dur||1;var x=parseInt($(id).getStyle("left"));var y=parseInt($(id).getStyle("top"));new Effect.Tween($(id),x,x+parseInt(dx),{duration:parseInt(dur)},function(p){this.setStyle({left:p+"px"});});new Effect.Tween($(id),y,y+parseInt(dy),{duration:parseInt(dur)},function(p){this.setStyle({top:p+"px"});});},localize:function(id,str,params){str=Playray.L10n.Gadgets[str]||str;var t=new Template(str,/(^|.|\r|\n)(%(\d))/);try{return t.evaluate(params);}catch(e){return str;}}}};var getWrapperVars=Playray.Gadgets.getWrapperVars;Playray.Mood={container:null,textarea:null,actions:null,submit:null,cancel:null,current:null,_running:false,_hasFocus:false,init:function(){if(!$("moodForm")){return;}this.container=$("moodForm").up();this.actions=$("moodActions");if(!(this.container&&this.actions)){return;}this.textarea=this.container.down("textarea");this.submit=this.actions.down("button.save");this.cancel=this.actions.down("button.cancel");this.textarea.observe("keyup",function(e){var el=Event.element(e);if($F(el).length>90){el.value=el.value.substring(0,90);}this.checkSubmittable(e);}.bindAsEventListener(this));this.textarea.observe("focus",function(e){var el=Event.element(e);if(el.hasClassName("intro")){el.value="";el.removeClassName("intro");}el.removeClassName("disabled");this._hasFocus=true;}.bindAsEventListener(this));this.textarea.observe("blur",function(e){this._hasFocus=false;this.checkSubmittable();}.bindAsEventListener(this));this.current=this.textarea.getAttribute("playray:mood");this.intro=$F(this.textarea);this.checkIntro();},isEmpty:function(){return $F(this.textarea)==""||$F(this.textarea)==this.textarea.getAttribute("title")||$F(this.textarea)==this.current;},checkIntro:function(){if(this._hasFocus){return;}if(this.isEmpty()){this.textarea.value="";this.actions.addClassName("hidden");this.textarea.addClassName("intro");this.textarea.addClassName("disabled");this.textarea.value=this.intro;}},checkSubmittable:function(){if(this.isEmpty()){this.actions.addClassName("hidden");this.submit.stopObserving("click");this.cancel.stopObserving("click");this.checkIntro();}else{this.actions.removeClassName("hidden");this.submit.observe("click",function(e){this.update();e.stop();}.bindAsEventListener(this));this.cancel.observe("click",function(e){this.textarea.value="";this.checkSubmittable();e.stop();}.bindAsEventListener(this));}},update:function(){if(this._running){return;}this._running=true;var qry=new Ajax.Request("/q/mypage/mood",{method:"post",parameters:{mood:$F(this.textarea)},onSuccess:function(req){var res=req.responseText.evalJSON();if(!res.ok||res.ok=="false"){Playray.Dialog.open("error",res.error);}else{this.current=res.mood||"";this.textarea.value=this.current;this.textarea.addClassName("disabled");if(res.html){var el=Playray.Events.add(res.html,"mood");if(el){Playray.Effects.highlight(el);}}else{Playray.Events.hide("mood");}}this.checkSubmittable();this._running=false;}.bind(this)});qry=null;}};Playray.Browser={init:function(){ua=navigator.userAgent.toLowerCase(),this.ua=ua;this.isGecko=(ua.indexOf("gecko")!=-1);this.isMozilla=(this.isGecko&&(ua.indexOf("gecko/")+14==ua.length||ua.indexOf("firefox")!=-1));this.isNS=((this.isGecko)?(ua.indexOf("netscape")!=-1):((ua.indexOf("mozilla")!=-1)&&(ua.indexOf("spoofer")==-1)&&(ua.indexOf("compatible")==-1)&&(ua.indexOf("opera")==-1)&&(ua.indexOf("webtv")==-1)&&(ua.indexOf("hotjava")==-1)));this.isIE=((ua.indexOf("msie")!=-1)&&(ua.indexOf("opera")==-1)&&(ua.indexOf("webtv")==-1));this.isFirefox=(ua.indexOf("firefox")!=-1);this.isOpera=(ua.indexOf("opera")!=-1);this.isOpera9up=(ua.indexOf("opera/9")!=-1||ua.indexOf("opera/1")!=-1);this.isKonqueror=(ua.indexOf("konqueror")!=-1);this.isSafari=(ua.indexOf("safari")!=-1);this.isChrome=(ua.indexOf(" chrome")!=-1);this.isWebkit=this.isKonqueror||this.isSaferi||this.isChrome;this.hasW3CDOM=(document.createElement&&document.getElementsByTagName);this.isIECompatible=((ua.indexOf("msie")!=-1)&&!this.isIE);this.isNSCompatible=((ua.indexOf("mozilla")!=-1)&&!this.isNS&&!this.isMozilla);this.versionMinor=parseFloat(navigator.appVersion);if(this.isNS&&this.isGecko){this.versionMinor=parseFloat(ua.substring(ua.lastIndexOf("/")+1));}else{if(this.isIE&&this.versionMinor>=4){this.versionMinor=parseFloat(ua.substring(ua.indexOf("msie ")+5));}else{if(this.isOpera){if(ua.indexOf("opera/")!=-1){this.versionMinor=parseFloat(ua.substring(ua.indexOf("opera/")+6));}else{this.versionMinor=parseFloat(ua.substring(ua.indexOf("opera ")+6));}}else{if(this.isKonqueror){this.versionMinor=parseFloat(ua.substring(ua.indexOf("konqueror/")+10));}else{if(this.isFirefox){this.versionMinor=parseFloat(ua.substring(ua.lastIndexOf("/")+1));}}}}}this.versionMajor=parseInt(this.versionMinor,0);this.geckoVersion=((this.isGecko)?ua.substring((ua.lastIndexOf("gecko/")+6),(ua.lastIndexOf("gecko/")+14)):-1);this.isWin=(ua.indexOf("win")!=-1);this.isWin32=(this.isWin&&(ua.indexOf("95")!=-1||ua.indexOf("98")!=-1||ua.indexOf("nt")!=-1||ua.indexOf("win32")!=-1||ua.indexOf("32bit")!=-1));this.isMac=(ua.indexOf("mac")!=-1);this.isUnix=(ua.indexOf("unix")!=-1||ua.indexOf("linux")!=-1||ua.indexOf("sunos")!=-1||ua.indexOf("bsd")!=-1||ua.indexOf("x11")!=-1);this.isKHTML=(this.isKonqueror||this.isSafari||ua.indexOf("khtml")!=-1);this.isNS4x=(this.isNS&&this.versionMajor==4);this.isNS40x=(this.isNS4x&&this.versionMinor<4.5);this.isNS47x=(this.isNS4x&&this.versionMinor>=4.7);this.isNS4up=(this.isNS&&this.versionMinor>=4);this.isNS6x=(this.isNS&&this.versionMajor==6);this.isNS6up=(this.isNS&&this.versionMajor>=6);this.isIE4x=(this.isIE&&this.versionMajor==4);this.isIE4up=(this.isIE&&this.versionMajor>=4);this.isIE5x=(this.isIE&&this.versionMajor==5);this.isIE55=(this.isIE&&this.versionMinor==5.5);this.isIE5up=(this.isIE&&this.versionMajor>=5);this.isIE6x=(this.isIE&&this.versionMajor==6);this.isIE6up=(this.isIE&&this.versionMajor>=6);this.isIE7x=(this.isIE&&this.versionMajor==7);this.isIE7up=(this.isIE&&this.versionMajor>=7);this.isIE8x=(this.isIE&&this.versionMajor==8);this.isIE8up=(this.isIE&&this.versionMajor>=8);this.isIE4xMac=(this.isIE4x&&this.isMac);this.isFirefox2=(this.isFirefox&&this.versionMajor==2);this.isFirefox3=(this.isFirefox&&this.versionMajor==3);this.isFirefox30=(this.isFirefox&&this.versionMajor==3&&this.versionMinor-this.versionMajor==0);this.hasShimSupport=(this.isFirefox||this.isIE||this.isChrome)&&!this.isMac;this.hasFlash=swfobject&&swfobject.hasFlashPlayerVersion&&swfobject.hasFlashPlayerVersion("7");this.hasFlash9=this.hasFlash&&swfobject.hasFlashPlayerVersion("9");this.hasFlash10=this.hasFlash&&swfobject.hasFlashPlayerVersion("10");return this;}};Playray.Votes={_container:null,_campaign:null,_targetId:null,_timer:null,open:function(campaign,targetId,action,magnet,options){if(!Playray.LoggedUserId){return;}var qry=new Ajax.Request("/q/vote/"+campaign+"/template/"+targetId,{method:"get",onSuccess:function(req){this._campaign=campaign;this._targetId=targetId;this._container=this.appendContainer();this._container.update(req.responseText);this.attachBehaviours();this._container.show();if(magnet){options=options||{};this._container.absolutize();this._container.clonePosition(magnet,options);this._container.setStyle({zIndex:999});}}.bind(this)});},vote:function(type,purchase,voteBtn){if(!this._campaign||!this._targetId){alert("error");return;}if(voteBtn&&voteBtn.hasClassName("disabled")){return;}var qry=new Ajax.Request("/q/vote/"+this._campaign+"/cast/"+this._targetId,{method:"post",parameters:{type:type,purchase:purchase},onLoading:function(req){if(voteBtn){voteBtn.addClassName("disabled");}},onSuccess:function(req){if(voteBtn){voteBtn.removeClassName("disabled");}var result=req.responseText.evalJSON();if(type=="super"&&!result.ok){this._container.down("#voteScreen").addClassName("hidden");this._container.down("#supervoteHelpScreen").removeClassName("hidden");}else{if(!result.ok){this._container.down("div.votebuttons").addClassName("hidden");this._container.down("div.alreadyvoted").removeClassName("hidden");}else{if(type=="super"){this._container.down("#supervoteHelpScreen").addClassName("hidden");this._container.down("#supervoteAddedScreen").removeClassName("hidden");if(purchase>0&&result.price){Playray.updateCount("credits",Playray.getCount("credits")-result.price);}}else{this._container.down("#voteScreen").addClassName("hidden");this._container.down("#voteAddedScreen").removeClassName("hidden");}}}}.bind(this)});},order:function(type){var voteScreen=this._container.down("#voteScreen");var helpScreen=this._container.down("#supervoteHelpScreen");if(voteScreen){voteScreen.addClassName("hidden");}if(helpScreen){helpScreen.removeClassName("hidden");}},check:function(type){var voteScreen=this._container.down("#voteScreen");var helpScreen=this._container.down("#supervoteHelpScreen");var pendingScreen=this._container.down("#supervotePendingScreen");var errorScreen=this._container.down("#errorScreen");if(voteScreen){voteScreen.addClassName("hidden");}if(helpScreen){helpScreen.addClassName("hidden");}if(pendingScreen){pendingScreen.removeClassName("hidden");}var _count=0;_check=function(req){clearTimeout(this._timer);if(typeof req=="object"){var votes=req.responseText.evalJSON();if(type=="super"&&votes["super"]>0){if(pendingScreen){pendingScreen.addClassName("hidden");}this.vote(type);return;}}_count++;if(_count>20){if(pendingScreen){pendingScreen.addClassName("hidden");}if(errorScreen){errorScreen.removeClassName("hidden");}return;}this._timer=setTimeout(function(){var qry=new Ajax.Request("/q/vote/"+this._campaign+"/poll/",{method:"get",onSuccess:_check});}.bind(this),5000);}.bind(this);_check(false);},resetView:function(){var qry=new Ajax.Request("/q/vote/"+this._campaign+"/template/"+this._targetId,{method:"get",onSuccess:function(req){this._container.update(req.responseText);this.attachBehaviours();}.bind(this)});},closeContainer:function(){if(this._timer){clearTimeout(this._timer);}if(this._container){this._container.hide();}},appendContainer:function(){var containerId="modalVotesContainer";var container=$(containerId);if(!container){b=document.getElementsByTagName("body")[0];container=document.createElement("div");Element.extend(container);container.id=containerId;container.addClassName(this._campaign);container.hide();b.appendChild(container);}else{container.addClassName(this._campaign);container.hide();}return container;},attachBehaviours:function(){var closeBtn=this._container.down("a[rel=close]");if(closeBtn){Event.observe(closeBtn,"click",function(){Playray.Votes.closeContainer();});}var voteBtns=this._container.getElementsBySelector("a[rel=vote]");if(voteBtns){voteBtns.each(function(btn){Event.observe(btn,"click",function(){Playray.Votes.vote("normal");});});}var svoteBtn=this._container.down("a[rel=supervote]");if(svoteBtn){Event.observe(svoteBtn,"click",function(e){Playray.Votes.vote("super",null,svoteBtn);e.stop();}.bindAsEventListener(this));}var csvoteBtn=this._container.down("div[rel=getsupervote]");if(csvoteBtn){Event.observe(csvoteBtn,"click",function(e){Playray.Votes.vote("super",1,csvoteBtn);e.stop();}.bindAsEventListener(this));}var svoteOrderBtn=this._container.down("a[rel=ordersupervote]");if(svoteOrderBtn){Event.observe(svoteOrderBtn,"click",function(){Playray.Votes.order("super");});}var checkBtn=this._container.down("a[rel=checksupervote]");if(checkBtn){Event.observe(checkBtn,"click",function(){Playray.Votes.check("super");});}var resetBtns=this._container.getElementsBySelector("a[rel=resetview]");if(resetBtns){resetBtns.each(function(btn){Event.observe(btn,"click",function(){Playray.Votes.resetView();});});}}};Playray.Fightems={API:"/q/mypage/fightems",sizes:{viewer:{w:320,h:150},game:{w:700,h:400}},campaign:null,opponent:null,ts:null,init:function(){this.viewer=$("fightem");if(!this.viewer){return;}this.campaign=this.viewer.getAttribute("playray:campaign");this.opponent=this.viewer.getAttribute("playray:opponent");if(!this.campaign){return;}this.viewer.setStyle({width:this.sizes.viewer.w+"px",height:this.sizes.viewer.h+"px"});Playray.embedSWF(_("%1/swf/fightems/%2_viewer.swf",Playray.Config.FileServer,this.campaign),"fightem","_fightem",this.sizes.viewer.w,this.sizes.viewer.h,9,{baseXMLUrl:_("/xml/fightems/%1/%2.xml",this.campaign,this.opponent)});},open:function(){if(!this.viewer&&this.opponent){return;}Playray.Modal.toggle(null,true);if(this.container){this.container.show();this.container.childElements().invoke("show");return;}this.container=new Element("div",{id:"__"+this.campaign});this.container.setStyle({width:this.sizes.game.w+"px",height:this.sizes.game.h+"px"});document.body.appendChild(this.container);Playray.embedSWF(_("%1/swf/fightems/%2.swf",Playray.Config.FileServer,this.campaign),"__"+this.campaign,"___"+this.campaign,this.sizes.game.w,this.sizes.game.h,9,{baseXMLUrl:_("/xml/fightems/%1/%2.xml",this.campaign,this.opponent)});Position.center(this.container);this.viewer.hide();this._track("open");},close:function(reopen){if(!this.container){return;}if(reopen){Playray.reloadSWF(this.container);return;}delete this.ts;this.container.hide();Playray.Modal.closeModal();this.viewer.show();},fight:function(){ret=this._sjax("fight",this.opponent);this._track("fight");return ret;},update:function(){var params=this.ts>0?{ts:this.ts}:null;var uid=this.opponent;if(!uid||uid==Playray.LoggedUserId){uid="me";}ret=this._sjax("update",uid,params);if(this.container&&this.container.visible()&&ret.ok){this.ts=parseInt(new Date().getTime().toString().substring(0,10));}return ret;},get:function(){ret=this._sjax("purchase");if(ret.ok){this._track("purchase");if(ret.balance){Playray.updateCount("credits",ret.balance);}}return ret;},_sjax:function(action,mode,params){var uri=[this.API,action,this.campaign,mode].join("/").replace(/\/+$/,"");var req=new Ajax.Request(uri,{method:"get",asynchronous:false,parameters:params});var ret=req.transport.responseText.evalJSON();if(!ret.ok&&ret.error&&ret.error.match("session","i")){document.location+="/#login";return;}return ret;},_track:function(event){}};Playray.Track={hash:function(section,addtl){this.impr(_("/%1/%2/",section,self.document.location.hash.substring(1)+(addtl?"/"+addtl:"")));},chargen3:function(url){this.impr(_("/chargen3/%1/",url));},event:function(a,b,c,d){if(!(a&&b)){return;}if(!c){c=this._getDemo();}if(!Playray.GA){return;}Playray.GA._trackEvent(a,b,c,d);if(Playray.GAG){Playray.GAG._trackEvent(a,b,c,d);}},_getDemo:function(){if(Playray.LoggedIn){var a=Playray.LoggedUserA;if(!a){ag="-";}else{if(a<10){ag="-10";}else{if(a>=10&&a<=14){ag="10-14";}else{if(a>=15&&a<=19){ag="15-19";}else{if(a>=20&&a<=24){ag="20-24";}else{if(a>=25&&a<=29){ag="25-29";}else{if(a>=30&&a<=44){ag="30-44";}else{if(a>=45){ag="45-";}}}}}}}}return Playray.LoggedUserG+"/"+ag;}return"nr/nr";},impr:function(url){if(!url){return;}url=url.replace(/\/\/+/g,"/");if(!Playray.GA){return;}Playray.GA._trackPageview(url);if(Playray.GAG){Playray.GAG._trackPageview(url);}}};Playray.Rate={_bindTo:"a[rel~=rate]",init:function(){Playray.Rate.Mypage.init();},attach:function(){Playray.Rate.Mypage.attach();var elems=document.getElementsByTagName("*");var i=0;l=elems.length;for(;i<l;i++){var el=elems[i];if(!el.rel||!el.rel.match(/\brate\b/)){continue;}Event.observe(el,"click",this.vote.bindAsEventListener(this));}},vote:function(e){if(!e){return;}var elem=e.findElement("a");var href=elem.getAttribute("playray:action")||elem.href;var arr=href.split("/");var vote=arr[arr.length-1];var qry=new Ajax.Request(href,{method:"post",parameters:{mode:"ajax",vote:vote},requestHeaders:{Accept:"application/json"},onLoading:this._loading.bind(this,elem),onSuccess:this._success.bind(this,elem),onFailure:this._failure.bind(this,elem)});e.stop();return false;},_loading:function(elem,request){elem.fire("Playray::rateLoading");},_success:function(elem,request){var json=request.responseText.evalJSON(true);elem.fire("Playray::rateSuccess",json);var src=elem.up(".rate-forum");if(typeof json=="object"&&src){src.down(".rates").update(json.rating);var dir=json.vote<0?"down":"up";src.down(".thumb"+dir).setAttribute("title",json.msg+" "+json.vote);src.down(".thumb"+dir).toggleClassName("hidden");src.down(".rate").hide();src.removeClassName("spinner");Playray.Effects.appear(src.down(".rated"));}},_failure:function(elem,request){elem.fire("Playray::rateFailure");}};Playray.Rate.Mypage={_handlers:new Hash(),_containerId:"rate-mypage",_container:null,_timer:null,_votetimer:null,init:function(){this._container=$(this._containerId);if(!this._container){return;}this._handlers.set("mouseout",this._out.bindAsEventListener(this));this._handlers.set("mouseover",this._over.bindAsEventListener(this));this._handlers.set("showvote",this._showvote.bindAsEventListener(this));this._handlers.set("hidevote",this._hidevote.bindAsEventListener(this));this._handlers.set("success",this._success.bindAsEventListener(this));},attach:function(){if(!this._container){return;}var ratedcontainer=this._container.down("div.ratedcontainer");var ratecontainer=this._container.down("div.ratecontainer");if(ratedcontainer&&ratecontainer){ratedcontainer.observe("mouseover",this._handlers.get("showvote"));ratecontainer.observe("mouseout",this._handlers.get("hidevote"));ratecontainer.descendants().each(function(c){c.observe("mouseover",function(){clearTimeout(this._votetimer);}.bindAsEventListener(this));}.bind(this));}var lnks=this._container.select(Playray.Rate._bindTo);lnks.each(function(lnk){lnk.observe("mouseover",this._handlers.get("mouseover"));lnk.observe("mouseout",this._handlers.get("mouseout"));lnk.observe("Playray::rateSuccess",this._handlers.get("success"));}.bind(this));},_showvote:function(e){clearTimeout(this._votetimer);var elem=e.findElement("div.ratedcontainer");var ratecontainer=elem.previous("div.ratecontainer");elem.hide();ratecontainer.show();e.stop();},_hidevote:function(e){this._votetimer=setTimeout(function(){if(typeof e.type=="string"){var elem=e.findElement("div.ratecontainer");var ratedcontainer=elem.next("div.ratedcontainer");elem.hide();ratedcontainer.show();}}.bind(this),200);},_over:function(e){clearTimeout(this._timer);var lnk=e.findElement("a");lnk.previousSiblings().invoke("addClassName","over");lnk.addClassName("over");lnk.nextSiblings().invoke("removeClassName","over");},_out:function(e){this._timer=setTimeout(function(){var lnks=this._container.select(Playray.Rate._bindTo);lnks.invoke("removeClassName","over");}.bind(this),200);},_success:function(e){var json=e.memo;if(typeof json=="object"&&json.injectcontent){var content=decodeURIComponent(json.injectcontent);this._container.update(content);Playray.Effects.pulsate(this._container);Playray.Tooltips.attach();}}};Playray.Notify={queue:[],listeners:{persistent:{},once:{}},isBlocked:false,init:function(){Playray.Notify.Modules.Nagger.init();},delegate:function(str){try{var o=typeof str=="string"?str.evalJSON():str;$H(o).each(function(el){if(el.key.match(/block/)){this.isBlocked=el.value.toString().toLowerCase()!="false";if(this.isBlocked){return;}else{}}else{if(this.Handlers[el.key]&&typeof this.Handlers[el.key].exec=="function"){this.queue.push({fn:el.key,arg:el.value});}else{var args=arguments||[];}}}.bind(this));}catch(e){}if(!this.isBlocked){this._delegate();}else{if(this.queue.length){}}},_delegate:function(){if(this.isBlocked||!this.queue.length){return;}var el;while(el=this.queue.shift()){if(!(el&&el.fn&&el.arg)){continue;}var args=this.Handlers[el.fn].exec(el.arg);if(this.listeners&&(this.listeners.persistent[el.fn]||this.listeners.once[el.fn])){if(this.listeners.persistent[el.fn]){var n=this.listeners.persistent[el.fn].length;if(n){for(var i=0;i<n;i++){this.listeners.persistent[el.fn][i]();}}}if(this.listeners.once[el.fn]){n=this.listeners.once[el.fn].length;if(n){for(var i=0;i<n;i++){this.listeners.once[el.fn][i]();}this.listeners.once=[];}}}}},listen:function(handler,fn,isPersistent){var type=isPersistent?"persistent":"once";if(!this.listeners[type][handler]){this.listeners[type][handler]=[];}this.listeners[type][handler].push(fn);},Handlers:{message:{exec:function(o){o.parent=$("gamecontainer");Playray.Layout.Overlay.box(o);}},loading:{exec:function(o){var isReady=o.match(/finished/);if(isReady){if(typeof draugiemResizeIframe=="function"){draugiemResizeIframe();}}}},jvm:{exec:function(o){var id="cert886582";if(o.vendor.match(/^sun microsystems/i)&&o.version.match(/^1\.6\.0_1\d$/)){if($(id)&&!Playray.getCookie(id)){Playray.Effects.appear($(id));Playray.setCookie(id,1,7);}}}},log:{exec:function(o){var params={};$H(o).each(function(oo){params[oo.key]=Object.toJSON(oo.value);});var xhr=new Ajax.Request("/q/log",{method:"post",parameters:params});}},track:{exec:function(o){if(typeof o=="string"&&o.length){Playray.Track.impr(o);}}},trackevent:{exec:function(o){if(typeof o=="object"&&o.category&&o.action){Playray.Track.event(o.category,o.action,o.label,o.value);}}},info:{exec:function(o){Playray.updateCount("ranking",o.ranking,{pulsate:true});Playray.updateCount("credits",o.credits,{pulsate:true});Playray.updateCount("chips",o.chips,{pulsate:true});}},badgeaward:{data:null,containerId:"medalInfo",container:null,swf:null,active:false,_awarded:new Array(),exec:function(o){if(!Playray.LoggedIn||!Playray.Browser.hasShimSupport||!Playray.Browser.hasFlash10){return;}this.data=o;if(this._awarded[this.data.id]||this.active){return;}this.active=true;var xhr=new Ajax.Request("/q/medal",{method:"post",parameters:{id:this.data.id},onComplete:this.onComplete.bind(this)});},onComplete:function(res){var o=res.responseText.evalJSON();if(!o){return;}var i,len;var medals={};for(i=0,len=o.medals.length;i<len;i++){medals[o.medals[i].id]=o.medals[i];}if(!medals[this.data.id]){this.active=false;return;}this.config={content:Playray.L10n.MedalInfo,user_info:{login:Playray.LoggedUser,score:o.score,level:o.level,level_score:o.level_score,next_level:o.next_level,next_level_score:o.next_level_score,prev_level:o.prev_level,prev_level_score:o.prev_level_score},specs:{back_to_game:"Playray.Layout.Overlay.close",level_icon_folder:Playray.Config.FileServer+"/themes/global/img/icons/starleague/"},medals:medals,current_medal:this.data.id};if(o.event_id>0){var func="_share_"+o.event_id;this[func]=function(){Playray.Facebook.handleEvent(o.event_id);};this.config.specs.share="Playray.Notify.Handlers.badgeaward."+func;}if(Playray.Layout.Overlay.isActive()){Playray.Layout.Overlay.close(Playray.Layout.Overlay.active);}if($(this.containerId)){$(this.containerId).remove();}var elId="medal-"+this.data.id+"-"+parseInt(new Date().getTime());this.container=new Element("div",{id:this.containerId}).insert(new Element("div",{id:elId}));this.container.setStyle({width:"656px",height:"359px",backgroundColor:"white"});Playray.Layout.Overlay.show(this.container,{parent:$("gamecontainer"),onReady:this.createFlash.bind(this,elId),onClose:function(){this.active=false;}.bind(this)},{removeOnHide:true});this._awarded[this.data.id]=true;Playray.updateCount("starpoints",o.score,{onUpdate:function(el){var bar=el.up(".starbar");if(!bar){return;}var cur=bar.down(".curscore");if(cur){var old=parseInt(cur.getStyle("left"));var pct=Math.round((o.score-o.level_score)/(o.next_level_score-o.level_score)*100);cur.setStyle({left:pct+"%"});}var thislevel=bar.down("*[rel~=starpoints_thislevel]");if(!thislevel){return;}if(parseInt(thislevel.innerHTML)&&o.level>parseInt(thislevel.innerHTML)){thislevel.update(o.level);bar.down("*[rel~=starpoints_thislimit]").update(o.level_score);bar.down("*[rel~=starpoints_nextlevel]").update(o.next_level);bar.down("*[rel~=starpoints_nextlimit]").update(o.next_level_score);}}});},createFlash:function(elId){Playray.flash(Playray.Config.FileServer+"/swf/medalInfo/"+Playray.Config.MedalinfoVersion+"/medalInfo.swf",elId,"_"+elId,650,350,10,{json:"Playray.Notify.Handlers.badgeaward.getConfig"});this.swf=$("_"+this.elId);},getConfig:function(){return this.config;}},badgenotify:{_cache:{},exec:function(o){if(Playray.LoggedIn){return;}var id=parseInt(o.id);if(!this._cache[id]){this._cache[id]=true;Playray.Notify.Modules.Nagger.exec("nagger_game_medal");}}},scorenotify:{_cache:{},exec:function(o){var score=parseInt(o.compscore);if(!this._cache[o.subgame]||this._cache[o.subgame]<score){this._cache[o.subgame]=score;}if(this._cache[o.subgame]<=score){Playray.Notify.Modules.Nagger.exec("nagger_game_result");}}},chargen:{exec:function(o){$H(o).each(function(oo){Playray.Notify.Modules.Chargen[oo.key]&&Playray.Notify.Modules.Chargen[oo.key](oo.value);});}}},Modules:{Chargen:{flags:{modified:false},characterModified:function(bool){bool=Boolean(bool)&&!bool.toString().match(/^\s*(f|false|0)\s*$/);if(this.flags.modified!=bool){this.flags.modified=bool;if(bool){Event.observe(window,"beforeunload",function(e){e.returnValue=Playray.L10n.ConfirmChargenClose;});Event.observe(window,"Playray:closeModal",function(e){if(confirm(Playray.L10n.ConfirmChargenClose)){Event.stopObserving(window,"beforeunload");Event.stopObserving(window,"Playray:closeModal");this.flags.modified=false;return true;}else{Event.stop(e);return false;}}.bind(this));}else{Event.stopObserving(window,"beforeunload");Event.stopObserving(window,"Playray:closeModal");Event.observe(window,"Playray:closeModal",function(e){if(Playray.Character._editingSkinId=="new"){Playray.Reload();Event.stop(e);return false;}else{Playray.Character.refreshBitmaps();Playray.Config.GenVersion=3;Playray.Character.display();}});}}}},Nagger:{parentId:"gamecontainer",container:null,frequency:{},invocations:{},_inited:false,init:function(){if(this._inited){return;}this._inited=true;if(!$("gameclient")){return;}this.frequency={nagger_game_load:Playray.Config.NagFrequency||0,nagger_game_result:Playray.Config.NagFrequency||0,nagger_game_medal:Playray.Config.NagFrequency||0};if($("nagger_game_preroll")&&$("preroll")){var zone,container;if($("gamecontainer")&&$("gameclient")){zone=$("nagger_game_preroll").remove();zone.id="";zone.show();container=$("preroll");container.id="nagger_game_preroll";container.down("div.zone").replace(zone);container.setStyle({background:$("gamecontainer").getStyle("background"),backgroundPosition:"center -11px",height:Math.max(420,$("gameclient").getHeight()+30)+"px"});}var displaySec=6;if(zone.down(".video")){zone.observe("Playray:onVideoFinish",function(e){Playray.Layout.Overlay.close();});displaySec=15;}this.exec("nagger_game_preroll",Math.round(displaySec*1000*1.5));if(displaySec>0){Playray.flash(Playray.Config.FileServer+"/swf/progressbar.swf","progressbar","progressbar",200,20,10,{barWidth:200,loadTime:displaySec,onReady:"Playray.Layout.Overlay.close"});}if($("nagger_game_preroll").down(".ad img[rel~=close]")){$("nagger_game_preroll").down(".ad img[rel~=close]").hide();}if(zone&&container){var dims;if(zone.down(".ad a img")){dims=zone.down(".ad a img").getDimensions();}else{if(zone.down(".ad object")&&zone.down(".ad object").getAttribute("width")){var o=zone.down(".ad object");dims={width:o.getAttribute("width"),height:o.getAttribute("height")};}else{if(zone.down(".ad").getWidth()>310){dims=zone.down(".ad").getDimensions();}}}if(dims.width){container.select(".setouterdim,.setinnerdim").invoke("setStyle",{width:Math.max(325,parseInt(dims.width)+20)+"px"});}if(dims.height){if(parseInt(dims.height)>350){container.down(".setouterdim").setStyle({marginTop:"10px"});}container.select(".setouterdim").invoke("setStyle",{height:Math.max(350,parseInt(dims.height)+100)+"px"});container.select(".setinnerdim").invoke("setStyle",{height:Math.max(290,parseInt(dims.height)+40)+"px"});}}zone.observe("Playray:onAdClick",function(e){setTimeout(function(){Playray.Layout.Overlay.close();},500);});}if($("nagger_game_load")){setTimeout(this.exec.bind(this,"nagger_game_load"),1000);}if(Playray.Config.NagDelayMins&&$("nagger_game_delayed")){setTimeout(this.exec.bind(this,"nagger_game_delayed"),Playray.Config.NagDelayMins*60*1000);}},exec:function(id,timeout){el=$(id);if(!(el&&el.down(".ad"))||(Playray.Layout.Shim.isNeeded()&&!Playray.Layout.Shim.isAvailable())){return;}if(!this.invocations[id]){this.invocations[id]=0;}if(this.frequency[id]&&this.invocations[id]%this.frequency[id]!=0){return;}this.invocations[id]++;Playray.Layout.Overlay.show(el,{parent:$(this.parentId),closeTimeout:timeout||0,onReady:function(el){var btn=el.down(".button");if(btn){setTimeout(function(){Playray.Effects.pulsate(btn,2,2);},2000);el.observe("click",function(e){var eSrc=Event.element(e);if(!eSrc.getAttribute("href")){eSrc=eSrc.up("a");}if(eSrc&&eSrc.getAttribute("href")&&eSrc.getAttribute("href").match("account/create")){var href=eSrc.getAttribute("href");href+=href.indexOf("?")==-1?"?":"&";href+="from="+escape(self.document.location.pathname);eSrc.setAttribute("href",href);eSrc.addClassName("spinner");Playray.Layout.Overlay.ajax(href,{parent:$("gamecontainer"),onLoading:function(){eSrc.addClassName("spinner");},onComplete:function(){Playray.Site.Registration.init();FB.XFBML.parse(Playray.Site.Registration._container);Playray.URL+="#nagger";}});Event.stop(e);return false;}});}}});}}}};Playray.ColorPicker={swf:"/swf/colorPicker.swf",selector:"*[rel~=colorpicker]",visible:false,container:null,bind:function(fn,tgt){if(typeof fn=="function"){this.fn=fn;}else{if(!fn||!eval("typeof "+fn+' == "function"')){return;}eval("this.fn = "+fn);}if(!this.fn){return;}this.tgt=tgt||$(document.body);var tgts=this.tgt.select(this.selector);if(!tgts.length){return;}tgts.each(function(el){el.stopObserving("click");el.observe("click",this.open.bindAsEventListener(this));}.bind(this));},open:function(e){var src=Event.element(e);Event.stop(e);if(!src){return;}if(!this.container){this.container=new Element("div",{id:"_colorpicker",style:"width: 210px; height: 170px; position: absolute"});this.tgt.insert(this.container);}this.container.clonePosition(src,{setWidth:false,setHeight:false,offsetLeft:-5,offsetTop:-5});this.container.set;Playray.flash(Playray.Config.FileServer+this.swf,"_colorpicker","__colorpicker",210,170,9,{onChange:"Playray.ColorPicker.update",onClose:"Playray.ColorPicker.close"});this.container.show();this.id=src.id;document.observe("click",function(e){if(this.container&&!Event.element(e).up("#"+this.container.id)){this.close();e.stop();}}.bindAsEventListener(this));this.visible=true;},update:function(color){if(typeof this.fn=="function"){this.fn(this.id,color);}},close:function(){this.visible=false;this.container.remove();this.container=null;document.stopObserving("click");}};Playray.DatePicker={swf:"/swf/datePicker.swf",selector:"*[rel~=datepicker]",visible:false,container:null,bind:function(fn,tgt){if(typeof fn=="function"){this.fn=fn;}else{if(!fn||!eval("typeof "+fn+' == "function"')){return;}eval("this.fn = "+fn);}if(!this.fn){return;}this.tgt=tgt||$(document.body);var tgts=this.tgt.select(this.selector);if(!tgts.length){return;}tgts.each(function(el){el.stopObserving("click");el.observe("click",this.open.bindAsEventListener(this));}.bind(this));},open:function(e){var src=Event.element(e);Event.stop(e);if(!src){return;}if(!this.container){this.container=new Element("div",{id:"_datepicker",style:"width: 210px; height: 170px; position: absolute"});this.tgt.insert(this.container);}this.container.clonePosition(src,{setWidth:false,setHeight:false});Playray.flash(Playray.Config.FileServer+this.swf,"_datepicker","__datepicker",210,170,9,{jsFunc:"Playray.DatePicker.update"});this.container.show();this.id=src.id;document.observe("click",function(e){if(this.container&&!Event.element(e).up("#"+this.container.id)){this.close(e);}}.bindAsEventListener(this));this.visible=true;},update:function(date,readable){if(date.toString().length>10){date=parseInt(date/1000);}if(this.fn){this.fn(date,readable);}this.close();},close:function(e){this.visible=false;this.container.remove();this.container=null;document.stopObserving("click");}};Playray.RandomDisplayer={container:null,iter:0,init:function(id,el,display){if($("gameclient")||$("application")){return;}this.id=id;this.el=el;this.display=display;setTimeout(this.appear.bind(this),this.display.first*1000);},appear:function(){if(this.iter>=this.display.times||Playray.Modal.isActive()){return;}if(!this.container){this.container=new Element("div",{id:this.id,style:"display: none"});$(document.body).insert(this.container);if(this.el.src.match(".swf")){Playray.flash(this.el.src,this.id,"_"+this.id,this.el.w,this.el.h,9,{jsFunc:"Playray.RandomDisplayer.click"});}else{this.container.insert(new Element("img",{src:this.el.src,width:this.el.w,height:this.el.h,id:this.id}));this.container.observe("click",this.click.bind(this));}}var x=this.el.w+Math.floor(Math.random()*parseInt(window.getWidth())-this.el.w+1),y=this.el.h+Math.floor(Math.random()*parseInt(window.getHeight())-this.el.h+1);if(x<0){x=0;}if(y<0){y=0;}this.container.setStyle({position:"absolute",top:y+"px",left:x+"px",zIndex:900});this.container.show();this.timer=setTimeout(this.disappear.bind(this),this.display.sec*1000);},disappear:function(){if(this.container){this.container.hide();}if(++this.iter<this.display.times){this.timer=setTimeout(this.appear.bind(this),this.display.sleep*1000);}},click:function(){var params={};params[this.id]=true;var xhr=new Ajax.Request("/",{method:"post",parameters:params,onComplete:function(res){var res=res.responseText.evalJSON();if(res.ok&&res.url){Playray.Modal.openModal(res.url);}}.bind(this)});if(this.timer){clearTimeout(this.timer);}this.timer=setTimeout(function(){this.container.hide();this.container.remove();this.timer=null;}.bind(this),1000);}};Playray.Facebook={enabled:false,domain:null,scope:null,inCanvas:self.location.search.match("fb_sig_in_iframe")?true:false,init:function(domain,scope){this.domain=this.domain||domain;this.scope=this.scope||scope;if(!FB){return;}this.enabled=true;if(this.inCanvas){this.initCanvasMode();}else{if(top.location!=self.location){window.top.location.href=self.location.href;}else{this.updateUserVars();this.attach();}}},initCanvasMode:function(){if(!this.enabled){return;}FB.Canvas.setAutoResize();var btn=$("menu").down("a[href$=/account/create/]");if(btn){var ul=btn.up("ul");btn.remove();var fb=new Element("div",{className:"left leftspacer topspacer"});FB.getLoginStatus(function(response){var label=response.session?"Log in to Playray!":"Sign up to Playray!";fb.update(_('<fb:login-button v="2" size="large">%1</fb:login-button>',label));ul.insert({after:fb});FB.XFBML.parse(ul);FB.Event.subscribe("auth.login",function(response){});}.bind(this));}},updateUserVars:function(cb){var supportedVars=["name","first_name","last_name","location"];var els=$$(".facebook");if(els.length){FB.api("/me",function(res){var ok=false;if(res){var re=new RegExp(_("\\bfb[:-](%1)\\b",supportedVars.join("|")));els.each(function(el){var matches=el.className.match(re);if(matches&&matches[1]&&res[matches[1]]){el.update(res[matches[1]]);}});ok=true;}if(typeof cb=="function"){cb(ok);}});}},attach:function(el){if(!this.enabled){return;}el=el||$(document.body);if(FB){FB.XFBML.parse(el);FB.Event.subscribe("edge.create",this.track.bind(this,"edge.create"));FB.Event.subscribe("comments.add",this.track.bind(this,"comments.add"));}this._handlers={login:this.onLogin.bindAsEventListener(this),share:this.onShare.bindAsEventListener(this),bookmark:this.onBookmark.bindAsEventListener(this)};el.select("*[rel~=facebook]").each(function(el){var matches=el.getAttribute("rel").match(/facebook (\w+)/);if(this._handlers[matches[1]]){el.observe("click",this._handlers[matches[1]]);}}.bind(this));},track:function(type,id){if(Playray.L10n.GameCode){id=Playray.L10n.GameCode;}Playray.Track.event("facebook."+type,id);},create:function(gender){if(!this.enabled){return;}if(!Playray.LoggedIn&&FB.getSession()){Playray.Modal.openModal("/account/create/"+(gender||"start"));}},onLogin:function(e){if(e){Event.stop(e);}return FB.getSession()?this.login():null;},login:function(){if(!self.document.location.host.match(new RegExp(this.domain.escapeRegExp()+"$"))){Playray.Navigate(_("http://%1%2/q/session/login/facebook/",Playray.COUNTRY,this.domain));return;}if(!this.enabled){return;}if(Playray.Modal.isActive()){Playray.Modal.closeModal();}Playray.Modal.toggle();Playray.Modal.showSpinner();if(FB.getSession()){this.authenticate();}else{FB.login(function(response){if(response.session){this.authenticate();}}.bind(this),{perms:this.scope});}return false;},authenticate:function(){if(!this.enabled){return;}if(Playray.Modal.isActive()){Playray.Modal.closeModal();}Playray.Modal.toggle();Playray.Modal.showSpinner();var xhr=new Ajax.Request("/q/facebook/auth",{method:"post",onComplete:function(res){res=res.responseText.evalJSON();var d;switch(res.mode){case"login":if(res.ok){$(document.body).insert(new Element("iframe",{src:"/q/facebook/oauth",border:0,frameborder:0,width:1,height:1}));}else{this.create(res.gender);}break;case"connected":Playray.Modal.toggle();if(res.ok){d=Playray.Dialog.open("ok",res.msg);d.observe("Playray::close",function(){Playray.Reload();});}else{d=Playray.Dialog.open("confirm",res.msg);d.observe("Playray::proceed",function(){FB.logout(function(){Playray.Navigate("/logout/");});});d.observe("Playray::close",function(){Playray.Dialog.close();});}break;case"error":Playray.Modal.toggle();d=Playray.Dialog.open("confirm",res.msg);d.observe("Playray::proceed",function(){FB.login(function(response){if(response.session){var xhr=new Ajax.Request("/q/facebook/auth");}},res.perms);Playray.Dialog.close();});d.observe("Playray::cancel",function(){Playray.Dialog.close();});break;default:case"new":this.create(res.gender);break;}}.bind(this)});},disconnect:function(e){if(!this.enabled){return;}if(e){Event.element(e).addClassName("spinner");}var xhr=new Ajax.Request("/q/facebook/deauth",{method:"post",parameters:"1=1",onComplete:function(res){res=res.responseText.evalJSON();var d=Playray.Dialog.open(res.ok?"ok":"error",res.msg);d.observe("Playray::close",function(){if(res.ok){Playray.deleteCookie("FBC");Playray.Layout.Overlay.show($("passwd").up(),{modal:true,onClose:function(){Playray.Reload();}});$("passwd").insert({top:new Element("input",{type:"hidden",name:"force",value:1})});if($("passwd").down(".title.icon")){$("passwd").down(".title.icon").setStyle({height:""});}Element.scrollTo(document.body);}else{Playray.Reload();}});$$(".spinner").invoke("removeClassName","spinner");}});},handleEvent:function(eid){if(!(eid>0)){return;}if(Playray.fbevents&&Playray.fbevents[eid]){this.delegateEvent(Playray.fbevents[eid]);}else{var xhr=new Ajax.Request("/q/mypage/events/data",{method:"post",parameters:{id:eid},requestHeaders:{Accept:"application/json"},onSuccess:function(res){this.delegateEvent(res.responseText.evalJSON());}.bind(this)});}},handleMedal:function(bid){if(!(bid>0)){return;}var xhr=new Ajax.Request("/q/mypage/events/medal",{method:"post",parameters:{id:bid},requestHeaders:{Accept:"application/json"},onSuccess:function(res){this.delegateEvent(res.responseText.evalJSON());}.bind(this)});},delegateEvent:function(ev){if(ev&&ev.publish){this.ui("stream.publish",ev.publish);}else{if(ev&&ev.share){this.ui("stream.share",ev.share);}}},ui:function(e_or_method,method_or_params,params_or_cb,cb){var e=typeof e_or_method=="string"?null:e_or_method;var method=typeof e_or_method=="string"?e_or_method:method_or_params;var params=typeof method_or_params=="object"?method_or_params:params_or_cb||{};var cb=typeof params_or_cb=="function"?params_or_cb:cb||function(){};params.method=method;FB.ui(params,function(res){cb(res);this.track(method);}.bind(this));if(e){Event.stop(e);}return false;},onShare:function(e){this.ui("stream.share");},onBookmark:function(e){this.ui("bookmark.add");}};Playray.FB=Playray.Facebook;