{"version":3,"file":"default/js/login.js","mappings":";;;;;;;;;;AAAA;;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;AC7CA;;AAEA;AACA;AACA;AACA;AACA;AAJA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;AACA;;;;;;;;;;AC1CA;;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACvHA;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACZA;AACA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;;;;;;;;;;ACzCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;;;;;;;;;;ACpFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;AC7LA;;AAEA;AACA;AACA;AACA;AACA;AAJA;AAKA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;;;;;;;;;;ACpDA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAEA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;AC5qCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAIA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;AC3JA;;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAMA;AAEA;AACA;AAMA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;AC/mBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;;AAEA;AAEA;AACA;AACA;AACA","sources":["webpack://sfcc/./cartridges/app_storefront_base/cartridge/client/default/js/components/cleave.js","webpack://sfcc/./cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js","webpack://sfcc/./cartridges/app_storefront_base/cartridge/client/default/js/login/login.js","webpack://sfcc/./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/accertify.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/checkout/summary.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/components/cleave.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/components/formValidation.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/login/login.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/util/cookie.js","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/utils.js","webpack://sfcc/./cartridges/plugin_recaptcha/cartridge/client/default/js/reCaptcha/reCaptcha.js","webpack://sfcc/webpack/bootstrap","webpack://sfcc/./cartridges/org_gamestop/cartridge/client/default/js/login.js"],"sourcesContent":["'use strict';\n\n// var Cleave = require('cleave.js'); // it's getting loaded from vendor.js\nvar Cleave = window.Cleave;\n\nmodule.exports = {\n handleCreditCardNumber: function (cardFieldSelector, cardTypeSelector) {\n var cleave = new Cleave(cardFieldSelector, {\n creditCard: true,\n onCreditCardTypeChanged: function (type) {\n var creditCardTypes = {\n visa: 'Visa',\n mastercard: 'Master Card',\n amex: 'Amex',\n discover: 'Discover',\n unknown: 'Unknown'\n };\n\n var cardType = creditCardTypes[Object.keys(creditCardTypes).indexOf(type) > -1\n ? type\n : 'unknown'];\n $(cardTypeSelector).val(cardType);\n $('.card-number-wrapper').attr('data-type', type);\n if (type === 'visa' || type === 'mastercard' || type === 'discover') {\n $('#securityCode').attr('maxlength', 3);\n } else {\n $('#securityCode').attr('maxlength', 4);\n }\n }\n });\n\n $(cardFieldSelector).data('cleave', cleave);\n },\n\n serializeData: function (form) {\n var serializedArray = form.serializeArray();\n\n serializedArray.forEach(function (item) {\n if (item.name.indexOf('cardNumber') > -1) {\n item.value = $('#cardNumber').data('cleave').getRawValue(); // eslint-disable-line\n }\n });\n\n return $.param(serializedArray);\n }\n};\n","'use strict';\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearFormErrors(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\n}\n\nmodule.exports = function (formElement, payload) {\n // clear form validation first\n clearFormErrors(formElement);\n $('.alert', formElement).remove();\n\n if (typeof payload === 'object' && payload.fields) {\n Object.keys(payload.fields).forEach(function (key) {\n if (payload.fields[key]) {\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\n .parent()\n .children('.invalid-feedback');\n\n if (feedbackElement.length > 0) {\n if (Array.isArray(payload[key])) {\n feedbackElement.html(payload.fields[key].join('
'));\n } else {\n feedbackElement.html(payload.fields[key]);\n }\n feedbackElement.siblings('.form-control').addClass('is-invalid');\n }\n }\n });\n }\n if (payload && payload.error) {\n var form = $(formElement).prop('tagName') === 'FORM'\n ? $(formElement)\n : $(formElement).parents('form');\n\n form.prepend('
'\n + payload.error.join('
') + '
');\n }\n};\n","'use strict';\n\nvar formValidation = require('../components/formValidation');\n\nmodule.exports = {\n login: function () {\n $('form.login').submit(function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.login').trigger('login:submit', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n $('form.login').trigger('login:error', data);\n } else {\n $('form.login').trigger('login:success', data);\n location.href = data.redirectUrl;\n }\n },\n error: function (data) {\n if (data.responseJSON.redirectUrl) {\n window.location.href = data.responseJSON.redirectUrl;\n } else {\n $('form.login').trigger('login:error', data);\n form.spinner().stop();\n }\n }\n });\n return false;\n });\n },\n\n register: function () {\n $('form.registration').submit(function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.registration').trigger('login:register', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n } else {\n location.href = data.redirectUrl;\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n\n form.spinner().stop();\n }\n });\n return false;\n });\n },\n\n resetPassword: function () {\n $('.reset-password-form').submit(function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('.reset-password-form').trigger('login:register', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n } else {\n $('.request-password-title').text(data.receivedMsgHeading);\n $('.request-password-body').empty()\n .append('

' + data.receivedMsgBody + '

');\n if (!data.mobile) {\n $('#submitEmailButton').text(data.buttonText)\n .attr('data-dismiss', 'modal');\n } else {\n $('.send-email-btn').empty()\n .html(''\n + data.buttonText + ''\n );\n }\n }\n },\n error: function () {\n form.spinner().stop();\n }\n });\n return false;\n });\n },\n\n clearResetForm: function () {\n $('#login .modal').on('hidden.bs.modal', function () {\n $('#reset-password-email').val('');\n $('.modal-dialog .form-control.is-invalid').removeClass('is-invalid');\n });\n }\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","/* eslint-disable no-underscore-dangle */\n'use strict';\nvar cookie = require('./util/cookie');\n\n/**\n * Injects SDK into page for cart/minicart\n*/\nfunction startDataCollection() {\n if (Object.prototype.hasOwnProperty.call(window, '_bcn') && Object.prototype.hasOwnProperty.call(window._bcn, 'dvc')) {\n window._bcn.dvc.collect()\n $('#transactionId').val(window._bcn.dvc.getTID());\n $('#sessionId').val(window._bcn.getSessionId());\n $('#ubaSessionId').val(window._bcn.getUbaSessionId());\n $('#ubaId').val(window._bcn.getSessionId());\n $('#pageId').val(window.pageContext.ns);\n }\n}\n\n/**\n * Injects SDK into page for cart/minicart\n*/\nfunction injectDataCollectorScript() {\n var head = document.getElementsByTagName('head').item(0);\n var script = document.createElement('script');\n script.type = 'text/javascript';\n\n script.src = $('.dataCollectorURL').val();\n script.setAttribute('dvct', '500');\n script.setAttribute('id', 'bcn');\n script.setAttribute('dvc', 'l');\n script.setAttribute('sid', cookie.get('sid'));\n\n script.onload = function () {\n startDataCollection();\n };\n\n head.appendChild(script);\n}\n\nif ($('.dataCollectorURL').length && $('.dataCollectorURL').val() !== '') {\n injectDataCollectorScript();\n}\n","'use strict';\n\n/**\n * updates the totals summary\n * @param {Array} totals - the totals data\n * @param {Object} order - the order model\n */\nfunction updateTotals(totals, order) {\n $('.shipping-total-cost').text(totals.shippingExclSurchage.formatted);\n $('.tax-total').text(totals.totalTax);\n $('.sub-total').text(totals.subTotal);\n $('.grand-total-sum').text(totals.grandTotal);\n if ($('.checkout-new-design .order-summary-section.right-rail .grand-total').length > 0) {\n $('.checkout-new-design .order-summary-section.right-rail .grand-total').text(totals.grandTotal);\n }\n\n if ($('.checkout-btn-mobile-total').length) {\n $('.checkout-btn-mobile-total').text(totals.grandTotal);\n }\n\n if (totals.orderLevelDiscountTotal.value > 0) {\n $('.order-discount').removeClass('hide-order-discount');\n $('.order-discount-total').empty().append('- ' + totals.orderLevelDiscountTotal.formatted);\n } else {\n $('.order-discount').addClass('hide-order-discount');\n }\n\n // Add or remove free shipping styling in Order summary\n if (totals.adjustedTotalShippingCost.value === 0 && order.numOfPhysicalShipments > 0) {\n $('.shipping-total-cost').empty().append(totals.adjustedTotalShippingCost.resource);\n } else {\n $('.shipping-total-cost').empty().append(totals.adjustedTotalShippingCost.formatted);\n }\n\n if (totals.shippingLevelDiscountTotal.value > 0) {\n $('.shipping-discount').removeClass('hide-shipping-discount');\n $('.shipping-discount-total').empty().append('- ' + totals.shippingLevelDiscountTotal.formatted);\n } else {\n $('.shipping-discount').addClass('hide-shipping-discount');\n }\n\n if (totals.shippingSurcharge.value > 0) {\n $('.shipping-surcharge').removeClass('hide-shipping-surcharge');\n $('.shipping-surcharge-cost').empty().append(totals.shippingSurcharge.formatted);\n } else {\n $('.shipping-surcharge').addClass('hide-shipping-surcharge');\n }\n\n if (order.giftCardOrderSummary) {\n $('.gift-card-order-summary').empty().append(order.giftCardOrderSummary);\n } else if (!order.giftCardsApplied) {\n $('.gift-card-order-summary').empty();\n }\n\n if (totals.totalSavings && totals.totalSavings.value > 0) {\n $('.total-savings').removeClass('hide-total-savings');\n $('.total-savings-line').removeClass('hide-total-savings');\n $('.total-savings-total-value').empty().append(totals.totalSavings.formatted);\n } else {\n $('.total-savings').addClass('hide-total-savings');\n $('.total-savings-line').addClass('hide-total-savings');\n }\n\n if (order && order.totalGrossPrice !== null) {\n $('.payment-information').data('total-gross-price', order.totalGrossPrice);\n }\n\n if (totals.retailDeliveryFee) {\n var taxTotalWithoutRDF = parseFloat(totals.totalTax.replace('$', '')) - parseFloat(totals.retailDeliveryFee);\n if (taxTotalWithoutRDF) {\n $('.tax-fee').text('$' + totals.retailDeliveryFee);\n $('.tax-total').text('$' + taxTotalWithoutRDF.toFixed(2));\n $('.tax-fee-container').removeClass('d-none');\n }\n } else {\n $('.tax-fee-container').addClass('d-none');\n }\n}\n\n\nmodule.exports = {\n methods: {\n updateTotals: updateTotals\n }\n};\n","'use strict';\n\nvar base = require('base/components/cleave');\nvar Cleave = window.Cleave;\nvar exportBase = $.extend({}, base, {\n handleCreditCardNumber: function (cardFieldSelector, cardTypeSelector) {\n var creditCardTypes = {\n visa: 'Visa',\n mastercard: 'MasterCard',\n amex: 'Amex',\n discover: 'Discover',\n maestro: 'Maestro',\n purcc: 'purcc',\n diners: 'Diners',\n jcb: 'JCB',\n unionPay: 'UnionPay',\n unknown: 'Unknown'\n };\n\n var cleave = new Cleave(cardFieldSelector, {\n creditCard: true,\n onCreditCardTypeChanged: function (type) {\n var cardType = creditCardTypes[Object.keys(creditCardTypes).indexOf(type) > -1\n ? type\n : 'unknown'];\n $(cardTypeSelector).val(cardType);\n $('.card-number-wrapper').attr('data-type', type);\n if (type === 'visa' || type === 'mastercard' || type === 'discover' || type === 'unionPay' || type === 'jcb' || type === 'diners') {\n $('#securityCode').attr('maxlength', 3);\n } else {\n $('#securityCode').attr('maxlength', 4);\n }\n }\n });\n if ($('.nav-item').data('sa-type') !== 'SA_FLEX') {\n $(cardFieldSelector).data('cleave', cleave);\n }\n\n // DEN-22939: Combining credit card and PURCC for checkout only\n if ($('.single-page-checkout').length > 0) {\n $(document).off('focus keyup').on('focus keyup', cardFieldSelector, function () {\n var binRange = '778840';\n var creditCardNumber = $(this).val() && $(this).val().length > 0 ? $(this).val().replace(/\\s+/g, '') : '';\n if (!creditCardNumber) {\n $(cardTypeSelector).val('');\n $('.card-number-wrapper').attr('data-type', '');\n $('#creditCard input[name$=\"dwfrm_billing_paymentMethod\"]').val('');\n }\n var paymentMethod;\n var $creditCardField = $('.dwfrm_billing_creditCardFields_cardNumber');\n var $PAROptIn = $('#PAROptIn');\n var $autoRenewalPurError = $('#autoRenewalPurErrorMessage');\n\n // checking if the card number is PUR Credit card\n if (creditCardNumber.includes(binRange)) {\n paymentMethod = 'PUR_CREDIT';\n $('.credit-card-add-new, .credit-card-generic').attr('data-method-id', paymentMethod);\n $('.payment-information').attr('data-payment-method-id', paymentMethod);\n $(cardTypeSelector).val(creditCardTypes.purcc);\n $('.card-number-wrapper').attr('data-type', creditCardTypes.purcc);\n // changing name of card number field\n $('#cardNumber').attr('name', 'dwfrm_billing_creditCardFields_cardNumber');\n // changing payment method in case of PUR Credit card\n $('input[name*=\"billing_paymentMethod\"]').val(paymentMethod);\n // removing error message from security code and expiration month year\n if ($PAROptIn.length && $PAROptIn[0].checked) {\n $creditCardField.addClass('error-field');\n $creditCardField.find('.error-new-message').text($autoRenewalPurError.val());\n } else {\n $creditCardField.removeClass('error-field');\n $creditCardField.find('.error-new-message').text('Card number is invalid');\n }\n } else {\n paymentMethod = 'CREDIT_CARD';\n // enable security code and expiration month year\n $('.dwfrm_billing_creditCardFields_expirationMonthYear, .dwfrm_billing_creditCardFields_securityCode').addClass('required').removeClass('d-none');\n $('.credit-card-section').attr('data-method-id', paymentMethod);\n $('.payment-information').attr('data-payment-method-id', paymentMethod);\n $('#expirationMonthYear, #securityCode').prop('disabled', false);\n $('#cardNumber').attr('name', 'dwfrm_billing_creditCardFields_cardNumber');\n $('input[name*=\"billing_paymentMethod\"]').val(paymentMethod);\n $creditCardField.removeClass('error-field');\n var jcbBinRange = /^3(0(8[8-9]|9[0-4])|(09[6-9]|10[0-2])|(11[2-9]|120)|(158|159)|(33[7-9]|34[0-9])|(52[8-9]|5[3-8][0-9]))/;\n var unionPayBinRange = /^(62|81[0-7][0-1])/;\n if (jcbBinRange.test(creditCardNumber)) {\n $(cardTypeSelector).val(creditCardTypes.jcb);\n $('.card-number-wrapper').attr('data-type', 'jcb');\n $('#securityCode').attr('maxlength', 3);\n } else if ($(cardTypeSelector).val() === 'JCB') {\n $(cardTypeSelector).val('Unknown');\n $('.card-number-wrapper').attr('data-type', 'unknown');\n }\n\n if (unionPayBinRange.test(creditCardNumber)) {\n $(cardTypeSelector).val(creditCardTypes.unionPay);\n $('.card-number-wrapper').attr('data-type', 'unionpay');\n $('#securityCode').attr('maxlength', 3);\n } else if ($(cardTypeSelector).val() === 'UnionPay') {\n $(cardTypeSelector).val('Unknown');\n $('.card-number-wrapper').attr('data-type', 'unknown');\n }\n }\n });\n }\n },\n\n serializeData: function (form, creditCardMode) {\n var serializedArray = form.serializeArray();\n\n serializedArray.forEach(function (item) {\n if (item.name.indexOf('cardNumber') > -1) {\n var $inputClass = $('#cardNumber');\n if (creditCardMode === 'add') {\n $inputClass = $('.credit-card-add-new #cardNumber');\n }\n item.value = $inputClass.data('cleave').getRawValue(); // eslint-disable-line\n }\n });\n return $.param(serializedArray);\n },\n\n handlePhoneNumber: function (phoneFieldSelector, phoneRegionCode) {\n setTimeout(() => {\n var cleave = new Cleave(phoneFieldSelector, {\n phone: true,\n phoneRegionCode: phoneRegionCode || 'US'\n });\n\n $(phoneFieldSelector).data('cleave', cleave);\n }, 0);\n },\n\n handlePhoneNumberRedesign: function (phoneFieldSelector) {\n setTimeout(() => {\n var cleave = new Cleave(phoneFieldSelector, {\n delimiters: ['(', ') ', '-'],\n blocks: [0, 3, 3, 4],\n numericOnly: true\n });\n\n $(phoneFieldSelector).data('cleave', cleave);\n }, 0);\n },\n\n handlePrivateCardNumber: function (cardFieldSelector) {\n var cleave = new Cleave(cardFieldSelector, {\n blocks: [4, 4, 4, 4]\n });\n $(cardFieldSelector).data('cleave', cleave);\n },\n\n handleSecurityCode: function (securityCodeField) {\n var cleave = new Cleave(securityCodeField, {\n blocks: [4],\n numericOnly: true\n });\n $(securityCodeField).data('cleave', cleave);\n },\n\n handleDateField: function (birthdayFieldSelector, datePattern) {\n // datePattern: ['m', 'd', 'Y'] mm/dd/yyyy\n // datePattern: ['m', 'd'] mm/dd\n setTimeout(() => {\n var cleave = new Cleave(birthdayFieldSelector, {\n date: true,\n datePattern: datePattern || ['m', 'd', 'Y']\n });\n $(birthdayFieldSelector).data('cleave', cleave);\n }, 0);\n },\n\n handleCurrencyPrefix: function (fieldSelector) {\n var cleave = new Cleave(fieldSelector, {\n prefix: '$',\n numericOnly: true\n });\n $(fieldSelector).data('cleave', cleave);\n },\n\n handleExpirationDate: function (fieldSelector) {\n var cleave = new Cleave(fieldSelector, {\n date: true,\n delimiter: '/',\n datePattern: ['m', 'y']\n });\n $(fieldSelector).data('cleave', cleave);\n }\n});\n\nmodule.exports = exportBase;\n","'use strict';\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearFormErrors(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\n $(form).find('.form-group.has-error').removeClass('has-error');\n}\n\nmodule.exports = function (formElement, payload) {\n // clear form validation first\n clearFormErrors(formElement);\n $('.alert', formElement).remove();\n\n if (typeof payload === 'object' && payload.fields) {\n Object.keys(payload.fields).forEach(function (key) {\n if (payload.fields[key]) {\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\n .parent()\n .children('.invalid-feedback');\n\n if (feedbackElement.length > 0) {\n if (Array.isArray(payload[key])) {\n feedbackElement.html(payload.fields[key].join('
'));\n } else {\n feedbackElement.html(payload.fields[key]);\n }\n feedbackElement.siblings('.form-control').addClass('is-invalid').attr('aria-invalid', 'true');\n feedbackElement.closest('.form-group').addClass('has-error');\n }\n }\n });\n formElement.find('.is-invalid').first().focus();\n }\n if (payload && payload.error && payload.error.length > 0) {\n var form = $(formElement).prop('tagName') === 'FORM'\n ? $(formElement)\n : $(formElement).parents('form');\n\n // remove previous alert messages\n var $alert = $(formElement).closest('div').find('.alert.alert-danger');\n if ($alert.length) {\n $alert.remove();\n }\n\n form.prepend('
'\n + payload.error.join('
') + '
');\n form.find('.form-control:first').focus();\n }\n};\n","/* eslint-disable no-underscore-dangle */\n'use strict';\n\nvar base = require('base/login/login');\nvar cleave = require('../components/cleave');\nvar formValidation = require('../components/formValidation');\nvar summaryHelpers = require('../checkout/summary');\nvar reCaptcha = require('recaptcha/reCaptcha/reCaptcha');\nvar utils = require('../utils');\nvar dataLayer = window.dataLayer;\n\n/* global variable to check presence of login.js script */\nwindow.loginLoaded = true;\n\n/**\n * re-renders the order totals and the number of items in the cart\n * @param {Object} data - AJAX response from the server\n */\nfunction updateCartTotals(data) {\n $('.shipping-cost').empty().append(data.totals.shippingExclSurchage.formatted);\n $('.tax-total').empty().append(data.totals.totalTax);\n $('.grand-total').empty().append(data.totals.grandTotal);\n $('.sub-total').empty().append(data.totals.subTotal);\n $('.minicart').trigger('count:update', {\n quantityTotal: data.items.totalQuantity\n });\n\n $('.shipping-surcharge-cost').empty().append(data.totals.shippingSurcharge.formatted);\n if (data.totals.shippingSurcharge.value > 0) {\n $('.shipping-surcharge').removeClass('hide-shipping-discount');\n } else {\n $('.shipping-surcharge').addClass('hide-shipping-discount');\n }\n\n if (data.totals.orderLevelDiscountTotal.value > 0) {\n $('.order-discount').removeClass('hide-order-discount');\n $('.order-discount-total').empty()\n .append('- ' + data.totals.orderLevelDiscountTotal.formatted);\n } else {\n $('.order-discount').addClass('hide-order-discount');\n }\n\n if (data.totals.shippingLevelDiscountTotal.value > 0) {\n $('.shipping-discount').removeClass('hide-shipping-discount');\n $('.shipping-discount-total').empty().append('- ' +\n data.totals.shippingLevelDiscountTotal.formatted);\n } else {\n $('.shipping-discount').addClass('hide-shipping-discount');\n }\n}\n\n/**\n * function to auto-fill email id in account linking step-1 form for store profile user sign-in For Mobile Forms\n */\nfunction autofillEmailForStoreProfileMobile() {\n if ($('#createAccountModal').length) {\n $('#createAccountModal').modal('show');\n $('.select-register-input').trigger('touchstart');\n } else if ($('.checkout-login-nopur').length) {\n $('.section-wrapper').find('.create-account-button').trigger('touchstart');\n if (utils.mediaBreakpointDown('sm')) {\n $('.checkout-login-nopur').find('.activate-membership.mobile-mode').trigger('touchstart');\n } else {\n $('.checkout-login-nopur').find('.select-register').find('.activate-membership').trigger('touchstart');\n }\n }\n var acctLinkingStep1EmailField = $('.step-1').find('input[type=email]');\n acctLinkingStep1EmailField.val(sessionStorage.getItem('signInEmail'));\n sessionStorage.removeItem('signInEmail');\n acctLinkingStep1EmailField.parent().addClass('is-valid');\n acctLinkingStep1EmailField.parent().addClass('has-focus'); // for label transition\n}\n\n/**\n * function to change The label fo Activate Membership radio button for smaller devices\n */\nfunction enableActivateStoreAccountOption() {\n var activateStoreAccLabel = $('#activateStoreAccLabel').val();\n if ($('#createAccountModal').length) {\n $('.activate-user-accounts-label').html(activateStoreAccLabel);\n } else if ($('.checkout-login-nopur').length) {\n if (utils.mediaBreakpointDown('sm')) {\n $('.activate-membership.mobile-mode').find('.select-register-label').html(activateStoreAccLabel);\n } else {\n var activateAccBtnLabelTab = $('.checkout-login-nopur').find('.select-register').find('.activate-membership').find('label');\n activateAccBtnLabelTab.html(activateStoreAccLabel);\n }\n }\n}\n\n/**\n * Triggers an event to react native app.\n * @param {string} event - event name\n */\nfunction postMessage(event) {\n try {\n window.webkit.messageHandlers.ReactNativeWebView.postMessage(event);\n } catch (webkiterror) {\n try {\n window.ReactNativeWebView.postMessage(event);\n } catch (error) {\n console.log(error);\n }\n }\n}\n\n/**\n * function to reset the form after forgot password mail has been resent\n */\nfunction resetForm() {\n $('#requestPasswordResetModalRedesign.mail-resent-modal').on('hidden.bs.modal', function () {\n location.reload();\n });\n}\n\n/**\n * function to reset the form fields\n * @param {Object} form - jQuery DOM element\n */\nfunction clearForm(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid').val('');\n $(form).find('.form-group.has-error').removeClass('has-error');\n}\n\n/**\n * function to send the forgot password mail again if user clicks on the resend link\n */\nfunction resendPasswordResetMail() {\n $(document).on('click', '.resend-password-mail', function (e) {\n e.preventDefault();\n var url = $(this).data('action');\n var emailId = {\n loginEmail: $(this).data('email-id')\n };\n var form = $('.reset-password-form');\n form.spinner().start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: emailId,\n success: function (data) {\n form.spinner().stop();\n if (data.success) {\n $('.password-modal-title').text(data.receivedMsgSubHeading);\n $('.password-modal-footer').empty();\n $('#requestPasswordResetModalRedesign').addClass('mail-resent-modal');\n resetForm();\n }\n },\n error: function () {\n form.spinner().stop();\n }\n });\n });\n}\n\n/**\n * function to send the forgot password mail again if user clicks on the resend link\n * @returns {string} form - active shipping form\n */\nfunction registeredCallBackMethod() {\n var transactionId = Object.prototype.hasOwnProperty.call(window._bcn, 'dvc') ? window._bcn.dvc.getTID() : 'DEVICE_FINGERPRINTING_NOT_ENABLED';/* eslint-disable no-unused-vars */\n return transactionId;\n}\n\n/**\n * function to send the forgot password mail again if user clicks on the resend link\n * @param {jQuery} form - active shipping form\n */\nfunction submitCollectorAPIData(form) {\n if (Object.prototype.hasOwnProperty.call(window, '_bcn') && Object.prototype.hasOwnProperty.call(window, 'collector')) {\n window._bcn.dvc.submit(registeredCallBackMethod);\n window._bcn.flush();\n var transactionId = Object.prototype.hasOwnProperty.call(window._bcn, 'dvc') ? window._bcn.dvc.getTID() : 'DEVICE_FINGERPRINTING_NOT_ENABLED';\n form.find('.transactionId').val(transactionId);\n form.find('.ubaEvents').val(window._bcn.getEvents());\n form.find('.ubaId').val(window._bcn.getToken());\n form.find('.pageId').val(window._bcn.getPageId());\n form.find('.ubaSessionID').val(window._bcn.getUbaSessionId());\n form.find('.sessionID').val(window._bcn.getSessionId());\n form.find('.userAgent').val(navigator.userAgent);\n form.find('.payload').val(window.collector.getPayload().payload);\n }\n}\n\nvar exportBase = $.extend({}, base, {\n handlePhoneNumber: function () {\n if ($('[name$=\"_profile_customer_phone\"]').length > 0) {\n cleave.handlePhoneNumberRedesign('[name$=\"_profile_customer_phone\"]');\n }\n if ($('#registration-form-phone-step3').length) {\n cleave.handlePhoneNumberRedesign('#registration-form-phone-step3');\n }\n if ($('#registration-form-phone-step3-mobile').length) {\n cleave.handlePhoneNumberRedesign('#registration-form-phone-step3-mobile');\n }\n if ($('#registration-form-phone-mobile').length) {\n cleave.handlePhoneNumberRedesign('#registration-form-phone-mobile');\n }\n if ($('#registration-form-phone-desktop').length) {\n cleave.handlePhoneNumberRedesign('#registration-form-phone-desktop');\n }\n if ($('#migration-form-phone').length) {\n cleave.handlePhoneNumberRedesign('#migration-form-phone');\n }\n if ($('#registration-form-phone').length) {\n cleave.handlePhoneNumberRedesign('#registration-form-phone');\n }\n },\n\n phoneNumberValidation: function () {\n $(document).on('blur', '#registration-form-phone, #registration-form-phone-step3, #registration-form-phone-mobile, #registration-form-phone-step3-mobile, #registration-form-phone-desktop', function () {\n var $this = $(this);\n var $inputFormGroup = $this.parents('.form-group');\n var $errorLabel = $inputFormGroup.find('.invalid-feedback');\n var minLength = parseInt($this.attr('minlength'), 10);\n var fieldLength = $this.val().replace(/\\D/g, '').length;\n var $errorText = $this.attr('data-error');\n if (fieldLength < minLength) {\n if ((fieldLength === 0) && ($this[0].id === 'registration-form-phone-desktop' || $this[0].id === 'registration-form-phone-mobile')) {\n $errorLabel.text('');\n $this.removeClass('is-invalid');\n } else {\n $errorLabel.text($errorText);\n $this.addClass('is-invalid');\n $inputFormGroup.removeClass('is-valid');\n $this.parents('.form-group').addClass('has-error');\n }\n } else {\n $errorLabel.text('');\n $inputFormGroup.addClass('is-valid');\n $this.removeClass('is-invalid');\n }\n });\n },\n\n login: function () {\n $('body').off('submit', '#signinCheck, form.login').on('submit', '#signinCheck, form.login', function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.login').trigger('login:submit', e);\n $('body').trigger('analyticsEvent:login', { eventAction: 'login submitted' });\n submitCollectorAPIData(form);\n\n form.find('.user-time-zone').val(new Date().getTimezoneOffset());\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n $('form.login').trigger('login:error', data);\n $('body').trigger('analyticsEvent:loginError', { eventLabel: data.error });\n } else if (data.success) {\n $('form.login').trigger('login:initiate', data);\n $('body').trigger('analyticsEvent:login', { eventAction: 'login completed' });\n var enablePersistentLogin = $('#enablePersistentLogin').val() === 'true';\n var signInEmail = form.find('#login-form-email').val();\n if (data.loginStatus && data.loginStatus.openPlayerModal) {\n $('#signInModal').modal('hide');\n var migrationModalHiddenFields = $('.hidden-form-fields');\n if (data.loginStatus.enablePlayerModalForm) {\n migrationModalHiddenFields.removeClass('d-none');\n } else {\n migrationModalHiddenFields.addClass('d-none');\n $('.toggle-required-prop').prop('required', false);\n }\n if ($('.checkout-login-nopur').length) {\n $('.will-join-later-btn').removeClass('d-none');\n }\n $('#playerMigrationModal').modal('show');\n $('body').addClass('player-migration-modal-open');\n } else if (data.loginStatus && data.loginStatus.isStoreAccountWithMembership) {\n sessionStorage.setItem('signInEmail', signInEmail);\n if (utils.mediaBreakpointDown('md') && !enablePersistentLogin) {\n if ($('#createAccountModal').length === 0) {\n $('#createAccountModalLink').trigger('touchstart', ['fromStoreProfileLogin', sessionStorage.getItem('signInEmail')]);\n }\n autofillEmailForStoreProfileMobile();\n } else {\n location.href = data.redirectUrl;\n }\n } else if (data.loginStatus && data.loginStatus.isStoreAccountWithoutMembership) {\n sessionStorage.setItem('signInEmail', signInEmail);\n if (utils.mediaBreakpointDown('md') && !enablePersistentLogin) {\n if ($('#createAccountModal').length === 0) {\n $('#createAccountModalLink').trigger('touchstart', ['fromStoreProfileLogin', sessionStorage.getItem('signInEmail')]);\n }\n autofillEmailForStoreProfileMobile();\n enableActivateStoreAccountOption();\n var confirmOnlineProfile = $('#confirmOnlineProfile').val();\n var activateAccDetailLabel = $('.select-option-detail').find('.enroll-text')[0];\n activateAccDetailLabel.innerText = confirmOnlineProfile;\n } else {\n location.href = data.redirectUrl;\n }\n } else {\n location.href = data.redirectUrl;\n }\n sessionStorage.removeItem('storeInfoHtml');\n $('form.login').trigger('login:success', data);\n }\n },\n error: function (data) {\n if (data.responseJSON.isInvalidCredentials) {\n formValidation(form, data.responseJSON);\n $('body').trigger('analyticsEvent:loginError', { eventLabel: data.responseJSON.error });\n }\n if (data.responseJSON.redirectUrl) {\n window.location.href = data.responseJSON.redirectUrl;\n } else {\n $('form.login').trigger('login:error', data);\n form.spinner().stop();\n }\n }\n });\n return false;\n });\n\n $(document).off('submit', 'form.playerMigrationForm').on('submit', 'form.playerMigrationForm', function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n if (data.isSessionOver) {\n $('#playerMigrationModal').modal('hide');\n $('body').removeClass('player-migration-modal-open');\n }\n } else {\n var pageName = $('.section-wrapper').length ? 'Checkout Login' : 'Account Modal';\n $('form.playerMigrationForm').trigger('login:LegacyAccActivation', pageName);\n var $isAppSession = $('#app-session');\n if (window.pageContext.ns === 'cart' && $isAppSession.val() === 'true') {\n location.href = $isAppSession.attr('data-is-new-app') === 'true' ? '/cart/?noHeader=true' : '/cart/?target=gsnativeapp';\n } else {\n location.href = data.redirectUrl;\n }\n }\n form.spinner().stop();\n },\n error: function () {\n form.spinner().stop();\n $('#playerMigrationModal').modal('hide');\n $('body').removeClass('player-migration-modal-open');\n }\n });\n return false;\n });\n\n // for label transistion in case of browser autofill\n $(window).on('load', function () {\n var $inputs = $('.form-control');\n\n $inputs.each(function (index, input) {\n var $input = $(input);\n if ($input.is(':-webkit-autofill')) {\n $input.prev('.form-control-label').addClass('prepopulated');\n $input.parent().addClass('is-valid');\n $input.parent().addClass('has-focus');\n }\n });\n });\n\n $(document).off('click', '.forgot-password-link-js').on('click', '.forgot-password-link-js', function (e) {\n e.preventDefault();\n var $loginForm = $('.section-wrapper').find('.login-form');\n $loginForm.addClass('d-none');\n $('.login-form-main-js').addClass('d-none');\n $('.registration-form').addClass('d-none');\n $('.checkout-login .section-wrapper').addClass('d-none');\n $('.forgotpassword-form-main-js').removeClass('d-none');\n });\n\n $(document).off('click', '.back-to-login-link-js').on('click', '.back-to-login-link-js', function (e) {\n e.preventDefault();\n var $loginForm = $('.section-wrapper').find('.login-form');\n $('.forgotpassword-form-main-js').addClass('d-none');\n $('.login-form-main-js').removeClass('d-none');\n $('.registration-form').removeClass('d-none');\n $('.checkout-login .section-wrapper').removeClass('d-none');\n $loginForm.find('.alert.alert-danger').remove();\n $loginForm.removeClass('d-none');\n });\n },\n\n register: function () {\n $('body').off('submit', 'form.registration').on('submit', 'form.registration', function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('form.registration').trigger('login:register', e);\n submitCollectorAPIData(form);\n $('body').trigger('accountOrActivateMembership:formSubmitted', { eventLabel: 'new account' });\n form.find('.user-time-zone').val(new Date().getTimezoneOffset());\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n formValidation(form, data);\n reCaptcha.methods.resetReCaptcha();\n } else {\n $('form.registration').trigger('register:success', data);\n $('body').trigger('accountOrActivateMembership:success', { eventAction: 'account created' });\n var enableOneAccount;\n if ($('#enableOneAccount').length > 0) {\n enableOneAccount = $('#enableOneAccount').val();\n }\n if (enableOneAccount === 'true') {\n $('form.registration').trigger('purlanding:playerCreateAccount');\n }\n\n\n location.href = data.redirectUrl;\n }\n },\n error: function (err) {\n if (err && err.responseJSON && err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n form.spinner().stop();\n }\n });\n return false;\n });\n\n if ($('#isPersistentLoginEnabled').val() !== 'true') {\n var $registerButtonSelector = $('.create-account-btn');\n $registerButtonSelector.on('click', function () {\n if (utils.mediaBreakpointDown('sm')) {\n $('.forms-wrapper').addClass('d-none');\n } else {\n $('.create-account-initial').addClass('d-none');\n }\n $('.create-account-forms').removeClass('d-none');\n });\n }\n\n // For PUR SKU item\n var activateAccountSection = $('.activate-account-select');\n var activateAccountSectionMobile = $('.activate-account-select-mobile');\n var activationDetailSection = $('.pur-activation-details');\n var accountDetailSection = $('.create-account-details');\n var createAccountForm = $('.create-account-form');\n var activateAccountRadio = $('#activate-account-select');\n var activateAccountRadioMobile = $('.activate-account-mobile').find('#activate-account-select-mobile');\n var createAccountRadioMobile = $('.create-account-mobile').find('#create-account-select-mobile');\n var createAccountRadio = $('#create-account-select');\n var linkingDetailModal = $('#linkingDetailModal');\n var createAccountModal = $('#createAccountModal');\n var checkoutLoginActivateAct = $('.checkout-login-redesign').find('.row.select-register').find('.select-register-option.activate-account');\n var checkoutLoginCreateAct = $('.checkout-login-redesign').find('.row.select-register').find('.select-register-option.create-account');\n var checkoutRedesignRegisterForm = $('.registration-form').find('.pur-login');\n var registerForm = $('.register-form');\n var purPointBenefits = $('.pur-points-benefits');\n var emailActiveImage = $('.steps-progress').find('.email-active-image');\n var emailCompletedImage = $('.steps-progress').find('.email-completed-image');\n var verifiedEmailInactiveImage = $('.steps-progress').find('.email-verified-image');\n var verifiedEmailActiveImage = $('.steps-progress').find('.email-veri-active-image');\n var emailDefaultStep2 = $('.steps-progress').find('.email-veri-completed-image');\n var verifiedEmailCompleteStep2 = $('.steps-progress').find('.password-active-image');\n var verifiedEmailActiveStep2 = $('.steps-progress').find('.input-password-image');\n var progressLine1 = $('.steps-progress').find('.progress-line1');\n var progressLine2 = $('.steps-progress').find('.progress-line2');\n var accLinkingStep1Form = $('.activation-steps-forms').find('.step-1');\n var accLinkingStep2Form = $('.activation-steps-forms').find('.step-2');\n var accLinkingStep3Form = $('.activation-steps-forms').find('.step-3');\n var step1DetailHeader = $('.pur-activation-details').find('.step1-detail-header');\n var step2DetailHeader = $('.pur-activation-details').find('.step2-detail-header');\n var step3DetailHeader = $('.pur-activation-details').find('.step3-detail-header');\n var isPersistentLoginEnabled = $('#enablePersistentLogin').val() === 'true';\n\n var $selectRegister = $('.select-register');\n var $accountRedesignHeader = $('.account-redesign-header');\n var $createAccountHeader = $('.createaccount-header-msg');\n var $signInLink = $('.sign-inRedesign');\n var $checkoutLoginActivate = $('.checkout-login-activate');\n var $guestCheckoutButton = $('.login-guest-checkout');\n var $signInInitial = $('.section-wrapper').find('.sign-in-initial');\n var $accountLoginHeader = $('.redesign-login-accountheader');\n\n /**\n * A common function to toggle elements on radio button click\n */\n function resetActivationArea() {\n if (isPersistentLoginEnabled) {\n $selectRegister.removeClass('d-none');\n $accountRedesignHeader.removeClass('d-none');\n $createAccountHeader.removeClass('d-none');\n clearForm(accLinkingStep2Form);\n }\n accLinkingStep1Form.removeClass('d-none');\n accLinkingStep1Form.trigger('reset');\n accLinkingStep2Form.addClass('d-none');\n accLinkingStep3Form.addClass('d-none');\n emailActiveImage.removeClass('d-none');\n emailCompletedImage.addClass('d-none');\n verifiedEmailInactiveImage.removeClass('d-none');\n verifiedEmailActiveImage.addClass('d-none');\n emailDefaultStep2.addClass('d-none');\n verifiedEmailCompleteStep2.addClass('d-none');\n verifiedEmailActiveStep2.removeClass('d-none');\n progressLine1.removeClass('active');\n progressLine2.removeClass('active');\n step1DetailHeader.removeClass('d-none');\n step2DetailHeader.addClass('d-none');\n step3DetailHeader.addClass('d-none');\n }\n\n $(document).off('click', '#create-account-redesign .activate-account').on('click', '#create-account-redesign .activate-account', function () {\n activateAccountSection.removeClass('d-none');\n activationDetailSection.removeClass('d-none');\n createAccountForm.addClass('d-none');\n accountDetailSection.addClass('d-none');\n activateAccountRadio.prop('checked', true);\n if (createAccountRadio.prop('checked') === true) {\n $('body').trigger('createAccount:radioButtonClick', { eventLabel: 'activate account form' });\n }\n createAccountRadio.prop('checked', false);\n $signInLink.addClass('d-none');\n resetActivationArea();\n });\n\n $(document).off('click', '#create-account-redesign .create-account').on('click', '#create-account-redesign .create-account', function () {\n activateAccountSection.addClass('d-none');\n activationDetailSection.addClass('d-none');\n createAccountForm.removeClass('d-none');\n accountDetailSection.removeClass('d-none');\n activateAccountRadio.prop('checked', false);\n $signInLink.removeClass('d-none');\n if (createAccountRadio.prop('checked') === false) {\n $('body').trigger('createAccount:radioButtonClick', { eventLabel: 'new account form' });\n createAccountRadio.prop('checked', true);\n createAccountForm.find('.registration').trigger('reset');\n }\n });\n\n // for mobile screen of Checkout login PUR SKU\n\n $(document).off('click', '#createAccountModal .select-register-input').on('click touchstart', '#createAccountModal .select-register-input', function () {\n activateAccountSection.removeClass('d-none');\n createAccountForm.addClass('d-none');\n activateAccountRadio.prop('checked', true);\n createAccountRadio.prop('checked', false);\n resetActivationArea();\n });\n\n $(document).off('click', '#createAccountModal .create-account').on('click', '#createAccountModal .create-account', function () {\n activateAccountSection.addClass('d-none');\n createAccountForm.removeClass('d-none');\n activateAccountRadio.prop('checked', false);\n if (createAccountRadio.prop('checked') === false) {\n createAccountRadio.prop('checked', true);\n createAccountModal.find('.registration').trigger('reset');\n }\n });\n\n $(document).off('click', '.linking-modal-close').on('click', '.linking-modal-close', function () {\n linkingDetailModal.modal('hide');\n });\n\n $(document).off('click', '#createAccountModal .close').on('click', '#createAccountModal .close', function () {\n activateAccountSection.addClass('d-none');\n createAccountForm.removeClass('d-none');\n });\n\n checkoutLoginActivateAct.on('click', function () {\n activateAccountSection.removeClass('d-none');\n purPointBenefits.addClass('d-none');\n createAccountForm.addClass('d-none');\n registerForm.addClass('d-none');\n activateAccountRadio.prop('checked', true);\n createAccountRadio.prop('checked', false);\n checkoutRedesignRegisterForm.trigger('reset');\n });\n\n checkoutLoginCreateAct.on('click', function () {\n activateAccountSection.addClass('d-none');\n createAccountForm.removeClass('d-none');\n registerForm.removeClass('d-none');\n $checkoutLoginActivate.removeClass('d-none');\n $guestCheckoutButton.removeClass('d-none');\n $signInInitial.removeClass('d-none');\n $accountLoginHeader.removeClass('d-none');\n activateAccountRadio.prop('checked', false);\n createAccountRadio.prop('checked', true);\n resetActivationArea();\n });\n\n var activateAccMobile = $('.create-account-mobile-redesign').find('.activate-account-mobile');\n var createAccMobile = $('.create-account-mobile-redesign').find('.create-account-mobile');\n activateAccMobile.on('click', function () {\n activateAccountSectionMobile.removeClass('d-none');\n createAccountForm.addClass('d-none');\n registerForm.addClass('d-none');\n activateAccountRadioMobile.prop('checked', true);\n createAccountRadioMobile.prop('checked', false);\n });\n\n createAccMobile.on('click', function () {\n activateAccountSectionMobile.addClass('d-none');\n purPointBenefits.removeClass('d-none');\n createAccountForm.removeClass('d-none');\n registerForm.removeClass('d-none');\n activateAccountRadioMobile.prop('checked', false);\n createAccountRadioMobile.prop('checked', true);\n resetActivationArea();\n });\n\n // For Non PUR SKU Checkout Login\n var checkoutLoginNoPUR = $('.checkout-login-nopur');\n var selectRegister = checkoutLoginNoPUR.find('.select-register');\n var newAccOption = selectRegister.find('.new-pur-account');\n var newAccRadio = newAccOption.find('#create-account-select');\n var activateMemOptionDesktop = selectRegister.find('.activate-membership');\n var activateMemOptionMobile = checkoutLoginNoPUR.find('.activate-membership.mobile-mode');\n var activateAccountSectionNonPUR = checkoutLoginNoPUR.find('.activate-account-select-mobile');\n var activeMemRadioDesktop = activateMemOptionDesktop.find('#activate-account-select');\n var activeMemRadioMobile = activateMemOptionMobile.find('#activate-account-select-mobile');\n var pointsBenefits = checkoutLoginNoPUR.find('.pur-points-benefits');\n var registrationForm = checkoutLoginNoPUR.find('.registration');\n var registrationFormWrapper = checkoutLoginNoPUR.find('.register-form');\n\n activateMemOptionDesktop.on('click touchstart', function () {\n activateAccountSection.removeClass('d-none');\n pointsBenefits.addClass('d-none');\n $checkoutLoginActivate.addClass('d-none');\n $guestCheckoutButton.addClass('d-none');\n $signInInitial.addClass('d-none');\n registrationForm.addClass('d-none');\n activeMemRadioDesktop.prop('checked', true);\n newAccRadio.prop('checked', false);\n createAccountForm.find('.registration').trigger('reset');\n });\n\n activateMemOptionMobile.on('click touchstart', function () {\n activateAccountSectionNonPUR.removeClass('d-none');\n registrationFormWrapper.addClass('d-none');\n activeMemRadioMobile.prop('checked', true);\n newAccRadio.prop('checked', false);\n createAccountForm.find('.registration').trigger('reset');\n });\n\n newAccOption.on('click', function () {\n activateAccountSection.addClass('d-none');\n $checkoutLoginActivate.removeClass('d-none');\n $guestCheckoutButton.removeClass('d-none');\n $signInInitial.removeClass('d-none');\n $accountLoginHeader.removeClass('d-none');\n pointsBenefits.removeClass('d-none');\n registrationForm.removeClass('d-none');\n if (registrationFormWrapper.hasClass('d-none')) {\n registrationFormWrapper.removeClass('d-none');\n }\n activeMemRadioDesktop.prop('checked', false);\n newAccRadio.prop('checked', true);\n accLinkingStep1Form.removeClass('d-none');\n if (accLinkingStep2Form.hasClass('d-none' === false)) {\n accLinkingStep2Form.addClass('d-none');\n }\n if (accLinkingStep3Form.hasClass('d-none' === false)) {\n accLinkingStep3Form.addClass('d-none');\n }\n if (activateAccountSectionNonPUR.hasClass('d-none') === false) {\n activateAccountSectionNonPUR.addClass('d-none');\n }\n if (activeMemRadioMobile.prop('checked') === true) {\n activeMemRadioMobile.prop('checked', false);\n }\n resetActivationArea();\n });\n\n $('.create-account-mobile-redesign .sign-in-initial').on('click', function () {\n $('.forms-wrapper').removeClass('d-none');\n $('.create-account-forms').addClass('d-none');\n });\n\n var $checkoutRegisterButton = $('.section-wrapper').find('.create-account-button');\n var $loginForm = $('.section-wrapper').find('.login-form');\n var $createAccInitial = $('.section-wrapper').find('.create-account-initial');\n var $createAccForm = $('.section-wrapper').find('.create-account-form');\n var $signInMsgGuest = $('.section-wrapper').find('.sign-in-guest-msg');\n var $createAccMsgGuest = $('.section-wrapper').find('.create-acc-guest-msg');\n\n $checkoutRegisterButton.on('click touchstart', function () {\n $loginForm.addClass('d-none');\n $signInInitial.removeClass('d-none');\n $createAccForm.removeClass('d-none');\n $createAccInitial.addClass('d-none');\n $signInMsgGuest.removeClass('d-none');\n $createAccMsgGuest.addClass('d-none');\n resetActivationArea();\n });\n\n var $signInButtonSelector = $('.section-wrapper').find('.sign-in-btn');\n $signInButtonSelector.on('click', function () {\n $createAccForm.addClass('d-none');\n $signInInitial.addClass('d-none');\n $loginForm.removeClass('d-none');\n $createAccInitial.removeClass('d-none');\n $signInMsgGuest.addClass('d-none');\n $createAccMsgGuest.removeClass('d-none');\n resetActivationArea();\n });\n $('.step-2').find('.reset-btn, .cancel-link').on('click', function () {\n resetActivationArea();\n });\n },\n\n resetPassword: function () {\n $(document).off('submit', '.reset-password-form').on('submit', '.reset-password-form', function (e) {\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n form.spinner().start();\n $('.reset-password-form').trigger('login:register', e);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n reCaptcha.methods.resetReCaptcha();\n formValidation(form, data);\n } else {\n formValidation(form);\n $('.request-password-title').text(data.receivedMsgHeading);\n $('.request-password-body').empty()\n .append('

' + data.receivedMsgBody + '

');\n if (data.passwordModalRedesign) {\n $('.password-modal-title').text(data.receivedMsgSubHeading).removeClass('hidden-md-down');\n $('.send-email-btn').empty();\n $('.msg-success-icon').removeClass('d-none');\n $('.password-modal-footer').empty()\n .html(data.receivedMsgResend + ''\n + data.resendText + ''\n );\n resendPasswordResetMail();\n $('.forgot-password-subheader').addClass('d-none');\n } else if (!data.mobile) {\n $('#submitEmailButton').text(data.buttonText)\n .attr('data-dismiss', 'modal');\n } else {\n $('.send-email-btn').empty()\n .html(''\n + data.buttonText + ''\n );\n }\n }\n },\n error: function () {\n form.spinner().stop();\n }\n });\n return false;\n });\n },\n\n powerUpRewardsLogin: function () {\n $('form.pur-login').submit(function (e) {\n var form = $(this);\n e.preventDefault();\n\n form.spinner().start();\n submitCollectorAPIData(form);\n form.find('.user-time-zone').val(new Date().getTimezoneOffset());\n $.ajax({\n url: form.attr('action'),\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n if (!data.success) {\n formValidation(form, data);\n\n if (data.continueWithoutPro) {\n // remove terms and conditions\n $('#pur-pro-terms-container').remove();\n }\n if (data.updatedButtonText) {\n // update button text\n $('#purCheckoutLogin').html(data.updatedButtonText);\n }\n } else {\n var autoRenewalAccepted = false;\n if (($('#pur-agree-terms-mobile').is(':checked') || $('#pur-agree-terms-desktop').is(':checked')) && ($('#sign-me-up-mobile').is(':checked') || $('#sign-me-up-desktop').is(':checked'))) {\n autoRenewalAccepted = true;\n }\n var urlParams = {\n autoRenewalAccepted: autoRenewalAccepted\n };\n location.href = utils.appendToUrl(data.redirectUrl, urlParams);\n }\n sessionStorage.removeItem('savedUsernameCookieVal');\n },\n error: function (data) {\n if (data.responseJSON.isInvalidCredentials) {\n formValidation(form, data.responseJSON);\n }\n if (data && data.responseJSON && data.responseJSON.redirectUrl) {\n window.location.href = data.responseJSON.redirectUrl;\n }\n },\n complete: function (data) {\n if (data && data.responseJSON && data.responseJSON.order) {\n $('body').trigger('checkout:updateCheckoutView', {\n order: data.responseJSON.order,\n isPurLogin: true\n });\n }\n form.spinner().stop();\n }\n });\n return false;\n });\n },\n\n submitOrderSearchForm: function () {\n var $trackOrderForm = $('form.trackorder');\n var $submitButton = $('#btn-submit-track-order');\n if ($trackOrderForm.length > 0 && $submitButton.length > 0) {\n $trackOrderForm.find('.user-time-zone').val(new Date().getTimezoneOffset());\n var autoSubmit = $trackOrderForm.data('auto-submit');\n if (autoSubmit === true) {\n $submitButton.click();\n }\n }\n },\n\n updateCheckoutView: function () {\n $('body').on('checkout:updateCheckoutView', function (e, data) {\n if (data.isPurLogin) {\n updateCartTotals(data.order);\n summaryHelpers.methods.updateOrderProductSummaryInformation(data.order);\n }\n });\n },\n\n checkoutLogin: function () {\n $('body').on('click', '.checkout-sign-in,.trade-sign-in', function (e) {\n e.preventDefault();\n postMessage('goSignIn');\n });\n },\n\n checkoutRegister: function () {\n $('body').on('click', '.checkout-create-account', function () {\n postMessage('goCreateAccount');\n });\n },\n\n loginPageLogo: function () {\n $('.navigate-to-homepage').on('click', function () {\n postMessage('goLandingPage');\n });\n },\n\n step1Submit: function () {\n $('body').off('submit', 'form.step-1').on('submit', 'form.step-1', function (e) {\n var accountBlockCounterBM = $('#accountBlockCount').data('accountblockcounter').slice('.')[0];\n var form = $(this);\n e.preventDefault();\n var url = form.attr('action');\n $('body').trigger('accountOrActivateMembership:formSubmitted', { eventLabel: 'activate membership email' });\n form.spinner().start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n var openid = data.profileForm.openID;\n var step1Form = $('.step-1');\n var step2Form = $('.step-2');\n var isPersistentLoginEnabled = $('#enablePersistentLogin').val() === 'true';\n\n var emailActiveImage = $('.steps-progress').find('.email-active-image');\n var emailCompletedImage = $('.steps-progress').find('.email-completed-image');\n var progressLine1 = $('.steps-progress').find('.progress-line1');\n var verifiedEmailInactiveImage = $('.steps-progress').find('.email-verified-image');\n var verifiedEmailActiveImage = $('.steps-progress').find('.email-veri-active-image');\n var step1DetailHeader = $('.pur-activation-details').find('.step1-detail-header');\n var step2DetailHeader = $('.pur-activation-details').find('.step2-detail-header');\n var counter = localStorage.getItem('verificationCounter');\n\n var blockedMessage = $('.blocked-message');\n\n if (counter >= accountBlockCounterBM) {\n $('.step-1 :input').prop('disabled', true);\n blockedMessage.removeClass('d-none');\n setTimeout(function () {\n $('.step-1 :input').prop('disabled', false);\n localStorage.removeItem('verificationCounter');\n blockedMessage.addClass('d-none');\n }, 1800000); // 30 mins counter for blocking the user to enter the email address\n } else if (counter < accountBlockCounterBM || counter === null || counter === undefined || Number.isNaN(counter)) {\n step1Form.addClass('d-none');\n step2Form.removeClass('d-none');\n if (isPersistentLoginEnabled) {\n $('.select-register').addClass('d-none');\n $('.account-redesign-header').addClass('d-none');\n $('.createaccount-header-msg').addClass('d-none');\n }\n\n step2Form.attr('data-openid', openid);\n\n emailActiveImage.addClass('d-none');\n emailCompletedImage.removeClass('d-none');\n verifiedEmailInactiveImage.addClass('d-none');\n verifiedEmailActiveImage.removeClass('d-none');\n step1DetailHeader.addClass('d-none');\n step2DetailHeader.removeClass('d-none');\n progressLine1.addClass('active');\n var attemptsMessage = $('.step-2').find('.attempts-message');\n var attemptsMessageRedesign = $('.step-2').find('.attempt-msg-redesign');\n var invalidCodeMessage = $('.step-2').find('.invalid-code-message');\n if (attemptsMessage.hasClass('d-none') === false) {\n attemptsMessage.addClass('d-none');\n }\n if (isPersistentLoginEnabled && attemptsMessageRedesign.hasClass('d-none') === false) {\n attemptsMessageRedesign.addClass('d-none');\n }\n if (invalidCodeMessage.hasClass('d-none') === false) {\n invalidCodeMessage.addClass('d-none');\n }\n var customerProfile = data.membershipTierFriendlyName;\n $('.step3-detail-header').find('.pro-label').addClass('d-none');\n $('.step3-detail-header').find('.player-label').removeClass('d-none');\n if (customerProfile === 'Pro') {\n $('.step3-detail-header').find('.pro-label').removeClass('d-none');\n $('.step3-detail-header').find('.player-label').addClass('d-none');\n }\n }\n },\n error: function () {\n form.spinner().stop();\n }\n });\n return false;\n });\n\n $(document).off('click', '.contactus-link').on('click', '.contactus-link', function () {\n var step1Email = $('.step-1').find('input[type=email]').val();\n sessionStorage.setItem('emailAdd', step1Email);\n });\n\n /**\n * function to auto-fill email id in account linking step-1 form for store profile user sign-in For Desktop Forms\n */\n function autofillEmailForStoreProfileDesktop() {\n $('.activate-account').click();\n var acctLinkingStep1EmailField = $('.step-1').find('input[type=email]');\n acctLinkingStep1EmailField.val(sessionStorage.getItem('signInEmail'));\n sessionStorage.removeItem('signInEmail');\n acctLinkingStep1EmailField.parent().addClass('is-valid');\n acctLinkingStep1EmailField.parent().addClass('has-focus'); // for label transition\n }\n // Function to autofill email address field when user clicks on email link that comes up when user is blocked during membership activation flow\n $(document).ready(function () {\n var emailAdd = sessionStorage.getItem('emailAdd');\n var emailFieldContactForm = $('.contact-us-form').find('input[type=email]');\n if (emailAdd && emailAdd !== null && emailAdd !== undefined) {\n emailFieldContactForm.val(emailAdd);\n sessionStorage.removeItem('emailAdd');\n }\n $('#create-account-select').prop('checked', true);\n $('#activate-account-select').prop('checked', false);\n\n const queryStrings = window.location.search;\n const urlParameters = new URLSearchParams(queryStrings);\n const storeAccountStatus = urlParameters.get('enableStoreAccount');\n if ((queryStrings.indexOf('enableStoreAccount') !== -1)) {\n if (storeAccountStatus === '01') {\n autofillEmailForStoreProfileDesktop();\n } else if (storeAccountStatus === '02') {\n autofillEmailForStoreProfileDesktop();\n var confirmOnlineProfile = $('#confirmOnlineProfile').val();\n var activateAccDetailLabel = $('.activate-account').find('.select-option-detail')[0];\n activateAccDetailLabel.innerText = confirmOnlineProfile;\n var activateStoreRadioBtnLabel = $('#activateStoreAccLabel').val();\n var activateAccBtnLabel = $('.activate-account').find('.select-register-label:last');\n activateAccBtnLabel.html(activateStoreRadioBtnLabel);\n }\n }\n });\n },\n\n step2Submit: function () {\n $('body').off('submit', 'form.step-2').on('submit', 'form.step-2', function (e) {\n var form = $(this);\n var accountBlockCounterBM = Math.round($('#accountBlockCount').data('accountblockcounter'));\n e.preventDefault();\n var step2OpenID = form.attr('data-openid');\n $('.step2OpenID').val(step2OpenID);\n var url = form.attr('action');\n $('body').trigger('accountOrActivateMembership:formSubmitted', { eventLabel: 'activate membership code' });\n form.spinner().start();\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n var attemptsMessage = form.find('.attempts-message');\n var attemptsMessageRedesign = form.find('.attempt-msg-redesign');\n var counter = localStorage.getItem('verificationCounter');\n var invalidCodeMessage = form.find('.invalid-code-message');\n var $enablePersistentLogin = $('#enablePersistentLogin').val() === 'true';\n if (!data.success) {\n formValidation(form, data);\n if (data.profileForm && data.profileForm.twoFactorAuth && data.profileForm.twoFactorAuth.securityCode.error) {\n if (!$enablePersistentLogin) {\n invalidCodeMessage[0].innerHTML = data.profileForm.twoFactorAuth.securityCode.error;\n invalidCodeMessage.removeClass('d-none');\n }\n if (data.securityCodeRequired === true) {\n if (counter == null) {\n counter = 1;\n localStorage.setItem('verificationCounter', counter);\n } else if (counter >= accountBlockCounterBM) {\n counter = accountBlockCounterBM;\n localStorage.setItem('verificationCounter', counter);\n } else {\n localStorage.setItem('verificationCounter', ++counter);\n }\n var messageText = attemptsMessage[0].innerHTML;\n messageText = 'You have ' + (accountBlockCounterBM - counter) + ' out of 5 attempts left.';\n if (attemptsMessageRedesign.length > 0) {\n messageText = 'You have ' + (accountBlockCounterBM - counter) + ' attempts remaining.';\n attemptsMessageRedesign.removeClass('d-none');\n }\n attemptsMessage[0].innerHTML = messageText;\n attemptsMessage.removeClass('d-none');\n }\n }\n } else if (data.success) {\n if (data.profileForm && data.profileForm.twoFactorAuth && data.profileForm.twoFactorAuth.securityCode) {\n if (data.profileForm.twoFactorAuth.securityCode.valid === true) {\n if (counter && counter != null && counter !== undefined) {\n localStorage.removeItem('verificationCounter');\n }\n var step2Form = $('.step-2');\n var step3Form = $('.step-3');\n\n step2Form.addClass('d-none');\n step3Form.attr('data-openid', data.profileForm.openID);\n step3Form.removeClass('d-none');\n step3Form.find('.createaccount-header-msg').removeClass('d-none');\n\n var emailCompletedStep2 = $('.steps-progress').find('.email-veri-active-image');\n var emailDefaultStep2 = $('.steps-progress').find('.email-veri-completed-image');\n var verifiedEmailActiveStep2 = $('.steps-progress').find('.input-password-image');\n var verifiedEmailCompleteStep2 = $('.steps-progress').find('.password-active-image');\n var step1DetailHeader = $('.pur-activation-details').find('.step1-detail-header');\n var step2DetailHeader = $('.pur-activation-details').find('.step2-detail-header');\n var step3DetailHeader = $('.pur-activation-details').find('.step3-detail-header');\n var progressLine2 = $('.steps-progress').find('.progress-line2');\n var emailField = $('.step-3').find('.email-field');\n var email = data.profileForm.customer.email.htmlValue;\n\n emailCompletedStep2.addClass('d-none');\n emailDefaultStep2.removeClass('d-none');\n verifiedEmailActiveStep2.addClass('d-none');\n verifiedEmailCompleteStep2.removeClass('d-none');\n step3DetailHeader.removeClass('d-none');\n step1DetailHeader.addClass('d-none');\n step2DetailHeader.addClass('d-none');\n progressLine2.addClass('active');\n emailField.val(email);\n emailField.parent().addClass('is-valid');\n emailField.parent().addClass('has-focus'); // for label transition\n }\n }\n }\n },\n error: function () {\n form.spinner().stop();\n }\n });\n return false;\n });\n },\n\n step3Submit: function () {\n $('body').off('submit', 'form.step-3').on('submit', 'form.step-3', function (e) {\n var form = $(this);\n e.preventDefault();\n var step3OpenID = form.attr('data-openid');\n $('.step3OpenID').val(step3OpenID);\n form.find('.user-time-zone').val(new Date().getTimezoneOffset());\n var url = form.attr('action');\n form.spinner().start();\n $('body').trigger('accountOrActivateMembership:formSubmitted', { eventLabel: 'activate membership password' });\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n var errorField = $('.invalid-profile-form-error');\n errorField.removeClass('alert alert-danger');\n if (!data.success) {\n formValidation(form, data);\n form.find('.alert.alert-danger').remove();\n errorField.html('
' + (data.error.length ? data.error : errorField.attr('data-error-msg')));\n errorField.removeClass('d-none').addClass('alert alert-danger');\n reCaptcha.methods.resetReCaptcha();\n } else {\n $('form.step-3').trigger('register:success', data);\n $('body').trigger('accountOrActivateMembership:success', { eventAction: 'account activated' });\n if (data.membershipTierFriendlyName === 'Pro') {\n $('form.step-3').trigger('purlanding:proCreateAccount');\n } else if (data.membershipTierFriendlyName === 'Player') {\n $('form.step-3').trigger('purlanding:playerCreateAccount');\n }\n if (errorField.hasClass('d-none') === false) {\n errorField.addClass('d-none');\n }\n\n\n location.href = data.redirectUrl;\n }\n },\n error: function () {\n form.spinner().stop();\n }\n });\n return false;\n });\n },\n\n goBack: function () {\n if ($('#page-type').length && $('#page-type').val() === 'trade') {\n $('#back-button').on('click', function () {\n postMessage('goLandingPage');\n });\n }\n },\n\n customCheckbox: function () {\n $(document).on('click', '.custom-checkbox-container', function () {\n var $input = $(this).siblings('.custom-checkbox-input-new');\n $input.prop('checked', function (i, val) {\n return !val;\n }).trigger('change');\n });\n },\n\n persitentLoginAnalytics: function () {\n $(document).on('change', '.js-remember-me', function () {\n var rememberMe = $(this).prop('checked');\n dataLayer.push({\n event: 'Persistent Login',\n eventAction: rememberMe ? 'opt in' : 'opt out'\n });\n $('body').trigger('login:keepMeSignedIn', { eventAction: rememberMe ? 'box checked' : 'box unchecked', persistentSignIn: rememberMe ? 'on' : 'off' });\n });\n },\n\n manageResetPasswordError: function () {\n $('#resetPasswordBtn').click(function () {\n var $resetErrorMsg = $('.attempt-msg-redesign');\n $resetErrorMsg.hide();\n });\n }\n});\n\nmodule.exports = exportBase;\n","/*!\n * JavaScript Cookie v2.1.2\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n *\n * Updated by Ryan Walter for use in SiteGenesis\n */\n\n/* eslint-disable */\n'use strict';\n\n/**\n * @function\n * @description Function used to manipulate cookies\n * @param key {String} Key that references the cookie\n * @param value {String} Value that the cookie will be set to\n * @param attributes {Object} Attributes used to set various aspects of the cookie. Valid keys include: expires, path, domain, and secure\n */\nfunction cookieApi (key, value, attributes) {\n var result;\n if (typeof document === 'undefined') {\n return;\n }\n\n // Write\n\n if (arguments.length > 1) {\n attributes = $.extend({\n path: '/'\n }, cookieApi.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n var expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n try {\n result = JSON.stringify(value);\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {\n // An error occurred\n }\n\n value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n key = encodeURIComponent(String(key));\n key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n key = key.replace(/[\\(\\)]/g, escape);\n\n return (document.cookie = [\n key, '=', value,\n attributes.expires ? '; expires=' + attributes.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n attributes.path ? '; path=' + attributes.path : '',\n attributes.domain ? '; domain=' + attributes.domain : '',\n attributes.secure ? '; secure' : ''\n ].join(''));\n }\n\n // Read\n\n if (!key) {\n result = {};\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling \"get()\"\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var rdecode = /(%[0-9A-Z]{2})+/g;\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n var name = parts[0].replace(rdecode, decodeURIComponent);\n cookie = cookie.replace(rdecode, decodeURIComponent);\n\n if (typeof JSON === 'object' && typeof JSON.parse === 'function') {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {\n // An error occurred\n }\n }\n\n if (key === name) {\n result = cookie;\n break;\n }\n\n if (!key) {\n result[name] = cookie;\n }\n } catch (e) {\n // An error occurred\n }\n }\n\n return result;\n}\n\n/**\n * @function\n * @description Sets a cookie based on the given\n * @param key {String}\n * @param value {String}\n * @param attributes {Object}\n */\ncookieApi.set = cookieApi;\n\n/**\n * @function\n * @description Gets a cookie based on the given\n * @param key {String}\n */\ncookieApi.get = function (key) {\n return cookieApi.call(cookieApi, key);\n};\n\n/**\n * @function\n * @description Returns an object from a converted JSON string in the cookie\n * @param key {String}\n */\ncookieApi.getJSON = function () {\n return cookieApi.apply({\n json: true\n }, [].slice.call(arguments));\n};\n\n/* Set the defaults of the Cookie API */\ncookieApi.defaults = {};\n\n/**\n * @function\n * @description Removes a cookie based on the given key and attributes\n * @param key {String}\n */\ncookieApi.remove = function (key, attributes) {\n cookieApi(key, '', $.extend(attributes, {\n expires: -1\n }));\n};\n\nmodule.exports = cookieApi;\n","'use strict';\n\nvar smallBreakpoint = 320;\nvar mediumBreakpoint = 480;\nvar largeBreakpoint = 768;\nvar desktopBreakpoint = 1024;\nvar maxBreakpoint = 1280;\n\nvar utils = {\n /**\n * @desc Media breakpoints that are used throughout the Javascript\n */\n breakpoints: {\n xs: smallBreakpoint,\n sm: mediumBreakpoint,\n md: largeBreakpoint,\n lg: desktopBreakpoint,\n xl: maxBreakpoint,\n 'mobile-menu': desktopBreakpoint\n },\n\n /**\n * @function\n * @description Returns either an object with all of the available breakpoints or a specific viewport based on the given size\n * @param {string} size The viewport to return\n * @param {string} breakpoints A custom breakpoints object\n * @returns {Object|string} - breakpoints or specific viewport\n */\n getViewports: function (size, breakpoints) {\n var bps = typeof breakpoints !== 'undefined' ? breakpoints : this.breakpoints;\n\n if (typeof size !== 'undefined') {\n var viewport = bps[size];\n\n if (viewport) {\n return viewport;\n }\n\n window.console.error('Unexpected viewport size given in util.getViewports');\n throw new Error('Unexpected viewport size given in util.getViewports');\n } else {\n return breakpoints;\n }\n },\n\n /**\n * @function\n * @description Returns the current viewport name (ex: 'medium') or 'max' if the current window is larger than any defined viewport width\n * @returns {string} - current viewport name\n */\n getCurrentViewport: function () {\n var w = window.innerWidth;\n var viewports = utils.getViewports();\n var viewport = 'max';\n var viewportlist = Object.keys(viewports);\n\n // Traverse the object from small up to desktop, and return the first match\n viewportlist.forEach((name) => {\n if (w <= viewports[name]) {\n viewport = name;\n }\n });\n return viewport;\n },\n\n /**\n * @function\n * @description appends the parameter with the given name and value to the given url and returns the changed url\n * @param {string} url the url to which the parameter will be added\n * @param {string} name the name of the parameter\n * @param {string} value the value of the parameter\n * @returns {string} - URL with parameter\n */\n appendParamToURL: function (url, name, value) {\n // quit if the param already exists\n if (url.indexOf(name + '=') !== -1) {\n return url;\n }\n var separator = url.indexOf('?') !== -1 ? '&' : '?';\n return url + separator + name + '=' + encodeURIComponent(value);\n },\n\n /**\n * @function\n * @description remove the parameter and its value from the given url and returns the changed url\n * @param {string} url the url from which the parameter will be removed\n * @param {string} name the name of parameter that will be removed from url\n * @returns {string} - URL without parameter\n */\n removeParamFromURL: function (url, name) {\n if (url.indexOf('?') === -1 || url.indexOf(name + '=') === -1) {\n return url;\n }\n var hash;\n var params;\n var domain = url.split('?')[0];\n var paramUrl = url.split('?')[1];\n var newParams = [];\n // if there is a hash at the end, store the hash\n if (paramUrl.indexOf('#') > -1) {\n hash = paramUrl.split('#')[1] || '';\n paramUrl = paramUrl.split('#')[0];\n }\n params = paramUrl.split('&');\n for (var i = 0; i < params.length; i++) {\n // put back param to newParams array if it is not the one to be removed\n if (params[i].split('=')[0] !== name) {\n newParams.push(params[i]);\n }\n }\n return domain + '?' + newParams.join('&') + (hash ? '#' + hash : '');\n },\n\n /**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\n appendToUrl: function (url, params) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n }).join('&');\n\n return newUrl;\n },\n\n /**\n * @function\n * @description extract the query string from URL\n * @param {string} url the url to extra query string from\n * @returns {string|Object} - Query String from URL\n **/\n getQueryString: function (url) {\n var qs;\n if (!typeof url === 'string') {\n return null;\n }\n var a = document.createElement('a');\n a.href = url;\n if (a.search) {\n qs = a.search.substr(1); // remove the leading ?\n }\n return qs;\n },\n\n/**\n * @function\n * @description Latest approach to check if element is in the current viewport, the prevously used 'elementInViewport' should be deprecated\n * @param {Object} el - Element to check\n * @returns {boolean} - Returns boolean if element is in viewport or not\n */\n isElementInViewport: function (el) {\n var rect = el[0].getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /* or $(window).height() */\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */\n );\n },\n\n /**\n * @function\n * @description Checks to see if the given element is in the current viewport\n * @param {string} el - Element to check\n * @param {string} offsetToTop - Offset to give the top value\n * @returns {boolean} - Whether or not the element is in the viewport\n */\n elementInViewport: function (el, offsetToTop) {\n var top = el.offsetTop;\n var left = el.offsetLeft;\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n\n while (el.offsetParent) {\n var offsetParent = el.offsetParent;\n top += offsetParent.offsetTop;\n left += offsetParent.offsetLeft;\n }\n\n if (typeof offsetToTop !== 'undefined') {\n top -= offsetToTop;\n }\n\n if (window.pageXOffset !== null) {\n return (\n top < (window.pageYOffset + window.innerHeight) &&\n left < (window.pageXOffset + window.innerWidth) &&\n (top + height) > window.pageYOffset &&\n (left + width) > window.pageXOffset\n );\n }\n\n if (document.compatMode === 'CSS1Compat') {\n return (\n top < (window.document.documentElement.scrollTop + window.document.documentElement.clientHeight) &&\n left < (window.document.documentElement.scrollLeft + window.document.documentElement.clientWidth) &&\n (top + height) > window.document.documentElement.scrollTop &&\n (left + width) > window.document.documentElement.scrollLeft\n );\n }\n\n return false;\n },\n\n /**\n * Observe element in view using intersection observer\n * @param {Element} target Html element to observe\n * @param {string} type type which is been observed\n * @param {function} callback callback function which gets called when element intersected\n */\n elementInviewObserver: function (target, type, callback) {\n let options = {\n rootMargin: '50px 0px 50px 0px',\n threshold: 0\n };\n\n let observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n // fire inview when element is intersecting\n $('body').trigger(`${type}:elementInview`);\n if (typeof callback === 'function') callback(entry.target);\n } else if (!entry.intersectionRatio) {\n // fire out of view event when intersection ratio is 0 meaning the element is out of view\n $('body').trigger(`${type}:elementOutOfView`);\n }\n });\n }, options);\n observer.observe(target);\n },\n\n /**\n * @function\n * @description Appends the parameter 'format=ajax' to a given path\n * @param {string} path the relative path\n * @returns {string} - URL with format param of ajax\n */\n ajaxUrl: function (path) {\n return this.appendParamToURL(path, 'format', 'ajax');\n },\n\n /**\n * @function\n * @description Converts the given relative URL to an absolute URL\n * @param {string} url - URL to convert\n * @returns {string} - Absolute URL\n */\n toAbsoluteUrl: function (url) {\n var absURL = url;\n if (url.indexOf('http') !== 0 && url.charAt(0) !== '/') {\n absURL = '/' + url;\n }\n return absURL;\n },\n\n /**\n * @function\n * @description Loads css dynamically from given urls\n * @param {Array} urls Array of urls from which css will be dynamically loaded.\n */\n loadDynamicCss: function (urls) {\n var i = urls.length;\n var len = urls.length;\n for (i = 0; i < len; i++) {\n this.loadedCssFiles.push(this.loadCssFile(urls[i]));\n }\n },\n\n /**\n * @function\n * @description Loads css file dynamically from given url\n * @param {string} url The url from which css file will be dynamically loaded.\n * @returns {jQuery} - CSS Link Element\n */\n loadCssFile: function (url) {\n return $('').appendTo($('head')).attr({\n type: 'text/css',\n rel: 'stylesheet'\n }).attr('href', url); // for i.e. <9, href must be added after link has been appended to head\n },\n // array to keep track of the dynamically loaded CSS files\n loadedCssFiles: [],\n\n /**\n * @function\n * @description Removes all css files which were dynamically loaded\n */\n clearDynamicCss: function () {\n var i = this.loadedCssFiles.length;\n while (i-- > 0) {\n $(this.loadedCssFiles[i]).remove();\n }\n this.loadedCssFiles = [];\n },\n\n /**\n * @function\n * @description Extracts all parameters from a given query string into an object\n * @param {string} qs The query string from which the parameters will be extracted\n * @returns {Object} - Object with params from the query string\n */\n getQueryStringParams: function (qs) {\n if (!qs || qs.length === 0) { return {}; }\n var params = {};\n var unescapedQS = decodeURIComponent(qs);\n // Use the String::replace method to iterate over each\n // name-value pair in the string.\n unescapedQS.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'),\n function ($0, $1, $2, $3) {\n params[$1] = $3;\n }\n );\n return params;\n },\n\n /**\n * @function\n * @description Converts object to query string\n * @param {Object} qs The query string from which the parameters will be extracted\n * @returns {string} - Object with params from the query string\n */\n toQueryStringParams: function(qsObj) {\n return `?${\n Object.keys(qsObj)\n .filter(key => !!qsObj[key])\n .map(function(key) { return `${key}=${encodeURIComponent(qsObj[key])}`})\n .join('&')}`;\n },\n\n /**\n * @function\n * @description Fills in the given form with the given address information\n * @param {Object} address - Address fields object\n * @param {Object} $form - Form jQuery object\n */\n fillAddressFields: function (address, $form) {\n var fields = Object.keys(address);\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n if (field !== 'ID' && field !== 'UUID' && field !== 'key') {\n // if the key in address object ends with 'Code', remove that suffix\n // keys that ends with 'Code' are postalCode, stateCode and countryCode\n $form.find('[name$=\"' + field.replace('Code', '') + '\"]').val(address[field]);\n // update the state fields\n if (field === 'countryCode') {\n $form.find('[name$=\"country\"]').trigger('change');\n // retrigger state selection after country has changed\n // this results in duplication of the state code, but is a necessary evil\n // for now because sometimes countryCode comes after stateCode\n $form.find('[name$=\"state\"]').val(address.stateCode);\n }\n }\n }\n },\n\n /**\n * @function\n * @description Binds the onclick-event to a delete button on a given container,\n * which opens a confirmation box with a given message\n * @param {string} container - The name of element to which the function will be bind\n * @param {string} message - The message the will be shown upon a click\n */\n setDeleteConfirmation: function (container, message) {\n $(container).on('click', '.delete', function () {\n return window.confirm(message); // eslint-disable-line\n });\n },\n\n /**\n * @function\n * @description Scrolls a browser window to a given x point\n * @param {string} xLocation - The x coordinate\n */\n scrollBrowser: function (xLocation) {\n $('html, body').animate({\n scrollTop: xLocation\n }, 500);\n },\n\n /**\n * @function\n * @desc Determines if the device that is being used is mobile\n * @returns {boolean} - Wether or not the browser is currently mobile\n */\n isMobile: function () {\n var mobileAgentHash = ['mobile', 'tablet', 'phone', 'ipad', 'ipod', 'android', 'blackberry', 'windows ce', 'opera mini', 'palm'];\n var idx = 0;\n var isMobile = false;\n var userAgent = (navigator.userAgent).toLowerCase();\n\n while (mobileAgentHash[idx] && !isMobile) {\n isMobile = (userAgent.indexOf(mobileAgentHash[idx]) >= 0);\n idx++;\n }\n return isMobile;\n },\n\n /**\n * @function\n * @description Executes a callback function when the user has stopped resizing the screen.\n * @param {function} callback - Callback function for the resize event\n * @return {function} - Callback function for the resize event\n */\n smartResize: function (callback) {\n var timeout;\n\n $(window).on('resize', function () {\n clearTimeout(timeout);\n timeout = setTimeout(callback, 100);\n });\n\n return callback;\n },\n\n /**\n * @function\n * @desc Generates a min-width matchMedia media query based on the given params\n * @param {string} size - Breakpoint to use for the media query\n * @param {Object} breakpoints - Override of the util breakpoints (optional)\n * @returns {boolean} - Wether or not the given media query matches\n */\n mediaBreakpointUp: function (size, breakpoints) {\n var breakpoint = this.getViewports(size, breakpoints);\n var mediaQuery = window.matchMedia('(min-width: ' + breakpoint + 'px)');\n return mediaQuery.matches;\n },\n\n /**\n * @function\n * @desc Generates a min-width matchMedia media query based on the given params\n * @param {string} size - Breakpoint to use for the media query\n * @param {Object} breakpoints - Override of the util breakpoints object (optional)\n * @returns {boolean} - Wether or not the given media query matches\n */\n mediaBreakpointDown: function (size, breakpoints) {\n var bps = typeof breakpoints !== 'undefined' ? breakpoints : this.breakpoints;\n var nextSize = this.getNextObjectKey(bps, size);\n\n if (typeof nextSize === 'string') {\n var breakpoint = this.getViewports(nextSize, breakpoints) - 1;\n var mediaQuery = window.matchMedia('(max-width: ' + breakpoint + 'px)');\n return mediaQuery.matches;\n }\n\n return true;\n },\n\n /**\n * @function\n * @desc Generates a min-width and max-width matchMedia media queries based on the given params\n * @param {string} sizeMin - Min breakpoint to use for the media query\n * @param {string} sizeMax - Max breakpoint to use for the media query\n * @param {Object} breakpoints - Override of the util breakpoints object (optional)\n * @returns {boolean} - Wether or not the given media query matches\n */\n mediaBreakpointBetween: function (sizeMin, sizeMax, breakpoints) {\n var min = this.mediaBreakpointUp(sizeMin, breakpoints);\n var max = this.mediaBreakpointDown(sizeMax, breakpoints);\n\n return min && max;\n },\n\n /**\n * @function\n * @desc Generates a min-width and max-width matchMedia media query based on the given params\n * @param {string} size - Breakpoint to use for the media query\n * @param {Object} breakpoints - Override of the util breakpoints object (optional)\n * @returns {boolean} - Wether or not the given media query matches\n */\n mediaBreakpointOnly: function (size, breakpoints) {\n return this.mediaBreakpointBetween(size, size, breakpoints);\n },\n\n /**\n * @function\n * @desc Retrieves the next key in the object or null if it doesn't exist\n * @param {Object} obj - Object to get the next key from\n * @param {string} key - Key to base the next key index on\n * @returns {string}|{null} - The next key of the given object or null if one doesn't exist\n */\n getNextObjectKey: function (obj, key) {\n var keys = Object.keys(obj);\n var nextIndex = keys.indexOf(key) + 1;\n\n if (keys.length > nextIndex) {\n return keys[nextIndex];\n }\n\n return null;\n },\n\n /**\n * @function\n * @desc Retrieves the util breakpoints object\n * @returns {Object} - All of the breakpoints\n */\n getBreakpoints: function () {\n return this.breakpoints;\n },\n\n /**\n * @function\n * @desc Removes the last slash from url\n * @param {string} url - the string to remove the slash from\n * @returns {string} - the string after removing the slash\n */\n removeTrailingSlash: function (url) {\n return url.replace(/\\/$/, '');\n },\n\n /**\n * @function\n * @desc inject CSS dynamically\n * @param {string} url - the string to remove the slash from\n */\n injectDynamicCss: function (url) {\n $('', {\n rel: 'stylesheet',\n type: 'text/css',\n href: url\n }).appendTo('head');\n },\n\n /**\n * function below parses and returns the url parameters.\n * @returns {array} parameters\n */\n getUrlVars: function () {\n var vars = {};\n window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {\n vars[key] = value;\n });\n return vars;\n },\n\n /**\n * function to get url parameter.\n * @param {string} parameter key\n * @param {string} defaultvalue if parameter is missing from url\n * @returns {string} parameter value or defaultvalue\n */\n getUrlParam: function (parameter, defaultvalue) {\n var urlparameter = defaultvalue;\n if (window.location.href.indexOf(parameter) > -1) {\n urlparameter = this.getUrlVars()[parameter];\n }\n return urlparameter;\n },\n\n /**\n * add parameter to URL\n * @param {string} paramKey key parameter\n * @param {string} paramKalue value of parameter\n */\n insertURLParam: function (paramKey, paramKalue) {\n let key = encodeURIComponent(paramKey);\n let value = encodeURIComponent(paramKalue);\n\n // kvp looks like ['key1=value1', 'key2=value2', ...]\n var kvp = document.location.search.substr(1).split('&');\n let i = 0;\n for (; i < kvp.length; i++) {\n if (kvp[i].startsWith(key + '=')) {\n let pair = kvp[i].split('=');\n pair[1] = value;\n kvp[i] = pair.join('=');\n break;\n }\n }\n if (i >= kvp.length) {\n kvp[kvp.length] = [key, value].join('=');\n }\n // can return this or...\n let params = kvp.join('&');\n // update current browser state\n let baseUrl = window.location.href.split('?')[0];\n window.history.replaceState({}, document.title, (baseUrl + '?' + params));\n },\n\n /**\n * send gtmData based on Pro Subscription Auto Renewal result.\n * @param {string} fromPage - page the event coming from.\n */\n handleProSubscriptionAutoRenewalEvents: function (fromPage) {\n let statusCode = this.getUrlParam('statusCode', '');\n let notificationResource = this.getUrlParam('notificationResource', '');\n if (statusCode.length > 0) {\n let subscriptionResult = '';\n let eventAction = '';\n if (statusCode === 'success') {\n subscriptionResult = statusCode;\n } else if (statusCode === 'danger') {\n subscriptionResult = 'fail';\n } else if (fromPage && fromPage === 'ManagePowerUpRewards' && statusCode === 'info') {\n subscriptionResult = 'success';\n }\n\n if (notificationResource.indexOf('subscription%2esignup') > -1 || notificationResource.indexOf('subscription.signup') > -1) {\n eventAction = 'sign_up';\n } else if (notificationResource.indexOf('subscription%2ecancel') > -1 || notificationResource.indexOf('subscription.cancel') > -1) {\n eventAction = 'cancel';\n } else if (notificationResource.indexOf('subscription%2eupdate') > -1 || notificationResource.indexOf('subscription.update') > -1) {\n eventAction = 'update';\n }\n\n if (subscriptionResult.length > 0 && eventAction.length > 0) {\n var gtmData = {\n event: 'Pro Auto-renewal',\n eventDetails: {\n eventCategory: 'pro_autorenewal',\n eventAction: eventAction,\n eventLabel: subscriptionResult\n }\n };\n $('body').trigger('pro:pro_autorenewal', gtmData);\n }\n }\n }\n};\n\nmodule.exports = utils;\n","'use strict';\n\n/* global grecaptcha */\n\n/**\n * resets ReCaptcha\n */\nfunction resetReCaptcha() {\n if (window.grecaptcha) grecaptcha.reset();\n}\n\nmodule.exports = {\n methods: {\n resetReCaptcha: resetReCaptcha\n }\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","'use strict';\n\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('./login/login'));\n processInclude(require('./accertify'));\n});\n"],"names":[],"sourceRoot":""}