adyen-skinbuilder 0.4.2 → 0.4.3

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