PageSourceSearch

https://www.duracelldirect.com/e/Account

html duracelldirect.com collected 2026-10-08 22:56:17 UTC 127,090 bytes, 4,719 lines download raw bytes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<!DOCTYPE html>
18<html>
19	<head>
20        <title>Login / Register Account -  Duracell Direct com</title>
21        
22
23
24
25
26
27
28
29
30
31
32
33
34
35    <!-- AWS intelligent threat integration sdk -->
36    	
36<script type="text/javascript" src="null" defer></script>
36
37		<!-- 2. Wait until the window/DOM is ready and the SDK is loaded -->
38		
38<script type="text/javascript" data-aws-waf-integration="1">
39		  window.addEventListener('DOMContentLoaded', async () => {
40		    try {
41		      // Ensure the SDK exists on the window object
42		      if (typeof AwsWafIntegration !== 'undefined') {
43		        const token = await AwsWafIntegration.getToken(); 
44		      } else {
45		        console.error('AWS WAF Integration SDK failed to load.');
46		      }
47		    } catch (error) {
48		      console.error('Error initializing AWS WAF Integration:', error);
49		    }
50		  });
51		</script>
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75	
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 
103
104
105		
106
107 
108
109
110
111
112 
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 
130
131 
132
133 	
134
135
136
137
138	
139 
140
141 
142
143
144
145
146
147
148
149	
150
151
152
153
154
155
156
157
158
159
160
161
162
163	
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186	
187	
188	
189
190
191
192
193
194	
195	
196
197
198
199 
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217	
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241 
242 
243
244
245
246
247
248
249
250
251	
252	
253
254
255
256
257<!-- Requested by John -->
258
259	<meta name="google-site-verification" content="btYh-0dl2Br_bJu8UatWTMAS-ZXFRDxNlFZDQuY1f48" />
260
261<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
262<meta name="ROBOTS" content="ALL">
263
264<link id="altMobileUrl" rel="alternate" media="only screen" href="">
265
266
267
268
269<script src="/lib/js/browser-redirect1.js" type="text/javascript"></script>
269
270
271
272		
273	<link href="/apple-touch-icon.ico" rel="apple-touch-icon" />
274	<link href="/apple-touch-icon-152x152.ico" rel="apple-touch-icon" sizes="152x152" />
275	<link href="/apple-touch-icon-167x167.ico" rel="apple-touch-icon" sizes="167x167" />
276	<link href="/apple-touch-icon-180x180.ico" rel="apple-touch-icon" sizes="180x180" />
277	<link href="/favicon.ico" rel="icon" sizes="192x192" />
278	<link href="/icon-normal.ico" rel="icon" sizes="128x128" />	
279
280
281
282
283
284<link href="https://api.fonts.coollabs.io/css?family=Poppins:400,500&display=swap" rel="stylesheet">
285<link rel="stylesheet" type="text/css" href="/skin002/common/lib/css/dd_v59.css?v=1.0.9" async>
286
287<link rel="stylesheet" type="text/css" href="/skin002/distinct/usa/lib/css/dd-dsk-skin-distinct-v5.css" async>
288
289<script>
290//Implement includes
291if (!String.prototype.includes) {
292    String.prototype.includes = function() {
293        'use strict';
294        return String.prototype.indexOf.apply(this, arguments) !== -1;
295    };
296}
297// Implement indexOf for arrays
298if (!Array.prototype.indexOf) {
299  Array.prototype.indexOf = function(searchElement, fromIndex) {
300    var k;
301    if (this == null) {
302      throw new TypeError('"this" is null or not defined');
303    }
304    var o = Object(this);
305    var len = o.length >>> 0;
306    if (len === 0) {
307      return -1;
308    }
309    var n = +fromIndex || 0;
310    if (Math.abs(n) === Infinity) {
311      n = 0;
312    }
313    if (n >= len) {
314      return -1;
315    }
316    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
317    while (k < len) {
318      if (k in o && o[k] === searchElement) {
319        return k;
320      }
321      k++;
322    }
323    return -1;
324  };
325}
326// Production steps of ECMA-262, Edition 5, 15.4.4.18
327// Reference: http://es5.github.io/#x15.4.4.18
328if (!Array.prototype.forEach) {
329
330  Array.prototype.forEach = function(callback/*, thisArg*/) {
331
332    var T, k;
333
334    if (this == null) {
335      throw new TypeError('this is null or not defined');
336    }
337
338    // 1. Let O be the result of calling toObject() passing the
339    // |this| value as the argument.
340    var O = Object(this);
341
342    // 2. Let lenValue be the result of calling the Get() internal
343    // method of O with the argument "length".
344    // 3. Let len be toUint32(lenValue).
345    var len = O.length >>> 0;
346
347    // 4. If isCallable(callback) is false, throw a TypeError exception. 
348    // See: http://es5.github.com/#x9.11
349    if (typeof callback !== 'function') {
350      throw new TypeError(callback + ' is not a function');
351    }
352
353    // 5. If thisArg was supplied, let T be thisArg; else let
354    // T be undefined.
355    if (arguments.length > 1) {
356      T = arguments[1];
357    }
358
359    // 6. Let k be 0.
360    k = 0;
361
362    // 7. Repeat while k < len.
363    while (k < len) {
364
365      var kValue;
366
367      // a. Let Pk be ToString(k).
368      //    This is implicit for LHS operands of the in operator.
369      // b. Let kPresent be the result of calling the HasProperty
370      //    internal method of O with argument Pk.
371      //    This step can be combined with c.
372      // c. If kPresent is true, then
373      if (k in O) {
374
375        // i. Let kValue be the result of calling the Get internal
376        // method of O with argument Pk.
377        kValue = O[k];
378
379        // ii. Call the Call internal method of callback with T as
380        // the this value and argument list containing kValue, k, and O.
381        callback.call(T, kValue, k, O);
382      }
383      // d. Increase k by 1.
384      k++;
385    }
386    // 8. return undefined.
387  };
388}
389// Production steps of ECMA-262, Edition 6, 22.1.2.1
390if (!Array.from) {
391  Array.from = (function () {
392    var toStr = Object.prototype.toString;
393    var isCallable = function (fn) {
394      return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
395    };
396    var toInteger = function (value) {
397      var number = Number(value);
398      if (isNaN(number)) { return 0; }
399      if (number === 0 || !isFinite(number)) { return number; }
400      return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
401    };
402    var maxSafeInteger = Math.pow(2, 53) - 1;
403    var toLength = function (value) {
404      var len = toInteger(value);
405      return Math.min(Math.max(len, 0), maxSafeInteger);
406    };
407
408    // The length property of the from method is 1.
409    return function from(arrayLike/*, mapFn, thisArg */) {
410      // 1. Let C be the this value.
411      var C = this;
412
413      // 2. Let items be ToObject(arrayLike).
414      var items = Object(arrayLike);
415
416      // 3. ReturnIfAbrupt(items).
417      if (arrayLike == null) {
418        throw new TypeError('Array.from requires an array-like object - not null or undefined');
419      }
420
421      // 4. If mapfn is undefined, then let mapping be false.
422      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
423      var T;
424      if (typeof mapFn !== 'undefined') {
425        // 5. else
426        // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
427        if (!isCallable(mapFn)) {
428          throw new TypeError('Array.from: when provided, the second argument must be a function');
429        }
430
431        // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
432        if (arguments.length > 2) {
433          T = arguments[2];
434        }
435      }
436
437      // 10. Let lenValue be Get(items, "length").
438      // 11. Let len be ToLength(lenValue).
439      var len = toLength(items.length);
440
441      // 13. If IsConstructor(C) is true, then
442      // 13. a. Let A be the result of calling the [[Construct]] internal method 
443      // of C with an argument list containing the single item len.
444      // 14. a. Else, Let A be ArrayCreate(len).
445      var A = isCallable(C) ? Object(new C(len)) : new Array(len);
446
447      // 16. Let k be 0.
448      var k = 0;
449      // 17. Repeat, while k < len… (also steps a - h)
450      var kValue;
451      while (k < len) {
452        kValue = items[k];
453        if (mapFn) {
454          A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
455        } else {
456          A[k] = kValue;
457        }
458        k += 1;
459      }
460      // 18. Let putStatus be Put(A, "length", len, true).
461      A.length = len;
462      // 20. Return A.
463      return A;
464    };
465  }());
466}
467// Includes Polyfill
468if (!Array.prototype.includes) {
469	  Object.defineProperty(Array.prototype, "includes", {
470	    enumerable: false,
471	    value: function(obj) {
472	        var newArr = this.filter(function(el) {
473	          return el == obj;
474	        });
475	        return newArr.length > 0;
476	      }
477	  });
478	}
479</script>
479
480
481
482<link href="https://api.fonts.coollabs.io/css?family=Open+Sans:400,600,700" rel="stylesheet">
483<!-- 
483<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js" async></script>
483 -->
484
485<script src="/lib/js/jquery-1.9.1.min.js"></script>
485
486
487<script type="text/javascript">
488function showCountryList3(start, selected) { 
489    document.writeln('<SELECT '+start+'>'); 
490    var countries = ['US','USA','United States of America',
491'AD','AND', 'Andorra',
492'AT','AUT','Austria',
493'BE','BEL','Belgium',
494'BG','BGR','Bulgaria',
495'CA','CAN','Canada',
496'IC','0IC','Canary Islands',
497'CY','CYP','Cyprus',
498'CZ','CZE','Czech Republic',
499'DK','DNK','Denmark',
500'FI','FIN','Finland',
501'FR','FRA','France',
502'DE','DEU','Germany',
503'GR','GRC','Greece',
504'HU','HUN','Hungary',
505'IE','IRL','Ireland',
506'IT','ITA','Italy',
507'LV','LVA','Latvia',
508'LT','LTU','Lithuania',
509'LU','LUX','Luxembourg',
510'MT','MLT','Malta',
511'MC','MCO','Monaco',
512'NL','NLD','Netherlands',
513'NO','NOR','Norway',
514'PL','POL','Poland',
515'PT','PRT','Portugal',
516'RO','ROU','Romania',
517'SK','SVK','Slovakia',
518'SI','SVN','Slovenia',
519'IC', '0IC','Spain (Canary Islands)',
520'ES','ESP','Spain',
521'SE','SWE','Sweden',
522'GB','GBR','United Kingdom',
523'GG','GGY','United Kingdom (Guernsey)',
524'JE','JEY','United Kingdom (Jersey)'];
525    for(var i = 0; i < countries.length; i = i+3) {
526        if(countries[i].charAt(0)!='-') {
527            var html = '<OPTION value="' + countries[i] + '" iso3="'+countries[i+1]+'"'; 						
528            if(countries[i] == selected)             	
529                  html += ' selected'; 
530            html += '>' + countries[i+2] + '</OPTION>'; 
531            document.writeln(html);
532          }
533    } 
534    document.writeln('</SELECT>'); 
535}
536
537function showRegionList(start, selected) { 
538	document.writeln('<SELECT '+start+'>'); 
539	var regions = [  ];
540	for(var i = 0; i < regions.length; i = i+2) {
541		if(regions[i].charAt(0)!='-') {
542			var html = '<OPTION value="' + regions[i] + '"'; 
543			
544			if(regions[i].toLowerCase() == selected.toLowerCase()) 				
545		  		html += ' selected'; 
546			html += '>' + regions[i+1] + '</OPTION>'; 
547			document.writeln(html);
548	  	}
549	} 
550	document.writeln('</SELECT>'); 
551}
552
553</script>
553
554
555
556<style>
557.issue-message {
558  display:block;
559  color:red;
560  padding:10px;
561}
562span.issue-message a {
563  color:red;
564}
565body.info #main span.issue-message a {
566  color:red;
567}
568.dd-alert {
569    position: relative;
570    padding: 1em;
571    margin-bottom: 1rem;
572    border: 1px solid transparent;
573    border-radius: .25rem;
574    background: #f1de9d;
575}
576
577.nav-message .convid19-message {
578    font-weight: bold;
579    color: white;
580}
581
582.nav-message .convid19-message span {
583    color: #c98959;
584    font-weight: bold;
585}
586
587</style>
588
589
590        
591
592
593
594
595
596
597 
598
599
600
601 
602
603
604
605
606
607	
608
609
610
611
612
613 
614<script>
615    window.isLoadStandAloneGa4 = ('false' == 'true') 
616    
617	var dataLayer = dataLayer || [];
618	// This is the object that we pushed stuff to the old google analytics.
619	// This should not be used anymore, but initialize it just in case.
620	var _gaq = _gaq || [];
621	
622	window.gtag = function() {
623	  dataLayer.push(arguments);
624	};
625	
626	if(window.isLoadStandAloneGa4){
627		gtag('js', new Date());
628		gtag('config', 'G-9J8M6VGLCD');
629	}
630	
631	dataLayer.push({					 
632		'ga4_conversion_id':"G-9J8M6VGLCD",
633		'gads_conversion_id':"AW-827913445",		
634		'gads_conversion_id_simple':'827913445',
635		'gads_create_account_label':"",
636		'gads_purchase_label':"T9IUCKOJq3oQ5enjigM",
637		'gads_profit_label':"7dH0CJuHq3oQ5enjigM",
638		'bing_tracking_id':"6027249",
639		'siteTag':'ddus'
640	}); 
641	   
642	
643	const defaultConsent={
644			advanced_analytics:'denied',
645			advanced_ads:'denied',
646		    functionality_storage: 'granted',
647		    security_storage: 'granted',
648			ad_personalization: 'denied',
649		    ad_storage: 'denied',
650		    ad_user_data: 'denied',
651		    analytics_storage: 'denied',
652		    personalization_storage: 'denied',
653	}
654	 
655
656	//initialize consent mode v2
657	gtag('consent', 'default', {
658	    ...defaultConsent,
659	    wait_for_update: 500,
660	})
661	
662	
663	
664	
665	gtag('set', 'ads_data_redaction', true)
666	
667	
668	gtag('set', 'url_passthrough', false)
669	
670	function onCheckoutOption(step, checkoutOption) {
671		
672		console.warn("Deprecated:onCheckoutOption", {step, checkoutOption})
673		/* 
674		try{
675			cookiesManager.onCheckoutOption(step,checkoutOption);
676		}catch(error){
677			console.log(error);
678		} */
679	} 
680</script>
680 
681
682
683 
684<!-- adwordsCreateAccountLabel:  -->
685<!-- googleTagManagerId: GTM-WXM2QB6 --> 
686<!-- Google Tag Manager -->  
687<script>
688function loadGoogleTagManager(){				
689	console.log("loadGoogleTagManager");
vendor: 338 bytes, lines 689-694
689
690	(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
691	new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
692	j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
693	'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
694	})(window,document,'script','dataLayer','
694GTM-MXKR7QN4
vendor: 5 bytes, line 694
694');
695}
696</script>
696
697<!-- End Google Tag Manager -->
698<!-- Google Analytics 4 -->  
699<script>
700function loadStandAloneGa4(){
701	console.log("loadStandAloneGa4");
702	const script = document.createElement('script');
703	script.async = true;
704	script.src = "https://www.googletagmanager.com/gtag/js?id=G-9J8M6VGLCD";
705	document.head.appendChild(script);
706}
707</script>
707			
708<!-- Google Analytics 4 -->
709
710<!-- End Google Tag Manager -->
711
712
713
714
715
716
717	
717<script type="text/javascript">
718		gtag('set', 'url_passthrough', true)
719		gtag('consent', 'update', {
720			advanced_analytics:'granted',
721			advanced_ads:'granted',}
722		)		
723		dataLayer.push({'event':'consent_updated'}); // this will trigger the tags to load
724		if(!window.isLoadStandAloneGa4){
725			loadGoogleTagManager();
726		}
727	</script>
727
728	
729
730
731
732
733
734
735
736
737 
738
739
740
741
742
743
744
745
746
747
748
749
750<script src="/lib/js/js-cookie.js" ></script>
750
751
752<script type="text/javascript"> 
753	document.addEventListener("DOMContentLoaded", function(){
754		 
755		const psaConsentToDefaultConsentMap={
756			 essential: ['security_storage','functionality_storage'],
757			 traffic_analytics: ['analytics_storage','advanced_analytics'],
758			 advert_effectiveness: ['ad_storage','ad_user_data','ad_personalization','advanced_ads'],
759	 		 settings: ['personalization_storage']
760		 }
761		
762		 const cookieConsentPopup = document.querySelector('[data-cookie-role="cookie-consent-wrapper"]')
763		 const acceptSelectedBtn = document.querySelector('[data-cookie-role="cookie-consent-btn-accept-selected"]')
764		 const acceptAllBtn = document.querySelector('[data-cookie-role="cookie-consent-btn-accept-all"]')
765		 const declineAllBtn = document.querySelector('[data-cookie-role="cookie-consent-btn-decline-all"]')
766		 const consentCheckboxes = document.querySelectorAll('[data-cookie-role="cookie-consent-checkbox"]')
767		 const editCookieConsents = document.querySelectorAll('[data-cookie-role="edit-cookie-consent"]')
768		 
769		 const consentCheckboxesArray = Array.from(consentCheckboxes);
770		 const editCookieConsentsArray = Array.from(editCookieConsents);
771		 const cookieConsentOldName = 'psa_cookie_consent'
772		 const cookieConsentName= 'psa_cookie_consent_v2';
773		 const cookieConsentExpiryDays = 90;
774		 let storedCookieConsent = readCookieConsent();
775		 
776		 
777		 function deleteAllCookies() {
778		    const cookies = document.cookie.split(";");
779
780		    for (let i = 0; i < cookies.length; i++) {
781		        const cookie = cookies[i];   		        
782		        const cookieParts= cookie.split('=');
783		        const name = cookieParts[0];
784		        console.log("delete cookie", name);
785
786		        // Remove cookie on current path and root path
787		        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/;domain=.duracelldirect.com";
788		        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/;";
789		        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;";
790		    }
791		}
792		 
793		  
794		
795		function handleLoadGTM(){
796			if(storedCookieConsent === undefined){
797				return;
798			}
799			
800			const psaConsentNames = storedCookieConsent.psa;
801			
802			
803			if(psaConsentNames.indexOf('advert_effectiveness') > -1){
804				gtag('set', 'ads_data_redaction', false)
805			}
806			
807			if(psaConsentNames.indexOf('traffic_analytics') > -1 || psaConsentNames.indexOf('advert_effectiveness') > -1){
808				// enable url_passthrough
809				gtag('set', 'url_passthrough', true)				
810				if(!window.isLoadStandAloneGa4){
811					loadGoogleTagManager();
812				}
813			}
814			
815			if(psaConsentNames.indexOf('traffic_analytics') > -1){
816				if(window.isLoadStandAloneGa4){
817					loadStandAloneGa4();
818				}
819			}
820			
821		}
822		
823		function updateConsent(consent){
824			console.log('updateConsent', consent)
825			gtag('consent', 'update', consent)
826			dataLayer.push({'event':'consent_updated'});
827		}
828		
829		function hideCookiePopup(){
830			cookieConsentPopup.style.display="none";
831		}
832		
833		function showCookiePopup(){				
834			 cookieConsentPopup.style.display="flex";
835			 
836			 if(storedCookieConsent === undefined){
837				 return;
838			 }
839			 
840			 consentCheckboxesArray.forEach(function(checkbox){
841				 const name = checkbox.value; 
842				 if(storedCookieConsent.psa.indexOf(name) > -1){
843					 checkbox.checked=true;
844				 }
845			 })
846			  		
847		};
848		
849		window.showCookiePopup = showCookiePopup;
850		
851		function initializeCookieConsent(){ 
852			if(storedCookieConsent === undefined){
853				showCookiePopup();
854				return;
855			}			
856			handleLoadGTM();
857			updateConsent(storedCookieConsent.ga4)
858			
859		}
860		
861		initializeCookieConsent();
862		
863		 function readCookieConsent(){			 
864			// remove old consent cookie if exists				 
865			Cookies.remove(cookieConsentOldName);
866			
867			var cookieConsent = Cookies.getJSON(cookieConsentName); 
868			// if cookieConsent doesn't exist the show popup and return
869			if(!cookieConsent){
870				return undefined;
871			}
872			 
873			var enabledConsentsNames = cookieConsent.enabled;			
874			const ga4Consent = createGA4Consent(enabledConsentsNames); 
875			
876			return {
877				ga4: ga4Consent,
878				psa: enabledConsentsNames
879			}  
880		}
881		 
882		function setConsentCookie(psaConsentNames) {			  
883		     
884			var dateOfConsentUTC = new Date().toISOString();
885			var consentMessage = $(".cookie-container .content").text();  
886			 
887			
888			var cookieObj={
889				'enabled': psaConsentNames,  
890				'dateOfConsent':dateOfConsentUTC
891			}
892			
893			var cookieSettings = {
894					'sameSite':'Lax'
895			}
896			 
897			cookieSettings.expires = cookieConsentExpiryDays;				
898			  
899			Cookies.set(cookieConsentName , JSON.stringify(cookieObj), cookieSettings);	
900			 
901			
902			
903			var dateOfConsent = "2026-10-08T23-56-16Z";
904			var values= [...psaConsentNames]  // make copy
905			values.push(dateOfConsent);
906			
907		    var d = new Date();
908		    d.setTime(d.getTime() + (cookieConsentExpiryDays*24*60*60*1000));
909		    var expires = ";expires="+ d.toUTCString();
910		    document.cookie = "COOKIECONSENT=" + values.join("|") + expires + ";path=/;sameSite=Lax";
911		    
912		}
913  
914		
915		 function storeCookieConsent(consent){
916			 storedCookieConsent= consent;
917			 const {ga4, psa} = consent;
918			 setConsentCookie(psa);
919			 updateConsent(ga4) 
920			 handleLoadGTM();
921			 fetch("/e/Account?_action=UPDATE_COOKIE_CONSENT_STATEMENTS",{
922				 method:'POST'
923			 }) 
924		 }
925 		 
926		 
927		 // psaConsent should contain an array of allowed consent names
928		 function createGA4Consent(psaConsent){  		
929			 console.log("psaConsent", psaConsent);
930			 const consentsArray = psaConsent.map(function(consent){  				 
931				 const consents =  psaConsentToDefaultConsentMap[consent].map(function(consent){
932					return {
933						[consent]: 'granted'
934					} 
935				 });				 
936				 return consents;
937			 }).flat();
938			   
939			 const consent = consentsArray.reduce(function(prev,curr){
940				 return {...prev,...curr}				 
941			 },{})
942			 
943			 return {
944				 ...defaultConsent,
945				 ...consent
946			 };
947		 }
948		 
949		 
950		 function getConsent(){			 
951			 
952			 const psaConsent = consentCheckboxesArray.map(function(consentCheckbox){
953				 const checked = consentCheckbox.checked;
954				 const value = consentCheckbox.value; 
955				 return {name:value, status:checked}
956			 })
957			 
958			 const psaConsentNames = psaConsent.filter(function(consent){
959				 return consent.status === true;
960			 }).map(function(consent){
961				 return consent.name;
962			 })
963			 
964			 const ga4Consent = createGA4Consent(psaConsentNames);
965			  
966			 return {
967				 ga4: ga4Consent,
968				 psa: psaConsentNames
969			 }
970		 } 
971		 
972		// Add click event listener
973		acceptSelectedBtn.addEventListener("click", function() {		
974			// reset cookies
975			deleteAllCookies();
976			const consent = getConsent(); 
977			storeCookieConsent(consent);		
978			hideCookiePopup();
979		});
980		
981		
982		acceptAllBtn.addEventListener("click", function() {
983			consentCheckboxesArray.forEach(function(checkbox){
984				checkbox.checked = true;
985			})
986			
987		  	const consent = getConsent(); 			 
988			storeCookieConsent(consent);
989			
990			hideCookiePopup();
991		});
992		
993	
994		declineAllBtn.addEventListener("click", function() {
995			consentCheckboxesArray.forEach(function(checkbox){
996				if(checkbox.value == 'essential'){
997					return;
998				}
999				checkbox.checked = false;
1000			})
1001			// reset cookies
1002			deleteAllCookies();
1003			
1004		  	const consent = getConsent(); 			 
1005			storeCookieConsent(consent);
1006			
1007			hideCookiePopup();
1008		});
1009		
1010		editCookieConsentsArray.forEach(function(editCookieConsent){
1011			editCookieConsent.addEventListener("click",  function(e) {
1012				e.preventDefault();
1013				showCookiePopup();
1014			})
1015		})
1016	});
1017</script>
1017
1018
1019
1020 
1021 
1022
1023                
1024	    
1024<script type="text/javascript">	    
1025	    
1026		 	function showCountryList(start, selected) { 
1027				document.writeln('<SELECT '+start+'>'); 
1028				var countries = [ 'US','United States of America' ];
1029				for(var i = 0; i < countries.length; i = i+2) {
1030					if(countries[i].charAt(0)!='-') {
1031						var html = '<OPTION value="' + countries[i] + '"'; 
1032						if(countries[i] == selected) 
1033					  		html += ' selected'; 
1034						html += '>' + countries[i+1] + '</OPTION>'; 
1035						document.writeln(html);
1036				  	}
1037				} 
1038				document.writeln('</SELECT>'); 
1039			}
1040    		
1041    		function submitExistingCustomerLogin() {
1042    			var f = document.forms.EXISTING_USER_LOGIN;
1043    			if(!isValidEmail(f.elements['login'].value)){
1044    				alert("The email address is invalid\u002e\n It should be similar to\u003a\n\n yourname\u0040yourcompany\u002ecom\n\nWith no spaces\u002e Please enter it again\u002e");
1045    				return;
1046    			}	
1047    			var plainPasswordField= $("#password");
1048    			var hashedPasswordField = $("#hashedPasswordLogin");
1049    			
1050    			var result = tryToHashPasswordIfEmpty(plainPasswordField, hashedPasswordField);
1051    			if(result === false)
1052    				return false;
1053    		    	
1054    			_gaq.push(['_trackEvent', 'LoginType', 'Account login as existing', '', 0, true]);
1055    			f.submit();
1056    		}
1057    	    
1058    	    function retrievePassword() {
1059    			var f = document.forms.EXISTING_USER_LOGIN;
1060    			f.action='Account';
1061    			f.elements._storeForm.value='NONE';
1062    			f.elements._action.value='DISPLAY_PASSWORD_REMINDER_REQUEST';
1063    			f.submit();
1064    		}
1065    	    
1066    	    function resetPassword() {
1067    			var f = document.forms.EXISTING_USER_LOGIN;
1068    			f.action='Account';
1069    			f.elements._storeForm.value='NONE';
1070    			f.elements._action.value='DISPLAY_PASSWORD_RESET_REQUEST';
1071    			f.submit();
1072    		}
1073    	    
1074    	 // Check if the Enter/Return key was pressed. If so, submit the form.
1075    		document.onkeypress = function(e) {
1076    			var targ;
1077    			if (!e) var e = window.event;
1078    			if (e.target) targ = e.target;
1079    			else if (e.srcElement) targ = e.srcElement;
1080    			if (targ.nodeType == 3) // defeat Safari bug
1081    				targ = targ.parentNode;
1082    			try {      
1083        			if(e.keyCode == 13)
1084        				submitExistingCustomerLogin();
1085				} catch(er) {}
1086    		}
1087		</script>
1087
1088		
1089 	
1090 
1091	
1092	
1093	
1093<script src="/lib/cryptojs/3.1.9-1/crypto-js.min.js"></script>
1093
1094	
1095	
1096	
1096<script>
1097		var hashSettings = null;
1098		
1099		function hashPassword(password){
1100			if(hasCrypoJsLoaded()){
1101				if(hashSettings == null){						
1102					hashSettings = {
1103						salt:'KMz0CfqMU8EMKaFojbFQcnvpqKMgg7cb',
1104						settings:{
1105							keySize: parseInt('4', 10),
1106							hasher: CryptoJS.algo.SHA512, 
1107							iterations:  parseInt('1', 10)
1108						}				
1109					}				
1110				}
1111				
1112				return CryptoJS.PBKDF2(password, hashSettings.salt, hashSettings.settings).toString();
1113			}else{
1114				// Log library has not been loaded.
1115				var message = "Crypto library has not been loaded";
1116				console.log("DEBUG ", message);
1117				logInfo(message);
1118			}
1119		}				
1120		
1121		function hasCrypoJsLoaded(){
1122			return typeof CryptoJS != "undefined";
1123		}
1124		
1125		function logInfo(message){
1126			$.ajax({
1127	              url: "/e/Account",
1128	              type: "Post",
1129	              async: true,
1130	              data: {'_action': 'LOG_INFO', 'message':message, 'browserName':get_browser().name , 'browserVersion':get_browser().version},
1131	              beforeSend: function( xhr ) {
1132	                xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
1133	              }
1134	           });
1135		}
1136		
1137		function get_browser() {
1138		    var ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; 
1139		    if(/trident/i.test(M[1])){
1140		        tem=/\brv[ :]+(\d+)/g.exec(ua) || []; 
1141		        return {name:'IE',version:(tem[1]||'')};
1142		        }   
1143		    if(M[1]==='Chrome'){
1144		        tem=ua.match(/\bOPR|Edge\/(\d+)/)
1145		        if(tem!=null)   {return {name:'Opera', version:tem[1]};}
1146		        }   
1147		    M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
1148		    if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);}
1149		    return {
1150		      name: M[0],
1151		      version: M[1]
1152		    };
1153		 }
1154		
1155		function reloadCryptoJs() {
1156			var src = '/lib/cryptojs/3.1.9-1/crypto-js.min.js?v=1';
1157			$('
1157<script>').attr('src', src).appendTo('head');
1158		}
1159		
1160		function tryToHashPasswordIfEmpty(plainPasswordField, hashedPasswordField){
1161			var passwordHashed = true;
1162			if(plainPasswordField.val().trim() !== ""){
1163				hashedPasswordField.val(hashPassword(plainPasswordField.val()));
1164				
1165				if(hashedPasswordField.val() == ""){	
1166					reloadCryptoJs();
1167					hashedPasswordField.val(hashPassword(plainPasswordField.val()));
1168					
1169					if(hashedPasswordField.val() == ""){	
1170						alert("We are sorry\u002c there was a problem submitting the form\u002e Please reload this page\u002e");
1171						passwordHashed = false;
1172					}
1173				}		
1174			}
1175			return passwordHashed;
1176		};
1177		
1178		$(document).ready(function(){
1179			// Record page load
1180			(function(){
1181				var message = "Page: LoginEntrance.jsp, hasCryptoJsLoaded: " + hasCrypoJsLoaded();
1182				logInfo(message);
1183			})();						
1184			
1185			$('input.toHash').on('input',function(){
1186				var password = $(this).val();	
1187				var target = $(this).attr('target');
1188				var targetInput = $("#"+target);
1189				targetInput.val(hashPassword(password));
1190			});		
1191			
1192		});		
1193	</script>
1193
1194
1195	</head>
1196	<body class="auth">
1197		<div id="ctn">
1198			<div class="page-top-bg"></div>
1199			<div class="grid-1 content-start">
1200				<h2 class="breadcrumb">
1201					
1202					
1203				    <a href="https://www.duracelldirect.com/" title="Duracell Direct Homepage">Home</a> &gt;
1204					Login
1205				</h2>
1206				<div>
1207					<div id="main">
1208						
1209						
1210						
1211	               						 	
1212						
1213						
1214						<div style="position: relative; margin-top: -20px">
1215							<img src="/i/icons/padlock.png" style="margin-top: -20px; position: absolute; top:-5px; left:750px"/>
1216							<div id="login">
1217							<h2 class="exist-customer">
1218								Login
1219							</h2>
1220							<form class="panel box-shadow login-form" name="EXISTING_USER_LOGIN" method="post" action="Account" onsubmit="javascript:submitExistingCustomerLogin(); return false;">
1221								<input type="hidden" name="_storeForm" value="EXISTING_USER_LOGIN">
1222								<input type="hidden" name="_action" value="LOGIN_EXISTING_USER">
1223								<input type="hidden" name="passwordReminderDestinationUri" value="/e/Account"/> 
1224								<input type="hidden" name="passwordReminderDestinationCmsTag" value="returnBtn-account"/>
1225								<input type="hidden" name="passwordReminderDestinationCmsGroup" value="accountHome"/>
1226								
1227
1228<table>
1229	<tr>
1230		<td style="width:200px;">
1231			
1232			<label for="login" class="block py-05">Email address:</label>
1233			<input id="login" name="login" class="text short login-user" value="" type="text" pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,16})+$" size="30" placeholder="Email address" style="margin-top: 0" required/>
1234		</td>
1235		<td style="width:200px">
1236			
1237			<label for="password" class="block py-05">Password:</label>
1238			<input id="password" class="text short toHash"  target="hashedPasswordLogin" type="password" size="30" placeholder="Password" style="margin-top: 0"/>
1239			<input name="hashedPassword" id="hashedPasswordLogin" type="hidden"/>
1240
1241			<p style="line-height:11px; height: 11px; margin:3px 0 0 0; padding:0">
1242				
1243				
1244				<a class="dd-btn btn-link pt-0" href="javascript:resetPassword()" title="">
1245					Forgot your password?
1246				</a>
1247			</p>
1248		</td>
1249		<td class="btn" style="background: none; margin:0; padding:0; vertical-align: middle">
1250			
1251			<a href="javascript:submitExistingCustomerLogin();" title="Sign in" class="dd-btn btn-primary btn-sm mt-1">
1252				Sign in
1253			</a>
1254		</td>
1255  	</tr>
1256	<tr>
1257		<td colspan="3" class="bottom btn">&nbsp;</td>
1258	</tr>  	
1259</table>
1260						
1261							</form>
1262							</div>
1263						</div>					
1264						
1265						
1266						<div style="position: relative; margin-top: -20px" class="new-account">							
1267							
1268
1269
1270
1271
1272<form class="panel box-shadow new-account-form needs-validation" id="newAccountSignup" name="NEW_ACCOUNT_SIGNUP" method="post" action="Account" novalidate>
1273	<input type="hidden" name="_storeForm" value="NEW_ACCOUNT_SIGNUP">
1274	<input type="hidden" name="_action" value="SIGNUP_NEW_ACCOUNT">
1275	<h2 class="exist-customer">New Customers</h2>
1276	<table class="new-account-table">
1277		<tr>
1278	  		<th ><b>Email address</b>:</th>
1279			<td class="text">				
1280				<input type="email" name="contactEmail" id="contactEmail" class="text form-control" maxlength="50"  type="text" size="30" 
1281					required>
1282				<div class="invalid-feedback">					
1283					<span>The email address is invalid.<br> It should be similar to:<br><br> [email protected]<br><br>With no spaces. Please enter it again.</span>
1284				</div>	
1285			</td>
1286			<td class="optional"></td>
1287	  	</tr>
1288	  	
1289	   	<tr>
1290	  		<th><b>First Name</b>:</th>
1291			<td class="text">
1292				<input id="firstName" name="firstName" class="text form-control"  type="text" 
1293					pattern="[a-zA-Z 0-9',.-]{2,}$" char-compatibility="courier" required>
1294				<div class="invalid-feedback">
1295				 	<span>You must enter a First Name</span>
1296				 	
1297				 	<span class="secondary-text">Please do not use accented, Greek, Cyrillic, Chinese or other non-Latin characters.</span>
1298				</div>
1299			</td>
1300			<td class="optional"></td>
1301	  	</tr>
1302	   	<tr>
1303	  		<th><b>Family Name</b>:</th>
1304			<td class="text">
1305				<input type="hidden" id="contactName" name="contactName" value="">		
1306				<input id="familyName" name="familyName" class="text form-control"  type="text"
1307					pattern="[a-zA-Z 0-9',.-]{2,}$" char-compatibility="courier" required>
1308 				<div class="invalid-feedback">
1309				 	<span>You must enter a Family Name</span>
1310				 	
1311				 	<span class="secondary-text">Please do not use accented, Greek, Cyrillic, Chinese or other non-Latin characters.</span>
1312				</div>
1313			</td>
1314			<td class="optional"></td>
1315		</tr>
1316		<tr>
1317			<th>
1318				<label for="newPassword"><b>Create a password</b>:</label>
1319			</th>
1320			<td>	
1321				<input id="newPassword" class="text toHash form-control"  target="hashedPasswordSignup" type="password" autocomplete="off" size="30"  
1322					onchange="form.confirmPassword.pattern = form.newPassword.value;" pattern="^[A-Za-z0-9\-#*!+_]{10,24}$"  required>								
1323				<div class="invalid-feedback">	
1324				 	<span>
1324The Password you supplied was invalid. Passwords must be between 10 and 24 characters and can not contain white-space or (&amp;, &#039;, @, <, ", >) characters.</span>
1325				</div>
1326				<input name="hashedPassword" id="hashedPasswordSignup" type="hidden"/>
1327			</td>
1328			<td></td>
1329	  	</tr>
1330	  	<tr>
1331	  		<th>
1332	  			<label for="confirmPassword"><b>Re-type the password</b>:</label>
1333	  		</th>
1334			<td>		
1335				<input id="confirmPassword" class="text form-control" type="password" autocomplete="off" size="30" 
1336					pattern="^[A-Za-z0-9\-#*!+_]{10,24}$" required>
1337				<div class="invalid-feedback">	
1338					<span>Password does not match the confirm password.</span>
1339				</div>	
1340			</td>
1341			<td></td>
1342	  	</tr>
1343		<tr style="display:none;">
1344			<th>
1345				<label for="invoiceCountryCode"><b>Country</b>:</label>	
1346			</th>
1347			<td>
1348				 
1349				
1350				<select name="invoiceCountryCode"  id="invoiceCountryCode" class="edit js_handleOnChange" on-change="copy-text" target="#invoiceCountry">
1351			     	
1352			    		<option value="US" iso3="USA" selected>United States of America</option>
1353			    	
1354			    		<option value="AD" iso3="AND" >Andorra</option>
1355			    	
1356			    		<option value="AT" iso3="AUT" >Austria</option>
1357			    	
1358			    		<option value="BE" iso3="BEL" >Belgium</option>
1359			    	
1360			    		<option value="BG" iso3="BGR" >Bulgaria</option>
1361			    	
1362			    		<option value="CA" iso3="CAN" >Canada</option>
1363			    	
1364			    		<option value="IC" iso3="0IC" >Canary Islands</option>
1365			    	
1366			    		<option value="CY" iso3="CYP" >Cyprus</option>
1367			    	
1368			    		<option value="CZ" iso3="CZE" >Czech Republic</option>
1369			    	
1370			    		<option value="DK" iso3="DNK" >Denmark</option>
1371			    	
1372			    		<option value="FI" iso3="FIN" >Finland</option>
1373			    	
1374			    		<option value="FR" iso3="FRA" >France</option>
1375			    	
1376			    		<option value="DE" iso3="DEU" >Germany</option>
1377			    	
1378			    		<option value="GR" iso3="GRC" >Greece</option>
1379			    	
1380			    		<option value="HU" iso3="HUN" >Hungary</option>
1381			    	
1382			    		<option value="IE" iso3="IRL" >Ireland</option>
1383			    	
1384			    		<option value="IT" iso3="ITA" >Italy</option>
1385			    	
1386			    		<option value="LV" iso3="LVA" >Latvia</option>
1387			    	
1388			    		<option value="LT" iso3="LTU" >Lithuania</option>
1389			    	
1390			    		<option value="LU" iso3="LUX" >Luxembourg</option>
1391			    	
1392			    		<option value="MT" iso3="MLT" >Malta</option>
1393			    	
1394			    		<option value="MC" iso3="MCO" >Monaco</option>
1395			    	
1396			    		<option value="NL" iso3="NLD" >Netherlands</option>
1397			    	
1398			    		<option value="NO" iso3="NOR" >Norway</option>
1399			    	
1400			    		<option value="PL" iso3="POL" >Poland</option>
1401			    	
1402			    		<option value="PT" iso3="PRT" >Portugal</option>
1403			    	
1404			    		<option value="RO" iso3="ROU" >Romania</option>
1405			    	
1406			    		<option value="SK" iso3="SVK" >Slovakia</option>
1407			    	
1408			    		<option value="SI" iso3="SVN" >Slovenia</option>
1409			    	
1410			    		<option value="IC" iso3="0IC" >Spain (Canary Islands)</option>
1411			    	
1412			    		<option value="ES" iso3="ESP" >Spain</option>
1413			    	
1414			    		<option value="SE" iso3="SWE" >Sweden</option>
1415			    	
1416			    		<option value="GB" iso3="GBR" >United Kingdom</option>
1417			    	
1418			    		<option value="GG" iso3="GGY" >United Kingdom (Guernsey)</option>
1419			    	
1420			    		<option value="JE" iso3="JEY" >United Kingdom (Jersey)</option>
1421			    		
1422			    </select>
1423				<input type="hidden" name="invoiceCountry" id="invoiceCountry" value="">
1424			</td>
1425			<td></td>
1426		</tr>
1427		
1428	
1429		<tr id="next-btn-container">
1430			<td></td>
1431	      	<td >
1432	      		
1433	      		<button type="submit" class="dd-btn btn-primary btn-sm block mt-1 mr-4" >
1434					Next
1435				</button>
1436			</td>
1437			<td></td>
1438		</tr>
1439		<tr>
1440	      	<td colspan="3" class="btm">
1441			</td>
1442		</tr>
1443	</table>
1444</form>
1445<br><br>
1446<script type="text/javascript">
1447$("#newAccountSignup").submit(function(){
1448	$("#contactName").val($('#firstName').val().trim() + " " + $('#familyName').val().trim());
1449	$("#invoiceCountry").val($("#invoiceCountryCode").find(':selected').text())		
1450});    
1451</script>
1451					   		
1452						</div>
1453						
1454					</div>
1455					
1456					<p class="secure" style="margin-bottom: 20px">
1457						
1458						
1459				   		<a href="/info/security.html" target="security" title="Privacy and Security">
1460				   			<img class="infL" src="/i/icons/padlock.gif" alt="Privacy and Security" style="margin-top: 0">
1461				   		</a>
1462				    	If you are a new customer, please enter your email address as your login name and create a memorable password. Your login ensures your details remain private. We will not send you Junk emails, or sell your details to other companies. See our <a href="/info/security.html" target="security" title="Privacy and Security">• Privacy &amp; Security information</a>
1463				 	</p>
1464					
1465					
1466					
1467				</div>
1468			</div>
1469			
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487				
1488		<div id="header">
1489			<div class="container nav-container">
1490			
1491			
1492			<div class="nav-left">
1493				<a class="logo" href="/" title="" >
1494					<img src="/skin002/i/logo/duracelldirect.png" alt=""/>
1495				</a>
1496			</div>
1497			<div class="nav-center">
1498				<ul class="top-links">
1499					<li style="display:none;">
1500						
1501						<a href="/" title="Duracell Direct Homepage">Home</a>
1502					</li>
1503					<li>
1504						
1505						<a href="/info/contact.html" title="Contact Duracell Direct">Contact Us</a>
1506					</li>
1507					<li>
1508						
1509						<a href="/info/about.html" title="About Us">About Us</a>
1510					</li>
1511					
1512					
1513					<li>
1514						
1515						<a href="/info/" title="Duracell Direct Help Center">Help</a>
1516					</li>
1517					
1518					
1519						
1520						
1521							<li class="no-border" style="color:#fff">
1522								<a href="https://www.duracelldirect.com/e/Account">Sign in</a>
1523							</li>
1524						
1525					
1526					
1527						<li>
1528							<span class="lang-selection">US <img src="/i/flag/64/us.png"> </span>
1529						</li>
1530					
1531				</ul>	
1532				
1533					
1534					<div class="search-wrapper" style="">
1535						<form action="/info/search.html" id="searchFormTop" method="get" class="search-form-top">
1536							
1537							<div class="search-wrapper-input">					
1538								<input type="text" id="search-box-top" class="search-box input input-sm input-rou
1538nd" name="search" value="" placeholder="Start Searching ..." autocomplete="off"/>
1539								<button type="submit">&nbsp;</button>
1540							</div>	
1541						</form>
1542						
1543							
1544
1545
1546<div id="dropdown-search-container">
1547  <div class="dropdown-search-wrapper" id="dropdown-search-wrapper">
1548    <span class="close" id="close-dropdown-search">&#10060;</span>
1549    <!-- dropdown search aside -->
1550    <div class="dropdown-search-aside has-bg">
1551      <div class="wrapper flex border-r"> 
1552      <!-- Refine search -->
1553      <div class="dropdown-search-block">        
1554        <span class="dropdown-search-block-heading">Include in search</span>
1555        <div class="dropdown-search-block-body search-filters">
1556            <span class="filter-item">
1557              <label class="switch">
1558                <input type="checkbox" class="filter-item-chk checkbox-large" filter="filterModels" id="search-models" checked>
1559                <span class="slider-toggle round"></span>		
1560              </label>
1561              <label for="search-models">Models</label>              
1562            </span> 
1563            <span class="filter-item">
1564              <label class="switch">
1565                <input type="checkbox" class="filter-item-chk checkbox-large" filter="filterProducts" id="search-products" checked>
1566                <span class="slider-toggle round"></span>	
1567              </label>
1568               <label for="search-products">Products</label>
1569            </span>
1570        </div>
1571      </div>  
1572      <!-- Recent searches -->
1573      <div class="dropdown-search-block hide" id="recent-searches-block">
1574        <div class="dropdown-search-block-heading flex">Recent searches  <span id="clear-recent-searches" class="hide">Clear</span></div>
1575        <div class="dropdown-search-block-body">
1576          <ul class="recent-searches" id="recent-searches-list">         
1577          </ul>
1578           <span class="view-more hide" id="more-recent-searches">View More</span>
1579        </div>      
1580      </div>
1581
1582      </div> <!-- end wrapper -->
1583    </div>  
1584
1585    <!-- dropdown search main -->
1586    <div class="dropdown-search-main">   
1587      <div class="dropdown-search-block">
1588          <span class="dropdown-search-block-heading" id="search-result-heading-block">
1589              <span  id="search-result-heading"> Search Results</span>
1590              <!-- Loading -->
1591              <img src="/i/icon/load-circle-dark.gif" class="hide" id="loading-icon"/>
1592          </span>          
1593          <!-- Search results -->
1594          <div class="dropdown-search-block-body hide" id="search-results-block">
1595            <ul class="result-list" id="search-result-list">
1596            </ul>	
1597            <!-- bottom action -->
1598            <div class="bottom-action">
1599                <span id="searchSeeMore" class="hide">More results (<span id="searchSeeMoreCount">0</span>)</span>
1600            </div>
1601          </div>
1602          <!-- Repeat last search -->
1603          <div class="dropdown-search-block-body mb-1 hide" id="repeat-last-search-block">
1604            <a href="#" class="text-info" id="repeat-last-search">Repeat last search "<span class="bold" id="last-search"></span>"</a>
1605          </div>
1606           <!-- Error message -->
1607          <div class="dropdown-search-block-body mb-1 hide" id="error-message-block">
1608            <span class="text-info"><b>We are sorry, but an error has occured.</b> This may be because our system is unusually busy, or because one of our servers is temporarily offline. Please try again in a few minutes.</span>
1609          </div>
1610          <!-- No Result found -->
1611          <div class="dropdown-search-block-body mb-1 hide" id="not-found-searchTerm-block">
1612            <span class="text-info">Sorry, no results were found for "<span class="bold text-dark" id="not-found-search-term-placeholder"></span>"</span>
1613          </div>
1614          <!-- Loading large -->
1615          <div class="dropdown-search-block-body mb-1 hide" id="loading-block">
1616            <img src="/i/icon/load-circle-dark.gif"     height="38px" />
1617          </div>
1618      </div>
1619      <div class="dropdown-search-block mt-auto hide" id="how-to-search-block">
1620         <span class="dropdown-search-block-heading hide" >Search suggestions</span>          
1621         <!-- How to search -->
1622          <div class="dropdown-search-block-body">            
1623            The recommended ways to search our site are to:  
1624            <ul>
1625            	<li>Enter a <b>Device Manufacturer and Model</b> (e.g. &quot;Acer Acernote 3350&quot;)</li>
1626<li>Enter a <b>Manufacturer's Part Number</b> (e.g. &quot;CP033616-01&quot;)</li>
1627<li>Enter a <b>Duracell or 2-Power Part Number</b> (e.g. &quot;DRC511&quot;)</li>
1628            </ul>                        
1629          </div>
1630      </div>
1631
1632    </div>
1633    <!-- end dropdown search wrapper -->
1634  </div> 
1635</div>
1636
1637<script>
1638  // Add visible and invisible funtionality to jquery
1639  (function($) {
1640    $.fn.invisible = function() {
1641        return this.each(function() {
1642            $(this).css("visibility", "hidden");
1643        });
1644    };
1645    $.fn.visible = function() {
1646        return this.each(function() {
1647            $(this).css("visibility", "visible");
1648        });
1649    };
1650  }(jQuery)); 
1651
1652
1653    var liveSearch = {
1654      ui:{
1655        closeBtn: $("#close-dropdown-search"),
1656        searchForm: $("#searchFormTop"),
1657        clearRecentSearchesLink: $("#clear-recent-searches"),
1658        dropDownSearch: $("#dropdown-search-container"),
1659        dropDownSearchWrapper: $("#dropdown-search-wrapper"),
1660        searchResultsHeading: $("#search-result-heading"),
1661        recentSearches: $("#recent-searches-block"),
1662        recentSearchesList: $("#recent-searches-list"),
1663        repeatLastSearch: $("#repeat-last-search-block"),
1664        lastSearchPhrase: $("#last-search"),
1665        repeatLastSearchLink: $("#repeat-last-search"),
1666        notFoundSearchTermBlock: $("#not-found-searchTerm-block"),
1667        notFoundSearchTermPlaceHolder: $("#not-found-search-term-placeholder"),
1668        errorMessageBlock: $("#error-message-block"),
1669        loadingIcon: $("#loading-icon"),
1670        loadingBlock: $("#loading-block"),
1671        howToSearch: $("#how-to-search-block"),
1672        searchResults: $("#search-results-block"),
1673        resultList: $("#search-result-list"),
1674        moreRecentBtn: $("#more-recent-searches"),
1675        searchBox: $(".search-box"),
1676        seeMoreBtn: $("#searchSeeMore"),
1677        seeMoreCount: $("#searchSeeMoreCount"),
1678        searchTermLink: $(".search-term"),
1679        filetItemChk: $(".filter-item-chk"),        
1680        searchFiltersContainer: $(".search-filters"),
1681        resultItem: $(".result-list-item")
1682      },
1683      settings:{
1684    	actions:{
1685    		search: "SEARCH",
1686    		log:"LOG_SEARCH_ERROR"
1687    	},
1688        timeDuration:{
1689          long:{
1690            timeout: 1500,
1691            timeInterval:1510
1692          },
1693          normal:{
1694            timeout: 600,
1695            timeInterval: 900
1696          },
1697          short:{
1698            timeout: 380,
1699            timeInterval: 400
1700          },
1701          timeIntervalThresholdTimeoutTimer: 900
1702        },
1703        isDebugEnabled: false,
1704        debugMode: 0,
1705        resultLimit: 5,
1706        focusOutDelay: 20,
1707        focusInDelay:20,
1708        recentSearchPhrasesCount: 6,
1709        recentSearchesLimit: 6,
1710        searchTokenLength: 10,
1711        timeIntervalCharThreshold: 4,
1712        ajaxRequestTimeout:18000
1713      },
1714      state:{
1715        doneTypingTimer: 600,
1716        timeIntervalTimer: 900,
1717        testTimers: false,
1718        originalSearchPhrase:"",
1719        searchPhrase: "",
1720        lastSearchPhrase:"",
1721        searchToken: null,
1722        lastSearchToken: null,
1723        typingTimer: null,
1724        timeInterval: null,
1725        hideSearchPopUpTimer:null,
1726        showSearchResults: false,
1727        resultFound: false,
1728        isSearchResultLoading: false,    
1729        isSearchPopUpOpen:false,
1730        lastEndWordIndex: 0,        
1731        splitedSearchPhrase: [],
1732        searchResult:undefined,
1733        recentSearches: undefined,
1734        visibleRecentSearchPhrases:0,
1735        error:false,
1736        filterModels: true,
1737        filterProducts: true
1738      },
1739      initialize: function(){
1740        if(this.settings.isDebugEnabled){
1741          if(this.settings.debugMode == 10)
1742            console.log("DEBUG, liveSearch.initialize ========================");
1743        }
1744
1745        this.state.recentSearches = this.getRecentSearchesFromLocalStorage("initialize");
1746        this.renderBlocks("initialize");  
1747        this.renderRecentSearchesAndRepeatSearch("initialize");
1748      },
1749      execute: function(searchPhrase, debugCaller){   
1750        if(this.settings.isDebugEnabled){
1751          var caller = "execute";
1752          if(this.settings.debugMode == 10){
1753            console.log("DEBUG, ============= liveSearch.execute,", searchPhrase ," =============", searchPhrase);
1754          }
1755        }        
1756        this.state.originalSearchPhrase = searchPhrase.trim();
1757        var lastSearchPhrase = this.state.lastSearchPhrase;
1758        // if search term has been edited by removing any char.
1759        var searchPhraseEdited = searchPhrase.trim().length < lastSearchPhrase.trim().length || ( searchPhrase.trim().length == lastSearchPhrase.trim().length && searchPhrase.trim() != lastSearchPhrase.trim() );
1760
1761        if(searchPhraseEdited){
1762          this.state.lastSearchPhrase = searchPhrase + "-1";
1763        }
1764
1765        if(this.state.isSearchPopUpOpen == false){
1766          this.showSearchPopUp(caller);
1767        }
1768
1769        var processedSearchPhrase = this.processSearchPhrase(caller);        						
1770         if(!processedSearchPhrase.validSearchTerm){
1771          if(this.settings.isDebugEnabled){
1772            if(this.settings.debugMode == 10){
1773              console.log("--- DEBUG, liveSearch.execute <=1 ");
1774            }
1775          }          
1776          // Clear search result and timers if if the search term is not valid
1777          this.clearSearch(caller);                
1778        }else{                
1779          this.state.isSearchResultLoading = true;
1780          this.renderBlocks();
1781          if(this.settings.isDebugEnabled){
1782            if(this.settings.debugMode == 10){
1783              console.log("--- DEBUG, liveSearch.execute else ");
1784            }
1785          }
1786
1787          // reset typing timer
1788          this.resetTypingTimer(caller);				
1789                  
1790          // Start time interval if it has not already started
1791          if(this.state.timeInterval == null){
1792            if(processedSearchPhrase.runTimeInterval){
1793              this.startTimeIntervalAndBeginSearch(caller);
1794            }
1795          }	          						         			
1796        }				
1797      },
1798      processSearchPhrase: function(debugCaller){
1799         if(this.settings.isDebugEnabled){
1800          var caller = "processSearchPhrase";
1801          if(this.settings.debugMode == 10 ){
1802            console.log("DEBUG, liveSearch.processSearchPhrase, called from ", debugCaller);      
1803          }
1804        } 
1805        var result = {
1806          validSearchTerm: false,
1807          runTimeInterval: false
1808        }
1809        var searchPhrase = this.state.originalSearchPhrase;
1810        //this.state.searchPhrase = searchPhrase;
1811        var searchTerms = [];
1812
1813        if(!this.isSearchPhraseEmpty(caller) && !this.hasSearchPhraseWhiteSpace(caller)){
1814          this.state.searchPhrase = searchPhrase;
1815          searchTerms = searchPhrase.split(/\s+/);
1816          var lastSearchTermIndex = searchTerms.length -1;
1817                                       
1818          // if last search term has only one char then set timers to long
1819          // else 
1820            // if search phrase has less then 4 chars then set runTimeInterval to false and timeout to timeIntervalThresholdTimeoutTimer
1821            // else set runTimeInterval to true and timers to normal
1822
1823          result.validSearchTerm = true;
1824          if(searchTerms[lastSearchTermIndex].length === 1){
1825            this.setTimerBetweenSearches('long');
1826          }else{
1827            if(searchPhrase.length < this.settings.timeIntervalCharThreshold){
1828              result.runTimeInterval = false;
1829              this.setTimerBetweenSearches('normal', this.settings.timeDuration.timeIntervalThresholdTimeoutTimer);
1830            }else{
1831              result.runTimeInterval = true;
1832              this.setTimerBetweenSearches('normal');
1833            }
1834          }
1835          
1836        }else{
1837          // if the search phrase is white space don't fire search 
1838           result.validSearchTerm = false;
1839        }
1840
1841        if(this.settings.isDebugEnabled){
1842          if(this.settings.debugMode > 1 ){
1843            console.log("DEBUG, liveSearch.processSearchPhrase, set timers. timeout:", this.state.doneTypingTimer, ", timeInterval:", this.state.timeIntervalTimer);
1844          }
1845        }
1846        return result;
1847      },
1848      setTimerBetweenSearches:function(timeBetweenSearches, timeoutTimer, timeIntervalTimer){
1849        var timeDuration = this.settings.timeDuration;
1850        this.state.doneTypingTimer = timeoutTimer || timeDuration[timeBetweenSearches].timeout;
1851        this.state.timeIntervalTimer = timeIntervalTimer || timeDuration[timeBetweenSearches].timeInterval;
1852      },
1853      doSearch: function(debugCaller){
1854        var searchPhrase = this.state.searchPhrase;
1855        var lastSearchPhrase = this.state.lastSearchPhrase;
1856        var fireSearch = searchPhrase !== lastSearchPhrase;
1857
1858        if(this.settings.isDebugEnabled){
1859          var caller = "doSearch";
1860          if(this.settings.debugMode > 0 ){
1861            console.log("DEBUG, liveSearch.doSearch, called from ", debugCaller,", original search phrase:'"+this.state.originalSearchPhrase+"', search phrase:'"+searchPhrase+"', last search term:'"+lastSearchPhrase+"', fireSearch: ", fireSearch);      
1862          }
1863        }          
1864        // this will prevent same search to fire twice in a row.
1865        if(fireSearch){
1866          // Genereate token to send with request
1867          this.generateToken(this.settings.searchTokenLength, caller);
1868          this.addLastSearchToken(caller);        
1869          this.state.lastSearchPhrase = searchPhrase;
1870
1871          this.renderBlocks();
1872          var that = this;
1873          $.ajax({
1874            url: "/e/Search",
1875            type: "GET",
1876            async: true,
1877            headers: {
1878                'Accept': 'application/json',
1879                'Content-Type': 'application/json;charset=UTF-8'
1880              },
1881            data: {'_action': that.settings.actions.search, 'search': searchPhrase, 'resultLimit':that.settings.resultLimit, 'token': that.state.searchToken},
1882            timeout: that.settings.ajaxRequestTimeout
1883          }).done(function(response) {
1884        	that.state.error = false;
1885            that.state.showSearchResults = true;      
1886            that.state.isSearchResultLoading = false;
1887            if(response != null){
1888              if(that.getObjectType(response) == "string")	
1889              	respose = JSON.parse(response);
1890              that.state.searchResult = response;
1891              that.renderResult(caller);          
1892            }else{
1893              that.state.searchResult = undefined;
1894              that.state.resultFound= false;
1895              that.renderBlocks(caller); 
1896            }
1897            that.clearTimeIntervalTimer(caller);
1898          }).error(function(err, textStatus) {
1899	       	 if(textStatus === 'timeout'){   
1900	            that.log(textStatus);
1901	        }
1902            that.state.isSearchResultLoading = false;
1903            that.state.searchResult = undefined;  
1904            that.state.error= true;
1905            that.state.resultFound= false;    
1906            that.clearTimers(caller);   
1907            that.renderBlocks(caller);             
1908          }); 
1909        }else{
1910          if(this.state.isSearchResultLoading){
1911            this.clearTimeIntervalTimer(caller);
1912            return;
1913          }
1914
1915          this.renderBlocks(caller);
1916          this.clearTimeIntervalTimer(caller);
1917        }
1918      },
1919      getObjectType: function(obj){
1920    	  if (Array.isArray(obj)) return 'array';
1921   	      else if (typeof obj == 'string') return 'string';
1922   	      else if (obj != null && typeof obj == 'object') return 'object';
1923   	      else return 'other';
1924      },
1925      log: function(debugCaller, errorCode){
1926    	  if(this.settings.isDebugEnabled){
1927              var caller = "logError";
1928              if(this.settings.debugMode == 10 ){
1929                console.log(" ---- DEBUG, liveSearch.logError, called from ", debugCaller);      
1930              }
1931            }
1932    	  $.ajax({
1933              url: "/e/Search",
1934              type: "Post",
1935              async: true,
1936              data: {'_action': that.settings.actions.log, 'error':errorCode},
1937              beforeSend: function( xhr ) {
1938                xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
1939              }
1940           });
1941      },
1942      renderBlocks: function(debugCaller){
1943        if(this.settings.isDebugEnabled){
1944          var caller = "renderBlocks";
1945          if(this.settings.debugMode == 10 ){
1946            console.log(" ---- DEBUG, liveSearch.renderBlocks, called from ", debugCaller);      
1947          }
1948        }
1949        var isSearchResultLoading = this.state.isSearchResultLoading;
1950        var isSearchPhraseEmpty =  this.isSearchPhraseEmpty(caller) ; 
1951        var untickedAllFilter = this.state.filterModels == false && this.state.filterProducts == false;
1952        var showSearchResults =  this.state.showSearchResults && this.state.resultFound;        
1953        var showLoadingIcon = isSearchResultLoading;
1954        var showLoadingBlock = false;//isSearchResultLoading && showSearchResults == false;
1955        if(
1956          (this.state.filterModels == false && this.state.searchResult && this.state.searchResult.matchingOemPartNumbers.length == 0 ) ||
1957          (this.state.filterProducts == false && this.state.searchResult && this.state.searchResult.matchingDevices.length ==0)
1958          ){
1959            showSearchResults= false;
1960        }
1961        var showResultList = isSearchPhraseEmpty === false && showSearchResults == true && untickedAllFilter == false;
1962        var showMoreResultsBtn = this.state.searchResult && this.state.searchResult.moreResultsCount > 0;
1963        var showRecentSearches = this.state.recentSearches != undefined;        
1964        //var showNotFoundMessage =  (isSearchResultLoading == false && showResultList == false && isSearchPhraseEmpty == false && this.state.searchPhrase.length > 1) || ( isSearchResultLoading == false && showResultList == false && untickedAllFilter == true && isSearchPhraseEmpty == false);
1965        var showSearchErrorMessage = (isSearchResultLoading == false && showResultList == false && isSearchPhraseEmpty == false )  && this.state.error == true;
1966        var showNotFoundMessage =  ((isSearchResultLoading == false && showResultList == false && isSearchPhraseEmpty == false ) || ( isSearchResultLoading == false && showResultList == false && untickedAllFilter == true && isSearchPhraseEmpty == false) ) && showSearchErrorMessage == false;
1967        var showRepeatLastSearch = showResultList == false && isSearchResultLoading == false && showNotFoundMessage == false && this.state.recentSearches ;        
1968        var showHowToSearch =  showResultList == false;
1969        var showSearchFiltersWarning = untickedAllFilter;
1970        var showSearchResultHeading = showResultList || showNotFoundMessage || showLoadingIcon;
1971                
1972                        
1973        // loading / loading icon
1974        if(showLoadingIcon){
1975          this.ui.loadingIcon.removeClass('hide');         
1976          this.ui.resultList.addClass('item-fade');       
1977          this.ui.seeMoreBtn.addClass('item-fade');
1978        }else{                
1979          this.ui.resultList.removeClass('item-fade');        
1980          this.ui.seeMoreBtn.removeClass('item-fade');  
1981          this.ui.loadingIcon.addClass('hide');
1982        }       
1983        
1984        // Error message
1985        if(showSearchErrorMessage){
1986        	this.ui.errorMessageBlock.removeClass('hide');
1987        }else{
1988        	this.ui.errorMessageBlock.addClass('hide');
1989        }
1990
1991                
1992        // View more results btn and search results
1993        if(showResultList){
1994          this.ui.searchResults.removeClass('hide');               
1995
1996          if(showMoreResultsBtn){
1997            this.ui.seeMoreCount.html(this.state.searchResult.moreResultsCount);
1998            this.ui.seeMoreBtn.removeClass('hide');
1999          }else{
2000            this.ui.seeMoreBtn.addClass('hide');
2001          }
2002        }else{
2003          this.ui.searchResults.addClass('hide');
2004          this.ui.seeMoreBtn.addClass('hide');          
2005        }
2006
2007        // Not found
2008        if(showNotFoundMessage){            
2009            this.ui.notFoundSearchTermBlock.removeClass('hide');
2010            this.ui.notFoundSearchTermPlaceHolder.html(this.state.searchPhrase);
2011        }else{
2012          this.ui.notFoundSearchTermBlock.addClass('hide');
2013        }
2014
2015        // Search result heading
2016        if(showSearchResultHeading){
2017          this.ui.searchResultsHeading.visible();
2018        }else{      
2019          this.ui.searchResultsHeading.invisible();
2020        }
2021
2022        // Recent searches
2023        if(showRecentSearches){   
2024          this.ui.recentSearches.removeClass('hide');
2025        }else{
2026          this.ui.recentSearches.addClass('hide');
2027        }
2028
2029        // Repeat last search 
2030        if(showRepeatLastSearch){          
2031          this.ui.repeatLastSearch.removeClass('hide');
2032          // Render last recent search
2033        }else{
2034          this.ui.repeatLastSearch.addClass('hide');
2035        }
2036
2037        // loading block
2038        if(showLoadingBlock){
2039          //console.log(" ---- SHOW loading block, debugCaller", debugCaller, " isLoading ", this.state.isSearchResultLoading, " date ", new Date());
2040          this.ui.loadingBlock.removeClass('hide');
2041        }else{
2042          //console.log(" ---- Hide loading block, debugCaller", debugCaller, " isLoading ", this.state.isSearchResultLoading, " date ", new Date());
2043          this.ui.loadingBlock.addClass('hide');
2044        }
2045        
2046        // How to search
2047        if(showHowToSearch){                    
2048          this.ui.howToSearch.removeClass('hide');
2049        }else{
2050          this.ui.howToSearch.addClass('hide');
2051        }  
2052
2053        // Search filters
2054        if(showSearchFiltersWarning){
2055          this.ui.searchFiltersContainer.addClass('warning');
2056        }else{
2057          this.ui.searchFiltersContainer.removeClass('warning');
2058        }
2059
2060      },
2061      renderResult: function(debugCaller){                
2062        var result = this.state.searchResult;     
2063        var renderResultList = true;
2064        var responseToken;
2065        if(result){
2066          responseToken= result.token;
2067          renderResultList = this.state.lastSearchToken == responseToken;
2068        }
2069               
2070
2071        if(this.settings.isDebugEnabled){
2072          var caller = "renderResult";
2073          if(this.settings.debugMode == 10 ){
2074            console.log("DEBUG, liveSearch.renderResult, called from ", debugCaller); 
2075            console.log("DEBUG, --- liveSearch.renderResult Response token: ", responseToken , ", Current token: ", this.state.searchToken );
2076            console.log("DEBUG, --- liveSearch.renderResult renderResultList: ", renderResultList);
2077          }
2078        }         
2079
2080        if(renderResultList){
2081          //console.log(" ---- Render results, debugCaller", debugCaller, new Date());
2082          this.ui.resultList.html('');       
2083          if(result == undefined || (result.matchingDevices.length == 0 && result.matchingOemPartNumbers.length == 0) ){
2084            this.state.resultFound = false;
2085            this.renderBlocks(caller);		
2086            return;
2087          }        
2088
2089          this.state.resultFound = true;
2090          var that = this;
2091          // populate matching devices
2092          if(result.matchingDevices && result.matchingDevices.length > 0){
2093            $.each(result.matchingDevices, function(index, device) {	
2094              //resultList
2095              var li = document.createElement("li");
2096              li.className = that.state.filterModels == false? "result-list-item dev hide":"result-list-item dev" ;
2097              
2098              var div1 = document.createElement("div");
2099              div1.className= 'flex-row';
2100              
2101              var spanHighlightedTitle = document.createElement("span");
2102              spanHighlightedTitle.innerHTML = device.highlightedTitle; 
2103              spanHighlightedTitle.className = 'search-result-text';
2104              var spanRange = document.createElement("span");
2105              spanRange.innerHTML = "	&nbsp; - "+device.matchingManufacturerText +"";
2106              spanRange.className = 'match-man-text';
2107              
2108              //div1.appendChild(spanHighlightedTitle);
2109              //div1.appendChild(spanRange);
2110              
2111              //var div2 = document.createElement("div");
2112              //div2.className= 'flex-column';
2113              
2114              var href;
2115              
2116              if(device.siteSections.length > 1){
2117                //Display or site sections
2118                device.siteSections.map(function(siteSection){
2119                  href= document.createElement("a");
2120                  href.setAttribute("class", "result-item");
2121                  href.setAttribute("href", siteSection.url);
2122                  href.setAttribute("title", siteSection.title.trim());
2123                  //href.innerHTML = '&#8226; '+ siteSection.title.trim();
2124                  //div2.appendChild(href);
2125                });											
2126              }else{
2127                href= document.createElement("a");
2128                href.setAttribute("class", "result-item");              
2129                href.setAttribute("href", device.url);
2130                href.setAttribute("title", device.title);
2131                //href.innerHTML = '&#8226; '+ device.sectionTag.trim();
2132                //div2.appendChild(href);
2133              }
2134              href.appendChild(spanHighlightedTitle);
2135              href.appendChild(spanRange);
2136              div1.appendChild(href);
2137              
2138              
2139              li.appendChild(div1);
2140              //li.appendChild(div2);										
2141              that.ui.resultList.append(li);	
2142            })          
2143          }
2144
2145          // populate matching oem part numbers
2146          if(result.matchingOemPartNumbers && result.matchingOemPartNumbers.length > 0){
2147            $.each(result.matchingOemPartNumbers, function(index, matchingOemPartNumber) {	
2148              //resultList
2149              var li = document.createElement("li");
2150              li.className = that.state.filterProducts == false ? "result-list-item oem hide":"result-list-item oem" ;
2151
2152              var href = document.createElement("a");
2153              href.setAttribute("href", matchingOemPartNumber.url);
2154              href.setAttribute("title", matchingOemPartNumber.title);	
2155              href.className= 'flex-row align-items-center result-item';
2156              
2157              // add icon if exists
2158              /* if(matchingOemPartNumber.oemPartNumber){
2159                var spanOemImage = document.createElement("span");
2160                spanOemImage.className = 'search-oem-icon';
2161                spanOemImage.style.backgroundImage = "url(/i/products_stamp/vpns/'"+ matchingOemPartNumber.icon+"'.jpg)";
2162                href.appendChild(spanOemImage);
2163              } */
2164              
2165              var spanHighlightedTitle = document.createElement("span");
2166              spanHighlightedTitle.innerHTML = matchingOemPartNumber.highlightedTitle; 
2167              spanHighlightedTitle.className = 'search-result-text';
2168              var spanRange = document.createElement("span");
2169              spanRange.innerHTML = "	&nbsp; ("+ matchingOemPartNumber.matchingManufacturerText +")";				
2170              spanRange.className = 'match-man-text';																								
2171              href.appendChild(spanHighlightedTitle);
2172              href.appendChild(spanRange);
2173              li.appendChild(href);								
2174              that.ui.resultList.append(li);	
2175            });									
2176          }					
2177
2178          this.renderBlocks(caller);			
2179          addEventListeners();
2180        }
2181      },
2182      renderRecentSearchesAndRepeatSearch: function(debugCaller){
2183        
2184        if(this.settings.isDebugEnabled){
2185          var caller = "renderRecentSearchesAndRepeatSearch";
2186          if(this.settings.debugMode == 10 ){
2187            console.log("DEBUG, liveSearch.renderRecentSearchesAndRepeatSearch, called from ", debugCaller); 
2188          }
2189        }
2190          
2191
2192        if(this.state.recentSearches && this.state.recentSearches.searchPhrases){
2193          // Render repeat search
2194          this.ui.lastSearchPhrase.html(this.state.recentSearches.searchPhrases[0]);
2195
2196          // Render recent searches
2197          var recentSearchPhrasesCount = this.state.recentSearches.searchPhrases.length;
2198          var searchPhraseToRender = this.state.visibleRecentSearchPhrases === 0 ? this.settings.recentSearchPhrasesCount : this.state.visibleRecentSearchPhrases;
2199          // Empty ul
2200          this.ui.recentSearchesList.html('');
2201
2202          if(recentSearchPhrasesCount <= searchPhraseToRender){
2203            
2204            this.ui.moreRecentBtn.addClass('hide');
2205            // Render all available search terms
2206            for(var i=0; i < recentSearchPhrasesCount; i++){
2207              var searchPhraseLi = document.createElement("li");
2208              var searchPhraseSpan= document.createElement("span");
2209              searchPhraseSpan.className = "search-term";
2210              searchPhraseSpan.setAttribute('index',i);
2211              searchPhraseSpan.innerHTML = this.state.recentSearches.searchPhrases[i];
2212              searchPhraseLi.append(searchPhraseSpan);
2213              this.ui.recentSearchesList.append(searchPhraseLi);
2214            } 
2215          }else{
2216            // Render search terms
2217            this.state.visibleRecentSearchPhrases = searchPhraseToRender;
2218            for(var i=0; i < searchPhraseToRender; i++){
2219              var searchPhraseLi = document.createElement("li");
2220              var searchPhraseSpan= document.createElement("span");
2221              searchPhraseSpan.className = "search-term";
2222              searchPhraseSpan.setAttribute('index',i);
2223              searchPhraseSpan.innerHTML = this.state.recentSearches.searchPhrases[i];
2224              searchTesearchPhraseLirmLi.append(searchPhraseSpan);
2225              this.ui.recentSearchesList.append(searchPhraseLi);
2226            } 
2227          }
2228        }
2229        addEventListeners();
2230      },
2231      viewMoreRecentSearches: function(debugCaller){
2232        if(this.settings.isDebugEnabled){
2233          var caller = "viewMoreRecentSearches";
2234          if(this.settings.debugMode == 10 ){
2235            console.log("DEBUG, liveSearch.viewMoreRecentSearches, called from ", debugCaller); 
2236          }
2237        }
2238          
2239          
2240        var recentSearchPhrasesCount = this.state.recentSearches.searchPhrases.length;
2241        var searchPhrasesToRender = this.state.visibleRecentSearchPhrases + this.settings.recentSearchPhrasesCount;
2242        if(recentSearchPhrasesCount < searchPhrasesToRender){
2243           this.state.visibleRecentSearchPhrases = recentSearchPhrasesCount;
2244        }else {
2245          this.state.visibleRecentSearchPhrases = searchPhrasesToRender;
2246        }
2247
2248        this.renderRecentSearchesAndRepeatSearch(caller);
2249      },            
2250      resetTypingTimer: function(debugCaller){      
2251        if(this.settings.isDebugEnabled){
2252          var caller = "resetTypingTimer";
2253          if(this.settings.debugMode == 10 ){
2254            console.log("DEBUG, liveSearch.resetTypingTimer, called from ", debugCaller); 
2255          }
2256        }          
2257        // Clear timeout timer
2258        this.clearTypingTimer(caller);
2259        var that = this;
2260        // Start timeout timer
2261        this.state.typingTimer = setTimeout(function(){
2262          // After the timeout, clear the time interval timer
2263          // and do a final search
2264          that.clearTimeIntervalTimer(caller);
2265          that.doSearch(caller + " final");
2266          that.clearTypingTimer(caller +" final");
2267        }, this.state.doneTypingTimer);
2268        
2269      },
2270      startTimeIntervalAndBeginSearch: function(debugCaller){       
2271        if(this.settings.isDebugEnabled){
2272          var caller = "startTimeIntervalAndBeginSearch";
2273          if(this.settings.debugMode == 10 ){
2274            console.log("DEBUG, liveSearch.startTimeIntervalAndBeginSearch, called from ", debugCaller); 
2275          }
2276        } 
2277        var that = this;							
2278        this.state.timeInterval = setInterval(function(){
2279          that.doSearch(caller);
2280        },this.state.timeIntervalTimer);
2281      },
2282      clearTypingTimer: function(debugCaller){
2283        if(this.settings.isDebugEnabled){
2284          var caller = "clearTypingTimer";
2285          if(this.settings.debugMode == 10 ){
2286            console.log("DEBUG, liveSearch.clearTypingTimer, called from ", debugCaller); 
2287          }
2288        }          
2289
2290        clearTimeout(this.state.typingTimer, caller);
2291        this.state.typingTimer = null;
2292      },
2293       clearTimeIntervalTimer:function(debugCaller){
2294        if(this.settings.isDebugEnabled){
2295          var caller = "clearTimeIntervalTimer";
2296          if(this.settings.debugMode == 10 ){
2297            console.log("DEBUG, liveSearch.clearTimeIntervalTimer, 
2297called from ", debugCaller); 
2298          }
2299        }   
2300
2301        clearInterval(this.state.timeInterval);
2302        this.state.timeInterval = null;
2303      },
2304      clearTimers: function(debugCaller){
2305        if(this.settings.isDebugEnabled){
2306          var caller = "clearTimers";
2307          if(this.settings.debugMode == 10 ){
2308            console.log("DEBUG, liveSearch.clearTimers, called from ", debugCaller); 
2309          }
2310        }   
2311
2312        clearInterval(this.state.timeInterval);
2313        clearTimeout(this.state.typingTimer);	
2314        this.state.typingTimer = null;
2315        this.state.timeInterval = null;
2316      },
2317      clearHideSearchPopUpTimer: function(debugCaller){
2318        if(this.settings.isDebugEnabled && debugCaller){
2319          var caller = "clearHideSearchPopUpTimer";
2320          if(this.settings.debugMode == 10 ){
2321            console.log("DEBUG, liveSearch.clearHideSearchPopUpTimer, called from ", debugCaller); 
2322          }
2323        }   
2324
2325        clearTimeout(this.state.hideSearchPopUpTimer, caller);
2326        this.state.hideSearchPopUpTimer = null;
2327      },     
2328      clearSearch: function(debugCaller){
2329        if(this.settings.isDebugEnabled){
2330          var caller = "clearSearch";
2331          if(this.settings.debugMode == 10 ){
2332            console.log("DEBUG, liveSearch.clearSearch, called from ", debugCaller); 
2333          }
2334        }   
2335
2336        this.clearTimers(caller);
2337        this.state.isSearchResultLoading = false;
2338        this.state.showSearchResults = false;
2339        this.state.resultFound = false;
2340        this.state.lastEndWordIndex = 0;
2341        this.state.splitedSearchPhrase = [];
2342        //this.hideSearchPopUp();
2343        this.renderBlocks(caller);
2344      },
2345      clearRecentSearches: function(debugCaller){
2346        if(this.settings.isDebugEnabled){
2347          var caller = "clearRecentSearches";
2348          if(this.settings.debugMode == 10 ){
2349            console.log("DEBUG, liveSearch.clearRecentSearches, called from ", debugCaller); 
2350          }
2351        }
2352
2353        localStorage.removeItem(caller);
2354        this.state.visibleRecentSearchPhrases=0;
2355        this.state.recentSearches  = undefined;
2356        this.renderRecentSearchesAndRepeatSearch(caller);
2357        this.renderBlocks(caller);
2358      },
2359      repeatSearch: function(index, debugCaller){
2360        if(this.settings.isDebugEnabled){
2361          var caller = "repeatSearch";
2362          if(this.settings.debugMode == 10 ){
2363            console.log("DEBUG, liveSearch.repeatSearch, called from ", debugCaller); 
2364          }
2365        }
2366        var searchPhrase ="";
2367        if(index === undefined){
2368          searchPhrase = this.state.recentSearches.searchPhrases[0];
2369          this.execute(searchPhrase, caller); 
2370        }else{
2371           searchPhrase = this.state.recentSearches.searchPhrases[index];
2372          this.execute(searchPhrase, caller); 
2373        }
2374        this.ui.searchBox.val(searchPhrase);
2375      },
2376      refineSearch: function(filterItem, isChecked, debugCaller){
2377        if(this.settings.isDebugEnabled){
2378          var caller = "refineSearch";
2379          if(this.settings.debugMode == 10 ){
2380            console.log("DEBUG, liveSearch.refineSearch, called from ", debugCaller); 
2381          }
2382        }
2383
2384        this.state[filterItem] = isChecked;
2385
2386        if(filterItem == 'filterModels'){     
2387          if(isChecked){
2388            this.ui.resultList.find('.result-list-item.dev').removeClass('hide');
2389          }else{
2390            this.ui.resultList.find('.result-list-item.dev').addClass('hide');
2391          }      
2392                   
2393        }
2394        if(filterItem == 'filterProducts'){
2395          if(isChecked){
2396            this.ui.resultList.find('.result-list-item.oem').removeClass('hide');
2397          }else{
2398            this.ui.resultList.find('.result-list-item.oem').addClass('hide');
2399          }  
2400        }
2401        
2402        this.renderBlocks(caller);
2403      },      
2404      checkForEndOfWord: function(debugCaller){
2405        if(this.settings.isDebugEnabled){
2406          var caller = "checkForEndOfWord";
2407          if(this.settings.debugMode == 10 ){
2408            console.log("DEBUG, liveSearch.checkForEndOfWord, called from ", debugCaller); 
2409          }
2410        }          
2411        // Rewrite this function
2412        var isEndOfWord=false;
2413        var separators = [' '];	//, '\\\.'   	
2414        var searchPhrase = this.state.searchPhrase;
2415        var splitedSearchPhrase = searchPhrase.replace(/\s\s+/g, ' ').split(new RegExp(separators.join('|'), 'g'));
2416        if(splitedSearchPhrase.length > 1 && this.state.lastEndWordIndex < splitedSearchPhrase.length){
2417          this.state.lastEndWordIndex = splitedSearchPhrase.length;		
2418        }
2419        return isEndOfWord;
2420      },
2421      isSearchPhraseEmpty: function(debugCaller){
2422        if(this.settings.isDebugEnabled){
2423          var caller = "isSearchPhraseEmpty";
2424          if(this.settings.debugMode == 10 ){
2425            console.log("DEBUG, liveSearch.isSearchPhraseEmpty, called from ", debugCaller); 
2426          }
2427        }  
2428
2429        return this.state.originalSearchPhrase.trim() === '';
2430      },
2431      hasSearchPhraseWhiteSpace: function(debugCaller){
2432        if(this.settings.isDebugEnabled){
2433          var caller = "isSearchPhraseEmpty";
2434          if(this.settings.debugMode == 10 ){
2435            console.log("DEBUG, liveSearch.isSearchPhraseEmpty, called from ", debugCaller); 
2436          }
2437        } 
2438        var whitespaceRegex = /^\s+$/;
2439        return whitespaceRegex.test(this.state.originalSearchPhrase);
2440      },
2441      addSearchPhrase: function(debugCaller){
2442        if(this.settings.isDebugEnabled){
2443          var caller = "addSearchPhrase";
2444          if(this.settings.debugMode == 10 ){
2445            console.log("DEBUG, liveSearch.addSearchPhrase, called from ", debugCaller); 
2446          }
2447        }   
2448
2449        // add item to array only if search term is not empty and it has results
2450        if(this.isSearchPhraseEmpty(caller) === false && this.state.resultFound){
2451            // if recentSearches is undefined
2452          if(this.state.recentSearches === undefined){
2453            // initialise recentSearches object and add search term
2454            this.state.recentSearches = {};
2455            this.state.recentSearches.searchPhrases = [];
2456            this.state.recentSearches.searchPhrases.push(this.state.searchPhrase);
2457          } else {
2458
2459            if(!this.state.recentSearches.searchPhrases){
2460              this.state.recentSearches.searchPhrases = [];
2461            } else {
2462              // find if search terms already exists in the array or not
2463              if(this.state.recentSearches.searchPhrases.includes(this.state.searchPhrase) === false){
2464                // Add search term to the beginning
2465                this.state.recentSearches.searchPhrases.unshift(this.state.searchPhrase);
2466              }else {
2467                // Remove item from current position and add it to the beginning
2468                var index = this.state.recentSearches.searchPhrases.indexOf(this.state.searchPhrase);
2469                this.state.recentSearches.searchPhrases.splice(index, 1); 
2470                this.state.recentSearches.searchPhrases.unshift(this.state.searchPhrase);
2471              }
2472            }
2473          }    
2474
2475          if(this.state.recentSearches.searchPhrases.length == this.settings.recentSearchesLimit)
2476                this.state.recentSearches.searchPhrases.pop();
2477          this.addRecentSearchesToLocalStorage(caller);      
2478        }
2479      },      
2480      addRecentSearchesToLocalStorage: function(debugCaller){
2481        if(this.settings.isDebugEnabled){
2482          var caller = "addRecentSearchesToLocalStorage";
2483          if(this.settings.debugMode == 10 ){
2484            console.log("DEBUG, liveSearch.addRecentSearchesToLocalStorage, called from ", debugCaller); 
2485          }
2486        }
2487
2488        localStorage.recentSearches = JSON.stringify(this.state.recentSearches);
2489      },
2490      getRecentSearchesFromLocalStorage: function(debugCaller){
2491       if(this.settings.isDebugEnabled){
2492          var caller = "getRecentSearchesFromLocalStorage";
2493          if(this.settings.debugMode == 10 ){
2494            console.log("DEBUG, liveSearch.getRecentSearchesFromLocalStorage, called from ", debugCaller); 
2495          }
2496        }
2497
2498        if(localStorage.recentSearches === undefined)
2499          return undefined;
2500
2501        return JSON.parse(localStorage.recentSearches);
2502      },      
2503      hideSearchPopUp: function(debugCaller){    
2504        if(this.settings.isDebugEnabled && debugCaller){
2505          var caller = "hideSearchPopUp";
2506          if(this.settings.debugMode == 10 ){
2507            console.log("DEBUG, liveSearch.hideSearchPopUp, called from ", debugCaller); 
2508          }
2509        }
2510
2511        var that = this;
2512        this.state.hideSearchPopUpTimer = setTimeout(function(){
2513          that.state.isSearchPopUpOpen = false;
2514          that.ui.searchBox.removeClass('open');
2515          that.ui.dropDownSearch.removeClass('open');   
2516        }, that.settings.focusOutDelay);        
2517      },
2518      showSearchPopUp: function(debugCaller){
2519        if(this.settings.isDebugEnabled && debugCaller){
2520          var caller = "showSearchPopUp";
2521          if(this.settings.debugMode == 10 ){
2522            console.log("DEBUG, liveSearch.showSearchPopUp, called from ", debugCaller); 
2523          }
2524        }
2525
2526        this.clearHideSearchPopUpTimer();
2527        var that = this;
2528        this.state.hideSearchPopUpTimer = setTimeout(function(){
2529          that.state.isSearchPopUpOpen = true;
2530          that.ui.searchBox.addClass('open');
2531          that.ui.dropDownSearch.addClass('open');  
2532        }, that.settings.focusInDelay);          
2533      },
2534      generateToken: function(n, debugCaller) {
2535        var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
2536        var token = '';
2537        for(var i = 0; i < n; i++) {
2538            token += chars[Math.floor(Math.random() * chars.length)];
2539        }
2540        this.state.searchToken = token;
2541        if(this.settings.isDebugEnabled){
2542          var caller = "generateToken";
2543          if(this.settings.debugMode == 10 ){
2544            console.log("DEBUG, liveSearch.generateToken, Token: ", token , ", called from ", debugCaller); 
2545          }
2546        }
2547        return token;
2548      },
2549      addLastSearchToken: function(debugCaller){       
2550        var token = this.state.searchToken;
2551
2552        if(this.settings.isDebugEnabled){
2553          var caller = "addLastSearchToken";
2554          if(this.settings.debugMode == 10 ){
2555            console.log("DEBUG, liveSearch.addLastSearchToken, Token: ", this.state.searchToken , ", called from ", debugCaller); 
2556          }
2557        }
2558        // Add token to the list
2559        this.state.lastSearchToken = token;
2560      },
2561      setDebugMode: function( enabled, mode ){
2562        this.settings.isDebugEnabled = enabled;
2563        this.settings.debugMode = mode; 
2564      }
2565  };
2566
2567  liveSearch.initialize();
2568      
2569  liveSearch.ui.searchBox.on("input", function(e) {	
2570    var searchPhrase = $(this).val();
2571    liveSearch.execute(searchPhrase);    							
2572	});	
2573  
2574  liveSearch.ui.searchBox.on("click", function(e) {	
2575	  liveSearch.showSearchPopUp();							
2576  });	
2577
2578  liveSearch.ui.searchForm.on("mouseenter", function(){	  
2579	 if($(this).attr("class").includes("open")){
2580		 liveSearch.showSearchPopUp();	 
2581	 }
2582  });
2583
2584  /* liveSearch.ui.searchForm.on("mouseleave", function(){
2585    liveSearch.hideSearchPopUp();
2586  }); */
2587  
2588  liveSearch.ui.dropDownSearch.on( "mouseenter", function() {
2589    liveSearch.showSearchPopUp();
2590  });
2591  liveSearch.ui.dropDownSearch.on( "mouseleave", function() {
2592    liveSearch.hideSearchPopUp();
2593  });
2594
2595  // liveSearch.ui.searchBox.focusin(function(){		
2596	// 	liveSearch.showSearchPopUp();					
2597	// });
2598
2599  liveSearch.ui.closeBtn.click(function(){
2600    liveSearch.hideSearchPopUp();
2601  });
2602
2603  liveSearch.ui.clearRecentSearchesLink.click(function(){
2604    liveSearch.clearRecentSearches();
2605  });
2606	
2607	liveSearch.ui.seeMoreBtn.click(function(e){
2608		liveSearch.ui.searchForm.submit();
2609	});
2610
2611  liveSearch.ui.searchForm.submit(function(e){
2612    liveSearch.addSearchPhrase();
2613  });
2614
2615  liveSearch.ui.repeatLastSearchLink.click(function(e){
2616    e.preventDefault();
2617    liveSearch.repeatSearch();
2618    liveSearch.ui.searchBox.focus();
2619  });
2620
2621  liveSearch.ui.filetItemChk.change(function(e){
2622    var filter = $(this).attr('filter');
2623    var isChecked = $(this).is(':checked');
2624    liveSearch.refineSearch(filter, isChecked);
2625  });
2626
2627  // liveSearch.ui.moreRecentBtn.click(function(){
2628  //   liveSearch.viewMoreRecentSearches();
2629  // });
2630
2631  function addEventListeners(){
2632    liveSearch.ui.recentSearchesList.find('.search-term').click(function(e){
2633            var index = $(this).attr("index");
2634            liveSearch.repeatSearch(index);
2635            liveSearch.ui.searchBox.focus();
2636    });
2637
2638    liveSearch.ui.resultList.find('.result-item').click(function(e){
2639      e.preventDefault();
2640      var href = $(this).attr("href");
2641      liveSearch.addSearchPhrase();
2642      window.location.href = href;
2643    });
2644  }
2645
2646	// $("#searchFrequency").change(function(){
2647	// 	doneTypingTimer = 100  * $(this).val();
2648	// 	$("#searchFrequencyLabel").html(doneTypingTimer);
2649	// });
2650
2651</script>
2651
2652
2653						
2654					</div>
2655							
2656			</div>
2657			
2658			
2659			<div class="nav-right">
2660				
2661				
2662				
2663				
2664				
2665				
2666					<div id="trusted-brand">
2667										
2668					</div>
2669				
2670			</div>
2671			
2672			
2673		</div>		
2674			
2675		
2676		
2677			
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689	
2690	
2691		
2692				
2693		
2694				
2695					
2696				
2697	 
2698		
2699	
2700
2701
2702
2703<nav class="navbar">
2704	<div class="navbar-container">
2705		<ul class="navbar-nav">		
2706		
2707			<li class="nav-tab dropdown-fluid on-hover" id="1">
2708				<a class="nav-tab-link icon-right" href="#">Batteries &amp; Chargers by Device</a>
2709				 <div class="nav-tab-item-panel">
2710	    		 	<div class="nav-columns">
2711		    		 	<div class="col">
2712		    		 		<ul class="nav-column ">
2713		    		 			
2714		    		 				
2715		    		 				
2716									
2717									
2718									
2719				    		 		<li class="nav-item">				    		 			
2720				    		 			<a href="/laptop-notebook-battery-adapter-charger.html" class="nav-link" title="Laptop &amp; Ultrabook <i>Battery or Adapter</i>">Laptop &amp; Ultrabook <i>Battery or Adapter</i></a>
2721				    		 		</li>	
2722		    		 			
2723		    		 				
2724		    		 				
2725									
2726									
2727									
2728				    		 		<li class="nav-item">				    		 			
2729				    		 			<a href="/digital-camera-battery-adapter-charger.html" class="nav-link" title="Digital Camera <i>Battery or Charger</i>">Digital Camera <i>Battery or Charger</i></a>
2730				    		 		</li>	
2731		    		 			
2732		    		 				
2733		    		 				
2734									
2735									
2736									
2737				    		 		<li class="nav-item">				    		 			
2738				    		 			<a href="/camcorder-battery-adapter-charger.html" class="nav-link" title="Camcorder <i>Battery or Charger</i>">Camcorder <i>Battery or Charger</i></a>
2739				    		 		</li>	
2740		    		 						    		 		    		 
2741			    		 	</ul>
2742			    		 	
2743			    		 	
2744			    		 	
2745		    		 	</div>	
2746		    		 	
2747		    		 	<div class="col">
2748		    		 		<ul class="nav-column ">
2749		    		 						    		 		    		 
2750			    		 	</ul>
2751		    		 	</div>
2752		    		 	
2753		    		 	<div class="col">
2754		    		 		<ul class="nav-column ">
2755		    		 						    		 		    		 
2756			    		 	</ul>
2757		    		 	</div>
2758		    		 	
2759		    		 	<div class="col">
2760		    		 		<ul class="nav-column ">
2761		    		 						    		 		    		 
2762			    		 	</ul>
2763		    		 	</div>		
2764	    		 	</div> 	    		 	
2765	    		 </div>
2766			</li>
2767		
2768		
2769		
2770			<li class="nav-tab dropdown-fluid on-hover" id="2">
2771				<a class="nav-tab-link icon-right" href="#">Household Batteries</a>
2772				 <div class="nav-tab-item-panel">
2773	    		 	<div class="nav-columns">
2774	    		 		
2775			    		 	<div class="col">
2776			    		 		<ul class="nav-column ">
2777			    		 			<li class="nav-header">		    		 					
2778			    		 				<span>Alkaline Batteries</span>
2779				    		 		</li>
2780				    		 		
2781				    		 		
2782			    		 					
2783			    		 				
2784			    		 				
2785			    		 				<!-- test 2 -->
2786			    		 				
2787			    		 					
2788			    		 						
2789			    		 						
2790			    		 						
2791			    		 					
2792			    		 					
2793			    		 				
2794			    		 				
2795					    		 		<li class="nav-item">				    		 			
2796					    		 			<a href="/multi-purpose/aaa-alkaline-batteries.html" class="nav-link" title="AAA Alkaline">AAA Alkaline</a>
2797					    		 		</li>	
2798					    		 		
2799			    		 					
2800			    		 				
2801			    		 				
2802			    		 				<!-- test 1 -->
2803			    		 				
2804			    		 					
2805			    		 						
2806			    		 						
2807			    		 						
2808			    		 					
2809			    		 					
2810			    		 				
2811			    		 				
2812					    		 		<li class="nav-item">				    		 			
2813					    		 			<a href="/multi-purpose/aa-alkaline-batteries.html" class="nav-link" title="AA Alkaline">AA Alkaline</a>
2814					    		 		</li>	
2815					    		 		
2816			    		 					
2817			    		 				
2818			    		 				
2819			    		 				<!-- test 8 -->
2820			    		 				
2821			    		 					
2822			    		 						
2823			    		 						
2824			    		 						
2825			    		 					
2826			    		 					
2827			    		 				
2828			    		 				
2829					    		 		<li class="nav-item">				    		 			
2830					    		 			<a href="/multi-purpose/c-alkaline-batteries.html" class="nav-link" title="C Alkaline">C Alkaline</a>
2831					    		 		</li>	
2832					    		 		
2833			    		 					
2834			    		 				
2835			    		 				
2836			    		 				<!-- test 9 -->
2837			    		 				
2838			    		 					
2839			    		 						
2840			    		 						
2841			    		 						
2842			    		 					
2843			    		 					
2844			    		 				
2845			    		 				
2846					    		 		<li class="nav-item">				    		 			
2847					    		 			<a href="/multi-purpose/d-alkaline-batteries.html" class="nav-link" title="D Alkaline">D Alkaline</a>
2848					    		 		</li>	
2849					    		 		
2850			    		 					
2851			    		 				
2852			    		 				
2853			    		 				<!-- test 11 -->
2854			    		 				
2855			    		 					
2856			    		 						
2857			    		 						
2858			    		 						
2859			    		 					
2860			    		 					
2861			    		 				
2862			    		 				
2863					    		 		<li class="nav-item">				    		 			
2864					    		 			<a href="/multi-purpose/9v-alkaline-batteries.html" class="nav-link" title="9V Alkaline">9V Alkaline</a>
2865					    		 		</li>	
2866					    		 		
2867			    		 					
2868			    		 				
2869			    		 				
2870			    		 				<!-- test  -->
2871			    		 				
2872			    		 					
2873			    		 					
2874			    		 						
2875			    		 						
2876			    		 						
2877			    		 					
2878			    		 				
2879			    		 				
2880					    		 		<li class="nav-item">				    		 			
2881					    		 			<a href="/multi-purpose/miscellaneous-alkaline-batteries.html" class="nav-link" title="Other Alkaline">Other Alkaline</a>
2882					    		 		</li>	
2883					    		 		
2884			    		 						    		 		    		 
2885				    		 	</ul>
2886			    		 	</div>	
2887		    		 		 
2888		    		 	
2889		    		 		       		 	
2890
2891						
2892		    		 
2893		    		 	
2894			    		 	<div class="col">
2895			    		 		<ul class="nav-column ">
2896			    		 			<li class="nav-header">		    		 					
2897			    		 				<span>Search by battery code or type</span>
2898				    		 		</li>			    		 			
2899				    		 		<li class="nav-item">				    		 			
2900				    		 			<form action="/info/search.html" method="get" class="search-form-nav" autocomplete="off">
2901											<div class="search-wrapper-input">												
2902												<input type="text" id="search-box-nav" class="input input-sm input-dark input-rou
2902nd" name="search" style="width:250px" autocomplete="off" placeholder="Example, DL2032">
2903												<button type="submit" class="search-icon">&nbsp;</button>												
2904											</div>
2905										</form>				    		 			
2906				    		 		</li>			    		 		    		 
2907				    		 	</ul>
2908			    		 	</div>	
2909		    		 	
2910	    		 	</div> 	    		 	
2911	    		 </div>
2912			</li>
2913		
2914		
2915		
2916		
2917		
2918		<!--  -->
2919		
2920		
2921		<li class="nav-tab dropdown-fluid country-tab toggle" id="5">
2922			<a class="nav-tab-link" href="#">US</a>
2923			 <div class="nav-tab-item-panel">
2924			 
2925			 		<div class="nav-panel-top">
2926			 			<span class="nav-panel-top-heading">Select your region and language</span> <span class="nav-panel-top-close" target="5">&#10006;</span>
2927			 		</div>
2928	    		 	<div class="nav-columns">	    		 		    		 			    		 		
2929		    		 	<div class="col">
2930		    		 		<ul class="nav-column ">
2931	    		 				
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941<!-- uriPrefix:  -->
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952		
2953			
2954		
2955
2956		
2957			
2958		
2959
2960		
2961			
2962		
2963
2964		
2965			
2966		
2967
2968		
2969			
2970		
2971
2972		
2973			
2974		
2975
2976		
2977			
2978		
2979
2980		
2981			
2982		
2983
2984		
2985			
2986		
2987
2988		
2989			
2990		
2991
2992		
2993			
2994		
2995
2996		
2997			
2998		
2999
3000		
3001			
3002		
3003
3004		
3005			
3006		
3007
3008		
3009			
3010		
3011
3012		
3013			
3014		
3015
3016		
3017			
3018		
3019
3020		
3021			
3022		
3023
3024		
3025
3026
3027
3028
3029
3030
3031	
3032	<!-- countryCode: GB -->
3033	
3034			
3035				
3036				
3037								
3038			
3039			
3040			
3041			
3042			
3043			
3044			
3045			
3046			
3047			
3048			
3049			
3050			
3051			
3052			
3053			
3054			
3055			
3056			
3057			
3058						
3059    <li class="nav-item">				    		 			
3060		<a href="https://www.duracelldirect.co.uk/" class="nav-link" title="English"><span class="flag"><img src="/i/flag/64/gb.png"></span> <span class="currency">£</span> <span>English</span></a>
3061	</li>
3062	
3063	<!-- countryCode: IT -->
3064	
3065			
3066			
3067				
3068				
3069				
3070			
3071			
3072			
3073			
3074			
3075			
3076			
3077			
3078			
3079			
3080			
3081			
3082			
3083			
3084			
3085			
3086			
3087			
3088			
3089						
3090    <li class="nav-item">				    		 			
3091		<a href="https://www.duracelldirect.it/" class="nav-link" title="Italiano"><span class="flag"><img src="/i/flag/64/it.png"></span> <span class="currency">€</span> <span>Italiano</span></a>
3092	</li>
3093	
3094	<!-- countryCode: FR -->
3095	
3096			
3097			
3098			
3099				
3100				
3101				
3102			
3103			
3104			
3105			
3106			
3107			
3108			
3109			
3110			
3111			
3112			
3113			
3114			
3115			
3116			
3117			
3118			
3119			
3120						
3121    <li class="nav-item">				    		 			
3122		<a href="https://www.duracelldirect.fr/" class="nav-link" title="Français"><span class="flag"><img src="/i/flag/64/fr.png"></span> <span class="currency">€</span> <span>Français</span></a>
3123	</li>
3124	
3125	<!-- countryCode: ES -->
3126	
3127			
3128			
3129			
3130			
3131				
3132				
3133				
3134			
3135			
3136			
3137			
3138			
3139			
3140			
3141			
3142			
3143			
3144			
3145			
3146			
3147			
3148			
3149			
3150			
3151						
3152    <li class="nav-item">				    		 			
3153		<a href="https://www.duracelldirect.es/" class="nav-link" title="Español"><span class="flag"><img src="/i/flag/64/es.png"></span> <span class="currency">€</span> <span>Español</span></a>
3154	</li>
3155	 		    		 
3156			    		 	</ul>
3157		    		 	</div>	
3158		    		 	
3159		    		 	<div class="col">
3160		    		 		<ul class="nav-column ">
3161	    		 				
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171<!-- uriPrefix:  -->
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182		
3183			
3184		
3185
3186		
3187			
3188		
3189
3190		
3191			
3192		
3193
3194		
3195			
3196		
3197
3198		
3199			
3200		
3201
3202		
3203			
3204		
3205
3206		
3207			
3208		
3209
3210		
3211			
3212		
3213
3214		
3215			
3216		
3217
3218		
3219			
3220		
3221
3222		
3223			
3224		
3225
3226		
3227			
3228		
3229
3230		
3231			
3232		
3233
3234		
3235			
3236		
3237
3238		
3239			
3240		
3241
3242		
3243			
3244		
3245
3246		
3247			
3248		
3249
3250		
3251			
3252		
3253
3254		
3255
3256
3257
3258
3259
3260
3261	
3262	<!-- countryCode: PT -->
3263	
3264			
3265			
3266			
3267			
3268			
3269				
3270				
3271				
3272			
3273			
3274			
3275			
3276			
3277			
3278			
3279			
3280			
3281			
3282			
3283			
3284			
3285			
3286			
3287			
3288						
3289    <li class="nav-item">				    		 			
3290		<a href="https://www.duracelldirect.com.pt/" class="nav-link" title="Português"><span class="flag"><img src="/i/flag/64/pt.png"></span> <span class="currency">€</span> <span>Português</span></a>
3291	</li>
3292	
3293	<!-- countryCode: IE -->
3294	
3295			
3296			
3297			
3298			
3299			
3300			
3301				
3302				
3303				
3304			
3305			
3306			
3307			
3308			
3309			
3310			
3311			
3312			
3313			
3314			
3315			
3316			
3317			
3318			
3319						
3320    <li class="nav-item">				    		 			
3321		<a href="https://www.duracelldirect.ie/" class="nav-link" title="English"><span class="flag"><img src="/i/flag/64/ie.png"></span> <span class="currency">€</span> <span>English</span></a>
3322	</li>
3323	
3324	<!-- countryCode: DE -->
3325	
3326			
3327			
3328			
3329			
3330			
3331			
3332			
3333				
3334				
3335				
3336			
3337			
3338			
3339			
3340			
3341			
3342			
3343			
3344			
3345			
3346			
3347			
3348			
3349			
3350						
3351    <li class="nav-item">				    		 			
3352		<a href="https://www.duracelldirect.de/" class="nav-link" title="Deutsch"><span class="flag"><img src="/i/flag/64/de.png"></span> <span class="currency">€</span> <span>Deutsch</span></a>
3353	</li>
3354	
3355	<!-- countryCode: NL -->
3356	
3357			
3358			
3359			
3360			
3361			
3362			
3363			
3364			
3365				
3366				
3367				
3368			
3369			
3370			
3371			
3372			
3373			
3374			
3375			
3376			
3377			
3378			
3379			
3380			
3381						
3382    <li class="nav-item">				    		 			
3383		<a href="https://www.duracelldirect.nl/" class="nav-link" title="Nederlands"><span class="flag"><img src="/i/flag/64/nl.png"></span> <span class="currency">€</span> <span>Nederlands</span></a>
3384	</li>
3385	 		    		 
3386			    		 	</ul>
3387		    		 	</div>	
3388		    		 	
3389		    		 	<div class="col">
3390		    		 		<ul class="nav-column ">
3391	    		 				
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401<!-- uriPrefix:  -->
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412		
3413			
3414		
3415
3416		
3417			
3418		
3419
3420		
3421			
3422		
3423
3424		
3425			
3426		
3427
3428		
3429			
3430		
3431
3432		
3433			
3434		
3435
3436		
3437			
3438		
3439
3440		
3441			
3442		
3443
3444		
3445			
3446		
3447
3448		
3449			
3450		
3451
3452		
3453			
3454		
3455
3456		
3457			
3458		
3459
3460		
3461			
3462		
3463
3464		
3465			
3466		
3467
3468		
3469			
3470		
3471
3472		
3473			
3474		
3475
3476		
3477			
3478		
3479
3480		
3481			
3482		
3483
3484		
3485
3486
3487
3488
3489
3490
3491	
3492	<!-- countryCode: FI -->
3493	
3494			
3495			
3496			
3497			
3498			
3499			
3500			
3501			
3502			
3503				
3504				
3505				
3506			
3507			
3508			
3509			
3510			
3511			
3512			
3513			
3514			
3515			
3516			
3517			
3518						
3519    <li class="nav-item">				    		 			
3520		<a href="https://www.duracelldirect.fi/" class="nav-link" title="Suomeksi"><span class="flag"><img src="/i/flag/64/fi.png"></span> <span class="currency">€</span> <span>Suomeksi</span></a>
3521	</li>
3522	
3523	<!-- countryCode: CHDE -->
3524	
3525			
3526			
3527			
3528			
3529			
3530			
3531			
3532			
3533			
3534			
3535			
3536			
3537				
3538				
3539				
3540			
3541			
3542			
3543			
3544			
3545			
3546			
3547			
3548			
3549						
3550    <li class="nav-item">				    		 			
3551		<a href="https://www.duracelldirect.ch/de/" class="nav-link" title="Switzerland DE"><span class="flag"><img src="/i/flag/64/chde.png"></span> <span class="currency">CHF</span> <span>Switzerland DE</span></a>
3552	</li>
3553	
3554	<!-- countryCode: CHFR -->
3555	
3556			
3557			
3558			
3559			
3560			
3561			
3562			
3563			
3564			
3565			
3566			
3567			
3568			
3569				
3570				
3571				
3572			
3573			
3574			
3575			
3576			
3577			
3578			
3579			
3580						
3581    <li class="nav-item">				    		 			
3582		<a href="https://www.duracelldirect.ch/fr/" class="nav-link" title="Switzerland FR"><span class="flag"><img src="/i/flag/64/chfr.png"></span> <span class="currency">CHF</span> <span>Switzerland FR</span></a>
3583	</li>
3584	
3585	<!-- countryCode: CHIT -->
3586	
3587			
3588			
3589			
3590			
3591			
3592			
3593			
3594			
3595			
3596			
3597			
3598			
3599			
3600			
3601				
3602				
3603				
3604			
3605			
3606			
3607			
3608			
3609			
3610			
3611						
3612    <li class="nav-item">				    		 			
3613		<a href="https://www.duracelldirect.ch/it/" class="nav-link" title="Switzerland IT"><span class="flag"><img src="/i/flag/64/chit.png"></span> <span class="currency">CHF</span> <span>Switzerland IT</span></a>
3614	</li>
3615	 		    		 
3616			    		 	</ul>
3617		    		 	</div>	
3618		    		 	
3619		    		 	<div class="col">
3620		    		 		<ul class="nav-column ">
3621	    		 				
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631<!-- uriPrefix:  -->
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642		
3643			
3644		
3645
3646		
3647			
3648		
3649
3650		
3651			
3652		
3653
3654		
3655			
3656		
3657
3658		
3659			
3660		
3661
3662		
3663			
3664		
3665
3666		
3667			
3668		
3669
3670		
3671			
3672		
3673
3674		
3675			
3676		
3677
3678		
3679			
3680		
3681
3682		
3683			
3684		
3685
3686		
3687			
3688		
3689
3690		
3691			
3692		
3693
3694		
3695			
3696		
3697
3698		
3699			
3700		
3701
3702		
3703			
3704		
3705
3706		
3707			
3708		
3709
3710		
3711			
3712		
3713
3714		
3715
3716
3717
3718
3719
3720
3721	
3722	<!-- countryCode: SE -->
3723	
3724			
3725			
3726			
3727			
3728			
3729			
3730			
3731			
3732			
3733			
3734				
3735				
3736				
3737			
3738			
3739			
3740			
3741			
3742			
3743			
3744			
3745			
3746			
3747			
3748						
3749    <li class="nav-item">				    		 			
3750		<a href="https://www.duracelldirect.se/" class="nav-link" title="Svenska"><span class="flag"><img src="/i/flag/64/se.png"></span> <span class="currency">Kr</span> <span>Svenska</span></a>
3751	</li>
3752	
3753	<!-- countryCode: CZ -->
3754	
3755			
3756			
3757			
3758			
3759			
3760			
3761			
3762			
3763			
3764			
3765			
3766				
3767				
3768				
3769			
3770			
3771			
3772			
3773			
3774			
3775			
3776			
3777			
3778			
3779						
3780    <li class="nav-item">				    		 			
3781		<a href="https://www.duracelldirect.cz/" class="nav-link" title="Čeština"><span class="flag"><img src="/i/flag/64/cz.png"></span> <span class="currency">Kč</span> <span>Čeština</span></a>
3782	</li>
3783	
3784	<!-- countryCode: DK -->
3785	
3786			
3787			
3788			
3789			
3790			
3791			
3792			
3793			
3794			
3795			
3796			
3797			
3798			
3799			
3800			
3801				
3802				
3803				
3804			
3805			
3806			
3807			
3808			
3809			
3810						
3811    <li class="nav-item">				    		 			
3812		<a href="https://www.duracelldirect.dk/" class="nav-link" title="Dansk"><span class="flag"><img src="/i/flag/64/dk.png"></span> <span class="currency">Kr</span> <span>Dansk</span></a>
3813	</li>
3814	
3815	<!-- countryCode: NO -->
3816	
3817			
3818			
3819			
3820			
3821			
3822			
3823			
3824			
3825			
3826			
3827			
3828			
3829			
3830			
3831			
3832			
3833				
3834				
3835				
3836			
3837			
3838			
3839			
3840			
3841						
3842    <li class="nav-item">				    		 			
3843		<a href="https://www.duracelldirect.no/" class="nav-link" title="Norsk"><span class="flag"><img src="/i/flag/64/no.png"></span> <span class="currency">Kr</span> <span>Norsk</span></a>
3844	</li>
3845	 		    		 
3846			    		 	</ul>
3847		    		 	</div>
3848		    		 	<div class="col">
3849		    		 		<ul class="nav-column ">
3850	    		 				
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860<!-- uriPrefix:  -->
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871		
3872			
3873		
3874
3875		
3876			
3877		
3878
3879		
3880			
3881		
3882
3883		
3884			
3885		
3886
3887		
3888			
3889		
3890
3891		
3892			
3893		
3894
3895		
3896			
3897		
3898
3899		
3900			
3901		
3902
3903		
3904			
3905		
3906
3907		
3908			
3909		
3910
3911		
3912			
3913		
3914
3915		
3916			
3917		
3918
3919		
3920			
3921		
3922
3923		
3924			
3925		
3926
3927		
3928			
3929		
3930
3931		
3932			
3933		
3934
3935		
3936			
3937		
3938
3939		
3940			
3941		
3942
3943		
3944
3945
3946
3947
3948
3949
3950	
3951	<!-- countryCode: PL -->
3952	
3953			
3954			
3955			
3956			
3957			
3958			
3959			
3960			
3961			
3962			
3963			
3964			
3965			
3966			
3967			
3968			
3969			
3970				
3971				
3972				
3973			
3974			
3975			
3976			
3977						
3978    <li class="nav-item">				    		 			
3979		<a href="https://www.duracelldirect.pl/" class="nav-link" title="Polski"><span class="flag"><img src="/i/flag/64/pl.png"></span> <span class="currency">Zł</span> <span>Polski</span></a>
3980	</li>
3981	
3982	<!-- countryCode: AU -->
3983	
3984			
3985			
3986			
3987			
3988			
3989			
3990			
3991			
3992			
3993			
3994			
3995			
3996			
3997			
3998			
3999			
4000			
4001			
4002				
4003				
4004				
4005			
4006			
4007			
4008						
4009    <li class="nav-item">				    		 			
4010		<a href="https://www.duracelldirect.com.au/" class="nav-link" title="Australia"><span class="flag"><img src="/i/flag/64/au.png"></span> <span class="currency">AU$</span> <span>Australia</span></a>
4011	</li>
4012	 		    		 
4013			    		 	</ul>
4014		    		 	</div>				    		 	
4015	    		 	</div> 	    		 	
4016	    		 </div>
4017		</li>
4018		
4019		</ul>
4020	</div>	
4021</nav>
4022
4023<script>
4024	
4025	var navPanel = $(".nav-tab-item-panel.active");
4026	var navTab = $(".nav-tab");
4027	var navbar = $(".navbar");
4028	var hideNavPanelTimeout = null;
4029	
4030	$(".nav-panel-top-close").click(function(){
4031		var tabId= $(this).attr("target");
4032		$(".nav-tab#"+tabId).removeClass("active");
4033		toggleHoverClass();
4034	});
4035
4036	$(".lang-selection").click(function(){
4037		$(".nav-tab.country-tab").toggleClass("active");	
4038		toggleHoverClass();
4039	});
4040	
4041	
4042	
4043	$(".nav-tab.toggle .nav-tab-link").click(function(){
4044		cancelHideNavPanel("nav-tab-link");
4045		var parent = $(this).parent();
4046		var tabId = parent.attr("id");		
4047		$(".nav-tab").each(function(tab){
4048			var tmpTabId = $(this).attr("id");
4049			if(tmpTabId != tabId){
4050				$(this).removeClass("active");
4051			}
4052		});		
4053		parent.toggleClass("active");	
4054	});	
4055	
4056	navPanel.mouseenter(function(){
4057		cancelHideNavPanel("navPanel.mouseenter");
4058	});
4059	
4060	navbar.mouseenter(function(){
4061		cancelHideNavPanel("navbar.mouseenter");
4062	});
4063	
4064	navPanel.mouseleave(function(){
4065		hideNavPanel("navPanel.mouseleave");
4066	});
4067	
4068	navbar.mouseleave(function(){
4069		hideNavPanel("navbar.mouseleave");
4070	});
4071	
4072
4073	$(".nav-tab").click(function(){
4074		hideNavPanel("nav-tab.off-hover ");		
4075	});
4076	
4077	function toggleHoverClass(){
4078		$(".nav-tab.off-hover, .nav-tab.on-hover").each(function(){			
4079			$(this).toggleClass("on-hover off-hover");			
4080		});
4081	}
4082	
4083	function addHoverClass(){
4084		$(".nav-tab.off-hover").each(function(){			
4085			$(this).removeClass("off-hover");		
4086			$(this).addClass("on-hover");
4087		});
4088	}
4089	
4090	function hideNavPanel(caller){
4091		hideNavPanelTimeout = setTimeout(function(){
4092			navTab.removeClass("active");
4093			addHoverClass();
4094		}, 100);
4095	}
4096	
4097	function cancelHideNavPanel(caller){
4098		 clearTimeout(hideNavPanelTimeout);
4099	}
4100	
4101	
4102	
4103</script>
4103
4104
4105
4106			
4107		
4108		</div>
4109
4110			
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132<div id="footer" class="mt-1">
4133	<span class="dd-ruler"></span>
4134	<div class="bg-lighter-dark pb-2 ">
4135	 <div class="container d-flex flex-row footer-top">
4136			
4137		<div class="flex-fill ml-3">
4138			<h3 class="footer-title-top no-left-border">Follow Us</h3>
4139			<ul  class="footer-ul-list" style="width: 150px;"> 
4140				
4141				
4142				 				
4143				
4144				<li><a href="http://www.youtube.com/DuracellDirect" target="youtube" title="Duracell Youtube videos">Duracell Youtube videos</a></li>
4145				<!--
4146				<li><a href="http://www.myspace.com/duracelldirect" target="myspace" title="Duracell Direct on MySpace">Duracell Direct on MySpace</a></li> -->
4147				
4148			</ul>
4149		</div>	
4150		<div class="flex-fill">
4151			<h3 class="footer-title-top">Information</h3>
4152			<ul class="footer-ul-list">
4153				
4154				<li><a href="/info/about.html" title="About Duracell Direct">About Duracell Direct</a></li>
4155				
4156				
4157				<li><a href="/info/delivery.html#delivery" title="Delivery Information">Delivery Information</a></li>
4158				
4159				<li><a href="/info/payment.html" title="Payment Options">Payment Options</a></li>
4160				
4161				<li><a href="/info/cookie-policy.html" title="Cookie Policy">Cookie Policy</a></li>
4162				<li><a href="#" data-cookie-role="edit-cookie-consent">Change Cookie Settings</a></li>
4163				
4164					<li><a href="#" data-cookie-role="edit-cookie-consent">Do Not Sell or Share My Personal Information</a></li>
4165				
4166				<li>
4167				    
4168				    
4169					<a href="/info/privacy.html" title="Privacy Policy">Privacy Policy</a>
4170				</li>
4171				<li class="switchToMobile" style="display:none;"><a href="#" class="goToMobileSite"  >View Our Mobile Site</a></li>			
4172			</ul>
4173		</div>
4174		<div class="flex-fill">
4175			<h3 class="footer-title-top">Customer Services</h3>
4176			<ul  class="footer-ul-list">
4177				
4178				<li><a href="/info/contact.html" title="Contact Duracell Direct">Contact Duracell Direct</a></li>
4179				
4180				<li><a href="/info/delivery.html#returns" title="Returns procedure">Returns procedure</a></li>
4181				
4182				<li><a href="/info/terms.html" title="Terms and Conditions">Terms and Conditions</a></li>
4183				
4184				<li><a href="/info/security.html" title="Secure Shopping">Secure Shopping</a></li>
4185				
4186				<li><a href="/info/security.html" title="Privacy and Security">Privacy and Security</a></li>
4187			</ul>
4188		</div>
4189		<div class="flex-fill">
4190			
4191			<h3 class="footer-title-top">Advice Center</h3>
4192			<ul  class="footer-ul-list" style="width: 130px;">
4193				
4194				<li><a href="/info/battery-recycling.html" title="Recycling Rechargeable Batteries">Recycling Rechargeable Batteries</a></li>
4195			</ul>
4196			
4197		</div>
4198	 </div>
4199	</div>
4200	
4201	<div class=" bg-dark container-fluid">
4202	 <div class="container d-flex flex-row pt-1 pb-3">
4203		<div class="flex-fill pl-3 pr-3" style="width:45%;">
4204			
4205				<h2 class="footer-title-bottom mb-05">Newsletter Sign Up</h2>
4206					<p class="text-white">Join our monthly newsletter to receive our latest promo codes and product offers.</p>
4207								
4208					<input type="text" class="newsletter-signup-footer input input-rou
4208nd input-dark input-sm" style="width:360px;" placeholder="Enter your email" id="newsletter-signup-footer" readonly/>
4209					<!-- Begin MailChimp Signup Form -->
4210
4211					<div class="overlay overlay-popup for-mailchimp hidden" id="for-mailchimp">
4212						<div class="popup-container dark pb-3">
4213							<div id="mc_embed_signup" class="newsletter-signup-form-bottom clearfix">		
4214							<span id="subscribeClose" class="cancel_btn close-x" target="for-mailchimp" >X</span>							
4215								<div class="mailchimp-form">
4216								    <div id="mailchimp-form-wrapper">		
4217										<p class="text mt-1">Please enter your email address and click the 'Sign Up' button.</p>	
4218								  		<br>
4219										<div class="clearfix">
4220											<div class="tooltip block" style="width:100%">
4221												<input type="email" style="width:95%" name="EMAIL" class="required email input input-round input-dark" id="mce-EMAIL" placeholder="Email address" status="idle" field="email" validate="true">
4222												<span class="tooltiptext  left">The email address is invalid.<br> It should be similar to:<br><br> [email protected]<br><br>With no spaces. Please enter it again.</span>
4223											</div>	
4224										</div>
4225										<div class="clearfix mt-2 mb-2" >								
4226											<div class="tooltip block" style="width:50%">
4227												<input type="text" style="width:90%" name="FNAME" class="input input-rou
4227nd input-dark float-left" id="mce-FNAME" placeholder="First Name" status="idle" field="email" validate="true">
4228												<span class="tooltiptext  left" style="top:35px;">You must enter a First Name</span>
4229											</div>
4230											<input type="text" style="width:42%" name="LNAME" class="input input-round input-dark float-right" id="mce-LNAME" placeholder="Family Name">
4231										</div>		
4232										<div class="mc-field-group mb-1" style="border:1px solid transparent; padding-top:.2em;">
4233											
4234											
4235												
4236											<div class="tooltip block d-flex"> 		
4237												<div class="mr-2">
4238													<label class="switch">
4239														<input type="checkbox" name="marketingEmailConsentValue"  purpose="email_marketing" class="checkbox-large order-summary-checkboxes" id="footer-marketingEmailConsentPurpose" unchecked/> 
4240					 									<span class="slider-toggle round"></span>
4241														<span class="on hidden">Yes</span>
4242														<span class="off">No</span>
4243													</label>
4244												</div>
4245												<div>
4246													<p style="font-size:13px;">
4247													 <span class="footer_email_marketing">Keep me updated by email about DuracellDirect discounts, promotions, competitions and more.</span> <a href="/info/privacy.html"  class="dd-btn btn-link py-0" title="Privacy Policy">Privacy Policy</a>
4248													</p>
4249												</div>
4250												<span class="tooltiptext  left" style="top:25px;">Please indicate that you accept the Terms and Conditions.</span>
4251											</div>	
4252										</div>												    <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
4253									    <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_4f39727ffcfa51d5e81a4eebd_5c37e7f37f" id="b_4f39727ffcfa51d5e81a4eebd_5c37e7f37f" tabindex="-1" value=""></div>
4254										 <div class="subscribe_btn_wrapper clearfix">
4255										 		
4256											    <input type="button"  name="subscribe" style="width:46%;" class="dd-btn btn-secondary bold float-right" id="subscribe-btn" value="Sign Up">	
4257										  </div>
4258								    </div>
4259								</div>
4260								<div id="mailchimpResponse">
4261										Thank you for subscribing!
4262								</div>						 								 
4263							</div>
4264						</div>
4265					</div>
4266				 
4267		</div>
4268		<div class="flex-fill pr-3">
4269			
4270			<h2 class="footer-title-bottom mb-05">Payment Methods</h2>
4271			<p class="text-white">We accept the following payment methods:</p>
4272			
4273		    <a href="/info/payment.html" title="Payment Options">
4274		    	<span class="payments-footer"></span>
4275			</a>		
4276		</div>	
4277	 </div>	
4278	</div>
4279	
4280	<div class="bg-lighter-dark pb-2">
4281			
4282		<p class="copyright">
4283			DuracellDirect.com is operated by: PSA Parts Inc. 3500 South Dupont Highway, Dover, Delaware 19901, USA. Owned by the Duracell license: PSA Parts Ltd. London, SW19 2PX, UK.<br> 
4284<small>Duracell is a registered trademark of Duracell U.S. Operations Inc., used under license. All rights reserved</small>
4285		</p> 
4286	</div>
4287</div>
4288
4289 
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299	
4300
4301 <div class="cookie-wrapper" id="cookieWrapperWithSettings" style="display:none;" data-cookie-role="cookie-consent-wrapper">
4302	<div class="cookie-container" data-cookie-role="cookie-consent-container">
4303		<div class="cookie-body row m-0">
4304		
4305			<div class="col-12 p-0">
4306				<h2 class="cookie-heading">Your privacy settings</h2>
4307			</div>
4308			<div class="col-12 p-0">
4309				
4310				
4311				
4312				
4313				
4314				
4315											
4316				<p>This website uses cookies to perform essential website functions, improve user experience, tailor content and advertising, provide social sharing features, and to pay referrers as described in our <a href="/info/cookie-policy.html" target="_blank">Cookie Policy</a> and <a href="/info/privacy.html" target="_blank">Privacy Policy</a>.</p>
4317				<p>You can update your choices at any time via our <a href="/info/security.html" target="_blank">Privacy &amp; Security</a> page.</p>
4318				
4319			
4320				<div class="cookie-settings mt-3">	
4321					<div class="cookie-control">		
4322						<div class="switch-wrapper">			
4323							<label class="switch">
4324								<input type="checkbox" name="cookies-functional" class="checkbox-large cookie-consent-chck" value="essential"  data-cookie-role="cookie-consent-checkbox" checked disabled>
4325								<span class="slider-toggle round disabled"></span>	
4326								<span class="off">Req</span>												
4327							</label>
4328						</div>		
4329						<div>
4330							<b>Essential cookies</b>					
4331							<p>Some technologies are required for core functions like user authentication, shopping checkout, site security, privacy, maintenance, and to make the site work correctly for browsing and payments. Without these cookies our services can not work correctly.</p>
4332													
4333						</div>	
4334					</div>
4335					<div class="cookie-control">
4336						<div class="switch-wrapper">
4337							<label class="switch">
4338								<input type="checkbox" name="cookies-analytics" class="checkbox-large cookie-consent-chck" value="traffic_analytics" data-cookie-role="cookie-consent-checkbox"  >
4339								<span class="slider-toggle round"></span>
4340							</label>
4341						</div>
4342						<div>
4343							<b>Performance/Analytics</b>
4344							<p>These cookies help us understand how visitors reach and interact with our website, products, and services on an individual basis. They allow us to analyze site usage, manage traffic, enable features like live chat, and tailor c
4344ontent to better meet your needs.</p>											
4345						</div>	
4346					</div>	
4347					<div class="cookie-control">
4348						<div class="switch-wrapper">
4349							<label class="switch">
4350								<input type="checkbox" name="cookies-advert" class="checkbox-large cookie-consent-chck" value="advert_effectiveness" data-cookie-role="cookie-consent-checkbox"  >
4351								<span class="slider-toggle round"></span>											
4352							</label>
4353						</div>
4354						<div> 
4355							<b>Selling, Sharing, Targeted Advertising</b>
4356							<p style="white-space: pre-line;">This allows us and our advertising providers to show adverts more relevant to you, limit how often you see an advert and build a profile of your interests. Also to enable you to share our content socially if you wish. Our advertising providers may combine activity information they collect from our website with information they have collected elsewhere. Without this, the adverts you see will be less relevant.
4357								
4358Disabling this option also ensures that your personal information is not shared or sold with third parties for advertising or retargeting purposes, in accordance with the California Consumer Privacy Act (CCPA).</p>							 
4359						</div>
4360					</div>	
4361					
4362					
4363					<div class="mt-4">
4364						<button id="cookies-accept-selected"  class="dd-btn btn-sm btn-outline-secondary btn-padding-x cookie-accept-btn mr-1" data-type="selected" data-cookie-role="cookie-consent-btn-accept-selected">Accept selected</button>
4365						
4366						
4367					   		<button  class="dd-btn btn-sm btn-outline-secondary btn-padding-x cookie-accept-btn mr-1" data-type="selected" data-cookie-role="cookie-consent-btn-decline-all">Decline All</button>
4368					   
4369					</div>
4370				</div>	
4371			</div>
4372			
4373			
4374		</div>
4375		<div class="cookie-footer">			    
4376			   <a href="/info/cookie-policy.html" title="Cookie Policy" class="dd-btn-link btn-sm btn-outline-secondary btn-padding-x mr-1">Learn More</a>
4377			   
4378			   <button id="cookies-accept-all" class="dd-btn btn-sm btn-primary btn-padding-x cookie-accept-btn" data-type="all" data-cookie-role="cookie-consent-btn-accept-all">Accept all</button>			
4379		</div>
4380	</div>
4381</div>
4382  
4383
4384
4385
4386
4387
4388<script>
4389	//console.log("User email :  ");
4390	if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {	
4391		$(".switchToMobile").show();		
4392	}
4393	
4394	if(window.innerWidth < 1000){
4395		$(".switchToMobile").show();		
4396	}
4397
4398	var marketingPermToken;
4399	var validUserSurrogate= "false";
4400	var linkRoot = 'https://www.duracelldirect.com/';
4401	var UIEmailInput= $("#mce-EMAIL");
4402	var UIfooterEmailConsent= $("#footer-marketingEmailConsentPurpose");
4403	var userData;
4404
4405	$(".goToMobileSite").on("tap click", function(e) {
4406		e.preventDefault();
4407		setCookie("mobile", 1);		
4408		window.location =  document.getElementById('altMobileUrl').href;
4409	});
4410	
4411	function setCookie(key, value, timeToExpire) {  
4412		   var expires = new Date();  
4413		   var time = timeToExpire || 31536000000;
4414		   expires.setTime(expires.getTime() + time);
4415		   document.cookie = key + '=' + value + '; expires=' + expires.toUTCString() + "; path=/";  
4416		}
4417	
4418	$(".target-popup").click(function(){
4419		var target = $(this).attr('target-popup');
4420		$("#"+target).removeClass("hidden");	
4421	});
4422	
4423	$(".close-x").click(function(){
4424		var target = $(this).attr('target-popup');
4425		$("#"+target).addClass("hidden");	
4426	});
4427	
4428	$("#subscribeClose").click(function() {				
4429		$(".overlay.for-mailchimp").addClass("hidden");		
4430	 	$("#mce-success-response").hide();
4431		UIfooterEmailConsent.parent().parent().parent().find(".tooltiptext").css("display","none");
4432		UIfooterEmailConsent.parent().parent().parent().parent().css("border","1px solid transparent")
4433		UIEmailInput.parent().find(".tooltiptext").css("display","none");
4434		$("#mailchimp-form-wrapper").css("visibility" ,"visible");
4435		$("#mailchimpResponse").hide();
4436		$("#footer-marketingEmailConsentPurpose").parent().show();
4437		resetSubsctiptionForm();
4438	});		        
4439	
4440	function resetSubsctiptionForm(){
4441		$("#mce-EMAIL").val("");
4442	 	$("#mce-FNAME").val("");
4443	 	$("#mce-LNAME").val(""); 
4444		
4445		if(UIfooterEmailConsent.prop("checked")){
4446			toggleCheckbox(UIfooterEmailConsent);
4447		}
4448	}
4449
4450	$(".newsletter-signup-footer, #newsletterPromo").click(function(){			
4451		$(".overlay.for-mailchimp").removeClass("hidden");
4452		getMarketingPermissionToken();
4453	});   
4454	
4455	
4456	$("#subscribe-btn").click(function(){
4457		if($("#b_4f39727ffcfa51d5e81a4eebd_5c37e7f37f").val() == ""){
4458			$("#mce-success-response").hide();
4459			$("#mce-error-response").hide();
4460			//if email is incorect
4461			if(isValidEmail(UIEmailInput.val())){
4462				//if name is not empty empty
4463				if($('#mce-FNAME').val() != "" ){
4464					//if  email marketing consent is cheched
4465
4466					if(UIfooterEmailConsent.prop("checked")){
4467						//Subscribe
4468						var email=UIEmailInput.val();
4469						var fname= $("#mce-FNAME").val();
4470						var lname= $("#mce-LNAME").val();
4471						var fullName=fname + " " + lname;	
4472
4473						
4474						mailchimpSubscribeAttempt(email,fname,lname,fullName);
4475
4476						if(validUserSurrogate == "true" && "" == $("#mce-EMAIL").val()){
4477							//console.log(validUserSurrogate , "0");
4478							sendConsentRequest("email_marketing","Keep me updated by email about DuracellDirect discounts, promotions, competitions and more.",true);
4479						}
4480						resetSubsctiptionForm();
4481						$("#footer-marketingEmailConsentPurpose").parent().hide();
4482						$("#mailchimp-form-wrapper").css("visibility" ,"hidden");
4483						$("#mailchimpResponse").show();
4484					}else{
4485						//display message
4486						UIfooterEmailConsent.parent().parent().parent().find(".tooltiptext").css("display","block");
4487						UIfooterEmailConsent.parent().parent().parent().parent().css("border","1px solid #d83f24cc")
4488					}	
4489				}else{
4490					$('#mce-FNAME').parent().find(".tooltiptext").css("display","block");
4491				}
4492			}else{
4493				 //display message			
4494				 UIEmailInput.parent().find(".tooltiptext").css("display","block");
4495			}
4496		}
4497	});
4498	
4499
4500	function makeMailchimpRequest(){
4501		//console.log("makeMailchimpRequest called", userData);
4502		$.ajax({
4503			url: "/e/Account?_action=UPDATE_SUBSCRIPTION_STATUS",
4504			type: "POST",
4505			async: true,
4506			data: userData
4507		}).done(function(response) {			
4508			mailchimpResponse= JSON.parse(response);
4509			//console.log("Request success :" ,mailchimpResponse);
4510		}).error(function(response) {
4511			//console.log("Create error :" ,response);
4512		});
4513	}		
4514
4515	function setUserData(token,action,mcSubscription,mcPsaGpdr){
4516		userData={
4517			"marketing_permissionToken":marketingPermissionToken,
4518			"token":token,
4519			"email":"",
4520			"status":mcSubscription,
4521			"fname":"",
4522			"lname":"",
4523			"marketingPref":mcPsaGpdr,
4524			"site_name":"Duracell Direct USA",
4525			"cc":"21",
4526			"full_name":" ",
4527			"update_date":getDateAndTime(),
4528			"consent_message":"Keep me updated by email about DuracellDirect discounts, promotions, competitions and more.",
4529			"action":action
4530		}	
4531	}	
4532
4533	function getLatestUpdate(d1,d2,d3){
4534		var mailchUpdateDate = new Date(d1);
4535		var mailchLastChange= new Date(d2);
4536		var dbLatestChange  = new Date(d3);
4537		if(d3 != ""){
4538			// if(d1 != ""){
4539			// 	if(mailchUpdateDate > dbLatestChange){
4540			// 		return "mailchimp"
4541			// 	}else{
4542			// 		//compare mailchimp latest change to dbLatest change
4543			// 		if(mailchLastChange > dbLatestChange)
4544			// 			return "mailchimp"
4545			// 		return "localDB"						
4546			// 	}	
4547			// }else{
4548			// 	//compare mailchimp latest change to dbLatest change
4549			// 	if(mailchLastChange > dbLatestChange)
4550			// 		return "mailchimp"
4551			// 	return "localDB"	
4552			// }
4553			if(d2 !=""){
4554				if(mailchLastChange > dbLatestChange)
4555					return "mailchimp";
4556				return "localDB";
4557			}
4558			return "localDB"
4559		}		
4560		return "mailchimp";
4561	} 		 
4562
4563	function getCurrentConsentVal(){
4564		return UImarketingEmailChk.prop("checked");
4565	}
4566		
4567	function toggleCheckbox(chk,active){		
4568		if(active){
4569			chk.prop('checked', true);
4570			chk.parent().find(".on").removeClass("hidden");
4571			chk.parent().find(".off").addClass("hidden");
4572		}else if(!active){
4573			chk.prop('checked', false);
4574			chk.parent().find(".on").addClass("hidden");
4575			chk.parent().find(".off").removeClass("hidden");
4576		}
4577	}
4578	
4579	function getMarketingPermissionToken(){
4580		$.ajax({
4581			url: "/e/Account?_action=GET_MARKETING_PERMISSION_TOKEN",
4582			type: "POST",
4583			async: true,
4584			data: {'marketingPermissionLabel':'Marketing Permission'}
4585		}).done(function(response) {	
4586			marketingPermToken=response;
4587			//console.log(response);
4588		}).error(function(response) {
4589			//console.log(response);
4590		}); 
4591	}
4592	
4593	function mailchimpSubscribeAttempt(email,fname,lname,full_name){	
4594		
4595  		var dataRequest={
4596  			"marketing_permissionToken":marketingPermToken,
4597  			"token":"",
4598  			"email":email,
4599  			"status":"subscribed",
4600  			"fname":fname,
4601	  		"lname":lname,
4602  			"marketingPref":true,
4603  			"site_name":"Duracell Direct USA",
4604  			"cc":"21",
4605  			"full_name":full_name,
4606  			"update_date":getDateAndTime(),
4607  			"consent_message":"Keep me updated by email about DuracellDirect discounts, promotions, competitions and more.",
4608  			"action":"CREATE"
4609  		} 		
4610  		//console.log("mailchimpSubscribeAttempt called", dataRequest);
4611  		$.ajax({
4612			url: "/e/Account?_action=UPDATE_SUBSCRIPTION_STATUS",
4613			type: "POST",
4614			async: true,
4615			data: dataRequest
4616		}).done(function(response) {
4617			requestOk = JSON.parse(response).requestOk;
4618		}).error(function(response) {
4619			requestOk = JSON.parse(response).requestOk;
4620		});
4621  	}
4622
4623
4624
4625	
4626	UIEmailInput.focusout(function(){
4627		 UIEmailInput.parent().find(".tooltiptext").css("display","none");		
4628	});
4629	UIfooterEmailConsent.change(function(){
4630		 UIfooterEmailConsent.parent().parent().parent().find(".tooltiptext").css("display","none");
4631		 UIfooterEmailConsent.parent().parent().parent().parent().css("border","1px solid transparent");
4632	});
4633
4634	$("#mce-FNAME").focusout(function(){
4635		$('#mce-FNAME').parent().find(".tooltiptext").css("display","none");
4636	});
4637
4638	
4639	  function sendConsentRequest(purposeVal,consentStatementVal,consentVal) {	
4640		  //console.log("DEBUG sendConsentRequest:" , " purposeVal " + purposeVal + " consentStatementVal " + consentStatementVal + " consentVal " + consentVal);
4641		$.ajax({
4642			url: "/e/Account?_action=UPDATE_CONSENT",
4643			type: "POST",
4644			async: true,
4645			data: {'purpose': purposeVal, 'consentStatement': consentStatementVal, 'consentValue': consentVal,'consentMethod':'website_checkbox'}						
4646		}).done(function(response) {
4647			//console.log("Localdb status has been updated", response);
4648
4649		}).error(function(response) {			
4650		});
4651	}
4652	
4653	function getDateAndTime(){
4654		var d = new Date();		
4655		var date = (d.getMonth()+1) +"/"+ d.getDate() +"/"+d.getFullYear();
4656		var time = d.getHours() + ":"+d.getMinutes();
4657		return date + " " + time;
4658	}	
4659	
4660	function showCompetition() {
4661		$("#compFrame").load('/e/jsp/competition2/Competition.jsp'+
4662				'?man='+encodeURIComponent('')+'&displayName='+encodeURIComponent('')); 
4663		$("#compFrame").show();
4664	}
4665</script>
4665 
4666
4667
4668
4669		</div>
4670		
4671	  	
4672
4673
4674
4675
4676
4677
4678
4679
4680<noscript>
4681	<div class="noscript">
4682		<div class="ctn">
4683			<img src="/i/icons/alert.png" alt="Warning" width="93" height="130"/>
4684			<p><b>Javascript is disabled in your browser.</b></p>
4685			<p>It appears that you have JavaScript disabled. Our website requires JavaScript to function correctly. Please enable JavaScript to experience our website.</p>
4686		</div>
4687	</div>
4688</noscript>
4689
4690<script>
4691$(function() {
4692	if(document.URL.indexOf("enter=comp2")>-1)
4693		showCompetition();	
4694});
4695</script>
4695
4696
4697<script type="text/javascript" src="/lib/js/dd-v18.js?v=1.0.4" ></script>
4697
4698
4699
4700
4701		
4702
4703
4704
4705
4706
4707
4708
4709
4710<!-- BEGIN GCR Badge Code -->
4711
4712
4713
4714
4715<!-- END GCR Badge Code -->
4716
4717
4718	</body>
4719</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.