//  Lightview 2.5.2.1 - 01-01-2010
//  Copyright (c) 2008-2010 Nick Stakenburg (http://www.nickstakenburg.com)
//
//  Licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License
//  http://creativecommons.org/licenses/by-nc-nd/3.0/

//  More information on this project:
//  http://www.nickstakenburg.com/projects/lightview/

var Lightview = {
  Version: '2.5.2.1',

  // Configuration
  options: {
    backgroundColor: '#ffffff',                            // Background color of the view
    border: 12,                                            // Size of the border
    buttons: {
      opacity: {                                           // Opacity of inner buttons
        disabled: 0.4,
        normal: 0.75,
        hover: 1
      },
      side: {display: true},                             // Toggle side buttons
      innerPreviousNext: {display: true},                // Toggle the inner previous and next button
      slideshow: {display: true},                        // Toggle slideshow button
      topclose: {side: 'right'}                          // 'right' or 'left'                    
    },
    controller: {                                          // The controller is used on sets
      backgroundColor: '#4d4d4d',
      border: 6,
      buttons: {
        innerPreviousNext: true,
        side: false
      },
      margin: 18,
      opacity: 0.7,
      radius: 6,
      setNumberTemplate: '#{position} of #{total}'
    },
    cyclic: false,                                         // Makes galleries cyclic, no end/begin
    images: '../images/lightview/',                        // The directory of the images, from this file
    imgNumberTemplate: 'Image #{position} of #{total}',    // Want a different language? change it here
    keyboard: true,                                        // Toggle keyboard buttons
    menubarPadding: 6,                                     // Space between menubar and content in px
    overlay: {                                             // Overlay
      background: '#000',                                  // Background color, Mac Firefox & Mac Safari use overlay.png
      close: true,
      opacity: 0.85,
      display: true
    },
    preloadHover: false,                                   // Preload images on mouseover
    radius: 12,                                            // Corner radius of the border
    removeTitles: true,                                    // Set to false if you want to keep title attributes intact
    resizeDuration: 0.45,                                  // The duration of the resize effect in seconds
    slideshowDelay: 5,                                     // Delay in seconds before showing the next slide
    titleSplit: '::',                                      // The characters you want to split title with
    transition: function(pos) {                            // Or your own transition
      return ((pos/=0.5) < 1 ? 0.5 * Math.pow(pos, 4) :
        -0.5 * ((pos-=2) * Math.pow(pos,3) - 2));
    },
    viewport: true,                                        // Stay within the viewport, true is recommended
    zIndex: 5000,                                          // zIndex of #lightview, #overlay is this -1

    startDimensions: {                                     // Dimensions Lightview starts at
      width: 100,
      height: 100
    },
    closeDimensions: {                                     // Modify if you've changed the close button images
      large: {width: 77, height: 22},
      small: {width: 25, height: 22}
    },
    sideDimensions: {                                      // Modify if you've changed the side button images
      width: 16,
      height: 22
    },

    defaultOptions: {                                      // Default options for each type of view
      image: {
        menubar: 'bottom',
        closeButton: 'large'
      },
      gallery: {
        menubar: 'bottom',
        closeButton: 'large'
      },
      ajax:   {
        width: 400,
        height: 300,
        menubar: 'top',
        closeButton: 'small',
        overflow: 'auto'
      },
      iframe: {
        width: 400,
        height: 300,
        menubar: 'top',
        scrolling: true,
        closeButton: 'small'
      },
      inline: {
        width: 400,
        height: 300,
        menubar: 'top',
        closeButton: 'small',
        overflow: 'auto'
      },
      flash: {
        width: 400,
        height: 300,
        menubar: 'bottom',
        closeButton: 'large'
      },
      quicktime: {
        width: 480,
        height: 220,
        autoplay: true,
        controls: true,
        closeButton: 'large'
      }
    }
  },
  classids: {
    quicktime: 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
    flash: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
  },
  codebases: {
    quicktime: 'http://www.apple.com/qtactivex/qtplugin.cab#version=7,5,5,0',
    flash: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0'
  },
  errors: {
    requiresPlugin: "<div class='message'> The content your are attempting to view requires the <span class='type'>#{type}</span> plugin.</div><div class='pluginspage'><p>Please download and install the required plugin from:</p><a href='#{pluginspage}' target='_blank'>#{pluginspage}</a></div>"
  },
  mimetypes: {
    quicktime: 'video/quicktime',
    flash: 'application/x-shockwave-flash'
  },
  pluginspages: {
    quicktime: 'http://www.apple.com/quicktime/download',
    flash: 'http://www.adobe.com/go/getflashplayer'
  },
  // used with auto detection
  typeExtensions: {
    flash: 'swf',
    image: 'bmp gif jpeg jpg png',
    iframe: 'asp aspx cgi cfm htm html jsp php pl php3 php4 php5 phtml rb rhtml shtml txt',
    quicktime: 'avi mov mpg mpeg movie'
  }
};

(function(){
    var l=!!document.createElement("canvas").getContext,BROWSER_IS_IE_LT7=Prototype.Browser.IE&&(function(a){
        var b=new RegExp("MSIE ([\\d.]+)").exec(a);
        return b?parseFloat(b[1]):-1
        })(navigator.userAgent)<7,BROWSER_IS_WEBKIT_419=(Prototype.Browser.WebKit&&!document.evaluate),BROWSER_IS_FIREFOX_LT3=navigator.userAgent.indexOf("Firefox")>-1&&parseFloat(navigator.userAgent.match(/Firefox[\/\s](\d+)/)[1])<3,FIX_OVERLAY_WITH_PNG=!!navigator.userAgent.match(/mac/i)&&(BROWSER_IS_WEBKIT_419||BROWSER_IS_FIREFOX_LT3);
    Object.extend(Lightview,{
        REQUIRED_Prototype:"1.6.1",
        REQUIRED_Scriptaculous:"1.8.2",
        queue:{
            position:"end",
            scope:"lightview"
        },
        require:function(a){
            if((typeof window[a]=="undefined")||(this.convertVersionString(window[a].Version)<this.convertVersionString(this["REQUIRED_"+a]))){
                throw("Lightview requires "+a+" >= "+this["REQUIRED_"+a]);
            }
        },
    convertVersionString:function(a){
        var v=a.replace(/_.*|\./g,"");
        v=parseInt(v+"0".times(4-v.length));
        return a.indexOf("_")>-1?v-1:v
        },
    load:function(){
        this.require("Prototype");
        if(!!window.Effect&&!window.Scriptaculous){
            this.require("Scriptaculous")
            }
            if(/^(https?:\/\/|\/)/.test(this.options.images)){
            this.images=this.options.images
            }else{
            var b=/lightview(?:-[\w\d.]+)?\.js(.*)/;
            this.images=(($$("script[src]").find(function(s){
                return s.src.match(b)
                })||{}).src||"").replace(b,"")+this.options.images
            }
            if(!l){
            if(document.documentMode>=8&&!document.namespaces.ns_vml){
                document.namespaces.add("ns_vml","urn:schemas-microsoft-com:vml","#default#VML")
                }else{
                document.observe("dom:loaded",function(){
                    var a=document.createStyleSheet();
                    a.cssText="ns_vml\\:*{behavior:url(#default#VML)}"
                    })
                }
            }
    },
start:function(){
    this.radius=this.options.radius;
    this.border=(this.radius>this.options.border)?this.radius:this.options.border;
    this.closeDimensions=this.options.closeDimensions;
    this.sideDimensions=this.options.sideDimensions;
    this.build()
    }
});
Object.extend(Lightview,{
    _lightviewLoadedEvents:14,
    _lightviewLoadedEvent:function(){
        var a=arguments.callee;
        a.counter++;
        if(a.counter==this._lightviewLoadedEvents){
            $(document.body).fire("lightview:loaded")
            }
        }
});
Lightview._lightviewLoadedEvent.counter=0;
Object.extend(Lightview,{
    build:function(){
        this.lightview=new Element("div",{
            id:"lightview"
        });
        var d,sideNegativeMargin,sideStyle=pixelClone(this.sideDimensions);
        if(BROWSER_IS_WEBKIT_419){
            this.lightview.hide=function(){
                this.setStyle("left:-9500px;top:-9500px;visibility:hidden;");
                return this
                };

            this.lightview.show=function(){
                this.setStyle("visibility:visible");
                return this
                };

            this.lightview.visible=function(){
                return(this.getStyle("visibility")=="visible"&&parseFloat(this.getStyle("top").replace("px",""))>-9500)
                }
            }
        $(document.body).insert(this.overlay=new Element("div",{
        id:"lv_overlay"
    }).setStyle({
        zIndex:this.options.zIndex-1,
        position:(!(BROWSER_IS_FIREFOX_LT3||BROWSER_IS_IE_LT7))?"fixed":"absolute",
        background:FIX_OVERLAY_WITH_PNG?"url("+this.images+"overlay.png) top left repeat":this.options.overlay.background
        }).setOpacity(FIX_OVERLAY_WITH_PNG?1:this.options.overlay.opacity).hide()).insert(this.lightview.setStyle({
        zIndex:this.options.zIndex,
        top:"-9500px",
        left:"-9500px"
    }).setOpacity(0).insert(this.container=new Element("div",{
        className:"lv_Container"
    }).insert(this.sideButtons=new Element("ul",{
        className:"lv_Sides"
    }).insert(this.prevSide=new Element("li",{
        className:"lv_PrevSide"
    }).setStyle(sideNegativeMargin=Object.extend({
        marginLeft:-1*this.sideDimensions.width+"px"
        },sideStyle)).insert(this.prevButtonImage=new Element("div",{
        className:"lv_Wrapper"
    }).setStyle(Object.extend({
        marginLeft:this.sideDimensions.width+"px"
        },sideStyle)).insert(new Element("div",{
        className:"lv_Button"
    })))).insert(this.nextSide=new Element("li",{
        className:"lv_NextSide"
    }).setStyle(Object.extend({
        marginRight:-1*this.sideDimensions.width+"px"
        },sideStyle)).insert(this.nextButtonImage=new Element("div",{
        className:"lv_Wrapper"
    }).setStyle(sideNegativeMargin).insert(new Element("div",{
        className:"lv_Button"
    }))))).insert(this.topButtons=new Element("div",{
        className:"lv_topButtons"
    }).insert(this.topcloseButtonImage=new Element("div",{
        className:"lv_Wrapper lv_topcloseButtonImage"
    }).insert(this.topcloseButton=new Element("div",{
        className:"lv_Button"
    })))).insert(new Element("ul",{
        className:"lv_Frames"
    }).insert(new Element("li",{
        className:"lv_Frame lv_FrameTop"
    }).insert(d=new Element("div",{
        className:"lv_Liquid"
    }).setStyle({
        height:this.border+"px"
        }).insert(new Element("ul",{
        className:"lv_Half lv_HalfLeft"
    }).insert(new Element("li",{
        className:"lv_CornerWrapper"
    }).insert(new Element("div",{
        className:"lv_Corner"
    })).insert(new Element("div",{
        className:"lv_Fill"
    }).setStyle({
        left:this.border+"px"
        })))).insert(new Element("div",{
        className:"lv_Filler"
    })).insert(new Element("ul",{
        className:"lv_Half lv_HalfRight"
    }).insert(new Element("li",{
        className:"lv_CornerWrapper"
    }).setStyle("margin-top: "+(-1*this.border)+"px").insert(new Element("div",{
        className:"lv_Corner"
    })).insert(new Element("div",{
        className:"lv_Fill"
    }).setStyle("left: "+(-1*this.border)+"px")))))).insert(this.resizeCenter=new Element("li",{
        className:"lv_Center"
    }).setStyle("height: "+(150-this.border)+"px").insert(new Element("div",{
        className:"lv_WrapUp"
    }).insert(new Element("div",{
        className:"lv_WrapDown"
    }).setStyle("margin-top: "+this.border+"px").insert(this.center=new Element("div",{
        className:"lv_WrapCenter"
    }).setOpacity(0).setStyle("padding: 0 "+this.border+"px").insert(this.contentTop=new Element("div",{
        className:"lv_contentTop lv_Fill"
    })).insert(this.menubar=new Element("div",{
        className:"lv_MenuBar clearfix"
    }).insert(this.closeButton=new Element("div",{
        className:"lv_Button lv_Close"
    }).setStyle(pixelClone(this.options.closeDimensions.large)).setStyle({
        background:this.options.backgroundColor
        }).setOpacity(this.options.buttons.opacity.normal)).insert(this.data=new Element("ul",{
        className:"lv_Data"
    }).insert(this.dataText=new Element("li",{
        className:"lv_DataText"
    }).insert(this.title=new Element("div",{
        className:"lv_Title"
    })).insert(this.caption=new Element("div",{
        className:"lv_Caption"
    }))).insert(this.innerController=new Element("div",{
        className:"lv_innerController"
    }).insert(this.imgNumber=new Element("li",{
        className:"lv_ImgNumber"
    }).insert(new Element("div"))).insert(this.innerPrevNext=new Element("li",{
        className:"lv_innerPrevNext"
    }).insert(this.innerPrevButton=new Element("div",{
        className:"lv_Button"
    }).setOpacity(this.options.buttons.opacity.normal).setStyle({
        backgroundColor:this.options.backgroundColor
        }).setPngBackground(this.images+"inner_prev.png",{
        backgroundColor:this.options.backgroundColor
        })).insert(this.innerNextButton=new Element("div",{
        className:"lv_Button"
    }).setOpacity(this.options.buttons.opacity.normal).setStyle({
        backgroundColor:this.options.backgroundColor
        }).setPngBackground(this.images+"inner_next.png",{
        backgroundColor:this.options.backgroundColor
        }))).insert(this.slideshow=new Element("li",{
        className:"lv_Slideshow"
    }).insert(this.slideshowButton=new Element("div",{
        className:"lv_Button"
    }).setOpacity(this.options.buttons.opacity.normal).setStyle({
        backgroundColor:this.options.backgroundColor
        }).setPngBackground(this.images+"inner_slideshow_play.png",{
        backgroundColor:this.options.backgroundColor
        })))))).insert(this.contentBottom=new Element("div",{
        className:"lv_contentBottom "
    }))))).insert(this.loading=new Element("div",{
        className:"lv_Loading"
    }).insert(this.loadingButton=new Element("div",{
        className:"lv_Button"
    }).setStyle("background: url("+this.images+"loading.gif) top left no-repeat")))).insert(new Element("li",{
        className:"lv_Frame lv_FrameBottom"
    }).insert(d.cloneNode(true))).insert(this.prevnext=new Element("li",{
        className:"lv_PrevNext"
    }).hide().setStyle("margin-top: "+this.border+"px; background: url("+this.images+"blank.gif) top left repeat"))))).insert(new Element("div",{
        id:"lightviewError"
    }).hide());
    var f=new Image();
    f.onload=function(){
        f.onload=Prototype.emptyFunction;
        this.sideDimensions={
            width:f.width,
            height:f.height
            };

        var a=pixelClone(this.sideDimensions),sideNegativeMargin;
        this.sideButtons.setStyle({
            marginTop:0-(f.height/2).round()+"px",
            height:f.height+"px"
            });
        this.prevSide.setStyle(sideNegativeMargin=Object.extend({
            marginLeft:-1*this.sideDimensions.width+"px"
            },a));
        this.prevButtonImage.setStyle(Object.extend({
            marginLeft:a.width
            },a));
        this.nextSide.setStyle(Object.extend({
            marginRight:-1*this.sideDimensions.width+"px"
            },a));
        this.nextButtonImage.setStyle(sideNegativeMargin);
        this._lightviewLoadedEvent()
        }.bind(this);
    f.src=this.images+"prev.png";
    $w("center title caption imgNumber")._each(function(e){
        this[e].setStyle({
            backgroundColor:this.options.backgroundColor
            })
        }.bind(this));
    var g=this.container.select(".lv_Corner");
    $w("tl tr bl br").each(function(a,i){
        if(this.radius>0){
            this.createCorner(g[i],a)
            }else{
            g[i].insert(new Element("div",{
                className:"lv_Fill"
            }))
            }
            g[i].setStyle({
            width:this.border+"px",
            height:this.border+"px"
            }).addClassName("lv_Corner"+a.capitalize());
        this._lightviewLoadedEvent()
        }.bind(this));
    this.lightview.select(".lv_Filler",".lv_Fill",".lv_WrapDown").invoke("setStyle",{
        backgroundColor:this.options.backgroundColor
        });
    var S={};

    $w("prev next topclose").each(function(s){
        this[s+"ButtonImage"].side=s;
        var b=this.images+s+".png";
        if(s=="topclose"){
            S[s]=new Image();
            S[s].onload=function(){
                S[s].onload=Prototype.emptyFunction;
                this.closeDimensions[s]={
                    width:S[s].width,
                    height:S[s].height
                    };

                var a=this.options.buttons.topclose.side,style=Object.extend({
                    "float":a,
                    marginTop:this.closeDimensions[s].height+"px"
                    },pixelClone(this.closeDimensions[s]));
                style["padding"+a.capitalize()]=this.border+"px";
                this[s+"ButtonImage"].setStyle(style);
                this.topButtons.setStyle({
                    height:S[s].height+"px",
                    top:-1*this.closeDimensions[s].height+"px"
                    });
                this[s+"ButtonImage"].down().setPngBackground(b).setStyle(pixelClone(this.closeDimensions[s]));
                this._lightviewLoadedEvent()
                }.bind(this);
            S[s].src=this.images+s+".png"
            }else{
            this[s+"ButtonImage"].setPngBackground(b)
            }
        },this);
var C={};

$w("large small").each(function(a){
    C[a]=new Image();
    C[a].onload=function(){
        C[a].onload=Prototype.emptyFunction;
        this.closeDimensions[a]={
            width:C[a].width,
            height:C[a].height
            };

        this._lightviewLoadedEvent()
        }.bind(this);
    C[a].src=this.images+"close_"+a+".png"
    },this);
var L=new Image();
    L.onload=function(){
    L.onload=Prototype.emptyFunction;
    this.loading.setStyle({
        width:L.width+"px",
        height:L.height+"px",
        marginTop:-0.5*L.height+0.5*this.border+"px",
        marginLeft:-0.5*L.width+"px"
        });
    this._lightviewLoadedEvent()
    }.bind(this);
    L.src=this.images+"loading.gif";
    var h=new Image();
    h.onload=function(a){
    h.onload=Prototype.emptyFunction;
    var b={
        width:h.width+"px",
        height:h.height+"px"
        };

    this.slideshow.setStyle(b);
    this.slideshowButton.setStyle(b);
    this._lightviewLoadedEvent()
    }.bind(this);
    h.src=this.images+"inner_slideshow_stop.png";
    $w("prev next").each(function(s){
    var S=s.capitalize(),i=new Image();
    i.onload=function(){
        i.onload=Prototype.emptyFunction;
        this["inner"+S+"Button"].setStyle({
            width:i.width+"px",
            height:i.height+"px"
            });
        this._lightviewLoadedEvent()
        }.bind(this);
    i.src=this.images+"inner_"+s+".png";
    this["inner"+S+"Button"].prevnext=s
    },this);
$w("slideshow innerPrevNext imgNumber").each(function(c){
    this[c].hide=this[c].hide.wrap(function(a,b){
        this.style.position="absolute";
        a(b);
        return this
        });
    this[c].show=this[c].show.wrap(function(a,b){
        this.style.position="relative";
        a(b);
        return this
        })
    },this);
this.lightview.select("*").invoke("setStyle",{
    zIndex:this.options.zIndex+1
    });
this.lightview.hide();
    this._lightviewLoadedEvent()
    },
prepare:function(){
    Effect.Queues.get("lightview")._each(function(e){
        e.cancel()
        });
    this.scaledInnerDimensions=null;
    if(this.view.isSet()){
        this.controllerHeight=this._controllerHeight;
        if(this.controller&&!this.controller.visible()){
            this.controller.setStyle("visibility:hidden").show();
            this.controllerCenter.setOpacity(0)
            }
        }else{
    this.controllerHeight=null;
    this.controller.hide()
    }
    if(parseInt(this.topcloseButtonImage.getStyle("marginTop"))<this.closeDimensions.topclose.height){
    this.toggleTopClose(false)
    }
    this.hideOverlapping();
this.hideContent();
new Effect.Event({
    queue:this.queue,
    afterFinish:function(){
        $w("top bottom").each(function(a){
            var b=a.capitalize();
            this["content"+b].remove();
            var c={};

            this["content"+b]=new Element("div",{
                className:"lv_content"+b
                }).hide();
            c[a]=this["content"+b];
            this.center.insert(c)
            }.bind(this))
        }.bind(this)
    });
this.disableKeyboardNavigation();
this.views=null
},
restoreInlineContent:function(){
    if(!this.inlineContent||!this.inlineMarker){
        return
    }
    this.inlineMarker.insert({
        after:this.inlineContent.setStyle({
            display:this.inlineContent._inlineDisplayRestore
            })
        });
    this.inlineMarker.remove();
    this.inlineMarker=null
    },
show:function(b){
    this.element=null;
    var c=Object.isString(b);
    if(Object.isElement(b)||c){
        if(c&&b.startsWith("#")){
            this.show({
                href:b,
                options:Object.extend({
                    autosize:true
                },arguments[1]||{})
                });
            return
        }
        this.element=$(b);
        if(!this.element){
            return
        }
        this.element.blur();
        this.view=this.element._view||new Lightview.View(this.element)
        }else{
        if(b.href){
            this.element=$(document.body);
            this.view=new Lightview.View(b)
            }else{
            if(Object.isNumber(b)){
                this.element=this.getSet(this.view.rel)[b];
                this.view=this.element._view
                }
            }
    }
if(!this.view.href){
    return
}
this.prepare();
if(this.view.isGallery()||this.view.isSet()){
    this.extendSet(this.view.rel);
    this.views=this.getViews(this.view.rel);
    if(this.view.isSet()){
        this.controllerOffset=this.views.length>1?this._controllerOffset:0;
        this.isSetGallery=this.views.all(function(a){
            return a.isImage()
            })
        }
    }
this.restoreCenter();
this.appear();
if(this.view.href!="#lightviewError"&&Object.keys(Lightview.Plugin).join(" ").indexOf(this.view.type)>=0){
    if(!Lightview.Plugin[this.view.type]){
        $("lightviewError").update(new Template(this.errors.requiresPlugin).evaluate({
            type:this.view.type.capitalize(),
            pluginspage:this.pluginspages[this.view.type]
            }));
        var d=$("lightviewError").getDimensions();
        this.show({
            href:"#lightviewError",
            title:this.view.type.capitalize()+" plugin required",
            options:d
        });
        return false
        }
    }
var e=Object.extend({
    menubar:"bottom",
    topclose:false,
    wmode:"transparent",
    innerPreviousNext:this.view.isGallery()&&this.options.buttons.innerPreviousNext.display,
    keyboard:this.options.keyboard,
    slideshow:(this.view.isGallery()&&this.options.buttons.slideshow.display)||(this.isSetGallery),
    overflow:"hidden",
    overlayClose:this.options.overlay.close,
    viewport:this.options.viewport
    },this.options.defaultOptions[this.view.type]||{});
this.view.options=Object.extend(e,this.view.options);
if(this.view.isSet()){
    this.view.options.topclose=(this.views.length<=1)
    }
    if(!(this.view.title||this.view.caption||(this.views&&this.views.length>1))&&this.view.options.topclose){
    this.view.options.menubar=false
    }
    this._contentPosition="content"+(this.view.options.menubar=="top"?"Bottom":"Top");
if(this.view.isImage()){
    if(!l&&!this.view._VMLPreloaded){
        this.view._VMLPreloaded=true;
        var f=new Element("ns_vml:image",{
            src:this.view.href,
            display:"none"
        }).setStyle("height:1px;width:1px;");
        $(document.body).insert(f);
        Element.remove.delay(0.1,f)
        }
        if(this.view.isGallery()||this.view.isSet()){
        this.position=this.views.indexOf(this.view);
        this.preloadSurroundingImages()
        }
        this.innerDimensions=this.view.preloadedDimensions;
    if(this.innerDimensions){
        this.afterEffect()
        }else{
        this.startLoading();
        var f=new Image();
        f.onload=function(){
            f.onload=Prototype.emptyFunction;
            this.stopLoading();
            this.innerDimensions={
                width:f.width,
                height:f.height
                };

            this.afterEffect()
            }.bind(this);
        f.src=this.view.href
        }
    }else{
    if(this.view.isSet()){
        this.position=this.views.indexOf(this.view)
        }
        this.innerDimensions=this.view.options.fullscreen?document.viewport.getDimensions():{
        width:this.view.options.width,
        height:this.view.options.height
        };

    this.afterEffect()
    }
},
insertContent:(function(){
    function insertImageUsingHTML(a,b,c){
        a=$(a);
        var d=pixelClone(c);
        a.update(new Element("img",{
            id:"lightviewContent",
            src:b,
            alt:"",
            galleryimg:"no"
        }).setStyle(d))
        }
        var k=(function(){
        function insertImageUsingVML(a,b,c){
            a=$(a);
            var d=Object.extend({
                "float":"left"
            },pixelClone(c));
            var e=new Element("ns_vml:image",{
                src:b,
                id:"lightviewContent"
            }).setStyle(d);
            a.update(e);
            e.outerHTML=e.outerHTML
            }
            function insertImageUsingCanvas(b,c,d){
            b=$(b);
            var f=pixelClone(d),image=new Image();
            image.onload=function(){
                canvas=new Element("canvas",f);
                b.update(canvas);
                try{
                    var a=canvas.getContext("2d");
                    a.drawImage(image,0,0,d.width,d.height)
                    }catch(e){
                    insertImageUsingHTML(b,c,d)
                    }
                }.bind(this);
        image.src=c
        }
        if(Prototype.Browser.IE){
        return insertImageUsingVML
        }else{
        return insertImageUsingCanvas
        }
    })();
return function(){
    var c=this.detectExtension(this.view.href),dimensions=this.scaledInnerDimensions||this.innerDimensions;
    if(this.view.isImage()){
        var d=pixelClone(dimensions);
        this[this._contentPosition].setStyle(d);
        if(this.scaledInnerDimensions){
            k(this[this._contentPosition],this.view.href,dimensions)
            }else{
            insertImageUsingHTML(this[this._contentPosition],this.view.href,dimensions)
            }
        }else{
    if(this.view.isExternal()){
        switch(this.view.type){
            case"ajax":
                var f=Object.clone(this.view.options.ajax)||{};

                var g=function(){
                this.stopLoading();
                if(this.view.options.autosize){
                    this[this._contentPosition].setStyle({
                        width:"auto",
                        height:"auto"
                    });
                    this.innerDimensions=this.getHiddenDimensions(this[this._contentPosition])
                    }
                    new Effect.Event({
                    queue:this.queue,
                    afterFinish:this.resizeWithinViewport.bind(this)
                    })
                }.bind(this);
                if(f.onComplete){
                f.onComplete=f.onComplete.wrap(function(a,b){
                    g();
                    a(b)
                    })
                }else{
                f.onComplete=g
                }
                this.startLoading();
                new Ajax.Updater(this[this._contentPosition],this.view.href,f);
                break;
            case"iframe":
                if(this.scaledInnerDimensions){
                dimensions.height-=this.menubarDimensions.height
                }
                this[this._contentPosition].update(this.iframe=new Element("iframe",{
                frameBorder:0,
                hspace:0,
                src:this.view.href,
                id:"lightviewContent",
                name:"lightviewContent_"+(Math.random()*99999).round(),
                scrolling:(this.view.options&&this.view.options.scrolling)?"auto":"no"
                }).setStyle(Object.extend({
                border:0,
                margin:0,
                padding:0
            },pixelClone(dimensions))));
                break;
            case"inline":
                var h=this.view.href,target=$(h.substr(h.indexOf("#")+1));
                if(!target||!target.tagName){
                return
            }
            var i=target.getDimensions();
                target.insert({
                before:this.inlineMarker=new Element(target.tagName).hide()
                });
            target._inlineDisplayRestore=target.getStyle("display");
                this.inlineContent=target.show();
                this[this._contentPosition].update(this.inlineContent);
                this[this._contentPosition].select("select, object, embed").each(function(b){
                this.overlappingRestore.each(function(a){
                    if(a.element==b){
                        b.setStyle({
                            visibility:a.visibility
                            })
                        }
                    })
            }.bind(this));
            if(this.view.options.autosize){
                this.innerDimensions=i;
                new Effect.Event({
                    queue:this.queue,
                    afterFinish:this.resizeWithinViewport.bind(this)
                    })
                }
                break
            }
        }else{
    var j={
        tag:"object",
        id:"lightviewContent",
        width:dimensions.width,
        height:dimensions.height
        };

    switch(this.view.type){
        case"quicktime":
            Object.extend(j,{
            pluginspage:this.pluginspages[this.view.type],
            children:[{
                tag:"param",
                name:"autoplay",
                value:this.view.options.autoplay
                },{
                tag:"param",
                name:"scale",
                value:"tofit"
            },{
                tag:"param",
                name:"controller",
                value:this.view.options.controls
                },{
                tag:"param",
                name:"enablejavascript",
                value:true
            },{
                tag:"param",
                name:"src",
                value:this.view.href
                },{
                tag:"param",
                name:"loop",
                value:this.view.options.loop||false
                }]
            });
        Object.extend(j,Prototype.Browser.IE?{
            codebase:this.codebases[this.view.type],
            classid:this.classids[this.view.type]
            }:{
            data:this.view.href,
            type:this.mimetypes[this.view.type]
            });
        break;
        case"flash":
            Object.extend(j,{
            data:this.view.href,
            type:this.mimetypes[this.view.type],
            quality:"high",
            wmode:this.view.options.wmode,
            pluginspage:this.pluginspages[this.view.type],
            children:[{
                tag:"param",
                name:"movie",
                value:this.view.href
                },{
                tag:"param",
                name:"allowFullScreen",
                value:"true"
            }]
            });
        if(this.view.options.flashvars){
            j.children.push({
                tag:"param",
                name:"FlashVars",
                value:this.view.options.flashvars
                })
            }
            break
        }
        this[this._contentPosition].setStyle(pixelClone(dimensions)).update(this.createHTML(j)).setStyle("visibility:hidden").show();
    if(this.view.isQuicktime()){
        (function(){
            try{
                if("SetControllerVisible"in $("lightviewContent")){
                    $("lightviewContent").SetControllerVisible(this.view.options.controls)
                    }
                }catch(e){}
        }.bind(this)).defer()
}
}
}
}
})(),
getHiddenDimensions:function(b){
    b=$(b);
    var d=b.ancestors(),restore=[],styles=[];
    d.push(b);
    d.each(function(c){
        if(c!=b&&c.visible()){
            return
        }
        restore.push(c);
        styles.push({
            display:c.getStyle("display"),
            position:c.getStyle("position"),
            visibility:c.getStyle("visibility")
            });
        c.setStyle({
            display:"block",
            position:"absolute",
            visibility:"visible"
        })
        });
    var e={
        width:b.clientWidth,
        height:b.clientHeight
        };

    restore.each(function(r,a){
        r.setStyle(styles[a])
        });
    return e
    },
clearContent:function(){
    var a=$("lightviewContent");
    if(a){
        switch(a.tagName.toLowerCase()){
            case"object":
                if(Prototype.Browser.WebKit&&this.view.isQuicktime()){
                try{
                    a.Stop()
                    }catch(e){}
                a.innerHTML=""
                }
                if(a.parentNode){
                a.remove()
                }else{
                a=Prototype.emptyFunction
                }
                break;
            case"iframe":
                a.remove();
                if(Prototype.Browser.Gecko&&window.frames.lightviewContent){
                delete window.frames.lightviewContent
                }
                break;
            default:
                a.remove();
                break
                }
            }
    $w("Top Bottom").each(function(S){
    this["content"+S].setStyle("width:auto;height:auto;").update("").hide()
    },this)
},
adjustDimensionsToView:Prototype.K,
afterEffect:function(){
    new Effect.Event({
        queue:this.queue,
        afterFinish:this.afterShow.bind(this)
        })
    },
afterShow:function(){
    this.fillMenuBar();
    if(!this.view.isAjax()){
        this.stopLoading()
        }
        if(!((this.view.options.autosize&&this.view.isInline())||this.view.isAjax())){
        this.resizeWithinViewport()
        }
        if(!this.view.isIframe()){
        new Effect.Event({
            queue:this.queue,
            afterFinish:this.insertContent.bind(this)
            })
        }
        if(this.view.options.topclose){
        new Effect.Event({
            queue:this.queue,
            afterFinish:this.toggleTopClose.bind(this,true)
            })
        }
    },
finishShow:function(){
    new Effect.Event({
        queue:this.queue,
        afterFinish:this.showContent.bind(this)
        });
    if(this.view.isIframe()){
        new Effect.Event({
            delay:0.2,
            queue:this.queue,
            afterFinish:this.insertContent.bind(this)
            })
        }
        if(this.sliding){
        new Effect.Event({
            queue:this.queue,
            afterFinish:this.nextSlide.bind(this)
            })
        }
        if(this.view.isQuicktime()||this.view.isFlash()){
        new Effect.Event({
            queue:this.queue,
            delay:0.1,
            afterFinish:Element.setStyle.bind(this,this[this._contentPosition],"visibility:visible")
            })
        }
    },
previous:function(){
    if(Effect.Queues.get(Lightview.queue.scope).effects.length){
        return
    }
    this.show(this.getSurroundingIndexes().previous)
    },
next:function(){
    if(Effect.Queues.get(Lightview.queue.scope).effects.length){
        return
    }
    this.show(this.getSurroundingIndexes().next)
    },
resizeWithinViewport:function(){
    this.adjustDimensionsToView();
    var a=this.getInnerDimensions(),bounds=this.getBounds();
    if(this.view.options.viewport&&(a.width>bounds.width||a.height>bounds.height)){
        if(this.view.options.fullscreen){
            this.scaledInnerDimensions=bounds;
            this.fillMenuBar();
            a=bounds
            }else{
            var c=this.getOuterDimensions(),b=bounds;
            if(this.view.isMedia()){
                var d=[bounds.height/c.height,bounds.width/c.width,1].min();
                this.scaledInnerDimensions={
                    width:(this.innerDimensions.width*d).round(),
                    height:(this.innerDimensions.height*d).round()
                    }
                }else{
            this.scaledInnerDimensions={
                width:c.width>b.width?b.width:c.width,
                height:c.height>b.height?b.height:c.height
                }
            }
        this.fillMenuBar();
    a=Object.clone(this.scaledInnerDimensions);
    if(this.view.isMedia()){
        a.height+=this.menubarDimensions.height
        }
    }
}else{
    this.fillMenuBar();
    this.scaledInnerDimensions=null
    }
    this._resize(a)
},
resize:function(a){
    this._resize(a,{
        duration:0
    })
    },
_resize:(function(){
    var e,wdiff,hdiff,mleft,mtop,controllerOffset,b;
    var f=(function(){
        var w,h;
        function init(p){
            w=(e.width+p*wdiff).toFixed(0);
            h=(e.height+p*hdiff).toFixed(0)
            }
            var a;
        if(BROWSER_IS_IE_LT7){
            a=function(p){
                this.lightview.setStyle({
                    width:(e.width+p*wdiff).toFixed(0)+"px",
                    height:(e.height+p*hdiff).toFixed(0)+"px"
                    });
                this.resizeCenter.setStyle({
                    height:h-1*this.border+"px"
                    })
                }
            }else{
        if(BROWSER_IS_FIREFOX_LT3){
            a=function(p){
                var v=this.getViewportDimensions(),o=document.viewport.getScrollOffsets();
                this.lightview.setStyle({
                    position:"absolute",
                    marginLeft:0,
                    marginTop:0,
                    width:w+"px",
                    height:h+"px",
                    left:(o[0]+(v.width/2)-(w/2)).floor()+"px",
                    top:(o[1]+(v.height/2)-(h/2)).floor()+"px"
                    });
                this.resizeCenter.setStyle({
                    height:h-1*this.border+"px"
                    })
                }
            }else{
        a=function(p){
            this.lightview.setStyle({
                position:"fixed",
                width:w+"px",
                height:h+"px",
                marginLeft:((0-w)/2).round()+"px",
                marginTop:((0-h)/2-controllerOffset).round()+"px"
                });
            this.resizeCenter.setStyle({
                height:h-1*this.border+"px"
                })
            }
        }
    }
return function(p){
    init.call(this,p);
    a.call(this,p)
    }
})();
return function(a){
    var c=arguments[1]||{};

    e=this.lightview.getDimensions();
    b=2*this.border;
    width=a.width?a.width+b:e.width;
    height=a.height?a.height+b:e.height;
    this.hidePrevNext();
    if(e.width==width&&e.height==height){
        new Effect.Event({
            queue:this.queue,
            afterFinish:this._afterResize.bind(this,a)
            });
        return
    }
    var d={
        width:width+"px",
        height:height+"px"
        };

    wdiff=width-e.width;
    hdiff=height-e.height;
    mleft=parseInt(this.lightview.getStyle("marginLeft").replace("px",""));
    mtop=parseInt(this.lightview.getStyle("marginTop").replace("px",""));
    controllerOffset=this.controller.visible()?(this.controllerOffset/2):0;
    if(!BROWSER_IS_IE_LT7){
        Object.extend(d,{
            marginLeft:0-width/2+"px",
            marginTop:0-height/2+"px"
            })
        }
        if(c.duration==0){
        f.call(this,1)
        }else{
        this.resizing=new Effect.Tween(this.lightview,0,1,Object.extend({
            duration:this.options.resizeDuration,
            queue:this.queue,
            transition:this.options.transition,
            afterFinish:this._afterResize.bind(this,a)
            },c),f.bind(this))
        }
    }
})(),
_afterResize:function(a){
    if(!this.menubarDimensions){
        return
    }
    var b=this[this._contentPosition],contentDimensions;
    if(this.view.options.overflow=="auto"){
        contentDimensions=b.getDimensions()
        }
        b.setStyle({
        height:(a.height-this.menubarDimensions.height)+"px",
        width:a.width+"px"
        });
    if(this.view.options.overflow!="hidden"&&(this.view.isAjax()||this.view.isInline())){
        if(Prototype.Browser.IE){
            if(this.view.options.overflow=="auto"){
                var c=b.getDimensions();
                b.setStyle("overflow:visible");
                var d={
                    overflowX:"hidden",
                    overflowY:"hidden"
                },corrected=0,scrollbarWidth=15;
                if(contentDimensions.height>a.height){
                    d.overflowY="auto";
                    d.width=c.width-scrollbarWidth;
                    d.paddingRight="15px";
                    corrected=scrollbarWidth
                    }
                    if(contentDimensions.width-corrected>a.width){
                    d.overflowX="auto";
                    d.height=c.height-scrollbarWidth;
                    d.paddingBottom="15px"
                    }
                    b.setStyle(d)
                }else{
                b.setStyle({
                    overflow:this.view.options.overflow
                    })
                }
            }else{
        b.setStyle({
            overflow:this.view.options.overflow
            })
        }
    }else{
    b.setStyle("overflow:hidden")
    }
    this.restoreCenter();
this.resizing=null;
this.finishShow()
},
showContent:function(){
    new Effect.Event({
        queue:this.queue,
        afterFinish:this.hidePrevNext.bind(this)
        });
    new Effect.Event({
        queue:this.queue,
        afterFinish:function(){
            this[this._contentPosition].show();
            this.fillMenuBar();
            if(this.menubar.visible()){
                this.menubar.setStyle("visibility:visible").setOpacity(1)
                }
            }.bind(this)
        });
new Effect.Parallel([new Effect.Opacity(this.center,{
    sync:true,
    from:0,
    to:1
}),new Effect.Appear(this.sideButtons,{
    sync:true
})],{
    queue:this.queue,
    duration:0.25,
    afterFinish:function(){
        if(this.element){
            this.element.fire("lightview:opened")
            }
        }.bind(this)
    });
if(this.view.isGallery()||(this.isSetGallery&&this.options.controller.buttons.side)){
    new Effect.Event({
        queue:this.queue,
        afterFinish:this.showPrevNext.bind(this)
        })
    }
},
hideContent:(function(){
    function after(){
        this.clearContent();
        this.topcloseButtonImage.setStyle({
            marginTop:this.closeDimensions.topclose.height+"px"
            });
        this.restoreInlineContent()
        }
        function tween(p){
        this.center.setOpacity(p);
        this.sideButtons.setOpacity(p)
        }
        return function(){
        if(!this.lightview.visible()){
            this.center.setOpacity(0);
            this.sideButtons.setOpacity(0);
            this.clearContent();
            return
        }
        new Effect.Tween(this.lightview,1,0,{
            duration:0.2,
            queue:this.queue,
            afterFinish:after.bind(this)
            },tween.bind(this))
        }
    })(),
hideData:function(){
    $w("innerController data dataText title caption imgNumber innerPrevNext slideshow closeButton").each(function(a){
        Element.hide(this[a])
        },this);
    this.menubar.setStyle("visibility:hidden").setOpacity(0)
    },
fillMenuBar:function(){
    this.hideData();
    if(!this.view.options.menubar){
        this.menubarDimensions={
            width:0,
            height:0
        };

        this.closeButtonWidth=0;
        this.menubar.hide()
        }else{
        this.menubar.show()
        }
        if(this.view.title||this.view.caption){
        this.dataText.show();
        this.data.show()
        }
        if(this.view.title){
        this.title.update(this.view.title).show()
        }
        if(this.view.caption){
        this.caption.update(this.view.caption).show()
        }
        if(this.views&&this.views.length>1){
        if(this.view.isSet()){
            this.setNumber.update(new Template(this.options.controller.setNumberTemplate).evaluate({
                position:this.position+1,
                total:this.views.length
                }));
            if(this.controller.getStyle("visibility")=="hidden"){
                this.controller.setStyle("visibility:visible");
                if(this._controllerCenterEffect){
                    Effect.Queues.get("lightview").remove(this._controllerCenterEffect)
                    }
                    this._controllerCenterEffect=new Effect.Appear(this.controllerCenter,{
                    queue:this.queue,
                    duration:0.1
                })
                }
            }else{
        this.data.show();
        if(this.view.isImage()){
            this.innerController.show();
            this.imgNumber.show().down().update(new Template(this.options.imgNumberTemplate).evaluate({
                position:this.position+1,
                total:this.views.length
                }));
            if(this.view.options.slideshow){
                this.slideshowButton.show();
                this.slideshow.show()
                }
            }
    }
}
var a=this.view.isSet();
if((this.view.options.innerPreviousNext||a)&&this.views.length>1){
    var b={
        prev:(this.options.cyclic||this.position!=0),
        next:(this.options.cyclic||((this.view.isGallery()||a)&&this.getSurroundingIndexes().next!=0))
        };

    $w("prev next").each(function(z){
        var Z=z.capitalize(),cursor=b[z]?"pointer":"auto";
        if(a){
            this["controller"+Z].setStyle({
                cursor:cursor
            }).setOpacity(b[z]?1:this.options.buttons.opacity.disabled)
            }else{
            this["inner"+Z+"Button"].setStyle({
                cursor:cursor
            }).setOpacity(b[z]?this.options.buttons.opacity.normal:this.options.buttons.opacity.disabled)
            }
        }.bind(this));
if(this.view.options.innerPreviousNext||this.options.controller.innerPreviousNext){
    this.innerPrevNext.show()
    }
}
this.controllerSlideshow.setOpacity(this.isSetGallery?1:this.options.buttons.opacity.disabled).setStyle({
    cursor:this.isSetGallery?"pointer":"auto"
    });
this.setCloseButtons();
if(!this.menubar.childElements().find(Element.visible)){
    this.menubar.hide();
    this.view.options.menubar=false
    }
    this.setMenubarDimensions()
},
setCloseButtons:function(){
    var a=this.closeDimensions.small.width,large=this.closeDimensions.large.width,imgWidth=this.scaledInnerDimensions?this.scaledInnerDimensions.width:this.innerDimensions.width,minimum=180,width=0,closeButton=this.view.options.closeButton||"large",background=this.options.borderColor;
    if(this.view.options.topclose||this.view.isSet()||!this.view.options.closeButton){
        background=null
        }else{
        if(imgWidth>=minimum+a&&imgWidth<minimum+large){
            background="small";
            width=a
            }else{
            if(imgWidth>=minimum+large){
                background=closeButton;
                width=this.closeDimensions[closeButton].width
                }
            }
    }
if(width>0){
    this.data.show();
    this.closeButton.setStyle({
        width:width+"px"
        }).show()
    }else{
    this.closeButton.hide()
    }
    if(background){
    this.closeButton.setPngBackground(this.images+"close_"+background+".png",{
        backgroundColor:this.options.backgroundColor
        })
    }
    this.closeButtonWidth=width
},
startLoading:function(){
    this.loadingEffect=new Effect.Appear(this.loading,{
        duration:0.2,
        from:0,
        to:1,
        queue:this.queue
        })
    },
stopLoading:function(){
    if(this.loadingEffect){
        Effect.Queues.get("lightview").remove(this.loadingEffect)
        }
        new Effect.Fade(this.loading,{
        duration:0.2,
        queue:this.queue,
        delay:0.2
    })
    },
setPrevNext:function(){
    if(!this.view.isImage()){
        return
    }
    var a=(this.options.cyclic||this.position!=0),next=(this.options.cyclic||((this.view.isGallery()||this.view.isSet())&&this.getSurroundingIndexes().next!=0));
    this.prevButtonImage[a?"show":"hide"]();
    this.nextButtonImage[next?"show":"hide"]();
    var b=this.scaledInnerDimensions||this.innerDimensions;
    this.prevnext.setStyle({
        height:b.height+"px",
        marginTop:this.border+(this.view.options.menubar=="top"?this.menubar.getHeight():0)+"px"
        });
    var c=((b.width/2-1)+this.border).floor();
    if(a){
        this.prevnext.insert(this.prevButton=new Element("div",{
            className:"lv_Button lv_PrevButton"
        }).setStyle({
            width:c+"px"
            }));
        this.prevButton.side="prev"
        }
        if(next){
        this.prevnext.insert(this.nextButton=new Element("div",{
            className:"lv_Button lv_NextButton"
        }).setStyle({
            width:c+"px"
            }));
        this.nextButton.side="next"
        }
        if(a||next){
        this.prevnext.show()
        }
    },
showPrevNext:function(){
    if(!this.view||!this.options.buttons.side.display||!this.view.isImage()){
        return
    }
    this.setPrevNext();
    this.prevnext.show()
    },
hidePrevNext:function(){
    this.prevnext.update("").hide();
    this.prevButtonImage.hide().setStyle({
        marginLeft:this.sideDimensions.width+"px"
        });
    this.nextButtonImage.hide().setStyle({
        marginLeft:-1*this.sideDimensions.width+"px"
        })
    },
appear:(function(){
    function after(){
        this.lightview.setOpacity(1)
        }
        if(!BROWSER_IS_WEBKIT_419){
        after=after.wrap(function(a,b){
            a(b);
            this.lightview.show()
            })
        }
        return function(){
        if(this.lightview.getStyle("opacity")!=0){
            return
        }
        if(this.options.overlay.display){
            new Effect.Appear(this.overlay,{
                duration:0.2,
                from:0,
                to:FIX_OVERLAY_WITH_PNG?1:this.options.overlay.opacity,
                queue:this.queue,
                beforeStart:this.maxOverlay.bind(this),
                afterFinish:after.bind(this)
                })
            }else{
            after.call(this)
            }
        }
})(),
hide:function(){
    if(Prototype.Browser.IE&&this.iframe&&this.view.isIframe()){
        this.iframe.remove()
        }
        if(BROWSER_IS_WEBKIT_419&&this.view.isQuicktime()){
        var a=$$("object#lightviewContent")[0];
        if(a){
            try{
                a.Stop()
                }catch(e){}
        }
    }
if(this.lightview.getStyle("opacity")==0){
    return
}
this.stopSlideshow();
this.prevnext.hide();
if(!Prototype.Browser.IE||!this.view.isIframe()){
    this.center.hide()
    }
    if(Effect.Queues.get("lightview_hide").effects.length>0){
    return
}
Effect.Queues.get("lightview").each(function(e){
    e.cancel()
    });
new Effect.Event({
    queue:this.queue,
    afterFinish:this.restoreInlineContent.bind(this)
    });
new Effect.Opacity(this.lightview,{
    duration:0.1,
    from:1,
    to:0,
    queue:{
        position:"end",
        scope:"lightview_hide"
    }
});
new Effect.Fade(this.overlay,{
    duration:0.16,
    queue:{
        position:"end",
        scope:"lightview_hide"
    },
    afterFinish:this.afterHide.bind(this)
    })
},
afterHide:function(){
    this.clearContent();
    this.lightview.hide();
    this.center.setOpacity(0).show();
    this.prevnext.update("").hide();
    this.contentTop.update("").hide();
    this.contentBottom.update("").hide();
    this.disableKeyboardNavigation();
    this.showOverlapping();
    new Effect.Event({
        queue:this.queue,
        afterFinish:this.resize.bind(this,this.options.startDimensions)
        });
    new Effect.Event({
        queue:this.queue,
        afterFinish:function(){
            if(this.element){
                this.element.fire("lightview:hidden")
                }
                $w("element views view scaledInnerDimensions isSetGallery _openEffect content")._each(function(a){
                this[a]=null
                }.bind(this))
            }.bind(this)
        })
    },
setMenubarDimensions:function(){
    this.menubar.setStyle("padding:0;");
    var a={},imgWidth=this[(this.scaledInnerDimensions?"scaledI":"i")+"nnerDimensions"].width;
    this.menubar.setStyle({
        width:imgWidth+"px"
        });
    this.data.setStyle({
        width:imgWidth-this.closeButtonWidth-1+"px"
        });
    a=this.getHiddenDimensions(this.menubar);
    if(this.view.options.menubar){
        a.height+=this.options.menubarPadding;
        switch(this.view.options.menubar){
            case"bottom":
                this.menubar.setStyle("padding:"+this.options.menubarPadding+"px 0 0 0");
                break;
            case"top":
                this.menubar.setStyle("padding: 0 0 "+this.options.menubarPadding+"px 0");
                break
                }
            }
    this.menubar.setStyle({
    width:"100%"
});
this.menubarDimensions=this.view.options.menubar?a:{
    width:a.width,
    height:0
}
},
restoreCenter:(function(){
    var a,controllerOffset;
    function init(){
        a=this.lightview.getDimensions();
        controllerOffset=this.controller.visible()?(this.controllerOffset/2):0
        }
        var b;
    if(BROWSER_IS_IE_LT7){
        b=function(){
            this.lightview.setStyle({
                top:"50%",
                left:"50%"
            })
            }
        }else{
    if(BROWSER_IS_WEBKIT_419||BROWSER_IS_FIREFOX_LT3){
        b=function(){
            var v=this.getViewportDimensions(),o=document.viewport.getScrollOffsets();
            this.lightview.setStyle({
                marginLeft:0,
                marginTop:0,
                left:(o[0]+(v.width/2)-(a.width/2)).floor()+"px",
                top:(o[1]+(v.height/2)-(a.height/2)).floor()+"px"
                })
            }
        }else{
    b=function(){
        this.lightview.setStyle({
            position:"fixed",
            left:"50%",
            top:"50%",
            marginLeft:(0-a.width/2).round()+"px",
            marginTop:(0-a.height/2-controllerOffset).round()+"px"
            })
        }
    }
}
return function(){
    init.call(this);
    b.call(this)
    }
})(),
startSlideshow:function(){
    this.stopSlideshow();
    this.sliding=true;
    this.next.bind(this).delay(0.25);
    this.slideshowButton.setPngBackground(this.images+"inner_slideshow_stop.png",{
        backgroundColor:this.options.backgroundColor
        }).hide();
    this.controllerSlideshow.setPngBackground(this.images+"controller_slideshow_stop.png",{
        backgroundColor:this.options.controller.backgroundColor
        })
    },
stopSlideshow:function(){
    if(this.sliding){
        this.sliding=false
        }
        if(this.slideTimer){
        clearTimeout(this.slideTimer)
        }
        this.slideshowButton.setPngBackground(this.images+"inner_slideshow_play.png",{
        backgroundColor:this.options.backgroundColor
        });
    this.controllerSlideshow.setPngBackground(this.images+"controller_slideshow_play.png",{
        backgroundColor:this.options.controller.backgroundColor
        })
    },
toggleSlideshow:function(){
    if(this.view.isSet()&&!this.isSetGallery){
        return
    }
    this[(this.sliding?"stop":"start")+"Slideshow"]()
    },
nextSlide:function(){
    if(this.sliding){
        this.slideTimer=this.next.bind(this).delay(this.options.slideshowDelay)
        }
    },
updateViews:function(){
    $$("a[class~=lightview], area[class~=lightview]").each(function(a){
        var b=a._view;
        if(!b){
            return
        }
        if(b._title){
            a.writeAttribute("title",b._title)
            }
            a._view=null
        })
    },
getSet:function(a){
    var b=a.indexOf("][");
    if(b>-1){
        a=a.substr(0,b+1)
        }
        return $$('a[rel^="'+a+'"], area[rel^="'+a+'"]')
    },
getViews:function(a){
    return this.getSet(a).pluck("_view")
    },
addObservers:function(){
    $(document.body).observe("click",this.delegateClose.bindAsEventListener(this));
    $w("mouseover mouseout").each(function(e){
        this.prevnext.observe(e,function(a){
            var b=a.findElement("div");
            if(!b){
                return
            }
            if(this.prevButton&&this.prevButton==b||this.nextButton&&this.nextButton==b){
                this.toggleSideButton(a)
                }
            }.bindAsEventListener(this))
    }.bind(this));
this.prevnext.observe("click",function(c){
    var d=c.findElement("div");
    if(!d){
        return
    }
    var e=(this.prevButton&&this.prevButton==d)?"previous":(this.nextButton&&this.nextButton==d)?"next":null;
    if(e){
        this[e].wrap(function(a,b){
            this.stopSlideshow();
            a(b)
            }).bind(this)()
        }
    }.bindAsEventListener(this));
$w("prev next").each(function(s){
    var S=s.capitalize(),stopSlideshow=function(a,b){
        this.stopSlideshow();
        a(b)
        },blockInnerPrevNext=function(a,b){
        var c=b.element().prevnext;
        if((c=="prev"&&(this.options.cyclic||this.position!=0))||(c=="next"&&(this.options.cyclic||((this.view.isGallery()||this.view.isSet())&&this.getSurroundingIndexes().next!=0)))){
            a(b)
            }
        };

this[s+"ButtonImage"].observe("mouseover",this.toggleSideButton.bindAsEventListener(this)).observe("mouseout",this.toggleSideButton.bindAsEventListener(this)).observe("click",this[s=="next"?s:"previous"].wrap(stopSlideshow).bindAsEventListener(this));
    this["inner"+S+"Button"].observe("click",this[s=="next"?s:"previous"].wrap(blockInnerPrevNext).wrap(stopSlideshow).bindAsEventListener(this)).observe("mouseover",Element.setOpacity.curry(this["inner"+S+"Button"],this.options.buttons.opacity.hover).wrap(blockInnerPrevNext).bindAsEventListener(this)).observe("mouseout",Element.setOpacity.curry(this["inner"+S+"Button"],this.options.buttons.opacity.normal).wrap(blockInnerPrevNext).bindAsEventListener(this));
    this["controller"+S].observe("click",this[s=="next"?s:"previous"].wrap(blockInnerPrevNext).wrap(stopSlideshow).bindAsEventListener(this))
    },this);
var f=[this.closeButton,this.slideshowButton];
if(!BROWSER_IS_WEBKIT_419){
    f.each(function(b){
        b.observe("mouseover",Element.setOpacity.bind(this,b,this.options.buttons.opacity.hover)).observe("mouseout",Element.setOpacity.bind(this,b,this.options.buttons.opacity.normal))
        },this)
    }else{
    f.invoke("setOpacity",1)
    }
    this.slideshowButton.observe("click",this.toggleSlideshow.bindAsEventListener(this));
this.controllerSlideshow.observe("click",this.toggleSlideshow.bindAsEventListener(this));
if(BROWSER_IS_WEBKIT_419||BROWSER_IS_FIREFOX_LT3){
    var g=function(a,b){
        if(this.lightview.getStyle("top").charAt(0)=="-"){
            return
        }
        a(b)
        };

    Event.observe(window,"scroll",this.restoreCenter.wrap(g).bindAsEventListener(this));
    Event.observe(window,"resize",this.restoreCenter.wrap(g).bindAsEventListener(this))
    }
    if(BROWSER_IS_FIREFOX_LT3){
    Event.observe(window,"resize",this.maxOverlay.bindAsEventListener(this))
    }
    if(BROWSER_IS_IE_LT7){
    function centerControllerIELT7(){
        if(this.controller){
            this.controller.setStyle({
                left:((document.documentElement.scrollLeft||0)+document.viewport.getWidth()/2).round()+"px"
                })
            }
        }
    Event.observe(window,"scroll",centerControllerIELT7.bindAsEventListener(this));
Event.observe(window,"resize",centerControllerIELT7.bindAsEventListener(this))
}
if(this.options.preloadHover){
    this._preloadImageHover=function(a){
        var b=a.findElement("a[class~=lightview], area[class~=lightview]");
        if(!b){
            return
        }
        a.stop();
        if(!b._view){
            new Lightview.View(b)
            }
            this.preloadImageHover(b)
        }.bindAsEventListener(this);
    $(document.body).observe("mouseover",this._preloadImageHover)
    }
},
toggleTopClose:function(a){
    if(this._topCloseEffect){
        Effect.Queues.get("lightview_topCloseEffect").remove(this.topCloseEffect)
        }
        var b={
        marginTop:(a?0:this.closeDimensions.topclose.height)+"px"
        };

    this._topCloseEffect=new Effect.Morph(this.topcloseButtonImage,{
        style:b,
        duration:0.16,
        queue:this.queue,
        delay:a?0.15:0
        })
    },
getScrollDimensions:function(){
    var a={};

    $w("width height").each(function(d){
        var D=d.capitalize(),ddE=document.documentElement;
        a[d]=Prototype.Browser.IE?[ddE["offset"+D],ddE["scroll"+D]].max():Prototype.Browser.WebKit?document.body["scroll"+D]:ddE["scroll"+D]
        });
    return a
    },
maxOverlay:function(){
    if(!BROWSER_IS_FIREFOX_LT3){
        return
    }
    this.overlay.setStyle(pixelClone(this.getScrollDimensions()))
    },
delegateClose:(function(){
    var b=".lv_Close, .lv_topButtons .lv_Button, .lv_Loading, .lv_controllerClose";
    return function(a){
        if(this.view&&this.view.options&&a.findElement(b+(this.view.options.overlayClose?", #lv_overlay":""))){
            this.hide()
            }
        }
})(),
toggleSideButton:function(a){
    var b=a.target,side=b.side,w=this.sideDimensions.width,offset=(a.type=="mouseover")?0:side=="prev"?w:-1*w,style={
        marginLeft:offset+"px"
        };

    if(!this.sideEffect){
        this.sideEffect={}
    }
    if(this.sideEffect[side]){
    Effect.Queues.get("lightview_side"+side).remove(this.sideEffect[side])
    }
    this.sideEffect[side]=new Effect.Morph(this[side+"ButtonImage"],{
    style:style,
    duration:0.2,
    queue:{
        scope:"lightview_side"+side,
        limit:1
    },
    delay:(a.type=="mouseout")?0.1:0
    })
},
getSurroundingIndexes:function(){
    if(!this.views){
        return
    }
    var a=this.position,length=this.views.length;
    var b=(a<=0)?length-1:a-1,next=(a>=length-1)?0:a+1;
    return{
        previous:b,
        next:next
    }
},
createCorner:function(a,b){
    var c=arguments[2]||this.options,radius=c.radius,border=c.border;
    position={
        top:(b.charAt(0)=="t"),
        left:(b.charAt(1)=="l")
        };

    if(l){
        var d=new Element("canvas",{
            className:"cornerCanvas"+b.capitalize(),
            width:border+"px",
            height:border+"px"
            });
        d.setStyle("float:left");
        a.insert(d);
        var e=d.getContext("2d");
        e.fillStyle=c.backgroundColor;
        e.arc((position.left?radius:border-radius),(position.top?radius:border-radius),radius,0,Math.PI*2,true);
        e.fill();
        e.fillRect((position.left?radius:0),0,border-radius,border);
        e.fillRect(0,(position.top?radius:0),border,border-radius)
        }else{
        var f=new Element("ns_vml:roundrect",{
            fillcolor:c.backgroundColor,
            strokeWeight:"1px",
            strokeColor:c.backgroundColor,
            arcSize:(radius/border*0.5).toFixed(2)
            }).setStyle({
            width:2*border-1+"px",
            height:2*border-1+"px",
            position:"absolute",
            left:(position.left?0:(-1*border))+"px",
            top:(position.top?0:(-1*border))+"px"
            });
        a.insert(f);
        f.outerHTML=f.outerHTML
        }
    },
hideOverlapping:(function(){
    function getOverlappingElements(){
        return $$("object, embed, select")
        }
        if(Prototype.Browser.IE&&document.documentMode>=8){
        getOverlappingElements=function(){
            return document.querySelectorAll("object, embed, select")
            }
        }
    return function(){
    if(this.preventingOverlap){
        return
    }
    var a=getOverlappingElements();
    this.overlappingRestore=[];
    for(var i=0,length=a.length;i<length;i++){
        var b=a[i];
        this.overlappingRestore.push({
            element:b,
            visibility:b.style.visibility
            });
        b.style.visibility="hidden"
        }
        this.preventingOverlap=true
    }
})(),
showOverlapping:function(){
    this.overlappingRestore.each(function(a,i){
        a.element.style.visibility=a.visibility
        });
    delete this.overlappingRestore;
    this.preventingOverlap=false
    },
getInnerDimensions:function(){
    return{
        width:this.innerDimensions.width,
        height:this.innerDimensions.height+this.menubarDimensions.height
        }
    },
getOuterDimensions:function(){
    var i=this.getInnerDimensions(),b=2*this.border;
    return{
        width:i.width+b,
        height:i.height+b
        }
    },
getBounds:function(){
    var a=21,safety=2*this.sideDimensions.height+a,v=this.getViewportDimensions();
    return{
        width:v.width-safety,
        height:v.height-safety
        }
    },
getViewportDimensions:function(){
    var v=document.viewport.getDimensions();
    if(this.controller&&this.controller.visible()&&this.views&&this.views.length>1){
        v.height-=this.controllerOffset
        }
        return v
    }
});
(function(){
    function guard(a,b){
        if(!this.view){
            return
        }
        a(b)
        }
        $w("fillMenuBar insertContent").each(function(a){
        this[a]=this[a].wrap(guard)
        },Lightview)
    })();
function pixelClone(b){
    var c={};

    Object.keys(b).each(function(a){
        c[a]=b[a]+"px"
        });
    return c
    }
    Object.extend(Lightview,{
    enableKeyboardNavigation:function(){
        if(!this.view.options.keyboard){
            return
        }
        this.keyboardEvent=this.keyboardDown.bindAsEventListener(this);
        document.observe("keydown",this.keyboardEvent)
        },
    disableKeyboardNavigation:function(){
        if(this.keyboardEvent){
            document.stopObserving("keydown",this.keyboardEvent)
            }
        },
keyboardDown:function(a){
    var b=String.fromCharCode(a.keyCode).toLowerCase(),keyCode=a.keyCode,staticGallery=(this.view.isGallery()||this.isSetGallery)&&!this.resizing,slideshow=this.view.options.slideshow,action;
    if(this.view.isMedia()){
        a.stop();
        action=(keyCode==Event.KEY_ESC||["x","c"].member(b))?"hide":(keyCode==37&&staticGallery&&(this.options.cyclic||this.position!=0))?"previous":(keyCode==39&&staticGallery&&(this.options.cyclic||this.getSurroundingIndexes().next!=0))?"next":(b=="p"&&slideshow&&staticGallery)?"startSlideshow":(b=="s"&&slideshow&&staticGallery)?"stopSlideshow":null;
        if(b!="s"){
            this.stopSlideshow()
            }
        }else{
    action=(keyCode==Event.KEY_ESC)?"hide":null
    }
    if(action){
    this[action]()
    }
    if(staticGallery){
    if(keyCode==Event.KEY_HOME&&this.views.first()!=this.view){
        this.show(0)
        }
        if(keyCode==Event.KEY_END&&this.views.last()!=this.view){
        this.show(this.views.length-1)
        }
    }
}
});
Lightview.afterShow=Lightview.afterShow.wrap(function(a,b){
    this.enableKeyboardNavigation();
    a(b)
    });
Object.extend(Lightview,{
    extendSet:function(a){
        var b=this.getSet(a);
        if(!b){
            return
        }
        b._each(Lightview.Extend)
        },
    preloadSurroundingImages:function(){
        if(this.views.length==0){
            return
        }
        var a=this.getSurroundingIndexes();
        this.preloadFromSet([a.next,a.previous])
        },
    preloadFromSet:function(c){
        var d=(this.views&&this.views.member(c)||Object.isArray(c))?this.views:c.rel?this.getViews(c.rel):null;
        if(!d){
            return
        }
        var e=$A(Object.isNumber(c)?[c]:c.type?[d.indexOf(c)]:c).uniq();
        e.each(function(a){
            var b=d[a];
            this.preloadImageDimensions(b)
            },this)
        },
    setPreloadedDimensions:function(a,b){
        a.preloadedDimensions={
            width:b.width,
            height:b.height
            }
        },
preloadImageDimensions:function(a){
    if(a.preloadedDimensions||a.isPreloading||!a.href){
        return
    }
    var P=new Image();
    P.onload=function(){
        P.onload=Prototype.emptyFunction;
        a.isPreloading=null;
        this.setPreloadedDimensions(a,P)
        }.bind(this);
    a.isPreloading=true;
    P.src=a.href
    },
preloadImageHover:function(a){
    var b=a._view;
    if(b&&b.preloadedDimensions||b.isPreloading||!b.isImage()){
        return
    }
    this.preloadImageDimensions(b)
    }
});
Element.addMethods({
    setPngBackground:function(a,b){
        a=$(a);
        var c=Object.extend({
            align:"top left",
            repeat:"no-repeat",
            sizingMethod:"scale",
            backgroundColor:""
        },arguments[2]||{});
        a.setStyle(BROWSER_IS_IE_LT7?{
            filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b+"'', sizingMethod='"+c.sizingMethod+"')"
            }:{
            background:c.backgroundColor+" url("+b+") "+c.align+" "+c.repeat
            });
        return a
        }
    });
Object.extend(Lightview,{
    detectType:function(a,b){
        var c;
        $w("flash image iframe quicktime").each(function(t){
            if(new RegExp("\\.("+this.typeExtensions[t].replace(/\s+/g,"|")+")(\\?.*)?","i").test(a)){
                c=t
                }
            }.bind(this));
    if(c){
        return c
        }
        if(a.startsWith("#")){
        return"inline"
        }
        if(document.domain&&document.domain!=(a).replace(/(^.*\/\/)|(:.*)|(\/.*)/g,"")){
        return"iframe"
        }
        return"image"
    },
detectExtension:function(a){
    var b=a.gsub(/\?.*/,"").match(/\.([^.]{3,4})$/);
    return b?b[1]:null
    },
createHTML:function(b){
    var c="<"+b.tag;
    for(var d in b){
        if(!["children","html","tag"].member(d)){
            c+=" "+d+'="'+b[d]+'"'
            }
        }
    if(new RegExp("^(?:area|base|basefont|br|col|frame|hr|img|input|link|isindex|meta|param|range|spacer|wbr)$","i").test(b.tag)){
    c+="/>"
    }else{
    c+=">";
    if(b.children){
        b.children.each(function(a){
            c+=this.createHTML(a)
            }.bind(this))
        }
        if(b.html){
        c+=b.html
        }
        c+="</"+b.tag+">"
    }
    return c
}
});
(function(){
    document.observe("dom:loaded",function(){
        var c=(navigator.plugins&&navigator.plugins.length);
        function detectPlugin(a){
            var b=false;
            if(c){
                b=($A(navigator.plugins).pluck("name").join(",").indexOf(a)>=0)
                }else{
                try{
                    b=new ActiveXObject(a)
                    }catch(e){}
            }
            return!!b
        }
        if(c){
        window.Lightview.Plugin={
            flash:detectPlugin("Shockwave Flash"),
            quicktime:detectPlugin("QuickTime")
            }
        }else{
        window.Lightview.Plugin={
            flash:detectPlugin("ShockwaveFlash.ShockwaveFlash"),
            quicktime:detectPlugin("QuickTime.QuickTime")
            }
        }
})
})();
Lightview.View=Class.create({
    initialize:function(b){
        if(b._view){
            return
        }
        var c=Object.isElement(b);
        if(c&&!b._view){
            b._view=this;
            if(b.title){
                b._view._title=b.title;
                if(Lightview.options.removeTitles){
                    b.setAttribute("title","")
                    }
                }
        }
    this.href=c?b.getAttribute("href"):b.href;
    if(this.href.indexOf("#")>=0){
    this.href=this.href.substr(this.href.indexOf("#"))
    }
    var d=b.rel;
if(d){
    this.rel=d;
    if(d.startsWith("gallery")){
        this.type="gallery"
        }else{
        if(d.startsWith("set")){
            if(d.include("][")){
                var e=d.split("]["),relType=e[1].match(/([a-zA-Z]*)/)[1];
                if(relType){
                    this.type=relType;
                    var f=e[0]+"]";
                    b.writeAttribute("rel",f);
                    this.rel=f
                    }
                }else{
            this.type=Lightview.detectType(this.href)
            }
        }else{
    this.type=d
    }
}
}else{
    this.type=Lightview.detectType(this.href);
    this.rel=this.type
    }
    $w("ajax flash gallery iframe image inline quicktime external media set")._each(function(a){
    var T=a.capitalize(),t=a.toLowerCase();
    if("image gallery media external set".indexOf(a)<0){
        this["is"+T]=function(){
            return this.type==t
            }.bind(this)
        }
    }.bind(this));
if(c&&b._view._title){
    var g=b._view._title.split(Lightview.options.titleSplit).invoke("strip");
    if(g[0]){
        this.title=g[0]
        }
        if(g[1]){
        this.caption=g[1]
        }
        var h=g[2];
    this.options=(h&&Object.isString(h))?eval("({"+h+"})"):{}
}else{
    this.title=b.title;
    this.caption=b.caption;
    this.options=b.options||{}
}
if(this.options.ajaxOptions){
    this.options.ajax=Object.clone(this.options.ajaxOptions);
    delete this.options.ajaxOptions
    }
},
isGallery:function(){
    return this.type.startsWith("gallery")
    },
isSet:function(){
    return this.rel.startsWith("set")
    },
isImage:function(){
    return(this.isGallery()||this.type=="image")
    },
isExternal:function(){
    return"iframe inline ajax".indexOf(this.type)>=0
    },
isMedia:function(){
    return!this.isExternal()
    }
});
Lightview.Extend=function(a){
    var b=$(a);
    new Lightview.View(a);
    return b
    };
(function(){
    function handleClick(a){
        var b=a.findElement("a[class~=lightview], area[class~=lightview]");
        if(!b){
            return
        }
        a.stop();
        this.Extend(b);
        this.show(b)
        }
        function handleMouseOver(a){
        var b=a.findElement("a[class~=lightview], area[class~=lightview]");
        if(!b){
            return
        }
        this.Extend(b)
        }
        function elementIE8(a){
        var b=a.target,type=a.type,currentTarget=a.currentTarget;
        if(currentTarget&&currentTarget.tagName){
            if(type==="load"||type==="error"||(type==="click"&&currentTarget.tagName.toLowerCase()==="input"&&currentTarget.type==="radio")){
                b=currentTarget
                }
            }
        if(b.nodeType==Node.TEXT_NODE){
        b=b.parentNode
        }
        return b
    }
    function hasClassNameIE8(a,b){
    if(!a){
        return
    }
    var c=a.className;
    return(c.length>0&&(c==b||new RegExp("(^|\\s)"+b+"(\\s|$)").test(c)))
    }
    function handleMouseOverIE8(a){
    var b=elementIE8(a);
    if(b&&hasClassNameIE8(b,"lightview")){
        this.Extend(b)
        }
    }
document.observe("lightview:loaded",function(){
    $(document.body).observe("click",handleClick.bindAsEventListener(Lightview));
    if(Lightview.options.removeTitles&&Prototype.Browser.IE&&document.documentMode>=8){
        $(document.body).observe("mouseover",handleMouseOverIE8.bindAsEventListener(Lightview))
        }else{
        $(document.body).observe("mouseover",handleMouseOver.bindAsEventListener(Lightview))
        }
    })
})();
Object.extend(Lightview,{
    buildController:function(){
        var b=this.options.controller,border=b.border;
        $(document.body).insert(this.controller=new Element("div",{
            id:"lightviewController"
        }).setStyle({
            zIndex:this.options.zIndex+1,
            marginBottom:b.margin+"px",
            position:"absolute",
            visibility:"hidden"
        }).insert(this.controllerTop=new Element("div",{
            className:"lv_controllerTop"
        }).insert(new Element("div",{
            className:"lv_controllerCornerWrapper lv_controllerCornerWrapperTopLeft"
        }).setStyle("margin-left: "+border+"px").insert(new Element("div",{
            className:"lv_Corner"
        }))).insert(new Element("div",{
            className:"lv_controllerBetweenCorners"
        }).setStyle({
            margin:"0 "+border+"px",
            height:border+"px"
            })).insert(new Element("div",{
            className:"lv_controllerCornerWrapper lv_controllerCornerWrapperTopRight"
        }).setStyle("margin-left: -"+border+"px").insert(new Element("div",{
            className:"lv_Corner"
        })))).insert(this.controllerMiddle=new Element("div",{
            className:"lv_controllerMiddle clearfix"
        }).insert(this.controllerCenter=new Element("ul",{
            className:"lv_controllerCenter"
        }).setStyle("margin: 0 "+border+"px").insert(new Element("li",{
            className:"lv_controllerSetNumber"
        }).insert(this.setNumber=new Element("div"))).insert(new Element("li",{
            className:"lv_ButtonWrapper lv_controllerPrev"
        }).insert(this.controllerPrev=new Element("div",{
            className:"lv_Button"
        }).setPngBackground(this.images+"controller_prev.png",{
            backgroundColor:b.backgroundColor
            }))).insert(new Element("li",{
            className:"lv_ButtonWrapper lv_controllerNext"
        }).insert(this.controllerNext=new Element("div",{
            className:"lv_Button"
        }).setPngBackground(this.images+"controller_next.png",{
            backgroundColor:b.backgroundColor
            }))).insert(new Element("li",{
            className:"lv_ButtonWrapper lv_controllerSlideshow"
        }).insert(this.controllerSlideshow=new Element("div",{
            className:"lv_Button"
        }).setPngBackground(this.images+"controller_slideshow_play.png",{
            backgroundColor:b.backgroundColor
            }))).insert(new Element("li",{
            className:"lv_ButtonWrapper lv_controllerClose"
        }).insert(this.controllerClose=new Element("div",{
            className:"lv_Button"
        }).setPngBackground(this.images+"controller_close.png",{
            backgroundColor:b.backgroundColor
            }))))).insert(this.controllerBottom=new Element("div",{
            className:"lv_controllerBottom"
        }).insert(new Element("div",{
            className:"lv_controllerCornerWrapper lv_controllerCornerWrapperBottomLeft"
        }).setStyle("margin-left: "+border+"px").insert(new Element("div",{
            className:"lv_Corner"
        }))).insert(new Element("div",{
            className:"lv_controllerBetweenCorners"
        }).setStyle({
            margin:"0 "+border+"px",
            height:border+"px"
            })).insert(new Element("div",{
            className:"lv_controllerCornerWrapper lv_controllerCornerWrapperBottomRight"
        }).setStyle("margin-left: -"+border+"px").insert(new Element("div",{
            className:"lv_Corner"
        })))));
        $w("prev next").each(function(s){
            var S=s.capitalize();
            this["controller"+S].prevnext=s
            },this);
        if(BROWSER_IS_WEBKIT_419){
            this.controller.hide=function(){
                this.setStyle("left:-9500px;top:-9500px;visibility:hidden;");
                return this
                };

            this.controller.show=function(){
                this.setStyle("visibility:visible");
                return this
                };

            this.controller.visible=function(){
                return(this.getStyle("visibility")=="visible"&&parseFloat(this.getStyle("top").replace("px",""))>-9500)
                }
            }
        this.controller.select(".lv_ButtonWrapper div").invoke("setStyle",pixelClone(this.controllerButtonDimensions));
    var c=this.controller.select(".lv_Corner");
    $w("tl tr bl br").each(function(a,i){
        if(b.radius>0){
            this.createCorner(c[i],a,b)
            }else{
            c[i].insert(new Element("div",{
                className:"lv_Fill"
            }))
            }
            c[i].setStyle({
            width:b.border+"px",
            height:b.border+"px"
            }).addClassName("lv_Corner"+a.capitalize())
        },this);
    this.controller.down(".lv_controllerMiddle").setStyle("width:100%;");
    this.controller.setStyle(BROWSER_IS_IE_LT7?{
        position:"absolute",
        top:"auto",
        left:""
    }:{
        position:"fixed",
        top:"auto",
        left:"50%"
    });
    this.controller.select(".lv_controllerBetweenCorners",".lv_controllerMiddle",".lv_Button",".lv_Fill").invoke("setStyle",{
        backgroundColor:b.backgroundColor
        });
    this.setNumber.update(new Template(b.setNumberTemplate).evaluate({
        position:999,
        total:999
    }));
    this.setNumber.setStyle({
        width:this.setNumber.getWidth()+"px",
        height:this.controllerCenter.getHeight()+"px"
        });
    this._fixateController();
    this.setNumber.update("");
    this.controller.hide().setStyle("visibility:visible");
    this.addObservers();
    this._lightviewLoadedEvent()
    },
_fixateController:function(){
    var b,finalWidth,controller=this.options.controller,border=controller.border;
    if(BROWSER_IS_IE_LT7){
        b=this.controllerCenter.getDimensions(),finalWidth=b.width+2*border;
        this.controllerCenter.setStyle({
            width:b.width+"px",
            margin:0
        });
        this.controllerMiddle.setStyle("width:auto;");
        this.controllerCenter.setStyle({
            paddingLeft:border+"px"
            });
        this.controllerMiddle.setStyle({
            width:finalWidth+"px"
            });
        $w("top bottom").each(function(a){
            this["controller"+a.capitalize()].setStyle({
                width:finalWidth+"px"
                })
            },this);
        this.controller.setStyle("margin-left:-"+(finalWidth/2).round()+"px")
        }else{
        this.controllerMiddle.setStyle("width:auto");
        b=this.controllerMiddle.getDimensions();
        this.setNumber.up().setStyle({
            lineHeight:b.height+"px",
            width:this.setNumber.getDimensions().width+"px"
            });
        this.controller.setStyle({
            width:b.width+"px",
            marginLeft:(0-(b.width/2).round())+"px"
            });
        this.controllerMiddle.setStyle({
            width:b.width+"px"
            });
        $w("top bottom").each(function(a){
            this["controller"+a.capitalize()].setStyle({
                width:b.width+"px"
                })
            },this)
        }
        this._controllerOffset=controller.margin+b.height+2*border;
    this._controllerHeight=this.controller.getHeight();
    this.setNumber.setStyle({
        lineHeight:b.height+"px"
        })
    }
});
Lightview.buildController=Lightview.buildController.wrap(function(a,b){
    var c=new Image();
    c.onload=function(){
        c.onload=Prototype.emptyFunction;
        this.controllerButtonDimensions={
            width:c.width,
            height:c.height
            };

        a(b)
        }.bind(this);
    c.src=this.images+"controller_prev.png";
    var d=(new Image()).src=this.images+"controller_slideshow_stop.png"
    });
Lightview.build=Lightview.build.wrap(function(a,b){
    a(b);
    this.buildController()
    });
Lightview.hide=Lightview.hide.wrap(function(a,b){
    if(this.view&&this.view.isSet()){
        this.controller.hide();
        this.setNumber.update("")
        }
        a(b)
    });
})();

Lightview.load();
document.observe("dom:loaded",Lightview.start.bind(Lightview));