/**
 * => Mootools 1.2
 * 	=> Core
 * @classDescription
 * Classe qui permet de se greffer à des formulaires dans le but de modifier le panier du client en AJAX par l'intérmédiaire de ShoppingCartUpdater.
 * @author M@nu/Baphira
 */
var ShoppingCartForms = new Class({

	/**
	 * Constructor
	 * @param {String} classForms class des formulaires sur lesquels on doit se greffer
	 * @param {String} errQtyMsg
	 * @param {ShoppingCartUpdater} updater
	 * @param {AttributesChecker} attributesChecker (optional)
	 */
	initialize: function(classForms, errQtyMsg, updater, attributesChecker){
		this.classForms = classForms;
		this.attributesChecker = attributesChecker;
		
		this.forms = $$('.'+classForms);
		for(var i = 0; i < this.forms.length; i++) {
			this.forms[i].addEvent("submit", function(event) {
				var form = new Helper().getTarget(event);

				var strErr = '';
				if ($chk(this.attributesChecker)) {
					strErr = this.attributesChecker.check(form);
				}
				if (strErr != '') {
					alert(strErr);
				} else {
					if(isAddToWishlistButtonClicked || updater == $empty) {
						return;	
					}
					var qtyNum = form.products_quantity.value.toInt();
					if (isNaN(qtyNum) || qtyNum <= 0) {
						alert(errQtyMsg);
					} else {
						var idProduct = form.products_id.value;
						var attributes = new Helper().getAttributes(form);
						var qty = qtyNum + updater.cart.getProductQty(idProduct, attributes);
						updater.updateCartBox(idProduct, qty, attributes, this.showConfirmCoordinates(event, form));							
					}
				}
				new Event(event).stop();
			}.bind(this));
			
			var submitImgs = this.forms[i].getElements('img.submitBt');
			for (var j = 0; j < submitImgs.length; j++) {
				submitImgs[j].addEvent("click", function(event) {
					new Helper().setTarget(event, this);
					this.fireEvent('submit', event);
				}.bind(this.forms[i]));
			}
		}
    },
	
	showConfirmCoordinates: function(event, form) {
		var submitBtn = $chk(event.realTarget) ? event.realTarget : form.getElement('input[type=submit]');
		if(!$chk(submitBtn)) {
			submitBtn = form.getElement('input[type=image]')
		}
		
		var panelHeight = 103; //taille de la boite (continuer/commander) en hauteur
		
		var ajustForIE = $chk(event.realTarget) && window.ie ? -310 : 0;
		var coord = {
	        left: (submitBtn.getLeft() + ajustForIE),
	        top: (submitBtn.getTop() + (- 10 - panelHeight))
    	};
		return coord;
	}
	
});
