
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - mootools.js - */
// http://www.gagrows.com/portal_javascripts/mootools.js?original=1
var Class=function(properties){var klass=function(){if(this.initialize&&arguments[0]!='noinit') return this.initialize.apply(this,arguments);else return this};for(var property in this) klass[property]=this[property];klass.prototype=properties;return klass};Class.empty=function(){};Class.prototype={extend: function(properties){var pr0t0typ3=new this('noinit');var parentize=function(previous,current){if(!previous.apply||!current.apply) return false;return function(){this.parent=previous;return current.apply(this,arguments)}};for(var property in properties){var previous=pr0t0typ3[property];var current=properties[property];if(previous&&previous!=current) current=parentize(previous,current)||current;pr0t0typ3[property]=current}
return new Class(pr0t0typ3)},implement: function(properties){for(var property in properties) this.prototype[property]=properties[property]}};Object.extend=function(){var args=arguments;args=(args[1])?[args[0],args[1]]:[this,args[0]];for(var property in args[1]) args[0][property]=args[1][property];return args[0]};Object.Native=function(){for(var i=0;i<arguments.length;i++) arguments[i].extend=Class.prototype.implement};new Object.Native(Function,Array,String,Number,Class);if(typeof HTMLElement=='undefined'){var HTMLElement=Class.empty;HTMLElement.prototype={}}
function $type(obj){if(obj===null||obj===undefined) return false;var type=typeof obj;if(type=='object'){if(obj instanceof HTMLElement) return 'element';if(obj instanceof Array) return 'array';if(obj.nodeName){switch(obj.nodeType){case 1:return 'element';case 3:return obj.nodeValue.test('\\S')?'textnode':'whitespace'}}}
return type};
function $chk(obj){return!!(obj||obj===0)};
function $pick(obj,picked){return($type(obj))?obj:picked};
function $random(min,max){return Math.floor(Math.random() *(max-min+1)+min)};
function $clear(timer){clearTimeout(timer);clearInterval(timer);return null};if(window.ActiveXObject) window.ie=window[window.XMLHttpRequest?'ie7':'ie6']=true;else if(document.childNodes&&!document.all&&!navigator.taintEnabled) window.khtml=true;else if(document.getBoxObjectFor!=null) window.gecko=true;Array.prototype.forEach=Array.prototype.forEach|| function(fn,bind){for(var i=0;i<this.length;i++) fn.call(bind,this[i],i,this)};Array.prototype.map=Array.prototype.map|| function(fn,bind){var results=[];for(var i=0;i<this.length;i++) results[i]=fn.call(bind,this[i],i,this);return results};Array.prototype.every=Array.prototype.every|| function(fn,bind){for(var i=0;i<this.length;i++){if(!fn.call(bind,this[i],i,this)) return false}
return true};Array.prototype.some=Array.prototype.some|| function(fn,bind){for(var i=0;i<this.length;i++){if(fn.call(bind,this[i],i,this)) return true}
return false};Array.prototype.indexOf=Array.prototype.indexOf|| function(item,from){from=from||0;if(from<0) from=Math.max(0,this.length+from);while(from<this.length){if(this[from]===item) return from;from++}
return-1};Array.extend({each:Array.prototype.forEach,copy: function(){var newArray=[];for(var i=0;i<this.length;i++) newArray[i]=this[i];return newArray},remove: function(item){var i=0;while(i<this.length){if(this[i]==item) this.splice(i,1);else i++}
return this},test: function(item,from){return this.indexOf(item,from)!=-1},extend: function(newArray){for(var i=0;i<newArray.length;i++) this.push(newArray[i]);return this},associate: function(keys){var obj={},length=Math.min(this.length,keys.length);for(var i=0;i<length;i++) obj[keys[i]]=this[i];return obj}});
function $A(array){return Array.prototype.copy.call(array)};
function $each(iterable,fn,bind){return Array.prototype.forEach.call(iterable,fn,bind)};String.extend({test: function(regex,params){return new RegExp(regex,params).test(this)},toInt: function(){return parseInt(this)},toFloat: function(){return parseFloat(this)},camelCase: function(){return this.replace(/-\D/g, function(match){return match.charAt(1).toUpperCase()})},hyphenate: function(){return this.replace(/\w[A-Z]/g, function(match){return(match.charAt(0)+'-'+match.charAt(1).toLowerCase())})},capitalize: function(){return this.toLowerCase().replace(/\b[a-z]/g, function(match){return match.toUpperCase()})},trim: function(){return this.replace(/^\s+|\s+$/g,'')},clean: function(){return this.replace(/\s{2,}/g,' ').trim()},rgbToHex: function(array){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHex(array):false},hexToRgb: function(array){var hex=this.match('^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$');return(hex)?hex.hexToRgb(array):false}});Array.extend({rgbToHex: function(array){if(this.length<3) return false;if(this[3]&&this[3]==0) return 'transparent';var hex=[];for(var i=0;i<3;i++){var bit=(this[i]-0).toString(16);hex.push(bit.length==1?'0'+bit:bit)}
return array?hex:'#'+hex.join('')},hexToRgb: function(array){if(this.length!=4) return false;var rgb=[];for(var i=1;i<4;i++){if(this[i].length==1) this[i]+=this[i];rgb.push(parseInt(this[i],16))}
return array?rgb:'rgb('+rgb.join(',')+')'}});Number.extend({toInt: function(){return parseInt(this)},toFloat: function(){return parseFloat(this)}});Function.extend({create: function(options){var fn=this;options=Object.extend({'bind':fn,'event':false,'arguments':null,'delay':false,'periodical':false,'attempt':false},options||{});if(options.arguments!=null&&typeof options.arguments!='undefined'&&!(options.arguments instanceof Array))
options.arguments=[options.arguments];return function(event){var args=options.arguments||arguments;if(options.event){event=(options.event===true)?event||window.event:new options.event(event);args=[event].concat(args)}
var returns=function(){return fn.apply(options.bind,args)};if(options.delay) return setTimeout(returns,options.delay);if(options.periodical) return setInterval(returns,options.periodical);if(options.attempt){try{var result=returns()} catch(err){result=err} finally{return result}} else return returns()}},pass: function(args,bind){return this.create({'arguments':args,'bind':bind})},attempt: function(args,bind){return this.create({'arguments':args,'bind':bind,'attempt':true})()},bind: function(bind,args){return this.create({'bind':bind,'arguments':args})},bindAsEventListener: function(bind,args){return this.create({'bind':bind,'event':true,'arguments':args})},delay: function(ms,bind,args){return this.create({'delay':ms,'bind':bind,'arguments':args})()},periodical: function(ms,bind,args){return this.create({'periodical':ms,'bind':bind,'arguments':args})()}});var Element=new Class({initialize: function(el){if($type(el)=='string') el=document.createElement(el);return $(el)}});
function $(el){if(!el) return false;if(el._element_extended_||[window,document].test(el)) return el;if($type(el)=='string') el=document.getElementById(el);if($type(el)!='element') return false;if(['object','embed'].test(el.tagName.toLowerCase())||el.extend) return el;el._element_extended_=true;Garbage.collect(el);el.extend=Object.extend;if(!(el instanceof HTMLElement)) el.extend(Element.prototype);return el};var Elements=new Class({});new Object.Native(Elements);document.getElementsBySelector=document.getElementsByTagName;
function $$(){if(!arguments) return false;if(arguments.length==1){if(!arguments[0]) return false;if(arguments[0]._elements_extended_) return arguments[0]}
var elements=[];$each(arguments, function(selector){switch($type(selector)){case 'element':elements.push($(selector));break;case 'string':selector=document.getElementsBySelector(selector);default:if(selector.length){$each(selector, function(el){if($(el)) elements.push(el)})}}});elements._elements_extended_=true;return Object.extend(elements,new Elements)};Elements.Multi=function(property){return function(){var args=arguments;var items=[];var elements=true;$each(this, function(el){var returns=el[property].apply(el,args);if($type(returns)!='element') elements=false;items.push(returns)});if(elements) items=$$(items);return items}};Element.extend=function(properties){for(var property in properties){HTMLElement.prototype[property]=properties[property];Element.prototype[property]=properties[property];Elements.prototype[property]=Elements.Multi(property)}};Element.extend({inject: function(el,where){el=$(el)||new Element(el);switch(where){case "before":$(el.parentNode).insertBefore(this,el);break;case "after":if(!el.getNext()) $(el.parentNode).appendChild(this);else $(el.parentNode).insertBefore(this,el.getNext());break;case "inside":el.appendChild(this)}
return this},injectBefore: function(el){return this.inject(el,'before')},injectAfter: function(el){return this.inject(el,'after')},injectInside: function(el){return this.inject(el,'inside')},adopt: function(el){this.appendChild($(el)||new Element(el));return this},remove: function(){this.parentNode.removeChild(this);return this},clone: function(contents){var el=this.cloneNode(contents!==false);return $(el)},replaceWith: function(el){el=$(el)||new Element(el);this.parentNode.replaceChild(el,this);return el},appendText: function(text){if(window.ie){switch(this.getTag()){case 'style':this.styleSheet.cssText=text;return this;case 'script':this.setProperty('text',text);return this}}
this.appendChild(document.createTextNode(text));return this},hasClass: function(className){return this.className.test('(?:^|\\s+)'+className+'(?:\\s+|$)')},addClass: function(className){if(!this.hasClass(className)) this.className=(this.className+' '+className).clean();return this},removeClass: function(className){if(this.hasClass(className)) this.className=this.className.replace(className,'').clean();return this},toggleClass: function(className){return this.hasClass(className)?this.removeClass(className):this.addClass(className)},setStyle: function(property,value){if(property=='opacity') this.setOpacity(parseFloat(value));else this.style[property.camelCase()]=(value.push)?value.rgbToHex():value;return this},setStyles: function(source){switch($type(source)){case 'object':for(var property in source) this.setStyle(property,source[property]);break;case 'string':if(window.ie) this.cssText=source;else this.setAttribute('style',source)}
return this},setOpacity: function(opacity){if(opacity==0){if(this.style.visibility!="hidden") this.style.visibility="hidden"} else{if(this.style.visibility!="visible") this.style.visibility="visible"}
if(!this.currentStyle||!this.currentStyle.hasLayout) this.style.zoom=1;if(window.ie) this.style.filter="alpha(opacity="+opacity*100+")";this.style.opacity=this.opacity=opacity;return this},getStyle: function(property){property=property.camelCase();var style=this.style[property]||false;if(!$chk(style)){if(property=='opacity') return $chk(this.opacity)?this.opacity:1;if(['margin','padding'].test(property)){return [this.getStyle(property+'-top')||0,this.getStyle(property+'-right')||0,this.getStyle(property+'-bottom')||0,this.getStyle(property+'-left')||0].join(' ')}
if(document.defaultView) style=document.defaultView.getComputedStyle(this,null).getPropertyValue(property.hyphenate());else if(this.currentStyle) style=this.currentStyle[property]}
return(style&&property.test('color','i')&&style.test('rgb'))?style.rgbToHex():style},addEvent: function(type,fn){this.events=this.events||{};this.events[type]=this.events[type]||{'keys':[],'values':[]};if(!this.events[type].keys.test(fn)){this.events[type].keys.push(fn);if(this.addEventListener){this.addEventListener((type=='mousewheel'&&window.gecko)?'DOMMouseScroll':type,fn,false)} else{fn=fn.bind(this);this.attachEvent('on'+type,fn);this.events[type].values.push(fn)}}
return this},addEvents: function(source){if(source){for(var type in source) this.addEvent(type,source[type])}
return this},removeEvent: function(type,fn){if(this.events&&this.events[type]){var pos=this.events[type].keys.indexOf(fn);if(pos==-1) return this;var key=this.events[type].keys.splice(pos,1)[0];if(this.removeEventListener){this.removeEventListener((type=='mousewheel'&&window.gecko)?'DOMMouseScroll':type,key,false)} else{this.detachEvent('on'+type,this.events[type].values.splice(pos,1)[0])}}
return this},removeEvents: function(type){if(this.events){if(type){if(this.events[type]){this.events[type].keys.each(function(fn){this.removeEvent(type,fn)},this);this.events[type]=null}} else{for(var evType in this.events) this.removeEvents(evType);this.events=null}}
return this},fireEvent: function(type,args){if(this.events&&this.events[type]){args=args||[];if($type(args)!='array') args=[args];this.events[type].keys.each(function(fn){fn.apply(this,args)},this)}},getBrother: function(what){var el=this[what+'Sibling'];while($type(el)=='whitespace') el=el[what+'Sibling'];return $(el)},getPrevious: function(){return this.getBrother('previous')},getNext: function(){return this.getBrother('next')},getFirst: function(){var el=this.firstChild;while($type(el)=='whitespace') el=el.nextSibling;return $(el)},getLast: function(){var el=this.lastChild;while($type(el)=='whitespace') el=el.previousSibling;return $(el)},getParent: function(){return $(this.parentNode)},getChildren: function(){return $$(this.childNodes)},setProperty: function(property,value){switch(property){case 'class':this.className=value;break;case 'style':this.setStyles(value);break;case 'name':if(window.ie6){var el=$(document.createElement('<'+this.getTag()+' name="'+value+'" />'));$each(this.attributes, function(attribute){if(attribute.name!='name') el.setProperty(attribute.name,attribute.value)});if(this.parentNode) this.replaceWith(el);return el}
default:this.setAttribute(property,value)}
return this},setProperties: function(source){for(var property in source) this.setProperty(property,source[property]);return this},setHTML: function(html){this.innerHTML=html;return this},getProperty: function(property){return(property=='class')?this.className:this.getAttribute(property)},getTag: function(){return this.tagName.toLowerCase()},getOffsets: function(){var el=this,offsetLeft=0,offsetTop=0;do{offsetLeft+=el.offsetLeft||0;offsetTop+=el.offsetTop||0;el=el.offsetParent} while(el);return{'x':offsetLeft,'y':offsetTop}},scrollTo: function(x,y){this.scrollLeft=x;this.scrollTop=y},getSize: function(){return{'scroll':{'x':this.scrollLeft,'y':this.scrollTop},'size':{'x':this.offsetWidth,'y':this.offsetHeight},'scrollSize':{'x':this.scrollWidth,'y':this.scrollHeight}}},getTop: function(){return this.getOffsets().y},getLeft: function(){return this.getOffsets().x},getPosition: function(){var offs=this.getOffsets();var obj={'width':this.offsetWidth,'height':this.offsetHeight,'left':offs.x,'top':offs.y};obj.right=obj.left+obj.width;obj.bottom=obj.top+obj.height;return obj},getValue: function(){switch(this.getTag()){case 'select':if(this.selectedIndex!=-1) return this.options[this.selectedIndex].value;break;case 'input':if(!(this.checked&&['checkbox','radio'].test(this.type))&&!['hidden','text','password'].test(this.type)) break;case 'textarea':return this.value}
return false}});var Window=window;window.addEvent=document.addEvent=Element.prototype.addEvent;window.removeEvent=document.removeEvent=Element.prototype.removeEvent;var Garbage={elements:[],collect: function(element){Garbage.elements.push(element)},trash: function(){window.removeEvent('unload',Garbage.trash);Garbage.elements.each(function(el){el.removeEvents();for(var p in Element.prototype) HTMLElement[p]=window[p]=document[p]=el[p]=null;el.extend=null})}};window.addEvent('unload',Garbage.trash);var Event=new Class({initialize: function(event){this.event=event||window.event;this.type=this.event.type;this.target=this.event.target||this.event.srcElement;if(this.target.nodeType==3) this.target=this.target.parentNode;this.shift=this.event.shiftKey;this.control=this.event.ctrlKey;this.alt=this.event.altKey;this.meta=this.event.metaKey;if(['DOMMouseScroll','mousewheel'].test(this.type)){this.wheel=this.event.wheelDelta?(this.event.wheelDelta/ (window.opera ? -120 : 120)) : -(this.event.detail || 0) / 3} else if(this.type.test('key')){this.code=this.event.which||this.event.keyCode;for(var name in Event.keys){if(Event.keys[name]==this.code) var special=name}
this.key=special||String.fromCharCode(this.code).toLowerCase()} else if(this.type.test('mouse')||this.type=='click'){this.page={'x':this.event.pageX||this.event.clientX+document.documentElement.scrollLeft,'y':this.event.pageY||this.event.clientY+document.documentElement.scrollTop};this.client={'x':this.event.pageX?this.event.pageX-window.pageXOffset:this.event.clientX,'y':this.event.pageY?this.event.pageY-window.pageYOffset:this.event.clientY};this.rightClick=(this.event.which==3)||(this.event.button==2);switch(this.type){case 'mouseover':this.relatedTarget=this.event.relatedTarget||this.event.fromElement;break;case 'mouseout':this.relatedTarget=this.event.relatedTarget||this.event.toElement}}},stop: function(){this.stopPropagation();this.preventDefault();return this},stopPropagation: function(){if(this.event.stopPropagation) this.event.stopPropagation();else this.event.cancelBubble=true;return this},preventDefault: function(){if(this.event.preventDefault) this.event.preventDefault();else this.event.returnValue=false;return this}});Event.keys={'enter':13,'up':38,'down':40,'left':37,'right':39,'esc':27,'space':32,'backspace':8,'delete':46};Function.extend({bindWithEvent: function(bind,args){return this.create({'bind':bind,'arguments':args,'event':Event})}});var Chain=new Class({chain: function(fn){this.chains=this.chains||[];this.chains.push(fn);return this},callChain: function(){if(this.chains&&this.chains.length) this.chains.splice(0,1)[0].delay(10,this)},clearChain: function(){this.chains=[]}});var Events=new Class({addEvent: function(type,fn){if(fn!=Class.empty){this.events=this.events||{};this.events[type]=this.events[type]||[];if(!this.events[type].test(fn)) this.events[type].push(fn)}
return this},fireEvent: function(type,args,delay){if(this.events&&this.events[type]){this.events[type].each(function(fn){fn.create({'bind':this,'delay':delay,'arguments':args})()},this)}
return this},removeEvent: function(type,fn){if(this.events&&this.events[type]) this.events[type].remove(fn);return this}});var Options=new Class({setOptions: function(defaults,options){this.options=Object.extend(defaults,options);if(this.addEvent){for(var option in this.options){if(($type(this.options[option])=='function')&&option.test('^on[A-Z]')) this.addEvent(option,this.options[option])}}
return this}});
function $E(selector,filter){return($(filter)||document).getElement(selector)};
function $ES(selector,filter){return($(filter)||document).getElementsBySelector(selector)};Element.extend({getElements: function(selector){var filters=[];selector.clean().split(' ').each(function(sel,i){var param=sel.match('^(\\w*|\\*)(?:#([\\w_-]+)|\\.([\\w_-]+))?(?:\\[["\']?(\\w+)["\']?(?:([\\*\\^\\$]?=)["\']?(\\w*)["\']?)?\\])?$');if(!param) return;param[1]=param[1]||'*';if(i==0){if(param[2]){var el=this.getElementById(param[2]);if(!el||((param[1]!='*')&&(Element.prototype.getTag.call(el)!=param[1]))) return;filters=[el]} else{filters=$A(this.getElementsByTagName(param[1]))}} else{filters=Elements.prototype.filterByTagName.call(filters,param[1]);if(param[2]) filters=Elements.prototype.filterById.call(filters,param[2])}
if(param[3]) filters=Elements.prototype.filterByClassName.call(filters,param[3]);if(param[4]) filters=Elements.prototype.filterByAttribute.call(filters,param[4],param[6],param[5])},this);return $$(filters)},getElementById: function(id){var el=document.getElementById(id);if(!el) return false;for(var parent=el.parentNode;parent!=this;parent=parent.parentNode){if(!parent) return false}
return el},getElement: function(selector){return this.getElementsBySelector(selector)[0]},getElementsBySelector: function(selector){var els=[];selector.split(',').each(function(sel){els.extend(this.getElements(sel))},this);return $$(els)}});document.extend=Object.extend;document.extend({getElementsByClassName: function(className){return document.getElements('.'+className)},getElement:Element.prototype.getElement,getElements:Element.prototype.getElements,getElementsBySelector:Element.prototype.getElementsBySelector});Elements.extend({filterById: function(id,tag){var found=[];this.each(function(el){if(el.id==id) found.push(el)});return found},filterByClassName: function(className){var found=[];this.each(function(el){if(Element.prototype.hasClass.call(el,className)) found.push(el)});return found},filterByTagName: function(tagName){var found=[];this.each(function(el){found.extend(el.getElementsByTagName(tagName))});return found},filterByAttribute: function(name,value,operator){var found=[];this.each(function(el){var att=el.getAttribute(name);if(!att) return found;if(!operator) return found.push(el);switch(operator){case '*=':if(att.test(value)) found.push(el);break;case '=':if(att==value) found.push(el);break;case '^=':if(att.test('^'+value)) found.push(el);break;case '$=':if(att.test(value+'$')) found.push(el)}
return found});return found}});var Hash=new Class({length:0,initialize: function(obj){this.obj={};for(var property in obj){this.obj[property]=obj[property];this.length++}},get: function(key){return this.obj[key]},set: function(key,value){if(value==null) return false;if(this.obj[key]==undefined) this.length++;this.obj[key]=value;return this},remove: function(key){if(this.obj[key]==undefined) return false;var obj={};this.length--;for(var property in this.obj){if(property!=key) obj[property]=this.obj[property]}
this.obj=obj;return this},each: function(fn,bind){for(var property in this.obj) fn.call(bind||this,property,this.obj[property])},extend: function(obj){this.initialize(Object.extend(this.obj,obj));return this},empty: function(){return(this.length==0)},keys: function(){var keys=[];for(var property in this.obj) keys.push(property);return keys},values: function(){var values=[];for(var property in this.obj) values.push(this.obj[property]);return values}});
function $H(obj){return new Hash(obj)};var Color=new Class({initialize: function(color){if(color.mix&&color.invert) return color;var rgb=(color.push)?color:color.hexToRgb(true);return Object.extend(rgb,Color.prototype)},mix: function(){var colors=$A(arguments);var alpha=50;if($type(colors[colors.length-1])=='number') alpha=colors.pop();var rgb=this.copy();colors.each(function(color){color=new Color(color);for(var i=0;i<3;i++) rgb[i]=Math.round((rgb[i]/ 100 * (100 - alpha)) + (color[i] / 100 * alpha))});return new Color(rgb)},invert: function(){var rgb=[];for(var i=0;i<3;i++) rgb.push(255-this[i]);return new Color(rgb)}});
function $C(color){return new Color(color)};window.extend=Object.extend;window.extend({disableImageCache: function(){if(this.ie6) try{document.execCommand("BackgroundImageCache",false,true)} catch(e){}},addEvent: function(type,fn){if(type=='domready'){if(this.loaded) fn();else if(!this.events||!this.events.domready){var domReady=function(){if(this.loaded) return;this.loaded=true;if(this.timer) this.timer=$clear(this.timer);Element.prototype.fireEvent.call(this,'domready');this.events.domready=null}.bind(this);if(document.readyState&&this.khtml){this.timer=function(){if(['loaded','complete'].test(document.readyState)) domReady()}.periodical(50)}
else if(document.readyState&&this.ie){document.write("<script id=ie_ready defer src=javascript:void(0)><\/script>");$('ie_ready').onreadystatechange=function(){if(this.readyState=='complete') domReady()}} else{this.addEvent("load",domReady);document.addEvent("DOMContentLoaded",domReady)}}}
Element.prototype.addEvent.call(this,type,fn);return this},onDomReady: function(init){return this.addEvent('domready',init)}});window.extend({getWidth: function(){if(this.khtml||this.opera) return this.innerWidth;else return document.documentElement.clientWidth||document.body.clientWidth},getHeight: function(){if(this.khtml||this.opera) return this.innerHeight;return document.documentElement.clientHeight||document.body.clientHeight},getScrollHeight: function(){return document.documentElement.scrollHeight},getScrollWidth: function(){return document.documentElement.scrollWidth},getScrollTop: function(){return this.pageYOffset||document.documentElement.scrollTop},getScrollLeft: function(){return this.pageXOffset||document.documentElement.scrollLeft},getSize: function(){return{'scroll':{'x':this.getScrollLeft(),'y':this.getScrollTop()},'size':{'x':this.getWidth(),'y':this.getHeight()},'scrollSize':{'x':this.getScrollWidth(),'y':this.getScrollHeight()}}},getOffsets: function(){return{'x':0,'y':0}}});var Fx={};Fx.Base=new Class({getOptions: function(){return{onStart:Class.empty,onComplete:Class.empty,onCancel:Class.empty,transition:Fx.Transitions.sineInOut,duration:500,unit:'px',wait:true,fps:50}},initialize: function(options){this.element=this.element||null;this.setOptions(this.getOptions(),options);if(this.options.initialize) this.options.initialize.call(this)},step: function(){var time=new Date().getTime();if(time<this.time+this.options.duration){this.cTime=time-this.time;this.setNow();this.increase()} else{this.stop(true);this.now=this.to;this.increase();this.fireEvent('onComplete',this.element,10);this.callChain()}},set: function(to){this.now=to;this.increase();return this},setNow: function(){this.now=this.compute(this.from,this.to)},compute: function(from,to){return this.options.transition(this.cTime,from,(to-from),this.options.duration)},start: function(from,to){if(!this.options.wait) this.stop();else if(this.timer) return this;this.from=from;this.to=to;this.time=new Date().getTime();this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);this.fireEvent('onStart',this.element);return this},stop: function(end){if(!this.timer) return this;this.timer=$clear(this.timer);if(!end) this.fireEvent('onCancel',this.element);return this},custom: function(from,to){return this.start(from,to)},clearTimer: function(end){return this.stop(end)}});Fx.Base.implement(new Chain);Fx.Base.implement(new Events);Fx.Base.implement(new Options);Fx.Transitions={linear: function(t,b,c,d){return c*t/d+b},sineInOut: function(t,b,c,d){return-c/2 *(Math.cos(Math.PI*t/d)-1)+b}};Fx.CSS={select: function(property,to){if(property.test('color','i')) return this.Color;if(to.test&&to.test(' ')) return this.Multi;return this.Single},parse: function(el,property,fromTo){if(!fromTo.push) fromTo=[fromTo];var from=fromTo[0],to=fromTo[1];if(!to&&to!=0){to=from;from=el.getStyle(property)}
var css=this.select(property,to);return{from:css.parse(from),to:css.parse(to),css:css}}};Fx.CSS.Single={parse: function(value){return parseFloat(value)},getNow: function(from,to,fx){return fx.compute(from,to)},getValue: function(value,unit){return value+unit}};Fx.CSS.Multi={parse: function(value){return value.push?value:value.split(' ').map(function(v){return parseFloat(v)})},getNow: function(from,to,fx){var now=[];for(var i=0;i<from.length;i++) now[i]=fx.compute(from[i],to[i]);return now},getValue: function(value,unit){return value.join(unit+' ')+unit}};Fx.CSS.Color={parse: function(value){return value.push?value:value.hexToRgb(true)},getNow: function(from,to,fx){var now=[];for(var i=0;i<from.length;i++) now[i]=Math.round(fx.compute(from[i],to[i]));return now},getValue: function(value){return 'rgb('+value.join(',')+')'}};Fx.Style=Fx.Base.extend({initialize: function(el,property,options){this.element=$(el);this.property=property;this.parent(options)},hide: function(){return this.set(0)},setNow: function(){this.now=this.css.getNow(this.from,this.to,this)},set: function(to){this.css=Fx.CSS.select(this.property,to);return this.parent(this.css.parse(to))},start: function(from,to){if(this.timer&&this.options.wait) return this;var parsed=Fx.CSS.parse(this.element,this.property,[from,to]);this.css=parsed.css;return this.parent(parsed.from,parsed.to)},increase: function(){this.element.setStyle(this.property,this.css.getValue(this.now,this.options.unit))}});Element.extend({effect: function(property,options){return new Fx.Style(this,property,options)}});Fx.Styles=Fx.Base.extend({initialize: function(el,options){this.element=$(el);this.parent(options)},setNow: function(){for(var p in this.from) this.now[p]=this.css[p].getNow(this.from[p],this.to[p],this)},set: function(to){var parsed={};this.css={};for(var p in to){this.css[p]=Fx.CSS.select(p,to[p]);parsed[p]=this.css[p].parse(to[p])}
return this.parent(parsed)},start: function(obj){if(this.timer&&this.options.wait) return this;this.now={};this.css={};var from={},to={};for(var p in obj){var parsed=Fx.CSS.parse(this.element,p,obj[p]);from[p]=parsed.from;to[p]=parsed.to;this.css[p]=parsed.css}
return this.parent(from,to)},increase: function(){for(var p in this.now) this.element.setStyle(p,this.css[p].getValue(this.now[p],this.options.unit))}});Element.extend({effects: function(options){return new Fx.Styles(this,options)}});Fx.Elements=Fx.Base.extend({initialize: function(elements,options){this.elements=$$(elements);this.parent(options)},setNow: function(){for(var i in this.from){var iFrom=this.from[i],iTo=this.to[i],iCss=this.css[i],iNow=this.now[i]={};for(var p in iFrom) iNow[p]=iCss[p].getNow(iFrom[p],iTo[p],this)}},set: function(to){var parsed={};this.css={};for(var i in to){var iTo=to[i],iCss=this.css[i]={},iParsed=parsed[i]={};for(var p in iTo){iCss[p]=Fx.CSS.select(p,iTo[p]);iParsed[p]=iCss[p].parse(iTo[p])}}
return this.parent(parsed)},start: function(obj){if(this.timer&&this.options.wait) return this;this.now={};this.css={};var from={},to={};for(var i in obj){var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={},iCss=this.css[i]={};for(var p in iProps){var parsed=Fx.CSS.parse(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;iCss[p]=parsed.css}}
return this.parent(from,to)},increase: function(){for(var i in this.now){var iNow=this.now[i],iCss=this.css[i];for(var p in iNow) this.elements[i].setStyle(p,iCss[p].getValue(iNow[p],this.options.unit))}}});Fx.Scroll=Fx.Base.extend({initialize: function(element,options){this.now=[];this.element=$(element);this.addEvent('onStart', function(){this.element.addEvent('mousewheel',this.stop.bind(this,false))}.bind(this));this.removeEvent('onComplete', function(){this.element.removeEvent('mousewheel',this.stop.bind(this,false))}.bind(this));this.parent(options)},setNow: function(){for(var i=0;i<2;i++) this.now[i]=this.compute(this.from[i],this.to[i])},scrollTo: function(x,y){if(this.timer&&this.options.wait) return this;var el=this.element.getSize();var values={'x':x,'y':y};for(var z in el.size){var max=el.scrollSize[z]-el.size[z];if($chk(values[z])) values[z]=($type(values[z])=='number')?Math.max(Math.min(values[z],max),0):max;else values[z]=el.scroll[z]}
return this.start([el.scroll.x,el.scroll.y],[values.x,values.y])},toTop: function(){return this.scrollTo(false,0)},toBottom: function(){return this.scrollTo(false,'full')},toLeft: function(){return this.scrollTo(0,false)},toRight: function(){return this.scrollTo('full',false)},toElement: function(el){return this.scrollTo($(el).getLeft(),$(el).getTop())},increase: function(){this.element.scrollTo(this.now[0],this.now[1])}});Fx.Slide=Fx.Base.extend({initialize: function(el,options){this.element=$(el).setStyle('margin',0);this.wrapper=new Element('div').injectAfter(this.element).setStyle('overflow','hidden').adopt(this.element);this.setOptions({'mode':'vertical'},options);this.now=[];this.parent(this.options)},setNow: function(){for(var i=0;i<2;i++) this.now[i]=this.compute(this.from[i],this.to[i])},vertical: function(){this.margin='top';this.layout='height';this.offset=this.element.offsetHeight;return [this.element.getStyle('margin-top').toInt(),this.wrapper.getStyle('height').toInt()]},horizontal: function(){this.margin='left';this.layout='width';this.offset=this.element.offsetWidth;return [this.element.getStyle('margin-left').toInt(),this.wrapper.getStyle('width').toInt()]},slideIn: function(mode){return this.start(this[mode||this.options.mode](),[0,this.offset])},slideOut: function(mode){return this.start(this[mode||this.options.mode](),[-this.offset,0])},hide: function(mode){this[mode||this.options.mode]();return this.set([-this.offset,0])},show: function(mode){this[mode||this.options.mode]();return this.set([0,this.offset])},toggle: function(mode){if(this.wrapper.offsetHeight==0||this.wrapper.offsetWidth==0) return this.slideIn(mode);else return this.slideOut(mode)},increase: function(){this.element.setStyle('margin-'+this.margin,this.now[0]+this.options.unit);this.wrapper.setStyle(this.layout,this.now[1]+this.options.unit)}});Fx.Transitions={linear: function(t,b,c,d){return c*t/d+b},quadIn: function(t,b,c,d){return c*(t/=d)*t+b},quadOut: function(t,b,c,d){return-c *(t/=d)*(t-2)+b},quadInOut: function(t,b,c,d){if((t/=d/2)<1) return c/2*t*t+b;return-c/2 *((--t)*(t-2)-1)+b},cubicIn: function(t,b,c,d){return c*(t/=d)*t*t+b},cubicOut: function(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},cubicInOut: function(t,b,c,d){if((t/=d/2)<1) return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b},quartIn: function(t,b,c,d){return c*(t/=d)*t*t*t+b},quartOut: function(t,b,c,d){return-c *((t=t/d-1)*t*t*t-1)+b},quartInOut: function(t,b,c,d){if((t/=d/2)<1) return c/2*t*t*t*t+b;return-c/2 *((t-=2)*t*t*t-2)+b},quintIn: function(t,b,c,d){return c*(t/=d)*t*t*t*t+b},quintOut: function(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},quintInOut: function(t,b,c,d){if((t/=d/2)<1) return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b},sineIn: function(t,b,c,d){return-c * Math.cos(t/d *(Math.PI/2))+c+b},sineOut: function(t,b,c,d){return c * Math.sin(t/d *(Math.PI/2))+b},sineInOut: function(t,b,c,d){return-c/2 *(Math.cos(Math.PI*t/d)-1)+b},expoIn: function(t,b,c,d){return(t==0)?b:c * Math.pow(2,10 *(t/d-1))+b},expoOut: function(t,b,c,d){return(t==d)?b+c:c *(-Math.pow(2,-10 * t/d)+1)+b},expoInOut: function(t,b,c,d){if(t==0) return b;if(t==d) return b+c;if((t/=d/2)<1) return c/2 * Math.pow(2,10 *(t-1))+b;return c/2 *(-Math.pow(2,-10 *--t)+2)+b},circIn: function(t,b,c,d){return-c *(Math.sqrt(1-(t/=d)*t)-1)+b},circOut: function(t,b,c,d){return c * Math.sqrt(1-(t=t/d-1)*t)+b},circInOut: function(t,b,c,d){if((t/=d/2)<1) return-c/2 *(Math.sqrt(1-t*t)-1)+b;return c/2 *(Math.sqrt(1-(t-=2)*t)+1)+b},elasticIn: function(t,b,c,d,a,p){if(t==0) return b;if((t/=d)==1) return b+c;if(!p) p=d*.3;if(!a) a=1;if(a<Math.abs(c)){a=c;var s=p/4}
else var s=p/(2*Math.PI) * Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p))+b},elasticOut: function(t,b,c,d,a,p){if(t==0) return b;if((t/=d)==1) return b+c;if(!p) p=d*.3;if(!a) a=1;if(a<Math.abs(c)){a=c;var s=p/4}
else var s=p/(2*Math.PI) * Math.asin(c/a);return a*Math.pow(2,-10*t) * Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},elasticInOut: function(t,b,c,d,a,p){if(t==0) return b;if((t/=d/2)==2) return b+c;if(!p) p=d*(.3*1.5);if(!a) a=1;if(a<Math.abs(c)){a=c;var s=p/4}
else var s=p/(2*Math.PI) * Math.asin(c/a);if(t<1) return-.5*(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},backIn: function(t,b,c,d,s){if(!s) s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},backOut: function(t,b,c,d,s){if(!s) s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},backInOut: function(t,b,c,d,s){if(!s) s=1.70158;if((t/=d/2)<1) return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},bounceIn: function(t,b,c,d){return c-Fx.Transitions.bounceOut(d-t,0,c,d)+b},bounceOut: function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b} else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b} else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b} else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},bounceInOut: function(t,b,c,d){if(t<d/2) return Fx.Transitions.bounceIn(t*2,0,c,d) *.5+b;return Fx.Transitions.bounceOut(t*2-d,0,c,d) *.5+c*.5+b}};var Drag={};Drag.Base=new Class({getOptions: function(){return{handle:false,unit:'px',onStart:Class.empty,onComplete:Class.empty,onSnap:Class.empty,onDrag:Class.empty,limit:false,modifiers:{x:'left',y:'top'},snap:6}},initialize: function(el,options){this.setOptions(this.getOptions(),options);this.element=$(el);this.handle=$(this.options.handle)||this.element;this.mouse={'now':{},'pos':{}};this.value={'start':{},'now':{}};this.bound={'start':this.start.bindWithEvent(this)};this.handle.addEvent('mousedown',this.bound.start);if(this.options.initialize) this.options.initialize.call(this)},start: function(event){this.mouse.start=event.page;var limit=this.options.limit;this.limit={'x':[],'y':[]};for(var z in this.options.modifiers){this.value.now[z]=this.element.getStyle(this.options.modifiers[z]).toInt();this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){for(var i=0;i<2;i++){if($chk(limit[z][i])) this.limit[z][i]=limit[z][i].apply?limit[z][i].call(this):limit[z][i]}}}
this.bound.drag=this.drag.bindWithEvent(this);this.bound.checkAndDrag=this.checkAndDrag.bindWithEvent(this);this.bound.stop=this.stop.bind(this);document.addEvent('mousemove',this.options.snap?this.bound.checkAndDrag:this.bound.drag);document.addEvent('mouseup',this.bound.stop);this.fireEvent('onStart',this.element);event.stop()},checkAndDrag: function(event){var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){document.removeEvent('mousemove',this.bound.checkAndDrag);document.addEvent('mousemove',this.bound.drag);this.drag(event);this.fireEvent('onSnap',this.element)}
event.stop()},drag: function(event){this.out=false;this.mouse.now=event.page;for(var z in this.options.modifiers){this.value.now[z]=event.page[z]-this.mouse.pos[z];if(this.limit[z]){if($chk(this.limit[z][1])&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1];this.out=true} else if($chk(this.limit[z][0])&&(this.value.now[z]<this.limit[z][0])){this.value.now[z]=this.limit[z][0];this.out=true}}
this.element.setStyle(this.options.modifiers[z],this.value.now[z]+this.options.unit)}
this.fireEvent('onDrag',this.element);event.stop()},detach: function(){this.handle.removeEvent('mousedown',this.bound.start)},stop: function(){document.removeEvent('mousemove',this.bound.drag);document.removeEvent('mouseup',this.bound.stop);this.fireEvent('onComplete',this.element)}});Drag.Base.implement(new Events);Drag.Base.implement(new Options);Element.extend({makeResizable: function(options){return new Drag.Base(this,Object.extend(options||{},{modifiers:{x:'width',y:'height'}}))}});var Scroller=new Class({getOptions: function(){return{area:20,velocity:1,onChange: function(x,y){this.element.scrollTo(x,y)}}},initialize: function(element,options){this.setOptions(this.getOptions(),options);this.element=$(element);this.mousemover=([window,document].test(element))?$(document.body):this.element},start: function(){this.coord=this.getCoords.bindWithEvent(this);this.mousemover.addEvent('mousemove',this.coord)},stop: function(){this.mousemover.removeEvent('mousemove',this.coord);this.timer=$clear(this.timer)},getCoords: function(event){this.page=(this.element==window)?event.client:event.page;if(!this.timer) this.timer=this.scroll.periodical(50,this)},scroll: function(){var el=this.element.getSize();var pos=this.element.getOffsets();var change={'x':0,'y':0};for(var z in this.page){if(this.page[z]<(this.options.area+pos[z])&&el.scroll[z]!=0)
change[z]=(this.page[z]-this.options.area-pos[z]) * this.options.velocity;else if(this.page[z]+this.options.area>(el.size[z]+pos[z])&&el.scroll[z]+el.size[z]!=el.scrollSize[z])
change[z]=(this.page[z]-el.size[z]+this.options.area-pos[z]) * this.options.velocity}
if(change.y||change.x) this.fireEvent('onChange',[el.scroll.x+change.x,el.scroll.y+change.y])}});Scroller.implement(new Events);Scroller.implement(new Options);var Slider=new Class({getOptions: function(){return{onChange:Class.empty,onComplete:Class.empty,onTick: function(pos){this.knob.setStyle(this.p,pos+'px')},steps:100,mode:'horizontal',wheel:false}},initialize: function(el,knob,options){this.element=$(el);this.knob=$(knob);this.setOptions(this.getOptions(),options);this.previousChange=-1;this.previousEnd=-1;this.step=-1;this.element.addEvent('mousedown',this.clickedElement.bindWithEvent(this));if(this.options.wheel) this.element.addEvent('mousewheel',this.scrolledElement.bindWithEvent(this));if(this.options.mode=='horizontal'){this.z='x';this.p='left';this.max=this.element.offsetWidth-this.knob.offsetWidth;this.half=this.knob.offsetWidth/2;this.getPos=this.element.getLeft.bind(this.element)} else if(this.options.mode=='vertical'){this.z='y';this.p='top';this.max=this.element.offsetHeight-this.knob.offsetHeight;this.half=this.knob.offsetHeight/2;this.getPos=this.element.getTop.bind(this.element)}
this.knob.setStyle('position','relative').setStyle(this.p,0);var modSlide={},limSlide={};limSlide[this.z]=[0,this.max];modSlide[this.z]=this.p;this.drag=new Drag.Base(this.knob,{limit:limSlide,snap:0,modifiers:modSlide,onStart: function(){this.draggedKnob()}.bind(this),onDrag: function(){this.draggedKnob()}.bind(this),onComplete: function(){this.draggedKnob();this.end()}.bind(this)});if(this.options.initialize) this.options.initialize.call(this)},set: function(step){if(step>this.options.steps) step=this.options.steps;else if(step<0) step=0;this.step=step;this.checkStep();this.end();this.fireEvent('onTick',this.toPosition(this.step)+'');return this},scrolledElement: function(event){if(event.wheel<0) this.set(this.step+1);else if(event.wheel>0) this.set(this.step-1);event.stop()},clickedElement: function(event){var position=event.page[this.z]-this.getPos()-this.half;if(position>this.max) position=this.max;else if(position<0) position=0;this.step=this.toStep(position);this.checkStep();this.end();this.fireEvent('onTick',position+'')},draggedKnob: function(){this.step=this.toStep(this.drag.value.now[this.z]);this.checkStep()},checkStep: function(){if(this.previousChange!=this.step){this.previousChange=this.step;this.fireEvent('onChange',this.step)}},end: function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent('onComplete',this.step+'')}},toStep: function(position){return Math.round(position/this.max*this.options.steps)},toPosition: function(step){return(this.max)*step/this.options.steps}});Slider.implement(new Events);Slider.implement(new Options);

/* - jd.gallery.js - */
// http://www.gagrows.com/portal_javascripts/jd.gallery.js?original=1
var $removeEvents=function(object,type){if(!object.events) return object;if(type){if(!object.events[type]) return object;for(var fn in object.events[type]) object.removeEvent(type,fn);object.events[type]=null} else{for(var evType in object.events) object.removeEvents(evType);object.events=null}
return object};var gallery=new Class({initialize: function(element,options){this.setOptions({showArrows:true,showCarousel:true,showInfopane:true,thumbHeight:75,thumbWidth:100,thumbSpacing:10,embedLinks:true,fadeDuration:500,timed:false,delay:9000,preloader:true,manualData:[],populateData:true,elementSelector:"div.imageElement",titleSelector:"h3",subtitleSelector:"p",linkSelector:"a.open",imageSelector:"img.full",thumbnailSelector:"img.thumbnail",slideInfoZoneOpacity:0.7,carouselMinimizedOpacity:0.4,carouselMinimizedHeight:20,carouselMaximizedOpacity:0.7,destroyAfterPopulate:true,baseClass:'jdGallery',withArrowsClass:'withArrows',textShowCarousel:'Pictures',useThumbGenerator:false,thumbGenerator:'resizer.php'},options);this.fireEvent('onInit');this.currentIter=0;this.lastIter=0;this.maxIter=0;this.galleryElement=element;this.galleryData=this.options.manualData;this.galleryInit=1;this.galleryElements=Array();this.thumbnailElements=Array();this.galleryElement.addClass(this.options.baseClass);if(this.options.populateData)
this.populateData();element.style.display="block";if(this.options.embedLinks){this.currentLink=new Element('a').addClass('open').setProperties({href:'#',title:''}).injectInside(element);if((!this.options.showArrows)&&(!this.options.showCarousel))
this.galleryElement=element=this.currentLink;else
this.currentLink.setStyle('display','none')}
this.constructElements();if((data.length>1)&&(this.options.showArrows)){var leftArrow=new Element('a').addClass('left').addEvent('click',this.prevItem.bind(this)).injectInside(element);var rightArrow=new Element('a').addClass('right').addEvent('click',this.nextItem.bind(this)).injectInside(element);this.galleryElement.addClass(this.options.withArrowsClass)}
this.loadingElement=new Element('div').addClass('loadingElement').injectInside(element);if(this.options.showInfopane) this.initInfoSlideshow();if(this.options.showCarousel) this.initCarousel();this.doSlideShow(1)},populateData: function(){currentArrayPlace=this.galleryData.length;options=this.options;data=this.galleryData;this.galleryElement.getElements(options.elementSelector).each(function(el){elementDict={image:el.getElement(options.imageSelector).getProperty('src'),number:currentArrayPlace};if((options.showInfopane)|(options.showCarousel))
Object.extend(elementDict,{title:el.getElement(options.titleSelector).innerHTML,description:el.getElement(options.subtitleSelector).innerHTML});if(options.embedLinks)
Object.extend(elementDict,{link:el.getElement(options.linkSelector).href||false,linkTitle:el.getElement(options.linkSelector).title||false});if((!options.useThumbGenerator)&&(options.showCarousel))
Object.extend(elementDict,{thumbnail:el.getElement(options.thumbnailSelector).src});else if(options.useThumbGenerator)
Object.extend(elementDict,{thumbnail:'resizer.php?imgfile='+elementDict.image+'&max_width='+options.thumbWidth+'&max_height='+options.thumbHeight});data[currentArrayPlace]=elementDict;currentArrayPlace++;if(this.options.destroyAfterPopulate)
el.remove()});this.galleryData=data;this.fireEvent('onPopulated')},constructElements: function(){el=this.galleryElement;this.maxIter=this.galleryData.length;var currentImg;for(i=0;i<this.galleryData.length;i++){var currentImg=new Fx.Style(new Element('div').addClass('slideElement').setStyles({'position':'absolute','left':'0px','right':'0px','margin':'0px','padding':'0px','backgroundImage':"url('"+this.galleryData[i].image+"')",'backgroundPosition':"center center",'opacity':'0'}).injectInside(el),'opacity',{duration:this.options.fadeDuration});this.galleryElements[parseInt(i)]=currentImg}},destroySlideShow: function(element){var myClassName=element.className;var newElement=new Element('div').addClass('myClassName');element.parentNode.replaceChild(newElement,element)},startSlideShow: function(){this.fireEvent('onStart');this.loadingElement.style.display="none";this.lastIter=this.maxIter-1;this.currentIter=0;this.galleryInit=0;this.galleryElements[parseInt(this.currentIter)].set(1);if(this.options.showInfopane)
this.showInfoSlideShow.delay(1000,this);this.prepareTimer();if(this.options.embedLinks)
this.makeLink(this.currentIter)},nextItem: function(){this.fireEvent('onNextCalled');this.nextIter=this.currentIter+1;if(this.nextIter>=this.maxIter)
this.nextIter=0;this.galleryInit=0;this.goTo(this.nextIter)},prevItem: function(){this.fireEvent('onPreviousCalled');this.nextIter=this.currentIter-1;if(this.nextIter<=-1)
this.nextIter=this.maxIter-1;this.galleryInit=0;this.goTo(this.nextIter)},goTo: function(num){this.clearTimer();if(this.options.embedLinks)
this.clearLink();if(this.options.showInfopane){this.slideInfoZone.clearChain();this.hideInfoSlideShow().chain(this.changeItem.pass(num,this))} else
this.changeItem.delay(500,this,num);if(this.options.embedLinks)
this.makeLink(num);this.prepareTimer()},changeItem: function(num){this.fireEvent('onStartChanging');this.galleryInit=0;if(this.currentIter!=num){for(i=0;i<this.maxIter;i++){if((i!=this.currentIter)) this.galleryElements[i].set(0)}
if(num>this.currentIter) this.galleryElements[num].custom(1);else{this.galleryElements[num].set(1);this.galleryElements[this.currentIter].custom(0)}
this.currentIter=num}
this.doSlideShow.bind(this)();this.fireEvent('onChanged')},clearTimer: function(){if(this.options.timed)
$clear(this.timer)},prepareTimer: function(){if(this.options.timed)
this.timer=this.nextItem.delay(this.options.delay,this)},doSlideShow: function(position){if(this.galleryInit==1){imgPreloader=new Image();imgPreloader.onload=function(){this.startSlideShow.delay(10,this)}.bind(this);imgPreloader.src=this.galleryData[0].image} else{if(this.options.showInfopane){if(this.options.showInfopane){this.showInfoSlideShow.delay((500+this.options.fadeDuration),this)} else
if(this.options.showCarousel)
this.centerCarouselOn(position)}}},initCarousel: function(){var carouselContainerElement=new Element('div').addClass('carouselContainer').injectInside(this.galleryElement);this.carouselContainer=new Fx.Styles(carouselContainerElement,{transition:Fx.Transitions.expoOut});this.carouselContainer.normalHeight=carouselContainerElement.offsetHeight;this.carouselContainer.set({'opacity':this.options.carouselMinimizedOpacity,'top':(this.options.carouselMinimizedHeight-this.carouselContainer.normalHeight)});this.carouselBtn=new Element('a').addClass('carouselBtn').setProperties({title:this.options.textShowCarousel}).setHTML(this.options.textShowCarousel).injectInside(carouselContainerElement);this.carouselBtn.addEvent('click',
function(){this.carouselContainer.clearTimer();this.toggleCarousel()}.bind(this));this.carouselActive=false;var carouselElement=new Element('div').addClass('carousel').injectInside(carouselContainerElement);this.carousel=new Fx.Styles(carouselElement);this.carouselLabel=new Element('p').addClass('label').injectInside(this.carousel.element);this.carouselWrapper=new Element('div').addClass('carouselWrapper').injectInside(this.carousel.element);this.carouselInner=new Element('div').addClass('carouselInner').injectInside(this.carouselWrapper);this.carouselWrapper.scroller=new Scroller(this.carouselWrapper,{area:100,velocity:0.2})
this.carouselWrapper.elementScroller=new Fx.Scroll(this.carouselWrapper,{duration:400,onStart:this.carouselWrapper.scroller.stop.bind(this.carouselWrapper.scroller),onComplete:this.carouselWrapper.scroller.start.bind(this.carouselWrapper.scroller)});this.constructThumbnails();this.carouselInner.style.width=((this.maxIter *(this.options.thumbWidth+this.options.thumbSpacing))-this.options.thumbSpacing+this.options.thumbWidth)+"px"},toggleCarousel: function(){if(this.carouselActive)
this.hideCarousel();else
this.showCarousel()},showCarousel: function(){this.fireEvent('onShowCarousel');this.carouselContainer.custom({'opacity':this.options.carouselMaximizedOpacity,'top':0}).addEvent('onComplete', function(){this.carouselActive=true;this.carouselWrapper.scroller.start()}.bind(this))},hideCarousel: function(){this.fireEvent('onHideCarousel');this.carouselContainer.custom({'opacity':this.options.carouselMinimizedOpacity,'top':(this.options.carouselMinimizedHeight-this.carouselContainer.normalHeight)}).addEvent('onComplete', function(){this.carouselActive=false;this.carouselWrapper.scroller.stop()}.bind(this))},constructThumbnails: function(){element=this.carouselInner;for(i=0;i<this.galleryData.length;i++){var currentImg=new Fx.Style(new Element('div').addClass("thumbnail").setStyles({backgroundImage:"url('"+this.galleryData[i].thumbnail+"')",backgroundPosition:"center center",backgroundRepeat:'no-repeat',marginLeft:this.options.thumbSpacing+"px",width:this.options.thumbWidth+"px",height:this.options.thumbHeight+"px"}).injectInside(element),"opacity",{duration:200}).set(0.2);currentImg.element.addEvents({'mouseover': function(myself){myself.clearTimer();myself.custom(0.99);$(this.carouselLabel).setHTML('<span class="number">'+(myself.relatedImage.number+1)+"/"+this.maxIter+":</span> "+myself.relatedImage.title)}.pass(currentImg,this),'mouseout': function(myself){myself.clearTimer();myself.custom(0.2)}.pass(currentImg,this),'click': function(myself){this.goTo(myself.relatedImage.number)}.pass(currentImg,this)});currentImg.relatedImage=this.galleryData[i];this.thumbnailElements[parseInt(i)]=currentImg}},clearThumbnailsHighlights: function(){for(i=0;i<this.galleryData.length;i++){this.thumbnailElements[i].clearTimer();this.thumbnailElements[i].custom(0.2)}},centerCarouselOn: function(num){var carouselElement=this.thumbnailElements[num];var position=carouselElement.element.offsetLeft+(carouselElement.element.offsetWidth/2);var carouselWidth=this.carouselWrapper.offsetWidth;var carouselInnerWidth=this.carouselInner.offsetWidth;var diffWidth=carouselWidth/2;var scrollPos=position-diffWidth;this.carouselWrapper.elementScroller.scrollTo(scrollPos,0)},initInfoSlideshow: function(){this.slideInfoZone=new Fx.Styles(new Element('div').addClass('slideInfoZone').injectInside($(this.galleryElement))).set({'opacity':0});var slideInfoZoneTitle=new Element('h2').injectInside(this.slideInfoZone.element);var slideInfoZoneDescription=new Element('p').injectInside(this.slideInfoZone.element);this.slideInfoZone.normalHeight=this.slideInfoZone.element.offsetHeight;this.slideInfoZone.element.setStyle('opacity',0)},changeInfoSlideShow: function(){this.hideInfoSlideShow.delay(10,this);this.showInfoSlideShow.delay(500,this)},showInfoSlideShow: function(){this.fireEvent('onShowInfopane');this.slideInfoZone.clearTimer();element=this.slideInfoZone.element;element.getElement('h2').setHTML(this.galleryData[this.currentIter].title);element.getElement('p').setHTML(this.galleryData[this.currentIter].description);this.slideInfoZone.custom({'opacity':[0,this.options.slideInfoZoneOpacity],'height':[0,this.slideInfoZone.normalHeight]});if(this.options.showCarousel)
this.slideInfoZone.chain(this.centerCarouselOn.pass(this.currentIter,this));return this.slideInfoZone},hideInfoSlideShow: function(){this.fireEvent('onHideInfopane');this.slideInfoZone.clearTimer();this.slideInfoZone.custom({'opacity':0,'height':0});return this.slideInfoZone},makeLink: function(num){this.currentLink.setProperties({href:this.galleryData[num].link,title:this.galleryData[num].linkTitle})
if(!((this.options.embedLinks)&&(!this.options.showArrows)&&(!this.options.showCarousel)))
this.currentLink.setStyle('display','block')},clearLink: function(){this.currentLink.setProperties({href:'',title:''});if(!((this.options.embedLinks)&&(!this.options.showArrows)&&(!this.options.showCarousel)))
this.currentLink.setStyle('display','none')}});gallery.implement(new Events);gallery.implement(new Options);
