>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return kValue.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return kValue;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return undefined.\r\n return undefined;\r\n }\r\n });\r\n}\r\n","if (typeof String.prototype.endsWith !== 'function') {\r\n String.prototype.endsWith = function (suffix) {\r\n return this.indexOf(suffix, this.length - suffix.length) !== -1;\r\n };\r\n}\r\n","function htmlDecode(input) {\r\n var e = document.createElement('div');\r\n e.innerHTML = input;\r\n return e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\r\n}","/* IE8 Dropdown width issue fix */\r\nfunction SetWidthToAuto(drpLst) {\r\n drpLst.style.width = 'auto';\r\n}","/* IE8 Dropdown width issue fix */\r\nfunction ResetWidth(drpLst) {\r\n drpLst.style.width = '150px';\r\n}","function GetCurrency(value) {\r\n return currencyFormat(value, \"c\");\r\n}\r\n\r\nfunction getCurrencyWithoutDecimalPlaces(value) {\r\n return currencyFormat(value, \"c0\");\r\n}\r\n\r\nfunction currencyFormat(value, format) {\r\n if (!kendo.cultures[userSettings.currentCurrencyCode]) {\r\n userSettings.currentCurrencyCode = \"de-DE\";\r\n }\r\n kendo.culture(userSettings.currentCurrencyCode);\r\n var result = kendo.toString(value * userSettings.currentCurrencyMultiplicator, format);\r\n kendo.culture(userSettings.currentCulture);\r\n return result;\r\n}\r\n","(function ($) {\r\n\r\n /**\r\n * @function\r\n * @property {object} jQuery plugin which runs handler function once specified element is inserted into the DOM\r\n * @param {function} handler A function to execute at the time when the element is inserted\r\n * @param {bool} shouldRunHandlerOnce Optional: if true, handler is unbound after its first invocation\r\n * @example $(selector).waitUntilExists(function);\r\n */\r\n\r\n $.fn.waitUntilExists = function (handler, shouldRunHandlerOnce, isChild) {\r\n var found = 'found';\r\n var $this = $(this.selector);\r\n var $elements = $this.not(function () { return $(this).data(found); }).each(handler).data(found, true);\r\n\r\n if (!isChild) {\r\n (window.waitUntilExists_Intervals = window.waitUntilExists_Intervals || {})[this.selector] =\r\n window.setInterval(function () { $this.waitUntilExists(handler, shouldRunHandlerOnce, true); }, 500)\r\n ;\r\n }\r\n else if (shouldRunHandlerOnce && $elements.length) {\r\n window.clearInterval(window.waitUntilExists_Intervals[this.selector]);\r\n }\r\n\r\n return $this;\r\n }\r\n\r\n}(jQuery));","(function () {\r\n var _waitUntilExists = {\r\n pending_functions: [],\r\n loop_and_call: function () {\r\n if (!_waitUntilExists.pending_functions.length) { return }\r\n for (var i = 0; i < _waitUntilExists.pending_functions.length; i++) {\r\n var obj = _waitUntilExists.pending_functions[i];\r\n var resolution = document.getElementById(obj.id);\r\n if (obj.id == document) {\r\n resolution = document.body;\r\n }\r\n if (resolution) {\r\n var _f = obj.f;\r\n _waitUntilExists.pending_functions.splice(i, 1)\r\n if (obj.c == \"itself\") { obj.c = resolution }\r\n _f.call(obj.c)\r\n i--\r\n }\r\n }\r\n },\r\n global_interval: setInterval(function () { _waitUntilExists.loop_and_call() }, 5)\r\n }\r\n if (document.addEventListener) {\r\n document.addEventListener(\"DOMNodeInserted\", _waitUntilExists.loop_and_call, false);\r\n clearInterval(_waitUntilExists.global_interval);\r\n }\r\n window.waitUntilExists = function (id, the_function, context) {\r\n context = context || window\r\n if (typeof id == \"function\") { context = the_function; the_function = id; id = document }\r\n _waitUntilExists.pending_functions.push({ f: the_function, id: id, c: context })\r\n }\r\n waitUntilExists.stop = function (id, f) {\r\n for (var i = 0; i < _waitUntilExists.pending_functions.length; i++) {\r\n if (_waitUntilExists.pending_functions[i].id == id && (typeof f == \"undefined\" || _waitUntilExists.pending_functions[i].f == f)) {\r\n _waitUntilExists.pending_functions.splice(i, 1)\r\n }\r\n }\r\n }\r\n waitUntilExists.stopAll = function () {\r\n _waitUntilExists.pending_functions = []\r\n }\r\n})();","// Initialize MegaFlyout\r\n(function () {\r\n $('.closeFlyout').click(function (e) {\r\n $('.megaflyout').fadeOut(200);\r\n });\r\n\r\n var hoverFlyoutConfig = {\r\n over: function () {\r\n $(this).find(\".megaflyout\").fadeIn(200);\r\n },\r\n timeout: 500,\r\n out: function () {\r\n $(this).find(\".megaflyout\").fadeOut(200);\r\n }\r\n };\r\n\r\n $(\"#adminnavbtn\").hoverIntent(hoverFlyoutConfig);\r\n $(\"header nav >ul >li, .mainnav li\").hoverIntent(hoverFlyoutConfig);\r\n $(\".badges li\").hoverIntent(hoverFlyoutConfig);\r\n $(\"#newsletter\").hoverIntent(hoverFlyoutConfig);\r\n})();","// Initialize Newsletter\r\nvar newsletterInfo = $.ajax({\r\n url: ajaxUrls.newsletter.Info,\r\n type: 'GET',\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8'\r\n});\r\n\r\n(function () {\r\n var visibleHeader = $('div.container > header').length > 0 ? $('div.container > header') : $('div.container > div.header');\r\n\r\n var newsletterModel = new NewsletterModel();\r\n\r\n newsletterInfo.done(function (info) {\r\n newsletterModel.Email(info.Email);\r\n newsletterModel.UserHasNewsletter(info.UserHasNewsletter);\r\n }).fail(function (err) {\r\n if (err && err.Message) console.error(\"shop.common.js - Newsletter/Info - Exception: \" + err.Message + \"\\n \" + err.StackTrace);\r\n alerts.error();\r\n });\r\n if (visibleHeader.length > 0 && visibleHeader.find(\"#newsletter\").length > 0) {\r\n ko.applyBindings(newsletterModel, visibleHeader.find('#newsletter')[0]);\r\n }\r\n\r\n $(\"#btnCancelNewsletter\").click(function () {\r\n $(\"#newsletter .formcontent\").html(\"\");\r\n });\r\n\r\n $(\"*#btnAddNewsletter\").click(function () {\r\n var data = ko.mapping.toJSON(newsletterModel);\r\n newsletterModel.Loading(true);\r\n $.ajax({\r\n url: ajaxUrls.newsletter.AddUserToNewsletter,\r\n type: 'POST',\r\n data: data,\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8'\r\n }).done(function (returnArr) {\r\n newsletterModel.Errors.removeAll();\r\n if (!returnArr.Success) {\r\n $.each(returnArr.Errors, function (index, item) {\r\n newsletterModel.Errors.push(item);\r\n });\r\n } else {\r\n newsletterModel.Saved(true);\r\n // redirect to confirmation page\r\n window.location.pathname = ajaxUrls.newsletter.Confirmation;\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n }).always(function () {\r\n newsletterModel.Loading(false);\r\n });\r\n });\r\n})();","(function () {\r\n $(\".content\").on(\"click\", \".confirmation-dialog\", function (e) {\r\n e.preventDefault();\r\n var clickedElement = $(this);\r\n\r\n var kendoWindow = $(\"\").kendoWindow({\r\n title: resourceHelper.ConfirmConfirmation.DialogTitle,\r\n resizable: false,\r\n modal: true,\r\n open: function() {\r\n maximizeKendoWindowOnMobile(this);\r\n }\r\n });\r\n\r\n kendoWindow.on(\"click\", \".confirm, .cancel\", function () {\r\n if ($(this).hasClass(\"cancel\")) {\r\n kendoWindow.data(\"kendoWindow\").close();\r\n }\r\n });\r\n\r\n kendoWindow.data(\"kendoWindow\")\r\n .content($(document.getElementById(\"confirmation-window\")).html)\r\n .center().open();\r\n });\r\n})();","(function () {\r\n // Will trigger the link if you click on the arrow\r\n $('.FAQ h3').click(function (e) {\r\n $(\"a\", $(this)).click();\r\n });\r\n $('.FAQ h3 a').click(function (e) {\r\n e.stopPropagation();\r\n window.location.href = $(this).attr('href');\r\n });\r\n})();","(function () {\r\n /* apply alternating layout to css */\r\n $('.ProductsAndCampaigns > ul > li:nth-child(even)').addClass('alternate');\r\n})();","var asyncLoop = function (o) {\r\n var i = -1;\r\n\r\n var loop = function () {\r\n i++;\r\n if (i == o.length) { o.callback(); return; }\r\n o.functionToLoop(loop, i);\r\n };\r\n loop();//init\r\n};","function GetTranslateableResource(resource) {\r\n if (!resource) return \"\";\r\n return resource.ResourceValue;\r\n}\r\n","/* slider bindings*/\r\nvar applyMediaBoxSlider = function () {\r\n $.each($('.bxslider'), function () {\r\n $(this).show().bxSlider({\r\n minSlides: $(this).data('min-slides') || 4,\r\n maxSlides: $(this).data('max-slides') || 5,\r\n slideWidth: $(this).data('bx-width') || 215,\r\n slideMargin: 10,\r\n adaptiveHeight: true,\r\n preloadImages: 'visible',\r\n nextText: '',\r\n prevText: '',\r\n //auto: true,\r\n pager: $.hasData(this, 'pager') ? $(this).data('pager') : ($('li', this).length > ($(this).data('max-slides') || 4))\r\n });\r\n $('a', this).attr(\"data-fancybox-group\", \"fancy-productImageSlider\").addClass(\"fancy-productImageSlider\");\r\n });\r\n};\r\n\r\n// init slider first time\r\napplyMediaBoxSlider();\r\n\r\n// reinit after translator submits it's contents\r\n$(document).on('translatorContentReloaded', '.mediaBoxContainer', function (e) {\r\n applyMediaBoxSlider();\r\n});","/* slider bindings*/\r\nvar applyFancyboxPictures = function () {\r\n $.each($(\"a.open_mediabox_window\"), function () {\r\n $(this).find('img').parent().attr(\"data-fancybox-group\", \"fancy-productImageSlider\").addClass(\"fancy-productImageSlider\");\r\n });\r\n};\r\n\r\n// init fancybox first time\r\napplyFancyboxPictures();\r\n$(document).on('translatorContentReloaded', function (e) {\r\n applyFancyboxPictures();\r\n});","var $cookieBanner = $('#cookieBanner');\r\n!function () {\r\n var hint = $.cookie('shopCookieAnalyticsHint');\r\n\r\n if ($cookieBanner.length > 0 && !hint) {\r\n var close = $cookieBanner.find('.close');\r\n $cookieBanner.show();\r\n\r\n close.on('click', function () {\r\n $.cookie('shopCookieAnalyticsHint', 'accepted', {\r\n expires: 365\r\n });\r\n $cookieBanner.animate({\r\n 'margin-top': -$cookieBanner.outerHeight()\r\n }, 300, function () {\r\n $cookieBanner.hide();\r\n $cookieBanner = undefined;\r\n });\r\n $('body').animate({\r\n 'padding-top': 0\r\n }, 300)\r\n .removeClass('cookieHint');\r\n });\r\n }\r\n}();","(function () {\r\n\r\n // get anchor which could be clicked for the current site\r\n var anchorList = $('a', '.footer').filter(function (item) {\r\n // keep the fragment since it can make pages look completly different\r\n var currentPath = location.href.replace(location.origin, '').toLowerCase(),\r\n currentHref = (this.href || '').replace(location.origin, '').toLowerCase();\r\n\r\n return currentHref === currentPath;\r\n });\r\n\r\n // mark them as selected\r\n anchorList.addClass('selected');\r\n\r\n})();","// scroll the page smoothly to certain element\r\nfunction scrollTo(element, complFunc) {\r\n var hasStickyHeader = $('body').hasClass('posifixed');\r\n var stickyHeaderOffset = hasStickyHeader ? $('header').outerHeight() : 0;\r\n\r\n var position = $(element).offset().top - stickyHeaderOffset;\r\n var options = {\r\n scrollTop: position\r\n };\r\n $('html, body').animate(options, 700, complFunc);\r\n}","//A div with the id 'lz_overlay_preview' only seems to be added when the chat is actually available\r\nvar liveZillaUsedIds = ['lz_overlay_chat', 'lz_overlay_wm'];\r\nvar idsAddedSoFar = 0;\r\n\r\nvar observer = new MutationObserver(liveZillaLoaded);\r\nobserver.observe($('body')[0], {childList: true});\r\n\r\nfunction liveZillaLoaded(mutations) {\r\n mutations.forEach(function(mutation) {\r\n $(mutation.addedNodes).each(function() {\r\n var addedNode = $(this);\r\n if (liveZillaUsedIds.indexOf(addedNode.attr('id')) > -1) {\r\n idsAddedSoFar++;\r\n }\r\n if (idsAddedSoFar === liveZillaUsedIds.length) {\r\n $(document).trigger('liveZillaLoaded');\r\n observer.disconnect();\r\n }\r\n });\r\n });\r\n}\r\n","var scrollToTop = $(\".scrollToTop\");\r\n//https://stackoverflow.com/a/19738288\r\nvar page = $(\"html, body\");\r\nvar liveZillaButtonsPanel = $();\r\nvar liveZillaChat = $();\r\nvar liveZillaPointer = $();\r\n\r\nscrollToTop.click(function () {\r\n page.on(\"scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove\", function () {\r\n page.stop();\r\n });\r\n page.stop().animate(\r\n {\r\n scrollTop: $(\"body\").offset().top\r\n },\r\n 1e3,\r\n function () {\r\n page.off(\"scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove\");\r\n }\r\n );\r\n return false;\r\n});\r\n\r\nfunction scrollDownFunction() {\r\n if ($(window).scrollTop() > 100) {\r\n scrollToTop.addClass(\"showScrollButton\");\r\n liveZillaButtonsPanel.css(\"margin-bottom\", \"53px\");\r\n liveZillaChat.css(\"margin-bottom\", \"53px\");\r\n liveZillaPointer.css(\"margin-bottom\", \"50px\");\r\n } else {\r\n scrollToTop.removeClass(\"showScrollButton\");\r\n liveZillaButtonsPanel.css(\"margin-bottom\", \"3px\");\r\n liveZillaChat.css(\"margin-bottom\", \"3px\");\r\n liveZillaPointer.css(\"margin-bottom\", \"\");\r\n }\r\n}\r\n\r\nwindow.onscroll = scrollDownFunction;\r\n\r\n$(document).on('liveZillaLoaded', function() {\r\n liveZillaButtonsPanel = $(\"#lz_overlay_wm\");\r\n liveZillaButtonsPanel.css(\"transition\", \"margin-bottom 0.5s ease-in\");\r\n liveZillaChat = $(\"#lz_overlay_chat\");\r\n liveZillaChat.css(\"transition\", \"margin-bottom 0.5s ease-in\");\r\n liveZillaPointer = $('#lz_chat_overlay_pointer_h');\r\n liveZillaPointer.css(\"transition\", \"margin-bottom 0.5s ease-in\");\r\n scrollDownFunction();\r\n});\r\n","function retry(count, delay, callback, deferred, currentTry) {\r\n deferred = deferred || $.Deferred();\r\n currentTry = currentTry || 0;\r\n\r\n if (currentTry < count) {\r\n setTimeout(function () {\r\n\r\n var result = callback(deferred);\r\n result.always(function (result) {\r\n if (result !== \"true\") {\r\n currentTry++;\r\n retry(count, delay, callback, deferred, currentTry);\r\n }\r\n });\r\n\r\n }, 2000);\r\n } else {\r\n deferred.reject();\r\n }\r\n\r\n return deferred.promise();\r\n}","$(document).ready(function () { \r\n $(\".fancy-productImageSlider\").fancybox({\r\n 'padding': 0,\r\n 'transitionIn': 'none',\r\n 'transitionOut': 'none',\r\n 'arrows': true,\r\n helpers: {\r\n media: true\r\n },\r\n beforeLoad: function () {\r\n (this.$thumb.context.href.indexOf(\"youtube\") >= 0) ? this.type = \"iframe\" : this.type = this.type;\r\n },\r\n caption: function () {\r\n return getCaption(this);\r\n }\r\n });\r\n\r\n $(\".catalogeProductImg > a\").fancybox({\r\n caption: function () {\r\n return getCaption(this);\r\n }\r\n });\r\n \r\n var getCaption = function(element) {\r\n return element.find('img').attr('alt');\r\n };\r\n});\r\n","function maximizeKendoWindowOnMobile(kendoWindow) {\r\n // For small screens, maximize the window when it is shown.\r\n var $window = $(window);\r\n if ($window.width() < 875 || $window.height() < 600) {\r\n kendoWindow.maximize();\r\n }\r\n}","function countryHasStateProvinceCode(countryId) {\r\n let countryIdAsString = countryId;\r\n if (typeof countryId === \"number\") {\r\n countryIdAsString = countryId + \"\";\r\n }\r\n return countryIdAsString === constants.countryIds.UnitedStates || countryIdAsString === constants.countryIds.Canada;\r\n}\r\n","//These extenders try to mimic Knockout.Validation. Knockout.Validation is not used because the 'isValid' method, that is added to every field, that should be\r\n//validated, is not an observable. For that reason you cannot use it in Knockout bindings. Even if that would be the case, you would not have a way to trigger\r\n//the validation.\r\n\r\nko.extenders.required = function(target, options) {\r\n return validateOnlyIfForbiddingEmptyValue(target, options, function(val, required) {\r\n required = getValueIfObservable(required);\r\n if (!required) {\r\n return true;\r\n }\r\n if (typeof val === \"string\" && val.trim() !== \"\") {\r\n return true;\r\n }\r\n if (typeof val === \"boolean\" && val === true) {\r\n return true;\r\n }\r\n if (typeof val === \"number\" && val >= 0) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n};\r\n\r\nko.extenders.email = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, validateEmail) {\r\n validateEmail = getValueIfObservable(validateEmail);\r\n if (!validateEmail) {\r\n return true;\r\n }\r\n return isValidEmailAddress(val);\r\n });\r\n};\r\n\r\nko.extenders.min = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, minValue) {\r\n if (!isNumber(val)) {\r\n return false;\r\n }\r\n minValue = getValueIfObservable(minValue);\r\n return parseFloat(val) >= minValue;\r\n });\r\n};\r\n\r\nko.extenders.max = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, maxValue) {\r\n if (!isNumber(val)) {\r\n return false;\r\n }\r\n maxValue = getValueIfObservable(maxValue);\r\n return parseFloat(val) <= maxValue;\r\n });\r\n};\r\n\r\nko.extenders.minLength = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, minLength) {\r\n minLength = getValueIfObservable(minLength);\r\n return val.length >= minLength;\r\n });\r\n};\r\n\r\nko.extenders.equal = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, otherValue) {\r\n otherValue = getValueIfObservable(otherValue);\r\n return val === otherValue;\r\n });\r\n};\r\n\r\nko.extenders.beforeDate = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, latestPossibleDate) {\r\n var valueAsDate = parseDate(val);\r\n if (isNaN(valueAsDate)) {\r\n return false;\r\n }\r\n latestPossibleDate = getValueIfObservable(latestPossibleDate);\r\n return valueAsDate <= latestPossibleDate;\r\n });\r\n};\r\n\r\nko.extenders.validation = function(target, options) {\r\n return validateOnlyIfAllowingEmptyValue(target, options, function(val, validationObject) {\r\n return validationObject.validator(val);\r\n });\r\n};\r\n\r\nfunction validateOnlyIfForbiddingEmptyValue(target, options, validationFunction) {\r\n return validateOnlyIf(target, options, validationFunction, false);\r\n}\r\n\r\nfunction validateOnlyIfAllowingEmptyValue(target, options, validationFunction) {\r\n return validateOnlyIf(target, options, validationFunction, true);\r\n}\r\n\r\nfunction validateOnlyIf(target, options, validationFunction, allowEmptyValue) {\r\n setupTarget(target, function(val) {\r\n var executeValidation = evaluateOnlyIf(options.onlyIf);\r\n if (!executeValidation) {\r\n return true;\r\n }\r\n if (allowEmptyValue && val === \"\") {\r\n return true;\r\n }\r\n var params = (typeof options.params === \"undefined\") ? options : options.params;\r\n var validationResult = validationFunction(val, params);\r\n target.hasError(!validationResult);\r\n return validationResult;\r\n });\r\n return target;\r\n}\r\n\r\nfunction setupTarget(target, validateFunction) {\r\n target.hasError = ko.observable(false);\r\n if (!Array.isArray(target.validateFunctions)) {\r\n target.validateFunctions = [];\r\n target.validate = function(val) {\r\n for (var i = 0; i < target.validateFunctions.length; i++) {\r\n var validateFunction = target.validateFunctions[i];\r\n var validateFunctionResult = validateFunction(val);\r\n if (!validateFunctionResult) {\r\n return;\r\n }\r\n }\r\n };\r\n target.subscribe(target.validate);\r\n }\r\n target.validateFunctions.push(validateFunction);\r\n}\r\n\r\nfunction evaluateOnlyIf(onlyIf) {\r\n if (typeof onlyIf !== \"function\") {\r\n return true;\r\n }\r\n return onlyIf();\r\n}\r\n\r\nfunction getValueIfObservable(val) {\r\n if (typeof val === \"function\") {\r\n return val();\r\n }\r\n return val;\r\n}\r\n\r\nfunction isNumber(value) {\r\n return !isNaN(parseFloat(value)) && isFinite(value);\r\n}\r\n\r\n//Months as words are not supported. Times are not supported. Years must be formatted as YYYY. Separators must be \"-\", \".\" or \"/\".\r\nfunction parseDate(dateString) {\r\n var intMatches = /(\\d+)\\D(\\d+)\\D(\\d+)/.exec(dateString.trim());\r\n //length > 4 because match[0] is the complete match\r\n if (intMatches == null || intMatches.length !== 4) {\r\n return NaN;\r\n }\r\n\r\n var day = undefined;\r\n var dayPosition = undefined;\r\n var year = undefined;\r\n var yearPosition = undefined;\r\n var datePartsInOrder = [parseInt(intMatches[1]), parseInt(intMatches[2]), parseInt(intMatches[3])];\r\n for (var i = 0; i < datePartsInOrder.length; i++) {\r\n var currentDatePart = datePartsInOrder[i];\r\n if (currentDatePart > 999) {\r\n if (year !== undefined) {\r\n return NaN;\r\n }\r\n year = currentDatePart;\r\n yearPosition = i;\r\n }\r\n if (currentDatePart > 12 && currentDatePart <= 31) {\r\n if (day !== undefined) {\r\n return NaN;\r\n }\r\n day = currentDatePart;\r\n dayPosition = i;\r\n }\r\n }\r\n\r\n //No 4 digit date part or year in the middle\r\n if (year === undefined || yearPosition === 1) {\r\n return NaN;\r\n }\r\n //We found the day, because a date part was between 13 and 31 and hence must be the day\r\n if (day !== undefined) {\r\n var month;\r\n for (var i = 0; i < datePartsInOrder.length; i++) {\r\n if (i !== dayPosition && i !== yearPosition) {\r\n month = datePartsInOrder[i];\r\n }\r\n }\r\n return createDate(year, month, day);\r\n }\r\n //We did not find the day but the day part and the month part are equal\r\n if (yearPosition === 0 && datePartsInOrder[1] === datePartsInOrder[2] || yearPosition === 2 && datePartsInOrder[0] === datePartsInOrder[1]) {\r\n return createDate(year, datePartsInOrder[1], datePartsInOrder[1]);\r\n }\r\n\r\n var uniqueSeparators = getDateSeparators(dateString);\r\n //Date with different separators\r\n if (uniqueSeparators.length !== 1) {\r\n return NaN;\r\n }\r\n var separator = uniqueSeparators[0];\r\n if (yearPosition === 0) {\r\n //i.e. yyyy-mm-dd or yyyy.mm.yy or yyyy/mm/dd - sorry Kazakhstan; apparently dates are sometimes written yyyy.dd.mm there\r\n return createDate(year, datePartsInOrder[1], datePartsInOrder[2]);\r\n } else if (yearPosition === 2) {\r\n if (separator === \"-\" || separator === \".\") {\r\n //i.e. dd-mm-yyyy or dd.mm.yyyy\r\n return createDate(year, datePartsInOrder[1], datePartsInOrder[0]);\r\n } else if (separator === \"/\") {\r\n //i.e. mm/dd/yyyy\r\n return createDate(year, datePartsInOrder[0], datePartsInOrder[1]);\r\n }\r\n }\r\n return NaN;\r\n}\r\n\r\nfunction getDateSeparators(dateString) {\r\n var separatorMatch = /(\\D)/.exec(dateString);\r\n var separatorMatchesArray = [];\r\n for (var i = 1; i < separatorMatch.length; i++) {\r\n separatorMatchesArray.push(separatorMatch[i]);\r\n }\r\n var uniqueSeparators = separatorMatchesArray.filter(function(value, index, self) {\r\n return self.indexOf(value) === index;\r\n })\r\n return uniqueSeparators;\r\n}\r\n\r\nfunction createDate(year, month, day) {\r\n var monthIndex = month - 1;\r\n var createdDate = new Date(year, monthIndex, day);\r\n //Dates in JavaScript are lenient. 30.02.2020 is automatically converted to 01.03.2020.\r\n //So we check if the date after creation has the same properties that we passed initially.\r\n if (createdDate.getFullYear() !== year || createdDate.getMonth() !== monthIndex || createdDate.getDate() !== day) {\r\n return NaN;\r\n }\r\n return createdDate;\r\n}\r\n\r\nfunction isValidEmailAddress(email) {\r\n var re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(email);\r\n}\r\n","window.onerror = myErrHandler;\r\nvar errorReportet = false;\r\nfunction myErrHandler(message, url, line) {\r\n //alert(message);\r\n try {\r\n if (!errorReportet) {\r\n $.ajax({\r\n cache: false,\r\n type: \"post\",\r\n data: {\r\n ErrorMessage: message,\r\n Url: url,\r\n Line: line,\r\n Browser: navigator.userAgent\r\n },\r\n url: ajaxUrls.logging.index,\r\n async: true\r\n });\r\n }\r\n errorReportet = true;\r\n return false;\r\n } catch (e) {\r\n\r\n }\r\n return false;\r\n}\r\n","/* ========================================================================\r\n * Bootstrap: alert.js v3.3.5\r\n * http://getbootstrap.com/javascript/#alerts\r\n * ========================================================================\r\n * Copyright 2011-2015 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n ;;\r\n\r\n // ALERT CLASS DEFINITION\r\n // ======================\r\n\r\n var dismiss = '[data-dismiss=\"alert\"]'\r\n var Alert = function (el) {\r\n $(el).on('click', dismiss, this.close)\r\n }\r\n\r\n Alert.VERSION = '3.3.5'\r\n\r\n Alert.TRANSITION_DURATION = 150\r\n\r\n Alert.prototype.close = function (e) {\r\n var $this = $(this)\r\n var selector = $this.attr('data-target')\r\n\r\n if (!selector) {\r\n selector = $this.attr('href')\r\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\r\n }\r\n\r\n var $parent = $(selector)\r\n\r\n if (e) e.preventDefault()\r\n\r\n if (!$parent.length) {\r\n $parent = $this.closest('.alert')\r\n }\r\n\r\n $parent.trigger(e = $.Event('close.bs.alert'))\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $parent.removeClass('in')\r\n\r\n function removeElement() {\r\n // detach from parent, fire event then clean up data\r\n $parent.detach().trigger('closed.bs.alert').remove()\r\n }\r\n\r\n $.support.transition && $parent.hasClass('fade') ?\r\n $parent\r\n .one('bsTransitionEnd', removeElement)\r\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\r\n removeElement()\r\n }\r\n\r\n\r\n // ALERT PLUGIN DEFINITION\r\n // =======================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.alert')\r\n\r\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\r\n if (typeof option == 'string') data[option].call($this)\r\n })\r\n }\r\n\r\n var old = $.fn.alert\r\n\r\n $.fn.alert = Plugin\r\n $.fn.alert.Constructor = Alert\r\n\r\n\r\n // ALERT NO CONFLICT\r\n // =================\r\n\r\n $.fn.alert.noConflict = function () {\r\n $.fn.alert = old\r\n return this\r\n }\r\n\r\n\r\n // ALERT DATA-API\r\n // ==============\r\n\r\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\r\n\r\n}(jQuery);\r\n\r\n(function () {\r\n\r\n var alertContainer = $(\".alert-container\");\r\n\r\n var defaultErrorMessage = alertContainer.data('default-error');\r\n var defaultSuccessMessage = alertContainer.data('default-success');\r\n\r\n var template = _.template(\"\" + \r\n\t\t\"\" +\r\n\t\t\"<%= message %>\" +\r\n\t\t\"
\");\r\n \r\n function showAlert(alert, options) {\r\n options = options || {};\r\n\r\n var alertElement = $(template(alert));\r\n alertContainer.append(alertElement);\r\n\r\n if (!options.preventFadeOut) {\r\n window.setTimeout(function () {\r\n alertElement.fadeOut();\r\n }, 6000);\r\n }\r\n\r\n if (options.onClose && typeof options.onClose === \"function\") {\r\n $('.close', alertElement).click(options.onClose);\r\n }\r\n }\r\n\r\n function success(message, options) {\r\n showAlert({ alertClass: \"alert-success\", message: message || defaultSuccessMessage }, options);\r\n }\r\n\r\n function info(message, options) {\r\n showAlert({ alertClass: \"alert-info\", message: message }, options);\r\n }\r\n\r\n function warning(message, options) {\r\n showAlert({ alertClass: \"alert-warning\", message: message }, options);\r\n }\r\n\r\n function error(message, options) {\r\n closeAnyOpenWindow();\r\n\r\n showAlert({ alertClass: \"alert-danger\", message: message || defaultErrorMessage }, options);\r\n }\r\n\r\n function closeAnyOpenWindow() {\r\n var windows = $(\".k-window-content\");\r\n if (windows.length > 0) {\r\n $(\".k-window-content\").data(\"kendoWindow\").close();\r\n }\r\n }\r\n\r\n var alertService = {\r\n showAlert: showAlert,\r\n success: success,\r\n info: info,\r\n warning: warning,\r\n error: error\r\n };\r\n\r\n window.alerts = alertService;\r\n})()","var shop = shop || {};\r\nshop.models = {};\r\n\r\nfunction NewsletterModel() {\r\n var self = this;\r\n\r\n self.Email = ko.observable();\r\n self.FirstName = ko.observable();\r\n self.LastName = ko.observable();\r\n self.SalutationId = ko.observable();\r\n self.TitleId = ko.observable();\r\n self.UserHasNewsletter = ko.observable();\r\n self.GoogleRecaptchaCode = ko.observable();\r\n\r\n self.Saved = ko.observable(false);\r\n self.Loading = ko.observable(false);\r\n\r\n self.Errors = ko.observableArray();\r\n}\r\n\r\nfunction ContactModel() {\r\n var self = this;\r\n\r\n self.SalutationId = ko.observable();\r\n self.TitleId = ko.observable();\r\n self.Firstname = ko.observable().extend({required: true});\r\n self.Lastname = ko.observable().extend({required: true});\r\n self.Company = ko.observable();\r\n self.Email = ko.observable().extend({required: true, email: true});\r\n self.Street = ko.observable().extend({required: true});\r\n self.ZipCode = ko.observable().extend({required: true});\r\n self.Country = ko.observable().extend({required: true});\r\n self.City = ko.observable().extend({required: true});\r\n self.Phone = ko.observable().extend({required: true});\r\n self.Fax = ko.observable();\r\n self.Request = ko.observable().extend({required: true});\r\n self.GoogleRecaptchaCode = ko.observable();\r\n\r\n self.SendingRequest = ko.observable(false);\r\n self.Errors = ko.observableArray();\r\n\r\n //subData\r\n self.FirstNameHasError = ko.observable(false);\r\n self.LastNameHasError = ko.observable(false);\r\n self.PhoneHasError = ko.observable(false);\r\n self.FaxHasError = ko.observable(false);\r\n self.EmailHasError = ko.observable(false);\r\n self.StreetHasError = ko.observable(false);\r\n self.CityHasError = ko.observable(false);\r\n self.ZipCodeHasError = ko.observable(false);\r\n self.CountryHasError = ko.observable(false);\r\n\r\n //computed\r\n self.FirstNameProxy = ko.computed({\r\n read: function () {\r\n return self.Firstname();\r\n },\r\n write: function (newFirstName) {\r\n if (newFirstName.length <= 35) {\r\n self.Firstname(newFirstName);\r\n self.FirstNameHasError(false);\r\n } else {\r\n self.FirstNameHasError(true);\r\n self.FirstNameProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.LastNameProxy = ko.computed({\r\n read: function () {\r\n return self.Lastname();\r\n },\r\n write: function (newLastName) {\r\n if (newLastName.length <= 35) {\r\n self.Lastname(newLastName);\r\n self.LastNameHasError(false);\r\n } else {\r\n self.LastNameHasError(true);\r\n self.LastNameProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.PhoneProxy = ko.computed({\r\n read: function () {\r\n return self.Phone();\r\n },\r\n write: function (newPhone) {\r\n if (newPhone.length <= 19) {\r\n self.Phone(newPhone);\r\n self.PhoneHasError(false);\r\n } else {\r\n self.PhoneHasError(true);\r\n self.PhoneProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.FaxProxy = ko.computed({\r\n read: function () {\r\n return self.Fax();\r\n },\r\n write: function (newFax) {\r\n if (newFax.length <= 15) {\r\n self.Fax(newFax);\r\n self.FaxHasError(false);\r\n } else {\r\n self.FaxHasError(true);\r\n self.FaxProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.EmailProxy = ko.computed({\r\n read: function () {\r\n return self.Email();\r\n },\r\n write: function (newEmail) {\r\n if (newEmail.length <= 50) {\r\n self.Email(newEmail);\r\n self.EmailHasError(false);\r\n } else {\r\n self.EmailHasError(true);\r\n self.EmailProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.StreetProxy = ko.computed({\r\n read: function () {\r\n return self.Street();\r\n },\r\n write: function (newStreet) {\r\n if (newStreet.length <= 35) {\r\n self.Street(newStreet);\r\n self.StreetHasError(false);\r\n } else {\r\n self.StreetHasError(true);\r\n self.StreetProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.CityProxy = ko.computed({\r\n read: function () {\r\n return self.City();\r\n },\r\n write: function (newCity) {\r\n if (newCity.length <= 30) {\r\n self.City(newCity);\r\n self.CityHasError(false);\r\n } else {\r\n self.CityHasError(true);\r\n self.CityProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n self.ZipCodeProxy = ko.computed({\r\n read: function () {\r\n return self.ZipCode();\r\n },\r\n write: function (newZipCode) {\r\n if (newZipCode.length <= 9) {\r\n self.ZipCode(newZipCode);\r\n self.ZipCodeHasError(false);\r\n } else {\r\n self.ZipCodeHasError(true);\r\n self.ZipCodeProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: self\r\n });\r\n\r\n //functions\r\n self.PopulateContactModel = function (jsonData) {\r\n if (jsonData) {\r\n self.Country(jsonData.Country);\r\n self.Company(jsonData.Company);\r\n self.Firstname(jsonData.FirstName);\r\n self.Lastname(jsonData.LastName);\r\n self.Street(jsonData.Street);\r\n self.ZipCode(jsonData.ZipCode);\r\n self.City(jsonData.City);\r\n self.Phone(jsonData.Phone);\r\n self.Email(jsonData.Email);\r\n self.Fax(jsonData.Fax);\r\n self.SalutationId(jsonData.SalutationId);\r\n }\r\n };\r\n\r\n self.IsValid = function () {\r\n var valid = true;\r\n var models = [\r\n self.Firstname,\r\n self.Lastname,\r\n self.Street,\r\n self.ZipCode,\r\n self.City,\r\n self.Phone,\r\n self.Email,\r\n self.Request,\r\n self.Country\r\n ];\r\n\r\n for (var i = 0; i < models.length; i++) {\r\n models[i].validate(models[i]());\r\n if (models[i].hasError()) {\r\n valid = false;\r\n }\r\n }\r\n return valid;\r\n };\r\n}\r\n\r\nvar AccessPointModel = function () {\r\n var that = this;\r\n\r\n that.Descriptor = \"shop.ordermodels.AccessPointModel\";\r\n //baseData\r\n that.ConsigneeName = ko.observable('');\r\n that.APName = ko.observable().extend({required: true});\r\n that.APDetails = ko.observable('');\r\n that.APStreet = ko.observable('');\r\n that.APZip = ko.observable('');\r\n that.APCity = ko.observable('');\r\n that.APCountry = ko.observable('');\r\n that.APCountryId = ko.observable('');\r\n that.ConsigneeEmail = ko.observable('');\r\n that.ConsigneeMobile = ko.observable('');\r\n that.APCountryCode = ko.observable('');\r\n that.APID = ko.observable('');\r\n that.ConsigneeCountryCode = ko.observable('');\r\n that.ConsigneeStreet = ko.observable('');\r\n that.ConsigneeCity = ko.observable('');\r\n that.ConsigneePhoneNumber = ko.observable('');\r\n\r\n};\r\n\r\nvar AddressModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.Descriptor = \"shop.models.AddressModel\";\r\n //baseData\r\n that.AddressId = ko.observable(undefined);\r\n that.CountryId = ko.observable().extend({required: true});\r\n that.Country = ko.observable('');\r\n that.StateProvinceCode = ko.observable('').extend({\r\n required: {\r\n params: true,\r\n onlyIf: function() {\r\n return countryHasStateProvinceCode(that.CountryId());\r\n }\r\n }\r\n });\r\n that.SalutationId = ko.observable();\r\n that.Salutation = ko.observable('');\r\n that.Company = ko.observable('');\r\n that.FirstName = ko.observable('').extend({required: true});\r\n that.LastName = ko.observable('').extend({required: true});\r\n that.Street = ko.observable('').extend({required: true});\r\n that.ZipCode = ko.observable('').extend({required: true});\r\n that.City = ko.observable('').extend({required: true});\r\n that.VatId = ko.observable('');\r\n that.ISO = ko.observable('');\r\n that.CMwSt = ko.observable('');\r\n that.DebitorNumber = ko.observable(0);\r\n that.Skonto = ko.observable(0);\r\n that.IsPrivateCustomerAddress = (pageModelHndl) ? ko.observable(pageModelHndl.IsPrivateCustomer) : ko.observable(false);\r\n that.Email = ko.observable('').extend({email: true});\r\n that.CommissionReceiverId = ko.observable();\r\n that.CommissionReceiver = ko.observable('');\r\n that.IsCountryUSA = ko.observable(false);\r\n that.PhoneNumber = ko.observable(\"\");\r\n\r\n //subData\r\n that.Cities = ko.observableArray([]);\r\n that.CreditData = ko.observable();\r\n\r\n that.EditMode = ko.observable(false);\r\n\r\n that.AdditionalAddressInformation = ko.observable(new AdditionalAddressInformationModel());\r\n\r\n //flags\r\n that.IsChangeInProgress = ko.observable(false);\r\n that.IsVatIdValid = ko.observable(true);\r\n that.IsVatIdRecommended = ko.observable(false);\r\n that.IsVatCheckInProgress = ko.observable(false);\r\n that.ShowVat = ko.observable(false);\r\n that.IsStateProvinceCodeRequired = ko.observable(false);\r\n that.FirstNameHasError = ko.observable(false);\r\n that.LastNameHasError = ko.observable(false);\r\n that.CompanyHasError = ko.observable(false);\r\n that.PhoneNumberHasError = ko.observable(false);\r\n that.StateProvinceCodeHasError = ko.observable(false);\r\n that.StreetHasError = ko.observable(false);\r\n that.CityHasError = ko.observable(false);\r\n that.ZipCodeHasError = ko.observable(false);\r\n that.EmailVisible = ko.observable(false);\r\n that.EmailHasError = ko.observable(false);\r\n that.DebitorNumberHasError = ko.observable(false);\r\n \r\n \r\n that.CountryCaption = ko.computed(function () {\r\n if (!that.CountryId()) {\r\n return constants.OptionTexts.SelectCountryOption;\r\n }\r\n }, that);\r\n that.SalutationCaption = ko.computed(function () {\r\n if (!that.SalutationId()) {\r\n return constants.OptionTexts.SelectSalutationOption;\r\n }\r\n }, that);\r\n\r\n that.FirstNameProxy = ko.computed({\r\n read: function () {\r\n return that.FirstName();\r\n },\r\n write: function (newFirstName) {\r\n if (newFirstName.length + that.LastName().length <= 35 || that.EditMode()) {\r\n that.FirstName(newFirstName);\r\n that.FirstNameHasError(false);\r\n } else {\r\n that.FirstNameHasError(true);\r\n that.FirstNameProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n that.LastNameProxy = ko.computed({\r\n read: function () {\r\n return that.LastName();\r\n },\r\n write: function (newLastName) {\r\n if (newLastName.length + that.FirstName().length <= 35 || that.EditMode()) {\r\n that.LastName(newLastName);\r\n that.LastNameHasError(false);\r\n } else {\r\n that.LastNameHasError(true);\r\n that.LastNameProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n that.CompanyProxy = ko.computed({\r\n read: function () {\r\n return that.Company();\r\n },\r\n write: function (newCompany) {\r\n if (newCompany.length <= 100 || that.EditMode()) {\r\n that.Company(newCompany);\r\n that.CompanyHasError(false);\r\n } else {\r\n that.CompanyHasError(true);\r\n that.CompanyProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n\r\n that.CompanyDisplayProxy = ko.computed({\r\n read: function () {\r\n return that.Company().length > 35 ? that.Company().substr(0, 32) + '...' : that.Company();\r\n },\r\n write: function (newCompany) {\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n\r\n that.PhoneNumberProxy = ko.computed({\r\n read: function () {\r\n return that.PhoneNumber();\r\n },\r\n write: function (newPhone) {\r\n var minLength = 1;\r\n if(that.IsCountryUSA()){\r\n minLength = 10;\r\n }\r\n if ((newPhone.length <= 19 && newPhone.length >= minLength) || that.EditMode()) {\r\n that.PhoneNumber(newPhone);\r\n that.PhoneNumberHasError(false);\r\n } else {\r\n that.PhoneNumberHasError(true);\r\n that.PhoneNumberProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n \r\n that.StreetProxy = ko.computed({\r\n read: function () {\r\n return that.Street();\r\n },\r\n write: function (newStreet) {\r\n if (newStreet.length <= 35 || that.EditMode()) {\r\n that.Street(newStreet);\r\n that.StreetHasError(false);\r\n } else {\r\n that.StreetHasError(true);\r\n that.StreetProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n \r\n that.CityProxy = ko.computed({\r\n read: function () {\r\n return that.City();\r\n },\r\n write: function (newCity) {\r\n if (newCity.length <= 30 || that.EditMode()) {\r\n that.City(newCity);\r\n that.CityHasError(false);\r\n } else {\r\n that.CityHasError(true);\r\n that.CityProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n \r\n that._ZipCodeProxy = ko.computed({\r\n read: function () {\r\n return that.ZipCode();\r\n },\r\n write: function (newZipCode) {\r\n if (newZipCode.length <= 9 || that.EditMode()) {\r\n that.ZipCode(newZipCode);\r\n that.ZipCodeHasError(false);\r\n } else {\r\n that.ZipCodeHasError(true);\r\n that._ZipCodeProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n \r\n that.StateProvinceCodeProxy = ko.computed({\r\n read: function () {\r\n return that.StateProvinceCode();\r\n },\r\n write: function (newStateProvinceCode) {\r\n if (newStateProvinceCode.length === 2 || that.EditMode()) {\r\n that.StateProvinceCode(newStateProvinceCode);\r\n that.StateProvinceCodeHasError(false);\r\n } else {\r\n that.StateProvinceCodeHasError(true);\r\n that.StateProvinceCode.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n\r\n that.EmailProxy = ko.computed({\r\n read: function () {\r\n return that.Email();\r\n },\r\n write: function (newEmail) {\r\n if (newEmail.length <= 50) {\r\n that.Email(newEmail);\r\n that.EmailHasError(false);\r\n } else {\r\n that.EmailHasError(true);\r\n that.EmailProxy.notifySubscribers();\r\n }\r\n },\r\n deferEvaluation: true,\r\n owner: that\r\n });\r\n \r\n that.DebitorNumberProxy = ko.computed({\r\n read: function () {\r\n return that.DebitorNumber();\r\n },\r\n write: function (newDebitorNumber) {\r\n if(newDebitorNumber >= 0) {\r\n that.DebitorNumber(newDebitorNumber)\r\n that.DebitorNumberHasError(false);\r\n } else {\r\n that.DebitorNumberHasError(true);\r\n that.DebitorNumber.notifySubscribers();\r\n }\r\n }\r\n });\r\n\r\n that.validate = function () {\r\n var valid = true;\r\n var models = [\r\n that.CountryId,\r\n that.FirstName,\r\n that.LastName,\r\n that.Street,\r\n that.ZipCode,\r\n that.City,\r\n that.StateProvinceCode,\r\n that.Email\r\n ];\r\n \r\n for (var i = 0; i < models.length; i++) {\r\n models[i].validate(models[i]());\r\n if (models[i].hasError()){\r\n valid = false;\r\n }\r\n }\r\n return valid;\r\n };\r\n\r\n //subscriptions\r\n that.VatId.subscribe(function (val) {\r\n if (val.length === 0) {\r\n that.IsVatIdValid(true);\r\n that.IsVatCheckInProgress(false);\r\n return;\r\n }\r\n\r\n var regexEuVatIds = /^(^$|(AT)U[0-9]{8}|(BE)0[0-9]{9}|(BG)[0-9]{9,10}|(CY)[0-9]{8}L|(CZ)[0-9]{8,10}|(DE)[0-9]{9}|(DK)[0-9]{8}|(EE)[0-9]{9}|(EL|GR)[0-9]{9}|(ES)[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)[0-9]{8}|(FR)[0-9A-Z]{2}[0-9]{9}|(GB)([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|(HU)[0-9]{8}|(IE)[0-9]S[0-9]{5}L|(IT)[0-9]{11}|(LT)([0-9]{9}|[0-9]{12})|(LU)[0-9]{8}|(LV)[0-9]{11}|(MT)[0-9]{8}|(NL)[0-9]{9}B[0-9]{2}|(PL)[0-9]{10}|(PT)[0-9]{9}|(RO)[0-9]{2,10}|(SE)[0-9]{12}|(SI)[0-9]{8}|(SK)[0-9]{10})$/;\r\n if (regexEuVatIds.test(val)) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: ajaxUrls.order.CheckVat,\r\n data: {vat: val}\r\n }).always(function (erg) {\r\n that.IsVatIdValid(erg.valid);\r\n that.IsVatCheckInProgress(false);\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n } else {\r\n that.IsVatIdValid(false);\r\n that.IsVatCheckInProgress(false);\r\n }\r\n }, this);\r\n\r\n that.CountryId.subscribe(function (val) {\r\n if (pageModelHndl && pageModelHndl.Countries) {\r\n var filterRequest = pageModelHndl.Countries().filter(function (country) {\r\n return country.CountryId() == val;\r\n });\r\n if (filterRequest[0]) {\r\n that.ISO(filterRequest[0].ISO());\r\n that.Country(filterRequest[0].CountryName());\r\n that.ShowVat(filterRequest[0].ISO() != pageModelHndl.DefaultCountryISO() && filterRequest[0].IsEU());\r\n that.IsStateProvinceCodeRequired(countryHasStateProvinceCode(filterRequest[0].CountryId()));\r\n that.IsCountryUSA(filterRequest[0].CountryId() === constants.countryIds.UnitedStates);\r\n }\r\n }\r\n }, that);\r\n\r\n that.SalutationId.subscribe(function (val) {\r\n if (pageModelHndl && pageModelHndl.Salutations) {\r\n var filterRequest = pageModelHndl.Salutations().filter(function (salutation) {\r\n return salutation.CountryId() == val;\r\n });\r\n if (filterRequest[0]) {\r\n that.Salutation(filterRequest[0].CountryName());\r\n }\r\n } else {\r\n that.Salutation($(\"#CustomAddressSalutation option:selected\").text());\r\n }\r\n }, that);\r\n\r\n that.CommissionReceiverId.subscribe(function (val) {\r\n if (pageModelHndl && pageModelHndl.CommissionReceivers) {\r\n var filterRequest = pageModelHndl.CommissionReceivers().filter(function (commissionreceiver) {\r\n return commissionreceiver.CommissionReceiverId === val;\r\n });\r\n if (filterRequest[0]) {\r\n that.CommissionReceiver(filterRequest[0].CommissionReceiverName());\r\n }\r\n } else {\r\n that.CommissionReceiver($('#CustomCommissionReceiver option:selected').text());\r\n }\r\n }, that);\r\n\r\n //functions\r\n that.PopulateAddressModel = function (address) {\r\n if (address) {\r\n that.AddressId(address.AddressId);\r\n that.IsPrivateCustomerAddress(address.IsPrivateCustomerAddress);\r\n that.SalutationId(address.SalutationId);\r\n that.CountryId(address.CountryId);\r\n that.Country(address.Country);\r\n that.StateProvinceCode(address.StateProvinceCode);\r\n that.CommissionReceiverId(address.CommissionReceiverId);\r\n\r\n that.ZipCode(address.ZipCode ? address.ZipCode : '');\r\n that.Country(address.Country ? address.Country : '');\r\n that.PhoneNumber(address.PhoneNumber ? address.PhoneNumber : '');\r\n\r\n\r\n that.AdditionalAddressInformation(new AdditionalAddressInformationModel());\r\n that.AdditionalAddressInformation().Populate(address);\r\n\r\n that.Skonto(address.Skonto);\r\n\r\n if (address.Salutation) {\r\n that.Salutation(address.Salutation);\r\n } else {\r\n that.Salutation('');\r\n }\r\n\r\n if (address.CommissionReceiver) {\r\n that.CommissionReceiver(address.CommissionReceiver);\r\n } else {\r\n that.CommissionReceiver('');\r\n }\r\n\r\n if (address.Company) {\r\n that.Company(address.Company);\r\n }\r\n\r\n if (address.FirstName) {\r\n that.FirstName(address.FirstName);\r\n }\r\n\r\n if (address.LastName) {\r\n that.LastName(address.LastName);\r\n }\r\n\r\n if (address.Street) {\r\n that.Street(address.Street);\r\n }\r\n\r\n if (address.VatId) {\r\n that.VatId(address.VatId);\r\n }\r\n\r\n if (address.City) {\r\n that.City(address.City);\r\n }\r\n\r\n if (address.CMwSt !== undefined && address.CMwSt != null) {\r\n that.CMwSt(address.CMwSt);\r\n }\r\n\r\n if (address.DebitorNumber && address.DebitorNumber > 0) {\r\n that.DebitorNumber(address.DebitorNumber);\r\n }\r\n\r\n if (address.Email) {\r\n that.Email(address.Email);\r\n }\r\n\r\n if (countryHasStateProvinceCode(address.CountryId)) {\r\n that.IsStateProvinceCodeRequired(true);\r\n \r\n if(address.CountryId === constants.countryIds.UnitedStates){\r\n that.IsCountryUSA(true);\r\n }\r\n } else {\r\n that.IsCountryUSA(false);\r\n that.IsStateProvinceCodeRequired(false);\r\n }\r\n\r\n if (address.IsEuCountry !== undefined) {\r\n that.ShowVat(address.IsEuCountry);\r\n } else {\r\n $.ajax({\r\n type: \"GET\",\r\n url: ajaxUrls.area.ajax.country.IsEuCountry,\r\n data: {id: address.CountryId}\r\n }).done(function (isEu) {\r\n that.ShowVat(isEu);\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n }\r\n }\r\n };\r\n};\r\n\r\nshop.models.AddressModel = AddressModel;\r\n\r\nvar CreditCardModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.CreditCardOwner = ko.observable('');\r\n that.CreditCardNumber = ko.observable('');\r\n that.CreditInstituteCode = ko.observable('');\r\n that.CreditInstituteName = ko.observable('');\r\n that.CreditIban = ko.observable('');\r\n that.CreditBic = ko.observable('');\r\n that.EditHasError = ko.observable(false);\r\n\r\n //proxy\r\n that.CreditCardNumberHasError = ko.observable(false);\r\n that.CreditCardNumberProxy = ko.computed({\r\n read: function () {\r\n return that.CreditCardNumber();\r\n },\r\n write: function (value) {\r\n that.CreditCardNumber(value);\r\n if (value.match(/^[0-9]*$|^$/)) {\r\n that.CreditCardNumberHasError(false);\r\n } else {\r\n that.CreditCardNumberHasError(true);\r\n }\r\n },\r\n deferEvaluation: false,\r\n owner: that\r\n });\r\n\r\n that.CreditInstituteCodeHasError = ko.observable(false);\r\n that.CreditInstituteCodeProxy = ko.computed({\r\n read: function () {\r\n return that.CreditInstituteCode();\r\n },\r\n write: function (value) {\r\n that.CreditInstituteCode(value);\r\n if (value.match(/^[0-9]*$|^$/)) {\r\n that.CreditInstituteCodeHasError(false);\r\n } else {\r\n that.CreditInstituteCodeHasError(true);\r\n }\r\n },\r\n deferEvaluation: false,\r\n owner: that\r\n });\r\n\r\n that.CreditIbanHasError = ko.observable(false);\r\n that.CreditIbanProxy = ko.computed({\r\n read: function () {\r\n return that.CreditIban();\r\n },\r\n write: function (value) {\r\n that.CreditIban(value);\r\n that.EditHasError(false);\r\n if (value !== \"\") {\r\n that.CreditIbanHasError(!IBAN.isValid(value));\r\n }\r\n },\r\n deferEvaluation: false,\r\n owner: that\r\n });\r\n\r\n that.CreditBicHasError = ko.observable(false);\r\n that.CreditBicProxy = ko.computed({\r\n read: function () {\r\n return that.CreditBic();\r\n },\r\n write: function (value) {\r\n that.CreditBic(value);\r\n that.EditHasError(false);\r\n if (value !== \"\") {\r\n that.CreditBicHasError(!BIC.isValid(value));\r\n }\r\n },\r\n deferEvaluation: false,\r\n owner: that\r\n });\r\n\r\n that.evaluateIban = function (e, args) {\r\n var value = args.currentTarget.value;\r\n if (value.length >= 15) {\r\n that.CreditIbanHasError(!IBAN.isValid(value));\r\n } else {\r\n that.CreditIbanHasError(true);\r\n }\r\n };\r\n\r\n that.evaluateBic = function (e, args) {\r\n var value = args.currentTarget.value;\r\n if (value.length >= 8) {\r\n that.CreditBicHasError(!BIC.isValid(value));\r\n } else {\r\n that.CreditBicHasError(true);\r\n }\r\n };\r\n\r\n //functions\r\n that.PopulateCreditCardModel = function (bankAccount) {\r\n that.CreditCardNumberHasError(false);\r\n that.CreditInstituteCodeHasError(false);\r\n that.CreditIbanHasError(false);\r\n that.CreditBicHasError(false);\r\n\r\n that.CreditCardOwner(bankAccount.AccountOwner);\r\n that.CreditCardNumber(bankAccount.AccountNumber);\r\n that.CreditInstituteCode(bankAccount.BankCode);\r\n that.CreditInstituteName(bankAccount.BankName);\r\n that.CreditIban(bankAccount.Iban);\r\n that.CreditBic(bankAccount.Bic);\r\n\r\n that.checkBankAccount();\r\n };\r\n\r\n // This must be set to \"null\" and will be changed after the \"CheckBankAccount\" ajax call.\r\n that.IsValid = ko.observable(null);\r\n that.IsIncomplete = ko.observable(false);\r\n\r\n that.validate = ko.computed(function () {\r\n // Minimum length to execute the ajax call.\r\n if (that.CreditIban().length >= 10 && that.CreditBic().length > 6) {\r\n if ($('input[name=PAYMENT]:checked').val() != 'DIRECT_DEBIT') {\r\n return true;\r\n }\r\n\r\n that.checkBankAccount();\r\n return true;\r\n }\r\n\r\n return false;\r\n }, that);\r\n\r\n that.checkBankAccount = function () {\r\n $.ajax({\r\n type: \"POST\",\r\n url: ajaxUrls.shoppingCart.CheckBankAccount,\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n data: ko.toJSON(ko.mapping.fromJS({iban: that.CreditIban(), bic: that.CreditBic()})),\r\n success: function (result) {\r\n that.IsValid(result.Success);\r\n if (result.BankOK) {\r\n that.IsIncomplete(false);\r\n } else {\r\n that.CreditInstituteName(\"\");\r\n }\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n};\r\n\r\nvar AddressCreditDataModel = function (pageModelHndl) {\r\n var that = this;\r\n ko.utils.extend(that, new CreditCardModel());\r\n\r\n that.AddressId = ko.observable();\r\n that.BankAccountId = ko.observable();\r\n that.CreditCardDataToEditHasError = ko.observable(false);\r\n that.CreditCardDataToEditErrorMessage = ko.observable('');\r\n\r\n that.IsSaving = ko.observable(false);\r\n\r\n that.GetBankAccountByAddressOrderReference = function (orderReference) {\r\n $.get(ajaxUrls.shoppingCart.GetBankAccountByOrderReference, {orderReference: orderReference}, function (data) {\r\n if (data.Success) {\r\n that.PopulateCreditCardModel(data.BankAccount);\r\n }\r\n that.AddressId(data.AddressId);\r\n that.BankAccountId(data.BankAccount.BankAccountId);\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n that.GetBankAccountByAddressId = function (addressId) {\r\n $.get(ajaxUrls.shoppingCart.GetBankAccountByAddressId, {id: addressId}, function (data) {\r\n if (data.Success) {\r\n that.PopulateCreditCardModel(data.BankAccount);\r\n that.BankAccountId(data.BankAccount.BankAccountId);\r\n }\r\n that.AddressId(addressId);\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n that.SaveCreditDataChanges = function () {\r\n var bankAccountIndicator = $(\"#BankAccountIndicator\");\r\n if (that.CreditIban() === \"\" || that.CreditBic() === \"\") {\r\n that.EditHasError(true);\r\n bankAccountIndicator\r\n .removeClass(\"ErrorIcon\")\r\n .removeClass(\"Loading\")\r\n .removeClass(\"ValidIcon\");\r\n bankAccountIndicator.show();\r\n bankAccountIndicator.css('display', 'inline-block');\r\n return false;\r\n } else {\r\n that.EditHasError(false);\r\n bankAccountIndicator\r\n .removeClass(\"ValidIcon\")\r\n .removeClass(\"ErrorIcon\")\r\n .addClass(\"Loading\");\r\n\r\n bankAccountIndicator.show();\r\n bankAccountIndicator.css('display', 'inline-block');\r\n }\r\n\r\n that.SaveBankAccount(function () {\r\n bankAccountIndicator.removeClass(\"Loading\").addClass(\"ValidIcon\");\r\n bankAccountIndicator.css('display', 'inline-block');\r\n }, function () {\r\n bankAccountIndicator.removeClass(\"Loading\").addClass(\"ErrorIcon\");\r\n bankAccountIndicator.css('display', 'inline-block');\r\n });\r\n };\r\n\r\n that.SaveBankAccount = function (successCallback, failureCallback) {\r\n that.IsSaving(true);\r\n $.post(ajaxUrls.shoppingCart.SetBankAccountForAddressId, {\r\n addressId: that.AddressId(),\r\n iban: that.CreditIban(),\r\n bic: that.CreditBic(),\r\n owner: that.CreditCardOwner()\r\n }, function (data) {\r\n that.IsSaving(false);\r\n if (data.Success) {\r\n successCallback();\r\n } else {\r\n failureCallback();\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n that.SaveOrderBankAccount = function (successCallback, failureCallback) {\r\n that.IsSaving(true);\r\n $.post(ajaxUrls.shoppingCart.SetBankAccountForOrder, {\r\n bankAccountId: that.BankAccountId(),\r\n iban: that.CreditIban(),\r\n bic: that.CreditBic(),\r\n owner: that.CreditCardOwner()\r\n }, function (data) {\r\n that.IsSaving(false);\r\n if (data.Success) {\r\n successCallback(that, data);\r\n } else {\r\n failureCallback(that, data);\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n};\r\n\r\nvar BillPayModel = function (pageModelHndl) {\r\n var that = this;\r\n that.UserAgreesToTerms = ko.observable(false);\r\n that.IsValidating = ko.observable(false);\r\n that.BirthdayHasError = ko.observable(false);\r\n that.BillPayOptionNetPrice = ko.observable(0);\r\n that.BillPayOptionGrossPrice = ko.observable(2);\r\n that.BillPayOptionVatAmount = ko.computed(function () {\r\n return that.BillPayOptionGrossPrice() - that.BillPayOptionNetPrice();\r\n });\r\n\r\n that.ValidBillPayCountries = ko.observableArray([]);\r\n\r\n that.MaxYearForBirthday = ko.computed(function () {\r\n var now = new Date();\r\n return new Date(now.getFullYear() - 18, now.getMonth(), now.getDate());\r\n });\r\n\r\n that.LegalFormCollection = ko.observableArray([]);\r\n\r\n that.FilteredLegalFormCollection = ko.computed(function () {\r\n\r\n var staticAvailableIdMap = [];\r\n var result = [];\r\n\r\n if (!pageModelHndl.IsPrivateCustomer()) {\r\n if (pageModelHndl.InvoiceAddress() !== undefined) {\r\n\r\n switch (pageModelHndl.InvoiceAddress().Country().CountryId()) {\r\n case 2: //Deutschland\r\n //ag, eg, ek, ev, freelancer, gbr, gmbh, gmbh_ig, gmbh_co_kg, kg, kgaa, ltd, ltd_co_kg, ohg, public_inst, misc_capital, misc, foundation, ug\r\n staticAvailableIdMap = [1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23];\r\n break;\r\n case 5: //Schweiz\r\n //ag, eg, einzel, e_ges, ev, freelancer, gmbh, inv_kk, kg, kgaa, k_ges, ltd, public_inst, misc_capital, misc, foundation\r\n staticAvailableIdMap = [1, 2, 3, 5, 6, 7, 9, 12, 13, 14, 15, 16, 19, 20, 21, 22];\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n ko.utils.arrayForEach(that.LegalFormCollection(), function (item) {\r\n if (staticAvailableIdMap.indexOf(item.LegalFormId) > -1) {\r\n result.push(item);\r\n }\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n\r\n that.BillPayErrors = ko.observableArray([]);\r\n\r\n //Data for hints in shoppingcart page 3\r\n that.BillPayAvailableForCountry = ko.observable(false);\r\n\r\n //Validierung für Fehleranzeige\r\n that.ValidateClient = function () {\r\n\r\n if (!that.UserAgreesToTerms()) {\r\n that.BillPayErrors.push(\"Sie müssen die AGB von BillPay akzeptieren.\");\r\n }\r\n\r\n //Validierung Firmenkunden\r\n if (!pageModelHndl.IsPrivateCustomer()) {\r\n if (that.IsHolderNameRequired()) {\r\n if (!(pageModelHndl.InvoiceAddress().AdditionalAddressInformation().HolderName())) {\r\n that.BillPayErrors.push(\"Bitte ergänzen Sie den Namen des Inhabers.\");\r\n }\r\n }\r\n\r\n if (that.IsRegisterNumberRequired()) {\r\n if (!(pageModelHndl.InvoiceAddress().AdditionalAddressInformation().RegisterNumber())) {\r\n that.BillPayErrors.push(\"Bitte ergänzen Sie die Handelsregisternummer.\");\r\n }\r\n }\r\n\r\n if (!(pageModelHndl.InvoiceAddress().Company())) {\r\n that.BillPayErrors.push(\"Bitte ergänzen Sie den Firmennamen.\");\r\n }\r\n }\r\n\r\n //Validierung Privatkunden\r\n if (pageModelHndl.IsPrivateCustomer()) {\r\n if (!pageModelHndl.InvoiceAddress().AdditionalAddressInformation()) {\r\n that.BillPayErrors.push(\"Bitte ergänzen Sie das Geburtsdatum.\");\r\n }\r\n }\r\n\r\n return (that.BillPayErrors().length === 0);\r\n };\r\n\r\n that.IsHolderNameRequired = ko.computed(function () {\r\n var staticRequireIdMap = [];\r\n\r\n if (!pageModelHndl.IsPrivateCustomer()) {\r\n if (pageModelHndl.InvoiceAddress() !== undefined) {\r\n\r\n switch (pageModelHndl.InvoiceAddress().Country().CountryId()) {\r\n case 2: //Deutschland\r\n staticRequireIdMap = [7, 8]; //freelancer, gbr\r\n break;\r\n case 5: //Schweiz\r\n staticRequireIdMap = [3, 5, 7, 15]; //einzel, e-ges, freelancer, k_ges\r\n break;\r\n default:\r\n break;\r\n }\r\n return pageModelHndl.InvoiceAddress().AdditionalAddressInformation()\r\n && (staticRequireIdMap.indexOf(pageModelHndl.InvoiceAddress().AdditionalAddressInformation().LegalFormId()) > -1);\r\n }\r\n }\r\n return false;\r\n });\r\n\r\n that.IsRegisterNumberRequired = ko.computed(function () {\r\n\r\n var staticRequireIdMap = [];\r\n\r\n if (!pageModelHndl.IsPrivateCustomer()) {\r\n if (pageModelHndl.InvoiceAddress() !== undefined) {\r\n switch (pageModelHndl.InvoiceAddress().Country().CountryId()) {\r\n case 2: //Deutschland\r\n staticRequireIdMap = [1, 4, 9, 11, 13, 17, 18, 23]; //ag, ek, gmbh, gmbh_co_kg, kg,ltd_co_kg, ohg, ug\r\n break;\r\n case 5: //Schweiz\r\n staticRequireIdMap = [1, 2, 9, 13, 14, 22]; //ag, eg, gmbh, kg, kgaa, foundation\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return pageModelHndl.InvoiceAddress().AdditionalAddressInformation()\r\n && (staticRequireIdMap.indexOf(pageModelHndl.InvoiceAddress().AdditionalAddressInformation().LegalFormId()) > -1);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n};\r\n\r\nvar LegalFormModel = function (name, id, displayText) {\r\n var that = this;\r\n that.LegalFormName = name;\r\n that.LegalFormId = id;\r\n that.LegalFormDisplayText = displayText;\r\n};\r\n\r\nvar AdditionalAddressInformationModel = function () {\r\n var that = this;\r\n that.HolderName = ko.observable();\r\n that.RegisterNumber = ko.observable();\r\n that.Birthday = ko.observable();\r\n that.LegalFormId = ko.observable(-1);\r\n that.LongBirthdayDate = ko.observable();\r\n\r\n that.Populate = function (parentAddress) {\r\n if (parentAddress && parentAddress.AdditionalAddressInformation) {\r\n if (parentAddress.AdditionalAddressInformation.LegalForm) {\r\n that.LegalFormId(parentAddress.AdditionalAddressInformation.LegalForm.LegalFormId);\r\n }\r\n\r\n if (parentAddress.AdditionalAddressInformation.HolderName) {\r\n that.HolderName(parentAddress.AdditionalAddressInformation.HolderName);\r\n }\r\n\r\n if (parentAddress.AdditionalAddressInformation.RegisterNumber) {\r\n that.RegisterNumber(parentAddress.AdditionalAddressInformation.RegisterNumber);\r\n }\r\n\r\n if (parentAddress.AdditionalAddressInformation.LongBirthdayDate && (parentAddress.AdditionalAddressInformation.LongBirthdayDate !== -1)) {\r\n that.Birthday(new Date(parentAddress.AdditionalAddressInformation.LongBirthdayDate));\r\n that.LongBirthdayDate(parentAddress.AdditionalAddressInformation.LongBirthdayDate);\r\n }\r\n }\r\n };\r\n};\r\n","ko.bindingHandlers.showToolTip = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n $(element).qtip({\r\n content: ko.utils.unwrapObservable(valueAccessor()),\r\n position: {\r\n my: 'bottom left',\r\n target: 'mouse',\r\n viewport: $(window),\r\n adjust: {\r\n x: 5, y: 0\r\n }\r\n },\r\n show: {\r\n delay: 500,\r\n effect: function () { $(this).fadeIn(250); }\r\n },\r\n hide: {\r\n fixed: true,\r\n effect: function () { $(this).fadeOut(250); }\r\n },\r\n style: 'ui-tooltip-shadow' + ($(element).hasClass('toolTipLink-wide') ? ' ui-tooltip-wide' : '')\r\n });\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n }\r\n};\r\n\r\nko.bindingHandlers.slideAway = {\r\n init: function (element, valueAccessor) {\r\n ko.utils.unwrapObservable(valueAccessor()) ? $(element).slideUp(\"slow\") : $(element).slideDown(\"slow\");\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n ko.utils.unwrapObservable(valueAccessor()) ? $(element).slideUp(\"slow\") : $(element).slideDown(\"slow\");\r\n }\r\n};\r\n\r\nko.bindingHandlers.watermark = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var value = valueAccessor();\r\n var defaultWatermark = ko.utils.unwrapObservable(value);\r\n\r\n setTimeout(function () {\r\n if ($(element).val() == \"\") {\r\n $(element).val(defaultWatermark);\r\n $(element).removeClass('focused');\r\n }\r\n else {\r\n $(element).addClass('focused');\r\n }\r\n }, 0);\r\n\r\n $(element).focus(\r\n function () {\r\n if ($(element).val() == defaultWatermark) {\r\n $(element).val(\"\");\r\n $(element).addClass('focused');\r\n }\r\n }).blur(function () {\r\n if ($(element).val() == \"\") {\r\n $(element).val(defaultWatermark)\r\n $(element).removeClass('focused');\r\n }\r\n });\r\n },\r\n update: function (element, valueAccessor) {\r\n }\r\n};\r\n\r\nko.bindingHandlers.fadeVisible = {\r\n init: function (element, valueAccessor) {\r\n // Initially set the element to be instantly visible/hidden depending on the value\r\n setTimeout(function () {\r\n $(element).toggle(ko.utils.unwrapObservable(valueAccessor()));\r\n }, 0);\r\n },\r\n update: function (element, valueAccessor) {\r\n // Whenever the value subsequently changes, slowly fade the element in or out\r\n var value = valueAccessor();\r\n ko.utils.unwrapObservable(value) ? $(element).fadeIn(\"slow\") : $(element).fadeOut(\"slow\");\r\n }\r\n};\r\n\r\nko.bindingHandlers.slideVisible = {\r\n init: function (element, valueAccessor) {\r\n // Initially set the element to be instantly visible/hidden depending on the value\r\n setTimeout(function () {\r\n if (ko.utils.unwrapObservable(valueAccessor())) {\r\n $(element).show();\r\n } else {\r\n $(element).hide();\r\n } \r\n }, 0);\r\n },\r\n update: function (element, valueAccessor) {\r\n // Whenever the value subsequently changes, slowly fade the element in or out\r\n var value = valueAccessor();\r\n var isVisible = ko.utils.unwrapObservable(value);\r\n isVisible ? $(element).slideDown() : $(element).slideUp();\r\n }\r\n};\r\n\r\nko.bindingHandlers.cssOnHover = {\r\n update: function (element, valueAccessor) {\r\n ko.utils.registerEventHandler(element, \"mouseover\", function () {\r\n $(element).addClass(ko.utils.unwrapObservable(valueAccessor()));\r\n });\r\n\r\n ko.utils.registerEventHandler(element, \"mouseleave\", function () {\r\n $(element).removeClass(ko.utils.unwrapObservable(valueAccessor()));\r\n });\r\n }\r\n};\r\n\r\nko.bindingHandlers.datepicker = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n $(element).datepicker({\r\n dateFormat: ko.utils.unwrapObservable(valueAccessor())\r\n });\r\n },\r\n update: function (element, valueAccessor) {\r\n }\r\n};\r\n\r\nko.bindingHandlers.customKendoChart = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var params = valueAccessor();\r\n $(element).kendoChart({\r\n theme: $(document).data(\"kendoSkin\") || \"default\",\r\n title: {\r\n visible: false,\r\n text: params.chartTitle\r\n },\r\n legend: {\r\n visible: false,\r\n position: params.chartLegendPosition || \"top\"\r\n },\r\n dataSource: {\r\n data: ko.toJS(params.chartData)\r\n },\r\n series: [{\r\n type: params.chartType || \"pie\",\r\n field: params.chartValue,\r\n categoryField: params.chartHead,\r\n overlay: {\r\n gradient: \"none\"\r\n }\r\n }],\r\n seriesDefaults: {\r\n labels: {\r\n visible: params.chartHint ? true : false,\r\n template: params.chartHint || \"\"\r\n }\r\n },\r\n tooltip: {\r\n visible: false,\r\n template: \"${ category } - ${ value }%\"\r\n }\r\n });\r\n },\r\n update: function (element, valueAccessor) {\r\n }\r\n};\r\n\r\nko.bindingHandlers.autoResizeInput = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var params = valueAccessor(),\r\n min = parseInt(params.min) || 25 ,\r\n max = parseInt(params.max) || 300 ,\r\n pad_right = parseInt(params.paddingRight) || 10, \r\n input = element;\r\n\r\n input.style.width = min + 'px';\r\n input.onkeypress = input.onkeydown = input.onkeyup = function () {\r\n var input = this;\r\n setTimeout(function () {\r\n var tmp = document.createElement('div');\r\n tmp.style.padding = '0';\r\n if (getComputedStyle)\r\n tmp.style.cssText = getComputedStyle(input, null).cssText;\r\n if (input.currentStyle)\r\n tmp.style.cssText = input.currentStyle.cssText;\r\n tmp.style.width = '';\r\n tmp.style.position = 'absolute';\r\n tmp.innerHTML = input.value.replace(/&/g, \"&\")\r\n .replace(//g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\")\r\n .replace(/ /g, ' ');\r\n input.parentNode.appendChild(tmp);\r\n var width = tmp.clientWidth + pad_right + 1;\r\n tmp.parentNode.removeChild(tmp);\r\n if (min <= width && width <= max)\r\n input.style.width = width + 'px';\r\n }, 1);\r\n }\r\n },\r\n update: function (element, valueAccessor) {\r\n }\r\n};\r\n\r\nko.bindingHandlers.if_fade = {\r\n init: function (element) {\r\n $(ko.virtualElements.childNodes(element))\r\n .filter(function () { return this.nodeType == 1; })\r\n .hide()\r\n .fadeIn(\"slow\");\r\n }\r\n};\r\nko.virtualElements.allowedBindings.if_fade = true;\r\n\r\nko.bindingHandlers.highlightedText = {\r\n update: function (element, valueAccessor) {\r\n var options = valueAccessor();\r\n var value = ko.utils.unwrapObservable(options.text);\r\n var search = ko.utils.unwrapObservable(options.highlight);\r\n var css = ko.utils.unwrapObservable(options.css);\r\n if (options.sanitize) {\r\n value = $('').text(value).html();\r\n }\r\n var replacement = '' + search + '';\r\n element.innerHTML = value.replace(new RegExp(search, 'gi'), replacement);\r\n }\r\n};\r\n\r\nko.bindingHandlers.enterkey = {\r\n init: function(element, valueAccessor, allBindingsAccessor, viewModel) {\r\n var inputSelector = 'input,textarea,select';\r\n $(document).on('keypress', inputSelector, function(e) {\r\n var allBindings = allBindingsAccessor();\r\n $(element).on('keypress', 'input, textarea, select', function(e) {\r\n var keyCode = e.which || e.keyCode;\r\n if (keyCode !== 13) {\r\n return true;\r\n }\r\n\r\n var target = e.target;\r\n target.blur();\r\n\r\n allBindings.enterkey.call(viewModel, viewModel, target, element);\r\n\r\n return false;\r\n });\r\n });\r\n }\r\n};\r\n\r\n\r\n\r\n//CULTURE\r\nko.extenders.numeric = function (target, options) {\r\n var precision = options.precision || (options === parseInt(options, 10) ? options : 2);\r\n var decimalSeparator = options.separator || '.';\r\n\r\n var result = ko.computed({\r\n read: function () {\r\n var ret = target();\r\n ret = ret.toFixed(precision);\r\n ret = ret.toString().replace('.', decimalSeparator);\r\n return ret;\r\n },\r\n write: target\r\n });\r\n\r\n result.raw = target;\r\n return result;\r\n}\r\n\r\nko.bindingHandlers.el = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var value = valueAccessor();\r\n //assign value to observable (we specified in html)\r\n value(element);\r\n }\r\n};\r\n\r\nko.bindingHandlers.$el = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var value = valueAccessor();\r\n //here we first create a jQuery object by using $(myelem)\r\n //before updating observable value\r\n value($(element).first());\r\n }\r\n};","$(document).ready(function () {\r\n var colapsed = true;\r\n var colapsedCountItems = 2;\r\n var orderFileUploadShowMoreButtonText = $(\"#orderFileUploadShowMoreButtonText\").val();\r\n var orderFileUploadShowLessButtonText = $(\"#orderFileUploadShowLessButtonText\").val();\r\n\r\n $(\"#Files .Order\").each(function (index, item) {\r\n if (index >= colapsedCountItems) {\r\n $(item).hide();\r\n }\r\n });\r\n\r\n $(\"#btnCollapseFileHints\").click(function () {\r\n if (!colapsed) {\r\n $(\"#Files .Order\").each(function (index, item) {\r\n if (index >= colapsedCountItems) {\r\n $(item).hide();\r\n }\r\n });\r\n\r\n $(\"#btnCollapseFileHints\").html(orderFileUploadShowMoreButtonText);\r\n $(\"#btnCollapseFileHints\").removeClass(\"Less\");\r\n } else {\r\n $(\"#Files .Order\").each(function (index, item) {\r\n $(item).show();\r\n });\r\n\r\n $(\"#btnCollapseFileHints\").html(orderFileUploadShowLessButtonText);\r\n $(\"#btnCollapseFileHints\").addClass(\"Less\");\r\n }\r\n colapsed = !colapsed;\r\n });\r\n});","function NewsletterPageModel() {\r\n var self = this;\r\n\r\n self.NewsletterModel = ko.observable(new NewsletterModel());\r\n self.isRegistered = ko.observable(false);\r\n\r\n self.Submit = function () {\r\n self.NewsletterModel().GoogleRecaptchaCode(self.GetRecaptchaCode());\r\n var data = ko.mapping.toJSON(self.NewsletterModel);\r\n self.NewsletterModel().Loading(true);\r\n $.ajax({\r\n url: ajaxUrls.newsletter.AddUserToNewsletter,\r\n type: 'POST',\r\n data: data,\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n }).done(function (returnArr) {\r\n self.NewsletterModel().Errors.removeAll();\r\n if (!returnArr.Success) {\r\n $.each(returnArr.Errors, function (index, item) {\r\n self.NewsletterModel().Errors.push(item);\r\n });\r\n grecaptcha.reset();\r\n } else {\r\n self.NewsletterModel().Saved(true);\r\n // redirect to confirmation page\r\n window.location.pathname = ajaxUrls.newsletter.PreConfirmation;\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n grecaptcha.reset();\r\n }).always(function() {\r\n fireDataLayerEventRegister();\r\n self.NewsletterModel().Loading(false);\r\n });\r\n };\r\n\r\n self.GetRecaptchaCode = function () {\r\n return $('.g-recaptcha-response').val();\r\n };\r\n}\r\n\r\nfunction fireDataLayerEventRegister() {\r\n window.dataLayer =\r\n window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'formSubmission',\r\n 'form_name':\r\n 'Newsletter_pre_registration',\r\n });\r\n}","$('body').delegate('.textbox', 'focus', function () {\r\n var $field = $(this).closest('.property');\r\n $field.addClass('property-focus');\r\n}); \r\n\r\n$('body').delegate('.textbox', 'blur', function () {\r\n var $field = $(this).closest('.property');\r\n $field.removeClass('property-focus');\r\n}); \r\n\r\n$('body').delegate('.mvc-form', 'input', function () {\r\n var $field = $(this).closest('.property');\r\n if (this.value.length > 0) {\r\n $field.addClass('property-not-empty');\r\n }\r\n else {\r\n $field.removeClass('property-not-empty');\r\n }\r\n}); \r\n\r\n$('body').delegate('.dateSelect', 'focus', function () {\r\n var $field = $(this).closest('.property');\r\n $field.addClass('property-focus');\r\n});\r\n\r\n$('body').delegate('.dateSelect', 'blur', function () {\r\n var $field = $(this).closest('.property');\r\n $field.removeClass('property-focus');\r\n});","var ViewModelWithLoadingEvents = function () {\r\n var that = this;\r\n\r\n that.IsLoading = ko.observable(false);\r\n that.IsLoaded = ko.observable(false);\r\n that.IsSaving = ko.observable(false);\r\n that.IsSaved = ko.observable(false);\r\n\r\n that.HandleLoadEvent = function (promise) {\r\n that.IsLoading(true);\r\n promise.done(function (data) {\r\n if (data.Success) {\r\n that.IsLoaded(true);\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n }).always(function () {\r\n that.IsLoading(false);\r\n });\r\n };\r\n\r\n that.HandleSaveEvent = function (promise) {\r\n that.IsSaving(true);\r\n promise.done(function (data) {\r\n if (data.Success) {\r\n that.IsSaved(true);\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n }).always(function () {\r\n that.IsSaving(false);\r\n });\r\n };\r\n};\r\n","(function(root, factory) {\r\n root.BIC = factory();\r\n})(window, function() {\r\n var validBicRegex = new RegExp(\"^[A-Z]{6}[2-9A-Z][0-9A-NP-Z](?:(?:[0-9A-WY-Z][0-9A-Z]{2})|X{3})?$\", \"i\");\r\n\r\n return {\r\n isValid: function(bic) {\r\n return validBicRegex.test(bic);\r\n }\r\n };\r\n});\r\n"]}