/* Prototype JavaScript framework,version 1.6.0.2* (c) 2005-2008 Sam Stephenson** Prototype is freely distributable under the terms of an MIT-style license.* For details,see the Prototype web site:http://www.prototypejs.org/**--------------------------------------------------------------------------*/var Prototype={Version:'1.6.0.2',Browser:{IE: !!(window.attachEvent&&!window.opera),Opera:!!window.opera,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,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;/* Based on Alex Arnell's inheritance implementation. */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=Object.extend((function(m) {return function() { return ancestor[m].apply(this,arguments) };})(property).wrap(method),{valueOf:function() { return method },toString:function() { return method.toString() }});}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].split(",").invoke("strip");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);},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)));};}});Function.prototype.defer=Function.prototype.delay.curry(0.01);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.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('')});with (String.prototype.escapeHTML) div.appendChild(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;iterator=iterator.bind(context);try {this._each(function(value) {iterator(value,index++);});} catch (e) {if(e!=$break) throw e;}return this;},eachSlice:function(number,iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var index=-number,slices=[],array=this.toArray();while ((index += number)<array.length)slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var result=true;this.each(function(value,index) {result=result&&!!iterator(value,index);if(!result) throw $break;});return result;},any:function(iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var result=false;this.each(function(value,index) {if(result=!!iterator(value,index))throw $break;});return result;},collect:function(iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var results=[];this.each(function(value,index) {results.push(iterator(value,index));});return results;},detect:function(iterator,context) {iterator=iterator.bind(context);var result;this.each(function(value,index) {if(iterator(value,index)) {result=value;throw $break;}});return result;},findAll:function(iterator,context) {iterator=iterator.bind(context);var results=[];this.each(function(value,index) {if(iterator(value,index))results.push(value);});return results;},grep:function(filter,iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var results=[];if(Object.isString(filter))filter=new RegExp(filter);this.each(function(value,index) {if(filter.match(value))results.push(iterator(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) {iterator=iterator.bind(context);this.each(function(value,index) {memo=iterator(memo,value,index);});return memo;},invoke:function(method) {var args=$A(arguments).slice(1);return this.map(function(value) {return value[method].apply(value,args);});},max:function(iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var result;this.each(function(value,index) {value=iterator(value,index);if(result==null||value>=result)result=value;});return result;},min:function(iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var result;this.each(function(value,index) {value=iterator(value,index);if(result==null||value<result)result=value;});return result;},partition:function(iterator,context) {iterator=iterator ? iterator.bind(context):Prototype.K;var trues=[],falses=[];this.each(function(value,index) {(iterator(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) {iterator=iterator.bind(context);var results=[];this.each(function(value,index) {if(!iterator(value,index))results.push(value);});return results;},sortBy:function(iterator,context) {iterator=iterator.bind(context);return this.map(function(value,index) {return {value:value,criteria:iterator(value,index)};}).sort(function(left,right) {var a=left.criteria,b=right.criteria;return a<b ? -1:a>b ? 1:0;}).pluck('value');},toArray:function() {return this.map();},zip:function() {var iterator=Prototype.K,args=$A(arguments);if(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(!(Object.isFunction(iterable)&&iterable=='[object NodeList]')&&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(',') + ']';}});// use native browser JS 1.6 implementation if available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) {$R(0,this,true).each(iterator);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) {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.map(function(pair) {var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object') {if(Object.isArray(values))return values.map(toQueryPair.curry(key)).join('&');}return toQueryPair(key,values);}).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)) {// simulate other verbs over postparams['_method']=this.method;this.method='post';}this.parameters=params;if(params=Object.toQueryString(params)) {// when GET,append parameters to URL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);/* Force Firefox to handle ready state 4 for synchronous requests */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:'');/* Force "Connection:close" for older Mozilla browsers to work* around a bug where XMLHttpRequest sends an incorrect* Content-length header. See Mozilla Bugzilla #246651.*/if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)headers['Connection']='close';}// user-defined headers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') {// avoid memory leak in MSIE:clean up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) {// DOM level 2 ECMAScript Language Binding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||{ });}).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).style.display='none';return element;},show:function(element) {$(element).style.display='';return element;},remove:function(element) {element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,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(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);},// removes whitespace-only text node children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);var originalAncestor=ancestor;if(element.compareDocumentPosition)return (element.compareDocumentPosition(ancestor) & 8)===8;if(element.sourceIndex&&!Prototype.Browser.Opera) {var e=element.sourceIndex,a=ancestor.sourceIndex,nextAncestor=ancestor.nextSibling;if(!nextAncestor) {do { ancestor=ancestor.parentNode;}while (!(nextAncestor=ancestor.nextSibling)&&ancestor.parentNode);}if(nextAncestor&&nextAncestor.sourceIndex)return (e>a&&e<nextAncestor.sourceIndex);}while (element=element.parentNode)if(element==originalAncestor) 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) {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) // Safari bugreturn {width:element.offsetWidth,height:element.offsetHeight};// All *Width and *Height properties give 0 on elements with display none,// so enable the element temporarily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';// Opera returns the offset relative to the positioning context,when an// element is position relative but top and left have not been definedif(window.opera) {element.style.top=0;element.style.left=0;}}return element;},undoPositioned:function(element) {element=$(element);if(element._madePositioned) {element._madePositioned=undefined;element.style.position =element.style.top =element.style.left =element.style.bottom =element.style.right='';}return element;},makeClipping:function(element) {element=$(element);if(element._overflow) return element;element._overflow=Element.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=='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;// Position.prepare();// To be done manually by Scripty when it needs it.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;// Position.prepare();// To be done manually by Scripty when it needs it.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;// Safari fixif(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute') break;} while (element=element.offsetParent);element=forElement;do {if(!Prototype.Browser.Opera||element.tagName=='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]||{ });// find page position of sourcesource=$(source);var p=source.viewportOffset();// find coordinate system to useelement=$(element);var delta=[0,0];var parent=null;// delta [0,0] will do fine with position:fixed elements,// position:absolute needs offsetParent deltasif(Element.getStyle(element,'position')=='absolute') {parent=element.getOffsetParent();delta=parent.viewportOffset();}// correct by body offsets (fixes Safari)if(parent==document.body) {delta[0] -= document.body.offsetLeft;delta[1] -= document.body.offsetTop;}// set position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':// returns '0px' for hidden elements;we want it to return nullif(!Element.visible(element)) return null;// returns the border-box dimensions rather than the content-box// dimensions,so we subtract padding and borders from the value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) {// IE doesn't report offsets correctly for static elements,so we change them// to "relative" to get the values,then change them back.Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element) {element=$(element);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);var position=element.getStyle('position');if(position!=='static') return proceed(element);// Trigger hasLayout on the offset parent so that IE6 reports// accurate offsetTop and offsetLeft values for position:fixed.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.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').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=='IMG'&&element.width) {element.width++;element.width--;} else try {var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);} catch (e) { }return element;};// Safari returns margins on body which is incorrect if the child is absolutely// positioned. For performance reasons,redefine Element#cumulativeOffset for// KHTML/WebKit only.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) {// IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements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,property,value;// extend methods for specific tags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() {// extend methods for all tags (Safari doesn't need this)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={ };var B=Prototype.Browser;$w('width height').each(function(d) {var D=d.capitalize();dimensions[d]=(B.WebKit&&!document.evaluate) ? self['inner' + D]:(B.Opera) ? document.body['client' + 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);}};/* Portions of the Selector class are derived from Jack Slocum’s DomQuery,* part of YUI-Ext version 0.40,distributed under the terms of an MIT-style* license. Please see http://www.yui-ext.com/ for more information. */var Selector=Class.create({initialize:function(expression) {this.expression=expression.strip();this.compileMatcher();},shouldUseXPath:function() {if(!Prototype.BrowserFeatures.XPath) return false;var e=this.expression;// Safari 3 chokes on:*-of-type and:emptyif(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty")))return false;// XPath can't do namespaced attributes,nor can it read// the "checked" property from DOM nodesif((/(\[[\w-]*?:|:checked)/).test(this.expression))return false;return true;},compileMatcher:function() {if(this.shouldUseXPath())return this.compileXPathMatcher();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;if(this.xpath) return document._getElementsByXPath(this.xpath,root);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)) {// use the Selector.assertions methods unless the selector// is too complex.if(as[i]) {this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');} else {// reluctantly do a document-wide search// and look for a match in the array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 or translate(text(),' \t\r\n','')='')]",'checked': "[@checked]",'disabled':"[@disabled]",'enabled': "[not(@disabled)]",'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+)$/)) // digit onlyreturn '[' + fragment + "= " + mm[1] + ']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b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:{// combinators must be listed first// (and descendant needs to be last combinator)laterSibling:/^\s*~\s*/,child: /^\s*>\s*/,adjacent: /^\s*\+\s*/,descendant:/^\s/,// selectors follow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]+)\]/,attr:  /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},// for Selector.match and Element#match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:{// UTILITY FUNCTIONS// joins two collectionsconcat:function(a,b) {for (var i=0,node;node=b[i];i++)a.push(node);return a;},// marks an array of nodes for counting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;},// mark each child node with its position (for nth calls)// "ofType" flag indicates whether we're indexing for nth-of-type// rather than nth-child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++;}},// filters out duplicates and extends all nodes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);},// COMBINATOR FUNCTIONS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;},// TOKEN FUNCTIONStagName:function(nodes,root,tagName,combinator) {var uTagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes) {if(combinator) {// fastlane for ordinary descendant combinators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);},// handles the an+b logic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;});},// handles nth(-last)-child,nth(-last)-of-type,and (first|last)-of-type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+$/)) { // just a number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+))?/)) { // an+b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++) {// IE treats comments as element nodesif(node.tagName=='!'||(node.firstChild&&!node.innerHTML.match(/^\s*$/))) 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) 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.startsWith(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,{// IE returns comment nodes on getElementsByTagName("*").// Filter them out.concat:function(a,b) {for (var i=0,node;node=b[i];i++)if(node.tagName!=="!") a.push(node);return a;},// IE improperly serializes _countedByPrototype in (inner|outer)HTML.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!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))) {if(key in result) {// a key is already present;construct an array of values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.blur();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,index) {if(Object.isUndefined(index))return this[element.type=='select-one' ?'selectOne':'selectMany'](element);else {var opt,value,single=!Object.isArray(index);for (var i=0,length=element.length;i<length;i++) {opt=element.options[i];value=this.optionValue(opt);if(single) {if(value==index) {opt.selected=true;return;}}else opt.selected=index.include(value);}}},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) {// extend element because hasAttribute may not be native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) {var node=Event.extend(event).target;return Element.extend(node.nodeType==Node.TEXT_NODE ? node.parentNode: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) {return {x:event.pageX||(event.clientX +(document.documentElement.scrollLeft||document.body.scrollLeft)),y:event.pageY||(event.clientY +(document.documentElement.scrollTop||document.body.scrollTop))};},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);}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() {/* Support for the DOMContentLoaded event is based on work by Dan Webb,Matthias Miller,Dean Edwards and John Resig. */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();}};}})();/*------------------------------- DEPRECATED -------------------------------*/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');// This should be moved to script.aculo.us;notice the deprecated methods// further below,that map to the newer Element methods.var Position={// set to true if needed,warning:firefox performance problems// NOT neeeded for page scrolling,only if draggable contained in// scrollable elementsincludeScrollOffsets:false,// must be called before calling withinIncludingScrolloffset,every time the// page is scrolledprepare:function() {this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},// caches x/y coordinate pair to use with overlap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);},// within must be called directly before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;},// Deprecation layer -- use newer Element methods now (1.5.2).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();
function getUrlParams() {var s=document.location.href;if(s.indexOf('?')!=-1) return s.substring(s.indexOf('?')+1);return '';}function fnClearInput(inp,ot){if(inp.value.toLowerCase()==ot.toLowerCase()) inp.value='';}function wlc(){}function wlo(){}/* ma popup*/function wmac(){$('wMA').hide();}function wmao(){if($('wMA').empty())var pA=new Ajax.Request("/countries.html",{method:'get',onComplete:wmaoc});else$('wMA').show();}function wmaoc(originalResponse){$('wMA').update(originalResponse.responseText);$('wMA').show();}function writeDate(lang,div){var curdate=new Date();var weekDays;var monthName;if(lang=='E') {weekDays=new Array('SUN','MON','TUE','WED','THU','FRI','SAT');monthName= new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');}if(lang=='F') {weekDays=new Array('DIM','LUN','MAR','MER','JEU','VEN','SAM');monthName= new Array('JAN','FEV','MARS','AVR','MAI','JUIN','JUIL','AOUT','SEPT','OCT','NOV','DEC');}if(lang=='S') {weekDays=new Array('DOM','LUN','MAR','MIE','JUE','VIE','SAB');monthName= new Array('ENE','FEB','MAR','ABR','MAYO','JUN','JUL','AGO','SEPT','OCT','NOV','DIC');}if(lang=='I') {weekDays=new Array('DOM','LUN','MAR','MER','GIO','VEN','SAB');monthName= new Array('GEN','FEB','MAR','APR','MAG','GIU','LUG','AGO','SET','OTT','NOV','DIC');}if(lang=='J') {weekDays=new Array('日','月','火','水','木','金','土');monthName=new Array('1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月');}/*if(navigator.appName=='Microsoft Internet Explorer')year=curdate.getYear();elseyear=curdate.getYear() + 1900;*/year=curdate.getFullYear();var so=weekDays[curdate.getDay()] + "," + curdate.getDate()+" "+monthName[curdate.getMonth()]+" "+year;$(div).innerHTML=so;}function calGetPrevLink(y,m,d){if(d>1){d--;return "#year="+y+"/month="+m+"/day="+d;}else{if(m==5||m==7||m==8||m==10||m==12){m--;return "#year="+y+"/month="+m+"/day=30";}else if(m==2||m==4||m==6||m==9||m==11){m--;return "#year="+y+"/month="+m+"/day=31";}else if(m==3){m--;if((y % 4==0&&y % 100!=0)||y % 400==0){return "#year="+y+"/month="+m+"/day=29";}else {return "#year="+y+"/month="+m+"/day=28";}}else if(m==1){y--;return "#year="+y+"/month=12/day=31";}}}function calGetNextLink(y,m,d){if((d==31&&(m==1||m==3||m==5||m==7||m==8||m==10))||(d==30&&(m==4||m==6||m==9||m==11))||((d==28||d==29)&&m==2)){m++;return "#year="+y+"/month="+m+"/day=1";}else if(d==31&&m==12){y++;return "#year="+y+"/month=1/day=1";}else{d++;return "#year="+y+"/month="+m+"/day="+d;}}function updateHead2Head(){var url1='/statistics/season=2007/_listTeamsH2H_1.html';var url2='/statistics/season=2007/_listTeamsH2H_2.html';new Ajax.Updater({success:'divTeam1'},url1,{method:'get',evalScripts:true,asynchronous:true});new Ajax.Updater({success:'divTeam2'},url2,{method:'get',evalScripts:true,asynchronous:true});}function doHead2Head() {var path= '/statistics/head2head';var ddTeam1Value=$F('team1');var ddTeam2Value=$F('team2');path += '/teamA=' + ddTeam1Value + '/teamB=' + ddTeam2Value + '/index.html';if(ddTeam1Value==ddTeam2Value) alert('Please select two different teams');else if((ddTeam1Value!=-1)&&(ddTeam2Value!=-1)) location.href=path;else alert('Select the two teams')}function updateTPlayer(){var url1='/statistics/season=2007/_listTeamsForPlayer.html';var url2='/statistics/season=2007/type=Team/team=0/_listPlayers.html';new Ajax.Updater({success:'divTeamP1'},url1,{method:'get',evalScripts:true,asynchronous:true});new Ajax.Updater({success:'divTeamP2'},url2,{method:'get',evalScripts:true,asynchronous:true});}function selectPlayer() { var path= '/statistics/season=2007/type=Team/team=';var ddTeam1Value=$F('teamDropDown');var url2= '/statistics/season=2007/type=Team/team='+ddTeam1Value+'/_listPlayers.html';new Ajax.Updater({success:'divTeamP2'},url2,{method:'get',evalScripts:true,asynchronous:true});}function doTPlayer() { var path= '/statistics/player=';var ddPlayerValue=$F('playerDropDown');var path='/statistics/player='+ddPlayerValue+'/index.html';location.href=path;}function originSize(orUrl){var url=orUrl;var urls=url.split("_");//new photo format only has 1 underscoreif(urls.length==2){window.open('/mm' + urls[0] + '_ORIG.jpg');}//old photo format has multiple underscoreelse{url='/mm';var i;for(i=0;i<urls.length;i++){if((i!=(urls.length-1))&&(i!=(urls.length-2))){url+=urls[i];if(i!=(urls.length-3)){url+="_";}}}window.open(url += ".jpg");}}
var css_browser_selector = function() {
var t=this;var ua=navigator.userAgent.toLowerCase();var is=function(x){ return ua.indexOf(x) != -1; };
var h=document.getElementsByTagName('html')[0]
var b=(ua.indexOf("opera/9")>-1)?'opera opera9':(ua.indexOf("opera 8")>-1)?'opera opera8':(ua.indexOf("opera 7")>-1)?'opera opera7':(ua.indexOf("msie 9")>-1)?'ie ie9 ie8 ie7 ':(ua.indexOf("msie 8")>-1)?'ie ie8 ie7 ':(ua.indexOf("msie 7")>-1)?'ie ie7':(ua.indexOf("msie 6")>-1)?'ie ie6':(ua.indexOf("msie 5.5")>-1)?'ie ie55':(ua.indexOf("msie 5.23")>-1)?'ie ie523':(ua.indexOf("msie 5.0")>-1)?'ie ie5':(ua.indexOf("chrome")>-1)?'safari chrome':(ua.indexOf("safari")>-1&&ua.indexOf("version/4.")>-1&&ua.indexOf("version/4.")<ua.indexOf("safari"))?'safari safari4 safari3':(ua.indexOf("safari")>-1&&ua.indexOf("version/3.")>-1&&ua.indexOf("version/3.")<ua.indexOf("safari"))?'safari safari3':(ua.indexOf("safari")>-1)?'safari safari2':(ua.indexOf("seamonkey")>-1)?'seamonkey gecko':(ua.indexOf("netscape")>-1)?'netscape gecko':(ua.indexOf("firefox")>-1)?'firefox gecko':(ua.indexOf("gecko")>-1)?'gecko':'',os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
var c=b+os+' js';h.className+= h.className?' '+c:c;t.ver=navigator.appVersion;t.agent=navigator.userAgent;t.mac=ua.indexOf("mac")>-1;t.pc=ua.indexOf("win")>-1;t.opera=ua.indexOf("opera")>-1;
t.opera9=ua.indexOf("opera/9") > -1;t.opera8=ua.indexOf("opera 8")>-1;t.opera7=ua.indexOf("opera 7")>-1;t.ie7=(ua.indexOf("msie 7")>-1&&!t.opera)?1:0;t.ie7=t.ie8=(ua.indexOf("msie 8")>-1&&!t.opera)?1:0;t.ie6=(ua.indexOf("msie 6")>-1&&!t.opera)?1:0;t.ie55=(ua.indexOf("msie 5.5")>-1&&!t.opera)?1:0;t.ie523=(ua.indexOf("msie 5.23")>-1)?1:0;t.ie4=(ua.indexOf("msie 4")>-1)?1:0;t.ie3=(ua.indexOf("msie 3")>-1)?1:0;t.ie5=(ua.indexOf("msie 5.0")>-1&&!t.ie55&&!t.ie523)?1:0;t.ns71=(ua.indexOf("netscape/7.1")>-1)?1:0;t.safari4=(ua.indexOf("safari")>-1&&ua.indexOf("version/4.")>-1&&ua.indexOf("version/4.")<ua.indexOf("safari"))?1:0;t.safari3=(ua.indexOf("safari")>-1&&ua.indexOf("version/3.")>-1&&ua.indexOf("version/3.")<ua.indexOf("safari"))?1:0;t.safari2=(ua.indexOf("safari")>-1&&ua.indexOf("version/")==-1)?1:0;t.chrome=(ua.indexOf("chrome")>-1)?1:0;t.safari=(t.safari2||t.safari3||t.safari4);t.ie=(t.ie9||t.ie8||t.ie7||t.ie55||t.ie5||t.ie6||t.ie523||t.ie4||t.ie3);t.gecko=(ua.indexOf("gecko")>-1 &!t.ie)?1:0;t.ns=(t.ns71);t.ieOld=(t.ie55||t.ie5||t.ie523||t.ie4||t.ie3);t.ajaxaware =(t.opera||t.ie9||t.ie8||t.ie7||t.ie6||t.safari||t.gecko||t.chrome)?1:0}();
if (window.navigator.appName == "Microsoft Internet Explorer")
{
   // This is an IE browser. What mode is the engine in?
   if (document.documentMode > 7) // IE8 or later
     document.getElementsByTagName('html')[0].className+= ' docMode8';
}

if(typeof deconcept=="undefined"){
var deconcept=new Object();
}
if(typeof deconcept.util=="undefined"){
deconcept.util=new Object();
}
if(typeof deconcept.SWFObjectUtil=="undefined"){
deconcept.SWFObjectUtil=new Object();
}
deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){
if(!document.getElementById){
return;
}
this.DETECT_KEY=_b?_b:"detectflash";
this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
this.params=new Object();
this.variables=new Object();
this.attributes=new Array();
if(_1){
this.setAttribute("swf",_1);
}
if(id){
this.setAttribute("id",id);
}
if(w){
this.setAttribute("width",w);
}
if(h){
this.setAttribute("height",h);
}
if(_5){
this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));
}
this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
if(!window.opera&&document.all&&this.installedVer.major>7){
deconcept.SWFObject.doPrepUnload=true;
}
if(c){
this.addParam("bgcolor",c);
}
var q=_7?_7:"high";
this.addParam("quality",q);
if(_8+""!=""){
this.addParam("base",_8);
}
this.setAttribute("useExpressInstall",false);
this.setAttribute("doExpressInstall",false);
var _d=(_9)?_9:window.location;
this.setAttribute("xiRedirectUrl",_d);
this.setAttribute("redirectUrl","");
if(_a){
this.setAttribute("redirectUrl",_a);
}
};
deconcept.SWFObject.prototype={useExpressInstall:function(_e){
this.xiSWFPath=!_e?"expressinstall.swf":_e;
this.setAttribute("useExpressInstall",true);
},setAttribute:function(_f,_10){
this.attributes[_f]=_10;
},getAttribute:function(_11){
return this.attributes[_11];
},addParam:function(_12,_13){
this.params[_12]=_13;
},getParams:function(){
return this.params;
},addVariable:function(_14,_15){
this.variables[_14]=_15;
},getVariable:function(_16){
return this.variables[_16];
},getVariables:function(){
return this.variables;
},getVariablePairs:function(){
var _17=new Array();
var key;
var _19=this.getVariables();
for(key in _19){
_17[_17.length]=key+"="+_19[key];
}
return _17;
},getSWFHTML:function(){
var _1a="";
if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
if(this.getAttribute("doExpressInstall")){
this.addVariable("MMplayerType","PlugIn");
this.setAttribute("swf",this.xiSWFPath);
}
_1a="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";
_1a+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
var _1b=this.getParams();
for(var key in _1b){
_1a+=[key]+"=\""+_1b[key]+"\" ";
}
var _1d=this.getVariablePairs().join("&");
if(_1d.length>0){
_1a+="flashvars=\""+_1d+"\"";
}
_1a+="/>";
}else{
if(this.getAttribute("doExpressInstall")){
this.addVariable("MMplayerType","ActiveX");
this.setAttribute("swf",this.xiSWFPath);
}
_1a="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";
_1a+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
var _1b=this.getParams();
for(var key in _1b){
_1a+="<param name=\""+key+"\" value=\""+_1b[key]+"\" />";
}
var _1d=this.getVariablePairs().join("&");
if(_1d.length>0){
_1a+="<param name=\"flashvars\" value=\""+_1d+"\" />";
}
_1a+="</object>";
}
return _1a;
},write:function(_1e){
if(this.getAttribute("useExpressInstall")){
var _1f=new deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(_1f)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
this.setAttribute("doExpressInstall",true);
this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
document.title=document.title.slice(0,47)+" - Flash Player Installation";
this.addVariable("MMdoctitle",document.title);
}
}
if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
var n=(typeof _1e=="string")?document.getElementById(_1e):_1e;
n.innerHTML=this.getSWFHTML();
return true;
}else{
if(this.getAttribute("redirectUrl")!=""){
document.location.replace(this.getAttribute("redirectUrl"));
}
}
return false;
}};
deconcept.SWFObjectUtil.getPlayerVersion=function(){
var _21=new deconcept.PlayerVersion([0,0,0]);
if(navigator.plugins&&navigator.mimeTypes.length){
var x=navigator.plugins["Shockwave Flash"];
if(x&&x.description){
_21=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));
}
}else{
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){
var axo=1;
var _24=3;
while(axo){
try{
_24++;
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_24);
_21=new deconcept.PlayerVersion([_24,0,0]);
}
catch(e){
axo=null;
}
}
}else{
try{
var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
}
catch(e){
try{
var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
_21=new deconcept.PlayerVersion([6,0,21]);
axo.AllowScriptAccess="always";
}
catch(e){
if(_21.major==6){
return _21;
}
}
try{
axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
}
catch(e){
}
}
if(axo!=null){
_21=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
}
}
}
return _21;
};
deconcept.PlayerVersion=function(_25){
this.major=_25[0]!=null?parseInt(_25[0]):0;
this.minor=_25[1]!=null?parseInt(_25[1]):0;
this.rev=_25[2]!=null?parseInt(_25[2]):0;
};
deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
if(this.major<fv.major){
return false;
}
if(this.major>fv.major){
return true;
}
if(this.minor<fv.minor){
return false;
}
if(this.minor>fv.minor){
return true;
}
if(this.rev<fv.rev){
return false;
}
return true;
};
deconcept.util={getRequestParameter:function(_27){
var q=document.location.search||document.location.hash;
if(_27==null){
return q;
}
if(q){
var _29=q.substring(1).split("&");
for(var i=0;i<_29.length;i++){
if(_29[i].substring(0,_29[i].indexOf("="))==_27){
return _29[i].substring((_29[i].indexOf("=")+1));
}
}
}
return "";
}};
deconcept.SWFObjectUtil.cleanupSWFs=function(){
var _2b=document.getElementsByTagName("OBJECT");
for(var i=_2b.length-1;i>=0;i--){
_2b[i].style.display="none";
for(var x in _2b[i]){
if(typeof _2b[i][x]=="function"){
_2b[i][x]=function(){
};
}
}
}
};
if(deconcept.SWFObject.doPrepUnload){
if(!deconcept.unloadSet){
deconcept.SWFObjectUtil.prepUnload=function(){
__flash_unloadHandler=function(){
};
__flash_savedUnloadHandler=function(){
};
window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);
};
window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);
deconcept.unloadSet=true;
}
}
if(!document.getElementById&&document.all){
document.getElementById=function(id){
return document.all[id];
};
}
var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;

/* basic object browser */var _ObjectBrowsers=Class.create();_ObjectBrowsers.prototype={initialize:function(){this.oba=new Array();this.obh=new Array();},add:function(ob){this.oba.push(ob);},store:function(bname,ob){var x=this.getBrowserPair(bname);if(x)x.ob=ob;else this.obh.push({bname:bname,ob:ob});},getBrowserPair:function(bname){for (var i=0;i<this.obh.length;i++)if(this.obh[i].bname==bname)return this.obh[i];return null;},getBrowser:function(bname){for (var i=0;i<this.obh.length;i++)if(this.obh[i].bname==bname)return this.obh[i].ob;return null;page},stopAll:function(){this.oba.each(function(n){n.stop();});},moveLeft:function(bname){try{this.getBrowser(bname).moveLeft();}catch(e){}},moveRight:function(bname){try{this.getBrowser(bname).moveRight();}catch(e){}},moveTo:function(bname,i){try{this.getBrowser(bname).moveTo(i);}catch(e){}}}var ObjectBrowsers=new _ObjectBrowsers();var BaseObjectBrowser=Class.create();BaseObjectBrowser.prototype={baseInit:function(leftArrowID,rightArrowID,bulletID){var t=this;t.firstInt=10;t.othInt=10;t.state=0t.e=new Array();t.eC=0;t.c=0;t.arrowL=leftArrowID;t.arrowR=rightArrowID;t.bullet=bulletID;ObjectBrowsers.add(t);},onTimer:function(){var t=this;/*console.log(t.cID + " " + t.pe.timer);*/t.moveNext();if(this.state==1){t.pe.stop();t.state=2;t.pe=new PeriodicalExecuter(t.onTimer.bind(t),t.othInt);t.pe.ob=t;}},start:function(){var t=this;t.pe=new PeriodicalExecuter(t.onTimer.bind(t),t.firstInt);t.pe.ob=t;t.state=1var s=0;if(arguments&&arguments.length>0) s=arguments[0];if(s==-1)s=Math.ceil(Math.random()*(t.eC-1));t.c=s;t.moveElement();},stop:function(){this.pe.stop();},moveRight:function(i){var t=this;t.pe.stop();t.c++;if(t.c>=t.eC)t.c=0;t.moveElement();},moveLeft:function(idx){var t=this;t.pe.stop();t.c--;if(t.c<0)t.c=t.eC-1;t.moveElement();},moveTo:function(i){var t=this;t.pe.stop();t.c=i;t.moveElement();},moveNext:function(){var t=this;t.c++;if(t.c>=t.eC)t.c=0;t.moveElement();},refreshControls:function(){var t=this;/* if(t.c==0)$(t.arrowL).className='naLE';else$(t.arrowL).className='naLF';if(t.c==(t.eC-1))$(t.arrowR).className='naRE';else$(t.arrowR).className='naRF';*/for (var l=0;l<t.eC;l++) $(t.bullet+l).className='';$(t.bullet+t.c).className='nbSel';}};/* photo browser used inside the article */ArticlePhotoBrowser=Class.create();Object.extend(Object.extend(ArticlePhotoBrowser.prototype,BaseObjectBrowser.prototype),{initialize:function(iID,cID,lAID,rAID,bID) {var t=this;t.baseInit(lAID,rAID,bID);t.img=iID;t.credit=cID;},addElement:function (src,h,w,alt,c) {this.eC=this.e.push({src:src,h:h,w:w,alt:alt,c:c});},moveElement:function () {var t=this;var el=t.e[t.c];$(t.img).src=unescape(el.src);$(t.img).height=el.h;$(t.img).width=el.w;$(t.img).alt=el.t;$(t.credit).update(el.c);t.refreshControls();}});NewsBrowser=Class.create();Object.extend(Object.extend(NewsBrowser.prototype,BaseObjectBrowser.prototype),{initialize:function(pS,nC,cID,lID,rID,bID){var t=this;t.baseInit(lID,rID,bID);t.cID=cID;t.pS=pS;t.eC=(((nC%t.pS)==1?nC-1:nC)/t.pS)+((nC%t.pS)==1?1:0);},addElement:function(){},moveElement:function(){var t=this;var xhtml='';var i,b=t.c*t.pS;for(i=0;i<t.pS;i++){try {xhtml+="<li>"+$('newsRollerE'+(i+b)).innerHTML+"</li>";}catch(e){}}$(t.cID).update(xhtml);t.refreshControls();}});PhotoBrowser=Class.create();Object.extend(Object.extend(PhotoBrowser.prototype,BaseObjectBrowser.prototype),{initialize:function(pS,nC,cID,lID,rID,bID){var t=this;t.baseInit(lID,rID,bID);t.cID=cID;t.pS=pS;t.eC=(((nC%t.pS)==1?nC-1:nC)/t.pS)+((nC%t.pS)==1?1:0);},addElement:function(){},moveElement:function(){var t=this;var xhtml='';var i,b=t.c*t.pS;for(i=0;i<t.pS;i++){try {xhtml+="<li>"+$('photoRollerE'+(i+b)).innerHTML+"</li>";}catch(e){}}$(t.cID).update(xhtml);t.refreshControls();}});/* news navigation */function pageNavigate(st,ps){var bU=document.location.pathname;if(bU[bU.length - 1]=='/') {bU += 'index.html';}var page=parseInt(ps,10)-1;var pN=",page=";var b=bU.indexOf(pN);var nI,oI,nL;if(b>0){oI=parseInt(bU.substring(b+pN.length,bU.lastIndexOf('.')),10);}else{oI=1;b=bU.indexOf('.htm')}nI=oI+parseInt(st,10);if(nI<=0)nI=1;nL=bU.substring(0,b);if(nI>1)nL+=pN+nI+'.htmx';else nL+='.html';window.location.href=nL;}
var HashListener=Class.create();HashListener.prototype={getHash:function(){try{return location.hash.substring(1)}catch (e){return '';}},initialize:function(){var t=this;t.l=new Array();t.cE=false;t.h=t.getHash();t.tm=setInterval(t.onTimer.bind(t),200);},addListner:function(lf){this.l.push(lf);},onTimer:function(){var t=this;if(!t.cE){try {if(t.h!=t.getHash()&&t.getHash()!=''){t.h=t.getHash();t.cE=true;t.l.each(function(n){ n(t.h);});}} finally {t.cE=false;}}}}var HashUpdater=Class.create();HashUpdater.prototype={initialize:function(tID,buildPathFunc,beforeChangeFunc,opt,afterChangeFunc){var t=this;t.tID=tID;t.bPF=buildPathFunc;t.bCF=beforeChangeFunc;t.aCF=afterChangeFunc;t.opt=opt;t.hel=new Array();},addHash:function(h){this.hel.push(h);},onHash:function(h) {var t=this;t.h=h;try{t.bCF(t);}catch(e){};var u=t.bPF(h,t);if(u==null||u==undefined||u.length==0) return;new Ajax.Updater({success:t.tID},u,{method:'get',evalScripts:true,onComplete:t.onComplete.bind(t)});},onComplete:function() {try{this.aCF(this);}catch (e) {}},checkHash:function (h) {for (var i=0;i<this.hel.length;i++)if(this.hel[i]==h)return true;return false;},start:function(sH) {var t=this;t.hl=new HashListener();t.hl.addListner(t.onHash.bind(t));var h=t.hl.getHash();if((h===undefined||h==null||h=='')&&t.hel.length>1){if(sH!=null&&sH!=undefined&&sH.length>0)h=sH;else{var i=Math.ceil(((Math.random()+0.1)*t.hel.length)-1);if(i<0||i>=t.hel.length) i=0;h =t.hel[i];}}else if((h===undefined||h==null||h=='')&&t.hel.length==1){h=t.hel[0];}try{t.bCF(t);}catch(e){};t.onHash(h);}}var HashUpdaterPhoto=Class.create();HashUpdaterPhoto.prototype={initialize:function(tID,buildPathFunc,beforeChangeFunc,opt,afterChangeFunc){var t=this;t.tID=tID;t.bPF=buildPathFunc;t.bCF=beforeChangeFunc;t.aCF=afterChangeFunc;t.opt=opt;t.hel=new Array();},addHash:function(h){this.hel.push(h);},onHash:function(h) {var t=this;t.h=h;try{t.bCF(t);}catch(e){};var u=t.bPF(h,t);if(u==null||u==undefined||u.length==0) return;new Ajax.Updater({success:t.tID},u,{method:'get',evalScripts:true,onComplete:t.onComplete.bind(t)});},onComplete:function() {try{this.aCF(this);}catch (e) {}},checkHash:function (h) {for (var i=0;i<this.hel.length;i++)if(this.hel[i]==h)return true;return false;},start:function(sH) {var t=this;t.hl=new HashListener();t.hl.addListner(t.onHash.bind(t));var h=t.hl.getHash();if((!h||h=='')&&t.hel.length>1){if(sH!=null&&sH!=undefined&&sH.length>0)h=sH;else{var i=Math.ceil(((Math.random()+0.1)*t.hel.length)-1);if(i<0||i>t.hel.length) i=0;h =t.hel[i];}}else if((!h||h=='')&&t.hel.length==1){h=t.hel[0];}try{t.bCF(t);}catch(e){};t.onHash(h);//alert('hash3:'+h);}}
/////////////////////////////////////////////////////////////////// This section provides the user to switch the time to and from// local time,server time. This selection also saves it in a// cookie to be used again on load./////////////////////////////////////////////////////////////////var tzc={tFmt:'dd/MM/yy HH:mm',tCls:'matchTimeConvertible',initialized:false,init:function(sFormat) {if(sFormat!==undefined&&sFormat!=null&&sFormat!='') { tzc.tFmt=sFormat;}tzc.initialized=true;//var c=Cookie.get('TZC');var c=readIRBCookie('TZC');if(c!==undefined&&c!=null&&c=='1') {tzc.clientTime();}else {tzc.localTime();}Event.observe('tzcLocal','click',function(e) {tzc.clientTime();Event.stop(e);});Event.observe('tzcClient','click',function(e) {tzc.localTime();Event.stop(e);});},refreshAfterAjax:function() {if(tzc.initialized!=true) return;//var c=Cookie.get('TZC');var c=readIRBCookie('TZC');if(c!==undefined&&c!=null&&c=='1')tzc.clientTime();elsetzc.localTime();},localTime:function() {$('tzcLocal').show();$('tzcClient').hide();var mts=document.getElementsByClassName(tzc.tCls);for (var i=0,length=mts.length;i<length;i++) {if(mts[i].readAttribute('id')!=null&&mts[i].readAttribute('id').length>0) {var s=mts[i].readAttribute('id').split(',')if(s.length>0) {mts[i].update(s[0]);mts[i].removeClassName('TZCclient');}}}//Cookie.set('TZC','0',365,'/');createIRBCookie('TZC',0,365);},clientTime:function() {$('tzcClient').show();$('tzcLocal').hide();var timechangeday=24;if(new Date().getTimezoneOffset()/60<=-12) {timechangeday=25;}var mts=document.getElementsByClassName(tzc.tCls);for (var i=0,length=mts.length;i<length;i++) {if(mts[i].readAttribute('id')!=null&&mts[i].readAttribute('id').length>0) {var s=mts[i].readAttribute('id').split(',')if(s.length>0) {var matchTime=tzc.decodeUTC(s[1],1);var timeDifference=12;//+12 for New Zealand time zoneif(matchTime.getMonth() + 1==9 & matchTime.getDate()>timechangeday | matchTime.getMonth() + 1>9) {//Time diference increases after this time.timeDifference=13;//alert(mts[i].readAttribute('id') + "-M " + matchTime.getMonth() + "-D " + matchTime.getDate() + "UTC=" + tzc.decodeUTC(s[1],timeDifference));}var t=tzc.formatDate(tzc.decodeUTC(s[1],timeDifference));mts[i].update(t);mts[i].addClassName('TZCclient');}}}//Cookie.set('TZC','1',365,'/');createIRBCookie('TZC',1,365);},padString:function(s,l,pc) { while (s.length<l) { s=pc + s };return s;},formatDate:function(d) {var _d=tzc.padString(d.getDate().toString(),2,'0'),_M=tzc.padString((d.getMonth() + 1).toString(),2,'0'),_y=tzc.padString((d.getFullYear() % 1000).toString(),2,'0'),_h=tzc.padString(d.getHours().toString(),2,'0'),_m=tzc.padString(d.getMinutes().toString(),2,'0');if(tzc.tFmt=='dd/MM/yy HH:mm') return _d + '/' + _M + '/' + _y + ' ' + _h + ':' + _m;if(tzc.tFmt=='dd/MM HH:mm') return _d + '/' + _M + ' - ' + _h + ':' + _m;if(tzc.tFmt=='HH:mm') return _h + ':' + _m;if(tzc.tFmt=='dd/MM/yy') return _d + '/' + _M + '/' + _y;return _d + '/' + _M + '/' + _y + ' ' + _h + ':' + _m;},decodeUTC:function(n,sFuso) {var _m=n % 100,_h=Math.floor(n / 100) % 100,_d=Math.floor(n / 10000) % 100,_M=(Math.floor(n / 1000000) % 100 - 1),_y=Math.floor(n / 100000000),_dt=new Date();_dt.setTime(Date.UTC(_y,_M,_d,_h,_m) - (sFuso * 3600000));return _dt}}
function createCookie(name,value,days,domain) {if(days) {var date=new Date();date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));var expires=";expires=" + date.toGMTString();} elsevar expires="";document.cookie=name + "=" + value + expires + ";path=/" + (domain ? ';domain=' + domain:'');}function readCookie(name) {var nameEQ=name + "=";var ca=document.cookie.split(';');for (var i=0;i<ca.length;i++) {var c=ca[i];while (c.charAt(0)==' ') c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0) return c.substring(nameEQ.length,c.length);}return null;}function expireCookie(name,domain) {createCookie(name,"",-366,domain);}function eraseCookie(name) {createCookie(name,"",-366);}///////////////////////////////////////////////////////////////// This function takes in a language code as below ("en","it")// sets a cookie for this language code and redirects to the// relevent IRB language site///////////////////////////////////////////////////////////////function createIRBCookie(name,value,days) {if(days) {var date=new Date();date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));var expires=";expires=" + date.toGMTString();} elsevar expires="";document.cookie=name + "=" + value + expires + ";path=/;";}function readIRBCookie(name) {var nameEQ=name + "=";var ca=document.cookie.split(';');for (var i=0;i<ca.length;i++) {var c=ca[i];while (c.charAt(0)==' ') c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0) return c.substring(nameEQ.length,c.length);}return null;}var lang_arr=["en","it"];var dict ={base_en:"http://www.irb.com/jwc",base_it:"http://it.irb.com/jwc",news_en:"http://www.irb.com/jwc/news/",news_it:"http://it.irb.com/jwc/news/",phot_en:"http://www.irb.com/jwc/photo/index.html",phot_it:"http://it.irb.com/jwc/photo/index.html"}/*var dict ={base_en:"http://en.static.staging.irb.deltatre.com/jwc",base_it:"http://it.static.staging.irb.deltatre.com/jwc",news_en:"http://en.static.staging.irb.deltatre.com/jwc/news/",news_it:"http://it.static.staging.irb.deltatre.com/jwc/news/",phot_en:"http://en.static.staging.irb.deltatre.com/jwc/photo/index.html",phot_it:"http://it.static.staging.irb.deltatre.com/jwc/photo/index.html"}*/function setIRBLanguage(languageCode) {//commented 05/06/2010 to avoid issues with JWC video player. replace when client gives approval//createIRBCookie('IRBLanguage',languageCode,31);//getIRBLanguage();JWCRedirect(languageCode);}function JWCRedirect(languageCode) {// langCode=where we wanna govar weAreHere=whereAreWe();if(weAreHere!=languageCode&&window.location.href.indexOf("vi-rwc-02")==-1) {if(window.location.href.toLowerCase().indexOf("news")>-1) {window.location=dict["news_" + languageCode] + "index.html?referred=" + languageCode;}else if(window.location.href.toLowerCase().indexOf("photo/")>-1) {window.location=dict["phot_" + languageCode] + "?referred=" + languageCode;}else if(window.location.href.toLowerCase().indexOf("video")>-1) {window.location="http://www.irb.com/jwc/video/index.html";}else {var arr=window.location.href.split("?");var qsTemp=new Array();if(typeof (arr)=="array") {if(arr.length>0) {qsTemp=arr[1].split("&");}}var qs=new Array();var tmp;while (qsTemp.length) {tmp=qsTemp.shift();if(tmp.indexOf("referred")==-1) {qs.push(tmp);}}qs.push("referred=" + languageCode);//Fix for firefoxvar target=arr[0].toLowerCase().replace(dict["base_" + weAreHere],dict["base_" + languageCode]) + "?" + qs.join("&");window.location=target;}}}function whereAreWe() {for (var i=0;i<lang_arr.length;++i) {if(window.location.href.toLowerCase().indexOf(dict["base_" + lang_arr[i]])>-1) {return lang_arr[i];}}return null;}///////////////////////////////////////////////////////////////// This function reads the IRBLanguage cookie and redirects to// the corresponding site occurs only onLoad///////////////////////////////////////////////////////////////function getIRBLanguage() {var weAreHere=whereAreWe();if(window.location.href.indexOf("dynamic")==-1) {//only do this if not in dynamic!if(window.location.href.indexOf("referred=")>-1) {createIRBCookie('IRBLanguage',weAreHere,31);}else {var lang=readIRBCookie('IRBLanguage');if(lang!=null) {JWCRedirect(lang);}}}}
/*include swfobject*/document.write("<script type='text/javascript' src='http://swfobject.googlecode.com/svn/trunk/swfobject/swfobject.js'></script>");/*load a video to the main video div (player)*/function loadVideo(playerUrl,autoplay) {swfobject.embedSWF(playerUrl + '&rel=1&border=0&fs=1&autoplay=' +(autoplay?1:0),'player','200','200','9.0.0',false,false,{allowfullscreen:'true'});}/*load and show the video selector bar*/function showMyVideos2(data) {var feed=data.feed;var entries=feed.entry||[];//var titleCount=0;var pageCount=1;var html="";html=['<div class="vidsPage" id="vpg'+ pageCount +'"><div class="vidsNewer"></div><ul class="videos">']var maxPage=Math.ceil(entries.length/3);for (var i=0;i<entries.length;i++){var entry=entries[i];var title=entry.title.$t;var thumbnailUrl=entries[i].media$group.media$thumbnail[0].url;var playerUrl=entries[i].media$group.media$content[0].url;html.push('<li onclick="loadVideo(\'',playerUrl,'\',true)">','<img title="',title,'" src="',thumbnailUrl,'" width="70" height="49"/>','<div class="videoTitle"><a href="javascript:void(0)" onclick="loadVideo(\'',playerUrl,'\',true)">',title,'</a></div></li>');if(((i+1) % 3)==0){//Before we start writing out the next page we need to put any next or previous buttons on the page.if(pageCount>1){html.push('<div class="previousLink"><a class="moreLink" href="javascript:void(0)" onclick="ShowPage('+ (pageCount-1) +')">previous</a></div>');}if(pageCount<maxPage){html.push('<div class="nextLink"><a class="moreLink" href="javascript:void(0)" onclick="ShowPage('+ (pageCount + 1) +')">next</a></div>');}pageCount++;html.push('</div><div class="vidsPage" id="vpg'+ pageCount +'"><ul class="videos">')}}html.push('</ul><div class="previousLink"><a class="moreLink" href="javascript:void(0)" onclick="ShowPage('+ (pageCount-1) +')">previous</a></div>');html.push('<br style="clear:left;"/>');document.getElementById('videos2').innerHTML=html.join('');if(entries.length>0) {loadVideo(entries[0].media$group.media$content[0].url,false);}ShowPage(1);}function ShowPage(page){ShowSectionPage('',page);}function ShowSectionPage(section,page){if(page>1){if($("vpg"+section+(page-1))!=null){$("vpg"+section+(page-1)).style["display"]="none";}}if($("vpg"+section+(page))!=null){$("vpg"+section+page).style["display"]="block";}if($("vpg"+section+(page+1))!=null){$("vpg"+section+(page+1)).style["display"]="none";}}/* write the HTML objects necessary for the youTube player and video selection bar*/function writeplaylist(playlistCode,cnt){document.write("<DIV id='playerContainer'><OBJECT id='player'></OBJECT></DIV><div id='videos2'></div><SCRIPT type='text/javascript' src='http://gdata.youtube.com/feeds/playlists/" + playlistCode + "?alt=json-in-script&amp;callback=showMyVideos2&amp;max-results="+ cnt +"'></SCRIPT>");}function writechannel(channel,cnt){document.write("<DIV id='playerContainer'><OBJECT id='player'></OBJECT></DIV><div id='videos2'></div><SCRIPT type='text/javascript' src='http://gdata.youtube.com/feeds/api/users/" + channel +"/uploads/?alt=json-in-script&amp;callback=showMyVideos2&amp;max-results="+ cnt +"'></SCRIPT>");}
//Alberto Maghini - client-side menu selection (copied form Fifa.com).function currMenuItem(id,excludepathpar) {//propertiesvar _prefix=document.location.protocol + '//' + document.location.host;var _pathname=document.location.pathname;if(arguments.length==2&&typeof excludepathpar=='string'&&excludepathpar!='') {// exclude param from pathvar re=new RegExp('/' + excludepathpar + '=\\d*' + '/');_pathname=_pathname.replace(re,'/');}//functionsvar findItem=function(path) {if(path.length==0) {//not foundreturn null;}var $items=$(_id).descendants();var items=[];var i=$items.length;while (i) {var $i=$items[i - 1];if($i.href&&$i.href.indexOf('#')==-1&&$i.href.indexOf(_prefix + path)==0) {items.push($i);}i--;}if(items.length==0) {//search in parent pathreturn findItem(getParent(path));}var item=getItem(path,items);if(item) {item.addClassName("current").up().addClassName("current");}return item;};//try to get the right itemvar getItem=function(path,items) {if(items.length==1) {return items[0];}var index;//here some logic to find the right url,if more then one//if there is exactly the path or a path ending in index.html,that's it//  var sel1=_id + " [href$='" + path + "/']";//  var sel2=_id + " [href$='" + path + "/index.html']";//  return $j(sel1 + "," + sel2);};var getParent=function(path) {//check for VSets pagesvar r=new RegExp(",[a-z]+=[0-9/]+.html");if(r.test(path)) {path=path.replace(r,'.html');}else {path=path.substring(0,path.lastIndexOf("/"));}return path;};//Codevar _id=id;var menu=$(_id);if(!menu) {//menu doesn't existreturn;}return findItem(_pathname);};
(function($) {$.fn.galleryView=function(options) {var opts=$.extend($.fn.galleryView.defaults,options);var interval;var entryIndex=0;var lastEntryIndex=-1;var totElement=0;var rotate=false;var count=0;var ___dataKey='__galleryView_videoPlaying';var videoId;function getVideoPlaying() {return jQuery.data(window,___dataKey);}function isVisible() {}function setVideoPlaying(value) {jQuery.data(window,___dataKey,value);$("#newsReaderDetailContainer").hide();$("#newsReaderVideoContainer").show();var bridge=$("#slObj")[0].Content.PlayerBridge;bridge.VideoStarted=OnVideoStarted;bridge.VideoEnded=OnVideoEnd;bridge.VideoClose=OnVideoClose;setVideoId(value);}function OnVideoStarted() {}function OnVideoEnd() {$(window).removeData(___dataKey);$("#newsReaderDetailContainer").show();$("#newsReaderVideoContainer").hide();displayEntries();}function OnVideoClose() {$(window).removeData(___dataKey);$("#newsReaderDetailContainer").show();$("#newsReaderVideoContainer").hide();setVideoId(0)displayEntries();}function reset() {if(!opts.frozen) {count=0;entryIndex=0;lastEntryIndex=-1;totElement=0;clearInterval(interval);}}function displayEntries() {if(!getVideoPlaying()) {rotate=true;interval=setInterval(function() { showEntry();},opts.displayTime);}};function showEntry() {if(entryIndex!=lastEntryIndex) {if(opts.deselectedMode=="grey") {$("#newsReaderList ul li").eq(lastEntryIndex).removeClass();$("#newsReaderList ul li").eq(entryIndex).removeClass().addClass("selectedFilmstrip");}else {$("#newsReaderList li div").removeClass().addClass("newsReaderListDeselected");$("#newsReaderList li div").eq(entryIndex).removeClass().addClass("newsReaderListSelected");if(lastEntryIndex>-1) {$("#newsReaderList li div").eq(lastEntryIndex).removeClass().addClass("newsReaderListDeselected");}}var newsDetailObj=$("#newsReaderDetailContainer li").eq(entryIndex);$("#newsReaderDetailContainer li").not(newsDetailObj).hide();$("#newsReaderList li div").css('opacity','0.7');newsDetailObj.fadeIn(500);$("#newsReaderList li div").eq(entryIndex).css('opacity','1')}/* Get next news */lastEntryIndex=entryIndex;if(++entryIndex==totElement)entryIndex=0;};function entryMouseOver(ElementPosition) {rotate=false;if(!getVideoPlaying()) {if(!opts.frozen) {clearInterval(interval);}entryIndex=ElementPosition;if(lastEntryIndex!=entryIndex) {if(opts.deselectedMode!="grey") {$("#newsReaderList li div").eq(lastEntryIndex).removeClass().addClass("newsReaderListDeselected");$("#newsReaderList li div").eq(entryIndex).removeClass().addClass("newsReaderListSelected");}showEntry();}}};function entryMouseOut(e) {if(!getVideoPlaying()) {if(!opts.frozen) {displayEntries();}else if(!mouseIsOverPanels(e.pageX,e.pageY,$("#newsContainerBlock"))) {entryIndex=$("#newsReaderDetailContainer li").index($("#newsReaderDetailContainer li[frozen=true]"));showEntry();}}};function mouseIsOverPanels(x,y,element) {var panel_width=element.width();var panel_height=element.height();var top=element.offset().top;var left=element.offset().left;return x>left&&x<left + panel_width&&y>top&&y<top + panel_height;};return this.each(function() {j_gallery=$(this);$("#newsReaderVideoContainer").hide();$("#newsReaderDetailContainer li").hide();totElement=$("#newsReaderList li").length;if($("#newsReaderDetailContainer li[frozen=true]").length>0) {opts.frozen=true;entryIndex=$("#newsReaderDetailContainer li").index($("#newsReaderDetailContainer li[frozen=true]"));$("#newsReaderDetailContainer li[frozen=true]").addClass("selectedFilmstrip");}else$("#newsReaderList ul li:first").addClass("selectedFilmstrip");if(!opts.frozen) {$("#newsReaderDetailContainer li").hover(function() {clearInterval(interval);},function() {displayEntries();});}else {$("#newsContainerBlock").hover(function() { },function(e) { entryMouseOut(e);});}$("#newsReaderList ul li").hover(function() { entryMouseOver($("#newsReaderList li").index(this));},function(e) { entryMouseOut(e);});$('#newsReaderDetailContainer .videoplay').bind('click',function(e) {e.preventDefault();setVideoPlaying($("#newsReaderList ul li.selectedFilmstrip").attr('id'));});showEntry();if(!opts.frozen) {displayEntries();}});};$.fn.galleryView.defaults={displayTime:6000,frozen:false,libraryPath:"",deselectedMode:"grey"};$.fn.galleryView.setVideoPlaying=function(isPlaying) {jQuery.data(window,'__galleryView_videoPlaying',isPlaying);};} (jQuery));
var VSA_scrollAreas=new Array();var VSA_default_imagesPath="images";var VSA_default_btnUpImage="button-up.gif";var VSA_default_btnDownImage="button-down.gif";var VSA_default_scrollStep=5;var VSA_default_wheelSensitivity=10;var VSA_default_scrollbarPosition='right';//'left','right','inline';var VSA_default_scrollButtonHeight=11;var VSA_default_scrollbarWidth=20;var VSA_resizeTimer=2000;if(window.addEventListener)window.addEventListener("load",VSA_initScrollbars,false);else if(window.attachEvent)window.attachEvent("onload",VSA_initScrollbars);function VSA_initScrollbars() {var scrollElements=VSA_getElements("scrollable","DIV",document,"class");for (var i=0;i<scrollElements.length;i++) {VSA_scrollAreas[i]=new ScrollArea(i,scrollElements[i]);}}// Function to reset scroll on some specific area/container due to Ajax postback or some content update// Parameter:Container ID (string)function VSA_initScrollbarsOnArea(scrollableAreaId) {// if($.browser.msie) {var nl=document.getElementsByTagName("DIV");var j=0;for (var i=0;i<nl.length;i++) {if(nl.item(i).className.indexOf("scrollable")!=-1) {if(nl.item(i).id==scrollableAreaId) {VSA_scrollAreas[i]=new ScrollArea(i,document.getElementById(scrollableAreaId));}}}// }else{//  for (var i=0;i<VSA_scrollAreas.length;i++) {//   if(VSA_scrollAreas[i].element.id==scrollableAreaId) {//    VSA_scrollAreas[i]=new ScrollArea(i,document.getElementById(scrollableAreaId));//   }//  }// }}function ScrollArea(index,elem) //constructor{this.index=index;this.element=elem;var attr=this.element.getAttribute("imagesPath");this.imagesPath=attr ? attr:VSA_default_imagesPath;attr=this.element.getAttribute("btnUpImage");this.btnUpImage=attr ? attr:VSA_default_btnUpImage;attr=this.element.getAttribute("btnDownImage");this.btnDownImage=attr ? attr:VSA_default_btnDownImage;attr=Number(this.element.getAttribute("scrollStep"));this.scrollStep=attr ? attr:VSA_default_scrollStep;attr=Number(this.element.getAttribute("wheelSensitivity"));this.wheelSensitivity=attr ? attr:VSA_default_wheelSensitivity;attr=this.element.getAttribute("scrollbarPosition");this.scrollbarPosition=attr ? attr:VSA_default_scrollbarPosition;attr=this.element.getAttribute("scrollButtonHeight");this.scrollButtonHeight=attr ? attr:VSA_default_scrollButtonHeight;attr=this.element.getAttribute("scrollbarWidth");this.scrollbarWidth=attr ? attr:VSA_default_scrollbarWidth;this.scrolling=false;this.iOffsetY=0;this.scrollHeight=0;this.scrollContent=null;this.scrollbar=null;this.scrollup=null;this.scrolldown=null;this.scrollslider=null;this.scroll=null;this.enableScrollbar=false;this.scrollFactor=1;this.scrollingLimit=0;this.topPosition=0;//functions declarationthis.init=VSA_init;this.scrollUp=VSA_scrollUp;this.scrollDown=VSA_scrollDown;this.moveTo=moveTo;this.createScrollBar=VSA_createScrollBar;this.scrollIt=VSA_scrollIt;this.init();}function VSA_init() {this.scrollContent=document.createElement("DIV");this.scrollContent.style.position="absolute";this.scrollContent.innerHTML=this.element.innerHTML;this.scrollContent.style.overflow="hidden";this.scrollContent.style.width=this.element.offsetWidth + "px";this.scrollContent.style.height=this.element.offsetHeight + "px";//this.scrollContent.style.width=100 + "px";//this.scrollContent.style.height=100 + "px";this.element.innerHTML="";this.element.style.overflow="hidden";this.element.style.display="block";this.element.style.visibility="visible";this.element.style.position="relative";this.element.appendChild(this.scrollContent);this.scrollContent.className='scroll-content';this.element.index=this.index;this.element.over=false;var _this=this;this.element.onmouseover=function() {_this.element.over=true;};this.element.onmouseout=function() {_this.element.over=false;}if(document.all) {this.element.onscroll=VSA_handleOnScroll;this.element.onresize=VSA_handleResize;}else {window.onresize=VSA_handleResize;}this.createScrollBar();if(window.addEventListener)/** DOMMouseScroll is for mozilla. */this.element.addEventListener('DOMMouseScroll',VSA_handleMouseWheel,false);/** IE/Opera. */this.element.onmousewheel=document.onmousewheel=VSA_handleMouseWheel;}function VSA_createScrollBar() {if(this.scrollbar!=null) {this.element.removeChild(this.scrollbar);this.scrollbar=null;}if(this.scrollContent.offsetHeight==0) // the scrollable content is in an accordionthis.enableScrollbar=true;else if(this.scrollContent.scrollHeight<=this.scrollContent.offsetHeight)this.enableScrollbar=false;else if(this.element.offsetHeight>2 * this.scrollButtonHeight)this.enableScrollbar=true;elsethis.enableScrollbar=false;if(this.scrollContent.scrollHeight - Math.abs(this.scrollContent.scrollTop)<this.element.offsetHeight)this.scrollContent.style.top=0;if(this.enableScrollbar) {this.scrollbar=document.createElement("DIV");this.element.appendChild(this.scrollbar);this.scrollbar.style.position="absolute";this.scrollbar.style.top="0px";this.scrollbar.style.height=this.element.offsetHeight + "px";this.scrollbar.style.width=this.scrollbarWidth + "px";this.scrollbar.className='vscroll-bar';if(this.scrollbarWidth!=this.scrollbar.offsetWidth) {this.scrollbarWidth=this.scrollbar.offsetHeight;}this.scrollbarWidth=this.scrollbar.offsetWidth;if(this.scrollbarPosition=='left') {this.scrollContent.style.left=this.scrollbarWidth + 5 + "px";this.scrollContent.style.width=this.element.offsetWidth - this.scrollbarWidth - 5 + "px";}else if(this.scrollbarPosition=='right') {this.scrollbar.style.left=this.element.offsetWidth - this.scrollbarWidth + "px";this.scrollContent.style.width="216px";var myWidth=this.element.offsetWidth - this.scrollbarWidth - 5;if(myWidth>0) {this.scrollContent.style.width=this.element.offsetWidth - this.scrollbarWidth - 5 + "px";}}//create scroll up buttonthis.scrollup=document.createElement("DIV");this.scrollup.index=this.index;this.scrollup.onmousedown=VSA_handleBtnUpMouseDown;this.scrollup.onmouseup=VSA_handleBtnUpMouseUp;this.scrollup.onmouseout=VSA_handleBtnUpMouseOut;this.scrollup.style.position="absolute";this.scrollup.style.top="0px";this.scrollup.style.left="0px";this.scrollup.style.height=this.scrollButtonHeight + "px";this.scrollup.style.width=this.scrollbarWidth + "px";this.scrollup.innerHTML='<img src="' + this.imagesPath + '/' + this.btnUpImage + '" border="0"/>';this.scrollbar.appendChild(this.scrollup);this.scrollup.className='vscroll-up';if(this.scrollButtonHeight!=this.scrollup.offsetHeight) {this.scrollButtonHeight=this.scrollup.offsetHeight;}//create scroll down buttonthis.scrolldown=document.createElement("DIV");this.scrolldown.index=this.index;this.scrolldown.onmousedown=VSA_handleBtnDownMouseDown;this.scrolldown.onmouseup=VSA_handleBtnDownMouseUp;this.scrolldown.onmouseout=VSA_handleBtnDownMouseOut;this.scrolldown.style.position="absolute";this.scrolldown.style.left="0px";this.scrolldown.style.top=this.scrollbar.offsetHeight - this.scrollButtonHeight + "px";this.scrolldown.style.width=this.scrollbarWidth + "px";this.scrolldown.innerHTML='<img src="' + this.imagesPath + '/' + this.btnDownImage + '" border="0"/>';this.scrollbar.appendChild(this.scrolldown);this.scrolldown.className='vscroll-down';//create scrollthis.scroll=document.createElement("DIV");this.scroll.index=this.index;this.scroll.style.position="absolute";this.scroll.style.zIndex=0;this.scroll.style.textAlign="center";this.scroll.style.top=this.scrollButtonHeight + "px";this.scroll.style.left="0px";this.scroll.style.width=this.scrollbarWidth + "px";var h=this.scrollbar.offsetHeight - 2 * this.scrollButtonHeight;this.scroll.style.height=((h>0) ? h:0) + "px";this.scroll.innerHTML='';this.scroll.onclick=VSA_handleScrollbarClick;this.scrollbar.appendChild(this.scroll);this.scroll.style.overflow="hidden";this.scroll.className="vscroll-line";//create sliderthis.scrollslider=document.createElement("DIV");this.scrollslider.index=this.index;this.scrollslider.style.position="absolute";this.scrollslider.style.zIndex=90;this.scrollslider.style.textAlign="center";this.scrollslider.innerHTML='<div id="scrollslider' + this.index + '" style="padding:0;margin:0;"><div class="scroll-bar-top"></div><div class="scroll-bar-bottom"></div></div>';this.scrollbar.appendChild(this.scrollslider);this.subscrollslider=document.getElementById("scrollslider" + this.index);this.subscrollslider.style.height="290px";var myHeight=Math.round((this.scrollContent.offsetHeight / this.scrollContent.scrollHeight) * (this.scrollbar.offsetHeight - 2 * this.scrollButtonHeight))if(myHeight>0) {this.subscrollslider.style.height=Math.round((this.scrollContent.offsetHeight / this.scrollContent.scrollHeight) * (this.scrollbar.offsetHeight - 2 * this.scrollButtonHeight)) + "px";}this.scrollslider.className="vscroll-slider";this.scrollHeight=this.scrollbar.offsetHeight - 2 * this.scrollButtonHeight - this.scrollslider.offsetHeight;this.scrollFactor=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight) / this.scrollHeight;this.topPosition=getRealTop(this.scrollbar) + this.scrollButtonHeight;/* this.scrollbarHeight=this.scrollbar.offsetHeight - 2*this.scrollButtonHeight - this.scrollslider.offsetHeight;*/this.scrollslider.style.top=/* 1 / this.scrollFactor * Math.abs(this.scrollContent.offsetTop) +*/this.scrollButtonHeight + "px";this.scrollslider.style.left="0px";this.scrollslider.style.width="100%";this.scrollslider.onmousedown=VSA_handleSliderMouseDown;if(document.all)this.scrollslider.onmouseup=VSA_handleSliderMouseUp;}elsethis.scrollContent.style.width=this.element.offsetWidth + "px";}function VSA_handleBtnUpMouseDown() {var sa=VSA_scrollAreas[this.index];sa.scrolling=true;sa.scrollUp();}function VSA_handleBtnUpMouseUp() {VSA_scrollAreas[this.index].scrolling=false;}function VSA_handleBtnUpMouseOut() {VSA_scrollAreas[this.index].scrolling=false;}function VSA_handleBtnDownMouseDown() {var sa=VSA_scrollAreas[this.index];sa.scrolling=true;sa.scrollDown();}function VSA_handleBtnDownMouseUp() {VSA_scrollAreas[this.index].scrolling=false;}function VSA_handleBtnDownMouseOut() {VSA_scrollAreas[this.index].scrolling=false;}function VSA_scrollIt() {this.scrollContent.scrollTop=this.scrollFactor * ((this.scrollslider.offsetTop + this.scrollslider.offsetHeight / 2) - this.scrollButtonHeight - this.scrollslider.offsetHeight / 2);}function VSA_scrollUp() {if(this.scrollingLimit>0) {this.scrollingLimit--;if(this.scrollingLimit==0) this.scrolling=false;}if(!this.scrolling) return;if(this.scrollContent.scrollTop - this.scrollStep>0) {this.scrollContent.scrollTop -= this.scrollStep;this.scrollslider.style.top=1 / this.scrollFactor * Math.abs(this.scrollContent.scrollTop) + this.scrollButtonHeight + "px";}else {this.scrollContent.scrollTop="0";this.scrollslider.style.top=this.scrollButtonHeight + "px";return;}setTimeout("VSA_Ext_scrollUp(" + this.index + ")",30);}function VSA_Ext_scrollUp(index) {VSA_scrollAreas[index].scrollUp();}function VSA_scrollDown() {if(this.scrollingLimit>0) {this.scrollingLimit--;if(this.scrollingLimit==0) this.scrolling=false;}if(!this.scrolling) return;this.scrollContent.scrollTop += this.scrollStep;this.scrollslider.style.top=1 / this.scrollFactor * Math.abs(this.scrollContent.scrollTop) + this.scrollButtonHeight + "px";if(this.scrollContent.scrollTop>=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight)) {this.scrollContent.scrollTop=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight);this.scrollslider.style.top=this.scrollbar.offsetHeight - this.scrollButtonHeight - this.scrollslider.offsetHeight + "px";return;}setTimeout("VSA_Ext_scrollDown(" + this.index + ")",30);}function moveTo(scrollTop) {this.scrollContent.scrollTop=this.scrollContent.scrollTop + scrollTop;this.scrollslider.style.top=1 / this.scrollFactor * Math.abs(this.scrollContent.scrollTop) + this.scrollButtonHeight + "px";if(this.scrollContent.scrollTop>=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight)) {this.scrollContent.scrollTop=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight);this.scrollslider.style.top=this.scrollbar.offsetHeight - this.scrollButtonHeight - this.scrollslider.offsetHeight + "px";return;}/*var mode=0;if(scrollTop>0)mode=1;elsemode=2;while (this.scrollContent.scrollTop!=scrollTop){if(mode==1) {this.scrollContent.scrollTop += 100;if(this.scrollContent.scrollTop>(this.scrollContent.scrollTop + scrollTop)) {this.scrollContent.scrollTop += scrollTop;break;}}else {this.scrollContent.scrollTop += -100;if(this.scrollContent.scrollTop<(this.scrollContent.scrollTop + scrollTop)) {this.scrollContent.scrollTop += scrollTop;break;}}this.scrollslider.style.top=1 / this.scrollFactor * Math.abs(this.scrollContent.scrollTop) + this.scrollButtonHeight + "px";if(this.scrollContent.scrollTop>=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight)) {this.scrollContent.scrollTop=(this.scrollContent.scrollHeight - this.scrollContent.offsetHeight);this.scrollslider.style.top=this.scrollbar.offsetHeight - this.scrollButtonHeight - this.scrollslider.offsetHeight + "px";return;}}*/}function VSA_Ext_scrollDown(index) {VSA_scrollAreas[index].scrollDown();}function VSA_handleMouseMove(evt) {var sa=VSA_scrollAreas[((document.all&&!window.opera) ? this.index:document.documentElement.scrollAreaIndex)];var posy=0;if(!evt) var evt=window.event;if(evt.pageY)posy=evt.pageY;else if(evt.clientY)posy=evt.clientY;if(document.all&&!window.opera) {posy += document.documentElement.scrollTop;}var iNewY=posy - sa.iOffsetY - sa.topPosition;iNewY += sa.scrollButtonHeight;if(iNewY<sa.scrollButtonHeight)iNewY=sa.scrollButtonHeight;if(iNewY>(sa.scrollbar.offsetHeight - sa.scrollButtonHeight) - sa.scrollslider.offsetHeight)iNewY=(sa.scrollbar.offsetHeight - sa.scrollButtonHeight) - sa.scrollslider.offsetHeight;sa.scrollslider.style.top=iNewY + "px";sa.scrollIt();}function VSA_handleSliderMouseDown(evt) {if(!(document.uniqueID&&document.compatMode&&!window.XMLHttpRequest)) {document.onselectstart=function() { return false;}document.onmousedown=function() { return false;}}var sa=VSA_scrollAreas[this.index];if(document.all&&!window.opera) {sa.scrollslider.setCapture()sa.iOffsetY=event.offsetY;sa.scrollslider.onmousemove=VSA_handleMouseMove;}else {if(window.opera) {sa.iOffsetY=event.offsetY;}else {sa.iOffsetY=evt.layerY;}document.documentElement.scrollAreaIndex=sa.index;document.documentElement.addEventListener("mousemove",VSA_handleMouseMove,true);document.documentElement.addEventListener("mouseup",VSA_handleSliderMouseUp,true);}return false;}function VSA_handleSliderMouseUp() {if(!(document.uniqueID&&document.compatMode&&!window.XMLHttpRequest)) {document.onmousedown=null;document.onselectstart=null;}if(document.all&&!window.opera) {var sa=VSA_scrollAreas[this.index];sa.scrollslider.onmousemove=null;sa.scrollslider.releaseCapture();sa.scrollIt();}else {var sa=VSA_scrollAreas[document.documentElement.scrollAreaIndex];document.documentElement.removeEventListener("mousemove",VSA_handleMouseMove,true);document.documentElement.removeEventListener("mouseup",VSA_handleSliderMouseUp,true);sa.scrollIt();}return false;}function VSA_handleResize() {if(VSA_resizeTimer) {clearTimeout(VSA_resizeTimer);VSA_resizeTimer=0;}VSA_resizeTimer=setTimeout("VSA_performResizeEvent()",100);}function VSA_performResizeEvent() {for (var i=0;i<VSA_scrollAreas.length;i++)VSA_scrollAreas[i].createScrollBar();}function VSA_handleMouseWheel(event) {if(this.index!=null) {var sa=VSA_scrollAreas[this.index];if(sa.scrollbar==null) return;sa.scrolling=true;sa.scrollingLimit=sa.wheelSensitivity;var delta=0;if(!event) /* For IE. */event=window.event;if(event.wheelDelta) { /* IE/Opera. */delta=event.wheelDelta / 120;/*if(window.opera)delta=-delta;*/} else if(event.detail) { /** Mozilla case. */delta=-event.detail / 3;}if(delta&&sa.element.over) {if(delta>0)sa.scrollUp();elsesa.scrollDown();if(event.preventDefault)event.preventDefault();event.returnValue=false;}}}function VSA_handleSelectStart() {event.returnValue=false;}function VSA_handleScrollbarClick(evt) {var sa=VSA_scrollAreas[this.index];var offsetY=(document.all ? event.offsetY:evt.layerY);if(offsetY<(sa.scrollButtonHeight + sa.scrollslider.offsetHeight / 2))sa.scrollslider.style.top=sa.scrollButtonHeight + "px";else if(offsetY>(sa.scrollbar.offsetHeight - sa.scrollButtonHeight - sa.scrollslider.offsetHeight))sa.scrollslider.style.top=sa.scrollbar.offsetHeight - sa.scrollButtonHeight - sa.scrollslider.offsetHeight + "px";else {sa.scrollslider.style.top=offsetY + sa.scrollButtonHeight - sa.scrollslider.offsetHeight / 2 + "px";}sa.scrollIt();}function VSA_handleOnScroll() {//event.srcElement.doScroll("pageUp");}//--- common functions ----function VSA_getElements(attrValue,tagName,ownerNode,attrName) //get Elements By Attribute Name{if(!tagName) tagName="*";if(!ownerNode) ownerNode=document;if(!attrName) attrName="name";var result=[];var nl=ownerNode.getElementsByTagName(tagName);for (var i=0;i<nl.length;i++) {// if(nl.item(i).getAttribute(attrName)==attrValue)// result.push(nl.item(i));if(nl.item(i).className.indexOf(attrValue)!=-1)result.push(nl.item(i));}return result;}function getRealTop(elem) {var nTop=0;if(elem) {do {nTop += elem.offsetTop - elem.scrollTop;elem=elem.offsetParent;}while (elem)}return nTop;}
/* jQuery Tools v1.2.5 - tooltip.js */(function(a){a.tools=a.tools||{version:"v1.2.5"},a.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:!1,cancelDefault:!0,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip",id:""},addEffect:function(a,c,d){b[a]=[c,d]}};var b={toggle:[function(a){var b=this.getConf(),c=this.getTip(),d=b.opacity;d<1&&c.css({opacity:d}),c.show(),a.call()},function(a){this.getTip().hide(),a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};function c(b,c,d){var e=d.relative?b.position().top:b.offset().top,f=d.relative?b.position().left:b.offset().left,g=d.position[0];e-=c.outerHeight()-d.offset[0],f+=b.outerWidth()+d.offset[1],/iPad/i.test(navigator.userAgent)&&(e-=a(window).scrollTop());var h=c.outerHeight()+b.outerHeight();g=="center"&&(e+=h/2),g=="bottom"&&(e+=h),g=d.position[1];var i=c.outerWidth()+b.outerWidth();g=="center"&&(f-=i/2),g=="left"&&(f-=i);return{top:e,left:f}}function d(d,e){var f=this,g=d.add(f),h,i=0,j=0,k=d.attr("title"),l=d.attr("data-tooltip"),m=b[e.effect],n,o=d.is(":input"),p=o&&d.is(":checkbox,:radio,select,:button,:submit"),q=d.attr("type"),r=e.events[q]||e.events[o?p?"widget":"input":"def"];if(!m)throw"Nonexistent effect \""+e.effect+"\"";r=r.split(/,\s*/);if(r.length!=2)throw"Tooltip:bad events configuration for "+q;d.bind(r[0],function(a){clearTimeout(i),e.predelay?j=setTimeout(function(){f.show(a)},e.predelay):f.show(a)}).bind(r[1],function(a){clearTimeout(j),e.delay?i=setTimeout(function(){f.hide(a)},e.delay):f.hide(a)}),k&&e.cancelDefault&&(d.removeAttr("title"),d.data("title",k)),a.extend(f,{show:function(b){if(!h){l?h=a(l):e.tip?h=a(e.tip).eq(0):k?h=a(e.layout).addClass(e.tipClass).attr('id',e.id).appendTo(document.body).hide().append(k):(h=d.next(),h.length||(h=d.parent().next()));if(!h.length)throw"Cannot find tooltip for "+d}if(f.isShown())return f;h.stop(!0,!0);var o=c(d,h,e);e.tip&&h.html(d.data("title")),b=b||a.Event(),b.type="onBeforeShow",g.trigger(b,[o]);if(b.isDefaultPrevented())return f;o=c(d,h,e),h.css({position:"absolute",top:o.top,left:o.left}),n=!0,m[0].call(f,function(){b.type="onShow",n="full",g.trigger(b)});var p=e.events.tooltip.split(/,\s*/);h.data("__set")||(h.bind(p[0],function(){clearTimeout(i),clearTimeout(j)}),p[1]&&!d.is("input:not(:checkbox,:radio),textarea")&&h.bind(p[1],function(a){a.relatedTarget!=d[0]&&d.trigger(r[1].split(" ")[0])}),h.data("__set",!0));return f},hide:function(c){if(!h||!f.isShown())return f;c=c||a.Event(),c.type="onBeforeHide",g.trigger(c);if(!c.isDefaultPrevented()){n=!1,b[e.effect][1].call(f,function(){c.type="onHide",g.trigger(c)});return f}},isShown:function(a){return a?n=="full":n},getConf:function(){return e},getTip:function(){return h},getTrigger:function(){return d}}),a.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}})}a.fn.tooltip=function(b){var c=this.data("tooltip");if(c)return c;b=a.extend(!0,{},a.tools.tooltip.conf,b),typeof b.position=="string"&&(b.position=b.position.split(/,?\s/)),this.each(function(){c=new d(a(this),b),a(this).data("tooltip",c)});return b.api?c:this}})(jQuery);
/** Slides,A Slideshow Plugin for jQuery* Intructions:http://slidesjs.com* By:Nathan Searles,http://nathansearles.com* Version:1.1.8* Updated:June 1st,2011** Licensed under the Apache License,Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing,software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/(function(A){A.fn.slides=function(B){B=A.extend({},A.fn.slides.option,B);return this.each(function(){A("."+B.container,A(this)).children().wrapAll('<div class="slides_control"/>');var V=A(this),J=A(".slides_control",V),Z=J.children().size(),Q=J.children().outerWidth(),M=J.children().outerHeight(),D=B.start-1,L=B.effect.indexOf(",")<0?B.effect:B.effect.replace(" ","").split(",")[0],S=B.effect.indexOf(",")<0?L:B.effect.replace(" ","").split(",")[1],O=0,N=0,C=0,P=0,U,H,I,X,W,T,K,F;function E(c,b,a){if(!H&&U){H=true;B.animationStart(P+1);switch(c){case"next":N=P;O=P+1;O=Z===O?0:O;X=Q*2;c=-Q*2;P=O;break;case"prev":N=P;O=P-1;O=O===-1?Z-1:O;X=0;c=0;P=O;break;case"pagination":O=parseInt(a,10);N=A("."+B.paginationClass+" li."+B.currentClass+" a",V).attr("href").match("[^#/]+$");if(O>N){X=Q*2;c=-Q*2;}else{X=0;c=0;}P=O;break;}if(b==="fade"){if(B.crossfade){J.children(":eq("+O+")",V).css({zIndex:10}).fadeIn(B.fadeSpeed,B.fadeEasing,function(){if(B.autoHeight){J.animate({height:J.children(":eq("+O+")",V).outerHeight()},B.autoHeightSpeed,function(){J.children(":eq("+N+")",V).css({display:"none",zIndex:0});J.children(":eq("+O+")",V).css({zIndex:0});B.animationComplete(O+1);H=false;});}else{J.children(":eq("+N+")",V).css({display:"none",zIndex:0});J.children(":eq("+O+")",V).css({zIndex:0});B.animationComplete(O+1);H=false;}});}else{J.children(":eq("+N+")",V).fadeOut(B.fadeSpeed,B.fadeEasing,function(){if(B.autoHeight){J.animate({height:J.children(":eq("+O+")",V).outerHeight()},B.autoHeightSpeed,function(){J.children(":eq("+O+")",V).fadeIn(B.fadeSpeed,B.fadeEasing);});}else{J.children(":eq("+O+")",V).fadeIn(B.fadeSpeed,B.fadeEasing,function(){if(A.browser.msie){A(this).get(0).style.removeAttribute("filter");}});}B.animationComplete(O+1);H=false;});}}else{J.children(":eq("+O+")").css({left:X,display:"block"});if(B.autoHeight){J.animate({left:c,height:J.children(":eq("+O+")").outerHeight()},B.slideSpeed,B.slideEasing,function(){J.css({left:-Q});J.children(":eq("+O+")").css({left:Q,zIndex:5});J.children(":eq("+N+")").css({left:Q,display:"none",zIndex:0});B.animationComplete(O+1);H=false;});}else{J.animate({left:c},B.slideSpeed,B.slideEasing,function(){J.css({left:-Q});J.children(":eq("+O+")").css({left:Q,zIndex:5});J.children(":eq("+N+")").css({left:Q,display:"none",zIndex:0});B.animationComplete(O+1);H=false;});}}if(B.pagination){A("."+B.paginationClass+" li."+B.currentClass,V).removeClass(B.currentClass);A("."+B.paginationClass+" li:eq("+O+")",V).addClass(B.currentClass);}}}function R(){clearInterval(V.data("interval"));}function G(){if(B.pause){clearTimeout(V.data("pause"));clearInterval(V.data("interval"));K=setTimeout(function(){clearTimeout(V.data("pause"));F=setInterval(function(){E("next",L);},B.play);V.data("interval",F);},B.pause);V.data("pause",K);}else{R();}}if(Z<2){return;}if(D<0){D=0;}if(D>Z){D=Z-1;}if(B.start){P=D;}if(B.randomize){J.randomize();}A("."+B.container,V).css({overflow:"hidden",position:"relative"});J.children().css({position:"absolute",top:0,left:J.children().outerWidth(),zIndex:0,display:"none"});J.css({position:"relative",width:(Q*3),height:M,left:-Q});A("."+B.container,V).css({display:"block"});if(B.autoHeight){J.children().css({height:"auto"});J.animate({height:J.children(":eq("+D+")").outerHeight()},B.autoHeightSpeed);}if(B.preload&&J.find("img:eq("+D+")").length){A("."+B.container,V).css({background:"url("+B.preloadImage+") no-repeat 50% 50%"});var Y=J.find("img:eq("+D+")").attr("src")+"?"+(new Date()).getTime();if(A("img",V).parent().attr("class")!="slides_control"){T=J.children(":eq(0)")[0].tagName.toLowerCase();}else{T=J.find("img:eq("+D+")");}J.find("img:eq("+D+")").attr("src",Y).load(function(){J.find(T+":eq("+D+")").fadeIn(B.fadeSpeed,B.fadeEasing,function(){A(this).css({zIndex:5});A("."+B.container,V).css({background:""});U=true;B.slidesLoaded();});});}else{J.children(":eq("+D+")").fadeIn(B.fadeSpeed,B.fadeEasing,function(){U=true;B.slidesLoaded();});}if(B.bigTarget){J.children().css({cursor:"pointer"});J.children().click(function(){E("next",L);return false;});}if(B.hoverPause&&B.play){J.bind("mouseover",function(){R();});J.bind("mouseleave",function(){G();});}if(B.generateNextPrev){A("."+B.container,V).after('<a href="#" class="'+B.prev+'">Prev</a>');A("."+B.prev,V).after('<a href="#" class="'+B.next+'">Next</a>');}A("."+B.next,V).click(function(a){a.preventDefault();if(B.play){G();}E("next",L);});A("."+B.prev,V).click(function(a){a.preventDefault();if(B.play){G();}E("prev",L);});if(B.generatePagination){if(B.prependPagination){V.prepend("<ul class="+B.paginationClass+"></ul>");}else{V.append("<ul class="+B.paginationClass+"></ul>");}J.children().each(function(){A("."+B.paginationClass,V).append('<li><a href="#'+C+'">'+(C+1)+"</a></li>");C++;});}else{A("."+B.paginationClass+" li a",V).each(function(){A(this).attr("href","#"+C);C++;});}A("."+B.paginationClass+" li:eq("+D+")",V).addClass(B.currentClass);A("."+B.paginationClass+" li a",V).click(function(){if(B.play){G();}I=A(this).attr("href").match("[^#/]+$");if(P!=I){E("pagination",S,I);}return false;});A("a.link",V).click(function(){if(B.play){G();}I=A(this).attr("href").match("[^#/]+$")-1;if(P!=I){E("pagination",S,I);}return false;});if(B.play){F=setInterval(function(){E("next",L);},B.play);V.data("interval",F);}});};A.fn.slides.option={preload:false,preloadImage:"/img/loading.gif",container:"slides_container",generateNextPrev:false,next:"next",prev:"prev",pagination:true,generatePagination:true,prependPagination:false,paginationClass:"pagination",currentClass:"current",fadeSpeed:350,fadeEasing:"",slideSpeed:350,slideEasing:"",start:1,effect:"slide",crossfade:false,randomize:false,play:0,pause:0,hoverPause:false,autoHeight:false,autoHeightSpeed:350,bigTarget:false,animationStart:function(){},animationComplete:function(){},slidesLoaded:function(){}};A.fn.randomize=function(C){function B(){return(Math.round(Math.random())-0.5);}return(A(this).each(function(){var F=A(this);var E=F.children();var D=E.length;if(D>1){E.hide();var G=[];for(i=0;i<D;i++){G[G.length]=i;}G=G.sort(B);A.each(G,function(I,H){var K=E.eq(H);var J=K.clone(true);J.show().appendTo(F);if(C!==undefined){C(K,J);}K.remove();});}}));};})(jQuery);
function querySt(ji) {hu=window.location.search.substring(1);gy=hu.split("&");for (i=0;i<gy.length;i++) {ft=gy[i].split("=");if(ft[0]==ji) {return ji+'='+ft[1];}}}function loadDetail(updateDivName,updatePageURL){$(updateDivName).innerHTML='<img src="/imgml/body/loading.gif"/>';// $('input #updateDivName').Value=updateDivName;// $('input #updatePageName').Value=updatePageURL;// new Ajax.Updater({success:updateDivName},updatePageURL + '?' + querySt('q') + '&' + querySt('start'),{method:'get',evalScripts:true,asynchronous:true});updateDetail('news',querySt('q'),'','0',updateDivName,updatePageURL)}function updateDetail(searchType,q,sort,start,updateDivName,updatePageURL){$(updateDivName).innerHTML='<img src="/imgml/body/loading.gif"/>';var sorting=(sort==1) ? '&sort=' + sort:'';if(searchType=='photo') {new Ajax.Updater({ success:updateDivName },updatePageURL + '?q=' + q + sorting + '&start=' + start,{ method:'get',evalScripts:true,asynchronous:true });}if(searchType=='news') {new Ajax.Updater({ success:updateDivName },updatePageURL + '?q=' + q + sorting + '&start=' + start,{ method:'get',evalScripts:true,asynchronous:true });}// if(searchType=='all')// {//  new Ajax.Updater({success:'searchPhotoResultsDiv'},'<xsl:value-of select="//parameter[@name='SourceMasterPagePhoto']" />?q=' + q +<xsl:text disable-output-escaping="yes"><![CDATA['&start=']]></xsl:text>+ start,{method:'get',evalScripts:true,asynchronous:true});//  new Ajax.Updater({success:'searchNewsResultsDiv'},'<xsl:value-of select="//parameter[@name='SourceMasterPageNews']" />?q=' + q +<xsl:text disable-output-escaping="yes"><![CDATA['&start=']]></xsl:text>+ start,{method:'get',evalScripts:true,asynchronous:true});// }}


