﻿/// <reference path="../jquery-1.5.js" />

var XHRS = new Array();
//window.onbeforeunload = function () {
//    var XHRSlength = XHRS.length;
//    while (XHRS.length > 0) {
//        var xhr = XHRS.pop();
//        xhr.abort && xhr.abort();
//        xhr = null;
//    }
//}

function NavigationState() {
    this.Section = "";
    this.Type = "";
    this.IsMine = "";
    this.Page = "";
    this.PageSize = "";
    this.SortColumn = "";
    this.IsAscending = "";
}

var state = new NavigationState();
var IgnoreHash = false;

function Redirect(controller, action) {
    location.href = Action(controller, action);
}

var STATETYPE_TRADEREQUEST_INDEX = "TradeRequest_Index";
var STATETYPE_TRADEREQUEST_DETAILS = "TradeRequest_Details";
var STATETYPE_MAIN_INDEX = "Main_Index";
var STATETYPE_ORGANIZATION = "Dictionary_Organization";
var STATETYPE_CONTRACT = "Document_Set";
var STATETYPE_AUCTION = "Auction_Details";
var STATETYPE_MEMBER = "Member_Index";
var STATETYPE_MEMBER_ORGANIZATION = "Member_Organization";
var STATETYPE_MEMBER_CONTRACT = "Member_Contract";
var STATETYPE_ADMIN = "Admin_Index";

var SECTION_AUCTION = "Auction";
var SECTION_TRADEREQUEST = "TradeRequest";
var SECTION_OFFERS = "Offer";
var SECTION_OPTIMAL = "Optimal";
var SECTION_CONTRACT = "Contract";
var SECTION_REQUEST = "Request";
var SECTION_DOCUMENT = "Document";
var SECTION_BIDS = "Bids";
var SECTION_MEMBERS = "Members";
var SECTION_STAT = "Stat";
var SECTION_MESSAGES = "Messages";
var SECTION_IDK = "IDK";
var SECTION_CONTACT = "Contacts";
var SECTION_BASIS = "Basis";
var SECTION_ORGANIZATION = "Organization";
var SECTION_USERS = "Users";

var TYPE_ACTIVE = "Active";
var TYPE_ARCHIVE = "Archive";
var TYPE_DEALS = "Deal";
var TYPE_POPULAR = "Popular";
var TYPE_HOT = "Hot";
var TYPE_ALL = "All";
var TYPE_NEW = "New";
var TYPE_FILTER = "Filter";



jQuery.fn.swapWith = function (to) {
    return this.each(function () {
        var copy_to = $(to).clone(true);
        var copy_from = $(this).clone(true);
        $(to).replaceWith(copy_from);
        $(this).replaceWith(copy_to);
    });
};


function Action(controller, action) {
//    return ("../../EOIL.Web/" + controller + "/" + action);
   return ("../" + controller + "/" + action);

}


function RequestCriteria() {
    this.Type = "";
    this.Section = "";
    this.StateType = "";
    this.SortField = "";
    this.BidAsk = null;
    this.Goods = 0;
    this.PriceMin = 0;
    this.PriceMax = 1000000;
    this.VolumeMin = 0;
    this.VolumeMax = 1000000;
    this.SelfOnly = false;
    this.DeliveryMonths = new Array();
    this.IsArchive = false;
    this.Regions = new Array();
    this.Page = 1;
    this.PageSize = 20;
    this.IsAscending = false;
    this.TradeRequestDealSortField = "Default";
    this.TradeRequestSortField = "Default";
    this.AuctionSortField = "Default";
    this.AuctionDealSortField = "Default";
    this.Search = "";
    this.AuctionSet = "Active";
    this.TradeRequestId = 0;
    this.AuctionId = 0;
    this.Url = "";
    this.OrganizationId = 0;
    this.ContractId = 0;
    this.From = null;
    this.To = null;
    this.UserId = 0;

    this.BasisName = "";
    this.RegionId = 0;
    this.StationId = 0;
    this.CityId = 0;
    this.Moderated = null;
    this.RegistrationDate = null;
    this.BasisSortField = "RegistrationDate";
}

function SetTimer(milliseconds, container, url, rowBinderFunction, callbackFunction, beforeFunction, params) {
    if (!params) params = {};
    beforeFunction && beforeFunction();
    $(document).everyTime(milliseconds, function () {
        var _xhr = $.post(url, params,
        function (res) {
            if (res.Error)
                alert(res.Error);
            else {
                if (res.Data.length > 0) {
                    var i = 0;
                    $(document).everyTime(1000, function () {
                        var div = document.createElement("div");
                        $(div).hide();
                        $(div).append(rowBinderFunction(res.Data[i]));
                        $(container).prepend(div);
                        $("div:first", $(container)).slideDown("slow");
                        $("div:last", $(container)).slideUp("slow", function () { $("div:last", $(container)).remove(); });
                        i++;
                    }, res.Data.length);
                    callbackFunction && callbackFunction();
                }
            }
        }
        );
        XHRS.push(_xhr);
    });
}
function SetTimerEx(milliseconds, container, url, rowBinderFunction, callbackFunction, beforeFunction, params,className) {
    if (!params) params = {};
    beforeFunction && beforeFunction();
    $(document).everyTime(milliseconds, function () {
        var _xhr = $.post(url, params,
        function (res) {
            if (res.Error)
                alert(res.Error);
            else {
                if (res.Data.length > 0) {
                    var i = 0;
                    $(document).everyTime(1000, function () {
                        var div = document.createElement("div");
                        $(div).append(rowBinderFunction(res.Data[i]));
                        if (className) $(div).addClass(className);
                        $(container).append(div);
                        if (!className) {
                            $("div:first", $(container)).slideDown("slow");
                            $("div:last", $(container)).slideUp("slow", function () { $("div:last", $(container)).remove(); });
                        }
                        else {
                            $("div:first", $(container)).animate({ top: parseInt($("div:first", $(container)).css("top")) + 20 }, 1000, function () { $("div." + className + ":first", $(container)).remove(); });
                        }
                        i++;
                    }, res.Data.length);
                    callbackFunction && callbackFunction();
                }
            }
        }
        );
        XHRS.push(_xhr);

    });
}

function CheckNumeric(e) {
    var chars = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 8, 190, 9, 37, 38, 39, 40, 46, 36, 35];
    var isBad = true;
    for (var i = 0; i < chars.length; i++) {
        if (e.keyCode == chars[i]) {
            isBad = false;
            break;
        }
    }
    if (e.ctrlKey && e.keyCode == 86)
        isBad = false;

    if (isBad) return false;

}

var showLoadingId;

function StartLoading(obj) {
    $("#element-overlay").remove();
    var overlay = $("<div></div>");
    overlay.css({
        width: $(obj).width(),
        height: $(obj).height(),
        background: "White",
        filter: "alpha(opacity=30)",
        opacity: .3,
        position: "absolute",
        zIndex: 1001
    });
    overlay.attr("id", "element-overlay");

    showLoadingId = setTimeout(function () { $("#login-loading").show(); }, 1000);

    $(obj).prepend(overlay);
}

function StopLoading() {
    clearTimeout(showLoadingId);
    $("#login-loading").hide();
    $("#element-overlay").hide();
}


// msg - html с описанием ошибки
function ShowError(msg) {
    if (msg.statusText != "abort") {
        StopLoading();
//        var w = window.open(null, 'Error', 'width=950,height=700,top=200,location=no,menubar=yes,resizable=yes,scrollbars=yes');
//        w.document.write(msg.responseText);
    }
}

$(document).ready(function () {
    if ($("#new-messages").length > 0) {
        $("#new-messages").click(function () {
            location.href = Action("Member", "Index");
        });
        setTimeout(NewMessagesJSON, 5000);
        setInterval(NewMessagesJSON, 15000);
    }
});

function NewMessagesJSON() {
    if ($("#new-messages").is(":hidden")) {
        $.ajax({
            url: Action("Main", "NewMessagesJSON"),
            type: "POST",
            success: function (res) {
                if (res.Personal > 0 || res.Service > 0) {
                    $("#new-messages").show();
                    $("#a-service").text("Служебные сообщения: " + res.Service);
                    $("#a-personal").text("Личные сообщения: " + res.Personal);
                    $("#new-messages").animate({ bottom: 0 }, 1000);
                    setTimeout(function () { $("#new-messages").fadeOut(function () { $("#new-messages").css({ bottom: -100 }); }); }, 30000);
                }
            },
            error: ShowError
        });
    }

}
