/// <reference path="/Scripts/jquery-vsdoc.js"/>
/// <reference path="/Scripts/json2.js"/>
/// <reference path="/Scripts/base.js"/>

$().ready(function () {
    $(".mainHeader .firstLink").mouseover(function () {
        $(".mainHeader .taxi_tel").slideDown("fast");
    });
    $(".mainHeader .taxi_tel_hide").click(function () {
        $(".mainHeader .taxi_tel").slideUp("fast");
    });

    $(".mainHeader .tab").click(function () {
        $(".mainHeader .tab").removeClass("tabCur");
        $(this).addClass("tabCur");
        $(".mainHeader .tabData").hide();
        $(".mainHeader " + $(this).find("A").attr("href")).show();
        return false;
    });

    $("#sediSpecs input:checkbox, .jacCity, .jacStreetObj, .jacHouse, #rentHours").live("change", function () {
        $("#taxi_zakaz_math_error, #taxi_zakaz_math_div").hide();
    });

    var curDate = new Date();
    curDate.setMinutes(curDate.getMinutes() + 30);
    var time = curDate.getHours().toString();
    $("#time_h").val(time);
    var time = curDate.getMinutes().toString();
    $("#time_i").val(time);
    var time = curDate.getDate().toString();
    $("#data_d").val(time);
    var time = curDate.getMonth().toString();
    $("#data_m").val(time);

    setAddressAutocomplete();

    if ($("#myorders").length > 0) {
        DispatcherDesktop.MyOrdersHandler = function (data) {
            
            if (!data.Objects) {
                $(".myorders").hide();
                return;
            }

            $.each(data.Objects, function () {
                var rID = "ord" + this.OrderID;

                var html =
                    "<tr id='" + rID + "'>" +
                        "<td>" + this.OrderID + " " + DispatcherDesktop.DrawOrderStatus(this.Status, this.StatusName) + "</td>" +
                        "<td>" + DispatcherDesktop.DrawList(this.Route) + "</td>" +
                        "<td>" + (this.Car ? "<img src='" + this.Car.Photo + "'>" : "") + "</td>" +
                        "<td>" + (this.Car ? DispatcherDesktop.DrawList(this.Car.Properties) : "") + "</td>" +
                    "</tr>";

                if ($("#" + rID).length > 0) {
                    $("#" + rID).replaceWith(html);
                }
                else {
                    $("#myorders").append(html);
                }
            });
            $(".myorders").slideDown();
            //alert(JSON.stringify(data));
        }
        DispatcherDesktop.Init({});
        DispatcherDesktop.Start({});
    }
});

var taxispb = function () {
    return {
        time_alert_show: function () {
            $('#time_alert').addClass("time_alert").removeClass("time_alert_hidden");
        },
        time_alert_hide: function () {
            $('#time_alert').addClass("time_alert_hidden").removeClass("time_alert");
        },
        taxi_del_adress: function (num) {
            $("#addr_parent" + num).remove();
        },
        taxi_add_adress: function () {
            taxi_row_id = $(".addr_parent").length;

            var row =
                "<tr class='addr_parent' id='addr_parent" + taxi_row_id + "'>" +
                    "<td>еще куда <span class='important'>*</span></td>" +
                    "<td class='pointAddRem'>" +
                        "<img src=\"/App_Themes/taxispb/images/taxi_zakaz_minus.jpg\" onClick=\"taxispb.taxi_del_adress('" + taxi_row_id + "');\">&nbsp;" +
                        "<img src=\"/App_Themes/taxispb/images/taxi_zakaz_plus.jpg\" onClick=\"taxispb.taxi_add_adress();\">" +
                    "</td>" +
                    "<td class='inputs'><input type='hidden' id='addrid" + taxi_row_id + "'/><input type=\"text\"  id='city" + taxi_row_id + "'class=\"jacCity hidden\" value=\"Санкт-Петербург\"><input type=\"text\" name=\"street[" + taxi_row_id + "]\" id=\"street_" + taxi_row_id + "\" class=\"jacStreetObj input\" autocomplete=\"off\"></td>" +
                    "<td class='inputs house'><input type=\"text\" name=\"dom[" + taxi_row_id + "]\" class=\"ihome input jacHouse\"></td>" +
//                    "<td class='inputs house'><input type=\"text\" name=\"korpus[" + taxi_row_id + "]\" class=\"icorp input\"></td>" +
                "</tr>";

            $("#addressRows").append(row);

            setAddressAutocomplete();

            return false;
        },
        taxi_zakaz_math: function () {
            var err = false;

            if ($("#adress_1 .jacStreetObj").val() == "") {
                $("#adress_1 .jacStreetObj").addClass("ui-state-error");
                $("#adress_1 .jacStreetObj").focus();
                err = true;
            }
            if ($("#adress_2 .jacStreetObj").val() == "") {
                $("#adress_2 .jacStreetObj").addClass("ui-state-error");
                err = true;
            }

            var rh = 0;
            if ($("#rentHours:visible").length > 0) {
                var rh = parseInt($("#rentHours:visible").val());

                if (rh == 0 || isNaN(rh)) {
                    $("#rentHours").addClass("ui-state-error");
                    err = true;
                }
            }

            if (err) {
                alert("Обязательно заполните поля, выделенные красным!");
                return false;
            }

            $("#taxi_zakaz_math_error, #taxi_zakaz_math_div").hide();
            $("#calcWaitContainer").show();

            if ($("#calcWait").length == 0) {
                var fl = new SWFObject("/app_themes/taxispb/images/taxi_zakaz_load.swf", "mymovie", "20", "20", "8", "#000000");
                fl.id = "calcWait";
                fl.addParam("wmode", "transparent");
                fl.write("calcWaitContainer");
            }

            var index = 0;
            var calcParams = new SediCalcCostStruct();
            calcParams.RentHours = rh;
            calcParams.RouteString = "strobj=1";
            $("#zakaz_adress_table").find(".addr_parent").each(function () {
                calcParams.RouteString += "&addrid" + index + "=" + $(this).find("input:hidden[id*='id']").val();
                calcParams.RouteString += "&cityField" + index + "=" + $(this).find(".jacCity").val();
                calcParams.RouteString += "&objectField" + index + "=" + $(this).find(".jacStreetObj").val();
                calcParams.RouteString += "&houseField" + index + "=" + $(this).find(".ihome").val();

                index += 1;
            });
            $("#sediSpecs input:checked").each(function () { calcParams.SpecTariffs.push($(this).val()); })

            SediApi.CalcCost(calcParams, taxispb.paste_taxi_zakaz_math, function () { alert("error"); });

            return false;
        },
        paste_taxi_zakaz_math: function (data) {
            $("#calcWaitContainer").hide();

            if (!data.Success) {
                taxispb.sediCalcOrderError(data);
            }
            else if (data.Tariffs && data.Tariffs.length > 0) {
                $("#taxi_zakaz_math_div").show();
                $("#calcResult").html("");

                $.each(data.Tariffs, function () {
                    var tariff = this;
                    var html = "<div class='calcTariff'>" +
                                    "<div class='calcTariff2'>" +
                                        "<table>" +
                                            "<tr>" +
                                                "<td class='taxi_zakaz_cars_row_radio'><input name='sediTariff' type='radio' value='" + tariff.ID + "' id='taxi_zakaz_cars_radio_" + tariff.ID + "'></td>" +
                                                "<td class='taxi_zakaz_cars_row_cash'>" +
                                                    "<input type='hidden' id='tariffCost" + tariff.ID + "' value='" + tariff.Cost + "'>" +
                                                    "<div>" + tariff.CostFull + " руб.</div>" +
                                                "</td>" +
                                                "<td class='taxi_zakaz_cars_row_text'>" +
									                "<font class='car_class'>" + tariff.Name + "</font>" +
									                "<div>автомобилей на линии: <strong>" + tariff.Cars + "</strong></div>" +
									                "<div class='cash_skidka_div'>" +
										                "<span class='font_orange'>-" + (tariff.CostFull - tariff.Cost) + "</span>" +
										                "<span class='cash_skidka_div'>&nbsp;=&nbsp;</span>" +
										                "<span class='cash_skidka_cash' id='cash_skidka_2_div'>" + tariff.Cost + " руб.</span><br>" +
									                "(<font class='font_orange' style='font-weight:normal;'>скидка: </font> " + tariff.Discounts.join(" + ") + ")</div>" +
								                "</td>" +
                                            "</tr>" +
                                        "</table>" +
                                    "</div>" +
                                "</div>";

                    $("#calcResult").append(html);
                    $("#calcResult .calcTariff").click(function () {
                        $(this).find(":radio").attr("checked", true);
                        $("#calcResult .calcTariff").removeClass("calcTariffSel");
                        $(this).addClass("calcTariffSel");
                    });

                    $("#calcResult .calcTariff").eq(0).click();
                });
            }
        },
        sediCalcOrderError: function (data) {
            taxispb.sediShowError(data.Message);

            if (data.Addresses) {
                for (var index = 0; index < data.Addresses.length; index++) {
                    if (data.Addresses[index]) {
                        $("#zakaz_adress_table").find(".addr_parent").eq(index).find("input:hidden[id*='id']").val(data.Addresses[index].Id);
                        if (data.Addresses[index].ObjectName) {
                            $("#zakaz_adress_table").find(".addr_parent").eq(index).find(".jacStreetObj").val(data.Addresses[index].ObjectName);
                            $("#zakaz_adress_table").find(".addr_parent").eq(index).find(".ihome").val("");
                        }
                        else if (data.Addresses[index].StreetName) {
                            $("#zakaz_adress_table").find(".addr_parent").eq(index).find(".jacStreetObj").val(data.Addresses[index].StreetName);
                            $("#zakaz_adress_table").find(".addr_parent").eq(index).find(".ihome").val(data.Addresses[index].HouseNumber);
                        }
                        else {
                            $("#zakaz_adress_table").find(".addr_parent").eq(index).find(".jacStreetObj").val("");
                            $("#zakaz_adress_table").find(".addr_parent").eq(index).find(".ihome").val("");
                        }
                    }
                }
            }
        },
        sediShowError: function (msg) {
            AgBase.ShowMessage(msg, "", "#taxi_zakaz_math_error SPAN");
            $("#taxi_zakaz_math_error").show();
        },
        Order: function () {
            var err = false;

            if ($("#name_in").val() == "") {
                $("#name_in").addClass("ui-state-error");
                err = true;
            }
            if ($("#tel").val() == "") {
                $("#tel").addClass("ui-state-error");
                err = true;
            }
            if ($("#time_h").val() == "") {
                $("#time_h").addClass("ui-state-error");
                err = true;
            }
            if ($("#time_i").val() == "") {
                $("#time_i").addClass("ui-state-error");
                err = true;
            }
            if ($("#data_d").val() == "") {
                $("#data_d").addClass("ui-state-error");
                err = true;
            }

            if (err) {
                alert("Обязательно заполните поля, выделенные красным!");
                return false;
            }

            var index = 0;
            var orderParams = new SediOrderStruct();
            orderParams.RouteString = "strobj=1";
            $("#zakaz_adress_table").find(".addr_parent").each(function () {
                orderParams.RouteString += "&addrid" + index + "=" + $(this).find("input:hidden[id*='id']").val();
                orderParams.RouteString += "&cityField" + index + "=" + $(this).find(".jacCity").val();
                orderParams.RouteString += "&objectField" + index + "=" + $(this).find(".jacStreetObj").val();
                orderParams.RouteString += "&houseField" + index + "=" + $(this).find(".ihome").val();

                index += 1;
            });
            $("#sediSpecs input:checked").each(function () { orderParams.SpecTariffs.push($(this).val()); })
            orderParams.TariffID = $("#taxi_zakaz_math_div :radio[name=sediTariff]:checked").val(); 
            orderParams.Cost = $("#tariffCost" + orderParams.TariffID).val();
            orderParams.CustomerName = $("#name_in").val();
            orderParams.CustomerPhone = $("#tel").val();
            orderParams.Comment = $("#dop").val();
            orderParams.DateTime = new Date(new Date().getFullYear(), $("#data_m").val(), $("#data_d").val(), $("#time_h").val(), $("#time_i").val());

            $("#calcWaitContainer").show();
            $("#orderTaxiButton").attr("disabled", true);

            SediApi.PublishOrder(orderParams, taxispb.sediPublishOrderHandler, function () { alert("error"); });
        },
        sediPublishOrderHandler: function (data) {
            $("#orderTaxiButton").removeAttr("disabled");
            $("#calcWaitContainer").hide();

            if (!data.Success) {
                alert(data.Message);
            }
            else {
                $("#taxi_zakaz_math_error, #taxi_zakaz_math_div").hide();
                AgBase.ShowMessage(data.Message);
            }
        }
    }
} ();

