1(function( $ ) { $.fn.dt = function (options) { 2 3 var date_data_dt_from = this.find('input[data-dt-type="date"]').attr('data-dt-from'); 4 if (date_data_dt_from == '' || date_data_dt_from == 0 || date_data_dt_from == '0000-00-00' || date_data_dt_from == null || typeof date_data_dt_from === 'undefined') { 5 date_data_dt_from = new Date('1901-01-01'); 6 } 7 8 var date_data_dt_to = this.find('input[data-dt-type="date"]').attr('data-dt-to'); 9 if (typeof date_data_dt_to !== 'undefined' || date_data_dt_to == '0000-00-00') { 10 var a = date_data_dt_to.slice(0,10).split('-'); 11 date_data_dt_to = new Date(parseInt(a[0]),parseInt(a[1])-1,parseInt(a[2])); 12 } else { 13 var a = new Date(); 14 a[0] +=100; 15 date_data_dt_to = new Date(parseInt(a.getFullYear()) + 100,parseInt(a.getMonth()),a.getDate()); 16 } 17 18 var date_inter = Math.floor($(this).find('input[data-dt-type="date"]').attr('data-dt-interval') << 0); 19 if (date_inter == '' || date_inter == '0' || typeof date_inter === 'undefined') { 20 date_inter = 0; 21 } 22 23 var hour_data_dt_from = Math.floor($(this).find('input[data-dt-type="hour"]').attr('data-dt-from') << 0); 24 if (hour_data_dt_from == '' || hour_data_dt_from == null || typeof hour_data_dt_from === 'undefined') { 25 hour_data_dt_from = '08.00' << 0; 26 } 27 28 var hour_data_dt_to = Math.floor($(this).find('input[data-dt-type="hour"]').attr('data-dt-to') << 0); 29 if (hour_data_dt_to == '' || hour_data_dt_to == null || typeof hour_data_dt_to === 'undefined') { 30 hour_data_dt_to = '18.00' << 0; 31 } 32 33 var hour_inter = Math.floor($(this).find('input[data-dt-type="hour"]').attr('data-dt-interval') << 0); 34 if (hour_inter == '' || hour_inter == null || hour_inter == '0' || typeof hour_inter === 'undefined') { 35 hour_inter = 1; 36 } 37 38 var minute_data_dt_from = Math.floor($(this).find('input[data-dt-type="minute"]').attr('data-dt-from') << 0); 39 if (minute_data_dt_from == '' || minute_data_dt_from == null || typeof minute_data_dt_from === 'undefined') { 40 minute_data_dt_from = 0; 41 } 42 43 var minute_data_dt_to = Math.floor($(this).find('input[data-dt-type="minute"]').attr('data-dt-to') << 0); 44 if (minute_data_dt_to == '' || minute_data_dt_to == null || typeof minute_data_dt_to === 'undefined') { 45 minute_data_dt_to = 59; 46 } 47 48 var minute_inter = Math.floor($(this).find('input[data-dt-type="minute"]').attr('data-dt-interval') << 0); 49 if (minute_inter == '' ||minute_inter == null || minute_inter == '0' || typeof minute_inter === 'undefined') { 50 minute_inter = 60; 51 } 52 53 var date_input_name = $(this).find('input[data-dt-type="date"]').attr('name'); 54 if (date_input_name == null || typeof date_input_name === 'undefined') { 55 date_input_name = ''; 56 } 57 58 var hour_input_name = $(this).find('input[data-dt-type="hour"]').attr('name'); 59 if (hour_input_name == null || typeof hour_input_name === 'undefined') { 60 hour_input_name = ''; 61 } 62 63 var minute_input_name = $(this).find('input[data-dt-type="hour"]').attr('name'); 64 if (minute_input_name == null || typeof minute_input_name === 'undefined') { 65 minute_input_name = ''; 66 } 67 68 var opening_times_text = $(this).find('input[data-dt-type="hour"]').attr('data-opening-times'); 69 var time_range; 70 71 if (opening_times_text == null || opening_times_text == '' || typeof opening_times_text === 'undefined') { 72 time_range = {'default':[0,24]}; 73 } else { 74 var opening_times_array = []; 75 opening_times_array = opening_times_text.split('â').join(',').split(',', 4); 76 77 for (var i = 0; i < 4; i++) { 78 opening_times_array[i] = $.trim(opening_times_array[i].replace('.00', '')); 79 } 80 81 time_range = { 82 'default': [opening_times_array[0], opening_times_array[1]], 83 '6': [opening_times_array[2], opening_times_array[3]] 84 } 85 } 86 87 var active_month = parseInt(new Date().getMonth()); 88 var active_year = parseInt(new Date().getFullYear()); 89 90 var settings = $.extend({ 91 build: true, // 92 type:'single', 93 showHourMinute: true, // 94 dateFormat: 'calendar', // 'list', 'flexible' 95 dateFormatTreshhold: 15, // 96 activeMonth: active_month, // 97 activeYear: active_year, // 98 dateMin: date_data_dt_from, // yyyy-mm-dd 99 dateMax: date_data_dt_to, // 100 dateRange: date_inter, // w dniach; ustawia dÅugoÅÄ okresu na staÅe : dateMin + dateRange 101 excludeDayOfWeek: [0], // 102 excludeDate: [], // 103 timeRange: time_range, 104 timeHourMin: hour_data_dt_from, // 105 timeHourMax: hour_data_dt_to, // 106 timeHourInterval: hour_inter, // 107 timeMinuteMin: minute_data_dt_from, // 108 timeMinuteMax: minute_data_dt_to, // 109 timeMinuteInterval: minute_inter, // 110 dateValidationRules: {}, // wg. jQuery.validate 111 hourValidationRules: {}, // wg. jQuery.validate 112 minuteValidationRules: {}, // wg. jQuery.validate 113 dateValidationMessages: {}, // wg. jQuery.validate 114 hourValidationMessages: {}, // wg. jQuery.validate 115 minuteValidationMessages: {}, // wg. jQuery.validate 116 dateContainerClass:'', // 117 hourContainerClass:'', // 118 minuteContainerClass:'', 119 datePlaceholder: 'yyyy-mm-dd', 120 dateSelectYearLength: 15, 121 dateInputName:date_input_name, // 122 hourInputName:hour_input_name, // 123 minuteInputName:minute_input_name, // 124 required: true, 125 date_ok: false // 126 127 }, options); 128 129 // console.log(this); 130 this.data('dt',settings); 131 132 // safety feature - czy jest zainicjalizowany 133 settings = this.data('dt'); 134 135 //poprawki 136 if (settings.timeRange == {}) { 137 updatePlugin(this,{'timeRange':{'default':[0,24]}}) 138 } 139 140 return this.each(function() { 141 142 var $releaser = $(this); 143 var settings = $releaser.data('dt'); 144 var n_arr = []; 145 146 var focus_in, input_width; 147 var focus_out; 148 var items_array_day, items_array_hour, items_array_minute; 149 var opening_times_array = []; 150 var week_day = ['Pn', 'Wt', 'År', 'Cz', 'Pt', 'So', 'Nd'];
151 var month = ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru']; 152 var actual_month, actual_year; 153 154 actual_month = settings.activeMonth; 155 actual_year = settings.activeYear; 156 157 158 $(document).on('click', '#page-wrapper, .main, #main', function (e) { 159 160 if (!$(e.target).closest('.dt-calendar').length) { 161 setTimeout(function () { 162 data_type = 'date'; 163 $('[class^="dt-option-container-"]') 164 .not( 165 $(e.target).siblings('[class^="dt-option-container-"]') 166 ).slideUp(100, function () { 167 // checkValues(); 168 }); 169 }, 200); 170 } else { 171 e.preventDefault(); 172 return false; 173 } 174 }) 175 176 $releaser.on('focusin', 'input[type="dt"]', function (e) { 177 178 console.log(e.target); 179 focus_in = $(this).attr('data-dt-type'); 180 var settings = $releaser.data('dt'); 181 182 console.log(settings); 183 184 checkValues(); 185 setTimeout(function () { 186 $releaser.find('[class*="dt-option-container-' + focus_in + '"]').slideDown(400, function() { 187 }); 188 }, 250); 189 }); 190 191 $releaser.on('click', '[data-dt-option]:not([disabled="disabled"])', function (e) { 192 // console.log('click', '.calendar [data-dt-option]'); 193 e.preventDefault(); 194 195 if ($(this).attr('disabled') == 'disabled') { 196 return false; 197 } else { 198 var root = $(this).closest('[data-dt="datetime"]'); 199 var value = $(this).attr('data-dt-option'); 200 var data_type = $(this).closest($('[class^="dt-option-container-"]')).attr('data-dt-type'); 201 202 root.find('input[data-dt-type="' + data_type + '"]').val(value); 203 root.find('input[data-dt-type="' + data_type + '"]').trigger('change'); 204 205 206 // console.log(root.attr('id'),value,data_type); 207 208 setTimeout(function () { 209 $releaser.find('[class*="dt-option-container-' + data_type + '"]').slide
209Up(100, function () { 210 checkValues(); // ************ 211 }); 212 }, 350); 213 } 214 return false; 215 }); 216 217 $releaser.on('change', 'select.select-dt-month', function (e) { 218 var settings = $releaser.data('dt'); 219 // console.log('change', 'select.select-dt-month'); 220 e.stopPropagation(); 221 e.preventDefault(); 222 actual_month = parseInt($(this).val()); 223 updatePlugin($releaser, {activeMonth:actual_month}); 224 225 setTimeout(function () { 226 // console.log($releaser, settings, actual_month); 227 renderContainer(); 228 },500) 229 230 }); 231 232 $releaser.on('change', 'select.select-dt-year', function (e) { 233 var settings = $releaser.data('dt'); 234 // console.log('change', 'select.select-dt-year') 235 e.stopPropagation(); 236 e.preventDefault(); 237 actual_year = parseInt($(this).val()); 238 if (isNaN(actual_year)){ 239 console.log('NAN'); 240 return; 241 } else { 242 updatePlugin($releaser, {activeYear:actual_year}); 243 244 } 245 246 renderContainer(); 247 }); 248 249 $releaser.on('click', '.dt-option-container-date .next-month a', function (e) { 250 // console.log('click', '.dt-option-container-date .next-month a') 251 var settings = $releaser.data('dt'); 252 253 actual_month = settings.activeMonth; 254 actual_year = parseInt(settings.activeYear); 255 var previousActiveYear = actual_year; 256 var previousActiveMonth = actual_month; 257 e.stopPropagation(); 258 e.preventDefault(); 259 $(this).off('click'); 260 261 actual_month << 0; 262 actual_month = (actual_month + 1) % 12; 263 264 if (actual_month == 0) { 265 actual_year << 0; 266 actual_year += 1; 267 if (n_arr.indexOf(actual_year) < 0) { 268 actual_year = previousActiveYear; 269 actual_month = previousActiveMonth; 270 } 271 } 272 console.log(actual_year); 273 updatePlugin($releaser,{activeMonth: actual_month}); 274 if (isNaN(actual_year)){ 275 console.log('NAN'); 276 return; 277 } else { 278 updatePlugin($releaser, {activeYear: actual_year}); 279 } 280 renderContainer(); 281 }); 282 283 $releaser.on('click', '.dt-option-container-date .prev-month a', function (e) { 284 // console.log('click', '.dt-option-container-date .prev-month a') 285 var settings = $releaser.data('dt'); 286 actual_month = settings.activeMonth; 287 actual_year = parseInt(settings.activeYear); 288 var previousActiveYear = actual_year; 289 var previousActiveMonth = actual_month; 290 291 e.stopPropagation(); 292 e.preventDefault(); 293 actual_month << 0; 294 if (actual_month == 0) { 295 actual_year << 0; 296 actual_year = actual_year - 1; 297 298 actual_month = 12; 299 300 if (n_arr.indexOf(actual_year) < 0) { 301 actual_year = previousActiveYear; 302 actual_month = previousActiveMonth + 1; 303 } 304 } 305 actual_month = (actual_month - 1); 306 307 updatePlugin($releaser,{activeMonth: actual_month}); 308 if (isNaN(actual_year)){ 309 console.log('NAN'); 310 return; 311 } else { 312 updatePlugin($releaser, {activeYear: actual_year}); 313 } 314 renderContainer(); 315 }); 316 317 $releaser.on('activateHourMinute', 'a', function () { 318 // console.log('activateHourMinute'); 319 activateHourMinute(); 320 }) 321 322 function renderContainer(mode) { 323 var settings = $releaser.data('dt'); 324 325 checkOpeningHours(); 326 activateHourMinute(); 327 328 if (settings.type == 'group') { 329 var value_from = $releaser.closest('[data-dt-group="group"]').attr('data-dt-from'); 330 var value_to = $releaser.closest('[data-dt-group="group"]').attr('data-dt-to'); 331 332 if ($releaser.attr('data-dt-group-type') == 'dt-from' ) { 333 334 var init_date_from_value = value_from.slice(0, 10); 335 var a = init_date_from_value.split('-'); 336 337 var init_hour_from_value = value_from.slice(11, 13); 338 var init_minute_from_value = value_from.slice(14, 16); 339 340 341 if ($releaser.find('[data-dt-type="date"]').val() == init_date_from_value ) { 342 // 343 } else if ($releaser.find('[data-dt-type="date"]').val() == '' ) { 344 $releaser.find('[data-dt-type="date"]').val(init_date_from_value); 345 346 actual_month = parseInt(a[1] - 1); 347 actual_year = parseInt(a[0]); 348 349 updatePlugin($releaser, {activeMonth:actual_month}); 350 if (isNaN(actual_year)){ 351 console.log('NAN'); 352 return; 353 } else { 354 updatePlugin($releaser, {activeYear: actual_year}); 355 } 356 // activateHourMinute(); 357 checkValues();
358 359 } 360 361 if ($releaser.find('[data-dt-type="hour"]').val() == init_hour_from_value ) { 362 // 363 } else if ($releaser.find('[data-dt-type="hour"]').val() == '' ) { 364 $releaser.find('[data-dt-type="hour"]').val(init_hour_from_value); 365 } 366 367 if ($releaser.find('[data-dt-type="minute"]').val() == init_minute_from_value ) { 368 // 369 } else if ($releaser.find('[data-dt-type="minute"]').val() == '' ) { 370 $releaser.find('[data-dt-type="minute"]').val(init_minute_from_value); 371 } 372 } 373 if ($releaser.attr('data-dt-group-type') == 'dt-to') { 374 var init_date_to_value = value_to.slice(0,10); 375 var a = init_date_to_value.split('-'); 376 var init_hour_to_value = value_to.slice(11, 13); 377 var init_minute_to_value = value_to.slice(14, 16); 378 379 if ($releaser.find('[data-dt-type="date"]').val() == init_date_to_value ) { 380 } else if ($releaser.find('[data-dt-type="date"]').val() == '' ) { 381 $releaser.find('[data-dt-type="date"]').val(init_date_to_value); 382 actual_month = parseInt(a[1] - 1); 383 actual_year = parseInt(a[0]); 384 385 updatePlugin($releaser, {activeMonth:actual_month}); 386 if (isNaN(actual_year)){ 387 console.log('NAN'); 388 return; 389 } else { 390 updatePlugin($releaser, {activeYear: actual_year}); 391 } 392 // activateHourMinute(); 393 checkValues(); 394 } 395 396 if ($releaser.find('[data-dt-type="hour"]').val() == init_hour_to_value ) { 397 // 398 } else if ($releaser.find('[data-dt-type="hour"]').val() == '' ) { 399 $releaser.find('[data-dt-type="hour"]').val(init_hour_to_value); 400 } 401 402 if ($releaser.find('[data-dt-type="minute"]').val() == init_minute_to_value ) { 403 // 404 } else if ($releaser.find('[data-dt-type="minute"]').val() == '' ) { 405 $releaser.find('[data-dt-type="minute"]').val(init_minute_to_value); 406 } 407 } 408 409 } else if (settings.type == 'single') { 410 411 // console.log($releaser); 412 413 var value = $releaser.attr('data-dt-value'); 414 415 // console.log(value); 416 417 if (typeof value === 'undefined' || value == '' || value == 0) { 418 // console.log(settings); 419 // var a = (new Date()).toISOString().slice(0,10).split('-'); 420 // init_date_value = new Date(parseInt(a[0]),parseInt(a[1])-1,parseInt(a[2])) 421 422 // value = (new Date()).toISOString(); 423 } else { 424 425 var init_date_value = value.slice(0, 10); 426 var a = init_date_value.split('-'); 427 var init_hour_value = value.slice(11, 13); 428 var init_minute_value = value.slice(14, 16); 429 430 if ($releaser.find('[data-dt-type="date"]').val() == init_date_value) { 431 // 432 } else if ($releaser.find('[data-dt-type="date"]').val() == '') { 433 $releaser.find('[data-dt-type="date"]').val(init_date_value); 434 actual_month = parseInt(a[1] - 1); 435 actual_year = parseInt(a[0]); 436 437 updatePlugin($releaser, {activeMonth: actual_month}); 438 if (isNaN(actual_year)){ 439 console.log('NAN'); 440 return; 441 } else { 442 updatePlugin($releaser, {activeYear: actual_year}); 443 } 444 // activateHourMinute(); 445 // checkValues();
446 } 447 448 if ($releaser.find('[data-dt-type="hour"]').val() == init_hour_value) { 449 // 450 } else if ($releaser.find('[data-dt-type="hour"]').val() == '') { 451 $releaser.find('[data-dt-type="hour"]').val(init_hour_value); 452 } 453 454 if ($releaser.find('[data-dt-type="minute"]').val() == init_minute_value) { 455 // 456 } else if ($releaser.find('[data-dt-type="minute"]').val() == '') { 457 $releaser.find('[data-dt-type="minute"]').val(init_minute_value); 458 } 459 } 460 } 461 462 463 // console.log($releaser.find('input[type="dt"]')); 464 465 $releaser.find('input[type="dt"]').each(function () { 466 467 // var data_type = $(this).attr('data-dt-type'); 468 input_width = $(this).width() + 20; 469 var position = $(this).position().left + 2; 470 471 472 // console.log($(this)); 473 if ($(this).attr('data-dt-type') == 'date') { 474 var today = new Date(); 475 var min,max,inter; 476 477 var text_date = settings.dateMin; 478 // console.log(text_date); 479 480 if (Object.prototype.toString.call(text_date) !== '[object Date]') { 481 var text_date_arr = []; 482 483 text_date_arr = text_date.split('-'); 484 min = new Date(text_date_arr[0], text_date_arr[1] - 1, text_date_arr[2]); 485 } else { 486 min = text_date; 487 } 488 489 // console.log(min); 490 updatePlugin($releaser,{dateMin:min}); 491 492 if (settings.dateRange == 0 || settings.dateRange == '' || settings.dateRange == {} ) { 493 inter = ''; 494 } else { 495 inter = settings.dateRange; 496 } 497 498 if (settings.dateRange == 0) { 499 max = new Date(settings.dateMax); 500 501 } else { 502 var max = new Date(min.getFullYear(), min.getMonth(), min.getDate() + settings.dateRange); 503 } 504 505 updatePlugin($releaser,{dateMax:max}) 506 507 var items_array = []; 508 var option_list = ''; 509 items_array_day = []; 510 511 if (inter < 1) { 512 inter = 1; 513 } 514 // createCalendarArray(min, max, inter); 515 516 517 518 var diff = ((max - min) / (1000 * 60 * 60 * 24)); 519 520 var date_format = settings.dateFormat; 521 522 if (date_format == 'calendar') { 523 // 524 } else if (date_format == 'list') { 525 if (diff > 31 ) {diff = 31;} 526 } else if (date_format == 'flexible') { 527 var treshhold = settings.dateFormatTreshhold << 0; 528 if (items_array_day.length > treshhold) { 529 date_format = 'calendar'; 530 } else { 531 date_format = 'list'; 532 } 533 } else { 534 date_format = 'calendar'; 535 } 536 $releaser.find('.dt-option-container-date').addClass(date_format); 537 538 539 if (date_format == 'calendar') { 540 var min_tmp = new Date( parseInt(settings.activeYear), parseInt(settings.activeMonth), 1); 541 542 var max_tmp = new Date( parseInt(settings.activeYear), parseInt(settings.activeMonth), 32); 543 544 if (min<min_tmp) { 545 min = min_tmp 546 } 547 if (max>max_tmp) { 548 max = max_tmp 549 } 550 } 551 552 553 554 diff = ((max - min) / (1000 * 60 * 60 * 24)); 555 if (diff>32){diff = 32}; 556 557 for (var i = 0; i <= diff; i++) { 558 var item_date = new Date(min); 559 560 item_date = new Date(parseInt(min.getFullYear()),parseInt(min.getMonth()),parseInt(min.getDate())+i); 561 562 var item_date_format = item_date.toISOString().slice(0,10); 563 564 if ($.inArray(item_date.getDay(), settings.excludeDayOfWeek) > -1 || 565 $.inArray(item_date_format, settings.excludeDate) > -1) { 566 567 } else { 568 if($.inArray(item_date,items_array) == -1) { 569 items_array.push(item_date); 570 item_date = convertDate(item_date); 571 items_array_day.push(item_date); 572 } 573 } 574 575 } 576 577 if (date_format == 'calendar') { 578 var calendar_area = createCalendarArray(min, max, inter); 579 580 // console.log($releaser); 581 // console.log($releaser.find('.dt-option-container-date')); 582 // console.log(calendar_area); 583 584 $releaser.find('.dt-option-container-date').html(calendar_area).css({ 585 'left': position, 586 'width': input_width, 587 'min-width': 286 588 }); 589 590 } else if (date_format == 'list') { 591 592 var date_value = $releaser.find('input[data-dt-type="date"]').val(); 593 594 for (var n = 0; n < items_array_day.length; n++) { 595 596 if (date_value == items_array_day[n]) { 597 selected_class = 'selected'; 598 } else { 599 selected_class = ''; 600 } 601 602 var dow; 603 604 if (items_array_day[n].indexOf('-') > -1) { 605 var dow_parts = items_array_day[n].split('-'); 606 dow = week_day[(new Date(dow_parts[0],dow_parts[1]-1,dow_parts[2]).getDay() + 6) %7 ]; 607 608 } else { 609 var dow = ''; 610 } 611 612 option_list = option_list + 613 '<div class="'+selected_class+'" data-dt-option="' + items_array_day[n] + '"> '+items_array_day[n] + 614 '<span class="dow">' + 615 dow+'</span></div>' 616 } 617 618 $releaser.find('.dt-option-container-date').html(option_list).css({ 619 'left': position, 620 'width': input_width 621 }); 622 } 623 624 } else if ($(this).attr('data-dt-type') == 'hour') { 625 var min = settings.timeHourMin; 626 var max = settings.timeHourMax; 627 var inter = settings.timeHourInterval; 628 629 var option_list = ''; 630 items_array_hour = []; 631 632 if (min > 24 || min < 0) { 633 min = 0; 634 } 635 if (max > 24) { 636 max = 24; 637 } 638 if (inter > 23 || inter < 1) { 639 inter = 1; 640 } 641 642 for (var i = min; i < max; i = i + inter) { 643 i_leading_0 = (i < 10) ? ("0" + i) : i.toString(); 644 645 if (items_array_hour.indexOf(i_leading_0) == -1) { 646 items_array_hour.push(i_leading_0); 647 } 648 } 649 650 var hour_value = $releaser.find('input[data-dt-type="hour"]').val(); 651 652 for (var n = 0; n < items_array_hour.length; n++) { 653 654 if (hour_value == items_array_hour[n]) { 655 selected_class = 'selected'; 656 } else { 657 selected_class = ''; 658 } 659 660 option_list = option_list + 661 '<div class="'+selected_class+'" data-dt-option="' + items_array_hour[n] + '">' + 662 items_array_hour[n] + 663 '</div>' 664 } 665 666 $releaser.find('.dt-option-container-hour').html(option_list).css({'left': position, 'width': input_width}); 667 668 } else if ($(this).attr('data-dt-type') == 'minute') { 669 var min = settings.timeMinuteMin; 670 var max = settings.timeMinuteMax; 671 var inter = settings.timeMinuteInterval; 672 var option_list = ''; 673 674 items_array_minute = []; 675 676 if (min > 59 || min < 0 ) { 677 min = 0; 678 } 679 if (max > 59) { 680 max = 59; 681 } 682 if (inter < 5) { 683 inter = 5; 684 } 685 686 for (var i = min; i <= max; i = i + inter) { 687 i_leading_0 = (i < 10) ? ("0" + i) : i.toString(); 688 689 if (items_array_minute.indexOf(i_leading_0) == -1) { 690 items_array_minute.push(i_leading_0); 691 } 692 } 693 694 var minute_value = $releaser.find('input[data-dt-type="minute"]').val(); 695 696 for (var n = 0; n < items_array_minute.length; n++) { 697 698 if (minute_value == items_array_minute[n]) { 699 selected_class = 'selected'; 700 } else { 701 selected_class = ''; 702 } 703 704 option_list = option_list + 705 '<div class="'+selected_class+'" data-dt-option="' + items_array_minute[n] + '">' + 706 items_array_minute[n] + 707 '</div>' 708 } 709 710 $releaser.find('.dt-option-container-minute').html(option_list).css({ 711 'left': position, 712 'width': input_width 713 }); 714 } 715 }); 716 } 717 718 function activateHourMinute() { 719 var settings = $releaser.data('dt'); 720 721 if (settings.date_ok == false) { 722 $releaser.find('input[type="dt"][data-dt-type="hour"],input[type="dt"][data-dt-type="minute"]').prop('disabled', 'disabled').css('opacity', '0.4'); 723 } 724 if (settings.date_ok == true) { 725 $releaser.find('input[type="dt"][data-dt-type="hour"],input[type="dt"][data-dt-type="minute"]').prop('disabled', false).css('opacity', '1'); 726 } 727 } 728 729 function checkValues() { 730 var settings = $releaser.data('dt'); 731 $releaser.find('input[type="dt"]').each(function () { 732 var data_type = $(this).attr('data-dt-type'); 733 var $this = $(this); 734 var value = $this.val(); 735 736 if (data_type == 'date') { 737 var items_array = items_array_day; 738 } else if (data_type == 'hour') { 739 var items_array = items_array_hour; 740 } else if (data_type == 'minute') { 741 var items_array = items_array_minute; 742 } 743 744 if (typeof items_array === 'undefined') { 745 items_array = []; 746 } 747 748 if (typeof value === 'undefined') { 749 value = '' 750 } 751 752 if (typeof $this !== 'undefined') { 753 if (items_array.indexOf(value) == -1) { 754 if (settings.type != 'group') 755 $this.val(''); 756 } 757 } 758 759 760 var current_date_value = value; 761 762 if(data_type == 'date') { 763 764 if (current_date_value == '' || typeof current_date_value === 'undefined') { 765 updatePlugin($releaser, {date_ok:false}); 766 } else { 767 updatePlugin($releaser, {date_ok:true}); 768 var actual_date = new Date(current_date_value).getDay(); 769 if (actual_date == 6) { 770 setDayOfWeek(actual_date, $(this)); 771 } else { 772 setDayOfWeek(actual_date, $this); 773 } 774 } 775 } 776 777 $('[class^="dt-option-container-"]').each(function () { 778 $(this).html(''); 779 }); 780 781 renderContainer(); 782 activateHourMinute(); 783 784 }) 785 } 786 787 function setDayOfWeek(day_num, obj) { 788 var settings = $releaser.data('dt'); 789 790 var min,max; 791 792 var opening_times = settings.timeRange; 793
794 if (day_num in opening_times) { 795 min = opening_times[day_num][0] << 0; 796 max = opening_times[day_num][1] << 0; 797 } else { 798 min = opening_times['default'][0] << 0; 799 max = opening_times['default'][1] << 0; 800 } 801 802 updatePlugin($releaser,{timeHourMin:min}) 803 updatePlugin($releaser,{timeHourMax:max}) 804 805 } 806 807 function checkOpeningHours() { 808 var settings = $releaser.data('dt'); 809 810 var opening_times_text = $('[data-dt="datetime"]').find('input[type="dt"][data-dt-type="hour"]').attr('data-opening-times'); 811 812 if (opening_times_text == '' || typeof opening_times_text === 'undefined') { 813 opening_times_text = settings.timeRange; 814 }; 815 816 if (typeof opening_times_text !== 'object') { 817 818 if (opening_times_text.indexOf('â') > -1) { 819 opening_times_array = opening_times_text.split('â').join(',').split(',', 4); 820 for (var i = 0; i < 4; i++) { 821 opening_times_array[i] = $.trim(opening_times_array[i].replace('.00', '')); 822 } 823 } else { 824 // 825 } 826 } 827 } 828 829 function convertDate(inputFormat) { 830 function pad(s) { 831 return (s < 10) ? '0' + s : s; 832 } 833 834 var d = new Date(inputFormat); 835 return [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join('-'); 836 837 } 838 839 function createCalendarArray(min, max, inter) { 840 841 // console.log(min, max, inter); 842 843 var settings = $releaser.data('dt'); 844 845 846 // console.log(settings); 847 848 849 var min_month = settings.dateMin.getMonth(); 850 var max_month = settings.dateMax.getMonth(); 851 852 var min_year = settings.dateMin.getFullYear(); 853 var max_year = settings.dateMax.getFullYear(); 854 855 856 var html = ''; 857 var option_month = ''; 858 var option_year = ''; 859 var calendar_days = ''; 860 var selected_month; 861 var selected_year; 862 actual_month = settings.activeMonth; 863 actual_year = settings.activeYear; 864 865 // console.log(actual_year); 866 867 for (var i = 0; i < month.length; i++) { 868 869 (i == actual_month) ? selected_month = 'selected="selected"' : selected_month = ''; 870 option_month = option_month + '<option value="' + i + '" ' + selected_month + '>' + month[i] + '</option>' 871 } 872 873 var n = parseInt(settings.dateSelectYearLength/2); 874 n_arr = []; 875 876 for (var k = parseInt(settings.dateMin.getFullYear()); k < parseInt(settings.dateMax.getFullYear()) + 1; k++) { 877 n_arr.push(k); 878 } 879 880 // console.log(n_arr); 881 var przes = 0; 882 if (n_arr.indexOf(settings.activeYear - n) < 0) { 883 przes = settings.activeYear - Math.min.apply(this, n_arr) - n ; 884 } 885 if (n_arr.indexOf(settings.activeYear + n) < 0) { 886 przes = settings.activeYear - Math.max.apply(this, n_arr) + n; 887 } 888 889 // console.log(przes); 890 for (var i = settings.activeYear - n - przes; i < settings.activeYear + n - przes + 1; i++) { 891 if (n_arr.indexOf(i)<0) continue; 892 893 actual_year = actual_year; 894 var new_year = i; 895 selected_year = (new_year == actual_year) ? 'selected="selected"' : ''; 896 897 option_year = option_year + '<option id="' + new_year + '" ' + selected_year + '>' + new_year + '</option>' 898 } 899 900 calendar_days = renderCalendarDays(actual_month, actual_year); 901 html = 902 '<div class="dt-calendar">' + 903 904 '<div class="inline-block prev-month pull-left"><a href="#"><span class="bmw-pos-nav-previous-18"></span></a></div>' + 905 906 '<div class="select-dt"><select type="text" class="select-dt-month" ' + selected_month + ' >' + option_month + '</select></div>' + 907 '<div class="select-dt"><select type="text" class="select-dt-year">' + option_year + '</select></div>' + 908 909 '<div class="inline-block next-month pull-right"><a href="#"><span class="bmw-pos-nav-next-18"></a></span></div>' + 910 911 '<div class="calendar-area">' + calendar_days + '</div>' + 912 913 '</div>' 914 915 // console.log(option_year); 916 917 return html; 918 } 919 920 function renderCalendarDays(actual_month, actual_year) { 921 var settings = $releaser.data('dt'); 922 actual_month = settings.activeMonth; 923 actual_year = settings.activeYear; 924 925 var calendar_days_html = ''; 926 var calendar_days_row_html = ''; 927 var date_1 = new Date(actual_year, actual_month, 1); 928 var offset = date_1.getUTCDay(); 929 var month_leading_0 = actual_month << 0; 930 var header_class; 931 var holiday_class; 932 var today_class; 933 var selected_class; 934 935 month_leading_0 += 1; 936 937 month_leading_0 = (month_leading_0 < 10) ? ("0" + month_leading_0) : month_leading_0.toString(); 938 939 940 for (var row = -1; row < 6; row++) { 941 // calendar_days_row_html = calendar_days_row_html + '<div class="row">'; 942 943 if (row == -1) { 944 header_class = 'calendar_header' 945 } else { 946 header_class = '' 947 }; 948 calendar_days_html = '<div class="row pl-5 margin-left-1 ' + header_class + ' ">'; 949 for (var dow = 0; dow < 7; dow++) { 950 951 var actual_day = (dow + 1) + row * 7 - offset; 952 var day_leading_0 = actual_day << 0; 953 day_leading_0 = (day_leading_0 < 10) ? ("0" + day_leading_0) : day_leading_0.toString(); 954 955 if (row == -1) { 956 calendar_days_html = calendar_days_html + '<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 calendar-day-number"><span href="#" class="calendar-day-number no-border bold">' + week_day[dow] + '</span></div>' 957 } else if (actual_day < 1) { 958 calendar_days_html = calendar_days_html + '<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 calendar-day-number"><span href="#" class="calendar-day-number no-border"></span></div>' 959 } else if (actual_day != (new Date(actual_year, actual_month, actual_day)).getDate()) { 960 // 961 } else { 962 var date_value = $releaser.find('input[type="dt"]').val(); 963 var data_dt_option = actual_year + '-' + month_leading_0 + '-' + day_leading_0; 964 var disabled_attr; 965 966 if (actual_year == new Date().getFullYear() && actual_month == new Date().getMonth() && actual_day == new Date().getDate()) { 967 today_class = 'today' 968 } else { 969 today_class = '' 970 } 971 972 if ($.inArray(data_dt_option, items_array_day) == -1) { 973 disabled_attr = 'disabled="disabled"'; 974 } else { 975 disabled_attr = ''; 976 } 977 978 if (date_value == data_dt_option) { 979 selected_class = 'selected' 980 } else { 981 selected_class = '' 982 } 983 984 calendar_days_html = calendar_days_html + '<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1 calendar-day-number " data-dt-option="' + data_dt_option + '" ' + disabled_attr + '><a href="#" class="calendar-day-number ' + today_class + ' ' + selected_class + '">' + actual_day + '</a></div>' 985 } 986 } 987 988 calendar_days_row_html = calendar_days_row_html + calendar_days_html + '</div>'; 989 990 } 991 return calendar_days_row_html; 992 } 993 994 995 996 $(document).ready(function () { 997 if (settings.build) { 998 var class_date_separator = ''; 999 var required = settings.required ? 'required' : ''; 1000 1001 if (settings.showHourMinute) { 1002 class_date_separator = 'date-time-separator'; 1003 var html = '<div class="col-lg-7 col-md-7 col
1003-sm-7 col-xs-7 typo-headlines-xs-mixed ul-no-padding '+ settings.dateContainerClass +'">' + 1004 '<input type="dt" name="'+ settings.dateInputName +'" data-dt-type="date" ' + 1005 'class="ul-no-padding '+ class_date_separator +'" value="" placeholder="'+settings.datePlaceholder+'" ' + required + ' readonly>' + 1006 '</div>'; 1007 } else { 1008 var html = '<div class="col-xs-12 typo-headlines-xs-mixed ul-no-padding ' + settings.dateContainerClass + '">' + 1009 '<input type="dt" name="' + settings.dateInputName + '" ' +' data-dt-type="date" ' + 1010 'class="ul-no-padding ' + class_date_separator + '" value="" placeholder="'+settings.datePlaceholder+'" data-validation-rules="" ' + required + ' readonly>' + 1011 '</div>'; 1012 } 1013 if (settings.showHourMinute) { 1014 html = html + '<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5 typo-headlines-xs-mixed ul-no-padding">' + 1015 '<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 typo-headlines-xs-mixed ul-no-padding hour-minute-separator '+ settings.hourContainerClass +'">' + 1016 1017 '<input type="dt" name="'+ settings.hourInputName +'" data-dt-type="hour" class="ul-no-padding margin-left-1_2" value="" placeholder="hh" data-opening-times="" readonly>' + 1018 '</div>' + 1019 1020 '<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6 typo-headlines-xs-mixed ul-no-padding '+ settings.minuteContainerClass +'">' + 1021 '<input type="dt" name="'+ settings.minuteInputName +'" data-dt-type="minute" class="ul-no-padding" value="" placeholder="mm" readonly>' + 1022 '</div>' + 1023 '</div>'; 1024 } 1025 1026 if ($releaser.attr('data-dt') !== 'datetime') { 1027 $releaser.attr('data-dt', 'datetime'); 1028 } 1029 1030 $releaser.html(html); 1031 // $releaser.find('input[type="dt"][data-dt-type="date"]').attr('data-validation-rules',JSON.stringify(settings.dateValidationRules)); 1032 // $releaser.find('input[type="dt"][data-dt-type="date"]').attr('data-validation-messages',JSON.stringify(settings.dateValidationMessages)); 1033 // console.log(settings.dateValidationMessages); 1034 } 1035 1036 var $this = $releaser.find('input[type="dt"][data-dt-type="date"]'); 1037 var option_container_html = 1038 '<div class="dt-option-container-date " data-dt-type="date" style="display: none">' + 1039 '</div>'; 1040 $(option_container_html).insertAfter($this); 1041 1042 var $this = $releaser.find('input[type="dt"][data-dt-type="hour"]'); 1043 var option_container_html = 1044 '<div class="dt-option-container-hour list" data-dt-type="hour" style="display: none">' + 1045 '</div>'; 1046 $(option_container_html).insertAfter($this); 1047 1048 var $this = $releaser.find('input[type="dt"][data-dt-type="minute"]'); 1049 var option_container_html = 1050 '<div class="dt-option-container-minute list" data-dt-type="minute" style="display: none">' + 1051 '</div>'; 1052 $(option_container_html).insertAfter($this); 1053 1054 setTimeout(function () { 1055 renderContainer(); 1056 }, 450); 1057 1058 1059 1060 // var form = $releaser.closest('form'); 1061 // if (form.length > 0 && form.data('validator')) { 1062 // setTimeout(function () { 1063 // $('form').validate(); 1064 // 1065 // $releaser.find('input[type="dt"][data-dt-type="date"]').rules( "add", 1066 // { 1067 // rules: settings.dateValidationRules, 1068 // messages: settings.dateValidationMessages 1069 // } 1070 // ); 1071 // $releaser.on('input', 'input[type="dt"][data-dt-type="date"]', function() {$(this).val
1071id(); 1072 // console.log($(this).valid())}); 1073 // 1074 // 1075 // $releaser.find('input[type="dt"][data-dt-type="hour"]').rules( "add", 1076 // { 1077 // rules: settings.hourValidationRules, 1078 // messages: settings.hourValidationMessages 1079 // } 1080 // ); 1081 // $releaser.find('input[type="dt"][data-dt-type="minute"]').rules( "add", 1082 // { 1083 // rules: settings.minuteValidationRules, 1084 // messages: settings.minuteValidationMessages 1085 // } 1086 // ); 1087 // }, 700); 1088 // } 1089 1090 1091 }); 1092 }); 1093} 1094})( jQuery ); 1095 1096 1097 1098function updatePlugin($selector, value) { 1099 $selector.data('dt',$.extend({},$selector.data('dt'),value)); 1100 if ('date_ok' in value) { 1101 $selector.trigger('activateHourMinute'); 1102 $selector.trigger('change'); 1103 $selector.find('select').trigger('change'); 1104 1105 } 1106} 1107 1108
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.