    var clicX;
    var clicY;
    var albumSongsMessage;
    
    var oCheckBoxGroup = new CheckBoxGroup();
    
    String.prototype.toProperCase = function()
    {
        return this.toLowerCase().replace(/^(.)|\s(.)/g, 
            function($1) { return $1.toUpperCase(); });
    }
    
    
    
    function removeCartElement(sElementType, iId)
    {
        var sURL = "/common/cart/ajax-removeCartElement.php?elementType=" + sElementType + "&id=" + iId;
        
        var oRequest = new Ajax.Request(sURL, {asynchronous:false, onComplete : function(p_oRequest)
        {
            if (p_oRequest.responseText == "true")
            {
                var oRow = document.getElementById(sElementType + "[" + iId + "]");
                var oSTotalCell = document.getElementById("sTotal" + sElementType.toProperCase() + "[" + iId + "]");
                var sSTotal = oSTotalCell.value;
                var fSTotal = parseFloat(sSTotal.substring(0, sSTotal.length - 2));
                
                var oCartSTotal = document.getElementById("cartSTotal");
                var fCartSTotal = parseFloat(oCartSTotal.value);
                fCartSTotal -= fSTotal;
                oCartSTotal.value = fCartSTotal.toFixed(2);
                
                var oTBody = oRow.parentNode;
                oTBody.removeChild(oRow);
                
                updateCartQte();
            }
        }, onException : function(p_oRequest, p_oException)
        {
            throw p_oException;
        },
        onLoaded : function()
        {
        }});
    }
    
    function removeAlbum(iIdAlbum)
    {
        removeCartElement("album", iIdAlbum);
        
        var oTable = document.getElementById("tCart_albums");
        if(oTable) {
            var oAlbums = document.getElementsByName("albums[]");
            if(oAlbums.length == 0) {
                // hide the table's container row
                oTable.parentNode.parentNode.style.display = "none";
            }
        }
    }
    
    function removeSong(iIdSong)
    {
        removeCartElement("song", iIdSong);
        
        var oTable = document.getElementById("tCart_songs");
        if(oTable) {
            var oSongs = document.getElementsByName("songs[]");
            if(oSongs.length == 0) {
                // hide the table's container row
                oTable.parentNode.parentNode.style.display = "none";
            }
        }
    }
    
    function removeArticle(iIdArticle)
    {
        removeCartElement("article", iIdArticle);
        
        var oTable = document.getElementById("tCart_articles");
        if(oTable) {
            var oArticles = document.getElementsByName("articles[]");
            if(oArticles.length == 0) {
                // hide the table's container row
                oTable.parentNode.parentNode.style.display = "none";
            }
        }
    }
    
    function checkOut()
    {
        var oForm = document.getElementById("cartForm");
        
        // make sure the cart contains at least one article
        var oArticles = document.getElementsByName("articles[]");
        var oAlbums   = document.getElementsByName("albums[]");
        var oSongs    = document.getElementsByName("songs[]");
        
        var itemCount = 0;
        itemCount += oArticles.length;
        itemCount += oAlbums.length;
        itemCount += oSongs.length;
        
        if(itemCount > 0) {
            oForm.action = "/common/orderForm.php";
            oForm.submit();
            //go("/common/orderForm.php");
        }
        else {
            alert(Localization.getTranslation("message.checkOut.noArticles"));
        }
    }
    
    
    /*
    function displayArticle(p_iIndex)
    {
     go(setURLParameter(window.location.href, "article", p_iIndex));
     return;
   	    var oTablePopup = $("popup_div");
   	    var oProfileContentDiv = $("articleDetails");
   	    var oCatFilter = $("client_filter");
   	    var p_catFilter = "";
   	    if(oCatFilter) p_catFilter =$("client_filter").value;

        var sURL = "/resources/ajax/articleDetails.php?idArticle=" + p_iIndex + "&client_filter=" + p_catFilter;
        var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
        {

            //centerPopup(oTablePopup);
            oProfileContentDiv.innerHTML = p_oRequest.responseText;


           // oTablePopup.style.top=(clicY - 270) + "px";

   	        selectPic('bigPicture1');
   	        oTablePopup.style.display='';
        }, onException : function(p_oRequest, p_oException)
        {
            throw p_oException;
        },
        onLoaded : function()
        {
          oTablePopup.style.display='none';

        }});
    }
    */
    
    /*
    function addToCart(sArticle)
    {
        var sURL = window.location.href;
        var clientChoice="";
        var idArticlePrice="";

        if(sArticle)
        {

            var oField = $("quantity[" + sArticle + "]");
            var fQuantity = oField.value;
            if(fQuantity === "" || isNaN(fQuantity))
            {
                fQuantity = 1.0;
                oField.value = fQuantity;
            }
            
            for(x=1;x<4;x++){
               if(document.getElementById('clientChoice' + x)==null){
                  break;
               }
               clientChoice+=document.getElementById('clientChoice' + x).value + ";";
            }
            
            idArticlePrice = document.getElementById('idArticlePrice').value;

            sURL = "/cart/addArticle.php?article=" + sArticle + "&quantity=" + fQuantity + "&cchoice=" + clientChoice + "&idArticlePrice=" + idArticlePrice;

            var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
            {

             var oField = $(addToCartConfirmation);
             if(oField){
                oField.style.display='';
             }

             updateCartQte();

            }});
        }
    }
    */

    //Adds the checked songs to the cart, or the whole album's song if "addAllSongs = true"
    // NOTE de Micky : Modifié pour que ça puisse ne pas utiliser de checkbox, à cause du nouveau design dans album.php.
    function addToCartSongs(addAllSongs, idImage) {
        var strId = ""; // liste des chansons sélectionnées
        
        if(addAllSongs == null) {
            addAllSongs = false;
        }
        
        var oSong = parseInt(addAllSongs);
        if(oSong && oSong > 0) {
            strId = oSong + "";
            addAllSongs = false;
        }
        
        // Prendre la liste de toutes les chansons sélectionnée
        //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
        if(strId == "") {
            var oForm = document.getElementById("form_album");
            for(iElement = 0; iElement < oForm.elements.length; iElement ++) {
                oElement = oForm.elements[iElement];
                if(oElement.id) {
                    //if(oElement.id.indexOf('checkSong_') != -1)
                    if(oElement.id.indexOf('checkBox') != -1) {
                        if(oElement.checked || addAllSongs) {
                            if(strId != "") strId += ",";
                            strId += oElement.value;// + ",";
                        }
                    }
                }
            }
        }
        
        //if(strId != "") strId = strId.substring(0, strId.length-1);
        
        var oIdAlbum = document.getElementById("idAlbum");
        var idAlbum  = (oIdAlbum) ? oIdAlbum.value : 0;
        
        sURL = "/cart/addSong.php";
        if(strId != "") {
            sURL += "?list=" + strId;
        }
        else if(idAlbum > 0 && addAllSongs == true) {
            sURL += ((strId != "") ? "&" : "?") + "album=" + idAlbum;
        }
        
        var oRequest = new Ajax.Request(sURL, {
            onComplete : function(p_oRequest) {
                var oResponse = parseInt(p_oRequest.responseText);
                var isSuccess = (oResponse && oResponse >= 1);
                
                if(isSuccess) {
                    var oField = $("addToCartConfirmation");
                    if(oField){
                        oField.style.display = "";
                    }
                    
                    updateCartQte();
                    
                    if(addAllSongs == true) {
                        var sMessage = Localization.getTranslation("message.addSongsToCart.success");
                        if(sMessage && albumSongsMessage) albumSongsMessage.innerHTML = sMessage;
                        else if(sMessage) alert(sMessage);
                    }
                    else {
                        var sMessage = Localization.getTranslation("message.addSongToCart.success");
                        if(sMessage && albumSongsMessage) albumSongsMessage.innerHTML = sMessage;
                        else if(sMessage) alert(sMessage);
                    }
                    
                    if(oImage = document.getElementById(idImage)) {
                        oImage.src = '/getImage.php?path=resources/images/template/red_cart.gif&canvasWidth=16&canvasHeight=20&background=transparent';
                    }
                }
                else {
                    if(addAllSongs == true) {
                        var sMessage = Localization.getTranslation("message.addSongsToCart.failure");
                        if(sMessage && albumSongsMessage) albumSongsMessage.innerHTML = sMessage;
                        else if(sMessage) alert(sMessage);
                    }
                    else {
                        var sMessage = Localization.getTranslation("message.addSongToCart.failure");
                        if(sMessage && albumSongsMessage) albumSongsMessage.innerHTML = sMessage;
                        else if(sMessage) alert(sMessage);
                    }
                }
            }
        });
    }

    //Adds the album to the cart
    function addToCartAlbums()
    {
        var sURL = window.location.href;
        var strId = "";   // liste des albums sélectionnés
        var oIdAlbum = document.getElementById("idAlbum");
        var iIdAlbum = oIdAlbum.value;
        
        strId = iIdAlbum;
        
        if(strId != "")
        {
            sURL = "/cart/addAlbum.php?list=" + strId;
            
            var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
            {
                var oField = $("addToCartConfirmation");
                
                if(oField) {
                    oField.style.display='';
                }
                updateCartQte();
                
                var sMessage = Localization.getTranslation("message.addAlbumToCart.success");
                if(sMessage && albumSongsMessage) albumSongsMessage.innerHTML = sMessage;
                else if(sMessage) alert(sMessage);
                
                if(oImage = document.getElementById('cart_addAlbumToCart')) {
                    oImage.src = '/getImage.php?path=resources/images/template/red_cart.gif&canvasWidth=16&canvasHeight=20&background=transparent';
                }
            }});
        }
    }
    
    function updateCartQte()
    {
        //Update quantities fields
        var sURL = "/cart/ajax-cartQte.php";
        var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
        {
            var sCartQte = p_oRequest.responseText;
            
            var oCartQte = $("cartQte");
                if (oCartQte)   oCartQte.innerHTML = sCartQte;
            
        }, onException : function(p_oRequest, p_oException)
        {
            throw p_oException;
        },
        onLoaded : function()
        {
        }});
        
        //Update subtotal fields
        var sURL = "/cart/ajax-cartAmount.php";
        var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
        {
            var sCartAmount = p_oRequest.responseText + " $";
            
            var oCartAmount = $("cartAmount");
                if (oCartAmount)    oCartAmount.innerHTML = sCartAmount.replace(".", ",");
            var oCartSTotal = $("cartSTotal");
                if (oCartSTotal)    oCartSTotal.value = sCartAmount.replace(".", ",");
            var oCartTotal = $("cartTotal");
                if (oCartTotal)     oCartTotal.innerHTML = sCartAmount.replace(".", ",");
            
        }, onException : function(p_oRequest, p_oException)
        {
            throw p_oException;
        },
        onLoaded : function()
        {
        }});
        /*
   	    var oCartQte = $("cartQte");
   	    if(oCartQte)
   	    {
            var sURL = "/cart/ajax-cartQte.php";
            var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
            {
                oCartQte.innerHTML = "(" + p_oRequest.responseText + ")";
                
            }, onException : function(p_oRequest, p_oException)
            {
                throw p_oException;
            },
            onLoaded : function()
            {
            }});
        }
        
   	    var oCartAmount = $("cartAmount");
   	    if(oCartAmount)
   	    {
            var sURL = "/cart/ajax-cartAmount.php";
            var oRequest = new Ajax.Request(sURL, {onComplete : function(p_oRequest)
            {
                oCartAmount.innerHTML = p_oRequest.responseText + " $";
                
            }, onException : function(p_oRequest, p_oException)
            {
                throw p_oException;
            },
            onLoaded : function()
            {
            }});
        }
        */
    }    

    /*
	function removeArticle(p_iIndex)
	{

		var oRow = $("article[" + p_iIndex + "]");
		var oField = document.createElement("input");
		oField.type = "hidden";
		oField.name = "removedArticles[]";
		oField.value = p_iIndex;
		oRow.appendChild(oField);
		oRow.style["display"] = "none";

//		notifyChange();
		updateCart();
	}
    */

	function emptyCart()
	{
	    go("/cart/empty.php");
	}

	function updateCart()
	{
	    if(validateQte()){
	       var oForm = $("cartForm");
	       oForm.submit();
	    }
	    else{
           alert("Une quantité n'est pas valide");
        }
	}

	function search()
	{
	    var sURL = window.location.href;
	    var oSearchField = $("searchField");
	    if(oSearchField.value)
	    {
	        sURL = setURLParameter(sURL, "search", escape(oSearchField.value));
	        go(sURL);
	    }
	    else
	    {
	        sURL = removeURLParameter(sURL, "search");
	        go(sURL);
	    }
	}

    function notifyChangeQte()
    {
        bChanged = true;

	      //oRow = $("innerCommands");
	      oRow = document.getElementById("innerCommands");
        
	      //oRow.style["display"] = "table-row";

	      oRow.style.display = "";

    }


    //Filtre des derniers achats du client
    function derniersAchatsChange(){
      var oField   = $("optionDerniersAchats");
      var oField2  = $("optionPlusVendus");
      var table    = $("tableDerniersAchats");

      if(oField){
         if(oField.checked){
         	 if(oField2.checked){
         	     oField2.checked=false;
         	     plusVendusChange();
         	 }

            table.style.display ='';
         }
         else{
            table.style.display ='none';
         }
      }

    }

    //Filtre des derniers achats du client
    function plusVendusChange(){
      var oField  = $("optionPlusVendus");
      var oField2 = $("optionDerniersAchats");
      var table   = $("tablePlusVendus");

      if(oField){
          if(oField.checked){
          	 if(oField2.checked){
          	 	oField2.checked=false;
          	     derniersAchatsChange();
          	 }
             table.style.display ='';

          }
          else{
             table.style.display ='none';
          }
      }
    }


    function applyFilters()
    {
	var oForm = $("filterForm");
        if(valideData()){
           oForm.submit();
        }
    }

    function validateQte(){
       var result =true;

       var oForm  = $("cartForm");
       if(oForm){
          var kLine  = document.cartForm.elements.length;

          for(x=0;x<kLine;x++){
             if(document.cartForm.elements[x].name.substring(0,10)=="quantities"){
                if(document.cartForm.elements[x].value ==""){
                   return false;
                }
                if(!IsNumericEntier(document.cartForm.elements[x].value)){
                   return false;
                }
             }
          }

       }
       return true;
    }

    /*
    function calcStotauxArticle(){
       var oForm  = $("cartForm");
       if(oForm){
          var kLine  = document.cartForm.elements.length;
          var cartSTotal = 0;

          for(x=0;x<kLine;x++){
             if(document.cartForm.elements[x].name.substring(0,13)=="sTotalArticle"){
                var fieldName = document.cartForm.elements[x].name;
                cartSTotal += eval(document.cartForm.elements[x].value.replace("$",""));
             }
          }

          document.cartForm.cartTotal.value= cartSTotal.toFixed(2);
          document.cartForm.cartSTotal.value= cartSTotal.toFixed(2);
       }
    }
    */

    function valideData(){
       var result = true;

       if($("optionDerniersAchats").checked==true){
           if(!IsNumeric($("nbDernArticle").value) || $("nbDernArticle").value == ''){
              $("nbDernArticle").value=0;
           }

           if(valideDate($("dateDernArticle").value)==1){
              alert("La date indiquée dans le filtre est invalide");
              result = false;
           }
       }

       if($("optionPlusVendus").checked==true){
           if(!IsNumeric($("nbPlusVendus").value) || $("nbPlusVendus").value == ''){
              $("nbPlusVendus").value=0;
           }

           if(valideDate($("datePlusVendus").value)==1){
              alert("La date indiquée dans le filtre est invalide");
              result = false;
           }
       }

       return result;
    }


       //YYYY-MM-DD
    function valideDate(dateStr){
       if(dateStr==''){return 0;};
       if(dateStr.length != 10) return 1;

       var year  = dateStr.substring(0,4);
       var month = dateStr.substring(5,7);
       var day   = dateStr.substring(8,10) ;



       if(year < 2000 || year > 9999){
         return 1;}

       if(month > 12 || month < 1){
         return 1;}


       if(day > 31 || day < 1 || !IsNumeric(day)){
         return 1;}

       return 0;
   }



   function IsNumeric(sText)
   {
      var ValidChars = '0123456789.,';
      var IsNumber=true;
      var Char;
      var sText_ = sText.replace(',','.');

      for (i = 0; i < sText.length && IsNumber == true; i++)
         {
         Char = sText.charAt(i);
         if (ValidChars.indexOf(Char) == -1)
            {
            IsNumber = false;
            }
         }

       if(sText_.indexOf('.',sText_.indexOf('.',0)+1)!=-1) IsNumber= false;

       return IsNumber;

      }


   function IsNumericEntier(sText)
   {
      var ValidChars = '0123456789';
      var IsNumber=true;
      var Char;
      var sText_ = sText.replace(',','.');

      for (i = 0; i < sText.length && IsNumber == true; i++)
         {
         Char = sText.charAt(i);
         if (ValidChars.indexOf(Char) == -1)
            {
            IsNumber = false;
            }
         }

       if(sText_.indexOf('.',sText_.indexOf('.',0)+1)!=-1) IsNumber= false;

       return IsNumber;

      }
      
   
