var loadingW = 0;
var loadingW = 24;
var loadingH = 24;
var confirmW = 360;
var confirmH = 'auto';

var inCart = false;

//if (typeof cufonInit == 'undefined')
//   function cufonInit(){};

if (window.location.toString().search('/product_compare/') != -1){
	var win = window.opener;
}
else{
	var win = window;
}

if (window.location.toString().search('/checkout/cart/') != -1){
    inCart = true;
}

function setLocation(url){
    if(!inCart && ((url.search('/add') != -1 ) || (url.search('/remove') != -1 ) || url.search('checkout/cart/add') != -1) ){
        sendcart(url, 'url');
    }else{
        window.location.href = url;
    }
}




function fade(){
	jQuery('#ajax_cart_holder').fadeOut(1000);
}

var cart_timeout;

function sendcart(url, type){
    showLoading();
    if (type == 'form'){
        url = ($('product_addtocart_form').action).replace('checkout', 'j2tajaxcheckout/index/cart');
        var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            postBody: $('product_addtocart_form').serialize(),
            parameters : Form.serialize("product_addtocart_form"),
            onException: function (xhr, e)
            {
                alert('Exception : ' + e);
            },
            onComplete: function (xhr)
            {
                jQuery('#ajax_cart_holder').html(xhr.responseText).css('display', 'block');
                //cufonInitialization();
                cart_timeout = setTimeout(fade, 5000);
                jQuery('#ajax_cart_holder a, #ajax_cart_holder input, #ajax_cart_holder button').focus(function(){
                    clearTimeout(cart_timeout);
                });
                hideJ2tOverlay();
            }
        });
    } 
}


function showBag(url){
        showLoading();
        url = url.replace('checkout/cart', 'j2tajaxcheckout/index/cart');
        var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            postBody: '',
            onException: function (xhr, e)
            {
                alert('Exception : ' + e);
            },
            onComplete: function (xhr)
            {
				jQuery('#btn_shopping_bag').click(function(e){
					e.preventDefault();
					var ajax_cart_container = jQuery('#ajax_cart_holder');
					if (ajax_cart_container.css('display') == 'block')
					{
						ajax_cart_container.css('display', 'none');
						jQuery('#btn_shopping_bag').removeClass('active');
						jQuery('#ajax_cart').hide();
					}
					else if (ajax_cart_container.css('display') == 'none')
					{
						ajax_cart_container.css('display', 'block');
						jQuery('#btn_shopping_bag').addClass('active');
						jQuery('#ajax_cart').show();
					}
					//cufonInitialization();
				});
                jQuery('#ajax_cart_holder').html(xhr.responseText).css('display', 'block');
				jQuery('#btn_shopping_bag').addClass('active');

                hideJ2tOverlay();
                //cufonInitialization();
            }

        });
}

function replaceDelUrls(){
    if (!inCart){
        $$('a').each(function(el){
            if(el.href.search('checkout/cart/delete') != -1 && el.href.search('javascript:') == -1){
                el.href = 'javascript:cartdelete(\'' + el.href +'\')';
            }
        });
    }
}

function replaceAddUrls(){
    $$('a').each(function(link){
        if(link.href.search('checkout/cart/add') != -1 && el.href.search('javascript:') == -1){
            link.href = 'javascript:setLocation(\''+link.href+'\'); void(0);';
        }
    });
}

function cartdelete(url){
    showLoading();
    url = url.replace('checkout', 'j2tajaxcheckout/index/cart');
    var myAjax = new Ajax.Request(
    url,
    {
        method: 'post',
        postBody: '',
        onException: function (xhr, e)
        {
            alert('Exception : ' + e);
        },
        onComplete: function (xhr)
        {

			$('ajax_cart_holder').update(xhr.responseText);
            

            replaceDelUrls();
			
            //$('j2t_ajax_progress').hide();
            hideJ2tOverlay();
            //cufonInitialization();
        }

    });


}

function cartUpdate(url){
    showLoading();
    
     //if (type == 'form'){
        url = ($('checkout-cart-update').action).replace('checkout/cart', 'j2tajaxcheckout/index/cart');
        var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            postBody: $('checkout-cart-update').serialize(),
            parameters : Form.serialize("checkout-cart-update"),
            onException: function (xhr, e)
            {
                alert('Exception : ' + e);
            },
            onComplete: function (xhr)
            {
				//alert(url);
				//$('checkout-cart-update').submit();
				//return false;
				
				$('ajax_cart_holder').update(xhr.responseText);
				var ajax_cart_container = $('ajax_cart_holder');
				//ajax_box.style.position = 'absolute';
				//ajax_box.style.border = '1px solid #bfbfbf';
				//ajax_box.style.zIndex = 99999;
				//ajax_box.style.background = '#fff';
				ajax_cart_container.style.display = 'block';
			
			
      
            
				hideJ2tOverlay();
				//cufonInitialization();
            }

        });


//}

}



function showJ2tOverlay(){
    new Effect.Appear($('j2t-overlay'), { duration: 0,  to: 0 });
     
}

function hideJ2tOverlay(){
	
    $('j2t-overlay').hide();
    $('j2t_ajax_progress').hide();
    $('j2t_ajax_confirm').hide();
   
}


function j2tCenterWindow(element) {
     if($(element) != null) {

          // retrieve required dimensions
            var el = $(element);
            var elDims = el.getDimensions();
            var browserName=navigator.appName;
            if(browserName==="Microsoft Internet Explorer") {

                if(document.documentElement.clientWidth==0) {
                    //IE8 Quirks
                    //alert('In Quirks Mode!');
                    var y=(document.viewport.getScrollOffsets().top + (document.body.clientHeight - elDims.height) / 2);
                    var x=(document.viewport.getScrollOffsets().left + (document.body.clientWidth - elDims.width) / 2);
                }
                else {
                    var y=(document.viewport.getScrollOffsets().top + (document.documentElement.clientHeight - elDims.height) / 2);
                    var x=(document.viewport.getScrollOffsets().left + (document.documentElement.clientWidth - elDims.width) / 2);
                }
            }
            else {
                // calculate the center of the page using the browser andelement dimensions
                var y = Math.round(document.viewport.getScrollOffsets().top + ((window.innerHeight - $(element).getHeight()))/2);
                var x = Math.round(document.viewport.getScrollOffsets().left + ((window.innerWidth - $(element).getWidth()))/2);
            }
            // set the style of the element so it is centered
            /*var styles = {
                position: 'absolute',
                top: y + 'px',
                left : x + 'px'
            };
            el.setStyle(styles);*/




     }
}





function showLoading(){
    showJ2tOverlay();
    var progress_box = $('j2t_ajax_progress');
    progress_box.show();
    progress_box.style.width = loadingW + 'px';
    progress_box.style.height = loadingH + 'px';
    progress_box.style.position = 'absolute';
    //progress_box.style.zIndex = 9999999;

    j2tCenterWindow(progress_box);
}


function showConfirm(){
    $('j2t_ajax_progress').hide();
    var confirm_box = $('j2t_ajax_confirm');
    confirm_box.show();
    confirm_box.style.width = confirmW + 'px';
    confirm_box.style.height = confirmH;

    confirm_box.style.position = 'absolute';

    j2tCenterWindow(confirm_box);

}

document.observe("dom:loaded", function() {
    replaceDelUrls();
    replaceAddUrls();
    //Event.observe($('j2t-overlay'), 'click', hideJ2tOverlay);

    var cartInt = setInterval(function(){
        if (typeof productAddToCartForm  != 'undefined'){
            if ($('j2t-overlay')){
                Event.observe($('j2t-overlay'), 'click', hideJ2tOverlay);
            }
            productAddToCartForm.submit = function(url){
                if(this.validator && this.validator.validate()){
                    sendcart('', 'form');
                    clearInterval(cartInt);
                }

                return false;
            }
        } else {
            clearInterval(cartInt);
        }
    },500);
});

