var ZZZ = { 
    // pre-submit callback 
    validate: function(formData, jqForm) { 
        $('#shipping-info').hide("slow");
        $('#shipping-options').hide("slow");
        $('#shipping-errors').hide("slow");
        $('#shipping-loading').show("fast");
        return true; 
    },
 
    // post-submit callback 
    updateshipping: function(json)  { 
        $('#shipping-loading').hide();
        var result = json.results;
        var errors = json.errors;
        $('.form-error').hide().html("");

        
        if (errors.length > 0) {
            for (var i = 0; i<errors.length; i++) {
                which = errors[i][0];
                err = errors[i][1];
                $('#'+which+'-errors').html(err);
                $('#'+which+'-errors').show();
                // if (which == 'quantity') {
                //                     $('#label-quantity span.error').html(err);
                //                 }
                //                 else if (which == 'product') {
                //                     $('#label-product span.error').html(err);
                //                 }
                $('#shipping-errors').show("slow", function(){$('#shipping-loading').hide();});
            }
        }
        else {
            var list_items = '';  
            var shipping_desc = json.shipping_desc;
            var shipping = json.shipping;
            
            if (shipping_desc.length > 0) {
                // list_items = '<ul>';

                
                for (var i=0; i<shipping_desc.length; i++) {
                    var type = shipping_desc[i][0];
                    var text = shipping_desc[i][1];
                    var patt = /-[\d][\d]-/;
                    var result = type.search(patt);
                    var num = type.substring(result+1, result+3);
                    num = parseInt(num, 10);
                    if (num == 0){
                        text = text.replace("UPS ","");
                    }
                    var list_item = '<li>';
                    list_item += '<label for=\"id_shipping_' + (num-1) + '\">';
                    list_item += '<input id=\"id_shipping_' + (num-1) + '\" type=\"radio\" name=\"shipping\" value=\"' + type + '\"/>';
                    list_item += text;
                    list_item += '</li>';
                    
                    list_items += list_item;
                    // If local shipping is in the list, add the disclaimer
                    if (num == 0){
                        list_items += '<li style=\"padding-left: 18px;\"><a href=\"/local-pickup/\" target=\"_blank\">Learn more about Local Pickup<br>San Francisco Bay Area only</a></li>';
                    }
                }
                
                // list_items += '</ul>';
                $('#shipping-options').html('');
                $('#shipping-options').append('<ul></ul>');
                $('#shipping-options > ul').html(list_items);
                
            }
            else{
                var noShippingError = 'Shipping for your address could not be calculated.<br>';
                noShippingError += 'Please verify your address information.<br>';
                noShippingError += 'If it is correct, please contact Orbit Baby<br>';
                noShippingError += 'directly by phone to place your order:<br><br>';
                noShippingError += '1-877-ORB-BABY<br>';
                noShippingError += '1-877-672-2229<br><br>';
                noShippingError += 'Your <strong> Cart ID </strong> number is: ' + json.cartid + '<br>';
                $('#shipping-options').html(noShippingError);
            }      
            $('#shipping-errors').hide();
            $('#shipping-options').show("slow", function(){$('#shipping-loading').hide();});
            $("#shipping-options input:first").attr("checked", true); 
            
        }

    }
};
