var Application = {
    consoleLog: true,
    version:    '1.0',
    baseUrl:    $('meta[name=config-baseUrl]').attr('content'),
    eventIds:   [],
    gallery1:   [],
    gallery2:   [],
    gallery3:   [],
    galleryTop: [],
    enableEventGallery: $('meta[name=config-enableGallery]').attr('content'),
    backUrl: $('#backUrl').val(),

    bindUI: function() {
        var dateInput = $(".datepicker");
        if (dateInput.length) {
            dateInput.datepicker();
            dateInput.datepicker
            (
                'option',
                {
                    disabled: false,
                    dateFormat: 'dd.mm.yy'
                }
            );
            if ($('#h_date').length) {
                dateInput.datepicker('setDate' , $('#h_date').val());
            }
        }

        if ($('#teaser').length) {
            $('#teaser').dialog({
                modal: true,
                draggable: false,
                resizable: false,
                title: '',
                height: 540,
                width: 805
            });
        }

        if ($('textarea.edit-content').length) {
            tinyMCE.init({
                mode: "textareas",
                theme: "advanced",
                plugins: "table,advlink,preview",
                language: "de",
                theme_advanced_buttons1: "bold,italic,underline,sup,|,justifyleft,justifyright,|,fontsizeselect,|,tablecontrols,|,bullist,numlist,outdent,indent,|,link,unlink,|,forecolor,backcolor,|,code",
                theme_advanced_buttons2: "",
                theme_advanced_buttons3: "",
                theme_advanced_toolbar_location: "top",
                theme_advanced_toolbar_align: "left",
                theme_advanced_resizing: true
            });
            Application.bindCancelEdit();
        }
    },
    
    bindImageGallery: function() {
        
        $('.pages').css('background', 'none repeat scroll 0 0 rgba(0, 0, 0, .95)').css('height', '550px').css('padding-top', '5px');
        // We only want these styles applied when javascript is enabled
        $('div.navigation').css({'width' : '250px', 'float' : 'left'});
        //thumbs = max width 120px
        $('div.content').css('display', 'block');

        // Initially set opacity on thumbs and add
        // additional styling for hover effect on thumbs
        var onMouseOutOpacity = 0.67;
        $('#thumbs ul.thumbs li').opacityrollover({
            mouseOutOpacity:   onMouseOutOpacity,
            mouseOverOpacity:  1.0,
            fadeSpeed:         'fast',
            exemptionSelector: '.selected'
        });

        // Initialize Advanced Galleriffic Gallery
        var gallery = $('#thumbs').galleriffic({
            delay:                     500,
            numThumbs:                 15,
            preloadAhead:              10,
            enableTopPager:            true,
            enableBottomPager:         true,
            maxPagesToShow:            3,
            imageContainerSel:         '#slideshow',
            controlsContainerSel:      '#controls',
            captionContainerSel:       '#caption',
            loadingContainerSel:       '#loading',
            renderSSControls:          false,
            renderNavControls:         false,
            playLinkText:              'Play Slideshow',
            pauseLinkText:             'Pause Slideshow',
            prevLinkText:              '&lsaquo; Previous Photo',
            nextLinkText:              'Next Photo &rsaquo;',
            nextPageLinkText:          'Vor &rsaquo;',
            prevPageLinkText:          '&lsaquo; Zurück',
            enableHistory:             false,
            autoStart:                 false,
            syncTransitions:           true,
            defaultTransitionDuration: 500,
            onSlideChange:             function(prevIndex, nextIndex) {
                // 'this' refers to the gallery, which is an extension of $('#thumbs')
                this.find('ul.thumbs').children()
                    .eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
                    .eq(nextIndex).fadeTo('fast', 1.0);
            },
            onPageTransitionOut:       function(callback) {
                this.fadeTo('fast', 0.0, callback);
            },
            onPageTransitionIn:        function() {
                this.fadeTo('fast', 1.0);
            }
        });
    },

    bindRequestLoader: function() {
        $('#loader').bind('ajaxSend', function() {
            $(this).show();
        }).bind('ajaxComplete', function() {
            $(this).hide();
        });
    },
    
    bindStartpage: function() {
        $('#home').bind('click', function(){
            location.href = 'http://www.nachbar-berlin.de';
        });
    },

    bindCancelEdit: function() {
        var cancel = $('#edit-cancel');
        if (cancel.length) {
            cancel.bind('click.cancel', function(){
                location.href = Application.backUrl;
            });
        }
    },

    bindAdminLoginLogout: function() {
        var login = $('#admin-link-login');
        if (login.length) {
            login.bind('click', function() {
                $(this).hide();
                $('#login span').show();
            });
        }

        var logout = $('#admin-link-logout');
        if (logout.length) {
            logout.bind('click', function() {
                location.href = Application.baseUrl + '/admin/events/logout';
            });
        }
    },

    bindDeleteEvent: function() {
        $('a.events-delete').bind('click', function() {
             return confirm('Event und Fotos löschen?');
        });
    },

    calculateRotateLastEvent: function() {
        if (Application.enableEventGallery == '1') {
            //set top gallery images
            tmp = $('#topImages').val();
            Application.galleryTop['images'] = $.evalJSON(tmp);

            tmp = $('#eventIds').val();
            Application.eventIds = $.evalJSON(tmp);

            for (var i = 0; i < Application.eventIds.length; i++){
                tmpImages = $('#eventImages_' + Application.eventIds[i]).val();

                if (i == 0) {
                    Application.gallery1['eventId'] = Application.eventIds[i];
                    Application.gallery1['images'] = $.evalJSON(tmpImages);
                }
                if (i == 1) {
                    Application.gallery2['eventId'] = Application.eventIds[i];
                    Application.gallery2['images'] = $.evalJSON(tmpImages);
                }
                if (i == 2) {
                    Application.gallery3['eventId'] = Application.eventIds[i];
                    Application.gallery3['images'] = $.evalJSON(tmpImages);
                }
            }
        }
    },

    rotateEventImages: function() {
        if (Application.enableEventGallery == '1') {
            if (Application.gallery1.images.length) {
                random = Math.floor(Math.random()*Application.gallery1.images.length);
                randomImage = Application.gallery1.images[random];
                eventId = Application.gallery1.eventId;
                $('#event-image_' + eventId).attr('src', randomImage);
            }
            if (Application.gallery2.images.length) {
                random = Math.floor(Math.random()*Application.gallery2.images.length);
                randomImage = Application.gallery2.images[random];
                eventId = Application.gallery2.eventId;
                $('#event-image_' + eventId).attr('src', randomImage);
            }
            if (Application.gallery3.images.length) {
                random = Math.floor(Math.random()*Application.gallery3.images.length);
                randomImage = Application.gallery3.images[random];
                eventId = Application.gallery3.eventId;
                $('#event-image_' + eventId).attr('src', randomImage);
            }
            
        }
    },

    rotateTopGalleryImages: function() {
        if (Application.galleryTop['images'].length) {
            random = Math.floor(Math.random()*Application.galleryTop['images'].length);
            randomImage = Application.galleryTop['images'][random];
            $('#content').css('background-image', "url('" + randomImage + "')");
        }
    }
};
