$(document).ready(function() {

    $("table.quickshop").tableNav({
        inputClass: 'xvisible',
        highlightColor: '#CCCCCC',
        defaultColor: 'transparent'
    });

    $("input.xitem").change(function(){
        basketCaseVar = true;
    });

    $("#basketform").submit(function(){
        basketCaseVar = false;
    });


    /* обработка значений таблицы быстрого заказа */
    
    
    var QSTable = $("table.quickshop");    
    
    if(QSTable.length) {        

        var QSSumWeight = .0;
        var QSCount = 0;
        var QSbuf = 0;
        var QSkeybuf = 0;
        var countOut = $("#div1");
        var weightOut = $("#div2");


        var out = function(sum, weight) {
            countOut.text(sum);
            weightOut.text(weight.toFixed(2));
        }

        var numVal = function(val) {
            var ret = parseInt(val);
            return (isNaN(ret)) ? 0 : ((ret < 0) ? 0 : ret);
        };

        var floatVal = function(val) {
            var ret = parseFloat(val);
            return (isNaN(ret)) ? 0 : ((ret < 0) ? 0 : ret);
        }


        var recalcAll = function() {
            var val = 0;
            var weight = .0;
            QSTable.find('input.xitem').each(function() {
                val = numVal($(this).val());
                weight = floatVal($(this).attr('rel'));
                QSCount+= val;
                QSSumWeight+= (weight*val);
            }).eq(0).focus();;
            if(QSCount !=0 ) { out(QSCount, QSSumWeight); }
        }
        
        QSTable.find('input.xitem').focus(function() {
				
            QSbuf = numVal($(this).val());		
			
        }).blur(function() {
		
            var val = numVal($(this).val());
            if(val != QSbuf) {
                var weight = floatVal($(this).attr('rel'));
                var diff = val - QSbuf;
                QSCount += diff;
                QSSumWeight += (weight * diff);
					
                /* с какого то хрена иногда получается -0.00000006 вместо 0	*/		
                if(QSSumWeight < 0) {
                    QSSumWeight = .0;
                }
                out(QSCount, QSSumWeight);
            }
			
            $(this).val((val == 0) ? '' : val);
						
			
        }).keyup(function(evt) {

            var val = numVal($(this).val());
			
            if(val != QSbuf) {
                var weight = floatVal($(this).attr('rel'));
                var diff = val - QSbuf;
                var cntTmp = QSCount + diff;
                var weightTmp = QSSumWeight+(weight * diff);
		
                if(weightTmp < 0) {
                    weightTmp = .0;
                }
				
                out(cntTmp, weightTmp);
            }
            else
            {
                out(QSCount, QSSumWeight);
            }
					
        });

        // Выполнить сразу

        recalcAll();


    }
});
