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.