
        function loadShoppingCart() {
            new Ajax.Request('/hace/viewCartItem.page', {
                method: 'get',
                onSuccess: function(transport) {
                    var data = transport.responseText.evalJSON();

                    processShoppingCart(data);
			
                }
            });

        }

        function addToCart(prodgrp, pricust, isolang, modelId, gradeNumber, accessoryNumber, description, partNumber, price, currency, modelName, gradeDescription, fileName, showPrice) {
            new Ajax.Request('/hace/addCartItem.page', {
                method: 'post',
                parameters: { CPRODGRP: prodgrp,
                                      NPRICUST: pricust,
                                      CLANGISO: isolang,
                                      NMOD: modelId, 
                                      NGRADE: gradeNumber,
                                      NACCES: accessoryNumber,
//                                      DESCRIPTION: description.replace("&#039;","'"),
                                     DESCRIPTION: description.replace(/&#039;/g,"'"),//replace all single quotes!!
                                      PARTNR: partNumber,
//                                      QUANTITY: 1,
                                      PRICE: price,
                                      CCURRY: currency, 
                                      XFILNAM: fileName,
                                      MDY: modelName,
                                      GRAD: gradeDescription,
                                      SHOWPRICE: showPrice},
                evalScripts:true,
                requestHeaders: {Accept: 'application/json'},
    
                onSuccess: function(transport) {
                    var data = transport.responseText.evalJSON();

                    processShoppingCart(data);

                }
            });
        }

        function removeFromCart(prodgrp, pricust, isolang, modelId, gradeNumber, accessoryNumber, description) {
            new Ajax.Request('/hace/removeCartItem.page', {
                method: 'post',
                parameters: { CPRODGRP: prodgrp,
                                      NPRICUST: pricust,
                                      CLANGISO: isolang,
                                      NMOD: modelId, 
                                      NGRADE: gradeNumber,
                                      NACCES: accessoryNumber},
                evalScripts:true,
                requestHeaders: {Accept: 'application/json'},
    
                onSuccess: function(transport) {
                    var data = transport.responseText.evalJSON();

                    processShoppingCart(data);	
	
                }
            });
        }

        function emptyCart() {
            var scDiv = document.getElementById('shoppingCart');
            new Ajax.Request('/hace/emptyCartItem.page', { 
                method: 'post', 
                onSuccess: function(transport) {
                    var data = transport.responseText.evalJSON();

                    processShoppingCart(data);	
                }
            });
        }

       function processShoppingCart(data) {

            var scDiv = document.getElementById('shoppingCart');
            var template = '';
            var bPricing = false;
            var bPriceHeader = false;

            new Ajax.Request('/pl/pl/templates/shoppingCartTemplate.html', {
                method: 'get',
                onSuccess: function(transport) {
                    template = transport.responseText;

                    data.globalPricing = false;
                    if (data.items.length > 0) {
                        data.emptyCart = false;
                        for (var i=0; i<data.items.length; i++) {
                            bPricing = false;
                            if (data.items[i].price > 0) {
                                bPriceHeader = true;
                            }
                            if (data.items[i].productGroup == 'CAR') { 
                                if (data.items[i].showPrice==true) {
                                    data.globalPricing=true;
                                }
                            } else {
                                if (data.items[i].productGroup == 'M/C') { 
                                    if (data.items[i].showPrice==true) {
                                        data.globalPricing=true;
                                    }
                                } else {
                                    if (data.items[i].showPrice==true) {
                                        data.globalPricing=true;
                                    }
                                }
                            }
                        }
                        data.priceHeader = bPriceHeader;
                    } else {		
                        data.emptyCart = true;
                    }
                    var tpl = new Ext.XTemplate(template);
                    tpl.overwrite(scDiv, data);
                    scDiv.style.visibility='visible';
                }
            });
        }

        function openCart() {
            var scDiv = document.getElementById('shoppingCartPopup');
            var template = '';
            var bPricing = false;

            new Ajax.Request('/pl/pl/templates/shoppingCartDetailTemplate.html', {
                method: 'get',
                onSuccess: function(transport) {
//                  alert(transport.responseText);
                    template = transport.responseText;

                    new Ajax.Request('/hace/viewCartItem.page', {
                        method: 'get',
                        onSuccess: function(transport) {
                            var data = transport.responseText.evalJSON();
                            var bPricing = false;
                            var prevGrp = '';
                            var scdata = '';
                            var bPriceNote = false;

                            data.globalPricing=false;

                            if (data.items.length > 0) {
                                data.emptyCart = false;
                                for (var i=0; i<data.items.length; i++) {
                                    bPricing = false;
                                    if (data.items[i].price > 0) {
                                        bPriceNote = true;
                                    }
                                    if (data.items[i].productGroup == 'CAR') { 
                                        
                                        data.items[i].showPrice=true;
                                        
                                        if (data.items[i].showPrice==true) {
                                            data.globalPricing=true;
                                        }
                                    } else {
                                        if (data.items[i].productGroup == 'M/C') { 
                                            
                                            data.items[i].showPrice=true;
                                            
                                            if (data.items[i].showPrice==true) {
                                                data.globalPricing=true;
                                            }
                                        } else {
                                            
                                            data.items[i].showPrice=true;
                                            
                                            if (data.items[i].showPrice==true) {
                                                data.globalPricing=true;
                                            }
                                        }
                                    }
                                }
                                data.priceNote = bPriceNote;
                            } else {
                                data.emptyCart = true;
                            }
                            var tpl = new Ext.XTemplate(template);
                            tpl.overwrite(scDiv, data);
       
                            $(scDiv).style.visibility='visible';
                        }
                    });
                }
            });
        }

        function scMail() {
            var mailFrom = document.getElementById("txtFrom");
            var mailTo = document.getElementById("txtRecipient");

            if (checkEmail(mailFrom) && checkEmail(mailTo)) {
                new Ajax.Request('/hace/mailCartItem.page', {
                    method: 'post',
                    parameters: { FROM: mailFrom.value,
                                          TO: mailTo.value,
                                          REMARK: document.getElementById("txtComment").value,
                                          PATH: '/pl/pl/templates/mail.st'},
                    onSuccess: function(transport) {
                        alert('Twój e-mail został wysłany!');
                    }
                });
            }
        }

        function checkEmail(emailAddress) {
            var bValid = true;
            if (emailAddress.value.indexOf(', ') > 0){
                var arEmail = emailAddress.value.split(', ');
                for (var i=0; i < arEmail.length; i++) {
                    if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(arEmail[i]))){
                        bValid = false;
                        break;
                    }
                }
                if (bValid) {
                    return(true);
                }
            } else {
                if (emailAddress.value.indexOf(',') > 0){
                    var arEmail = emailAddress.value.split(',');
                    for (var i=0; i < arEmail.length; i++) {
                        if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(arEmail[i]))) {
                            bValid = false;
                            break;
                        }
                    }
                    if (bValid) {
                        return(true);
                    }
                } else {
                    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailAddress.value)){
                        return (true);
                    }
                } 
            } 
            emailAddress.style.color='red';
            alert("Podany adres e-mailowy jest nieprawidłowy: " + emailAddress.value + "\nProszę poprawić i spróbować wysłać ponownie!");
            return (false);
        }