$(document).ready(function(){

    var qckTable = $(".tab-quickly");
    var rowHtml = qckTable.find('tr').eq(2).html();
    var addProdBtn = $("span[name=add_prod]");
    var reset_prod = $("samp[name=reset_prod]");
    var searchTxt = qckTable.find('input[name=search_prod]');
    var delBtn = qckTable.find('span[name=del_prod]');
    var postBtn = $('#add_cart');
    var intPattern = /^\d+$/;
    
    var validateInt = function(e)
    {
        var code = (e.keyCode ? e.keyCode : e.which);

        if (8 == code)
        {
            return true;
        }
        else if (!intPattern.test(String.fromCharCode(code)))
        {
            return false;
        }
    }

    var search = function(e)
    {
        var pid = $(this).val();
        var row = $(this).parent().parent();
        var token = $('input:hidden[name=token]').val();
        if (pid.length == 4)
        {
            row.find('select').focus();
            $(this).attr('disabled', 'disabled');

            //do query...
            $.post('async_quickly_search.php',{
                pid: pid, 
                token: token,
                rand:Math.random()
            },
            function(data) 
            {
                var disabledTxt = $('input:disabled[name=search_prod]');
                result = JSON.parse(data);
                if ('false' == result.status){
                    disabledTxt.val('');
                    alert(result.message);
                }
                else{
                    row.find('td:eq(2)').text(result.pName);                    
                }

                disabledTxt.removeAttr('disabled');

                if ('' == disabledTxt.val())
                {
                    disabledTxt.focus();
                }
            });
        }
    }

    var delProd = function(){
        var row = $(this).parent().parent();
        if(1 == (qckTable.find('tr').length - 3))
        {
            row.find('input[name=search_prod]').val('');
            row.find('.xl').empty();
            row.find('select>option:eq(0)').attr('selected', 'selected');
        }
        else
        {
            row.remove()
        }
        
        refreshNO();
    }
    
     var resetProd = function(){
        var row = $(this).parent().parent();
        if(10 >= (qckTable.find('tr').length - 3))
        {
            row.find('input[name=search_prod]').val('');
            row.find('.xl').empty();
            row.find('select>option:eq(0)').attr('selected', 'selected');
        }
        else
        {
            row.remove()
        }

        refreshNO();
    }

    var refreshNO = function(){
        var total = (qckTable.find('tr').length - 3);
        for (var i = 1; i <= total; i++ )
        {
            qckTable.find('tr').eq(i+1).find('td:eq(0)').text(i);
        }
    }

    searchTxt.bind('keypress', validateInt);
    searchTxt.bind('keyup', search);
    delBtn.bind('click', delProd);
    
    addProdBtn.click(function(){
        var rowLength = (qckTable.find('tr').length - 2);
        qckTable.find('tr').eq(rowLength).after('<tr>' + rowHtml + '</tr>');
        qckTable.find('input[name=search_prod]').bind('keypress', validateInt);
        qckTable.find('input[name=search_prod]').bind('keyup', search);
        qckTable.find('span[name=del_prod]').bind('click', delProd);
        refreshNO();
    });

    reset_prod.click(function(){
        qckTable.find('span[name=del_prod]').each(resetProd);
    });
    
    postBtn.click(function(){
        var JSONObject = new Object;
        JSONObject.datas = new Array;
 
        qckTable.find('input[name=search_prod]').each(function(){
            var row = $(this).parent().parent();
            var pid = $(this).val();
            var qty = row.find('select').val();
            
            if (intPattern.test(pid) && intPattern.test(qty))
            {
                productInfo = new Object;
                productInfo.pid = pid;
                productInfo.qty = qty;
                JSONObject.datas.push(productInfo);
            }
        });
        $('input:hidden[name=datas]').val(JSON.stringify(JSONObject));
        $('form[name=add_form]').submit();
    });
});
