$(document).ready(function () {

    // Fixes Date Picker Bug
    $(".datePicker").datepicker({
        onSelect: function (dateText) {
            document.all ?
                      $(this).get(0).fireEvent("onchange")
                : $(this).change();
        }
    });
});

/*
*   Highlight Row
*/
function HighlightRow(Id) {
    if (Id != undefined) {
        $('#row' + Id).css('backgroundColor', '#FFFE9F');
        setTimeout(function () {
            $('#row' + Id).animate({ backgroundColor: '#FFF' }, 2000);
        }, 1500);
    }
}

/*
*   Display Delete Modal
*/
function DisplayDelete(a, id, url) {
    var row = $(a).parents('tr');
    var title = row.find('.Title span');

    var tWidth = ($('body').width() < 1439) ? title.width() + 30 : $(a).parents('table').width() + 20;
    var offset = title.offset();
    var modal = $('#deleteModal');

    //HighlightRow(id);

    $('#btnDelete').unbind('click').one('click', function () {
        DeleteItem(id, url);
    });

    modal.css({ 'position': 'absolute', 'left': offset.left + tWidth, 'top': offset.top - 50 }).show();
    modal.find('.pointer').css({ 'position': 'absolute', 'left': -14, 'top': 40 });
}

function DeleteItem(Id, url) {
    if (Id !== undefined) {

        $('#deleteModal').hide();

        $.ajax({
            type: 'POST',
            url: url + '/' + Id,
            success: function (data) {
                ValidateResult(data, function () {

                    var Ids = Id.split('/');

                    $('#row' + Ids[0] + ' td').each(function () {
                        $(this).wrapInner('<div/>').children('div').slideUp().parents('tr:last').remove();
                    });

                    if ($('table tr td').length < 2) {
                        $('form').submit();
                    }
                });
            },
            error: function (data) {
            }
        });
    }
}

var sortOrder;
var sortDirection;
var searchToken;

function initSearch(Id) {

    sortOrder = $('#sortOrder');
    sortDirection = $('#sortDirection');
    searchToken = $('#searchToken');

    HighlightRow(Id);

    $(".Search .button").button({ label: "Search" }).click(function () {
        $(this).button({ label: "Searching...", disabled: true });

        search(1, function () {
            $(".Search .button").button({ label: "Search", disabled: false });
        });
    });

    $(".button").button();

    $('#searchToken').keyup(function (e) {
        if (e.keyCode == 13) {
            $(".Search .button").click();
        }
    });

    UpdateList();
}

function search(page, callback) {

    var listData =
    {
        Page: page,
        SortOrder: sortOrder.val(),
        SortDirection: sortDirection.val(),
        SearchToken: searchToken.val()
    };

    $.ajax({
        type: 'POST',
        url: window.location,
        contentType: "application/json; charset=utf-8",
        data: $.toJSON(listData),
        success: function (data) {

            $('.List').html(data);
            $(".List .button").button();

            UpdateList();

            if (typeof callback == 'function') {
                callback();
            }
        },
        error: function (data) {
        }
    });

}

function UpdateList() {

    $('table th a').each(function () {

        $(this).bind("click", function () {

            if (sortDirection.val() == 'ASC') {
                sortDirection.val('DESC');
            }
            else {
                sortDirection.val('ASC');
            }

            sortOrder.val($(this).text());

            search(1);

            return false;
        });
    });
}