Skip to content

Instantly share code, notes, and snippets.

@bryanmikaelian
Created February 27, 2013 19:18
Show Gist options
  • Save bryanmikaelian/5050775 to your computer and use it in GitHub Desktop.
Save bryanmikaelian/5050775 to your computer and use it in GitHub Desktop.
conflict
//= require jquery.blockUI
//= require underscore
//= require underscore.customurlscheme
//= require store-common/payments.js
//= require jquery.payment
(function(window, $, _) {
var NO_PAYMENT_REQUIRED_ATTR = "data-noPaymentRequired";
var formData = "";
function listenForCreditCardTokenChange() {
$('#credit_card_token').live("change", function() {
StorePayments.blockUI();
var token = $(this).val();
var bookId = $("#book_id").val();
var req = {
book_id: bookId,
apply_credit: $("#apply_credit").is(":checked"),
token: token
};
$.get("/store/payments/toggle_payment_methods.js", req).always(function() {
StorePayments.unblockUI();
});
});
}
$(function() {
$(".back a").click(function() {
window.location = $(this).attr("href");
return false;
});
<<<<<<< HEAD
var original_tr_data = $('#tr_data').val();
$("form.braintree_payment").bind('ajax:loading', function() {
var submit_button = $("#transaction_fields").find('.submit');
$(submit_button).addClass('disabled');
$(submit_button).attr('disabled', 'disabled');
});
$("form.braintree_payment").live('submit', function(){
var submit_button = $("#transaction_fields").find('.submit');
var submit_loading = $("#transaction_fields").find('.loading-submit');
$(submit_button).addClass('disabled');
$(submit_button).attr('disabled', 'disabled');
$(submit_loading).show();
});
listenForCreditCardTokenChange();
validatePaymentForm();
formatPaymentFields();
});
function formatPaymentFields() {
$("input#transaction_credit_card_number").payment('formatCardNumber');
$("input#transaction_credit_card_cvv").payment('formatCardCVC');
$("input#transaction_credit_card_expiration_date").payment('formatCardExpiry');
$('[data-numeric]').payment('restrictNumeric');
}
function validatePaymentForm() {
$('input#transaction_billing_street_address, input#transaction_billing_extended_address, input#transaction_billing_postal_code, input#transaction_billing_locality, input#transaction_billing_region').live('keyup', function() {
var self = this;
var book_id = $('#book_id').val();
var user_id = $('#user_id').val();
var submit_field = $("#transaction_fields").find('.submit-fields');
var submit_button = $("#transaction_fields").find('.submit');
delay(function(){
if ( StorePayments.validStreetAddress($('input#transaction_billing_street_address').val()) &&
StorePayments.validPostalCode($('input#transaction_billing_postal_code').val()) &&
StorePayments.validRegion($('input#transaction_billing_region').val()) &&
StorePayments.validLocality($('input#transaction_billing_locality').val())
) {
$("#transaction_fields .submit-fields").find('.payment-loading').show();
var street_address = $('input#transaction_billing_street_address').val();
var postal_code = $('input#transaction_billing_postal_code').val();
var locality = $('input#transaction_billing_locality').val();
var region = $('input#transaction_billing_region').val();
var tax_amount = $('input#transaction_tax_amount').val();
var tr_data = $('input#tr_data').val();
var error = function(data) {
$("#transaction_fields .submit-fields").find('.payment-loading').hide();
var amount = data.amount || 0.0;
$('#sales_tax').html("$0.00");
$('#transaction_tax_amount').val(0.00);
$('#total_amount').html("$"+(parseFloat(amount).toFixed(2)));
$('#transaction_amount').val((parseFloat(amount)).toFixed(2));
$('#tr_data').val(tr_data);
$('#tax_error').html(data.error);
};
$.ajax({
type: "get",
url: "/store/payments/calculate_sales_tax.json?book_id="+book_id+"&user_id="+user_id+"&street_address="+encodeURIComponent(street_address)+"&locality="+encodeURIComponent(locality)+"&region="+encodeURIComponent(region)+"&postal_code="+encodeURIComponent(postal_code),
success: function(data) {
$("#transaction_fields .submit-fields").find('.payment-loading').hide();
if (data == null || data.error) return error(data);
var amount = data.amount;
var total = data.total;
var new_tax_amount = data.tax_amount;
var new_tr_data = data.tr_data;
$('#total_amount').html("$" + parseFloat(total).toFixed(2));
$('#sales_tax').html("$" + parseFloat(new_tax_amount).toFixed(2));
$('#tr_data').val(new_tr_data);
$('#transaction_tax_amount').val(parseFloat(new_tax_amount).toFixed(2));
$(submit_button).removeClass('disabled');
$(submit_button).removeAttr('disabled');
$('#tax_error').empty();
},
error: error
});
} else {
$(submit_button).addClass('disabled');
$(submit_button).attr('disabled', 'disabled');
=======
$("[data-appurl]").click(function() {
console.log($(this).attr("data-appurl"));
return _.customUrlWithFallback($(this).attr("data-appurl"));
});
get$Form().bind("ajax:loading", function() {
disableSubmitBtn();
}).live("submit", function(e) {
if ($(this).is("[" + NO_PAYMENT_REQUIRED_ATTR + "]")) {
e.preventDefault();
get$RedeemCreditForm().submit();
>>>>>>> qa
}
disableSubmitBtn();
StorePayments.blockUI();
});
get$RedeemCreditForm().submit(function() {
var $form = $(this);
$form.find("input[name=token]").val($('#credit_card_token').val());
$form.find("input[name=street_address]").val($("input#transaction_billing_street_address").val());
$form.find("input[name=extended_address]").val($("input#transaction_billing_extended_address").val());
$form.find("input[name=locality]").val($("input#transaction_billing_locality").val());
$form.find("input[name=region]").val($("input#transaction_billing_region").val());
$form.find("input[name=postal_code]").val($("input#transaction_billing_postal_code").val());
});
$("#apply_credit").live("change", function() {
updateSalesAmountsAndFormData();
});
listenForCreditCardTokenChange();
validatePaymentForm();
formatPaymentFields();
});
function formatPaymentFields() {
$("input#transaction_credit_card_number").payment('formatCardNumber');
$("input#transaction_credit_card_cvv").payment('formatCardCVC');
$("input#transaction_credit_card_expiration_date").payment('formatCardExpiry');
$('[data-numeric]').payment('restrictNumeric');
}
function validatePaymentForm() {
$("input#transaction_billing_street_address, input#transaction_billing_extended_address, input#transaction_billing_postal_code, input#transaction_billing_locality, input#transaction_billing_region").live("keyup", function() {
delay(function() {
if (!isFormDirty(formData)) return;
if (isTaxInfoValid()) {
updateSalesAmountsAndFormData();
} else {
formData = "";
disableSubmitBtn();
}
}, 500);
});
}
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
function currentFormData() {
return $("form.braintree_payment").serialize();
}
function isFormDirty(oldData) {
return oldData != currentFormData();
}
function updateSalesAmounts() {
StorePayments.blockUI();
var bookId = $("#book_id").val();
var token = $("#credit_card_token").val();
var applyTax = isTaxInfoValid();
var applyCredit = $("#apply_credit").is(":checked");
var req = {
book_id: bookId,
token: token,
apply_tax: applyTax,
apply_credit: applyCredit
};
if (applyTax) {
var streetAddress = $('input#transaction_billing_street_address').val();
var postalCode = $('input#transaction_billing_postal_code').val();
var locality = $('input#transaction_billing_locality').val();
var region = $('input#transaction_billing_region').val();
req = $.extend({}, req, {
street_address: streetAddress,
locality: locality,
region: region,
postal_code: postalCode
});
}
return $.getJSON("/store/payments/calculate_sales_amount.json", req).done(function(data) {
var meta = data.meta;
var amounts = data.displayable_amounts;
$("#price_amount").text(amounts.price);
$("#tax_amount").text(amounts.tax);
$("#credit_amount").text(amounts.credit);
$("#credit_appliable_amount").text(amounts.credit_appliable);
$("#total_amount").text(amounts.total);
$("#tr_data").val(meta.tr_data || "");
$("#tax_error").html(meta.tax_error);
setupPaymentRequired(meta.payment_required);
toggleCreditLineItem(meta.credit_applied);
toggleCreditCardDetails(meta.payment_required);
toggleSubmitBtn(meta.submitable);
}).always(function() {
StorePayments.unblockUI();
});
}
function get$Form() {
return $("form.braintree_payment");
}
function get$RedeemCreditForm() {
return $("#redeemCreditForm");
}
function setupPaymentRequired(paymentRequired) {
var $form = get$Form();
if (paymentRequired) {
$form.removeAttr(NO_PAYMENT_REQUIRED_ATTR);
}
else {
$form.attr(NO_PAYMENT_REQUIRED_ATTR, true);
}
}
function updateSalesAmountsAndFormData() {
return updateSalesAmounts().always(function() {
formData = currentFormData();
});
}
function isTaxInfoValid() {
return StorePayments.validStreetAddress($('input#transaction_billing_street_address').val())
&& StorePayments.validPostalCode($('input#transaction_billing_postal_code').val())
&& StorePayments.validRegion($('input#transaction_billing_region').val())
&& StorePayments.validLocality($('input#transaction_billing_locality').val());
}
function get$CreditCardDetails() {
return $(".cc-details");
}
function get$NoPaymentAlert() {
return $("#noPaymentRequiredAlert");
}
function toggleCreditCardDetails(flag) {
flag ? showCreditCardDetails() : hideCreditCardDetails();
}
function showCreditCardDetails() {
get$CreditCardDetails().show();
get$NoPaymentAlert().hide();
}
function hideCreditCardDetails() {
get$CreditCardDetails().hide();
get$NoPaymentAlert().show();
}
function submitBtn() {
return $(".submit-fields, .submit-fields .submit");
//return $("#transaction_fields").find(".submit");
}
function toggleCreditLineItem(visible) {
var $creditLineItem = $("#credit_line_item");
visible ? $creditLineItem.show() : $creditLineItem.hide();
}
function toggleSubmitBtn(enabled) {
enabled ? enableSubmitBtn() : disableSubmitBtn();
}
function enableSubmitBtn() {
submitBtn().removeClass("disabled").removeAttr("disabled");
}
function disableSubmitBtn() {
submitBtn().addClass("disabled").attr("disabled", "disabled");
}
})(this, this.jQuery, this._);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment