/******************************************************************************
* nikiKAjaxAddRef.js
*******************************************************************************

*******************************************************************************
*                                                                             *
* Copyright 2010									                          *
*                                                                             *
******************************************************************************/
isoYUILoader.onReady( function() {
    YAHOO.util.Event.onContentReady("basketQuantity", function() {

		var basketSummary = document.getElementById('basketQuantity');	
		gshp.basket.on('ready', function () {
			updateBasketView ();
		});
		
		gshp.basket.on('change', function () {	
			updateBasketView ();
		});

		gshp.basket.on('busyStart', function () {
		});
	
		gshp.basket.on('busyEnd', function () {	
		});
		
		gshp.basket.on("actionFail",function (msg) {
			alert(msg);
		});

		
		/* Rendu Panier */
		function updateBasketView () {
			if (!gshp.basket.isEmpty()) {
				var nbreProduit = 0;	
				var prixTotalHT = 0;
				var prixTotalTTC = 0;

				gshp.basket.eachItem(function (item) {
					nbreProduit = nbreProduit + parseFloat(item.getField('quantity'));
					prixTotalTTC = prixTotalTTC + parseFloat(item.getField('effectiveTotalVatPrice'));
				});
				
				basketSummary.innerHTML = "(" + nbreProduit + ")";
			}else {
				basketSummary.innerHTML = "(0)";
			}
		}
	});
});

isoYUILoader.onReady( function() {
    YAHOO.util.Event.onContentReady("nikiKAjaxAddRefForm", function() {
	  var bBusy = false;
      var oid = null;
      var form = document.getElementById("nikiKAjaxAddRefForm");
      var spanLabel = document.getElementById("nikiKAjaxAddRefLabel");
	  var button = document.getElementById("nikiKAjaxAddRefButton");
	  var quantityInput = document.getElementById("nikiKAjaxAddRefQuantity");
	  clear();

		
	  gshp.basket.on("actionFail",function (msg) {
			bBusy = false;
			alert(msg);
			form.submit();
	  });
		
	  gshp.basket.on("actionSuccess",function () {
			form.submit();
	  });		
		
	  YAHOO.util.Event.addListener(form, "submit", function (e) {
		YAHOO.util.Event.stopEvent(e);
		if (oid != null && !bBusy)
		{
			var q = quantityInput.value;
			if (q.match(/^[1-9][0-9]*$/))
			{
				bBusy = true;
				gshp.basket.addReference(oid,parseInt(q,10));
			}
			else
				alert("La quantité saisie n'est pas valide");
		}
	  });
	  var maxResultDisplay = 10;	// nombre maximum d'items a afficher
      var dataSource = new YAHOO.widget.DS_XHR(gshp.catalog.getAPIURL(), ["reference","publicCode","label","oid"]);
	  dataSource.responseType = YAHOO.widget.DS_XHR.TYPE_XML;
	  dataSource.scriptQueryAppend = "f=referencesByPublicCodeStartsWith&limit="+(maxResultDisplay+1);
	  dataSource.scriptQueryParam = "code";
	  var input = document.getElementById("nikiKAjaxAddRefInput");
	  input.disabled = false;
      var control = new YAHOO.widget.AutoComplete(input,"nikiKAjaxAddRefContainer", dataSource);
  	  control.maxResultsDisplayed = maxResultDisplay;
  	  control.animVert = false;
	  control.forceSelection = true;
	  function clear()
	  {
		oid = null;
		spanLabel.innerHTML = "";
		button.disabled = true;
	  }
	  control.unmatchedItemSelectEvent.subscribe(clear);
	  control.selectionEnforceEvent.subscribe(clear);
	  control.textboxKeyEvent.subscribe(clear);
	  control.itemSelectEvent.subscribe( function(sType, aArgs) {
	    var data = aArgs[2]; 
		oid = data[2];
		spanLabel.innerHTML = ajax.util.strToHTML(data[1]);
		button.disabled = false;
	  });
	  control.formatResult = function(aResultItem, sQuery)
	  { 
		   var sKey = aResultItem[0];
		   var sKeyQuery = ajax.util.strToHTML(sKey.substr(0, sQuery.length));
		   var sKeyRemainder = ajax.util.strToHTML(sKey.substr(sQuery.length));
		   var sLabel = ajax.util.strToHTML(aResultItem[1]);
		   var aMarkup = ["<span class='publicCode'>",
		      "<b>", 
		      sKeyQuery, 
		      "</b>", 
		      sKeyRemainder, 
		      "</span> - ", 
		      sLabel]; 
		  return aMarkup.join("");
		}; 
		control.doBeforeExpandContainer = function(elTextbox, elContainer, sQuery, aResults)
		{
			control.setFooter(aResults.length>this.maxResultsDisplayed ? "Il existe plus de résultats. Précisez la recherche." : "");
			return true;
		};		
    });
});

