﻿var spanTotal = null;
var spanItems = null;
var cartPopup = null;
var btnCartView = null;
var divItemsId = null;
var divEmptyCartId = null;
var divItemsBox = null;
var divEmptyCartBox = null;
var btnCheckOutId = null;
var btnCheckOut = null;
var loadCartBox = false;

var _cartTimeOut = 1000;
var _cartTimer = null;
var _cartTickHandler = null;


function setCart()
{
    var user = new $User(currUserID);
    user.GetCart([], onCartBoxSucceded, onFailure, null, null, true);
}

function onCartFailure(err)
{ 
    alert(err.Message);
}

function showLogModal()
{
    showUserModal("login" , "Za kupnju je potrebno ulogirati se.");    
}

function onCartBoxSucceded(response) {

    cart = response;
    if (cart.Items.length == 0) {
        
    }
    if (cart.IsAmbiguous) {
        $find('modalAmbiguous').show();
        return;
    }
    else {
        if (!isAnonymous() && $find('modalAmbiguous'))
            $find('modalAmbiguous').hide();
    }

    var numOfItems = 0;
    for (var _item in cart.Items) {
        numOfItems += cart.Items[_item].Qty;
    }
    
    spanItems.innerHTML = numOfItems;
    spanTotal.innerHTML = cart.Total;
    var cartTbl = $get("tblCartItems");
    $get("tdTotal").innerHTML = cart.Total;
    
    
    for(var i=cartTbl.rows.length-1; i > -1; i--)
       cartTbl.deleteRow(i);
        
    for(var index = 0; index < cart.Items.length; index++)
    {
        var isLastItem = index == cart.Items.length -1;
        var item = cart.Items[index];
        var ciRow = cartTbl.insertRow(index);
        
        var cellTitle = ciRow.insertCell(0);
        cellTitle.className = "popup_cart_book";
        cellTitle.style.width = "214px";
        cellTitle.appendChild(document.createTextNode(item.Title));
        
        var cellQty = ciRow.insertCell(1);
        cellQty.className = "popup_cart_input";
        cellQty.style.width = "66px";
        
        var anchorMinus = document.createElement("a");
        anchorMinus.href = "javascript:void(0);";
        anchorMinus.id = "minus"+item.CartItemID;
        anchorMinus.className = "minus";
        anchorMinus.title = "makni iz košarice";
        anchorMinus.setAttribute("CartItemID", item.CartItemID);
        cellQty.appendChild(anchorMinus);
        
        var inputQty = document.createElement("input");
        inputQty.value = item.Qty;
        inputQty.id = "inputQty" + item.CartItemID;
        inputQty.maxLength = 4;
        inputQty.setAttribute("CartItemID", item.CartItemID);
        cellQty.appendChild(inputQty);
        
        var anchorPlus = document.createElement("a");
        anchorPlus.href = "javascript:void(0);";
        anchorPlus.id = "plus"+item.ItemID;
        anchorPlus.className = "plus";
        anchorPlus.title = "dodaj u košaricu";
        anchorPlus.setAttribute("ItemID", item.ItemID);
        cellQty.appendChild(anchorPlus);
        
        var cellPrice = ciRow.insertCell(2);
        cellPrice.className = "popup_cart_price";
        cellPrice.style.width = "85px";
        cellPrice.appendChild(document.createTextNode(item.FormattedPrice));        
    } 
    
    if(cartTbl.rows.length == 0) 
    {
        btnCheckOut.style.cursor = "default";
        divItemsBox.style.display = "none";
        divEmptyCartBox.style.display = "block";
    }
    else 
    {
        divItemsBox.style.display = "block";
        divEmptyCartBox.style.display = "none";
    }     
}

function onBodyBoxClick(ev)
{   
    if(ev.target.tagName.toUpperCase() == "INPUT")
        return;    
    
    var btn = ev.target
    
    if(btn.getAttribute("CartItemID"))
        removeCartBoxItem(btn, btn.getAttribute("CartItemID"));
    else if(btn.getAttribute("ItemID"))
        addCartBoxItem(btn, btn.getAttribute("ItemID"));
}

function removeCartBoxItem(btn, id) {        
   cart.Remove([new $CartItem(id),1], onCartBoxSucceded, onCartFailure, btn);
}


function addCartBoxItem(btn, id) {
    cart.Add([new $Item(parseInt(id)), 1], onCartBoxSucceded, onCartFailure, btn);
}

function onPopupCartMouseOver() {

    if (!cartPopup)
        return;
        
    cartPopup.show();
    cartPopup.get_element().style.left = "611px";  
}

function onPopupCartMouseOut() {

    if (!cartPopup)
        return;
        
    cartPopup.hide();
}

function onBodyMouseOver(ev,args) {
    var btn = ev.target
    if(!btn.getAttribute("cartPopup")) return;
    
    if(!loadCartBox) 
    {
        loadCartBox = true;
    }

    if (!cartPopup)
        return;
            
    cartPopup.show();
    cartPopup.get_element().style.left = "611px";          
}

function onBodyMouseOut(ev, args) {

    if (!cartPopup)
        return;
        
    var btn = ev.target
    if(!btn.getAttribute("cartPopup"))
        cartPopup.hide();
}

function setCartItem(id, qty)
{
   cart.Set([new $CartItem(id),qty], onCartBoxSucceded, onFailure);
}

function onCartBoxKeyUp(args)
{
    var k = args.keyCode ? args.keyCode : args.rawEvent.keyCode;
        
    if(args.target.id.startsWith("inputQty"))
    {
        onCartTick(args);
        args.preventDefault();
    }
       
}

function onCartBoxKeyDown(args)
{
    var k = args.keyCode ? args.keyCode : args.rawEvent.keyCode;   
   
    if(args.target.id.startsWith("inputQty"))
    {
       if(!((k >= 16 && k <= 18 ) || (k >= 112 && k <= 123) || (k >= 48 && k <= 57 ) || k == Sys.UI.Key.left || k == Sys.UI.Key.right || k == Sys.UI.Key.tab || k == Sys.UI.Key.esc || k == Sys.UI.Key.backspace || k == Sys.UI.Key.end || k == Sys.UI.Key.home || k == Sys.UI.Key.del ))
            args.preventDefault();       
    }
}
function onCartTick(args) {
    removeCartTimer();
    if (args.target.value != '')
        setCartItem(parseInt(args.target.getAttribute("CartItemID")), parseInt(args.target.value));
}

function startCartTimer(args) {
    if (!_cartTimer) {
        _cartTickHandler = Function.createDelegate(this, function() { onCartTick(args) });
        _cartTimer = new Sys.Timer();
        _cartTimer.set_interval(_cartTimeOut);
        _cartTimer.add_tick(_cartTickHandler);
        _cartTimer.set_enabled(true);
    }
}

function removeCartTimer() {
    if (_cartTimer) {
        _cartTimer.remove_tick(_cartTickHandler);
        _cartTimer.set_enabled(false);
        _cartTimer.dispose();
        _cartTickHandler = null;
        _cartTimer = null;
    }
}

function shopLoad() 
{
    spanTotal = $get('spanTotal');
    spanItems = $get('spanItems');
    cartPopup = $find('cartPopup');
    divItemsBox = $get("divItemsId");
    divEmptyCartBox = $get(divEmptyCartId);
    btnCheckOut = $get(btnCheckOutId);
    
    if($get('tblCartItems')) 
    {
        $addHandler($get('tblCartItems'), 'click', onBodyBoxClick);        
    }
    
    $addHandler(document.body, 'keyup', onCartBoxKeyUp);
    $addHandler(document.body, 'keydown', onCartBoxKeyDown);    
    $addHandler(document.body, 'mouseover', onBodyMouseOver);
    $addHandler(document.body, 'mouseout', onBodyMouseOut);
}

function shopUnLoad() 
{
    if($get('tblCartItems')) {

        if (hasEvent($get('tblCartItems'), 'click', onBodyBoxClick))
            $removeHandler($get('tblCartItems'), 'click', onBodyBoxClick);        
    }
    
    $removeHandler(document.body, 'keyup', onCartBoxKeyUp);
    $removeHandler(document.body, 'keydown', onCartBoxKeyDown);    
    $removeHandler(document.body, 'mouseover', onBodyMouseOver);
    $removeHandler(document.body, 'mouseout', onBodyMouseOut);
}

Sys.Application.add_load(shopLoad);
Sys.Application.add_unload(shopUnLoad);

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();



