/* cart */
addLoadEvent(Cart);


function Cart() 
{  
    var cartDiv = document.getElementById('cartBox');
    if (cartDiv) {
        var panel = new CartPanel(cartDiv);
    }
}


function CartPanel(cartDiv) 
{
    var that = this;
    var cartBox = cartDiv;
    var cartData = document.getElementById('cartData');
    var interval = null;
    var intervalClose = null;
    var openHeight = cartData.offsetHeight;
    var closeHeight = 0;
    var currentHeight = openHeight;
    var targetHeight = null;
    var isOpen = false; // prevent instant fadeing
    
    // cart link controller
    var invoker = document.getElementById('linkCart');
    invoker.onmouseover = function() {
        clearTimeout(intervalClose);
        var cartNotice = document.getElementById('cartNotice');
        if (cartNotice) {
            cartNotice.style.display = 'none';
        }
        showCart();
        return false;
    }
    invoker.onmouseout = function() {
       intervalClose = setTimeout(function() { hideCart() }, 1000); 
    }
    cartData.onmouseover = function() {
        clearTimeout(intervalClose);
        showCart();
        return false;
    }
    cartData.onmouseout = function() {
       intervalClose = setTimeout(function() { hideCart() }, 1000); 
    }
    
    // add to cart button controller
    var inputSubmit = document.getElementById('cartSubmit');
    if (inputSubmit) {
        inputSubmit.onclick = function() {
            updateCart();
            return false;
        }
    }
	
	// add to save button controller
    var lockerSubmit = document.getElementById('lockerSubmit');
    if (lockerSubmit) {
        lockerSubmit.onclick = function() {
            var result = true;
			var itemId = document.getElementById('cartSize');
			var itemQuantity = document.getElementById('cartQuantity');
			
			if (itemId) { 
				if (itemId.value == 0) {
					result = false;
					alert('Proszę wybrać rozmiar.');
				}
			}  
			if (itemQuantity) { 
				if (itemQuantity.value <= 0) {
					var result = false;
					alert('Liczba produktów musi być większa niż "0".');
				}
			}   
			
            return result;
        }
    }

    
    // show & hide 
    function showCart()
    {
       cartBox.style.visibility = 'visible';
       if (isOpen == false) fadein('cartBox',0);
       isOpen = true;               
    }
    
    function hideCart()
    {
       cartBox.style.visibility = 'hidden';
       isOpen = false; 
    }
    
    // updating cart
    function updateCart()
    {
        var valid = true;
		var itemId = document.getElementById('cartSize');
        var itemQuantity = document.getElementById('cartQuantity')
        var url = globalPath + '?request_type=async&page=cart';
        
		if (itemId) { 
            url += '&id=' + itemId.value;
			
			if (itemId.value == 0) {
				valid = false;
				alert('Proszę wybrać rozmiar.');
			}
        }  
        if (itemQuantity) { 
			url += '&quantity=' + itemQuantity.value;
			
			if (itemQuantity.value <= 0) {
				valid = false;
				alert('Liczba produktów musi być większa niż "0".');
			}
        }    
		
		
        if (valid) requestGet(url);       
    } 
    
    function handleResponse(response) {     
        var obj = eval('(' + response + ')');
        var cartPanel = document.getElementById('linkCart');
        if (cartPanel) cartPanel.innerHTML = obj.summary;
        cartData.innerHTML = obj.cart_items;
        clearTimeout(intervalClose);
        hideCart();
        var cartNotice = document.getElementById('cartNotice');
        if (cartNotice) {
            cartNotice.style.display = 'block';
        }
		
		// hide other notices
        var okContent = document.getElementById('infoBox');
        if (okContent) {
            okContent.style.display = 'none';
        }		
        showCart();
        intervalClose = setTimeout(function() { hideCart() }, 4000); 
    }

    function createXMLHttp() 
    {
        if (typeof XMLHttpRequest != 'undefined') {
            return new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            var aVersions = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp" ];
            for (var i = 0; i < aVersions.length; i++) {
                try {
                    var oXmlHttp = new ActiveXObject(aVersions[i]);
                    return oXmlHttp;
                } catch (oError) {
                    // do nothing
                }
            }
        }
        throw new Error("Obiekt XMLHttp nie został utworzony.");
    }
    
    function requestGet(url) 
    {
        var oXMLHttp = createXMLHttp();
        oXMLHttp.open("get", url, true);
        oXMLHttp.onreadystatechange = function () {
            if (oXMLHttp.readyState == 4) {
                if (oXMLHttp.status == 200) {
                    handleResponse(oXMLHttp.responseText);             
                } else {
                    // do nothing
                }
            }            
        };
        oXMLHttp.send(null);
    }
    
}


























// end
