{"version":3,"sources":["Beacon.Account.js","jQuery.Validate.Password.js","GenericPageInitialization.js","Shop.SelectPackage.js"],"names":["Beacon","Account","Homepage","init","this","showUserInfo","logout","self","$","post","then","d","ok","renderUserInfo","alert","authenticated","Name","name","text","hide","show","CLASS_NAME","SearchPage","initialState","initialAreaId","click","mode","data","attr","parents","ddlState","ddlArea","window","location","hash","o","exec","length","unescape","ChangeState","state","html","getJSON","each","p","v","id","area","append","change","val","submit","e","inputs","i","el","removeAttribute","LOWER","UPPER","validator","addMethod","value","element","password","test","usernameField","username","toLowerCase","match","otherPwdField","jQuery","GenericPageInitialization","Tabs","initialize_generic","TabularDataSupport","ex","tooltip","WCAG","initialize","Shop_SelectPackage_InitPage","initialAppIds","returnUrl","tblSubscriptionCatalog","ddlPlanLevel","btnPromoCodeApply","expandStateGroup","row","btn","removeClass","addClass","addCartItem","removeCartItem","plan","update_cart2","stateRow","isOpen","collapseStateGroup","parent","idx","lastRequest","divCartEmpty","promoCode","selectedItems","appIds","itemIndex","appId","push","abort","update_cart2_receivedData","Handlebars","helpers","dollars","registerHelper","number","format","percent","ReturnUrl","Templates","shopCart","removeCartItemByAppId","fadeOut","forEach","keypress","which"],"mappings":"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","file":"../Account/account.min.js","sourcesContent":["Beacon.Account.Homepage = {\r\n\r\n init: function () {\r\n var self = this;\r\n self.showUserInfo();\r\n },\r\n\r\n logout: function () {\r\n var self = this;\r\n\r\n $.post('/api/authentication/logout').then(function (d) {\r\n if (d.ok) {\r\n self.renderUserInfo(false);\r\n } else {\r\n alert(\"failed!\");\r\n }\r\n });\r\n\r\n },\r\n showUserInfo: function () {\r\n var self = this;\r\n\r\n $.post('/api/authentication/status').then(function (d) {\r\n self.renderUserInfo(d.authenticated, d.Name);\r\n });\r\n },\r\n\r\n renderUserInfo: function (authenticated, name) {\r\n var self = this;\r\n\r\n if (authenticated) {\r\n $(\"#username\").text(name);\r\n $(\".user-logged-out\").hide();\r\n $(\".user-logged-in\").show();\r\n } else {\r\n $(\"#username\").text('');\r\n $(\".user-logged-in\").hide();\r\n $(\".user-logged-out\").show();\r\n }\r\n\r\n },\r\n\r\n CLASS_NAME:\"Beacon.Account.Homepage\"\r\n};\r\n\r\n\r\nBeacon.SearchPage = {\r\n\r\n init: function (initialState, initialAreaId) {\r\n\r\n // basic search controls\r\n $(\"a[data-search]\").click(function () {\r\n var mode = $(this).data(\"search\");\r\n $(\"#txtQuery\").attr('name', mode); // set this attribute to set the key in the query string\r\n switch (mode) {\r\n case \"q\":\r\n $(\"#lblQuery\").text(\"Search by name, address, or parcel id\");\r\n $(this).parents(\"form\").attr('action','/Search');\r\n break;\r\n case \"parcelid\":\r\n $(\"#lblQuery\").text(\"Search by parcel id\");\r\n $(this).parents(\"form\").attr('action','/Search/Advanced');\r\n break;\r\n case \"alternateid\":\r\n $('#lblQuery').text('Search by alternate id');\r\n $(this).parents('form').attr('action', '/Search/Advanced');\r\n default:\r\n $(\"#lblQuery\").text(\"Search by \" + mode);\r\n $(this).parents(\"form\").attr('action','/Search/Advanced');\r\n break;\r\n }\r\n\r\n });\r\n\r\n\r\n var ddlState = $(\"select[name=state]\");\r\n var ddlArea = $(\"select[name=area]\");\r\n\r\n var hashParser = /#state=([^&]+)(?:&area=(.+)){0,1}/i;\r\n\r\n if (window.location.hash) {\r\n var o = hashParser.exec(window.location.hash);\r\n if (o.length >= 1) {\r\n initialState = unescape(o[1]);\r\n }\r\n if (o.length >= 2) {\r\n initialAreaId = unescape(o[2]);\r\n }\r\n }\r\n\r\n\r\n ddlState.change(function () {\r\n ChangeState($(this).val());\r\n });\r\n\r\n ddlArea.change(function () {\r\n ChangeArea($(this).val());\r\n });\r\n\r\n $.getJSON('/search/states', function (d) {\r\n if (initialState) {\r\n ChangeState(initialState);\r\n }\r\n $.each(d, function (p, v) {\r\n ddlState.append((initialState === v ? \"\");\r\n });\r\n });\r\n\r\n function ChangeState(state) {\r\n if (state === '') {\r\n ddlArea.html('');\r\n } else {\r\n ddlArea.html('');\r\n $.getJSON('/search/areas', { state: state }, function (d) {\r\n $.each(d, function (p, v) {\r\n if (initialAreaId == v.id || initialAreaId === v.area) {\r\n ddlArea.append(\"\");\r\n initialAreaId = null;\r\n } else {\r\n ddlArea.append(\"\");\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function ChangeArea(area) {\r\n }\r\n\r\n $('form').submit(function (e) {\r\n var inputs = $('select,input', this);\r\n $.each(inputs, function (i, el) {\r\n if (!$(inputs[i]).val()) {\r\n el.removeAttribute('name'); // removes from query parameters when blank\r\n }\r\n });\r\n });\r\n\r\n },\r\n\r\n CLASS_NAME: \"Beacon.SearchPage\"\r\n\r\n};","//Docs: http://jqueryvalidation.org/documentation/\r\n\r\n(function ($) {\r\n\r\n var LOWER = /[a-z]/,\r\n UPPER = /[A-Z]/,\r\n DIGIT = /[0-9]/,\r\n DIGITS = /[0-9].*[0-9]/,\r\n SPECIAL = /[^a-zA-Z0-9]/,\r\n SAME = /^(.)\\1+$/;\r\n\r\n\r\n $.validator.addMethod(\"passwordComplexity\", function (value, element) {\r\n var password = element.value;\r\n\r\n //if (!password || password.length < 8)\r\n // return false;\r\n\r\n //if (SAME.test(password))\r\n // return false;\r\n\r\n var score = (UPPER.test(password) ? 1 : 0)\r\n + (LOWER.test(password) ? 1 : 0);\r\n\r\n if (score >= 2) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }, \"Your password needs to have at least one lower case and one upper case letter\");\r\n\r\n $.validator.addMethod(\"passwordNotLikeUsername\", function (value, element, usernameField) {\r\n var password = element.value;\r\n var usernameEl = $(typeof usernameField != \"boolean\" ? usernameField : []);\r\n var username = usernameEl.val();\r\n\r\n if (!password)\r\n return false;\r\n\r\n if (username && password.toLowerCase().match(username.toLowerCase()))\r\n return false;\r\n\r\n return true;\r\n \r\n }, \"Your password is too similar to your username\"); \r\n \r\n\r\n $.validator.addMethod(\"mustMatch\", function (value, element, otherPwdField) {\r\n var password = element.value;\r\n var otherPwd = $(otherPwdField).val();\r\n \r\n return password === otherPwd;\r\n\r\n }, \"This doesn't match your new password.\");\r\n\r\n // manually add class rule, to make username param optional\r\n //$.validator.classRuleSettings.password = { password: true };\r\n\r\n})(jQuery);","Beacon.GenericPageInitialization = function () {\r\n\r\n $(function () {\r\n Beacon.Tabs.initialize_generic();\r\n\r\n try {\r\n Beacon.TabularDataSupport.init();\r\n } catch (ex) {\r\n }\r\n\r\n \r\n try {\r\n // enable tooltip wrappers \r\n $('.tooltip-wrapper').tooltip();\r\n }\r\n catch (ex) {\r\n }\r\n\r\n try {\r\n Beacon.WCAG.initialize();\r\n } catch (ex) {\r\n }\r\n\r\n // support for logout button\r\n $(\"#btnLogOut\").click(function () {\r\n $(\"form#logoutForm\").submit();\r\n });\r\n\r\n });\r\n\r\n};\r\n\r\n","\r\nfunction Shop_SelectPackage_InitPage(initialAppIds, returnUrl) {\r\n\r\n var tblSubscriptionCatalog = $(\"#tblSubscriptionCatalog\");\r\n var ddlPlanLevel = $(\"#ddlPlanLevel\");\r\n var btnPromoCodeApply = $(\"#btnPromoCodeApply\");\r\n\r\n ddlPlanLevel.change(function () {\r\n var plan = ddlPlanLevel.val();\r\n $(\"td[data-plan]\", tblSubscriptionCatalog).hide();\r\n $(\"td[data-plan='\" + plan + \"']\", tblSubscriptionCatalog).show();\r\n update_cart2();\r\n });\r\n\r\n //Toggle visibility of jurisdictions in a state\r\n $(\"tr[data-state-header]\", tblSubscriptionCatalog).click(function () {\r\n\r\n var stateRow = $(this);\r\n var isOpen = !!stateRow.data(\"open\");\r\n var state = stateRow.data(\"state-header\");\r\n\r\n if (isOpen) {\r\n collapseStateGroup(state);\r\n } else {\r\n expandStateGroup(state);\r\n }\r\n });\r\n\r\n function expandStateGroup(state) {\r\n var row = $(\"tr[data-state-header='\" + state + \"']\", tblSubscriptionCatalog);\r\n var btn = $(\"span.btn-toggle-state\", row);\r\n btn.removeClass(\"icon-plus-squared\");\r\n btn.addClass(\"icon-minus-squared\");\r\n row.data(\"open\", true);\r\n $(\".statename-toggle\", row).attr(\"aria-expanded\", \"true\");\r\n $(\"tr[data-state='\" + state + \"']\", tblSubscriptionCatalog).show();\r\n }\r\n\r\n function collapseStateGroup(state) {\r\n var row = $(\"tr[data-state-header='\" + state + \"']\", tblSubscriptionCatalog);\r\n var btn = $(\"span.btn-toggle-state\", row);\r\n btn.removeClass(\"icon-minus-squared\");\r\n btn.addClass(\"icon-plus-squared\");\r\n row.data(\"open\", false);\r\n $(\".statename-toggle\", row).attr(\"aria-expanded\", \"false\");\r\n $(\"tr[data-state='\" + state + \"']\", tblSubscriptionCatalog).hide();\r\n }\r\n\r\n\r\n // toggle item in cart\r\n $(\"tr[data-appid]\", tblSubscriptionCatalog).click(function () {\r\n\r\n var row = $(this);\r\n var inCart = !!row.data(\"incart\");\r\n\r\n if (inCart) {\r\n removeCartItem(row);\r\n } else {\r\n addCartItem(row);\r\n }\r\n\r\n update_cart2();\r\n });\r\n\r\n function addCartItem(row) {\r\n var btn = $(\".btn-add-to-cart\", row);\r\n btn.removeClass(\"icon-check-empty\");\r\n btn.addClass(\"icon-check\");\r\n row.data(\"incart\", true);\r\n btn.attr(\"aria-checked\", \"true\");\r\n }\r\n\r\n function removeCartItem(row) {\r\n var btn = $(\".btn-add-to-cart\", row);\r\n btn.removeClass(\"icon-check\");\r\n btn.addClass(\"icon-check-empty\");\r\n row.data(\"incart\", false);\r\n btn.attr(\"aria-checked\", \"false\");\r\n }\r\n\r\n function removeCartItemByAppId(appId) {\r\n var row = $(\"tr[data-appid='\" + appId + \"']\", tblSubscriptionCatalog);\r\n removeCartItem(row);\r\n }\r\n\r\n \r\n // add all jurisdictions in a state to the cart\r\n $(\".btn-add-state-to-cart\", tblSubscriptionCatalog).click(function () {\r\n\r\n var btn = $(this);\r\n var headerRow = btn.parent().parent();\r\n var state = headerRow.data(\"state-header\");\r\n\r\n var rows = $(\"tr[data-state='\" + state + \"']\", tblSubscriptionCatalog);\r\n rows.each(function (idx, el) {\r\n addCartItem($(el));\r\n });\r\n\r\n expandStateGroup(state);\r\n\r\n update_cart2();\r\n\r\n return false;\r\n\r\n });\r\n\r\n function init_hbs_helper() {\r\n if (!Handlebars.helpers.dollars) {\r\n Handlebars.registerHelper('dollars', function (number) {\r\n return number.format(\"$0,000.00\");\r\n });\r\n }\r\n if (!Handlebars.helpers.percent) {\r\n Handlebars.registerHelper('percent', function (number) {\r\n return (number * 100).format(\"0%\");\r\n });\r\n }\r\n }\r\n\r\n var lastRequest = null; // track last ajax request so we can cancel it when user gets ahead of server\r\n\r\n function update_cart2() {\r\n var divCartEmpty = $(\"#divCartEmpty\");\r\n\r\n var plan = ddlPlanLevel.val();\r\n var promoCode = $(\"#promoCode\").val();\r\n\r\n var selectedItems = $(\"#tblSubscriptionCatalog .icon-check\");\r\n var appIds = [];\r\n for (var itemIndex = 0; itemIndex < selectedItems.length; itemIndex++) {\r\n var btn = $(selectedItems[itemIndex]);\r\n var row = btn.parent().parent();\r\n var appId = row.data(\"appid\");\r\n appIds.push(appId);\r\n }\r\n\r\n if (appIds.length > 0) {\r\n\r\n if (lastRequest) {\r\n lastRequest.abort();\r\n lastRequest = null;\r\n }\r\n\r\n lastRequest = $.post(\"CalculateCart\", {\r\n appIds: appIds,\r\n plan: plan,\r\n promoCode: promoCode\r\n }, update_cart2_receivedData);\r\n\r\n\r\n divCartEmpty.hide();\r\n $(\".btnBuyNow\").attr('disabled','');\r\n\r\n } else {\r\n //cart is empty...\r\n divCartEmpty.show();\r\n $(\"#cartContentDiv\").html(\"\");\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n function update_cart2_receivedData(d) {\r\n\r\n lastRequest = null;\r\n\r\n init_hbs_helper();\r\n\r\n d.ReturnUrl = returnUrl; // inject one more view parameter\r\n\r\n \r\n $(\"#cartContentDiv\").html(Beacon.Account.Templates.shopCart(d));\r\n\r\n $(\"#tblSubscriptionCart tbody tr .glyphicon-trash\").click(function () {\r\n var row = $(this).parent().parent();\r\n var appId = row.data(\"appid\");\r\n removeCartItemByAppId(appId);\r\n update_cart2();\r\n row.fadeOut();\r\n });\r\n\r\n }\r\n\r\n // initialize pre-selected appIds\r\n initialAppIds.forEach(function (appId, idx) {\r\n var row = $(\"tr[data-appid='\" + appId + \"']\", tblSubscriptionCatalog);\r\n if (row) {\r\n //$(\"tbody\", tblSubscriptionCart).append(row);\r\n //row.click();\r\n\r\n addCartItem(row);\r\n\r\n var state = row.data(\"state\");\r\n expandStateGroup(state);\r\n\r\n\r\n }\r\n });\r\n\r\n btnPromoCodeApply.click(function () {\r\n update_cart2();\r\n });\r\n\r\n $(\"#promoCode\").keypress(function (e) {\r\n if (e.which == 13) {\r\n update_cart2();\r\n }\r\n });\r\n\r\n\r\n ddlPlanLevel.change();\r\n\r\n}"]}