MapperTest/Code

// //JS /* =================================================== * bootstrap-transition.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#transitions * =================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* CSS TRANSITION SUPPORT (http://www.modernizr.com/) * ======================================================= */

$(function {

$.support.transition = (function {

var transitionEnd = (function {

var el = document.createElement('bootstrap') , transEndEventNames = { 'WebkitTransition' : 'webkitTransitionEnd' , 'MozTransition'    : 'transitionend' , 'OTransition'      : 'oTransitionEnd otransitionend' , 'transition'       : 'transitionend' }        , name

for (name in transEndEventNames){ if (el.style[name] !== undefined) { return transEndEventNames[name] }       }

})

return transitionEnd && { end: transitionEnd }

})

})

}(window.jQuery);/* ========================================================== * bootstrap-alert.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#alerts * ========================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* ALERT CLASS DEFINITION * ====================== */

var dismiss = '[data-dismiss="alert"]' , Alert = function (el) { $(el).on('click', dismiss, this.close) }

Alert.prototype.close = function (e) { var $this = $(this) , selector = $this.attr('data-target') , $parent

if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 }

$parent = $(selector)

e && e.preventDefault

$parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent)

$parent.trigger(e = $.Event('close'))

if (e.isDefaultPrevented) return

$parent.removeClass('in')

function removeElement { $parent .trigger('closed') .remove }

$.support.transition && $parent.hasClass('fade') ? $parent.on($.support.transition.end, removeElement) : removeElement }

/* ALERT PLUGIN DEFINITION * ======================= */

var old = $.fn.alert

$.fn.alert = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('alert')      if (!data) $this.data('alert', (data = new Alert(this)))      if (typeof option == 'string') data[option].call($this)    }) }

$.fn.alert.Constructor = Alert

/* ALERT NO CONFLICT * ================= */

$.fn.alert.noConflict = function { $.fn.alert = old return this }

/* ALERT DATA-API * ============== */

$(document).on('click.alert.data-api', dismiss, Alert.prototype.close)

}(window.jQuery);/* ============================================================ * bootstrap-button.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#buttons * ============================================================ * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================ */

!function ($) {

"use strict"; // jshint ;_;

/* BUTTON PUBLIC CLASS DEFINITION * ============================== */

var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, $.fn.button.defaults, options) }

Button.prototype.setState = function (state) { var d = 'disabled' , $el = this.$element , data = $el.data , val = $el.is('input') ? 'val' : 'html'

state = state + 'Text' data.resetText || $el.data('resetText', $el[val])

$el[val](data[state] || this.options[state])

// push to event loop to allow forms to submit setTimeout(function {      state == 'loadingText' ?        $el.addClass(d).attr(d, d) :        $el.removeClass(d).removeAttr(d)    }, 0) }

Button.prototype.toggle = function { var $parent = this.$element.closest('[data-toggle="buttons-radio"]')

$parent && $parent .find('.active') .removeClass('active')

this.$element.toggleClass('active') }

/* BUTTON PLUGIN DEFINITION * ======================== */

var old = $.fn.button

$.fn.button = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('button')        , options = typeof option == 'object' && option      if (!data) $this.data('button', (data = new Button(this, options)))      if (option == 'toggle') data.toggle      else if (option) data.setState(option)    }) }

$.fn.button.defaults = { loadingText: 'loading...' }

$.fn.button.Constructor = Button

/* BUTTON NO CONFLICT * ================== */

$.fn.button.noConflict = function { $.fn.button = old return this }

/* BUTTON DATA-API * =============== */

$(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {   var $btn = $(e.target)    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')    $btn.button('toggle')  })

}(window.jQuery);/* ========================================================== * bootstrap-carousel.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#carousel * ========================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* CAROUSEL CLASS DEFINITION * ========================= */

var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.options.pause == 'hover' && this.$element .on('mouseenter', $.proxy(this.pause, this)) .on('mouseleave', $.proxy(this.cycle, this)) }

Carousel.prototype = {

cycle: function (e) { if (!e) this.paused = false if (this.interval) clearInterval(this.interval); this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this }

, getActiveIndex: function { this.$active = this.$element.find('.item.active') this.$items = this.$active.parent.children return this.$items.index(this.$active) }

, to: function (pos) { var activeIndex = this.getActiveIndex , that = this

if (pos > (this.$items.length - 1) || pos < 0) return

if (this.sliding) { return this.$element.one('slid', function {          that.to(pos)        }) }

if (activeIndex == pos) { return this.pause.cycle }

return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) }

, pause: function (e) { if (!e) this.paused = true if (this.$element.find('.next, .prev').length && $.support.transition.end) { this.$element.trigger($.support.transition.end) this.cycle(true) }     clearInterval(this.interval) this.interval = null return this }

, next: function { if (this.sliding) return return this.slide('next') }

, prev: function { if (this.sliding) return return this.slide('prev') }

, slide: function (type, next) { var $active = this.$element.find('.item.active') , $next = next || $active[type] , isCycling = this.interval , direction = type == 'next' ? 'left' : 'right' , fallback = type == 'next' ? 'first' : 'last' , that = this , e

this.sliding = true

isCycling && this.pause

$next = $next.length ? $next : this.$element.find('.item')[fallback]

e = $.Event('slide', {       relatedTarget: $next[0]     , direction: direction      })

if ($next.hasClass('active')) return

if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') this.$element.one('slid', function {          var $nextIndicator = $(that.$indicators.children[that.getActiveIndex])          $nextIndicator && $nextIndicator.addClass('active')        }) }

if ($.support.transition && this.$element.hasClass('slide')) { this.$element.trigger(e) if (e.isDefaultPrevented) return $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) this.$element.one($.support.transition.end, function {          $next.removeClass([type, direction].join(' ')).addClass('active')          $active.removeClass(['active', direction].join(' '))          that.sliding = false          setTimeout(function  { that.$element.trigger('slid') }, 0)        }) } else { this.$element.trigger(e) if (e.isDefaultPrevented) return $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger('slid') }

isCycling && this.cycle

return this }

}

/* CAROUSEL PLUGIN DEFINITION * ========================== */

var old = $.fn.carousel

$.fn.carousel = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('carousel')        , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)        , action = typeof option == 'string' ? option : options.slide      if (!data) $this.data('carousel', (data = new Carousel(this, options)))      if (typeof option == 'number') data.to(option)      else if (action) data[action]      else if (options.interval) data.pause.cycle    }) }

$.fn.carousel.defaults = { interval: 5000 , pause: 'hover' }

$.fn.carousel.Constructor = Carousel

/* CAROUSEL NO CONFLICT * ==================== */

$.fn.carousel.noConflict = function { $.fn.carousel = old return this }

/* CAROUSEL DATA-API * ================= */

$(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {   var $this = $(this), href     , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7      , options = $.extend({}, $target.data, $this.data)      , slideIndex

$target.carousel(options)

if (slideIndex = $this.attr('data-slide-to')) { $target.data('carousel').pause.to(slideIndex).cycle }

e.preventDefault })

}(window.jQuery);/* ============================================================= * bootstrap-collapse.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#collapse * ============================================================= * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================ */

!function ($) {

"use strict"; // jshint ;_;

/* COLLAPSE PUBLIC CLASS DEFINITION * ================================ */

var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, $.fn.collapse.defaults, options)

if (this.options.parent) { this.$parent = $(this.options.parent) }

this.options.toggle && this.toggle }

Collapse.prototype = {

constructor: Collapse

, dimension: function { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' }

, show: function { var dimension , scroll , actives , hasData

if (this.transitioning || this.$element.hasClass('in')) return

dimension = this.dimension scroll = $.camelCase(['scroll', dimension].join('-')) actives = this.$parent && this.$parent.find('> .accordion-group > .in')

if (actives && actives.length) { hasData = actives.data('collapse') if (hasData && hasData.transitioning) return actives.collapse('hide') hasData || actives.data('collapse', null) }

this.$element[dimension](0) this.transition('addClass', $.Event('show'), 'shown') $.support.transition && this.$element[dimension](this.$element[0][scroll]) }

, hide: function { var dimension if (this.transitioning || !this.$element.hasClass('in')) return dimension = this.dimension this.reset(this.$element[dimension]) this.transition('removeClass', $.Event('hide'), 'hidden') this.$element[dimension](0) }

, reset: function (size) { var dimension = this.dimension

this.$element .removeClass('collapse') [dimension](size || 'auto') [0].offsetWidth

this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')

return this }

, transition: function (method, startEvent, completeEvent) { var that = this , complete = function { if (startEvent.type == 'show') that.reset that.transitioning = 0 that.$element.trigger(completeEvent) }

this.$element.trigger(startEvent)

if (startEvent.isDefaultPrevented) return

this.transitioning = 1

this.$element[method]('in')

$.support.transition && this.$element.hasClass('collapse') ? this.$element.one($.support.transition.end, complete) : complete }

, toggle: function { this[this.$element.hasClass('in') ? 'hide' : 'show'] }

}

/* COLLAPSE PLUGIN DEFINITION * ========================== */

var old = $.fn.collapse

$.fn.collapse = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('collapse')        , options = $.extend({}, $.fn.collapse.defaults, $this.data, typeof option == 'object' && option)      if (!data) $this.data('collapse', (data = new Collapse(this, options)))      if (typeof option == 'string') data[option]    }) }

$.fn.collapse.defaults = { toggle: true }

$.fn.collapse.Constructor = Collapse

/* COLLAPSE NO CONFLICT * ==================== */

$.fn.collapse.noConflict = function { $.fn.collapse = old return this }

/* COLLAPSE DATA-API * ================= */

$(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {   var $this = $(this), href     , target = $this.attr('data-target')        || e.preventDefault        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7      , option = $(target).data('collapse') ? 'toggle' : $this.data    $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')    $(target).collapse(option)  })

}(window.jQuery);/* ============================================================ * bootstrap-dropdown.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#dropdowns * ============================================================ * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================ */

!function ($) {

"use strict"; // jshint ;_;

/* DROPDOWN CLASS DEFINITION * ========================= */

var toggle = '[data-toggle=dropdown]' , Dropdown = function (element) { var $el = $(element).on('click.dropdown.data-api', this.toggle) $('html').on('click.dropdown.data-api', function {          $el.parent.removeClass('open')        }) }

Dropdown.prototype = {

constructor: Dropdown

, toggle: function (e) { var $this = $(this) , $parent , isActive

if ($this.is('.disabled, :disabled')) return

$parent = getParent($this)

isActive = $parent.hasClass('open')

clearMenus

if (!isActive) { if ('ontouchstart' in document.documentElement) { // if mobile we we use a backdrop because click events don't delegate $(' ').insertBefore($(this)).on('click', clearMenus) }       $parent.toggleClass('open') }

$this.focus

return false }

, keydown: function (e) { var $this , $items , $active , $parent , isActive , index

if (!/(38|40|27)/.test(e.keyCode)) return

$this = $(this)

e.preventDefault e.stopPropagation

if ($this.is('.disabled, :disabled')) return

$parent = getParent($this)

isActive = $parent.hasClass('open')

if (!isActive || (isActive && e.keyCode == 27)) { if (e.which == 27) $parent.find(toggle).focus return $this.click }

$items = $('[role=menu] li:not(.divider):visible a', $parent)

if (!$items.length) return

index = $items.index($items.filter(':focus'))

if (e.keyCode == 38 && index > 0) index--                                       // up      if (e.keyCode == 40 && index < $items.length - 1) index++                        // down if (!~index) index = 0

$items .eq(index) .focus }

}

function clearMenus { $('.dropdown-backdrop').remove $(toggle).each(function {      getParent($(this)).removeClass('open')    }) }

function getParent($this) { var selector = $this.attr('data-target') , $parent

if (!selector) { selector = $this.attr('href') selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 }

$parent = selector && $(selector)

if (!$parent || !$parent.length) $parent = $this.parent

return $parent }

/* DROPDOWN PLUGIN DEFINITION * ========================== */

var old = $.fn.dropdown

$.fn.dropdown = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('dropdown')      if (!data) $this.data('dropdown', (data = new Dropdown(this)))      if (typeof option == 'string') data[option].call($this)    }) }

$.fn.dropdown.Constructor = Dropdown

/* DROPDOWN NO CONFLICT * ==================== */

$.fn.dropdown.noConflict = function { $.fn.dropdown = old return this }

/* APPLY TO STANDARD DROPDOWN ELEMENTS * =================================== */

$(document) .on('click.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation }) .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.dropdown.data-api', toggle + ', [role=menu]', Dropdown.prototype.keydown)

}(window.jQuery); /* ========================================================= * bootstrap-modal.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#modals * ========================================================= * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================= */

!function ($) {

"use strict"; // jshint ;_;

/* MODAL CLASS DEFINITION * ====================== */

var Modal = function (element, options) { this.options = options this.$element = $(element) .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) this.options.remote && this.$element.find('.modal-body').load(this.options.remote) }

Modal.prototype = {

constructor: Modal

, toggle: function { return this[!this.isShown ? 'show' : 'hide'] }

, show: function { var that = this , e = $.Event('show')

this.$element.trigger(e)

if (this.isShown || e.isDefaultPrevented) return

this.isShown = true

this.escape

this.backdrop(function {          var transition = $.support.transition && that.$element.hasClass('fade')

if (!that.$element.parent.length) { that.$element.appendTo(document.body) //don't move modals dom position }

that.$element.show

if (transition) { that.$element[0].offsetWidth // force reflow }

that.$element .addClass('in') .attr('aria-hidden', false)

that.enforceFocus

transition ? that.$element.one($.support.transition.end, function { that.$element.focus.trigger('shown') }) : that.$element.focus.trigger('shown')

})     }

, hide: function (e) { e && e.preventDefault

var that = this

e = $.Event('hide')

this.$element.trigger(e)

if (!this.isShown || e.isDefaultPrevented) return

this.isShown = false

this.escape

$(document).off('focusin.modal')

this.$element .removeClass('in') .attr('aria-hidden', true)

$.support.transition && this.$element.hasClass('fade') ? this.hideWithTransition : this.hideModal }

, enforceFocus: function { var that = this $(document).on('focusin.modal', function (e) {         if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {            that.$element.focus          }        }) }

, escape: function { var that = this if (this.isShown && this.options.keyboard) { this.$element.on('keyup.dismiss.modal', function ( e ) {           e.which == 27 && that.hide          }) } else if (!this.isShown) { this.$element.off('keyup.dismiss.modal') }     }

, hideWithTransition: function { var that = this , timeout = setTimeout(function {              that.$element.off($.support.transition.end)              that.hideModal            }, 500)

this.$element.one($.support.transition.end, function {          clearTimeout(timeout)          that.hideModal        }) }

, hideModal: function { var that = this this.$element.hide this.backdrop(function {          that.removeBackdrop          that.$element.trigger('hidden')        }) }

, removeBackdrop: function { this.$backdrop && this.$backdrop.remove this.$backdrop = null }

, backdrop: function (callback) { var that = this , animate = this.$element.hasClass('fade') ? 'fade' : ''

if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate

this.$backdrop = $('') .appendTo(document.body)

this.$backdrop.click(           this.options.backdrop == 'static' ?              $.proxy(this.$element[0].focus, this.$element[0])            : $.proxy(this.hide, this)          )

if (doAnimate) this.$backdrop[0].offsetWidth // force reflow

this.$backdrop.addClass('in')

if (!callback) return

doAnimate ? this.$backdrop.one($.support.transition.end, callback) : callback

} else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in')

$.support.transition && this.$element.hasClass('fade')? this.$backdrop.one($.support.transition.end, callback) : callback

} else if (callback) { callback }     }  }

/* MODAL PLUGIN DEFINITION * ======================= */

var old = $.fn.modal

$.fn.modal = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('modal')        , options = $.extend({}, $.fn.modal.defaults, $this.data, typeof option == 'object' && option)      if (!data) $this.data('modal', (data = new Modal(this, options)))      if (typeof option == 'string') data[option]      else if (options.show) data.show    }) }

$.fn.modal.defaults = { backdrop: true , keyboard: true , show: true }

$.fn.modal.Constructor = Modal

/* MODAL NO CONFLICT * ================= */

$.fn.modal.noConflict = function { $.fn.modal = old return this }

/* MODAL DATA-API * ============== */

$(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {   var $this = $(this)     , href = $this.attr('href')      , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7      , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data, $this.data)

e.preventDefault

$target .modal(option) .one('hide', function {        $this.focus      }) })

}(window.jQuery); /* =========================================================== * bootstrap-tooltip.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#tooltips * Inspired by the original jQuery.tipsy by Jason Frame * =========================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* TOOLTIP PUBLIC CLASS DEFINITION * =============================== */

var Tooltip = function (element, options) { this.init('tooltip', element, options) }

Tooltip.prototype = {

constructor: Tooltip

, init: function (type, element, options) { var eventIn , eventOut , triggers , trigger , i

this.type = type this.$element = $(element) this.options = this.getOptions(options) this.enabled = true

triggers = this.options.trigger.split(' ')

for (i = triggers.length; i--;) { trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { eventIn = trigger == 'hover' ? 'mouseenter' : 'focus' eventOut = trigger == 'hover' ? 'mouseleave' : 'blur' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) }     }

this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle }

, getOptions: function (options) { options = $.extend({}, $.fn[this.type].defaults, this.$element.data, options)

if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay , hide: options.delay }     }

return options }

, enter: function (e) { var defaults = $.fn[this.type].defaults , options = {} , self

this._options && $.each(this._options, function (key, value) {       if (defaults[key] != value) options[key] = value      }, this)

self = $(e.currentTarget)[this.type](options).data(this.type)

if (!self.options.delay || !self.options.delay.show) return self.show

clearTimeout(this.timeout) self.hoverState = 'in' this.timeout = setTimeout(function {       if (self.hoverState == 'in') self.show      }, self.options.delay.show) }

, leave: function (e) { var self = $(e.currentTarget)[this.type](this._options).data(this.type)

if (this.timeout) clearTimeout(this.timeout) if (!self.options.delay || !self.options.delay.hide) return self.hide

self.hoverState = 'out' this.timeout = setTimeout(function {       if (self.hoverState == 'out') self.hide      }, self.options.delay.hide) }

, show: function { var $tip , pos , actualWidth , actualHeight , placement , tp      , e = $.Event('show')

if (this.hasContent && this.enabled) { this.$element.trigger(e) if (e.isDefaultPrevented) return $tip = this.tip this.setContent

if (this.options.animation) { $tip.addClass('fade') }

placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement

$tip .detach .css({ top: 0, left: 0, display: 'block' })

this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)

pos = this.getPosition

actualWidth = $tip[0].offsetWidth actualHeight = $tip[0].offsetHeight

switch (placement) { case 'bottom': tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} break case 'top': tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} break case 'left': tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} break case 'right': tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} break }

this.applyPlacement(tp, placement) this.$element.trigger('shown') }   }

, applyPlacement: function(offset, placement){ var $tip = this.tip , width = $tip[0].offsetWidth , height = $tip[0].offsetHeight , actualWidth , actualHeight , delta , replace

$tip .offset(offset) .addClass(placement) .addClass('in')

actualWidth = $tip[0].offsetWidth actualHeight = $tip[0].offsetHeight

if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight replace = true }

if (placement == 'bottom' || placement == 'top') { delta = 0

if (offset.left < 0){ delta = offset.left * -2 offset.left = 0 $tip.offset(offset) actualWidth = $tip[0].offsetWidth actualHeight = $tip[0].offsetHeight }

this.replaceArrow(delta - width + actualWidth, actualWidth, 'left') } else { this.replaceArrow(actualHeight - height, actualHeight, 'top') }

if (replace) $tip.offset(offset) }

, replaceArrow: function(delta, dimension, position){ this .arrow .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') }

, setContent: function { var $tip = this.tip , title = this.getTitle

$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') }

, hide: function { var that = this , $tip = this.tip , e = $.Event('hide')

this.$element.trigger(e) if (e.isDefaultPrevented) return

$tip.removeClass('in')

function removeWithAnimation { var timeout = setTimeout(function {          $tip.off($.support.transition.end).detach        }, 500)

$tip.one($.support.transition.end, function {          clearTimeout(timeout)          $tip.detach        }) }

$.support.transition && this.$tip.hasClass('fade') ? removeWithAnimation : $tip.detach

this.$element.trigger('hidden')

return this }

, fixTitle: function { var $e = this.$element if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { $e.attr('data-original-title', $e.attr('title') || ).attr('title', ) }   }

, hasContent: function { return this.getTitle }

, getPosition: function { var el = this.$element[0] return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect : {       width: el.offsetWidth     , height: el.offsetHeight      }, this.$element.offset) }

, getTitle: function { var title , $e = this.$element , o = this.options

title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)

return title }

, tip: function { return this.$tip = this.$tip || $(this.options.template) }

, arrow: function{ return this.$arrow = this.$arrow || this.tip.find(".tooltip-arrow") }

, validate: function { if (!this.$element[0].parentNode) { this.hide this.$element = null this.options = null }   }

, enable: function { this.enabled = true }

, disable: function { this.enabled = false }

, toggleEnabled: function { this.enabled = !this.enabled }

, toggle: function (e) { var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this self.tip.hasClass('in') ? self.hide : self.show }

, destroy: function { this.hide.$element.off('.' + this.type).removeData(this.type) }

}

/* TOOLTIP PLUGIN DEFINITION * ========================= */

var old = $.fn.tooltip

$.fn.tooltip = function ( option ) { return this.each(function {      var $this = $(this)       , data = $this.data('tooltip')        , options = typeof option == 'object' && option      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))      if (typeof option == 'string') data[option]    }) }

$.fn.tooltip.Constructor = Tooltip

$.fn.tooltip.defaults = { animation: true , placement: 'top' , selector: false , template: '   ' , trigger: 'hover focus' , title: '' , delay: 0 , html: false , container: false }

/* TOOLTIP NO CONFLICT * =================== */

$.fn.tooltip.noConflict = function { $.fn.tooltip = old return this }

}(window.jQuery); /* =========================================================== * bootstrap-popover.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#popovers * =========================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * =========================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* POPOVER PUBLIC CLASS DEFINITION * =============================== */

var Popover = function (element, options) { this.init('popover', element, options) }

/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js    ========================================== */

Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {

constructor: Popover

, setContent: function { var $tip = this.tip , title = this.getTitle , content = this.getContent

$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)

$tip.removeClass('fade top bottom left right in') }

, hasContent: function { return this.getTitle || this.getContent }

, getContent: function { var content , $e = this.$element , o = this.options

content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) || $e.attr('data-content')

return content }

, tip: function { if (!this.$tip) { this.$tip = $(this.options.template) }     return this.$tip }

, destroy: function { this.hide.$element.off('.' + this.type).removeData(this.type) }

})

/* POPOVER PLUGIN DEFINITION * ======================= */

var old = $.fn.popover

$.fn.popover = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('popover')        , options = typeof option == 'object' && option      if (!data) $this.data('popover', (data = new Popover(this, options)))      if (typeof option == 'string') data[option]    }) }

$.fn.popover.Constructor = Popover

$.fn.popover.defaults = $.extend({}, $.fn.tooltip.defaults, {   placement: 'right'  , trigger: 'click'  , content: ''  , template: '    '  })

/* POPOVER NO CONFLICT * =================== */

$.fn.popover.noConflict = function { $.fn.popover = old return this }

}(window.jQuery); /* ============================================================= * bootstrap-scrollspy.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#scrollspy * ============================================================= * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* SCROLLSPY CLASS DEFINITION * ========================== */

function ScrollSpy(element, options) { var process = $.proxy(this.process, this) , $element = $(element).is('body') ? $(window) : $(element) , href this.options = $.extend({}, $.fn.scrollspy.defaults, options) this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process) this.selector = (this.options.target     || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, )) //strip for ie7      || ) + ' .nav li > a'    this.$body = $('body') this.refresh this.process }

ScrollSpy.prototype = {

constructor: ScrollSpy

, refresh: function { var self = this , $targets

this.offsets = $([]) this.targets = $([])

$targets = this.$body .find(this.selector) .map(function {            var $el = $(this)             , href = $el.data('target') || $el.attr('href')              , $href = /^#\w/.test(href) && $(href)            return ( $href && $href.length && $href.position.top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop), href  ) || null          }) .sort(function (a, b) { return a[0] - b[0] }) .each(function {            self.offsets.push(this[0])            self.targets.push(this[1])          }) }

, process: function { var scrollTop = this.$scrollElement.scrollTop + this.options.offset , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight , maxScroll = scrollHeight - this.$scrollElement.height , offsets = this.offsets , targets = this.targets , activeTarget = this.activeTarget , i

if (scrollTop >= maxScroll) { return activeTarget != (i = targets.last[0]) && this.activate ( i ) }

for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && this.activate( targets[i] ) }     }

, activate: function (target) { var active , selector

this.activeTarget = target

$(this.selector) .parent('.active') .removeClass('active')

selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]'

active = $(selector) .parent('li') .addClass('active')

if (active.parent('.dropdown-menu').length) { active = active.closest('li.dropdown').addClass('active') }

active.trigger('activate') }

}

/* SCROLLSPY PLUGIN DEFINITION * =========================== */

var old = $.fn.scrollspy

$.fn.scrollspy = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('scrollspy')        , options = typeof option == 'object' && option      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))      if (typeof option == 'string') data[option]    }) }

$.fn.scrollspy.Constructor = ScrollSpy

$.fn.scrollspy.defaults = { offset: 10 }

/* SCROLLSPY NO CONFLICT * ===================== */

$.fn.scrollspy.noConflict = function { $.fn.scrollspy = old return this }

/* SCROLLSPY DATA-API * ================== */

$(window).on('load', function {    $('[data-spy="scroll"]').each(function  { var $spy = $(this) $spy.scrollspy($spy.data) }) })

}(window.jQuery);/* ======================================================== * bootstrap-tab.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#tabs * ======================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ======================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* TAB CLASS DEFINITION * ==================== */

var Tab = function (element) { this.element = $(element) }

Tab.prototype = {

constructor: Tab

, show: function { var $this = this.element , $ul = $this.closest('ul:not(.dropdown-menu)') , selector = $this.attr('data-target') , previous , $target , e

if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 }

if ( $this.parent('li').hasClass('active') ) return

previous = $ul.find('.active:last a')[0]

e = $.Event('show', {       relatedTarget: previous      })

$this.trigger(e)

if (e.isDefaultPrevented) return

$target = $(selector)

this.activate($this.parent('li'), $ul) this.activate($target, $target.parent, function {        $this.trigger({ type: 'shown' , relatedTarget: previous })     })    }

, activate: function ( element, container, callback) { var $active = container.find('> .active') , transition = callback && $.support.transition && $active.hasClass('fade')

function next { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active')

element.addClass('active')

if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') }

if ( element.parent('.dropdown-menu') ) { element.closest('li.dropdown').addClass('active') }

callback && callback }

transition ? $active.one($.support.transition.end, next) : next

$active.removeClass('in') } }

/* TAB PLUGIN DEFINITION * ===================== */

var old = $.fn.tab

$.fn.tab = function ( option ) { return this.each(function {      var $this = $(this)       , data = $this.data('tab')      if (!data) $this.data('tab', (data = new Tab(this)))      if (typeof option == 'string') data[option]    }) }

$.fn.tab.Constructor = Tab

/* TAB NO CONFLICT * =============== */

$.fn.tab.noConflict = function { $.fn.tab = old return this }

/* TAB DATA-API * ============ */

$(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {   e.preventDefault    $(this).tab('show')  })

}(window.jQuery);/* ============================================================= * bootstrap-typeahead.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#typeahead * ============================================================= * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================ */

!function($){

"use strict"; // jshint ;_;

/* TYPEAHEAD PUBLIC CLASS DEFINITION * ================================= */

var Typeahead = function (element, options) { this.$element = $(element) this.options = $.extend({}, $.fn.typeahead.defaults, options) this.matcher = this.options.matcher || this.matcher this.sorter = this.options.sorter || this.sorter this.highlighter = this.options.highlighter || this.highlighter this.updater = this.options.updater || this.updater this.source = this.options.source this.$menu = $(this.options.menu) this.shown = false this.listen }

Typeahead.prototype = {

constructor: Typeahead

, select: function { var val = this.$menu.find('.active').attr('data-value') this.$element .val(this.updater(val)) .change return this.hide }

, updater: function (item) { return item }

, show: function { var pos = $.extend({}, this.$element.position, {       height: this.$element[0].offsetHeight      })

this.$menu .insertAfter(this.$element) .css({         top: pos.top + pos.height       , left: pos.left        }) .show

this.shown = true return this }

, hide: function { this.$menu.hide this.shown = false return this }

, lookup: function (event) { var items

this.query = this.$element.val

if (!this.query || this.query.length < this.options.minLength) { return this.shown ? this.hide : this }

items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source

return items ? this.process(items) : this }

, process: function (items) { var that = this

items = $.grep(items, function (item) {       return that.matcher(item)      })

items = this.sorter(items)

if (!items.length) { return this.shown ? this.hide : this }

return this.render(items.slice(0, this.options.items)).show }

, matcher: function (item) { return ~item.toLowerCase.indexOf(this.query.toLowerCase) }

, sorter: function (items) { var beginswith = [] , caseSensitive = [] , caseInsensitive = [] , item

while (item = items.shift) { if (!item.toLowerCase.indexOf(this.query.toLowerCase)) beginswith.push(item) else if (~item.indexOf(this.query)) caseSensitive.push(item) else caseInsensitive.push(item) }

return beginswith.concat(caseSensitive, caseInsensitive) }

, highlighter: function (item) { var query = this.query.replace(/[\-\[\]{}*+?.,\\\^$|#\s]/g, '\\$&') return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {       return ' ' + match + ' '      }) }

, render: function (items) { var that = this

items = $(items).map(function (i, item) {       i = $(that.options.item).attr('data-value', item)        i.find('a').html(that.highlighter(item))        return i[0]      })

items.first.addClass('active') this.$menu.html(items) return this }

, next: function (event) { var active = this.$menu.find('.active').removeClass('active') , next = active.next

if (!next.length) { next = $(this.$menu.find('li')[0]) }

next.addClass('active') }

, prev: function (event) { var active = this.$menu.find('.active').removeClass('active') , prev = active.prev

if (!prev.length) { prev = this.$menu.find('li').last }

prev.addClass('active') }

, listen: function { this.$element .on('focus',   $.proxy(this.focus, this)) .on('blur',    $.proxy(this.blur, this)) .on('keypress', $.proxy(this.keypress, this)) .on('keyup',   $.proxy(this.keyup, this))

if (this.eventSupported('keydown')) { this.$element.on('keydown', $.proxy(this.keydown, this)) }

this.$menu .on('click', $.proxy(this.click, this)) .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) }

, eventSupported: function(eventName) { var isSupported = eventName in this.$element if (!isSupported) { this.$element.setAttribute(eventName, 'return;') isSupported = typeof this.$element[eventName] === 'function' }     return isSupported }

, move: function (e) { if (!this.shown) return

switch(e.keyCode) { case 9: // tab case 13: // enter case 27: // escape e.preventDefault break

case 38: // up arrow e.preventDefault this.prev break

case 40: // down arrow e.preventDefault this.next break }

e.stopPropagation }

, keydown: function (e) { this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]) this.move(e) }

, keypress: function (e) { if (this.suppressKeyPressRepeat) return this.move(e) }

, keyup: function (e) { switch(e.keyCode) { case 40: // down arrow case 38: // up arrow case 16: // shift case 17: // ctrl case 18: // alt break

case 9: // tab case 13: // enter if (!this.shown) return this.select break

case 27: // escape if (!this.shown) return this.hide break

default: this.lookup }

e.stopPropagation e.preventDefault }

, focus: function (e) { this.focused = true }

, blur: function (e) { this.focused = false if (!this.mousedover && this.shown) this.hide }

, click: function (e) { e.stopPropagation e.preventDefault this.select this.$element.focus }

, mouseenter: function (e) { this.mousedover = true this.$menu.find('.active').removeClass('active') $(e.currentTarget).addClass('active') }

, mouseleave: function (e) { this.mousedover = false if (!this.focused && this.shown) this.hide }

}

/* TYPEAHEAD PLUGIN DEFINITION * =========================== */

var old = $.fn.typeahead

$.fn.typeahead = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('typeahead')        , options = typeof option == 'object' && option      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))      if (typeof option == 'string') data[option]    }) }

$.fn.typeahead.defaults = { source: [] , items: 8 , menu: '' , item: '' , minLength: 1 }

$.fn.typeahead.Constructor = Typeahead

/* TYPEAHEAD NO CONFLICT * =================== */

$.fn.typeahead.noConflict = function { $.fn.typeahead = old return this }

/* TYPEAHEAD DATA-API * ================== */

$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {   var $this = $(this)    if ($this.data('typeahead')) return    $this.typeahead($this.data)  })

}(window.jQuery); /* ========================================================== * bootstrap-affix.js v2.3.2 * http://getbootstrap.com/2.3.2/javascript.html#affix * ========================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */

!function ($) {

"use strict"; // jshint ;_;

/* AFFIX CLASS DEFINITION * ====================== */

var Affix = function (element, options) { this.options = $.extend({}, $.fn.affix.defaults, options) this.$window = $(window) .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.affix.data-api', $.proxy(function  { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) this.$element = $(element) this.checkPosition }

Affix.prototype.checkPosition = function { if (!this.$element.is(':visible')) return

var scrollHeight = $(document).height , scrollTop = this.$window.scrollTop , position = this.$element.offset , offset = this.options.offset , offsetBottom = offset.bottom , offsetTop = offset.top , reset = 'affix affix-top affix-bottom' , affix

if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top if (typeof offsetBottom == 'function') offsetBottom = offset.bottom

affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false   : offsetBottom != null && (position.top + this.$element.height >= scrollHeight - offsetBottom) ? 'bottom' : offsetTop != null && scrollTop <= offsetTop ? 'top'   : false

if (this.affixed === affix) return

this.affixed = affix this.unpin = affix == 'bottom' ? position.top - scrollTop : null

this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) }

/* AFFIX PLUGIN DEFINITION * ======================= */

var old = $.fn.affix

$.fn.affix = function (option) { return this.each(function {      var $this = $(this)       , data = $this.data('affix')        , options = typeof option == 'object' && option      if (!data) $this.data('affix', (data = new Affix(this, options)))      if (typeof option == 'string') data[option]    }) }

$.fn.affix.Constructor = Affix

$.fn.affix.defaults = { offset: 0 }

/* AFFIX NO CONFLICT * ================= */

$.fn.affix.noConflict = function { $.fn.affix = old return this }

/* AFFIX DATA-API * ============== */

$(window).on('load', function {    $('[data-spy="affix"]').each(function  { var $spy = $(this) , data = $spy.data

data.offset = data.offset || {}

data.offsetBottom && (data.offset.bottom = data.offsetBottom) data.offsetTop && (data.offset.top = data.offsetTop)

$spy.affix(data) }) })

}(window.jQuery);

//All images need to have this size: //high resolution images(png) should be 4x in size var minimap_images_width = 4096; var minimap_images_height = 4096;

var minimap_mapper_page = 'http://necronianewworld.wikia.com/wiki/MapperTest';

//var minimap_max_x1 = 131; //var minimap_min_x = 124; var minimap_max_x1 = 131; var minimap_min_x = 124;

var minimap_max_y = 129; var minimap_min_y = 121;

var radix_decimal = 10;

var floor_level_max = 15; var floor_level_min = 0; var floor_level_ground = 7;

var initial_pos_x1 = 127; var initial_pos_x2 = 128;

var initial_pos_y1 = 124; var initial_pos_y2 = 128;

var initial_pos_z = 7;

var minimap_fractional_limit = 512; var minimap_max_fractional = 511; var minimap_min_fractional = 0;

var minimap_div_width = 768; var minimap_div_width_half = 384;

var minimap_div_heigth = 576; var minimap_div_heigth_half = 288;

minimap_images = [];

minimap_images[0] = [ 'http://images2.wikia.nocookie.net/tibia/en/images/9/97/Minimap_Symbols.gif', 'http://images4.wikia.nocookie.net/tibia/en/images/6/6c/Minimap_Loading.gif' ];

minimap_images[1] = [ 'https://tibiamaps.github.io/tibia-map-data/floor-00-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-01-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-02-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-03-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-04-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-05-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-06-map.png', 'http://vignette4.wikia.nocookie.net/necronianewworld/images/c/cb/Floor-07-map.png/revision/latest', 'https://tibiamaps.github.io/tibia-map-data/floor-08-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-09-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-10-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-11-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-12-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-13-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-14-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-15-map.png' ];

minimap_images[4] = [ ,   ,    ,    ,    ,    ,    '',    'http://vignette1.wikia.nocookie.net/necronianewworld/images/c/c5/Minimap_Floor_7h.png/revision/latest', ,   ,    ,    ,    ,    ,    ,     ];

if (typeof Image === 'function') { // Image constructor supported, we can preload images preload_image = function (src) { var img = new Image; img.src = src; return img; };   preload_image_array = function (arr) { var len = arr.length; while (len--) { preload_image(arr[len]); }   };    mapper_preload_files = function (ele) { var files = minimap_images, len = files.length; if (ele.checked) { while (len--) { if (files[len] && typeof files[len] === 'object') { preload_image_array(files[len]); }           }        }    }; }

minimap_get_coords = function (url, varname) { url = decodeURI(url); if (typeof varname == 'undefined') { varname = 'coords'; }   var pars = []; var coords = []; var urlParams = url.split(varname + '='); urlParams.shift; urlParams = urlParams.join('').split('&')[0];

if (varname == 'coords') { //0x.1x,2y.3y,4z,5zoom,6zoomm,7centermark if (urlParams === '' || (urlParams = urlParams.split(/[,-]/)).length < 3) { coords = [initial_pos_x1, initial_pos_x2, initial_pos_y1, initial_pos_y2, initial_pos_z, 1, 1, 1]; }       else { pars[0] = parseInt(urlParams[0].split('.')[0] || initial_pos_x1, radix_decimal); pars[1] = parseInt(urlParams[0].split('.')[1] || initial_pos_x2, radix_decimal); pars[2] = parseInt(urlParams[1].split('.')[0] || initial_pos_y1, radix_decimal); pars[3] = parseInt(urlParams[1].split('.')[1] || initial_pos_y2, radix_decimal); pars[4] = parseInt(urlParams[2] || initial_pos_z, radix_decimal); pars[5] = parseFloat(urlParams[3] || 1); pars[6] = parseFloat(urlParams[4] || 1); pars[7] = parseInt(urlParams[5] || 1, radix_decimal);

coords[0] = (pars[0] > minimap_max_x1 || pars[0] < minimap_min_x ? initial_pos_x1 : pars[0]); coords[1] = (pars[1] > minimap_max_fractional || pars[1] < minimap_min_fractional ? initial_pos_x2 : pars[1]); coords[2] = (pars[2] > minimap_max_y || pars[2] < minimap_min_y ? initial_pos_y1 : pars[2]); coords[3] = (pars[3] > minimap_max_fractional || pars[3] < minimap_min_fractional ? initial_pos_y2 : pars[3]); coords[4] = (pars[4] > floor_level_max || pars[4] < floor_level_min ? initial_pos_z : pars[4]); coords[5] = (pars[5] > 8 || pars[5] < 1 ? 1 : pars[5]); coords[6] = (pars[6] > 8 || pars[6] < 0 ? 1 : pars[6]); coords[7] = (pars[7] > 1 || pars[7] < 0 ? 1 : pars[7]); }   }    else if (varname.indexOf('mark') === 0) { //Default 0x.1x,2y.3y,4z,5icon,6link if (urlParams === '' || (urlParams = urlParams.split(/[,-]/)).length < 3) { coords = [initial_pos_x1, initial_pos_x2, initial_pos_y1, initial_pos_y2, initial_pos_z, 1, '']; }       else { pars[0] = parseInt(urlParams[0].split('.')[0] || initial_pos_x1, radix_decimal); pars[1] = parseInt(urlParams[0].split('.')[1] || initial_pos_x2, radix_decimal); pars[2] = parseInt(urlParams[1].split('.')[0] || initial_pos_y1, radix_decimal); pars[3] = parseInt(urlParams[1].split('.')[1] || initial_pos_y2, radix_decimal); pars[4] = parseInt(urlParams[2] || initial_pos_z, radix_decimal); pars[5] = parseInt(urlParams[3] || 1, radix_decimal); pars[6] = urlParams[4] || '';

coords[0] = (pars[0] > minimap_max_x1 || pars[0] < minimap_min_x ? initial_pos_x1 : pars[0]); coords[1] = (pars[1] > minimap_max_fractional || pars[1] < minimap_min_fractional ? initial_pos_x2 : pars[1]); coords[2] = (pars[2] > minimap_max_y || pars[2] < minimap_min_y ? initial_pos_y1 : pars[2]); coords[3] = (pars[3] > minimap_max_fractional || pars[3] < minimap_min_fractional ? initial_pos_y2 : pars[3]); coords[4] = (pars[4] > floor_level_max || pars[4] < floor_level_min ? initial_pos_z : pars[4]); coords[5] = (pars[5] > 22 || pars[5] < 0 ? 1 : pars[5]); }   }    return coords; };

minimap_change_src = function { var fresh = (minimap_read_cookie('minimap_fresh') == '1'), len1 = minimap_images.length, len2, currList; if (fresh) { while (len1--) { currList = minimap_images[len1]; len2 = currList instanceof Array ? currList.length : 0; while (len2--) { if (currList[len2]) { currList[len2] += "?nocache=" + (+new Date); }           }        }    } };

minimap_center_div = function { var aligner = function (ea) { if (ea.css('display') == 'block') { var tmp = parseInt((($(window).height - ea[0].offsetHeight) / 2) + $(window).scrollTop, radix_decimal); tmp = (tmp > 0 ? tmp : 10); ea.css({               position: 'absolute',                top: tmp,                left: parseInt((($(window).width - ea.width) / 2) + $(window).scrollLeft, radix_decimal)            }); $('#minimap_blackout').css({display: 'block'}).height($(document).height); }   };    aligner($('#minimap_wp')); };

var minimap_drago = null; var minimap_dragos = null; var minimap_dragms = null; minimap_dragstart = function { $('#minimap_img').mousedown(function (ev) {       if (!(minimap_drago = $('#minimap_imgdiv')[0])) {            return;        }        minimap_dragms = {x: ev.pageX, y: ev.pageY};        minimap_dragos = {x: $(minimap_drago).css('left'), y: $(minimap_drago).css('top')};        return false;    }); };

$(document).mouseup(function (ev) {   if (minimap_drago) {        minimap_map_data[1] += parseInt((minimap_dragms.x - ev.pageX) / minimap_map_data[5], radix_decimal);        minimap_map_data[3] += parseInt((minimap_dragms.y - ev.pageY) / minimap_map_data[5], radix_decimal);        minimap_pos;    }    minimap_drago = null; });

$(document).mousemove(function (ev) {   if (minimap_drago) {        minimap_drago.style.left = (parseFloat(minimap_dragos.x) - (minimap_dragms.x - ev.pageX)) + 'px';        minimap_drago.style.top = (parseFloat(minimap_dragos.y) - (minimap_dragms.y - ev.pageY)) + 'px';        return false;    } });

minimap_map_data = []; minimap_map_sdata = [];

minimap_data_to_url = function (type) { //0x.1x,2y.3y,4z,5zoom,6zoomm,7centermark //0x.1x,2y.3y,4z,5icon,6link var x, ret; if (type === 0) {//Direct Link ret = minimap_mapper_page + '?coords='; ret += minimap_map_data[0] + '.' + minimap_map_data[1] + '-' + minimap_map_data[2] + '.' + minimap_map_data[3] + '-' + minimap_map_data[4] + '-' + minimap_map_data[5] + '-' + minimap_map_data[6] + '-' + minimap_map_data[7]; if ($('#minimap_marks_enabled').is(':checked')) { for (x in minimap_map_data) { if (minimap_map_data.hasOwnProperty(x) && typeof minimap_map_data[x] == 'object') { ret += '&' + x + '='; ret += minimap_map_data[x][0] + '.' + minimap_map_data[x][1] + '-' + minimap_map_data[x][2] + '.' + minimap_map_data[x][3] + '-' + minimap_map_data[x][4] + '-' + minimap_map_data[x][5] + (minimap_map_data[x][6] ? '-' + minimap_map_data[x][6] : ''); }           }        }    }    else if (type == 1) {//Template:Minimap ret = '{' + '{Minimap'; ret += '|x=' + minimap_map_data[0] + '.' + minimap_map_data[1] + '|y=' + minimap_map_data[2] + '.' + minimap_map_data[3] + '|z=' + minimap_map_data[4] + '|zoom=' + minimap_map_data[5] + '|zoomm=' + minimap_map_data[6] + '|width=' + (1 / minimap_map_data[5]) + '|height=' + (1 / minimap_map_data[5]) + '|centermark=' + (minimap_map_data[7] ? 'yes' : 0); if ($('#minimap_marks_enabled').is(':checked')) { for (x in minimap_map_data) { if (minimap_map_data.hasOwnProperty(x) && typeof minimap_map_data[x] == 'object') { if (minimap_map_data[4] != minimap_map_data[x][4]) { continue; }                   ret += '|' + x + '='; ret += minimap_map_data[x][0] + '.' + minimap_map_data[x][1] + ',' + minimap_map_data[x][2] + '.' + minimap_map_data[x][3] + ',' + minimap_map_data[x][5] + ',' + minimap_map_data[x][6]; }           }        }        ret += '}' + '}'; }   else if (type == 2) {//Wiki Link ret = document.getElementById('minimap_tcode3').value.replace(/\s|%20/gi, '_'); ret = '[' + minimap_data_to_url(0).replace(/\s|%20/gi, '_') + (ret ===  ?  : ' ') + ret + ']'; }   else if (type == 3) {//x,y,z ret = minimap_map_data[0] + '.' + minimap_map_data[1] + ',' + minimap_map_data[2] + '.' + minimap_map_data[3] + ',' + minimap_map_data[4]; }   else if (type == 4) {//tibiaml map ret = 'http://map.tibiaml.com/?p=' + ((minimap_map_data[0] * minimap_fractional_limit) + minimap_map_data[1]) + ',' + ((minimap_map_data[2] * minimap_fractional_limit) + minimap_map_data[3]) + ',' + minimap_map_data[4] + ':' + (minimap_map_data[5] > 7 ? 8 : (minimap_map_data[5] > 3 ? 7 : (minimap_map_data[5] > 2 ? 6 : 5))); }   return ret; };

minimap_mapper_list_click = function { if ($('#minimap_loading').css('display') == 'block') { return; }   var e = $('#mapper_list :selected').val; e = decodeURI(e).split(','); $('#mapper_mark_remove').attr('disabled', false); minimap_map_data[0] = parseInt(e[0], radix_decimal); minimap_map_data[1] = parseInt(e[1], radix_decimal); minimap_map_data[2] = parseInt(e[2], radix_decimal); minimap_map_data[3] = parseInt(e[3], radix_decimal); minimap_map_data[4] = parseInt(e[4], radix_decimal); minimap_pos(false); };

minimap_read_cookie = function (name) { var i, c, cl = document.cookie.split(';'); for (i = 0; i < cl.length; i++) { c = $.trim(cl[i]); if (c.indexOf(name + '=') === 0) { return c.substring(name.length + 1); }   }    return null; };

minimap_write_cookie = function (name, val) { var date = new Date; date.setTime(date.getTime + (7 * 24 * 60 * 60 * 1000)); date = date.toGMTString; document.cookie = name + '=' + val + '; expires=' + date + '; path=/'; };

minimap_codes_update = function (reset_list) { var tmp; tmp = -1 * (minimap_map_data[4] - 7); $('#minimap_current_floor').val((tmp < 1 ? '' : '+') + tmp); $('#minimap_current_coords').val(minimap_data_to_url(3)); if ($('#minimap_tcode1').size) { $('#minimap_tcode1').val(minimap_data_to_url(0)); $('#minimap_tcode2').val(minimap_data_to_url(1)); $('#minimap_tcode4').val(minimap_data_to_url(2)); if (typeof reset_list == 'undefined' || reset_list) { var i = 1; tmp = ''; while (minimap_map_data['mark' + i]) { tmp += '' + i + ' '; i++; }           $('#mapper_list').empty.append(tmp); }   } };

minimap_pos_b = function (action, value) { if ($('#minimap_loading').css('display') == 'block') { return; }   var x;    if (action == 'reset') { minimap_map_data = []; for (x in minimap_map_sdata) { if (minimap_map_sdata.hasOwnProperty(x)) { minimap_map_data[x] = (typeof minimap_map_sdata[x] == 'object' ? minimap_map_sdata[x].slice(0) : minimap_map_sdata[x]); }       }    }    else if (action == 'we') { minimap_map_data[1] += value; }   else if (action == 'ns') { minimap_map_data[3] += value; }   else if (action == 'zoom') { x = minimap_map_data[5] * value; if (x > 8 || x < 1) { return; }       minimap_map_data[5] = Math.round(x); if (minimap_map_data[5] < 1) { minimap_map_data[5] = 1; }       while (minimap_map_data[5] != 1 && minimap_map_data[5] != 2 && minimap_map_data[5] != 4 && minimap_map_data[5] != 8) { minimap_map_data[5]--; }   }    else if (action == 'floor') { x = minimap_map_data[4] + value; if (x > floor_level_max || x < floor_level_min) { return; }       minimap_map_data[4] = x;    } minimap_pos; };

minimap_pos = function (reset_list) { $('#minimap_maindiv').css('display', 'none'); $('#minimap_loading').css('display', 'block'); //Adjusts values out of range for x and y   minimap_map_data[0] = minimap_map_data[0] + Math.floor(minimap_map_data[1] / minimap_div_width_half); minimap_map_data[1] = minimap_map_data[1] - (Math.floor(minimap_map_data[1] / minimap_div_width_half) * minimap_div_width_half); minimap_map_data[2] = minimap_map_data[2] + Math.floor(minimap_map_data[3] / minimap_div_width_half); minimap_map_data[3] = minimap_map_data[3] - (Math.floor(minimap_map_data[3] / minimap_div_width_half) * minimap_div_width_half);

var hres, d, ch, parss, pars = minimap_map_data; var tleft = Math.floor((((pars[0] - minimap_min_x - (1 * (1 / pars[5]))) * minimap_div_width_half) + pars[1]) * pars[5], radix_decimal) + Math.floor(pars[5] / 2); var ttop = Math.floor((((pars[2] - minimap_min_y - (0.75 * (1 / pars[5]))) * minimap_div_width_half) + pars[3]) * pars[5], radix_decimal) + Math.floor(pars[5] / 2); var twidth = Math.floor(minimap_images_width * pars[5]); var theight = Math.floor(minimap_images_height * pars[5]);

hres = (minimap_read_cookie('minimap_hres') == '1'); //main image d = $('#minimap_imgdiv'); d.css({'left': (-1 * tleft) + 'px', 'top': (-1 * ttop) + 'px'}); ch = d.children(':first'); ch.width(twidth).height(theight);

hres = (hres ? (pars[5] >= 3 ? (minimap_images[4] && minimap_images[4][pars[4]] ? 4 : 1) : 1) : 1); if (ch.attr('src') == minimap_images[hres][pars[4]]) { $('#minimap_loading').css('display', 'none'); $('#minimap_maindiv').css('display', 'block'); }   else { ch.attr('src', minimap_images[hres][pars[4]]); } //dashed lines if ($('#minimap_cmark_enabled').is(':checked')) { minimap_map_data[7] = 1; $('#minimap_vl').css({'display': 'block', 'visibility': 'visible'}); $('#minimap_hl').css({'display': 'block', 'visibility': 'visible'}); if (!$('#minimap_editor_mode').is(':checked')) { parss = minimap_map_sdata; tleft = Math.floor((((parss[0] - minimap_min_x - (1 * (1 / pars[5]))) * minimap_div_width_half) + parss[1]) * pars[5], radix_decimal) + Math.floor(pars[5] / 2); ttop = Math.floor((((parss[2] - minimap_min_y - (0.75 * (1 / pars[5]))) * minimap_div_width_half) + parss[3]) * pars[5], radix_decimal) + Math.floor(pars[5] / 2);

$('#minimap_vl').appendTo($('#minimap_imgdiv')).css({               'left': (tleft + minimap_div_width_half) + 'px',                'top': (ttop + (wgPageName != 'MapperTest' ? parseInt((minimap_div_heigth - parseInt(minimap_div_heigth * (pars[5] / parss[5]), radix_decimal)) / 2, radix_decimal) : 0)) + 'px',                'height': (wgPageName != 'MapperTest' ? parseInt(minimap_div_heigth * (pars[5] / parss[5]), radix_decimal) : minimap_div_heigth) + 'px'           });

$('#minimap_hl').appendTo($('#minimap_imgdiv')).css({               'left': (tleft + (wgPageName != 'MapperTest' ? parseInt((minimap_div_width - parseInt(minimap_div_width * (pars[5] / parss[5]), radix_decimal)) / 2, radix_decimal) : 0)) + 'px',                'top': (ttop + minimap_div_heigth_half) + 'px',                'width': (wgPageName != 'MapperTest' ? parseInt(minimap_div_width * (pars[5] / parss[5]), radix_decimal) : minimap_div_width) + 'px'           }); }       else { $('#minimap_vl').appendTo($('#minimap_imgdiv').parent).css({               'left': minimap_div_width_half + 'px',                'top': '0px',                'height': minimap_div_heigth + 'px'            }); $('#minimap_hl').appendTo($('#minimap_imgdiv').parent).css({               'left': '0px',                'top': minimap_div_heigth_half + 'px',                'width': minimap_div_width + 'px'            }); }   }    else { minimap_map_data[7] = 0; $('#minimap_vl').css({'display': 'none', 'visibility': 'hidden'}); $('#minimap_hl').css({'display': 'none', 'visibility': 'hidden'}); } //marks var tmpm, i = 1, msize, mleft, mtop;

$('[id^="minimap_mark"]').filter(function {        var id = $(this).attr('id').replace('minimap_mark', '');        return (parseInt(id, radix_decimal) > 0 ? true : false);   }).css({'display': 'none', 'visibility': 'hidden'});

if ($('#minimap_marks_enabled').is(':checked')) { while (pars['mark' + i]) { tmpm = pars['mark' + i]; if (!$('#minimap_mark' + i).size) { $('&nbsp ') .css({'display': 'block', 'position': 'absolute', 'z-index': '2003', 'overflow': 'hidden', : }) .html(' ' +                   ' ' +                    '' +                    ' ') .appendTo($('#minimap_imgdiv')); }           if (tmpm[4] != pars[4]) { i++; continue; }//mark in same z           msize = Math.floor(11 * pars[5] * pars[6]) + 'px';

$('#minimap_mark' + i).css({               'display': 'block', 'visibility': 'visible',                'left': Math.floor(((((tmpm[0] - minimap_min_x) * minimap_fractional_limit) + (tmpm[1])) * pars[5]) - (5 * pars[5] * pars[6])) + 'px',                'top': Math.floor(((((tmpm[2] - minimap_min_y) * minimap_fractional_limit) + (tmpm[3])) * pars[5]) - (5 * pars[5] * pars[6])) + 'px',                'width': msize, 'height': msize            }); mleft = Math.floor(Math.floor(((tmpm[5] == 21 ? 22 : tmpm[5]) - 1) / 2) * 11 * pars[5] * pars[6]); mtop = Math.floor((Math.floor(((tmpm[5] == 21 ? 22 : tmpm[5])) / 2) == (((tmpm[5] == 21 ? 22 : tmpm[5])) / 2) ? 11 : 0) * pars[5] * pars[6]); $('#minimap_mark' + i)               .children(':first')//hidder div .css({'left': (-1 * mleft) + 'px', 'top': (-1 * mtop) + 'px'}) .children(':first')//a link .css('cursor', 'default').attr({'onclick': 'return false;', 'href': ''}); if (tmpm[6] !== '' && tmpm[5] != 21) { $('#minimap_mark' + i).children(':first').children(':first')//a link .css('cursor', 'pointer').attr({                       'onclick': 'window.open(this.href); return false;',                        'href': '/wiki/' + encodeURI(tmpm[6])                    }); }           d = $('#minimap_mark' + i).children(':first').children(':first')[0]; if (tmpm[5] == 21) {//numeric mark $('#minimap_mark' + i).children(':first').children(':first').next .css({                       'display': 'block',                        'visibility': 'visible',                        'left': mleft + 'px',                        'top': mtop + 'px',                        'width': msize,                        'height': msize,                        'font-size': (parseInt(msize, radix_decimal) - 2) + 'px',                        'line-height': 'normal'                    }) .html(tmpm[6] !== '' ? parseInt(tmpm[6].slice(0, 2), radix_decimal) || 0 : 0); }           $('#minimap_mark' + i).children(':first').children(':first').children(':first')//image .attr({'title': tmpm[6], 'alt': tmpm[6]}).css({                   'width': Math.floor(121 * pars[5] * pars[6]),                    'height': Math.floor(22 * pars[5] * pars[6])                }); i++; }   }    minimap_codes_update(reset_list); };

minimap_mapper_add_mark = function { if ($('#minimap_loading').css('display') == 'block') { return; }   var i = 1; while (minimap_map_data['mark' + i]) { i++; }   minimap_map_data['mark' + i] = minimap_map_data.slice(0, 5); minimap_map_data['mark' + i][5] = $('[id^="mapper_marker_r"]:checked').val; minimap_map_data['mark' + i][6] = document.getElementById('mapper_optional_link').value.replace(/\s|%20/gi, '_'); minimap_pos; };

minimap_mapper_remove_mark = function { if (document.getElementById('minimap_loading').style.display == 'block') { return; }   if (!$('#mapper_list :selected').size) { return; }   $('#mapper_mark_remove').attr('disabled', true); $('#mapper_list :selected').remove; minimap_map_data = minimap_map_data.slice(0, 8); $('#mapper_list option').each(function (i) {       var tmp = decodeURI($(this).val).split(',', 7);        minimap_map_data['mark' + (i + 1)] = [parseInt(tmp[0], radix_decimal), parseInt(tmp[1], radix_decimal), parseInt(tmp[2], radix_decimal),            parseInt(tmp[3], radix_decimal), parseInt(tmp[4], radix_decimal), parseInt(tmp[5], radix_decimal), tmp[6]];    }); minimap_pos; //0x.1x,2y.3y,4z,5zoom,6zoomm,7centermark //0x.1x,2y.3y,4z,5icon,6link };

minimap_load = function (url) { minimap_map_sdata = minimap_get_coords(url); minimap_map_data = minimap_get_coords(url); var pars = minimap_get_coords(url); var tid = 'minimap_w' + (wgPageName == 'MapperTest' ? 'f' : 'p'); minimap_change_src;// bypass image cache if the user opts to   if (wgPageName != 'MapperTest') { if (!$('#minimap_blackout').size) { $('body').append(               ' '); }       if (!$('#minimap_wp').size) { $('body').append(' '); }       $('#minimap_blackout').css('display', 'block').height($(document).height); $('#minimap_wp').css('display', 'block'); }   var tmp = (wgPageName != 'MapperTest' ?       '<div style=\'text-align:center;background:#eeeeee;color:#0038d8;font-weight:bold;height:19px;padding-top: 2px\'>TibiaWiki Map ' +        '<div class="minimap_wx" onclick="$(\'.minimap_wp, #minimap_blackout\').css(\'display\', \'none\').html(\' \'); return false;">X '            : ' <font size="+1">Mapper ') + ' ' +       '<div id="minimap_loading" ><img src="' + minimap_images[0][1] + '" alt="Loading" width="' + minimap_div_width + '" height="' + minimap_div_heigth + '" /> ' + '<div id="minimap_maindiv" style="overflow:hidden;"><div style="overflow:hidden;display:block;position:absolute;width:' + minimap_div_width + 'px;height:' + minimap_div_heigth + 'px;">' + '<div id="minimap_imgdiv" style="display:block;position:absolute;">' + '<img id="minimap_img" src="" alt="" width="" height="" />' + '<div id="minimap_vl" style="position:absolute;left:' + minimap_div_width_half + 'px;top:0px;display:block;width:1px;height:' + minimap_div_heigth + 'px;border-left:1px dashed #FFFFFF;"> ' + '<div id="minimap_hl" style="position:absolute;left:0px;top:' + minimap_div_heigth_half + 'px;display:block;width:' + minimap_div_width + 'px;height:1px;border-top:1px dashed #FFFFFF;"> '; var tmpm, i = 1; while (url.indexOf('mark' + i) != -1) { tmpm = minimap_get_coords(url, 'mark' + i); minimap_map_sdata['mark' + i] = tmpm.slice(0); minimap_map_data['mark' + i] = tmpm; tmp += '<div id="minimap_mark' + i + '" style="overflow:hidden;position:absolute; z-index:2003;">' + ' ' +           ' <img src="' + minimap_images[0][0] + '" alt="" width="121" height="22" border="0" /></a>' + '<div style="text-align:center;padding:0px;margin:0px;border:none;position:absolute;top:0px;left:0px;width:0px;height:0px;display:none;visibility:hidden;"> ' + ' ' +            '';        i++; }   tmp += ' ' +       '  ' +        ' ' +        '<div style="' + (wgPageName != 'MapperTest' ? 'background-color:#EEEEEE;' : '') + '">' + '   ' +        '    Direct Link:  <input id= "minimap_tcode1" readonly="readonly" type="text" value="" size="45" onclick="this.select" />' + '   Simple Template:' + ' <input id= "minimap_tcode2" readonly="readonly" type="text" value="" size="45" onclick="this.select" />' : '') +       '    ' +        (wgPageName != 'MapperTest' ? '<div onclick="window.open(minimap_data_to_url(0)); $(\'.minimap_wx\').click; return false;" class="minimap_wl" title="Expand on TibiaWiki"> ' : ) +       ;    $('#' + tid).html(tmp);    $('#mapper_list').change(function  { minimap_mapper_list_click; });   if (wgPageName != 'MapperTest') {        minimap_center_div;    }    $('#minimap_img').load(function  { $('#minimap_loading').css('display', 'none'); $('#minimap_maindiv').css('display', 'block'); });   minimap_pos;    minimap_dragstart;    if (wgPageName == 'MapperTest') {        try {            $('#mapper_loading').hide;        } catch (er) {        }    } };

$('a[href*="' + minimap_mapper_page + '"]').click(function {    minimap_load($(this).attr('href'));    return false; });

if (wgPageName == 'MapperTest') { minimap_load(window.location.search.substring(1)); } else { $(window).resize(function {        minimap_center_div;    }); }

// //