Guest User

Untitled

a guest
Dec 11th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5.  
  6. /* @api */
  7. define([
  8. 'jquery',
  9. 'mageUtils'
  10. ], function ($, utils) {
  11. 'use strict';
  12.  
  13. var types = [
  14. {
  15. title: 'Elo',
  16. type: 'Rede-Elo',
  17. pattern: '^((((636368)|(438935)|(636369)|(504175)|(451416)|(636297)|(506699))\\d{0,10})|((5067)|(4576)|(4011))\\d{0,12})$',
  18. gaps: [4, 8, 12],
  19. lengths: [16],
  20. code: {
  21. name: 'CVC',
  22. size: 3
  23. }
  24. },
  25. {
  26. title: 'Visa',
  27. type: 'Rede-Visa',
  28. pattern: '^4\\d*$',
  29. gaps: [4, 8, 12],
  30. lengths: [16],
  31. code: {
  32. name: 'CVV',
  33. size: 3
  34. }
  35. },
  36. {
  37. title: 'MasterCard',
  38. type: 'Rede-Master',
  39. pattern: '^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$',
  40. gaps: [4, 8, 12],
  41. lengths: [16],
  42. code: {
  43. name: 'CVC',
  44. size: 3
  45. }
  46. },
  47. {
  48. title: 'Diners',
  49. type: 'Rede-Diners',
  50. pattern: '^(3(0[0-5]|095|6|[8-9]))\\d*$',
  51. gaps: [4, 10],
  52. lengths: [14, 16, 17, 18, 19],
  53. code: {
  54. name: 'CVV',
  55. size: 3
  56. }
  57. },
  58. {
  59. title: 'Hipercard',
  60. type: 'Rede-Hipercard',
  61. pattern: '^(606282\\d{10}(\\d{3})?)|(3841\\d{15})$',
  62. gaps: [4, 8, 12],
  63. lengths: [16],
  64. code: {
  65. name: 'CVC',
  66. size: 3
  67. }
  68. }
  69. ];
  70.  
  71. return {
  72. /**
  73. * @param {*} cardNumber
  74. * @return {Array}
  75. */
  76. getCardTypes: function (cardNumber) {
  77. var i, value,
  78. result = [];
  79.  
  80. if (utils.isEmpty(cardNumber)) {
  81. return result;
  82. }
  83.  
  84. if (cardNumber === '') {
  85. return $.extend(true, {}, types);
  86. }
  87.  
  88. for (i = 0; i < types.length; i++) {
  89. value = types[i];
  90.  
  91. if (new RegExp(value.pattern).test(cardNumber)) {
  92. result.push($.extend(true, {}, value));
  93. }
  94. }
  95.  
  96. this.selectedCardTypes(result);
  97. return result;
  98. },
  99.  
  100. selectedCardTypes : function (value) {
  101. var selectedTypes = document.querySelectorAll('.credit-card-types .item');
  102.  
  103. var dataResult = $(value).attr('type');
  104.  
  105. for (var i = 0; i < selectedTypes.length; i++) {
  106. var currentSelector = selectedTypes[i];
  107. var dataType = $(currentSelector).attr('data-type');
  108.  
  109. if (dataResult === dataType) {
  110. $(currentSelector).addClass('active');
  111. $(currentSelector).find('input[type="radio"]').prop('checked',true);
  112. $(currentSelector).removeClass('inactive');
  113. }else {
  114. $(currentSelector).find('input[type="radio"]').prop('checked',false);
  115. $(currentSelector).removeClass('active');
  116. $(currentSelector).addClass('inactive');
  117. }
  118.  
  119. }
  120. }
  121.  
  122. };
  123.  
  124. });
Add Comment
Please, Sign In to add comment