var BaseUrl = "http://harchevnya.in.ua/";
var summ  = 0;
var count = 0;

function GetPath(path){
    return BaseUrl + path;
}
navHover = function() {
var lis = document.getElementById("Menu").getElementsByTagName("LI");
    for (var i = 0; i < lis.length; i++) {
        lis[i].onmouseover = function() {
            this.className += " iehover";
        }
        lis[i].onmouseout = function() {
            this.className = this.className.replace(new RegExp(" iehover\\b"), "");
        }
    }
}
if(window.attachEvent) window.attachEvent("onload", navHover);


// _____________________________________________________________________________
// Преобразует число в строку формата 1_separator000_separator000._decimal
function sdf_FTS(_number, _decimal, _separator)
// сокращение переводится как Float To String
// sd_ - понятно и так почему :) 
// _number - число любое, целое или дробное не важно
// _decimal - число знаков после запятой
// _separator - разделитель разрядов
{
    // определяем, количество знаков после точки, по умолчанию выставляется 2 знака
    var decimal = (typeof (_decimal) != 'undefined') ? _decimal : 2;

    // определяем, какой будет сепаратор [он же разделитель] между разрядами
    var separator = (typeof (_separator) != 'undefined') ? _separator : '';

    // преобразовываем входящий параметр к дробному числу, на всяк случай, если вдруг
    // входящий параметр будет не корректным
    var r = parseFloat(_number)

    // так как в javascript нет функции для фиксации дробной части после точки
    // то выполняем своеобразный fix
    var exp10 = Math.pow(10, decimal); // приводим к правильному множителю
    r = Math.round(r * exp10) / exp10; // округляем до необходимого числа знаков после запятой

    // преобразуем к строгому, фиксированному формату, так как в случае вывода целого числа
    // нули отбрасываются не корректно, то есть целое число должно 
    // отображаться 1.00, а не 1
    rr = Number(r).toFixed(decimal).toString().split('.');

    // разделяем разряды в больших числах, если это необходимо
    // то есть, 1000 превращаем 1 000
    b = rr[0].replace(/(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))/g, "\$1" + separator);
    r = b + '.' + rr[1];

    return r; // возвращаем результат
}


/*order*/
$(function() {

    $("#Prod img[name~='del_one_item']").live('click', function() {
        var counter = $(this).parent().find("span[name~='item_count']");
        var count = parseInt(counter.html());
        if (count > 1)
            counter.html(count - 1);
        else
            alert("Количество не может быть меньше 1!");
    });
    $("#Prod img[name~='add_one_item']").live('click', function() {
        var counter = $(this).parent().find("span[name~='item_count']");
        var count = parseInt(counter.html());
        counter.html(count + 1);
    });
    function GetWeek() {
        var week = null;
        var week_item = $("#assort_menu1 a[class='sel']");
        if (week_item.length > 0) week = parseInt(week_item.attr("item"));
        return week;
    }
    $("#Prod img[name~='add_items']").live('click', function() {
        var counter = $(this).parent().find("span[name~='item_count']");
        var count = parseInt(counter.html());
        var id = $(this).attr("item_id");
        var week = GetWeek();
        Add(id, count, week);
    });

    $("#ORDER_TABLE a[name~='add_item']").live('click', function() {
        var pr_id = $(this).parent().parent().attr("item_id");
        var week = $(this).parent().parent().attr("item_week");
        Add(pr_id, 1, week);
        return false;
    });

    $("#ORDER_TABLE a[name~='del_item']").live('click', function() {
        var pr_id = $(this).parent().parent().attr("item_id");
        var week = $(this).parent().parent().attr("item_week");
        Del(pr_id, 1, week);
        return false;
    });

    $("#ORDER_TABLE a[name~='del_all_item']").live('click', function() {
        var pr_id = $(this).parent().parent().attr("item_id");
        var week = $(this).parent().parent().attr("item_week");
        DelAll(pr_id, week);
        return false;
    });

    $("#clear_basket").live('click', function() {
        if (confirm("Вы уверены, что хотите очистить корзину?"))
            Clear();
        return false;
    });

    function isHaveErr(rezult) {
        if (parseInt(rezult["state"]) === 0) return true;
        CloseProgress();

        for (var err_msg in rezult["list"][0])
            alert(rezult["list"][0][err_msg]);
        return false;
    }
    function Clear() {
        BeginProgress();
        $.ajax({
            type: "POST",
            url: GetPath("include/basket.php"),
            data: ({ "OP": "Clear" }),
            async: true,
            cache: false,
            dataType: "json",
            success: function(rezult) {
                if (!isHaveErr(rezult)) return;
                RefreshBasket(rezult);
            },
            error: function(xhr, ajaxOptions, thrownError) { alert("status:" + xhr.status + " \n\r error:" + thrownError); },
            complete: function() { CloseProgress(); }
        });
    }

    function Add(id, count, week) {
        BeginProgress();
        $.ajax({
            type: "POST",
            url: GetPath("include/basket.php"),
            data: ({ "OP": "Add", "PR_ID": id, "COUNT": count, "WEEK": week }),
            async: true,
            cache: false,
            dataType: "json",
            success: function(rezult) {
                if (!isHaveErr(rezult)) return;
                RefreshBasket(rezult);
            },
            error: function(xhr, ajaxOptions, thrownError) { alert("status:" + xhr.status + " \n\r error:" + thrownError); },
            complete: function() { CloseProgress(); }
        });
    }
    function Refresh() {
        BeginProgress();
        $.ajax({
            type: "POST",
            url: GetPath("include/basket.php"),
            data: ({ "OP": "Ref" }),
            async: true,
            cache: false,
            dataType: "json",
            success: function(rezult) {
                if (!isHaveErr(rezult)) return;
                RefreshBasket(rezult);
            },
            error: function(xhr, ajaxOptions, thrownError) {
            if(xhr.status!=0)
                alert("status:" + xhr.status + " \n\r error:" + thrownError); },
            complete: function() { CloseProgress(); }
        });
    }

    function Del(id, count, week) {
        BeginProgress();
        $.ajax({
            type: "POST",
            url: GetPath("include/basket.php"),
            data: ({ "OP": "Del", "PR_ID": id, "COUNT": count, "WEEK": week }),
            async: true,
            cache: false,
            dataType: "json",
            success: function(rezult) {
                if (!isHaveErr(rezult)) return;
                RefreshBasket(rezult);
            },
            error: function(xhr, ajaxOptions, thrownError) { alert("status:" + xhr.status + " \n\r error:" + thrownError); },
            complete: function() { CloseProgress(); }

        });
    }

    function DelAll(id, week) {
        BeginProgress();
        $.ajax({
            type: "POST",
            url: GetPath("include/basket.php"),
            data: ({ "OP": "DelAll", "PR_ID": id, "WEEK": week }),
            async: true,
            cache: false,
            dataType: "json",
            success: function(rezult) {
                if (!isHaveErr(rezult)) return;
                RefreshBasket(rezult);
            },
            error: function(xhr, ajaxOptions, thrownError) { alert("status:" + xhr.status + " \n\r error:" + thrownError); },
            complete: function() { CloseProgress(); }
        });
    }

    function SendOrder(name, phone, address, notes, email, firm, time) {
        BeginProgress();

        $.ajax({
            type: "POST",
            url: GetPath("include/basket.php"),
            data: ({ "OP": "Send", "name": name, "phone": phone, "address": address, "notes": notes, "email":email, "firm":firm, "time":time }),
            async: true,
            cache: false,
            dataType: "json",
            success: function(rezult) {
                if (!isHaveErr(rezult)) return;
                //$("#user_form").html("<h2 style='margin-left:auto;margin-right:auto;'>Заказ отправлен!</h2>");
                alert("Заказ отправлен!");
                RefreshBasket(rezult);
                HideFormSend();
                $("input[name~='name']").attr("value", "");
                $("input[name~='phone']").attr("value", "");
                $("input[name~='address']").attr("value", "");
                $("input[name~='firm']").attr("value", "");
                $("input[name~='time']").attr("value", "");
                $("input[name~='email']").attr("value", "");
                $("textarea[name~='notes']").html("");

            },
            error: function(xhr, ajaxOptions, thrownError) { alert("status:" + xhr.status + " \n\r error:" + thrownError); },
            complete: function() { CloseProgress(); }
        });
    }
    
    function AddBasketCount(count) {
        var count_record = parseInt($("#basket_info span").html());
        $("#basket_info span").html(count_record + count);
    }

    function RefreshBasket(list) {

        $("#ORDER_TABLE tr").each(function() {
            $(this).remove();
        });

        var result = new EJS({ url: GetPath("js_template/Basket.ejs") }).render(list);
        $("#ORDER_TABLE > tbody").append(result);
    }
    /*
    $("#loading").ajaxStart(function() {
    setTimeout(function() {
    $("#loading").show();
    }, 1);

    });
    $("#loading").ajaxStop(function() {
    setTimeout(function() {
    $("#loading").hide();
    }, 1);
    });
    */
    $("#log").ajaxError(function(xhr, ajaxOptions, thrownError) {
        alert("status:" + xhr.status + " error:" + thrownError);
    });

    $("a[name~='BUY_ORDER']").live('click', function() {

        if(CountSelItem() <= 0) {
            alert("Выберите блюда!");
            return;
        }
        $("#background").show();
        $("#blank_order").show();
        $("input[name~='firm']")[0].focus();
    });
    function CountSelItem() {
        to = $("#basket_info span").html().length - 1;
        return parseInt($("#basket_info span").html().substr(1, to));
    }
    $("#send_order").live('click', function() {

    /*контроли*/
        var firm = $("input[name~='firm']").attr("value");
        var name = $("input[name~='name']").attr("value");
        var phone = $("input[name~='phone']").attr("value");
        var address = $("input[name~='address']").attr("value");
        var time = $("input[name~='time']").attr("value");
        var email = $("input[name~='email']").attr("value");
        var notes = String($("textarea[name~='notes']").html()).trim();
        if (String(name).trim().length <= 0) {
            alert("Введите Имя, фамилия!");
            $("input[name~='name']")[0].focus();
            return;
        }
        if (String(phone).trim().length <= 0) {
            alert("Введите Телефон!");
            $("input[name~='phone']")[0].focus();
            return;
        }

        if (!(/^\w+[-_\.]*\w+@\w+-?\w+\.[a-z]{2,4}$/.test(String(email))) &&
				!(/^\w+[-_\.]*\w+@\w+-?\w+\.[a-z]{2,4}.[a-z]{2,4}$/.test(String(email))) &&
				!(/^\w+[-_\.]*\w+@\w+-?\w+\.[a-z]{2,4}.[a-z]{2,4}.[a-z]{2,4}$/.test(String(email)))) {
            alert("Неверный формат E-MAIL адреса.");
            $("input[name~='email']")[0].focus();
            return false;
        }         
				
        
        if (String(address).trim().length <= 0) {
            alert("Введите Адрес!");
            $("input[name~='address']")[0].focus();
            return;
        }

        SendOrder(name, phone, address, notes, email, firm, time);

    });

    $('#close_send_form').live('click', function() {
        HideFormSend();
    });
    function HideFormSend() {
        $("#background").hide();
        $("#blank_order").hide();
    }

    $(document).bind("keydown", function(e) {
        if (e.keyCode == 27) {
            HideFormSend();
        }
    });

    Refresh();
});

function BeginProgress(){
    setTimeout(function() {
        $("#loading").show();
    }, 1);

    /*setTimeout(function() {
    document.body.style.cursor = "progress";
    }, 10);*/
}
function CloseProgress() {
    setTimeout(function() {
        $("#loading").hide();
    }, 1);
    /*setTimeout(function() {
        document.body.style.cursor = "auto";
    }, 10);*/
}
String.prototype.trim = function(){
    return this.replace(/(^\s+)|(\s+$)/g, "");
}


