// Formulaire de récap de la commande
var shoppingCartForm = new AjaxForm( 
{
	"loading": function(data)
	{
		// Masquer également le formulaire de coupon
		_handleCartLoading(this.elm, true);
	},
	"complete": function(data){},
	"success": function(data)
	{
		_handleCartLoading(this.elm, false);
		
		// update du contenu
		driver.putHTML(shoppingCartForm.elm, data.responseText);	
		
		// Exécution de scripts
		_handleScriptAfterOnload();
	},
	"reset":function(data)
	{
		_handleCartLoading(this.elm, false);
		
		// update du contenu
		var elm_reset = document.getElementById("shopping-cart-container");
		driver.putHTML(elm_reset, data.innerHTML);
		
		// Exécution de scripts
		_handleScriptAfterOnload();
	}
});
var sampleForm = new AjaxForm(
{
	"loading": function(data)
	{
		// Masquer également le formulaire de coupon
		_handleCartLoading(this.elm, true);
	},
	"complete": function(data){},
	"success": function(data)
	{
		_handleCartLoading(this.elm, false);
		
		// update du contenu
		driver.putHTML(this.elm, data.responseText);
		_handleScriptAfterOnload();
		
		var 
			_defaultAction = this.elm.getAttribute("data-action-default") || null,
			_reloadAction = this.elm.getAttribute("data-action") || null,
			_currentAction = this.elm.getAttribute("action") || null
		;
		// Ré-initialiser la valeur de "action"
		if (_currentAction == _reloadAction)
		{
			if (_defaultAction)
			{
				this.elm.setAttribute("action", _defaultAction);
			}
		}

		// Mise à jour du form de récap
		shoppingCartForm.submit();
	}
});

// Navigation Step/Step
var checkoutMenu = new Accordion( 
{
	"handleEvent": false,
	"className" : {"item" : "box-container"}
});

// Fonctionnement des formulaires
var checkoutStepByStep = new CheckoutSteps(
{
	"gotoItem": function(elm)
	{
		checkoutMenu.activeItem.call(checkoutMenu, elm, true);
		setProgressBar(document.getElementById((elm.id == "opc-review") ? "step-review" : "step-customer"));
	}
});

// Coupon
var _setRemoveDataCoupon = function(resetValue)
{
	var 
		_removeElement = document.getElementById("remove-coupone"),
		_resetValue = resetValue || false
	;
	if (_removeElement)
	{
		_removeElement.value = (!_resetValue) ? "0" : "1";
		return true;
	}
	return false;
}
var couponForm = new AjaxForm( 
{
	"reset": function() 
	{
		_setRemoveDataCoupon.call(this, true);
		this.elm.submit();
		return true;
	},
	"onBeforeSubmit": function (isRemove)
	{
		var
			_containerElement = document.getElementById('coupon_code'),
			_fieldElement = document.getElementById('remove-coupone')
			_className = 'required-entry',
			_isRemove = !_fieldElement.value
		;
		
		// Rendre le champ obligatoire
		driver[(_isRemove) ? "removeClass" : "addClass"](_containerElement, _className);		
		_fieldElement.value = (_isRemove) ? "1" : "0";
		
	    return this.elm.varientForm.validator.validate();
	},
	
	// FIXME : théoriquement, on ne devrait pas ré-écrire cette méthode
	// Voir pour un vrai retour Ajax
	"submit": function()
	{
		_setRemoveDataCoupon.call(this, false);
		this.elm.submit();
	}
});

// GIFT
var toogleVisibilityOnObjects = function(source, objects) 
{
    if($(source) && $(source).checked) 
    {
        objects.each(function(item){
          if($(item)) {    
            $(item).show();
            $$('#' + item + ' .input-text').each(function(item) {
                item.removeClassName('validation-passed');
            });
          }
        });

    } 
    else 
    {    	
      objects.each(function(item)
    {
            if($(item)) 
            {
                $(item).hide();
                $$('#' + item + ' .input-text').each(function(sitem) {
                    sitem.addClassName('validation-passed');
                });

                $$('#' + item + ' .giftmessage-area').each(function(sitem) {
                    sitem.value = '';
                });
                $$('#' + item + ' .checkbox').each(function(sitem) {
                    sitem.checked = false;
                });
                $$('#' + item + ' .select').each(function(sitem) {
                    sitem.value = '';
                });
                $$('#' + item + ' .price-box').each(function(sitem) {
                    sitem.addClassName('no-display');
                });
           }
       });
    }
}
var toogleRequired = function (source, objects)
{
    if(!$(source).value.blank()) 
    {
        objects.each(function(item) {
           $(item).addClassName('required-entry');
        });
    } 
    else 
    {
        objects.each(function(item) 
        {
            if (typeof window.shippingMethod != 'undefined' && window.shippingMethod.validator) 
            {
               shippingMethod.validator.reset(item);
            }
            $(item).removeClassName('required-entry');
        });

    }
}
