QuickHit.Data = {};

$(document).ready(function() {
    $(".refresh").live("click", function() {
        var timeRemaining = ((QuickHit.MessageCenter.lobbyPromptTimer - (new Date().getTime() - QuickHit.Utility.readCookie("QUICKHIT-CREATE-GAME"))) / 1000) / 60;
        if (timeRemaining) {
            var text = $("span", "#create-game-timer").text();
            $("body").block({message:null});
            var link = $(this);
            var contentParent = link.parents(".content-wrapper");
            $.ajax({
                url: link.attr("href"),
                dataType: "json",
                cache: false,
                success: function(data, status, xhr) {
                    contentParent.remove();
                    $("#content-area").append(data.html + data.js);
                    $("span", "#create-game-timer").text(text);
                    QuickHit.Utility.refreshAds();
                    $("body").unblock();
                }
            });
        } else {
            window.location.reload();
        }
        return false;
    });
    $(".filter:not(.static-filter)").live("click", QuickHit.Data.filterClick).live("mouseleave", QuickHit.Data.filterLeave);
    $("a", ".filter ul").live("click", QuickHit.Data.filter);
    $("a", "ul li.header").live("click", QuickHit.Data.sort);
    $("a", ".paginator").live("click", QuickHit.Data.paginate);
    $("#difficulty-all-coaches").live("click", function() {
        var params = {};
        params.difficulty = "ANY";
        params.sortBy = "BEST_MATCH";
        params.page = 0;
        params.offset = 0;
        QuickHit.Data.get(this, params);
    });
});

QuickHit.Data.loadPage = function() {
    $("body").block({message:null});
    var link = $(this);
    var contentParent = link.parents(".content-wrapper");
    $.ajax({
        url: link.attr("href"),
        dataType: "json",
        cache: false,
        success: function(data, status, xhr) {
            contentParent.remove();
            $("#content-area").append(data.html + data.js);
            QuickHit.Utility.refreshAds();
            $("body").unblock();
        }
    });
    return false;
};

QuickHit.Data.filterLeave = function() {
    $(this).children("ul").hide();
};

QuickHit.Data.filterClick = function() {
    $(this).children("ul").toggle();
    return false;
};

QuickHit.Data.filter = function() {
    var link = $(this);
    var ul = link.parent().parent();
    ul.siblings("a").removeAttr("class").attr("class", "selected " + link.parent().attr("class"));
    var params = {};
    params[ul.parent().attr("class").replace(/filter|static-filter/g, "").trim()] = link.text();
    params.page = 0;
    params.offset = 0;
    QuickHit.Data.get(this, params);
    return false;
};

QuickHit.Data.sort = function() {
    var link = $(this);
    var parentClass = link.parent().attr("class");
    var sortOrder = link.parents(".content-wrapper:first").children(".content-param-sortOrder").val();
    var params = {};
    params.sortBy = parentClass.replace(/selected|asc|desc/g, "").replace("-", "_").trim().toUpperCase();
    params.sortOrder = sortOrder && sortOrder.length > 1 ? (sortOrder.toUpperCase() == "ASC" ? "DESC" : "ASC") : "DESC";
    params.page = 0;
    params.offset = 0;
    QuickHit.Data.get(this, params);
    return false;
};

QuickHit.Data.paginate = function() {
    var link = $(this);
    var page = link.attr("href").match(/page=(\d+)/);
    var contentParent = link.parents(".content-wrapper");
    var params = {
        page: page && page[1] ? page[1] : 0
    };
    QuickHit.Data.get(this, params);
    return false;
};

QuickHit.Data.get = function(src, params) {
    $("body").block({message:null});
    src = $(src);
    params = typeof(params) == "undefined" ? {} : params;
    var content = src.parents(".content-wrapper:first");
    var href = src.attr("href");
    var url = (href.length && (href.charAt(href.length-1) == "#" || href.charAt(0) == "#")) || params.page ? window.location.pathname : href;
    var queryString = [];
    $(".content-param",content).each(function(index) {
        var param = $(this);
        var paramName = param.attr("class").match(/content-param-(\w+)/)[1];
        if (typeof(params[paramName]) == "undefined") {
            params[paramName] = param.val();
        }
    });

    for(var i in params) {
        queryString.push(i + "=" + params[i]);
    }
    url += "?" + queryString.join("&");
    $.ajax({
        url: url,
        dataType: "json",
        cache: false,
        success: function(data, status) {
            if (status == "success") {
                //content.remove();
                //$("#content-area").append(data.html + data.js);
                content.replaceWith(data.html + data.js);
                QuickHit.Utility.refreshAds();
            }
        },
        complete: function() {
            $("body").unblock();
        }
    });
};
