﻿var AddTo = function(){
    var fader = null;
    var notification = null;
    var borderWidth = 1;
    var padding = 40;
    var width = 200;

    function setText(id, text){
        var el = document.getElementById(id);
        if(el) el.innerHTML = text;
    }
    
    function startFadingNotification(){
        fader = window.setInterval(fadeOutNotification, 100);
    }
    
    function fadeOutNotification(){
        var newOpacity = notification.style.opacity - 0.1;
        if(newOpacity > 0)
            setOpacity(notification, newOpacity);
        else {
            window.clearInterval(fader);
            fader = null;
            setOpacity(notification, 0);
        }
    }
    
    function setOpacity(el, o){
        el.style.opacity = o;
        el.style.filter = "alpha(opacity = " + (o * 100) + ")";
    }

    function getScrollingPosition(){
        var position = [0, 0];
        if (typeof window.pageYOffset != 'undefined'){
            position = [window.pageXOffset, window.pageYOffset];
        }
        else if (typeof document.documentElement.scrollTop != 'undefined' && document.documentElement.scrollTop > 0){
            position = [document.documentElement.scrollLeft, document.documentElement.scrollTop];
        }
        else if (typeof document.body.scrollTop != 'undefined'){
            position = [document.body.scrollLeft, document.body.scrollTop];
        }
        return position;
    }
    
    function createNotification(){
        notification = document.createElement("div");
        notification.id = "addedtocartnotification";
        notification.style.opacity = 0;
        notification.style.position = "absolute";
        notification.style.border = borderWidth + "px solid black";
        notification.style.padding = padding + "px";
        notification.style.textAlign = "center";
        notification.style.zIndex = "9999";
        document.body.appendChild(notification);
    }
    
    function getWindowSize(){
        var size = [0, 0];

	    if(!window.innerWidth){
		    if(!(document.documentElement.clientWidth == 0)){
			    size = [document.documentElement.clientWidth, document.documentElement.clientHeight];
		    }
		    else{
		        size = [document.body.clientWidth, document.body.clientHeight];
		    }
	    }
	    else{
	        size = [window.innerWidth, window.innerHeight];
	    }
	    return size;
    }
    
    return {
        addToCart : function(bvin, quantity, callback){
            if(bvin){
                var url = "/store/BVModules/Themes/Slate/AddToCartAjaxHandler.aspx?bvin=" + bvin + "&qty=" + quantity + "&r=" + Math.random();
                var ajax = new Ajax(url, callback, this);
                ajax.Fetch();
            }
        },
        
        standardAddToCartCallback : function(url, xhr){


            var el = document.getElementById("items");
            el.innerHTML = xhr.responseText;

            if(!notification) createNotification();
            var scrollPos = getScrollingPosition();
            var size = getWindowSize();
            notification.innerHTML = "The item was added to your cart.";
            notification.style.top = Math.floor(scrollPos[1] + (size[1]/2) - 100) + "px";
            notification.style.left = Math.floor((size[0]/2) - ((width/2) + borderWidth + padding)) + "px";
            setOpacity(notification, 1);
            window.setTimeout(startFadingNotification, 750);
        },
        
        addToWishlist : function(bvin, callback){
            if(bvin){
                var url = "/store/BVModules/Themes/Slate/AddToWishlistAjaxHandler.aspx?bvin=" + bvin + "&r=" + Math.random();
                var ajax = new Ajax(url, callback);
                ajax.Fetch();
            }
        },
        
        standardAddToWishlistCallback : function(url, xhr){
            //alert("item added to wishlist - " + xhr.responseText);
            if(fader) window.clearInterval(fader);

            if(!notification) createNotification();
            var scrollPos = getScrollingPosition();
            var size = getWindowSize();
            notification.innerHTML = "The item was added to your wishlist.";
            notification.style.top = Math.floor(scrollPos[1] + (size[1]/2) - 100) + "px";
            notification.style.left = Math.floor((size[0]/2) - ((width/2) + borderWidth + padding)) + "px";
            setOpacity(notification, 1);
            window.setTimeout(startFadingNotification, 750);
        },
        
        buyNow : function(bvin){
            if(!bvin){
                var bvinEl = document.getElementById("productbvin");
                bvin = bvinEl.value;
            }
            
            var qtyEl = document.getElementById("quantity");
            var qty = qtyEl.options[qtyEl.selectedIndex].value;

            var url = "/store/BVModules/Themes/Slate/AddToCartAjaxHandler.aspx?cart=1&bvin=" + bvin + "&qty=" + qty + "&r=" + Math.random();
            window.location.href = url;
        }
    }
}();

