1(function($){ 2 'use strict'; 3 4 /* --------------------------------- */ 5 /* ------------ GENERAL ------------ */ 6 /* --------------------------------- */ 7 8 // TEMP JS - BEGIN // 9 10 $.fn.shown = function() 11 { 12 var o = $(this); 13 14 return o.css('display') === 'none' || o.width() === 0 || o.height() === 0 ? false : true; 15 }; 16 17 $.fn.formSelect = function() 18 { 19 var o = this; 20 21 o.each(function(i,o) 22 { 23 $('select',o).val( $('option[selected]',o).length ? $('option[selected]',o).val(): $('option:selected',o).val() ) 24 .closest('.select').find('span:eq(0)').text( $('option:selected',o).text() ) 25 .end().change(function() 26 { 27 $('select',o).val( $('option:selected',o).val() ) 28 .closest('.select').find('span:eq(0)').text( $('option:selected',o).text() ); 29 }); 30 }); 31 32 return o; 33 }; 34 35 $.fn.canvas = function(a,b) 36 { 37 var o = this; 38 39 if ( a && typeof a === 'function' && !ie.lt9 ) 40 for ( var i = 0; i < o.length; i++ ) 41 a( o[i].getContext('2d') ); 42 else if ( a.name && a.name !== '' ) 43 o.canvas 44 ( 45 function(c) 46 { 47 if ( a.fillStyle ) 48 c.fillStyle = a.fillStyle; 49 else if ( a.strokeStyle ) 50 c.strokeStyle = a.strokeStyle; 51 if ( a.name === 'plus' ) 52 { 53 c.fillRect(7,0,2,16); 54 c.fillRect(0,7,16,2); 55 } 56 else if ( a.name === 'arrow' ) 57 { 58 c.moveTo(0,0); 59 c.lineTo(6,7); 60 c.lineTo(12,0); 61 c.stroke(); 62 } 63 else if ( a.name === 'calendar' ) 64 { 65 var w = 4; 66 c.fillRect(0,0,w,w); 67 c.fillRect(5,0,w,w); 68 c.fillRect(10,0,w,w); 69 c.fillRect(0,5,w,w); 70 c.fillRect(5,5,w,w); 71 c.fillRect(10,5,w,w); 72 c.fillRect(0,10,w,w); 73 c.fillRect(5,10,w,w); 74 c.fillRect(10,10,w,w); 75 } 76 else if ( a.name === 'bed' ) 77 { 78 c.fillRect(0,0,2,13); 79 c.fillRect(2,8,19,2); 80 c.fillRect(21,4,2,10); 81 c.fillRect(3,4,3,3); 82 c.fillRect(7,4,13,3); 83 } 84 else if ( a.name === 'close' ) 85 { 86 c.moveTo(0,0); 87 c.lineTo(12,12); 88 c.moveTo(12,0); 89 c.lineTo(0,12); 90 c.stroke(); 91 } 92 }, 93 b ? b : '' 94 ); 95 else if ( b && typeof b === 'string' ) 96 o.parent().css('background-image', 'url(' + config.url + '/' + b + ')' ); 97 98 return o; 99 }; 100 101 // TEMP JS - END // 102 103 var engine = window.engine = { 104 o : $('#engine'), 105 form : $('#engine').closest('form'), 106 header : $('#engine header'), 107 section : $('#engine section'), 108 calendar : $('#engineCalendar'), 109 datepicker : $('#datepicker'), 110 rooms : $('#engineRooms'), 111 code : $('#engine .code'), 112 handler : true, 113 speed : 250, 114 background : $( '<div/>', { 'id': 'engineDarkBg', 'css': { opacity:0.6 } } ) 115 }, 116 engineForm = { 117 checkin : $('#fecha_entrada', engine.o), 118 checkout : $('#fecha_salida', engine.o), 119 rooms : $('#rooms_input', engine.o) 120 }, 121 engineDefault = { 122 adults : $('.rooms.container select:eq(0) option:selected', engine.o), 123 children : $('.rooms.container select:eq(1) option:selected', engine.o) 124 }, 125 ie = window.ie = { // IE VARS 126 o: /MSIE/.test(navigator.userAgent), 127 lt7: /MSIE [0-6]{1}\./.test(navigator.userAgent), 128 lt9: /MSIE [0-8]{1}\./.test(navigator.userAgent) 129 }; 130 131 if ( ie.lt9 ) 132 { 133 var oldSize = { width: $(window).width(), height: $(window).height() }; 134 135 $(window).resize(function() 136 { 137 var currSize = { width: $(window).width(), height: $(window).height() }; 138 139 if ( currSize.height != oldSize.height || currSize.width != oldSize.width ) 140 { 141 oldSize = currSize; 142 143 if ( engine.o.length ) 144 engineWindowShown(); 145 } 146 }); 147 } 148 else 149 $(window).resize(function() 150 { 151 if ( engine.o.length ) 152 engineWindowShown(); 153 }); 154 155 if ( engine.o.length ) { 156 157 $(function(){ 158 159 // TEMP CODE - BEGIN // 160 161 $('canvas', engine.header).canvas({ 162 name: 'plus', 163 fillStyle: '#fff' 164 }, 165 'images/engine/close_white.png' 166 ); 167 168 $('.select canvas', engine.o).canvas({ 169 name: 'arrow', 170 strokeStyle: '#000' 171 }, 172 'images/engine/arrow_black.png' 173 ); 174 175 $('.select canvas', engine.rooms).canvas({ 176 name: 'arrow', 177 strokeStyle: '#000' 178 }, 179 'images/engine/arrow_black.png' 180 ); 181 182 $('.calendar.input canvas', engine.o).canvas({ 183 name: 'calendar', 184 fillStyle: '#000' 185 }, 186 'images/engine/calendar_black.png' 187 ); 188 189 $('.rooms.input canvas', engine.o).canvas({ 190 name: 'bed', 191 fillStyle: '#000' 192 }, 193 'images/engine/bed_black.png' 194 ); 195 196 $('.code canvas', engine.o).canvas({ 197 name: 'close', 198 strokeStyle: '#000' 199 }, 200 'images/engine/close_black.png' 201 ); 202 203 $('canvas', engine.calendar).canvas({ 204 name: 'close', 205 strokeStyle: '#fff' 206 }, 207 'images/engine/cross_white.png' 208 ); 209 210 $('.close canvas', engine.rooms).canvas({ 211 name: 'close', 212 strokeStyle: '#fff' 213 }, 214 'images/engine/cross_white.png' 215 ); 216 217 // TEMP CODE - END // 218 219 $('.select', engine.o).formSelect(); 220 221 $('.select:lt(3) select', engine.o).change(function() 222 { 223 $('.select:lt(3)', engine.o).each(function() 224 { 225 var o = $('span:eq(0)', this), s = $('option:selected', this).text(); 226 227 if ( o.text() !== s ) 228 o.text(s); 229 }); 230 }); 231 232 // Toggle the section when the header is clicked 233 234 engine.o.on('click','header',function() 235 { 236 if ( engine.handler ) 237 { 238 engineWindowShown(); 239 240 $(this).delay( engine.rooms.shown() ? engine.speed*2 : 0 ).queue(function() 241 { 242 handler( engine ); 243 244 $(this).dequeue(); 245 246 var shown = engine.section.shown(); 247 248 engine.section.slideToggle( engine.speed * 1.5, function(){ handler( engine ); } ); 249 250 $('.canvas', this).fadeOut 251 ( 252 engine.speed * 0.75, 253 function() 254 { 255 if (ie.lt9) { 256 $(this).css('background-image','url(' + config.url + '/images/engine/' + ( shown ? 'open_white' : 'close_white' ) + '.png)'); 257 } 258 else { 259 $(this).css('transform','rotate(' + ( shown ? 0 : 45 ) + 'deg)'); 260 } 261 262 $(this).fadeIn(engine.speed * 0.75); 263 } 264 ); 265 }); 266 } 267 }); 268 269 // CALENDAR // 270 271 var checkInSelected = false, 272 checkOutSelected = false, 273 engineCheckIn = $('#fecha_entrada', engine.o).val(), 274 engineCheckOut = $('#fecha_salida', engine.o).val(), 275 dateFormat = 'dd/mm/yy', 276 start = $.datepicker.parseDate(dateFormat,engineCheckIn), 277 end = $.datepicker.parseDate(dateFormat,engineCheckOut), 278 getOffsetDay = function( date, offSet ){ 279 var nextDayDate = new Date(date.getTime()); 280 nextDayDate.setDate( nextDayDate.getDate() + offSet ); 281 return nextDayDate; 282 }, 283 setInputDate = function(date,checkIn){ 284 engineFormUpdate( checkIn ? engineForm.checkin : engineForm.checkout, date ); 285 $('.calendar.input '+ (checkIn ? '.in' : '.out'), engine.o).text( date ); 286 }; 287 288 // Show the calendar when some hotel's option is selected 289 290 $('.select.hotel', engine.o).change(function() 291 { 292 if ( $('option:selected', this).index() > 0 && !checkInSelected ) 293 $('.calendar.input .in', engine.o).click(); 294 }); 295 296 $('.calendar.input .in', engine.o).text(engineCheckIn); 297 $('.calendar.input .out', engine.o).text(engineCheckOut); 298 299 $.datepicker.setDefaults( $.datepicker.regional[ ( config.lang !== 'en' ? config.lang: '' ) ] ); 300 $.datepicker.setDefaults( { 301 firstDay : 1, 302 prevText : '', 303 nextText : '', 304 maxDate : '+2y+1m', 305 yearRange : '0:+2', 306 yearSuffix : '', 307 numberOfMonths : tablet ? 1 : 2, 308 dateFormat : 'dd/mm/yy' 309 } ); 310 311 // Attach the datepicker plugin to the DOM element 312 313 engine.datepicker 314 .append($('<div/>').addClass('dp in').datepicker( { 315 defaultDate: start, 316 minDate: "+0d", 317 onSelect: function( selectedDate ) { 318 319 checkInSelected = true; 320 start = $.datepicker.parseDate(dateFormat, selectedDate); 321 setInputDate(selectedDate,true); 322 323 var minDate = getOffsetDay(start, 1); 324 var changeCheckOut = minDate > end; 325 326 if (changeCheckOut) { 327 end = minDate; 328 setInputDate( $.datepicker.formatDate(dateFormat, end), false ); 329 $('.dp.out', engine.datepicker) 330 .datepicker( "setDate", end ) 331 .datepicker( "option", "gotoCurrent", true ); 332 checkOutSelected = false;
333 } 334 335 $('.dp.out', engine.datepicker) 336 .datepicker( "option", "minDate", minDate ); 337 338 $('.close', engine.calendar).trigger('click',function(){ 339 if (!checkOutSelected) { 340 $('.calendar.input .out', engine.o).click(); 341 } 342 }); 343 } 344 } )) 345 .append($('<div/>').addClass('dp out').datepicker( { 346 defaultDate: end, 347 minDate: "+1d", 348 onSelect: function( selectedDate ) { 349 350 checkOutSelected = true; 351 end = $.datepicker.parseDate(dateFormat, selectedDate); 352 if (start >= end) { 353 var prevDayDate = getOffsetDay(end, -1); 354 setInputDate($.datepicker.formatDate(dateFormat, prevDayDate),true); 355 $('.dp.in', engine.datepicker).datepicker( "setDate", prevDayDate ); 356 } 357 358 setInputDate(selectedDate,false); 359 360 $('.close', engine.calendar).click(); 361 } 362 } )); 363 364 // Show the calWin 365 366 $('.calendar.input', engine.o).each(function() 367 { 368 $(this).click(function() 369 { 370 var checkinClicked = $(this).find('>.in').length>0; 371 372 $('.title',engine.calendar).text(checkinClicked?engineTag.checkin:engineTag.checkout); 373 374 $(checkinClicked?'.out':'.in',engine.datepicker).hide(); 375 376 var o = $(checkinClicked?'.in':'.out',engine.datepicker).show(); 377 378 if ( engine.handler && !engine.calendar.shown() ) 379 { 380 engineWindowShown( engine.rooms ); 381 382 handler( engine ); 383 384 var x = engine.o.position().left + engine.o.outerWidth() + 10, 385 y = $(this).position().top + ( engine.o.css('top') == 'auto' ? 0 : parseFloat( engine.o.css('top') ) ) + parseFloat( engine.o.css('margin-top') ) + 7, 386 c = tablet || engine.form.hasClass('static'); 387 388 engine.calendar.css({ top: y, left: x }); 389 390 o.css({ 'max-width': ( c ? 270 : '' ), 'min-width': ( c ? 220 : '' ) }); 391 392 if ( mobile || engine.form.hasClass('static') ) 393 { 394 engine.background.appendTo('body').fadeIn( engine.speed ); 395 engine.calendar.slideDown( engine.speed, function(){ handler( engine ); } ); 396 } 397 else 398 { 399 engine.calendar.appendTo('body'); 400 401 var w = $('#engineCalendar').show().outerWidth(); 402 403 $('#engineCalendar').insertBefore( engine.rooms ); 404 405 engine.calendar.hide().find('header').outerWidth(w).next().hide(); 406 407 engine.calendar.width(0).show().animate 408 ( 409 { width: w }, 410 engine.speed / 2, 411 function() 412 { 413 $('header div', engine.calendar).show().delay(50).animate({ left: -16 },engine.speed); 414 415 $('section', this).delay(50).slideDown 416 ( 417 engine.speed, 418 function() 419 { 420 handler( engine ); 421 } 422 ); 423 } 424 ); 425 } 426 } 427 }); 428 }); 429 430 // Hide the calWin 431 432 $('.close', engine.calendar).click(function(e,callback) 433 { 434 if ( engine.handler ) 435 { 436 handler( engine ); 437 438 $('#engineDarkBg').fadeOut( engine.speed, function(){ $(this).remove(); } ); 439 440 engine.calendar.fadeOut 441 ( 442 engine.speed * 1.5, 443 function() 444 { 445 $(this).width('') 446 .find('header').width('') 447 .find('div').hide().css('left',0); 448 449 handler( engine ); 450 451 if ( typeof callback === "function" ) 452 callback(); 453 } 454 ); 455 } 456 }); 457 458 // ROOMS WINDOW // 459 460 // Clone the first room 461 462 var addRoom = $('.container:eq(0)', engine.rooms).clone().hide(); 463 464 $('.container:eq(0) .remove', engine.rooms).addClass('vh'); 465 466 // Default statements 467 468 $('.select', engine.rooms).formSelect(); 469 470 if ( RoomsInfo && RoomsInfo !== '' && RoomsInfo.hab) 471 $.each 472 ( 473 RoomsInfo.hab, 474 function(i,v) 475 { 476 // If there are no room with this index, make it 477 478 if ( !$('.container:eq(' + i + ')', engine.rooms).length ) 479 engineRoomCreate( addRoom ); 480 481 // Then, select the right options of each room 482 483 $('.container:eq(' + i + ') select', engine.rooms).each(function(index) 484 { 485 var maxAdults = $("option",this).length; 486 $(this).val( index === 0 ? (maxAdults >= v.adultos ? v.adultos : maxAdults) : v.ninos ) 487 .closest('.select').find('span:eq(0)').text( $('option:selected', this).val() ); 488 }); 489 } 490 ); 491 492 engineFormUpdate( engineForm.rooms, $('.container', engine.rooms).length ); 493 494 $('.container:eq(0) select', engine.rooms).each(function(index) 495 { 496 var o = $('.rooms.container:eq(' + index + ') select', engine.o), s = $('option:selected', this); 497 498 o.val( $('option:eq(' + s.index() + ')', o).val() ) 499 .closest('.select').find('span:eq(0)').text( s.text() ); 500 }); 501 502 // Verify if there are more than only one room 503 504 if ( engineForm.rooms.val() > 1 ) 505 { 506 $('.rooms.container, .rooms.input', engine.o).toggle(); 507 engineRoomUpdate( engineForm.rooms.val() ); 508 } 509 510 // Update automatically the first room data in both places 511 512 $.each 513 ( 514 [ 515 $('.rooms.container select', engine.o), 516 $('.container:eq(0) select', engine.rooms) 517 ], 518 function(i,v) 519 { 520 $.each 521 ( 522 v, 523 function(index) 524 { 525 $(this).change 526 ( 527 function() 528 { 529 var o = $(this).closest( engine.rooms ).length ? $('.rooms.container:eq(' + index + ') select', engine.o) : $('.container:eq(0) select:eq(' + index + ')', engine.rooms), 530 s = $('option:selected', this); 531 532 o.val( $('option:eq(' + s.index() + ')', o).val() ) 533 .closest('.select').find('span:eq(0)').text( s.text() ); 534 } 535 ); 536 } 537 ); 538 } 539 ); 540 541 // Show the engine.rooms 542 543 $('.rooms.input, .rooms.more span:eq(1)', engine.o).click(function() 544 { 545 if ( engine.handler && !engine.rooms.shown() ) 546 { 547 engineWindowShown( engine.calendar ); 548 549 handler( engine ); 550 551 engine.rooms.css('margin-top', engine.o.css('margin-top') ); 552 553 if ( $('.rooms.container', engine.o).shown() && $('.container', engine.rooms).length > 1 ) 554 $('.rooms.container, .rooms.input', engine.o).slideToggle(engine.speed * 2); 555 556 var rooms = $('.container', engine.rooms).length; 557 558 if ( mobile || engine.form.hasClass('static') ) 559 { 560 engine.background.appendTo('body').fadeIn( engine.speed ); 561 engine.rooms.slideDown 562 ( 563 engine.speed, 564 function() 565 { 566 handler( engine ); 567 568 if ( rooms == 1 ) 569 $('.add span', engine.rooms).click(); 570 } 571 ); 572 } 573 else 574 { 575 var e = engine.o.outerHeight(), 576 r = engine.rooms.show().outerHeight(), 577 x = engine.o.position().left + engine.o.outerWidth(), 578 y = engine.o.position().top + ( e > r ? e - r : 0 ); 579 580 if($('html')[0].lang == 'ar'){ 581 engine.rooms.css({top:y,right:'270px'}) 582 .children() .animate 583 ( 584 { right: 0 }, 585 engine.speed * 2, 586 function() 587 { 588 handler( engine ); 589 590 if ( rooms == 1 ) 591 $('.add span', engine.rooms).click(); 592 } 593 ); 594 } else { 595 engine.rooms.css({top:y,left:x}) 596 .children() .animate 597 (
598 { left: 0 }, 599 engine.speed * 2, 600 function() 601 { 602 handler( engine ); 603 604 if ( rooms == 1 ) 605 $('.add span', engine.rooms).click(); 606 } 607 ); 608 } 609 } 610 } 611 }); 612 613 // Hide the engine.rooms 614 615 $('.close, button', engine.rooms).click(function() 616 { 617 if ( engine.handler ) 618 { 619 handler( engine ); 620 621 $('#engineDarkBg').fadeOut( engine.speed, function(){ $(this).remove(); }); 622 623 if (mobile || engine.form.hasClass('static')) { 624 engine.rooms.fadeOut(engine.speed, function(){ handler( engine ); }); 625 } 626 else { 627 if($('html')[0].lang == 'ar'){ 628 engine.rooms.children().animate( 629 { right: '-100%' }, 630 engine.speed*2, 631 function() 632 { 633 $(this).parent().hide(); 634 handler( engine ); 635 } 636 ); 637 } else { 638 engine.rooms.children().animate( 639 { left: '-100%' }, 640 engine.speed*2, 641 function() 642 { 643 $(this).parent().hide(); 644 handler( engine ); 645 } 646 ); 647 } 648 } 649 } 650 }); 651 652 // Add a new room 653 654 $('.add span', engine.rooms).click(function() 655 { 656 if( max_rooms === 0 || $('.container', engine.rooms).length < max_rooms ) 657 { 658 if ( engine.handler ) 659 { 660 handler( engine ); 661 662 if ( engine.section.shown() ) 663 engineRoomPose(1); 664 665 var rooms = $('.container', engine.rooms).length + 1; 666 667 engineFormUpdate( engineForm.rooms, rooms ); 668 669 engineRoomCreate( addRoom, 'slideDown' ); 670 671 if (rooms == 2 && $('.rooms.container', engine.o).shown()) { 672 $('.rooms.container, .rooms.input', engine.o).slideToggle(engine.speed); 673 } 674 else { 675 engineRoomUpdate(rooms); 676 } 677 678 if(rooms == max_rooms) 679 { 680 $('.add span').hide(); 681 } 682 } 683 } 684 else 685 { 686 $('.add span').hide(); 687 } 688 }); 689 690 // Remove an existing room 691 692 engine.rooms.on 693 ( 694 'click', 695 '.remove', 696 function() 697 { 698 if ( engine.handler ) 699 { 700 handler( engine ); 701 702 engineRoomPose(); 703 704 var rooms = $('.container', engine.rooms).length; 705 706 engineFormUpdate( engineForm.rooms, rooms-1 ); 707 708 if (rooms == 2 && $('.rooms.input', engine.o).shown()) { 709 $('.rooms.container, .rooms.input', engine.o).slideToggle(engine.speed); 710 } 711 else { 712 engineRoomUpdate(rooms-1); 713 } 714 715 if( ! $('.add span').shown()) 716 { 717 $('.add span').show(); 718 } 719 720 $(this).closest('.container').slideUp 721 ( 722 engine.speed, 723 function() 724 { 725 var rooms = $('.container', engine.rooms).length; 726 727 handler( engine ); 728 729 $(this).remove(); 730 731 if ( $('.container:eq(-1) .fl span', engine.rooms).text() != $('.container', engine.rooms).length ) 732 $('.container', engine.rooms).each 733 ( 734 function(index) 735 { 736 if ( $('.fl span', this).text() != index + 1 ) 737 { 738 $('.fl span', this).fadeOut 739 ( 740 engine.speed/2, 741 function() 742 { 743 $(this).text( index + 1 ).fadeIn(engine.speed/2); 744 } 745 ); 746 747 $('select', this).each 748 ( 749 function() 750 { 751 var attr = $(this).attr('name'), 752 begin = attr.indexOf(']') + 1, 753 end = attr.indexOf(']', begin ) - begin + 1, 754 str = attr.substr( begin, end ); 755 756 $(this).attr('name', attr.replace( str, '[' + ( index + 1 ) + ']' ) ); 757 } 758 ); 759 } 760 } 761 ); 762 } 763 ); 764 } 765 } 766 ); 767 768 // PROMO CODE 769 770 $('input', engine.code).attr('placeholder', $('input', engine.code).attr('placeholder').toUpperCase() ); 771 772 // Toggle the promotional code input 773 774 $('span, .canvas', engine.code).click(function(){ $('div', engine.code).toggle(engine.speed); }); 775 776 // FORM SUBMIT 777 778 $('button', engine.o).click(function() 779 { 780 var submit = true; 781 782 if ( engine.calendar.shown() || engine.rooms.shown() ) 783 engineWindowShown(); 784 785 if ( ( $('#selector_pais',engine.form).val() == "0" && $('#selector_ciudad',engine.form).val() == "0" && $('#selector_hotel',engine.form).val() == "0" ) || engineForm.checkout.val() === '' ) 786 submit = false;
787 788 if ( submit && typeof ejecuta_buscar != "undefined" ) 789 ejecuta_buscar(); 790 791 return false; 792 }); 793 794 }); 795 } 796 797 // Return the opposite of the received var 798 799 function handler(o){ o.handler = !o.handler; } 800 801 // Update the <input type="hidden"/> as 'o' with a new value as 'v' 802 803 function engineFormUpdate(o,v){ o.val( v ); } 804 805 // Hide the engine windows if they are shown 806 807 function engineWindowShown(o) 808 { 809 if (typeof o === 'object' && o.shown()) { 810 $('.close', o).click(); 811 } 812 else { 813 $('.engineWindow').each(function(){ if ( $(this).shown() ) $('.close', this).click(); }); 814 } 815 } 816 817 // Clone 'o' showed by default or slided down when 'e' is equal to 'slideDown', given as a string 818 819 function engineRoomCreate(o,e) 820 { 821 if ( typeof o !== 'object' ) 822 return; 823 824 var rooms = $('.container', engine.rooms).length + 1, 825 last = $('.container:eq(-1)', engine.rooms); 826 827 o.clone() 828 .find('.fl span').text( rooms ) 829 .end().find('.select').formSelect() 830 .end().find('select').each 831 ( 832 function(index) 833 { 834 /*var attr = $(this).attr('name'), 835 begin = attr.indexOf(']', attr.indexOf(']') + 1) + 1, 836 end = attr.indexOf(']', begin ) - begin + 1, 837 str = attr.substr( begin, end ); 838 839 $(this).attr('name', attr.replace( str, '[' + rooms + ']' ) ); 840 */ 841 $(this).attr('name', $(this).attr('name') ); 842 } 843 ) 844 .end().find('canvas').canvas 845 ( 846 { 847 name: 'arrow', 848 strokeStyle: '#000' 849 }, 850 'images/engine/arrow_black.png' 851 ) 852 .end().insertAfter( last ); 853 854 if (e && e === 'slideDown') { 855 856 last.next().slideDown(engine.speed,function(){ 857 if ( !engine.handler ) 858 handler( engine ); 859 }); 860 } 861 else { 862 last.next().show(); 863 } 864 } 865 866 function engineRoomUpdate(l){ 867 $('.rooms.input span:eq(0)', engine.o).fadeOut(engine.speed/2, function(){ $(this).text( l ).fadeIn(engine.speed/2); }); 868 } 869 870 function engineRoomPose(i) 871 { 872 var o = $('.container', engine.rooms), 873 wh = engine.rooms.outerHeight(), 874 wt = engine.rooms.position().top, 875 eh = engine.o.outerHeight(), 876 ah = o.outerHeight(), 877 al = i === 1 ? o.length + 1 : o.length - 1, 878 wf = i === 1 ? wh + ah : wh - ah, 879 st = engine.rooms.scrollTop(); 880 881 o.hide(); 882 883 var ta = parseInt( ( eh - engine.rooms.outerHeight() ) / ah ), 884 wr = eh - ( ah * ta + engine.rooms.outerHeight() ); 885 886 o.show(); 887 888 engine.rooms.scrollTop( st ); 889 890 if ( i === 1 && al == ta + 1 ) 891 wt -= wr; 892 else if ( i !== 1 && al == ta ) 893 wt += wr; 894 895 if ( i === 1 && eh > wf ) 896 wt -= ah; 897 else if ( i !== 1 && eh > wh ) 898 wt += ah; 899 900 if ( wt != engine.rooms.position().top ) 901 engine.rooms.animate( { top: wt }, engine.speed ); 902 } 903 904}(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.