// On document Ready... jQuery(function ($) { var mode = Accumulus.constants.MOBILE; var A = { plugins: { balance: { balanceView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/balance.html') }, profile: { profileView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/profile_view.html'), profileEditView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/profile_edit.html') }, subscriptionList: { subscriptionsView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/subscriptionList_view.html'), editSubscriptionView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/subscriptionList_details.html') }, statementHistory: { statementsView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/statementHistory_list.html') }, paymentMethods: { paymentMethodsView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/paymentMethods_view.html'), editCreditCardView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/creditCard_edit.html'), editBankAccountView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/bankAccount_edit.html'), creditCardItemView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/creditCard_item.html'), bankAccountItemView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/bankAccount_item.html'), billingAgreementItemView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/billingAgreement_item.html') }, usageBalances: { balancesView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/usageBalances.html') }, usageHistory: { usageHistoryView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/usageHistory_view.html'), usageDetailsView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/usageHistory_details.html') }, makePayment: { makePaymentView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/makePayment.html'), paymentAppliedView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/paymentApplied.html') }, portal: { selectWidgetView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/portal.html') }, signup: { signupView: new AccView(Accumulus.resourcesUrl + 'forms/' + mode + '/signup.html') } } }; Accumulus = $.extend(true, A, Accumulus); if (Accumulus.showLoadingOverlay) { var $overlay = '
'; $(document.body).append($overlay); $(document).ajaxStart(function () { $('.acc-overlay').show(); $('.ui-loader').show(); }); $(document).ajaxStop(function () { $('.acc-overlay').hide(); $('.ui-loader').hide(); }); } Accumulus.API.yesNoPrompt = function (title, text, yesLabel, noLabel, callback) { var $container = $('
'); try { $('[data-role="page"]').append($container); $container.load( A.resourcesUrl + 'forms/' + mode + '/yesNoDialog.html', function () { var popup = $(this).find('#accYesNoDialog'); popup.popup({ afterclose: function (event, ui) { dialog.popup('destroy'); $container.remove(); } }); var dialog = $('#accYesNoDialog'); dialog.find('.acc-no').val(noLabel); dialog.find('.acc-yes').val(yesLabel); dialog.find('.acc-title').text(title); dialog.find('.acc-text').text(text); dialog.find('.acc-no').bind('click', function () { callback(false); dialog.popup('close'); }); dialog.find('.acc-yes').bind('click', function () { callback(true); dialog.popup('close'); }); popup.enhanceWithin(); dialog.popup('open'); }); } catch (e) { console.error(e.message); } finally { } }; Accumulus.initAccumulus(); }); (function ($) { $.widget("accumulus.widget", $.accumulus.widget, { _setSelectValue: function (select, value, rebuild) { if (rebuild) { $(select).val(value).selectmenu('refresh', true); } else { $(select).val(value).selectmenu('refresh'); } }, _createServerErrorWrapper: function (msg) { return $('
' + msg + '
'); }, _validationErrorPlacement: function (error, element) { error.insertAfter($(element).parent()); }, _openModal: function (modal) { $(modal).popup('open'); }, _closeModal: function (modal) { $(modal).popup('close'); } }); $.widget("accumulus.profile", $.accumulus.profile, { _initViewForm: function () { this._super(); this._$viewForm.enhanceWithin(); }, _initEditForm: function () { this._super(); this.element.find('.acc-profile-edit-view').enhanceWithin(); }, _fillEditForm: function () { this._super(); this._$editContainer.find('[name="country"]').selectmenu("refresh").trigger("change"); }, _countrySelected: function () { var widget = this; var $editForm = this._$editContainer; var statesSelect = $editForm.find('[name="state"]'); var c = this._customer; var contains = false; statesSelect.empty(); statesSelect.append(new Option(Accumulus.labels.profile.selectState)); widget._fetchStates(function (success, response) { if (success) { var states = response.StatesAndProvinces; for (var i in states) { statesSelect.append( new Option(states[i].Name, states[i].StateProvinceCode)); if (states[i].StateProvinceCode == c.StateProvinceCode) { contains = true; } } statesSelect.selectmenu("refresh", true); if (contains) { statesSelect.val(c.StateProvinceCode); statesSelect.selectmenu("refresh"); } } else { widget._serverError(data); } }); }, _cancelPassword: function () { $('#acc-popup-password').popup("close"); } }); $.widget("accumulus.subscriptionList", $.accumulus.subscriptionList, { _fillSubscriptionsView: function () { this._super(); this._$viewForm.enhanceWithin(); }, _fillDetailsForm: function () { var widget = this; widget._super(); var $detailsContainer = widget._$detailsContainer; widget._$detailsContainer.enhanceWithin(); var status = widget._subscription.Status; if (status == 'Inactive') { $detailsContainer.find('.acc-cancel-subscription').addClass('ui-disabled'); } }, _createSubscriptionItems: function () { var widget = this; var s = widget._subscription; var $detailsContainer = widget._$detailsContainer; var subscriptionItemsContainer = $detailsContainer.find('.acc-subscription-items'); subscriptionItemsContainer.empty(); if (s.SubscriptionItems && s.SubscriptionItems.length > 0) { for (var i in s.SubscriptionItems) { var item = s.SubscriptionItems[i]; var itemContainer = $('
  • '); var subscriptionItemID = item.SubscriptionItemID || ''; var productCode = item.ProductCode || ''; var status = item.Status || ''; try { status = Accumulus.labels.subscriptionList[status] || status; productCode = Accumulus.labels.subscriptionList.productCode[productCode] || productCode; } catch (e) { console.log(e.msg); } var fullDescription = subscriptionItemID + ' ' + productCode + ' ' + status; var fields = item.Fields; if (fields && fields.length > 0) { var itemFieldsHandler = widget.options.itemFieldsHandler; if (typeof itemFieldsHandler == 'function') { fields = itemFieldsHandler(fields); } var fieldsContainer = $('
    ').addClass('ui-grid-a'); //TODO: review mobile only for (var j in fields) { var field = fields[j]; var productFieldCode = field.ProductFieldCode || ''; try { productFieldCode = Accumulus.labels.subscriptionList.productFieldCode[productFieldCode] || productFieldCode; } catch (e) { console.log(e.msg); } fieldsContainer .append($('
    ') .addClass('ui-block-a') //TODO: review mobile only .append($('').text(productFieldCode))) .append($('
    ') .addClass('ui-block-b') //TODO: review mobile only .append($('').text(field.Value))); } itemContainer.append($('
    ') .append($('

    ').text(fullDescription)) .append(fieldsContainer) .attr('data-role', 'collapsible') //TODO: review mobile only .attr('data-theme', 'c') .attr('data-inset', 'false') .attr('data-iconpos', 'right')); } else { itemContainer .addClass('list-item-padding') .text(fullDescription); } itemContainer.appendTo(subscriptionItemsContainer); } } else { $detailsContainer.find('.acc-no-subscription-items').show(); } } }); $.widget("accumulus.statementHistory", $.accumulus.statementHistory, { _initStatementsView: function () { this._super(); this.element.enhanceWithin(); } }); $.widget("accumulus.paymentMethods", $.accumulus.paymentMethods, { _initCreditCardForm: function () { this._super(); var $detailsContainer = this.element.find('.acc-credit-card-edit-view'); $detailsContainer.enhanceWithin(); }, _initBankAccountForm: function () { this._super(); var $detailsContainer = this.element.find('.acc-bank-account-edit-view'); $detailsContainer.enhanceWithin(); }, _fillPaymentMethodsView: function () { this._super(); this._$viewForm.enhanceWithin(); }, _enhanceCCItem: function (item) { $(item).enhanceWithin(); }, _enhanceBAItem: function (item) { $(item).enhanceWithin(); }, _enhancePPItem: function (item) { $(item).enhanceWithin(); }, _fillCreditCardForm: function () { var widget = this; widget._super(); var $detailsContainer = this._$detailsContainer; $detailsContainer.find('[name="month"]').selectmenu('refresh'); $detailsContainer.find('[name="year"]').selectmenu('refresh'); $detailsContainer.find('[name="country"]').selectmenu('refresh'); $detailsContainer.find('[name="number"]').textinput('disable'); }, _fillBankAccountForm: function () { var widget = this; widget._super(); var $detailsContainer = this._$detailsContainer; $detailsContainer.find('[name="type"]').selectmenu('refresh'); $detailsContainer.find('[name="country"]').val(country); $detailsContainer.find('[name="accountNumber"]').textinput('disable'); } }); $.widget("accumulus.usageBalances", $.accumulus.usageBalances, { _fillViewForm: function () { var widget = this; var usageBalances = widget._usageBalances; var $viewForm = widget._$viewForm; var list = $viewForm.find('.acc-usage-balances-list'); list.empty(); if (usageBalances && usageBalances.length > 0) { for (var i in usageBalances) { var b = usageBalances[i]; //Labels var usageTypeLabel = "Type:"; try { usageTypeLabel = Accumulus.labels.usageBalances['type:']; } catch (e) { Accumulus.info(e.msg); }; var paidLabel = "Paid balance:"; try { paidLabel = Accumulus.labels.usageBalances['paidBalance:']; } catch (e) { Accumulus.info(e.msg); }; var giftLabel = "Gift balance:"; try { giftLabel = Accumulus.labels.usageBalances['giftBalance:']; } catch (e) { Accumulus.info(e.msg); }; //Values var typeCode = b.UsageTypeCode; var usageType = null; try { //TODO: might have to move all codes to a single category, are they the same category as status? Does every widget can share the same codes? usageType = Accumulus.labels.usageBalances.usageTypeCodes[typeCode]; } catch (e) { Accumulus.info(e.msg); }; usageType = usageType || b.UsageTypeName || ''; var paidBalance = b.PaidBalance; var giftBalance = b.GiftBalance; if (typeof widget.options.formatQuantityHandler == 'function') { paidBalance = widget.options.formatQuantityHandler(typeCode, paidBalance); giftBalance = widget.options.formatQuantityHandler(typeCode, giftBalance); } var fieldsContainer = $('
    ').addClass('ui-grid-a') .append( $('
    ').addClass('ui-block-a') .append( $('').text(usageTypeLabel)) ).append( $('
    ').addClass('ui-block-b') .append( $('').text(usageType)) ).append( $('
    ').addClass('ui-block-a') .append( $('').text(paidLabel)) ).append( $('
    ').addClass('ui-block-b') .append( $('').text(paidBalance)) ).append( $('
    ').addClass('ui-block-a') .append( $('').text(giftLabel)) ).append( $('
    ').addClass('ui-block-b') .append( $('').text(giftBalance)) ); $('
  • ').append(fieldsContainer).appendTo(list); } } else { var noBalancesLabel = 'No usage balances'; try { noBalancesLabel = Accumulus.labels.usageBalances.noBalances; } catch (e) { Accumulus.info("There's no label for noBalances defined") } $viewForm.append('
    ' + noBalancesLabel + '
    '); } $viewForm.enhanceWithin(); } }); $.widget("accumulus.usageHistory", $.accumulus.usageHistory, { _fillViewForm: function () { this._super(); this._$viewForm.enhanceWithin(); }, _initDetailsForm: function () { this._super(); this._$detailsContainer.enhanceWithin(); } }); $.widget("accumulus.makePayment", $.accumulus.makePayment, { _enhanceView: function () { this.element.enhanceWithin(); } }); $.widget("accumulus.portal", $.accumulus.portal, { _initView: function () { var widget = this; widget._super(); var $container = widget.element; if (widget.options.showHeader) { $('[data-role="page"]').enhanceWithin(); } else { $container.find('.acc-portal-content').enhanceWithin(); } var $form = $container.find('.acc-reset-password-form'); $form.find('.acc-reset-password').closest('.ui-btn').hide(); }, _enhanceView: function () { var widget = this; var $container = widget.element; var $viewForm = $container.find('.acc-portal-content'); //BALANCE if (!widget.options.showBalance) { $viewForm.find('.acc-balance-selection').remove(); } $viewForm.find('.acc-balance-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); $(this).find('.acc-plugin-container').balance(options); }); //PROFILE if (!widget.options.showProfile) { $viewForm.find('.acc-profile-selection').remove(); } $viewForm.find('.acc-profile-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); var profileOptions = { customerEdit: widget.options.profile_onCustomerEdit, passwordChange: widget.options.profile_onPasswordChange, showChangePassword: widget.options.profile_showChangePassword, vatOnEServices: widget.options.profile_vatOnEServices, taxInformationCountries: widget.options.profile_taxInformationCountries }; $.extend(profileOptions, options); $(this).find('.acc-plugin-container').profile(profileOptions); }); //SUBSCRIPTIONS LIST if (!widget.options.showSubscriptionList) { $viewForm.find('.acc-subscriptions-list-selection').remove(); } $viewForm.find('.acc-subscriptions-list-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); var subscriptionListOptions = { itemFieldsHandler: widget.options.subscriptionList_itemFieldsHandler, cancelSubscription: widget.options.subscriptionList_cancelSubscription }; $.extend(subscriptionListOptions, options); $(this).find('.acc-plugin-container').subscriptionList(subscriptionListOptions); }); //STATEMENTS HISTORY if (!widget.options.showStatementHistory) { $viewForm.find('.acc-statement-history-selection').remove(); } $viewForm.find('.acc-statement-history-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); $(this).find('.acc-plugin-container').statementHistory(options); }); //USAGE BALANCES if (!widget.options.showUsageBalances) { $viewForm.find('.acc-usage-balances-selection').remove(); } $viewForm.find('.acc-usage-balances-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); var usageBalancesOptions = { formatQuantityHandler: widget.options.usageBalances_formatQuantityHandler }; $.extend(usageBalancesOptions, options); $(this).find('.acc-plugin-container').usageBalances(usageBalancesOptions); }); //USAGE HISTORY if (!widget.options.showUsageHistory) { $viewForm.find('.acc-usage-history-selection').remove(); } $viewForm.find('.acc-usage-history-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); var usageHistoryOptions = { skip: widget.options.usageHistory_skip, take: widget.options.usageHistory_take, fromDateTime: widget.options.usageHistory_fromDateTime }; $.extend(usageHistoryOptions, options); $(this).find('.acc-plugin-container').usageHistory(usageHistoryOptions); }); //PAYMENT METHODS if (!widget.options.showPaymentMethods) { $viewForm.find('.acc-payment-methods-selection').remove(); } $viewForm.find('.acc-payment-methods-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); var paymentMethodsOptions = { showCreditCards: widget.options.paymentMethods_showCreditCards, showBankAccounts: widget.options.paymentMethods_showBankAccounts, showBillingAgreements: widget.options.paymentMethods_showBillingAgreements, confirmUrl: widget.options.paymentMethods_confirmUrl, cancelUrl: widget.options.paymentMethods_cancelUrl }; $.extend(paymentMethodsOptions, options); $(this).find('.acc-plugin-container').paymentMethods(paymentMethodsOptions); }); //MAKE PAYMENT if (!widget.options.showMakePayment) { $viewForm.find('.acc-make-payment-selection').remove(); } $viewForm.find('.acc-make-payment-selection').bind('collapsibleexpand', function () { var options = widget._getWidgetOptions(); var makePaymentOptions = { paymentMade: widget.options.makePayment_onPaymentMade }; $.extend(makePaymentOptions, options); $(this).find('.acc-plugin-container').makePayment(makePaymentOptions); }); }, _showCaptcha: function (captchaUrl) { var $form = this.element.find('.acc-reset-password-form'); $form.find('.acc-captcha-field').show(); $form.find('.acc-captcha-img').attr('src', captchaUrl); $form.find('.acc-get-captcha').closest('.ui-btn').hide(); $form.find('.acc-reset-password').closest('.ui-btn').show(); }, _hideCaptcha: function () { var $form = this.element.find('.acc-reset-password-form'); $form.find('.acc-get-captcha').closest('.ui-btn').show(); $form.find('.acc-reset-password').closest('.ui-btn').hide(); $form.find('[name="captcha"]').val(null); $form.find('.acc-captcha-field').hide(); } }); $.widget("accumulus.signup", $.accumulus.signup, { _subscriptionItemSectionTemplate: '
    ' + '
    ' + '

    ${productName}

    ' + '
    ' + '
    ' + '
    ', _customInputFieldTemplate: '
    ' + '' + '
    ' + '' + '
    ' + '
    ', _customSelectFieldTemplate: '
    ' + '' + '
    ' + '' + '
    ' + '
    ', _enhanceView: function () { var widget = this; var $container = widget.element; var $ccCollapsible = $container.find('.acc-credit-card-collapsible'); var $baCollapsible = $container.find('.acc-bank-account-collapsible'); var $ppCollapsible = $container.find('.acc-billing-agreement-collapsible'); //Open Default payment method //TODO: Review it works on UI switch (widget.options.defaultPaymentMethod) { case Accumulus.constants.CREDIT_CARD: $ccCollapsible.attr('data-collapsed', false); widget._selectedPaymentMethod = Accumulus.constants.CREDIT_CARD; break; case Accumulus.constants.BANK_ACCOUNT: $baCollapsible.attr('data-collapsed', false); widget._selectedPaymentMethod = Accumulus.constants.BANK_ACCOUNT; break; case Accumulus.constants.BILLING_AGREEMENT: $ppCollapsible.attr('data-collapsed', false); widget._selectedPaymentMethod = Accumulus.constants.BILLING_AGREEMENT; break; } if (!widget.options.showCreditCard) { $ccCollapsible.hide(); } if (!widget.options.showBankAccount) { $baCollapsible.hide(); } if (!widget.options.showBillingAgreement) { $ppCollapsible.hide(); } $container.enhanceWithin(); $ccCollapsible.on('collapsibleexpand', function (event) { widget._selectedPaymentMethod = Accumulus.constants.CREDIT_CARD; }); $baCollapsible.on('collapsibleexpand', function (event) { widget._selectedPaymentMethod = Accumulus.constants.BANK_ACCOUNT; }); $ppCollapsible.on('collapsibleexpand', function (event) { widget._selectedPaymentMethod = Accumulus.constants.BILLING_AGREEMENT; }); $ccCollapsible.on('collapsiblecollapse', function (event) { if (widget._selectedPaymentMethod == Accumulus.constants.CREDIT_CARD) { widget._selectedPaymentMethod = null; } }); $baCollapsible.on('collapsiblecollapse', function (event) { if (widget._selectedPaymentMethod == Accumulus.constants.BANK_ACCOUNT) { widget._selectedPaymentMethod = null; } }); $ppCollapsible.on('collapsiblecollapse', function (event) { if (widget._selectedPaymentMethod == Accumulus.constants.BILLING_AGREEMENT) { widget._selectedPaymentMethod = null; } }); }, _selectCountry: function (countrySelectInput, value, statesSelectInput, callback) { var widget = this; $(countrySelectInput).val(value); $(countrySelectInput).selectmenu("refresh"); if (statesSelectInput) { widget._fillStates(statesSelectInput, value, callback); } }, _selectState: function (stateSelectInput, value) { this._super(stateSelectInput, value); $(stateSelectInput).selectmenu("refresh", true); }, _selectCountryAndState: function (countrySelectInput, countryCode, statesSelectInput, stateCode) { var widget = this; $(countrySelectInput).val(countryCode); $(countrySelectInput).selectmenu("refresh"); if (statesSelectInput) { widget._fillStates(statesSelectInput, countryCode, function () { widget._selectState(statesSelectInput, stateCode); }); } }, _fillStates: function (stateSelect, countryCode, callback) { this._super(stateSelect, countryCode, callback); $(stateSelect).selectmenu("refresh", true); }, _selectCurrentYear: function () { this._super(); this.element.find('[name="year"]').selectmenu('refresh', true); } }); })(jQuery);