jQuery(document).ready(function(){

    jQuery("div.quantity").append('<input type="button" value="+" id="add1" class="plus" />').prepend('<input type="button" value="-" id="minus1" class="minus" />');
        defaultVal = parseInt(jQuery("div.quantity .qty").val());
        if (!defaultVal || defaultVal=="" || defaultVal == "NaN") defaultVal = 0;
        jQuery("div.quantity .qty").val(defaultVal);
        jQuery(".plus").click(function()
        {
            var currentVal = parseInt(jQuery(this).prev(".qty").val());
 
            if (!currentVal || currentVal=="" || currentVal == "NaN") currentVal = 0;
 
            jQuery(this).prev(".qty").val(currentVal + 1);
        });
 
        jQuery(".minus").click(function()
        {
            var currentVal = parseInt(jQuery(this).next(".qty").val());
            if (currentVal == "NaN") currentVal = 0;
            var minVal = parseInt(jQuery(".ajaxaddtocart-qty-form form#simpleproduct_ajaxaddtocart_form #min-qty-value").html());
            if (currentVal > 0 && currentVal > minVal)
            {
                jQuery(this).next(".qty").val(currentVal - 1);
            }
        });
    jQuery(window).scroll(function(){
        jQuery('#ajaxaddtocart-dialog').dialog("option","position","center");
    });

    jQuery('#cart-count-and-subtotal a').live('click', function(){
        url = this.href.replace("checkout/cart", "ajaxcart/cart/view");
        // fix https urls
        url = url.replace("http:", window.location.protocol);
        jQuery( "#ajaxaddtocart-dialog" ).dialog({
            width:400,
            modal: true,
            open: function(event, ui) {
                window._ajaxaddtocart_Loading();
                jQuery.get( url ,
                    function(data){
                        window._ajaxaddtocart_ReloadJsonData(data);
                        window._ajaxaddtocart_AfterLoading();
                        window._ajaxaddtocart_RemoveConfirmMessage();
                    }, "json");
            },
            buttons: window.dialogButtons ,
            close : function(event, ui){
                window._ajaxaddtocart_CloseDialog();
            }
        });
        return false;
    });

    window._ajaxaddtocart_RemoveConfirmMessage();
    OldSetLocation = window.setLocation;
    window.setLocation = function(url){

        if(  url.indexOf("/checkout/cart/add")>-1 ){
            if(window._ajaxaddtocart_simpleqtyform){
                AjaxAddToCartSimple(url);
            }else{
                AjaxAddToCart(url);
            }
            
        }else if (url.indexOf('options=cart')> -1){
            AjaxAddToCartConfigurable(url);
        }else{
            OldSetLocation(url);
        }
        return false;
    }
    
    AjaxAddToCart= function(url){
        /* replace url */
        url = window._ajaxaddtocart_ConvertUrl(url);
        if(!url) return false;
        /* get url response */
        jQuery( "#ajaxaddtocart-dialog" ).dialog({
            width:400,
            modal: true,
            open: function(event, ui) {
                window._ajaxaddtocart_Loading();
                jQuery.get( url ,
                    function(data){
                        window._ajaxaddtocart_ReloadJsonData(data);
                        window._ajaxaddtocart_AfterLoading();
                        window._ajaxaddtocart_RemoveConfirmMessage();
                    }, "json");
            },
            buttons: window.dialogButtons ,
            close : function(event, ui){
                window._ajaxaddtocart_CloseDialog();
            }
        });
        return true;
    }


    AjaxAddToCartSimple= function(url){

        url = window._ajaxaddtocart_ConvertUrl(url);
        /* get url response */
        jQuery( "#ajaxaddtocart-dialog" ).dialog({
            width:window._ajaxaddtocart_dialogWidth,
            modal: true,
            open: function(event, ui) {
                _ajaxaddtocart_Loading();
                        
                jQuery.get( url ,

                {
                        isajaxform: "1"
                    },

                    function(data){
                        //jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-message").html(data);
                        window._ajaxaddtocart_AfterLoading();

                jQuery(".ajaxaddtocart-qty-form, #ajaxaddtocart-dialog .product-name").show();
                jQuery(".ajaxaddtocart-qty-form form#simpleproduct_ajaxaddtocart_form").attr("action", url);
                jQuery(".ajaxaddtocart-qty-form form#simpleproduct_ajaxaddtocart_form input#qty").val(data.min_qty);
                jQuery(".ajaxaddtocart-qty-form form#simpleproduct_ajaxaddtocart_form #min-qty-value").html(data.min_qty);
                jQuery("#ajaxaddtocart-dialog .product-name h1").html(data.product_name);
            
                    },
            "json"
            );

                
            },
            buttons : window.dialogButtonsSimple ,
            close : window._ajaxaddtocart_CloseDialog
        });
    }


    AjaxAddToCartConfigurable= function(url){
        /* replace url */
        if(  url.indexOf("options=cart")>=0 ){
            url = url.replace("options=cart", "options=cart&ajaxaddtocart=1");
        }
        /* get url response */
        jQuery( "#ajaxaddtocart-dialog" ).dialog({
            width:window._ajaxaddtocart_dialogWidth,
            modal: true,
            open: function(event, ui) {
                _ajaxaddtocart_Loading();
                jQuery.get( url ,
                    function(data){
                        jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-message").show().html(data);
                        window._ajaxaddtocart_AfterLoading();
                    });
            },
            buttons : window.dialogButtonsConfigurable ,
            close : window._ajaxaddtocart_CloseDialog
        });
    }



    jQuery("#top-cart li a.ajax-delete-link").live("click", function(){
       if(!confirm(window._ajaxaddtocart_confirmdelete)) return false;
       x = AjaxAddToCart(jQuery(this).attr("href"));
       return !x;
    });

    jQuery(".ajaxaddtocart-summary .summary a").live("click", function(){
        window.location = jQuery(this).attr("href");
    });

/* form actions */
    jQuery("#ajaxaddtocart-dialog form#product_addtocart_form").live("submit", function(){
        productAddToCartForm.submit();
        return false;
    });

    jQuery("#ajaxaddtocart-dialog form#simpleproduct_ajaxaddtocart_form").live("submit", function(){
        simpleProductAddToCartForm.submit();
        return false;
    });

    jQuery(".ajaxaddtocart-summary li.item a.ajax-delete-link").live("click", function(){
        if(!confirm(window._ajaxaddtocart_confirmdelete)) return false;
        url = window._ajaxaddtocart_ConvertUrl(jQuery(this).attr("href"));
        /* replace url */
        if(  !url ){
            return true;
        }
        _ajaxaddtocart_Loading();
        jQuery.get( url ,
            function(data){
                window._ajaxaddtocart_ReloadJsonData(data);
                window._ajaxaddtocart_AfterLoading();
                window._ajaxaddtocart_RemoveConfirmMessage();
            }, "json");
        return false;
    });


    if (typeof productAddToCartForm == 'object'){
        productAddToCartForm.submit = function(){
            if (this.validator.validate()) {
                _form = jQuery(".product-view #product_addtocart_form");
                _form_vars =  _form.serialize();
                url = _form.attr("action");
                if(!url) this.form.submit();
                return !AjaxAddToCart(url + "?" + _form_vars);
            }
        }
    }

});

function _ajaxaddtocart_CloseDialog(){
    jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-message").html("");
    jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-summary").html("");
    jQuery(".ui-dialog .ui-dialog-buttonpane, .ajaxaddtocart-qty-form, #ajaxaddtocart-dialog .product-name").hide();
    /*for configurable options*/
    truncateOptions();
    return;
}

function _ajaxaddtocart_Loading(){
    jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-message").hide().html("");
    jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-summary").hide().html("");
    jQuery(".ui-dialog .ui-dialog-buttonpane, .ajaxaddtocart-qty-form, #ajaxaddtocart-dialog .product-name").hide();
    jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-loader").show();
    return;
}


function _ajaxaddtocart_AfterLoading(){
    jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-loader").hide();
    jQuery(".ui-dialog .ui-dialog-buttonpane").show();
    jQuery( "#ajaxaddtocart-dialog" ).dialog({
        position:"center"
    });
    return;
}

function _ajaxaddtocart_ReloadJsonData(data){
    if(data.message)jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-message").show().html(data.message );
    if(data.cart_sidebar)jQuery( "#top-cart").replaceWith(data.cart_sidebar);
    if(data.cart_summary)jQuery( "#ajaxaddtocart-dialog .ajaxaddtocart-summary").show().html(data.cart_summary);
    if(data.cart_link_text)jQuery( ".top-link-cart").text(data.cart_link_text);
    return;
}

function _ajaxaddtocart_ConvertUrl(url){
    if(  url.indexOf("/checkout/cart/add")>=0 || url.indexOf("/checkout/cart/delete")>=0 ){
        url = url.replace("/checkout/", "/ajaxcart/");
        // fix https urls
        url = url.replace("http:", window.location.protocol);
        return url;
    }else{
        return false;
    }
}

function _ajaxaddtocart_RemoveConfirmMessage(){ /*to remove the default remove from cart message*/
    jQuery(".ajaxaddtocart-summary li.item a.ajax-delete-link").each(function(){
        jQuery(this)[0].onclick = null;
    });
    jQuery("#top-cart li a.ajax-delete-link").each(function(){
        jQuery(this)[0].onclick = null;
    });
}

