﻿function CartAction(button)
{
    var columns, fields, idx, item, ws;
	
    var priceCall = "";

    fields = new Array('company', 'itemNo', 'description', 'scale', 'stock', 'group', 'unitPriceCAD', 'unitPriceUSD');

    item = button.parentNode.parentNode;
    columns = item.getElementsByTagName('TD');

    button.src = '/imgs/loading.gif';
    if (!button.operation) button.operation = 'Add';

    ws = new SOAP();
    ws.Operation = button.operation;
    ws.Url = '/cart.asmx';

    if (button.operation == 'Add')
    {
        for (idx=0; idx<fields.length; idx++)
        {
            ws.AddParameter(fields[idx], GetNodeValue(columns[idx]).replace(" ",""));
			
			if(idx == 6)
			{

				priceCall = GetNodeValue(columns[idx]);
				
			}
        }

        ws.Post();

		if(priceCall.substring(0,4) != "CALL")
		{
			if (ws.Successful)
			{
				button.alt = 'Remove this item from your shopping cart / Retirer cet item de votre panier';
				button.operation = 'Remove';
				button.src = '/imgs/remove.gif';
				item.className = 'trInCart';
			}
			else
			{
				alert('Error while adding this item to the shopping cart!');
				alert(ws.ErrorMessage);
				/*for(idx = 0; idx < ws.Parameters.length; idx++)
				{
					alert(ws.Parameters[idx]);
				}*/
			}
		}
		else
		{
			alert('Call for the price');
			button.src = '/imgs/add.gif';
		}
    }
    else if (button.operation == 'Remove')
    {
        for (idx=0; idx<2; idx++)
        {
            ws.AddParameter(fields[idx], GetNodeValue(columns[idx]));
        }

        ws.Post();

        if (ws.Successful)
        {
            button.alt = 'Add to cart / Ajouter au panier';
            button.operation = 'Add';
            button.src = '/imgs/add.gif';
            item.className = '';
        }
        else
        {
            alert('Error while removing this item from the shopping cart!');
        }
    }
}

function GetCartItems()
{
    var ws, items;

    ws = new SOAP();
    ws.Operation = 'GetItems';
    ws.Url = '/cart.asmx';

    ws.Post();

    if (ws.Successful)
    {
        items = ws.ResponseXml.getElementsByTagName('Item');
    }
    else
    {
        //alert('Error while retrieving shopping cart items!');
        alert(ws.ErrorMessage);
        items = null;
    }

    return items;
}

function GetNodeValue(node)
{
    if (node)
    {
        if (node.innerText) value = node.innerText;
        else if (node.text) value = node.text;
        else if (node.textContent) value = node.textContent;
        else value = '';
    }
    else value = '';

    return value;
}

function MarkCartItems()
{
    var button, cIdx, cItem, cItems, columns, idx, item, items, tblItems;

    tblItems = document.getElementById('tblItems');
    items = tblItems.getElementsByTagName('TR');

    cItems = GetCartItems();

    for (idx=1; idx<items.length; idx++)
    {
        item = items[idx];
        columns = item.getElementsByTagName('TD');

        button = item.getElementsByTagName('IMG')[0];
        button.alt = 'Add to cart / Ajouter au panier';
        button.operation = 'Add';
        button.src = '/imgs/add.gif';
        item.className = '';

        for (cIdx=0; cIdx<cItems.length; cIdx++)
        {
            cItem = cItems[cIdx];

            if (TrimEnd(GetNodeValue(columns[0])) == TrimEnd(GetNodeValue(cItem.getElementsByTagName('Company')[0])) && TrimEnd(GetNodeValue(columns[1])) == TrimEnd(GetNodeValue(cItem.getElementsByTagName('ItemNo')[0])))
            {
                button.alt = 'Remove this item from your shopping cart / Retirer cet item de votre panier';
                button.operation = 'Remove';
                button.src = '/imgs/remove.gif';
                item.className = 'trInCart';
            }
        }
    }
}

function TrimEnd(value)
{
    var idx, result;

    result = value;

    for (idx=value.length-1; idx>=0; idx--)
    {
        if (value.substr(idx, 1) == " ")
        {
            result = value.substr(0, idx);
        }
    }

    return result;
}
