if(!document.myGetElementsByClassName){
document.myGetElementsByClassName=function(className){
var children=document.getElementsByTagName('*')|| document.all
var elements=new Array()
for(var i=0;i<children.length;i++){
var child=children[i]
var classNames=child.className.split(' ')
for(var j=0;j<classNames.length;j++){
if(classNames[j]==className){
elements.push(child)
break}}}
return elements}}
var Reflection={
defaultHeight : 0.5,
defaultOpacity: 0.5,
add: function(image,options){
Reflection.remove(image)
doptions={"height" : Reflection.defaultHeight,"opacity" : Reflection.defaultOpacity}
if(options){
for(var i in doptions){
if(!options[i]){
options[i]=doptions[i]}}
}else{
options=doptions}
try{
var d=document.createElement('div')
var p=image
var classes=p.className.split(' ')
var newClasses=''
for(j=0;j<classes.length;j++){
if(classes[j] !="reflect"){
if(newClasses){
newClasses+=' '}
newClasses+=classes[j]}}
var reflectionHeight=Math.floor(p.height*options['height'])
var divHeight=Math.floor(p.height*(1+options['height']))
var reflectionWidth=p.width
if(document.all&&!window.opera){
if(p.parentElement.tagName=='A'){
var d=document.createElement('a')
d.href=p.parentElement.href}
d.className=newClasses
p.className='reflected'
d.style.cssText=p.style.cssText
p.style.cssText='vertical-align: bottom'
var reflection=document.createElement('img')
reflection.src=p.src
reflection.style.width=reflectionWidth+'px'
reflection.style.display='block'
reflection.style.height=p.height+"px"
reflection.style.marginBottom="-"+(p.height-reflectionHeight)+'px'
reflection.style.filter='flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+(options['opacity']*100)+', style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy='+(options['height']*100)+')'
d.style.width=reflectionWidth+'px'
d.style.height=divHeight+'px'
p.parentNode.replaceChild(d,p)
d.appendChild(p)
d.appendChild(reflection)
}else{
var canvas=document.createElement('canvas')
if(canvas.getContext){
d.className=newClasses
p.className='reflected'
d.style.cssText=p.style.cssText
p.style.cssText='vertical-align: bottom'
var context=canvas.getContext("2d")
canvas.style.height=reflectionHeight+'px'
canvas.style.width=reflectionWidth+'px'
canvas.height=reflectionHeight
canvas.width=reflectionWidth
d.style.width=reflectionWidth+'px'
d.style.height=divHeight+'px'
p.parentNode.replaceChild(d,p)
d.appendChild(p)
d.appendChild(canvas)
context.save()
context.translate(0,image.height-1)
context.scale(1,-1)
context.drawImage(image,0,0,reflectionWidth,image.height)
context.restore()
context.globalCompositeOperation="destination-out"
var gradient=context.createLinearGradient(0,0,0,reflectionHeight)
gradient.addColorStop(1,"rgba(255, 255, 255, 1.0)")
gradient.addColorStop(0,"rgba(255, 255, 255, "+(1-options['opacity'])+")")
context.fillStyle=gradient
context.rect(0,0,reflectionWidth,reflectionHeight*2)
context.fill()}}
}catch(e){}
},
remove : function(image){
if(image.className=="reflected"){
image.className=image.parentNode.className
image.parentNode.parentNode.replaceChild(image,image.parentNode)}}}
function addReflections(){
var rimages=document.myGetElementsByClassName('reflect')
for(i=0;i<rimages.length;i++){
var rheight=null
var ropacity=null
var classes=rimages[i].className.split(' ')
for(j=0;j<classes.length;j++){
if(classes[j].indexOf("rheight")==0){
var rheight=classes[j].substring(7)/100
}else if(classes[j].indexOf("ropacity")==0){
var ropacity=classes[j].substring(8)/100}}
Reflection.add(rimages[i],{height: rheight,opacity : ropacity})}}
var previousOnload=window.onload
window.onload=function(){if(previousOnload)previousOnload();addReflections();}
