/*-----------------константы------------------*/
var successActions = {add:"Товар добавлен", edit: "Количество изменено", del:"Товар удалён"}
var failActions = {add:"Добавить товар не удалось", edit: "Изменить количество не удалось", del:"Удалить товар не удалось"}
var ADD_ACTION = 'add';
var EDIT_ACTION = 'edit';
var DEL_ACTION = 'del';

var SEND_ORDER_INCOMPLETE = "0";
var SEND_ORDER_SUCCESS = "1";
var SEND_ORDER_FAIL = "2";

var LAST_CATALOG_PAGE = "LAST_CATALOG_PAGE";
var TOTAL_ITEMS_COUNT = "TOTAL_ITEMS_COUNT";
var TOTAL_ITEMS_PRICE = "TOTAL_ITEMS_PRICE";

/*----------------- покупка - удаление - изменение ---------------*/
function buy($itemId, $priceFactorId, $action)
{

try
{
    var qControl = document.getElementById("q_" + $itemId + "_" + $priceFactorId);
    if (qControl == null)
    {
        return;
    }

    var quantity = getNumber(qControl.value);
    if (quantity == 0 && $action != DEL_ACTION)
    {
        alert("Не указано количество товара!");
        return;
    }

    document.getElementById($action + "_" + $itemId + "_" + $priceFactorId).disabled = true;
    document.getElementById($action + "_" + $itemId + "_" + $priceFactorId).src = "images/ProcessImage.gif";

//debugger;

    var kw = {
            url:    "a_can.php",
mimetype: "text/xml",
            load:   afterBuy,
            content: {q: quantity, itemId: $itemId, priceFactorId: $priceFactorId, action: $action},
            method: "GET",
            error: errorHandler,
            timeoutSeconds:10,
            timeout: onTimeout
        };
    dojo.io.bind(kw);
}
catch(ex)
{
    alert('1');
}
}

function afterBuy(type, data, evt)
{
try
{
    //debugger;
    //var xmlDoc = dojo.dom.createDocumentFromText(data);
    var xmlDoc = data;
    var buyNode = dojo.dom.firstElement(xmlDoc, "Buy");

    var tmp =  dojo.dom.firstElement(buyNode, "Action");
    var action = tmp.firstChild.data;
    tmp = dojo.dom.firstElement(buyNode, "ItemId");
    var itemId = tmp.firstChild.data;
    tmp = dojo.dom.firstElement(buyNode, "PriceFactorId");
    var priceFactorId = tmp.firstChild.data;
    tmp = dojo.dom.firstElement(buyNode, "Result");
    var result = tmp.firstChild.data;

    var button = document.getElementById(action + "_" + itemId + "_" + priceFactorId);
    if(button != null)
    {
    	button.disabled = false;
    	button.src = "images/"+action+".gif";
    }

    if(result == 1)
    {
        alert(successActions[action]);
    }
    else
    {
        alert(failActions[action]);
    }

    switch (action)
    {
        case ADD_ACTION:
        case EDIT_ACTION:
            refreshBasketPreview();
            break;
        case DEL_ACTION:
            document.location.reload();
            break;
    }
}
catch(ex)
{
    //alert('2');
}
}
/*------------------- отсылка формы заказа -------------------*/
function sendOrder()
{
    var x = new dojo.io.FormBind(
        {
            url:    "a_order.php",
            mimetype: "text/xml",
            formNode: dojo.byId('sendOrderForm'),
            load:   afterSendOrder,
            //method: "GET",
            error: errorHandler,
            timeoutSeconds:10,
            timeout: onTimeout
        });
}
function afterSendOrder(type, data, evt)
{
//debugger;
    //document.getElementById("sendOrderButton").disabled = false;

    //var xmlDoc = dojo.dom.createDocumentFromText(data);
    var xmlDoc = data;
    var buyNode = dojo.dom.firstElement(xmlDoc, "SendOrder");

    var tmp =  dojo.dom.firstElement(buyNode, "Result");
    var result = tmp.firstChild.data;
    tmp =  dojo.dom.firstElement(buyNode, "Comment");
    var comment = tmp.firstChild.data;

    switch (result)
    {
        case SEND_ORDER_INCOMPLETE:
            document.location.href = "m_send.php?result=" + SEND_ORDER_INCOMPLETE;
            break;
        case SEND_ORDER_SUCCESS:
            document.location.href = "m_send.php?result=" + SEND_ORDER_SUCCESS;
            break;
        case SEND_ORDER_FAIL:
            alert(comment);
            break;
    }
}

function refreshBasketPreview()
{
    var kw = {
            url:    "a_basketState.php",
            mimetype: "text/xml",
            load:   afterRefreshBasketPreview,
            method: "GET",
            error: errorHandler,
            timeoutSeconds:10,
            timeout: onTimeout
        };
    dojo.io.bind(kw);
}

function afterRefreshBasketPreview(type, data, evt)
{
    //var xmlDoc = dojo.dom.createDocumentFromText(data);
    var xmlDoc = data;
    var buyNode = dojo.dom.firstElement(xmlDoc, "BasketState");

    var tmp =  dojo.dom.firstElement(buyNode, "TotalItems");
    var totalItems = tmp.firstChild.data;
    tmp =  dojo.dom.firstElement(buyNode, "TotalPrice");
    var totalPrice = tmp.firstChild.data;

    var span = document.getElementById('TOTAL_ITEMS_COUNT');
    if (span != null)
    {
        span.innerHTML = totalItems;
    }
    span = document.getElementById('TOTAL_ITEMS_PRICE');
    if (span != null)
    {
        span.innerHTML = totalPrice;
    }
}

function disableSendOrder()
{
    setTimeout(" document.getElementById('sendOrderButton').disabled = true; document.getElementById('sendOrderButton').value = 'Ждите...';", 300);
}
/*-------------------служебное-------------------*/
function getNumber(value)
{
try
{
    if (value != null && value!= "" && isFinite(value))
    {
        return value;
    }

    return 0;
}
catch(ex)
{
    alert('3');
}
}

function onTimeout(type, data, evt)
{
    alert("Сервер не отвечает");
}

function errorHandler(type, data, evt)
{
    alert("Произошла ошибка - " + data);

    res = "";
    for(i in data)
    {
    	res += i + ": " + data[i] + "\r\n";
    }
    if(res != "")
    {
    	alert(res);
    }
}