PageSourceSearch

https://www.cc-pl.org/js/am-shared.js?v=1480

js cc-pl.org collected 2026-09-24 10:13:01 UTC 6,489 bytes, 207 lines download raw bytes

1"use strict";
2
3(function ($) {
4  $.fn['amShared'] = {};
5
6  $.fn['amShared']._getJSON = function (url, params) {
7    return new Promise(function (resolve, reject) {
8      var retriesRemaining = 1;
9
10      function request() {
11        $.getJSON(url, params).done(resolve).fail(function (jqXHR, textStatus, errorThrown) {
12          if (retriesRemaining > 0) {
13            retriesRemaining -= 1;
14            window.setTimeout(request, 150);
15            return;
16          }
17
18          reject(errorThrown || textStatus || jqXHR);
19        });
20      }
21
22      request();
23    });
24  };
25
26  $.fn['amShared']._bindFormEvents = function (form) {
27    form.on('focus', '.events2-missing-field', function (event) {
28      $(this).removeClass('events2-missing-field');
29    });
30  };
31
32  $.fn['amShared']._isFormClean = function (form) {
33    var clean = true;
34    var requiredFields = $('label>.required-field', form);
35
36    for (var ii = requiredFields.length - 1; ii >= 0; ii--) {
37      var input = $(requiredFields[ii]).closest('label').parent().find('.am-input');
38      var inputClean = true;
39
40      if (input.get(0)) {
41        switch (input.get(0).tagName.toLowerCase()) {
42          case 'input':
43            switch (input.attr('type')) {
44              case 'checkbox':
45                inputClean = input.is(':checked');
46                break;
47
48              default:
49                inputClean = input.val().trim().length > 0;
50            }
51
52            break;
53
54          case 'select':
55            if (input.attr('id') === 'ticket-dd') {
56              var selected = input.children('option:selected').val();
57              inputClean = typeof selected !== 'undefined' && selected !== null ? selected.length > 0 : false;
58            } else {
59              inputClean = input.val().length > 0;
60            }
61
62            break;
63
64          case 'textarea':
65          default:
66            inputClean = input.val().length > 0;
67        }
68      }
69
70      if (!inputClean) {
71        input.addClass("hightlight-field").delay(6000).queue(function () {
72          $(this).removeClass("hightlight-field").dequeue();
73        });
74        clean = false;
75      }
76    }
77
78    return clean;
79  };
80
81  $.fn['amShared']._eraseCookie = function (name) {
82    this._createCookie(name, "", -1);
83  };
84
85  $.fn['amShared']._createCookie = function (name, value, days) {
86    var expires = "";
87
88    if (days) {
89      var date = new Date();
90      date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
91      expires = "; expires=" + date.toGMTString();
92    }
93
94    document.cookie = name + "=" + value + expires + "; path=/";
95  };
96
97  $.fn['amShared']._readCookie = function (name) {
98    var nameEQ = name + "=";
99    var ca = document.cookie.split(';');
100
101    for (var i = 0; i < ca.length; i++) {
102      var c = ca[i];
103
104      while (c.charAt(0) == ' ') {
105        c = c.substring(1, c.length);
106      }
107
108      if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
109    }
110
111    return null;
112  };
113
114  $.fn['amShared']._createFieldWithObject = function (field) {
115    return $.fn['amShared']._createField(field.name, field.type, field.title, field.required, field.append, field.helpText, field.min, field.link);
116  };
117
118  $.fn['amShared']._createField = function (id, type, label, required, append, desc, min, link) {
119    if (!type) type = 'text';
120    if (!label) label = '';
121    if (!desc) desc = '';
122    if (!min) min = '0';
123    var field = $('<div class="row amf-row"></div>');
124    field.addClass('am-field-' + type);
125
126    if (append) {
127      $('<div class="col-sm-8"><div class="input-group field"></div></div>').appendTo(field);
128      $('.input-group', field).append(append);
129    } else {
130      $('<div class="col-sm-8 field"></div>').appendTo(field);
131    }
132
133    var isInModal = $(".amPopup .amPopupContent").length > 0;
134    var isInRoomPicker = $("#content .roompicker").length > 0;
135    var isInControlPanel = $(".control-layout").length > 0;
136    var isReserveScreen = $('.amnp-reserve-screen-shared').length > 0;
137    var helpEl = $('<div class="col-sm-4"></div><div class="col-sm-8 am-form-desc">' + desc + '</div>');
138    var formDescEl = helpEl.filter('.am-form-desc');
139
140    switch (type) {
141      case 'textarea':
142        field.find('.field').prepend('<textarea class="am-input form-control" id="' + id + '"></textarea>');
143        break;
144
145      case 'select':
146        field.find('.field').prepend('<select class="am-input form-control" id="' + id + '"></select>');
147        break;
148
149      case 'number':
150        field.find('.field').prepend('<input type="' + type + '" class="am-input form-control" min="' + min + '" pattern="[0-9]" id="' + id + '">');
151        break;
152
153      case 'checkbox':
154        field.find('.field').prepend('<input type="' + type + '" class="am-input" id="' + id + '">');
155        var checkboxElContainer = field.find('.field input').parent();
156
157        if (isInModal || isInRoomPicker) {
158          checkboxElContainer.removeClass('col-sm-8').addClass('col-sm-1').css('padding-left', 0).css('padding-right', 0).css('padding-top', '7px');
159          $(helpEl).filter('.col-sm-4').css('display', 'none');
160          formDescEl.removeClass('col-sm-8').addClass('col-sm-6').css('padding-top', '8px').css('padding-left', 0);
161        }
162
163        if (isInControlPanel && isReserveScreen) {
164          formDescEl.css('padding-top', 0);
165          checkboxElContainer.css('padding-top', 0);
166        }
167
168        break;
169
170      default:
171        field.find('.field').prepend('<input type="' + type + '" class="am-input form-control" id="' + id + '">');
172        break;
173    }
174
175    var labelEl = $('<label for="' + id + '" class="col-sm-4 control-label">' + label + ' </label>').prependTo(field);
176    if (required) labelEl.append('<span class="required-field"></span>');
177
178    if (undefined !== link && false !== link) {
179      var linkHref = '';
180      var currentDesc = $.trim(formDescEl.text());
181
182      if (typeof link === 'object' && null !== link) {
183        linkHref = link.href || link.url || link.link || '';
184
185        if (!currentDesc && link.text) {
186          formDescEl.text(link.text);
187        }
188      } else {
189        linkHref = link;
190
191        if (!currentDesc && link) {
192          formDescEl.text(link);
193        }
194      }
195
196      if (linkHref) {
197        formDescEl.wrapInner('<a target="_blank" href="' + linkHref + '"></a>');
198      }
199    }
200
201    helpEl.appendTo(field);
202    field.on('click', 'input,textarea,select', function () {
203      $(this).removeClass('hightlight-field');
204    });
205    return field;
206  };
207})(jQuery);

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.