YAHOO.namespace("masi.lightbox");
var myLightbox = function () {
    var Event = YAHOO.util.Event, Dom = YAHOO.util.Dom, currentThumb, slbActive = false, slbDisplay;
    var slblinks = Dom.getElementsByClassName('slbLink', 'a');

    var fadeIn = function() {
        var ani = new YAHOO.util.Anim(slbDisplay , { opacity: {from: 0, to: 1 } }, .5, YAHOO.util.Easing.easeOut);
        ani.animate();
    }

    var showImage = function (obj,header) {
        var vpw = Dom.getViewportWidth() - 50;
        var vph = Dom.getViewportHeight() - 100;

        if (obj.width > vpw || obj.height > vph){
            var objRatio = obj.width / obj.height;

            var vpRatio = vpw / vph;
            if (objRatio <= vpRatio) {
                obj.height = vph;
                obj.width = obj.width * (vph / obj.height);
            } else {
                obj.width = vpw;
                obj.height = obj.height * (vpw / obj.width);
            }
        }

        YAHOO.masi.lightbox.photoViewer.cfg.setProperty('width', (obj.width + 50)  + 'px');
        YAHOO.masi.lightbox.photoViewer.setHeader(unescape(header));

        Dom.setStyle(slbDisplay,'width', (obj.width + 40)+'px');
        Dom.setStyle(slbDisplay,'height', obj.height+'px');
        Dom.setStyle(slbDisplay,'overflow-x', 'hidden');
        Dom.setStyle(slbDisplay,'overflow-y', 'auto');
        Dom.setStyle(slbDisplay,'text-align', 'center');
        //Dom.setStyle(slbDisplay,'background', 'url('+obj.src+') no-repeat');

        var slbImg = document.createElement('img');
        slbImg.setAttribute('src',obj.src);
        slbImg.setAttribute('style','padding: 0 20px; background-color: #fff;');
        slbDisplay.appendChild(slbImg);

        YAHOO.masi.lightbox.photoViewer.center();

        if (slbActive == false) {
            slbActive = true;
            YAHOO.util.Dom.setStyle(slbDisplay, 'opacity', '1');
            YAHOO.masi.lightbox.photoViewer.show();
        } else {
            fadeIn();
        }
    }

    var fadeOut = function(obj,header) {
        if (slbActive == true) {
            var ani = new YAHOO.util.Anim(slbDisplay , { opacity: {from: 1, to: 0 } }, .5, YAHOO.util.Easing.easeOut);
            ani.animate();
            ani.onComplete.subscribe(function(){showImage(obj,header)});
        } else {
            showImage(obj,header);
        }
    }

    var loadImage = function(el) {
        if (el.src && el.src != '') {
            currentThumb = el.src;
            var imageSrc = el.parentNode.href;
            var header = (el.alt != null) ? el.alt : '';
            var objImage = new Image();
            Event.on(objImage, 'load', function(){fadeOut(objImage,header);});
            objImage.src = imageSrc;
        }
    }

    var prevThumb = function() {
        for (i=0; i<slblinks.length; i++) {
            if (slblinks[i].firstChild.src == currentThumb) {
                if (i == 0) {
                    i = slblinks.length-1;
                } else {
                    i = i - 1;
                }
                loadImage(slblinks[i].firstChild);
                break;
            }
        }
    }

    var nextThumb = function() {
        for (i=0; i<slblinks.length; i++) {
            if (slblinks[i].firstChild.src == currentThumb) {
                if (i == slblinks.length-1) {
                    i = 0;
                } else {
                    i = i + 1;
                }
                loadImage(slblinks[i].firstChild);
                break;
            }
        }
    }

    var hideMe = function() {
        var slbDisplay = document.getElementById('slbDisplay');// 1st 3 lines removes the preview image
        var obj = slbDisplay.firstChild;                       // in the lightbox to prevent the 
        slbDisplay.removeChild(obj);                           // images from stacking up
        
        slbActive = false;
        this.hide();
    }

    YAHOO.masi.lightbox.photoViewer = new YAHOO.widget.SimpleDialog("photoViewer",{
        width: "300px",
        fixedcenter: true,
        visible: false,
        draggable: false,
        close: false,
        modal: true,
        text: '<div id="slbDisplay"></div>',
        constraintoviewport: true,
        effect: [ {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5} ],
//        buttons: [ { text:"Prev", handler:prevThumb },{ text:"Next", handler:nextThumb },{ text:"Close", handler:hideMe, isDefault:true } ]
        buttons: [ { text:"Close", handler:hideMe, isDefault:true } ]
    });

    YAHOO.masi.lightbox.photoViewer.setHeader('Lightbox');
    YAHOO.masi.lightbox.photoViewer.render("container");
    slbDisplay = Dom.get('slbDisplay');

    YAHOO.Bubbling.addDefaultAction('slbLink',
        function (layer, args) {
            loadImage(args[1].target);
            return true;
        }
    );
}
YAHOO.util.Event.addListener(window, "load", myLightbox);


