PageSourceSearch

https://www.responsibletravel.com/js/date.widget.js?v=3.0.57

js responsibletravel.com collected 2026-10-02 03:21:25 UTC 4,898 bytes, 213 lines download raw bytes

1var dateWgtOpen = 0;
2
3$(document).ready(function() {
4
5  //search date widget
6
7  //popover
8  if ($('#departure-dates-widget').length) {
9    $("#ddd").popover({
10      sanitize: false,
11      placement: 'auto bottom',
12      content: $('#departure-dates-widget').html().replace(/tpl/g, 'wgt'),
13      html: true
14    });
15  }
16
17  $(document).on("focus", "#ddd", function(e) {
18    $("#ddd").popover('show');
19  });
20
21  $(document).on("click", "#date-filter .input-group-addon", function(e) {
22    $("#ddd").popover('show');
23  });
24
25  //populate widget on show
26  $(document).on("shown.bs.popover", "#ddd", function(e) {
27    var dd = $('#ddd').val();
28    var d;
29    var m;
30    var f;
31    var ml;
32
33    dateWgtOpen = 1;
34
35    if (dd.length > 0) {
36      if (dd.length > 8) {
37        //date supplied
38        d = $('#dd').val().substr(0, 2);
39        m = $('#dd').val().substr(3);
40        f = $('#flex').val();
41
42        //add days
43        addDays(m);
44
45        $('#wgtMonth').val(m);
46        $('#wgtDay').val(d);
47        $('#wgtFlex').val(f);
48        $('#wgtDay').prop("disabled", false);
49        $('#wgtFlex').prop("disabled", false);
50      }
51      else {
52        //month supplied
53        m = dd;
54
55        //add days
56        addDays(m);
57
58        $('#wgtMonth').val(m);
59        $('#wgtDay').val('0');
60        $('#wgtFlex').val('7');
61        $('#wgtDay').prop("disabled", false);
62        $('#wgtFlex').prop("disabled", true);
63      }
64    }
65    else {
66      //default to first item
67      $('#wgtMonth option:first-child').attr("selected", true);
68      m = $('#wgtMonth').val();
69
70      //add days
71      addDays(m);
72
73      $('#wgtMonth').val(m);
74      $('#wgtDay').val('0');
75      $('#wgtFlex').val('7');
76      $('#wgtDay').prop("disabled", false);
77      $('#wgtFlex').prop("disabled", true);
78    }
79  });
80
81  //fix for bug on hide
82  $(document).on("hidden.bs.popover", "#ddd", function(e) {
83    $(e.target).data("bs.popover").inState = { click: false, hover: false, focus: false }
84
85    dateWgtOpen = 0;
86  });
87
88  //events
89  $(document).on("change", "#wgtMonth", function(e) {
90    var m = $('#wgtMonth').val();
91
92    //add days
93    addDays(m);
94
95    $('#wgtDay').prop("disabled", false);
96    $('#wgtFlex').prop("disabled", true);
97 
98
99  });
100
101  $(document).on('change', '#wgtDay', function(e) {
102    //set flex
103    if ($('#wgtDay').val() == '0') {
104      $('#wgtFlex').prop("disabled", true);
105    }
106    else {
107      $('#wgtFlex').prop("disabled", false);
108
109    }
110  });
111
112
113  //actions
114  $(document).on('click', '.wgtCancel', function(e) {
115    $("#ddd").popover('hide');
116  });
117
118  $(document).on('click', '.wgtClear,.clear-dd', function(e) {
119    $('#dd').val('');
120    $('#flex').val('');
121    $('#ddd').val('');
122    $("#ddd").popover('hide');
123    submitForm();
124  });
125
126  $(document).on('click', '.wgtApply', function(e) {
127    var m = $('#wgtMonth').val();
128    var d = $('#wgtDay').val();
129    var f = $('#wgtFlex').val();
130
131    //compile date filter
132    if (m != 0) {
133      if (d == 0) {
134        $('#dd').val(m);
135        $('#flex').val('');
136        $('#ddd').val(m);
137      }
138      else {
139        $('#dd').val(d + ' ' + m);
140        $('#flex').val(f);
141        if ($('#flex').val() == '0') { $('#ddd').val(d + ' ' + m); }
142        else { $('#ddd').val(d + ' ' + m + ' +/-' + $('#flex').val() + ' days'); }
143      }
144    }
145    else {
146      $('#dd').val('');
147      $('#flex').val('');
148      $('#ddd').val('');
149    }
150    $("#ddd").popover('hide');
151    submitForm();
152  });
153
154  //auto submit on change of filter options
155    $(document).on('change', '#dd, #flex', function (e) {
156    if ($("#dd").val() != $("#dd-start").val() || $("#flex").val() != $("#flex-start").val()) {
157      submitForm();
158    }
159  });
160
161});
162
163function daysInMonth(my) {
164  var m = my.substr(0, 3);
165  var mid = getMonthIndex(m);
166  var y = my.substr(4);
167  //alert('m:' + m+', y:'+ y +', mid:'+mid); 
168  return new Date(y, mid, 0).getDate();
169}
170
171function addDays(m) {
172  console.log(m);
173  $('#wgtDay').html('');
174  $('#wgtDay').append($("<option></option>").attr("value", 0).text('Any day'));
175
176  var ml = daysInMonth(m);
177  var d;
178 
179  for (i = 1; i <= ml; i++) {
180    var dt = new Date(i + ' ' + m);
181    var td = new Date();
182    if (dt >= td) {
183      d = i + 100;
184      d = d.toString().substr(1, 2);
185      $('#wgtDay').append($("<option></option>").attr("value", d).text(i));
186    }
187  }
188}
189
190function getMonthIndex(m) {
191  var mid = new Array();
192  mid[0] = "Jan";
193  mid[1] = "Feb";
194  mid[2] = "Mar";
195  mid[3] = "Apr";
196  mid[4] = "May";
197  mid[5] = "Jun";
198  mid[6] = "Jul";
199  mid[7] = "Aug";
200  mid[8] = "Sep";
201  mid[9] = "Oct";
202  mid[10] = "Nov";
203  mid[11] = "Dec";
204
205  for (i = 0; i <= mid.length; i++) {
206    if (mid[i] == m) {
207      return i + 1;
208    } 
209  }
210}  
211
212//end search date widget
213

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.