PageSourceSearch

https://secure.trisura.com/Scripts/common.refactor.js?85606e79-0930-4597-88a8-adc6af86dd10

js trisura.com collected 2026-09-29 09:48:02 UTC 57,301 bytes, 1,289 lines download raw bytes

1//browser detection
2var userBrowser = navigator.userAgent.toLowerCase();
3var isExplorer = userBrowser.indexOf("msie") > -1;
4var isNetscape = userBrowser.indexOf("netscape") > -1;
5var isFirefox = userBrowser.indexOf("firefox") > -1;
6var isSafari = userBrowser.indexOf("safari") > -1;
7var isMac = userBrowser.indexOf("mac") > -1;
8var perfInSeconds;
9
10var serviceURL = "";
11if (document.URL.toLowerCase().indexOf('trisurabp') > 0) {
12    serviceURL = document.URL.replace(window.location.pathname, "") + "/TrisuraBP/WebService1-Refactor.asmx/";
13    serviceURL = serviceURL.replace(window.location.search, "");
14}
15else {
16    serviceURL = document.URL.replace(window.location.pathname, "") + "/WebService1-Refactor.asmx/";
17    serviceURL = serviceURL.replace(window.location.search, "");
18}
19
20var multinationalAddressServiceUrl = "";
21if (document.URL.toLowerCase().indexOf('trisurabp') > 0) {
22    multinationalAddressServiceUrl = document.URL.replace(window.location.pathname, "") + "/TrisuraBP/WebService/MultinationalAddressService.asmx/";
23    multinationalAddressServiceUrl = multinationalAddressServiceUrl.replace(window.location.search, "");
24}
25else {
26    multinationalAddressServiceUrl = document.URL.replace(window.location.pathname, "") + "/WebService/MultinationalAddressService.asmx/";
27    multinationalAddressServiceUrl = multinationalAddressServiceUrl.replace(window.location.search, "");
28}
29
30var BrowserDetect = {
31    init: function () {
32        this.browser = this.searchString(this.dataBrowser) || "Other";
33        this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown";
34    },
35    searchString: function (data) {
36        for (var i = 0; i < data.length; i++) {
37            var dataString = data[i].string;
38            this.versionSearchString = data[i].subString;
39
40            if (dataString.indexOf(data[i].subString) !== -1) {
41                return data[i].identity;
42            }
43        }
44    },
45    searchVersion: function (dataString) {
46        var index = dataString.indexOf(this.versionSearchString);
47        if (index === -1) {
48            return;
49        }
50
51        var rv = dataString.indexOf("rv:");
52        if (this.versionSearchString === "Trident" && rv !== -1) {
53            return parseFloat(dataString.substring(rv + 3));
54        } else {
55            return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
56        }
57    },
58
59    dataBrowser: [
60        { string: navigator.userAgent, subString: "Edge", identity: "MS Edge" },
61        { string: navigator.userAgent, subString: "MSIE", identity: "Explorer" },
62        { string: navigator.userAgent, subString: "Trident", identity: "Explorer" },
63        { string: navigator.userAgent, subString: "Firefox", identity: "Firefox" },
64        { string: navigator.userAgent, subString: "Opera", identity: "Opera" },
65        { string: navigator.userAgent, subString: "OPR", identity: "Opera" },
66
67        { string: navigator.userAgent, subString: "Chrome", identity: "Chrome" },
68        { string: navigator.userAgent, subString: "Safari", identity: "Safari" }
69    ]
70};
71
72BrowserDetect.init();
73
74/* Return version of Internet Explorer or a -1 if a non-IE browser is being used */
75function getInternetExplorerVersion() {
76    var rv = -1; // Return value assumes failure
77    //if (navigator.appName == 'Microsoft Internet Explorer')
78    //{
79    var ua = navigator.userAgent;
80    var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
81    if (re.exec(ua) !== null) {
82        rv = parseFloat(RegExp.$1);
83
84        return rv;
85    }
86
87    var reVerAbove10 = new RegExp("rv:([0-9]{1,}[\.0-9]{0,})");
88    if (reVerAbove10.exec(ua) !== null) {
89        rv = parseFloat(RegExp.$1);
90        return rv;
91    }
92
93    return rv;
94}
95
96/* Disable browser back and forward buttons */
97function disableBackAndForwardButtons(msg) {
98    if (typeof history.pushState === "function") {
99        history.pushState("jibberish", null, null);
100        window.onpopstate = function () {
101            history.pushState('newjibberish', null, null);
102            CallBackButtonDetected();
103            ShowBackButtonAlert(msg);
104        };
105    }
106    else {
107        var ignoreHashChange = true;
108        window.onhashchange = function () {
109            if (!ignoreHashChange) {
110                ignoreHashChange = true;
111                window.location.hash = Math.random();
112                CallBackButtonDetected();
113                ShowBackButtonAlert(msg);
114            }
115            else {
116                CallBackButtonDetected();
117                ShowBackButtonAlert(msg);
118                ignoreHashChange = false;
119            }
120        };
121    }
122}
123
124function ShowBackButtonAlert(msg) {
125    window.alert(msg);
126}
127
128function SaveSignatureImage(signature, quoteId) {
129    //var baseImage = "iVBORw0KGgoAAAANSUhEUgAAAqIAAAEmCAYAAAC5yPKgAAAAAXNSR0IArs4c6QAAD+VJREFUeF7t1jENAAAMw7CVP+nByOMRqGTtyM4RIECAAAECBAgQCAQWbJokQIAAAQIECBAgcELUExAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAg
129EAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAg
129EAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQJC1A8QIECAAAECBAgkAkI0YTdKgAABAgQIECAgRP0AAQIECBAgQIBAIiBEE3ajBAgQIECAAAECQtQPECBAgAABAgQIJAJCNGE3SoAAAQIECBAgIET9AAECBAgQIECAQCIgRBN2owQIECBAgAABAkLUDxAgQIAAAQIECCQCQjRhN0qAAAECBAgQICBE/QABAgQIECBAgEAiIEQTdqMECBAgQIAAAQIPG64BJ7BcF1IAAAAASUVORK5CYII=";
130    //var baseImageFR = "iVBORw0KGgoAAAANSUhEUgAAAqgAAAEsCAYAAAAPcUEPAAAAAXNSR0IArs4c6QAAELpJREFUeF7t1jERAAAMArHi33Rt/JAq4EIHdo4AAQIECBAgQIBASGChLKIQIECAAAECBAgQOAPVExAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgICB6gcIECBAgAABAgRSAgZqqg5hCBAgQIAAAQIEDFQ/QIAAAQIECBAgkBIwUFN1CEOAAAECBAgQIGCg+gECBAgQIECAAIGUgIGaqkMYAgQIECBAgAABA9UPECBAgAABAgQIpAQM1FQdwhAgQIAAAQIECBiofoAAAQIECBAgQCAlYKCm6hCGAAECBAgQIEDAQPUDBAgQIECAAAECKQEDNVWHMAQIECBAgAABAgaqHyBAgAABAgQIEEgJGKipOoQhQIAAAQIECBAwUP0AAQIECBAgQIBASsBATdUhDAECBAgQIECAgIHqBwgQIECAAAECBFICBmqqDmEIECBAgAABAgQMVD9AgAABAgQIECCQEjBQU3UIQ4AAAQIECBAgYKD6AQIECBAgQIAAgZSAgZqqQxgCBAgQIECAAAED1Q8QIECAAAECBAikBAzUVB3CECBAgAABAgQIGKh+gAABAgQIECBAICVgoKbqEIYAAQIECBAgQMBA9QMECBAgQIAAAQIpAQM1VYcwBAgQIECAAAECBqofIECAAAECBAgQSAkYqKk6hCFAgAABAgQIEDBQ/QABAgQIECBAgEBKwEBN1SEMAQIECBAgQICAgeoHCBAgQIAAAQIEUgIGaqoOYQgQIECAAAECBAxUP0CAAAECBAgQIJASMFBTdQhDgAABAgQIECBgoPoBAgQIECBAgACBlICBmqpDGAIECBAgQIAAAQPVDxAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgICB6gcIECBAgAABAgRSAgZqqg5hCBAgQIAAAQIEDFQ/QIAAAQIECBAgkBIwUFN1CEOAAAECBAgQIGCg+gECBAgQIECAAIGUgIGaqkMYAgQIECBAgAABA9UPECBAgAABAgQIpAQM1FQdwhAgQIAAAQIECBiofoAAAQIECBAgQCAlYKCm6hCGAAECBAgQIEDAQPUDBAgQIECAAAECKQEDNVWHMAQIECBAgAABAgaqHyBAgAABAgQIEEgJGKipOoQhQIAAAQIECBAwUP0AAQIECBAgQIBASsBATdUhDAECBAgQIECAgIHqBwgQIECAAAECBFICBmqqDmEIECBAgAABAgQMVD9AgAABAgQIECCQEjBQU3UIQ4AAAQIECBAgYKD6AQIECBAgQIAAgZSAgZqqQxgCBAgQIECAAAED1Q8QIECAAAECBAikBAzUVB3CECBAgAABAgQIGKh+gAABAgQIECBAICVgoKbqEIYAAQIECBAgQMBA9QMECBAgQIAAAQIpAQM1VYcwBAgQIECAAAECBqofIECAAAECBAgQSAkYqKk6hCFAgAABAgQIEDBQ/QABAgQIECBAgEBKwEBN1SEMAQIECBAgQICAgeoHCBAgQIAAAQIEUgIGaqoOYQgQIECAAAECBAxUP0CAAAECBAgQIJASMFBTdQhDgAABAgQIECBgoPoBAgQIECBAgACBlICBmqpDGAIECBAgQIAAAQPVDxAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgICB6gcIECBAgAABAgRSAgZqqg5hCBAgQIAAAQIEDFQ/QIAAAQIECBAgkBIwUFN1CEOAAAECBAgQIGCg+gECBAgQIECAAIGUgIGaqkMYAgQIECBAgAABA9UPECBAgAABAgQIpAQM1FQdwhAgQIAAAQIECBiofoAAAQIECBAgQCAlYKCm6hCGAAECBAgQIEDAQPUDBAgQIECAAAECKQEDNVWHMAQIECBAgAABAgaqHyBAgAABAgQIEEgJGKipOoQhQIAAAQIECBAwUP0AAQIECBAgQIBASsBATdUhDAECBAgQIECAgIHqBwgQIECAAAECBFICBmqqDmEIECBAgAABAgQMVD9AgAABAgQIECCQEjBQU3UIQ4AAAQIECBAgYKD6AQIECBAgQIAAgZSAgZqqQxgCBAgQIECAAAED1Q8QIECAAAECBAikBAzUVB3CECBAgAABAgQIGKh+gAABAgQIECBAICVgoKbqEIYAAQIECBAgQMBA9QMECBAgQIAAAQIpAQM1VYcwBAgQIECAAAECBqofIECAAAECBAgQSAkYqKk6hCFAgAABAgQIEDBQ/QABAgQIECBAgEBKwEBN1SEMAQIECBAgQICAgeoHCBAgQIAAAQIEUgIGaqoOYQgQIECAAAECBAxUP0CAAAECBAgQIJASMFBTdQhDgAABAgQIECBgoPoBAgQIECBAgACBlICBmqpDGAIECBAgQIAAAQPVDxAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgICB6gcIECBAgAABAgRSAgZqqg5hCBAgQIAAAQIEDFQ/QIAAAQIECBAgkBIwUFN1CEOAAAECBAgQIGCg+gECBAgQIECAAIGUgIGaqkMYAgQIECBAgAABA9UPECBAgAABAgQIpAQM1FQdwhAgQIAAAQIECBiofoAAAQIECBAgQCAlYKCm6hCGAAECBAgQIEDAQPUDBAgQIECAAAECKQEDNVWHMAQIECBAgAABAgaqHyBAgAABAgQIEEgJG
130KipOoQhQIAAAQIECBAwUP0AAQIECBAgQIBASsBATdUhDAECBAgQIECAgIHqBwgQIECAAAECBFICBmqqDmEIECBAgAABAgQMVD9AgAABAgQIECCQEjBQU3UIQ4AAAQIECBAgYKD6AQIECBAgQIAAgZSAgZqqQxgCBAgQIECAAAED1Q8QIECAAAECBAikBAzUVB3CECBAgAABAgQIGKh+gAABAgQIECBAICVgoKbqEIYAAQIECBAgQMBA9QMECBAgQIAAAQIpAQM1VYcwBAgQIECAAAECBqofIECAAAECBAgQSAkYqKk6hCFAgAABAgQIEDBQ/QABAgQIECBAgEBKwEBN1SEMAQIECBAgQICAgeoHCBAgQIAAAQIEUgIGaqoOYQgQIECAAAECBAxUP0CAAAECBAgQIJASMFBTdQhDgAABAgQIECBgoPoBAgQIECBAgACBlICBmqpDGAIECBAgQIAAAQPVDxAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgICB6gcIECBAgAABAgRSAgZqqg5hCBAgQIAAAQIEDFQ/QIAAAQIECBAgkBIwUFN1CEOAAAECBAgQIGCg+gECBAgQIECAAIGUgIGaqkMYAgQIECBAgAABA9UPECBAgAABAgQIpAQM1FQdwhAgQIAAAQIECBiofoAAAQIECBAgQCAlYKCm6hCGAAECBAgQIEDAQPUDBAgQIECAAAECKQEDNVWHMAQIECBAgAABAgaqHyBAgAABAgQIEEgJGKipOoQhQIAAAQIECBAwUP0AAQIECBAgQIBASsBATdUhDAECBAgQIECAgIHqBwgQIECAAAECBFICBmqqDmEIECBAgAABAgQMVD9AgAABAgQIECCQEjBQU3UIQ4AAAQIECBAgYKD6AQIECBAgQIAAgZSAgZqqQxgCBAgQIECAAAED1Q8QIECAAAECBAikBAzUVB3CECBAgAABAgQIGKh+gAABAgQIECBAICVgoKbqEIYAAQIECBAgQMBA9QMECBAgQIAAAQIpAQM1VYcwBAgQIECAAAECBqofIECAAAECBAgQSAkYqKk6hCFAgAABAgQIEDBQ/QABAgQIECBAgEBKwEBN1SEMAQIECBAgQICAgeoHCBAgQIAAAQIEUgIGaqoOYQgQIECAAAECBAxUP0CAAAECBAgQIJASMFBTdQhDgAABAgQIECBgoPoBAgQIECBAgACBlICBmqpDGAIECBAgQIAAAQPVDxAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgICB6gcIECBAgAABAgRSAgZqqg5hCBAgQIAAAQIEDFQ/QIAAAQIECBAgkBIwUFN1CEOAAAECBAgQIGCg+gECBAgQIECAAIGUgIGaqkMYAgQIECBAgAABA9UPECBAgAABAgQIpAQM1FQdwhAgQIAAAQIECBiofoAAAQIECBAgQCAlYKCm6hCGAAECBAgQIEDAQPUDBAgQIECAAAECKQEDNVWHMAQIECBAgAABAgaqHyBAgAABAgQIEEgJGKipOoQhQIAAAQIECBAwUP0AAQIECBAgQIBASsBATdUhDAECBAgQIECAgIHqBwgQIECAAAECBFICBmqqDmEIECBAgAABAgQMVD9AgAABAgQIECCQEjBQU3UIQ4AAAQIECBAgYKD6AQIECBAgQIAAgZSAgZqqQxgCBAgQIECAAAED1Q8QIECAAAECBAikBAzUVB3CECBAgAABAgQIGKh+gAABAgQIECBAICVgoKbqEIYAAQIECBAgQMBA9QMECBAgQIAAAQIpAQM1VYcwBAgQIECAAAECBqofIECAAAECBAgQSAkYqKk6hCFAgAABAgQIEDBQ/QABAgQIECBAgEBKwEBN1SEMAQIECBAgQICAgeoHCBAgQIAAAQIEUgIGaqoOYQgQIECAAAECBAxUP0CAAAECBAgQIJASMFBTdQhDgAABAgQIECBgoPoBAgQIECBAgACBlICBmqpDGAIECBAgQIAAAQPVDxAgQIAAAQIECKQEDNRUHcIQIECAAAECBAgYqH6AAAECBAgQIEAgJWCgpuoQhgABAgQIECBAwED1AwQIECBAgAABAikBAzVVhzAECBAgQIAAAQIGqh8gQIAAAQIECBBICRioqTqEIUCAAAECBAgQMFD9AAECBAgQIECAQErAQE3VIQwBAgQIECBAgMADelsBLTCxhj8AAAAASUVORK5CYII=";
131    var signatureImage = signature._canvas[0].toDataURL("image/png").replace('data:image/png;base64,', '');
132    console.log("signatureImage: " + signatureImage);
133    var createdImg = false;
134
135    if (signature.storeSnap[signature.storeSnap.length - 1] == '') {
136        return createdImg;
137    }
138    //if there is signature
139    if (signature.storeSnap.length > 1) {
140        $.ajax({
141            type: 'POST',
142            url: '/DocumentWebService.asmx/SaveSignatureImageToAzure',
143            //url: '/DocumentWebService.asmx/SaveSignatureImage',
144            data: JSON.stringify({
145                signatureData: signatureImage,
146                quoteId: quoteId
147            }),
148            //data:'{"signatureData":"' + signatureImage + '","quoteId":"' + quoteId + '"}',
149            contentType: 'application/json; charset=utf-8',
150            dataType: 'json',
151            async: false,
152            //success: OnSignatureSuccess(createdImg),
153            //error: OnSignatureError(createdImg)
154            success: function () {
155                createdImg = true;
156            },
157            error: function () {
158                createdImg = false;
159            }
160        });
161
162        return createdImg;
163    }
164    else {
165        return createdImg;
166    }
167}
168function DeleteSignatureImage(quoteId) {
169    var signatureImage = signature._canvas[0].toDataURL("image/png").replace('data:image/png;base64,', '');
170    var createdImg = false;
171    //if there is signature
172    if (signature.storeSnap.length > 1) {
173        $.ajax({
174            type: 'POST',
175            url: '/DocumentWebService.asmx/DeleteSignatureImageToAzure',
176            //url: '/DocumentWebService.asmx/SaveSignatureImage',
177            data: JSON.stringify({
178                quoteId: quoteId
179            }),
180            //data:'{"signatureData":"' + signatureImage + '","quoteId":"' + quoteId + '"}',
181            contentType: 'application/json; charset=utf-8',
182            dataType: 'json',
183            async: false,
184            //success: OnSignatureSuccess(createdImg),
185            //error: OnSignatureError(createdImg)
186            success: function () {
187                createdImg = true;
188            },
189            error: function () {
190                createdImg = false;
191            }
192        });
193
194        return createdImg;
195    }
196    else {
197        return createdImg;
198    }
199}
200// Back Button Detected
201function CallBackButtonDetected() {
202    // call web service to save back button press in log
203    var cvxhr = $.ajax({
204        type: 'POST',
205        url: serviceURL + 'BackButtonPress',
206        data: '{"isForwardButton":"0","pageUrl":"' + window.location.pathname + '"}',
207        contentType: 'application/json; charset=utf-8',
208        async: false,
209        dataType: 'json',
210        success: OnSuccessBackButtonDetected,
211        error: OnBackButtonDetectedError
212    });
213
214    cvxhr.abort();
215};
216
217function OnSuccessBackButtonDetected(data, status) {
218    // add here any code for execution after the web service call
219
220};
221
222// On Back Button Detected Error
223function OnBackButtonDetectedError(request, status, error) { // on error - submit the form for a complete postback
224    alert('Fail! ' + status + ' ' + error)
225};
226
227function cancelBackspace(event) {
228    if (event.keyCode == 8) {
229        return false;
230    }
231};
232
233function tabstrip_onTabSelect(sender, eventArgs) {
234    showHideBackToTop();
235};
236
237function showHideBackToTop() {
238    if ($(document).height() > ($(window).height() + 50)) {
239        $('#backToTop').show();
240        $('#backToTopSpacer').hide();
241    }
242    else {
243        $('#backToTop').hide();
244        $('#backToTopSpacer').show();
245    }
246};
247
248function resetDDLsForPostBack() {
249    $("#aspnetForm").find("[id*='hfDDLIVQuestion']").each(function (i) {
250        var questionID = $(this).attr("id").replace('hfDDLIVQuestion', '');
251        var initialValues = $(this).val();
252        var ddlListItems = initialValues.split('|');
253        var val;
254        var text;
255        $("#ddlQuestion" + questionID + " >option").remove(); // remove all the existing options from the list
256        for (i = 0; i <= ddlListItems.length - 1; i++) {
257            var valtext = ddlListItems[i].split('~');
258            val = valtext[0];  // value
259            text = valtext[1]; // text
260            $("#ddlQuestion" + questionID).append($('<option></option>').val(val).html(text)); // add new options from the service call
261        }   // for
262    });     // each
263
264    resetMultinationalAddressDdlsForPostBack();
265};
266
267function resetMultinationalAddressDdlsForPostBack() {
268    $("#aspnetForm").find("[id*='hfDdlIvProvince']").each(function (i) {
269        var questionId = $(this).attr("id").replace('hfDdlIvProvince', '')
270        var initialValues = $(this).val();
271        var ddlListItems = initialValues.split('|');
272        var val;
273        var text;
274        $("#ddlQuestion" + questionId + " >option").remove(); // remove all the existing options from the list
275        for (i = 0; i <= ddlListItems.length - 1; i++) {
276            var valtext = ddlListItems[i].split('~');
277            val = valtext[0];  // value
278            text = valtext[1]; // text
279            $("#ddlQuestion" + questionId).append($('<option></option>').val(val).html(text)); // add new options from the service call
280        }   // for
281    });     // each
282};
283
284function testGetData() {
285    var dropDown = $("[data-question-client-id='ddlQuestion642']");
286    var length = dropDown.length;
287
288    var cal = $("[data-question-client-id='calQuestion636']");
289    var length1 = cal.length;
290
291    var rbl = $("[data-question-id='4426']");
292    var pnlitem = $("#pnlitm1021");
293    var find = $(rbl).find(":checked").val();
294    var length2 = rbl.length;
295
296}
297function getResponsesFromForm() {
298    var responses = [];
299    $("[data-question-id]").each(function (index) {
300
301        var response = {
302            QuestionID: 0,
303            QuestionTypeID: 0,
304            QuestionIndex: 0,
305            TextAnswer: '',
306            NumericAnswer: 0,
307            DateAnswer: null,
308            TrueFalseAnswer: false,
309            SelectableAnswerID: 0,
310            SelectableAnswerText: '',
311            ResponseTypeID: 0
312        };
313
314        var questionTypeId = $(this).attr("data-question-type-id");
315        var questionId = $(this).attr("data-question-id");
316
317        response.QuestionID = questionId;
318        response.QuestionTypeID = questionTypeId;
319
320        if (questionTypeId == 6) {
321            if ($(this).find(":checked").length > 0) {
322                response.SelectableAnswerId =
323                    $(this).find(":checked").val();
324            } else {
325                response.SelectableAnswerId = 0;
326            }
327            response.ResponseTypeID = 2;
328            responses.push(response);
329        }
330        else if (questionTypeId == 1) {
331            if ($(this).find(":checked").length > 0) {
332                response.TrueFalseAnswer = true;
333            }
334            else {
335                response.TrueFalseAnswer = false;
336            }
337            response.ResponseTypeID = 1;
338            responses.push(response);
339        }
340        else if (questionTypeId == 2) {
341
342            response.TextAnswer = $(this).val();
343            response.ResponseTypeID = 2;
344            responses.push(response);
345        }
346        else if (questionTypeId == 3) { // we have 3 types of numberic types of control
347            var ctrl = $(this).find("[id$='ejNumber']");
348            if (ctrl.length == 0) {
349                ctrl = $(this).find("[id$='ejCurrency']");
350            }
351            if (ctrl.length == 0) {
352                ctrl = $(this).find("[id$='ejPercentage']");
353            }
354
355            if (ctrl.attr('aria-valuenow') === undefined) {
356                response.NumericAnswer = ctrl[0].value;
357            }
358            else {
359                response.NumericAnswer = ctrl.attr('aria-valuenow');
360            }
361             //response.NumericAnswer = ctrl[0].value.toString();
362            response.ResponseTypeID = 3;
363            responses.push(response);
364        }
365        else if (questionTypeId == 4) {
366            var ctrl = $(this).find("[id$='_datepick']");
367            response.DateAnswer = ctrl[0].value;// $("#calQuestion" + questionId + "_selecteddates").val();
368            response.ResponseTypeID = 5;
369            responses.push(response);
370        }
371        else if (questionTypeId == 5) {
372            response.SelectableAnswerText = $(this).find(":selected").text();
373            response.SelectableAnswerID = $(this).find(":selected").val();
374            response.ResponseTypeID = 2;
375            responses.push(response);
376        }
377        else {
378            response.TextAnswer = $(this).val();
379            response.ResponseTypeID = 2;
380            responses.push(response);
381        }
382    });
383
384    return responses;
385}
386function getCookie(name) {
387    const value = `; ${document.cookie}`;
388    const parts = value.split(`; ${name}=`);
389    if (parts.length === 2) return parts.pop().split(';').shift();
390}
391
392function getCookieValue(name) {
393    const regex = new RegExp(`(^| )${name}=([^;]+)`)
394    const match = document.cookie.match(regex)
395    if (match) {
396        return match[2]
397    }
398}
399function getFormValues() {
400    var effectiveDate;
401
402    if ($('#hfEffectiveDate').length < 1) {
403        effectiveDate = "";
404    }
405    else {
406        effectiveDate = $('#hfEffectiveDate').val();
407    }
408
409    var cultureCode = $('#hfCulture').val();
410
411    var questionAnswers = '';
412    var questionId = 0;
413    var selAnsId = 0;
414
415    $("#aspnetForm").find("[id*='Question']").each(function (i) {
416        // Check Boxes
417        if ($(this).is("[id^='cbQ']")) {
418            if ($(this).is("input:checked")) {
419                questionAnswers = questionAnswers + $(this).attr("id") + '~1|';
420            }
421            else {
422                questionAnswers = questionAnswers + $(this).attr("id") + '~0|';
423            }
424        }
425
426        // Text Boxes
427        else if ($(this).is("[id^='txtText']")) {
428            var response = '';
429            response = $(this).val()
430                .replace(/\\/g, '\\\\')
431                .replace(/"/g, '%22');  
432            questionAnswers = questionAnswers + $(this).attr("id") + '~' + response + '|';
433        }
434
435        // Number Boxes
436        else if ($(this).is("[id*='nbQ']")) {
437            questionAnswers = questionAnswers + $(this).attr("id") + '~' + $(this).attr('aria-valuenow') + '|';
438        }
439
440        // Calendars
441        else if ($(this).is("[id^='calpickerQ']")) {
442            if ($(this).is("[id*='selecteddates']")) {
443                questionAnswers = questionAnswers + $(this).attr("id") + '~' + $(this).val() + '|';
444            }
445        }
446
447        // Drop Down Lists
448        else if ($(this).is("[id^='ddlQ']")) {
449            questionAnswers = questionAnswers + $(this).attr("id") + '~' + $(this).find("option:selected").val() + '^' + $(this).find("option:selected").text() + '|';
450        }
451
452        // Calculated Values
453        else if ($(this).is("[id^='cvQ']")) {
454            questionAnswers = questionAnswers + $(this).attr("id") + '~' + $(this).text() + '|';
455        }
456
457        // Text Values
458        else if ($(this).is("[id^='tvQ']")) {
459            response = $(this).text();
460            questionAnswers = questionAnswers + $(this).attr("id") + '~' + response + '|';
461        }
462
463        // Radio Button - Locked
464        else if ($(this).is("[id^='rblL']")) {
465            response = $(this).text();
466            questionAnswers = questionAnswers + $(this).attr("id") + '~' + response + '|';
467        }
468
469        // Drop Down List - Locked
470        else if ($(this).is("[id^='ddlL']")) {
471            response = $(this).text();
472            questionAnswers = questionAnswers + $(this).attr("id") + '~' + response + '|';
473        }
474
475        else {
476            // do nothing
477        }
478
479    });     // each
480
481    $("#aspnetForm").find("[id^='rblQ']").not("[id*='_']").each(function (i) {
482        // Radio Button Lists
483        if ($(this).find("input:checked").val() == undefined) {
484            questionAnswers = questionAnswers + $(this).attr("id") + '~|';
485        }
486        else {
487            questionAnswers = questionAnswers + $(this).attr("id") + '~' + $(this).find("input:checked").val() + '|';
488        }
489
490    }); // each
491
492    questionAnswers = questionAnswers.replace(new RegExp('"', 'g'), '%22');
493
494    return questionAnswers;
495};
496
497// Conditional Displays
498function InitializeQuoteCacheForRequest(quoteID) {
499    var requestId = $("#hdnRequestId").val();
500    var dataToSend = JSON.stringify({ 'quoteId': quoteID, 'requestId': requestId });
501    $.ajax({
502        type: 'POST',
503        url: serviceURL + 'InitializeQuoteCacheForRequest',
504        data: dataToSend,
505        contentType: 'application/json; charset=utf-8',
506        async: false,
507        dataType: 'json'
508    });
509}
510function UpdateConditionalDisplay(panelItemID, quoteID, currentUserId, asynch = 0) {
511    var effectiveDate;
512    var asyn = false;
513
514    if ($('#hfEffectiveDate').length < 1) {
515        effectiveDate = "";
516    }
517    else {
518        effectiveDate = $('#hfEffectiveDate').val();
519    }
520
521    if (asynch == 1) {
522        asyn = true;
523    }
524
525    var requestId = $("#hdnRequestId").val();
526    var dataToSend = JSON.stringify({ 'panelItemId': panelItemID, 'quoteId': quoteID, 'formResponses': getResponsesFromForm(), 'effectiveDate': effectiveDate, 'page': page, 'currentUserId': currentUserId, 'requestId': requestId });
527    var perfInMiliSeconds = (new Date()).getTime();
528    $.ajax({
529        type: 'POST',
530        url: serviceURL + 'EvaluateConditionalDisplay',
531        data: dataToSend,
532        contentType: 'application/json; charset=utf-8',
533        async: asyn,
534        dataType: 'json'
535    }).done(function (data, status) {
536        if (data.d == '0') {
537            if ($("#pnlitm" + panelItemID).css("display") == "block") {
538                $("#pnlitm" + panelItemID).css("display", "none");
539                $("#pnlitm" + panelItemID).find($("[id$='_txtDecimalValue']")).removeClass("validationOverride")
540                var element = $("#pnlitm" + panelItemID);
541                $(".isActiveResponse", element).each(function (index) {
542                    $(this).val("false");
543                    // console.log("panel id not visible" + panelItemID)
544                });
545            }
546        }
547        else if (data.d == '1') {
548            if ($("#pnlitm" + panelItemID).css("display") == "none") {
549                $("#pnlitm" + panelItemID).css("display", "block");
550                $("#pnlitm" + panelItemID).find($("[id$='_txtDecimalValue']")).addClass("validationOverride");
551                var element = $("#pnlitm" + panelItemID);
552                $(".isActiveResponse", element).each(function (index) {
553                    $(this).val("true");
554                    //  console.log("panel id visible" + panelItemID)
555                });
556            }
557        }
558        else { // on fail - submit the form for a complete postback
559            resetDDLsForPostBack();
560            document.forms[0].submit(); // do a full postback if the web service cannot resolve condition
561        }
562        perfInMiliSeconds = (new Date()).getTime() - perfInMiliSeconds;
563        console.log("UpdateConditionalDisplay executed in miliseconds : " + perfInMiliSeconds);
564        console.log("network speed: " + navigator.connection.downlink);
565    })
566        .fail(OnError)
567        .always(function () { });
568}
569
570function OnSuccessUpdateConditionalDisplay(data, status) {
571    if (data.d == '0') {
572        if ($("#pnlitm" + panelItemID).css("display") == "block") {
573            $("#pnlitm" + panelItemID).css("display", "none");
574            $("#pnlitm" + panelItemID).find($("[id$='_txtDecimalValue']")).removeClass("validationOverride")
575            var element = $("#pnlitm" + panelItemID);
576            $(".isActiveResponse", element).each(function (index) {
577                $(this).val("false");
578                //console.log("panel id not visible" + panelItemID)
579            });
580        }
581    }
582    else if (data.d == '1') {
583        if ($("#pnlitm" + panelItemID).css("display") == "none") {
584            $("#pnlitm" + panelItemID).css("display", "block");
585            $("#pnlitm" + panelItemID).find($("[id$='_txtDecimalValue']")).addClass("validationOverride");
586            var element = $("#pnlitm" + panelItemID);
587            $(".isActiveResponse", element).each(function (index) {
588                $(this).val("true");
589                // console.log("panel id visible" + panelItemID)
590            });
591        }
592        perfInSeconds = (new Date()).getTime() - perfInSeconds;
593        console.log("UpdateConditionalDisplay executed in miliseconds: " + perfInSeconds);
594        console.log("network speed: " + navigator.connection.downlink);
595    }
596    else { // on fail - submit the form for a complete postback
597        resetDDLsForPostBack();
598        document.forms[0].submit(); // do a full postback if the web service cannot resolve condition
599    }
600}
601var calcPerf;
602// Calculated Values
603function UpdateCalculatedValue(panelItemId, quoteId, currentUserId) {
604
605    var effectiveDate;
606    if ($('#hfEffectiveDate').length < 1) {
607        effectiveDate = "";
608    }
609    else {
610        effectiveDate = $('#hfEffectiveDate').val();
611    }
612    var cultureCode = getCookieValue("culture");// $('#hfCulture').val();
613    var requestId = $("#hdnRequestId").val();
614    var dataToSend = JSON.stringify({ 'panelItemId': panelItemId, 'quoteId': quoteId, 'formResponses': getResponsesFromForm(), 'effectiveDate': effectiveDate, 'page': page, 'cultureCode': cultureCode, 'currentUserId': currentUserId, 'requestId': requestId });
615    calcPerf = (new Date()).getTime();
616    $.ajax({
617        type: 'POST',
618        url: serviceURL + 'EvaluateCalculatedValue',
619        data: dataToSend,
620        contentType: 'application/json; charset=utf-8',
621        async: false,
622        target: '{"panelItemId":"' + panelItemId + '"}',
623        dataType: 'json'
624    }).done(OnSuccessUpdateCalculatedValue)
625        .fail(OnError);
626}
627
628function OnSuccessUpdateCalculatedValue(data, status) {
629    if (data.d == 'f') { // on fail - submit the form for a complete postback
630        resetDDLsForPostBack();
631        document.forms[0].submit(); // do a full postback if the web service cannot resolve condition
632    }
633    else {
634        $("#pnlitm" + JSON.parse(this.target).panelItemId).find($("[id$='lblCalculatedValue']")).text(data.d);
635        $("#pnlitm" + JSON.parse(this.target).panelItemId).find($("[id$='txtDecimalValue']")).val(data.d);
636    }
637    calcPerf = (new Date()).getTime() - calcPerf;
638    console.log("UpdateCalculatedValue executed in miliseconds: " + calcPerf)
639    console.log("network speed: " + navigator.connection.downlink);
640};
641
642
643function UpdateTextValue(panelItemId, quoteId, currentUserId) {
644    var effectiveDate;
645    if ($('#hfEffectiveDate').length < 1) {
646        effectiveDate = "";
647    }
648    else {
649        effectiveDate = $('#hfEffectiveDate').val();
650    }
651
652    var cultureCode = $('#hfCulture').val();
653    var requestId = $("#hdnRequestId").val();
654    var dataToSend = JSON.stringify({ 'panelItemId': panelItemId, 'quoteId': quoteId, 'formResponses': getResponsesFromForm(), 'effectiveDate': effectiveDate, 'page': page, 'cultureCode': cultureCode, 'currentUserId': currentUserId, 'requestId': requestId });
655
656    $.ajax({
657        type: 'POST',
658        url: serviceURL + 'EvaluateTextValue',
659        data: dataToSend,
660        contentType: 'application/json; charset=utf-8',
661        async: false,
662        target: '{"panelItemId":"' + panelItemId + '"}',
663        dataType: 'json'
664    }).done(OnSuccessUpdateTextValue)
665        .fail(OnError);
666}
667
668function OnSuccessUpdateTextValue(data, status) {
669    if (data.d == 'f') { // on fail - submit the form for a complete postback
670        resetDDLsForPostBack();
671        document.forms[0].submit(); // do a full postback if the web service cannot resolve condition
672    }
673    else {
674        $("#pnlitm" + JSON.parse(this.target).panelItemId).find($("[id$='txtText']")).val(data.d);
675    }
676};
677
678function updateCurrencyDisplay(number, selector, cultureTypeId) {
679
680    var dataToSend = JSON.stringify({ 'number': number, 'cultureTypeId': cultureTypeId });
681    //serviceURL = document.URL.replace(window.location.pathname, "") + "/WebService1-Refactor.asmx/";
682
683    $.ajax({
684        type: 'POST',
685        url: serviceURL + 'FormatNumberAsCurrency',
686        data: dataToSend,
687        contentType: 'application/json; charset=utf-8',
688        async: false,
689        dataType: 'json'
690    }).done(function (data) { OnSuccessUpdateCurrencyDisplay(data, selector); })
691        .fail(OnError);
692}
693
694function OnSuccessUpdateCurrencyDisplay(data, selector) {
695    $(selector).text(data.d);
696}
697
698function saveFinalQuoteFiguresToDb(finalQuoteFigures, quoteId, noteTypeId, notes, userId) {
699
700    var dataToSend = JSON.stringify({ 'finalQuoteFiguresObject': finalQuoteFigures, 'quoteId': quoteId, 'noteTypeId': noteTypeId, 'notes': notes, 'userId': userId });
701
702    $.ajax({
703        type: 'POST',
704        url: serviceURL + 'SaveFinalQuoteFiguresToDb',
705        data: dataToSend,
706        contentType: 'application/json; charset=utf-8',
707        async: false,
708        dataType: 'json'
709    }).done(function (data) { OnSuccessSaveFinalQuoteFiguresOverride(); })
710        .fail(OnError);
711}
712function OnSuccessSaveFinalQuoteFiguresOverride() {
713
714    $("[id$='hfCommittedOverride']").val($("[id$='hfStagedOverride']").val());
715    setOverrideEditMode('readonly');
716}
717
718
719
720var formatNumber = function (nStr) {
721    nStr += '';
722    x = nStr.split('.');
723    x1 = x[0];
724    x2 = x.length > 1 ? '.' + x[1] : '';
725    var rgx = /(\d+)(\d{3})/;
726    while (rgx.test(x1)) {
727        x1 = x1.replace(rgx, '$1' + ',' + '$2');
728    }
729    return x1 + x2;
730}
731
732// On Error
733function OnError(request, status, error) { // on error - submit the form for a complete postback
734
735    console.log('OnError');
736    //alert('Fail!' + status + ' ' + error)
737    alert(error + '\n' + 'Please try again!');
738    resetDDLsForPostBack();
739    document.forms[0].submit(); // do a full postback if the ajax call returned an error
740};
741
742function OnErrorLockBox(request, status, error) { // on error - submit the form for a complete postback
743
744    console.log('OnErrorLockBox');
745    console.log(error);
746    //alert('Fail!' + status + ' ' + error)
747    //alert(error + '\n' + 'Please try again!');
748    //resetDDLsForPostBack();
749    //document.forms[0].submit(); // do a full postback if the ajax call returned an error
750};
751
752function OnErrorCondDispSelectQuestion(request, status, error) { // on error - submit the form for a complete postback
753    console.log('OnErrorCondDispSelectQuestion');
754    //alert('Fail!' + status + ' ' + error)
755    alert(error + '\n' + 'Please try again!');
756    var page = window.location;
757    //var serviceURL = "/WebService1.asmx/";
758    var cdxhr = $.ajax({
759        type: 'POST',
760        url: serviceURL + 'LogError',
761        data: '{"Message":"' + status + '","source":"' + 'function SetConditionalDisplayForSelectableQuestion' + '","Line":"' + 0 + '","col":"' + 0 + '","Err"
761:"' + 0 + '","page":"' + page + '"}',
762        contentType: 'application/json; charset=utf-8',
763        async: true,
764        dataType: 'json',
765        success: LoggSuccess,
766        error: LoggError
767    });
768    resetDDLsForPostBack();
769    document.forms[0].submit(); // do a full postback if the ajax call returned an error
770};
771
772
773function OnCondDispleyError(request, status) { // on error - submit the form for a complete postback
774    console.log('OnCondDispleyError');
775    //alert('Fail!' + status + ' ' + error)
776    alert('Error! Please try again!');
777    // resetDDLsForPostBack();
778    // document.forms[0].submit(); // do a full postback if the ajax call returned an error
779    // throw "OnCondDispleyError /n" + status + "/n" + request;
780    var page = window.location;
781    //var serviceURL = "/WebService1.asmx/";
782    var cdxhr = $.ajax({
783        type: 'POST',
784        url: serviceURL + 'LogError',
785        data: '{"Message":"' + status + '","source":"' + request + '","Line":"' + 0 + '","col":"' + 0 + '","Err":"' + 0 + '","page":"' + page + '"}',
786        contentType: 'application/json; charset=utf-8',
787        async: false,
788        dataType: 'json',
789        success: LoggSuccess,
790        error: LoggError
791    });
792};
793
794function saveRenewalNotificationData(data) {
795    var stringData = JSON.stringify(data);
796    var rnxhr = $.ajax({
797        type: "POST",
798        url: serviceURL + 'SaveRenewalNotificationData',
799        data: "{data:" + stringData + "}",
800        contentType: 'application/json; charset=utf-8',
801        async: false,
802        dataType: "json",
803        success: OnSuccessSaveRenewalNotificationData,
804        error: OnError
805    });
806
807    rnxhr.abort();
808
809};
810
811function OnSuccessSaveRenewalNotificationData(data, status) {
812    if (data.d == 'f') { // on fail - submit the form for a complete postback     
813        document.forms[0].submit(); // do a full postback if the web service cannot resolve condition
814    }
815};
816
817function GetQuestionValueFromDb(quoteId, questionId) {
818    var questionValue;
819    $.ajax({
820        type: 'POST',
821        async: false,
822        url: serviceURL + 'GetQuestionValueFromDb',
823        data: '{"quoteId":"' + quoteId + '","questionId":"' + questionId + '"}',
824        contentType: 'application/json; charset=utf-8',
825        dataType: 'json',
826        success: function (data) { questionValue = data.d; },
827    });
828
829    return questionValue;
830};
831
832function getInForceBlanketBondPolicyCount(userId) {
833    var inforcePolicyCount;
834
835    var cdxhr = $.ajax({
836        type: 'POST',
837        url: serviceURL + 'GetInForceBlanketBondPolicyCount',
838        data: '{"userId":"' + userId + '"}',
839        contentType: 'application/json; charset=utf-8',
840        async: false,
841        dataType: 'json',
842        success: function (data) { inforcePolicyCount = data.d; },
843        error: OnError
844    });
845
846    return inforcePolicyCount;
847};
848
849function crossDomainAjax(url, successCallback, failureCallback) {
850    var ieVers = getInternetExplorerVersion();
851    // IE8 & 9 only Cross domain JSON GET request
852    if ('XDomainRequest' in window && window.XDomainRequest !== null) {
853
854        var xdr = new XDomainRequest(); // Use Microsoft XDR
855        xdr.open('get', url);
856        xdr.onload = function () {
857            var dom = new ActiveXObject('Microsoft.XMLDOM'),
858                JSON = $.parseJSON(xdr.responseText);
859
860            dom.async = false;
861
862            if (JSON == null || typeof (JSON) == 'undefined') {
863                JSON = $.parseJSON(data.firstChild.textContent);
864            }
865
866            successCallback(JSON); // internal function
867        };
868
869        xdr.onerror = function () {
870            failureCallback();
871            _result = false;
872        };
873
874        xdr.send();
875    }
876
877    // IE7 and lower can't do cross domain
878    // I'm using jQuery's $.browser (deprecated in 1.9 of course)
879    // You could change this to navigator.userAgent, whatever works for you of course
880
881
882
883    else if (ieVers > 0 && ieVers <= 7) {
884        return false;
885    }
886
887    // Do normal jQuery AJAX for everything else         
888    else {
889        $.ajax({
890            url: url,
891            cache: false,
892            dataType: 'json',
893            type: 'GET',
894            async: false, // must be set to false
895            success: function (data, success) {
896                successCallback(data);
897            },
898            error: failureCallback
899        });
900    }
901};
902
903function crossDomainAjaxAuthenticated(url, successCallback, failureCallback, authentication) {
904    var ieVers = getInternetExplorerVersion();
905    // IE8 & 9 only Cross domain JSON GET request
906    if ('XDomainRequest' in window && window.XDomainRequest !== null) {
907
908        var xdr = new XDomainRequest(); // Use Microsoft XDR
909        xdr.open('get', url);
910        xdr.onload = function () {
911            var dom = new ActiveXObject('Microsoft.XMLDOM'),
912                JSON = $.parseJSON(xdr.responseText);
913
914            dom.async = false;
915
916            if (JSON == null || typeof (JSON) == 'undefined') {
917                JSON = $.parseJSON(data.firstChild.textContent);
918            }
919
920            successCallback(JSON); // internal function
921        };
922
923        xdr.onerror = function () {
924            failureCallback();
925            _result = false;
926        };
927
928        xdr.send();
929    }
930
931    // IE7 and lower can't do cross domain
932    // I'm using jQuery's $.browser (deprecated in 1.9 of course)
933    // You could change this to navigator.userAgent, whatever works for you of course
934
935
936
937    else if (ieVers > 0 && ieVers <= 7) {
938        return false;
939    }
940
941    // Do normal jQuery AJAX for everything else         
942    else if (ieVers > 0 && ieVers < 20) {
943        $.ajax({
944            url: url,
945            cache: false,
946            dataType: 'json',
947            type: 'GET',
948            async: false, // must be set to false
949            success: function (data, success) {
950                successCallback(data);
951            },
952            error: failureCallback,
953            beforeSend: function (xhr) {
954                xhr.setRequestHeader("Authorization", "Basic " + authentication);
955            },
956        });
957    }
958
959    else {
960        $.ajax({
961            type: "POST",
962            url: serviceURL + 'CreateWebCall',
963            data: '{"url":"' + url + '", "username":"' + username + '", "password":"' + password + '"}',
964            contentType: 'application/json; charset=utf-8',
965            async: false,
966            dataType: "json",
967            success: MembershipSuccess,
968            error: MembershipFailure
969        });
970
971    }
972};
973
974function getBrowser() {
975
976    navigator.sayswho = (function () {
977        var ua = navigator.userAgent, tem,
978            M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
979        if (/trident/i.test(M[1])) {
980            tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
981            return 'IE ' + (tem[1] || '');
982        }
983        if (M[1] === 'Chrome') {
984            tem = ua.match(/\bOPR\/(\d+)/);
985            if (tem != null) return 'Opera ' + tem[1];
986        }
987        M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
988        if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]);
989        return M.join(' ');
990    })();
991
992    return navigator.sayswho.split(" ");
993
994};
995
996function escapeApostrophe(str) {
997    str = str.replace("'", "\\'");
998    return str;
999}
1000
1001function unescapeApostrophe(str) {
1002    str = str.replace("\\'", "'");
1003    return str;
1004}
1005
1006var spinnerTimer = 0, spinnerCloseButtonTimer = 0;
1007function showSpinner() {
1008
1009    spinnerTimer = setTimeout(function () {
1010      
1011        var spinnerBackground = $('<div />');
1012        spinnerBackground.addClass("spinner-background");
1013        $('body').append(spinnerBackground);
1014        $('.spinner__close-btn').addClass('hidden');
1015        $(".spinner__wrapper").show();
1016    }, 100);
1017
1018    showSpinnerCloseButton();
1019}
1020
1021
1022function hideSpinner() {
1023    if (spinnerTimer != null) {
1024        clearTimeout(spinnerTimer);
1025    }
1026    spinnerTimer = 0;
1027
1028    if (spinnerCloseButtonTimer != null) {
1029        clearTimeout(spinnerCloseButtonTimer);
1030    }
1031    spinnerCloseButtonTimer = 0;
1032
1033    $(".spinner__wrapper").hide();
1034    $('.spinner-background').remove();
1035    window.location(window.location.href);
1036};
1037function hideSpinner2(message) {
1038    if (spinnerTimer != null) {
1039        clearTimeout(spinnerTimer);
1040    }
1041    spinnerTimer = 0;
1042
1043    if (spinnerCloseButtonTimer != null) {
1044        clearTimeout(spinnerCloseButtonTimer);
1045    }
1046    spinnerCloseButtonTimer = 0;
1047    $(".spinner__wrapper").hide();
1048    $('.spinner-background').remove();
1049
1050    // setTimeout(function () {
1051
1052    //alert(message); 
1053    $(".message").show();
1054    //}, 100);
1055};
1056
1057
1058function showSpinnerCloseButton() {
1059    spinnerCloseButtonTimer = setTimeout(function () {
1060        $('.spinner__close-btn').addClass('displayBlock');
1061        $('.spinner__close-btn').removeClass('hidden');
1062        $('.spinner__wrapper').css('border-style', 'solid');
1063    }, 100);
1064}
1065
1066var disableSpinner = false;
1067
1068var getJsonData = function (data, dataURL) {
1069    return $.ajax({
1070        type: 'POST',
1071        data: data,
1072        dataType: 'json',
1073        contentType: 'application/json; charset=utf-8',
1074        url: dataURL
1075    });
1076}
1077
1078function OpenPolicy(quoteId, policyId, action, folder) {
1079
1080    window.location.assign("/" + folder + "/apply.aspx?QID=" + quoteId);
1081}
1082
1083function OpenQuote(quoteId, action, folder) {
1084    window.location.assign("/" + folder + "/apply.aspx?QID=" + quoteId);
1085}
1086
1087
1088function RenewPolicy(policyId, userId, folder) {
1089
1090    var cdxhr = $.ajax({
1091        type: 'POST',
1092        url: serviceURL + 'CreateRefactorRenewal',
1093        data: '{"policyId":"' + policyId + '","userId":"' + userId + '"}',
1094        contentType: 'application/json; charset=utf-8',
1095        async: false,
1096        dataType: 'json',
1097        success: function (data) { OnSuccessRenewPolicy(data, folder); },
1098        error: OnError
1099    });
1100
1101    cdxhr.abort();
1102};
1103
1104function OnSuccessRenewPolicy(data, folder) {
1105    window.location.assign("/" + folder + "/apply.aspx?QID=" + data.d);
1106};
1107
1108function CheckSelectableAnswersConditionalDispalys() {
1109    $('.sacd').each(function (i, obj) {
1110        obj.dispatchEvent(startEvent);
1111    });
1112}
1113
1114function CheckNumbericBoxLocking() {
1115    var x = $(document).find('.e-currencytextbox');
1116    $.each(x, function () {
1117        var iboxId = this.id;
1118        //  console.log("inputbox: " + iboxId);
1119        var element = document.getElementById(iboxId);
1120        element.dispatchEvent(startNBLEvent);
1121    });
1122}
1123
1124function SetConditionalDisplayForSelectableQuestion(questionId, quoteID, effectiveDate) {
1125    var requestId = $("#hdnRequestId").val();
1126    var dataToSend = JSON.stringify({ 'questionId': questionId, 'quoteId': quoteID, 'formContents': getResponsesFromForm(), 'effectiveDate': effectiveDate, 'requestId': requestId });
1127    perfInSeconds = (new Date()).getTime();
1128
1129    var cdxhr = $.ajax({
1130        type: 'POST',
1131        url: serviceURL + 'GetConditionalDisplaysForSelectableQuestion',
1132        data: dataToSend,
1133        contentType: 'application/json; charset=utf-8',
1134        async: true,
1135        dataType: 'json',
1136        success: OnSuccessSetConditionalDisplayForSelectableQuestion,
1137        error: OnErrorCondDispSelectQuestion
1138    });
1139
1140};
1141
1142function OnSuccessSetConditionalDisplayForSelectableQuestion(data, status) {
1143    if (data.d == null)
1144        return;
1145
1146    var results = JSON.parse(data.d);
1147    if (results.length == 0)
1148        return;
1149
1150    //drop down list
1151    if (results[0].InputTypeId == 5) {
1152        $.each(results, function (key, value) {
1153            var ddl = $(document).find("[data-question-id='" + value.QuestionId + "']");
1154            if (value.ShouldShow) {
1155                $(ddl).find('option[value="' + value.SelectableAnswerId + '"]').css("display", "inline");
1156            }
1157            else {
1158                $(ddl).find('option[value="' + value.SelectableAnswerId + '"]').css("display", "none");
1159            }
1160        });
1161    }
1162    //radio button list
1163    if (results[0].InputTypeId == 6) {
1164        $.each(results, function (key, value) {
1165            var rbList_table = $(document).find("[data-question-id='" + value.QuestionId + "']");
1166            var radioButton = rbList_table.find("[value='" + value.SelectableAnswerId + "']");
1167            if (value.ShouldShow) {
1168                radioButton.parent().removeClass("radio-button-list-vertical__item--hidden");
1169                radioButton.parent().addClass("radio-button-list-vertical__item");
1170            }
1171            else {
1172                radioButton.parent().addClass("radio-button-list-vertical__item--hidden");
1173                radioButton.parent().removeClass("radio-button-list-vertical__item");
1174                radioButton.prop('checked', false);
1175            }
1176        });
1177    }
1178    perfInSeconds = (new Date()).getTime() - perfInSeconds;
1179    console.log("GetConditionalDisplaysForSelectableQuestion executed in miliseconds: " + perfInSeconds);
1180    console.log("network speed: " + navigator.connection.downlink);
1181};
1182
1183//Numeric Box - Conditional Lock
1184function SetConditionalLockForNumericBox(questionId, quoteID) {
1185    var effectiveDate;
1186    if ($('#hfEffectiveDate').length < 1) {
1187        effectiveDate = "";
1188    }
1189    else {
1190        effectiveDate = $('#hfEffectiveDate').val();
1191    }
1192    var requestId = $("#hdnRequestId").val();
1193    var dataToSend = JSON.stringify({ 'questionId': questionId, 'quoteId': quoteID, 'cultureCode': $('#hfCulture').val(), 'formContents': getResponsesFromForm(), 'effectiveDate': effectiveDate, 'requestId': requestId });
1194    var cdxhr = $.ajax({
1195        type: 'POST',
1196        url: serviceURL + 'GetConditionalLockForNumericBox',
1197        data: dataToSend,
1198        contentType: 'application/json; charset=utf-8',
1199        async: false,
1200        dataType: 'json',
1201        success: OnSuccessGetConditionalLockForNumericBox,
1202        error: OnErrorLockBox
1203    });
1204
1205    cdxhr.abort();
1206};
1207
1208
1209function CheckPurchaseCode(purchaseCode) {
1210
1211    var dataToSend = JSON.stringify({ 'purchaseCode': purchaseCode, 'formContents': getResponsesFromForm() });
1212    var cdxhr = $.ajax({
1213        type: 'POST',
1214        url: serviceURL + 'CheckPurchaseCode',
1215        data: dataToSend,
1216        contentType: 'application/json; charset=utf-8',
1217        async: false,
1218        dataType: 'json',
1219        success: OnSuccessCheckCanasaPurchaseCode,
1220        error: OnErrorLockBox
1221    });
1222    cdxhr.promise();
1223    // cdxhr.abort();
1224};
1225function OnSuccessCheckCanasaPurchaseCode(data, status) {
1226    console.log('OnSuccessCheckCanasaPurchaseCode');
1227    var bool = false;
1228    // debugger;
1229    if (data.d == null)
1230        bool = false;
1231    if (data.d == "0") { bool = false; }
1232    else if (data.d == "1") { bool = true; }
1233    $('#hdnVal').val(bool);
1234    // else return false
1235
1236    //  return data.d;
1237}
1238
1239///function OnSuccessGetConditionalLockForNumericBox works only for CurrencyBox type - we need to extend to work with Numberic and % types also
1240function OnSuccessGetConditionalLockForNumericBox(data, status) {
1241    // console.log('OnSuccessGetConditionalLockForNumericBox');
1242    if (data.d == null)
1243        return;
1244    var results = JSON.parse(data.d);
1245    var questionElement = $(document).find("[data-question-id='" + results.QuestionId + "']");
1246    var numericInputBox = questionElement.find('.e-currencytextbox')[0];
1247    if (results.ShouldLock) {
1248        console.log("Lock amoutn " + results.LockAmount);
1249        $(numericInputBox).attr('disabled', 'disabled');
1250        $(numericInputBox).ejCurrencyTextbox({
1251            value: results.LockAmount
1252        });
1253        $(questionElement).addClass('disabled');
1254        $(numericInputBox).addClass('disabled');
1255    }
1256    else {
1257        if ($(numericInputBox).attr('disabled') == 'disabled') {
1258            $(questionElement).removeClass('disabled');
1259            $(numericInputBox).removeClass('disabled');
1260            $(numericInputBox).removeAttr('disabled');
1261            $(numericInputBox).ejCurrencyTextbox({
1262                value: ''
1263            });
1264        }
1265    }
1266
1267    //also update the cbIsDirty Flag to true so response is updatd in database
1268    var $panelItem = questionElement.closest("div[id*='pnlitm']");
1269    var $checkbox = $panelItem.find("input[type='checkbox'][name*='cbIsDirty']");
1270    $checkbox.prop("checked", true);
1271
1272};
1273
1274function generateUUID() { // Public Domain/MIT
1275    var d = new Date().getTime();//Timestamp
1276    var d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported
1277    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1278        var r = Math.random() * 16;//random number between 0 and 16
1279        if (d > 0) {//Use timestamp until depleted
1280            r = (d + r) % 16 | 0;
1281            d = Math.floor(d / 16);
1282        } else {//Use microseconds since page-load if supported
1283            r = (d2 + r) % 16 | 0;
1284            d2 = Math.floor(d2 / 16);
1285        }
1286        return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
1287    });
1288}
1289

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