/**
 * @author jaanush
 */
dojo.provide("tornrosa.site_old")

freeCoiceCounter = 1;

formatCurrency = function(inDatum){
	return isNaN(inDatum) ? '...' : dojo.currency.format(inDatum, this.constraint);
}

formatDate = function(inDatum){
	return dojo.date.locale.format(new Date(inDatum), this.constraint);
}

cartService = new dojo.rpc.JsonService('/smd.php?class=ss_cart_rpc');

jsonStore = new slipstream.data.JSONRPCReadStore({
    url: '/smd.php?class=ss_product_rpc',
    getMethod: 'getProduct',
    getArgs: {
        id: null
    }
});

cartStore = new dojo.data.ItemFileWriteStore({
    data: {
        identifier: 'idprod_detail',
        items: []
    }
});

dojo.mixin(cartStore, {
    addNode: function(data){
        this.newItem(data);
		//console.log(data,'New Item');
		//console.log(this,'Store');
    },
    delNode: function(id){
        this.deleteItem(this._getItemByIdentity(id));
        this.save();
    },
    setNodeQuantity: function(id, quantity){
        this.setValue(this._getItemByIdentity(id), 'quantity', quantity)
    }
});

function openCart(){
    dojo.publish('setCat', ['checkout', '']);
    cartGrid.update();
}

function genProd(items, request){
    dojo.forEach(items, function(i){
        itemsList += jsonStore.getValue(i, "name") + " ";
    });
}

function GetAllItems(){
    jsonStore.fetch({
        query: {
            active: '1'
        },
        onComplete: function(responseObject, ioArgs){
            prodShelf.selectAll();
            prodShelf.deleteSelectedNodes();
            prodShelf.clearItems();
            prodShelf.insertNodes(false, responseObject);
        }
    })
}

function node_creator(data, hint){
    var types = [];
    types.push("cartitem");
    if (hint != 'avatar') {
        var prod = new slipstream.store.Product({
            data: data,
            title: data.name+' - drag produkten till varukorgen för att köpa!'
        });
    } else {
        var prod = new slipstream.store.ProductCart({
            data: data,
            title: data.name+' - drag produkten till varukorgen för att köpa!'
        });
    }
    return {
        node: prod.domNode,
        data: data,
        type: types
    };
}

function targetnode_creator(data, hint){
    var types = [];
    if (data.frittval == undefined) {
        types.push("item");
        var prod = new slipstream.store.ProductCart({
            data: data,
            title: data.name
        })
    }
    else {
        types.push("frittval");
        var prod = new slipstream.store.ProductCartFree({
            data: data,
            title: data.name
        });
    }
    return {
        node: prod.domNode,
        data: data,
        type: types
    }
    
}

init=function(){
    cartGrid = new dojox.grid.DataGrid({
        store: cartStore,
        autoHeight: true,
        structure: [[{
            name: 'Namn',
            field: 'name',
            relWidth: 2
        }, {
            name: 'Pris',
            field: 'price',
            relWidth: 1,
			formatter: formatCurrency,
			constraint: {currency: 'SEK', fractional: false}
        }, {
            name: 'Antal',
            field: 'quantity',
            relWidth: 1,
            editable: true
        },{
			name: 'Summa',
			get: function(index,item){
				if(item===null) return;
				//console.log(item._S.getValue(item,'price'));
				//console.log(this.getValue(item,'price'));
				return (item._S.getValue(item,'price')*item._S.getValue(item,'quantity'));
			},
			rowSpan: 2,
			formatter: formatCurrency,
			constraint: {currency: 'SEK', fractional: false},
			styles:'font-weight:bold;'
		}],[{
			name: 'Text',
			field: 'text',
			colSpan: 3
		}]],
        rowSelector: '20px'
    }, 'cartGridNode');
    cartGrid.startup();
    dojo.publish('setMain', ['intro']);
    prodShelf = new dojo.dnd.Source("shelf", {
        creator: node_creator,
        accept: [],
        copyOnly: true,
        selfAccept: false
    });
    prodCart = new dojo.dnd.Source("cart", {
        creator: targetnode_creator,
        accept: ["cartitem"],
        copyOnly: false
    });
    GetAllItems();
    dojo.subscribe('setCat', null, function(label){
		//console.log(label,'Label');
        dojo.byId('intro').style.display = 'none'
		if(label=='confirmation'){
			dojo.byId('confirmation').style.display='block';
		} else {
			dojo.byId('confirmation').style.display='none';
		}
    });
    dojo.connect(prodCart, 'onDropExternal', null, function onDndDrop(source, nodes, copy){
        dojo.forEach(nodes, function(node){
            djnode = dijit.byId(node.id);
            var cartItems = dojo.query('[prodId=' + djnode.prodId + ']', dojo.byId('cart'));
            if (cartItems.length > 1) {
                var keepNode = dijit.byId(cartItems[0].id);
                keepNode.setQuantity(keepNode.getQuantity() + 1);
                cartStore.setNodeQuantity(keepNode.prodId, keepNode.getQuantity());
                prodCart.delItem(cartItems[1].id);
                dijit.byId(cartItems[1].id).destroy();
            }
            else {
                cartStore.addNode({
                    price: djnode.price,
                    text: djnode.text,
                    idprod_detail: djnode.prodId,
                    quantity: 1,
                    name: djnode.name
                });
                //console.log('Added Item', djnode);
            }
            cartSummary.update();
        });
    });
    
    dojo.subscribe("/dnd/cancel", function(){
        var manager = dojo.dnd.manager();
        var source = manager.source;
        if (source.copyOnly == false) {
            dojo.forEach(manager.nodes, function(node){
                var dnode = dijit.byId(node.id);
                if (dnode.getQuantity() == 1) {
                    //console.log('Deleted Item', dnode);
                    cartStore.delNode(dnode.prodId);
                    if (source.anchor == node) {
                        source.anchor = null;
                    }
                    source.delItem(node.id);
                    dnode.destroy();
                }
                else {
                    dnode.setQuantity(dnode.getQuantity() - 1);
                    cartStore.setNodeQuantity(dnode.prodId, dnode.getQuantity());
                }
                cartSummary.update();
            });
        }
    });
};


function addFreeChoise(data){
	console.log('Addera fritt val', data);
	var modNode;
	prodCart.getAllNodes().forEach(function(node){
		var node=dijit.byId(node.id);
		console.log('Checking node', node);
		if (data.price == node.price && data.frittval == node.text) {
			modNode=node;
			node.setQuantity(node.getQuantity() + (data.quantity || 1));
			cartStore.setNodeQuantity(node.prodId, node.getQuantity());
			cartSummary.update();
			console.log(node,'Increase quantity');
			return;
		}
		//console.log(data.price==node.price,'Price');
		//console.log(data.text==node.text,'Text');
	});
	if (!modNode) {
		data.idprod_detail = 'free' + freeCoiceCounter++;
		prodCart.insertNodes(true, [data]);
		console.log(data.frittval,'Add new item');
		//console.log(prodCart.insertNodes(true, [data]));
		cartStore.addNode({
			price: data.price,
			text: data.frittval,
			quantity: 1,
			name: 'Fritt val',
			idprod_detail: data.idprod_detail
		});
		//prodCart.insertNodes(true,[dijit.byId('cartForm').attr('value')])
		cartSummary.update();
	}
}

function clearCart(){
    prodCart.selectAll();
    prodCart.deleteSelectedNodes();
    prodCart.clearItems();
    cartStore.fetch({
        onItem: function(item){
            cartStore.deleteItem(item);
            cartStore.save();
        }
    });
    cartSummary.update();
}

function toggleMain(id){
    if (this.id == id) {
        this.style.display = 'block';
    }
    else {
        this.style.display = 'none';
    }
}


function postCart(){
	if(!coform.validate() || cartStore._getItemsArray().length==0) return;
    var data = dijit.byId('formmanager').getValues();
    data.cart = [];
	/*
    cartStore._getItemsArray().forEach(function(item){
        data.cart.push({
            fkprod_detail: cartStore.getValue(item, 'idprod_detail'),
            name: cartStore.getValue(item, 'name'),
            quantity: cartStore.getValue(item, 'quantity'),
            price: cartStore.getValue(item, 'price'),
            text: cartStore.getValue(item, 'text')
        })
    });
    */
	dojo.forEach(cartStore._getItemsArray(),function(item){
        data.cart.push({
            fkprod_detail: cartStore.getValue(item, 'idprod_detail'),
            name: cartStore.getValue(item, 'name'),
            quantity: cartStore.getValue(item, 'quantity'),
            price: cartStore.getValue(item, 'price'),
            text: cartStore.getValue(item, 'text')
        });
    });
	data.delivery_date=dojo.date.stamp.toISOString(data.delivery_date);
    cartService.setCart(data);
	clearCart();
	dojo.publish('setCat', ['confirmation']);
}


dojo.addOnLoad(init);
