adyen-skinbuilder 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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 -->