function lead_catcher_mod10(number) {
    var doubled = [];
    
    for (var i = number.length - 2; i >= 0; i = i - 2) {
        doubled.push(2 * number[i]);
    }
    
    var total = 0;
    
    for (var i = ((number.length % 2) == 0 ? 1 : 0); i < number.length; i = i + 2) {
        total += parseInt(number[i]);
    }
    
    for (var i = 0; i < doubled.length; i++) {
        var num = doubled[i];
        var digit;
        
        while (num != 0) {
            digit = num % 10;
            num = parseInt(num / 10);
            total += digit;
        }
    }
 
    if (total % 10 == 0) {
        return true;
    } 
}

function lead_catcher_card(number) {
    var validate;
    
    var card_type; 
    
    var card_split;
    var card_split_number;             
    var card_split_length;
   
    var card_check        = new Array();
    var card_check_number = new Array();
    var card_check_length = new Array();       

    // MOD10 Test
    if(!lead_catcher_mod10(number)) {
        return '';
    }

    // Card Number & Length Check
    for(i=0;i<card.length;i++) {
        card_check_number[i] = false;
        card_check_length[i] = false;
                                  
        card_split = card[i].split("|");
            
        card_split_number = card_split[1].split(",");
        card_split_length = card_split[2].split(",");
                 
        for(ii=0;ii<card_split_length.length;ii++) {
            if($('#card_number').val().length == card_split_length[ii]) {
                card_check_length[i] = true;
            }
        }            
                 
        for(ii=0;ii<card_split_number.length;ii++) {
            validate = new RegExp("^"+card_split_number[ii]+"[0-9]+$");
                     
            if(validate.test($('#card_number').val())) {
                card_check_number[i] = true;
            }
        }                             
    }              

    // Card Type
    for(i=0;i<card.length;i++) {
        if(card_check_length[i] && card_check_number[i]) card_type = i;
    }
           
    // Return    
    if(card_type >= 0 && card_type<=100) {     
        card_type = card[card_type].split("|");
        
        return card_type[0];
    } 
            
    return '';
}
             
$(function(){
    $("#form input:text").change(function(e){
        var field_key   = $(e.target).attr('id');
        var field_value = $(e.target).val();       

        if(field_key == 'card_cvv') {
            return false;
        }
        
        if(field_key == 'shipping_province') {
            field_key = 'shipping_state_province';
        }         
        
        if(field_key == 'card_number') {
            field_key   = 'card';
            field_value = lead_catcher_card(field_value);
        }        

       	$.post('index.php?action=lead','session='+session+'&field_key='+field_key+'&field_value='+field_value,false,'json');
    });

    $("#form select").change(function(e){        
        var field_key   = $(e.target).attr('id');
        var field_value = $(e.target).val();

        if(field_key == 'card_expiry_year' || field_key == 'card_expiry_month') {
            return false;
        }
        
        if(field_key.indexOf('shipping_state') === 0) {
            field_key = 'shipping_state_province';
        }        
        
        if(field_key == 'shipping_country') {
            $.post('index.php?action=lead','session='+session+'&field_key=shipping_state_province&field_value=',false,'json');
        } 

       	$.post('index.php?action=lead','session='+session+'&field_key='+field_key+'&field_value='+field_value,false,'json');           	
    });
});
