var _media_actions = [];
var playBtn;
var playCounts = 1;

$(document).ready(function() {

    /*
    // set first selected song in song list to play
    var firstPlayBtn = $('.body_row.selected .play:first');

    if (firstPlayBtn.is('.play') === false) {
        // there were no selected songs so this sets the first song to play on load
        firstPlayBtn = $('.play:first');
    }

    firstPlayBtn.click();
    */

    $.jPlayer.timeFormat.padMin = false;
    $("#jquery_jplayer_1").jPlayer({
        ended: function () {
            // play next song
            playBtn.parentsUntil("ul", "li").next().find("a.btn.play").click();
        },
        error: function (e) {
            if (e.jPlayer.error.type === $.jPlayer.error.URL) {
                // add error handling here
                //console.log(e.jPlayer.error);
            }
            console.log(e.jPlayer.error);
        },
        pause: function () {
            if (playBtn.hasClass('pause')) {
                playBtn.text('play').removeClass('pause').addClass('play');
            }
        },
        play: function() {
            if (playBtn.hasClass('play')) {
                playBtn.text('pause').removeClass('play').addClass('pause');
            }
        },
        ready: function() {
            $("#jquery_jplayer_1").jPlayer("volume", 1);
        },
        swfPath: "/_swf"
    });

    $('.play').live('click', startPlaySong);

    $('.pause').live('click', pauseSong);

    // Custom autocomplete
    $.widget('custom.singcomplete', $.ui.autocomplete,    {
        _renderMenu: function(ul, items) {
            var self            = this;
            var currentCategory = '';
            $.each(items, function(index, item) {
                if (item.category != currentCategory) {
                    ul.append('<li class="ui-autocomplete-category">' + item.category + '</li>');
                    currentCategory = item.category;
                }
                self._renderItem(ul, item);
            });
        }
    });

    // The search box using the custom autocomplete with a watermark
    $('#search_term').singcomplete({
        source: "/search",
        minLength: 1,
        select: function(evt, ui) {
            $(this).val ( ui.item.value ).parent().submit();
        }
    });

    //
    $('#header_search_songs_box').submit(function (e) {
        if ($.trim($('#search_term').val()) === "") {
            // prevent form submission if search term empty
            e.preventDefault();
        }
    });

    // track album and song downloads
    $(".download_btn.album, .download.album").click(function (e) {
        track_media_action(e, "album", "download");
    });
    $(".download_btn.song, .download.song").click(function (e) {
        track_media_action(e, "song", "download");
    });

    // update sort by when sort drop down changes
    $('#sort').change(function() {
        $("#sort_form").submit();
    });

});

function startPlaySong(e) {
    e.preventDefault();

    var target = $(e.target);

    if (typeof playBtn != "undefined") {
        if (playBtn.attr('song_id') == target.attr('song_id') && playBtn.attr('album_id') == target.attr('album_id')) {
            return $('.jp-play').trigger('click');
        }
    }

    playBtn = target;

    // track song plays
    track_media_action(e, "song", "play");


    var parentLI = playBtn.parent().parent();
    parentLI.parent().find('.selected').removeClass('selected');
    parentLI.addClass('selected');
    var artist = ( parentLI.find('.artist').length > 0 ? parentLI.find('.artist') : parentLI.find('.song_artist') );
    var title = ( parentLI.find('.title').length > 0 ? parentLI.find('.title') : parentLI.find('.song_name') );

    // List the song playing
    $('#jp_playlist_1').text(artist.text()+' - '+title.text());
}

function playSongWithExpireURL (expire_url) {
    $("#jquery_jplayer_1").jPlayer('setMedia', {
        mp3: expire_url
    })

    if (playCounts > 1) {
        // toggle the playing button/text
        $('.pause').toggleClass('play pause').text('play');
        playBtn.text('pause').toggleClass('play pause');

        $("#jquery_jplayer_1").jPlayer('play');
    }
}

function pauseSong(e) {
    e.preventDefault();
    $('.jp-pause').trigger('click');
    playBtn.removeClass('pause').addClass('play').text('play');
}

/**
 * Track media plays and downloads.
 *
 * @param trigger_event   (object)
 * @param trigger_element (object) DOM Element that was clicked to trigger play.
 * @param media_type      (string) song|album
 * @param action          (string) play|download
 */
function track_media_action (trigger_event, media_type, action) {

    var trigger_element = $(trigger_event.target);

    if (media_type == "song") {
        var media_id = trigger_element.attr("song_id");
    } else if (media_type == "album") {
        var media_id = trigger_element.attr("album_id");
    }

    var media_action_signature = [media_type, action, media_id].join("-");

    // stop download of original link since we will get a generated URL with new expire time from tracking response
    if (action === "download") {
        trigger_event.preventDefault();
    }

    if ($.inArray(media_action_signature, _media_actions) === -1) {
        // first click of this download link
        _media_actions.push(media_action_signature);

        var track = true;
    } else {
        var track = false;
    }

    $.ajax({
        url: '/tracking',
        data: {
            "action":         action,
            "media_id":       media_id,
            "media_type":     media_type,
            "track":          track
        },
        dataType: "json",
        success: function (resp_data) {
            if (action === "download") {
                window.location.href = resp_data['expire_url'];
            } else if (action === "play") {
                //console.log(resp_data['expire_url']);
                playCounts++;
                playSongWithExpireURL(resp_data['expire_url']);
            }
        }
    });

}

