Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HA.user = (function(w,d,$,sb,api,pub){
- var events = { };
- var jsonModel = typeof w.jsonCtrl == 'function' ? jsonCtrl().model : { };
- var init = function() {
- api.retrieveKnownModelValuesFromJSONModel();
- sb.bind('loginForm',HA.models.loginForm);
- sb.bind('forgotPasswordForm',HA.models.loginForm);
- sb.bind('registrationForm',HA.models.registrationForm);
- sb.bind('addressForm',HA.models.addressForm);
- sb.bind('billingForm',HA.models.billingForm);
- sb.bind('settings',{ customerSupportNum: jsonCtrl().model.conciergeSupportNumber });
- };
- $(d).ready(init);
- var isValid = function(key,loadable) {
- var isValid = HA.models.validate(key);
- if (!isValid) {
- sb.bind(key, HA.models[key]);
- loadable.setState('initial validation');
- return false;
- }
- return true;
- };
- events.loginUser = function(evt,loginForm) {
- evt.preventDefault();
- var loadable = HA.ui.loadable('premiumLogin');
- if (!isValid('loginForm',loadable)) return false;
- loadable.setState('loading');
- api.loginUser(loginForm,function(err,resp){
- if(err) {
- loadable.setState('initial error');
- } else {
- jsonModel.entityId = resp.USERID;
- HA.models.addressForm.entityId = resp.USERID;
- page.redirect(HA.config.routes.address.path + '?id=' + HA.status.selectedPlan.id);
- }
- });
- };
- events.forgotPasswordSubmit = function(evt,forgotPasswordForm) {
- evt.preventDefault();
- var loadable = HA.ui.loadable('premiumForgotPassword');
- if(!isValid('forgotPasswordForm',loadable)) return false;
- loadable.setState('loading');
- api.forgotPassword(forgotPasswordForm,function(err,resp){
- if(err) {
- loadable.setState('initial error');
- } else {
- HA.models.loginForm.username = forgotPasswordForm.email;
- sb.bind('loginForm',HA.models.loginForm);
- page(HA.config.routes.passwordSent.path);
- }
- });
- };
- events.activateAccount = function(evt) {
- evt.preventDefault();
- var loadable = HA.ui.loadable('premiumActivate');
- if(typeof jsonCtrl().model.consumer.email == 'undefined') return loadable.setState('initial error');
- loadable.setState('loading');
- api.forgotPassword({email: jsonCtrl().model.consumer.email},function(err,resp){
- if(err) {
- loadable.setState('initial error');
- } else {
- page.redirect(HA.config.routes.passwordSent.path + '?id=' + simpleBind.getState().boundObjects.selectedPlan.id);
- }
- });
- };
- events.registerConsumer = function(evt,registrationForm) {
- evt.preventDefault();
- var loadable = HA.ui.loadable('premiumRegister');
- if (!isValid('registrationForm',loadable)) return false;
- loadable.setState('loading');
- api.createNewUser(registrationForm,function(err,resp){
- if(err) {
- if(err.statusId == 409) {
- HA.models.loginForm.username = registrationForm.username;
- sb.bind('loginForm',HA.models.loginForm);
- page(HA.config.routes.login.path + '?id=' + HA.status.selectedPlan.id);
- } else {
- loadable.setState('initial error');
- }
- } else {
- jsonModel.entityId = resp.entityId;
- jsonModel.consumer.phone = registrationForm.homePhone;
- jsonModel.consumer.address.zip = registrationForm.primaryZip;
- jsonModel.consumer.address.city = resp.primaryCity;
- jsonModel.consumer.address.state = resp.primaryState;
- api.retrieveKnownModelValuesFromJSONModel();
- HA.models.addressForm.entityId = resp.entityId;
- sb.bind('addressForm',HA.models.addressForm);
- page(HA.config.routes.address.path + '?id=' + HA.status.selectedPlan.id);
- api.loginUser({username: registrationForm.username, password: registrationForm.password});
- }
- });
- };
- events.collectAddress = function(evt,addressForm) {
- evt.preventDefault();
- var loadable = HA.ui.loadable('premiumAddress')
- if (!isValid('addressForm',loadable)) return false;
- loadable.setState('loading');
- api.setUserAddress(addressForm,function(err,resp){
- if(err) {
- loadable.setState('initial error');
- } else {
- jsonModel.consumer.address.id = resp.addressId;
- page(HA.config.routes.billing.path + '?id=' + HA.status.selectedPlan.id);
- }
- });
- };
- events.collectBilling = function(evt,billingForm) {
- evt.preventDefault();
- var loadable = HA.ui.loadable('premiumBilling');
- if (!isValid('billingForm',loadable)) {
- HA.models.billingForm.forceShowAddr = true;
- isValid('billingForm',loadable); // recall this to show any address-related billing validation
- return false;
- }
- loadable.setState('loading');
- SM.util.Payment.submitWithToken = function(data) {
- api.setBillingInfo({
- accountToken: data.token,
- duplicateToken: data.statusCode == 409,
- accountNumberLastFour: billingForm.cardNum.substring(billingForm.cardNum.length-4),
- securityCode: billingForm.secCode,
- creditCardType: SM.util.Payment.determineCardType(billingForm.cardNum),
- expirationMonth: billingForm.expMonth,
- expirationYear: billingForm.expYear,
- cardholderName: billingForm.cardholderName,
- billingAddress1: billingForm.address1,
- billingAddress2: billingForm.address2,
- billingCity: billingForm.city,
- billingState: billingForm.state,
- billingZip: billingForm.zip,
- catalogItemId: 18,
- feePlanId: 160,
- consumerId: jsonModel.entityId
- },function(err,resp){
- if(err) {
- s_sm.fireSimpleEvent('event175','HA Premium: Account Created');
- loadable.setState('initial error');
- } else {
- s_sm.fireSimpleEvent('event174','HA Premium: Account Created');
- w.location.href = '/myhomeadvisor/premium';
- }
- })
- };
- SM.util.Payment.profileTokenBadRequest = function() { // = SM.util.Payment.profileTokenServerFail = SM.util.Payment.requiresRefresh = SM.util.Payment.requiresSecure = function() {
- loadable.setState('initial error');
- s_sm.fireSimpleEvent('event175','HA Premium: Account Created');
- };
- // get the token, response will be fed to submitWithToken callback
- SM.util.Payment.requestPaymentToken(
- jsonModel.tokenURL,
- jsonModel.merchantKey,
- billingForm.cardNum,
- billingForm.expMonth,
- billingForm.expYear
- );
- };
- events.billingAddrToggle = function(evt,billingForm) {
- if(this.checked) {
- billingForm.address1 = HA.models.addressForm.address1;
- billingForm.address2 = HA.models.addressForm.address2;
- billingForm.city = HA.models.addressForm.city;
- billingForm.state = HA.models.addressForm.state;
- billingForm.zip = HA.models.addressForm.zip;
- } else {
- billingForm.address1 = '';
- billingForm.address2 = '';
- billingForm.city = '';
- }
- sb.bind('billingForm',billingForm);
- };
- sb.registerEvent('loginConsumer',events.loginUser);
- sb.registerEvent('forgotPasswordSubmit',events.forgotPasswordSubmit);
- sb.registerEvent('activateAccount',events.activateAccount);
- sb.registerEvent('registerConsumer',events.registerConsumer);
- sb.registerEvent('collectAddress',events.collectAddress);
- sb.registerEvent('collectBilling',events.collectBilling);
- sb.registerEvent('billingAddrToggle',events.billingAddrToggle);
- pub.getBillingInfo = function(ctx,next) {
- if(jsonModel.entityId) {
- HA.models.billingForm.cardholderName = HA.models.registrationForm.firstName + ' ' + HA.models.registrationForm.lastName;
- HA.models.billingForm.billingAddrToggle = true;
- sb.bind('billingForm',HA.models.billingForm);
- pub.triggerEvent('billingAddrToggle', d.getElementById('billingAddrToggle'), HA.models.billingForm);
- next();
- } else {
- page.redirect(HA.config.routes.login.path + '?id=' + sb.getState().boundObjects.selectedPlan.id);
- }
- };
- /**
- * param1: eventName
- * param2: element on which to trigger event, 'this' context
- * param3: object to be passed to eventHandler
- *
- * example usage:
- *
- * pub.triggerEvent('billingAddrToggle', d.getElementById('billingAddrToggle'), HA.models.billingForm);
- *
- */
- pub.triggerEvent = function() {
- var args = Array.prototype.slice.call(arguments)
- , eventName = args.shift()
- , el = args.shift();
- args.unshift(null);
- if(typeof events[eventName] == 'function') {
- events[eventName].apply(el,args);
- }
- };
- return pub;
- })(window,document,HA.dom,simpleBind,HA.services,new EmitterFactory(HA.user));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement