adyen-skinbuilder 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/.gitignore +3 -4
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +22 -0
  4. data/Gemfile.lock +51 -7
  5. data/LICENSE +3 -3
  6. data/README.markdown +83 -24
  7. data/Rakefile +6 -0
  8. data/adyen-skinbuilder.gemspec +12 -11
  9. data/bin/adyen-skinbuilder +28 -3
  10. data/lib/adyen-skinbuilder.rb +1 -4
  11. data/lib/adyen-skinbuilder/helper/adyen.rb +29 -0
  12. data/lib/adyen-skinbuilder/helper/render.rb +32 -0
  13. data/lib/adyen-skinbuilder/server.rb +112 -58
  14. data/lib/adyen-skinbuilder/server/views/_adyen_form.html.erb +37 -0
  15. data/{adyen/main_content.html → lib/adyen-skinbuilder/server/views/_adyen_payment_fields.html.erb} +534 -530
  16. data/lib/adyen-skinbuilder/server/views/css/reset.css +306 -0
  17. data/lib/adyen-skinbuilder/server/views/img/icons/error.png +0 -0
  18. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK1.png +0 -0
  19. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK10.png +0 -0
  20. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK2.png +0 -0
  21. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK3.png +0 -0
  22. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK4.png +0 -0
  23. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK5.png +0 -0
  24. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK6.png +0 -0
  25. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK7.png +0 -0
  26. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK8.png +0 -0
  27. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANK9.png +0 -0
  28. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANKCANCELLED.png +0 -0
  29. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANKPENDING.png +0 -0
  30. data/lib/adyen-skinbuilder/server/views/img/pm/TESTBANKREFUSED.png +0 -0
  31. data/lib/adyen-skinbuilder/server/views/img/pm/amex_small.png +0 -0
  32. data/lib/adyen-skinbuilder/server/views/img/pm/card.png +0 -0
  33. data/lib/adyen-skinbuilder/server/views/img/pm/ideal.png +0 -0
  34. data/lib/adyen-skinbuilder/server/views/img/pm/mc_small.png +0 -0
  35. data/lib/adyen-skinbuilder/server/views/img/pm/unknown_small.png +0 -0
  36. data/lib/adyen-skinbuilder/server/views/img/pm/vias_small.png +0 -0
  37. data/lib/adyen-skinbuilder/server/views/img/pm/visa.png +0 -0
  38. data/lib/adyen-skinbuilder/server/views/img/pm/visa_small.png +0 -0
  39. data/lib/adyen-skinbuilder/server/views/index.html.erb +118 -0
  40. data/lib/adyen-skinbuilder/server/views/js/default.js +385 -0
  41. data/lib/adyen-skinbuilder/server/views/layout.html.erb +33 -0
  42. data/lib/adyen-skinbuilder/server/views/skeleton.html +56 -0
  43. data/lib/adyen-skinbuilder/server/views/skin.html.erb +18 -0
  44. data/lib/adyen-skinbuilder/version.rb +1 -1
  45. data/lib/hash.rb +15 -0
  46. data/spec/fixtures/example.zip +0 -0
  47. data/spec/fixtures/skins/DV3tf95f/inc/order_data.txt +1 -0
  48. data/spec/fixtures/skins/JH0815/css/screen.css +262 -0
  49. data/spec/fixtures/skins/JH0815/skin.html.erb +13 -0
  50. data/spec/lib/adyen-skinbuilder/server_spec.rb +166 -38
  51. data/spec/spec_helper.rb +2 -2
  52. metadata +109 -31
  53. data/adyen/skeleton.html +0 -70
  54. data/lib/adyen-skinbuilder/launcher.rb +0 -40
  55. data/lib/adyen-skinbuilder/railtie.rb +0 -9
  56. data/lib/adyen-skinbuilder/tasks/skin.rake +0 -65
@@ -0,0 +1,37 @@
1
+ <!-- ### -->
2
+
3
+ <form id="pageform" action="" method="post" onsubmit="return formValidate(this);">
4
+ <script type="text/javascript">
5
+ //<![CDATA[
6
+ if (notNull(document.getElementById('pageform'))) {
7
+ document.getElementById('pageform').setAttribute("autocomplete","off");
8
+ }
9
+ //]]>
10
+ </script>
11
+ <div id="content">
12
+ <div id="pmcontent">
13
+
14
+ <!-- ### inc/pmheader -->
15
+
16
+ <%= adyen_payment_fields(&block) %>
17
+
18
+ <!-- ### -->
19
+
20
+ </div>
21
+ </div>
22
+ <div id="foot">
23
+ <div id="footc">
24
+ <div id="nextstep">
25
+ <div id="nextstepc">Next Step Text</div>
26
+ </div>
27
+ <div id="footerb1div">
28
+ <input onclick="" type="submit" id="mainSubmit" value="continue" class="footerB nextB" />
29
+ </div>
30
+ <div id="footerb2div">
31
+ <input onclick="" type="button" id="mainBack" value="previous" class="footerB backB" />
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </form>
36
+
37
+ <!-- ### inc/cfooter -->
@@ -1,3 +1,5 @@
1
+ <!-- ### -->
2
+
1
3
  <script type="text/javascript">
2
4
  //<![CDATA[
3
5
  /* Form validation */
@@ -7,73 +9,73 @@
7
9
  var errorAreas = new Array();
8
10
  var validationFunctions = new Array();
9
11
  var details = new Array();
10
-
12
+
11
13
  errorMessages["default"] = new Array();
12
14
  requiredFields["default"] = new Array();
13
15
 
14
16
  var maySubmitOnlyOnce=true;
15
-
17
+
16
18
  requiredFields["default"].push("brandCode");
17
19
  errorMessages["default"]["brandCode"] = "Please enter your payment details";
18
20
  errorMessages["default"]["submitonce"] = "Your request is being processed, please wait....";
19
-
21
+
20
22
  var locked = false;
21
23
  var _valFunc = new function() {};
22
-
24
+
23
25
  var displayAmountExtras = new Object();
24
-
26
+
25
27
  function show(detail, actionURL, group, brandCode) {
26
-
27
- if(config["pmmanimation"] != 1) {
28
- if(locked) { return false; }
29
- locked = true;
30
- setTimeout('locked=false',1000);
31
- }
32
-
33
- document.forms["pageform"].action=actionURL;
34
- document.forms["pageform"].onsubmit=null;
35
-
36
- if(document.forms["pageform"].addEventListener) {
37
- document.forms["pageform"].removeEventListener('submit',_valFunc ,false);
38
- document.forms["pageform"].addEventListener('submit',_valFunc = function(e) {
39
- result = formValidate(document.forms["pageform"] ,group);
40
- if(result == false) {
41
- e=e||event;
42
- e.preventDefault? e.preventDefault() : e.returnValue = false;
43
- }
44
- },false);
45
- } else {
46
- document.forms["pageform"].detachEvent('onsubmit',_valFunc);
47
- document.forms["pageform"].attachEvent('onsubmit',_valFunc = function(e) {
48
- result = formValidate(document.forms["pageform"] ,group);
49
- if(result == false) {
50
- e=e||event;
51
- e.preventDefault? e.preventDefault() : e.returnValue = false;
52
- }
53
- });
54
- }
55
-
56
- document.forms["pageform"]["brandCode"].value=brandCode;
57
- document.getElementById('extraCostAmount').innerHTML = displayAmountExtras[group];
58
-
59
- if(detail != "") {
60
- detail.slideit();
61
- for (i = 0; i < details.length; i++) {
62
- if (details[i].divId != detail.divId) {
63
- details[i].slideup();
64
- }
65
- }
66
- }
67
- return false;
28
+
29
+ if(config["pmmanimation"] != 1) {
30
+ if(locked) { return false; }
31
+ locked = true;
32
+ setTimeout('locked=false',1000);
33
+ }
34
+
35
+ document.forms["pageform"].action=actionURL;
36
+ document.forms["pageform"].onsubmit=null;
37
+
38
+ if(document.forms["pageform"].addEventListener) {
39
+ document.forms["pageform"].removeEventListener('submit',_valFunc ,false);
40
+ document.forms["pageform"].addEventListener('submit',_valFunc = function(e) {
41
+ result = formValidate(document.forms["pageform"] ,group);
42
+ if(result == false) {
43
+ e=e||event;
44
+ e.preventDefault? e.preventDefault() : e.returnValue = false;
45
+ }
46
+ },false);
47
+ } else {
48
+ document.forms["pageform"].detachEvent('onsubmit',_valFunc);
49
+ document.forms["pageform"].attachEvent('onsubmit',_valFunc = function(e) {
50
+ result = formValidate(document.forms["pageform"] ,group);
51
+ if(result == false) {
52
+ e=e||event;
53
+ e.preventDefault? e.preventDefault() : e.returnValue = false;
54
+ }
55
+ });
56
+ }
57
+
58
+ document.forms["pageform"]["brandCode"].value=brandCode;
59
+ document.getElementById('extraCostAmount').innerHTML = displayAmountExtras[group];
60
+
61
+ if(detail != "") {
62
+ detail.slideit();
63
+ for (i = 0; i < details.length; i++) {
64
+ if (details[i].divId != detail.divId) {
65
+ details[i].slideup();
66
+ }
67
+ }
68
+ }
69
+ return false;
68
70
  }
69
-
70
-
71
-
72
-
73
- addOnLoad(preventEnterSubmit);
74
-
75
-
76
-
71
+
72
+
73
+
74
+
75
+ addOnLoad(preventEnterSubmit);
76
+
77
+
78
+
77
79
  //]]>
78
80
  </script>
79
81
  <script type="text/javascript" src="https://test.adyen.com/hpp/js/animatedcollapse.js"></script>
@@ -85,7 +87,7 @@
85
87
  <div id="orderDataWrapper">
86
88
  <div id="orderDataHeader">Order Details</div>
87
89
  <div id="orderData">
88
- <!-- Adyen Order Data -->
90
+ <%= render_file "order_data" %>
89
91
  </div>
90
92
  </div>
91
93
  <div id="displayAmount">
@@ -94,10 +96,10 @@
94
96
 
95
97
  <ul id="paymentMethods">
96
98
  <li style="list-style-type: none;">
97
- <input type="submit" name="brandName" value="VISA" class="imgB pmB pmBvisa" onclick="return show(collapsevisa, 'completeCard.shtml', 'card', 'visa');" />
98
- <span id="pmmextracosts-visa" class="pmmextracosts"></span><span id="pmvisadescription" class="pmmdescription"></span>
99
- <div id="pmmdetails-visa" class="pmmdetails">
100
- <script type="text/javascript">
99
+ <input type="submit" name="brandName" value="VISA" class="imgB pmB pmBvisa" onclick="return show(collapsevisa, 'completeCard.shtml', 'card', 'visa');" />
100
+ <span id="pmmextracosts-visa" class="pmmextracosts"></span><span id="pmvisadescription" class="pmmdescription"></span>
101
+ <div id="pmmdetails-visa" class="pmmdetails">
102
+ <script type="text/javascript">
101
103
  //<![CDATA[
102
104
  /* Form validation */
103
105
  requiredFields["card"] = new Array();
@@ -112,321 +114,321 @@
112
114
  errorMessages["card"]["expiryYear"] = "Expiry Year missing";
113
115
  errorMessages["card"]["cvcCode"] = "CVC/CVV/CID missing";
114
116
  errorMessages["card"]["generic"] = "Please enter your card details";
115
-
116
-
117
- var cvcinfo = new Array();
118
- cvcinfo["mc"] = "<h3>What is CVC?</h3>" +
119
- "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVC_mini.jpg\" alt=\"CVC location\" />" +
120
- "The Card Validation Code (CVC) is an <i>additional</i> " +
121
- "three-digit security code that is printed (not embossed) on the back " +
122
- "of your card.</p>" +
123
- "<p>The CVC is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
124
- cvcinfo["visa"] = "<h3>What is CVV?</h3>" +
125
- "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVV_mini.jpg\" alt=\"CVV location\" />" +
126
- "The Card Verification Value (CVV) is an <i>additional</i> " +
127
- "three-digit security code that is printed (not embossed) on the back " +
128
- "of your card.</p>" +
129
- "<p>The CVV is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
130
- cvcinfo["amex"] = "<h3>What is CID?</h3>" +
131
- "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CID_mini.jpg\" alt=\"CID location\" />" +
132
- "The Card IDentification (CID) is an <i>additional</i> " +
133
- "four-digit security code that is printed (not embossed) on the front " +
134
- "of your card.</p>" +
135
- "<p>The CID is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
136
- cvcinfo["card"] = "<h3>What is CVC/CVV/CID?</h3>" +
137
- "<p>The Card Security Code (CVC/CVV/CID) is an <i>additional</i> " +
138
- "three or four digit security code that is printed (not embossed) on the front or the back " +
139
- "of your card.</p>" +
140
- "<p>The CVC/CVV/CID is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
141
-
142
- var card_types = new Array();
143
- var card_logos = new Array();
144
- var card_displayAmountExtras = new Array();
145
- var card_extras = new Array();
146
- var previousCardNumber ="";
147
- var card_subVariantExtras = new Object();
148
- var card_subVariantExtrasPhrase = new Object();
149
- var originalExtraCostPhrase = document.getElementById('pmmextracosts-visa').innerHTML;
150
-
151
- card_types.push("visa");
152
- card_logos.push("/img/pm/visa");
153
- card_displayAmountExtras.push("");
154
- card_extras.push("");
155
-
156
- card_subVariantExtras['visacorporate'] = "";
157
- card_subVariantExtrasPhrase['visacorporate'] = "";
158
- card_subVariantExtras['travelmoney'] = "";
159
- card_subVariantExtrasPhrase['travelmoney'] = "";
160
- card_subVariantExtras['visabusiness'] = "";
161
- card_subVariantExtrasPhrase['visabusiness'] = "";
162
- card_subVariantExtras['visacredit'] = "";
163
- card_subVariantExtrasPhrase['visacredit'] = "";
164
- card_subVariantExtras['visahipotecario'] = "";
165
- card_subVariantExtrasPhrase['visahipotecario'] = "";
166
- card_subVariantExtras['visapurchasing'] = "";
167
- card_subVariantExtrasPhrase['visapurchasing'] = "";
168
- card_subVariantExtras['visaclassic'] = "";
169
- card_subVariantExtrasPhrase['visaclassic'] = "";
170
- card_subVariantExtras['visaplatinum'] = "";
171
- card_subVariantExtrasPhrase['visaplatinum'] = "";
172
- card_subVariantExtras['visasignature'] = "";
173
- card_subVariantExtrasPhrase['visasignature'] = "";
174
- card_subVariantExtras['electron'] = "";
175
- card_subVariantExtrasPhrase['electron'] = "";
176
- card_subVariantExtras['visacommercialcredit'] = "";
177
- card_subVariantExtrasPhrase['visacommercialcredit'] = "";
178
- card_subVariantExtras['visagold'] = "";
179
- card_subVariantExtrasPhrase['visagold'] = "";
180
- card_subVariantExtras['visa'] = "";
181
- card_subVariantExtrasPhrase['visa'] = "";
182
- card_subVariantExtras['visadebit'] = "";
183
- card_subVariantExtrasPhrase['visadebit'] = "";
184
-
185
-
186
- var baseURL = "/hpp/";
187
- if(baseURL.indexOf(";jsession") != -1) {
188
- baseURL = baseURL.substr(0,baseURL.indexOf(";jsession"));
189
- }
190
-
191
- function validateCcNumber(e, dontHideErrorFrame) {
192
- cardNumber = (document.getElementById('cardNumber').value);
193
-
194
- if(cardNumber.length <= previousCardNumber.length) {
195
- previousCardNumber = cardNumber;
196
- if (cardNumber.length == 0) {
197
- resetExtraCost();
198
- }
199
- return;
200
- }
201
- var l=0;
202
- while(l < previousCardNumber.length) {
203
- if(cardNumber[l] != previousCardNumber[l]) {
204
- previousCardNumber = cardNumber;
205
- return;
206
- }
207
- l++;
208
- }
209
-
210
- reg = /\s+/g;
211
- cardNumber = cardNumber.replace(reg,'');
212
-
213
- nrOfDigits = cardNumber.length;
214
-
215
- if(nrOfDigits > 19){
216
- ccNumberPresentation(false);
217
- return;
218
- }
219
-
220
- ccNumberPresentation(true,dontHideErrorFrame);
221
-
222
- baseCard = getBaseCard(cardNumber,card_types);
223
- if(baseCard != null) {
224
- setCardBrand(baseCard, true);
225
- } else if(nrOfDigits > 4) {
226
- setCardBrand(null, true);
227
- ccNumberPresentation(false);
228
- } else {
229
- setCardBrand(null, false);
230
- }
231
-
232
- if (cardNumber.length < 6) {
233
- setExtraCost(baseCard, null);
234
- } else if (cardNumber.length == 6 || cardNumber.length == 9 || cardNumber.length == 12){
235
- _.X("/hpp/binLookup.shtml",function(d,r){
236
- if(r.status != 200 || d.indexOf('"result"') == -1) return false;
237
- var response=eval("("+d+")");
238
-
239
- if(typeof(response.result)=='undefined') return false;
240
-
241
- if (response.result == 0) {
242
- lookedUpCardType = response.cardType;
243
- } else {
244
- lookedUpCardType = null;
245
- }
246
- setExtraCost(baseCard, lookedUpCardType);
247
-
248
- return true;
249
- }, 'bin='+cardNumber+'&'+_.Q(_.G("pageform")));
250
- }
251
-
252
- //show value with white space after four numbers
253
- result = cardNumber.replace(/(\d{4})/g, '$1 ');
254
- result = result.replace(/\s+$/, ''); //remove trailing spaces
255
-
256
- previousCardNumber = result;
257
- document.getElementById('cardNumber').value = result;
258
- }
259
-
260
- function setExtraCost(selectedCard, lookedUpCard) {
261
- var extraCostDisplayed = false;
262
- if (lookedUpCard != null && card_subVariantExtras[lookedUpCard] != null) {
263
- document.getElementById('extraCostAmount').innerHTML = card_subVariantExtras[lookedUpCard];
264
- displayAmountExtras['card'] = card_subVariantExtras[lookedUpCard];
265
- document.getElementById('pmmextracosts-visa').innerHTML = card_subVariantExtrasPhrase[lookedUpCard];
266
- extraCostDisplayed = true;
267
- } else {
268
- for(var i = 0; i < card_types.length; ++i) {
269
- if(selectedCard != null && card_types[i] == selectedCard.cardtype && card_subVariantExtras[selectedCard.cardtype] != null) {
270
- document.getElementById('extraCostAmount').innerHTML = card_subVariantExtras[selectedCard.cardtype];
271
- displayAmountExtras['card'] = card_subVariantExtras[selectedCard.cardtype];
272
- document.getElementById('pmmextracosts-visa').innerHTML = card_subVariantExtrasPhrase[selectedCard.cardtype];
273
- extraCostDisplayed = true;
274
- }
275
- }
276
- }
277
-
278
- if (!extraCostDisplayed) {
279
- resetExtraCost();
280
- }
281
- }
282
-
283
- function resetExtraCost() {
284
- displayAmountExtras['card'] = "";
285
- document.getElementById('extraCostAmount').innerHTML = "";
286
- document.getElementById('pmmextracosts-visa').innerHTML = originalExtraCostPhrase;
287
- }
288
-
289
- function setCardBrand(selectedCard, greyInactive) {
290
-
291
- for(var i = 0; i < card_types.length; ++i) {
292
- var imageId = "cclogo" + i;
293
- if(selectedCard != null && card_types[i] == selectedCard.cardtype) {
294
- document.getElementById(imageId).src=baseURL + card_logos[i] + "_small.png";
295
- } else {
296
- if(greyInactive) {
297
- document.getElementById(imageId).src=baseURL + card_logos[i] + "_small_grey.png";
298
- } else {
299
- document.getElementById(imageId).src=baseURL + card_logos[i] + "_small.png";
300
- }
301
- }
302
- document.getElementById(imageId).style.display="inline";
303
- }
304
- if(selectedCard != null) {
305
- if(selectedCard.cardtype == "amex") {
306
- document.getElementById("cvcCode").maxLength = 4;
307
- document.getElementById('cvcName').innerHTML = "CID";
308
- document.getElementById('cvcWhatIs').innerHTML = "What is CID?";
309
- document.getElementById('cvcFrame').innerHTML = cvcinfo["amex"];
310
- showDebitCardFields("none");
311
- } else if (selectedCard.cardtype == "visa" || selectedCard.cardtype == "electron") {
312
- document.getElementById("cvcCode").maxLength = 3;
313
- document.getElementById('cvcName').innerHTML = "CVV";
314
- document.getElementById('cvcWhatIs').innerHTML = "What is CVV?";
315
- document.getElementById('cvcFrame').innerHTML = cvcinfo["visa"];
316
- showDebitCardFields("none");
317
- } else if (selectedCard.cardtype == "mc" || selectedCard.cardtype == "maestro" || selectedCard.cardtype == "maestrouk" || selectedCard.cardtype == "solo" ) {
318
- document.getElementById("cvcCode").maxLength = 3;
319
- document.getElementById('cvcName').innerHTML = "CVC";
320
- document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
321
- document.getElementById('cvcFrame').innerHTML = cvcinfo["mc"];
322
- if(selectedCard.cardtype == "maestrouk" || selectedCard.cardtype == "solo") {
323
- showDebitCardFields(cssTr);
324
- } else {
325
- showDebitCardFields("none");
326
- }
327
- } else {
328
- document.getElementById("cvcCode").maxLength = 3;
329
- document.getElementById('cvcName').innerHTML = "CVC";
330
- document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
331
- document.getElementById('cvcFrame').innerHTML = cvcinfo["card"];
332
- showDebitCardFields("none");
333
- }
334
- }
335
- }
336
-
337
- function showDebitCardFields(show) {
338
- document.getElementById('cardIssueNumber').style.display = show;
339
- document.getElementById('cardStartDate').style.display = show;
340
- document.getElementById('pmmdetails-visa').style.height = document.getElementById('pmmdetails-visa').scrollHeight + "px";
341
- collapsevisa._getheight(true);
342
- }
343
-
344
- function ccNumberPresentation(valid, dontHideErrorFrame){
345
- var errors = new Array();
346
- errors.push("cardNumber");
347
- if(valid){
348
- clearErrors(errors, dontHideErrorFrame);
349
- }
350
- else{
351
- markErrorFields(errors);
352
- }
353
- }
354
-
355
- function blockNonNumbers(e) {
356
- var key;
357
- var isCtrl = false;
358
- var keychar;
359
- var reg;
360
-
361
- if(window.event) {
362
- key = e.keyCode;
363
- isCtrl = window.event.ctrlKey
364
- }
365
- else if(e.which) {
366
- key = e.which;
367
- isCtrl = e.ctrlKey;
368
- }
369
-
370
- if (isNaN(key)) return true;
371
-
372
- keychar = String.fromCharCode(key);
373
-
374
- // check for backspace or delete, or if Ctrl was pressed
375
- if (key == 8 || isCtrl) {
376
- return true;
377
- }
378
-
379
- reg = /[\d ]/;
380
-
381
- return reg.test(keychar);
382
- }
383
-
384
- validationFunctions
385
- function doCCCheck(){
386
- cardNumber = (document.getElementById('cardNumber').value);
387
- reg = /\s+/g;
388
- cardNumber = cardNumber.replace(reg,'');
389
- if(!luhnCheck(cardNumber))
390
- ccNumberPresentation(false);
391
- else
392
- ccNumberPresentation(true);
393
- }
394
-
395
- validationFunctions["card"] = new Array();
396
- validationFunctions["card"]["cardNumber"] = function (cardNumberField) {
397
- cardNumber = cardNumberField.value;
398
- reg = /\s+/g;
399
- cardNumber = cardNumber.replace(reg,'');
400
- if(cardNumber == "" || luhnCheck(cardNumber)){
401
- return true;
402
- }
403
- return false;
404
- }
405
-
406
-
407
-
117
+
118
+
119
+ var cvcinfo = new Array();
120
+ cvcinfo["mc"] = "<h3>What is CVC?</h3>" +
121
+ "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVC_mini.jpg\" alt=\"CVC location\" />" +
122
+ "The Card Validation Code (CVC) is an <i>additional</i> " +
123
+ "three-digit security code that is printed (not embossed) on the back " +
124
+ "of your card.</p>" +
125
+ "<p>The CVC is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
126
+ cvcinfo["visa"] = "<h3>What is CVV?</h3>" +
127
+ "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVV_mini.jpg\" alt=\"CVV location\" />" +
128
+ "The Card Verification Value (CVV) is an <i>additional</i> " +
129
+ "three-digit security code that is printed (not embossed) on the back " +
130
+ "of your card.</p>" +
131
+ "<p>The CVV is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
132
+ cvcinfo["amex"] = "<h3>What is CID?</h3>" +
133
+ "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CID_mini.jpg\" alt=\"CID location\" />" +
134
+ "The Card IDentification (CID) is an <i>additional</i> " +
135
+ "four-digit security code that is printed (not embossed) on the front " +
136
+ "of your card.</p>" +
137
+ "<p>The CID is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
138
+ cvcinfo["card"] = "<h3>What is CVC/CVV/CID?</h3>" +
139
+ "<p>The Card Security Code (CVC/CVV/CID) is an <i>additional</i> " +
140
+ "three or four digit security code that is printed (not embossed) on the front or the back " +
141
+ "of your card.</p>" +
142
+ "<p>The CVC/CVV/CID is an extra security measure to ensure that you are in possession of the card.</p><br style=\"clear: both\" />";
143
+
144
+ var card_types = new Array();
145
+ var card_logos = new Array();
146
+ var card_displayAmountExtras = new Array();
147
+ var card_extras = new Array();
148
+ var previousCardNumber ="";
149
+ var card_subVariantExtras = new Object();
150
+ var card_subVariantExtrasPhrase = new Object();
151
+ var originalExtraCostPhrase = document.getElementById('pmmextracosts-visa').innerHTML;
152
+
153
+ card_types.push("visa");
154
+ card_logos.push("/img/pm/visa");
155
+ card_displayAmountExtras.push("");
156
+ card_extras.push("");
157
+
158
+ card_subVariantExtras['visacorporate'] = "";
159
+ card_subVariantExtrasPhrase['visacorporate'] = "";
160
+ card_subVariantExtras['travelmoney'] = "";
161
+ card_subVariantExtrasPhrase['travelmoney'] = "";
162
+ card_subVariantExtras['visabusiness'] = "";
163
+ card_subVariantExtrasPhrase['visabusiness'] = "";
164
+ card_subVariantExtras['visacredit'] = "";
165
+ card_subVariantExtrasPhrase['visacredit'] = "";
166
+ card_subVariantExtras['visahipotecario'] = "";
167
+ card_subVariantExtrasPhrase['visahipotecario'] = "";
168
+ card_subVariantExtras['visapurchasing'] = "";
169
+ card_subVariantExtrasPhrase['visapurchasing'] = "";
170
+ card_subVariantExtras['visaclassic'] = "";
171
+ card_subVariantExtrasPhrase['visaclassic'] = "";
172
+ card_subVariantExtras['visaplatinum'] = "";
173
+ card_subVariantExtrasPhrase['visaplatinum'] = "";
174
+ card_subVariantExtras['visasignature'] = "";
175
+ card_subVariantExtrasPhrase['visasignature'] = "";
176
+ card_subVariantExtras['electron'] = "";
177
+ card_subVariantExtrasPhrase['electron'] = "";
178
+ card_subVariantExtras['visacommercialcredit'] = "";
179
+ card_subVariantExtrasPhrase['visacommercialcredit'] = "";
180
+ card_subVariantExtras['visagold'] = "";
181
+ card_subVariantExtrasPhrase['visagold'] = "";
182
+ card_subVariantExtras['visa'] = "";
183
+ card_subVariantExtrasPhrase['visa'] = "";
184
+ card_subVariantExtras['visadebit'] = "";
185
+ card_subVariantExtrasPhrase['visadebit'] = "";
186
+
187
+
188
+ var baseURL = "/hpp/";
189
+ if(baseURL.indexOf(";jsession") != -1) {
190
+ baseURL = baseURL.substr(0,baseURL.indexOf(";jsession"));
191
+ }
192
+
193
+ function validateCcNumber(e, dontHideErrorFrame) {
194
+ cardNumber = (document.getElementById('cardNumber').value);
195
+
196
+ if(cardNumber.length <= previousCardNumber.length) {
197
+ previousCardNumber = cardNumber;
198
+ if (cardNumber.length == 0) {
199
+ resetExtraCost();
200
+ }
201
+ return;
202
+ }
203
+ var l=0;
204
+ while(l < previousCardNumber.length) {
205
+ if(cardNumber[l] != previousCardNumber[l]) {
206
+ previousCardNumber = cardNumber;
207
+ return;
208
+ }
209
+ l++;
210
+ }
211
+
212
+ reg = /\s+/g;
213
+ cardNumber = cardNumber.replace(reg,'');
214
+
215
+ nrOfDigits = cardNumber.length;
216
+
217
+ if(nrOfDigits > 19){
218
+ ccNumberPresentation(false);
219
+ return;
220
+ }
221
+
222
+ ccNumberPresentation(true,dontHideErrorFrame);
223
+
224
+ baseCard = getBaseCard(cardNumber,card_types);
225
+ if(baseCard != null) {
226
+ setCardBrand(baseCard, true);
227
+ } else if(nrOfDigits > 4) {
228
+ setCardBrand(null, true);
229
+ ccNumberPresentation(false);
230
+ } else {
231
+ setCardBrand(null, false);
232
+ }
233
+
234
+ if (cardNumber.length < 6) {
235
+ setExtraCost(baseCard, null);
236
+ } else if (cardNumber.length == 6 || cardNumber.length == 9 || cardNumber.length == 12){
237
+ _.X("/hpp/binLookup.shtml",function(d,r){
238
+ if(r.status != 200 || d.indexOf('"result"') == -1) return false;
239
+ var response=eval("("+d+")");
240
+
241
+ if(typeof(response.result)=='undefined') return false;
242
+
243
+ if (response.result == 0) {
244
+ lookedUpCardType = response.cardType;
245
+ } else {
246
+ lookedUpCardType = null;
247
+ }
248
+ setExtraCost(baseCard, lookedUpCardType);
249
+
250
+ return true;
251
+ }, 'bin='+cardNumber+'&'+_.Q(_.G("pageform")));
252
+ }
253
+
254
+ //show value with white space after four numbers
255
+ result = cardNumber.replace(/(\d{4})/g, '$1 ');
256
+ result = result.replace(/\s+$/, ''); //remove trailing spaces
257
+
258
+ previousCardNumber = result;
259
+ document.getElementById('cardNumber').value = result;
260
+ }
261
+
262
+ function setExtraCost(selectedCard, lookedUpCard) {
263
+ var extraCostDisplayed = false;
264
+ if (lookedUpCard != null && card_subVariantExtras[lookedUpCard] != null) {
265
+ document.getElementById('extraCostAmount').innerHTML = card_subVariantExtras[lookedUpCard];
266
+ displayAmountExtras['card'] = card_subVariantExtras[lookedUpCard];
267
+ document.getElementById('pmmextracosts-visa').innerHTML = card_subVariantExtrasPhrase[lookedUpCard];
268
+ extraCostDisplayed = true;
269
+ } else {
270
+ for(var i = 0; i < card_types.length; ++i) {
271
+ if(selectedCard != null && card_types[i] == selectedCard.cardtype && card_subVariantExtras[selectedCard.cardtype] != null) {
272
+ document.getElementById('extraCostAmount').innerHTML = card_subVariantExtras[selectedCard.cardtype];
273
+ displayAmountExtras['card'] = card_subVariantExtras[selectedCard.cardtype];
274
+ document.getElementById('pmmextracosts-visa').innerHTML = card_subVariantExtrasPhrase[selectedCard.cardtype];
275
+ extraCostDisplayed = true;
276
+ }
277
+ }
278
+ }
279
+
280
+ if (!extraCostDisplayed) {
281
+ resetExtraCost();
282
+ }
283
+ }
284
+
285
+ function resetExtraCost() {
286
+ displayAmountExtras['card'] = "";
287
+ document.getElementById('extraCostAmount').innerHTML = "";
288
+ document.getElementById('pmmextracosts-visa').innerHTML = originalExtraCostPhrase;
289
+ }
290
+
291
+ function setCardBrand(selectedCard, greyInactive) {
292
+
293
+ for(var i = 0; i < card_types.length; ++i) {
294
+ var imageId = "cclogo" + i;
295
+ if(selectedCard != null && card_types[i] == selectedCard.cardtype) {
296
+ document.getElementById(imageId).src=baseURL + card_logos[i] + "_small.png";
297
+ } else {
298
+ if(greyInactive) {
299
+ document.getElementById(imageId).src=baseURL + card_logos[i] + "_small_grey.png";
300
+ } else {
301
+ document.getElementById(imageId).src=baseURL + card_logos[i] + "_small.png";
302
+ }
303
+ }
304
+ document.getElementById(imageId).style.display="inline";
305
+ }
306
+ if(selectedCard != null) {
307
+ if(selectedCard.cardtype == "amex") {
308
+ document.getElementById("cvcCode").maxLength = 4;
309
+ document.getElementById('cvcName').innerHTML = "CID";
310
+ document.getElementById('cvcWhatIs').innerHTML = "What is CID?";
311
+ document.getElementById('cvcFrame').innerHTML = cvcinfo["amex"];
312
+ showDebitCardFields("none");
313
+ } else if (selectedCard.cardtype == "visa" || selectedCard.cardtype == "electron") {
314
+ document.getElementById("cvcCode").maxLength = 3;
315
+ document.getElementById('cvcName').innerHTML = "CVV";
316
+ document.getElementById('cvcWhatIs').innerHTML = "What is CVV?";
317
+ document.getElementById('cvcFrame').innerHTML = cvcinfo["visa"];
318
+ showDebitCardFields("none");
319
+ } else if (selectedCard.cardtype == "mc" || selectedCard.cardtype == "maestro" || selectedCard.cardtype == "maestrouk" || selectedCard.cardtype == "solo" ) {
320
+ document.getElementById("cvcCode").maxLength = 3;
321
+ document.getElementById('cvcName').innerHTML = "CVC";
322
+ document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
323
+ document.getElementById('cvcFrame').innerHTML = cvcinfo["mc"];
324
+ if(selectedCard.cardtype == "maestrouk" || selectedCard.cardtype == "solo") {
325
+ showDebitCardFields(cssTr);
326
+ } else {
327
+ showDebitCardFields("none");
328
+ }
329
+ } else {
330
+ document.getElementById("cvcCode").maxLength = 3;
331
+ document.getElementById('cvcName').innerHTML = "CVC";
332
+ document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
333
+ document.getElementById('cvcFrame').innerHTML = cvcinfo["card"];
334
+ showDebitCardFields("none");
335
+ }
336
+ }
337
+ }
338
+
339
+ function showDebitCardFields(show) {
340
+ document.getElementById('cardIssueNumber').style.display = show;
341
+ document.getElementById('cardStartDate').style.display = show;
342
+ document.getElementById('pmmdetails-visa').style.height = document.getElementById('pmmdetails-visa').scrollHeight + "px";
343
+ collapsevisa._getheight(true);
344
+ }
345
+
346
+ function ccNumberPresentation(valid, dontHideErrorFrame){
347
+ var errors = new Array();
348
+ errors.push("cardNumber");
349
+ if(valid){
350
+ clearErrors(errors, dontHideErrorFrame);
351
+ }
352
+ else{
353
+ markErrorFields(errors);
354
+ }
355
+ }
356
+
357
+ function blockNonNumbers(e) {
358
+ var key;
359
+ var isCtrl = false;
360
+ var keychar;
361
+ var reg;
362
+
363
+ if(window.event) {
364
+ key = e.keyCode;
365
+ isCtrl = window.event.ctrlKey
366
+ }
367
+ else if(e.which) {
368
+ key = e.which;
369
+ isCtrl = e.ctrlKey;
370
+ }
371
+
372
+ if (isNaN(key)) return true;
373
+
374
+ keychar = String.fromCharCode(key);
375
+
376
+ // check for backspace or delete, or if Ctrl was pressed
377
+ if (key == 8 || isCtrl) {
378
+ return true;
379
+ }
380
+
381
+ reg = /[\d ]/;
382
+
383
+ return reg.test(keychar);
384
+ }
385
+
386
+ validationFunctions
387
+ function doCCCheck(){
388
+ cardNumber = (document.getElementById('cardNumber').value);
389
+ reg = /\s+/g;
390
+ cardNumber = cardNumber.replace(reg,'');
391
+ if(!luhnCheck(cardNumber))
392
+ ccNumberPresentation(false);
393
+ else
394
+ ccNumberPresentation(true);
395
+ }
396
+
397
+ validationFunctions["card"] = new Array();
398
+ validationFunctions["card"]["cardNumber"] = function (cardNumberField) {
399
+ cardNumber = cardNumberField.value;
400
+ reg = /\s+/g;
401
+ cardNumber = cardNumber.replace(reg,'');
402
+ if(cardNumber == "" || luhnCheck(cardNumber)){
403
+ return true;
404
+ }
405
+ return false;
406
+ }
407
+
408
+
409
+
408
410
  //]]>
409
411
  </script>
410
412
 
411
413
  <table class="basetable">
412
414
  <tr>
413
- <td class="mid"><div id="cclogoheader" style="display: none">Card Type</div></td>
414
- <td class="mid">
415
- <div style="height: 25px" id="cclogo">
416
- <img alt="" id="cclogo0" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
417
- <img alt="" id="cclogo1" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
418
- <img alt="" id="cclogo2" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
419
- <img alt="" id="cclogo3" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
420
- <img alt="" id="cclogo4" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
421
- <img alt="" id="cclogo5" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
422
- <img alt="" id="cclogo6" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
423
- <img alt="" id="cclogo7" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
424
- <img alt="" id="cclogo8" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
425
- <script type="text/javascript">
426
- setCardBrand(null, false);
427
- </script>
428
- </div>
429
- </td>
415
+ <td class="mid"><div id="cclogoheader" style="display: none">Card Type</div></td>
416
+ <td class="mid">
417
+ <div style="height: 25px" id="cclogo">
418
+ <img alt="" id="cclogo0" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
419
+ <img alt="" id="cclogo1" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
420
+ <img alt="" id="cclogo2" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
421
+ <img alt="" id="cclogo3" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
422
+ <img alt="" id="cclogo4" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
423
+ <img alt="" id="cclogo5" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
424
+ <img alt="" id="cclogo6" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
425
+ <img alt="" id="cclogo7" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
426
+ <img alt="" id="cclogo8" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
427
+ <script type="text/javascript">
428
+ setCardBrand(null, false);
429
+ </script>
430
+ </div>
431
+ </td>
430
432
  </tr>
431
433
  <tr id="cardNumberTr">
432
434
  <td><div>Card number</div></td>
@@ -458,14 +460,14 @@
458
460
  <option value="11">11</option>
459
461
  <option value="12">12</option>
460
462
  </select>
461
- &nbsp;/&nbsp;
463
+ &nbsp;/&nbsp;
462
464
  <select class="inputField" name="startYear" id="startYear" size="1">
463
465
  <option value="*"></option>
464
- <option value="2011">2011</option>
465
- <option value="2010">2010</option>
466
- <option value="2009">2009</option>
467
- <option value="2008">2008</option>
468
- <option value="2007">2007</option>
466
+ <option value="2011">2011</option>
467
+ <option value="2010">2010</option>
468
+ <option value="2009">2009</option>
469
+ <option value="2008">2008</option>
470
+ <option value="2007">2007</option>
469
471
  <option value="2006">2006</option>
470
472
  <option value="2005">2005</option>
471
473
  <option value="2004">2004</option>
@@ -493,7 +495,7 @@
493
495
  <option value="11">11</option>
494
496
  <option value="12">12</option>
495
497
  </select>
496
- &nbsp;/&nbsp;
498
+ &nbsp;/&nbsp;
497
499
  <select class="inputField" name="expiryYear" id="expiryYear" size="1">
498
500
  <option value="*"></option>
499
501
  <option value="2011">2011</option>
@@ -508,12 +510,12 @@
508
510
  <option value="2020">2020</option>
509
511
  <option value="2021">2021</option>
510
512
  <option value="2022">2022</option>
511
- <option value="2023">2023</option>
512
- <option value="2024">2024</option>
513
- <option value="2025">2025</option>
513
+ <option value="2023">2023</option>
514
+ <option value="2024">2024</option>
515
+ <option value="2025">2025</option>
514
516
  <option value="2026">2026</option>
515
517
  <option value="2027">2027</option>
516
- </select>
518
+ </select>
517
519
  </div>
518
520
  </td>
519
521
  </tr>
@@ -522,51 +524,51 @@
522
524
  <td><div class="fieldDiv"><input class="inputField" type="text" name="cvcCode" value="" id="cvcCode" size="7" maxlength="3" /> &nbsp; <a href="#" onclick="return toggleElement('cvcFrame');"><span id="cvcWhatIs">What is CVC/CVV/CID?</span></a></div></td>
523
525
  </tr>
524
526
  <tr>
525
- <td colspan="2"><div class="r">
527
+ <td colspan="2"><div class="r">
526
528
  <input class="paySubmit paySubmitvisa" type="submit" name="pay" value="Confirm payment" />
527
529
  </div></td>
528
530
  </tr>
529
531
  </table>
530
532
 
531
533
  <div class="popupMsg popupMsgOPP " style="display: none;" onclick="return hideElement('cvcFrame');" id="cvcFrame">
532
- <h3>What is CVC/CVV/CID?</h3>
533
- <p>The Card Security Code (CVC/CVV/CID) is an <i>additional</i>
534
- three or four digit security code that is printed (not embossed) on the front or the back
535
- of your card.</p>
536
- <p>The CVC/CVV/CID is an extra security measure to ensure that you are in possession of the card.</p>
534
+ <h3>What is CVC/CVV/CID?</h3>
535
+ <p>The Card Security Code (CVC/CVV/CID) is an <i>additional</i>
536
+ three or four digit security code that is printed (not embossed) on the front or the back
537
+ of your card.</p>
538
+ <p>The CVC/CVV/CID is an extra security measure to ensure that you are in possession of the card.</p>
537
539
  </div>
538
540
 
539
541
 
540
542
  <script type="text/javascript">
541
543
  //<![CDATA[
542
-
543
- // find out what the CSS implementation calls the tr "display" value
544
- var cssTr = document.getElementById('cardNumberTr').style.display;
545
-
546
- if(document.getElementById('cardNumber').value.length > 0) {
547
- var validateCcNumberTimer = setTimeout('validateCcNumber(null,true)', 2500);
548
- }
549
-
544
+
545
+ // find out what the CSS implementation calls the tr "display" value
546
+ var cssTr = document.getElementById('cardNumberTr').style.display;
547
+
548
+ if(document.getElementById('cardNumber').value.length > 0) {
549
+ var validateCcNumberTimer = setTimeout('validateCcNumber(null,true)', 2500);
550
+ }
551
+
550
552
  //]]>
551
553
  </script>
552
-
554
+
553
555
  <script type="text/javascript">
554
- var collapsevisa = new animatedcollapse("pmmdetails-visa", 1000, false, false, config["pmmanimation"]==1?false:true);
555
- details.push(collapsevisa);
556
-
557
- displayAmountExtras['card'] = "";
558
-
559
-
560
- if (notNull(document.getElementById('pmmform-visa'))) {
561
- document.getElementById('pmmform-visa').setAttribute("autocomplete","off");
562
- }
556
+ var collapsevisa = new animatedcollapse("pmmdetails-visa", 1000, false, false, config["pmmanimation"]==1?false:true);
557
+ details.push(collapsevisa);
558
+
559
+ displayAmountExtras['card'] = "";
560
+
561
+
562
+ if (notNull(document.getElementById('pmmform-visa'))) {
563
+ document.getElementById('pmmform-visa').setAttribute("autocomplete","off");
564
+ }
563
565
  </script>
564
566
  </div>
565
567
  </li>
566
568
 
567
569
  <li style="list-style-type: none;">
568
570
  <input type="submit" name="brandName" value="Credit Card" class="imgB pmB pmBcard"
569
-
571
+
570
572
  onclick="return show(collapsecard, 'completeCard.shtml', 'card', 'vias');"
571
573
 
572
574
  />
@@ -594,29 +596,29 @@ errorMessages["card"]["generic"] = "Please enter your card details";
594
596
 
595
597
 
596
598
  var cvcinfo = new Array();
597
- cvcinfo["mc"] = "<h3>What is CVC?<\/h3>" +
599
+ cvcinfo["mc"] = "<h3>What is CVC?<\/h3>" +
598
600
  "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVC_mini.jpg\" alt=\"CVC location\" />" +
599
- "The Card Validation Code (CVC) is an <i>additional<\/i> " +
601
+ "The Card Validation Code (CVC) is an <i>additional<\/i> " +
600
602
  "three-digit security code that is printed (not embossed) on the back " +
601
603
  "of your card.<\/p>" +
602
604
  "<p>The CVC is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
603
- cvcinfo["visa"] = "<h3>What is CVV?<\/h3>" +
605
+ cvcinfo["visa"] = "<h3>What is CVV?<\/h3>" +
604
606
  "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVV_mini.jpg\" alt=\"CVV location\" />" +
605
- "The Card Verification Value (CVV) is an <i>additional<\/i> " +
607
+ "The Card Verification Value (CVV) is an <i>additional<\/i> " +
606
608
  "three-digit security code that is printed (not embossed) on the back " +
607
609
  "of your card.<\/p>" +
608
610
  "<p>The CVV is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
609
- cvcinfo["amex"] = "<h3>What is CID?<\/h3>" +
611
+ cvcinfo["amex"] = "<h3>What is CID?<\/h3>" +
610
612
  "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CID_mini.jpg\" alt=\"CID location\" />" +
611
- "The Card IDentification (CID) is an <i>additional<\/i> " +
613
+ "The Card IDentification (CID) is an <i>additional<\/i> " +
612
614
  "four-digit security code that is printed (not embossed) on the front " +
613
615
  "of your card.<\/p>" +
614
616
  "<p>The CID is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
615
- cvcinfo["card"] = "<h3>What is CVC\/CVV\/CID?<\/h3>" +
616
- "<p>The Card Security Code (CVC\/CVV\/CID) is an <i>additional<\/i> " +
617
+ cvcinfo["card"] = "<h3>What is CVC\/CVV\/CID?<\/h3>" +
618
+ "<p>The Card Security Code (CVC\/CVV\/CID) is an <i>additional<\/i> " +
617
619
  "three or four digit security code that is printed (not embossed) on the front or the back " +
618
620
  "of your card.<\/p>" +
619
- "<p>The CVC\/CVV\/CID is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
621
+ "<p>The CVC\/CVV\/CID is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
620
622
 
621
623
  var card_types = new Array();
622
624
  var card_logos = new Array();
@@ -626,26 +628,26 @@ errorMessages["card"]["generic"] = "Please enter your card details";
626
628
  var card_subVariantExtras = new Object();
627
629
  var card_subVariantExtrasPhrase = new Object();
628
630
  var originalExtraCostPhrase = document.getElementById('pmmextracosts-card').innerHTML;
629
-
631
+
630
632
  card_types.push("vias");
631
633
  card_logos.push("/img/pm/vias");
632
634
  card_displayAmountExtras.push("");
633
635
  card_extras.push("");
634
-
636
+
635
637
  card_subVariantExtras['vias'] = "";
636
638
  card_subVariantExtrasPhrase['vias'] = "";
637
639
  card_types.push("amex");
638
640
  card_logos.push("/img/pm/amex");
639
641
  card_displayAmountExtras.push("");
640
642
  card_extras.push("");
641
-
643
+
642
644
  card_subVariantExtras['amex'] = "";
643
645
  card_subVariantExtrasPhrase['amex'] = "";
644
646
  card_types.push("mc");
645
647
  card_logos.push("/img/pm/mc");
646
648
  card_displayAmountExtras.push("");
647
649
  card_extras.push("");
648
-
650
+
649
651
  card_subVariantExtras['mcatm'] = "";
650
652
  card_subVariantExtrasPhrase['mcatm'] = "";
651
653
  card_subVariantExtras['mccredit'] = "";
@@ -672,7 +674,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
672
674
  card_logos.push("/img/pm/visa");
673
675
  card_displayAmountExtras.push("");
674
676
  card_extras.push("");
675
-
677
+
676
678
  card_subVariantExtras['visacorporate'] = "";
677
679
  card_subVariantExtrasPhrase['visacorporate'] = "";
678
680
  card_subVariantExtras['travelmoney'] = "";
@@ -703,16 +705,16 @@ errorMessages["card"]["generic"] = "Please enter your card details";
703
705
  card_subVariantExtrasPhrase['visa'] = "";
704
706
  card_subVariantExtras['visadebit'] = "";
705
707
  card_subVariantExtrasPhrase['visadebit'] = "";
706
-
707
-
708
+
709
+
708
710
  var baseURL = "/hpp/";
709
711
  if(baseURL.indexOf(";jsession") != -1) {
710
712
  baseURL = baseURL.substr(0,baseURL.indexOf(";jsession"));
711
713
  }
712
-
714
+
713
715
  function validateCcNumber(e, dontHideErrorFrame) {
714
716
  cardNumber = (document.getElementById('cardNumber').value);
715
-
717
+
716
718
  if(cardNumber.length <= previousCardNumber.length) {
717
719
  previousCardNumber = cardNumber;
718
720
  if (cardNumber.length == 0) {
@@ -725,22 +727,22 @@ errorMessages["card"]["generic"] = "Please enter your card details";
725
727
  if(cardNumber[l] != previousCardNumber[l]) {
726
728
  previousCardNumber = cardNumber;
727
729
  return;
728
- }
730
+ }
729
731
  l++;
730
732
  }
731
-
733
+
732
734
  reg = /\s+/g;
733
735
  cardNumber = cardNumber.replace(reg,'');
734
-
736
+
735
737
  nrOfDigits = cardNumber.length;
736
-
738
+
737
739
  if(nrOfDigits > 19){
738
740
  ccNumberPresentation(false);
739
741
  return;
740
742
  }
741
-
743
+
742
744
  ccNumberPresentation(true,dontHideErrorFrame);
743
-
745
+
744
746
  baseCard = getBaseCard(cardNumber,card_types);
745
747
  if(baseCard != null) {
746
748
  setCardBrand(baseCard, true);
@@ -757,28 +759,28 @@ errorMessages["card"]["generic"] = "Please enter your card details";
757
759
  _.X("/hpp/binLookup.shtml",function(d,r){
758
760
  if(r.status != 200 || d.indexOf('"result"') == -1) return false;
759
761
  var response=eval("("+d+")");
760
-
762
+
761
763
  if(typeof(response.result)=='undefined') return false;
762
-
764
+
763
765
  if (response.result == 0) {
764
766
  lookedUpCardType = response.cardType;
765
767
  } else {
766
- lookedUpCardType = null;
768
+ lookedUpCardType = null;
767
769
  }
768
770
  setExtraCost(baseCard, lookedUpCardType);
769
-
771
+
770
772
  return true;
771
773
  }, 'bin='+cardNumber+'&'+_.Q(_.G("pageform")));
772
774
  }
773
-
775
+
774
776
  //show value with white space after four numbers
775
777
  result = cardNumber.replace(/(\d{4})/g, '$1 ');
776
778
  result = result.replace(/\s+$/, ''); //remove trailing spaces
777
-
779
+
778
780
  previousCardNumber = result;
779
781
  document.getElementById('cardNumber').value = result;
780
782
  }
781
-
783
+
782
784
  function setExtraCost(selectedCard, lookedUpCard) {
783
785
  var extraCostDisplayed = false;
784
786
  if (lookedUpCard != null && card_subVariantExtras[lookedUpCard] != null) {
@@ -796,18 +798,18 @@ errorMessages["card"]["generic"] = "Please enter your card details";
796
798
  }
797
799
  }
798
800
  }
799
-
801
+
800
802
  if (!extraCostDisplayed) {
801
803
  resetExtraCost();
802
804
  }
803
805
  }
804
-
806
+
805
807
  function resetExtraCost() {
806
808
  displayAmountExtras['card'] = "";
807
809
  document.getElementById('extraCostAmount').innerHTML = "";
808
810
  document.getElementById('pmmextracosts-card').innerHTML = originalExtraCostPhrase;
809
811
  }
810
-
812
+
811
813
  function setCardBrand(selectedCard, greyInactive) {
812
814
 
813
815
  for(var i = 0; i < card_types.length; ++i) {
@@ -844,10 +846,10 @@ errorMessages["card"]["generic"] = "Please enter your card details";
844
846
  document.getElementById('cvcName').innerHTML = "CVC";
845
847
  document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
846
848
  document.getElementById('cvcFrame').innerHTML = cvcinfo["card"];
847
- }
849
+ }
848
850
  }
849
851
  }
850
-
852
+
851
853
  function ccNumberPresentation(valid, dontHideErrorFrame){
852
854
  var errors = new Array();
853
855
  errors.push("cardNumber");
@@ -858,13 +860,13 @@ errorMessages["card"]["generic"] = "Please enter your card details";
858
860
  markErrorFields(errors);
859
861
  }
860
862
  }
861
-
863
+
862
864
  function blockNonNumbers(e) {
863
865
  var key;
864
866
  var isCtrl = false;
865
867
  var keychar;
866
868
  var reg;
867
-
869
+
868
870
  if(window.event) {
869
871
  key = e.keyCode;
870
872
  isCtrl = window.event.ctrlKey
@@ -873,21 +875,21 @@ errorMessages["card"]["generic"] = "Please enter your card details";
873
875
  key = e.which;
874
876
  isCtrl = e.ctrlKey;
875
877
  }
876
-
878
+
877
879
  if (isNaN(key)) return true;
878
-
880
+
879
881
  keychar = String.fromCharCode(key);
880
-
882
+
881
883
  // check for backspace or delete, or if Ctrl was pressed
882
884
  if (key == 8 || isCtrl) {
883
885
  return true;
884
886
  }
885
-
887
+
886
888
  reg = /[\d ]/;
887
-
889
+
888
890
  return reg.test(keychar);
889
891
  }
890
-
892
+
891
893
  validationFunctions
892
894
  function doCCCheck(){
893
895
  cardNumber = (document.getElementById('cardNumber').value);
@@ -898,7 +900,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
898
900
  else
899
901
  ccNumberPresentation(true);
900
902
  }
901
-
903
+
902
904
  validationFunctions["card"] = new Array();
903
905
  validationFunctions["card"]["cardNumber"] = function (cardNumberField) {
904
906
  cardNumber = cardNumberField.value;
@@ -910,7 +912,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
910
912
  return false;
911
913
  }
912
914
 
913
-
915
+
914
916
 
915
917
  //]]>
916
918
  </script>
@@ -939,9 +941,9 @@ errorMessages["card"]["generic"] = "Please enter your card details";
939
941
  </tr>
940
942
  <tr id="cardNumberTr">
941
943
  <td><div>Card Number</div></td>
942
- <td><div class="fieldDiv"><input type="text" class="inputField" id="cardNumber"
944
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="cardNumber"
943
945
  onkeypress="return blockNonNumbers(event)" onkeyup="validateCcNumber(event)" onblur="validateCcNumber(event)" onchange="doCCCheck()"
944
- name="cardNumber" value="" size="24" maxlength="23"
946
+ name="cardNumber" value="" size="24" maxlength="23"
945
947
  /></div></td>
946
948
 
947
949
  </tr>
@@ -971,7 +973,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
971
973
 
972
974
  <option value="12">12</option>
973
975
  </select>
974
- &nbsp;/&nbsp;
976
+ &nbsp;/&nbsp;
975
977
  <select class="inputField" name="expiryYear" id="expiryYear" size="1">
976
978
  <option value="*">&nbsp;</option>
977
979
  <option value="2011">2011</option>
@@ -1037,14 +1039,14 @@ errorMessages["card"]["generic"] = "Please enter your card details";
1037
1039
  <script type="text/javascript">
1038
1040
  var collapsecard = new animatedcollapse("pmmdetails-card", 1000, false, false, config["pmmanimation"]==1?false:true);
1039
1041
  details.push(collapsecard);
1040
-
1042
+
1041
1043
  displayAmountExtras['card'] = "";
1042
-
1043
-
1044
-
1045
-
1044
+
1045
+
1046
+
1047
+
1046
1048
  if (notNull(document.getElementById('pmmform-card'))) {
1047
- document.getElementById('pmmform-card').setAttribute("autocomplete","off");
1049
+ document.getElementById('pmmform-card').setAttribute("autocomplete","off");
1048
1050
  }
1049
1051
  </script>
1050
1052
  </div>
@@ -1053,7 +1055,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
1053
1055
  <li style="list-style-type: none;">
1054
1056
 
1055
1057
  <input type="submit" name="brandName" value="iDEAL" class="imgB pmB pmBideal"
1056
-
1058
+
1057
1059
  onclick="return show(collapseideal, 'redirectIdeal.shtml', 'ideal', 'ideal');"
1058
1060
 
1059
1061
  />
@@ -1062,7 +1064,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
1062
1064
 
1063
1065
  <span id="pmidealdescription" class="pmmdescription"></span>
1064
1066
  <div id="pmmdetails-ideal" class="pmmdetails">
1065
-
1067
+
1066
1068
  <script type="text/javascript">
1067
1069
  //<![CDATA[
1068
1070
  /* Form validation */
@@ -1087,109 +1089,109 @@ errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
1087
1089
 
1088
1090
  <table class="basetable">
1089
1091
 
1090
-
1091
-
1092
-
1092
+
1093
+
1094
+
1093
1095
  <tr>
1094
1096
  <td>
1095
1097
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK1.png);" value="1121" name="idealIssuer"/>
1096
1098
  </td>
1097
-
1098
-
1099
-
1099
+
1100
+
1101
+
1100
1102
  <td class="idealButtonPadding">
1101
1103
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK2.png);" value="1151" name="idealIssuer"/>
1102
1104
  </td>
1103
1105
 
1104
1106
  </tr>
1105
-
1106
-
1107
-
1107
+
1108
+
1109
+
1108
1110
  <tr>
1109
1111
  <td>
1110
1112
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK3.png);" value="1152" name="idealIssuer"/>
1111
1113
  </td>
1112
-
1113
-
1114
-
1114
+
1115
+
1116
+
1115
1117
  <td class="idealButtonPadding">
1116
1118
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK4.png);" value="1153" name="idealIssuer"/>
1117
1119
  </td>
1118
1120
  </tr>
1119
1121
 
1120
-
1121
-
1122
-
1122
+
1123
+
1124
+
1123
1125
  <tr>
1124
1126
  <td>
1125
1127
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK5.png);" value="1154" name="idealIssuer"/>
1126
1128
  </td>
1127
-
1128
-
1129
-
1129
+
1130
+
1131
+
1130
1132
  <td class="idealButtonPadding">
1131
1133
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK6.png);" value="1155" name="idealIssuer"/>
1132
1134
  </td>
1133
1135
  </tr>
1134
-
1135
-
1136
-
1136
+
1137
+
1138
+
1137
1139
  <tr>
1138
1140
 
1139
1141
  <td>
1140
1142
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK7.png);" value="1156" name="idealIssuer"/>
1141
1143
  </td>
1142
-
1143
-
1144
-
1144
+
1145
+
1146
+
1145
1147
  <td class="idealButtonPadding">
1146
1148
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK8.png);" value="1157" name="idealIssuer"/>
1147
1149
  </td>
1148
1150
  </tr>
1149
-
1150
-
1151
-
1151
+
1152
+
1153
+
1152
1154
  <tr>
1153
1155
  <td>
1154
1156
 
1155
1157
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK9.png);" value="1158" name="idealIssuer"/>
1156
1158
  </td>
1157
-
1158
-
1159
-
1159
+
1160
+
1161
+
1160
1162
  <td class="idealButtonPadding">
1161
1163
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK10.png);" value="1159" name="idealIssuer"/>
1162
1164
  </td>
1163
1165
  </tr>
1164
-
1165
-
1166
-
1167
-
1166
+
1167
+
1168
+
1169
+
1168
1170
  <tr>
1169
1171
  <td>
1170
1172
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKREFUSED.png);" value="1160" name="idealIssuer"/>
1171
1173
 
1172
1174
  </td>
1173
-
1174
-
1175
-
1175
+
1176
+
1177
+
1176
1178
  <td class="idealButtonPadding">
1177
1179
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKPENDING.png);" value="1161" name="idealIssuer"/>
1178
1180
  </td>
1179
1181
  </tr>
1180
-
1181
-
1182
-
1182
+
1183
+
1184
+
1183
1185
  <tr>
1184
1186
  <td>
1185
1187
  <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKCANCELLED.png);" value="1162" name="idealIssuer"/>
1186
1188
  </td>
1187
1189
 
1188
-
1190
+
1189
1191
  <td></td>
1190
1192
  </tr>
1191
1193
  </tr>
1192
-
1194
+
1193
1195
  <tr>
1194
1196
  <td colspan="2"><div class="fieldDiv">
1195
1197
  <select class="inputField" id="idealIssuerId" name="idealIssuerId">
@@ -1212,10 +1214,10 @@ errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
1212
1214
 
1213
1215
  <option value="1162">Test Issuer Cancelled</option>
1214
1216
  </select>
1215
- </div></td>
1217
+ </div></td>
1216
1218
  </tr>
1217
1219
  <tr>
1218
- <td colspan="2"><div class="r">
1220
+ <td colspan="2"><div class="r">
1219
1221
  <input class="paySubmit paySubmitideal" type="submit" name="pay" value="continue" />
1220
1222
  </div></td>
1221
1223
  </tr>
@@ -1224,14 +1226,14 @@ errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
1224
1226
  <script type="text/javascript">
1225
1227
  var collapseideal = new animatedcollapse("pmmdetails-ideal", 1000, false, false, config["pmmanimation"]==1?false:true);
1226
1228
  details.push(collapseideal);
1227
-
1229
+
1228
1230
  displayAmountExtras['ideal'] = "";
1229
-
1230
-
1231
-
1232
-
1231
+
1232
+
1233
+
1234
+
1233
1235
  if (notNull(document.getElementById('pmmform-ideal'))) {
1234
- document.getElementById('pmmform-ideal').setAttribute("autocomplete","off");
1236
+ document.getElementById('pmmform-ideal').setAttribute("autocomplete","off");
1235
1237
  }
1236
1238
  </script>
1237
1239
  </div>
@@ -1239,27 +1241,29 @@ errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
1239
1241
  </ul>
1240
1242
 
1241
1243
  <div id="errorFrame" style="display: none;" class="popupMsg errorFrame">
1242
- <div id="errorFrameValidationErrors"></div>
1244
+ <div id="errorFrameValidationErrors"></div>
1243
1245
  </div>
1244
1246
  <div id="okFrame" style="display: none;" class="popupMsg okFrame">
1245
1247
  <div id="okFrameMessages"></div>
1246
1248
  </div>
1247
1249
 
1248
1250
  <input type="text" style="display: none" />
1249
- <input type="hidden" name="sig" value="" />
1250
- <input type="hidden" name="merchantReference" value="" />
1251
- <input type="hidden" name="paymentAmount" value="4320" />
1252
- <input type="hidden" name="currencyCode" value="EUR" />
1253
- <input type="hidden" name="shipBeforeDate" value="2011-06-03" />
1254
- <input type="hidden" name="skinCode" value="Zij12nYa" />
1255
- <input type="hidden" name="merchantAccount" value="Test" />
1256
- <input type="hidden" name="shopperLocale" value="en" />
1257
- <input type="hidden" name="stage" value="pay" />
1258
- <input type="hidden" name="sessionId" value="" />
1259
- <input type="hidden" name="orderData" value="" />
1260
- <input type="hidden" name="sessionValidity" value="" />
1261
- <input type="hidden" name="countryCode" value="" />
1262
- <input type="hidden" name="shopperEmail" value="test@test.com" />
1263
- <input type="hidden" name="allowedMethods" value="visa" />
1264
- <input type="hidden" name="originalSession" value="" />
1251
+ <input type="hidden" name="sig" value="" />
1252
+ <input type="hidden" name="merchantReference" value="" />
1253
+ <input type="hidden" name="paymentAmount" value="4320" />
1254
+ <input type="hidden" name="currencyCode" value="EUR" />
1255
+ <input type="hidden" name="shipBeforeDate" value="2011-06-03" />
1256
+ <input type="hidden" name="skinCode" value="Zij12nYa" />
1257
+ <input type="hidden" name="merchantAccount" value="Test" />
1258
+ <input type="hidden" name="shopperLocale" value="en" />
1259
+ <input type="hidden" name="stage" value="pay" />
1260
+ <input type="hidden" name="sessionId" value="" />
1261
+ <input type="hidden" name="orderData" value="" />
1262
+ <input type="hidden" name="sessionValidity" value="" />
1263
+ <input type="hidden" name="countryCode" value="" />
1264
+ <input type="hidden" name="shopperEmail" value="test@test.com" />
1265
+ <input type="hidden" name="allowedMethods" value="visa" />
1266
+ <input type="hidden" name="originalSession" value="" />
1265
1267
  <input type="hidden" name="referrerURL" value="" />
1268
+
1269
+ <!-- ### inc/pmfooter -->