diff options
Diffstat (limited to 'trunk/etherpad/src/static/js/billing.js')
-rw-r--r-- | trunk/etherpad/src/static/js/billing.js | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/trunk/etherpad/src/static/js/billing.js b/trunk/etherpad/src/static/js/billing.js new file mode 100644 index 0000000..c9fa30e --- /dev/null +++ b/trunk/etherpad/src/static/js/billing.js @@ -0,0 +1,111 @@ +/** + * Copyright 2009 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +$(function() { + billing.initFieldDisplay(); + billing.initCcValidation(); +}); + +billing.initFieldDisplay = function() { + var id = $('#billingselect input:checked').attr("value"); + $('.billingfield').not('.billingfield.'+id+'req').hide(); + $('.paymentbutton').click(billing.selectPaymentType); + + $('#billingCountry').click(billing.selectCountry); + billing.selectCountry(); +} + +billing.selectCountry = function() { + var countryCode = $('#billingCountry').attr("value"); + var id = $('#billingselect input:checked').attr("value"); + if (countryCode != 'US') { + $('.billingfield.intonly.'+id+'req').show(); + $('.billingfield.usonly').hide(); + } else { + $('.billingfield.intonly').hide(); + $('.billingfield.usonly.'+id+'req').show(); + } +} + +billing.countryAntiSelector = function() { + var countryCode = $('#billingCountry').attr("value"); + if (countryCode != 'US') { + return '.usonly'; + } else { + return '.intonly'; + } +} + +billing.selectPaymentType = function() { + var radio = $(this).children('input'); + var id = radio.attr("value"); + radio.attr("checked", "checked"); + + var selector = billing.countryAntiSelector(); + var toShow = $('.billingfield.'+id+'req:hidden').not('.billingfield'+selector); + var toHide = $('.billingfield:visible').not('.billingfield.'+id+'req'); + + if (toShow.size() > 0 && toHide.size() > 0) { + toHide.fadeOut(200); + setTimeout(function() { + toShow.fadeIn(200); + }, 200); + } else if (toShow.size() > 0 || toHide.size() > 0){ + toShow.fadeIn(200); + toHide.fadeOut(200); + } +} + +billing.extractCcType = function(numsrc) { + var number = $(numsrc).val(); + var newType = billing.getCcType(number); + $('.ccimage').removeClass('ccimageselected'); + if (newType) { + $('#img'+newType).addClass('ccimageselected'); + } + if (billing.validateCcNumber(number)) { + $('input[name=billingCCNumber]').css('border', '1px solid #0f0'); + } else if (billing.validateCcLength(number) || + ! (/^\d*$/.test(number))) { + $('input[name=billingCCNumber]').css('border', '1px solid #f00'); + } else { + $('input[name=billingCCNumber]').css('border', '1px solid black'); + } +} + +billing.handleCcFieldChange = function(target, event) { + if (event && + ! (event.keyCode == 8 || + (event.keyCode >= 32 && event.keyCode <= 126))) { + return; + } + var ccValue = $(target).val(); + if (ccValue == billing.lastCcValue) { + return; + } + billing.lastCcValue = ccValue; + setTimeout(function() { + billing.extractCcType(target); + }, 0); +} + +billing.initCcValidation = function() { + $('input[name=billingCCNumber]').keydown( + function(event) { billing.handleCcFieldChange(this, event); }); + $('input[name=billingCCNumber]').blur( + function() { billing.handleCcFieldChange(this) }); + billing.lastCcValue = $('input[name=billingCCNumber]').val(); +}
\ No newline at end of file |