$(document).ready(function(){

    artPageThumbSlider.ini();

    // tabs
    if ($('#artAddsTabs')) {
        $('#artAddsTabs').tabs();
    }

    artPageLightbox.ini();

    imageScaler.ini();

    article.ini();

    // ral links
    ralLink.ini($('.article-ral-link'));

    // din links
    dinLink.ini($('.article-din-link'));

    if ($('.wishlistHandler').length > 0) {
        $('.wishlistHandler').show();
    }
});

var ralLink = {
    container : false,
    ini : function (handler) {

        if (handler.length > 0) {
            handler.hover(ralLink.showTooltip, ralLink.hideTooltip)
            handler.mousemove(ralLink.position);
        }
    },

    showTooltip : function (event) {
        if ($(ralLink.container)) {
            ralLink.container = '#ralInfoBox' + $(this).attr('id');
            $(ralLink.container).show();
        }
    },

    hideTooltip : function (event) {
        if ($(ralLink.container)) {
            $(ralLink.container).hide();
        }
    },

    position : function (event) {
        if ($(ralLink.container)) {
            $(ralLink.container).css({
                top : event.pageY + 5,
                left : event.pageX - 35
            });
        }
    }
};

/**
 * @todo: DRY (compare it with ralLink)
 */
var dinLink = {
    container : false,
    ini : function (handler) {

        if (handler.length > 0) {
            handler.hover(dinLink.showTooltip, dinLink.hideTooltip)
            handler.mousemove(dinLink.position);
        }
    },

    showTooltip : function (event) {
        if ($(dinLink.container)) {
            dinLink.container = '#dinInfoBox' + $(this).attr('id');
            $(dinLink.container).show();
        }
    },

    hideTooltip : function (event) {
        if ($(dinLink.container)) {
            $(dinLink.container).hide();
        }
    },

    position : function (event) {
        if ($(dinLink.container)) {
            $(dinLink.container).css({
                top : event.pageY + 5,
                left : event.pageX - 35
            });
        }
    }
};


var article = {

    currentTab : false,

    ini : function() {
        // set first tab content
        tabs  = $('#tabTargetCol').find('div');
        article.currentTab = tabs[0].id;

        $('#tabTargetCol').append('<div id="artTellafriendCol" style="display: none;"></div>');
        $('#tabTargetCol').append('<div id="artInquiryCol" style="display: none;"></div>');

        /*$('.inquiryHandler').click( function () {

            if ( $('#artInquiryCol').length == 1
                && !$('#artInquiryCol').hasClass('loaded') ) {
                // load content
                $('#artInquiryCol').load('/xhr/inquiry/inquiry.php', {
                        loc : conf.loc,
                        art : conf.article,
                        artTitle : conf.artTitle,
                        p: 'art',
                    },
                    function(responseText, textStatus, XMLHttpRequest) {
                        if (textStatus == 'success') {
                            $('#artInquiryCol').addClass('loaded');
                            article.registerForms();

                            $('#' + article.currentTab).hide();
                            article.currentTab = 'artInquiryCol';
                            $('#' + article.currentTab).show();
                        }
                    }
                );
            } else {
                $('#' + article.currentTab).hide();
                article.currentTab = 'artInquiryCol';
                $('#' + article.currentTab).show();
            }



            return false;
        }); */

        $('.tellafriendHandler').click( function () {

            if ( $('#artTellafriendCol').length == 1
                && !$('#artTellafriendCol').hasClass('loaded') ) {
                // load content
                $('#artTellafriendCol').load('/xhr/tellafriend/tellafriend.php', {
                        loc : conf.loc,
                        art : conf.article,
                        p: 'art'
                    },
                    function(responseText, textStatus, XMLHttpRequest) {
                        if (textStatus == 'success') {
                            $('#artTellafriendCol').addClass('loaded');
                            article.registerForms();

                            $('#' + article.currentTab).hide();
                            article.currentTab = 'artTellafriendCol';
                            $('#' + article.currentTab).show();
                        }
                    }
                );
            } else {
                $('#' + article.currentTab).hide();
                article.currentTab = 'artTellafriendCol';
                $('#' + article.currentTab).show();
            }


            return false;
        });

    },

    registerForms : function() {


        // inquiry form
        if ($("#inquiryform").length > 0) {

            $("#inquiryform").validate({
                rules: {
                    name: "required",
                    address: "required",
                    zip: "required",
                    city: "required",
                    country: "required",
                    tel: "required",
                    subject: "required",
                    message: "required"
                },
                messages: {
                    name: "Please enter your name.",
                    address: "Please enter your address.",
                    zip: "Pleas enter your zipcode.",
                    city: "Please enter your city.",
                    country: "Please choose your country.",
                    tel: "Please enter your phone number.",
                    subject: "Please enter a subject.",
                    message: "Please enter your message."
                },
                submitHandler: function() {
                    $("#inquiryform").ajaxSubmit({
                        url: '/xhr/inquiry/inquiry.php',
                        type: 'post',
                        target: $("#artInquiryCol")
                    });
                }
            });
        }


        // tell a friend form
        if ($("#tellAFriendForm").length > 0) {
            $("#tellAFriendForm").validate({
                rules: {
                    sendername: "required",
                        sender: {
                        required: true,
                        email: true
                    },
                    recipientname: "required",
                    recipient: {
                        required: true,
                        email: true
                    }
                },
                messages: {
                    sendername: "Please enter your name.",
                    sender: "Please enter your E-Mail.",
                    recipientname: "Please enter the recipients name.",
                    recipient: "Please enter the recipients E-Mail."
                },
                submitHandler: function(form) {
                    jQuery(form).ajaxSubmit({
                        target: $("#artTellafriendCol")
                    });

                }
            });
        }

    }
};


var artPageThumbSlider = {

    ini : function() {

        if ($('.artImageThumbOuter').length > 1) {

            $('.artThumbSlideShow').cycle({
                fx:     'scrollHorz',
                speed:  'fast',
                timeout: 0,
                next: '#artThumbSlideNext',
                prev: '#artThumbSlidePrev'
            });
        }
    }

};

var imageScaler = {
    container : '#MainImage',

    ini : function() {
        if ($(imageScaler.container).length > 0) {
            imageScaler.imgFit();
        }
    },

    imgRatio : function() {
        return ($(imageScaler.container).height() / $(imageScaler.container).width());
    },

    imgWidth : function() {
        return ($(imageScaler.container).width());
    },

    contWidth : function() {
        return $(imageScaler.container).offsetParent().width();
    },

    imgFit : function() {
        if(imageScaler.imgWidth()>imageScaler.contWidth()) {
            var newWidth = imageScaler.contWidth();
            $(imageScaler.container).width(newWidth);
        }
    }
};

var artPageLightbox = {

    overlayName : 'lOverlay',

    lightboxName : 'lBorderContainer',

    lContentContainer : 'lContentContainer',

    imageArray : [],

    movieArray : [],

    mImages : false,

    currentImage : 0,

    buildInterface : function() {

        $('body').append('<div style="display: none;" id="' + artPageLightbox.overlayName + '"></div>');
        $('body').append('<div style="display: none;" id="' + artPageLightbox.lightboxName + '"></div>');
        $('#' + artPageLightbox.lightboxName).append('<div class="' + artPageLightbox.lContentContainer + '"></div>');
        $('.' + artPageLightbox.lContentContainer).append('<div id="lLoadingOverlay"><div id="lLoading"><img src="/img/misc/loading.gif" alt="loading" title="loading" /></div></div>');
        $('.' + artPageLightbox.lContentContainer).append('<div class="lImage" id="currentImage" style="display: none;"></div><div id="currentImageNumber"></div>');
        $('.' + artPageLightbox.lContentContainer).append('<div class="lImage" id="currentMovie" style="display: none;"></div>');
        $('.' + artPageLightbox.lContentContainer).append('<div class="lImageMenu"></div>');
        $('.' + artPageLightbox.lContentContainer).append('<div class="lFooter"><img id="lBrnClose" src="/img/icons/cross-icon-blue.gif" alt="close" /></div>');

        // check if there is any movie

    },

    ini : function() {

        // get all images
        artPageLightbox.imageArray.length = 0;
        artPageLightbox.currentImage = 0;

        // article images
        for ( var i = 0; i < $('a[rel=lightbox[articleImages]]').length; i++ ) {

            grpImg = $('a[rel=lightbox[articleImages]]')[i].getAttribute('href').replace(/hq/g, 'grp');

            artPageLightbox.imageArray.push(new Array(
                $('a[rel=lightbox[articleImages]]')[i].getAttribute('href'),
                $('a[rel=lightbox[articleImages]]')[i].getAttribute('title'),
                grpImg
            ));
        }

        // article movies
        for ( var i = 0; i < $('a[rel=lightbox[articleMovies]]').length; i++ ) {
            artPageLightbox.movieArray.push(new Array(
                $('a[rel=lightbox[articleMovies]]')[i].getAttribute('title')
            ));
        }

        // preload images
        artPageLightbox.preloadMenuImages();

        artPageLightbox.buildInterface();

        $('#zoomMediaIcon').show();
        $('#zoomMediaIcon').click(function(event) {
            // Listen only to the left button click
            if (event.button == 0) {
                artPageLightbox.run(false, 'image');
                return false;
            }
        });


        $('#MainImage').click(function(event) {
            // Listen only to the left button click
            if (event.button == 0) {
                artPageLightbox.run(false, 'image');
                return false;
            }
        });


        $('.artLightboxHandler').click( function(item) {
            artPageLightbox.run(item, 'image');
            return false;
        });

        $('.artLightboxHandler').mouseover( function(item) {

            artImg = $(this).attr('href').replace(/hq/g, 'art');
            $('#MainImage').attr('src', artImg);
            $('#MainImageDescription').html($(this).children().attr('alt'));

            return false;
        });

        $('.movieLightboxHandler').click( function(item) {
            artPageLightbox.run(item, 'movie');
            return false;
        });

        $('#' + artPageLightbox.overlayName).click( function() {
            artPageLightbox.hide();
            return false;
        });

        $('#lBrnClose').click( function() {
            artPageLightbox.hide();
            return false;
        });

        $(window).resize( function() {
            artPageLightbox.updateSizes();
        });

        $(document).keydown( function(event) {
            if (event.keyCode == '27') {
                artPageLightbox.hide();
            }
        });

        return false;

    },

    updateSizes : function() {

        dWidth  = $(document).width();
        dHeight = $(document).height();

        $('#' + artPageLightbox.overlayName).css({width: dWidth, height : dHeight});

    },

    run : function(item, type) {

        $('embed, object').css({ 'visibility' : 'hidden' });
        $('#currentImage').append('<img src="/img/misc/blank.gif" title="" class="lGrpImage" id="lPreviewImage" />');

        if (type == 'image') {

            artPageLightbox.currentImage = 0;

            // which image belongs to link?
            if (item) {
                while ( artPageLightbox.imageArray[artPageLightbox.currentImage][0] != item.currentTarget.getAttribute('href') ) {
                    artPageLightbox.currentImage++;
                }
            }
        }

        artPageLightbox.setImageMenu();
        artPageLightbox.updateSizes();

        $('#' + artPageLightbox.overlayName).show();
        $('#' + artPageLightbox.lightboxName).fadeIn("fast");

         $('.lImageLink img').each(function(key, item) {
             if ($(item).width()>70) {
                $(item).width(70);
             }
         });

        // register all these images
        $('.lImageLink').click(function() {

            curImg = $(this).attr('rel');

            if (artPageLightbox.currentImage != curImg) {
                artPageLightbox.startLoader();
                artPageLightbox.currentImage = curImg;
                artPageLightbox.setCurrentImageNumber();
                artPageLightbox.loadImageForView();
            }

            return false;  // Avoid the browser following the link
        });


        if (type == 'image') {

            $('#currentMovie').hide();
            $('#currentImage').show();

            // get big image
            artPageLightbox.loadImageForView();
        }

        if (type == 'movie') {

            $('#currentImage').hide();
            $('#currentMovie').show();

            $('#currentMovie').load('/xhr/art/movie.php', {
                art : conf.article,
                movie : item.currentTarget.getAttribute('title')
            },
            function (responseText, textStatus, XMLHttpRequest) {
                if (textStatus == 'success') {
                    artPageLightbox.stopLoader();
                }
            });

        }
    },


    loadImageForView : function() {

        $('#currentMovie').hide();
        $('#currentImage').show();

        // Image preload process
        var objImagePreloader = new Image();
        objImagePreloader.onload = function() {
            $('#lPreviewImage').attr('src', artPageLightbox.imageArray[artPageLightbox.currentImage][0]);

            // change image
            artPageLightbox.stopLoader();

            //clear onLoad, IE behaves irratically with animated gifs otherwise
            objImagePreloader.onload=function(){};
        };

        objImagePreloader.src = artPageLightbox.imageArray[artPageLightbox.currentImage][0];
    },


    setCurrentImageNumber : function() {

        $('#currentImageNumber').text(parseInt(artPageLightbox.currentImage)+1 + '/' + artPageLightbox.imageArray.length);

    },

    preloadMenuImages : function() {

        artPageLightbox.startLoader();

        artPageLightbox.mImages = new Array();

        for (i=0; i < artPageLightbox.imageArray.length; i++) {
            if (artPageLightbox.imageArray[i]) {
                artPageLightbox.mImages[i]     = new Image();
                artPageLightbox.mImages[i].src = artPageLightbox.imageArray[i][2];
            }
        }
    },

    setImageMenu : function() {

        // show preloader
        artPageLightbox.startLoader();

        // fill all images into menu (only grpImages)
        for (i=0; i < artPageLightbox.imageArray.length; i++) {
            if (artPageLightbox.mImages[i]) {
                $('.lImageMenu').append('<a href="' + artPageLightbox.mImages[i].src + '" class="lImageLink" rel="' + i + '"><img src="' + artPageLightbox.mImages[i].src + '" class="lGrpImage" /></a>');
            }
        }

    },

    hide : function() {

        $('#' + artPageLightbox.overlayName).hide();
        $('#' + artPageLightbox.lightboxName).hide();

        $('#currentImage').empty();
        $('.lImageMenu').empty();

    },

    startLoader : function() {

        $('#lLoadingOverlay')
            .css({opacity: 0.7})
            .show();

    },

    stopLoader : function() {

        $('#lLoadingOverlay').fadeOut(1000);

    }

};
