1/** 2 * Lightweight Touch Events - Modern replacement for jQuery Mobile v1.4.5 touch events. 3 * Provides: throttledresize, orientationchange, vmouse events, 4 * tap, taphold, swipe, swipeleft, swiperight, scrollstart, scrollstop 5 */ 6(function ($, window, document) { 7 'use strict'; 8 9 // --- Support detection --- 10 var support = { 11 touch: 'ontouchend' in document, 12 orientation: 'orientation' in window && 'onorientationchange' in window 13 }; 14 $.extend($.support, { orientation: support.orientation }); 15 $.mobile = $.mobile || {}; 16 $.mobile.support = $.mobile.support || {}; 17 $.extend($.support, { touch: support.touch }); 18 $.extend($.mobile.support, { touch: support.touch }); 19 20 var touchStartEvent = support.touch ? 'touchstart' : 'mousedown'; 21 var touchStopEvent = support.touch ? 'touchend' : 'mouseup'; 22 var touchMoveEvent = support.touch ? 'touchmove' : 'mousemove'; 23 24 // --- throttledresize --- 25 (function () { 26 var throttleDelay = 250; 27 var lastCall = 0; 28 var timer; 29 30 $.event.special.throttledresize = { 31 setup: function () { 32 var self = this; 33 $(this).on('resize._throttledresize', function () { 34 var now = Date.now(); 35 var elapsed = now - lastCall; 36 if (elapsed >= throttleDelay) { 37 lastCall = now; 38 $(self).trigger('throttledresize'); 39 } else { 40 clearTimeout(timer); 41 timer = setTimeout(function () { 42 lastCall = Date.now(); 43 $(self).trigger('throttledresize'); 44 }, throttleDelay - elapsed); 45 } 46 }); 47 }, 48 teardown: function () { 49 $(this).off('resize._throttledresize'); 50 } 51 }; 52 })(); 53 54 // --- orientationchange --- 55 (function () { 56 var lastOrientation; 57 58 function getOrientation() { 59 if (support.orientation) { 60 var map = { 0: true, 180: true }; 61 return map[window.orientation] ? 'portrait' : 'landscape'; 62 } 63 var docEl = document.documentElement; 64 return (docEl && docEl.clientWidth / docEl.clientHeight < 1.1) ? 'portrait' : 'landscape'; 65 } 66 67 lastOrientation = getOrientation(); 68 69 function checkOrientation() { 70 var current = getOrientation(); 71 if (current !== lastOrientation) { 72 lastOrientation = current; 73 $(window).trigger('orientationchange'); 74 } 75 } 76 77 $.event.special.orientationchange = { 78 setup: function () { 79 if (support.orientation && !$.event.special.orientationchange.disabled) { 80 return false; 81 } 82 lastOrientation = getOrientation(); 83 $(window).on('throttledresize._orientationchange', checkOrientation); 84 }, 85 teardown: function () { 86 if (support.orientation && !$.event.special.orientationchange.disabled) { 87 return false; 88 } 89 $(window).off('throttledresize._orientationchange'); 90 }, 91 add: function (handleObj) { 92 var origHandler = handleObj.handler; 93 handleObj.handler = function (event) { 94 event.orientation = getOrientation(); 95 return origHandler.apply(this, arguments); 96 }; 97 } 98 }; 99 100 $.event.special.orientationchange.orientation = getOrientation; 101 102 $.fn.orientationchange = function (fn) { 103 return fn ? this.on('orientationchange', fn) : this.trigger('orientationchange'); 104 }; 105 })(); 106 107 // --- Virtual Mouse Events (vmouse) --- 108 (function () { 109 var vmouseEvents = 'vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel'.split(' '); 110 111 $.vmouse = { 112 moveDistanceThreshold: 10, 113 clickDistanceThreshold: 10, 114 resetTimerDuration: 1500 115 }; 116 117 var nativeMap = { 118 vmouseover: support.touch ? 'touchstart' : 'mouseover', 119 vmousedown: support.touch ? 'touchstart' : 'mousedown', 120 vmousemove: support.touch ? 'touchmove' : 'mousemove', 121 vmouseup: support.touch ? 'touchend' : 'mouseup', 122 vclick: 'click', 123 vmouseout: support.touch ? 'touchend' : 'mouseout', 124 vmousecancel: support.touch ? 'touchcancel' : 'mouseout' 125 }; 126 127 $.each(vmouseEvents, function (i, vmEvent) { 128 $.event.special[vmEvent] = { 129 setup: function () { 130 var nativeEvent = nativeMap[vmEvent]; 131 if (nativeEvent) { 132 $(this).on(nativeEvent + '._vmouse_' + vmEvent, function (e) { 133 var newEvent = $.Event(vmEvent); 134 newEvent.originalEvent = e.originalEvent || e; 135 if (e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length) { 136 var touch = e.originalEvent.touches[0]; 137 newEvent.pageX = touch.pageX; 138 newEvent.pageY = touch.pageY; 139 newEvent.clientX = touch.clientX; 140 newEvent.clientY = touch.clientY; 141 newEvent.screenX = touch.screenX; 142 newEvent.screenY = touch.screenY; 143 } else { 144 newEvent.pageX = e.pageX; 145 newEvent.pageY = e.pageY; 146 newEvent.clientX = e.clientX; 147 newEvent.clientY = e.clientY; 148 newEvent.screenX = e.screenX; 149 newEvent.screenY = e.screenY; 150 } 151 newEvent.which = e.which || 1; 152 newEvent.target = e.target; 153 $(this).trigger(newEvent); 154 }); 155 } 156 }, 157 teardown: function () { 158 var nativeEvent = nativeMap[vmEvent]; 159 if (nativeEvent) { 160 $(this).off(nativeEvent + '._vmouse_' + vmEvent); 161 } 162 } 163 }; 164 }); 165 })(); 166 167 // --- scrollstart / scrollstop --- 168 $.event.special.scrollstart = { 169 enabled: true, 170 setup: function () { 171 var elem = this; 172 var scrolling = false; 173 var scrollTimer; 174 175 $(elem).on('touchmove._scrollevents scroll._scrollevents', function (e) { 176 if (!$.event.special.scrollstart.enabled) return; 177 if (!scrolling) { 178 scrolling = true; 179 $.event.dispatch.call(elem, $.Event('scrollstart', { originalEvent: e.originalEvent || e })); 180 } 181 clearTimeout(scrollTimer); 182 scrollTimer = setTimeout(function () { 183 scrolling = false; 184 $.event.dispatch.call(elem, $.Event('scrollstop', { originalEvent: e.originalEvent || e })); 185 }, 50); 186 }); 187 }, 188 teardown: function () { 189 $(this).off('._scrollevents'); 190 } 191 }; 192 193 $.event.special.scrollstop = { 194 setup: function () { $(this).on('scrollstart', $.noop); }, 195 teardown: function () { $(this).off('scrollstart'); } 196 }; 197
198 // --- tap / taphold --- 199 $.event.special.tap = { 200 tapholdThreshold: 750, 201 emitTapOnTaphold: true, 202 setup: function () { 203 var elem = this; 204 var $elem = $(elem); 205 var tapHandled = false; 206 207 $elem.on('vmousedown._tap', function (startEvent) { 208 tapHandled = false; 209 if (startEvent.which && startEvent.which !== 1) return false; 210 211 var target = startEvent.target; 212 var holdTimer; 213 214 function clearTapTimer() { 215 clearTimeout(holdTimer); 216 } 217 218 function clearTapHandlers() { 219 clearTapTimer(); 220 $elem.off('vclick._tap vmouseup._tap'); 221 $(document).off('vmousecancel._tap'); 222 } 223 224 function clickHandler(e) { 225 clearTapHandlers(); 226 if (!tapHandled && target === e.target) { 227 $.event.dispatch.call(elem, $.Event('tap', { target: e.target, originalEvent: e })); 228 } else if (tapHandled) { 229 e.preventDefault(); 230 } 231 } 232 233 $elem.on('vmouseup._tap', clearTapTimer).on('vclick._tap', clickHandler); 234 $(document).on('vmousecancel._tap', clearTapHandlers); 235 236 holdTimer = setTimeout(function () { 237 if (!$.event.special.tap.emitTapOnTaphold) { 238 tapHandled = true; 239 } 240 $.event.dispatch.call(elem, $.Event('taphold', { target: target })); 241 }, $.event.special.tap.tapholdThreshold); 242 }); 243 }, 244 teardown: function () { 245 $(this).off('._tap'); 246 $(document).off('._tap'); 247 } 248 }; 249 250 $.event.special.taphold = { 251 setup: function () { $(this).on('tap', $.noop); }, 252 teardown: function () { $(this).off('tap'); } 253 }; 254 255 // --- swipe --- 256 $.event.special.swipe = { 257 scrollSupressionThreshold: 30, 258 durationThreshold: 1e3, 259 horizontalDistanceThreshold: 30, 260 verticalDistanceThreshold: 30, 261 262 getLocation: function (e) { 263 var winPageX = window.pageXOffset, 264 winPageY = window.pageYOffset, 265 x = e.clientX, 266 y = e.clientY; 267 268 if (e.pageY === 0 && Math.floor(y) > Math.floor(e.pageY) || 269 e.pageX === 0 && Math.floor(x) > Math.floor(e.pageX)) { 270 x -= winPageX; 271 y -= winPageY; 272 } else if (y < (e.pageY - winPageY) || x < (e.pageX - winPageX)) { 273 x = e.pageX - winPageX; 274 y = e.pageY - winPageY; 275 } 276 return { x: x, y: y }; 277 }, 278 279 start: function (e) { 280 var touch = e.originalEvent.touches ? e.originalEvent.touches[0] : e, 281 loc = $.event.special.swipe.getLocation(touch); 282 return { time: Date.now(), coords: [loc.x, loc.y], origin: $(e.target) }; 283 }, 284 285 stop: function (e) { 286 var touch = e.originalEvent.touches ? e.originalEvent.touches[0] : e, 287 loc = $.event.special.swipe.getLocation(touch); 288 return { time: Date.now(), coords: [loc.x, loc.y] }; 289 }, 290 291 handleSwipe: function (start, stop, elem, target) { 292 var swipe = $.event.special.swipe; 293 if (stop.time - start.time < swipe.durationThreshold && 294 Math.abs(start.coords[0] - stop.coords[0]) > swipe.horizontalDistanceThreshold && 295 Math.abs(start.coords[1] - stop.coords[1]) < swipe.verticalDistanceThreshold) { 296 297 var direction = start.coords[0] > stop.coords[0] ? 'swipeleft' : 'swiperight'; 298 299 $.event.dispatch.call(elem, 300 $.Event('swipe', { target: target, swipestart: start, swipestop: stop })); 301 $.event.dispatch.call(elem, 302 $.Event(direction, { target: target, swipestart: start, swipestop: stop })); 303 return true; 304 } 305 return false; 306 }, 307 308 eventInProgress: false, 309 310 setup: function () { 311 var elem = this; 312 var $elem = $(elem); 313 var swipeData = {}; 314 315 var mobileEvents = $.data(this, 'mobile-events'); 316 if (!mobileEvents) { 317 mobileEvents = { length: 0 }; 318 $.data(this, 'mobile-events', mobileEvents); 319 } 320 mobileEvents.length++; 321 mobileEvents.swipe = swipeData; 322 323 swipeData.start = function (e) { 324 if ($.event.special.swipe.eventInProgress) return; 325 $.event.special.swipe.eventInProgress = true; 326 327 var startTouch = e.originalEvent.touches ? e.originalEvent.touches[0] : e; 328 var startLoc = $.event.special.swipe.getLocation(startTouch); 329 var startData = { time: Date.now(), coords: [startLoc.x, startLoc.y], origin: $(e.target) }; 330 var target = e.target; 331 var handled = false; 332 333 swipeData.move = function (e) { 334 if (!startData || e.isDefaultPrevented()) return; 335 var stopData = $.event.special.swipe.stop(e); 336 if (!handled) { 337 handled = $.event.special.swipe.handleSwipe(startData, stopData, elem, target); 338 if (handled) { 339 $.event.special.swipe.eventInProgress = false; 340 } 341 } 342 if (Math.abs(startData.coords[0] - stopData.coords[0]) > 343 $.event.special.swipe.scrollSupressionThreshold) { 344 e.preventDefault(); 345 } 346 }; 347 348 swipeData.stop = function () { 349 handled = true; 350 $.event.special.swipe.eventInProgress = false; 351 $(document).off(touchMoveEvent + '._swipe', swipeData.move); 352 swipeData.move = null; 353 }; 354 355 $(document).on(touchMoveEvent + '._swipe', swipeData.move) 356 .one(touchStopEvent + '._swipe', swipeData.stop
356); 357 }; 358 359 $elem.on(touchStartEvent + '._swipe', swipeData.start); 360 }, 361 362 teardown: function () { 363 var mobileEvents = $.data(this, 'mobile-events'); 364 var swipeData; 365 if (mobileEvents) { 366 swipeData = mobileEvents.swipe; 367 delete mobileEvents.swipe; 368 mobileEvents.length--; 369 if (mobileEvents.length === 0) { 370 $.removeData(this, 'mobile-events'); 371 } 372 } 373 if (swipeData) { 374 if (swipeData.start) $(this).off(touchStartEvent + '._swipe', swipeData.start); 375 if (swipeData.move) $(document).off(touchMoveEvent + '._swipe', swipeData.move); 376 if (swipeData.stop) $(document).off(touchStopEvent + '._swipe', swipeData.stop); 377 } 378 } 379 }; 380 381 $.each({ scrollstop: 'scrollstart', taphold: 'tap', swipeleft: 'swipe.left', swiperight: 'swipe.right' }, 382 function (event, sourceEvent) { 383 $.event.special[event] = $.event.special[event] || { 384 setup: function () { $(this).on(sourceEvent, $.noop); }, 385 teardown: function () { $(this).off(sourceEvent); } 386 }; 387 } 388 ); 389 390 // --- Convenience methods --- 391 $.each('touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop'.split(' '), 392 function (i, name) { 393 if (!$.fn[name]) { 394 $.fn[name] = function (fn) { 395 return fn ? this.on(name, fn) : this.trigger(name); 396 }; 397 } 398 } 399 ); 400 401})(jQuery, window, document); 402/*! 403 * jQuery Actual Plugin 404 * Get the actual width/height of invisible DOM elements with jQuery. 405 * Copyright 2012, Ben Lin (http://dreamerslab.com/) 406 * Licensed under the MIT License (LICENSE.txt). 407 * 408 * Version: 1.0.16 409 * 410 * Requires: jQuery >= 1.2.3 411 */ 412(function (a) { 413 a.fn.addBack = a.fn.addBack || a.fn.andSelf; 414 a.fn.extend({ 415 actual: function (b, l) { 416 if (!this[b]) { throw '$.actual => The jQuery method "' + b + '" you called does not exist'; } var f = { absolute: false, clone: false, includeMargin: false }; 417 var i = a.extend(f, l); var e = this.eq(0); var h, j; if (i.clone === true) { 418 h = function () { 419 var m = "position: absolute !important; top: -1000 !important; "; e = e.clone().attr("style", m).appendTo("body"); 420 }; j = function () { e.remove(); }; 421 } else { 422 var g = []; var d = ""; var c; h = function () { 423 c = e.parents().addBack().filter(":hidden"); d += "visibility: hidden !important; display: block !important; "; 424 if (i.absolute === true) { d += "position: absolute !important; "; } c.each(function () { 425 var m = a(this); var n = m.attr("style"); g.push(n); m.attr("style", n ? n + ";" + d : d); 426 }); 427 }; j = function () { c.each(function (m) { var o = a(this); var n = g[m]; if (n === undefined) { o.removeAttr("style"); } else { o.attr("style", n); } }); }; 428 } h(); var k = /(outer)/.test(b) ? e[b](i.includeMargin) : e[b](); 429 j(); return k; 430 } 431 }); 432})(jQuery); 433 434/* 435 outline utility for confirming you're targetting the correct element 436 usage: 437 $('#element').outline(); 438 result: 439 $('#element') has a pink outline 440 options: 441 use a different colour: $('#element').outline('#f00'); 442*/ 443(function ($) { 444 $.fn.outline = function (colour) { 445 if (colour == 0) { 446 colour = 'rgba(' + (55 + Math.floor(Math.random() * 145)) + ',' + (55 + Math.floor(Math.random() * 145)) + ',' + (55 + Math.floor(Math.random() * 145)) + ',0.75)'; 447 } 448 this.css( 449 { 450 outline: '5px solid ' + (colour ? colour : 'rgba(255,20,147,0.5)') 451 } 452 ); 453 return this; 454 } 455})(jQuery); 456/* 457 * Test whether argument elements are parents of the first matched element 458 * @return boolean 459 * @param objs 460 * a jQuery selector, selection, element, or array of elements 461*/ 462$.fn.hasParent = function (parentClass) { 463 var found = false; 464 $(this[0]).parents().andSelf().each( 465 function () { 466 if ($.inArray(this, $(parentClass)) != -1) { 467 found = true; 468 return false; 469 } 470 } 471 ); 472 return found; 473} 474 /*! http://mths.be/placeholder v2.0.8 by @mathias */ 475 ; (function (window, document, $) { 476 477 // Opera Mini v7 doesn't support placeholder although its DOM seems to indicate so 478 var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]'; 479 var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini; 480 var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini; 481 var prototype = $.fn; 482 var valHooks = $.valHooks; 483 var propHooks = $.propHooks; 484 var hooks; 485 var placeholder; 486 487 if (isInputSupported && isTextareaSupported) { 488 489 placeholder = prototype.placeholder = function () { 490 return this; 491 }; 492 493 placeholder.input = placeholder.textarea = true; 494 495 } else { 496 497 placeholder = prototype.placeholder = function () { 498 var $this = this; 499 $this 500 .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]') 501 .not('.placeholder') 502 .bind({
503 'focus.placeholder': clearPlaceholder, 504 'blur.placeholder': setPlaceholder 505 }) 506 .data('placeholder-enabled', true) 507 .trigger('blur.placeholder'); 508 return $this; 509 }; 510 511 placeholder.input = isInputSupported; 512 placeholder.textarea = isTextareaSupported; 513 514 hooks = { 515 'get': function (element) { 516 var $element = $(element); 517 518 var $passwordInput = $element.data('placeholder-password'); 519 if ($passwordInput) { 520 return $passwordInput[0].value; 521 } 522 523 return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value; 524 }, 525 'set': function (element, value) { 526 var $element = $(element); 527 528 var $passwordInput = $element.data('placeholder-password'); 529 if ($passwordInput) { 530 return $passwordInput[0].value = value; 531 } 532 533 if (!$element.data('placeholder-enabled')) { 534 return element.value = value; 535 } 536 if (value == '') { 537 element.value = value; 538 // Issue #56: Setting the placeholder causes problems if the element continues to have focus. 539 if (element != safeActiveElement()) { 540 // We can't use `triggerHandler` here because of dummy text/password inputs :( 541 setPlaceholder.call(element); 542 } 543 } else if ($element.hasClass('placeholder')) { 544 clearPlaceholder.call(element, true, value) || (element.value = value); 545 } else { 546 element.value = value; 547 } 548 // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363 549 return $element; 550 } 551 }; 552 553 if (!isInputSupported) { 554 valHooks.input = hooks; 555 propHooks.value = hooks; 556 } 557 if (!isTextareaSupported) { 558 valHooks.textarea = hooks; 559 propHooks.value = hooks; 560 } 561 562 $(function () { 563 // Look for forms 564 $(document).delegate('form', 'submit.placeholder', function () { 565 // Clear the placeholder values so they don't get submitted 566 var $inputs = $('.placeholder', this).each(clearPlaceholder); 567 setTimeout(function () { 568 $inputs.each(setPlaceholder); 569 }, 10); 570 }); 571 }); 572 573 // Clear placeholder values upon page reload 574 $(window).bind('beforeunload.placeholder', function () { 575 $('.placeholder').each(function () { 576 this.value = ''; 577 }); 578 }); 579 580 } 581 582 function args(elem) { 583 // Return an object of element attributes 584 var newAttrs = {}; 585 var rinlinejQuery = /^jQuery\d+$/; 586 $.each(elem.attributes, function (i, attr) { 587 if (attr.specified && !rinlinejQuery.test(attr.name)) { 588 newAttrs[attr.name] = attr.value; 589 } 590 }); 591 return newAttrs; 592 } 593 594 function clearPlaceholder(event, value) { 595 var input = this; 596 var $input = $(input); 597 if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) { 598 if ($input.data('placeholder-password')) { 599 $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); 600 // If `clearPlaceholder` was called from `$.valHooks.input.set` 601 if (event === true) { 602 return $input[0].value = value; 603 } 604 $input.focus(); 605 } else { 606 input.value = ''; 607 $input.removeClass('placeholder'); 608 input == safeActiveElement() && input.select(); 609 } 610 } 611 } 612 613 function setPlaceholder() { 614 var $replacement; 615 var input = this; 616 var $input = $(input); 617 var id = this.id; 618 if (input.value == '') { 619 if (input.type == 'password') { 620 if (!$input.data('placeholder-textinput')) { 621 try { 622 $replacement = $input.clone().attr({ 'type': 'text' }); 623 } catch (e) { 624 $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' })); 625 } 626 $replacement 627 .removeAttr('name') 628 .data({ 629 'placeholder-password': $input, 630 'placeholder-id': id 631 }) 632 .bind('focus.placeholder', clearPlaceholder); 633 $input 634 .data({ 635 'placeholder-textinput': $replacement, 636 'placeholder-id': id 637 }) 638 .before($replacement); 639 } 640 $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); 641 // Note: `$input[0] != input` now! 642 } 643 $input.addClass('placeholder'); 644 $input[0].value = $input.attr('placeholder'); 645 } else { 646 $input.removeClass('placeholder'); 647 } 648 } 649 650 function safeActiveElement() { 651 // Avoid IE9 `document.activeElement` of death 652 // https://github.com/mathiasbynens/jquery-placeholder/pull/99 653 try { 654 return document.activeElement; 655 } catch (exception) { } 656 } 657 658 }(this, document, jQuery)); 659// ---------------------------------------------------------------------------- 660// infobox_packed.js - https://code.google.com/p/google-maps-utility-library-v3/ 661// ---------------------------------------------------------------------------- 662if (typeof google !== 'undefined' && typeof google.maps !== 'undefined') { 663eval(function (p, a, c, k, e, r) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] }]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p }('7 p(a){a=a||{};5.8.1N.2h(2,32);2.L=a.1u||"";2.1D=a.1q||H;2.P=a.1H||0;2.E=a.1B||1f 5.8.1U(0,0);2.B=a.W||1f 5.8.2t(0,0);2.S=a.11||q;2.1n=a.1l||"28";2.1k=a.D||{};2.1G=a.1E||"34";
6632.M=a.19||"2W://2Q.5.2L/2I/2G/2F/1v.2z";3(a.19===""){2.M=""}2.1i=a.1r||1f 5.8.1U(1,1);2.Y=a.1s||H;2.1a=a.1p||H;2.1K=a.2k||"2g";2.17=a.1m||H;2.4=q;2.w=q;2.X=q;2.16=q;2.15=q;2.13=q;2.12=q;2.O=q}p.r=1f 5.8.1N();p.r.22=7(){6 a;6 d=2;6 c=7(e){e.1Z=U;3(e.18){e.18()}};6 b=7(e){e.2S=H;3(e.1Y){e.1Y()}3(!d.17){c(e)}};3(!2.4){2.4=1g.2K("2J");2.1d();3(t 2.L.1w==="u"){2.4.J=2.F()+2.L}v{2.4.J=2.F();2.4.1b(2.L)}2.2y()[2.1K].1b(2.4);2.1F();3(2.4.9.A){2.O=U}v{3(2.P!==0&&2.4.Z>2.P){2.4.9.A=2.P;2.4.9.2u="2s";2.O=U}v{a=2.24();2.4.9.A=(2.4.Z-a.14-a.T)+"R";2.O=H}}2.1t(2.1D);3(!2.17){2.X=5.8.s.I(2.4,"2n",c);2.16=5.8.s.I(2.4,"1L",c);2.15=5.8.s.I(2.4,"2m",c);2.1o=5.8.s.I(2.4,"2l",7(e){2.9.1J="2j"})}2.12=5.8.s.I(2.4,"2i",b);5.8.s.Q(2,"2f")}};p.r.F=7(){6 a="";3(2.M!==""){a="<2e";a+=" 2d=\'"+2.M+"\'";a+=" 2c=T";a+=" 9=\'";a+=" W: 2b;";a+=" 1J: 2a;";a+=" 29: "+2.1G+";";a+="\'>"}N a};p.r.1F=7(){6 a;3(2.M!==""){a=2.4.27;2.w=5.8.s.I(a,\'1L\',2.1I())}v{2.w=q}};p.r.1I=7(){6 a=2;N 7(e){e.1Z=U;3(e.18){e.18()}a.1v();5.8.s.Q(a,"26")}};p.r.1t=7(d){6 m;6 n;6 e=0,G=0;3(!d){m=2.25();3(m 39 5.8.38){3(!m.23().37(2.B)){m.36(2.B)}n=m.23();6 a=m.35();6 h=a.Z;6 f=a.21;6 k=2.E.A;6 l=2.E.1j;6 g=2.4.Z;6 b=2.4.21;6 i=2.1i.A;6 j=2.1i.1j;6 o=2.20().31(2.B);3(o.x<(-k+i)){e=o.x+k-i}v 3((o.x+g+k+i)>h){e=o.x+g+k+i-h}3(2.1a){3(o.y<(-l+j+b)){G=o.y+l-j-b}v 3((o.y+l+j)>f){G=o.y+l+j-f}}v{3(o.y<(-l+j)){G=o.y+l-j}v 3((o.y+b+l+j)>f){G=o.y+b+l+j-f}}3(!(e===0&&G===0)){6 c=m.30();m.2Z(e,G)}}}};p.r.1d=7(){6 i,D;3(2.4){2.4.2Y=2.1n;2.4.9.2X="";D=2.1k;2V(i 2U D){3(D.2R(i)){2.4.9[i]=D[i]}}3(t 2.4.9.1h!=="u"&&2.4.9.1h!==""){2.4.9.2P="2O(1h="+(2.4.9.1h*2N)+")"}2.4.9.W="2M";2.4.9.V=\'1y\';3(2.S!==q){2.4.9.11=2.S}}};p.r.24=7(){6 c;6 a={1e:0,1c:0,14:0,T:0};6 b=2.4;3(1g.1x&&1g.1x.1V){c=b.2H.1x.1V(b,"");3(c){a.1e=C(c.1T,10)||0;a.1c=C(c.1S,10)||0;a.14=C(c.1R,10)||0;a.T=C(c.1W,10)||0}}v 3(1g.2E.K){3(b.K){a.1e=C(b.K.1T,10)||0;a.1c=C(b.K.1S,10)||0;a.14=C(b.K.1R,10)||0;a.T=C(b.K.1W,10)||0}}N a};p.r.2D=7(){3(2.4){2.4.2C.2B(2.4);2.4=q}};p.r.1A=7(){2.22();6 a=2.20().2A(2.B);2.4.9.14=(a.x+2.E.A)+"R";3(2.1a){2.4.9.1c=-(a.y+2.E.1j)+"R"}v{2.4.9.1e=(a.y+2.E.1j)+"R"}3(2.Y){2.4.9.V=\'1y\'}v{2.4.9.V="1X"}};p.r.2T=7(a){3(t a.1l!=="u"){2.1n=a.1l;2.1d()}3(t a.D!=="u"){2.1k=a.D;2.1d()}3(t a.1u!=="u"){2.1Q(a.1u)}3(t a.1q!=="u"){2.1D=a.1q}3(t a.1H!=="u"){2.P=a.1H}3(t a.1B!=="u"){2.E=a.1B}3(t a.1p!=="u"){2.1a=a.1p}3(t a.W!=="u"){2.1z(a.W)}3(t a.11!=="u"){2.1P(a.11)}3(t a.1E!=="u"){2.1G=a.1E}3(t a.19!=="u"){2.M=a.19}3(t a.1r!=="u"){2.1i=a.1r}3(t a.1s!=="u"){2.Y=a.1s}3(t a.1m!=="u"){2.17=a.1m}3(2.4){2.1A()}};p.r.1Q=7(a){2.L=a;3(2.4){3(2.w){5.8.s.z(2.w);2.w=q}3(!2.O){2.4.9.A=""}3(t a.1w==="u"){2.4.J=2.F()+a}v{2.4.J=2.F();2.4.1b(a)}3(!2.O){2.4.9.A=2.4.Z+"R";3(t a.1w==="u"){2.4.J=2.F()+a}v{2.4.J=2.F();2.4.1b(a)}}2.1F()}5.8.s.Q(2,"2x")};p.r.1z=7(a){2.B=a;3(2.4){2.1A()}5.8.s.Q(2,"1O")};p.r.1P=7(a){2.S=a;3(2.4){2.4.9.11=a}5.8.s.Q(2,"2w")};p.r.2v=7(){N 2.L};p.r.1C=7(){N 2.B};p.r.33=7(){N 2.S};p.r.2r=7(){2.Y=H;3(2.4){2.4.9.V="1X"}};p.r.2q=7(){2.Y=U;3(2.4){2.4.9.V="1y"}};p.r.2p=7(c,b){6 a=2;3(b){2.B=b.1C();2.13=5.8.s.2o(b,"1O",7(){a.1z(2.1C())})}2.1M(c);3(2.4){2.1t()}};p.r.1v=7(){3(2.w){5.8.s.z(2.w);2.w=q}3(2.X){5.8.s.z(2.X);5.8.s.z(2.16);5.8.s.z(2.15);5.8.s.z(2.1o);2.X=q;2.16=q;2.15=q;2.1o=q}3(2.13){5.8.s.z(2.13);2.13=q}3(2.12){5.8.s.z(2.12);2.12=q}2.1M(q)};', 62, 196, '||this|if|div_|google|var|function|maps|style||||||||||||||||InfoBox|null|prototype|event|typeof|undefined|else|closeListener_|||removeListener|width|position_|parseInt|boxStyle|pixelOffset_|getCloseBoxImg_|yOffset|false|addDomListener|innerHTML|currentStyle|content_|closeBoxURL_|return|fixedWidthSet_|maxWidth_|trigger|px|zIndex_|right|true|visibility|position|eventListener1_|isHidden_|offsetWidth||zIndex|contextListener_|moveListener_|left|eventListener3_|eventListener2_|enableEventPropagation_|stopPropagation|closeBoxURL|alignBottom_|appendChild|bottom|setBoxStyle_|top|new|document|opacity|infoBoxClearance_|height|boxStyle_|boxClass|enableEventPropagation|boxClass_|eventListener4_|alignBottom|disableAutoPan|infoBoxClearance|isHidden|panBox_|content|close|nodeType|defaultView|hidden|setPosition|draw|pixelOffset|getPosition|disableAutoPan_|
663closeBoxMargin|addClickHandler_|closeBoxMargin_|maxWidth|getCloseClickHandler_|cursor|pane_|click|setMap|OverlayView|position_changed|setZIndex|setContent|borderLeftWidth|borderBottomWidth|borderTopWidth|Size|getComputedStyle|borderRightWidth|visible|preventDefault|cancelBubble|getProjection|offsetHeight|createInfoBoxDiv_|getBounds|getBoxWidths_|getMap|closeclick|firstChild|infoBox|margin|pointer|relative|align|src|img|domready|floatPane|apply|contextmenu|default|pane|mouseover|dblclick|mousedown|addListener|open|hide|show|auto|LatLng|overflow|getContent|zindex_changed|content_changed|getPanes|gif|fromLatLngToDivPixel|removeChild|parentNode|onRemove|documentElement|mapfiles|en_us|ownerDocument|intl|div|createElement|com|absolute|100|alpha|filter|www|hasOwnProperty|returnValue|setOptions|in|for|http|cssText|className|panBy|getCenter|fromLatLngToContainerPixel|arguments|getZIndex|2px|getDiv|setCenter|contains|Map|instanceof'.split('|'), 0, {})) 664} 665// ---------------------------------------------------------------------------- 666// Object.keys polyfill for browsers that don't support it 667// ---------------------------------------------------------------------------- 668// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys 669if (!Object.keys) { 670 Object.keys = (function () { 671 'use strict'; 672 var hasOwnProperty = Object.prototype.hasOwnProperty, 673 hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'), 674 dontEnums = [ 675 'toString', 676 'toLocaleString', 677 'valueOf', 678 'hasOwnProperty', 679 'isPrototypeOf', 680 'propertyIsEnumerable', 681 'constructor' 682 ], 683 dontEnumsLength = dontEnums.length; 684 return function (obj) { 685 if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) { 686 throw new TypeError('Object.keys called on non-object'); 687 } 688 var result = [], prop, i; 689 for (prop in obj) { 690 if (hasOwnProperty.call(obj, prop)) { 691 result.push(prop); 692 } 693 } 694 if (hasDontEnumBug) { 695 for (i = 0; i < dontEnumsLength; i++) { 696 if (hasOwnProperty.call(obj, dontEnums[i])) { 697 result.push(dontEnums[i]); 698 } 699 } 700 } 701 return result; 702 }; 703 }()); 704}
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.