    function limitField( fieldID, maxNum ){
        var fld = document.getElementById( "dynfld_" + fieldID );
        if( fld.value.length > maxNum ){
            fld.value = fld.value.substr(0, maxNum);
        }
    }

    function sendcartform(){
        var sum = 0;
        for(var iID in cartProdCostArr){
            sum = sum + cartProdCostArr[iID]['count'] * cartProdCostArr[iID]['price'];
        }
        if(sum==0){
            alert(noItemsMsg); 
            return;
        }
        var strErrors = '';
        var action = '';
        var field = document.getElementById("cartformsubtbllogin");
        if(field == null){
            action = 'order';
        }else{
            if(field.style.display=="none"){
                action = 'regandorder';
                // validate
                for( var iField = 0; iField < fieldsValidateParams.length; iField++ ){
                    var curEl = document.getElementById( "dynfld_" + fieldsValidateParams[iField]['id'] );
                    if( fieldsValidateParams[iField]['required'] && ( (fieldsValidateParams[iField]['type']==1) || (fieldsValidateParams[iField]['type']==0) ) ){
                        if(curEl.value.length <= 0){
                            strErrors += '<br>' + errRequiredField + '&quot;' + fieldsValidateParams[iField]['title'] + '&quot;';    
                        }
                    }
                }
                var fldId;
                for( fldId in fldsToCheck ){
                    var curEl = document.getElementById( fldId );
                    if ( curEl.value.length == 0 ){
                        strErrors += '<br>' + errRequiredField + '&quot;' + fldsToCheck[fldId] + '&quot;';
                    }
                }
            }else{
                action = 'loginandorder';
            }
        }
        document.getElementById('cartAction').value = action;
        if ( strErrors.length == 0 ){
            document.forms['cartForm'].submit();
        }else{
            document.getElementById('divErr1').innerHTML = strErrors;
        }
    }

    function changeUserType(){
        var sel = document.getElementById('usertypeselect');
        var regformtbl = document.getElementById('cartformsubtblreg');
        var loginformtbl = document.getElementById('cartformsubtbllogin');
        if(sel.value == '0'){
            loginformtbl.style.display = "none";
            regformtbl.style.display = "";
        }else{
            regformtbl.style.display = "none";
            loginformtbl.style.display = "";
        }
    }
    
    function deleteSelectedCartItems(){
        var itemsToDelete = ''; 
        for(var iID in cartProdCostArr){
            if(document.getElementById('prodToDel_' + String(iID)).checked){
                itemsToDelete += "," + String(iID);
            }
        }
        document.getElementById('cartActionDo').value = "delete";
        document.getElementById('cart_items_to_delete').value = itemsToDelete.substring(1);
        document.forms['cartFormDo'].submit();
    }
    
    function checkAllCartItems(){
        for(var iID in cartProdCostArr){
            document.getElementById('prodToDel_' + String(iID)).checked = true;
        }
        document.getElementById('chkAllCartItems').checked = false;
    }
    
    function calculateValues(){
        var sum = 0;
        for(var iID in cartProdCostArr){
            sum = sum + cartProdCostArr[iID]['count'] * cartProdCostArr[iID]['price'];
        }
        sum = sum.toFixed(2);
        //var pdvgrn = (sum*pdvValue/100).toFixed(2);
        //var sumnopdv = (sum - pdvgrn).toFixed(2);
        //document.getElementById('pdvinpercents').innerHTML = pdvValue;
        //document.getElementById('pdvingrn').innerHTML = pdvgrn;
        //document.getElementById('sumwithoutpdv').innerHTML = sumnopdv;
        document.getElementById('sumwithpdv').innerHTML = sum;
        document.getElementById('cartitemscost').innerHTML = sum;
    }
    
    function changeProdPrice(id){
        var field = document.getElementById('prodCount_'+id);
        var img = document.getElementById('prodCountImg_'+id);
        var but = document.getElementById('prodCountBut_'+id);
        but.style.display = "none";
        img.style.display = "";
        field.style.display = "none";
        var strToFilter = field.value;
        var strResult = '';
        for( var iPos = 0; iPos < strToFilter.length; iPos++ ){
            if( (strToFilter[iPos] <= '9') && (strToFilter[iPos] >= '0') ){
                strResult = strResult + strToFilter[iPos];
            }
        }
        if(strResult.length==0){
            strResult = '0';
        }
        field.value = strResult;
        JsHttpRequest.query(
            'chpriceajax.php',
            {
                'product': ''+id,
                'count': strResult
            },

            function(result, errors) {
                if (result['basketres']=='true'){
                    document.getElementById('cartitemscount').innerHTML = result['newcount'];
                    img.style.display = "none";
                    field.style.display = "";
                    field.style.backgroundColor = "#e0e0e0";
                    field.value = result['count'];
                    cartProdCostArr[String(result['product'])]['count'] = result['count'];
                    calculateValues();
                }else{
                    alert(errors);
                }
            },
            true
        );
    }
    
    function showProdChBut(id){
        var field = document.getElementById('prodCount_'+id);
        var but = document.getElementById('prodCountBut_'+id);
        but.style.display = "";
        field.style.backgroundColor = "#FFFFFF";
    }    