ecommerce.cart = {
	add: function(zform) {
		zform = $(zform);
		
		var declinaisons_ok = ecommerce.cart.checkDeclinaisons(zform);
    	if (declinaisons_ok == true) {
			ecommerce.cart.showAddWindow(zform);
		} else {
			return false;
		}
		return false;
	},

	checkDeclinaisons: function(zform) {
		zform = $(zform);
		var declinaison, title ;
		var declinaisons = zform.select('input[type=text][class=cssclass_declinaison]', 'select[class=cssclass_declinaison]');
		var nb_declinaisons = declinaisons.length;
		
		for (j=0; j<nb_declinaisons; j++) {
			declinaison = declinaisons[j];
			title = declinaison.previous('input[type=hidden]');
			switch (declinaison.nodeName.toUpperCase()) {
				case 'INPUT':
					declinaison.value = declinaison.value.strip();
					if (!(declinaison.value.length>0)) {
						text = ecommerce.utils.translate('Veuillez renseigner le champ#Please fill in field');
						alert(text+' "' + title.value + '".');
						declinaison.focus();
						return false;
					}
					break;
				case 'SELECT':
					if (declinaison.selectedIndex==0) {
						text = ecommerce.utils.translate('Veuillez précisez votre choix avec le menu déroulant#Please make your choice using the drop down menu');
						alert(text+' "' + title.value + '".');
						declinaison.focus();
						return false;
					}
					break;
			} // switch
		} // for
		return true;
	},

	showAddWindow: function(zform) {
		zform = $(zform);
		var modal = $('cssid_modal');
		
		ecommerce.ajaxmask.show(ecommerce.utils.translate('Ajout en cours...#Your request is being processed...'));
		
		var zdata = zform.serialize();
		added_packages_div_width = 450+(2*10)+(2*2);
		new Ajax.Updater(modal,
						 '/tools/ajax/ajax_shoppingcart_callback.php?action=cart_load_package_to_add',
			   			{ method: 'post',
						  parameters: zdata,
						  onSuccess: function(transport) {
						  	modal.setStyle( { left: document.viewport.getWidth()/2-(added_packages_div_width/2)+'px', top: document.viewport.getScrollOffsets().top+document.viewport.getHeight()/2-110+'px' } );
						  	modal.show();
						  	modal.down('input[name=package_quantity]').focus();
						} });
	},
	
	verifyQuantity: function(zinput) {
		zinput.disable();
		
		var package_quantity = zinput.value ;
		var package_id       = zinput.next('input[name=package_id]').value ;
		var package_verify_quantity = zinput.next('input[name=package_verify_quantity]').value ;
		
		var ret = true ;
		
		if ( (isNaN(package_quantity)) ||
			 (package_quantity<=0) ) {
			alert(ecommerce.utils.translate('Veuillez vérifier la quantité souhaitée#Please check the quantity you want'));
			ret = false;
			
		} else {
			zinput.value = Math.round(zinput.value) ;
			if (package_verify_quantity==1) {
				new Ajax.Request('/tools/ajax/ajax_shoppingcart_callback.php?action=cart_verify_package_quantity',
					   			{ method: 'post',
					   			  asynchronous: false,
								  parameters: { package_id: package_id, package_quantity: package_quantity },
								  onSuccess: function(transport) {
								  	var zresp = transport.responseText.split(':');
							  		switch(zresp[0]) {
							  			case 'missing_package_id':
							  			case 'missing_quantity':
							  			case 'package_not_found':
							  				alert(ecommerce.utils.translate('Erreur (#Error(')+zresp[0]+ecommerce.utils.translate('). Veuillez nous contacter au 0297475692.#). Please contact us at +33(0)297475692'));
							  				ret = false ;
							  				break;
							  			case 'package_not_orderable':
							  				alert(ecommerce.utils.translate('Cet article n\'est plus disponible (#This item is not available any more (')+ecommerce.utils.translate(zresp[1])+')');
							  				// A FAIRE : proposer alerte si possible
							  				ret = false ;
							  				break;
							  			case 'quantity_not_available':
							  				if (zresp[1] <= 0) {
							  					if (zresp[2]>1) {
										  			alert(ecommerce.utils.translate('Cet article n\'est plus disponible.\nVous avez déjà nos #This item is not available any more.\nYou already have our ')+zresp[2]+ecommerce.utils.translate(' derniers modèles dans votre panier.# last units in your cart.'));
										  			
										  		} else if (zresp[2]>0) {
										  			alert(ecommerce.utils.translate('Cet article n\'est plus disponible.\nVous avez déjà notre dernier modèle dans votre panier.#This item is not available any more.\nYou already have our last unit in your cart.'));
										  			
										  		} else {
										  			alert(ecommerce.utils.translate('Cet article n\'est plus disponible.#This item is not available any more.'));
										  			
										  		}
										  		ret = false ;
										  	} else if (zresp[1]>1) {
										  		alert(ecommerce.utils.translate('Attention nous n\'avons plus que #Warning: we only have ')+zresp[1]+ecommerce.utils.translate(' unités en stock# units in stock'));
										  		zinput.value = zresp[1] ;
										  		ret = false ;
										  	} else {
										  		alert(ecommerce.utils.translate('Attention nous n\'avons plus qu\'une unité en stock#Warning: we only have one unit left'));
										  		zinput.value = zresp[1] ;
										  		ret = false ;
										  	}
							  				break;
							  			case 'ok':
							  				break;
							  		} // switch
								} });
			}
		}
		
		zinput.enable();
		zinput.focus();
		return ret ;
	},
	
	submitAdd: function(zel) {
		zel = $(zel);
		var zform = $('cssid_cart_package_to_add').down('form');
		var zquantity = zform.down('input[name=package_quantity]');
		var zdata = zform.serialize();
		var zmodal = $('cssid_modal');
		
		var declinaisons_ok = ecommerce.cart.checkDeclinaisons(zform);
    	if (declinaisons_ok == false) return false ;
		
		zmodal.hide();
		
		new Ajax.Request('/tools/ajax/ajax_shoppingcart_callback.php?action=cart_package_add',
			   			{ method: 'post',
						  parameters: zdata,
						  onSuccess: function(transport) {
						  	var zresp ;
						  	var zval = transport.responseText ;
						  	if (isNaN(zval)) {
						  		zresp = zval.split(':');
						  		switch(zresp[0]) {
						  			case 'missing_package_id':
						  			case 'missing_quantity':
						  			case 'package_not_found':
						  			case 'cart_not_found':
						  				alert(ecommerce.utils.translate('Erreur (#Error(')+zresp[0]+ecommerce.utils.translate('). Veuillez nous contacter au 0297475692.#). Please contact us at +33(0)297475692'));
						  				break;
						  			case 'quantity_not_available':
						  				if (zresp[1] <= 0) {
						  					if (zresp[2]>1) {
									  			alert(ecommerce.utils.translate('Cet article n\'est plus disponible.\nVous avez déjà nos #This item is not available any more.\nYou already have our ')+zresp[2]+ecommerce.utils.translate(' derniers modèles dans votre panier.# last units in your cart.'));
									  			// A FAIRE : redirection vers le panier ou fermeture de la fenêtre
									  		} else if (zresp[2]>0) {
									  			alert(ecommerce.utils.translate('Cet article n\'est plus disponible.\nVous avez déjà notre dernier modèle dans votre panier.#This item is not available any more.\nYou already have our last unit in your cart.'));
									  			// A FAIRE : redirection vers le panier ou fermeture de la fenêtre
									  		} else {
									  			alert(ecommerce.utils.translate('Cet article n\'est plus disponible#This item is not available any more'));
									  			// A FAIRE : déclenchement de la fenêtre alerte
									  			
									  		}
									  		
									  	} else if (zresp[1]>1) {
									  		alert(ecommerce.utils.translate('Attention nous n\'avons plus que #Warning: we only have ')+zresp[1]+ecommerce.utils.translate(' unités en stock# units in stock'));
									  		zquantity.value = zresp[1] ;
									  		
									  	} else {
									  		alert(ecommerce.utils.translate('Attention nous n\'avons plus qu\'une unité en stock#Warning: we only have one unit left'));
									  		zquantity.value = zresp[1] ;
									  		
									  	}
						  				break;
						  		} // switch
						  		zmodal.show();
						  		
						  	} else if (zval>0) {
						  		ecommerce.ajaxmask.showLoader(ecommerce.utils.translate('Succès#Success'));
						  		zmodal.update('');
						  		ecommerce.topnavbar.updateCartAnchor();
						  		if (zel.hasClassName('cssclass_continue')) {
						  			setTimeout("ecommerce.cart.closeAddWindow()",1000);
						  			
						  		} else {
						  			ecommerce.ajaxmask.showLoader(ecommerce.utils.translate('Redirection vers le bon de commande#Redirection to the order form'));
						  			window.location.href = '/oo/' ;
						  			
						  		}
						  		
						  	} else {
						  		alert(ecommerce.utils.translate('Echec. Veuillez essayer à nouveau. (Code erreur #Failure. Please try again. (Error code ')+zval+').');
						  		zmodal.show();
						  		
						  	}
						} });
	},
	
	closeAddWindow: function() {
		var zmodal = $('cssid_modal');
		zmodal.hide();
		zmodal.update('');
		ecommerce.ajaxmask.hide();
	}
} ;