YAHOO.namespace('birka');

YAHOO.birka.init = function() {

    //Init menus

    var menuTop = new YAHOO.widget.MenuBar("menu-top", {
        autosubmenudisplay: true,
        visible: false
    });
    menuTop.render();
    menuTop.show();

    var menuUser = new YAHOO.widget.MenuBar("menu-user", {
        autosubmenudisplay: true,
        visible: false
    });
    menuUser.render();
    menuUser.show();

    var menuMain = new YAHOO.widget.MenuBar("menu-main", {
        autosubmenudisplay: true,
        visible: false
    });
    menuMain.render();
    menuUser.show();

    //Init fylke

    if (YAHOO.util.Dom.inDocument('fylke')) {
        YAHOO.util.Event.addListener("fylke", "change", function() {
            /*
            var url = window.location.href;
            if (url.search("&fylke=") > -1) {
                url = url.substr(0, url.indexOf('&fylke='));
            }
            */
           if (this.options[this.selectedIndex].value != '%') {
                url = 'http://birka.no/index.php?bedriftvalg=list_bedrift&fylke=' + this.options[this.selectedIndex].value;
                window.location = url;
           }
        });
    }

    //Init carousel

    if (YAHOO.util.Dom.inDocument('carousel')) {

        var images = [];

        var getImageTag = function(img, i) {
            if (img.className.search('bit') > -1) {
                var imageTag = '<a href="index.php?artikkelvalg=vis_innhold&visning=1&id=1308&kat=158&m=201&pos=' + i + '"><img width="65" height="65" src="gfx/spacer.gif" class="cat-' + img.cat + ' ' + img.className + '"/></a>';
            } else if (img.className.search('maanedens') > -1) {
                imageTag = '<a href="index.php?bedriftvalg=vis_maanedens&pos=' + i + '"><img width="65" height="65" src="gfx/spacer.gif" class="cat-' + img.cat + ' ' + img.className + '"/></a>';
            } else {
               imageTag = '<a href="index.php?bedriftvalg=visbedrift&id=' + img.id + '&pos=' + i + '"><img width="65" height="65" src="/bedrift/visbilde.php?id=' + img.id + '&dim=65" class="cat-' + img.cat + ' ' + img.className + '"/></a>';
            }
            return imageTag;
        }

        if (window.location.href.match("index.php")) {
            var target = window.location.href.replace("index", "carousel");
        } else {
            target = "carousel.php";
        }

        YAHOO.util.Connect.asyncRequest("GET", target, {
            success: function (o) {
                images = YAHOO.lang.JSON.parse(o.responseText).images;
                var limit = 10;
                var curpos = limit;
                var carousel = new YAHOO.widget.Carousel('carousel', {
                    numItems: images.length,
                    numVisible: limit,
                    isVertical: false,
                    animation: {speed: 0.5}
                });
                carousel.STRINGS.ITEM_LOADING_CONTENT = '';
                carousel.render();
                carousel.show();
                carousel.on("loadItems", function (o) {
                    var i = curpos,
                        j = 0,
                        r = images.slice(i, (i + limit));
                    curpos += r.length;
                    while (i < curpos) {
                        if (r[j]) {
                            this.addItem(getImageTag(r[j], i));
                        } else {
                            break;
                        }
                        i++;
                        j++;
                    }
                });
                for (var i = 0; i < limit; i++) {
                    if (images[i]) {
                        carousel.addItem(getImageTag(images[i], i));
                    }
                }

                YAHOO.util.Event.addListener("carousel-prev", "click", function() {
                    carousel.scrollPageBackward();
                });
                YAHOO.util.Event.addListener("carousel-next", "click", function() {
                    carousel.scrollPageForward()
                });
            },
            failure: function (o) {}
        });

        //Init lightbox

        var zoomables = YAHOO.util.Dom.getElementsByClassName('zoomable', 'img');
        var replaceImageDim = function(imgEl) {
            var re = new RegExp('&dim=\\d+');
            return '<table><tr><td><img src="' + imgEl.src.replace(re, '&max=500') + '" /></td></tr></table>'
        }
        for (var i = 0; i < zoomables.length; i++) {
            /*
            var zoom = document.createElement('a');
            zoom.innerHTML = '+';
            zoom.className = 'zoom';
            zoomables[i].parentNode.insertBefore(zoom, zoomables[i].nextSibling);
            */
            YAHOO.util.Event.addListener(zoomables[i], 'click', function() {                
                var lightbox = new YAHOO.widget.Panel("lightbox", {
                    width: "520px",
                    height: "550px",
                    fixedcenter: true,
                    constraintoviewport: true,
                    underlay: "shadow",
                    close: true,
                    modal: true,
                    visible: false,
                    draggable: false
                });
                lightbox.setBody(replaceImageDim(this.element));
                lightbox.render();
                lightbox.show();                
                if (this.all.length > 1) {
                    var callback = {
                        all: this.all,
                        element: this.element,
                        index: this.index
                    };
                    //Prev image
                    var prev = new Image();
                    prev.src = 'img/prev.gif';
                    prev.className = 'prev';
                    YAHOO.util.Event.addListener(prev, 'click', function() {
                        this.index--;
                        if (this.index < 0) {
                            this.index = (this.all.length - 1);
                        }
                        lightbox.setBody(replaceImageDim(this.all[this.index]));
                    }, callback, true);
                    lightbox.setFooter(prev);
                    //Links
                    if (this.all.length <  10) {
                        for (var i = 0; i < this.all.length; i++) {
                            var link = document.createElement('a');
                            link.innerHTML = Number(i) + 1;
                            YAHOO.util.Event.addListener(link, 'click', function() {
                                lightbox.setBody(replaceImageDim(this.all[this.index]));
                            }, {
                                all: this.all,
                                element: this.element,
                                index: i
                            }, true);
                            lightbox.appendToFooter(link);
                        }
                    }
                    //Next image
                    var next = new Image();
                    next.src = 'img/next.gif';
                    next.className = 'next';
                    YAHOO.util.Event.addListener(next, 'click', function() {
                        this.index++;
                        if (this.index >= this.all.length) {
                            this.index = 0;
                        }
                        lightbox.setBody(replaceImageDim(this.all[this.index]));
                    }, callback, true);
                    lightbox.appendToFooter(next);
                }
            }, {
                all: zoomables,
                element: zoomables[i],
                index: i
            }, true);
        }
    };
};

YAHOO.util.Event.onDOMReady(YAHOO.birka.init);