mRefill = { service: null, validate: { name:false }, payment : null, name : null, amount : null, executeText : "Starting...", initialize: function() { mRefill.onPaymentChange(); }, onServiceLoaded: function() { mRefill.service = MService.getRefill(); }, onPaymentChange: function() { var possible = [ 'stripe', 'bitcoin' ]; var value = $('input[name=payment]:checked').val(); $('#payment_' + value).show(); for (var i=0; i'); }, onBitPayRequestInvoiceFailure : function(data) { $('#bitpay_embedded_dialog').text('Request failed, please try again later.'); }, validateField : function(x,v,t) { if (v) { $('#_mRefill_' + x + "_ctl").removeClass('error'); $('#_mRefill_' + x + "_ctl").addClass('success'); if (t) $('#_mRefill_' + x + "_help").text("Ok"); } else { $('#_mRefill_' + x + "_ctl").removeClass('success'); $('#_mRefill_' + x + "_ctl").addClass('error'); if (t) $('#_mRefill_' + x + "_help").text(t); } mRefill.validate[x] = v; }, onNameChange: function() { log("onNameChange"); var name = $('#_mRefill_name').val(); if (mRefill.name == name) return; mRefill.name = name; mRefill.validate['name'] = false; if (!isAlphaNumeric(name)) { $('#_mRefill_name_ctl').removeClass('success'); $('#_mRefill_name_ctl').addClass('error'); $('#_mRefill_name_help').text("Not alpha numeric"); } else { $('#_mRefill_name_ctl').removeClass('error'); $('#_mRefill_name_ctl').removeClass('success'); $('#_mRefill_name_help').text("Checking..."); keyedTimer("onNameChange", function() { mRefill.checkName(name); }, 500); } mRefill.testReady(); }, checkName: function(name) { log("checkName"); mRefill.service.test(name + Constants.ATHOST, { name: name, invoke: function(result) { mRefill.onCheckComplete(this.name, result); }}); }, onCheckComplete: function(name, result) { if (name != mRefill.name) return; if (result.hasException()) { if (result.getException().getMessage().indexOf('exists')!=-1) { $('#_mRefill_name_ctl').addClass('success'); $('#_mRefill_name_help').text("Ok"); mRefill.validate['name'] = true; } else { $('#_mRefill_name_ctl').addClass('error'); $('#_mRefill_name_help').text(result.getException().getMessage()); mRefill.validate['name'] = false; } } else { $('#_mRefill_name_ctl').addClass('error'); $('#_mRefill_name_help').text('User does not exist'); mRefill.validate['name'] = false; } mRefill.testReady(); }, onStripeAmountChange: function() { mRefill.amount = $('input[name=amount_bitpay]:checked').val(); }, onStripeCardNumberChange : function() { mRefill.validateField('stripe_card_number',Stripe.validateCardNumber($('#stripe_card_number').val())); mRefill.testReady(); }, onStripeCardCVCChange : function () { mRefill.validateField('stripe_card_cvc',Stripe.validateCVC($('#stripe_card_cvc').val())); mRefill.testReady(); }, onStripeCardExpiryChange : function () { mRefill.validateField('stripe_card_expiry', Stripe.validateExpiry($('#stripe_card_expiry_month').val(), $('#stripe_card_expiry_year').val())); mRefill.testReady(); }, onStripeResponseHandler : function (data) { alert(data); }, testReady : function() { log("testing"); for (var i in mRefill.validate) { log(i); if (mRefill.validate[i] == false) { $('#_mRefill_submit').attr("disabled", true); log("failed"); return; } } $('#_mRefill_submit').removeAttr("disabled"); log("succeeded"); }, makePayment : function() { $('#_mRefillExecute').show(); var paymentDetails = mRefill.payment == 'stripe' ? { number : $('#stripe_card_number').val(), cvc : $('#stripe_card_cvc').val(), month : $('#stripe_card_expiry_month').val(), year : $('#stripe_card_expiry_year').val() } : { token : $('#bitcoin_token').val() }; mRefill.service.makePayment( mRefill.name + Constants.ATHOST, mRefill.amount, mRefill.payment, paymentDetails, { progress: function(x) { mRefill.executeText += "\n" + x; $('#_mRefillExecute_label').html(htmlForTextWithEmbeddedNewlines(mRefill.executeText)); }, invoke: function(r) { mRefill.onPaid(r); } } ); }, onPaid: function(r) { if (r.hasException()) { mRefill.executeText += "\n\n" + "Failed: " + r.getException().getMessage(); $('#_mRefillExecute_label').html(htmlForTextWithEmbeddedNewlines(mRefill.executeText)); } else { $('#_mRefillExecute_success').show(); } }, exitPage: function() { $('#_mRefill_name').val(''); $('#_mRefill_password').val(''); $('#_mRefill_password_check').val(''); $('#_mRefill_dropbox_authorization').val(''); onNextTick(function() { window.location.href='index.html';}); } }; /***** mRefill ******/