adyen-skinbuilder 0.4.2 → 0.4.3

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 (26) hide show
  1. checksums.yaml +9 -9
  2. data/CHANGELOG.md +4 -1
  3. data/Gemfile.lock +1 -1
  4. data/lib/adyen-skinbuilder/server.rb +15 -4
  5. data/lib/adyen-skinbuilder/server/views/_adyen_form.html.erb +14 -19
  6. data/lib/adyen-skinbuilder/server/views/_adyen_payment_fields.html.erb +1560 -910
  7. data/lib/adyen-skinbuilder/server/views/css/reset.css +137 -5
  8. data/lib/adyen-skinbuilder/server/views/img/pm/bankTransfer_IBAN.png +0 -0
  9. data/lib/adyen-skinbuilder/server/views/img/pm/bankTransfer_NL.png +0 -0
  10. data/lib/adyen-skinbuilder/server/views/img/pm/directdebit_NL.png +0 -0
  11. data/lib/adyen-skinbuilder/server/views/img/pm/hyvesafrekenen.png +0 -0
  12. data/lib/adyen-skinbuilder/server/views/img/pm/maestro_small.png +0 -0
  13. data/lib/adyen-skinbuilder/server/views/img/pm/openinvoice.png +0 -0
  14. data/lib/adyen-skinbuilder/server/views/js/animatedcollapse.js +114 -0
  15. data/lib/adyen-skinbuilder/server/views/js/cc.js +456 -0
  16. data/lib/adyen-skinbuilder/server/views/js/default.js +214 -7
  17. data/lib/adyen-skinbuilder/server/views/layout.html.erb +8 -6
  18. data/lib/adyen-skinbuilder/server/views/skin.html.erb +1 -6
  19. data/lib/adyen-skinbuilder/version.rb +1 -1
  20. data/spec/lib/adyen-skinbuilder/server_spec.rb +1 -1
  21. metadata +11 -8
  22. data/lib/adyen-skinbuilder/server/views/img/icons/error.png +0 -0
  23. data/lib/adyen-skinbuilder/server/views/img/pm/card.png +0 -0
  24. data/lib/adyen-skinbuilder/server/views/img/pm/ideal.png +0 -0
  25. data/lib/adyen-skinbuilder/server/views/img/pm/vias_small.png +0 -0
  26. data/lib/adyen-skinbuilder/server/views/img/pm/visa.png +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTRmMmE1M2FiZTE2Y2E0NjJjNjhjZjgzZmUwODU3ZmFmNDk1ZTdlMg==
4
+ OWE0NWU5OWMxOGExNDZmODJmNThmMmUxODZkODY1OGVmNDQxOWYwMA==
5
5
  data.tar.gz: !binary |-
6
- MmZhZTIxYWUwMGM2NGVkNDdkZjVmZjlkNzE3ZDRlNTVlZDIxZDQ3Yg==
7
- !binary "U0hBNTEy":
6
+ YmQ2NzU2NTJhZTYzZGEzMTZhOGE4NWVjODc0MmUwZTgyZWEyYTM4MQ==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- MmEzMzE4ZDc1M2QzMTk2ODY0NzVlYjgwYThlMGZlN2U5MTc1NjBjMzAzZmQy
10
- ZWE3OTFlNzIwMWE4YmU1ZjA2ODkzMTRlOGIyNTg3ZmY0YmY5YzNhMTFhNTZm
11
- YWVkZmNiYTE5OTUzNmM5ZjZmMjY1MWZjYmE0NDhhMjE4NjM0ZGQ=
9
+ NGYxYjUwOTBhZTcwY2NiODNhMTQ0ODdlYjgxYTE1ZDBiZGQwOTljM2UxY2M3
10
+ Zjg2Y2ZkZWVmOTQ1NmNkZGZmZTdiMGIzYmVjYmY5ZmYxZGM3YjZlYzY4ZTQx
11
+ OWQ0MGRkZGYwMDFmZThlNTk3MDM5ZDg1ZDA2Y2Y4OWZjNjE3MDg=
12
12
  data.tar.gz: !binary |-
13
- ODIyYmU3YmVjNjAxMWQwNzllYzAwNTEwMzIzZWE4ODIxMGNhM2I4MzkzNDg4
14
- M2JhYTNmNmU5YWVkZjM2MTg4OTkzOWQzODI1YjAzMDkyODAwYzNmZjQ1ZDA4
15
- NmJiZTkzYWRmNGQ4MWIwNzEwZGE5Mzg0ZjVkZGRjNjRjZTkxYmU=
13
+ OWZhNjExNWRkYmM5NDVhYjNkMTZiOWJkZjIzYmFlMzgzZTkwMzliMzVkZjZk
14
+ MTU1Njg0NmQ1ODlmYzgxNjFjMGNiNzQ5YzRhZDNiZjdiNDZhYmViNDI3MmI2
15
+ Yjc3MjU3ZjdiODlhNmFiZjA0NzBmMjIwZDk1ZDNiNGJiNzdjZjQ=
@@ -12,11 +12,14 @@
12
12
  * auto concatinate multiple .css files
13
13
  * auto build example PaymentMethod skeleton
14
14
 
15
+ ## v0.4.3
16
+ * update views and assets by @DouweM (#19)
17
+
15
18
  ## v0.4.2
16
19
  * lastes adyen-admin which fixes upload
17
20
  * compress includes the skincode in filename
18
21
  * pass default_data to skin
19
- * support new CSS selectors by @jigfox (https://github.com/priithaamer/adyen-skinbuilder/pull/17)
22
+ * support new CSS selectors by @jigfox (#17)
20
23
 
21
24
  ## v0.3.1
22
25
  * feature: see remote version
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adyen-skinbuilder (0.4.2)
4
+ adyen-skinbuilder (0.4.3)
5
5
  adyen-admin
6
6
  i18n
7
7
  sinatra
@@ -1,6 +1,9 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
+ require 'fileutils'
5
+ require 'net/http'
6
+
4
7
  require 'sinatra/base'
5
8
  require 'adyen-skinbuilder/helper/adyen'
6
9
  require 'adyen-skinbuilder/helper/render'
@@ -96,8 +99,16 @@ module Adyen
96
99
  get '/hpp/*' do |path|
97
100
  send_file File.join(settings.views, path).tap { |file|
98
101
  if !File.exists?(file)
99
- `mkdir -p #{File.dirname(file)}`
100
- `wget https://test.adyen.com/hpp/#{path} -O #{file}`
102
+ uri = URI.parse("https://test.adyen.com/hpp/#{path}")
103
+ connection = Net::HTTP.new(uri.host, uri.port)
104
+ connection.use_ssl = uri.is_a?(URI::HTTPS)
105
+ request = Net::HTTP::Get.new(uri.request_uri)
106
+ response = connection.request(request)
107
+
108
+ FileUtils.mkdir_p(File.dirname(file))
109
+ File.open(file, "w") do |io|
110
+ io.write response.body
111
+ end
101
112
  end
102
113
  }
103
114
  end
@@ -117,8 +128,8 @@ module Adyen
117
128
  if @skin = Adyen::Admin::Skin.find(skin_code)
118
129
  @skin.download.tap do |zip_file|
119
130
  @skin.decompile(zip_file)
120
- `cp #{skin_erb_file(@skin)}.erb #{@skin.path}`
121
- `rm -f #{zip_file}`
131
+ FileUtils.cp("#{skin_erb_file(@skin)}.erb", @skin.path)
132
+ FileUtils.rm_f(zip_file)
122
133
  end
123
134
  end
124
135
  redirect '/'
@@ -1,37 +1,32 @@
1
1
  <!-- ### -->
2
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>
3
+ <form id="pageform" action="#" method="post" autocomplete="off" onsubmit="return formValidate(this, 'default');">
4
+
11
5
  <div id="content">
12
- <div id="pmcontent">
13
6
 
14
- <!-- ### inc/pmheader<%= @locale_suffix %> -->
7
+ <!-- ### inc/pmheader<%= @locale_suffix %> -->
15
8
 
16
- <%= adyen_payment_fields(&block) %>
9
+ <%= adyen_payment_fields(&block) %>
17
10
 
18
- <!-- ### -->
11
+ <!-- ### -->
19
12
 
20
- </div>
21
13
  </div>
14
+
22
15
  <div id="foot">
23
16
  <div id="footc">
24
17
  <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" />
18
+ <div id="nextstepc">Next Step: Enter your Payment Details</div>
29
19
  </div>
20
+
30
21
  <div id="footerb2div">
31
- <input onclick="" type="button" id="mainBack" value="previous" class="footerB backB" />
22
+ <input name="next" id="mainSubmit" value="continue" type="submit" class="hideforprint footerB nextB" />
23
+ </div>
24
+
25
+ <div id="footerb1div">
26
+ <input onclick="this.blur(); prepareForBack();" name="back" id="mainBack" value="previous" type="submit" class="hideforprint footerB backB" />
32
27
  </div>
33
28
  </div>
34
29
  </div>
35
30
  </form>
36
31
 
37
- <!-- ### inc/cfooter<%= @locale_suffix %> -->
32
+ <!-- ### inc/cfooter<%= @locale_suffix %> -->
@@ -1,632 +1,229 @@
1
1
  <!-- ### -->
2
2
 
3
+ <div class="paddiv1"></div>
4
+
3
5
  <script type="text/javascript">
4
- //<![CDATA[
5
- /* Form validation */
6
- var requiredFields = new Array();
7
- var fieldLinks = new Array();
8
- var errorMessages = new Array();
9
- var errorAreas = new Array();
10
- var validationFunctions = new Array();
11
- var details = new Array();
6
+ //<![CDATA[
7
+ /* Form validation */
8
+ var requiredFields = new Array();
9
+ var openInPopup = new Array();
12
10
 
13
- errorMessages["default"] = new Array();
14
- requiredFields["default"] = new Array();
15
11
 
16
- var maySubmitOnlyOnce=true;
12
+ var fieldLinks = new Array();
13
+ var errorMessages = new Array();
14
+ var errorAreas = new Array();
15
+ var validationFunctions = new Array();
16
+ var details = new Array();
17
17
 
18
- requiredFields["default"].push("brandCode");
19
- errorMessages["default"]["brandCode"] = "Please enter your payment details";
20
- errorMessages["default"]["submitonce"] = "Your request is being processed, please wait....";
18
+ errorMessages["default"] = new Array();
19
+ requiredFields["default"] = new Array();
21
20
 
22
- var locked = false;
23
- var _valFunc = new function() {};
24
21
 
25
- var displayAmountExtras = new Object();
26
22
 
27
- function show(detail, actionURL, group, brandCode) {
23
+ var maySubmitOnlyOnce=true;
28
24
 
29
- if(config["pmmanimation"] != 1) {
30
- if(locked) { return false; }
31
- locked = true;
32
- setTimeout('locked=false',1000);
33
- }
25
+ requiredFields["default"].push("brandCode");
26
+ errorMessages["default"]["brandCode"] = "Please enter your payment details";
27
+ errorMessages["default"]["submitonce"] = "Your request is being processed, please wait....";
34
28
 
35
- document.forms["pageform"].action=actionURL;
36
- document.forms["pageform"].onsubmit=null;
29
+ var locked = false;
30
+ var _valFunc = new function() {};
37
31
 
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
- }
32
+ var displayAmountExtras = new Object();
57
33
 
58
- document.forms["pageform"]["brandCode"].value=brandCode;
59
- document.getElementById('extraCostAmount').innerHTML = displayAmountExtras[group];
34
+ function show(detail, actionURL, group, brandCode) {
60
35
 
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;
36
+ if(config["pmmanimation"] != 1) {
37
+ if(locked) { return false; }
38
+ locked = true;
39
+ setTimeout('locked=false',1000);
40
+ }
41
+
42
+ if(group == "card") {
43
+ brandCode="brandCodeUndef";
44
+ }
45
+
46
+ document.forms["pageform"].action=actionURL;
47
+ document.forms["pageform"].onsubmit=null;
48
+
49
+ if(document.forms["pageform"].addEventListener) {
50
+ document.forms["pageform"].removeEventListener('submit',_valFunc ,false);
51
+ document.forms["pageform"].addEventListener('submit',_valFunc = function(e) {
52
+ result = formValidate(document.forms["pageform"] ,group);
53
+ if(result == false) {
54
+ e=e||event;
55
+ e.preventDefault? e.preventDefault() : e.returnValue = false;
56
+ }
57
+ },false);
58
+ } else {
59
+ document.forms["pageform"].detachEvent('onsubmit',_valFunc);
60
+ document.forms["pageform"].attachEvent('onsubmit',_valFunc = function(e) {
61
+ result = formValidate(document.forms["pageform"] ,group);
62
+ if(result == false) {
63
+ e=e||event;
64
+ e.preventDefault? e.preventDefault() : e.returnValue = false;
70
65
  }
66
+ });
67
+ }
68
+
69
+ document.forms["pageform"]["brandCode"].value=brandCode;
70
+ document.forms["pageform"]["displayGroup"].value=group;
71
+ document.getElementById('extraCostAmount').innerHTML = displayAmountExtras[group];
72
+
73
+ if(detail != "") {
74
+ detail.slideit();
75
+ for (i = 0; i < details.length; i++) {
76
+ if (details[i].divId != detail.divId) {
77
+ details[i].slideup();
78
+ }
79
+ }
80
+ }
71
81
 
82
+ // possible selection handler hook
83
+ var selectHandler = "select"+group+"Handler";
84
+ if (eval("typeof " + selectHandler + " === 'function'")) {
85
+ window[selectHandler](detail, actionURL, group, brandCode);
86
+ }
72
87
 
88
+ return false;
89
+ }
73
90
 
74
91
 
75
- addOnLoad(preventEnterSubmit);
92
+ addOnLoad(preventEnterSubmit);
76
93
 
77
94
 
78
95
 
79
- //]]>
96
+ //]]>
80
97
  </script>
81
- <script type="text/javascript" src="https://test.adyen.com/hpp/js/animatedcollapse.js"></script>
82
- <script type="text/javascript" src="https://test.adyen.com/hpp/js/cc.js"></script>
83
- <input type="hidden" id="brandCode" name="brandCode" value="" />
98
+ <script type="text/javascript" src="/hpp/js/animatedcollapse.js"></script>
99
+ <script type="text/javascript" src="/hpp/js/cc.js"></script>
100
+
101
+ <input type="hidden" id="displayGroup" name="displayGroup" value="" />
84
102
 
85
- <h2 id="stageheader">Please Enter your Payment Details</h2>
103
+ <h2 id="stageheader">Step 1: Please select your payment method</h2>
86
104
 
87
105
  <div id="orderDataWrapper">
88
106
  <div id="orderDataHeader">Order Details</div>
107
+
89
108
  <div id="orderData">
90
109
  <%= render_file "order_data" %>
91
110
  </div>
92
111
  </div>
112
+
93
113
  <div id="displayAmount">
94
- Total payment amount EUR 43.20 <span id="extraCostAmount"></span>
114
+ Total payment amount EUR 123.00 <span id="extraCostAmount"></span>
95
115
  </div>
96
116
 
97
- <ul id="paymentMethods">
98
- <li style="list-style-type: none;">
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">
103
- //<![CDATA[
104
- /* Form validation */
105
- requiredFields["card"] = new Array();
106
- requiredFields["card"].push("cardHolderName");
107
- requiredFields["card"].push("cardNumber");
108
- requiredFields["card"].push("expiryMonth");
109
- requiredFields["card"].push("expiryYear");
110
- errorMessages["card"] = new Array();
111
- errorMessages["card"]["cardHolderName"] = "Card Holder Name missing";
112
- errorMessages["card"]["cardNumber"] = "Card Number invalid or missing";
113
- errorMessages["card"]["expiryMonth"] = "Expiry Month missing";
114
- errorMessages["card"]["expiryYear"] = "Expiry Year missing";
115
- errorMessages["card"]["cvcCode"] = "CVC/CVV/CID missing";
116
- errorMessages["card"]["generic"] = "Please enter your card details";
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('card.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('card.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("card.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('card.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
-
410
- //]]>
411
- </script>
412
-
413
- <table class="basetable">
414
- <tr>
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>
432
- </tr>
433
- <tr id="cardNumberTr">
434
- <td><div>Card number</div></td>
435
- <td><div class="fieldDiv"><input type="text" class="inputField" id="card.cardNumber" onkeypress="return blockNonNumbers(event)" onkeyup="validateCcNumber(event)" onblur="validateCcNumber(event)" onchange="doCCCheck()" name="card.cardNumber" value="" size="24" maxlength="23" /></div></td>
436
- </tr>
437
- <tr>
438
- <td><div>Card holder name</div></td>
439
- <td><div class="fieldDiv"><input type="text" class="inputField" id="card.cardHolderName" name="card.cardHolderName" value="" size="19" maxlength="30" /></div></td>
440
- </tr>
441
- <tr id="cardIssueNumber" style="display: none">
442
- <td><div>Issue Number</div></td>
443
- <td><div class="fieldDiv"><input type="text" class="inputField" name="issueNumber" id="issueNumber" size="4" maxlength="2" /></div></td>
444
- </tr>
445
- <tr id="cardStartDate" style="display: none">
446
- <td><div>Start Date</div></td>
447
- <td><div class="fieldDiv">
448
- <select class="inputField" name="card.startMonth" id="card.startMonth" size="1">
449
- <option value="*"></option>
450
- <option value="01">01</option>
451
- <option value="02">02</option>
452
- <option value="03">03</option>
453
- <option value="04">04</option>
454
- <option value="05">05</option>
455
- <option value="06">06</option>
456
- <option value="07">07</option>
457
- <option value="08">08</option>
458
- <option value="09">09</option>
459
- <option value="10">10</option>
460
- <option value="11">11</option>
461
- <option value="12">12</option>
462
- </select>
463
- &nbsp;/&nbsp;
464
- <select class="inputField" name="card.startYear" id="card.startYear" size="1">
465
- <option value="*"></option>
466
- <% 10.times do |i| %>
467
- <option value="<%= year = Date.today.year - i %>"><%= year %></option>
468
- <% end %>
469
- </select>
470
- </div>
471
- </td>
472
- </tr>
473
- <tr>
474
- <td><div>Card expiry date</div></td><td>
475
- <div class="fieldDiv" id="card.expiryContainer">
476
- <select class="inputField" name="card.expiryMonth" id="card.expiryMonth" size="1">
477
- <option value="*"></option>
478
- <option value="01">01</option>
479
- <option value="02">02</option>
480
- <option value="03">03</option>
481
- <option value="04">04</option>
482
- <option value="05">05</option>
483
- <option value="06">06</option>
484
- <option value="07">07</option>
485
- <option value="08">08</option>
486
- <option value="09">09</option>
487
- <option value="10">10</option>
488
- <option value="11">11</option>
489
- <option value="12">12</option>
490
- </select>
491
- &nbsp;/&nbsp;
492
- <select class="inputField" name="card.expiryYear" id="card.expiryYear" size="1">
493
- <option value="*"></option>
494
- <% 15.times do |i| %>
495
- <option value="<%= year = Date.today.year + i %>"><%= year %></option>
496
- <% end %>
497
- </select>
498
- </div>
499
- </td>
500
- </tr>
501
- <tr>
502
- <td><div id="cvcName">CVC/CVV/CID</div></td>
503
- <td><div class="fieldDiv"><input class="inputField" type="text" name="card.cvcCode" value="" id="card.cvcCode" size="7" maxlength="3" /> &nbsp; <a href="#" onclick="return toggleElement('cvcFrame');"><span id="cvcWhatIs">What is CVC/CVV/CID?</span></a></div></td>
504
- </tr>
505
- <tr>
506
- <td colspan="2"><div class="r">
507
- <input class="paySubmit paySubmitvisa" type="submit" name="pay" value="Confirm payment" />
508
- </div></td>
509
- </tr>
510
- </table>
511
-
512
- <div class="popupMsg popupMsgOPP " style="display: none;" onclick="return hideElement('cvcFrame');" id="cvcFrame">
513
- <h3>What is CVC/CVV/CID?</h3>
514
- <p>The Card Security Code (CVC/CVV/CID) is an <i>additional</i>
515
- three or four digit security code that is printed (not embossed) on the front or the back
516
- of your card.</p>
517
- <p>The CVC/CVV/CID is an extra security measure to ensure that you are in possession of the card.</p>
518
- </div>
519
-
520
-
521
- <script type="text/javascript">
522
- //<![CDATA[
523
-
524
- // find out what the CSS implementation calls the tr "display" value
525
- var cssTr = document.getElementById('cardNumberTr').style.display;
526
-
527
- if(document.getElementById('card.cardNumber').value.length > 0) {
528
- var validateCcNumberTimer = setTimeout('validateCcNumber(null,true)', 2500);
529
- }
530
-
531
- //]]>
532
- </script>
533
-
534
- <script type="text/javascript">
535
- var collapsevisa = new animatedcollapse("pmmdetails-visa", 1000, false, false, config["pmmanimation"]==1?false:true);
536
- details.push(collapsevisa);
537
-
538
- displayAmountExtras['card'] = "";
539
-
540
-
541
- if (notNull(document.getElementById('pmmform-visa'))) {
542
- document.getElementById('pmmform-visa').setAttribute("autocomplete","off");
543
- }
544
- </script>
545
- </div>
546
- </li>
547
117
 
118
+ <ul id="paymentMethods">
119
+
120
+
121
+
548
122
  <li style="list-style-type: none;">
549
123
  <input type="submit" name="brandName" value="Credit Card" class="imgB pmB pmBcard"
550
-
551
- onclick="return show(collapsecard, 'completeCard.shtml', 'card', 'vias');"
124
+
125
+ onclick="return show(collapsecard, 'completeCard.shtml', 'card', 'brandCodeUndef');"
552
126
 
553
127
  />
554
-
555
128
  <span id="pmmextracosts-card" class="pmmextracosts">
556
129
  </span>
557
130
 
558
131
  <span id="pmcarddescription" class="pmmdescription"></span>
559
132
  <div id="pmmdetails-card" class="pmmdetails">
560
- <script type="text/javascript">
561
- //<![CDATA[
562
- /* Form validation */
563
- requiredFields["card"] = new Array();
564
- requiredFields["card"].push("cardHolderName");
565
- requiredFields["card"].push("cardNumber");
566
- requiredFields["card"].push("expiryMonth");
567
- requiredFields["card"].push("expiryYear");
568
- errorMessages["card"] = new Array();
569
- errorMessages["card"]["cardHolderName"] = "Card Holder Name missing";
570
- errorMessages["card"]["cardNumber"] = "Card Number invalid or missing";
571
- errorMessages["card"]["expiryMonth"] = "Expiry Month missing";
572
- errorMessages["card"]["expiryYear"] = "Expiry Year missing";
573
- errorMessages["card"]["cvcCode"] = "CVC/CVV/CID missing";
574
- errorMessages["card"]["generic"] = "Please enter your card details";
575
-
576
-
577
- var cvcinfo = new Array();
578
- cvcinfo["mc"] = "<h3>What is CVC?<\/h3>" +
133
+
134
+ <script type="text/javascript">
135
+ var collapsecard = new animatedcollapse("pmmdetails-card", 1000, false, false, config["pmmanimation"]==1?false:true);
136
+ details.push(collapsecard);
137
+
138
+ displayAmountExtras['card'] = "";
139
+
140
+
141
+
142
+ if (notNull(document.getElementById('pmmform-card'))) {
143
+ document.getElementById('pmmform-card').setAttribute("autocomplete","off");
144
+ }
145
+ </script>
146
+
147
+
148
+ <!-- useNewCardId = true, groupName = card -->
149
+
150
+ <script type="text/javascript">
151
+ //<![CDATA[
152
+ /* Form validation */
153
+ requiredFields["card"] = new Array();
154
+ requiredFields["card"].push( "card.cardHolderName" );
155
+ requiredFields["card"].push( "card.cardNumber" );
156
+ requiredFields["card"].push( "card.expiryMonth" );
157
+ requiredFields["card"].push( "card.expiryYear" );
158
+ errorMessages["card"] = new Array();
159
+ errorMessages["card"][ "card.cardHolderName" ] = "Card Holder Name missing";
160
+ errorMessages["card"][ "card.cardNumber" ] = "Card Number invalid or missing";
161
+ errorMessages["card"][ "card.expiryMonth" ] = "Expiry Month missing";
162
+ errorMessages["card"][ "card.expiryYear" ] = "Expiry Year missing";
163
+ errorMessages["card"][ "card.cvcCode" ] = "CVC/CVV/CID missing";
164
+ errorMessages["card"]["generic"] = "Please enter your card details";
165
+
166
+
167
+
168
+
169
+
170
+
171
+ var card_cvcinfo = new Array();
172
+ card_cvcinfo["mc"] = "<h3>What is CVC?<\/h3>" +
579
173
  "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVC_mini.jpg\" alt=\"CVC location\" />" +
580
- "The Card Validation Code (CVC) is an <i>additional<\/i> " +
174
+ "The Card Validation Code (CVC) is an <i>additional<\/i> " +
581
175
  "three-digit security code that is printed (not embossed) on the back " +
582
176
  "of your card.<\/p>" +
583
177
  "<p>The CVC is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
584
- cvcinfo["visa"] = "<h3>What is CVV?<\/h3>" +
178
+ card_cvcinfo["maestro"] = "<h3>What is CVC?<\/h3>" +
179
+ "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVC_mini.jpg\" alt=\"CVC location\" />" +
180
+ "The Card Validation Code (CVC) is an <i>additional<\/i> " +
181
+ "three-digit security code that is printed (not embossed) on the back " +
182
+ "of your card.<\/p>" +
183
+ "<p>The CVC is an extra security measure to ensure that you are in possession of the card." +
184
+ "<\/p><br style=\"clear: both\" />";
185
+ card_cvcinfo["visa"] = "<h3>What is CVV?<\/h3>" +
585
186
  "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CVV_mini.jpg\" alt=\"CVV location\" />" +
586
- "The Card Verification Value (CVV) is an <i>additional<\/i> " +
187
+ "The Card Verification Value (CVV) is an <i>additional<\/i> " +
587
188
  "three-digit security code that is printed (not embossed) on the back " +
588
189
  "of your card.<\/p>" +
589
190
  "<p>The CVV is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
590
- cvcinfo["amex"] = "<h3>What is CID?<\/h3>" +
191
+ card_cvcinfo["amex"] = "<h3>What is CID?<\/h3>" +
591
192
  "<p><img style=\"margin-right: 5px\" class=\"fl\" src=\"/hpp/img/CID_mini.jpg\" alt=\"CID location\" />" +
592
- "The Card IDentification (CID) is an <i>additional<\/i> " +
193
+ "The Card IDentification (CID) is an <i>additional<\/i> " +
593
194
  "four-digit security code that is printed (not embossed) on the front " +
594
195
  "of your card.<\/p>" +
595
196
  "<p>The CID is an extra security measure to ensure that you are in possession of the card.<\/p><br style=\"clear: both\" />";
596
- cvcinfo["card"] = "<h3>What is CVC\/CVV\/CID?<\/h3>" +
597
- "<p>The Card Security Code (CVC\/CVV\/CID) is an <i>additional<\/i> " +
197
+ card_cvcinfo["card"] = "<h3>What is CVC\/CVV\/CID?<\/h3>" +
198
+ "<p>The Card Security Code (CVC\/CVV\/CID) is an <i>additional<\/i> " +
598
199
  "three or four digit security code that is printed (not embossed) on the front or the back " +
599
200
  "of your card.<\/p>" +
600
- "<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\" />";
201
+ "<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\" />";
601
202
 
203
+ // pass these arround, instead of just using
602
204
  var card_types = new Array();
603
205
  var card_logos = new Array();
604
206
  var card_displayAmountExtras = new Array();
605
207
  var card_extras = new Array();
606
- var previousCardNumber ="";
208
+ var card_previousCardNumber ="";
607
209
  var card_subVariantExtras = new Object();
608
210
  var card_subVariantExtrasPhrase = new Object();
609
- var originalExtraCostPhrase = document.getElementById('pmmextracosts-card').innerHTML;
211
+ var card_extraCostDivId = 'pmmextracosts-card';
212
+ var card_originalExtraCostPhrase = document.getElementById(card_extraCostDivId).innerHTML;
610
213
 
611
- card_types.push("vias");
612
- card_logos.push("/img/pm/vias");
613
- card_displayAmountExtras.push("");
614
- card_extras.push("");
615
214
 
616
- card_subVariantExtras['vias'] = "";
617
- card_subVariantExtrasPhrase['vias'] = "";
618
- card_types.push("amex");
215
+ card_types.push("amex");
619
216
  card_logos.push("/img/pm/amex");
620
217
  card_displayAmountExtras.push("");
621
218
  card_extras.push("");
622
-
219
+
623
220
  card_subVariantExtras['amex'] = "";
624
221
  card_subVariantExtrasPhrase['amex'] = "";
625
222
  card_types.push("mc");
626
223
  card_logos.push("/img/pm/mc");
627
224
  card_displayAmountExtras.push("");
628
225
  card_extras.push("");
629
-
226
+
630
227
  card_subVariantExtras['mcatm'] = "";
631
228
  card_subVariantExtrasPhrase['mcatm'] = "";
632
229
  card_subVariantExtras['mccredit'] = "";
@@ -639,25 +236,31 @@ errorMessages["card"]["generic"] = "Please enter your card details";
639
236
  card_subVariantExtrasPhrase['bijcard'] = "";
640
237
  card_subVariantExtras['cirrus'] = "";
641
238
  card_subVariantExtrasPhrase['cirrus'] = "";
642
- card_subVariantExtras['mcpro'] = "";
643
- card_subVariantExtrasPhrase['mcpro'] = "";
239
+ card_subVariantExtras['maestrouk'] = "";
240
+ card_subVariantExtrasPhrase['maestrouk'] = "";
241
+ card_subVariantExtras['mcalphabankbonus'] = "";
242
+ card_subVariantExtrasPhrase['mcalphabankbonus'] = "";
644
243
  card_subVariantExtras['bcmc'] = "";
645
244
  card_subVariantExtrasPhrase['bcmc'] = "";
646
- card_subVariantExtras['mccommercialcredit'] = "";
647
- card_subVariantExtrasPhrase['mccommercialcredit'] = "";
245
+ card_subVariantExtras['mcpro'] = "";
246
+ card_subVariantExtrasPhrase['mcpro'] = "";
648
247
  card_subVariantExtras['mcdebit'] = "";
649
248
  card_subVariantExtrasPhrase['mcdebit'] = "";
650
249
  card_subVariantExtras['mccorporate'] = "";
651
250
  card_subVariantExtrasPhrase['mccorporate'] = "";
251
+ card_subVariantExtras['mccommercialcredit'] = "";
252
+ card_subVariantExtrasPhrase['mccommercialcredit'] = "";
652
253
  card_types.push("visa");
653
254
  card_logos.push("/img/pm/visa");
654
255
  card_displayAmountExtras.push("");
655
256
  card_extras.push("");
656
-
657
- card_subVariantExtras['visacorporate'] = "";
658
- card_subVariantExtrasPhrase['visacorporate'] = "";
659
- card_subVariantExtras['travelmoney'] = "";
257
+
258
+ card_subVariantExtras['travelmoney'] = "";
660
259
  card_subVariantExtrasPhrase['travelmoney'] = "";
260
+ card_subVariantExtras['visacorporate'] = "";
261
+ card_subVariantExtrasPhrase['visacorporate'] = "";
262
+ card_subVariantExtras['visaalphabankbonus'] = "";
263
+ card_subVariantExtrasPhrase['visaalphabankbonus'] = "";
661
264
  card_subVariantExtras['visabusiness'] = "";
662
265
  card_subVariantExtrasPhrase['visabusiness'] = "";
663
266
  card_subVariantExtras['visahipotecario'] = "";
@@ -678,160 +281,192 @@ errorMessages["card"]["generic"] = "Please enter your card details";
678
281
  card_subVariantExtrasPhrase['electron'] = "";
679
282
  card_subVariantExtras['visacommercialcredit'] = "";
680
283
  card_subVariantExtrasPhrase['visacommercialcredit'] = "";
284
+ card_subVariantExtras['vpay'] = "";
285
+ card_subVariantExtrasPhrase['vpay'] = "";
681
286
  card_subVariantExtras['visagold'] = "";
682
287
  card_subVariantExtrasPhrase['visagold'] = "";
683
288
  card_subVariantExtras['visa'] = "";
684
289
  card_subVariantExtrasPhrase['visa'] = "";
290
+ card_subVariantExtras['visadankort'] = "";
291
+ card_subVariantExtrasPhrase['visadankort'] = "";
685
292
  card_subVariantExtras['visadebit'] = "";
686
293
  card_subVariantExtrasPhrase['visadebit'] = "";
687
-
688
-
294
+ card_types.push("maestro");
295
+ card_logos.push("/img/pm/maestro");
296
+ card_displayAmountExtras.push("");
297
+ card_extras.push("");
298
+
299
+ card_subVariantExtras['maestro'] = "";
300
+ card_subVariantExtrasPhrase['maestro'] = "";
301
+ card_subVariantExtras['maestrouk'] = "";
302
+ card_subVariantExtrasPhrase['maestrouk'] = "";
303
+ card_subVariantExtras['bcmc'] = "";
304
+ card_subVariantExtrasPhrase['bcmc'] = "";
305
+
306
+
689
307
  var baseURL = "/hpp/";
690
308
  if(baseURL.indexOf(";jsession") != -1) {
691
309
  baseURL = baseURL.substr(0,baseURL.indexOf(";jsession"));
692
310
  }
693
311
 
694
- function validateCcNumber(e, dontHideErrorFrame) {
695
- cardNumber = (document.getElementById('card.cardNumber').value);
696
-
697
- if(cardNumber.length <= previousCardNumber.length) {
698
- previousCardNumber = cardNumber;
699
- if (cardNumber.length == 0) {
700
- resetExtraCost();
701
- }
312
+ function card_validateCcNumber(e, groupName, group_types, group_logos, group_subVariantExtras, group_subVariantExtrasPhrase, dontHideErrorFrame) {
313
+ cardNumber = (document.getElementById( 'card.cardNumber' ).value);
314
+
315
+ // empty card field - reset all
316
+ if (cardNumber.length == 0) {
317
+ card_previousCardNumber = cardNumber;
318
+ card_resetExtraCost(groupName);
319
+ card_setCardBrand(null, false, groupName, group_types, group_logos);
702
320
  return;
703
321
  }
322
+
323
+ // When editing the card (but not adding digits at the end), don't display validation error(s) and don't reformat the number
704
324
  var l=0;
705
- while(l < previousCardNumber.length) {
706
- if(cardNumber[l] != previousCardNumber[l]) {
707
- previousCardNumber = cardNumber;
325
+ while(l < card_previousCardNumber.length && l < cardNumber.length) {
326
+ if(cardNumber[l] != card_previousCardNumber[l]) {
327
+ card_previousCardNumber = cardNumber;
708
328
  return;
709
- }
329
+ }
710
330
  l++;
711
331
  }
712
332
 
333
+ // remove all whitespace
713
334
  reg = /\s+/g;
714
335
  cardNumber = cardNumber.replace(reg,'');
715
-
336
+
716
337
  nrOfDigits = cardNumber.length;
717
-
718
338
  if(nrOfDigits > 19){
719
- ccNumberPresentation(false);
339
+ card_ccNumberPresentation(false, groupName);
720
340
  return;
721
341
  }
722
-
723
- ccNumberPresentation(true,dontHideErrorFrame);
724
-
725
- baseCard = getBaseCard(cardNumber,card_types);
342
+
343
+ card_ccNumberPresentation(true, groupName, dontHideErrorFrame);
344
+
345
+ baseCard = getBaseCard(cardNumber, group_types);
726
346
  if(baseCard != null) {
727
- setCardBrand(baseCard, true);
347
+ card_setCardBrand(baseCard, true, groupName, group_types, group_logos);
728
348
  } else if(nrOfDigits > 4) {
729
- setCardBrand(null, true);
730
- ccNumberPresentation(false);
349
+ card_setCardBrand(null, true, groupName, group_types, group_logos);
350
+ card_ccNumberPresentation(false,groupName);
731
351
  } else {
732
- setCardBrand(null, false);
352
+ card_setCardBrand(null, false, groupName, group_types, group_logos);
733
353
  }
734
354
 
735
- if (cardNumber.length < 6) {
736
- setExtraCost(baseCard, null);
737
- } else if (cardNumber.length == 6 || cardNumber.length == 9 || cardNumber.length == 12){
355
+ if (nrOfDigits < 6) {
356
+ card_setExtraCost(baseCard, null, groupName, group_types, group_subVariantExtras, group_subVariantExtrasPhrase);
357
+ } else if (nrOfDigits == 6 || nrOfDigits == 9 || nrOfDigits == 12 || nrOfDigits == 16){
738
358
  _.X("/hpp/binLookup.shtml",function(d,r){
739
359
  if(r.status != 200 || d.indexOf('"result"') == -1) return false;
740
360
  var response=eval("("+d+")");
741
-
361
+
742
362
  if(typeof(response.result)=='undefined') return false;
743
-
363
+
744
364
  if (response.result == 0) {
745
365
  lookedUpCardType = response.cardType;
746
366
  } else {
747
- lookedUpCardType = null;
367
+ lookedUpCardType = null;
748
368
  }
749
- setExtraCost(baseCard, lookedUpCardType);
750
-
369
+ card_setExtraCost(baseCard, lookedUpCardType, groupName, group_types, group_subVariantExtras, group_subVariantExtrasPhrase);
370
+
751
371
  return true;
752
372
  }, 'bin='+cardNumber+'&'+_.Q(_.G("pageform")));
753
373
  }
754
-
374
+
755
375
  //show value with white space after four numbers
756
376
  result = cardNumber.replace(/(\d{4})/g, '$1 ');
757
377
  result = result.replace(/\s+$/, ''); //remove trailing spaces
758
-
759
- previousCardNumber = result;
760
- document.getElementById('card.cardNumber').value = result;
378
+
379
+ card_previousCardNumber = result;
380
+ document.getElementById( 'card.cardNumber' ).value = result;
761
381
  }
762
382
 
763
- function setExtraCost(selectedCard, lookedUpCard) {
383
+ function card_setExtraCost(selectedCard, lookedUpCard, groupName, group_types, group_subVariantExtras, group_subVariantExtrasPhrase) {
764
384
  var extraCostDisplayed = false;
765
- if (lookedUpCard != null && card_subVariantExtras[lookedUpCard] != null) {
766
- document.getElementById('extraCostAmount').innerHTML = card_subVariantExtras[lookedUpCard];
767
- displayAmountExtras['card'] = card_subVariantExtras[lookedUpCard];
768
- document.getElementById('pmmextracosts-card').innerHTML = card_subVariantExtrasPhrase[lookedUpCard];
385
+ if (lookedUpCard != null && group_subVariantExtras[lookedUpCard] != null) {
386
+ document.getElementById('extraCostAmount').innerHTML = group_subVariantExtras[lookedUpCard];
387
+ displayAmountExtras[groupName] = group_subVariantExtras[lookedUpCard];
388
+ document.getElementById(card_extraCostDivId).innerHTML = group_subVariantExtrasPhrase[lookedUpCard];
769
389
  extraCostDisplayed = true;
770
390
  } else {
771
- for(var i = 0; i < card_types.length; ++i) {
772
- if(selectedCard != null && card_types[i] == selectedCard.cardtype && card_subVariantExtras[selectedCard.cardtype] != null) {
773
- document.getElementById('extraCostAmount').innerHTML = card_subVariantExtras[selectedCard.cardtype];
774
- displayAmountExtras['card'] = card_subVariantExtras[selectedCard.cardtype];
775
- document.getElementById('pmmextracosts-card').innerHTML = card_subVariantExtrasPhrase[selectedCard.cardtype];
391
+ for(var i = 0; i < group_types.length; ++i) {
392
+ if(selectedCard != null && group_types[i] == selectedCard.cardtype && group_subVariantExtras[selectedCard.cardtype] != null) {
393
+ document.getElementById('extraCostAmount').innerHTML = group_subVariantExtras[selectedCard.cardtype];
394
+ displayAmountExtras[groupName] = group_subVariantExtras[selectedCard.cardtype];
395
+ document.getElementById(card_extraCostDivId).innerHTML = group_subVariantExtrasPhrase[selectedCard.cardtype];
776
396
  extraCostDisplayed = true;
777
397
  }
778
398
  }
779
399
  }
780
-
400
+
781
401
  if (!extraCostDisplayed) {
782
- resetExtraCost();
402
+ card_resetExtraCost(groupName);
783
403
  }
784
404
  }
785
405
 
786
- function resetExtraCost() {
406
+ function card_resetExtraCost(groupName) {
407
+ // groupName is not used anymore
787
408
  displayAmountExtras['card'] = "";
788
409
  document.getElementById('extraCostAmount').innerHTML = "";
789
- document.getElementById('pmmextracosts-card').innerHTML = originalExtraCostPhrase;
410
+ document.getElementById(card_extraCostDivId).innerHTML = card_originalExtraCostPhrase;
790
411
  }
791
412
 
792
- function setCardBrand(selectedCard, greyInactive) {
413
+ function card_setCardBrand(selectedCard, greyInactive, groupName, group_types, group_logos) {
793
414
 
794
- for(var i = 0; i < card_types.length; ++i) {
795
- var imageId = "cclogo" + i;
796
- if(selectedCard != null && card_types[i] == selectedCard.cardtype) {
797
- document.getElementById(imageId).src=baseURL + card_logos[i] + "_small.png";
415
+ for(var i = 0; i < group_types.length; ++i) {
416
+ var imageId = 'card.cclogo' + i;
417
+ if(selectedCard != null && group_types[i] == selectedCard.cardtype) {
418
+ document.getElementById(imageId).src=baseURL + group_logos[i] + "_small.png";
798
419
  } else {
799
420
  if(greyInactive) {
800
- document.getElementById(imageId).src=baseURL + card_logos[i] + "_small_grey.png";
421
+ document.getElementById(imageId).src=baseURL + group_logos[i] + "_small_grey.png";
801
422
  } else {
802
- document.getElementById(imageId).src=baseURL + card_logos[i] + "_small.png";
423
+ document.getElementById(imageId).src=baseURL + group_logos[i] + "_small.png";
803
424
  }
804
425
  }
805
426
  document.getElementById(imageId).style.display="inline";
806
427
  }
807
- if(selectedCard != null) {
808
- if(selectedCard.cardtype == "amex") {
809
- document.getElementById("cvcCode").maxLength = 4;
810
- document.getElementById('cvcName').innerHTML = "CID";
811
- document.getElementById('cvcWhatIs').innerHTML = "What is CID?";
812
- document.getElementById('cvcFrame').innerHTML = cvcinfo["amex"];
813
- } else if (selectedCard.cardtype == "visa" || selectedCard.cardtype == "electron") {
814
- document.getElementById("cvcCode").maxLength = 3;
815
- document.getElementById('cvcName').innerHTML = "CVV";
816
- document.getElementById('cvcWhatIs').innerHTML = "What is CVV?";
817
- document.getElementById('cvcFrame').innerHTML = cvcinfo["visa"];
818
- } else if (selectedCard.cardtype == "mc" || selectedCard.cardtype == "maestro" || selectedCard.cardtype == "maestrouk" || selectedCard.cardtype == "solo" ) {
819
- document.getElementById("cvcCode").maxLength = 3;
820
- document.getElementById('cvcName').innerHTML = "CVC";
821
- document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
822
- document.getElementById('cvcFrame').innerHTML = cvcinfo["mc"];
428
+
429
+ card_setCvcElement(selectedCard != null ? selectedCard.cardtype : null, groupName);
430
+ }
431
+
432
+ function card_setCvcElement(selectedCardType, groupName) {
433
+ // for tokenising, the cvc element is not displayed, so check before using it
434
+ var cvcCodeElem = document.getElementById( 'card.cvcCode' );
435
+ if(selectedCardType != null && cvcCodeElem != null) {
436
+ if(selectedCardType == "amex") {
437
+ cvcCodeElem.maxLength = 4;
438
+ document.getElementById( 'card.cvcName' ).innerHTML = "CID";
439
+ document.getElementById( 'card.cvcWhatIs' ).innerHTML = "What is CID?";
440
+ document.getElementById( 'card.cvcFrame' ).innerHTML = card_cvcinfo["amex"];
441
+ } else if (selectedCardType == "visa" || selectedCardType == "electron" || selectedCardType == "visadankort" || selectedCardType == "visaalphabankbonus") {
442
+ cvcCodeElem.maxLength = 3;
443
+ document.getElementById( 'card.cvcName' ).innerHTML = "CVV";
444
+ document.getElementById( 'card.cvcWhatIs' ).innerHTML = "What is CVV?";
445
+ document.getElementById( 'card.cvcFrame' ).innerHTML = card_cvcinfo["visa"];
446
+ } else if (selectedCardType == "mc" || selectedCardType == "maestrouk" || selectedCardType == "solo" || selectedCardType == "bijcard" || selectedCardType == "elo" || selectedCardType == "mcalphabankbonus") {
447
+ cvcCodeElem.maxLength = 3;
448
+ document.getElementById( 'card.cvcName' ).innerHTML = "CVC";
449
+ document.getElementById( 'card.cvcWhatIs' ).innerHTML = "What is CVC?";
450
+ document.getElementById( 'card.cvcFrame' ).innerHTML = card_cvcinfo["mc"];
451
+ } else if (selectedCardType == "maestro") {
452
+ cvcCodeElem.maxLength = 3;
453
+ document.getElementById( 'card.cvcName' ).innerHTML = "CVC";
454
+ document.getElementById( 'card.cvcWhatIs' ).innerHTML = "What is CVC?";
455
+ document.getElementById( 'card.cvcFrame' ).innerHTML = card_cvcinfo["maestro"];
823
456
  } else {
824
- document.getElementById("cvcCode").maxLength = 3;
825
- document.getElementById('cvcName').innerHTML = "CVC";
826
- document.getElementById('cvcWhatIs').innerHTML = "What is CVC?";
827
- document.getElementById('cvcFrame').innerHTML = cvcinfo["card"];
828
- }
457
+ cvcCodeElem.maxLength = 3;
458
+ document.getElementById( 'card.cvcName' ).innerHTML = "CVC";
459
+ document.getElementById( 'card.cvcWhatIs' ).innerHTML = "What is CVC?";
460
+ document.getElementById( 'card.cvcFrame' ).innerHTML = card_cvcinfo[groupName];
461
+ }
829
462
  }
830
463
  }
831
464
 
832
- function ccNumberPresentation(valid, dontHideErrorFrame){
465
+
466
+ function card_ccNumberPresentation(valid, groupName, dontHideErrorFrame){
467
+ // groupName is not used anymore
833
468
  var errors = new Array();
834
- errors.push("cardNumber");
469
+ errors.push( 'card.cardNumber' );
835
470
  if(valid){
836
471
  clearErrors(errors, dontHideErrorFrame);
837
472
  }
@@ -840,201 +475,169 @@ errorMessages["card"]["generic"] = "Please enter your card details";
840
475
  }
841
476
  }
842
477
 
843
- function blockNonNumbers(e) {
844
- var key;
845
- var isCtrl = false;
846
- var keychar;
847
- var reg;
848
-
849
- if(window.event) {
850
- key = e.keyCode;
851
- isCtrl = window.event.ctrlKey
852
- }
853
- else if(e.which) {
854
- key = e.which;
855
- isCtrl = e.ctrlKey;
856
- }
857
-
858
- if (isNaN(key)) return true;
859
-
860
- keychar = String.fromCharCode(key);
861
-
862
- // check for backspace or delete, or if Ctrl was pressed
863
- if (key == 8 || isCtrl) {
864
- return true;
478
+ function card_doCCCheck(groupName){
479
+ // groupName is not used anymore
480
+ var cardNumberField = document.getElementById( 'card.cardNumber' );
481
+ if(card_isCardNumberValid(cardNumberField)) {
482
+ card_ccNumberPresentation(true,groupName);
483
+ } else {
484
+ card_ccNumberPresentation(false,groupName);
865
485
  }
866
-
867
- reg = /[\d ]/;
868
-
869
- return reg.test(keychar);
870
486
  }
871
-
872
- validationFunctions
873
- function doCCCheck(){
874
- cardNumber = (document.getElementById('card.cardNumber').value);
487
+
488
+ function card_isCardNumberValid(cardNumberField){
489
+ cardNumber = cardNumberField.value;
875
490
  reg = /\s+/g;
876
491
  cardNumber = cardNumber.replace(reg,'');
877
- if(!luhnCheck(cardNumber))
878
- ccNumberPresentation(false);
879
- else
880
- ccNumberPresentation(true);
881
- }
492
+ if(cardNumber == "" || luhnCheck(cardNumber)){
493
+ return true;
494
+ }
495
+ return false;
496
+ }
882
497
 
883
498
  validationFunctions["card"] = new Array();
884
- validationFunctions["card"]["cardNumber"] = function (cardNumberField) {
885
- cardNumber = cardNumberField.value;
886
- reg = /\s+/g;
887
- cardNumber = cardNumber.replace(reg,'');
888
- if(cardNumber == "" || luhnCheck(cardNumber)){
889
- return true;
890
- }
891
- return false;
892
- }
499
+ validationFunctions["card"][ "card.cardNumber" ] = card_isCardNumberValid;
893
500
 
894
501
 
895
502
 
896
- //]]>
897
- </script>
503
+ //]]>
504
+ </script>
505
+
506
+
507
+ <table class="basetable">
898
508
 
899
- <table class="basetable">
900
- <tr>
901
- <td class="mid"><div id="cclogoheader" style="display: none">Card Type</div></td>
902
509
 
510
+
511
+ <tr id="card.cclogoTr" >
512
+ <td class="mid">
513
+ <div id="card.cclogoheader" style="display: none">Card Type</div>
514
+ </td>
903
515
  <td class="mid">
904
- <div style="height: 25px" id="cclogo">
905
- <img alt="" id="cclogo0" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
906
- <img alt="" id="cclogo1" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
907
- <img alt="" id="cclogo2" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
908
- <img alt="" id="cclogo3" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
909
- <img alt="" id="cclogo4" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
910
- <img alt="" id="cclogo5" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
911
- <img alt="" id="cclogo6" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
912
-
913
- <img alt="" id="cclogo7" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
914
- <img alt="" id="cclogo8" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
516
+ <div style="height: 25px" id="card.cclogo" >
517
+ <img alt="" id="card.cclogo0" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
518
+ <img alt="" id="card.cclogo1" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
519
+ <img alt="" id="card.cclogo2" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
520
+ <img alt="" id="card.cclogo3" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
521
+ <img alt="" id="card.cclogo4" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
522
+ <img alt="" id="card.cclogo5" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
523
+ <img alt="" id="card.cclogo6" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
524
+ <img alt="" id="card.cclogo7" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
525
+ <img alt="" id="card.cclogo8" style="display: none" class="mid" src="/hpp/img/pm/unknown_small.png" />
915
526
  <script type="text/javascript">
916
- setCardBrand(null, false);
527
+ card_setCardBrand(null, false, 'card', card_types, card_logos);
917
528
  </script>
918
529
  </div>
919
530
  </td>
920
- </tr>
921
- <tr id="cardNumberTr">
922
- <td><div>Card Number</div></td>
923
- <td><div class="fieldDiv"><input type="text" class="inputField" id="cardNumber"
924
- onkeypress="return blockNonNumbers(event)" onkeyup="validateCcNumber(event)" onblur="validateCcNumber(event)" onchange="doCCCheck()"
925
- name="cardNumber" value="" size="24" maxlength="23"
531
+ </tr>
532
+
533
+ <tr id="card.cardNumberTr" >
534
+ <td class="cardNumberTitle"><div>Card Number</div></td>
535
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="card.cardNumber" onkeypress="return blockNonNumberEvents(event)"
536
+ onkeyup="card_validateCcNumber(event, 'card', card_types, card_logos, card_subVariantExtras, card_subVariantExtrasPhrase)"
537
+ onchange="card_validateCcNumber(event, 'card', card_types, card_logos, card_subVariantExtras, card_subVariantExtrasPhrase) ; card_doCCCheck('card')"
538
+ name="card.cardNumber" value="" size="24" maxlength="23"
926
539
  /></div></td>
927
-
928
- </tr>
929
- <tr>
540
+ </tr>
541
+ <tr>
930
542
  <td><div>Card Holder Name</div></td>
931
- <td><div class="fieldDiv"><input type="text" class="inputField" id="cardHolderName" name="cardHolderName" value="" size="19" maxlength="30" /></div></td>
932
- </tr>
543
+ <td><div class="fieldDiv">
544
+ <input type="text" class="inputField" id="card.cardHolderName" name="card.cardHolderName" value="" size="19" maxlength="30" />
545
+ </div></td>
546
+ </tr>
933
547
 
934
- <tr>
548
+ <tr>
935
549
  <td><div>Card Expiry Date</div></td><td>
936
- <div class="fieldDiv">
937
- <select class="inputField" name="expiryMonth" id="expiryMonth" size="1">
938
-
939
- <option value="*">&nbsp;</option>
940
- <option value="01">01</option>
941
- <option value="02">02</option>
942
- <option value="03">03</option>
943
- <option value="04">04</option>
944
- <option value="05">05</option>
945
-
946
- <option value="06">06</option>
947
- <option value="07">07</option>
948
- <option value="08">08</option>
949
- <option value="09">09</option>
950
- <option value="10">10</option>
951
- <option value="11">11</option>
952
-
953
- <option value="12">12</option>
954
- </select>
955
- &nbsp;/&nbsp;
956
- <select class="inputField" name="expiryYear" id="expiryYear" size="1">
957
- <option value="*">&nbsp;</option>
958
- <option value="2011">2011</option>
959
- <option value="2012">2012</option>
960
-
961
- <option value="2013">2013</option>
962
- <option value="2014">2014</option>
963
- <option value="2015">2015</option>
964
- <option value="2016">2016</option>
965
- <option value="2017">2017</option>
966
- <option value="2018">2018</option>
967
-
968
- <option value="2019">2019</option>
969
- <option value="2020">2020</option>
970
- <option value="2021">2021</option>
971
- <option value="2022">2022</option>
972
- <option value="2023">2023</option>
973
- <option value="2024">2024</option>
974
-
975
- <option value="2025">2025</option>
976
- <option value="2026">2026</option>
977
- <option value="2027">2027</option>
978
- </select>
550
+ <div class="fieldDiv" id="card.expiryContainer" >
551
+ <select class="inputField" name="card.expiryMonth" id="card.expiryMonth" size="1">
552
+ <option value="">&nbsp;</option>
553
+ <option value="01">01</option>
554
+ <option value="02">02</option>
555
+ <option value="03">03</option>
556
+ <option value="04">04</option>
557
+ <option value="05">05</option>
558
+ <option value="06">06</option>
559
+ <option value="07">07</option>
560
+ <option value="08">08</option>
561
+ <option value="09">09</option>
562
+ <option value="10">10</option>
563
+ <option value="11">11</option>
564
+ <option value="12">12</option>
565
+ </select>
566
+ &nbsp;/&nbsp;
567
+ <select class="inputField" name="card.expiryYear" id="card.expiryYear" size="1">
568
+ <option value="">&nbsp;</option>
569
+ <option value="2014">2014</option>
570
+ <option value="2015">2015</option>
571
+ <option value="2016">2016</option>
572
+ <option value="2017">2017</option>
573
+ <option value="2018">2018</option>
574
+ <option value="2019">2019</option>
575
+ <option value="2020">2020</option>
576
+ <option value="2021">2021</option>
577
+ <option value="2022">2022</option>
578
+ <option value="2023">2023</option>
579
+ <option value="2024">2024</option>
580
+ <option value="2025">2025</option>
581
+ <option value="2026">2026</option>
582
+ <option value="2027">2027</option>
583
+ <option value="2028">2028</option>
584
+ <option value="2029">2029</option>
585
+ <option value="2030">2030</option>
586
+ <option value="2031">2031</option>
587
+ <option value="2032">2032</option>
588
+ <option value="2033">2033</option>
589
+ <option value="2034">2034</option>
590
+ <option value="2035">2035</option>
591
+ <option value="2036">2036</option>
592
+ <option value="2037">2037</option>
593
+ <option value="2038">2038</option>
594
+ </select>
979
595
  </div>
980
596
  </td>
981
- </tr>
597
+ </tr>
982
598
 
983
- <tr>
984
- <td><div id="cvcName">CVC/CVV/CID</div></td>
985
- <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>
986
- </tr>
599
+ <tr>
600
+ <td><!-- brandCodeUndef --><div id="card.cvcName" >CVC/CVV/CID </div></td>
601
+ <td><div class="fieldDiv"><input class="inputField" type="text" name="card.cvcCode" value="" id="card.cvcCode" size="7" maxlength="3" /> &nbsp;
602
+ <a href="#" onclick="return toggleElement( 'card.cvcFrame' );">
603
+ <span id="card.cvcWhatIs" >What is CVC/CVV/CID?</span></a></div></td>
604
+ </tr>
605
+
606
+
987
607
 
988
608
 
989
609
  <tr>
990
610
  <td colspan="2"><div class="r">
991
611
  <input class="paySubmit paySubmitcard" type="submit" name="pay" value="pay" />
992
-
993
612
  </div></td>
994
613
  </tr>
995
- </table>
996
-
614
+ </table>
997
615
 
998
- <div class="popupMsg popupMsgOPP " style="display: none;" onclick="return hideElement('cvcFrame');" id="cvcFrame">
616
+ <div class="popupMsg popupMsgOPP " style="display: none;" onclick="return hideElement( 'card.cvcFrame' );" id="card.cvcFrame" >
999
617
  <h3>What is CVC/CVV/CID?</h3>
1000
618
  <p>The Card Security Code (CVC/CVV/CID) is an <i>additional</i>
1001
619
  three or four digit security code that is printed (not embossed) on the front or the back
1002
620
  of your card.</p>
1003
-
1004
621
  <p>The CVC/CVV/CID is an extra security measure to ensure that you are in possession of the card.</p>
1005
- </div>
1006
-
622
+ </div>
1007
623
 
1008
- <script type="text/javascript">
1009
- //<![CDATA[
1010
624
 
1011
- if(document.getElementById('card.cardNumber').value.length > 0) {
1012
- var validateCcNumberTimer = setTimeout('validateCcNumber(null,true)', 2500);
625
+ <script type="text/javascript">
626
+ //<![CDATA[
627
+ if(document.getElementById( "card.cardNumber" ).value.length > 0) {
628
+ var validateCcNumberTimer = setTimeout("card_validateCcNumber(null, 'card', card_types, card_logos, card_subVariantExtras, card_subVariantExtrasPhrase, true)", 2500);
1013
629
  }
630
+ //]]>
631
+ </script>
1014
632
 
1015
- //]]>
1016
- </script>
1017
-
1018
- <script type="text/javascript">
1019
- var collapsecard = new animatedcollapse("pmmdetails-card", 1000, false, false, config["pmmanimation"]==1?false:true);
1020
- details.push(collapsecard);
1021
-
1022
- displayAmountExtras['card'] = "";
1023
-
1024
-
1025
-
1026
-
1027
- if (notNull(document.getElementById('pmmform-card'))) {
1028
- document.getElementById('pmmform-card').setAttribute("autocomplete","off");
1029
- }
1030
- </script>
1031
- </div>
633
+ </div>
1032
634
  </li>
1033
635
 
636
+
637
+
1034
638
  <li style="list-style-type: none;">
1035
-
1036
639
  <input type="submit" name="brandName" value="iDEAL" class="imgB pmB pmBideal"
1037
-
640
+
1038
641
  onclick="return show(collapseideal, 'redirectIdeal.shtml', 'ideal', 'ideal');"
1039
642
 
1040
643
  />
@@ -1043,16 +646,30 @@ errorMessages["card"]["generic"] = "Please enter your card details";
1043
646
 
1044
647
  <span id="pmidealdescription" class="pmmdescription"></span>
1045
648
  <div id="pmmdetails-ideal" class="pmmdetails">
1046
-
1047
- <script type="text/javascript">
1048
- //<![CDATA[
1049
- /* Form validation */
1050
- errorMessages["ideal"] = new Array();
1051
- errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
1052
- //]]>
1053
- </script>
1054
-
1055
- <style type="text/css">
649
+
650
+ <script type="text/javascript">
651
+ var collapseideal = new animatedcollapse("pmmdetails-ideal", 1000, false, false, config["pmmanimation"]==1?false:true);
652
+ details.push(collapseideal);
653
+
654
+ displayAmountExtras['ideal'] = "";
655
+
656
+
657
+
658
+ if (notNull(document.getElementById('pmmform-ideal'))) {
659
+ document.getElementById('pmmform-ideal').setAttribute("autocomplete","off");
660
+ }
661
+ </script>
662
+
663
+
664
+ <script type="text/javascript">
665
+ //<![CDATA[
666
+ /* Form validation */
667
+ errorMessages["ideal"] = new Array();
668
+ errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
669
+ //]]>
670
+ </script>
671
+
672
+ <style type="text/css">
1056
673
  .idealButton {
1057
674
  width:120px;
1058
675
  height:40px;
@@ -1064,185 +681,1218 @@ errorMessages["ideal"]["idealIssuerId"] = "U heeft een ongeldige bank gekozen";
1064
681
  .idealButtonPadding {
1065
682
  padding-left: 20px;
1066
683
  }
1067
- </style>
1068
-
1069
- <table class="basetable">
1070
-
684
+ </style>
1071
685
 
686
+ <table class="basetable">
1072
687
 
1073
688
 
689
+
690
+
691
+
1074
692
  <tr>
1075
693
  <td>
1076
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK1.png);" value="1121" name="idealIssuer"/>
694
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK1.png);" value="1121" name="idealIssuer"/>
1077
695
  </td>
1078
-
1079
-
1080
-
696
+
697
+
698
+
699
+
1081
700
  <td class="idealButtonPadding">
1082
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK2.png);" value="1151" name="idealIssuer"/>
701
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK2.png);" value="1151" name="idealIssuer"/>
1083
702
  </td>
1084
-
1085
703
  </tr>
1086
-
1087
-
1088
-
704
+
705
+
706
+
707
+
1089
708
  <tr>
1090
709
  <td>
1091
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK3.png);" value="1152" name="idealIssuer"/>
710
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK3.png);" value="1152" name="idealIssuer"/>
1092
711
  </td>
1093
-
1094
-
1095
-
712
+
713
+
714
+
715
+
1096
716
  <td class="idealButtonPadding">
1097
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK4.png);" value="1153" name="idealIssuer"/>
717
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK4.png);" value="1153" name="idealIssuer"/>
1098
718
  </td>
1099
719
  </tr>
1100
-
1101
-
1102
-
1103
-
720
+
721
+
722
+
723
+
1104
724
  <tr>
1105
725
  <td>
1106
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK5.png);" value="1154" name="idealIssuer"/>
726
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK5.png);" value="1154" name="idealIssuer"/>
1107
727
  </td>
1108
-
1109
-
1110
-
728
+
729
+
730
+
731
+
1111
732
  <td class="idealButtonPadding">
1112
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK6.png);" value="1155" name="idealIssuer"/>
733
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK6.png);" value="1155" name="idealIssuer"/>
1113
734
  </td>
1114
735
  </tr>
1115
-
1116
-
1117
-
736
+
737
+
738
+
739
+
1118
740
  <tr>
1119
-
1120
741
  <td>
1121
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK7.png);" value="1156" name="idealIssuer"/>
742
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK7.png);" value="1156" name="idealIssuer"/>
1122
743
  </td>
1123
-
1124
-
1125
-
744
+
745
+
746
+
747
+
1126
748
  <td class="idealButtonPadding">
1127
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK8.png);" value="1157" name="idealIssuer"/>
749
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK8.png);" value="1157" name="idealIssuer"/>
1128
750
  </td>
1129
751
  </tr>
1130
-
1131
-
1132
-
752
+
753
+
754
+
755
+
1133
756
  <tr>
1134
757
  <td>
1135
-
1136
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK9.png);" value="1158" name="idealIssuer"/>
758
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK9.png);" value="1158" name="idealIssuer"/>
1137
759
  </td>
1138
-
1139
-
1140
-
760
+
761
+
762
+
763
+
1141
764
  <td class="idealButtonPadding">
1142
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK10.png);" value="1159" name="idealIssuer"/>
765
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANK10.png);" value="1159" name="idealIssuer"/>
1143
766
  </td>
1144
767
  </tr>
1145
-
1146
-
1147
-
1148
-
768
+
769
+
770
+
771
+
1149
772
  <tr>
1150
773
  <td>
1151
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKREFUSED.png);" value="1160" name="idealIssuer"/>
1152
-
774
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKREFUSED.png);" value="1160" name="idealIssuer"/>
1153
775
  </td>
1154
-
1155
-
1156
-
776
+
777
+
778
+
779
+
1157
780
  <td class="idealButtonPadding">
1158
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKPENDING.png);" value="1161" name="idealIssuer"/>
781
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKPENDING.png);" value="1161" name="idealIssuer"/>
1159
782
  </td>
1160
783
  </tr>
1161
-
1162
-
1163
-
784
+
785
+
786
+
787
+
1164
788
  <tr>
1165
789
  <td>
1166
- <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKCANCELLED.png);" value="1162" name="idealIssuer"/>
790
+ <input type="submit" class="idealButton" style="background-image: url(/hpp/img/pm/TESTBANKCANCELLED.png);" value="1162" name="idealIssuer"/>
1167
791
  </td>
1168
-
1169
-
1170
- <td></td>
1171
- </tr>
1172
- </tr>
1173
-
1174
- <tr>
792
+
793
+ <td>&nbsp;</td>
794
+ </tr>
795
+
796
+ <tr>
1175
797
  <td colspan="2"><div class="fieldDiv">
1176
- <select class="inputField" id="idealIssuerId" name="idealIssuerId">
798
+ <select class="inputField" id="idealIssuerId" name="idealIssuerId" >
1177
799
  <option value="0">Kies uw bank...</option>
1178
800
  <option value="1121">Test Issuer</option>
1179
-
1180
801
  <option value="1151">Test Issuer 2</option>
1181
802
  <option value="1152">Test Issuer 3</option>
1182
803
  <option value="1153">Test Issuer 4</option>
1183
804
  <option value="1154">Test Issuer 5</option>
1184
805
  <option value="1155">Test Issuer 6</option>
1185
806
  <option value="1156">Test Issuer 7</option>
1186
-
1187
807
  <option value="1157">Test Issuer 8</option>
1188
808
  <option value="1158">Test Issuer 9</option>
1189
809
  <option value="1159">Test Issuer 10</option>
1190
- <option value="0">---Overige banken---</option>
1191
- <option value="1160">Test Issuer Refused</option>
1192
- <option value="1161">Test Issuer Pending</option>
1193
-
1194
- <option value="1162">Test Issuer Cancelled</option>
1195
- </select>
1196
- </div></td>
1197
- </tr>
810
+ <option value="1160">Test Issuer Refused</option>
811
+ <option value="1161">Test Issuer Pending</option>
812
+ <option value="1162">Test Issuer Cancelled</option>
813
+ </select>
814
+ </div></td>
815
+ </tr>
1198
816
  <tr>
1199
- <td colspan="2"><div class="r">
817
+ <td colspan="2"><div class="r">
1200
818
  <input class="paySubmit paySubmitideal" type="submit" name="pay" value="continue" />
1201
819
  </div></td>
1202
820
  </tr>
821
+ </table>
822
+ </div>
823
+ </li>
1203
824
 
1204
- </table>
1205
- <script type="text/javascript">
1206
- var collapseideal = new animatedcollapse("pmmdetails-ideal", 1000, false, false, config["pmmanimation"]==1?false:true);
1207
- details.push(collapseideal);
825
+
826
+
827
+ <li style="list-style-type: none;">
828
+ <input type="submit" name="brandName" value="International Bank Transfer" class="imgB pmB pmBbankTransfer_IBAN"
829
+
830
+ onclick="return show(collapsebankTransfer_IBAN, 'completeBankTransferIBAN.shtml', 'bankTransfer_IBAN', 'bankTransfer_IBAN');"
1208
831
 
1209
- displayAmountExtras['ideal'] = "";
832
+ />
833
+ <span id="pmmextracosts-bankTransfer_IBAN" class="pmmextracosts">
834
+ </span>
1210
835
 
836
+ <span id="pmbankTransfer_IBANdescription" class="pmmdescription"></span>
837
+ <div id="pmmdetails-bankTransfer_IBAN" class="pmmdetails">
838
+
839
+ <script type="text/javascript">
840
+ var collapsebankTransfer_IBAN = new animatedcollapse("pmmdetails-bankTransfer_IBAN", 1000, false, false, config["pmmanimation"]==1?false:true);
841
+ details.push(collapsebankTransfer_IBAN);
842
+
843
+ displayAmountExtras['bankTransfer_IBAN'] = "";
844
+
845
+
846
+
847
+ if (notNull(document.getElementById('pmmform-bankTransfer_IBAN'))) {
848
+ document.getElementById('pmmform-bankTransfer_IBAN').setAttribute("autocomplete","off");
849
+ }
850
+ </script>
851
+
852
+ <table class="basetable limitwidth">
853
+ <tr>
854
+ <td>Pay using international bank transfer. You will receive the bank account details and a payment reference for you to transfer the requested amount to on the next page. Your payment will be accepted once we have received the funds.
855
+ </td>
856
+ </tr>
857
+ <tr>
858
+ <td><div class="r">
859
+ <input class="paySubmit paySubmitbankTransfer_IBAN" type="submit" name="pay" value="pay" />
860
+ </div></td>
861
+ </tr>
862
+ </table>
863
+ </div>
864
+ </li>
1211
865
 
866
+
867
+
868
+ <li style="list-style-type: none;">
869
+ <input type="submit" name="brandName" value="Bank Transfer (NL)" class="imgB pmB pmBbankTransfer_NL"
870
+
871
+ onclick="return show(collapsebankTransfer_NL, 'completeBankTransfer.shtml', 'bankTransfer', 'bankTransfer_NL');"
1212
872
 
873
+ />
874
+ <span id="pmmextracosts-bankTransfer_NL" class="pmmextracosts">
875
+ </span>
1213
876
 
1214
- if (notNull(document.getElementById('pmmform-ideal'))) {
1215
- document.getElementById('pmmform-ideal').setAttribute("autocomplete","off");
877
+ <span id="pmbankTransfer_NLdescription" class="pmmdescription"></span>
878
+ <div id="pmmdetails-bankTransfer_NL" class="pmmdetails">
879
+
880
+ <script type="text/javascript">
881
+ var collapsebankTransfer_NL = new animatedcollapse("pmmdetails-bankTransfer_NL", 1000, false, false, config["pmmanimation"]==1?false:true);
882
+ details.push(collapsebankTransfer_NL);
883
+
884
+ displayAmountExtras['bankTransfer'] = "";
885
+
886
+
887
+
888
+ if (notNull(document.getElementById('pmmform-bankTransfer_NL'))) {
889
+ document.getElementById('pmmform-bankTransfer_NL').setAttribute("autocomplete","off");
1216
890
  }
1217
891
  </script>
1218
- </div>
892
+
893
+ <table class="basetable limitwidth">
894
+ <tr>
895
+ <td>Pay using Dutch bank transfer. You will receive the bank account details and a payment reference for you to transfer the requested amount to on the next page. Your payment will be accepted once we have received the funds.
896
+ </td>
897
+ </tr>
898
+ <tr>
899
+ <td><div class="r">
900
+ <input class="paySubmit paySubmitbankTransfer_NL" type="submit" name="pay" value="pay" />
901
+ </div></td>
902
+ </tr>
903
+ </table>
904
+ </div>
1219
905
  </li>
906
+
907
+
908
+
909
+ <li style="list-style-type: none;">
910
+ <input type="submit" name="brandName" value="Eenmalige machtiging" class="imgB pmB pmBdirectdebit_NL"
911
+
912
+ onclick="return show(collapsedirectdebit_NL, 'completeDirectDebit.shtml', 'directdebit_NL', 'directdebit_NL');"
913
+
914
+ />
915
+ <span id="pmmextracosts-directdebit_NL" class="pmmextracosts">
916
+ </span>
917
+
918
+ <span id="pmdirectdebit_NLdescription" class="pmmdescription"></span>
919
+ <div id="pmmdetails-directdebit_NL" class="pmmdetails">
920
+
921
+ <script type="text/javascript">
922
+ var collapsedirectdebit_NL = new animatedcollapse("pmmdetails-directdebit_NL", 1000, false, false, config["pmmanimation"]==1?false:true);
923
+ details.push(collapsedirectdebit_NL);
924
+
925
+ displayAmountExtras['directdebit_NL'] = "";
926
+
927
+
928
+
929
+ if (notNull(document.getElementById('pmmform-directdebit_NL'))) {
930
+ document.getElementById('pmmform-directdebit_NL').setAttribute("autocomplete","off");
931
+ }
932
+ </script>
933
+
934
+ <script type="text/javascript">
935
+ //<![CDATA[
936
+ validationFunctions["directdebit_NL"] = new Array();
937
+ validationFunctions["directdebit_NL"]["directdebit_NL.bankAccountNumber"] = function (bankAccountNumber) {
938
+ var b = bankAccountNumber.value;
939
+ b = removeLeadingZeros( digitsOnly( b ) );
940
+ bankAccountNumber.value = b;
941
+
942
+ var j = b.length;
943
+ if(j == 9) {
944
+ var total = 0;
945
+ for( var i = 0; i < b.length; i++ ) {
946
+ total += b.charAt( i ) * j;
947
+ j -= 1;
948
+ }
949
+ if( ( total % 11 ) != 0 ) {
950
+ return false;
951
+ }
952
+ return true;
953
+ }
954
+ return !(b.length <4 || b.length > 7);
955
+ }
956
+ //]]>
957
+ </script>
958
+
959
+ <script type="text/javascript">
960
+ //<![CDATA[
961
+ /* Form validation */
962
+ requiredFields["directdebit_NL"] = new Array();
963
+ errorMessages["directdebit_NL"] = new Array();
964
+ requiredFields["directdebit_NL"].push("directdebit_NL.ownerName");
965
+ errorMessages["directdebit_NL"]["directdebit_NL.ownerName"] = "Please fill the bank account holder name";
966
+ errorMessages["directdebit_NL"]["directdebit_NL.iban"] = "directdebit_NL.validation_iban";
967
+
968
+ requiredFields["directdebit_NL"].push("directdebit_NL.bankAccountNumber");
969
+ errorMessages["directdebit_NL"]["directdebit_NL.bankAccountNumber"] = "Bank account is incorrect or missing";
970
+
971
+ requiredFields["directdebit_NL"].push("directdebit_NL.bankName");
972
+ errorMessages["directdebit_NL"]["directdebit_NL.bankName"] = "Please select your bank";
973
+
974
+
975
+
976
+
977
+
978
+ requiredFields["directdebit_NL"].push("directdebit_NL.acceptDirectDebit");
979
+ errorMessages["directdebit_NL"]["directdebit_NL.acceptDirectDebit"] = "Please accept the conditions for a Dutch directdebit";
980
+ errorMessages["directdebit_NL"]["generic"] = "Please fill in your bank details";
981
+ //]]>
982
+
983
+ </script>
984
+
985
+ <table class="basetable">
986
+
987
+
988
+ <tr>
989
+ <td><div>Bank account holder name</div></td>
990
+ <td>
991
+ <div class="fieldDiv">
992
+ <input type="text" class="inputField" id="directdebit_NL.ownerName" name="directdebit_NL.ownerName"
993
+ value="" size="22" maxlength="30" />
994
+ </div>
995
+ </td>
996
+ </tr>
997
+
998
+ <input type="hidden" name="directdebit_NL.bankCountryCode" value="NL"/>
999
+
1000
+ <tr>
1001
+ <td>
1002
+ <span id="directdebit_NL-accountNumberLabel">Bank account number</span>
1003
+ </td>
1004
+ <td>
1005
+ <div class="fieldDiv">
1006
+ <input type="text" class="inputField" id="directdebit_NL.bankAccountNumber" name="directdebit_NL.bankAccountNumber"
1007
+ value="" size="22" maxlength="40" />
1008
+ </div>
1009
+ </td>
1010
+ </tr>
1011
+ <tr id="directdebit_NL-accountNumberInfoFrame" style="display: none;" class=" infoFrame">
1012
+ <td><span>directdebit_NL.accountNumberInfo</span></td>
1013
+ </tr>
1014
+
1015
+
1016
+ <tr id="directdebit_NL-bankName-container">
1017
+ <td><div>Select your bank</div></td>
1018
+ <td>
1019
+ <div class="fieldDiv">
1020
+ <select id="directdebit_NL.bankName" name="directdebit_NL.bankName">
1021
+ <option value="">--</option>
1022
+ <option value="abnamro">ABN AMRO Bank</option>
1023
+ <option value="fortis">ABN AMRO (voormalig Fortis) Bank</option>
1024
+ <option value="asn">ASN Bank</option>
1025
+ <option value="friesland">Friesland Bank</option>
1026
+ <option value="lanschot">F. van Lanschot Bankiers</option>
1027
+ <option value="ing">ING Bank</option>
1028
+ <option value="knab">Knab</option>
1029
+ <option value="staalbankiers">Staalbankiers</option>
1030
+ <option value="rabo">Rabobank</option>
1031
+ <option value="regio">RegioBank</option>
1032
+ <option value="sns">SNS Bank</option>
1033
+ <option value="triodos">Triodos Bank</option>
1034
+ <option value="overig">-- Overig --</option>
1035
+ </select>
1036
+ </div>
1037
+ </td>
1038
+ </tr>
1039
+
1040
+
1041
+
1042
+ <tr>
1043
+ <td colspan="2">
1044
+ <div>
1045
+ <input type="checkbox" class="inputField" id="directdebit_NL.acceptDirectDebit" name="directdebit_NL.acceptDirectDebit"
1046
+ value="true" />
1047
+ <label for="directdebit_NL.acceptDirectDebit">I agree that the above amount will be deducted from my bank account.</label></div>
1048
+ </td>
1049
+ </tr>
1050
+
1051
+ <tr>
1052
+ <td colspan="2"><div class="r">
1053
+ <input class="paySubmit paySubmitdirectdebit_NL" type="submit" name="pay" value="pay" />
1054
+ </div></td>
1055
+ </tr>
1056
+ </table>
1057
+
1058
+ </div>
1059
+ </li>
1060
+
1061
+
1062
+
1063
+ <li style="list-style-type: none;">
1064
+ <input type="submit" name="brandName" value="Invoice" class="imgB pmB pmBopeninvoice"
1065
+
1066
+ onclick="return show(collapseopeninvoice, 'completeOpenInvoice.shtml', 'openinvoice', 'openinvoice');"
1067
+
1068
+ />
1069
+ <span id="pmmextracosts-openinvoice" class="pmmextracosts">
1070
+ </span>
1071
+
1072
+ <span id="pmopeninvoicedescription" class="pmmdescription"></span>
1073
+ <div id="pmmdetails-openinvoice" class="pmmdetails">
1074
+
1075
+ <script type="text/javascript">
1076
+ var collapseopeninvoice = new animatedcollapse("pmmdetails-openinvoice", 1000, false, false, config["pmmanimation"]==1?false:true);
1077
+ details.push(collapseopeninvoice);
1078
+
1079
+ displayAmountExtras['openinvoice'] = "";
1080
+
1081
+
1082
+
1083
+ if (notNull(document.getElementById('pmmform-openinvoice'))) {
1084
+ document.getElementById('pmmform-openinvoice').setAttribute("autocomplete","off");
1085
+ }
1086
+ </script>
1087
+
1088
+ <script type="text/javascript">
1089
+ //<![CDATA[
1090
+ /* Form validation */
1091
+ requiredFields["openinvoice"] = new Array();
1092
+ requiredFields["openinvoice"].push("openinvoice.shopper.firstName");
1093
+ requiredFields["openinvoice"].push("openinvoice.shopper.lastName");
1094
+ requiredFields["openinvoice"].push("openinvoice.shopper.gender");
1095
+ requiredFields["openinvoice"].push("openinvoice.shopper.dateOfBirthDayOfMonth");
1096
+ requiredFields["openinvoice"].push("openinvoice.shopper.dateOfBirthMonth");
1097
+ requiredFields["openinvoice"].push("openinvoice.shopper.dateOfBirthYear");
1098
+
1099
+ requiredFields["openinvoice"].push("openinvoice.shopper.telephoneNumber");
1100
+ requiredFields["openinvoice"].push("openinvoice.billingAddress.houseNumberOrName");
1101
+ requiredFields["openinvoice"].push("openinvoice.billingAddress.street");
1102
+ requiredFields["openinvoice"].push("openinvoice.billingAddress.city");
1103
+ requiredFields["openinvoice"].push("openinvoice.billingAddress.stateOrProvince");
1104
+ requiredFields["openinvoice"].push("openinvoice.billingAddress.postalCode");
1105
+ requiredFields["openinvoice"].push("openinvoice.billingAddress.country");
1106
+
1107
+ requiredFields["openinvoice_getDeliveryAddress"] = new Array();
1108
+ requiredFields["openinvoice_getDeliveryAddress"].push("openinvoice.deliveryAddress.houseNumberOrName");
1109
+ requiredFields["openinvoice_getDeliveryAddress"].push("openinvoice.deliveryAddress.street");
1110
+ requiredFields["openinvoice_getDeliveryAddress"].push("openinvoice.deliveryAddress.city");
1111
+ requiredFields["openinvoice_getDeliveryAddress"].push("openinvoice.deliveryAddress.stateOrProvince");
1112
+ requiredFields["openinvoice_getDeliveryAddress"].push("openinvoice.deliveryAddress.postalCode");
1113
+ requiredFields["openinvoice_getDeliveryAddress"].push("openinvoice.deliveryAddress.country");
1114
+
1115
+ errorMessages["openinvoice"] = new Array();
1116
+ errorMessages["openinvoice"]["openinvoice.shopper.firstName"] = "Please enter your first name";
1117
+ errorMessages["openinvoice"]["openinvoice.shopper.lastName"] = "Please enter your last name";
1118
+ errorMessages["openinvoice"]["openinvoice.shopper.gender"] = "Please enter your gender";
1119
+ errorMessages["openinvoice"]["openinvoice.shopper.dateOfBirthDayOfMonth"] = "The day of your birthday is not valid ";
1120
+ errorMessages["openinvoice"]["openinvoice.shopper.dateOfBirthMonth"] = "The month of your birthday is not valid";
1121
+ errorMessages["openinvoice"]["openinvoice.shopper.dateOfBirthYear"] = "The year of your birthday is not valid";
1122
+ errorMessages["openinvoice"]["openinvoice.bankLocationId"] = "Bitte tragen Sie die Bankleitzahl ein";
1123
+ errorMessages["openinvoice"]["openinvoice.bankAccountNumber"] = "Please enter your bankaccount number";
1124
+ errorMessages["openinvoice"]["openinvoice.shopper.telephoneNumber"] = "Please enter your mobile number";
1125
+ errorMessages["openinvoice"]["openinvoice.billingAddress.houseNumberOrName"] = "Please enter your house number or house name";
1126
+ errorMessages["openinvoice"]["openinvoice.billingAddress.street"] = "Please enter your street name";
1127
+ errorMessages["openinvoice"]["openinvoice.billingAddress.city"] = "Please enter your town or city";
1128
+ errorMessages["openinvoice"]["openinvoice.billingAddress.stateOrProvince"] = "Please enter a province or region";
1129
+ errorMessages["openinvoice"]["openinvoice.billingAddress.postalCode"] = "Please enter your postal code";
1130
+ errorMessages["openinvoice"]["openinvoice.billingAddress.country"] = "Please select your country";
1131
+ errorMessages["openinvoice"]["generic"] = "Please enter your invoice details";
1132
+
1133
+ errorMessages["openinvoice_getDeliveryAddress"] = new Array();
1134
+ errorMessages["openinvoice_getDeliveryAddress"]["openinvoice.deliveryAddress.houseNumberOrName"] = "Please enter your house number or house name";
1135
+ errorMessages["openinvoice_getDeliveryAddress"]["openinvoice.deliveryAddress.street"] = "Please enter your street name";
1136
+ errorMessages["openinvoice_getDeliveryAddress"]["openinvoice.deliveryAddress.city"] = "Please enter your town or city";
1137
+ errorMessages["openinvoice_getDeliveryAddress"]["openinvoice.deliveryAddress.stateOrProvince"] = "Please enter a province or region";
1138
+ errorMessages["openinvoice_getDeliveryAddress"]["openinvoice.deliveryAddress.postalCode"] = "Please enter your postal code";
1139
+ errorMessages["openinvoice_getDeliveryAddress"]["openinvoice.deliveryAddress.country"] = "Please select your country";
1140
+ errorMessages["openinvoice_getDeliveryAddress"]["generic"] = "Please enter your invoice details";
1141
+
1142
+ var maySubmitOnlyOnce=true;
1143
+
1144
+ function openinvoiceValidateDeliveryAddress() {
1145
+ var checkbox = _.G("openinvoice.specifyDelivery");
1146
+
1147
+ if(checkbox != null && checkbox.checked) {
1148
+ var errors = checkRequiredFields("openinvoice_getDeliveryAddress");
1149
+
1150
+ if (errors.length != 0) {
1151
+ clearErrors(requiredFields["openinvoice_getDeliveryAddress"]);
1152
+ markErrorFields(errors);
1153
+ setErrorMessages(errors, "openinvoice_getDeliveryAddress");
1154
+ return false;
1155
+ }
1156
+ }
1157
+ }
1158
+
1159
+ function openinvoiceToggleDeliveryAddress(state, trClassName) {
1160
+
1161
+ var tableRows = document.getElementsByTagName('tr');
1162
+
1163
+ for(x in tableRows) {
1164
+ if(tableRows[x].className == trClassName) {
1165
+ if(state) {
1166
+ tableRows[x].style.display='table-row';
1167
+ } else {
1168
+ tableRows[x].style.display='none';
1169
+ }
1170
+ }
1171
+ }
1172
+
1173
+ var table = document.getElementById("openinvoiceTable");
1174
+ collapseopeninvoice.contentheight=table.scrollHeight;
1175
+ collapseopeninvoice.divObj.style.height=table.scrollHeight+"px"
1176
+ document.getElementById('pmmdetails-openinvoice').style.height = table.scrollHeight + "px";
1177
+ }
1178
+
1179
+ </script>
1180
+ <table class="basetable" id="openinvoiceTable">
1181
+ <tr>
1182
+ <td colspan="2"><div class="fieldSubHeader">Personal details</div></td>
1183
+ </tr>
1184
+ <tr>
1185
+ <td><div>First name</div></td>
1186
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.shopper.firstName" name="openinvoice.shopper.firstName" value="" size="15" maxlength="40" />
1187
+ </div></td>
1188
+ </tr>
1189
+ <tr>
1190
+ <td><div>Infix</div></td>
1191
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.shopper.infix" name="openinvoice.shopper.infix" value="" size="15" maxlength="40" />
1192
+ </div></td>
1193
+ </tr>
1194
+ <tr>
1195
+ <td><div>Last name</div></td>
1196
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.shopper.lastName" name="openinvoice.shopper.lastName" value="" size="15" maxlength="40" />
1197
+ </div></td>
1198
+ </tr>
1199
+ <tr>
1200
+ <td><div>Gender</div></td>
1201
+ <td><div class="fieldDiv">
1202
+ <select name="openinvoice.shopper.gender" id="openinvoice.shopper.gender">
1203
+ <option value=""></option>
1204
+ <option value="MALE">Male</option>
1205
+ <option value="FEMALE">Female</option>
1206
+ </select>
1207
+ </div></td>
1208
+ </tr>
1209
+
1210
+ <tr id="dateOfBirth">
1211
+ <td><div>Date of birth</div></td>
1212
+ <td><div class="fieldDiv">
1213
+ <input type="text" class="inputField" id="openinvoice.shopper.dateOfBirthDayOfMonth" name="openinvoice.shopper.dateOfBirthDayOfMonth" value="" size="2" maxlength="2" />
1214
+ -
1215
+ <input type="text" class="inputField" id="openinvoice.shopper.dateOfBirthMonth" name="openinvoice.shopper.dateOfBirthMonth" value="" size="2" maxlength="2" />
1216
+ -
1217
+ <input type="text" class="inputField" id="openinvoice.shopper.dateOfBirthYear" name="openinvoice.shopper.dateOfBirthYear" value="" size="4" maxlength="4" />
1218
+ </div></td>
1219
+ </tr>
1220
+
1221
+ <tr>
1222
+ <td><div>Mobile number</div></td>
1223
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.shopper.telephoneNumber" name="openinvoice.shopper.telephoneNumber" value="" size="15" maxlength="40" />
1224
+ </div></td>
1225
+ </tr>
1226
+
1227
+ <tr>
1228
+ <td colspan="2"><div class="fieldSubHeader">Bank Details</div></td>
1229
+ </tr>
1230
+ <tr>
1231
+ <td><div>Bankaccount number</div></td>
1232
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.bankAccountNumber" name="openinvoice.bankAccountNumber" value="" size="15" maxlength="40" /></div></td>
1233
+ </tr>
1234
+ <tr>
1235
+ <td style="text-align:center" colspan="2">OR</td>
1236
+ </tr>
1237
+
1238
+ <tr>
1239
+ <td>IBAN</td>
1240
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.iban" name="openinvoice.iban" value="" size="41" maxlength="38" /></div></td>
1241
+ </tr>
1242
+
1243
+
1244
+
1245
+ <tr>
1246
+ <td colspan="2"><div class="fieldSubHeader">Billing Address</div></td>
1247
+ </tr>
1248
+ <tr>
1249
+ <td><div>House number or name</div></td>
1250
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.billingAddress.houseNumberOrName" name="openinvoice.billingAddress.houseNumberOrName" value="" size="15" maxlength="40" /></div></td>
1251
+ </tr>
1252
+ <tr>
1253
+ <td><div>Street</div></td>
1254
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.billingAddress.street" name="openinvoice.billingAddress.street" value="" size="30" maxlength="40" /></div></td>
1255
+ </tr>
1256
+ <tr>
1257
+ <td><div>City</div></td>
1258
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.billingAddress.city" name="openinvoice.billingAddress.city" value="" size="20" maxlength="40" /></div></td>
1259
+ </tr>
1260
+ <tr>
1261
+ <td><div>Province</div></td>
1262
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.billingAddress.stateOrProvince" name="openinvoice.billingAddress.stateOrProvince" value="" size="20" maxlength="40" /></div></td>
1263
+ </tr>
1264
+ <tr>
1265
+ <td><div>Postal code</div></td>
1266
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.billingAddress.postalCode" name="openinvoice.billingAddress.postalCode" value="" size="10" maxlength="18" /></div></td>
1267
+ </tr>
1268
+ <tr>
1269
+ <td><div>Country</div></td>
1270
+ <td><div class="fieldDiv">
1271
+ <select class="inputField" id="openinvoice.billingAddress.country" name="openinvoice.billingAddress.country">
1272
+ <option value="AF">Afghanistan</option>
1273
+ <option value="AL">Albania</option>
1274
+ <option value="DZ">Algeria</option>
1275
+ <option value="AS">American Samoa</option>
1276
+ <option value="AD">Andorra</option>
1277
+ <option value="AO">Angola</option>
1278
+ <option value="AI">Anguilla</option>
1279
+ <option value="AQ">Antarctica</option>
1280
+ <option value="AG">Antigua/Barbuda</option>
1281
+ <option value="AR">Argentina</option>
1282
+ <option value="AM">Armenia</option>
1283
+ <option value="AW">Aruba</option>
1284
+ <option value="AU">Australia</option>
1285
+ <option value="AT">Austria</option>
1286
+ <option value="AZ">Azerbaijan</option>
1287
+ <option value="BS">Bahamas</option>
1288
+ <option value="BH">Bahrain</option>
1289
+ <option value="BD">Bangladesh</option>
1290
+ <option value="BB">Barbados</option>
1291
+ <option value="BY">Belarus</option>
1292
+ <option value="BE">Belgium</option>
1293
+ <option value="BZ">Belize</option>
1294
+ <option value="BJ">Benin</option>
1295
+ <option value="BM">Bermuda</option>
1296
+ <option value="BT">Bhutan</option>
1297
+ <option value="BO">Bolivia</option>
1298
+ <option value="BA">Bosnia/Herzegovina</option>
1299
+ <option value="BW">Botswana</option>
1300
+ <option value="BV">Bouvet Island</option>
1301
+ <option value="BR">Brazil</option>
1302
+ <option value="IO">country_IO</option>
1303
+ <option value="BN">Brunei Darussalam</option>
1304
+ <option value="BG">Bulgaria</option>
1305
+ <option value="BF">Burkina Faso</option>
1306
+ <option value="BI">Burundi</option>
1307
+ <option value="KH">Cambodia</option>
1308
+ <option value="CM">Cameroon</option>
1309
+ <option value="CA">Canada</option>
1310
+ <option value="CV">Cape Verde</option>
1311
+ <option value="KY">Cayman Islands</option>
1312
+ <option value="CF">Central African Republic</option>
1313
+ <option value="TD">Chad</option>
1314
+ <option value="CL">Chile</option>
1315
+ <option value="CN">China</option>
1316
+ <option value="CX">Christmas Island</option>
1317
+ <option value="CC">Cocos (Keeling) Islands</option>
1318
+ <option value="CO">Colombia</option>
1319
+ <option value="KM">Comoros</option>
1320
+ <option value="CG">Congo</option>
1321
+ <option value="CD">Congo</option>
1322
+ <option value="CK">Cook Islands</option>
1323
+ <option value="CR">Costa Rica</option>
1324
+ <option value="CI">C&ocirc;te DIvoire</option>
1325
+ <option value="HR">Croatia</option>
1326
+ <option value="CU">Cuba</option>
1327
+ <option value="CY">Cyprus</option>
1328
+ <option value="CZ">Czech Republic</option>
1329
+ <option value="DK">Denmark</option>
1330
+ <option value="DJ">Djibouti</option>
1331
+ <option value="DM">Dominica</option>
1332
+ <option value="DO">Dominican Republic</option>
1333
+ <option value="TP">country_TP</option>
1334
+ <option value="EC">Ecuador</option>
1335
+ <option value="EG">Egypt</option>
1336
+ <option value="SV">El Salvador</option>
1337
+ <option value="GQ">Equatorial Guinea</option>
1338
+ <option value="ER">Eritrea</option>
1339
+ <option value="EE">Estonia</option>
1340
+ <option value="ET">Ethiopia</option>
1341
+ <option value="FK">Falkland Islands(Malvinas)</option>
1342
+ <option value="FO">Faroe Islands</option>
1343
+ <option value="FJ">Fiji</option>
1344
+ <option value="FI">Finland</option>
1345
+ <option value="FR">France</option>
1346
+ <option value="FX">country_FX</option>
1347
+ <option value="GF">French Guiana</option>
1348
+ <option value="PF">French Polynesia</option>
1349
+ <option value="TF">French Southern Territories</option>
1350
+ <option value="GA">Gabon</option>
1351
+ <option value="GM">Gambia</option>
1352
+ <option value="GE">Georgia</option>
1353
+ <option value="DE">Germany</option>
1354
+ <option value="GH">Ghana</option>
1355
+ <option value="GI">Gibraltar</option>
1356
+ <option value="GR">Greece</option>
1357
+ <option value="GL">Greenland</option>
1358
+ <option value="GD">Grenada</option>
1359
+ <option value="GP">Guadeloupe</option>
1360
+ <option value="GU">Guam</option>
1361
+ <option value="GT">Guatemala</option>
1362
+ <option value="GN">Guinea</option>
1363
+ <option value="GW">Guinea-Bissau</option>
1364
+ <option value="GY">Guyana</option>
1365
+ <option value="HT">Haiti</option>
1366
+ <option value="HM">Heard Island/Mcdonald Islands</option>
1367
+ <option value="HN">Honduras</option>
1368
+ <option value="HK">Hong Kong</option>
1369
+ <option value="HU">Hungary</option>
1370
+ <option value="IS">Iceland</option>
1371
+ <option value="IN">India</option>
1372
+ <option value="ID">Indonesia</option>
1373
+ <option value="IR">Iran</option>
1374
+ <option value="IQ">Iraq</option>
1375
+ <option value="IE">Ireland</option>
1376
+ <option value="IL">Israel</option>
1377
+ <option value="IT">Italy</option>
1378
+ <option value="JM">Jamaica</option>
1379
+ <option value="JP">Japan</option>
1380
+ <option value="JO">Jordan</option>
1381
+ <option value="KZ">Kazakhstan</option>
1382
+ <option value="KE">Kenya</option>
1383
+ <option value="KI">Kiribati</option>
1384
+ <option value="KP">North Korea</option>
1385
+ <option value="KR">South Korea</option>
1386
+ <option value="KW">Kuwait</option>
1387
+ <option value="KG">Kyrgyzstan</option>
1388
+ <option value="LA">Lao</option>
1389
+ <option value="LV">Latvia</option>
1390
+ <option value="LB">Lebanon</option>
1391
+ <option value="LS">Lesotho</option>
1392
+ <option value="LR">Liberia</option>
1393
+ <option value="LY">Libyan Arab Jamahiriya</option>
1394
+ <option value="LI">Liechtenstein</option>
1395
+ <option value="LT">Lithuania</option>
1396
+ <option value="LU">Luxembourg</option>
1397
+ <option value="MO">Macao</option>
1398
+ <option value="MK">Macedonia</option>
1399
+ <option value="MG">Madagascar</option>
1400
+ <option value="MW">Malawi</option>
1401
+ <option value="MY">Malaysia</option>
1402
+ <option value="MV">Maldives</option>
1403
+ <option value="ML">Mali</option>
1404
+ <option value="MT">Malta</option>
1405
+ <option value="MH">Marshall Islands</option>
1406
+ <option value="MQ">Martinique</option>
1407
+ <option value="MR">Mauritania</option>
1408
+ <option value="MU">Mauritius</option>
1409
+ <option value="YT">Mayotte</option>
1410
+ <option value="MX">Mexico</option>
1411
+ <option value="FM">Micronesia</option>
1412
+ <option value="MD">Moldova</option>
1413
+ <option value="MC">Monaco</option>
1414
+ <option value="MN">Mongolia</option>
1415
+ <option value="ME">Montenegro</option>
1416
+ <option value="MS">Montserrat</option>
1417
+ <option value="MA">Morocco</option>
1418
+ <option value="MZ">Mozambique</option>
1419
+ <option value="MM">Myanmar</option>
1420
+ <option value="NA">Namibia</option>
1421
+ <option value="NR">Nauru</option>
1422
+ <option value="NP">Nepal</option>
1423
+ <option value="NL">Netherlands</option>
1424
+ <option value="AN">Netherlands Antilles</option>
1425
+ <option value="NC">New Caledonia</option>
1426
+ <option value="NZ">New Zealand</option>
1427
+ <option value="NI">Nicaragua</option>
1428
+ <option value="NE">Niger</option>
1429
+ <option value="NG">Nigeria</option>
1430
+ <option value="NU">Niue</option>
1431
+ <option value="NF">Norfolk Island</option>
1432
+ <option value="MP">Northern Mariana Islands</option>
1433
+ <option value="NO">Norway</option>
1434
+ <option value="OM">Oman</option>
1435
+ <option value="PK">Pakistan</option>
1436
+ <option value="PW">Palau</option>
1437
+ <option value="PA">Panama</option>
1438
+ <option value="PG">Papua New Guinea</option>
1439
+ <option value="PY">Paraguay</option>
1440
+ <option value="PE">Peru</option>
1441
+ <option value="PH">Philippines</option>
1442
+ <option value="PN">Pitcairn</option>
1443
+ <option value="PL">Poland</option>
1444
+ <option value="PT">Portugal</option>
1445
+ <option value="PR">Puerto Rico</option>
1446
+ <option value="QA">Qatar</option>
1447
+ <option value="RE">R&eacute;union</option>
1448
+ <option value="RO">Romania</option>
1449
+ <option value="RU">Russian Federation</option>
1450
+ <option value="RW">Rwanda</option>
1451
+ <option value="KN">St. Kitts/Nevis</option>
1452
+ <option value="LC">St. Lucia</option>
1453
+ <option value="WS">Samoa</option>
1454
+ <option value="SM">San Marino</option>
1455
+ <option value="ST">Sao Tome/Principe</option>
1456
+ <option value="SA">Saudi Arabia</option>
1457
+ <option value="SN">Senegal</option>
1458
+ <option value="RS">Serbia</option>
1459
+ <option value="SC">Seychelles</option>
1460
+ <option value="GS">South Georgia/Sandwich Islands</option>
1461
+ <option value="SL">Sierra Leone</option>
1462
+ <option value="SG">Singapore</option>
1463
+ <option value="SK">Slovakia</option>
1464
+ <option value="SI">Slovenia</option>
1465
+ <option value="SB">Solomon Islands</option>
1466
+ <option value="SO">Somalia</option>
1467
+ <option value="ZA">South Africa</option>
1468
+ <option value="ES">Spain</option>
1469
+ <option value="LK">Sri Lanka</option>
1470
+ <option value="SH">St. Helena</option>
1471
+ <option value="PM">St. Pierre/Miquelon</option>
1472
+ <option value="VC">St. Vincent/The Grenadines</option>
1473
+ <option value="SD">Sudan</option>
1474
+ <option value="SR">Suriname</option>
1475
+ <option value="SJ">Svalbard/Jan Mayen</option>
1476
+ <option value="SZ">Swaziland</option>
1477
+ <option value="SE">Sweden</option>
1478
+ <option value="CH">Switzerland</option>
1479
+ <option value="SY">Syrian Arab Republic</option>
1480
+ <option value="TW">Taiwan</option>
1481
+ <option value="TJ">Tajikistan</option>
1482
+ <option value="TZ">Tanzania</option>
1483
+ <option value="TH">Thailand</option>
1484
+ <option value="TG">Togo</option>
1485
+ <option value="TK">Tokelau</option>
1486
+ <option value="TO">Tonga</option>
1487
+ <option value="TT">Trinidad And Tobago</option>
1488
+ <option value="TN">Tunisia</option>
1489
+ <option value="TR">Turkey</option>
1490
+ <option value="TM">Turkmenistan</option>
1491
+ <option value="TC">Turks/Caicos Islands</option>
1492
+ <option value="TV">Tuvalu</option>
1493
+ <option value="UG">Uganda</option>
1494
+ <option value="UA">Ukraine</option>
1495
+ <option value="AE">United Arab Emirates</option>
1496
+ <option value="GB">United Kingdom</option>
1497
+ <option value="US">United States</option>
1498
+ <option value="UY">Uruguay</option>
1499
+ <option value="UM">United States Minor Islands</option>
1500
+ <option value="UZ">Uzbekistan</option>
1501
+ <option value="VU">Vanuatu</option>
1502
+ <option value="VA">Vatican City State</option>
1503
+ <option value="VE">Venezuela</option>
1504
+ <option value="VN">Vietnam</option>
1505
+ <option value="VG">Virgin Islands</option>
1506
+ <option value="VI">Virgin Islands</option>
1507
+ <option value="WF">Wallis/Futuna</option>
1508
+ <option value="EH">Western Sahara</option>
1509
+ <option value="YE">Yemen</option>
1510
+ <option value="ZM">Zambia</option>
1511
+ <option value="ZW">Zimbabwe</option>
1512
+ </select>
1513
+ </div></td>
1514
+ </tr>
1515
+
1516
+
1517
+ <tr>
1518
+ <td><div>Specify a separate delivery address</div></td>
1519
+ <td><div class="fieldDiv"><input type="checkbox" class="inputField" value="true" id="openinvoice.specifyDelivery" name="openinvoice.specifyDelivery"
1520
+ onclick="openinvoiceToggleDeliveryAddress(this.checked, 'openinvoice.deliveryAddress')" />
1521
+ </div></td>
1522
+ </tr>
1523
+ <tr class="openinvoice.deliveryAddress" style="display:none" >
1524
+ <td colspan="2"><div class="fieldSubHeader">Delivery Address</div></td>
1525
+ </tr>
1526
+ <tr class="openinvoice.deliveryAddress" style="display:none ">
1527
+ <td><div>House number or name</div></td>
1528
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.deliveryAddress.houseNumberOrName" name="openinvoice.deliveryAddress.houseNumberOrName" value="" size="15" maxlength="40" /></div></td>
1529
+ </tr>
1530
+ <tr class="openinvoice.deliveryAddress" style="display:none" >
1531
+ <td><div>Street</div></td>
1532
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.deliveryAddress.street" name="openinvoice.deliveryAddress.street" value="" size="30" maxlength="40" /></div></td>
1533
+ </tr>
1534
+ <tr class="openinvoice.deliveryAddress" style="display:none" >
1535
+ <td><div>City</div></td>
1536
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.deliveryAddress.city" name="openinvoice.deliveryAddress.city" value="" size="20" maxlength="40" /></div></td>
1537
+ </tr>
1538
+ <tr class="openinvoice.deliveryAddress" style="display:none" >
1539
+ <td><div>Province</div></td>
1540
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.deliveryAddress.stateOrProvince" name="openinvoice.deliveryAddress.stateOrProvince" value="" size="20" maxlength="40" /></div></td>
1541
+ </tr>
1542
+ <tr class="openinvoice.deliveryAddress" style="display:none" >
1543
+ <td><div>Postal code</div></td>
1544
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="openinvoice.deliveryAddress.postalCode" name="openinvoice.deliveryAddress.postalCode" value="" size="10" maxlength="18" /></div></td>
1545
+ </tr>
1546
+ <tr class="openinvoice.deliveryAddress" style="display:none" >
1547
+ <td><div>Country</div></td>
1548
+ <td><div class="fieldDiv">
1549
+ <select class="inputField" id="openinvoice.deliveryAddress.country" name="openinvoice.deliveryAddress.country">
1550
+ <option value="AF">Afghanistan</option>
1551
+ <option value="AL">Albania</option>
1552
+ <option value="DZ">Algeria</option>
1553
+ <option value="AS">American Samoa</option>
1554
+ <option value="AD">Andorra</option>
1555
+ <option value="AO">Angola</option>
1556
+ <option value="AI">Anguilla</option>
1557
+ <option value="AQ">Antarctica</option>
1558
+ <option value="AG">Antigua/Barbuda</option>
1559
+ <option value="AR">Argentina</option>
1560
+ <option value="AM">Armenia</option>
1561
+ <option value="AW">Aruba</option>
1562
+ <option value="AU">Australia</option>
1563
+ <option value="AT">Austria</option>
1564
+ <option value="AZ">Azerbaijan</option>
1565
+ <option value="BS">Bahamas</option>
1566
+ <option value="BH">Bahrain</option>
1567
+ <option value="BD">Bangladesh</option>
1568
+ <option value="BB">Barbados</option>
1569
+ <option value="BY">Belarus</option>
1570
+ <option value="BE">Belgium</option>
1571
+ <option value="BZ">Belize</option>
1572
+ <option value="BJ">Benin</option>
1573
+ <option value="BM">Bermuda</option>
1574
+ <option value="BT">Bhutan</option>
1575
+ <option value="BO">Bolivia</option>
1576
+ <option value="BA">Bosnia/Herzegovina</option>
1577
+ <option value="BW">Botswana</option>
1578
+ <option value="BV">Bouvet Island</option>
1579
+ <option value="BR">Brazil</option>
1580
+ <option value="IO">country_IO</option>
1581
+ <option value="BN">Brunei Darussalam</option>
1582
+ <option value="BG">Bulgaria</option>
1583
+ <option value="BF">Burkina Faso</option>
1584
+ <option value="BI">Burundi</option>
1585
+ <option value="KH">Cambodia</option>
1586
+ <option value="CM">Cameroon</option>
1587
+ <option value="CA">Canada</option>
1588
+ <option value="CV">Cape Verde</option>
1589
+ <option value="KY">Cayman Islands</option>
1590
+ <option value="CF">Central African Republic</option>
1591
+ <option value="TD">Chad</option>
1592
+ <option value="CL">Chile</option>
1593
+ <option value="CN">China</option>
1594
+ <option value="CX">Christmas Island</option>
1595
+ <option value="CC">Cocos (Keeling) Islands</option>
1596
+ <option value="CO">Colombia</option>
1597
+ <option value="KM">Comoros</option>
1598
+ <option value="CG">Congo</option>
1599
+ <option value="CD">Congo</option>
1600
+ <option value="CK">Cook Islands</option>
1601
+ <option value="CR">Costa Rica</option>
1602
+ <option value="CI">C&ocirc;te DIvoire</option>
1603
+ <option value="HR">Croatia</option>
1604
+ <option value="CU">Cuba</option>
1605
+ <option value="CY">Cyprus</option>
1606
+ <option value="CZ">Czech Republic</option>
1607
+ <option value="DK">Denmark</option>
1608
+ <option value="DJ">Djibouti</option>
1609
+ <option value="DM">Dominica</option>
1610
+ <option value="DO">Dominican Republic</option>
1611
+ <option value="TP">country_TP</option>
1612
+ <option value="EC">Ecuador</option>
1613
+ <option value="EG">Egypt</option>
1614
+ <option value="SV">El Salvador</option>
1615
+ <option value="GQ">Equatorial Guinea</option>
1616
+ <option value="ER">Eritrea</option>
1617
+ <option value="EE">Estonia</option>
1618
+ <option value="ET">Ethiopia</option>
1619
+ <option value="FK">Falkland Islands(Malvinas)</option>
1620
+ <option value="FO">Faroe Islands</option>
1621
+ <option value="FJ">Fiji</option>
1622
+ <option value="FI">Finland</option>
1623
+ <option value="FR">France</option>
1624
+ <option value="FX">country_FX</option>
1625
+ <option value="GF">French Guiana</option>
1626
+ <option value="PF">French Polynesia</option>
1627
+ <option value="TF">French Southern Territories</option>
1628
+ <option value="GA">Gabon</option>
1629
+ <option value="GM">Gambia</option>
1630
+ <option value="GE">Georgia</option>
1631
+ <option value="DE">Germany</option>
1632
+ <option value="GH">Ghana</option>
1633
+ <option value="GI">Gibraltar</option>
1634
+ <option value="GR">Greece</option>
1635
+ <option value="GL">Greenland</option>
1636
+ <option value="GD">Grenada</option>
1637
+ <option value="GP">Guadeloupe</option>
1638
+ <option value="GU">Guam</option>
1639
+ <option value="GT">Guatemala</option>
1640
+ <option value="GN">Guinea</option>
1641
+ <option value="GW">Guinea-Bissau</option>
1642
+ <option value="GY">Guyana</option>
1643
+ <option value="HT">Haiti</option>
1644
+ <option value="HM">Heard Island/Mcdonald Islands</option>
1645
+ <option value="HN">Honduras</option>
1646
+ <option value="HK">Hong Kong</option>
1647
+ <option value="HU">Hungary</option>
1648
+ <option value="IS">Iceland</option>
1649
+ <option value="IN">India</option>
1650
+ <option value="ID">Indonesia</option>
1651
+ <option value="IR">Iran</option>
1652
+ <option value="IQ">Iraq</option>
1653
+ <option value="IE">Ireland</option>
1654
+ <option value="IL">Israel</option>
1655
+ <option value="IT">Italy</option>
1656
+ <option value="JM">Jamaica</option>
1657
+ <option value="JP">Japan</option>
1658
+ <option value="JO">Jordan</option>
1659
+ <option value="KZ">Kazakhstan</option>
1660
+ <option value="KE">Kenya</option>
1661
+ <option value="KI">Kiribati</option>
1662
+ <option value="KP">North Korea</option>
1663
+ <option value="KR">South Korea</option>
1664
+ <option value="KW">Kuwait</option>
1665
+ <option value="KG">Kyrgyzstan</option>
1666
+ <option value="LA">Lao</option>
1667
+ <option value="LV">Latvia</option>
1668
+ <option value="LB">Lebanon</option>
1669
+ <option value="LS">Lesotho</option>
1670
+ <option value="LR">Liberia</option>
1671
+ <option value="LY">Libyan Arab Jamahiriya</option>
1672
+ <option value="LI">Liechtenstein</option>
1673
+ <option value="LT">Lithuania</option>
1674
+ <option value="LU">Luxembourg</option>
1675
+ <option value="MO">Macao</option>
1676
+ <option value="MK">Macedonia</option>
1677
+ <option value="MG">Madagascar</option>
1678
+ <option value="MW">Malawi</option>
1679
+ <option value="MY">Malaysia</option>
1680
+ <option value="MV">Maldives</option>
1681
+ <option value="ML">Mali</option>
1682
+ <option value="MT">Malta</option>
1683
+ <option value="MH">Marshall Islands</option>
1684
+ <option value="MQ">Martinique</option>
1685
+ <option value="MR">Mauritania</option>
1686
+ <option value="MU">Mauritius</option>
1687
+ <option value="YT">Mayotte</option>
1688
+ <option value="MX">Mexico</option>
1689
+ <option value="FM">Micronesia</option>
1690
+ <option value="MD">Moldova</option>
1691
+ <option value="MC">Monaco</option>
1692
+ <option value="MN">Mongolia</option>
1693
+ <option value="ME">Montenegro</option>
1694
+ <option value="MS">Montserrat</option>
1695
+ <option value="MA">Morocco</option>
1696
+ <option value="MZ">Mozambique</option>
1697
+ <option value="MM">Myanmar</option>
1698
+ <option value="NA">Namibia</option>
1699
+ <option value="NR">Nauru</option>
1700
+ <option value="NP">Nepal</option>
1701
+ <option selected="selected" value="NL">Netherlands</option>
1702
+ <option value="AN">Netherlands Antilles</option>
1703
+ <option value="NC">New Caledonia</option>
1704
+ <option value="NZ">New Zealand</option>
1705
+ <option value="NI">Nicaragua</option>
1706
+ <option value="NE">Niger</option>
1707
+ <option value="NG">Nigeria</option>
1708
+ <option value="NU">Niue</option>
1709
+ <option value="NF">Norfolk Island</option>
1710
+ <option value="MP">Northern Mariana Islands</option>
1711
+ <option value="NO">Norway</option>
1712
+ <option value="OM">Oman</option>
1713
+ <option value="PK">Pakistan</option>
1714
+ <option value="PW">Palau</option>
1715
+ <option value="PA">Panama</option>
1716
+ <option value="PG">Papua New Guinea</option>
1717
+ <option value="PY">Paraguay</option>
1718
+ <option value="PE">Peru</option>
1719
+ <option value="PH">Philippines</option>
1720
+ <option value="PN">Pitcairn</option>
1721
+ <option value="PL">Poland</option>
1722
+ <option value="PT">Portugal</option>
1723
+ <option value="PR">Puerto Rico</option>
1724
+ <option value="QA">Qatar</option>
1725
+ <option value="RE">R&eacute;union</option>
1726
+ <option value="RO">Romania</option>
1727
+ <option value="RU">Russian Federation</option>
1728
+ <option value="RW">Rwanda</option>
1729
+ <option value="KN">St. Kitts/Nevis</option>
1730
+ <option value="LC">St. Lucia</option>
1731
+ <option value="WS">Samoa</option>
1732
+ <option value="SM">San Marino</option>
1733
+ <option value="ST">Sao Tome/Principe</option>
1734
+ <option value="SA">Saudi Arabia</option>
1735
+ <option value="SN">Senegal</option>
1736
+ <option value="RS">Serbia</option>
1737
+ <option value="SC">Seychelles</option>
1738
+ <option value="GS">South Georgia/Sandwich Islands</option>
1739
+ <option value="SL">Sierra Leone</option>
1740
+ <option value="SG">Singapore</option>
1741
+ <option value="SK">Slovakia</option>
1742
+ <option value="SI">Slovenia</option>
1743
+ <option value="SB">Solomon Islands</option>
1744
+ <option value="SO">Somalia</option>
1745
+ <option value="ZA">South Africa</option>
1746
+ <option value="ES">Spain</option>
1747
+ <option value="LK">Sri Lanka</option>
1748
+ <option value="SH">St. Helena</option>
1749
+ <option value="PM">St. Pierre/Miquelon</option>
1750
+ <option value="VC">St. Vincent/The Grenadines</option>
1751
+ <option value="SD">Sudan</option>
1752
+ <option value="SR">Suriname</option>
1753
+ <option value="SJ">Svalbard/Jan Mayen</option>
1754
+ <option value="SZ">Swaziland</option>
1755
+ <option value="SE">Sweden</option>
1756
+ <option value="CH">Switzerland</option>
1757
+ <option value="SY">Syrian Arab Republic</option>
1758
+ <option value="TW">Taiwan</option>
1759
+ <option value="TJ">Tajikistan</option>
1760
+ <option value="TZ">Tanzania</option>
1761
+ <option value="TH">Thailand</option>
1762
+ <option value="TG">Togo</option>
1763
+ <option value="TK">Tokelau</option>
1764
+ <option value="TO">Tonga</option>
1765
+ <option value="TT">Trinidad And Tobago</option>
1766
+ <option value="TN">Tunisia</option>
1767
+ <option value="TR">Turkey</option>
1768
+ <option value="TM">Turkmenistan</option>
1769
+ <option value="TC">Turks/Caicos Islands</option>
1770
+ <option value="TV">Tuvalu</option>
1771
+ <option value="UG">Uganda</option>
1772
+ <option value="UA">Ukraine</option>
1773
+ <option value="AE">United Arab Emirates</option>
1774
+ <option value="GB">United Kingdom</option>
1775
+ <option value="US">United States</option>
1776
+ <option value="UY">Uruguay</option>
1777
+ <option value="UM">United States Minor Islands</option>
1778
+ <option value="UZ">Uzbekistan</option>
1779
+ <option value="VU">Vanuatu</option>
1780
+ <option value="VA">Vatican City State</option>
1781
+ <option value="VE">Venezuela</option>
1782
+ <option value="VN">Vietnam</option>
1783
+ <option value="VG">Virgin Islands</option>
1784
+ <option value="VI">Virgin Islands</option>
1785
+ <option value="WF">Wallis/Futuna</option>
1786
+ <option value="EH">Western Sahara</option>
1787
+ <option value="YE">Yemen</option>
1788
+ <option value="ZM">Zambia</option>
1789
+ <option value="ZW">Zimbabwe</option>
1790
+ </select>
1791
+ </div></td>
1792
+ </tr>
1793
+ <tr>
1794
+ <td colspan="2"><div class="r">
1795
+ <input class="paySubmit paySubmitopeninvoice" type="submit" name="pay" onclick="return openinvoiceValidateDeliveryAddress()" value="pay" />
1796
+ </div></td>
1797
+ </tr>
1798
+ </table>
1799
+ </div>
1800
+ </li>
1801
+
1802
+
1803
+
1804
+ <li style="list-style-type: none;">
1805
+ <input type="submit" name="brandName" value="Hyves Afrekenen" class="imgB pmB pmBhyvesafrekenen"
1806
+
1807
+ onclick="return show(collapsehyvesafrekenen, 'redirectMiniTix.shtml', 'hyvesafrekenen', 'hyvesafrekenen');"
1808
+
1809
+ />
1810
+ <span id="pmmextracosts-hyvesafrekenen" class="pmmextracosts">
1811
+ </span>
1812
+
1813
+ <span id="pmhyvesafrekenendescription" class="pmmdescription"></span>
1814
+ <div id="pmmdetails-hyvesafrekenen" class="pmmdetails">
1815
+
1816
+ <script type="text/javascript">
1817
+ var collapsehyvesafrekenen = new animatedcollapse("pmmdetails-hyvesafrekenen", 1000, false, false, config["pmmanimation"]==1?false:true);
1818
+ details.push(collapsehyvesafrekenen);
1819
+
1820
+ displayAmountExtras['hyvesafrekenen'] = "";
1821
+
1822
+
1823
+
1824
+ if (notNull(document.getElementById('pmmform-hyvesafrekenen'))) {
1825
+ document.getElementById('pmmform-hyvesafrekenen').setAttribute("autocomplete","off");
1826
+ }
1827
+ </script>
1828
+
1829
+ <table class="basetable limitwidth">
1830
+ <tr>
1831
+ <td>Pay using the Hyves Afrekenen payment method. You will be redirected to Hyves to complete your payment
1832
+ </td>
1833
+ </tr>
1834
+ <tr>
1835
+ <td><div class="r">
1836
+ <input class="paySubmit paySubmithyvesafrekenen" type="submit" name="pay" value="pay" />
1837
+ </div></td>
1838
+ </tr>
1839
+ </table>
1840
+ </div>
1841
+ </li>
1842
+
1843
+
1220
1844
  </ul>
1221
1845
 
1222
1846
  <div id="errorFrame" style="display: none;" class="popupMsg errorFrame">
1223
- <div id="errorFrameValidationErrors"></div>
1847
+ <div id="errorFrameValidationErrors">
1848
+ </div>
1224
1849
  </div>
1850
+
1225
1851
  <div id="okFrame" style="display: none;" class="popupMsg okFrame">
1226
- <div id="okFrameMessages"></div>
1852
+ <div id="okFrameMessages">
1853
+ </div>
1227
1854
  </div>
1228
1855
 
1856
+
1857
+
1229
1858
  <input type="text" style="display: none" />
1230
- <input type="hidden" name="sig" value="" />
1231
- <input type="hidden" name="merchantReference" value="" />
1232
- <input type="hidden" name="paymentAmount" value="4320" />
1233
- <input type="hidden" name="currencyCode" value="EUR" />
1234
- <input type="hidden" name="shipBeforeDate" value="2011-06-03" />
1235
- <input type="hidden" name="skinCode" value="Zij12nYa" />
1236
- <input type="hidden" name="merchantAccount" value="Test" />
1237
- <input type="hidden" name="shopperLocale" value="en" />
1238
- <input type="hidden" name="stage" value="pay" />
1239
- <input type="hidden" name="sessionId" value="" />
1240
- <input type="hidden" name="orderData" value="" />
1241
- <input type="hidden" name="sessionValidity" value="" />
1242
- <input type="hidden" name="countryCode" value="" />
1243
- <input type="hidden" name="shopperEmail" value="test@test.com" />
1244
- <input type="hidden" name="allowedMethods" value="visa" />
1245
- <input type="hidden" name="originalSession" value="" />
1246
- <input type="hidden" name="referrerURL" value="" />
1247
-
1248
- <!-- ### inc/pmfooter -->
1859
+ <input type="hidden" name="sig" value="" />
1860
+ <input type="hidden" name="merchantReference" value="123" />
1861
+ <input type="hidden" name="brandCode" value="brandCodeUndef" />
1862
+ <input type="hidden" name="paymentAmount" value="12300" />
1863
+ <input type="hidden" name="currencyCode" value="EUR" />
1864
+ <input type="hidden" name="shipBeforeDate" value="2015-01-01" />
1865
+ <input type="hidden" name="skinCode" value="<%= @skin.code %>" />
1866
+ <input type="hidden" name="merchantAccount" value="Test" />
1867
+ <input type="hidden" name="shopperLocale" value="en_GB" />
1868
+ <input type="hidden" name="stage" value="pay" />
1869
+ <input type="hidden" name="sessionId" value="" />
1870
+ <input type="hidden" name="sessionValidity" value="2015-01-01T00:00:00Z" />
1871
+ <input type="hidden" name="shopperStatement" value="Product 123" />
1872
+ <input type="hidden" name="shopperEmail" value="shopper@example.com" />
1873
+ <input type="hidden" name="shopperReference" value="123" />
1874
+ <input type="hidden" name="resURL" value="http://example.com/resURL" />
1875
+ <input type="hidden" name="offerEmail" value="true" />
1876
+ <input type="hidden" name="originalSession" value="" />
1877
+
1878
+ <input type="hidden" name="usingFrame" id="usingFrame" value="false" />
1879
+ <input type="hidden" name="usingPopUp" id="usingPopUp" value="false" />
1880
+
1881
+ <script type="text/javascript">
1882
+ //<![CDATA[
1883
+ try {
1884
+ var uf = _.G("usingFrame");
1885
+ if (uf && uf.value != "") {
1886
+ uf.value = (top.location != self.location);
1887
+ }
1888
+ var up = _.G("usingPopUp");
1889
+ if (up && up.value != "") {
1890
+ up.value = (window.name == "myPopUp");
1891
+ }
1892
+ } catch(e){ }
1893
+ //]]>
1894
+ </script>
1895
+
1896
+ <div class="paddiv2"></div>
1897
+
1898
+ <!-- ### inc/pmfooter<%= @locale_suffix %> -->