var Basket;
var UsesSizes = false;
var Sum;
var Count;
var ErrorPopup;
var ErrorPopupText;
var Transport;

function closeError()
{
    if(ErrorPopup.parentNode)
    {
        ErrorPopup.parentNode.removeChild(ErrorPopup);
    }
}

function transportCost()
{

	shipping_poczta = $( '#shipping0' ).is( ':checked' );
	
	if ( shipping_poczta && ! $( '#method0' ).is( ':checked' ) && Count >= 2 ) // jezeli Poczta Polska i wiecej niz 2 i nie pobranie
		Transport = 0;
	else
	{
		
		if ( $( '#method0' ).is( ':checked' ) ) {

			Transport = ( shipping_poczta ) ? poczta_pobranie : kurier_pobranie ;

		} else if ( $( '#method1' ).is( ':checked' ) ) {

			Transport = ( shipping_poczta ) ? poczta_wplata : kurier_wplata ;

		} else if ( $( '#method2' ).is( ':checked' ) ) {

			Transport = ( shipping_poczta ) ? poczta_allpay : kurier_allpay ;

		} else {

			Transport = ( shipping_poczta ) ? poczta_wlasne : kurier_wlasne ;

		}
	}

	$( '#sh_method' ).text( ( ( shipping_poczta ) ? 'Poczta Polska' : 'Kurier GLS' ) );

    var costTransport = dojo.byId("costTransport");

    for(var i = 0; i < costTransport.childNodes.length; i++)
    {
        if(costTransport.childNodes[i].nodeType == 3)
        {
            costTransport.removeChild(costTransport.childNodes[i]);
            costTransport.appendChild( document.createTextNode(Transport) );
        }
    }

    var basketSum = dojo.byId("basketSum");

    for(var i = 0; i < basketSum.childNodes.length; i++)
    {
        if(basketSum.childNodes[i].nodeType == 3)
        {
            basketSum.removeChild(basketSum.childNodes[i]);
            basketSum.appendChild( document.createTextNode(Sum + Transport) );
        }
    }
	balance( );
}

function balance( ) {

	ship = $( '#shipping0' );

	if ( ship.length == 0 )
		return;

	shipping_poczta = ship.is( ':checked' );
	trans =  ( shipping_poczta ) ? poczta_wlasne : kurier_wlasne;

	if ( parseFloat( $( '#balance' ).val( ) ) >= Sum + trans ) {
		$( '#methodbalance' ).show( );
	} else {
		$( '#methodbalance' ).hide( );
	}
}

function refreshBasket(type, basket, event)
{
    if(!Basket)
    {
        return;
    }

    sum = 0;

    var basket = basket.getElementsByTagName("basket").item(0);
    items = new Array();

    for(var i = 0; i < basket.childNodes.length; i++)
    {
        if(basket.childNodes[i].nodeType == 1)
        {
            items[ items.length ] = basket.childNodes[i];
        }
    }

    var div = document.createElement("div");
    div.className = "scroll";

    var container = document.createElement("table");
    container.className = "BWList";
    div.appendChild(container);

    for(var i = 0; i < items.length; i++)
    {
        var item = items[i];

        var float = parseFloat( item.getElementsByTagName("price").item(0).getAttribute("value") );
        sum += float;

        var name = item.getElementsByTagName("name").item(0).getAttribute("value");

        if(name.length > 17)
        {
            name = name.substring(0, 15) + "…";
        }

        var row = container.insertRow(-1);

        var cell = row.insertCell(-1);
        cell.className = "indeks";
        cell.appendChild( document.createTextNode((i + 1) + ".") );

        var a = document.createElement("a");
        a.href = "/koszyk";
        a.appendChild( document.createTextNode(name) );

        cell = row.insertCell(-1);
        cell.className = "nazwa";
        cell.appendChild(a);

        var span = document.createElement("span");
        span.className = "pln";
        span.appendChild( document.createTextNode("PLN") );

        cell = row.insertCell(-1);
        cell.className = "cenka";
        cell.appendChild( document.createTextNode(float + " ") );
        cell.appendChild(span);

        a = document.createElement("a");
        a.href = "/" + item.nodeName + "/wyjmij";
        a.onclick = new Function("        dojo.io.bind({"
+ "            url: \"/ajax.php?module=basket&command=remove&id=" + item.nodeName + "\","
+ "            error: function(type, data, event)"
+ "            {"
+ "            },"
+ "            load: refreshBasket,"
+ "            mimetype: \"application/xml\""
+ "        });"
+ "        return false;");
        a.appendChild( document.createTextNode("x") );

        cell = row.insertCell(-1);
        cell.className = "closer";
        cell.appendChild(a);
    }

    var p = document.createElement("p");
    p.className = "wartosc";

    var a = document.createElement("a");
    a.href = "/koszyk";
    a.appendChild( document.createTextNode("Wartość: " + sum + " PLN") );
    p.appendChild(a);

	balance( );

    for(i = Basket.childNodes.length - 1; i >= 0; i--)
    {
        Basket.removeChild(Basket.childNodes[i]);
    }

    Basket.appendChild(div);
    Basket.appendChild(p);
}

function addToBasket()
{
    if(UsesSizes && dojo.byId("composerSize").value == "")
    {
        ErrorPopupText.nodeValue = "Wybierz rozmiar koszulki.";
        document.body.appendChild(ErrorPopup);
        return;
    }

    if( parseInt( dojo.byId("composerAmount").value ) < 1)
    {
        ErrorPopupText.nodeValue = "Musisz zamówić conajmniej jedną sztukę towaru.";
        document.body.appendChild(ErrorPopup);
        return;
    }

    dojo.io.bind({
        url: "/ajax.php?module=basket&command=" + ( dojo.byId("uploadImage") ? "upload&pattern" : "add&item") + "=" + CurrentPattern + (UsesSizes ? "&size=" + dojo.byId("composerSize").value : "") + "&count=" + dojo.byId("composerAmount").value + ( dojo.byId("composerProductId") ? "&product=" + dojo.byId("composerProductId").value : ""),
        error: function(type, data, event)
        {
        },
        load: function(type, basket, event){
			window.location.href = '/koszyk';
		},
        mimetype: "application/xml"
    });
}

function expressBasket()
{
    if(UsesSizes && dojo.byId("composerSize").value == "")
    {
        ErrorPopupText.nodeValue = "Wybierz rozmiar koszulki.";
        document.body.appendChild(ErrorPopup);
        return;
    }

    dojo.io.bind({
        url: "/ajax.php?module=basket&command=express&" + ( dojo.byId("uploadImage") ? "pattern" : "item") + "=" + CurrentPattern + (UsesSizes ? "&size=" + dojo.byId("composerSize").value : "") + "&count=" + dojo.byId("composerAmount").value + ( dojo.byId("composerProductId") ? "&product=" + dojo.byId("composerProductId").value : ""),
        error: function(type, data, event)
        {
        },
        load: function(type, basket, event)
        {
            top.location = "/koszyk";
        },
        mimetype: "application/xml"
    });
}

function basketUpdater(id)
{
    this.id = id;

    this.execute = function()
    {
        if( parseInt( dojo.byId("basketCount" + this.id).value ) < 1)
        {
            ErrorPopupText.nodeValue = "Musisz zamówić conajmniej jedną sztukę towaru.";
            document.body.appendChild(ErrorPopup);
            return;
        }

        dojo.io.bind({
            url: "/ajax.php?module=basket&command=update&id=" + this.id + "&count=" + dojo.byId("basketCount" + this.id).value,
            error: function(type, data, event)
            {
            },
            load: function(type, basket, event)
            {
                basket = basket.getElementsByTagName("basket").item(0);
                Sum = 0;
                Count = 0;

                for(var i = 0; i < basket.childNodes.length; i++)
                {
                    if(basket.childNodes[i].nodeType == 1)
                    {
                        var price = basket.childNodes[i].getElementsByTagName("price").item(0).getAttribute("value");

                        Sum += parseFloat(price);
                        Count += parseInt( basket.childNodes[i].getElementsByTagName("count").item(0).getAttribute("value") );

                        if(basket.childNodes[i].nodeName == this.id)
                        {
                            label = dojo.byId("basketPrice" + this.id);

                            for(var j = 0; j < label.childNodes.length; j++)
                            {
                                if(label.childNodes[j].nodeType == 3)
                                {
                                    label.childNodes[j].nodeValue = price + " PLN";
                                    break;
                                }
                            }
                        }
                    }
                }

                transportCost();

                refreshBasket(type, basket, event);
            },
            mimetype: "application/xml",
            id: this.id
        });
    }
}

function basketDeleter(id)
{
    this.id = id;

    this.execute = function()
    {
        dojo.io.bind({
            url: "/ajax.php?module=basket&command=remove&id=" + this.id,
            error: function(type, data, event)
            {
            },
            load: function(type, basket, event)
            {
                row = dojo.byId("basketRow" + this.id);
                row.parentNode.removeChild(row);

                basket = basket.getElementsByTagName("basket").item(0);
                Sum = 0;
				Count = 0;

                for(var i = 0; i < basket.childNodes.length; i++)
                {
                    if(basket.childNodes[i].nodeType == 1)
                    {
                        Sum += parseFloat( basket.childNodes[i].getElementsByTagName("price").item(0).getAttribute("value") );
                        Count += parseInt( basket.childNodes[i].getElementsByTagName("count").item(0).getAttribute("value") );
                    }
                }

                transportCost();

                refreshBasket(type, basket, event);
            },
            mimetype: "application/xml",
            id: this.id
        });
    }
}

function loadPrint(type, pattern, event)
{
    var pattern = pattern.getElementsByTagName("pattern").item(0);

    this.print.style.marginTop = (-128 + (4 / 15) * parseInt( pattern.getElementsByTagName("print_y").item(0).getAttribute("value") ) ) + "px";
    this.print.style.left = (-36 + (4 / 15) * parseInt( pattern.getElementsByTagName("print_x").item(0).getAttribute("value") ) ) + "px";
	this.print.style.borderWidth = 0;
	this.print.style.padding = '7px';
    this.print.style.visibility = "visible";
}

function loadPrints(basket)
{
    BasketTable = dojo.byId("basketTable").tBodies[0];

    for(i = 0; i < BasketTable.rows.length; i++)
    {
        row = BasketTable.rows[i];

        if( row.id.match(/^basketRows[0-9]+$/) )
        {
            shirtId = row.id.replace(/^basketRow/, "");

            shirtData = basket.getElementsByTagName(shirtId).item(0);

            printImage = document.createElement("img");
            printImage.id = "print" + shirtId;
            printImage.style.position = "relative";
            printImage.style.visibility = "hidden";
            printImage.alt = "Własny projekt koszulki";
            printImage.src = "/upload/patterns/thumbs/" + shirtData.getElementsByTagName("upload").item(0).getAttribute("value");
            document.getElementById("thumb" + shirtId).parentNode.appendChild(printImage);

            dojo.io.bind({
                print: printImage,
                url: "/ajax.php?module=generator&command=pattern&id=" + shirtData.getElementsByTagName("id").item(0).getAttribute("value"),
                error: function(type, data, event)
                {
                },
                load: loadPrint,
                mimetype: "application/xml"
            });
        }
        else if( row.id.match(/^basketRowm[0-9]+$/) )
        {
            shirtId = row.id.replace(/^basketRow/, "");

            shirtData = basket.getElementsByTagName(shirtId).item(0);

            printImage = document.createElement("img");
            printImage.id = "print" + shirtId;
            printImage.style.position = "relative";
            printImage.style.visibility = "hidden";
            printImage.alt = "Własny projekt koszulki";
            printImage.src = "/upload/shops/products/imports/thumbs/" + shirtData.getElementsByTagName("id").item(0).getAttribute("value") + ".gif";
            document.getElementById("thumb" + shirtId).parentNode.appendChild(printImage);

            dojo.io.bind({
                print: printImage,
                url: "/ajax.php?module=generator&command=pattern&id=" + shirtData.getElementsByTagName("pattern").item(0).getAttribute("value"),
                error: function(type, data, event)
                {
                },
                load: loadPrint,
                mimetype: "application/xml"
            });
        }
    }
}

function initializeBasket()
{
    Basket = dojo.byId("basket");

    if(Basket)
    {
        dojo.io.bind({
            url: "/ajax.php?module=basket&command=list",
            error: function(type, data, event)
            {
            },
            load: refreshBasket,
            mimetype: "application/xml"
        });
    }

    var sumCost = dojo.byId("sumCost");

    if(sumCost)
    {
        Sum = parseFloat(sumCost.value);
    }

	balance( );

    var sumCount = dojo.byId("sumCount");

    if(sumCount)
    {
        Count = parseFloat(sumCount.value);
    }

    var method0 = dojo.byId("method0");
    var method1 = dojo.byId("method1");
    var method2 = dojo.byId("method2");
	var method3 = dojo.byId("method3");

	var shipping0 = dojo.byId("shipping0");
	var shipping1 = dojo.byId("shipping1");

    if(method2)
    {
        dojo.event.connect(method0, "onchange", transportCost);
        dojo.event.connect(method1, "onchange", transportCost);
        dojo.event.connect(method2, "onchange", transportCost);
		if ( method3 )
			dojo.event.connect(method3, "onchange", transportCost);

		dojo.event.connect(shipping0, "onchange", transportCost);
        dojo.event.connect(shipping1, "onchange", transportCost);
    }

    composerBuy = dojo.byId("to_basket");

    if(composerBuy)
    {
        dojo.event.connect(composerBuy, "onclick", addToBasket);
    }

    composerExpress = dojo.byId("to_cash");

    if(composerExpress)
    {
        //dojo.event.connect(composerExpress, "onclick", expressBasket);
		dojo.event.connect(composerExpress, "onclick", addToBasket);
    }

    BasketTable = dojo.byId("basketTable");

    if(BasketTable)
    {
        BasketTable = BasketTable.tBodies[0];

        for(var i = 0; i < BasketTable.rows.length; i++)
        {
            var links = document.getElementsByTagName("a");

            for(var j = 0; j < links.length; j++)
            {
                if( links[j].id.match(/^basketSubmit/) )
                {
                    updater = new basketUpdater( links[j].id.replace(/^basketSubmit/, "") );
                    dojo.event.connect(links[j], "onclick", updater, "execute");
                }

                if( links[j].id.match(/^basketDelete/) )
                {
                    deleter = new basketDeleter( links[j].id.replace(/^basketDelete/, "") );
                    dojo.event.connect(links[j], "onclick", deleter, "execute");
                }
            }
        }

        dojo.io.bind({
            url: "/ajax.php?module=basket&command=list",
            error: function(type, data, event)
            {
            },
            load: function(type, basket, event)
            {
                loadPrints( basket.getElementsByTagName("basket").item(0) );
            },
            mimetype: "application/xml"
        });
    }

    ErrorPopup = document.createElement("div");
    ErrorPopup.className = "popup";

    var div = document.createElement("div");
    div.className = "bg_white";
    ErrorPopup.appendChild(div);

    div = document.createElement("div");
    div.className = "visible";
    ErrorPopup.appendChild(div);

    var box = document.createElement("div");
    box.className = "popBox";
    div.appendChild(box);

    div = document.createElement("div");
    div.className = "title";
    box.appendChild(div);

    var span = document.createElement("span");
    span.className = "left";
    div.appendChild(span);

    span = document.createElement("span");
    span.className = "middle";
    span.appendChild( document.createTextNode("Błąd") );
    div.appendChild(span);

    var a = document.createElement("a");
    a.className = "nowhere";
    a.onclick = closeError;
    div.appendChild(a);

    span = document.createElement("span");
    span.className = "right";
    a.appendChild(span);

    var main = document.createElement("div");
    main.className = "main";
    box.appendChild(main);

    ErrorPopupText = document.createTextNode("produkt");

    var p = document.createElement("p");
    p.className = "error";
    p.appendChild(ErrorPopupText);
    main.appendChild(p);

    div = document.createElement("div");
    main.appendChild(div);

    a = document.createElement("a");
    a.className = "nowhere";
    a.onclick = closeError;
    div.appendChild(a);

    var img = document.createElement("img");
    img.src = "/images/back.png";
    a.appendChild(img);
    a.appendChild( document.createTextNode("Wróć") );
}

dojo.addOnLoad(initializeBasket);
