(function () { angular.module('forms') .controller('MembershipFormCtrl', ['$scope', '$document', '$window', function ($scope, $document, $window) { // An object to hold all our form field values $scope.frm = {}; $scope.frm.minimumDonationAmount = 100; var nz = 'New Zealand'; $scope.frm.recaptcha = false; // THIS IS NEW $scope.frm.ApplicationTypes = ["New Membership", "Renew a Membership", "Gift a Membership", "Renew a Gift Membership"]; $scope.frm.ApplicationType = $scope.frm.ApplicationTypes[0]; // default selected $scope.$watch('beneficiaryCountryIsNZ()', function (isNz) { if (isNz) { $scope.frm.OverseasMagazinePostageIsRequired = false; $scope.frm.OverseasMembershipCardIsRequired = false; } else { //after overseas price list introduced, the overseas postage is redundant $scope.frm.OverseasMembershipCardIsRequired = false; $scope.frm.ExpressServiceFeeIsRequired = false; } }); $scope.$watch('frm.Country', function (newValue, oldValue) { if ($scope.frm.ApplicationType == 'New Membership' || $scope.frm.ApplicationType == 'Renew a Membership') { validateAfterCountryChange(newValue, oldValue); } else return; }); $scope.$watch('frm.RecipientCountry', function (newValue, oldValue) { if ($scope.frm.ApplicationType == 'Gift a Membership' || $scope.frm.ApplicationType == 'Renew a Gift Membership') { validateAfterCountryChange(newValue, oldValue); } else return; }); function validateAfterCountryChange(newValue, oldValue) { if (oldValue == null) return; if (newValue == oldValue) return; if (newValue != nz && oldValue != nz) return; $scope.frm.MembershipType = null; $scope.checkIndividual(); $scope.showAfterCountryChgange = true; } $scope.$watch('frm.MembershipType', function (newValue, oldValue) { if (newValue == oldValue) return; if (newValue != null && newValue != '') $scope.showAfterCountryChgange = false; $scope.checkIndividual(); }); // RecipientCountry takes precidence over BillingCountry for Gift a Membership as // the recipients panel is only shown when Gift a Membership is the chosen application type $scope.beneficiaryCountryIsNZ = function () { return $scope.frm.IsGiftTransaction() ? $scope.frm.RecipientCountry == nz : $scope.frm.Country == nz; }; // Gift or Gift renewals change validation logic so we need to be able to check what application type is currently active $scope.frm.IsGiftTransaction = function () { return $scope.frm.ApplicationType.toLowerCase().indexOf('gift') != -1; }; $scope.frm.total = function () { var membershipTypePrice = parseInt($scope.frm.MembershipTypePrice, 10) || 0, donationAmount = parseInt($scope.frm.DonationAmount, 10) || 0, overseasMagazinePostageValue = $scope.frm.OverseasMagazinePostageIsRequired ? (parseInt($scope.frm.OverseasMagazinePostageValue, 10) || 0) : 0, //overseasMembershipCardValue = $scope.frm.OverseasMembershipCardIsRequired ? (parseInt($scope.frm.OverseasMembershipCardValue, 10) || 0) : 0, additionalOrReplacementCardValue = $scope.frm.AdditionalOrReplacementCardIsRequired ? (parseInt($scope.frm.AdditionalOrReplacementCardValue, 10) || 0) : 0, expressServiceFeeValue = $scope.frm.ExpressServiceFeeIsRequired ? (parseInt($scope.frm.ExpressServiceFeeValue, 10) || 0) : 0; return membershipTypePrice + donationAmount + overseasMagazinePostageValue + additionalOrReplacementCardValue + expressServiceFeeValue; }; $scope.uncheckIfLessThanMinAmount = function () { if ($scope.frm.DonationAmount < $scope.frm.minimumDonationAmount) { $scope.frm.ExcludeDonationFromMagazine = false; } }; $scope.formIsValid = function (form) { return $scope.frm.recaptcha && form.$valid && $scope.frm.HasReadPolicy === true ? true : false; }; $scope.showConditionsError = function (form) { return form.$valid && !$scope.formIsValid(form) ? true : false; }; $scope.displayTooltip = function (prop) { $scope[prop] = !$scope[prop]; if ($scope[prop]) { $window.onclick = function (event) { if (event.target.id != prop) { $scope.$apply(function () { $scope[prop] = false; }); } }; } }; $scope.checkIndividual = function() { var result = $scope.frm.MembershipType != null && $scope.frm.MembershipType != '' && $scope.frm.JointMemberName != null && $scope.frm.JointMemberName != '' && $scope.frm.MembershipType.toLowerCase().indexOf('individual') != -1; $scope.hptFrm.JointMemberName.$setValidity('individual', !result); return result; }; $scope.setResponse = function (response) { console.log(response); $.ajax({ type: 'POST', url: "/api/Validation/ReCaptcha", data: "=" + response, success: function (data) { var res = JSON.parse(data); console.log(res); console.log(res.success); if (res.success === true) { $scope.frm.recaptcha = true; $('#submitContainer').toggle("fast"); } } }); }; $scope.onExpire = function () { $scope.frm.recaptcha = false; $('#submitContainer').toggle("fast"); } }]) .controller('SubscriptionFormCtrl', ['$scope', '$window', function ($scope, $window) { $scope.frm = {}; $scope.frm.minimumDonationAmount = 100; $scope.frm.recaptcha = false; // THIS IS NEW $scope.frm.SubscriptionTypes = ["New Subscription", "Renew a Subscription", "Gift a Subscription", "Renew a Gift Subscription"]; $scope.frm.SubscriptionType = $scope.frm.SubscriptionTypes[0]; // default selected // RecipientCountry takes precidence over BillingCountry for Gift a Membership as // the recipients panel is only shown when Gift a Membership is the chosen application type $scope.beneficiaryCountryIsNZ = function () { return $scope.frm.IsGiftTransaction() ? $scope.frm.RecipientCountry == 'New Zealand' : $scope.frm.Country == 'New Zealand'; }; // Gift or Gift renewals change validation logic so we need to be able to check what application type is currently active $scope.frm.IsGiftTransaction = function () { return $scope.frm.SubscriptionType.toLowerCase().indexOf('gift') != -1; }; $scope.frm.total = function () { var subscriptionAmount = parseInt($scope.frm.SubscriptionAmount, 10) || 0, donationAmount = parseInt($scope.frm.DonationAmount, 10) || 0; return subscriptionAmount + donationAmount; }; $scope.uncheckIfLessThanMinAmount = function () { if ($scope.frm.DonationAmount < $scope.frm.minimumDonationAmount) { $scope.frm.ExcludeDonationFromMagazine = false; } }; $scope.formIsValid = function (form) { return $scope.frm.recaptcha && form.$valid && $scope.frm.HasReadPolicy === true ? true : false; }; $scope.showConditionsError = function (form) { return form.$valid && !$scope.formIsValid(form) ? true : false; }; $scope.displayTooltip = function (prop) { $scope[prop] = !$scope[prop]; if ($scope[prop]) { $window.onclick = function (event) { if (event.target.id != prop) { $scope.$apply(function () { $scope[prop] = false; }); } }; } }; $scope.setResponse = function (response) { console.log(response); $.ajax({ type: 'POST', url: "/api/Validation/ReCaptcha", data: "=" + response, success: function (data) { var res = JSON.parse(data); console.log(res); console.log(res.success); if (res.success === true) { $scope.frm.recaptcha = true; $('#submitContainer').toggle("fast"); } } }); }; $scope.onExpire = function () { $scope.frm.recaptcha = false; $('#submitContainer').toggle("fast"); } }]) .controller('DonationFormCtrl', ['$scope', '$timeout', '$window', 'vcRecaptchaService', function ($scope, $timeout, $window, recaptcha) { $scope.frm = {}; $scope.frm.minimumDonationAmount = 100; $scope.frm.recaptcha = false; // THIS IS NEW $scope.initialCause = function (causes) { var linkPara = getParameterByName('LinkParameter'); $scope.frm.items = []; var indexPara = -1; var showOption = "Yes"; if (linkPara != null && linkPara != '') { indexPara = causes.indexOf(linkPara); } for (var i = 0; i < causes.length; i++) { if (indexPara != -1 && i != indexPara) showOption = "No"; else showOption = "Yes"; $scope.frm.items.push({ showYN: showOption, Option: causes[i] }); } //$scope.frm.Causes = causes; $scope.frm.Causes = $scope.frm.items var cau = $scope.frm.items[0]; if (linkPara != null && linkPara != '') { if (causes.indexOf(linkPara) == -1) { $scope.frm.Cause = cau.Option; } else { $scope.frm.Cause = linkPara; } } else { $scope.frm.Cause = cau.Option; } }; $scope.formIsValid = function (form) { /*return form.$valid && $scope.frm.HasReadPolicy === true ? true : false; OLD ONE*/ return $scope.frm.recaptcha && form.$valid && $scope.frm.HasReadPolicy === true ? true : false; }; $scope.showConditionsError = function (form) { return form.$valid && !$scope.formIsValid(form) ? true : false; }; $scope.uncheckIfLessThanMinAmount = function () { if ($scope.frm.DonationAmount < $scope.frm.minimumDonationAmount) { $scope.frm.ExcludeDonationFromMagazine = false; } }; $scope.displayTooltip = function (prop) { $scope[prop] = !$scope[prop]; if ($scope[prop]) { $window.onclick = function (event) { if (event.target.id != prop) { $scope.$apply(function () { $scope[prop] = false; }); } }; } }; $scope.setResponse = function (response) { console.log(response); $.ajax({ type: 'POST', url: "/api/Validation/ReCaptcha", data: "=" + response, success: function (data) { var res = JSON.parse(data); console.log(res); console.log(res.success); if (res.success === true) { $scope.frm.recaptcha = true; $('#submitContainer').toggle("fast"); } } }); }; $scope.onExpire = function () { $scope.frm.recaptcha = false; $('#submitContainer').toggle("fast"); } function getParameterByName(name) //courtesy Artem { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) return ""; else return decodeURIComponent(results[1].replace(/\+/g, " ")); } }]); }());