/* last-modified: Thu, 22 Jul 2010 18:36:12*/
var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div')['__proto__']&&document.createElement('div')['__proto__']!==document.createElement('form')['__proto__']},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 Class={create:function(){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){var subclass=function(){};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}};Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length)properties.push("toString","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}};var Abstract={};Object.extend=function(destination,source){for(var property in source)destination[property]=source[property];return destination};Object.extend(Object,{inspect:function(object){try{if(Object.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;}},toJSON:function(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(Object.isElement(object))return;var results=[];for(var property in object){var value=Object.toJSON(object[property]);if(!Object.isUndefined(value))results.push(property.toJSON()+': '+value)}return'{'+results.join(', ')+'}'},toQueryString:function(object){return $H(object).toQueryString()},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object)},keys:function(object){var keys=[];for(var property in object)keys.push(property);return keys},values:function(object){var values=[];for(var property in object)values.push(object[property]);return values},clone:function(object){return Object.extend({},object)},isElement:function(object){return!!(object&&object.nodeType==1)},isArray:function(object){return object!=null&&typeof object=="object"&&'splice'in object&&'join'in object},isHash:function(object){return object instanceof Hash},isFunction:function(object){return typeof object=="function"},isString:function(object){return typeof object=="string"},isNumber:function(object){return typeof object=="number"},isUndefined:function(object){return typeof object=="undefined"}});Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g,'').split(',');return names.length==1&&!names[0]?[]:names},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0]))return this;var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)))}},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args))}},curry:function(){if(!arguments.length)return this;var __method=this,args=$A(arguments);return function(){return __method.apply(this,args.concat($A(arguments)))}},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;return window.setTimeout(function(){return __method.apply(__method,args)},timeout)},defer:function(){var args=[0.01].concat($A(arguments));return this.delay.apply(this,args)},wrap:function(wrapper){var __method=this;return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)))}},methodize:function(){if(this._methodized)return this._methodized;var __method=this;return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)))}}});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"'};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}};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()}finally{this.currentlyExecuting=false}}}});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,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=''}}return result},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match)})},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this)},truncate:function(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'')},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'')},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'')},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1]})},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)})},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):''},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var 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})},toArray:function(){return this.split('')},succ:function(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)},times:function(count){return count<1?'':new Array(count+1).join(this)},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase()},dasherize:function(){return this.gsub(/_/,'-')},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];return character?character:'\\u00'+match[0].charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes)return'"'+escapedString.replace(/"/g,'\\"')+'"';return"'"+escapedString.replace(/'/g,'\\\'')+"'"},toJSON:function(){return this.inspect(true)},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,'#{1}')},isJSON:function(){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)},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON())return eval('('+json+')')}catch(e){}throw new SyntaxError('Badly formed JSON string: '+this.inspect());},include:function(pattern){return this.indexOf(pattern)>-1},startsWith:function(pattern){return this.indexOf(pattern)===0},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d},empty:function(){return this==''},blank:function(){return/^\s*$/.test(this)},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object)}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;')},unescapeHTML:function(){return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>')}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)}};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements))object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';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].gsub('\\\\]',']'):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={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++)})}catch(e){if(e!=$break)throw e;}return this},eachSlice:function(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)},all:function(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},any:function(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},collect:function(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index))});return results},detect:function(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result},findAll:function(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index))results.push(value)});return results},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter))filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))results.push(iterator.call(context,value,index))});return results},include:function(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},inGroupsOf:function(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice})},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index)});return memo},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args)})},max:function(iterator,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},min:function(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},partition:function(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]},pluck:function(property){var results=[];this.each(function(value){results.push(value[property])});return results},reject:function(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index))results.push(value)});return results},sortBy:function(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')},toArray:function(){return this.map()},zip:function(){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))})},size:function(){return this.toArray().length},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>'}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results}if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray)return iterable.toArray();var length=iterable.length||0,results=new Array(length);while(length--)results[length]=iterable[length];return results}}Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)iterator(this[i])},clear:function(){this.length=0;return this},first:function(){return this[0]},last:function(){return this[this.length-1]},compact:function(){return this.select(function(value){return value!=null})},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value])})},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value)})},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse()},reduce:function(){return this.length>1?this:this[0]},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value)))array.push(value);return array})},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value})})},clone:function(){return[].concat(this)},size:function(){return this.length},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']'},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(!Object.isUndefined(value))results.push(value)});return'['+results.join(', ')+']'}});if(Object.isFunction(Array.prototype.forEach))Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(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};if(!Array.prototype.lastIndexOf)Array.prototype.lastIndexOf=function(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};Array.prototype.toArray=Array.prototype.clone;function $w(string){if(!Object.isString(string))return[];string=string.strip();return string?string.split(/\s+/):[]}if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)array.push(arguments[i][j])}else{array.push(arguments[i])}}return array}}Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16)},succ:function(){return this+1},times:function(iterator,context){$R(0,this,true).each(iterator,context);return this},toPaddedString:function(length,radix){var string=this.toString(radix||10);return'0'.times(length-string.length)+string},toJSON:function(){return isFinite(this)?this.toString():'null'}});$w('abs round ceil floor').each(function(method){Number.prototype[method]=Math[method].methodize()});function $H(object){return new Hash(object)};var Hash=Class.create(Enumerable,(function(){function toQueryPair(key,value){if(Object.isUndefined(value))return key;return key+'='+encodeURIComponent(String.interpret(value))}return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object)},_each:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair)}},set:function(key,value){return this._object[key]=value},get:function(key){if(this._object[key]!==Object.prototype[key])return this._object[key]},unset:function(key){var value=this._object[key];delete this._object[key];return value},toObject:function(){return Object.clone(this._object)},keys:function(){return this.pluck('key')},values:function(){return this.pluck('value')},index:function(value){var match=this.detect(function(pair){return pair.value===value});return match&&match.key},merge:function(object){return this.clone().update(object)},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result})},toQueryString:function(){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('&')},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ')}).join(', ')+'}>'},toJSON:function(){return Object.toJSON(this.toObject())},clone:function(){return new Hash(this)}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ()}},include:function(value){if(value<this.start)return false;if(this.exclusive)return value<this.end;return value<=this.end}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive)};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator)},register:function(responder){if(!this.include(responder))this.responders.push(responder)},unregister:function(responder){this.responders=this.responders.without(responder)},dispatch:function(callback,request,transport,json){this.each(function(responder){if(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(){var element=this.Element;this.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(Prototype.Browser.IE&&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(this.Element,element||{});if(element)this.Element.prototype=element.prototype}).call(window);Element.cache={};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(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element},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('parentNode')},descendants:function(element){return $(element).select("*")},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('previousSibling')},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling')},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings())},match:function(element,selector){if(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();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();return Object.isNumber(expression)?element.descendants()[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();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();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index)},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args)},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element)},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('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().height},getWidth:function(element){return $(element).getDimensions().width},classNames:function(element){return new Element.ClassNames(element)},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)))},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(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(className)?'removeClassName':'addClassName'](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();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.0;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('display');if(display!='none'&&display!=null)return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight}},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(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('position')=='absolute')return element;var offsets=element.positionedOffset();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('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=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset()}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}};Element.Methods.identify.counter=1;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.0}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={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2)},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:""},_getEv:function(element,attribute){attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null},_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._getAttr,src:v._getAttr,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)}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(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(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 in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)})}else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element}}if('outerHTML'in document.createElement('div')){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(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD})}).call(Element._insertionTranslations);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);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div')['__proto__']){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div')['__proto__'];Prototype.BrowserFeatures.ElementExtensions=true}Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions)return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase(),property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element))element[property]=value.methodize()}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];window[klass]={};window[klass].prototype=document.createElement(tagName)['__proto__'];return window[klass]}if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,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(){var dimensions={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D]}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['client'+D]}});return dimensions},getWidth:function(){return this.getDimensions().width},getHeight:function(){return this.getDimensions().height},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)}};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(){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;return true},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)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;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 in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).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;if(Selector._cache[e]){this.xpath=Selector._cache[e];return}this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).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();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;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,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()+">"}});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;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).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:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[((?:[\w]+:)?[\w]+)\]/,attr:/\[((?:[\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(nodes){for(var i=0,node;node=nodes[i];i++)node._countedByPrototype=undefined;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(!(n=nodes[i])._countedByPrototype){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(!targetNode)return[];if(!nodes&&root==document)return[targetNode];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.endsWith(v)},'*=':function(nv,v){return 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},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)node.removeAttribute('_countedByPrototype');return nodes}})}function $$(){return Selector.findChildElements(document,$A(arguments))}var Form={reset:function(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){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])elements.push(Element.extend(child));return elements})},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))continue;matchingInputs.push(Element.extend(input))}return matchingInputs},disable:function(form){form=$(form);Form.getElements(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'].include(element.tagName.toLowerCase())})},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'].include(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)}});if(!window.Event)var Event={};Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(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)}});Event.Methods=(function(){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)}}return{isLeftClick:function(event){return isButton(event,0)},isMiddleClick:function(event){return isButton(event,1)},isRightClick:function(event){return isButton(event,2)},element:function(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)},findElement:function(event,expression){var element=Event.element(event);if(!expression)return element;var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0)},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};return{x:event.pageX||(event.clientX+(docElement.scrollLeft||body.scrollLeft)-(docElement.clientLeft||0)),y:event.pageY||(event.clientY+(docElement.scrollTop||body.scrollTop)-(docElement.clientTop||0))}},pointerX:function(event){return Event.pointer(event).x},pointerY:function(event){return Event.pointer(event).y},stop:function(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true}}})();Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m});if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}});return function(event){if(!event)return false;if(event._extendedByPrototype)return event;event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods)}}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents")['__proto__'];Object.extend(Event.prototype,methods);return Prototype.K}})();Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id]}function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";return eventName}function getCacheForID(id){return cache[id]=cache[id]||{}}function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[]}function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))return false;Event.extend(event);handler.call(element,event)};wrapper.handler=handler;c.push(wrapper);return wrapper}function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler})}function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler))}function destroyCache(){for(var id in cache)for(var eventName in cache[id])cache[id][eventName]=null}if(window.attachEvent){window.attachEvent("onunload",destroyCache)}if(Prototype.Browser.WebKit){window.addEventListener('unload',Prototype.emptyFunction,false)}return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false)}else{element.attachEvent("on"+name,wrapper)}return element},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler)});return element}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName)});return element}var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false)}else{element.detachEvent("on"+name,wrapper)}destroyWrapper(id,eventName,handler);return element},fire:function(element,eventName,memo){element=$(element);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="ondataavailable"}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);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});(function(){var timer;function fireContentLoadedEvent(){if(document.loaded)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");document.loaded=true}if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState))fireContentLoadedEvent()},0);Event.observe(window,"load",fireContentLoadedEvent)}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false)}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent()}}}})();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);Element.addMethods();

/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
/*
Simple Image Trail script- By JavaScriptKit.com
Visit http://www.javascriptkit.com for this script and more
This notice must stay intact
*/

var offsetfrommouse=[18,-4]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration=0; //duration in seconds image should remain visible. 0 for always.
var currentimageheight = 270;	// maximum image size.

if (document.getElementById || document.all){
	document.write('<div id="popup">');
	document.write('</div>');
}

function gettrailobj(){
if (document.getElementById)
return document.getElementById("popup").style
else if (document.all)
return document.all.trailimagid.style
}

function gettrailobjnostyle(){
if (document.getElementById)
return document.getElementById("popup")
else if (document.all)
return document.all.trailimagid
}


function truebody(){
return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function showtrail(imagename,title,description,ratingaverage,ratingnumber,showthumb,height,filetype){

	if (height > 0){
		currentimageheight = height;
	}

	document.onmousemove=followmouse;

	cameraHTML = '';

	if ( !ratingnumber ){
		ratingnumber = 0;
		ratingaverage = 0;
	}

	for(x = 1; x <= 5; x++){

		if (ratingaverage >= 1){
			cameraHTML = cameraHTML + '';
		} else if (ratingaverage >= 0.5){
			cameraHTML = cameraHTML + '';
		} else {
			cameraHTML = cameraHTML + '';
		}

		ratingaverage = ratingaverage - 1;
	}

	newHTML = '<div>';

	if (showthumb > 0){
		newHTML = newHTML + '<div>';
		newHTML = newHTML + '<div style="">';
		if(filetype == 8) { // Video
			newHTML = newHTML +	'<object width="380" height="285" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0">';
			newHTML = newHTML + '<param name="movie" value="video_loupe.swf">';
			newHTML = newHTML + '<param name="quality" value="best">';
			newHTML = newHTML + '<param name="loop" value="true">';

			newHTML = newHTML + '<param name="FlashVars" value="videoLocation=' + imagename + '">';
			newHTML = newHTML + '<EMBED SRC="video_loupe.swf" LOOP="true" QUALITY="best" FlashVars="videoLocation=' + imagename + '" WIDTH="380" HEIGHT="285">';
			newHTML = newHTML + '</object></div>';
		} else {
			newHTML = newHTML + '<img src="' + imagename + '" style="background:#fff; padding:1px;"></div></div>';
		}
	}

	newHTML = newHTML + '</div>';
	gettrailobjnostyle().innerHTML = newHTML;
	gettrailobj().display="inline";
}


function hidetrail(){
	gettrailobj().innerHTML = " ";
	gettrailobj().display="none"
	document.onmousemove=""
	gettrailobj().left="-500px"

}

function followmouse(e){

	var xcoord=offsetfrommouse[0]
	var ycoord=offsetfrommouse[1]

	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
	var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)

	//if (document.all){
	//	gettrailobjnostyle().innerHTML = 'A = ' + truebody().scrollHeight + '<br>B = ' + truebody().clientHeight;
	//} else {
	//	gettrailobjnostyle().innerHTML = 'C = ' + document.body.offsetHeight + '<br>D = ' + window.innerHeight;
	//}

	if (typeof e != "undefined"){
		if (docwidth - e.pageX < 180){
			xcoord = e.pageX - xcoord - 400; // Move to the left side of the cursor
		} else {
			xcoord += e.pageX;
		}
		if (docheight - e.pageY < (currentimageheight + 110)){
			ycoord += e.pageY - Math.max(0,(110 + currentimageheight + e.pageY - docheight - truebody().scrollTop));
		} else {
			ycoord += e.pageY;
		}

	} else if (typeof window.event != "undefined"){
		if (docwidth - event.clientX < 180){
			xcoord = event.clientX + truebody().scrollLeft - xcoord - 400; // Move to the left side of the cursor
		} else {
			xcoord += truebody().scrollLeft+event.clientX
		}
		if (docheight - event.clientY < (currentimageheight + 110)){
			ycoord += event.clientY + truebody().scrollTop - Math.max(0,(110 + currentimageheight + event.clientY - docheight));
		} else {
			ycoord += truebody().scrollTop + event.clientY;
		}
	}

	var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
	var docheight=document.all? Math.max(truebody().scrollHeight, truebody().clientHeight) : Math.max(document.body.offsetHeight, window.innerHeight)
		if(ycoord < 0) { ycoord = ycoord*-1; }
	gettrailobj().left=xcoord+"px"
	gettrailobj().top=ycoord+"px"

}

function showimghint(i_name,i_title,i_width,i_height,i_date,event){

	var xcoord=event.pageX + 20;
	var ycoord=event.pageY + 15;

	if (navigator.appName == 'Microsoft Internet Explorer') {
	    xcoord=event.clientX + 20;
	    ycoord= event.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop + 15;
	}

	newHTML = '<div style="background: #ffa; border: 1px solid red; position: absolute;left: ' + xcoord + 'px;top: '+ ycoord + 'px;z-index:99;">';

    if (i_name.length > 0) {
        newHTML = newHTML + 'nosaukums: ' + i_name + '<br>';
    }

    if (i_title.length > 0) {
        newHTML = newHTML + 'apraksts: ' + i_title + '<br>';
    }

    if (i_width.length > 0 && i_height.length > 0) {
        newHTML = newHTML + 'izmērs: ' + i_width + ' x ' + i_height +'<br>';
    }

    if (i_date.length > 0) {
        newHTML = newHTML + 'Pielikšanas datums: ' + i_date + '<br>';
    }

	newHTML = newHTML + '</div>';
	gettrailobjnostyle().innerHTML = newHTML;
	gettrailobj().display="inline";
}

function showtxthint(i_name,event){

    while (i_name.match('//')) {
        i_name = i_name.replace('//', '<br />');
    }

	var xcoord=event.pageX + 20;
	var ycoord=event.pageY + 15;

	if (navigator.appName == 'Microsoft Internet Explorer') {
	    xcoord=event.clientX + 20;
	    ycoord= event.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop + 15;
	}

	newHTML = '<div style="background: #ffa; padding: 5px; border: 1px solid red; position: absolute;left: ' + xcoord + 'px;top: '+ ycoord + 'px;z-index:99;">';

    if (i_name.length > 0) {
        newHTML = newHTML + i_name + '<br>';
    }

	newHTML = newHTML + '</div>';
	gettrailobjnostyle().innerHTML = newHTML;
	gettrailobj().display="inline";
}


var __is_focuset_to_html_element = false;

/* Janis Rublevskis
 * @since 2010.07.07
 * darbojas ar funkcijaam:
 *   switch_comment_page
 * 	 change_comments_order */
var __comment_sorting_order = Get_Cookie('esports_ui');
if(__comment_sorting_order != 'asc' && __comment_sorting_order != 'desc') {
    __comment_sorting_order = 'asc';
}

function focus_to() {
    if (arguments.length < 1) {
        return false;
    }
    var htmlElement = get_html_element(arguments[0]);
    if (is_html_element(htmlElement) && is_false(__is_focuset_to_html_element)) {
        yPos = get_element_position(htmlElement)[1];
        __is_focuset_to_html_element = true;
        window.scrollTo(0, (yPos > 200 ? yPos - 200 : 0));
        if (htmlElement.tagName != undefined) {
            switch(htmlElement.tagName.toLowerCase()) {
                case "input":
                case "textarea":
                case "select":
                    htmlElement.focus();
                    break;
            }
        }
        return true;
    }
    return false;
}
function get_element_position(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
        do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft,curtop];
}
function is_defined() {
    if (arguments.length < 1) {
        return false;
    }
    var arg = null;
    var ret = true;
    for (var x = 0, len = arguments.length; x < len; x++) {
        arg = arguments[x];
        if (arg === undefined || arg === null) {
            ret = false;
        }
    }
    return ret;
}
function is_false() {
    if (arguments.length < 1) {
        return true;
    }    
    var arg = null;
    var ret = true;
    for (var x = 0, len = arguments.length; x < len; x++) {
        arg = arguments[x];
        
        if (is_defined(arg) && arg !== false && arg !== 0 && arg !== '') {            
            ret = false;
        }
    }
    return ret;
}
function is_true() {
    if (arguments.length < 1) {
        return false;
    }
    var arg = null;
    var ret = true;
    for (var x = 0, len = arguments.length; x < len; x++) {
        arg = arguments[x];        
        if (!is_defined(arg)) {
            ret = false;
        } 
        if (arg === false || arg === 0 || arg === '') {
            ret = false;
        }
    }
    return ret;
}
function is_function () {
    if (arguments.length < 1) {
        return true;
    }
    var arg = null;
    var ret = true;
    for (var x = 0, len = arguments.length; x < len; x++) {
        arg = arguments[x];        
        if (!is_defined(arg)) {
            ret = false;
        }
        if (typeof(arg) !== 'function') {
            ret = false;
        }
    }
    return ret;
}
function is_html_element() {
    if (arguments.length < 1) {
        return true;
    }
    var arg = null;
    var ret = true;    
    for (var x = 0, len = arguments.length; x < len; x++) {
        arg = arguments[x];
        if (!is_defined(arg)) {
            ret = false;
            continue;
        }
        if (is_false(arg)) {
            ret = false;
            continue;
        }
        if (typeof(arg) === 'object') {
            if (!is_defined(arg.tagName)) {
                ret = false;
                continue;
            }
        } else {
            if (!is_defined(document.getElementById( arg.toString() ) ) ) {
                ret = false;
                continue;
            }
        }
    }
    return ret;
}
function get_html_element() {    
    if (arguments.length !== 1) {
        return true;
    }
    var arg = arguments[0];
    
    if (!is_defined(arg)) {
        return false;
    }
    if (is_false(arg)) {
        return false;
    }
    if (typeof(arg) === 'object') {
        if (arg.tagName) {
            return arg;
        }
    }
    
    if (is_defined( document.getElementById( arg.toString() ) )) {
        return document.getElementById( arg.toString() );
    }
    return false;
}
function get_random_string() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var randomstring = '';
    var string_length = 10;
    if (arguments.length === 1 && arguments[0] * 1 > 0) {
        string_length = arguments[0] * 1;
    }
	for (var i = 0; i < string_length; i++)
	{
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum, rnum + 1);
	}
	return randomstring;
}
function create_html_elements(iTarget, iNext, iTag, iId, iClassName, iName) {
    if (is_false(iTag) || !is_html_element(iTarget)) {
        return false;
    }
	var newdiv = document.createElement(iTag);
	
	if (is_true(iId)) {
	    newdiv.id = iId;
	}
	if (is_true(iClassName)) {
	    newdiv.className = iClassName;
	}
	if (is_true(iName)) {
	    newdiv.name = iName;
	}
	if (is_html_element(iNext)) {
        iTarget.insertBefore(newdiv, iNext);
	} else {
        iTarget.appendChild(newdiv);
	}		
	return newdiv;
}
function delete_html_element (iElement) {
    if (!is_html_element(iElement)) {
        return false;
    }
	var list = iElement.childNodes;
	while(list.length > 0) {
		iElement.removeChild(list[0]);
	}
	iElement.parentNode.removeChild(iElement);
	return false;
}
function get_input_fields_value(blockId) {
    var myElem = get_html_element(blockId);
    var elem = ['input', 'select', 'textarea'];
    if (is_false(myElem)) {
        return false;
    }
    var ret = new Array();
    for(var x = 0, len = elem.length; x < len; x++) {
        tmp = myElem.getElementsByTagName(elem[x]);
        if (tmp.length) {
            for(xx = 0, lenxx = tmp.length; xx < lenxx; xx++) {
                if(tmp[xx].type == 'submit' || tmp[xx].type == 'button') {
                    continue;
                }
                if ((tmp[xx].type == 'radio' || tmp[xx].type == 'checkbox') && !tmp[xx].checked) {
                    continue;
                }                
                i = ret.length;
                ret[i] = new Object();
                ret[i] = {
                    'name'      : tmp[xx].name
                    ,'value'    : tmp[xx].value
                    ,'type'     : tmp[xx].type
                    ,'id'       : tmp[xx].id
                    ,'full'     : tmp[xx].name + '=' + tmp[xx].value
                };
            }
        }
    }
    return ret;   
}
function get_friendly_filesize(sizeInBytes, floatLength) {
    var len = floatLength ? floatLength : 2;
    var types = ['bytes', 'Kb', 'Mb', 'Gb', 'Tb'];
    var del = 1024;
    var g = 0;
    if (sizeInBytes > del) {        
        while (sizeInBytes / del > del) {
            sizeInBytes = sizeInBytes / del;
            sizeInBytes = sizeInBytes.toFixed(len);
            g++;
        }
        sizeInBytes = sizeInBytes / del;
        sizeInBytes = sizeInBytes.toFixed(len);
        g++;
    }
    return sizeInBytes + ' ' + types[g];
}
function hide_floater() {
    document.getElementById('esports_floater').style.display = 'none';
    $('esports_floater').style.display = 'none';
    return false;
}
function show_hide_input_text(txt, elem_id, act) {    
    var inp = document.getElementById(elem_id);
    switch (act) {
        case "hide":
            if (inp.value == txt) {
                inp.value = '';
                set_unset_className(inp, 'inputShow', '-');
                set_unset_className(inp, 'inputHide', '+');
            }
            break;
        case "show":
            if (inp.value == '') {
                inp.value = txt;
                set_unset_className(inp, 'inputShow', '+');
                set_unset_className(inp, 'inputHide', '-');
            }
            break;
    }
}

function add_onload_function(fn) {
    Event.observe(window, 'load', fn);
}
function show_hide(stat, elm_id) {
    if (document.getElementById(elm_id)) {
        document.getElementById(elm_id).style.display = stat ? 'block': 'none';
    }
}
//-- tiktal viss ir parbaudits
function gal_resize_back_link() {
    var ap = $('gal-prev-url');
    var an = $('gal-next-url');
    var img = $('gal-full-img');
    if (ap && an && img && img.clientHeight) {
        ap.style.height = '' + img.clientHeight + 'px';
        an.style.height = '' + img.clientHeight + 'px';
    }
}



function show_hide_common(elm_id) {
    var elm = $(elm_id);

    if (elm.style.display == 'none') {
        elm.style.display == 'block';
    } else {
        elm.style.display == 'none';
    }
}

function onlyNumbers(evt, foo, txt) {
    var e = window.event || evt; // for trans-browser compatibility
    var charCode = e.which || e.keyCode;

    if (foo == true && charCode == 46) { // 46 - punkta kods
        var r1 = "\\.";
        var r = new RegExp(r1);
        r = r.compile(r1);
        if ((r.test(txt)) == true) {
            return false;
        } else {
            return true;
        }

    }
    if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;

    return true;

}

function onlyLetters(evt) {
    var e = window.event || evt; // for trans-browser compatibility
    var charCode = e.which || e.keyCode;

    if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 8 || charCode == 127) return true;

    return false;
}

function select_discount(iname) {

    var txt1 = $('atlaide');

    var div_atlaide_p = $('atlaide_p');
    var div_atlaide_l = $('atlaide_l');

    switch (iname) {
    case "0":
        {
            txt1.innerHTML = 'Atlaide';

            div_atlaide_p.style.display = 'block';
            div_atlaide_p.style.height = 'auto';

            div_atlaide_l.style.display = 'none';
            div_atlaide_l.style.height = '0px';

            break;
        }
    case "1":
        {
            txt1.innerHTML = 'Jauna cena';

            div_atlaide_p.style.display = 'none';
            div_atlaide_p.style.height = '0px';

            div_atlaide_l.style.display = 'block';
            div_atlaide_l.style.height = 'auto';

            break;
        }
    }
}

function DraugiemSay( title, url, titlePrefix ){
    var winname = 'window' + Math.round(Math.random() * 10000 + 1);
    var win = window.open('http://www.draugiem.lv/say/ext/add.php?title=' + encodeURIComponent( title ) +
    '&link=' + encodeURIComponent( url ) +( titlePrefix ? '&titlePrefix=' + encodeURIComponent( titlePrefix ) : '' ),
    winname, 'location=1,status=1,scrollbars=0,resizable=0,width=530,height=400');
    if (win.opener == null) win.opener = self;
    return false;
}


var last_media_search = '';

function disp(id) // kaspara fn, prieksh toto
{
    if ($(id).style.display == 'none') {
        $(id).style.display = '';
    } else {
        $(id).style.display = 'none';
    }
}

function write(htmlCode) {
    document.writeln(htmlCode);
}

function cc_remove_relation(relation_id) {
    return ajax_updater('chooser-ajax', {action: 'ajax_remove_relation', relation_id: relation_id});
}

function show_full_relations(post_id) {
    return ajax_updater('chooser-ajax', {action: 'ajax_show_relations', cc_post_id: post_id});
}

function set_calendar_page(page, forum_id, top_forum_id) {
    return ajax_updater('es_gamecalendar', {
            action: 'ajax_draw_calendar_page',
            calendar_page: page,
            forum_id: forum_id,
            top_forum_id: top_forum_id
        });
    return false;
}


function get_last_events(forum_id) {
    forum_id = forum_id || 0;
    if (forum_id < 1) return;

    var many_obj = $('many_events');
    var many_events_v = many_obj ? many_obj.value: 0;

    parameters = {
        form_action: 'ajax_last_events'
    };
    parameters['forum_id'] = forum_id;
    parameters['many_events'] = many_events_v;
    parameters['show_param'] = $('div_event_chooser').style.display;

    new Ajax.Updater('last_calendar_events', ESPORTS_HOME + "?req", {parameters: parameters, onComplete: function() { in_ajax = false; }});

    parameters['form_action'] = 'ajax_event_chooser';
    parameters['cc_forum_id'] = forum_id;
    new Ajax.Updater('chooser-ajax', ESPORTS_HOME + "?req", {parameters: parameters, onComplete: function() { in_ajax = false; }});
    return false;
}


function update_matrix_table(forum_id) {
    forum_id = forum_id || 0;
    if (forum_id < 1) return;

    parameters = {
        form_action: 'ajax_update_article_matrix'
    };
    parameters['forum_id'] = forum_id;

    parameters['form_action'] = 'ajax_update_article_matrix';
    new Ajax.Updater('article_matrix', ESPORTS_HOME + "?req", {parameters: parameters, onComplete: function() { in_ajax = false; }});
}


function show_frontpage_events(fs_id, new_forum_id, text_id) {
    /* checkme */
    parameters = {
        'action': 'ajax_frontpage_events'
    };

    parameters['cc_event_id_old'] = fs_id;
    parameters['cc_new_forum_id'] = new_forum_id;
    parameters['text_id_prefix'] = text_id;
    parameters['cc_text_id_' + text_id] = text_id;

    if (text_id && text_id.length > 0) {
        return ajax_updater('frontpage_events_chooser_' + text_id, parameters);
    } else {
        return ajax_updater('frontpage_events_chooser', parameters);
    }
}

function update_frontpage_event(text_id_name) {

    var parameters = {
        action: 'ajax_frontpage_update'
    };

    var event_id_old_obj = $('cc_event_id_old');
    var event_id_old = event_id_old_obj ? event_id_old_obj.value: 0;

    var event_obj = $('cc_event_id');
    var cc_event_id = event_obj ? event_obj.value: 0;

    var game_obj = $('cc_game_id');
    var cc_game_id = game_obj ? game_obj.value: 0;

    var forum_obj = $('cc_forum_id');
    var cc_forum_id = forum_obj ? forum_obj.value: 0;

    var new_forum_obj = $('cc_new_forum_id');
    var cc_new_forum_id = new_forum_obj ? new_forum_obj.value: 0;

    var text_obj = $('cc_text_id_' + text_id_name);
    var cc_text_id = text_obj ? text_obj.value : null;

    parameters['cc_game_id'] = cc_game_id;
    parameters['cc_event_id_old'] = event_id_old;
    parameters['cc_event_id'] = cc_event_id;
    parameters['cc_forum_id'] = cc_forum_id;
    parameters['cc_new_forum_id'] = cc_new_forum_id;
    parameters['text_id_prefix'] = text_id_name;
    parameters['cc_text_id_' + text_id_name] = cc_text_id;

    if (text_obj && cc_text_id) {
        return ajax_updater('es_block_top_notikums_' + text_obj.value, parameters);
    } else {
        return ajax_updater('es_block_top_notikums', parameters);
    }
}

function delete_frontpage_event(event_id, text_id) {
    /* checkme */
    parameters = {
        'action': 'ajax_frontpage_delete'
    };

    parameters['evend_id'] = event_id;
    parameters['cc_text_id'] = text_id;

    var div_id = 'es_block_top_notikums';
    if (text_id && text_id.length > 0 && text_id != null && text_id != 'null') {
        div_id = 'es_block_top_notikums_' + text_id;
    }

    return ajax_updater(div_id, parameters);
}

function hide_frontpage_event(forum_id) {
    /* checkme */
    parameters = {
        'action': 'ajax_frontpage_hide'
    };

    parameters['forum_id'] = forum_id;
    var text_obj = $('cc_text_id');
    var cc_text_id = text_obj ? text_obj.value: 0;
    parameters['cc_text_id'] = cc_text_id;

    if (text_obj) {
        return ajax_updater('es_block_top_notikums_' + text_obj.value, parameters);
    } else {
        return ajax_updater('es_block_top_notikums', parameters);
    }
}

function fr_update(id_name, id_value, text_id_name) {
    parameters = {
        action: 'ajax_frontpage_events',
        cc_event_id_old: $('cc_event_id_old').value,
        cc_new_forum_id: $('cc_new_forum_id').value
    };
    parameters[id_name] = id_value;

    var text_obj = $('cc_text_id_' + text_id_name);
    var cc_text_id = text_obj ? text_obj.value: 0;

    parameters['text_id_prefix'] = text_id_name;
    parameters['cc_text_id_' + text_id_name] = cc_text_id;

    if (text_id_name && text_id_name.length > 0) {
        return ajax_updater('frontpage_events_chooser_' + text_id_name, parameters);
    } else {
        return ajax_updater('frontpage_events_chooser', parameters);
    }
}

function fr_update_blank(text_id_name) {
    return fr_update('foo', 'bar', text_id_name);
}

function fr_update_forum_id(forum_id, text_id_name) {
    return fr_update('cc_forum_id', forum_id, text_id_name);
}

function fr_update_event_id(event_id, text_id_name) {
    return fr_update('cc_event_id', event_id, text_id_name);
}

function fr_update_game_id(game_id, text_id_name) {
    return fr_update('cc_game_id', game_id, text_id_name);
}

function getRequestBody() {
    var oForm = document.user_article;
    var aParams = new Array();
    for(var i = 0; i < oForm.elements.length; i++) {
        if (oForm.elements[i].name == 'relations[]') {
            var sParam = encodeURIComponent(oForm.elements[i].value);        
            aParams.push(sParam);
        }
    }

    return aParams.join("&");
}
 
function cc_update(id_name, id_value) {
    var many_obj = $('many_events');
    var many_events_v = many_obj ? many_obj.value: 0;
    parameters = {
        action: 'ajax_event_chooser',
        cc_post_id: $('cc_post_id').value,
        many_events: many_events_v
    };
    parameters[id_name] = id_value;
    if (many_events_v > 0) {
        parameters['cc_relations'] = getRequestBody();
        parameters['cc_old_forum_id'] = $('cc_forum_id').value > 0 ? $('cc_forum_id').value : $('cc_old_forum_id').value;
    }
    return ajax_updater('chooser-ajax', parameters);
}

function cc_create_new_event(forum_id) {
    parameters = {
        action: 'ajax_create_event'
    };
    parameters['cc_forum_id'] = forum_id;
    return ajax_updater('chooser-ajax', parameters);
}

function save_new_event() {
    parameters = {
        action: 'ajax_save_event'
    };
    parameters['forum_id'] = $('cc_forum_id').value;
    parameters['event_title'] = $('cc_event_title').value;
    return ajax_updater('chooser-ajax', parameters);
}

function cc_update_blank() {
    return cc_update('foo', 'bar');
}

function cc_update_forum_id(forum_id) {
    return cc_update('cc_forum_id', forum_id);
}

function cc_update_event_id(event_id) {
    return cc_update('cc_event_id', event_id);
}

function cc_update_game_id(game_id) {
    return cc_update('cc_game_id', game_id);
}

var in_ajax = false;

function ajax_updater(obj_id, parameters)
{
    if ( in_ajax) {
        return false;
    }
    in_ajax = true;
    parameters['form_action'] = parameters['action'];
    new Ajax.Updater(obj_id, '?req', {parameters: parameters, onComplete: function() { in_ajax = false }});
    return false;
}

function voteupburn(comment_id) {
    $('vote_' + comment_id).innerHTML = '&nbsp;&nbsp;&nbsp;...';
    return ajax_updater('vote_' + comment_id, {comment_id: comment_id, action: 'ajax_vote_comment_up_burn'});
}
function voteup(comment_id) {
    $('vote_' + comment_id).innerHTML = '&nbsp;&nbsp;&nbsp;...';
    return ajax_updater('vote_' + comment_id, {comment_id: comment_id, action: 'ajax_vote_comment_up'});
}

function votedn(comment_id) {
    $('vote_' + comment_id).innerHTML = '&nbsp;&nbsp;&nbsp;...';
    return ajax_updater('vote_' + comment_id, {comment_id: comment_id, action: 'ajax_vote_comment_down'});
}

function cal_quicksave_game(game_id) {
    var form = $('qs_' + game_id);
    var parameters = {
            game_id: form.game_id.value,
            action: 'ajax_cal_quicksave_game',
            result_1: form.result_1.value,
            result_2: form.result_2.value,
            points_1: form.points_1.value,
            points_2: form.points_2.value
        };

    return ajax_updater('qdiv_' + game_id, parameters);
}

function video_voteup(video_id) {
    $('vote_' + video_id).innerHTML = '&nbsp;&nbsp;&nbsp;...';
    return ajax_updater('vote_' + video_id, { action: 'ajax_vote_video_up', video_id: video_id });
}

function video_votedn(video_id) {
    $('vote_' + video_id).innerHTML = '&nbsp;&nbsp;&nbsp;...';
    return ajax_updater('vote_' + video_id, { action: 'ajax_vote_video_down', video_id: video_id });
}

function gallery_vote(picture_id, vote_fn) {
    $('gal_' + picture_id).innerHTML = '...';
    return ajax_updater('gal_' + picture_id, { action: vote_fn, picture_id: picture_id });
}

function edit_comment(post_id, comment_id) {
    new Ajax.Request(ESPORTS_HOME + "?req", {
        parameters: { comment_id: comment_id, post_id: post_id, action: 'ajax_get_comment_edit', form_action: 'ajax_get_comment_edit' },
        onSuccess: function(res) { 
            $('comment_id').value=comment_id; 
            show_comment_edit_mode();
            $('commentbox').value = res.responseText; $('commentbox').focus() }
        });
    return false;
}

function preview_message() {
    $('preview').style.display = 'block';
    $('preview').innerHTML = '<p style="text-align:center">...</p>';
    new Ajax.Updater('preview', ESPORTS_HOME + "?req", {
        parameters: {text: $('text').value, action: 'ajax_preview_message', form_action: 'ajax_preview_message'},
        onSuccess: function() { $('text').focus() }
    });
    return false;
}

function preview_article() {
    $('article').style.display = 'block';
    $('article').innerHTML = '<p style="text-align:center">...</p>';
    new Ajax.Updater('article', ESPORTS_HOME + "?req", {
        parameters: { text: $('text_intro').value + '\n\n' + $('text_message').value, form_action: 'ajax_preview_message'},
        onSuccess: function() { $('text').focus() }
    });
    return false;

}

function update_article_type(type_id, elem_id) {
    type_id = type_id || 0;
    elem_id = elem_id || '';

    var txt = '_' + type_id;
    switch (type_id) {
        case 1: {
            show_hide(true,  elem_id + txt);
            show_hide(false, elem_id + '_2');
            show_hide(false, elem_id + '_3');
            /*document.user_article.is_deleted.checked = false;*/
            break;
        }
        case 2: {
            show_hide(false, elem_id + '_1');
            show_hide(true,  elem_id + txt);
            show_hide(false, elem_id + '_3');
            /*document.user_article.is_deleted.checked = true;*/
            break;
        }
        case 3: {
            show_hide(false, elem_id + '_1');
            show_hide(false, elem_id + '_2');
            show_hide(true,  elem_id + txt);
            /*document.user_article.is_deleted.checked = true;*/
            break;
        }
    }
}


function quote_comment(post_id, comment_id) {
    new Ajax.Request(ESPORTS_HOME + "?req", {
        parameters: { comment_id: comment_id, post_id: post_id, action: 'ajax_get_comment_quoting', form_action: 'ajax_get_comment_quoting' },
        onSuccess: function(res) { $('commentbox').value = res.responseText; $('commentbox').focus() }
        });
    return false;
}

function usr_search_picture(input_obj, page, t_sort, limit, appendix) {
    page = page || 0;
    limit = limit || 0;
    appendix = appendix || '';
    t_sort_v = '';
    if (t_sort) {
        t_sort_v = t_sort.value;
    }
    return ajax_updater('ajax_picture_result' + appendix, {
            'action': 'ajax_search_media',
            'q': input_obj.value,
            'page': page,
            'limit': limit,
            'appendix': appendix,
            't_sort': t_sort_v
            });
}

function finish_media_search(appendix) {
    appendix = appendix || '';
    return_div = 'ajax_picture_result' + appendix;
    input_name = 'rf_media_q' + appendix;
    $(return_div).innerHTML = '';
    $(input_name).value = '';
    last_media_search = '';
}

var current_news = -1;
var image_cache = [0, 0, 0, 0, 0, 0, 0, 0];

function set_news(n) {
    if (n == current_news) return;

    if (title_news[n][3] != '') {
        if (!image_cache[n]) {
            image_cache[n] = new Image();
            image_cache[n].src = title_news[n][3];
        }
        $("m_img").src = image_cache[n].src;
    }
    for (var i = 0; i < 8; i++) {
        var x = $("cont-" + i);
        if (x) x.className = i != n ? "fix": "fix active";
    }
    $("m_title").innerHTML = title_news[n][0];
    $("m_intro").innerHTML = title_news[n][1];
    $("m_intro").href = title_news[n][2];
    $("m_title").href = title_news[n][2];
    $("m_href").href = title_news[n][2];
    current_news = n;
}

/**
*
* AJAX IFRAME METHOD (AIM)
* http://www.webtoolkit.info/
* TODO: get rid of this crap
**/

AIM = {

    frame: function(c) {

        var n = 'f' + Math.floor(Math.random() * 99999);
        var d = document.createElement('DIV');
        d.innerHTML = '<iframe style="display:none" src="about:blank" id="' + n + '" name="' + n + '" onload="AIM.loaded(\'' + n + '\')"></iframe>';
        document.body.appendChild(d);

        var i = $(n);
        if (c && typeof(c.onComplete) == 'function') {
            i.onComplete = c.onComplete;
        }

        return n;
    },

    form: function(f, name) {
        f.setAttribute('target', name);
    },

    submit: function(f, c) {
        AIM.form(f, AIM.frame(c));
        if (c && typeof(c.onStart) == 'function') {
            return c.onStart();
        } else {
            return true;
        }
    },

    loaded: function(id) {
        var i = $(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;
        }

        if (typeof(i.onComplete) == 'function') {
            i.onComplete(d.body.innerHTML);
        }
    }

}

// suporta funkcijas galeriju ajax-uploadam
var cur_form = 1;
var f;
var n_fields = 5;

function apply_submit_handlers() {
    for (var i = 1; i <= n_fields; i++) {
        var f = $('fm' + i);
        if (!f.handler_applied) {
            f.handler_applied = true;
            f.onsubmit = new Function('AIM.submit(this, {\'onStart\' : ajax_gal_uploading, \'onComplete\' : ajax_gal_uploaded}); return true');
            f.origsubmit = f.submit;
            f.submit = new Function('return this.onsubmit() && this.origsubmit()');
        }
    }
}

function add_upload_fields(gallery_id) {
    var row = $('uploader-table').insertRow(n_fields);
    n_fields += 1;
    row.innerHTML = '<th id="p' + n_fields + '">&nbsp;</th><td>' + '<form id="fm' + n_fields + '" method="post" action="?" enctype="multipart/form-data">' + '<input type="hidden" name="form_action" value="ajax-upload-picture" />' + '<input type="hidden" name="gallery_id" value="' + gallery_id + '" />' + '<span id="ru' + n_fields + '"><input class="file" type="file" name="picture" /></span></form></td>';
    apply_submit_handlers();
    return false;
}

function upload_images() {

    if (cur_form != 1) return false;
    upload_form();
}

function upload_form() {
    f = $('fm' + cur_form);
    if (f) {
        if (f.picture.value) {
            f.submit();
        } else {
            cur_form += 1;
            return upload_form();
        }
    } else {
        cur_form = 1;
    }
}

function ajax_gal_uploading() {
    $('p' + cur_form).innerHTML = '...';
}

function ajax_gal_uploaded(response) {
    $('submitbtn').innerHTML = 'Done';
    var t = $('p' + cur_form);

    var sp = $('ru' + cur_form);
    sp.innerHTML = '<input class="file" type="file" name="picture" />';

    if (f) f.picture.value = '';
    if (f.picture.reset) f.picture.reset();
    if (f.picture.clearAttributes) f.picture.clearAttributes();
    cur_form += 1;
    if (response.substring(0, 1) != '<') {
        t.innerHTML = response;
    } else {
        t.innerHTML = '';
        $('gallery_pictures').innerHTML = response;
    }
    upload_form();
}

function apply_submit_handlers2(uploader_table) {
    var n_rows = $(uploader_table + '_uploader_table').tBodies[0].rows.length;
    for (var i = 1; i <= n_rows; i++) {
        var f = $('fm_' + uploader_table + i);
        if (f) {
            if (!f.handler_applied) {
                f.handler_applied = true;
                f.onsubmit = new Function('AIM.submit(this, {\'onStart\' : ajax_gal_uploading2('+uploader_table+'), \'onComplete\' : ajax_gal_uploaded2(\'\', '+uploader_table+')}); return true');
                f.origsubmit = f.submit;
                f.submit = new Function('return this.onsubmit() && this.origsubmit()');
            }
        }
    }
}

function add_upload_fields2(uploader_table, form_action) {
    var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
    var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
    var row  = $(uploader_table + '_uploader_table').insertRow(-1);
    var n_rows = $(uploader_table + '_uploader_table').tBodies[0].rows.length;
    if(isIE && isWin) {
        var td   = row.insertCell(-1);
        td.innerHTML = '<form id="fm_' + uploader_table + n_rows + '" method="post" action="?" enctype="multipart/form-data">' + '<input type="hidden" name="form_action" value="' + form_action + '" />' + '<input class="file" type="file" name="picture" /></form>';
        var td2   = row.insertCell(-1);
        td2.id = 'p'+uploader_table+n_rows;
    } else {
        row.innerHTML = '<td><form id="fm_' + uploader_table + n_rows + '" method="post" action="?" enctype="multipart/form-data">' + '<input type="hidden" name="form_action" value="' + form_action + '" />' + '<input class="file" type="file" name="picture" /></form></td><td id="p'+ uploader_table + n_rows + '"></td>';
    }
    apply_submit_handlers2(uploader_table);
    return false;
}

var cur_form2 = 1;
function upload_images2(uploader_table) {

    if (cur_form2 != 1) return false;
    upload_form2(uploader_table);
}

function upload_form2(uploader_table) {
    f = $('fm_' + uploader_table + cur_form);
    if (f) {
        if (f.picture.value) {
            f.submit();
        } else {
            cur_form2 += 1;
            return upload_form2(uploader_table);
        }
    } else {
        cur_form2 = 1;
    }
}

function ajax_gal_uploading2(uploader_table) {
    $('submitbtn'+uploader_table).innerHTML = 'Uploading';
    $('p'+ uploader_table + cur_form2).innerHTML = '...';
}

function ajax_gal_uploaded2(response, uploader_table) {
    $('submitbtn'+uploader_table).innerHTML = 'Done';
    var t = $('p'+ uploader_table + cur_form2);

    var sp = $('ru'+ uploader_table + cur_form2);
    sp.innerHTML = '<input class="file" type="file" name="picture" />';

    if (f) f.picture.value = '';
    if (f.picture.reset) f.picture.reset();
    if (f.picture.clearAttributes) f.picture.clearAttributes();
    cur_form2 += 1;
    if (response.substring(0, 1) != '<') {
        t.innerHTML = response;
    } else {
        t.innerHTML = '';
        /*$('gallery_pictures').innerHTML = response;*/
    }
    upload_form2(uploader_table);
}

// suporta funkcijas galeriju ajax-uploadam beidzas.

function ajax_game_relations(game_id) {
    /* checkme */
    return ajax_updater('game-' + game_id, {game_id: game_id, action: 'ajax-game-relations'});
}


var cur_page = -1;

function switch_comment_page(post_id, gallery_picture_idx, page, autoscroll)
{
    $$('.comments-ajax-loader').invoke('show');
    var parameters = {
            post_id: post_id,
            gallery_picture_idx: gallery_picture_idx,
            page: page,
			comments_sort: __comment_sorting_order
    };
    new Ajax.Request(ESPORTS_HOME + "ajax-show-comment-page", {
        method: 'get',
        parameters: parameters,
        onFailure: function(req) {
            location.reload(true);
        },
        onSuccess: function(req) {
            cur_page = page;
            $$('.comments-ajax-loader').invoke('hide');
            $('comment-list').innerHTML = req.responseText;
            if (autoscroll) {
                $('comment-list').scrollTo();
            }
        }
    });
    return false;
}

function initiate_comment_autoreload()
{
    reload_comments();
    setTimeout('initiate_comment_autoreload()', 90000);
}

function reload_comments(scroll) {
    var obj = $('comment-list');
    if (obj) {
        var post_id = $('cur-post-id').value;
        var page = 0;
        if (cur_page === -1) {
            page = $('cur-page') ? $('cur-page').value : 'last';
        } else {
            page = cur_page;
        }
        var gallery_picture_idx = $('cur-gallery-picture-idx').value;
        switch_comment_page(post_id, gallery_picture_idx, page, scroll);
    }
}

function enter_defaulttext() {
    var o = $('feasy');
    if (!o.tag) {
        o.tag = o.value;
    }
    if (o && o.value == o.tag) o.value = '';
}
function blur_defaulttext() {
    var o = $('feasy');
    if (o && o.value == '' && o.tag) o.value = o.tag;
}

function tg_comment(id) {
    $('hmt_' + id).hide();
    $('cmt_' + id).show();
    return false;
}
function set_image_mode(n) {
    $("div_bildes_browse").style.display = n == 1 ? "block": "none";
    $("div_bildes_saite").style.display = n == 2 ? "block": "none";
    $("bildes_browse").className = n == 1 ? "active": "inactive";
    $("bildes_saite").className = n == 2 ? "active": "inactive";
    if (n == 2) $("inp_bildes_saite").focus();
    return false;
}

function maybe_post_ajax_comment()
{
	var f = $('commentform');

	if (f.bildes_browse && f.bildes_browse.value) {
		return false; // won't post multipart via ajax
	}
	if (f.bildes_saite && f.bildes_saite.value) {
		return false; // won't load picture as well
	}


	var params = {form_action: 'ajax-post-comment'};
	if (f.post_id) params.post_id = f.post_id.value;
	if (f.comment_id) params.comment_id = f.comment_id.value;
	if (f.gallery_idx) params.gallery_idx = f.gallery_idx.value;
	if (f.group_id) params.group_id = f.group_id.value;
	if (f.comment) params.comment = f.comment.value;
	if (f.message) params.message = f.message.value;
	if (f['anon-captcha']) params['anon-captcha'] = f['anon-captcha'].value;
	if (f['anon-name']) params['anon-name'] = f['anon-name'].value;
	if (f['bildes_saite']) params.bildes_saite = f['bildes_saite'].value;

	$$('.comments-ajax-post-inv').invoke('hide');
	$$('.comments-ajax-post').invoke('show');

    new Ajax.Request(ESPORTS_HOME + "?req", {
        parameters: params,
        onSuccess: function(req) {
            if ((obj = $('comment-input'))) {
                obj.innerHTML = req.responseText;
                cur_page = 'last';
                if (req.responseText.indexOf('<p class="commenterror"') === -1) {
                    reload_comments(true);
                }
            }
        }
    });
	return true;
}

function mod_report_comment(comment_id)
{
    $('c-m-' + comment_id).style.display='block';
    $('c-m-' + comment_id).value = comment_id;
    return false;
}

function ajax_moderate_comment(comment_id)
{
    var params = {form_action: 'ajax-moderate-comment', comment_id: comment_id};
    $('c-m-' + comment_id).style.backgroundColor = '#ffc';
    new Ajax.Request(ESPORTS_HOME + "?req", {
        parameters: params,
        onFailure: function(req) {
            $('c-m-' + comment_id).style.backgroundColor = '#fcc';
        },
        onSuccess: function(req) {
            if (req.responseText) {
                alert(req.responseText);
            }
            $('c-c-' + comment_id).style.color = '#ccc';
            $('c-m-' + comment_id).style.display = 'none';
        }
    });
    return false;
}

function show_comment_edit_mode()
{
    if ($('comment_id')) {
        var edit_mode = parseInt($('comment_id').value);
        edit_mode ? $('comment-mode-edit').show() : $('comment-mode-edit').hide();
        edit_mode ? $('comment-mode-new').hide() : $('comment-mode-new').show();
    }
}
function show_hide_older_titles(ele)
{
    var ul = ele.parentNode.parentNode;
    if(ul.tagName.toLowerCase() != "ul")
        return false;
    li = ul.getElementsByTagName("li");
    for(var x = 0, len = li.length; x < len; x++)
    {
        if(li[x].className.indexOf("calendar-hidden-article") == -1)
            continue;
        if(li[x].className.indexOf("calendar-hidden-article-none") != -1)
            li[x].className = li[x].className.replace("calendar-hidden-article-none", "calendar-hidden-article");
        else
            li[x].className = li[x].className.replace("calendar-hidden-article", "calendar-hidden-article-none");
    }
    return false;
}
/************** rotor versija 2  jonis: 2009.06.05. 11:19:10 ********************/
function set_rotator_top_aricle(iElement, iRotatorId, iData) {
    var rot = document.getElementById(iRotatorId);
    if (!rot) {
        return false;
    }
    set_unset_className(iElement, 'active', '+');
    var allA = rot.getElementsByTagName("a");
    if (allA.length < 1) {
        return false;
    }
    var img;
    for(var x = 0, len = allA.length; x < len; x++) {
        allA[x].href = iData.url;
        allA[x].title = iData.titleAlt;
        if (allA[x].parentNode.parentNode.tagName.toLowerCase() == 'h1') {
            allA[x].innerHTML = iData.title;
        }
        if (allA[x].parentNode.tagName.toLowerCase() == 'h2') {
            allA[x].innerHTML = iData.intro;
        }
        img = allA[x].getElementsByTagName('img');
        if (img.length > 0) {
            img[0].src = iData.pictureUrl;
            img[0].alt = iData.titleAlt;
            img[0].title = iData.titleAlt;
        }
    }
}
var ROTOR_SHOW_BIG_ITEM_ACTIVE = false;
function rotor_show_big_item(items, myid, incom, topDivName)
{
    var topDiv = document.getElementById(topDivName);    
    var a = topDiv.getElementsByTagName('a');
    for(var x = 0, len = a.length; x < len; x++)
        a[x].href = incom[myid][2];
    
    var img = topDiv.getElementsByTagName('img');
    for(var x = 0, len = img.length; x < len; x++){
        img[x].src = incom[myid][3];
    }
    var div = topDiv.getElementsByTagName('div')[0];
    var divA = div.getElementsByTagName('a')[0];
    divA.innerHTML = incom[myid][1];
    
    var h2 = topDiv.getElementsByTagName('h2')[0];
    var h2A = h2.getElementsByTagName('a')[0];
    h2A.innerHTML = incom[myid][0];
    
    //ROTOR_SHOW_BIG_ITEM_ACTIVE
}
/**************** END ******************/
function is_set_className(iElement, iClassName) {
    if (typeof(iElement) == 'string') {
        vElement = document.getElementById(iElement);
    } else if (typeof(iElement) == 'object') {
        vElement = iElement;
    }
    if (vElement === false || vElement == undefined || vElement == null || vElement.className == undefined) {
        return false;
    }
    
    if (vElement.className.indexOf(' ' + iClassName) != -1) {
        return true;
    } else if (vElement.className.indexOf(iClassName + ' ') != -1) {
        return true;
    } else {
        var tmp = vElement.className.toString();
        if (tmp.replace(iClassName, '') == '') {
            return true;
        }
    }
    return false;   
}
function set_unset_className(iElement, iClassName, iType) {
   
    var vElement = false;
    var vSufix = '';
    if (typeof(iElement) == 'string') {
        vElement = document.getElementById(iElement);
    } else if (typeof(iElement) == 'object') {
        vElement = iElement;
    }
    if (vElement === false || vElement == undefined || vElement == null || vElement.className == undefined) {
        //console.log(vElement === false, ' ', vElement == undefined, ' ', vElement == null, ' ', vElement.className == undefined);
        return false;
    }
    
    switch(iType) {
        case "+":
            if (iClassName == '') {
                return false;
            }     
            var vSufix = (vElement.className == '' ? '' : ' ');
            if (vElement.className.indexOf(vSufix + iClassName) == -1 && vElement.className.indexOf(iClassName  + vSufix) == -1 && vElement.className != iClassName) {
                vElement.className += vSufix + iClassName;
            }
        break;
        case "-":
            if (iClassName == '') {
                return false;
            }
            if (vElement.className.indexOf(' ' + iClassName) != -1) {
                vElement.className = vElement.className.replace(' ' + iClassName, '');
            } else if (vElement.className.indexOf(iClassName + ' ') != -1) {
                vElement.className = vElement.className.replace(iClassName + ' ', '');
            } else {
                var tmp = vElement.className.toString();
                if (tmp.replace(iClassName, '') == '') {
                    vElement.className = vElement.className.replace(iClassName, '');
                }
            }
        break;
        default:
            vElement.className = iClassName;
        break;
    }
}
/*******************************************************/
function get_parent_tag(myThis, mytag, myid, myclass, mysteps){
    /*
        @ myThis
        @ mytag - meklejamais tags
        @ myid - meklejamais tags ar ID == 
        @ myclass - meklejamais tags ar className == 
        @ mysteps - ja ir 0, tad uzrada pakapes indeksu ja tiek atrasts tags, ja ir -x, tad atgriez x pakapes elementu
    */   
    var searchForTag = (typeof(mytag) == 'string' && mytag !=  false ? mytag.toLowerCase() : false);
    var searchForId = (typeof(myid) == 'string' && myid !=  false ? myid : false);
    var searchForClass = (typeof(myclass) == 'string' && myclass !=  false ? myclass : false);
    var step = (typeof(mysteps) == 'number' ? mysteps : false);
    var parentTag = myThis.parentNode;
    
    if (typeof(step) == 'number') {
        if (-1 == step) {
            return parentTag;
        }
        step++;
    }
    
    if (false == searchForTag && false == searchForId && false == searchForClass) {
        if(0 > step)
            return get_parent_tag(parentTag, searchForTag, searchForId, searchForClass, step);    
        return myThis;
    }    
       
    if (false != searchForTag && parentTag.tagName.toLowerCase() != searchForTag) {       
        return get_parent_tag(parentTag, searchForTag, searchForId, searchForClass, step);
    }
    
    if (false != searchForId && parentTag.id != searchForId) {
        return get_parent_tag(parentTag, searchForTag, searchForId, searchForClass, step);
    }
    
    if (false != searchForClass && parentTag.className != searchForClass) {
        return get_parent_tag(parentTag, searchForTag, searchForId, searchForClass, step);
    }
    if (false != step)
        return [parentTag, step];
    
    return parentTag;
}

function getRandomString(len) {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = (typeof(len) == 'number' && len > 0 ? len : 10);
	var randomstring = '';
	for (var i = 0; i < string_length; i++)
	{
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum, rnum + 1);
	}
	return randomstring;
}
function jAjax(url) {	
    var _data = {
		'myurl'				: url || window.location.toString(),
		'myhttp'			: false,
		'mySuccessFunction'	: false,
		'myFailureFunction' : false,
		'myfunctions'		: new Array,
		'myparams'			: false
	};
	var fInit = function () {
		try {
			_data.myhttp = new XMLHttpRequest();
		} catch (e) {
			try {
				_data.myhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e) {
				try {
					_data.myhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					alert("Your browser does not support AJAX!");			
				}
		    }
		}		
		_data.myhttp.onreadystatechange = fReadyState;
	}
	var fSetCallUrl = function (url) {
	    if(typeof(url) == 'undefined' || url == '') {
			return false;
		}
		_data.myurl = url;		
	}
	var fGetCallUrl = function () {
	    return _data.myurl;
	}
	var fClearParams = function () {
	    _data.myparams = '';
	}
	this.clearParams = fClearParams;
	var fSetParams = function (vars) {
	    if(typeof(vars) != 'string') {
			return false;
		}
		if(_data.myparams != false) {
			_data.myparams = _data.myparams + "&" + vars;
		} else {
			_data.myparams = vars;
		}
	}
	this.setParams = fSetParams;
	var fGetParams = function () {
	    return _data.myparams;
	}
	var fSetFunction = function () {
	    if (arguments.length < 1) {
	        return false;
	    }
	    if(typeof(arguments[0]) != 'function') {
			return false;
		}		
		for(var x = 4; x > 0; x--) {
			if(typeof(_data.myfunctions[x]) == 'undefined') {
				_data.myfunctions[x] = arguments;
				break;
			}
		}
		return false;
	}
	this.setFunction = fSetFunction;
	var fCallPost = function (url) {
	    if(typeof(url) != 'undefined' && url != '') {
			fSetCallUrl(url);
		}		
		fInit();		
		_data.myhttp.open("POST", fGetCallUrl(), true); 
		_data.myhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  		_data.myhttp.send(fGetParams());
	}
	this.callPost = fCallPost;
	var fCallGet = function (url) {
	    if(typeof(url) != 'undefined' && url != '') {
			fSetCallUrl(url);
		}		
		fInit();		
		_data.myhttp.open("GET", fGetCallUrl(), true);
		_data.myhttp.send(null);
	}
	this.callGet = fCallGet;
	var fReadyState = function () {    
	    var txt = false;
		var xml = false;
		var tmpParams = new Array;
		var myreadyState = _data.myhttp.readyState;		
		if(_data.myhttp.readyState == 4) {
			txt = _data.myhttp.responseText;
			xml = _data.myhttp.responseXML;
			_data.myhttp.statusText;
			_data.myhttp.status;
		}
		if(typeof(_data.myfunctions[myreadyState]) == 'object' && typeof(_data.myfunctions[myreadyState][0]) == 'function') {
		    tmpParams = _data.myfunctions[myreadyState];
		    //tmpParams[0] = null;
		    _data.myfunctions[myreadyState][0](txt, xml, tmpParams);
		}
		return false;
	}
}

function AjaxL(_url)
{	
    var _data = {
		'myurl'				: _url		|| window.location.toString(),
		'myhttp'			: false,
		'mySuccessFunction'	: false,
		'myFailureFunction' : false,
		'myfunctions'		: new Array,
		'myparams'			: false,
		'myHistoryID'		: false,
		'myLoader'			: {
			'active'			: 0,
			'place'				: false,
			'myid'				: false
		}		
	};
	function AjaxLsetUrl(_url) {
        if(typeof(_url) == 'undefined' || _url == '')
			return false;
		_data.myurl = makeurl(false, _url);		
	}
	function AjaxLpost(_url) {
        if(typeof(_url) != 'undefined' && _url != '')
			AjaxLsetUrl(_url);			
		
		AjaxLloading();		
		_data.myhttp.open("POST", _data.myurl, true); 
		_data.myhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  		_data.myhttp.send(_data.myparams);
	}
	function AjaxLget(_url) {
		if(typeof(_url) != 'undefined' && _url != '')
			AjaxLsetUrl(_url);
		
		AjaxLloading();
		
		_data.myhttp.open("GET", _data.myurl, true);
		_data.myhttp.send(null);
	}
    function AjaxLsetFunctions(_function, _params, _order) {
        if(typeof(_function) != 'function')
			return false;
		if(typeof(_order) == 'number')
		{			
			_data.myfunctions[_order] = new Array;				
			_data.myfunctions[_order]['func'] = _function;
			_data.myfunctions[_order]['params'] = _params || false;			
			return false;
		}		
		for(var x = 4; x > 0; x--)
		{
			if(typeof(_data.myfunctions[x]) == 'undefined')			
			{				
				_data.myfunctions[x] = new Array;				
				_data.myfunctions[x]['func'] = _function;
				_data.myfunctions[x]['params'] = _params || false;				
				break;
			}
		}	
		return false;
	}	
    function AjaxLsetParams(_var) {
		if(typeof(_var) != 'string')
			return false;
		var vars = makeurl(false, _var);
		if(_data.myparams != false)
			_data.myparams = _data.myparams + "&" + vars;
		else
			_data.myparams = vars;		
	}
	function AjaxLloading()
	{	
		_data.myhttp = false;
		try
		{
			// Firefox, Opera 8.0+, Safari
			_data.myhttp = new XMLHttpRequest();
		}
		catch (e)
		{
			// Internet Explorer
			try
			{
				_data.myhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					_data.myhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e)
				{
					alert("Your browser does not support AJAX!");			
				}
		    }
		}		
		_data.myhttp.onreadystatechange = AjaxLreadyState;		
	}
	function AjaxLreadyState()
	{		
		var txt = false;
		var xml = false;
		var tmpParams = '';
		var myreadyState = _data.myhttp.readyState;		
		if(_data.myhttp.readyState == 4)
		{
			txt = _data.myhttp.responseText;
			xml = _data.myhttp.responseXML;
			if(_data.myLoader.active == 1)
			{
				_data.myLoader.place.className = _data.myLoader.place.className.replace("elementRelative", "");
				_data.myLoader.active = 0;				
				deleteElement(document.getElementById(_data.myLoader.myid));
			}
			(_data.myhttp.statusText);
			(_data.myhttp.status);
		}
		if(typeof(_data.myfunctions[myreadyState]) == 'object' && typeof(_data.myfunctions[myreadyState]['func']) == 'function')
		{	
			for(var g = 0, len = _data.myfunctions[myreadyState]['params'].length; g < len; g++)
				tmpParams = tmpParams + ", _data.myfunctions[myreadyState]['params'][" + g + "]";			
			eval("_data.myfunctions[myreadyState]['func'](txt, xml" + tmpParams + ");");	
		}
		
		return false;
	}
	function AjaxLloader(_myid)
	{		
		_data.myLoader.place = (typeof(_myid) == 'string' ? document.getElementById(_myid) : _myid);
		if(_data.myLoader.place == null)
			return false;
		_data.myLoader.place.className = _data.myLoader.place.className + " elementRelative";
		_data.myLoader.active = 1;
		_data.myLoader.myid = getRandomString();
		createElements(_data.myLoader.place, false, "div", _data.myLoader.myid);
		var tmp = document.getElementById(_data.myLoader.myid);
		tmp.className = "ajaxLoader";		
		tmp.style.width = _data.myLoader.place.offsetWidth + "px";
		tmp.style.height = _data.myLoader.place.offsetHeight + "px";		
		createElements(tmp, false, "img");
		var imgs = tmp.getElementsByTagName("img")[0];
		imgs.src = '/images/ajax-loader.gif';		
		imgs.style.marginTop = (_data.myLoader.place.offsetHeight / 2 - 50) + "px";
			
		return false;
	}
	this.setParams = AjaxLsetParams;
	this.setFunctions = AjaxLsetFunctions;	
	this.makeLoader = AjaxLloader;
	this.callGet = AjaxLget;
	this.callPost = AjaxLpost;
	this.loading = AjaxLloader;
}
function makeurl(_param, _url, _seperator, frendlyUrl)
{
	var _data = {
		'myurl'			: _url			|| window.location + "",
		'seperator'		: _seperator 	|| "&",
		'myparams'		: _param		|| false,	
		'myurl_host'	: new Array, // 0 -> http://, 1 -> host 2-> directory 3-> params 4 -> anchor
		'frendly'		: frendlyUrl 	|| false
	}
	var regExpSeperate = new RegExp('((.*://|)([^/?&]{0,}))([^?&]{0,})([^#]{0,})(.*)', '');
		
	while(_data.myurl.indexOf("&amp;") != -1)
		_data.myurl = _data.myurl.replace("&amp;", "&");
	
	if(_data.myparams != false)
	{
		//if(_data.frendly != false)
		{
			var tmps = _data.myurl.match(regExpSeperate);		
			_data.myurl_host[0] = tmps[2]
			_data.myurl_host[1] = tmps[3];
			_data.myurl_host[2] = tmps[4];
			_data.myurl_host[3] = tmps[5];
			_data.myurl_host[4] = tmps[6];
		}	
		
		switch(typeof(_data.myparams))
		{
			case "string": // strings
				while(_data.myparams.indexOf("&amp;") != -1)
					_data.myparams = _data.myparams.replace("&amp;", "&");
				tmp = _data.myparams; 
				_data.myparams = tmp.split("&");
			break;			
		}
		// liekam klat urlim		
		for(var r = 0, len = _data.myparams.length; r < len; r++)
		{	
			tmpParam = new Array;			
			if(_data.myparams[r].indexOf("=") != -1)			
				tmpParam = _data.myparams[r].split("=");			
			else			
				tmpParam = [_data.myparams[r], ''];
			
			reg_sting = new RegExp('([?]{1}|[&]{1})((' + (tmpParam[0]) + ')=([^&]{1,}|))', '');
			check = _data.myurl_host[3].match(reg_sting);
			
			if(tmpParam[0].toLowerCase() == "id" && _data.frendly != false)
			{
				tmps = _data.myurl_host[1].split(".");				
				tmps[tmps.length - 3] = tmpParam[1];
				_data.myurl_host[1] = "";
				for(var r=0,len=tmps.length;r<len;r++)
					_data.myurl_host[1] += (r > 0 ? "." : "") + tmps[r];				
				tmpParam[1] = "";
			}					
			if(check == null) // ja sads mainigais neexistee urli
			{				
				if(tmpParam[1].length > 0)
				{					
					if(_data.myurl_host[3].indexOf("?") == -1)					
						_data.myurl_host[3] = "?" + tmpParam[0] + "=" + tmpParam[1];					
					else if(_data.myurl_host[3].indexOf("?") + 1 == _data.myurl_host[3].length)
						_data.myurl_host[3] = _data.myurl_host[3] + tmpParam[0] + "=" + tmpParam[1];
					else
						_data.myurl_host[3] = _data.myurl_host[3] + "&" + tmpParam[0] + "=" + tmpParam[1];
				}					
			}
			else // ja mainigais existee
			{
				if(tmpParam[1].length > 0) // ja ir vertiba, tad liekam klat urlim
				{
					if(tmpParam[1].substr(0, 3) == "{+}")					
						_data.myurl_host[3] = _data.myurl_host[3].replace(check[2], tmpParam[0] + "=" + check[4] + tmpParam[1].replace("{+}", ""));
					else if(tmpParam[1].substr(tmpParam[1].length - 3, 3) == "{+}")
						_data.myurl_host[3] = _data.myurl_host[3].replace(check[2], tmpParam[0] + "=" + tmpParam[1].replace("{+}", "") + check[4]);
					else if(tmpParam[1].substr(0, 3) == "{-}")					
						_data.myurl_host[3] = _data.myurl_host[3].replace(check[2], tmpParam[0] + "=" + check[4].replace(tmpParam[1].replace("{-}", ""), ""));					
					else if(tmpParam[1].substr(tmpParam[1].length - 3, 3) == "{-}")
						_data.myurl_host[3] = _data.myurl_host[3].replace(check[2], tmpParam[0] + "=" + tmpParam[1].replace("{-}", "") + check[4]);
					else
						_data.myurl_host[3] = _data.myurl_host[3].replace(check[2], tmpParam[0] + "=" + tmpParam[1]);					
				}
				else // dzesam araa
				{
					_data.myurl_host[3] = _data.myurl_host[3].replace(check[0],"");
				}
			}			
		}
		_data.myurl = _data.myurl_host[0] + _data.myurl_host[1] + _data.myurl_host[2] + _data.myurl_host[3] + _data.myurl_host[4];
	}	
	// ja seperators atsikras no defaultaa
	if(_data.seperator != "&")
	{
		while(_data.myurl.indexOf("&") != -1)
			_data.myurl = _data.myurl.replace("&", "{*/*}");
		while(_data.myurl.indexOf("{*/*}") != -1)
			_data.myurl = _data.myurl.replace("{*/*}", _data.seperator);
	}
	return _data.myurl;	
}
function createElements(_target, _next, _tag, _id, _class, _name, _value)
{
	var newdiv = document.createElement(_tag);
	if(_id != "" && _id != undefined && _id != false)	  
		newdiv.id = _id;	
	if(_class != "" && _class != undefined && _class != false)	  
		newdiv.className = _class;
	if(_name != "" && _name != undefined && _name != false)	  
		newdiv.name = _name;	
	if(_value != "" && _value != undefined && _value != false)	  
		newdiv.value = _value;
	if(_next != undefined && _next != false && _next != "")
		_target.insertBefore(newdiv, _next);
	else
		_target.appendChild(newdiv);
		
	return newdiv;
}
function deleteElement(_element)
{
	if(_element == undefined || typeof(_element) != 'object')
		return false;		
	list = _element.childNodes;
	while(list.length > 0)
		_element.removeChild(list[0]);
	
	_element.parentNode.removeChild(_element);
	return false;
}
function Cache()
{
    var vData = {
        'cache' : new Array
    };
    function Cache_set(iParam, iValue)
    {
        if(iParam != undefined && iValue != undefined) {
            vData.cache[iParam] = iValue;
        }
    }
    function Cache_get(iParam)
    {
        if(iParam != undefined && vData.cache[iParam] != undefined && vData.cache[iParam] != null) {
            return vData.cache[iParam];
        }
        return null
    }
    function Cache_clear(iParam)
    {
        if(iParam != undefined) {
            vData.cache[iParam] = null;
        }
    }
    this.get = Cache_get;
    this.set = Cache_set;
    this.clear = Cache_clear;
}
var cache = new Cache();

function repStr(iHtml, iKey, iStr, iAll) {
    var vCount = typeof(iAll) == 'number' && iAll > 0 ? iAll : -1;
    var vReg = new RegExp('<st:'+iKey+'><en:'+iKey+'>', '');
    var i = 0;
    
    while (null != (matchTemp1 = iHtml.match(vReg)) && (vCount > i || vCount == -1)) {
        iHtml = iHtml.replace(matchTemp1[0], iStr);
        i++;
    }   
    return iHtml;
}
function addslashes(str){return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");}

function get_html_translation_table(table, quote_style) {
    
    var entities = {}, hash_map = {}, decimal = 0, symbol = '';
    var constMappingTable = {}, constMappingQuoteStyle = {};
    var useTable = {}, useQuoteStyle = {};
    
    // Translate arguments
    constMappingTable[0]      = 'HTML_SPECIALCHARS';
    constMappingTable[1]      = 'HTML_ENTITIES';
    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
    constMappingQuoteStyle[2] = 'ENT_COMPAT';
    constMappingQuoteStyle[3] = 'ENT_QUOTES';
 
    useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
    useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
 
    if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
        throw new Error("Table: "+useTable+' not supported');
        // return false;
    }
 
    entities['38'] = '&amp;';
    if (useTable === 'HTML_ENTITIES') {
        entities['160'] = '&nbsp;';
        entities['161'] = '&iexcl;';
        entities['162'] = '&cent;';
        entities['163'] = '&pound;';
        entities['164'] = '&curren;';
        entities['165'] = '&yen;';
        entities['166'] = '&brvbar;';
        entities['167'] = '&sect;';
        entities['168'] = '&uml;';
        entities['169'] = '&copy;';
        entities['170'] = '&ordf;';
        entities['171'] = '&laquo;';
        entities['172'] = '&not;';
        entities['173'] = '&shy;';
        entities['174'] = '&reg;';
        entities['175'] = '&macr;';
        entities['176'] = '&deg;';
        entities['177'] = '&plusmn;';
        entities['178'] = '&sup2;';
        entities['179'] = '&sup3;';
        entities['180'] = '&acute;';
        entities['181'] = '&micro;';
        entities['182'] = '&para;';
        entities['183'] = '&middot;';
        entities['184'] = '&cedil;';
        entities['185'] = '&sup1;';
        entities['186'] = '&ordm;';
        entities['187'] = '&raquo;';
        entities['188'] = '&frac14;';
        entities['189'] = '&frac12;';
        entities['190'] = '&frac34;';
        entities['191'] = '&iquest;';
        entities['192'] = '&Agrave;';
        entities['193'] = '&Aacute;';
        entities['194'] = '&Acirc;';
        entities['195'] = '&Atilde;';
        entities['196'] = '&Auml;';
        entities['197'] = '&Aring;';
        entities['198'] = '&AElig;';
        entities['199'] = '&Ccedil;';
        entities['200'] = '&Egrave;';
        entities['201'] = '&Eacute;';
        entities['202'] = '&Ecirc;';
        entities['203'] = '&Euml;';
        entities['204'] = '&Igrave;';
        entities['205'] = '&Iacute;';
        entities['206'] = '&Icirc;';
        entities['207'] = '&Iuml;';
        entities['208'] = '&ETH;';
        entities['209'] = '&Ntilde;';
        entities['210'] = '&Ograve;';
        entities['211'] = '&Oacute;';
        entities['212'] = '&Ocirc;';
        entities['213'] = '&Otilde;';
        entities['214'] = '&Ouml;';
        entities['215'] = '&times;';
        entities['216'] = '&Oslash;';
        entities['217'] = '&Ugrave;';
        entities['218'] = '&Uacute;';
        entities['219'] = '&Ucirc;';
        entities['220'] = '&Uuml;';
        entities['221'] = '&Yacute;';
        entities['222'] = '&THORN;';
        entities['223'] = '&szlig;';
        entities['224'] = '&agrave;';
        entities['225'] = '&aacute;';
        entities['226'] = '&acirc;';
        entities['227'] = '&atilde;';
        entities['228'] = '&auml;';
        entities['229'] = '&aring;';
        entities['230'] = '&aelig;';
        entities['231'] = '&ccedil;';
        entities['232'] = '&egrave;';
        entities['233'] = '&eacute;';
        entities['234'] = '&ecirc;';
        entities['235'] = '&euml;';
        entities['236'] = '&igrave;';
        entities['237'] = '&iacute;';
        entities['238'] = '&icirc;';
        entities['239'] = '&iuml;';
        entities['240'] = '&eth;';
        entities['241'] = '&ntilde;';
        entities['242'] = '&ograve;';
        entities['243'] = '&oacute;';
        entities['244'] = '&ocirc;';
        entities['245'] = '&otilde;';
        entities['246'] = '&ouml;';
        entities['247'] = '&divide;';
        entities['248'] = '&oslash;';
        entities['249'] = '&ugrave;';
        entities['250'] = '&uacute;';
        entities['251'] = '&ucirc;';
        entities['252'] = '&uuml;';
        entities['253'] = '&yacute;';
        entities['254'] = '&thorn;';
        entities['255'] = '&yuml;';
    }
 
    if (useQuoteStyle !== 'ENT_NOQUOTES') {
        entities['34'] = '&quot;';
    }
    if (useQuoteStyle === 'ENT_QUOTES') {
        entities['39'] = '&#39;';
    }
    entities['60'] = '&lt;';
    entities['62'] = '&gt;';
 
 
    // ascii decimals to real symbols
    for (decimal in entities) {
        symbol = String.fromCharCode(decimal);
        hash_map[symbol] = entities[decimal];
    }
    
    return hash_map;
}
   
function htmlspecialchars (string, quote_style) { 
    var hash_map = {}, symbol = '', tmp_str = '', entity = '';
    tmp_str = string.toString();
    
    if (false === (hash_map = get_html_translation_table('HTML_SPECIALCHARS', quote_style))) {
        return false;
    }
    
    hash_map["'"] = '&#039;';
    for (symbol in hash_map) {
        entity = hash_map[symbol];
        tmp_str = tmp_str.split(symbol).join(entity);
    }
    
    return tmp_str;
}
function nl2br (str, is_xhtml) {
    var breakTag = '';
 
    breakTag = '<br />';
    if (typeof is_xhtml != 'undefined' && !is_xhtml) {
        breakTag = '<br>';
    }
 
    return (str + '').replace(/([^>]?)\n/g, '$1'+ breakTag +'\n');
}
function br2nl(str)
{
    return str.replace(/<br\s*\/?>/mg,"\n");
}
    
var vErrorTxt = '';
var vErrorMessages = new Array;
function set_error_message(iMessage)
{
    if (typeof(iMessage) != 'object') {
        return false;
    }    
    vErrorMessages = iMessage;
}
function get_error_message(iCode)
{
    return (vErrorMessages[iCode] == undefined ? iCode : vErrorMessages[iCode]);
}
function set_error(iCode, iTxt, iEcho, iMessage)
{
    set_error_message(iMessage);
    if ((iCode == '' || iCode == false) && (iTxt == '' || iTxt == false)) {
        clear_error();
        return false;
    }
    if (iCode == '' || iCode == false) {
    	vErrorTxt = iTxt;
    } else if (iTxt == '' || iTxt == false) {
    	if (vErrorMessages[iCode] == undefined) {
    		vErrorTxt = iCode;
    	} else {
    		vErrorTxt = vErrorMessages[iCode];
    	}
    } else {
    	if (vErrorMessages[iCode] == undefined) {
    		vErrorTxt = iCode + " : " + iTxt;
    	} else {
    	    if (vErrorMessages[iCode].indexOf("%s") > -1) {
    	        vErrorTxt = vErrorMessages[iCode].replace("%s", iTxt);
    	    } else {
    	        vErrorTxt = vErrorMessages[iCode] + " : " + iTxt;
    	    }
    	}
    }
    if (iEcho == undefined || iEcho == false || iEcho == 0) {
    	return false;
    } else {
    	return get_error();
    }
}
function get_error(iEcho)
{
    if (vErrorTxt != '' && vErrorTxt != false && vErrorTxt != null) {
        alert(vErrorTxt);
        clear_error();
        return true; 
    }
    clear_error();
    return false;
}
function clear_error()
{
    vErrorTxt = '';
}
function get_var(iObj, iAtrribute, iDefaultValue) {
    
    if (iObj == false || iObj == undefined || iObj == null || iAtrribute == false || iAtrribute == undefined || iAtrribute == null) {
        return NaN;
    }    
    if (iObj[iAtrribute] == undefined) {
        return NaN;
    }
    
    return iObj[iAtrribute];
}
/*******************************************************/
/************************* very bad staf *********************/
function screen_blocker(iTarget, iTag, iId, iClass)
{
    var parentElementHeight = 0;
    var parentElementWidth = 0;
    var vTarget = false;
    if (iTarget == undefined || iTarget == false || iTarget == null) {
        vTarget = document.getElementsByTagName("body")[0];
    } else if (typeof (iTarget) != 'object') {
        vTarget = document.getElementById(iTarget);
    } else {
        vTarget = iTarget;
    }
    
    var vTag = 'div';
    if (iTag != undefined && iTag != false && iTag != null && iTag != '') {
        vTag = iTag
    }
    
    var vId = false;
    if (iId == undefined || iId == false || iId == null) {
        vId = getRandomString();
    } else if (iId != '') {
        vId = iId;
    }
    
    var vClass = false;
    if (iClass == undefined || iClass == false || iClass == null) {
        vClass = 'screenBlocker';
    } else if (vClass != '') {
        vClass = iClass;
    }

    var e_h = false;
    var e_w = false;
    if (vTarget.currentStyle) {
        e_w = vTarget.offsetWidth;
        e_h = vTarget.offsetHeight;		
	} else if (window.getComputedStyle) {
	    e_w = vTarget.offsetWidth;
	    e_h = vTarget.offsetHeight;	    
	}
    
    var vElem = createElements(vTarget, false, vTag, vId, vClass);
    vElem.style.height = e_h + 'px';
    vElem.style.width = e_w + 'px';
    return vElem;
    
}
function reload_html_element(iElem)
{
    var vId = getRandomString();
    var vRemoveId = 0;
    if (iElem.id == '') {
        iElem.id = vId;
        vRemoveId = 1;
    } else {
        vId = iElem.id;
    }
    vElem = document.getElementById(vId);
    if (vRemoveId == 1) {
        vElem.id = '';
    }
    return vElem;
    
}
function show_loading(iTarget, iAppend, iImageLocation, iAction)
{    
    // target
    // append
    // image
    // delete || create
    
}
function draugiemLVClose(iId, vId2)
{    
    deleteElement(document.getElementById(iId));
    deleteElement(document.getElementById(vId2));
    return false;
}
function pageHeight() {return  window.innerHeight != null ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;} 
function draugiemLV(iEvent, portals)
{
    var BlockElement = screen_blocker();
    var vid = getRandomString();
    var vDiv = createElements(BlockElement.parentNode, false, 'div', vid, 'drdiv');
    var vDiv1 = createElements(vDiv, false, 'div', false);
    
    vDiv1.innerHTML = '<div class="drHeader"><img src="http://esports.lv/images/lv/logo_' + portals + '.gif" alt="" class="logo" /><a href="#" onclick="draugiemLVClose(\'' + vid + '\', \'' + BlockElement.id + '\')"><img src="http://'+portals+'.lv/images/lightbox/closelabel.gif" alt="Aizvērt" class="closethis" /></a><div class="instruction"><h3>Lasi ' + (portals == 'esports' ? 'esporta' : 'skatiena') + ' jaunumus draugos</h3><ul><li>1. spied uz "Seko manām sarunām"</li><li>2. <a href="#" onclick="draugiemLVClose(\'' + vid + '\', \'' + BlockElement.id + '\')">spied šeit, lai atgrieztos ' + portals + '.lv</a></li></ul></div></div>';
    var ifr = createElements(vDiv1, false, 'iframe');
    var thisSiteLocation = window.location.toString();
    
    ifr.height = (pageHeight() - 60) + 'px';
    ifr.src = 'http://www.draugiem.lv/' + portals + '.lv';
    //iEvent.target = '_new';
    //iEvent.href = 'http://www.draugiem.lv/esports.lv';
    return false;    
}


/*************************************************************/
/************************* pievienot 2 ************************************/
function calendar_show_hidden(myEvent, txt1, txt2)
{
    if(myEvent.parentNode.getElementsByTagName("span")[0] == undefined)
        return false;
    if(myEvent.parentNode.getElementsByTagName("span")[0].style.display == '' || myEvent.parentNode.getElementsByTagName("span")[0].style.display == 'none'){
        myEvent.parentNode.getElementsByTagName("span")[0].style.display = 'inline';
        myEvent.innerHTML = txt1;
    }
    else{
        myEvent.parentNode.getElementsByTagName("span")[0].style.display = 'none';
        myEvent.innerHTML = txt2;
    }    
    return false;
}
/**************** END ******************/
var retaaa_FILECOUNTER = 0;
function retaaa(myEvent)
{
    var newMyFile = document.createElement("input");    
    var reg = new RegExp('\\d');    
    newMyFile.name = myEvent.name.replace(reg, ++retaaa_FILECOUNTER);
    newMyFile.type = myEvent.type;
    newMyFile.className = myEvent.className;
    newMyFile.onchange = myEvent.onchange;
    myEvent.onchange = function (){return false;}
    //myEvent.style.display = 'none';
    myEvent.parentNode.insertBefore(newMyFile, myEvent);
	
    alert(myEvent.value);
}
/************ paredzets testam *************/
var SELECTED_RANGE = null;
function getSelectionHandler() {
    var startDate = null;
    var ignoreEvent = false;
    return function(cal) {
        var selectionObject = cal.selection;

        // avoid recursion, since selectRange triggers onSelect
        if (ignoreEvent)
            return;

        var selectedDate = selectionObject.get();
        if (startDate == null) {
            startDate = selectedDate;
            SELECTED_RANGE = null;
                        
            // comment out the following two lines and the ones marked (*) in the else branch
            // if you wish to allow selection of an older date (will still select range)
            cal.args.min = Calendar.intToDate(selectedDate);
            cal.refresh();
        } else {
            ignoreEvent = true;
            selectionObject.selectRange(startDate, selectedDate);
            ignoreEvent = false;
            SELECTED_RANGE = selectionObject.sel[0];
            
            // alert(SELECTED_RANGE.toSource());
            //
            // here SELECTED_RANGE contains two integer numbers: start date and end date.
            // you can get JS Date objects from them using Calendar.intToDate(number)
            
            startDate = null;            
            
            // (*)
            cal.args.min = null;
            cal.refresh();
        }
    };
};


/********************** atlokamais banneris **********************/
siteLanguage = 'lat';
webSiteURL = '/';
if(typeof sIFR == "function")
{
	sIFR_init();
};


var esel = new Object();
esel.ad_url = escape('http://sportacentrs.com/par_mums/reklama/13112008-rekords_plus');

esel.small_image = webSiteURL+escape('images/banners/sturismazais.gif');
esel.big_image = webSiteURL+escape('images/banners/sturisliels.gif');

esel.small_width = '75'; 
esel.small_height = '75';
esel.small_params = 'ico=' + esel.small_image;
esel.big_width = '500';
esel.big_height = '500';
esel.big_params = 'big=' + esel.big_image + '&ad_url=' + esel.ad_url;

esel.small_path = webSiteURL+'js/cornersmall.swf';
esel.big_path = webSiteURL+'js/cornerbig.swf';

function sizeup987(){
	document.getElementById('eselcornerBig').style.visibility = 'visible';
	document.getElementById('eselcornerSmall').style.visibility = 'hidden';
}
function sizedown987(){
	document.getElementById("eselcornerSmall").style.visibility = "visible";
	document.getElementById("eselcornerBig").style.visibility = "hidden";
}
esel.putObjects = function () 
{
document.write('<div id="eselcornerSmall" style="position:absolute;width:'+ esel.small_width +'px;height:'+ esel.small_height +'px;z-index:9999;right:0px;top: 25px;visibility: visible;">');
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');
document.write('codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"');
document.write(' id="eselcornerSmallObject" width="'+esel.small_width+'" height="'+esel.small_height+'">');
document.write(' <param name="allowScriptAccess" value="always"/> ');
document.write(' <param name="movie" value="'+ esel.small_path +'?'+ esel.small_params +'"/>');
document.write(' <param name="wmode" value="transparent" />');
document.write(' <param name="quality" value="high" /> ');
document.write(' <param name="FlashVars" value="'+esel.small_params+'"/>');
document.write('<embed src="'+ esel.small_path + '?' + esel.small_params +'" name="eselcornerSmallObject" wmode="transparent" quality="high" width="'+ esel.small_width +'" height="'+ esel.small_height +'" flashvars="'+ esel.small_params +'" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>');
document.write('</object></div></script>');

document.write('<div id="eselcornerBig" style="position:absolute;width:'+ esel.big_width +'px;height:'+ esel.big_height +'px;z-index:9999;right:0;top: 25px;visibility: visible;">');
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');
document.write('codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"');
document.write(' id="eselcornerBigObject" width="'+ esel.big_width +'" height="'+ esel.big_height +'">');
document.write(' <param name="allowScriptAccess" value="always"/> ');
document.write(' <param name="movie" value="'+ esel.big_path +'?'+ esel.big_params +'"/>');
document.write(' <param name="wmode" value="transparent"/>');
document.write(' <param name="quality" value="high" /> ');
document.write(' <param name="FlashVars" value="'+ esel.big_params +'"/>');
document.write('<embed src="'+ esel.big_path + '?' + esel.big_params +'" id="eselcornerBigEmbed" name="eselcornerBigObject" wmode="transparent" quality="high" width="'+ esel.big_width +'" height="'+ esel.big_height +'" flashvars="'+ esel.big_params +'" swliveconnect="true" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>');
document.write('</object></div>');
setTimeout('document.getElementById("eselcornerBig").style.visibility = "hidden";',1000);
}
/*****************************************************************/

function fbs_click()
{
    u=location.href;
    t=document.title;
    window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
    return false;
}


function show_football_live() {
	window.open('/livetest/f-chart.html','football', 'resizable=no, width=650, height=700');
}
function show_football_live(url, height) {
	if (url) {
		url = url + 'livetest/f-chart.html';
	} else {
		url = '/livetest/f-chart.html';
	}

	if (height)	{
		// do nothing
	} else {
		height = 700;
	}

	window.open(url,'football', 'resizable=no, width=650, height=' + height);
}
function parse_incom_request(str) {
    if (is_false(str)) {
        return false;
    }
    var obj = false;
    eval('obj='+str+';');
    return obj;
}
/******* polls ***************/
function Polls() {
    var _class = this;
    var _nrpk = 0;
    var isCheck = [0,1,2,3,4,5,6,7,8,9];
    
    _class.set_nrpk = function () {
        if (arguments.length != 1) {
            return false;
        }
        _nrpk = arguments[0];
    } 
    _class.get_nrpk = function() {
        _nrpk++;
        return _nrpk;
    }
    _class.vote_for_answer_by_url = function () {
        url = arguments[0];
        iIdText = arguments[1];
        var iEvent = false;
        if (arguments.length == 3) {
            iEvent = arguments[2];
        }
        var g = new AjaxL(); 
        g.setFunctions(function (txt, xml, iIdText, iEvent) {
            var myObj = parse_incom_request(txt);
                        
            if (myObj !== false) {
                if (myObj.htmlId != undefined) {
                    var vElem = document.getElementById(myObj.htmlId)
                    if (!is_false(vElem)) {
                        if (myObj.voteCount != undefined) {  
                            vElem.innerHTML = myObj.voteCount;               
                        }
                    }
                }
                if (myObj.forYes.htmlId != undefined) {
                    vElem = document.getElementById(myObj.forYes.htmlId+'Per');
                    if (!is_false(vElem)) {
                        if (myObj.forYes.votePercent != undefined) {
                            vElem.innerHTML = myObj.forYes.votePercent; 
                        }
                        if (!is_false(iEvent)) {
                            var mblock = iEvent.parentNode.parentNode;
                            var im = mblock.getElementsByTagName("img");
                            if (im.length == 2) {
                                //alert(im.length + ' - ' + im + ' - ' + im[0] + ' - ' + myObj.forYes.img1);
                                im[0].src = myObj.forYes.img1;
                                im[1].src = myObj.forYes.img2;
                            }
                        }
                    }
                }     
            }
            return false;
        }, [iIdText, iEvent]);
        g.callGet(url);  
    }
    _class.add_new_answer_field = function() {
        if (arguments.length !== 3) {
            return false;
        }
        iEvent = arguments[0];
        iBlock = arguments[1];
        iNr = arguments[2];
                
        var iTag = iBlock.parentNode.getElementsByTagName(iBlock.tagName);            
        if (_nrpk < 1) {
            _class.set_nrpk(iTag.length - 2);
        }
        var nrpk = _class.get_nrpk();
        var newRow = createElements(iBlock.parentNode, false, iBlock.tagName, '', iBlock.className);
        
        var str = '<input name="polls[' + iNr + '][answers][' + nrpk + '][answer_id]" type="hidden" value="0" />';
        str += '<input name="polls[' + iNr + '][answers][' + nrpk + '][answer]" type="text" value="" class="text" />';
        str += ' <a href="#" onclick="cPolls.delete_answer_field(this, ' + iNr + '); return false;" class="polls_button_delete_answer"><img src="/images/icons/silk/delete.gif" alt="" align="top" /></a>';
        str += ' <a href="#" onclick="cPolls.add_new_answer_field(this, this.parentNode, ' + iNr + '); return false;" class="polls_button_add_answer"><img src="/images/icons/silk/add.gif" alt="" align="top" /></a>';
        newRow.innerHTML = str;
        iEvent.style.display = 'none';    
        return false;
    }
    _class.delete_answer_field = function() {
        iEvent = arguments[0];
        iNr = arguments[1];
        
        myBlock     = iEvent.parentNode;
        myTag       = myBlock.tagName;
        topBlock    = iEvent.parentNode.parentNode;
        InvBlock    = topBlock.getElementsByTagName(myBlock.tagName)[0];
        
        myInp = myBlock.getElementsByTagName('input');
        for(var x = 0, len = myInp.length, set = 0; set == 0, x < len; x++) {
            if (myInp[x].type !='hidden') {
                continue;
            }
            if (myInp[x].value > 0) {
                tmpinp = createElements(InvBlock, false, "input");
                tmpinp.type = "hidden";
                tmpinp.name = "polls[" + iNr + "][answers][][delete_id]";
                set = 1;
                tmpinp.value = myInp[x].value;
            }            
        }
        if ( topBlock.getElementsByTagName(myBlock.tagName).length > 3) {
            deleteElement(myBlock);
        } else {
            var myInp = myBlock.getElementsByTagName('input');
            for(var x = 0, len = myInp.length; x < len; x++) {
                myInp[x].value = '';
            }
            return false;
        }
        var li = topBlock.getElementsByTagName(myTag);
        last = li[li.length - 1];
        var aa = last.getElementsByTagName('a');
        aa[1].style.display = 'inline';
        return false;
    }
}
var cPolls = new Polls();

function banner_drive_on(timeout, iElement, iTo) {
    
    var a = iElement.getElementsByTagName("*")[0];
    if (a.marginLeft == undefined) {
        a.marginLeft = 0 + 'px';
    }
    marg = (parseFloat(a.marginLeft) * 1 + 1) * 1;
    if (marg < iTo) {
        a.marginLeft = marg + 'px';
        a.style.marginLeft = marg + 'px';
    } else {
        iElement.style.display = 'block';
    }  
    setTimeout(function () {banner_drive_on(timeout, iElement, iTo);}, timeout);
}
function banner_drive() {
    var d = document.getElementById("bannerFly");
    if (d == null) {
        return false;
    }
    d.style.display = 'block';
    var timeout = 5;
    setTimeout(function () {banner_drive_on(timeout, d, d.scrollWidth);}, timeout);
}
add_onload_function(function() {banner_drive();});


/********************************/

function Payment () {
    var _class = this;
    var my = {
        'modal_window_id'      : 'paymentModalWindow'
    };
    this.isNeedToCheckSmsStatus = false;
    _class.repeat_call_for_payment_status = function () {
        var txt = arguments[0];
        var myObj = arguments[2];
        
        if (!is_false(txt) && txt != 'NULL') {
            eval('var myObj2 = ' + txt);
            if (myObj2.toreload == true) {
                setTimeout(function () {
                    window.location.reload(true);
                    //window.location = window.location.toString();
                }, 500);                
                _class.isNeedToCheckSmsStatus = false;
            }
            var block = document.getElementById("paymentLogList");
            if (is_html_element(block)) {
                showVisible = false;
                block.innerHTML = '';
                for (var x = 0, len = myObj2.report.length; x < len; x++) {
                    if (myObj2.report[x].status) {
                        li = create_html_elements(block, false, 'li', false, 'row');
                        li.innerHTML = myObj2.report[x].status;
                        showVisible = true;
                    }                    
                    if (is_true(myObj2.report[x].extra)) {
                        li = create_html_elements(block, false, 'li', false, 'row error');
                        li.innerHTML = myObj2.report[x].extra;
                        showVisible = true;
                    }
                }
                if (showVisible) {
                    set_unset_className(block.parentNode, 'invisible', '-');
                }
            }
            
            if (myObj2.transferBack != false) {                
                _class.isNeedToCheckSmsStatus = false;
                setTimeout(function () {
                    myObj2.transferBackFunc();
                }, 2000);
            }
            
        }
        if (_class.isNeedToCheckSmsStatus == false) {
            return false;
        }
        setTimeout(function () 
        {
            var ajax = new AjaxL();
            ajax.setFunctions(_class.repeat_call_for_payment_status, [myObj]);
            ajax.callGet(myObj.request);
            return false;
        }, 1000);
        return false;
    }
    _class.get_confirmation_of_payment = function () {
        var ajax = new AjaxL();        
        fields = get_input_fields_value(arguments[0]);
        for(var x = 0, len = fields.length; x < len; x++) {
            ajax.setParams(fields[x]['full']);
        }
        _class.isNeedToCheckSmsStatus = true;
        ajax.setFunctions(function (txt, xml, blockId) {
            var block = document.getElementById(blockId);
            if (is_false(block)) {
                return false;
            }
            object = txt.substr(0, txt.indexOf("|"));            
            txt = txt.substr(txt.indexOf("|") + 1);
            block.innerHTML = txt;
            if (!is_false(object)) {
                var myObj;
                eval('myObj = ' + object);
                _class.repeat_call_for_payment_status(false, false, myObj)
            }                
        }, [arguments[0]]);
        ajax.callPost(arguments[1]);
    }
    _class.switch_payment_window_tabs = function () {
        if (arguments.length !== 3) {
            return false;
        }
        var myself          = arguments[0];
        var blockId         = arguments[1];
        var mySelfClassName = arguments[2];
        
        var bl = document.getElementById(blockId);
        if (is_false(bl)) {
            return false;
        }
        //-- block activity
        var topblock = bl.parentNode;
        parentblocks = topblock.getElementsByTagName(bl.tagName);
        for(var x = 0, len = parentblocks.length; x < len; x++) {
            set_unset_className(parentblocks[x], 'invisible', '+');
        }
        set_unset_className(bl, 'invisible', '-');
        
        //-- tabs activity
        var tabList = myself.parentNode.parentNode.getElementsByTagName(myself.parentNode.tagName);
        for(var x = 0, len = tabList.length; x < len; x++) {
            set_unset_className(tabList[x], mySelfClassName, '-');            
        }
        set_unset_className(myself.parentNode, mySelfClassName, '+');
    }
    _class.call_payment_window = function () {
        if (arguments.length != 4) {
            return false;
        }
        var post_id = arguments[0];
        var forum_id = arguments[1];
        var callbackUrl = arguments[3];
        
        var ajax = new AjaxL();
        if (post_id) {
            ajax.setParams('post_id=' + post_id);
        }
        if (forum_id) {
            ajax.setParams('forum_id=' + forum_id);
        }
        if (forum_id) {
            ajax.setParams('callbackurl=' + callbackUrl);
        }
        ajax.setFunctions(
            function(txt, xml) {
                var div = document.getElementById(my.modal_window_id);    
                div.innerHTML = txt;
                yPos = get_element_position(div)[1];
                window.scrollTo(0, (yPos > 200 ? yPos - 200 : 0));
            }
        );
        ajax.callPost(arguments[2]);
        return false;
    }
    _class.payment_canceled = function () {
        _class.isNeedToCheckSmsStatus = false;
        var ajax = new AjaxL();
        ajax.setParams(arguments[0]);
        ajax.setFunctions(
            function(txt, xml, blockId) {
                var div = document.getElementById(blockId);
                div.innerHTML = txt;
            }, [arguments[1]]);
        ajax.callPost(arguments[2]);        
    }
    _class.set_presed_buttons_nr = function () {
        
        var nr = arguments[0];
        var get_param = 'paymenttype';
        var reg = new RegExp(get_param + '=([0-9]{0,}|)');
    
        var val = document.getElementById('log2_ret').value;    
        document.getElementById('log2_ret').value = val.replace(reg, get_param + '=' + nr);
        val = document.getElementById('reg2_ret').value;    
        document.getElementById('reg2_ret').value = val.replace(reg, get_param + '=' + nr);
    }
    _class.check_payment = function () {
    }
}
var cPayment = new Payment();

function simpleAjaxReload(ihe, ihi) {
    var ajax = new AjaxL();
    ajax.setFunctions(function (txt, xml, ihi) {
        var elem = document.getElementById(ihi);
        if (elem) {
            elem.innerHTML = txt;
        }
    }, [ihi]);
    ajax.callGet(ihe.href);   
}
function Set_Cookie( name, value, expires, path, domain, secure )
{
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );

    /*
    if the expires variable is set, make the correct
    expires time, the current script below will set
    it for x number of days, to make it for hours,
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires ) {
        expires = expires * 1000 * 60 * 1 * 1;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    
    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}
function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

var rotator = {
    getActiveElement : null,
    do_mouseover : function (myElem, rotatorId, iData) {
        var rot = document.getElementById(rotatorId);
        if (!rot) {
            return false;
        }
        if (this.getActiveElement != null && this.getActiveElement != myElem) {
            set_unset_className(this.getActiveElement, 'active', '-');
        }
        this.getActiveElement = myElem;
        set_unset_className(myElem, 'active', '+');
        var allA = rot.getElementsByTagName("a");
        if (allA.length < 1) {
            return false;
        }
        var img;
        for(var x = 0, len = allA.length; x < len; x++) {
            allA[x].href = iData.url;
            allA[x].title = iData.titleAlt;
            if (allA[x].parentNode.tagName.toLowerCase() == 'h1') {
                allA[x].innerHTML = iData.title;
                allA[x].parentNode.title = iData.titleAlt;
            }
            if (allA[x].parentNode.tagName.toLowerCase() == 'h2') {
                allA[x].innerHTML = iData.intro;
                allA[x].parentNode.title = iData.introAlt;                
            }
            img = allA[x].getElementsByTagName('img');
            if (img.length > 0) {
                img[0].src = iData.pictureUrl;
                img[0].alt = iData.titleAlt;
                img[0].title = iData.titleAlt;
            }
        }
    }
};
function static_navigation() {
    var _class = this;
    var _navigationIsOpen = false;
    var _data = {
        subNavigationBlock          : null
        ,subNavigationTimeOver      : null
        ,subNavigationTimeOverMill  : 9
        ,subNavigationCloseInterval : 1
        ,navTopBlock                : null
    };
    
    var fclose_navigation = function () {
        if (arguments.length == 1) {
            set_unset_className(arguments[0].parentNode.parentNode.parentNode, 'invisible', '+');
            set_unset_className(arguments[0].parentNode.parentNode.parentNode.parentNode.getElementsByTagName("h1")[0].getElementsByTagName("a")[0], 'bgactive', '-');
        } else {
            set_unset_className(_data.subNavigationBlock, 'invisible', '+');
            set_unset_className(_data.subNavigationBlock.parentNode.getElementsByTagName("h1")[0].getElementsByTagName("a")[0], 'bgactive', '-');            
        }
        return false;
    }
    _class.close_navigation = fclose_navigation;
    var fcheck_if_need_to_close_navigation = function () {
        if (_data.subNavigationTimeOver == null) {
            return false;
        }
        
        if (arguments.length === 1) {            
            //_data.subNavigationBlock.style.opacity = '0.' + _data.subNavigationTimeOverMill--;
        }
        
        var date = new Date();
        if (_data.subNavigationTimeOver !== null && _data.subNavigationTimeOver + _data.subNavigationCloseInterval <= date.getUTCSeconds()) {
            fclose_navigation();
            return false
        }
        setTimeout(function () {fcheck_if_need_to_close_navigation(1);}, 100);
        return false;      
    }
    _class.check_if_need_to_close_navigation = fcheck_if_need_to_close_navigation;
    var fdo_onmouseover = function () {
        _data.subNavigationTimeOver = null;
        return false;
    };
    var fdo_onmouseout = function () {
        var date = new Date();
        _data.subNavigationTimeOver     = date.getUTCSeconds();
        _data.subNavigationTimeOverMill = 9;
        fcheck_if_need_to_close_navigation();
        return false;
    };
    var fdo_onclick = function(ImyEvent) {
        
        var li = get_parent_tag(ImyEvent, 'li');
        if (li.getElementsByTagName("ul").length < 1) {
            return false;
        }
        _data.navTopBlock = get_parent_tag(ImyEvent, 'ul');        
        _data.subNavigationBlock = li.getElementsByTagName("ul")[0];
        
        //-- hide all subnavigations
        var bigUl = get_parent_tag(ImyEvent, 'ul').getElementsByTagName("ul");
        for(var x = 0, len = bigUl.length; x < len; x++) {
            if (bigUl[x].className.indexOf("menuFirst") != -1 && bigUl[x].className.indexOf("menuFirstSub") == -1) {
                set_unset_className(bigUl[x], 'invisible', '+');
            }
        }
        set_unset_className(_data.subNavigationBlock, 'invisible', '-');
        var myA = _data.subNavigationBlock.getElementsByTagName("a");
        for(var x = 0, len = myA.length; x < len; x++) {
            myA[x].onclick = function () {
                fclose_navigation();
            }
        }        
        ImyEvent.onmouseout = fdo_onmouseout;      
        fdo_onmouseover();
        
        _data.subNavigationBlock.onmouseover = fdo_onmouseover;
        _data.subNavigationBlock.onmouseout = fdo_onmouseout;
        
        set_unset_className(ImyEvent, 'bgactive', '+');
        return false;
    }
    _class.do_onclick = fdo_onclick;
}

function Game_Tournament() {
    var _data = {
        'rowHtml'   : '',
        'listId'    : null
    };
    var fAddNewRowsWithText = function () {
        var myEvent = arguments[0];
        var t = document.getElementById(myEvent);
        var ta = document.getElementById(fGetListId());
        str = t.value;
        rows = str.split("\n");
        for(var x = 0, len = rows.length; x < len; x++) {
            dd = fAddNewRow(ta);
            dd.getElementsByTagName("input")[0].value = rows[x];
        }
        var ta = document.getElementById(fGetListId());
        document.getElementById("game_tournament_players_count_").value = ta.getElementsByTagName("li").length;
    }
    this.add_new_rows_with_text = fAddNewRowsWithText;
    var fAddNewRows = function () {
        var myEvent = arguments[0];        
        var t = document.getElementById(fGetListId());
        var li = t.getElementsByTagName("li");
        var count = myEvent.value * 1;
        if (li.length == count) {
            return false;
        }
        if (li.length < count) {
            for(var x = 0, len = count - li.length; x < len; x++) {
                fAddNewRow(t);
            }
        }
    }
    this.add_new_rows = fAddNewRows;
    var fAddNewRow = function () {
        var listObj = arguments[0];
        var li = listObj.getElementsByTagName("li");
        var linew = create_html_elements(listObj, false, 'li', false, 'item');
        if (((li.length - 1) % 2)) {
            set_unset_className(linew, 'mod', '+');
        }        
        linew.innerHTML = fGetRowHtml();
        return linew;
    }
    this.add_new_row = fAddNewRow;
    var fGetRowHtml = function () {
        return _data.rowHtml;
    }
    var fSetRowHtml = function () {
        _data.rowHtml = arguments[0];
    }
    this.set_row_html = fSetRowHtml;
    var fGetListId = function () {
        return _data.listId
    }
    var fSetListId = function () {
        _data.listId = arguments[0];
    }
    this.set_list_id = fSetListId;
    
    
    var fRemoveRow= function () {
        var myEvent = arguments[0];
        
        var listObj = document.getElementById(_data.listId);
        var li = listObj.getElementsByTagName("li");
        delete_html_element(get_parent_tag(myEvent, 'li'));
        if (li.length > 1) {
            var listObj = document.getElementById(_data.listId);
            var li = listObj.getElementsByTagName("li");
            set_unset_className(li[li.length - 1].getElementsByTagName("input")[2], 'invisible', '-');
        } else {
            fAddNewRow();
        }
    }
    this.remove_row = fRemoveRow;
    
        
    var fResortPlayerListInTournament = function (listId) {
        if (typeof(listId) == 'string') {
            var listObj = document.getElementById(listId);
        } else if(typeof(listId) == 'object') {
            listObj = listId;
        } else {
            //return false;
        }
        var li = listObj.getElementsByTagName("li");
        for(var x = 0, len = li.length; x < len; x++) {
            set_unset_className(li[x], 'mod', '-');
            if (x % 2) {
                set_unset_className(li[x], 'mod', '+');
            }
        }
    }
    var fSetParamsToCell = function (myCell, td) {
        //-- get info
        
        myV = myCell.getElementsByTagName("input")[0].value;
        winner = myCell.getElementsByTagName("input")[0].value;
        if (td.getElementsByTagName("input")[0].value == winner) {
            delThis = 0;
        } else {
            delThis = td.getElementsByTagName("input")[0].value;
        }
        
        myTable = get_parent_tag(myCell, 'table');
        var tds = myTable.getElementsByTagName("td");
        for(var x = 0, len = tds.length; x < len; x++) {
            rw = myCell.rowSpan ? myCell.rowSpan  : 1;
            rw2 = tds[x].rowSpan ? tds[x].rowSpan  : 1;
            if (rw > rw2) {
                continue;
            }            
            if (rw < rw2 && tds[x].getElementsByTagName("input")[0].value == delThis && delThis > 0) {
                tds[x].getElementsByTagName("input")[0].value = '';
                tds[x].getElementsByTagName("input")[1].value = '';
                tds[x].getElementsByTagName("a")[0].innerHTML = '';                
            }
            if (tds[x].getElementsByTagName("input")[1].value == delThis && delThis > 0) {
                tds[x].getElementsByTagName("input")[1].value = '';                
            }
            /*
            if (winner == tds[x].getElementsByTagName("input")[0].value && rw < rw2) {
                tds[x].getElementsByTagName("input")[0].value = '';
                tds[x].getElementsByTagName("input")[1].value = '';
                tds[x].getElementsByTagName("a")[0].innerHTML = '';                
            }
            */
        }
        
        td.getElementsByTagName("input")[0].value = myV;
        myCell.getElementsByTagName("input")[1].value = myV;
        td.getElementsByTagName("a")[0].innerHTML = myCell.getElementsByTagName("a")[0].innerHTML;
    }
    var fSetWinner = function (MyEvent) {
        
        
        myCell = get_parent_tag(MyEvent, 'td');
        myColl = get_parent_tag(MyEvent, 'tr');
        
        td = myColl.getElementsByTagName("td");
        //-- iemetam to kas ir no augsas
        myCell.id = get_random_string();
        for(var x = 0, len = td.length; x < len; x++) {
            if (td[x].id == myCell.id && x + 1 < len) {
                fSetParamsToCell(myCell, td[x + 1]);
                myCell.id = '';                
                //-- cekojam vai nakosais
                return false;       
            }
        }
        myCell.id = '';
        //-- iemetam to kas ir no apaksaas nacis
        myColl.id = get_random_string();
        myTable = get_parent_tag(myColl, 'table');
        tr = myTable.getElementsByTagName("tr");
        for(var x = 0, len = tr.length; x < len; x++) {
            if (tr[x].id == myColl.id) {
                r = x;                
                while (tr[--r].getElementsByTagName("td").length < td.length) {
                }
                fSetParamsToCell(myCell, tr[r].getElementsByTagName("td")[td.length]);
                myColl.id = '';
                return false;
            }
        } 
        myColl.id = '';
    }
    this.set_winner = fSetWinner
}
var cGameTournament = new Game_Tournament();


/******** for poll2 ***********************************/
if (!window.on_submit) {
    function on_submit(mForm) {
        var textarea = document.getElementById("custom_text");
        if (textarea) {
            if (textarea.value == '') {
                textarea.style.border = "1px solid #c00";
                textarea.focus();
                return false;
            }
        }
        textarea.style.border = '';
        textarea = document.getElementById("custom_text_2");
        if (textarea) {
            if (textarea.value == '') {
                textarea.style.border = "1px solid #c00";
                textarea.focus();
                return false;
            }
        }
        
        var t = mForm.getElementsByTagName("table");
        for(var x = 0, len = t.length; x < len; x++) {
            if (t[x].className != 'polls2Answers') { continue; }            
            var i = t[x].getElementsByTagName("input");
            
            for(var g = 0, lenG = i.length, isEmpty = 0; g < lenG; g++) {
                i[g].style.border = "";
                if (i[g].type != 'text') { continue; }
                if (i[g].value != '') {continue;}
                isEmpty++;
            }
            if (isEmpty < lenG && isEmpty > 0) {
                for(var g = 0, lenG = i.length; g < lenG; g++) {
                    if (i[g].type != 'text') { continue; }
                    if (i[g].value != '') {continue;}                    
                    i[g].style.border = "1px solid #c00";
                    i[g].focus();
                    return false;
                }
                return false;                
            }            
        }
        
        textarea.style.border = '';
        return check_emails();
    }
}
if (!window.is_valid_email_value) {
    function is_valid_email_value(obj) {
        if (obj) {
            if (obj.value != '') {
                var emailReg = "^[\\\\w-_\\.]*[\\\\w-_\\.]\\@[\\\\w]\\.+[\\\\w]+[\\\\w]$";
                var regex = new RegExp(emailReg);
                return regex.test(obj.value);
            }
        } else {
            alert("Noobj");
        }
        return true;
    }
}
if (!window.validate_email_input) {
    function validate_email_input(obj_id) {
        var obj = $(obj_id);
        if (obj) {
            if (!is_valid_email_value(obj)) {
                obj.style.border = "1px solid #c66";
                obj.focus();
                return false;
            } else {
                obj.style.border = "1px solid #C4C8D4";
            }
        }
        return true;
    }
}

if (!window.check_emails) {
    function check_emails() {
        return validate_email_input('email_1') && validate_email_input('email_2') && validate_email_input('email_3');
    }
}

if (!window.set_answered) {
    function set_answered(set_visible) {
        if (document.getElementsByTagName) {
            var divs = document.getElementsByTagName('div');
            for (var x = 0; divs[x]; x++) {
                if (divs[x].className.indexOf('answered') != -1) {
                    divs[x].style.display = set_visible ? 'block' : 'none';
                }
            }
        }
    }
}

if (!window.toggle) {
    function toggle(objid_hide, objid_show) {
        set_visibility(objid_hide, false);
        set_visibility(objid_show, true);
    }
}

if (!window.set_visibility) {
    function set_visibility(objid, visible) {
        var o = document.getElementById(objid);
        if (o) {
            o.style.display = visible ? 'block' : 'none';
        }
    }
}
if (!window.set_page) {
    function set_page(prefix, page_id, pages) {
        for (var i = 1 ; i <= pages; i++) {
            var obj = document.getElementById(prefix + i);
            if (obj) {
                obj.style.display = i == page_id ? 'block' : 'none';
            }
            var href = document.getElementById('hr' + prefix + i);
            if (href) {
                href.style.fontWeight = i == page_id ? 'bold' : 'normal';
            }
        }
    }
}

var xBannerBottom = {
    roll_bottom_banner : function () {
        var scrolls = document.getElementById("bannerBottomRollDo");
        if (scrolls !== null) {
	        for(var x = 0, len = scrolls.childNodes.length, w = false, l = 0; x < len; x++) {
	            if (scrolls.childNodes[x].nodeName != "DIV") {
	                continue;
	            }
	            if (w === false) {
	                w = scrolls.childNodes[x].style.width.toString().replace("px", "") * 1;
	            }
	            l = (scrolls.childNodes[x].style.left ? scrolls.childNodes[x].style.left.toString().replace("px", "") : 0) * 1;
	            scrolls.childNodes[x].style.left = (l - 1).toString() + "px";
	            if ((w * -1) >= l) {
                   scrolls.childNodes[x].style.left = w.toString() + "px";
                }
	        }
	    }        
        setTimeout(function (){ xBannerBottom.roll_bottom_banner(); }, 100);
        return false;
    }
    ,draw_bottom_banner  : function (topBlock, bannerPlace, isRotation) {
        var tops = document.getElementById(topBlock);
        
		var g = document.getElementById(bannerPlace);
		var scrolls = document.getElementById("bannerBottomRollDo");
		if (tops === null || g === null || scrolls === null || (g.offsetWidth.toString().replace("px", "") * 1) < 1) {
		    setTimeout(function () { xBannerBottom.draw_bottom_banner(topBlock, bannerPlace, isRotation); }, 500);
		    return false;
		}	
		var gW = g.offsetWidth.toString().replace("px", "") * 1;
		var gH = g.offsetHeight.toString().replace("px", "") * 1;
		tops.style.width = '100%';	
		var tW = tops.offsetWidth.toString().replace("px", "") * 1;		
		g.style.display = "none";
		tops.style.visibility = "hidden";
	    var blockCount = Math.round(tW / gW) * 1;
	    if (tW  < 1 || gW < 1) {
	        return false;
	    }    
	    if (blockCount < tW / gW) {
	        blockCount = blockCount + 1;
	    }
	    if (blockCount < 1) {
	        blockCount = 1;
	    }
	    
	    scrolls.style.width = tW.toString() + "px";
	    scrolls.style.height = gH.toString() + "px";
	    var _div1 = document.createElement("div");
	    _div1.className = "bblock";
	    if (blockCount > 0 && gW > 0) {
	        _div1.style.width = (blockCount * gW).toString() + "px";
	    }
	    if (gH > 1) {
	        _div1.style.height = gH.toString() + "px";
        }
	    scrolls.appendChild(_div1);
	    
	    var d; 		    
	    for(var x = 0, len = blockCount; x < len; x++) {
	        d = document.createElement("div");
	        d.className = "nor";
	        _div1.appendChild(d);
	        d.innerHTML = g.innerHTML;
	    }
	    
	    var _div2 = document.createElement("div");
	    _div2.className = "bblock";
	    if (blockCount > 0 && gW > 0) {
	        _div2.style.width = (blockCount * gW).toString() + "px";
	        _div2.style.left = (blockCount * gW).toString() + "px";
	    }
	    if (gH > 0) {
	        _div2.style.height = gH.toString() + "px";
	    }
	    scrolls.appendChild(_div2);
	    
	    _div2.innerHTML = _div1.innerHTML;		    
	    tops.style.visibility = "visible";
	    if (isRotation) {
	        setTimeout(function (){ xBannerBottom.roll_bottom_banner(); }, 500);
	    }
        return false;
    }
};

var xTeamManager = {
    add_new_player : function (iEvent) {
        var div = get_parent_tag(iEvent, 'div');
        if (iEvent.value != -100) {
            if (div.getElementsByTagName("input").length > 0) {
                set_unset_className(div.getElementsByTagName("input")[0], 'invisible', '+');
            }
        } else {
            set_unset_className(div.getElementsByTagName("input")[0], 'invisible', '-');
        }       
    }
    ,check_all_fields : function (iEvent) {
        var div = get_parent_tag(iEvent, 'form').getElementsByTagName("div")[0];
        var inp = div.getElementsByTagName("input");
        var sel = div.getElementsByTagName("select");
        var isError = false;
        var ErrorMsg = '';

        for(var x = 0, len = inp.length; x < len; x++) {
            set_unset_className(inp[x].parentNode, 'playerError', '-');
        }
        
        for(var x = 0, len = inp.length; x < len; x++) {
            if (!inp[x].value) {
                isError = true;
                ErrorMsg = 'Komandā trūkst spēlētāju :)';
                set_unset_className(inp[x].parentNode, 'playerError', '+');
            }
        }
        if (!isError) {
            var reg = new RegExp('([^a-zA-Z_]+)', 'g');
            for(var x = 0, len = inp.length; x < len; x++) {                
                myID = inp[x].id.replace(reg, "");                
                for(xx = x, lenxx = inp.length; xx < lenxx; xx++) {                   
                    if (myID == inp[xx].id.replace(reg, "") && inp[x].name != inp[xx].name && inp[x].value == inp[xx].value) {
                        ErrorMsg = 'Viens spēlētājs nedrīkst būt vairākās pozīcijās';
                        isError = true;
                        set_unset_className(inp[x].parentNode, 'playerError', '+');
                        set_unset_className(inp[xx].parentNode, 'playerError', '+');
                    }
                }
            }
        }
        if (isError) {
            alert(ErrorMsg);
            return false;
        }
        return true;
        
    }
};

var xSuggestion = {
    isSetSuggest : false
    ,suggests   : new Array
    ,is_set_suggest : function () {
        return this.isSetSuggest;
    }
    ,set_suggest : function (sorce, dest, list, opt) {
        this.isSetSuggest = true;
        var ind = this.suggests.length;        
        this.suggests[ind] = new Array();
        opt = {dispMax: 20, interval: 1000, ignoreCase:true,prefix: true, highlight: true, dispAllKey:true};
        this.suggests[ind] = {'sorce' : sorce, 'dest' : dest, 'list' : list, 'opt' : opt};        
    }
    ,run_suggest : function () {        
        for(var x = 0, len = this.suggests.length; x < len; x++) {
            new Suggest.Local(
                this.suggests[x].sorce,    // input element id.
                this.suggests[x].dest, // suggestion area id.
                this.suggests[x].list,      // suggest candidates list
                this.suggests[x].opt
            ); // options        
        }
    }
    
};

add_onload_function( function () {
    if (xSuggestion.is_set_suggest()) {
        xSuggestion.run_suggest();
    }
});

/**********
 * Janis Rublevskis
 * @since 2010.07.07
 */
function change_comments_order(post_id, gallery_picture_idx, page)
{
	//alert("orders: " + __comment_sorting_order);
    $$('.comments-ajax-loader').invoke('show');
	if (__comment_sorting_order == 'desc') {
		__comment_sorting_order = 'asc';
    } else {
        __comment_sorting_order = 'desc';
    }
    var parameters = {
            post_id: post_id,
            gallery_picture_idx: gallery_picture_idx,
            page: page,
			comments_sort: __comment_sorting_order
    };
    new Ajax.Request(ESPORTS_HOME + "ajax-change-comments-order", {
        method: 'get',
        parameters: parameters,
        onFailure: function(req) {
            location.reload(true);
        },
        onSuccess: function(req) {
            cur_page = page;
            $$('.comments-ajax-loader').invoke('hide');
            $('comment-list').innerHTML = req.responseText;
        }
    });
    return false;
}

function delete_relation(url, post_id, container_id) {
    var parameters = {
        post_id: post_id,
        url: url
    };
    new Ajax.Request(ESPORTS_HOME + "ajax-remove-related-article", {
        method: 'get',
        parameters: parameters,
        onFailure: function(req) {
            location.reload(true);
        },
        onSuccess: function(req) {
            $('related-remove-' + container_id).remove();
        }
    });
    return false;
}
var _gat=new Object({c:"length",lb:"4.3.1",m:"cookie",b:undefined,cb:function(d,a){this.zb=d;this.Nb=a},r:"__utma=",W:"__utmb=",ma:"__utmc=",Ta:"__utmk=",na:"__utmv=",oa:"__utmx=",Sa:"GASO=",X:"__utmz=",lc:"http://www.google-analytics.com/__utm.gif",mc:"https://ssl.google-analytics.com/__utm.gif",Wa:"utmcid=",Ya:"utmcsr=",$a:"utmgclid=",Ua:"utmccn=",Xa:"utmcmd=",Za:"utmctr=",Va:"utmcct=",Hb:false,_gasoDomain:undefined,_gasoCPath:undefined,e:window,a:document,k:navigator,t:function(d){var a=1,c=0,h,
o;if(!_gat.q(d)){a=0;for(h=d[_gat.c]-1;h>=0;h--){o=d.charCodeAt(h);a=(a<<6&268435455)+o+(o<<14);c=a&266338304;a=c!=0?a^c>>21:a}}return a},C:function(d,a,c){var h=_gat,o="-",k,l,s=h.q;if(!s(d)&&!s(a)&&!s(c)){k=h.w(d,a);if(k>-1){l=d.indexOf(c,k);if(l<0)l=d[h.c];o=h.F(d,k+h.w(a,"=")+1,l)}}return o},Ea:function(d){var a=false,c=0,h,o;if(!_gat.q(d)){a=true;for(h=0;h<d[_gat.c];h++){o=d.charAt(h);c+="."==o?1:0;a=a&&c<=1&&(0==h&&"-"==o||_gat.P(".0123456789",o))}}return a},d:function(d,a){var c=encodeURIComponent;
return c instanceof Function?(a?encodeURI(d):c(d)):escape(d)},J:function(d,a){var c=decodeURIComponent,h;d=d.split("+").join(" ");if(c instanceof Function)try{h=a?decodeURI(d):c(d)}catch(o){h=unescape(d)}else h=unescape(d);return h},Db:function(d){return d&&d.hash?_gat.F(d.href,_gat.w(d.href,"#")):""},q:function(d){return _gat.b==d||"-"==d||""==d},Lb:function(d){return d[_gat.c]>0&&_gat.P(" \n\r\t",d)},P:function(d,a){return _gat.w(d,a)>-1},h:function(d,a){d[d[_gat.c]]=a},T:function(d){return d.toLowerCase()},
z:function(d,a){return d.split(a)},w:function(d,a){return d.indexOf(a)},F:function(d,a,c){c=_gat.b==c?d[_gat.c]:c;return d.substring(a,c)},uc:function(){var d=_gat.b,a=window;if(a&&a.gaGlobal&&a.gaGlobal.hid)d=a.gaGlobal.hid;else{d=Math.round(Math.random()*2147483647);a.gaGlobal=a.gaGlobal?a.gaGlobal:{};a.gaGlobal.hid=d}return d},wa:function(){return Math.round(Math.random()*2147483647)},Gc:function(){return(_gat.wa()^_gat.vc())*2147483647},vc:function(){var d=_gat.k,a=_gat.a,c=_gat.e,h=a[_gat.m]?
a[_gat.m]:"",o=c.history[_gat.c],k,l,s=[d.appName,d.version,d.language?d.language:d.browserLanguage,d.platform,d.userAgent,d.javaEnabled()?1:0].join("");if(c.screen)s+=c.screen.width+"x"+c.screen.height+c.screen.colorDepth;else if(c.java){l=java.awt.Toolkit.getDefaultToolkit().getScreenSize();s+=l.screen.width+"x"+l.screen.height}s+=h;s+=a.referrer?a.referrer:"";k=s[_gat.c];while(o>0)s+=o--^k++;return _gat.t(s)}});_gat.hc=function(){var d=this,a=_gat.cb;function c(h,o){return new a(h,o)}d.db="utm_campaign";d.eb="utm_content";d.fb="utm_id";d.gb="utm_medium";d.hb="utm_nooverride";d.ib="utm_source";d.jb="utm_term";d.kb="gclid";d.pa=0;d.I=0;d.wb="15768000";d.Tb="1800";d.ea=[];d.ga=[];d.Ic="cse";d.Gb="q";d.ab="google";d.fa=[c(d.ab,d.Gb),c("yahoo","p"),c("msn","q"),c("bing","q"),c("aol","query"),c("aol","encquery"),c("lycos","query"),c("ask","q"),c("altavista","q"),c("netscape","query"),c("cnn","query"),c("looksmart","qt"),c("about",
"terms"),c("mamma","query"),c("alltheweb","q"),c("gigablast","q"),c("voila","rdata"),c("virgilio","qs"),c("live","q"),c("baidu","wd"),c("alice","qs"),c("yandex","text"),c("najdi","q"),c("aol","q"),c("club-internet","query"),c("mama","query"),c("seznam","q"),c("search","q"),c("wp","szukaj"),c("onet","qt"),c("netsprint","q"),c("google.interia","q"),c("szukacz","q"),c("yam","k"),c("pchome","q"),c("kvasir","searchExpr"),c("sesam","q"),c("ozu","q"),c("terra","query"),c("nostrum","query"),c("mynet","q"),
c("ekolay","q"),c("search.ilse","search_for")];d.B=undefined;d.Kb=false;d.p="/";d.ha=100;d.Da="/__utm.gif";d.ta=1;d.ua=1;d.G="|";d.sa=1;d.qa=1;d.pb=1;d.g="auto";d.D=1;d.Ga=1000;d.Yc=10;d.nc=10;d.Zc=0.2};_gat.Y=function(d,a){var c,h,o,k,l,s,q,f=this,n=_gat,w=n.q,x=n.c,g,z=a;f.a=d;function B(i){var b=i instanceof Array?i.join("."):"";return w(b)?"-":b}function A(i,b){var e=[],j;if(!w(i)){e=n.z(i,".");if(b)for(j=0;j<e[x];j++)if(!n.Ea(e[j]))e[j]="-"}return e}function p(){return u(63072000000)}function u(i){var b=new Date,e=new Date(b.getTime()+i);return"expires="+e.toGMTString()+"; "}function m(i,b){f.a[n.m]=i+"; path="+z.p+"; "+b+f.Cc()}function r(i,b,e){var j=f.V,t,v;for(t=0;t<j[x];t++){v=j[t][0];
v+=w(b)?b:b+j[t][4];j[t][2](n.C(i,v,e))}}f.Jb=function(){return n.b==g||g==f.t()};f.Ba=function(){return l?l:"-"};f.Wb=function(i){l=i};f.Ma=function(i){g=n.Ea(i)?i*1:"-"};f.Aa=function(){return B(s)};f.Na=function(i){s=A(i)};f.Hc=function(){return g?g:"-"};f.Cc=function(){return w(z.g)?"":"domain="+z.g+";"};f.ya=function(){return B(c)};f.Ub=function(i){c=A(i,1)};f.K=function(){return B(h)};f.La=function(i){h=A(i,1)};f.za=function(){return B(o)};f.Vb=function(i){o=A(i,1)};f.Ca=function(){return B(k)};
f.Xb=function(i){k=A(i);for(var b=0;b<k[x];b++)if(b<4&&!n.Ea(k[b]))k[b]="-"};f.Dc=function(){return q};f.Uc=function(i){q=i};f.pc=function(){c=[];h=[];o=[];k=[];l=n.b;s=[];g=n.b};f.t=function(){var i="",b;for(b=0;b<f.V[x];b++)i+=f.V[b][1]();return n.t(i)};f.Ha=function(i){var b=f.a[n.m],e=false;if(b){r(b,i,";");f.Ma(f.t());e=true}return e};f.Rc=function(i){r(i,"","&");f.Ma(n.C(i,n.Ta,"&"))};f.Wc=function(){var i=f.V,b=[],e;for(e=0;e<i[x];e++)n.h(b,i[e][0]+i[e][1]());n.h(b,n.Ta+f.t());return b.join("&")};
f.bd=function(i,b){var e=f.V,j=z.p,t;f.Ha(i);z.p=b;for(t=0;t<e[x];t++)if(!w(e[t][1]()))e[t][3]();z.p=j};f.dc=function(){m(n.r+f.ya(),p())};f.Pa=function(){m(n.W+f.K(),u(z.Tb*1000))};f.ec=function(){m(n.ma+f.za(),"")};f.Ra=function(){m(n.X+f.Ca(),u(z.wb*1000))};f.fc=function(){m(n.oa+f.Ba(),p())};f.Qa=function(){m(n.na+f.Aa(),p())};f.cd=function(){m(n.Sa+f.Dc(),"")};f.V=[[n.r,f.ya,f.Ub,f.dc,"."],[n.W,f.K,f.La,f.Pa,""],[n.ma,f.za,f.Vb,f.ec,""],[n.oa,f.Ba,f.Wb,f.fc,""],[n.X,f.Ca,f.Xb,f.Ra,"."],[n.na,
f.Aa,f.Na,f.Qa,"."]]};_gat.jc=function(d){var a=this,c=_gat,h=d,o,k=function(l){var s=(new Date).getTime(),q;q=(s-l[3])*(h.Zc/1000);if(q>=1){l[2]=Math.min(Math.floor(l[2]*1+q),h.nc);l[3]=s}return l};a.O=function(l,s,q,f,n,w,x){var g,z=h.D,B=q.location;if(!o)o=new c.Y(q,h);o.Ha(f);g=c.z(o.K(),".");if(g[1]<500||n){if(w)g=k(g);if(n||!w||g[2]>=1){if(!n&&w)g[2]=g[2]*1-1;g[1]=g[1]*1+1;l="?utmwv="+_gat.lb+"&utmn="+c.wa()+(c.q(B.hostname)?"":"&utmhn="+c.d(B.hostname))+(h.ha==100?"":"&utmsp="+c.d(h.ha))+l;if(0==z||2==z){var A=
new Image(1,1);A.src=h.Da+l;var p=2==z?function(){}:x||function(){};A.onload=p}if(1==z||2==z){var u=new Image(1,1);u.src=("https:"==B.protocol?c.mc:c.lc)+l+"&utmac="+s+"&utmcc="+a.wc(q,f);u.onload=x||function(){}}}}o.La(g.join("."));o.Pa()};a.wc=function(l,s){var q=[],f=[c.r,c.X,c.na,c.oa],n,w=l[c.m],x;for(n=0;n<f[c.c];n++){x=c.C(w,f[n]+s,";");if(!c.q(x))c.h(q,f[n]+x+";")}return c.d(q.join("+"))}};_gat.i=function(){this.la=[]};_gat.i.bb=function(d,a,c,h,o,k){var l=this;l.cc=d;l.Oa=a;l.L=c;l.sb=h;l.Pb=o;l.Qb=k};_gat.i.bb.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=item","utmtid="+a(d.cc),"utmipc="+a(d.Oa),"utmipn="+a(d.L),"utmiva="+a(d.sb),"utmipr="+a(d.Pb),"utmiqt="+a(d.Qb)].join("&")};_gat.i.$=function(d,a,c,h,o,k,l,s){var q=this;q.v=d;q.ob=a;q.bc=c;q.ac=h;q.Yb=o;q.ub=k;q.$b=l;q.xb=s;q.ca=[]};_gat.i.$.prototype.mb=function(d,a,c,h,o){var k=this,l=k.Eb(d),s=k.v,q=_gat;if(q.b==
l)q.h(k.ca,new q.i.bb(s,d,a,c,h,o));else{l.cc=s;l.Oa=d;l.L=a;l.sb=c;l.Pb=h;l.Qb=o}};_gat.i.$.prototype.Eb=function(d){var a,c=this.ca,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].Oa?c[h]:a;return a};_gat.i.$.prototype.S=function(){var d=this,a=_gat.d;return"&"+["utmt=tran","utmtid="+a(d.v),"utmtst="+a(d.ob),"utmtto="+a(d.bc),"utmttx="+a(d.ac),"utmtsp="+a(d.Yb),"utmtci="+a(d.ub),"utmtrg="+a(d.$b),"utmtco="+a(d.xb)].join("&")};_gat.i.prototype.nb=function(d,a,c,h,o,k,l,s){var q=this,f=_gat,n=q.xa(d);if(f.b==
n){n=new f.i.$(d,a,c,h,o,k,l,s);f.h(q.la,n)}else{n.ob=a;n.bc=c;n.ac=h;n.Yb=o;n.ub=k;n.$b=l;n.xb=s}return n};_gat.i.prototype.xa=function(d){var a,c=this.la,h;for(h=0;h<c[_gat.c];h++)a=d==c[h].v?c[h]:a;return a};_gat.gc=function(d){var a=this,c="-",h=_gat,o=d;a.Ja=screen;a.qb=!self.screen&&self.java?java.awt.Toolkit.getDefaultToolkit():h.b;a.a=document;a.e=window;a.k=navigator;a.Ka=c;a.Sb=c;a.tb=c;a.Ob=c;a.Mb=1;a.Bb=c;function k(){var l,s,q,f,n="ShockwaveFlash",w="$version",x=a.k?a.k.plugins:h.b;if(x&&x[h.c]>0)for(l=0;l<x[h.c]&&!q;l++){s=x[l];if(h.P(s.name,"Shockwave Flash"))q=h.z(s.description,"Shockwave Flash ")[1]}else{n=n+"."+n;try{f=new ActiveXObject(n+".7");q=f.GetVariable(w)}catch(g){}if(!q)try{f=
new ActiveXObject(n+".6");q="WIN 6,0,21,0";f.AllowScriptAccess="always";q=f.GetVariable(w)}catch(z){}if(!q)try{f=new ActiveXObject(n);q=f.GetVariable(w)}catch(z){}if(q){q=h.z(h.z(q," ")[1],",");q=q[0]+"."+q[1]+" r"+q[2]}}return q?q:c}a.xc=function(){var l;if(self.screen){a.Ka=a.Ja.width+"x"+a.Ja.height;a.Sb=a.Ja.colorDepth+"-bit"}else if(a.qb)try{l=a.qb.getScreenSize();a.Ka=l.width+"x"+l.height}catch(s){}a.Ob=h.T(a.k&&a.k.language?a.k.language:(a.k&&a.k.browserLanguage?a.k.browserLanguage:c));a.Mb=
a.k&&a.k.javaEnabled()?1:0;a.Bb=o?k():c;a.tb=h.d(a.a.characterSet?a.a.characterSet:(a.a.charset?a.a.charset:c))};a.Xc=function(){return"&"+["utmcs="+h.d(a.tb),"utmsr="+a.Ka,"utmsc="+a.Sb,"utmul="+a.Ob,"utmje="+a.Mb,"utmfl="+h.d(a.Bb)].join("&")}};_gat.n=function(d,a,c,h,o){var k=this,l=_gat,s=l.q,q=l.b,f=l.P,n=l.C,w=l.T,x=l.z,g=l.c;k.a=a;k.f=d;k.Rb=c;k.ja=h;k.o=o;function z(p){return s(p)||"0"==p||!f(p,"://")}function B(p){var u="";p=w(x(p,"://")[1]);if(f(p,"/")){p=x(p,"/")[1];if(f(p,"?"))u=x(p,"?")[0]}return u}function A(p){var u="";u=w(x(p,"://")[1]);if(f(u,"/"))u=x(u,"/")[0];return u}k.Fc=function(p){var u=k.Fb(),m=k.o;return new l.n.s(n(p,m.fb+"=","&"),n(p,m.ib+"=","&"),n(p,m.kb+"=","&"),k.ba(p,m.db,"(not set)"),k.ba(p,m.gb,"(not set)"),
k.ba(p,m.jb,u&&!s(u.R)?l.J(u.R):q),k.ba(p,m.eb,q))};k.Ib=function(p){var u=A(p),m=B(p);if(f(u,k.o.ab)){p=x(p,"?").join("&");if(f(p,"&"+k.o.Gb+"="))if(m==k.o.Ic)return true}return false};k.Fb=function(){var p,u,m=k.Rb,r,i,b=k.o.fa;if(z(m)||k.Ib(m))return;p=A(m);for(r=0;r<b[g];r++){i=b[r];if(f(p,w(i.zb))){m=x(m,"?").join("&");if(f(m,"&"+i.Nb+"=")){u=x(m,"&"+i.Nb+"=")[1];if(f(u,"&"))u=x(u,"&")[0];return new l.n.s(q,i.zb,q,"(organic)","organic",u,q)}}}};k.ba=function(p,u,m){var r=n(p,u+"=","&"),i=!s(r)?
l.J(r):(!s(m)?m:"-");return i};k.Nc=function(p){var u=k.o.ea,m=false,r,i;if(p&&"organic"==p.da){r=w(l.J(p.R));for(i=0;i<u[g];i++)m=m||w(u[i])==r}return m};k.Ec=function(){var p="",u="",m=k.Rb;if(z(m)||k.Ib(m))return;p=w(x(m,"://")[1]);if(f(p,"/")){u=l.F(p,l.w(p,"/"));if(f(u,"?"))u=x(u,"?")[0];p=x(p,"/")[0]}if(0==l.w(p,"www."))p=l.F(p,4);return new l.n.s(q,p,q,"(referral)","referral",q,u)};k.sc=function(p){var u="";if(k.o.pa){u=l.Db(p);u=""!=u?u+"&":u}u+=p.search;return u};k.zc=function(){return new l.n.s(q,
"(direct)",q,"(direct)","(none)",q,q)};k.Oc=function(p){var u=false,m,r,i=k.o.ga;if(p&&"referral"==p.da){m=w(l.d(p.ia));for(r=0;r<i[g];r++)u=u||f(m,w(i[r]))}return u};k.U=function(p){return q!=p&&p.Fa()};k.yc=function(p,u){var m="",r="-",i,b,e=0,j,t,v=k.f;if(!p)return"";t=k.a[l.m]?k.a[l.m]:"";m=k.sc(k.a.location);if(k.o.I&&p.Jb()){r=p.Ca();if(!s(r)&&!f(r,";")){p.Ra();return""}}r=n(t,l.X+v+".",";");i=k.Fc(m);if(k.U(i)){b=n(m,k.o.hb+"=","&");if("1"==b&&!s(r))return""}if(!k.U(i)){i=k.Fb();if(!s(r)&&
k.Nc(i))return""}if(!k.U(i)&&u){i=k.Ec();if(!s(r)&&k.Oc(i))return""}if(!k.U(i))if(s(r)&&u)i=k.zc();if(!k.U(i))return"";if(!s(r)){var y=x(r,"."),E=new l.n.s;E.Cb(y.slice(4).join("."));j=w(E.ka())==w(i.ka());e=y[3]*1}if(!j||u){var F=n(t,l.r+v+".",";"),I=F.lastIndexOf("."),G=I>9?l.F(F,I+1)*1:0;e++;G=0==G?1:G;p.Xb([v,k.ja,G,e,i.ka()].join("."));p.Ra();return"&utmcn=1"}else return"&utmcr=1"}};_gat.n.s=function(d,a,c,h,o,k,l){var s=this;s.v=d;s.ia=a;s.ra=c;s.L=h;s.da=o;s.R=k;s.vb=l};_gat.n.s.prototype.ka=
function(){var d=this,a=_gat,c=[],h=[[a.Wa,d.v],[a.Ya,d.ia],[a.$a,d.ra],[a.Ua,d.L],[a.Xa,d.da],[a.Za,d.R],[a.Va,d.vb]],o,k;if(d.Fa())for(o=0;o<h[a.c];o++)if(!a.q(h[o][1])){k=h[o][1].split("+").join("%20");k=k.split(" ").join("%20");a.h(c,h[o][0]+k)}return c.join("|")};_gat.n.s.prototype.Fa=function(){var d=this,a=_gat.q;return!(a(d.v)&&a(d.ia)&&a(d.ra))};_gat.n.s.prototype.Cb=function(d){var a=this,c=_gat,h=function(o){return c.J(c.C(d,o,"|"))};a.v=h(c.Wa);a.ia=h(c.Ya);a.ra=h(c.$a);a.L=h(c.Ua);a.da=
h(c.Xa);a.R=h(c.Za);a.vb=h(c.Va)};_gat.Z=function(){var d=this,a=_gat,c={},h="k",o="v",k=[h,o],l="(",s=")",q="*",f="!",n="'",w={};w[n]="'0";w[s]="'1";w[q]="'2";w[f]="'3";var x=1;function g(m,r,i,b){if(a.b==c[m])c[m]={};if(a.b==c[m][r])c[m][r]=[];c[m][r][i]=b}function z(m,r,i){return a.b!=c[m]&&a.b!=c[m][r]?c[m][r][i]:a.b}function B(m,r){if(a.b!=c[m]&&a.b!=c[m][r]){c[m][r]=a.b;var i=true,b;for(b=0;b<k[a.c];b++)if(a.b!=c[m][k[b]]){i=false;break}if(i)c[m]=a.b}}function A(m){var r="",i=false,b,e;for(b=0;b<k[a.c];b++){e=m[k[b]];if(a.b!=
e){if(i)r+=k[b];r+=p(e);i=false}else i=true}return r}function p(m){var r=[],i,b;for(b=0;b<m[a.c];b++)if(a.b!=m[b]){i="";if(b!=x&&a.b==m[b-1]){i+=b.toString();i+=f}i+=u(m[b]);a.h(r,i)}return l+r.join(q)+s}function u(m){var r="",i,b,e;for(i=0;i<m[a.c];i++){b=m.charAt(i);e=w[b];r+=a.b!=e?e:b}return r}d.Kc=function(m){return a.b!=c[m]};d.N=function(){var m=[],r;for(r in c)if(a.b!=c[r])a.h(m,r.toString()+A(c[r]));return m.join("")};d.Sc=function(m){if(m==a.b)return d.N();var r=[m.N()],i;for(i in c)if(a.b!=
c[i]&&!m.Kc(i))a.h(r,i.toString()+A(c[i]));return r.join("")};d._setKey=function(m,r,i){if(typeof i!="string")return false;g(m,h,r,i);return true};d._setValue=function(m,r,i){if(typeof i!="number"&&(a.b==Number||!(i instanceof Number)))return false;if(Math.round(i)!=i||i==NaN||i==Infinity)return false;g(m,o,r,i.toString());return true};d._getKey=function(m,r){return z(m,h,r)};d._getValue=function(m,r){return z(m,o,r)};d._clearKey=function(m){B(m,h)};d._clearValue=function(m){B(m,o)}};_gat.ic=function(d,a){var c=this;c.jd=a;c.Pc=d;c._trackEvent=function(h,o,k){return a._trackEvent(c.Pc,h,o,k)}};_gat.kc=function(d){var a=this,c=_gat,h=c.b,o=c.q,k=c.w,l=c.F,s=c.C,q=c.P,f=c.z,n="location",w=c.c,x=h,g=new c.hc,z=false;a.a=document;a.e=window;a.ja=Math.round((new Date).getTime()/1000);a.H=d;a.yb=a.a.referrer;a.va=h;a.j=h;a.A=h;a.M=false;a.aa=h;a.rb="";a.l=h;a.Ab=h;a.f=h;a.u=h;function B(){if("auto"==g.g){var b=a.a.domain;if("www."==l(b,0,4))b=l(b,4);g.g=b}g.g=c.T(g.g)}function A(){var b=g.g,e=k(b,"www.google.")*k(b,".google.")*k(b,"google.");return e||"/"!=g.p||k(b,"google.org")>-1}function p(b,
e,j){if(o(b)||o(e)||o(j))return"-";var t=s(b,c.r+a.f+".",e),v;if(!o(t)){v=f(t,".");v[5]=v[5]?v[5]*1+1:1;v[3]=v[4];v[4]=j;t=v.join(".")}return t}function u(){return"file:"!=a.a[n].protocol&&A()}function m(b){if(!b||""==b)return"";while(c.Lb(b.charAt(0)))b=l(b,1);while(c.Lb(b.charAt(b[w]-1)))b=l(b,0,b[w]-1);return b}function r(b,e,j){if(!o(b())){e(c.J(b()));if(!q(b(),";"))j()}}function i(b){var e,j=""!=b&&a.a[n].host!=b;if(j)for(e=0;e<g.B[w];e++)j=j&&k(c.T(b),c.T(g.B[e]))==-1;return j}a.Bc=function(){if(!g.g||
""==g.g||"none"==g.g){g.g="";return 1}B();return g.pb?c.t(g.g):1};a.tc=function(b,e){if(o(b))b="-";else{e+=g.p&&"/"!=g.p?g.p:"";var j=k(b,e);b=j>=0&&j<=8?"0":("["==b.charAt(0)&&"]"==b.charAt(b[w]-1)?"-":b)}return b};a.Ia=function(b){var e="",j=a.a;e+=a.aa?a.aa.Xc():"";e+=g.qa?a.rb:"";e+=g.ta&&!o(j.title)?"&utmdt="+c.d(j.title):"";e+="&utmhid="+c.uc()+"&utmr="+a.va+"&utmp="+a.Tc(b);return e};a.Tc=function(b){var e=a.a[n];b=h!=b&&""!=b?c.d(b,true):c.d(e.pathname+unescape(e.search),true);return b};a.$c=
function(b){if(a.Q()){var e="";if(a.l!=h&&a.l.N().length>0)e+="&utme="+c.d(a.l.N());e+=a.Ia(b);x.O(e,a.H,a.a,a.f)}};a.qc=function(){var b=new c.Y(a.a,g);return b.Ha(a.f)?b.Wc():h};a._getLinkerUrl=function(b,e){var j=f(b,"#"),t=b,v=a.qc();if(v)if(e&&1>=j[w])t+="#"+v;else if(!e||1>=j[w])if(1>=j[w])t+=(q(b,"?")?"&":"?")+v;else t=j[0]+(q(b,"?")?"&":"?")+v+"#"+j[1];return t};a.Zb=function(){var b;if(a.A&&a.A[w]>=10&&!q(a.A,"=")){a.u.Uc(a.A);a.u.cd();c._gasoDomain=g.g;c._gasoCPath=g.p;b=a.a.createElement("script");
b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.A+"&"+c.wa();a.a.getElementsByTagName("head")[0].appendChild(b)}};a.Jc=function(){var b=a.a[c.m],e=a.ja,j=a.u,t=a.f+"",v=a.e,y=v?v.gaGlobal:h,E,F=q(b,c.r+t+"."),I=q(b,c.W+t),G=q(b,c.ma+t),C,D=[],H="",K=false,J;b=o(b)?"":b;if(g.I){E=c.Db(a.a[n]);if(g.pa&&!o(E))H=E+"&";H+=a.a[n].search;if(!o(H)&&q(H,c.r)){j.Rc(H);if(!j.Jb())j.pc();C=j.ya()}r(j.Ba,j.Wb,j.fc);r(j.Aa,j.Na,j.Qa)}if(!o(C))if(o(j.K())||
o(j.za())){C=p(H,"&",e);a.M=true}else{D=f(j.K(),".");t=D[0]}else if(F)if(!I||!G){C=p(b,";",e);a.M=true}else{C=s(b,c.r+t+".",";");D=f(s(b,c.W+t,";"),".")}else{C=[t,c.Gc(),e,e,e,1].join(".");a.M=true;K=true}C=f(C,".");if(v&&y&&y.dh==t){C[4]=y.sid?y.sid:C[4];if(K){C[3]=y.sid?y.sid:C[4];if(y.vid){J=f(y.vid,".");C[1]=J[0];C[2]=J[1]}}}j.Ub(C.join("."));D[0]=t;D[1]=D[1]?D[1]:0;D[2]=undefined!=D[2]?D[2]:g.Yc;D[3]=D[3]?D[3]:C[4];j.La(D.join("."));j.Vb(t);if(!o(j.Hc()))j.Ma(j.t());j.dc();j.Pa();j.ec()};a.Lc=
function(){x=new c.jc(g)};a._initData=function(){var b;if(!z){a.Lc();a.f=a.Bc();a.u=new c.Y(a.a,g)}if(u())a.Jc();if(!z){if(u()){a.va=a.tc(a.Ac(),a.a.domain);if(g.sa){a.aa=new c.gc(g.ua);a.aa.xc()}if(g.qa){b=new c.n(a.f,a.a,a.va,a.ja,g);a.rb=b.yc(a.u,a.M)}}a.l=new c.Z;a.Ab=new c.Z;z=true}if(!c.Hb)a.Mc()};a._visitCode=function(){a._initData();var b=s(a.a[c.m],c.r+a.f+".",";"),e=f(b,".");return e[w]<4?"":e[1]};a._cookiePathCopy=function(b){a._initData();if(a.u)a.u.bd(a.f,b)};a.Mc=function(){var b=a.a[n].hash,
e;e=b&&""!=b&&0==k(b,"#gaso=")?s(b,"gaso=","&"):s(a.a[c.m],c.Sa,";");if(e[w]>=10){a.A=e;if(a.e.addEventListener)a.e.addEventListener("load",a.Zb,false);else a.e.attachEvent("onload",a.Zb)}c.Hb=true};a.Q=function(){return a._visitCode()%10000<g.ha*100};a.Vc=function(){var b,e,j=a.a.links;if(!g.Kb){var t=a.a.domain;if("www."==l(t,0,4))t=l(t,4);g.B.push("."+t)}for(b=0;b<j[w]&&(g.Ga==-1||b<g.Ga);b++){e=j[b];if(i(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.Qc;e.onclick=function(v){var y=
!this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";y=y&&!a.oc(v);a.ad(v,this,y);return y?false:(this.gatcOnclick?this.gatcOnclick(v):true)}}}};a.Qc=function(){};a._trackPageview=function(b){if(u()){a._initData();if(g.B)a.Vc();a.$c(b);a.M=false}};a._trackTrans=function(){var b=a.f,e=[],j,t,v,y;a._initData();if(a.j&&a.Q()){for(j=0;j<a.j.la[w];j++){t=a.j.la[j];c.h(e,t.S());for(v=0;v<t.ca[w];v++)c.h(e,t.ca[v].S())}for(y=0;y<e[w];y++)x.O(e[y],a.H,a.a,b,true)}};a._setTrans=
function(){var b=a.a,e,j,t,v,y=b.getElementById?b.getElementById("utmtrans"):(b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:h);a._initData();if(y&&y.value){a.j=new c.i;v=f(y.value,"UTM:");g.G=!g.G||""==g.G?"|":g.G;for(e=0;e<v[w];e++){v[e]=m(v[e]);j=f(v[e],g.G);for(t=0;t<j[w];t++)j[t]=m(j[t]);if("T"==j[0])a._addTrans(j[1],j[2],j[3],j[4],j[5],j[6],j[7],j[8]);else if("I"==j[0])a._addItem(j[1],j[2],j[3],j[4],j[5],j[6])}}};a._addTrans=function(b,e,j,t,v,y,E,F){a.j=a.j?a.j:new c.i;return a.j.nb(b,e,
j,t,v,y,E,F)};a._addItem=function(b,e,j,t,v,y){var E;a.j=a.j?a.j:new c.i;E=a.j.xa(b);if(!E)E=a._addTrans(b,"","","","","","","");E.mb(e,j,t,v,y)};a._setVar=function(b){if(b&&""!=b&&A()){a._initData();var e=new c.Y(a.a,g),j=a.f;e.Na(j+"."+c.d(b));e.Qa();if(a.Q())x.O("&utmt=var",a.H,a.a,a.f)}};a._link=function(b,e){if(g.I&&b){a._initData();a.a[n].href=a._getLinkerUrl(b,e)}};a._linkByPost=function(b,e){if(g.I&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,
j){a.l._setKey(b,e,j)};a._setXValue=function(b,e,j){a.l._setValue(b,e,j)};a._getXKey=function(b,e){return a.l._getKey(b,e)};a._getXValue=function(b,e){return a.l.getValue(b,e)};a._clearXKey=function(b){a.l._clearKey(b)};a._clearXValue=function(b){a.l._clearValue(b)};a._createXObj=function(){a._initData();return new c.Z};a._sendXEvent=function(b){var e="";a._initData();if(a.Q()){e+="&utmt=event&utme="+c.d(a.l.Sc(b))+a.Ia();x.O(e,a.H,a.a,a.f,false,true)}};a._createEventTracker=function(b){a._initData();
return new c.ic(b,a)};a._trackEvent=function(b,e,j,t){var v=true,y=a.Ab;if(h!=b&&h!=e&&""!=b&&""!=e){y._clearKey(5);y._clearValue(5);v=y._setKey(5,1,b)?v:false;v=y._setKey(5,2,e)?v:false;v=h==j||y._setKey(5,3,j)?v:false;v=h==t||y._setValue(5,1,t)?v:false;if(v)a._sendXEvent(y)}else v=false;return v};a.ad=function(b,e,j){a._initData();if(a.Q()){var t=new c.Z;t._setKey(6,1,e.href);var v=j?function(){a.rc(b,e)}:undefined;x.O("&utmt=event&utme="+c.d(t.N())+a.Ia(),a.H,a.a,a.f,false,true,v)}};a.rc=function(b,
e){if(!b)b=a.e.event;var j=true;if(e.gatcOnclick)j=e.gatcOnclick(b);if(j||typeof j=="undefined")if(!e.target||e.target=="_self")a.e.location=e.href;else if(e.target=="_top")a.e.top.document.location=e.href;else if(e.target=="_parent")a.e.parent.document.location=e.href};a.oc=function(b){if(!b)b=a.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&a.e.Event)e=b.modifiers&a.e.Event.CONTROL_MASK||b.modifiers&a.e.Event.SHIFT_MASK||b.modifiers&a.e.Event.ALT_MASK;return e};a._setDomainName=
function(b){g.g=b};a.dd=function(){return g.g};a._addOrganic=function(b,e){c.h(g.fa,new c.cb(b,e))};a._clearOrganic=function(){g.fa=[]};a.hd=function(){return g.fa};a._addIgnoredOrganic=function(b){c.h(g.ea,b)};a._clearIgnoredOrganic=function(){g.ea=[]};a.ed=function(){return g.ea};a._addIgnoredRef=function(b){c.h(g.ga,b)};a._clearIgnoredRef=function(){g.ga=[]};a.fd=function(){return g.ga};a._setAllowHash=function(b){g.pb=b?1:0};a._setCampaignTrack=function(b){g.qa=b?1:0};a._setClientInfo=function(b){g.sa=
b?1:0};a._getClientInfo=function(){return g.sa};a._setCookiePath=function(b){g.p=b};a._setTransactionDelim=function(b){g.G=b};a._setCookieTimeout=function(b){g.wb=b};a._setDetectFlash=function(b){g.ua=b?1:0};a._getDetectFlash=function(){return g.ua};a._setDetectTitle=function(b){g.ta=b?1:0};a._getDetectTitle=function(){return g.ta};a._setLocalGifPath=function(b){g.Da=b};a._getLocalGifPath=function(){return g.Da};a._setLocalServerMode=function(){g.D=0};a._setRemoteServerMode=function(){g.D=1};a._setLocalRemoteServerMode=
function(){g.D=2};a.gd=function(){return g.D};a._getServiceMode=function(){return g.D};a._setSampleRate=function(b){g.ha=b};a._setSessionTimeout=function(b){g.Tb=b};a._setAllowLinker=function(b){g.I=b?1:0};a._setAllowAnchor=function(b){g.pa=b?1:0};a._setCampNameKey=function(b){g.db=b};a._setCampContentKey=function(b){g.eb=b};a._setCampIdKey=function(b){g.fb=b};a._setCampMediumKey=function(b){g.gb=b};a._setCampNOKey=function(b){g.hb=b};a._setCampSourceKey=function(b){g.ib=b};a._setCampTermKey=function(b){g.jb=
b};a._setCampCIdKey=function(b){g.kb=b};a._getAccount=function(){return a.H};a._getVersion=function(){return _gat.lb};a.kd=function(b){g.B=[];if(b)g.B=b};a.md=function(b){g.Kb=b};a.ld=function(b){g.Ga=b};a._setReferrerOverride=function(b){a.yb=b};a.Ac=function(){return a.yb}};_gat._getTracker=function(d){var a=new _gat.kc(d);return a};

// (c) 2000-2009 by Gemius SA

function gemius_parameters() {
        var d=document;
        var href=new String(d.location.href);
        var ref;
        var f=0;
        var fv='-';
        if (d.referrer) { ref=new String(d.referrer); } else { ref=''; }
        if (typeof Error!='undefined') {
                var fo;
                eval('try { f=(d==top.document)?1:2; if (typeof top.document.referrer=="string") { ref=top.document.referrer } } catch(e) {f=3;}');
                eval('try { fv=navigator.plugins["Shockwave Flash"].description; } catch (e) {}');
                eval('if (typeof ActiveXObject!="undefined") { try { fo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch(e) { try { fo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); fv="X"; fo.AllowScriptAccess="always"; } catch(e) { if (fv=="X") { fv="WIN 6,0,20,0"; }} try { fo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch(e) {} } if ((fv=="-" || fv=="X") && fo) { fv=fo.GetVariable("$version"); }}');
        }
        var url='&fr='+f+'&fv='+escape(fv)+'&tz='+(new Date()).getTimezoneOffset()+'&href='+escape(href.substring(0,499))+'&ref='+escape(ref.substring(0,499));
        if (screen) {
                var s=screen;
                if (s.width) url+='&screen='+s.width+'x'+s.height;
                if (s.colorDepth) url+='&col='+s.colorDepth;
        }
        return url;
}
function gemius_add_onload_event(obj,fn) {
        if (obj.attachEvent) {
                obj.attachEvent('onload', fn);
        } else if(obj.addEventListener) {
                obj.addEventListener('load', fn, false);
        }
}
function gemius_append_script(xp_url) {
        if (typeof Error!='undefined') {
                eval('try { xp_javascript=document.createElement("script"); xp_javascript.src=xp_url; xp_javascript.type="text/javascript"; xp_javascript.defer=true; document.body.appendChild(xp_javascript); } catch(e) {}');
        }
}
function gemius_obj_loaded() {
        window.pp_gemius_loaded+=1;
        if (window.pp_gemius_loaded==2 && window.pp_gemius_image.width && window.pp_gemius_image.width>1) {
                gemius_append_script(window.pp_gemius_script);
        }
}

function pp_gemius_hit_int(list,rfrom,rto) {
        var gu = pp_gemius_host+(new Date()).getTime()+'/redot.gif?l=32';
        if (typeof window.xgemius_prot_cnt == 'undefined') {
                window.xgemius_prot_cnt=0;
        }
        if (typeof xgemius_prot_cnt == 'undefined') {
                xgemius_prot_cnt=0;
        }
        if (window.xgemius_prot_cnt<=xgemius_prot_cnt) {
                go=1;
                window.xgemius_prot_cnt++;
        } else {
                go=0;
        }
        xgemius_prot_cnt++;
        for (var i=rfrom ; i<rto ; i++) {
                gu += '&id='+list[i];
        }
        gu += gemius_parameters();
        if (typeof window.gemius_hit_images == 'undefined') {
                window.gemius_hit_images = new Array();
        }
        var gl = window.gemius_hit_images.length;
        window.gemius_hit_images[gl]=new Image();
        if (go) {
                window.gemius_hit_images[gl].src = gu;
        } else {
                window.gemius_hit_images[gl].src = gu.replace(/id=/,'id=DBL_');
        }
}
function pp_gemius_hit() {
        for (i=0 ; i<arguments.length ; i+=5) {
                if (i+5<arguments.length) {
                        pp_gemius_hit_int(arguments,i,i+5);
                } else {
                        pp_gemius_hit_int(arguments,i,arguments.length);
                }
        }
}
var pp_gemius_proto = (document.location && document.location.protocol && document.location.protocol=='https:')?'https://':'http://';
if (typeof pp_gemius_hitcollector == 'undefined') {
    if (typeof gemius_hitcollector != 'undefined') {
        pp_gemius_hitcollector = gemius_hitcollector;
    } else {
        pp_gemius_hitcollector = 'ua.hit.gemius.pl';
    }
}
var pp_gemius_host = pp_gemius_proto+pp_gemius_hitcollector+'/_';

add_onload_function( function () {   
    
    if (typeof pp_gemius_nhit == 'undefined') {
        if (typeof pp_gemius_identifier == 'undefined') {
            if (typeof gemius_identifier != 'undefined') {
                pp_gemius_identifier = gemius_identifier;
                gemius_identifier = 'USED_'+gemius_identifier;
            } else {
                pp_gemius_identifier = '';
            }
        }
        if (typeof window.pp_gemius_cnt != 'undefined') {
            if (typeof window.pp_gemius_images == 'undefined') {
                window.pp_gemius_images = new Array();
            }
            var gemius_l = window.pp_gemius_images.length;
            window.pp_gemius_images[gemius_l]=new Image();
            window.pp_gemius_images[gemius_l].src = pp_gemius_host+(new Date()).getTime()+'/redot.gif?l=33&id=ERR_'+pp_gemius_identifier.replace(/id=/,'id=ERR_')+gemius_parameters();
        } else {
            if (typeof pp_gemius_mode == 'undefined') {
                window.pp_gemius_loaded = 0;
                window.pp_gemius_script = pp_gemius_host+(new Date()).getTime()+'/pp.js?id='+pp_gemius_identifier;
                gemius_add_onload_event(window,gemius_obj_loaded);
                window.pp_gemius_image = new Image();
                gemius_add_onload_event(window.pp_gemius_image,gemius_obj_loaded);
                window.pp_gemius_image.src = pp_gemius_host+(new Date()).getTime()+'/rexdot.gif?l=30&id='+pp_gemius_identifier+gemius_parameters();
                window.pp_gemius_cnt = 1;
            } else {
                window.pp_gemius_image = new Image();
                window.pp_gemius_image.src = pp_gemius_host+(new Date()).getTime()+'/rexdot.gif?l=31&id='+pp_gemius_identifier+gemius_parameters();
                window.pp_gemius_cnt = 1;
            }
        }
        pp_gemius_identifier = 'USED_'+pp_gemius_identifier;
    }
    if (typeof gemius_hit != 'function') {
            gemius_hit=pp_gemius_hit;
    }
}
);


// script.aculo.us effects.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008

// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
// 
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/ 

// converts rgb() and #xxx to #xxxxxx format,  
// returns self (or first argument) if not convertable  
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) { 
      pulses = pulses || 5; 
      return (
        ((pos % (1/pulses)) * pulses).round() == 0 ? 
              ((pos * pulses * 2) - (pos * pulses * 2).floor()) : 
          1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
        );
    },
    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.0,   // seconds
    fps:        100,   // 100= assume 66fps max.
    sync:       false, // true for combining
    from:       0.0,
    to:         1.0,
    delay:      0.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.0
    }, arguments[2] || { });
    var masterDelay = options.delay;

    $A(elements).each( function(element, index) {
      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
    });
  },
  PAIRS: {
    'slide':  ['SlideDown','SlideUp'],
    'blind':  ['BlindDown','BlindUp'],
    'appear': ['Appear','Fade']
  },
  toggle: function(element, effect) {
    element = $(element);
    effect = (effect || 'appear').toLowerCase();
    var options = Object.extend({
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
    }, arguments[2] || { });
    Effect[element.visible() ? 
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
  }
};

Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;

/* ------------- core effects ------------- */

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':
        // move unstarted effects after this effect  
        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':
        // start effect after last queued effect has finished
        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) {
    function codeForEvent(options,eventName){
      return (
        (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') +
        (options[eventName] ? 'this.options.'+eventName+'(this);' : '')
      );
    }
    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;
    
    eval('this.render = function(pos){ '+
      'if (this.state=="idle"){this.state="running";'+
      codeForEvent(this.options,'beforeSetup')+
      (this.setup ? 'this.setup();':'')+ 
      codeForEvent(this.options,'afterSetup')+
      '};if (this.state=="running"){'+
      'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+
      'this.position=pos;'+
      codeForEvent(this.options,'beforeUpdate')+
      (this.update ? 'this.update(pos);':'')+
      codeForEvent(this.options,'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.0);
        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.0);
      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);
    // make this work on IE on elements without 'layout'
    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
      this.element.setStyle({zoom: 1});
    var options = Object.extend({
      from: this.element.getOpacity() || 0.0,
      to:   1.0
    }, arguments[1] || { });
    this.start(options);
  },
  update: function(position) {
    this.element.setOpacity(position);
  }
});

Effect.Move = Class.create(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'
    });
  }
});

// for backwards compatibility
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',        // 'box' or 'contents' or { } with provided values
      scaleFrom: 100.0,
      scaleTo:   percent
    }, arguments[2] || { });
    this.start(options);
  },
  setup: function() {
    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
    this.elementPositioning = this.element.getStyle('position');
    
    this.originalStyle = { };
    ['top','left','width','height','fontSize'].each( function(k) {
      this.originalStyle[k] = this.element.style[k];
    }.bind(this));
      
    this.originalTop  = this.element.offsetTop;
    this.originalLeft = this.element.offsetLeft;
    
    var fontSize = this.element.getStyle('font-size') || '100%';
    ['em','px','%','pt'].each( function(fontSizeType) {
      if (fontSize.indexOf(fontSizeType)>0) {
        this.fontSize     = parseFloat(fontSize);
        this.fontSizeType = fontSizeType;
      }
    }.bind(this));
    
    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
    
    this.dims = null;
    if (this.options.scaleMode=='box')
      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
    if (/^content/.test(this.options.scaleMode))
      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
    if (!this.dims)
      this.dims = [this.options.scaleMode.originalHeight,
                   this.options.scaleMode.originalWidth];
  },
  update: function(position) {
    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
    if (this.options.scaleContent && this.fontSize)
      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
  },
  finish: function(position) {
    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
  },
  setDimensions: function(height, width) {
    var d = { };
    if (this.options.scaleX) d.width = width.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() {
    // Prevent executing on elements not in the layout flow
    if (this.element.getStyle('display')=='none') { this.cancel(); return; }
    // Disable background image during the effect
    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');
    // init color calculations
    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(),
    max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();  

  if (options.offset) elementOffsets[1] += options.offset;

  return new Effect.Tween(null,
    scrollOffsets.top,
    elementOffsets[1] > max ? max : elementOffsets[1],
    options,
    function(p){ scrollTo(scrollOffsets.left, p.round()) }
  );
};

/* ------------- combination effects ------------- */

Effect.Fade = function(element) {
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  var options = Object.extend({
    from: element.getOpacity() || 1.0,
    to:   0.0,
    afterFinishInternal: function(effect) { 
      if (effect.options.to!=0) return;
      effect.element.hide().setStyle({opacity: oldOpacity}); 
    }
  }, arguments[1] || { });
  return new Effect.Opacity(element,options);
};

Effect.Appear = function(element) {
  element = $(element);
  var options = Object.extend({
  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
  to:   1.0,
  // force Safari to render floated elements properly
  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.0 } ) ], 
     Object.extend({ duration: 1.0, 
      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.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.0;
  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();
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
  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] || { })
  );
};

// Bug in opera makes the TD containing this element expand for a instance after finish 
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.0, from: 0.0, transition: options.opacityTransition }),
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
          new Effect.Scale(effect.element, 100, {
            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
        ], Object.extend({
             beforeSetup: function(effect) {
               effect.effects[0].element.setStyle({height: '0px'}).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.0, from: 1.0, transition: options.opacityTransition }),
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
    ], Object.extend({            
         beforeStartInternal: function(effect) {
           effect.effects[0].element.makePositioned().makeClipping(); 
         },
         afterFinishInternal: function(effect) {
           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
       }, options)
  );
};

Effect.Pulsate = function(element) {
  element = $(element);
  var options    = arguments[1] || { };
  var oldOpacity = element.getInlineOpacity();
  var transition = options.transition || Effect.Transitions.sinoidal;
  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
  reverser.bind(transition);
  return new Effect.Opacity(element, 
    Object.extend(Object.extend({  duration: 2.0, from: 0,
      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
    }, options), {transition: reverser}));
};

Effect.Fold = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height };
  element.makeClipping();
  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);

// script.aculo.us builder.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008

// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

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'
  },
  // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
  //       due to a Firefox bug
  node: function(elementName) {
    elementName = elementName.toUpperCase();
    
    // try innerHTML approach
    var parentTag = this.NODEMAP[elementName] || 'div';
    var parentElement = document.createElement(parentTag);
    try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
      parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
    } catch(e) {}
    var element = parentElement.firstChild || null;
      
    // see if browser added wrapping tags
    if(element && (element.tagName.toUpperCase() != elementName))
      element = element.getElementsByTagName(elementName)[0];
    
    // fallback to createElement approach
    if(!element) element = document.createElement(elementName);
    
    // abort if nothing could be created
    if(!element) return;

    // attributes (or text)
    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 { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
              parentElement.innerHTML = "<" +elementName + " " +
                attrs + "></" + elementName + ">";
            } catch(e) {}
            element = parentElement.firstChild || null;
            // workaround firefox 1.0.X bug
            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];
          }
        } 

    // text, or array of children
    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') { // array can hold nodes and text
      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; //global scope 
  
    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)));  
      } 
    });
  }
}

// -----------------------------------------------------------------------------------
//
//	Lightbox v2.04
//	by Lokesh Dhakar - http://www.lokeshdhakar.com
//	Last Modification: 2/9/08
//
//	For more information, visit:
//	http://lokeshdhakar.com/projects/lightbox2/
//
//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//  	- Free for use in both personal and commercial projects
//		- Attribution requires leaving author name, author link, and the license info intact.
//	
//  Thanks: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), and Thomas Fuchs(mir.aculo.us) for ideas, libs, and snippets.
//  		Artemy Tregubenko (arty.name) for cleanup and help in updating to latest ver of proto-aculous.
//
// -----------------------------------------------------------------------------------
/*

    Table of Contents
    -----------------
    Configuration

    Lightbox Class Declaration
    - initialize()
    - updateImageList()
    - start()
    - changeImage()
    - resizeImageContainer()
    - showImage()
    - updateDetails()
    - updateNav()
    - enableKeyboardNav()
    - disableKeyboardNav()
    - keyboardAction()
    - preloadNeighborImages()
    - end()
    
    Function Calls
    - document.observe()
   
*/
// -----------------------------------------------------------------------------------

//
//  Configurationl
//
LightboxOptions = Object.extend({
    fileLoadingImage:        '/images/lightbox/loading.gif',     
    fileBottomNavCloseImage: '/images/lightbox/closelabel.gif',

    overlayOpacity: 0.8,   // controls transparency of shadow overlay

    animate: true,         // toggles resizing animations
    resizeSpeed: 7,        // controls the speed of the image resizing animations (1=slowest and 10=fastest)

    borderSize: 10,         //if you adjust the padding in the CSS, you will need to update this variable

	// When grouping images this is used to write: Image # of #.
	// Change it for non-english localization
	labelImage: "Image",
	labelOf: "of"
}, window.LightboxOptions || {});

// -----------------------------------------------------------------------------------

var Lightbox = Class.create();

Lightbox.prototype = {
    imageArray: [],
    activeImage: undefined,
    
    // initialize()
    // Constructor runs on completion of the DOM loading. Calls updateImageList and then
    // the function inserts html at the bottom of the page which is used to display the shadow 
    // overlay and the image container.
    //
    initialize: function() {    
        
        this.updateImageList();
        
        this.keyboardAction = this.keyboardAction.bindAsEventListener(this);

        if (LightboxOptions.resizeSpeed > 10) LightboxOptions.resizeSpeed = 10;
        if (LightboxOptions.resizeSpeed < 1)  LightboxOptions.resizeSpeed = 1;

	    this.resizeDuration = LightboxOptions.animate ? ((11 - LightboxOptions.resizeSpeed) * 0.15) : 0;
	    this.overlayDuration = LightboxOptions.animate ? 0.2 : 0;  // shadow fade in/out duration

        // When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
        // If animations are turned off, it will be hidden as to prevent a flicker of a
        // white 250 by 250 box.
        var size = (LightboxOptions.animate ? 250 : 1) + 'px';
        

        // Code inserts html at the bottom of the page that looks similar to this:
        //
        //  <div id="overlay"></div>
        //  <div id="lightbox">
        //      <div id="outerImageContainer">
        //          <div id="imageContainer">
        //              <img id="lightboxImage">
        //              <div style="" id="hoverNav">
        //                  <a href="#" id="prevLink"></a>
        //                  <a href="#" id="nextLink"></a>
        //              </div>
        //              <div id="loading">
        //                  <a href="#" id="loadingLink">
        //                      <img src="images/loading.gif">
        //                  </a>
        //              </div>
        //          </div>
        //      </div>
        //      <div id="imageDataContainer">
        //          <div id="imageData">
        //              <div id="imageDetails">
        //                  <span id="caption"></span>
        //                  <span id="numberDisplay"></span>
        //              </div>
        //              <div id="bottomNav">
        //                  <a href="#" id="bottomNavClose">
        //                      <img src="images/close.gif">
        //                  </a>
        //              </div>
        //          </div>
        //      </div>
        //  </div>


        var objBody = $$('body')[0];

		objBody.appendChild(Builder.node('div',{id:'overlay'}));
	
        objBody.appendChild(Builder.node('div',{id:'lightbox'}, [
            Builder.node('div',{id:'outerImageContainer'}, 
                Builder.node('div',{id:'imageContainer'}, [
                    Builder.node('img',{id:'lightboxImage'}), 
                    Builder.node('div',{id:'hoverNav'}, [
                        Builder.node('a',{id:'prevLink', href: '#' }),
                        Builder.node('a',{id:'nextLink', href: '#' })
                    ]),
                    Builder.node('div',{id:'loading'}, 
                        Builder.node('a',{id:'loadingLink', href: '#' }, 
                            Builder.node('img', {src: LightboxOptions.fileLoadingImage})
                        )
                    )
                ])
            ),
            Builder.node('div', {id:'imageDataContainer'},
                Builder.node('div',{id:'imageData'}, [
                    Builder.node('div',{id:'imageDetails'}, [
                        Builder.node('span',{id:'caption'}),
                        Builder.node('span',{id:'numberDisplay'})
                    ]),
                    Builder.node('div',{id:'bottomNav'},
                        Builder.node('a',{id:'bottomNavClose', href: '#' },
                            Builder.node('img', { src: LightboxOptions.fileBottomNavCloseImage })
                        )
                    )
                ])
            )
        ]));


		$('overlay').hide().observe('click', (function() { this.end(); }).bind(this));
		$('lightbox').hide().observe('click', (function(event) { if (event.element().id == 'lightbox') this.end(); }).bind(this));
		$('outerImageContainer').setStyle({ width: size, height: size });
		$('prevLink').observe('click', (function(event) { event.stop(); this.changeImage(this.activeImage - 1); }).bindAsEventListener(this));
		$('nextLink').observe('click', (function(event) { event.stop(); this.changeImage(this.activeImage + 1); }).bindAsEventListener(this));
		$('loadingLink').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));
		$('bottomNavClose').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));

        var th = this;
        (function(){
            var ids = 
                'overlay lightbox outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink ' + 
                'imageDataContainer imageData imageDetails caption numberDisplay bottomNav bottomNavClose';   
            $w(ids).each(function(id){ th[id] = $(id); });
        }).defer();
    },

    //
    // updateImageList()
    // Loops through anchor tags looking for 'lightbox' references and applies onclick
    // events to appropriate links. You can rerun after dynamically adding images w/ajax.
    //
    updateImageList: function() {   
        this.updateImageList = Prototype.emptyFunction;

        document.observe('click', (function(event){
            var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
            if (target) {
                event.stop();
                this.start(target);
            }
        }).bind(this));
    },
    
    //
    //  start()
    //  Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
    //
    start: function(imageLink) {    

        $$('select', 'object', 'embed', 'iframe').each(function(node){ node.style.visibility = 'hidden' });

        // stretch overlay to fill page and fade in
        var arrayPageSize = this.getPageSize();
        $('overlay').setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px' });

        new Effect.Appear(this.overlay, { duration: this.overlayDuration, from: 0.0, to: LightboxOptions.overlayOpacity });

        this.imageArray = [];
        var imageNum = 0;       

        if ((imageLink.rel == 'lightbox')){
            // if image is NOT part of a set, add single image to imageArray
            this.imageArray.push([imageLink.href, imageLink.title]);         
        } else {
            // if image is part of a set..
            this.imageArray = 
                $$(imageLink.tagName + '[href][rel="' + imageLink.rel + '"]').
                collect(function(anchor){ return [anchor.href, anchor.title]; }).
                uniq();
            
            while (this.imageArray[imageNum][0] != imageLink.href) { imageNum++; }
        }

        // calculate top and left offset for the lightbox 
        var arrayPageScroll = document.viewport.getScrollOffsets();
        var lightboxTop = arrayPageScroll[1] + (document.viewport.getHeight() / 10);
        var lightboxLeft = arrayPageScroll[0];
        this.lightbox.setStyle({ top: lightboxTop + 'px', left: lightboxLeft + 'px' }).show();
        
        this.changeImage(imageNum);
    },

    //
    //  changeImage()
    //  Hide most elements and preload image in preparation for resizing image container.
    //
    changeImage: function(imageNum) {   
        
        this.activeImage = imageNum; // update global var

        // hide elements during transition
        if (LightboxOptions.animate) this.loading.show();
        this.lightboxImage.hide();
        this.hoverNav.hide();
        this.prevLink.hide();
        this.nextLink.hide();
		// HACK: Opera9 does not currently support scriptaculous opacity and appear fx
        this.imageDataContainer.setStyle({opacity: .0001});
        this.numberDisplay.hide();      
        
        var imgPreloader = new Image();
        
        // once image is preloaded, resize image container


        imgPreloader.onload = (function(){
            this.lightboxImage.src = this.imageArray[this.activeImage][0];
            this.resizeImageContainer(imgPreloader.width, imgPreloader.height);
        }).bind(this);
        imgPreloader.src = this.imageArray[this.activeImage][0];
    },

    //
    //  resizeImageContainer()
    //
    resizeImageContainer: function(imgWidth, imgHeight) {

        // get current width and height
        var widthCurrent  = this.outerImageContainer.getWidth();
        var heightCurrent = this.outerImageContainer.getHeight();

        // get new width and height
        var widthNew  = (imgWidth  + LightboxOptions.borderSize * 2);
        var heightNew = (imgHeight + LightboxOptions.borderSize * 2);

        // scalars based on change from old to new
        var xScale = (widthNew  / widthCurrent)  * 100;
        var yScale = (heightNew / heightCurrent) * 100;

        // calculate size difference between new and old image, and resize if necessary
        var wDiff = widthCurrent - widthNew;
        var hDiff = heightCurrent - heightNew;

        if (hDiff != 0) new Effect.Scale(this.outerImageContainer, yScale, {scaleX: false, duration: this.resizeDuration, queue: 'front'}); 
        if (wDiff != 0) new Effect.Scale(this.outerImageContainer, xScale, {scaleY: false, duration: this.resizeDuration, delay: this.resizeDuration}); 

        // if new and old image are same size and no scaling transition is necessary, 
        // do a quick pause to prevent image flicker.
        var timeout = 0;
        if ((hDiff == 0) && (wDiff == 0)){
            timeout = 100;
            if (Prototype.Browser.IE) timeout = 250;   
        }

        (function(){
            this.prevLink.setStyle({ height: imgHeight + 'px' });
            this.nextLink.setStyle({ height: imgHeight + 'px' });
            this.imageDataContainer.setStyle({ width: widthNew + 'px' });

            this.showImage();
        }).bind(this).delay(timeout / 1000);
    },
    
    //
    //  showImage()
    //  Display image and begin preloading neighbors.
    //
    showImage: function(){
        this.loading.hide();
        new Effect.Appear(this.lightboxImage, { 
            duration: this.resizeDuration, 
            queue: 'end', 
            afterFinish: (function(){ this.updateDetails(); }).bind(this) 
        });
        this.preloadNeighborImages();
    },

    //
    //  updateDetails()
    //  Display caption, image number, and bottom nav.
    //
    updateDetails: function() {
    
        // if caption is not null
        if (this.imageArray[this.activeImage][1] != ""){
            this.caption.update(this.imageArray[this.activeImage][1]).show();
        }
        
        // if image is part of set display 'Image x of x' 
        if (this.imageArray.length > 1){
            this.numberDisplay.update( LightboxOptions.labelImage + ' ' + (this.activeImage + 1) + ' ' + LightboxOptions.labelOf + '  ' + this.imageArray.length).show();
        }

        new Effect.Parallel(
            [ 
                new Effect.SlideDown(this.imageDataContainer, { sync: true, duration: this.resizeDuration, from: 0.0, to: 1.0 }), 
                new Effect.Appear(this.imageDataContainer, { sync: true, duration: this.resizeDuration }) 
            ], 
            { 
                duration: this.resizeDuration, 
                afterFinish: (function() {
	                // update overlay size and update nav
	                var arrayPageSize = this.getPageSize();
	                this.overlay.setStyle({ height: arrayPageSize[1] + 'px' });
	                this.updateNav();
                }).bind(this)
            } 
        );
    },

    //
    //  updateNav()
    //  Display appropriate previous and next hover navigation.
    //
    updateNav: function() {

        this.hoverNav.show();               

        // if not first image in set, display prev image button
        if (this.activeImage > 0) this.prevLink.show();

        // if not last image in set, display next image button
        if (this.activeImage < (this.imageArray.length - 1)) this.nextLink.show();
        
        this.enableKeyboardNav();
    },

    //
    //  enableKeyboardNav()
    //
    enableKeyboardNav: function() {
        document.observe('keydown', this.keyboardAction); 
    },

    //
    //  disableKeyboardNav()
    //
    disableKeyboardNav: function() {
        document.stopObserving('keydown', this.keyboardAction); 
    },

    //
    //  keyboardAction()
    //
    keyboardAction: function(event) {
        var keycode = event.keyCode;

        var escapeKey;
        if (event.DOM_VK_ESCAPE) {  // mozilla
            escapeKey = event.DOM_VK_ESCAPE;
        } else { // ie
            escapeKey = 27;
        }

        var key = String.fromCharCode(keycode).toLowerCase();
        
        if (key.match(/x|o|c/) || (keycode == escapeKey)){ // close lightbox
            this.end();
        } else if ((key == 'p') || (keycode == 37)){ // display previous image
            if (this.activeImage != 0){
                this.disableKeyboardNav();
                this.changeImage(this.activeImage - 1);
            }
        } else if ((key == 'n') || (keycode == 39)){ // display next image
            if (this.activeImage != (this.imageArray.length - 1)){
                this.disableKeyboardNav();
                this.changeImage(this.activeImage + 1);
            }
        }
    },

    //
    //  preloadNeighborImages()
    //  Preload previous and next images.
    //
    preloadNeighborImages: function(){
        var preloadNextImage, preloadPrevImage;
        if (this.imageArray.length > this.activeImage + 1){
            preloadNextImage = new Image();
            preloadNextImage.src = this.imageArray[this.activeImage + 1][0];
        }
        if (this.activeImage > 0){
            preloadPrevImage = new Image();
            preloadPrevImage.src = this.imageArray[this.activeImage - 1][0];
        }
    
    },

    //
    //  end()
    //
    end: function() {
        this.disableKeyboardNav();
        this.lightbox.hide();
        new Effect.Fade(this.overlay, { duration: this.overlayDuration });
        $$('select', 'object', 'embed', 'iframe').each(function(node){ node.style.visibility = 'visible' });
    },

    //
    //  getPageSize()
    //
    getPageSize: function() {
	        
	     var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		
		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}

		return [pageWidth,pageHeight];
	}
}

add_onload_function(function() { new Lightbox(); } );

/**
 * dropDownMenu v0.5 sw edition
 * An easy to implement dropDown Menu for Websites, that may be based on styled list tags
 *
 * Works for IE 5.5+ PC, Mozilla 1+ all Plattforms, Opera 7+
 *
 * Copyright (c) 2004 Knallgrau New Medias Solutions GmbH, Vienna - Austria
 *
 * Original written by Matthias Platzer at http://knallgrau.at
 *
 * Modified by Sven Wappler http://www.wappler.eu
 *
 * Use it as you need it
 * It is distributed under a BSD style license
 */


/**
 * Container Class (Prototype) for the dropDownMenu
 *
 * @param idOrElement     String|HTMLElement  root Node of the menu (ul)
 * @param name            String              name of the variable that stores the result
 *                                            of this constructor function
 * @param customConfigFunction  Function            optional config function to override the default settings
 *                                            for an example see Menu.prototype.config
 */
var Menu = Class.create();
Menu.prototype = {

	initialize: function(idOrElement, name, customConfigFunction) {

		this.name = name;
		this.type = "menu";
		this.closeDelayTimer = null;
		this.closingMenuItem = null;

		this.config();
		if (typeof customConfigFunction == "function") {
			this.customConfig = customConfigFunction;
			this.customConfig();
		}
		this.rootContainer = new MenuContainer(idOrElement, this);
	},

	config: function() {
	  this.collapseBorders = true;
	  this.quickCollapse = true;
	  this.closeDelayTime = 500;
	}

}

var MenuContainer = Class.create();
MenuContainer.prototype = {
	initialize: function(idOrElement, parent) {
		this.type = "menuContainer";
  		this.menuItems = [];
		this.init(idOrElement, parent);
	},

	init: function(idOrElement, parent) {
	  this.element = $(idOrElement);
	  this.parent = parent;
	  this.parentMenu = (this.type == "menuContainer") ? ((parent) ? parent.parent : null) : parent;
	  this.root = parent instanceof Menu ? parent : parent.root;
	  this.id = this.element.id;

	  if (this.type == "menuContainer") {
	  	if (this.element.hasClassName("level1")) this.menuType = "horizontal";
		else if (this.element.hasClassName("level2")) this.menuType = "dropdown";
		else this.menuType = "flyout";

	    if (this.menuType == "flyout" || this.menuType == "dropdown") {
	      this.isOpen = false;
		  Element.setStyle(this.element,{
	      	position: "absolute",
	      	top: "0px",
	      	left: "0px",
	      	visibility: "hidden"});
	    } else {
	      this.isOpen = true;
	    }
	  } else {
	    this.isOpen = this.parentMenu.isOpen;
	  }

	  var childNodes = this.element.childNodes;
	  if (childNodes == null) return;

	  for (var i = 0; i < childNodes.length; i++) {
	    var node = childNodes[i];
	    if (node.nodeType == 1) {
	      if (this.type == "menuContainer") {
	        if (node.tagName.toLowerCase() == "li") {
	          this.menuItems.push(new MenuItem(node, this));
	        }
	      } else {
	        if (node.tagName.toLowerCase() == "ul") {
	          this.subMenu = new MenuContainer(node, this);
	        }
	      }
	    }
	  }
	},

	getBorders: function(element) {
	  var ltrb = ["Left","Top","Right","Bottom"];
	  var result = {};
	  for (var i = 0; i < ltrb.length; ++i) {
	    if (this.element.currentStyle)
	      var value = parseInt(this.element.currentStyle["border"+ltrb[i]+"Width"]);
	    else if (window.getComputedStyle)
	      var value = parseInt(window.getComputedStyle(this.element, "").getPropertyValue("border-"+ltrb[i].toLowerCase()+"-width"));
	    else
	      var value = parseInt(this.element.style["border"+ltrb[i]]);
	    result[ltrb[i].toLowerCase()] = isNaN(value) ? 0 : value;
	  }
	  return result;
	},

	open: function() {
	  if (this.root.closeDelayTimer) window.clearTimeout(this.root.closeDelayTimer);
	  this.parentMenu.closeAll(this);
	  this.isOpen = true;
	  if (this.menuType == "dropdown") {
		Element.setStyle(this.element,{
			left: (Position.positionedOffset(this.parent.element)[0]) + "px",
			top: (Position.positionedOffset(this.parent.element)[1] + Element.getHeight(this.parent.element)) + "px"
		});

	  } else if (this.menuType == "flyout") {
	    var parentMenuBorders = this.parentMenu ? this.parentMenu.getBorders() : new Object();
	    var thisBorders = this.getBorders();
	    if (
	      (Position.positionedOffset(this.parentMenu.element)[0] + this.parentMenu.element.offsetWidth + this.element.offsetWidth + 20) >
	      (window.innerWidth ? window.innerWidth : document.body.offsetWidth)
	    ) {
			Element.setStyle(this.element,{
	      		left: (- this.element.offsetWidth - (this.root.collapseBorders ?  0 : parentMenuBorders["left"])) + "px"
			});
	    } else {
			Element.setStyle(this.element,{
	    		left: (this.parentMenu.element.offsetWidth - parentMenuBorders["left"] - (this.root.collapseBorders ?  Math.min(parentMenuBorders["right"], thisBorders["left"]) : 0)) + "px"
			});
	    }
		Element.setStyle(this.element,{
	    	top: (this.parent.element.offsetTop - parentMenuBorders["top"] - this.menuItems[0].element.offsetTop) + "px"
		});
	  }
	  Element.setStyle(this.element,{visibility: "visible"});
	},

	close: function() {
		Element.setStyle(this.element,{visibility: "hidden"});
		this.isOpen = false;
		this.closeAll();
	},

	closeAll: function(trigger) {
		for (var i = 0; i < this.menuItems.length; ++i) {
			this.menuItems[i].closeItem(trigger);
		}
	}

}


var MenuItem = Class.create();

Object.extend(Object.extend(MenuItem.prototype, MenuContainer.prototype), {
	initialize: function(idOrElement, parent) {
		var menuItem = this;
		this.type = "menuItem";
		this.subMenu;
		this.init(idOrElement, parent);
		if (this.subMenu) {
			this.element.onmouseover = function() {
				menuItem.subMenu.open();
			}
		} else {
		if (this.root.quickCollapse) {
		  this.element.onmouseover = function() {
			menuItem.parentMenu.closeAll();
		  }
		}
		  }
		  var linkTag = this.element.getElementsByTagName("A")[0];
		  if (linkTag) {
		 linkTag.onfocus = this.element.onmouseover;
		 this.link = linkTag;
		 this.text = linkTag.text;
		  }
		  if (this.subMenu) {
		this.element.onmouseout = function() {
		  if (menuItem.root.openDelayTimer) window.clearTimeout(menuItem.root.openDelayTimer);
		  if (menuItem.root.closeDelayTimer) window.clearTimeout(menuItem.root.closeDelayTimer);
		  eval(menuItem.root.name + ".closingMenuItem = menuItem");
		  menuItem.root.closeDelayTimer = window.setTimeout(menuItem.root.name + ".closingMenuItem.subMenu.close()", menuItem.root.closeDelayTime);
		}
		  }
	},

	openItem: function() {
	  this.isOpen = true;
	  if (this.subMenu) { this.subMenu.open(); }
	},

	closeItem: function(trigger) {
	  this.isOpen = false;
	  if (this.subMenu) {
	    if (this.subMenu != trigger) this.subMenu.close();
	  }
	}
});


var menu;


function configMenu() {
  this.closeDelayTime = 300;
}

function initMenu() {
  menu = new Menu('root', 'menu', configMenu);
}


Event.observe(window, 'load', initMenu, false);
