PageSourceSearch

https://www.ucpa.co.uk/Scripts/ao-v2.js

js ucpa.co.uk collected 2026-10-07 17:56:00 UTC 8,123 bytes, 208 lines download raw bytes

1jQuery(document).ready(function ($) {
2
3    
4
5    $.validator.methods.date = function (value, element) {
6        //This is not ideal but Chrome passes dates through in ISO1901 format regardless of locale
7        //and despite displaying in the specified format.
8
9        return this.optional(element)
10            || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB")
11            || Globalize.parseDate(value, "yyyy-mm-dd")
12            || Globalize.parseDate(value, "dd/MM/yyyy HH:mm", "en-GB");
13    };
14
15    $.validator.setDefaults({
16        ignore: [],
17        errorClass: 'is-invalid',
18        messages: {
19            required: "Required"
20        },
21        highlight: function (element) {
22            $(element).addClass('is-invalid');
23            $(element).removeClass('is-valid');
24            $(element).closest('.form-group').addClass('has-danger').addClass('is-focused');
25        },
26        unhighlight: function (element) {
27            $(element).removeClass('is-invalid');
28            $(element).addClass('is-valid');
29            $(element).closest('.form-group').removeClass('has-danger').removeClass('is-focused');
30        },
31        errorElement: 'span',
32        errorPlacement: function (error, element) {
33            if (element.parent('.input-group').length) {
34                error.insertAfter(element.parent());
35            } else {
36                error.insertAfter(element);
37            }
38        }
39    });
40    
41   
42
43    AOS.init({
44        delay: 100, // values from 0 to 3000, with step 50ms
45        duration: 800, // values from 0 to 3000, with step 50ms
46
47    });
48    
49   
50});
51
52//add simple support for background images:
53document.addEventListener('lazybeforeunveil', function (e) {
54    var bg = e.target.getAttribute('data-bg');
55    if (bg) {
56    
57        e.target.style.backgroundImage = 'url(' + bg + ')';
58    }
59});
60
61function setupTelephoneField() {
62
63    const inputs = document.querySelectorAll(".mobile");
64
65    const errorMap = [
66        "Invalid number",
67        "Invalid country code",
68        "Too short",
69        "Too long",
70        "Invalid number"
71    ];
72
73    inputs.forEach(function (input) {
74
75        // create instance per input
76        var iti = window.intlTelInput(input, {
77            preferredCountries: ["gb", "us", "ie", "il", "cn"],
78            nationalMode: false,
79            initialCountry: "gb",
80            separateDialCode: true,
81            strictMode: true,
82            utilsScript: "/scripts/plugins/intlTel/js/utils.js?17",
83        });
84
85        // store instance on input
86        input._iti = iti;
87
88        input.addEventListener("change", function () {
89
90            var iti = this._iti; // 👈 correct instance
91
92            var isValid = iti.isValidNumber();
93            var countryData = iti.getSelectedCountryData();
94            var intlNumber = iti.getNumber();
95
96            var container = $(this).closest(".form-group");
97
98            if (isValid) {
99                container.find(".mobile-code").val(countryData.dialCode);
100                container.find(".mobile-number").val(intlNumber);
101
102                console.log(intlNumber);
103            }
104            else {
105                var errorCode = iti.getValidationError();
106
107                if (errorCode == -99) {
108                    alert("Your mobile number is not valid: " + intlNumber);
109                }
110                else {
111                    alert(errorMap[errorCode] + ": " + intlNumber);
112                }
113            }
114        });
115    });
116}
117
118var isMobile = false; //initiate as false
119// device detection
120if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
121    || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
121sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4))) {
122    isMobile = true;
123}
124
125$(document).ready(function () {
126
127
128if (window.location.href.indexOf('search') > -1 || window.location.href.indexOf('payment') > -1) {
129
130    $.idleTimeout('#idletimeout', '#idletimeout a', {
131        idleAfter: 1800,
132        pollingInterval: 600,
133        warningLength: 120,
134        keepAliveURL: '/ao/surface/site/keepalive',
135        serverResponseEquals: 'OK',
136        onTimeout: function () {
137            $(this).slideUp();
138            window.location = "/timeout";
139        },
140        onIdle: function () {
141            $(this).slideDown(); // show the warning bar
142        },
143        onCountdown: function (counter) {
144            $(this).find("span").html(counter); // update the counter
145        },
146        onResume: function () {
147            $(this).slideUp(); // hide the warning bar
148        }
149    });
150    }
151
152    $(document).on("click", ".modal .print", function (e) {
153       
154        var mode = 'iframe'; //popup
155        var close = mode == "popup";
156        var options = { mode: mode, popClose: close };
157        $(".modal .modal-body").printArea(options);
158    });
159
160    $('#modal1').on('hidden.bs.modal', function (e) {
161       
162        $("#modal1").modal('dispose');
163    })
164});
165
166function loadModal(title, url, params, size, static, element) {
167
168    var loadingHtml = '<h5>Loading...</h5><div class=progress><div class="progress-bar progress-bar-striped active" style="width: 100%"></div></div>';
169
170    var modal = $("#modal1");
171    if (element != null)
172        modal = element;
173
174    var modalDialog = $(modal).find(".modal-dialog");
175    var modalTitle = $(modal).find(".modal-title");
176    var modalBody = $(modal).find(".modal-body");
177
178    modalDialog.removeClass('modal-sm modal-lg modal-xl').addClass(size != null ? 'modal-' + size : "");
179
180    modalTitle.html(title);
181    modalBody.html(loadingHtml);
182
183    $.post(url, params).done(function (data) {
184        modalBody.html(data);
185    }).fail(function (xhr, status, error) {
186        // error handling
187        var msg = 
188            '<div class="alert alert-danger">' +
189            '<strong>XHR Fail: </strong>URL [ ' + error + '] load fail.' +
190            '</div>';
191
192        modalBody.html(msg);
193    });
194
195    if (static) {
196        modal.modal({
197            backdrop: 'static'
198        });
199    } else {
200     
201        modal.modal({
202            backdrop: 'true'
203        });
204    }
205
206    modal.modal("show");
207}
208

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.