window.onload = function() { 
initLightbox();
}

var Class={
create: function(){
return function(){
this.initialize.apply(this,arguments)}}}
Object.extend=function(destination,source){
for(property in source)destination[property]=source[property]
return destination}
Function.prototype.bind=function(object){
var __method=this
return function(){
return __method.apply(object,arguments)}}
Function.prototype.bindAsEventListener=function(object){
var __method=this
return function(event){
__method.call(object,event || window.event)}}
function $(){
if(arguments.length==1)return get$(arguments[0])
var elements=[]
$c(arguments).each(function(el){
elements.push(get$(el))
})
return elements
function get$(el){
if(typeof el=='string')el=document.getElementById(el)
return el}}
if(!window.Element)var Element=new Object()
Object.extend(Element,{
remove: function(element){
element=$(element)
element.parentNode.removeChild(element)
},
hasClassName: function(element,className){
element=$(element)
if(!element)return
var hasClass=false
element.className.split(' ').each(function(cn){
if(cn==className)hasClass=true
})
return hasClass
},
addClassName: function(element,className){
element=$(element)
Element.removeClassName(element,className)
element.className+=' '+className
},
removeClassName: function(element,className){
element=$(element)
if(!element)return
var newClassName=''
element.className.split(' ').each(function(cn,i){
if(cn !=className){
if(i>0)newClassName+=' '
newClassName+=cn}
})
element.className=newClassName
},
cleanWhitespace: function(element){
element=$(element)
$c(element.childNodes).each(function(node){
if(node.nodeType==3&&!/\S/.test(node.nodeValue))Element.remove(node)
})
},
find: function(element,what){
element=$(element)[what]
while(element.nodeType !=1)element=element[what]
return element}
})
var Position={
cumulativeOffset: function(element){
var valueT=0,valueL=0
do{
valueT+=element.offsetTop || 0
valueL+=element.offsetLeft || 0
element=element.offsetParent
}while(element)
return [valueL,valueT]}}
document.getElementsByClassName=function(className){
var children=document.getElementsByTagName('*')|| document.all
var elements=[]
$c(children).each(function(child){
if(Element.hasClassName(child,className))elements.push(child)
})
return elements}
Array.prototype.iterate=function(func){
for(var i=0;i<this.length;i++)func(this[i],i)}
if(!Array.prototype.each)Array.prototype.each=Array.prototype.iterate
function $c(array){
var nArray=[]
for(var i=0;i<array.length;i++)nArray.push(array[i])
return nArray}

var fx=new Object()
fx.Base=function(){}
fx.Base.prototype={
setOptions: function(options){
this.options={
duration: 500,
onComplete: '',
transition: fx.sinoidal}
Object.extend(this.options,options ||{})
},
step: function(){
var time=(new Date).getTime()
if(time>=this.options.duration+this.startTime){
this.now=this.to
clearInterval(this.timer)
this.timer=null
if(this.options.onComplete)setTimeout(this.options.onComplete.bind(this),10)}
else{
var Tpos=(time-this.startTime)/(this.options.duration)
this.now=this.options.transition(Tpos)*(this.to-this.from)+this.from}
this.increase()
},
custom: function(from,to){
if(this.timer !=null)return
this.from=from
this.to=to
this.startTime=(new Date).getTime()
this.timer=setInterval(this.step.bind(this),13)
},
hide: function(){
this.now=0
this.increase()
},
clearTimer: function(){
clearInterval(this.timer)
this.timer=null}}
fx.Layout=Class.create()
fx.Layout.prototype=Object.extend(new fx.Base(),{
initialize: function(el,options){
this.el=$(el)
this.el.style.overflow="hidden"
this.iniWidth=this.el.offsetWidth
this.iniHeight=this.el.offsetHeight
this.setOptions(options)}
})
fx.Height=Class.create()
Object.extend(Object.extend(fx.Height.prototype,fx.Layout.prototype),{
increase: function(){
this.el.style.height=this.now+"px"
},
toggle: function(){
if(this.el.offsetHeight>0)this.custom(this.el.offsetHeight,0)
else this.custom(0,this.el.scrollHeight)}
})
fx.Width=Class.create()
Object.extend(Object.extend(fx.Width.prototype,fx.Layout.prototype),{
increase: function(){
this.el.style.width=this.now+"px"
},
toggle: function(){
if(this.el.offsetWidth>0)this.custom(this.el.offsetWidth,0)
else this.custom(0,this.iniWidth)}
})
fx.Opacity=Class.create()
fx.Opacity.prototype=Object.extend(new fx.Base(),{
initialize: function(el,options){
this.el=$(el)
this.now=1
this.increase()
this.setOptions(options)
},
increase: function(){
if(this.now==1&&(/Firefox/.test(navigator.userAgent)))this.now=0.9999
this.setOpacity(this.now)
},
setOpacity: function(opacity){
if(opacity==0&&this.el.style.visibility !="hidden")this.el.style.visibility="hidden"
else if(this.el.style.visibility !="visible")this.el.style.visibility="visible"
if(window.ActiveXObject)this.el.style.filter="alpha(opacity="+opacity*100+")"
this.el.style.opacity=opacity
},
toggle: function(){
if(this.now>0)this.custom(1,0)
else this.custom(0,1)}
})
fx.sinoidal=function(pos){
return((-Math.cos(pos*Math.PI)/2)+0.5)}
fx.linear=function(pos){
return pos}
fx.cubic=function(pos){
return Math.pow(pos,3)}
fx.circ=function(pos){
return Math.sqrt(pos)}
