var data = false;

function formatWithCommas(amount) {
    var delimiter = ",";
    var a = amount.split('.',2)
    var d = a[1];
    var i = parseInt(a[0]);
    if(isNaN(i)) { return ''; }
    var minus = '';
    if(i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while(n.length > 3) {
        var nn = n.substr(n.length-3);
        a.unshift(nn);
        n = n.substr(0,n.length-3);
    }
    if(n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);
    if(d.length < 1) { amount = n; }
    else { amount = n + '.' + d; }
    amount = minus + amount;
    return amount;
}


function formatCurrency(amount) {
    var i = parseFloat(amount);
    if(isNaN(i)) { i = 0.00; }
    var minus = '';
    if(i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if(s.indexOf('.') < 0) { s += '.00'; }
    if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return formatWithCommas(s);
}

function fill_billing(fill) {
    if(fill) {
        var currentCountry = $("#bill_country").val();
        
        if(currentCountry != data['country']) {
            $("#bill_state").load("/share/js/helpers/get_state_options.php?country=" + data['country']);
        }
        
        $("#cc_name").val(data['name']).attr("readonly", "readonly");
        $("#bill_address").val(data['address']).attr("readonly", "readonly");
        $("#bill_city").val(data['city']).attr("readonly", "readonly");
        $("#bill_state").val(data['state']).attr("readonly", "readonly");
        $("#bill_zip").val(data['zip']).attr("readonly", "readonly");
        $("#bill_country").val(data['country']).attr("readonly", "readonly");
        
    } else {
        $("#cc_name").removeAttr("readonly");
        $("#bill_address").removeAttr("readonly");
        $("#bill_city").removeAttr("readonly");
        $("#bill_state").removeAttr("readonly");
        $("#bill_zip").removeAttr("readonly");
        $("#bill_country").removeAttr("readonly");
    }
}

function show_domain(show) {
    if(show) {
        $("#digitalid_domain, #digitalid_domain_confirm").parent().fadeIn("slow");
        $(".useowndomain").fadeIn("slow");
    } else {
        $("#digitalid_domain, #digitalid_domain_confirm").parent().fadeOut("slow");
        $(".useowndomain").fadeOut("slow");
        $("#digitalid_domain").val('');
        $("#digitalid_domain_confirm").val('');
        $("#digital_id_site span").text('mailf5.com');
    }
}

function form_init() {
    $("#customer_country").change(
           function() { 
               $("#customer_state").load("/purchase/regions/country/" + this.value);
           }
       );
    
    $("#bill_country").change(
        function() { 
            $("#bill_state").load("/share/js/helpers/get_state_options.php?country=" + this.value);
        }
    );
    
    $("#purchase_content #submit").after('<input type="button" id="go_back" value="Go Back" />'); // Change this to load an internationalized PHP script.
    $("#go_back").click( function() { location.href = "/purchase/previous/" } );
    
    $("#fieldset-digitalid ol").prepend('<li id="digital_id_site"></li>');
    $("#digital_id_site").load("/share/js/helpers/ar_username.php?id="
        + $("#digitalid_id").val() 
        + "&domain=" 
        + $("#digitalid_domain").val());
        
    $("#digitalid_id").keyup(
        function() {
            replacementText = $("#digitalid_id").val();
            if(replacementText == '') { replacementText = '<username>'; }
            $("#digital_id_site strong").text(replacementText);
        }
    );
    
    $("#digitalid_domain").keyup(
        function() {
            replacementText = $("#digitalid_domain").val();
            if(replacementText == '') { replacementText = 'mailf5.com'; }
            $("#digital_id_site span").text(replacementText);
        }
    );
    
    if(document.getElementById("fieldset-bill_info")) {
        if(!data) { $.getJSON('/purchase/billingjson', function(jsonData) { data = jsonData; }); }
    }
    
    $("#fieldset-bill_info ol").prepend('<li><label for="billing_same_as">Same as main address.</label> <input type="checkbox" name="billing_same_as" id="billing_same_as" value="1" /></li>');
    
    $("#billing_same_as").click(function() { fill_billing(this.checked); });
    
    $("#digitalid_domain").parent().before('<li><label for="use_own_domain">Use your own domain:</label> <input type="checkbox" name="use_own_domain" id="use_own_domain" value="1" /></li>');
    
    if($("#digitalid_domain").val() == '') {
        $("#digitalid_domain, #digitalid_domain_confirm").parent().css("display", "none");
        $(".useowndomain").css("display", "none");
    } else {
        $("#use_own_domain").attr('checked', true);
    }
    
    $("#use_own_domain").click(function() { show_domain(this.checked); });
    
    /* Sub Account Stuff */
    
    function setTotals() {
        total = 0;
        totalSubs = 0;
        
        $("#subs_form input[type=text]").each(
            function() {
                quantity = parseFloat($(this).val());
                totalSubs += parseInt(quantity);
                price = $(this).parent().find("span.price").text();
                subtotal = quantity * price;
                total += subtotal;
            }
        );
        
        if(totalSubs > 0) {
            total_text = "$" + formatCurrency(total) + " Add'l Monthly Charge";
            subs_text = totalSubs + " Selected";
        } else {
            total_text = "";
            subs_text = "None Selected";
        }
        
        $("#num_sub_accounts").css("display", "none").text(subs_text).fadeIn("medium");
        $("#price_sub_accounts").css("display", "none").text(total_text).fadeIn("medium");
    }
    
    function getSubtotal(field) {
        quantity = field.val();
        price = field.parent().find("span.price").text();
        subtotal = quantity * price;
        subtotal = "$" + formatCurrency(subtotal);
        
        return subtotal;
    }
    
    function subChange(field) {
        outTarget = field.next().next();
        
        subtotal = getSubtotal(field);
        
        outTarget.css('display', 'none');
        outTarget.text(subtotal);
        outTarget.fadeIn('medium');
        
        setTotals();
    }
    
    $("#subs_form input[type=text]")
        .before('<img src="/share/img/ar/button_minus.png" alt="minus" />')
        .after('<img src="/share/img/ar/button_plus.png" alt="plus" /><span class="subtotal"></span>')
        .change(function() {
            value = $(this).val();

            if(value != parseInt(value)) {
                value = 0;
                $(this).val(value);
            }
                
            subChange($(this));
        }
    );
    
    $("#subs_form span.subtotal").each(
        function() {
            field = $(this).prev().prev();
            $(this).text(getSubtotal(field));
        }
    );
    
    $("#subs_form img[alt=minus]").click(
        function() {
            textField = $(this).next();
            value = textField.val();

            if(value != parseInt(value))
                value = 0;
                
            --value;
            
            if(value < 0)
                value = 0;
            
            textField.val(value);
            subChange(textField);
        }
    );
        
    $("#subs_form img[alt=plus]").click(
        function() {
            textField = $(this).prev();
            value = textField.val();
            
            if(value != parseInt(value))
                value = 0;
            
            textField.val(++value);
            subChange(textField);
        }
    );
}

$(document).ready(form_init);