jQuery(document).ready(function($){

    add_qtip();
    var url = 'http://' + window.location.host + window.location.pathname;
    var $gallery_container = $('#public_gallery .gallery_container');
    $gallery_container.data('entry_container_height', $('#public_gallery .entries').height());
    
        
    
    
    /* ~ajax
    ------------------------------------------- */
    
    //view an entry
    $('#public_gallery .gallery_container .entry')
    .live('click', function(e)
        {                       
            if(!$(e.currentTarget).hasClass('active')){
                $(e.currentTarget).siblings().removeClass('active');
                $(e.currentTarget).addClass('active');
                $('#viewer').children().stop().fadeOut('fast', load_new_entry($(e.currentTarget)));         
                $("#jquery_jplayer").jPlayer("stop");
                return false;
            }
        }
    );
    
    //pagination
    $('#public_gallery .gallery_navigation button, #public_gallery .gallery_navigation h1')
    .live('click', function(event)
    {
        var $button             = $(event.target);
        var $gallery            = $button.parent().parent().parent();
        var current_page        = $gallery.attr('current_page');
        var total_posts         = $gallery.attr('total_posts');
        var posts_per_page      = $gallery.attr('posts_per_page');
        var action              = 'gallery_page';
        var total_pages         = Math.ceil(total_posts/posts_per_page);
        
        if($button.is('.next_page') && !$button.is('.end')){
            var next_page       = $button;
            var previous_page   = $gallery.find('.previous_page');          
            if(current_page < total_pages){
                current_page =  (parseInt(current_page) + 1);               
            }
        }
        else if($button.is('.previous_page') && !$button.is('.end')){
            var previous_page           = $button;
            var next_page   = $gallery.find('.previous_page');          
            if(current_page > 1){
                current_page =  (parseInt(current_page) - 1);                               
            }
        }
        else if($button.is('h1') && !$button.is('.ignore')){                        
            var offset = $button.text() - current_page;
            current_page =  (parseInt(current_page) + offset);
        }
        else{
            return false;
        }               
        $gallery.find('.entry').stop().fadeOut( 'fast', load_new_page(posts_per_page, total_posts, action, current_page, $gallery) );               
        return false;
    });
    
    function load_new_page(posts_per_page, total_posts, action, current_page, $gallery){
        $.ajax({
            type:   "POST",
            url:    url + '?page_id=' + $('#public_gallery').attr('ajax_page_id'),
            data:   {posts_per_page: posts_per_page, total_posts: total_posts, action: action, current_page: current_page},
            complete: function(XMLHttpRequest)
            {
                $gallery.parent().html(innerShiv(XMLHttpRequest.responseText));
                $('#public_gallery .gallery .entry img').load(function(e){
                    scale_gallery_images()
                });
                $('#public_gallery .gallery .entries').remove_whitespace()
                add_qtip()
            }
        });
    }
    
    function load_new_entry($post_target){              
        var $entry_view     = $('#public_gallery #viewer');
        var action          = 'entry_view'      
        var post_id         = $post_target.attr('data-id');
        var post_type       = $post_target.attr('data-type')
        var ajax_page_id    = $('#public_gallery').attr('ajax_page_id');
        $.ajax({
            type:   "POST",
            url:     url + '?page_id=' + ajax_page_id,
            data:   {post_id: post_id, action: action },
            success: function(data)
            {
                $entry_view.html(innerShiv(data))
                new_entry_view_height()             
                jplayer();
                if(post_type == 'image'){
                    
                    $entry_view.find('img').hide().load(function(e){
                        target = $(e.target)
                        height = target.height()
                        width = target.width()
                        if ( height>width ){
                            target.height(370)
                        }
                        else{
                            target.width(460)
                        }
                        target.show()

                        target.qtip({
                            content: {text: "Click to zoom"},
                            position: { corner: { tooltip: 'bottomMiddle', target: 'bottomMiddle' } },
                            style: {
                                border: { width: 2, radius: 5 },
                                textTransform: 'none',
                                padding: 3, 
                                textAlign: 'center',
                                content: {"font-size":24},
                                tip: { size:{x:0,y:20}, corner: 'bottomMiddle' }, 
                                name: 'light' 
                                }

                        })
                    })
                }else{
                    $entry_view.fadeIn();
                }
            }
        });     
    }
    
    $(window).load(function(){ scale_gallery_images(); })
    
    
    function addQtipTo(element){
        $(element).qtip({
            content: { text: $(element).attr('data-title').toUpperCase() + '<br/> by ' + $(element).attr('data-author') + '<br/><br/>' + $(element).attr('data-exerpt')},
            position: { corner: { tooltip: 'bottomMiddle', target: 'topMiddle' } },
            style: {
                border: { width: 2, radius: 5 },
                textTransform: 'none',
                padding: 3, 
                textAlign: 'center',
                tip: { size:{x:12,y:6}, corner: 'bottomMiddle' }, 
                name: 'light' 
                }
            });     
    }
    
    
    function add_qtip()
    {       
        
        $('#public_gallery .gallery_container .entry').each(function(){
            addQtipTo(this);
        })
    }       
    function new_entry_view_height(){
        new_height = 0
        $('#viewer').children().each(function () {
            if ( $(this).outerHeight() > new_height ) {
                new_height=$(this).outerHeight();
            }
        })
        $('#viewer').animate({'height':new_height},'fast')
    }

    
    function scale_gallery_images()
    {
        $('#public_gallery .gallery .entry img').each(function(){
            scale_image($(this), 152, 100)
        })
    }
    
    function scale_image($image, target_width, target_height){
        var width = parseInt($image.width());
        var height = parseInt($image.height());
        
        $image.width(target_width).height('auto').css({'marginTop': (target_height-$image.height())/2, 'marginLeft': 0})
        
        if( $image.height() < target_height )
        {
            $image.height(target_height).width('auto').css({'marginLeft': (target_width-$image.width())/2, 'marginTop': 0})
        }
    }

    function jplayer(){
        var file        =   $("#jquery_jplayer").attr('data-file');
        var global_lp   = 0;
        $("#jquery_jplayer").jPlayer(
        {
            ready: function () {
                this.setFile( file );
                this.play();
                showPauseBtn();
            },
            customCssIds: true,
            nativeSupport: true,
            swfPath: "/wp-content/themes/carrington-indigo/assets/js/",
            oggSupport: false,
            warningAlerts: true
        }
        )       
        .jPlayer("onProgressChange", function(lp,ppr,ppa,pt,tt) {
            var lpInt = parseInt(lp);
            var ppaInt = parseInt(ppa);
            global_lp = lpInt;
    
            $('#loaderBar').progressbar('option', 'value', lpInt);
            $('#sliderPlayback').slider('option', 'value', ppaInt);
        })
        .jPlayer("onSoundComplete", function() {
            this.element.jPlayer("play");
        });
    
        $("#pause").hide();
    
        function showPauseBtn()
        {
            $("#play").fadeOut('fast', function(){
                $("#pause").fadeIn('fast');
            });
        }
    
        function showPlayBtn()
        {
            $("#pause").fadeOut('fast', function(){
                $("#play").fadeIn('fast');
            });
        }
    
        function playTrack(t,n)
        {
            $("#jquery_jplayer").jPlayer("setFile", t).jPlayer("play");
    
            showPauseBtn();
    
            return false;
        }
    
        $("#play").click(function() {
            $("#jquery_jplayer").jPlayer("play");
            showPauseBtn();
            return false;
        });
    
        $("#pause").click(function() {
            $("#jquery_jplayer").jPlayer("pause");
            showPlayBtn();
            return false;
        });
    
        $("#stop").click(function() {
            $("#jquery_jplayer").jPlayer("stop");
            showPlayBtn();
            return false;
        });
    
    
        $("#volume-min").click( function() {
            $('#jquery_jplayer').jPlayer("volume", 0);
            $('#sliderVolume').slider('option', 'value', 0);
            return false;
        });
    
        $("#volume-max").click( function() {
            $('#jquery_jplayer').jPlayer("volume", 100);
            $('#sliderVolume').slider('option', 'value', 100);
            return false;
        });
    
        $("#player_progress_ctrl_bar a").live( "click", function() {
            $("#jquery_jplayer").jPlayer("playHead", this.id.substring(3)*(100.0/global_lp));
            return false;
        });
    
        // Slider
        $('#sliderPlayback').slider({
            max: 100,
            range: 'min',
            animate: true,
    
            slide: function(event, ui) {
                showPauseBtn();
                $("#jquery_jplayer").jPlayer("playHead", ui.value*(100.0/global_lp));
            }
        });
    
        $('#sliderVolume').slider({
            value : 50,
            max: 100,
            range: 'min',
            animate: true,
    
            slide: function(event, ui) {
                $("#jquery_jplayer").jPlayer("volume", ui.value);
            }
        });
    
        $('#loaderBar').progressbar();
    }

});
