Changeset - 42101737e3cd
[Not reviewed]
static/tapmodo-Jcrop-1902fbc/MIT-LICENSE.txt
Show inline comments
 
new file 100644
 
Copyright (c) 2011 Tapmodo Interactive LLC,
 
  http://github.com/tapmodo/Jcrop
 

	
 
Permission is hereby granted, free of charge, to any person obtaining
 
a copy of this software and associated documentation files (the
 
"Software"), to deal in the Software without restriction, including
 
without limitation the rights to use, copy, modify, merge, publish,
 
distribute, sublicense, and/or sell copies of the Software, and to
 
permit persons to whom the Software is furnished to do so, subject to
 
the following conditions:
 

	
 
The above copyright notice and this permission notice shall be
 
included in all copies or substantial portions of the Software.
 

	
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 

	
static/tapmodo-Jcrop-1902fbc/README.md
Show inline comments
 
new file 100644
 
Jcrop Image Cropping Plugin
 
===========================
 

	
 
Jcrop is the quick and easy way to add image cropping functionality to
 
your web application. It combines the ease-of-use of a typical jQuery
 
plugin with a powerful cross-platform DHTML cropping engine that is
 
faithful to familiar desktop graphics applications.
 

	
 
Cross-platform Compatibility
 
----------------------------
 

	
 
* Firefox 2+
 
* Safari 3+
 
* Opera 9.5+
 
* Google Chrome 0.2+
 
* Internet Explorer 6+
 

	
 
Feature Overview
 
----------------
 

	
 
* Attaches unobtrusively to any image
 
* Supports aspect ratio locking
 
* Supports minSize/maxSize setting
 
* Callbacks for selection done, or while moving
 
* Keyboard support for nudging selection
 
* API features to create interactivity, including animation
 
* Support for CSS styling
 
* Experimental touch-screen support (iOS, Android, etc)
 

	
 
Contributors
 
============
 

	
 
**Special thanks to the following contributors:**
 

	
 
* [Bruno Agutoli](mailto:brunotla1@gmail.com)
 
* dhorrigan
 
* Phil-B
 
* jaymecd
 
* all others who have committed their time and effort to help improve Jcrop
 

	
 
MIT License
 
===========
 

	
 
**Jcrop is free software under MIT License.**
 

	
 
#### Copyright (c) 2008-2012 Tapmodo Interactive LLC,<br />http://github.com/tapmodo/Jcrop
 

	
 
Permission is hereby granted, free of charge, to any person obtaining
 
a copy of this software and associated documentation files (the
 
"Software"), to deal in the Software without restriction, including
 
without limitation the rights to use, copy, modify, merge, publish,
 
distribute, sublicense, and/or sell copies of the Software, and to
 
permit persons to whom the Software is furnished to do so, subject to
 
the following conditions:
 

	
 
The above copyright notice and this permission notice shall be
 
included in all copies or substantial portions of the Software.
 

	
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 

	
static/tapmodo-Jcrop-1902fbc/css/Jcrop.gif
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
static/tapmodo-Jcrop-1902fbc/css/jquery.Jcrop.css
Show inline comments
 
new file 100644
 
/* jquery.Jcrop.css v0.9.12 - MIT License */
 
/*
 
  The outer-most container in a typical Jcrop instance
 
  If you are having difficulty with formatting related to styles
 
  on a parent element, place any fixes here or in a like selector
 

	
 
  You can also style this element if you want to add a border, etc
 
  A better method for styling can be seen below with .jcrop-light
 
  (Add a class to the holder and style elements for that extended class)
 
*/
 
.jcrop-holder {
 
  direction: ltr;
 
  text-align: left;
 
}
 
/* Selection Border */
 
.jcrop-vline,
 
.jcrop-hline {
 
  background: #ffffff url("Jcrop.gif");
 
  font-size: 0;
 
  position: absolute;
 
}
 
.jcrop-vline {
 
  height: 100%;
 
  width: 1px !important;
 
}
 
.jcrop-vline.right {
 
  right: 0;
 
}
 
.jcrop-hline {
 
  height: 1px !important;
 
  width: 100%;
 
}
 
.jcrop-hline.bottom {
 
  bottom: 0;
 
}
 
/* Invisible click targets */
 
.jcrop-tracker {
 
  height: 100%;
 
  width: 100%;
 
  /* "turn off" link highlight */
 
  -webkit-tap-highlight-color: transparent;
 
  /* disable callout, image save panel */
 
  -webkit-touch-callout: none;
 
  /* disable cut copy paste */
 
  -webkit-user-select: none;
 
}
 
/* Selection Handles */
 
.jcrop-handle {
 
  background-color: #333333;
 
  border: 1px #eeeeee solid;
 
  width: 7px;
 
  height: 7px;
 
  font-size: 1px;
 
}
 
.jcrop-handle.ord-n {
 
  left: 50%;
 
  margin-left: -4px;
 
  margin-top: -4px;
 
  top: 0;
 
}
 
.jcrop-handle.ord-s {
 
  bottom: 0;
 
  left: 50%;
 
  margin-bottom: -4px;
 
  margin-left: -4px;
 
}
 
.jcrop-handle.ord-e {
 
  margin-right: -4px;
 
  margin-top: -4px;
 
  right: 0;
 
  top: 50%;
 
}
 
.jcrop-handle.ord-w {
 
  left: 0;
 
  margin-left: -4px;
 
  margin-top: -4px;
 
  top: 50%;
 
}
 
.jcrop-handle.ord-nw {
 
  left: 0;
 
  margin-left: -4px;
 
  margin-top: -4px;
 
  top: 0;
 
}
 
.jcrop-handle.ord-ne {
 
  margin-right: -4px;
 
  margin-top: -4px;
 
  right: 0;
 
  top: 0;
 
}
 
.jcrop-handle.ord-se {
 
  bottom: 0;
 
  margin-bottom: -4px;
 
  margin-right: -4px;
 
  right: 0;
 
}
 
.jcrop-handle.ord-sw {
 
  bottom: 0;
 
  left: 0;
 
  margin-bottom: -4px;
 
  margin-left: -4px;
 
}
 
/* Dragbars */
 
.jcrop-dragbar.ord-n,
 
.jcrop-dragbar.ord-s {
 
  height: 7px;
 
  width: 100%;
 
}
 
.jcrop-dragbar.ord-e,
 
.jcrop-dragbar.ord-w {
 
  height: 100%;
 
  width: 7px;
 
}
 
.jcrop-dragbar.ord-n {
 
  margin-top: -4px;
 
}
 
.jcrop-dragbar.ord-s {
 
  bottom: 0;
 
  margin-bottom: -4px;
 
}
 
.jcrop-dragbar.ord-e {
 
  margin-right: -4px;
 
  right: 0;
 
}
 
.jcrop-dragbar.ord-w {
 
  margin-left: -4px;
 
}
 
/* The "jcrop-light" class/extension */
 
.jcrop-light .jcrop-vline,
 
.jcrop-light .jcrop-hline {
 
  background: #ffffff;
 
  filter: alpha(opacity=70) !important;
 
  opacity: .70!important;
 
}
 
.jcrop-light .jcrop-handle {
 
  -moz-border-radius: 3px;
 
  -webkit-border-radius: 3px;
 
  background-color: #000000;
 
  border-color: #ffffff;
 
  border-radius: 3px;
 
}
 
/* The "jcrop-dark" class/extension */
 
.jcrop-dark .jcrop-vline,
 
.jcrop-dark .jcrop-hline {
 
  background: #000000;
 
  filter: alpha(opacity=70) !important;
 
  opacity: 0.7 !important;
 
}
 
.jcrop-dark .jcrop-handle {
 
  -moz-border-radius: 3px;
 
  -webkit-border-radius: 3px;
 
  background-color: #ffffff;
 
  border-color: #000000;
 
  border-radius: 3px;
 
}
 
/* Simple macro to turn off the antlines */
 
.solid-line .jcrop-vline,
 
.solid-line .jcrop-hline {
 
  background: #ffffff;
 
}
 
/* Fix for twitter bootstrap et al. */
 
.jcrop-holder img,
 
img.jcrop-preview {
 
  max-width: none;
 
}
static/tapmodo-Jcrop-1902fbc/css/jquery.Jcrop.min.css
Show inline comments
 
new file 100644
 
/* jquery.Jcrop.min.css v0.9.12 (build:20130126) */
 
.jcrop-holder{direction:ltr;text-align:left;}
 
.jcrop-vline,.jcrop-hline{background:#FFF url(Jcrop.gif);font-size:0;position:absolute;}
 
.jcrop-vline{height:100%;width:1px!important;}
 
.jcrop-vline.right{right:0;}
 
.jcrop-hline{height:1px!important;width:100%;}
 
.jcrop-hline.bottom{bottom:0;}
 
.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;}
 
.jcrop-handle{background-color:#333;border:1px #EEE solid;font-size:1px;height:7px;width:7px;}
 
.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;}
 
.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;}
 
.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;}
 
.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;}
 
.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;}
 
.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;}
 
.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;}
 
.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;}
 
.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;}
 
.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;}
 
.jcrop-dragbar.ord-n{margin-top:-4px;}
 
.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;}
 
.jcrop-dragbar.ord-e{margin-right:-4px;right:0;}
 
.jcrop-dragbar.ord-w{margin-left:-4px;}
 
.jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:alpha(opacity=70)!important;opacity:.70!important;}
 
.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;}
 
.jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important;}
 
.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;}
 
.solid-line .jcrop-vline,.solid-line .jcrop-hline{background:#FFF;}
 
.jcrop-holder img,img.jcrop-preview{max-width:none;}
static/tapmodo-Jcrop-1902fbc/index.html
Show inline comments
 
new file 100644
 
<!DOCTYPE html>
 
<html lang="en">
 
<head>
 
  <title>Jcrop: the jQuery Image Cropping Plugin</title>
 
  <link rel="stylesheet" href="demos/demo_files/main.css" type="text/css" />
 
  <link rel="stylesheet" href="demos/demo_files/demos.css" type="text/css" />
 
  <script src="js/jquery.min.js"></script>
 
  <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
 
</head>
 
<body>
 

	
 
<div class="container">
 
<div class="row">
 
<div class="span12">
 
<div class="jc-demo-box">
 

	
 
<div class="page-header">
 
<ul class="breadcrumb first">
 
  <li><a href="http://tapmodo.com/">Tapmodo</a> <span class="divider">/</span></li>
 
  <li class="active">Jcrop Plugin</li>
 
</ul>
 
<h1>Jcrop Image Cropping Plugin</h1>
 
</div>
 

	
 

	
 
<big>
 
	<a href="http://deepliquid.com/content/Jcrop.html"><b>Jcrop</b></a>
 
	is the image cropping plugin for
 
	<a href="http://jquery.com/">jQuery</a>.<br />
 
	You've successfully unpacked Jcrop.
 
</big>
 

	
 
<h3>Static Demos</h3>
 

	
 
<ul>
 
	<li><a href="demos/tutorial1.html">Hello World</a>
 
		&mdash; default behavior</li>
 
	<li><a href="demos/tutorial2.html">Basic Handler</a>
 
		&mdash; basic form integration</li>
 
	<li><a href="demos/tutorial3.html">Aspect Ratio w/ Preview Pane</a>
 
		&mdash; nice visual example</li>
 
	<li><a href="demos/tutorial4.html">Animation/Transitions</a>
 
		&mdash; animation/fading demo</li>
 
	<li><a href="demos/tutorial5.html">API Interface</a>
 
		&mdash; real-time API example</li>
 
	<li><a href="demos/styling.html">Styling Example</a>
 
		&mdash; style Jcrop dynamically with CSS
 
    <small>New in 0.9.10</small>
 
    </li>
 
  <li><a href="demos/non-image.html">Non-Image Elements</a>
 
    &mdash; attach to other DOM block elements
 
    <small>New in 0.9.10</small>
 
    </li>
 
</ul>
 

	
 
<h3>Live Demo</h3>
 

	
 
<ul>
 
	<li><a href="demos/crop.php">PHP Cropping Demo</a>
 
		&mdash; requires PHP/gd support</li>
 
</ul>
 

	
 
<h3>Jcrop Links</h3>
 

	
 
<ul>
 
	<li><a href="http://deepliquid.com/content/Jcrop.html">Jcrop Home</a></li>
 
	<li><a href="http://deepliquid.com/content/Jcrop_Manual.html">Jcrop Manual</a></li>
 
</ul>
 

	
 
<div class="tapmodo-footer">
 
  <a href="http://tapmodo.com" class="tapmodo-logo segment">tapmodo.com</a>
 
  <div class="segment"><b>&copy; 2008-2013 Tapmodo Interactive LLC</b><br />
 
    Jcrop is free software released under <a href="MIT-LICENSE.txt">MIT License</a>
 
  </div>
 
</div>
 
<div class="clearfix"></div>
 

	
 
</div>
 
</div>
 
</div>
 
</div>
 

	
 
</body>
 
</html>
static/tapmodo-Jcrop-1902fbc/js/jquery.Jcrop.js
Show inline comments
 
new file 100644
 
/**
 
 * jquery.Jcrop.js v0.9.12
 
 * jQuery Image Cropping Plugin - released under MIT License 
 
 * Author: Kelly Hallman <khallman@gmail.com>
 
 * http://github.com/tapmodo/Jcrop
 
 * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{
 
 *
 
 * Permission is hereby granted, free of charge, to any person
 
 * obtaining a copy of this software and associated documentation
 
 * files (the "Software"), to deal in the Software without
 
 * restriction, including without limitation the rights to use,
 
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 
 * copies of the Software, and to permit persons to whom the
 
 * Software is furnished to do so, subject to the following
 
 * conditions:
 
 *
 
 * The above copyright notice and this permission notice shall be
 
 * included in all copies or substantial portions of the Software.
 
 *
 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 
 * OTHER DEALINGS IN THE SOFTWARE.
 
 *
 
 * }}}
 
 */
 

	
 
(function ($) {
 

	
 
  $.Jcrop = function (obj, opt) {
 
    var options = $.extend({}, $.Jcrop.defaults),
 
        docOffset,
 
        _ua = navigator.userAgent.toLowerCase(),
 
        is_msie = /msie/.test(_ua),
 
        ie6mode = /msie [1-6]\./.test(_ua);
 

	
 
    // Internal Methods {{{
 
    function px(n) {
 
      return Math.round(n) + 'px';
 
    }
 
    function cssClass(cl) {
 
      return options.baseClass + '-' + cl;
 
    }
 
    function supportsColorFade() {
 
      return $.fx.step.hasOwnProperty('backgroundColor');
 
    }
 
    function getPos(obj) //{{{
 
    {
 
      var pos = $(obj).offset();
 
      return [pos.left, pos.top];
 
    }
 
    //}}}
 
    function mouseAbs(e) //{{{
 
    {
 
      return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])];
 
    }
 
    //}}}
 
    function setOptions(opt) //{{{
 
    {
 
      if (typeof(opt) !== 'object') opt = {};
 
      options = $.extend(options, opt);
 

	
 
      $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) {
 
        if (typeof(options[e]) !== 'function') options[e] = function () {};
 
      });
 
    }
 
    //}}}
 
    function startDragMode(mode, pos, touch) //{{{
 
    {
 
      docOffset = getPos($img);
 
      Tracker.setCursor(mode === 'move' ? mode : mode + '-resize');
 

	
 
      if (mode === 'move') {
 
        return Tracker.activateHandlers(createMover(pos), doneSelect, touch);
 
      }
 

	
 
      var fc = Coords.getFixed();
 
      var opp = oppLockCorner(mode);
 
      var opc = Coords.getCorner(oppLockCorner(opp));
 

	
 
      Coords.setPressed(Coords.getCorner(opp));
 
      Coords.setCurrent(opc);
 

	
 
      Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch);
 
    }
 
    //}}}
 
    function dragmodeHandler(mode, f) //{{{
 
    {
 
      return function (pos) {
 
        if (!options.aspectRatio) {
 
          switch (mode) {
 
          case 'e':
 
            pos[1] = f.y2;
 
            break;
 
          case 'w':
 
            pos[1] = f.y2;
 
            break;
 
          case 'n':
 
            pos[0] = f.x2;
 
            break;
 
          case 's':
 
            pos[0] = f.x2;
 
            break;
 
          }
 
        } else {
 
          switch (mode) {
 
          case 'e':
 
            pos[1] = f.y + 1;
 
            break;
 
          case 'w':
 
            pos[1] = f.y + 1;
 
            break;
 
          case 'n':
 
            pos[0] = f.x + 1;
 
            break;
 
          case 's':
 
            pos[0] = f.x + 1;
 
            break;
 
          }
 
        }
 
        Coords.setCurrent(pos);
 
        Selection.update();
 
      };
 
    }
 
    //}}}
 
    function createMover(pos) //{{{
 
    {
 
      var lloc = pos;
 
      KeyManager.watchKeys();
 

	
 
      return function (pos) {
 
        Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]);
 
        lloc = pos;
 

	
 
        Selection.update();
 
      };
 
    }
 
    //}}}
 
    function oppLockCorner(ord) //{{{
 
    {
 
      switch (ord) {
 
      case 'n':
 
        return 'sw';
 
      case 's':
 
        return 'nw';
 
      case 'e':
 
        return 'nw';
 
      case 'w':
 
        return 'ne';
 
      case 'ne':
 
        return 'sw';
 
      case 'nw':
 
        return 'se';
 
      case 'se':
 
        return 'nw';
 
      case 'sw':
 
        return 'ne';
 
      }
 
    }
 
    //}}}
 
    function createDragger(ord) //{{{
 
    {
 
      return function (e) {
 
        if (options.disabled) {
 
          return false;
 
        }
 
        if ((ord === 'move') && !options.allowMove) {
 
          return false;
 
        }
 
        
 
        // Fix position of crop area when dragged the very first time.
 
        // Necessary when crop image is in a hidden element when page is loaded.
 
        docOffset = getPos($img);
 

	
 
        btndown = true;
 
        startDragMode(ord, mouseAbs(e));
 
        e.stopPropagation();
 
        e.preventDefault();
 
        return false;
 
      };
 
    }
 
    //}}}
 
    function presize($obj, w, h) //{{{
 
    {
 
      var nw = $obj.width(),
 
          nh = $obj.height();
 
      if ((nw > w) && w > 0) {
 
        nw = w;
 
        nh = (w / $obj.width()) * $obj.height();
 
      }
 
      if ((nh > h) && h > 0) {
 
        nh = h;
 
        nw = (h / $obj.height()) * $obj.width();
 
      }
 
      xscale = $obj.width() / nw;
 
      yscale = $obj.height() / nh;
 
      $obj.width(nw).height(nh);
 
    }
 
    //}}}
 
    function unscale(c) //{{{
 
    {
 
      return {
 
        x: c.x * xscale,
 
        y: c.y * yscale,
 
        x2: c.x2 * xscale,
 
        y2: c.y2 * yscale,
 
        w: c.w * xscale,
 
        h: c.h * yscale
 
      };
 
    }
 
    //}}}
 
    function doneSelect(pos) //{{{
 
    {
 
      var c = Coords.getFixed();
 
      if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) {
 
        Selection.enableHandles();
 
        Selection.done();
 
      } else {
 
        Selection.release();
 
      }
 
      Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
 
    }
 
    //}}}
 
    function newSelection(e) //{{{
 
    {
 
      if (options.disabled) {
 
        return false;
 
      }
 
      if (!options.allowSelect) {
 
        return false;
 
      }
 
      btndown = true;
 
      docOffset = getPos($img);
 
      Selection.disableHandles();
 
      Tracker.setCursor('crosshair');
 
      var pos = mouseAbs(e);
 
      Coords.setPressed(pos);
 
      Selection.update();
 
      Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch');
 
      KeyManager.watchKeys();
 

	
 
      e.stopPropagation();
 
      e.preventDefault();
 
      return false;
 
    }
 
    //}}}
 
    function selectDrag(pos) //{{{
 
    {
 
      Coords.setCurrent(pos);
 
      Selection.update();
 
    }
 
    //}}}
 
    function newTracker() //{{{
 
    {
 
      var trk = $('<div></div>').addClass(cssClass('tracker'));
 
      if (is_msie) {
 
        trk.css({
 
          opacity: 0,
 
          backgroundColor: 'white'
 
        });
 
      }
 
      return trk;
 
    }
 
    //}}}
 

	
 
    // }}}
 
    // Initialization {{{
 
    // Sanitize some options {{{
 
    if (typeof(obj) !== 'object') {
 
      obj = $(obj)[0];
 
    }
 
    if (typeof(opt) !== 'object') {
 
      opt = {};
 
    }
 
    // }}}
 
    setOptions(opt);
 
    // Initialize some jQuery objects {{{
 
    // The values are SET on the image(s) for the interface
 
    // If the original image has any of these set, they will be reset
 
    // However, if you destroy() the Jcrop instance the original image's
 
    // character in the DOM will be as you left it.
 
    var img_css = {
 
      border: 'none',
 
      visibility: 'visible',
 
      margin: 0,
 
      padding: 0,
 
      position: 'absolute',
 
      top: 0,
 
      left: 0
 
    };
 

	
 
    var $origimg = $(obj),
 
      img_mode = true;
 

	
 
    if (obj.tagName == 'IMG') {
 
      // Fix size of crop image.
 
      // Necessary when crop image is within a hidden element when page is loaded.
 
      if ($origimg[0].width != 0 && $origimg[0].height != 0) {
 
        // Obtain dimensions from contained img element.
 
        $origimg.width($origimg[0].width);
 
        $origimg.height($origimg[0].height);
 
      } else {
 
        // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). 
 
        var tempImage = new Image();
 
        tempImage.src = $origimg[0].src;
 
        $origimg.width(tempImage.width);
 
        $origimg.height(tempImage.height);
 
      } 
 

	
 
      var $img = $origimg.clone().removeAttr('id').css(img_css).show();
 

	
 
      $img.width($origimg.width());
 
      $img.height($origimg.height());
 
      $origimg.after($img).hide();
 

	
 
    } else {
 
      $img = $origimg.css(img_css).show();
 
      img_mode = false;
 
      if (options.shade === null) { options.shade = true; }
 
    }
 

	
 
    presize($img, options.boxWidth, options.boxHeight);
 

	
 
    var boundx = $img.width(),
 
        boundy = $img.height(),
 
        
 
        
 
        $div = $('<div />').width(boundx).height(boundy).addClass(cssClass('holder')).css({
 
        position: 'relative',
 
        backgroundColor: options.bgColor
 
      }).insertAfter($origimg).append($img);
 

	
 
    if (options.addClass) {
 
      $div.addClass(options.addClass);
 
    }
 

	
 
    var $img2 = $('<div />'),
 

	
 
        $img_holder = $('<div />') 
 
        .width('100%').height('100%').css({
 
          zIndex: 310,
 
          position: 'absolute',
 
          overflow: 'hidden'
 
        }),
 

	
 
        $hdl_holder = $('<div />') 
 
        .width('100%').height('100%').css('zIndex', 320), 
 

	
 
        $sel = $('<div />') 
 
        .css({
 
          position: 'absolute',
 
          zIndex: 600
 
        }).dblclick(function(){
 
          var c = Coords.getFixed();
 
          options.onDblClick.call(api,c);
 
        }).insertBefore($img).append($img_holder, $hdl_holder); 
 

	
 
    if (img_mode) {
 

	
 
      $img2 = $('<img />')
 
          .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy),
 

	
 
      $img_holder.append($img2);
 

	
 
    }
 

	
 
    if (ie6mode) {
 
      $sel.css({
 
        overflowY: 'hidden'
 
      });
 
    }
 

	
 
    var bound = options.boundary;
 
    var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({
 
      position: 'absolute',
 
      top: px(-bound),
 
      left: px(-bound),
 
      zIndex: 290
 
    }).mousedown(newSelection);
 

	
 
    /* }}} */
 
    // Set more variables {{{
 
    var bgcolor = options.bgColor,
 
        bgopacity = options.bgOpacity,
 
        xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true,
 
        btndown, animating, shift_down;
 

	
 
    docOffset = getPos($img);
 
    // }}}
 
    // }}}
 
    // Internal Modules {{{
 
    // Touch Module {{{ 
 
    var Touch = (function () {
 
      // Touch support detection function adapted (under MIT License)
 
      // from code by Jeffrey Sambells - http://github.com/iamamused/
 
      function hasTouchSupport() {
 
        var support = {}, events = ['touchstart', 'touchmove', 'touchend'],
 
            el = document.createElement('div'), i;
 

	
 
        try {
 
          for(i=0; i<events.length; i++) {
 
            var eventName = events[i];
 
            eventName = 'on' + eventName;
 
            var isSupported = (eventName in el);
 
            if (!isSupported) {
 
              el.setAttribute(eventName, 'return;');
 
              isSupported = typeof el[eventName] == 'function';
 
            }
 
            support[events[i]] = isSupported;
 
          }
 
          return support.touchstart && support.touchend && support.touchmove;
 
        }
 
        catch(err) {
 
          return false;
 
        }
 
      }
 

	
 
      function detectSupport() {
 
        if ((options.touchSupport === true) || (options.touchSupport === false)) return options.touchSupport;
 
          else return hasTouchSupport();
 
      }
 
      return {
 
        createDragger: function (ord) {
 
          return function (e) {
 
            if (options.disabled) {
 
              return false;
 
            }
 
            if ((ord === 'move') && !options.allowMove) {
 
              return false;
 
            }
 
            docOffset = getPos($img);
 
            btndown = true;
 
            startDragMode(ord, mouseAbs(Touch.cfilter(e)), true);
 
            e.stopPropagation();
 
            e.preventDefault();
 
            return false;
 
          };
 
        },
 
        newSelection: function (e) {
 
          return newSelection(Touch.cfilter(e));
 
        },
 
        cfilter: function (e){
 
          e.pageX = e.originalEvent.changedTouches[0].pageX;
 
          e.pageY = e.originalEvent.changedTouches[0].pageY;
 
          return e;
 
        },
 
        isSupported: hasTouchSupport,
 
        support: detectSupport()
 
      };
 
    }());
 
    // }}}
 
    // Coords Module {{{
 
    var Coords = (function () {
 
      var x1 = 0,
 
          y1 = 0,
 
          x2 = 0,
 
          y2 = 0,
 
          ox, oy;
 

	
 
      function setPressed(pos) //{{{
 
      {
 
        pos = rebound(pos);
 
        x2 = x1 = pos[0];
 
        y2 = y1 = pos[1];
 
      }
 
      //}}}
 
      function setCurrent(pos) //{{{
 
      {
 
        pos = rebound(pos);
 
        ox = pos[0] - x2;
 
        oy = pos[1] - y2;
 
        x2 = pos[0];
 
        y2 = pos[1];
 
      }
 
      //}}}
 
      function getOffset() //{{{
 
      {
 
        return [ox, oy];
 
      }
 
      //}}}
 
      function moveOffset(offset) //{{{
 
      {
 
        var ox = offset[0],
 
            oy = offset[1];
 

	
 
        if (0 > x1 + ox) {
 
          ox -= ox + x1;
 
        }
 
        if (0 > y1 + oy) {
 
          oy -= oy + y1;
 
        }
 

	
 
        if (boundy < y2 + oy) {
 
          oy += boundy - (y2 + oy);
 
        }
 
        if (boundx < x2 + ox) {
 
          ox += boundx - (x2 + ox);
 
        }
 

	
 
        x1 += ox;
 
        x2 += ox;
 
        y1 += oy;
 
        y2 += oy;
 
      }
 
      //}}}
 
      function getCorner(ord) //{{{
 
      {
 
        var c = getFixed();
 
        switch (ord) {
 
        case 'ne':
 
          return [c.x2, c.y];
 
        case 'nw':
 
          return [c.x, c.y];
 
        case 'se':
 
          return [c.x2, c.y2];
 
        case 'sw':
 
          return [c.x, c.y2];
 
        }
 
      }
 
      //}}}
 
      function getFixed() //{{{
 
      {
 
        if (!options.aspectRatio) {
 
          return getRect();
 
        }
 
        // This function could use some optimization I think...
 
        var aspect = options.aspectRatio,
 
            min_x = options.minSize[0] / xscale,
 
            
 
            
 
            //min_y = options.minSize[1]/yscale,
 
            max_x = options.maxSize[0] / xscale,
 
            max_y = options.maxSize[1] / yscale,
 
            rw = x2 - x1,
 
            rh = y2 - y1,
 
            rwa = Math.abs(rw),
 
            rha = Math.abs(rh),
 
            real_ratio = rwa / rha,
 
            xx, yy, w, h;
 

	
 
        if (max_x === 0) {
 
          max_x = boundx * 10;
 
        }
 
        if (max_y === 0) {
 
          max_y = boundy * 10;
 
        }
 
        if (real_ratio < aspect) {
 
          yy = y2;
 
          w = rha * aspect;
 
          xx = rw < 0 ? x1 - w : w + x1;
 

	
 
          if (xx < 0) {
 
            xx = 0;
 
            h = Math.abs((xx - x1) / aspect);
 
            yy = rh < 0 ? y1 - h : h + y1;
 
          } else if (xx > boundx) {
 
            xx = boundx;
 
            h = Math.abs((xx - x1) / aspect);
 
            yy = rh < 0 ? y1 - h : h + y1;
 
          }
 
        } else {
 
          xx = x2;
 
          h = rwa / aspect;
 
          yy = rh < 0 ? y1 - h : y1 + h;
 
          if (yy < 0) {
 
            yy = 0;
 
            w = Math.abs((yy - y1) * aspect);
 
            xx = rw < 0 ? x1 - w : w + x1;
 
          } else if (yy > boundy) {
 
            yy = boundy;
 
            w = Math.abs(yy - y1) * aspect;
 
            xx = rw < 0 ? x1 - w : w + x1;
 
          }
 
        }
 

	
 
        // Magic %-)
 
        if (xx > x1) { // right side
 
          if (xx - x1 < min_x) {
 
            xx = x1 + min_x;
 
          } else if (xx - x1 > max_x) {
 
            xx = x1 + max_x;
 
          }
 
          if (yy > y1) {
 
            yy = y1 + (xx - x1) / aspect;
 
          } else {
 
            yy = y1 - (xx - x1) / aspect;
 
          }
 
        } else if (xx < x1) { // left side
 
          if (x1 - xx < min_x) {
 
            xx = x1 - min_x;
 
          } else if (x1 - xx > max_x) {
 
            xx = x1 - max_x;
 
          }
 
          if (yy > y1) {
 
            yy = y1 + (x1 - xx) / aspect;
 
          } else {
 
            yy = y1 - (x1 - xx) / aspect;
 
          }
 
        }
 

	
 
        if (xx < 0) {
 
          x1 -= xx;
 
          xx = 0;
 
        } else if (xx > boundx) {
 
          x1 -= xx - boundx;
 
          xx = boundx;
 
        }
 

	
 
        if (yy < 0) {
 
          y1 -= yy;
 
          yy = 0;
 
        } else if (yy > boundy) {
 
          y1 -= yy - boundy;
 
          yy = boundy;
 
        }
 

	
 
        return makeObj(flipCoords(x1, y1, xx, yy));
 
      }
 
      //}}}
 
      function rebound(p) //{{{
 
      {
 
        if (p[0] < 0) p[0] = 0;
 
        if (p[1] < 0) p[1] = 0;
 

	
 
        if (p[0] > boundx) p[0] = boundx;
 
        if (p[1] > boundy) p[1] = boundy;
 

	
 
        return [Math.round(p[0]), Math.round(p[1])];
 
      }
 
      //}}}
 
      function flipCoords(x1, y1, x2, y2) //{{{
 
      {
 
        var xa = x1,
 
            xb = x2,
 
            ya = y1,
 
            yb = y2;
 
        if (x2 < x1) {
 
          xa = x2;
 
          xb = x1;
 
        }
 
        if (y2 < y1) {
 
          ya = y2;
 
          yb = y1;
 
        }
 
        return [xa, ya, xb, yb];
 
      }
 
      //}}}
 
      function getRect() //{{{
 
      {
 
        var xsize = x2 - x1,
 
            ysize = y2 - y1,
 
            delta;
 

	
 
        if (xlimit && (Math.abs(xsize) > xlimit)) {
 
          x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit);
 
        }
 
        if (ylimit && (Math.abs(ysize) > ylimit)) {
 
          y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit);
 
        }
 

	
 
        if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) {
 
          y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale);
 
        }
 
        if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) {
 
          x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale);
 
        }
 

	
 
        if (x1 < 0) {
 
          x2 -= x1;
 
          x1 -= x1;
 
        }
 
        if (y1 < 0) {
 
          y2 -= y1;
 
          y1 -= y1;
 
        }
 
        if (x2 < 0) {
 
          x1 -= x2;
 
          x2 -= x2;
 
        }
 
        if (y2 < 0) {
 
          y1 -= y2;
 
          y2 -= y2;
 
        }
 
        if (x2 > boundx) {
 
          delta = x2 - boundx;
 
          x1 -= delta;
 
          x2 -= delta;
 
        }
 
        if (y2 > boundy) {
 
          delta = y2 - boundy;
 
          y1 -= delta;
 
          y2 -= delta;
 
        }
 
        if (x1 > boundx) {
 
          delta = x1 - boundy;
 
          y2 -= delta;
 
          y1 -= delta;
 
        }
 
        if (y1 > boundy) {
 
          delta = y1 - boundy;
 
          y2 -= delta;
 
          y1 -= delta;
 
        }
 

	
 
        return makeObj(flipCoords(x1, y1, x2, y2));
 
      }
 
      //}}}
 
      function makeObj(a) //{{{
 
      {
 
        return {
 
          x: a[0],
 
          y: a[1],
 
          x2: a[2],
 
          y2: a[3],
 
          w: a[2] - a[0],
 
          h: a[3] - a[1]
 
        };
 
      }
 
      //}}}
 

	
 
      return {
 
        flipCoords: flipCoords,
 
        setPressed: setPressed,
 
        setCurrent: setCurrent,
 
        getOffset: getOffset,
 
        moveOffset: moveOffset,
 
        getCorner: getCorner,
 
        getFixed: getFixed
 
      };
 
    }());
 

	
 
    //}}}
 
    // Shade Module {{{
 
    var Shade = (function() {
 
      var enabled = false,
 
          holder = $('<div />').css({
 
            position: 'absolute',
 
            zIndex: 240,
 
            opacity: 0
 
          }),
 
          shades = {
 
            top: createShade(),
 
            left: createShade().height(boundy),
 
            right: createShade().height(boundy),
 
            bottom: createShade()
 
          };
 

	
 
      function resizeShades(w,h) {
 
        shades.left.css({ height: px(h) });
 
        shades.right.css({ height: px(h) });
 
      }
 
      function updateAuto()
 
      {
 
        return updateShade(Coords.getFixed());
 
      }
 
      function updateShade(c)
 
      {
 
        shades.top.css({
 
          left: px(c.x),
 
          width: px(c.w),
 
          height: px(c.y)
 
        });
 
        shades.bottom.css({
 
          top: px(c.y2),
 
          left: px(c.x),
 
          width: px(c.w),
 
          height: px(boundy-c.y2)
 
        });
 
        shades.right.css({
 
          left: px(c.x2),
 
          width: px(boundx-c.x2)
 
        });
 
        shades.left.css({
 
          width: px(c.x)
 
        });
 
      }
 
      function createShade() {
 
        return $('<div />').css({
 
          position: 'absolute',
 
          backgroundColor: options.shadeColor||options.bgColor
 
        }).appendTo(holder);
 
      }
 
      function enableShade() {
 
        if (!enabled) {
 
          enabled = true;
 
          holder.insertBefore($img);
 
          updateAuto();
 
          Selection.setBgOpacity(1,0,1);
 
          $img2.hide();
 

	
 
          setBgColor(options.shadeColor||options.bgColor,1);
 
          if (Selection.isAwake())
 
          {
 
            setOpacity(options.bgOpacity,1);
 
          }
 
            else setOpacity(1,1);
 
        }
 
      }
 
      function setBgColor(color,now) {
 
        colorChangeMacro(getShades(),color,now);
 
      }
 
      function disableShade() {
 
        if (enabled) {
 
          holder.remove();
 
          $img2.show();
 
          enabled = false;
 
          if (Selection.isAwake()) {
 
            Selection.setBgOpacity(options.bgOpacity,1,1);
 
          } else {
 
            Selection.setBgOpacity(1,1,1);
 
            Selection.disableHandles();
 
          }
 
          colorChangeMacro($div,0,1);
 
        }
 
      }
 
      function setOpacity(opacity,now) {
 
        if (enabled) {
 
          if (options.bgFade && !now) {
 
            holder.animate({
 
              opacity: 1-opacity
 
            },{
 
              queue: false,
 
              duration: options.fadeTime
 
            });
 
          }
 
          else holder.css({opacity:1-opacity});
 
        }
 
      }
 
      function refreshAll() {
 
        options.shade ? enableShade() : disableShade();
 
        if (Selection.isAwake()) setOpacity(options.bgOpacity);
 
      }
 
      function getShades() {
 
        return holder.children();
 
      }
 

	
 
      return {
 
        update: updateAuto,
 
        updateRaw: updateShade,
 
        getShades: getShades,
 
        setBgColor: setBgColor,
 
        enable: enableShade,
 
        disable: disableShade,
 
        resize: resizeShades,
 
        refresh: refreshAll,
 
        opacity: setOpacity
 
      };
 
    }());
 
    // }}}
 
    // Selection Module {{{
 
    var Selection = (function () {
 
      var awake,
 
          hdep = 370,
 
          borders = {},
 
          handle = {},
 
          dragbar = {},
 
          seehandles = false;
 

	
 
      // Private Methods
 
      function insertBorder(type) //{{{
 
      {
 
        var jq = $('<div />').css({
 
          position: 'absolute',
 
          opacity: options.borderOpacity
 
        }).addClass(cssClass(type));
 
        $img_holder.append(jq);
 
        return jq;
 
      }
 
      //}}}
 
      function dragDiv(ord, zi) //{{{
 
      {
 
        var jq = $('<div />').mousedown(createDragger(ord)).css({
 
          cursor: ord + '-resize',
 
          position: 'absolute',
 
          zIndex: zi
 
        }).addClass('ord-'+ord);
 

	
 
        if (Touch.support) {
 
          jq.bind('touchstart.jcrop', Touch.createDragger(ord));
 
        }
 

	
 
        $hdl_holder.append(jq);
 
        return jq;
 
      }
 
      //}}}
 
      function insertHandle(ord) //{{{
 
      {
 
        var hs = options.handleSize,
 

	
 
          div = dragDiv(ord, hdep++).css({
 
            opacity: options.handleOpacity
 
          }).addClass(cssClass('handle'));
 

	
 
        if (hs) { div.width(hs).height(hs); }
 

	
 
        return div;
 
      }
 
      //}}}
 
      function insertDragbar(ord) //{{{
 
      {
 
        return dragDiv(ord, hdep++).addClass('jcrop-dragbar');
 
      }
 
      //}}}
 
      function createDragbars(li) //{{{
 
      {
 
        var i;
 
        for (i = 0; i < li.length; i++) {
 
          dragbar[li[i]] = insertDragbar(li[i]);
 
        }
 
      }
 
      //}}}
 
      function createBorders(li) //{{{
 
      {
 
        var cl,i;
 
        for (i = 0; i < li.length; i++) {
 
          switch(li[i]){
 
            case'n': cl='hline'; break;
 
            case's': cl='hline bottom'; break;
 
            case'e': cl='vline right'; break;
 
            case'w': cl='vline'; break;
 
          }
 
          borders[li[i]] = insertBorder(cl);
 
        }
 
      }
 
      //}}}
 
      function createHandles(li) //{{{
 
      {
 
        var i;
 
        for (i = 0; i < li.length; i++) {
 
          handle[li[i]] = insertHandle(li[i]);
 
        }
 
      }
 
      //}}}
 
      function moveto(x, y) //{{{
 
      {
 
        if (!options.shade) {
 
          $img2.css({
 
            top: px(-y),
 
            left: px(-x)
 
          });
 
        }
 
        $sel.css({
 
          top: px(y),
 
          left: px(x)
 
        });
 
      }
 
      //}}}
 
      function resize(w, h) //{{{
 
      {
 
        $sel.width(Math.round(w)).height(Math.round(h));
 
      }
 
      //}}}
 
      function refresh() //{{{
 
      {
 
        var c = Coords.getFixed();
 

	
 
        Coords.setPressed([c.x, c.y]);
 
        Coords.setCurrent([c.x2, c.y2]);
 

	
 
        updateVisible();
 
      }
 
      //}}}
 

	
 
      // Internal Methods
 
      function updateVisible(select) //{{{
 
      {
 
        if (awake) {
 
          return update(select);
 
        }
 
      }
 
      //}}}
 
      function update(select) //{{{
 
      {
 
        var c = Coords.getFixed();
 

	
 
        resize(c.w, c.h);
 
        moveto(c.x, c.y);
 
        if (options.shade) Shade.updateRaw(c);
 

	
 
        awake || show();
 

	
 
        if (select) {
 
          options.onSelect.call(api, unscale(c));
 
        } else {
 
          options.onChange.call(api, unscale(c));
 
        }
 
      }
 
      //}}}
 
      function setBgOpacity(opacity,force,now) //{{{
 
      {
 
        if (!awake && !force) return;
 
        if (options.bgFade && !now) {
 
          $img.animate({
 
            opacity: opacity
 
          },{
 
            queue: false,
 
            duration: options.fadeTime
 
          });
 
        } else {
 
          $img.css('opacity', opacity);
 
        }
 
      }
 
      //}}}
 
      function show() //{{{
 
      {
 
        $sel.show();
 

	
 
        if (options.shade) Shade.opacity(bgopacity);
 
          else setBgOpacity(bgopacity,true);
 

	
 
        awake = true;
 
      }
 
      //}}}
 
      function release() //{{{
 
      {
 
        disableHandles();
 
        $sel.hide();
 

	
 
        if (options.shade) Shade.opacity(1);
 
          else setBgOpacity(1);
 

	
 
        awake = false;
 
        options.onRelease.call(api);
 
      }
 
      //}}}
 
      function showHandles() //{{{
 
      {
 
        if (seehandles) {
 
          $hdl_holder.show();
 
        }
 
      }
 
      //}}}
 
      function enableHandles() //{{{
 
      {
 
        seehandles = true;
 
        if (options.allowResize) {
 
          $hdl_holder.show();
 
          return true;
 
        }
 
      }
 
      //}}}
 
      function disableHandles() //{{{
 
      {
 
        seehandles = false;
 
        $hdl_holder.hide();
 
      } 
 
      //}}}
 
      function animMode(v) //{{{
 
      {
 
        if (v) {
 
          animating = true;
 
          disableHandles();
 
        } else {
 
          animating = false;
 
          enableHandles();
 
        }
 
      } 
 
      //}}}
 
      function done() //{{{
 
      {
 
        animMode(false);
 
        refresh();
 
      } 
 
      //}}}
 
      // Insert draggable elements {{{
 
      // Insert border divs for outline
 

	
 
      if (options.dragEdges && $.isArray(options.createDragbars))
 
        createDragbars(options.createDragbars);
 

	
 
      if ($.isArray(options.createHandles))
 
        createHandles(options.createHandles);
 

	
 
      if (options.drawBorders && $.isArray(options.createBorders))
 
        createBorders(options.createBorders);
 

	
 
      //}}}
 

	
 
      // This is a hack for iOS5 to support drag/move touch functionality
 
      $(document).bind('touchstart.jcrop-ios',function(e) {
 
        if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation();
 
      });
 

	
 
      var $track = newTracker().mousedown(createDragger('move')).css({
 
        cursor: 'move',
 
        position: 'absolute',
 
        zIndex: 360
 
      });
 

	
 
      if (Touch.support) {
 
        $track.bind('touchstart.jcrop', Touch.createDragger('move'));
 
      }
 

	
 
      $img_holder.append($track);
 
      disableHandles();
 

	
 
      return {
 
        updateVisible: updateVisible,
 
        update: update,
 
        release: release,
 
        refresh: refresh,
 
        isAwake: function () {
 
          return awake;
 
        },
 
        setCursor: function (cursor) {
 
          $track.css('cursor', cursor);
 
        },
 
        enableHandles: enableHandles,
 
        enableOnly: function () {
 
          seehandles = true;
 
        },
 
        showHandles: showHandles,
 
        disableHandles: disableHandles,
 
        animMode: animMode,
 
        setBgOpacity: setBgOpacity,
 
        done: done
 
      };
 
    }());
 
    
 
    //}}}
 
    // Tracker Module {{{
 
    var Tracker = (function () {
 
      var onMove = function () {},
 
          onDone = function () {},
 
          trackDoc = options.trackDocument;
 

	
 
      function toFront(touch) //{{{
 
      {
 
        $trk.css({
 
          zIndex: 450
 
        });
 

	
 
        if (touch)
 
          $(document)
 
            .bind('touchmove.jcrop', trackTouchMove)
 
            .bind('touchend.jcrop', trackTouchEnd);
 

	
 
        else if (trackDoc)
 
          $(document)
 
            .bind('mousemove.jcrop',trackMove)
 
            .bind('mouseup.jcrop',trackUp);
 
      } 
 
      //}}}
 
      function toBack() //{{{
 
      {
 
        $trk.css({
 
          zIndex: 290
 
        });
 
        $(document).unbind('.jcrop');
 
      } 
 
      //}}}
 
      function trackMove(e) //{{{
 
      {
 
        onMove(mouseAbs(e));
 
        return false;
 
      } 
 
      //}}}
 
      function trackUp(e) //{{{
 
      {
 
        e.preventDefault();
 
        e.stopPropagation();
 

	
 
        if (btndown) {
 
          btndown = false;
 

	
 
          onDone(mouseAbs(e));
 

	
 
          if (Selection.isAwake()) {
 
            options.onSelect.call(api, unscale(Coords.getFixed()));
 
          }
 

	
 
          toBack();
 
          onMove = function () {};
 
          onDone = function () {};
 
        }
 

	
 
        return false;
 
      }
 
      //}}}
 
      function activateHandlers(move, done, touch) //{{{
 
      {
 
        btndown = true;
 
        onMove = move;
 
        onDone = done;
 
        toFront(touch);
 
        return false;
 
      }
 
      //}}}
 
      function trackTouchMove(e) //{{{
 
      {
 
        onMove(mouseAbs(Touch.cfilter(e)));
 
        return false;
 
      }
 
      //}}}
 
      function trackTouchEnd(e) //{{{
 
      {
 
        return trackUp(Touch.cfilter(e));
 
      }
 
      //}}}
 
      function setCursor(t) //{{{
 
      {
 
        $trk.css('cursor', t);
 
      }
 
      //}}}
 

	
 
      if (!trackDoc) {
 
        $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp);
 
      }
 

	
 
      $img.before($trk);
 
      return {
 
        activateHandlers: activateHandlers,
 
        setCursor: setCursor
 
      };
 
    }());
 
    //}}}
 
    // KeyManager Module {{{
 
    var KeyManager = (function () {
 
      var $keymgr = $('<input type="radio" />').css({
 
        position: 'fixed',
 
        left: '-120px',
 
        width: '12px'
 
      }).addClass('jcrop-keymgr'),
 

	
 
        $keywrap = $('<div />').css({
 
          position: 'absolute',
 
          overflow: 'hidden'
 
        }).append($keymgr);
 

	
 
      function watchKeys() //{{{
 
      {
 
        if (options.keySupport) {
 
          $keymgr.show();
 
          $keymgr.focus();
 
        }
 
      }
 
      //}}}
 
      function onBlur(e) //{{{
 
      {
 
        $keymgr.hide();
 
      }
 
      //}}}
 
      function doNudge(e, x, y) //{{{
 
      {
 
        if (options.allowMove) {
 
          Coords.moveOffset([x, y]);
 
          Selection.updateVisible(true);
 
        }
 
        e.preventDefault();
 
        e.stopPropagation();
 
      }
 
      //}}}
 
      function parseKey(e) //{{{
 
      {
 
        if (e.ctrlKey || e.metaKey) {
 
          return true;
 
        }
 
        shift_down = e.shiftKey ? true : false;
 
        var nudge = shift_down ? 10 : 1;
 

	
 
        switch (e.keyCode) {
 
        case 37:
 
          doNudge(e, -nudge, 0);
 
          break;
 
        case 39:
 
          doNudge(e, nudge, 0);
 
          break;
 
        case 38:
 
          doNudge(e, 0, -nudge);
 
          break;
 
        case 40:
 
          doNudge(e, 0, nudge);
 
          break;
 
        case 27:
 
          if (options.allowSelect) Selection.release();
 
          break;
 
        case 9:
 
          return true;
 
        }
 

	
 
        return false;
 
      }
 
      //}}}
 

	
 
      if (options.keySupport) {
 
        $keymgr.keydown(parseKey).blur(onBlur);
 
        if (ie6mode || !options.fixedSupport) {
 
          $keymgr.css({
 
            position: 'absolute',
 
            left: '-20px'
 
          });
 
          $keywrap.append($keymgr).insertBefore($img);
 
        } else {
 
          $keymgr.insertBefore($img);
 
        }
 
      }
 

	
 

	
 
      return {
 
        watchKeys: watchKeys
 
      };
 
    }());
 
    //}}}
 
    // }}}
 
    // API methods {{{
 
    function setClass(cname) //{{{
 
    {
 
      $div.removeClass().addClass(cssClass('holder')).addClass(cname);
 
    }
 
    //}}}
 
    function animateTo(a, callback) //{{{
 
    {
 
      var x1 = a[0] / xscale,
 
          y1 = a[1] / yscale,
 
          x2 = a[2] / xscale,
 
          y2 = a[3] / yscale;
 

	
 
      if (animating) {
 
        return;
 
      }
 

	
 
      var animto = Coords.flipCoords(x1, y1, x2, y2),
 
          c = Coords.getFixed(),
 
          initcr = [c.x, c.y, c.x2, c.y2],
 
          animat = initcr,
 
          interv = options.animationDelay,
 
          ix1 = animto[0] - initcr[0],
 
          iy1 = animto[1] - initcr[1],
 
          ix2 = animto[2] - initcr[2],
 
          iy2 = animto[3] - initcr[3],
 
          pcent = 0,
 
          velocity = options.swingSpeed;
 

	
 
      x1 = animat[0];
 
      y1 = animat[1];
 
      x2 = animat[2];
 
      y2 = animat[3];
 

	
 
      Selection.animMode(true);
 
      var anim_timer;
 

	
 
      function queueAnimator() {
 
        window.setTimeout(animator, interv);
 
      }
 
      var animator = (function () {
 
        return function () {
 
          pcent += (100 - pcent) / velocity;
 

	
 
          animat[0] = Math.round(x1 + ((pcent / 100) * ix1));
 
          animat[1] = Math.round(y1 + ((pcent / 100) * iy1));
 
          animat[2] = Math.round(x2 + ((pcent / 100) * ix2));
 
          animat[3] = Math.round(y2 + ((pcent / 100) * iy2));
 

	
 
          if (pcent >= 99.8) {
 
            pcent = 100;
 
          }
 
          if (pcent < 100) {
 
            setSelectRaw(animat);
 
            queueAnimator();
 
          } else {
 
            Selection.done();
 
            Selection.animMode(false);
 
            if (typeof(callback) === 'function') {
 
              callback.call(api);
 
            }
 
          }
 
        };
 
      }());
 
      queueAnimator();
 
    }
 
    //}}}
 
    function setSelect(rect) //{{{
 
    {
 
      setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]);
 
      options.onSelect.call(api, unscale(Coords.getFixed()));
 
      Selection.enableHandles();
 
    }
 
    //}}}
 
    function setSelectRaw(l) //{{{
 
    {
 
      Coords.setPressed([l[0], l[1]]);
 
      Coords.setCurrent([l[2], l[3]]);
 
      Selection.update();
 
    }
 
    //}}}
 
    function tellSelect() //{{{
 
    {
 
      return unscale(Coords.getFixed());
 
    }
 
    //}}}
 
    function tellScaled() //{{{
 
    {
 
      return Coords.getFixed();
 
    }
 
    //}}}
 
    function setOptionsNew(opt) //{{{
 
    {
 
      setOptions(opt);
 
      interfaceUpdate();
 
    }
 
    //}}}
 
    function disableCrop() //{{{
 
    {
 
      options.disabled = true;
 
      Selection.disableHandles();
 
      Selection.setCursor('default');
 
      Tracker.setCursor('default');
 
    }
 
    //}}}
 
    function enableCrop() //{{{
 
    {
 
      options.disabled = false;
 
      interfaceUpdate();
 
    }
 
    //}}}
 
    function cancelCrop() //{{{
 
    {
 
      Selection.done();
 
      Tracker.activateHandlers(null, null);
 
    }
 
    //}}}
 
    function destroy() //{{{
 
    {
 
      $div.remove();
 
      $origimg.show();
 
      $origimg.css('visibility','visible');
 
      $(obj).removeData('Jcrop');
 
    }
 
    //}}}
 
    function setImage(src, callback) //{{{
 
    {
 
      Selection.release();
 
      disableCrop();
 
      var img = new Image();
 
      img.onload = function () {
 
        var iw = img.width;
 
        var ih = img.height;
 
        var bw = options.boxWidth;
 
        var bh = options.boxHeight;
 
        $img.width(iw).height(ih);
 
        $img.attr('src', src);
 
        $img2.attr('src', src);
 
        presize($img, bw, bh);
 
        boundx = $img.width();
 
        boundy = $img.height();
 
        $img2.width(boundx).height(boundy);
 
        $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2));
 
        $div.width(boundx).height(boundy);
 
        Shade.resize(boundx,boundy);
 
        enableCrop();
 

	
 
        if (typeof(callback) === 'function') {
 
          callback.call(api);
 
        }
 
      };
 
      img.src = src;
 
    }
 
    //}}}
 
    function colorChangeMacro($obj,color,now) {
 
      var mycolor = color || options.bgColor;
 
      if (options.bgFade && supportsColorFade() && options.fadeTime && !now) {
 
        $obj.animate({
 
          backgroundColor: mycolor
 
        }, {
 
          queue: false,
 
          duration: options.fadeTime
 
        });
 
      } else {
 
        $obj.css('backgroundColor', mycolor);
 
      }
 
    }
 
    function interfaceUpdate(alt) //{{{
 
    // This method tweaks the interface based on options object.
 
    // Called when options are changed and at end of initialization.
 
    {
 
      if (options.allowResize) {
 
        if (alt) {
 
          Selection.enableOnly();
 
        } else {
 
          Selection.enableHandles();
 
        }
 
      } else {
 
        Selection.disableHandles();
 
      }
 

	
 
      Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default');
 
      Selection.setCursor(options.allowMove ? 'move' : 'default');
 

	
 
      if (options.hasOwnProperty('trueSize')) {
 
        xscale = options.trueSize[0] / boundx;
 
        yscale = options.trueSize[1] / boundy;
 
      }
 

	
 
      if (options.hasOwnProperty('setSelect')) {
 
        setSelect(options.setSelect);
 
        Selection.done();
 
        delete(options.setSelect);
 
      }
 

	
 
      Shade.refresh();
 

	
 
      if (options.bgColor != bgcolor) {
 
        colorChangeMacro(
 
          options.shade? Shade.getShades(): $div,
 
          options.shade?
 
            (options.shadeColor || options.bgColor):
 
            options.bgColor
 
        );
 
        bgcolor = options.bgColor;
 
      }
 

	
 
      if (bgopacity != options.bgOpacity) {
 
        bgopacity = options.bgOpacity;
 
        if (options.shade) Shade.refresh();
 
          else Selection.setBgOpacity(bgopacity);
 
      }
 

	
 
      xlimit = options.maxSize[0] || 0;
 
      ylimit = options.maxSize[1] || 0;
 
      xmin = options.minSize[0] || 0;
 
      ymin = options.minSize[1] || 0;
 

	
 
      if (options.hasOwnProperty('outerImage')) {
 
        $img.attr('src', options.outerImage);
 
        delete(options.outerImage);
 
      }
 

	
 
      Selection.refresh();
 
    }
 
    //}}}
 
    //}}}
 

	
 
    if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection);
 

	
 
    $hdl_holder.hide();
 
    interfaceUpdate(true);
 

	
 
    var api = {
 
      setImage: setImage,
 
      animateTo: animateTo,
 
      setSelect: setSelect,
 
      setOptions: setOptionsNew,
 
      tellSelect: tellSelect,
 
      tellScaled: tellScaled,
 
      setClass: setClass,
 

	
 
      disable: disableCrop,
 
      enable: enableCrop,
 
      cancel: cancelCrop,
 
      release: Selection.release,
 
      destroy: destroy,
 

	
 
      focus: KeyManager.watchKeys,
 

	
 
      getBounds: function () {
 
        return [boundx * xscale, boundy * yscale];
 
      },
 
      getWidgetSize: function () {
 
        return [boundx, boundy];
 
      },
 
      getScaleFactor: function () {
 
        return [xscale, yscale];
 
      },
 
      getOptions: function() {
 
        // careful: internal values are returned
 
        return options;
 
      },
 

	
 
      ui: {
 
        holder: $div,
 
        selection: $sel
 
      }
 
    };
 

	
 
    if (is_msie) $div.bind('selectstart', function () { return false; });
 

	
 
    $origimg.data('Jcrop', api);
 
    return api;
 
  };
 
  $.fn.Jcrop = function (options, callback) //{{{
 
  {
 
    var api;
 
    // Iterate over each object, attach Jcrop
 
    this.each(function () {
 
      // If we've already attached to this object
 
      if ($(this).data('Jcrop')) {
 
        // The API can be requested this way (undocumented)
 
        if (options === 'api') return $(this).data('Jcrop');
 
        // Otherwise, we just reset the options...
 
        else $(this).data('Jcrop').setOptions(options);
 
      }
 
      // If we haven't been attached, preload and attach
 
      else {
 
        if (this.tagName == 'IMG')
 
          $.Jcrop.Loader(this,function(){
 
            $(this).css({display:'block',visibility:'hidden'});
 
            api = $.Jcrop(this, options);
 
            if ($.isFunction(callback)) callback.call(api);
 
          });
 
        else {
 
          $(this).css({display:'block',visibility:'hidden'});
 
          api = $.Jcrop(this, options);
 
          if ($.isFunction(callback)) callback.call(api);
 
        }
 
      }
 
    });
 

	
 
    // Return "this" so the object is chainable (jQuery-style)
 
    return this;
 
  };
 
  //}}}
 
  // $.Jcrop.Loader - basic image loader {{{
 

	
 
  $.Jcrop.Loader = function(imgobj,success,error){
 
    var $img = $(imgobj), img = $img[0];
 

	
 
    function completeCheck(){
 
      if (img.complete) {
 
        $img.unbind('.jcloader');
 
        if ($.isFunction(success)) success.call(img);
 
      }
 
      else window.setTimeout(completeCheck,50);
 
    }
 

	
 
    $img
 
      .bind('load.jcloader',completeCheck)
 
      .bind('error.jcloader',function(e){
 
        $img.unbind('.jcloader');
 
        if ($.isFunction(error)) error.call(img);
 
      });
 

	
 
    if (img.complete && $.isFunction(success)){
 
      $img.unbind('.jcloader');
 
      success.call(img);
 
    }
 
  };
 

	
 
  //}}}
 
  // Global Defaults {{{
 
  $.Jcrop.defaults = {
 

	
 
    // Basic Settings
 
    allowSelect: true,
 
    allowMove: true,
 
    allowResize: true,
 

	
 
    trackDocument: true,
 

	
 
    // Styling Options
 
    baseClass: 'jcrop',
 
    addClass: null,
 
    bgColor: 'black',
 
    bgOpacity: 0.6,
 
    bgFade: false,
 
    borderOpacity: 0.4,
 
    handleOpacity: 0.5,
 
    handleSize: null,
 

	
 
    aspectRatio: 0,
 
    keySupport: true,
 
    createHandles: ['n','s','e','w','nw','ne','se','sw'],
 
    createDragbars: ['n','s','e','w'],
 
    createBorders: ['n','s','e','w'],
 
    drawBorders: true,
 
    dragEdges: true,
 
    fixedSupport: true,
 
    touchSupport: null,
 

	
 
    shade: null,
 

	
 
    boxWidth: 0,
 
    boxHeight: 0,
 
    boundary: 2,
 
    fadeTime: 400,
 
    animationDelay: 20,
 
    swingSpeed: 3,
 

	
 
    minSelect: [0, 0],
 
    maxSize: [0, 0],
 
    minSize: [0, 0],
 

	
 
    // Callbacks / Event Handlers
 
    onChange: function () {},
 
    onSelect: function () {},
 
    onDblClick: function () {},
 
    onRelease: function () {}
 
  };
 

	
 
  // }}}
 
}(jQuery));
static/tapmodo-Jcrop-1902fbc/js/jquery.Jcrop.min.js
Show inline comments
 
new file 100644
 
/**
 
 * jquery.Jcrop.min.js v0.9.12 (build:20130202)
 
 * jQuery Image Cropping Plugin - released under MIT License
 
 * Copyright (c) 2008-2013 Tapmodo Interactive LLC
 
 * https://github.com/tapmodo/Jcrop
 
 */
 
(function(a){a.Jcrop=function(b,c){function i(a){return Math.round(a)+"px"}function j(a){return d.baseClass+"-"+a}function k(){return a.fx.step.hasOwnProperty("backgroundColor")}function l(b){var c=a(b).offset();return[c.left,c.top]}function m(a){return[a.pageX-e[0],a.pageY-e[1]]}function n(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function o(a,b,c){e=l(D),bc.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bc.activateHandlers(q(b),v,c);var d=_.getFixed(),f=r(a),g=_.getCorner(r(f));_.setPressed(_.getCorner(f)),_.setCurrent(g),bc.activateHandlers(p(a,d),v,c)}function p(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}_.setCurrent(c),bb.update()}}function q(a){var b=a;return bd.watchKeys
 
(),function(a){_.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,bb.update()}}function r(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function s(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(b)),b.stopPropagation(),b.preventDefault(),!1)}}function t(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),T=a.width()/d,U=a.height()/e,a.width(d).height(e)}function u(a){return{x:a.x*T,y:a.y*U,x2:a.x2*T,y2:a.y2*U,w:a.w*T,h:a.h*U}}function v(a){var b=_.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(bb.enableHandles(),bb.done()):bb.release(),bc.setCursor(d.allowSelect?"crosshair":"default")}function w(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;W=!0,e=l(D),bb.disableHandles(),bc.setCursor("crosshair");var b=m(a);return _.setPressed(b),bb.update(),bc.activateHandlers(x,v,a.type.substring
 
(0,5)==="touch"),bd.watchKeys(),a.stopPropagation(),a.preventDefault(),!1}function x(a){_.setCurrent(a),bb.update()}function y(){var b=a("<div></div>").addClass(j("tracker"));return g&&b.css({opacity:0,backgroundColor:"white"}),b}function be(a){G.removeClass().addClass(j("holder")).addClass(a)}function bf(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/T,e=a[1]/U,f=a[2]/T,g=a[3]/U;if(X)return;var h=_.flipCoords(c,e,f,g),i=_.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;c=k[0],e=k[1],f=k[2],g=k[3],bb.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=Math.round(c+q/100*m),k[1]=Math.round(e+q/100*n),k[2]=Math.round(f+q/100*o),k[3]=Math.round(g+q/100*p),q>=99.8&&(q=100),q<100?(bh(k),t()):(bb.done(),bb.animMode(!1),typeof b=="function"&&b.call(bs))}}();t()}function bg(a){bh([a[0]/T,a[1]/U,a[2]/T,a[3]/U]),d.onSelect.call(bs,u(_.getFixed())),bb.enableHandles()}function bh(a){_.setPressed([a[0],a[1]]),_.setCurrent([a[2],
 
a[3]]),bb.update()}function bi(){return u(_.getFixed())}function bj(){return _.getFixed()}function bk(a){n(a),br()}function bl(){d.disabled=!0,bb.disableHandles(),bb.setCursor("default"),bc.setCursor("default")}function bm(){d.disabled=!1,br()}function bn(){bb.done(),bc.activateHandlers(null,null)}function bo(){G.remove(),A.show(),A.css("visibility","visible"),a(b).removeData("Jcrop")}function bp(a,b){bb.release(),bl();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;D.width(e).height(f),D.attr("src",a),H.attr("src",a),t(D,g,h),E=D.width(),F=D.height(),H.width(E).height(F),M.width(E+L*2).height(F+L*2),G.width(E).height(F),ba.resize(E,F),bm(),typeof b=="function"&&b.call(bs)},c.src=a}function bq(a,b,c){var e=b||d.bgColor;d.bgFade&&k()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function br(a){d.allowResize?a?bb.enableOnly():bb.enableHandles():bb.disableHandles(),bc.setCursor(d.allowSelect?"crosshair":"default"),bb
 
.setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&&(T=d.trueSize[0]/E,U=d.trueSize[1]/F),d.hasOwnProperty("setSelect")&&(bg(d.setSelect),bb.done(),delete d.setSelect),ba.refresh(),d.bgColor!=N&&(bq(d.shade?ba.getShades():G,d.shade?d.shadeColor||d.bgColor:d.bgColor),N=d.bgColor),O!=d.bgOpacity&&(O=d.bgOpacity,d.shade?ba.refresh():bb.setBgOpacity(O)),P=d.maxSize[0]||0,Q=d.maxSize[1]||0,R=d.minSize[0]||0,S=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(D.attr("src",d.outerImage),delete d.outerImage),bb.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f=navigator.userAgent.toLowerCase(),g=/msie/.test(f),h=/msie [1-6]\./.test(f);typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),n(c);var z={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},A=a(b),B=!0;if(b.tagName=="IMG"){if(A[0].width!=0&&A[0].height!=0)A.width(A[0].width),A.height(A[0].height);else{var C=new Image;C.src=A[0].src,A.width(C.width),A.height(C.height)}var D=A.clone().removeAttr("id").
 
css(z).show();D.width(A.width()),D.height(A.height()),A.after(D).hide()}else D=A.css(z).show(),B=!1,d.shade===null&&(d.shade=!0);t(D,d.boxWidth,d.boxHeight);var E=D.width(),F=D.height(),G=a("<div />").width(E).height(F).addClass(j("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(A).append(D);d.addClass&&G.addClass(d.addClass);var H=a("<div />"),I=a("<div />").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),J=a("<div />").width("100%").height("100%").css("zIndex",320),K=a("<div />").css({position:"absolute",zIndex:600}).dblclick(function(){var a=_.getFixed();d.onDblClick.call(bs,a)}).insertBefore(D).append(I,J);B&&(H=a("<img />").attr("src",D.attr("src")).css(z).width(E).height(F),I.append(H)),h&&K.css({overflowY:"hidden"});var L=d.boundary,M=y().width(E+L*2).height(F+L*2).css({position:"absolute",top:i(-L),left:i(-L),zIndex:290}).mousedown(w),N=d.bgColor,O=d.bgOpacity,P,Q,R,S,T,U,V=!0,W,X,Y;e=l(D);var Z=function(){function a(){var a={},b=["touchstart"
 
,"touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;d<b.length;d++){var e=b[d];e="on"+e;var f=e in c;f||(c.setAttribute(e,"return;"),f=typeof c[e]=="function"),a[b[d]]=f}return a.touchstart&&a.touchend&&a.touchmove}catch(g){return!1}}function b(){return d.touchSupport===!0||d.touchSupport===!1?d.touchSupport:a()}return{createDragger:function(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(Z.cfilter(b)),!0),b.stopPropagation(),b.preventDefault(),!1)}},newSelection:function(a){return w(Z.cfilter(a))},cfilter:function(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,a},isSupported:a,support:b()}}(),_=function(){function h(d){d=n(d),c=a=d[0],e=b=d[1]}function i(a){a=n(a),f=a[0]-c,g=a[1]-e,c=a[0],e=a[1]}function j(){return[f,g]}function k(d){var f=d[0],g=d[1];0>a+f&&(f-=f+a),0>b+g&&(g-=g+b),F<e+g&&(g+=F-(e+g)),E<c+f&&(f+=E-(c+f)),a+=f,c+=f,b+=g,e+=g}function l(a){var b=m();switch(a){case"ne":return[
 
b.x2,b.y];case"nw":return[b.x,b.y];case"se":return[b.x2,b.y2];case"sw":return[b.x,b.y2]}}function m(){if(!d.aspectRatio)return p();var f=d.aspectRatio,g=d.minSize[0]/T,h=d.maxSize[0]/T,i=d.maxSize[1]/U,j=c-a,k=e-b,l=Math.abs(j),m=Math.abs(k),n=l/m,r,s,t,u;return h===0&&(h=E*10),i===0&&(i=F*10),n<f?(s=e,t=m*f,r=j<0?a-t:t+a,r<0?(r=0,u=Math.abs((r-a)/f),s=k<0?b-u:u+b):r>E&&(r=E,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>F&&(s=F,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-a<g?r=a+g:r-a>h&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):r<a&&(a-r<g?r=a-g:a-r>h&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>E&&(a-=r-E,r=E),s<0?(b-=s,s=0):s>F&&(b-=s-F,s=F),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>E&&(a[0]=E),a[1]>F&&(a[1]=F),[Math.round(a[0]),Math.round(a[1])]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return c<a&&(e=c,f=a),d<b&&(g=d,h=b),[e,g,f,h]}function p(){var d=c-a,f=e-b,g;return P&&Math.abs(d)>P&&(c=d>0?a+P:a-P),Q&&Math.abs
 
(f)>Q&&(e=f>0?b+Q:b-Q),S/U&&Math.abs(f)<S/U&&(e=f>0?b+S/U:b-S/U),R/T&&Math.abs(d)<R/T&&(c=d>0?a+R/T:a-R/T),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&(a-=c,c-=c),e<0&&(b-=e,e-=e),c>E&&(g=c-E,a-=g,c-=g),e>F&&(g=e-F,b-=g,e-=g),a>E&&(g=a-F,e-=g,b-=g),b>F&&(g=b-F,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),ba=function(){function f(a,b){e.left.css({height:i(b)}),e.right.css({height:i(b)})}function g(){return h(_.getFixed())}function h(a){e.top.css({left:i(a.x),width:i(a.w),height:i(a.y)}),e.bottom.css({top:i(a.y2),left:i(a.x),width:i(a.w),height:i(F-a.y2)}),e.right.css({left:i(a.x2),width:i(E-a.x2)}),e.left.css({width:i(a.x)})}function j(){return a("<div />").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(D),g(),bb.setBgOpacity(1,0,1),H.hide(),l(d.shadeColor||d.bgColor,1),bb.
 
isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){bq(p(),a,b)}function m(){b&&(c.remove(),H.show(),b=!1,bb.isAwake()?bb.setBgOpacity(d.bgOpacity,1,1):(bb.setBgOpacity(1,1,1),bb.disableHandles()),bq(G,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),bb.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("<div />").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(F),right:j().height(F),bottom:j()};return{update:g,updateRaw:h,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),bb=function(){function k(b){var c=a("<div />").css({position:"absolute",opacity:d.borderOpacity}).addClass(j(b));return I.append(c),c}function l(b,c){var d=a("<div />").mousedown(s(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return Z.support&&d.bind("touchstart.jcrop",Z.createDragger(b)),J.append(d),d}function m(a){var b=d.handleSize,e=l(a,c++
 
).css({opacity:d.handleOpacity}).addClass(j("handle"));return b&&e.width(b).height(b),e}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o(a){var b;for(b=0;b<a.length;b++)g[a[b]]=n(a[b])}function p(a){var b,c;for(c=0;c<a.length;c++){switch(a[c]){case"n":b="hline";break;case"s":b="hline bottom";break;case"e":b="vline right";break;case"w":b="vline"}e[a[c]]=k(b)}}function q(a){var b;for(b=0;b<a.length;b++)f[a[b]]=m(a[b])}function r(a,b){d.shade||H.css({top:i(-b),left:i(-a)}),K.css({top:i(b),left:i(a)})}function t(a,b){K.width(Math.round(a)).height(Math.round(b))}function v(){var a=_.getFixed();_.setPressed([a.x,a.y]),_.setCurrent([a.x2,a.y2]),w()}function w(a){if(b)return x(a)}function x(a){var c=_.getFixed();t(c.w,c.h),r(c.x,c.y),d.shade&&ba.updateRaw(c),b||A(),a?d.onSelect.call(bs,u(c)):d.onChange.call(bs,u(c))}function z(a,c,e){if(!b&&!c)return;d.bgFade&&!e?D.animate({opacity:a},{queue:!1,duration:d.fadeTime}):D.css("opacity",a)}function A(){K.show(),d.shade?ba.opacity(O):z(O,!0),b=!0}function B
 
(){F(),K.hide(),d.shade?ba.opacity(1):z(1),b=!1,d.onRelease.call(bs)}function C(){h&&J.show()}function E(){h=!0;if(d.allowResize)return J.show(),!0}function F(){h=!1,J.hide()}function G(a){a?(X=!0,F()):(X=!1,E())}function L(){G(!1),v()}var b,c=370,e={},f={},g={},h=!1;d.dragEdges&&a.isArray(d.createDragbars)&&o(d.createDragbars),a.isArray(d.createHandles)&&q(d.createHandles),d.drawBorders&&a.isArray(d.createBorders)&&p(d.createBorders),a(document).bind("touchstart.jcrop-ios",function(b){a(b.currentTarget).hasClass("jcrop-tracker")&&b.stopPropagation()});var M=y().mousedown(s("move")).css({cursor:"move",position:"absolute",zIndex:360});return Z.support&&M.bind("touchstart.jcrop",Z.createDragger("move")),I.append(M),F(),{updateVisible:w,update:x,release:B,refresh:v,isAwake:function(){return b},setCursor:function(a){M.css("cursor",a)},enableHandles:E,enableOnly:function(){h=!0},showHandles:C,disableHandles:F,animMode:G,setBgOpacity:z,done:L}}(),bc=function(){function f(b){M.css({zIndex:450}),b?a(document).bind("touchmove.jcrop"
 
,k).bind("touchend.jcrop",l):e&&a(document).bind("mousemove.jcrop",h).bind("mouseup.jcrop",i)}function g(){M.css({zIndex:290}),a(document).unbind(".jcrop")}function h(a){return b(m(a)),!1}function i(a){return a.preventDefault(),a.stopPropagation(),W&&(W=!1,c(m(a)),bb.isAwake()&&d.onSelect.call(bs,u(_.getFixed())),g(),b=function(){},c=function(){}),!1}function j(a,d,e){return W=!0,b=a,c=d,f(e),!1}function k(a){return b(m(Z.cfilter(a))),!1}function l(a){return i(Z.cfilter(a))}function n(a){M.css("cursor",a)}var b=function(){},c=function(){},e=d.trackDocument;return e||M.mousemove(h).mouseup(i).mouseout(i),D.before(M),{activateHandlers:j,setCursor:n}}(),bd=function(){function e(){d.keySupport&&(b.show(),b.focus())}function f(a){b.hide()}function g(a,b,c){d.allowMove&&(_.moveOffset([b,c]),bb.updateVisible(!0)),a.preventDefault(),a.stopPropagation()}function i(a){if(a.ctrlKey||a.metaKey)return!0;Y=a.shiftKey?!0:!1;var b=Y?10:1;switch(a.keyCode){case 37:g(a,-b,0);break;case 39:g(a,b,0);break;case 38:g(a,0,-b);break;
 
case 40:g(a,0,b);break;case 27:d.allowSelect&&bb.release();break;case 9:return!0}return!1}var b=a('<input type="radio" />').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),c=a("<div />").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),h||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(D)):b.insertBefore(D)),{watchKeys:e}}();Z.support&&M.bind("touchstart.jcrop",Z.newSelection),J.hide(),br(!0);var bs={setImage:bp,animateTo:bf,setSelect:bg,setOptions:bk,tellSelect:bi,tellScaled:bj,setClass:be,disable:bl,enable:bm,cancel:bn,release:bb.release,destroy:bo,focus:bd.watchKeys,getBounds:function(){return[E*T,F*U]},getWidgetSize:function(){return[E,F]},getScaleFactor:function(){return[T,U]},getOptions:function(){return d},ui:{holder:G,selection:K}};return g&&G.bind("selectstart",function(){return!1}),A.data("Jcrop",bs),bs},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if(
 
b==="api")return a(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges
 
:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery);
 
\ No newline at end of file
static/tapmodo-Jcrop-1902fbc/js/jquery.color.js
Show inline comments
 
new file 100644
 
/*!
 
 * jQuery Color Animations v2.0pre
 
 * http://jquery.org/
 
 *
 
 * Copyright 2011 John Resig
 
 * Dual licensed under the MIT or GPL Version 2 licenses.
 
 * http://jquery.org/license
 
 */
 

	
 
(function( jQuery, undefined ){
 
	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color outlineColor".split(" "),
 

	
 
		// plusequals test for += 100 -= 100
 
		rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
 
		// a set of RE's that can match strings and generate color tuples.
 
		stringParsers = [{
 
				re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
 
				parse: function( execResult ) {
 
					return [
 
						execResult[ 1 ],
 
						execResult[ 2 ],
 
						execResult[ 3 ],
 
						execResult[ 4 ]
 
					];
 
				}
 
			}, {
 
				re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
 
				parse: function( execResult ) {
 
					return [
 
						2.55 * execResult[1],
 
						2.55 * execResult[2],
 
						2.55 * execResult[3],
 
						execResult[ 4 ]
 
					];
 
				}
 
			}, {
 
				re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
 
				parse: function( execResult ) {
 
					return [
 
						parseInt( execResult[ 1 ], 16 ),
 
						parseInt( execResult[ 2 ], 16 ),
 
						parseInt( execResult[ 3 ], 16 )
 
					];
 
				}
 
			}, {
 
				re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,
 
				parse: function( execResult ) {
 
					return [
 
						parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
 
						parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
 
						parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
 
					];
 
				}
 
			}, {
 
				re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
 
				space: "hsla",
 
				parse: function( execResult ) {
 
					return [
 
						execResult[1],
 
						execResult[2] / 100,
 
						execResult[3] / 100,
 
						execResult[4]
 
					];
 
				}
 
			}],
 

	
 
		// jQuery.Color( )
 
		color = jQuery.Color = function( color, green, blue, alpha ) {
 
			return new jQuery.Color.fn.parse( color, green, blue, alpha );
 
		},
 
		spaces = {
 
			rgba: {
 
				cache: "_rgba",
 
				props: {
 
					red: {
 
						idx: 0,
 
						type: "byte",
 
						empty: true
 
					},
 
					green: {
 
						idx: 1,
 
						type: "byte",
 
						empty: true
 
					},
 
					blue: {
 
						idx: 2,
 
						type: "byte",
 
						empty: true
 
					},
 
					alpha: {
 
						idx: 3,
 
						type: "percent",
 
						def: 1
 
					}
 
				}
 
			},
 
			hsla: {
 
				cache: "_hsla",
 
				props: {
 
					hue: {
 
						idx: 0,
 
						type: "degrees",
 
						empty: true
 
					},
 
					saturation: {
 
						idx: 1,
 
						type: "percent",
 
						empty: true
 
					},
 
					lightness: {
 
						idx: 2,
 
						type: "percent",
 
						empty: true
 
					}
 
				}
 
			}
 
		},
 
		propTypes = {
 
			"byte": {
 
				floor: true,
 
				min: 0,
 
				max: 255
 
			},
 
			"percent": {
 
				min: 0,
 
				max: 1
 
			},
 
			"degrees": {
 
				mod: 360,
 
				floor: true
 
			}
 
		},
 
		rgbaspace = spaces.rgba.props,
 
		support = color.support = {},
 

	
 
		// colors = jQuery.Color.names
 
		colors,
 

	
 
		// local aliases of functions called often
 
		each = jQuery.each;
 

	
 
	spaces.hsla.props.alpha = rgbaspace.alpha;
 

	
 
	function clamp( value, prop, alwaysAllowEmpty ) {
 
		var type = propTypes[ prop.type ] || {},
 
			allowEmpty = prop.empty || alwaysAllowEmpty;
 

	
 
		if ( allowEmpty && value == null ) {
 
			return null;
 
		}
 
		if ( prop.def && value == null ) {
 
			return prop.def;
 
		}
 
		if ( type.floor ) {
 
			value = ~~value;
 
		} else {
 
			value = parseFloat( value );
 
		}
 
		if ( value == null || isNaN( value ) ) {
 
			return prop.def;
 
		}
 
		if ( type.mod ) {
 
			value = value % type.mod;
 
			// -10 -> 350
 
			return value < 0 ? type.mod + value : value;
 
		}
 

	
 
		// for now all property types without mod have min and max
 
		return type.min > value ? type.min : type.max < value ? type.max : value;
 
	}
 

	
 
	function stringParse( string ) {
 
		var inst = color(),
 
			rgba = inst._rgba = [];
 

	
 
		string = string.toLowerCase();
 

	
 
		each( stringParsers, function( i, parser ) {
 
			var match = parser.re.exec( string ),
 
				values = match && parser.parse( match ),
 
				parsed,
 
				spaceName = parser.space || "rgba",
 
				cache = spaces[ spaceName ].cache;
 

	
 

	
 
			if ( values ) {
 
				parsed = inst[ spaceName ]( values );
 

	
 
				// if this was an rgba parse the assignment might happen twice
 
				// oh well....
 
				inst[ cache ] = parsed[ cache ];
 
				rgba = inst._rgba = parsed._rgba;
 

	
 
				// exit each( stringParsers ) here because we matched
 
				return false;
 
			}
 
		});
 

	
 
		// Found a stringParser that handled it
 
		if ( rgba.length !== 0 ) {
 

	
 
			// if this came from a parsed string, force "transparent" when alpha is 0
 
			// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
 
			if ( Math.max.apply( Math, rgba ) === 0 ) {
 
				jQuery.extend( rgba, colors.transparent );
 
			}
 
			return inst;
 
		}
 

	
 
		// named colors / default - filter back through parse function
 
		if ( string = colors[ string ] ) {
 
			return string;
 
		}
 
	}
 

	
 
	color.fn = color.prototype = {
 
		constructor: color,
 
		parse: function( red, green, blue, alpha ) {
 
			if ( red === undefined ) {
 
				this._rgba = [ null, null, null, null ];
 
				return this;
 
			}
 
			if ( red instanceof jQuery || red.nodeType ) {
 
				red = red instanceof jQuery ? red.css( green ) : jQuery( red ).css( green );
 
				green = undefined;
 
			}
 

	
 
			var inst = this,
 
				type = jQuery.type( red ),
 
				rgba = this._rgba = [],
 
				source;
 

	
 
			// more than 1 argument specified - assume ( red, green, blue, alpha )
 
			if ( green !== undefined ) {
 
				red = [ red, green, blue, alpha ];
 
				type = "array";
 
			}
 

	
 
			if ( type === "string" ) {
 
				return this.parse( stringParse( red ) || colors._default );
 
			}
 

	
 
			if ( type === "array" ) {
 
				each( rgbaspace, function( key, prop ) {
 
					rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
 
				});
 
				return this;
 
			}
 

	
 
			if ( type === "object" ) {
 
				if ( red instanceof color ) {
 
					each( spaces, function( spaceName, space ) {
 
						if ( red[ space.cache ] ) {
 
							inst[ space.cache ] = red[ space.cache ].slice();
 
						}
 
					});
 
				} else {
 
					each( spaces, function( spaceName, space ) {
 
						each( space.props, function( key, prop ) {
 
							var cache = space.cache;
 

	
 
							// if the cache doesn't exist, and we know how to convert
 
							if ( !inst[ cache ] && space.to ) {
 

	
 
								// if the value was null, we don't need to copy it
 
								// if the key was alpha, we don't need to copy it either
 
								if ( red[ key ] == null || key === "alpha") {
 
									return;
 
								}
 
								inst[ cache ] = space.to( inst._rgba );
 
							}
 

	
 
							// this is the only case where we allow nulls for ALL properties.
 
							// call clamp with alwaysAllowEmpty
 
							inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
 
						});
 
					});
 
				}
 
				return this;
 
			}
 
		},
 
		is: function( compare ) {
 
			var is = color( compare ),
 
				same = true,
 
				myself = this;
 

	
 
			each( spaces, function( _, space ) {
 
				var isCache = is[ space.cache ],
 
					localCache;
 
				if (isCache) {
 
					localCache = myself[ space.cache ] || space.to && space.to( myself._rgba ) || [];
 
					each( space.props, function( _, prop ) {
 
						if ( isCache[ prop.idx ] != null ) {
 
							same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
 
							return same;
 
						}
 
					});
 
				}
 
				return same;
 
			});
 
			return same;
 
		},
 
		_space: function() {
 
			var used = [],
 
				inst = this;
 
			each( spaces, function( spaceName, space ) {
 
				if ( inst[ space.cache ] ) {
 
					used.push( spaceName );
 
				}
 
			});
 
			return used.pop();
 
		},
 
		transition: function( other, distance ) {
 
			var end = color( other ),
 
				spaceName = end._space(),
 
				space = spaces[ spaceName ],
 
				start = this[ space.cache ] || space.to( this._rgba ),
 
				result = start.slice();
 

	
 
			end = end[ space.cache ];
 
			each( space.props, function( key, prop ) {
 
				var index = prop.idx,
 
					startValue = start[ index ],
 
					endValue = end[ index ],
 
					type = propTypes[ prop.type ] || {};
 

	
 
				// if null, don't override start value
 
				if ( endValue === null ) {
 
					return;
 
				}
 
				// if null - use end
 
				if ( startValue === null ) {
 
					result[ index ] = endValue;
 
				} else {
 
					if ( type.mod ) {
 
						if ( endValue - startValue > type.mod / 2 ) {
 
							startValue += type.mod;
 
						} else if ( startValue - endValue > type.mod / 2 ) {
 
							startValue -= type.mod;
 
						}
 
					}
 
					result[ prop.idx ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
 
				}
 
			});
 
			return this[ spaceName ]( result );
 
		},
 
		blend: function( opaque ) {
 
			// if we are already opaque - return ourself
 
			if ( this._rgba[ 3 ] === 1 ) {
 
				return this;
 
			}
 

	
 
			var rgb = this._rgba.slice(),
 
				a = rgb.pop(),
 
				blend = color( opaque )._rgba;
 

	
 
			return color( jQuery.map( rgb, function( v, i ) {
 
				return ( 1 - a ) * blend[ i ] + a * v;
 
			}));
 
		},
 
		toRgbaString: function() {
 
			var prefix = "rgba(",
 
				rgba = jQuery.map( this._rgba, function( v, i ) {
 
					return v == null ? ( i > 2 ? 1 : 0 ) : v;
 
				});
 

	
 
			if ( rgba[ 3 ] === 1 ) {
 
				rgba.pop();
 
				prefix = "rgb(";
 
			}
 

	
 
			return prefix + rgba.join(",") + ")";
 
		},
 
		toHslaString: function() {
 
			var prefix = "hsla(",
 
				hsla = jQuery.map( this.hsla(), function( v, i ) {
 
					if ( v == null ) {
 
						v = i > 2 ? 1 : 0;
 
					}
 

	
 
					// catch 1 and 2
 
					if ( i && i < 3 ) {
 
						v = Math.round( v * 100 ) + "%";
 
					}
 
					return v;
 
				});
 

	
 
			if ( hsla[ 3 ] === 1 ) {
 
				hsla.pop();
 
				prefix = "hsl(";
 
			}
 
			return prefix + hsla.join(",") + ")";
 
		},
 
		toHexString: function( includeAlpha ) {
 
			var rgba = this._rgba.slice(),
 
				alpha = rgba.pop();
 

	
 
			if ( includeAlpha ) {
 
				rgba.push( ~~( alpha * 255 ) );
 
			}
 

	
 
			return "#" + jQuery.map( rgba, function( v, i ) {
 

	
 
				// default to 0 when nulls exist
 
				v = ( v || 0 ).toString( 16 );
 
				return v.length === 1 ? "0" + v : v;
 
			}).join("");
 
		},
 
		toString: function() {
 
			return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
 
		}
 
	};
 
	color.fn.parse.prototype = color.fn;
 

	
 
	// hsla conversions adapted from:
 
	// http://www.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/inspector/front-end/Color.js&d=7&l=193
 

	
 
	function hue2rgb( p, q, h ) {
 
		h = ( h + 1 ) % 1;
 
		if ( h * 6 < 1 ) {
 
			return p + (q - p) * 6 * h;
 
		}
 
		if ( h * 2 < 1) {
 
			return q;
 
		}
 
		if ( h * 3 < 2 ) {
 
			return p + (q - p) * ((2/3) - h) * 6;
 
		}
 
		return p;
 
	}
 

	
 
	spaces.hsla.to = function ( rgba ) {
 
		if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
 
			return [ null, null, null, rgba[ 3 ] ];
 
		}
 
		var r = rgba[ 0 ] / 255,
 
			g = rgba[ 1 ] / 255,
 
			b = rgba[ 2 ] / 255,
 
			a = rgba[ 3 ],
 
			max = Math.max( r, g, b ),
 
			min = Math.min( r, g, b ),
 
			diff = max - min,
 
			add = max + min,
 
			l = add * 0.5,
 
			h, s;
 

	
 
		if ( min === max ) {
 
			h = 0;
 
		} else if ( r === max ) {
 
			h = ( 60 * ( g - b ) / diff ) + 360;
 
		} else if ( g === max ) {
 
			h = ( 60 * ( b - r ) / diff ) + 120;
 
		} else {
 
			h = ( 60 * ( r - g ) / diff ) + 240;
 
		}
 

	
 
		if ( l === 0 || l === 1 ) {
 
			s = l;
 
		} else if ( l <= 0.5 ) {
 
			s = diff / add;
 
		} else {
 
			s = diff / ( 2 - add );
 
		}
 
		return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
 
	};
 

	
 
	spaces.hsla.from = function ( hsla ) {
 
		if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
 
			return [ null, null, null, hsla[ 3 ] ];
 
		}
 
		var h = hsla[ 0 ] / 360,
 
			s = hsla[ 1 ],
 
			l = hsla[ 2 ],
 
			a = hsla[ 3 ],
 
			q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
 
			p = 2 * l - q,
 
			r, g, b;
 

	
 
		return [
 
			Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
 
			Math.round( hue2rgb( p, q, h ) * 255 ),
 
			Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
 
			a
 
		];
 
	};
 

	
 

	
 
	each( spaces, function( spaceName, space ) {
 
		var props = space.props,
 
			cache = space.cache,
 
			to = space.to,
 
			from = space.from;
 

	
 
		// makes rgba() and hsla()
 
		color.fn[ spaceName ] = function( value ) {
 

	
 
			// generate a cache for this space if it doesn't exist
 
			if ( to && !this[ cache ] ) {
 
				this[ cache ] = to( this._rgba );
 
			}
 
			if ( value === undefined ) {
 
				return this[ cache ].slice();
 
			}
 

	
 
			var type = jQuery.type( value ),
 
				arr = ( type === "array" || type === "object" ) ? value : arguments,
 
				local = this[ cache ].slice(),
 
				ret;
 

	
 
			each( props, function( key, prop ) {
 
				var val = arr[ type === "object" ? key : prop.idx ];
 
				if ( val == null ) {
 
					val = local[ prop.idx ];
 
				}
 
				local[ prop.idx ] = clamp( val, prop );
 
			});
 

	
 
			if ( from ) {
 
				ret = color( from( local ) );
 
				ret[ cache ] = local;
 
				return ret;
 
			} else {
 
				return color( local );
 
			}
 
		};
 

	
 
		// makes red() green() blue() alpha() hue() saturation() lightness()
 
		each( props, function( key, prop ) {
 
			// alpha is included in more than one space
 
			if ( color.fn[ key ] ) {
 
				return;
 
			}
 
			color.fn[ key ] = function( value ) {
 
				var vtype = jQuery.type( value ),
 
					fn = ( key === 'alpha' ? ( this._hsla ? 'hsla' : 'rgba' ) : spaceName ),
 
					local = this[ fn ](),
 
					cur = local[ prop.idx ],
 
					match;
 

	
 
				if ( vtype === "undefined" ) {
 
					return cur;
 
				}
 

	
 
				if ( vtype === "function" ) {
 
					value = value.call( this, cur );
 
					vtype = jQuery.type( value );
 
				}
 
				if ( value == null && prop.empty ) {
 
					return this;
 
				}
 
				if ( vtype === "string" ) {
 
					match = rplusequals.exec( value );
 
					if ( match ) {
 
						value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
 
					}
 
				}
 
				local[ prop.idx ] = value;
 
				return this[ fn ]( local );
 
			};
 
		});
 
	});
 

	
 
	// add .fx.step functions
 
	each( stepHooks, function( i, hook ) {
 
		jQuery.cssHooks[ hook ] = {
 
			set: function( elem, value ) {
 
				var parsed, backgroundColor, curElem;
 

	
 
				if ( jQuery.type( value ) !== 'string' || ( parsed = stringParse( value ) ) )
 
				{
 
					value = color( parsed || value );
 
					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
 
						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
 
						do {
 
							backgroundColor = jQuery.curCSS( curElem, "backgroundColor" );
 
						} while (
 
							( backgroundColor === "" || backgroundColor === "transparent" ) &&
 
							( curElem = curElem.parentNode ) &&
 
							curElem.style
 
						);
 

	
 
						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
 
							backgroundColor :
 
							"_default" );
 
					}
 

	
 
					value = value.toRgbaString();
 
				}
 
				elem.style[ hook ] = value;
 
			}
 
		};
 
		jQuery.fx.step[ hook ] = function( fx ) {
 
			if ( !fx.colorInit ) {
 
				fx.start = color( fx.elem, hook );
 
				fx.end = color( fx.end );
 
				fx.colorInit = true;
 
			}
 
			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
 
		};
 
	});
 

	
 
	// detect rgba support
 
	jQuery(function() {
 
		var div = document.createElement( "div" ),
 
			div_style = div.style;
 

	
 
		div_style.cssText = "background-color:rgba(1,1,1,.5)";
 
		support.rgba = div_style.backgroundColor.indexOf( "rgba" ) > -1;
 
	});
 

	
 
	// Some named colors to work with
 
	// From Interface by Stefan Petre
 
	// http://interface.eyecon.ro/
 
	colors = jQuery.Color.names = {
 
		aqua: "#00ffff",
 
		azure: "#f0ffff",
 
		beige: "#f5f5dc",
 
		black: "#000000",
 
		blue: "#0000ff",
 
		brown: "#a52a2a",
 
		cyan: "#00ffff",
 
		darkblue: "#00008b",
 
		darkcyan: "#008b8b",
 
		darkgrey: "#a9a9a9",
 
		darkgreen: "#006400",
 
		darkkhaki: "#bdb76b",
 
		darkmagenta: "#8b008b",
 
		darkolivegreen: "#556b2f",
 
		darkorange: "#ff8c00",
 
		darkorchid: "#9932cc",
 
		darkred: "#8b0000",
 
		darksalmon: "#e9967a",
 
		darkviolet: "#9400d3",
 
		fuchsia: "#ff00ff",
 
		gold: "#ffd700",
 
		green: "#008000",
 
		indigo: "#4b0082",
 
		khaki: "#f0e68c",
 
		lightblue: "#add8e6",
 
		lightcyan: "#e0ffff",
 
		lightgreen: "#90ee90",
 
		lightgrey: "#d3d3d3",
 
		lightpink: "#ffb6c1",
 
		lightyellow: "#ffffe0",
 
		lime: "#00ff00",
 
		magenta: "#ff00ff",
 
		maroon: "#800000",
 
		navy: "#000080",
 
		olive: "#808000",
 
		orange: "#ffa500",
 
		pink: "#ffc0cb",
 
		purple: "#800080",
 
		violet: "#800080",
 
		red: "#ff0000",
 
		silver: "#c0c0c0",
 
		white: "#ffffff",
 
		yellow: "#ffff00",
 
		transparent: [ null, null, null, 0 ],
 
		_default: "#ffffff"
 
	};
 
})( jQuery );
static/tapmodo-Jcrop-1902fbc/js/jquery.min.js
Show inline comments
 
new file 100644
 
/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(cn[0].contentWindow||cn[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=A(e,t),cn.detach()),bn[e]=n),n}function A(e,t){var n=st(t.createElement(e)).appendTo(t.body),r=st.css(n[0],"display");return n.remove(),r}function j(e,t,n,r){var i;if(st.isArray(t))st.each(t,function(t,i){n||kn.test(e)?r(e,i):j(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==st.type(t))r(e,t);else for(i in t)j(e+"["+i+"]",t[i],n,r)}function D(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(lt)||[];if(st.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function L(e,n,r,i){function o(u){var l;return a[u]=!0,st.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||s||a[c]?s?!(l=c):t:(n.dataTypes.unshift(c),o(c),!1)}),l}var a={},s=e===$n;return o(n.dataTypes[0])||!a["*"]&&o("*")}function H(e,n){var r,i,o=st.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((o[r]?e:i||(i={}))[r]=n[r]);return i&&st.extend(!0,e,i),e}function M(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(o in c)o in r&&(n[c[o]]=r[o]);for(;"*"===l[0];)l.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("Content-Type"));if(i)for(o in u)if(u[o]&&u[o].test(i)){l.unshift(o);break}if(l[0]in r)a=l[0];else{for(o in r){if(!l[0]||e.converters[o+" "+l[0]]){a=o;break}s||(s=o)}a=a||s}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function q(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=u[++s];)if("*"!==i){if("*"!==l&&l!==i){if(n=a[l+" "+i]||a["* "+i],!n)for(r in a)if(o=r.split(" "),o[1]===i&&(n=a[l+" "+o[0]]||a["* "+o[0]])){n===!0?n=a[r]:a[r]!==!0&&(i=o[0],u.splice(s--,0,i));break}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(c){return{state:"parsererror",error:n?c:"No conversion from "+l+" to "+i}}}l=i}return{state:"success",data:t}}function _(){try{return new e.XMLHttpRequest}catch(t){}}function F(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function O(){return setTimeout(function(){Qn=t}),Qn=st.now()}function B(e,t){st.each(t,function(t,n){for(var r=(rr[t]||[]).concat(rr["*"]),i=0,o=r.length;o>i;i++)if(r[i].call(e,t,n))return})}function P(e,t,n){var r,i,o=0,a=nr.length,s=st.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Qn||O(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:st.extend({},t),opts:st.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Qn||O(),duration:n.duration,tweens:[],createTween:function(t,n){var r=st.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(R(c,l.opts.specialEasing);a>o;o++)if(r=nr[o].call(l,e,c,l.opts))return r;return B(l,c),st.isFunction(l.opts.start)&&l.opts.start.call(e,l),st.fx.timer(st.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function R(e,t){var n,r,i,o,a;for(n in e)if(r=st.camelCase(n),i=t[r],o=e[n],st.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=st.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function W(e,t,n){var r,i,o,a,s,u,l,c,f,p=this,d=e.style,h={},g=[],m=e.nodeType&&w(e);n.queue||(c=st._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,st.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===st.css(e,"display")&&"none"===st.css(e,"float")&&(st.support.inlineBlockNeedsLayout&&"inline"!==S(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",st.support.shrinkWrapBlocks||p.done(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in t)if(o=t[r],Zn.exec(o)){if(delete t[r],u=u||"toggle"===o,o===(m?"hide":"show"))continue;g.push(r)}if(a=g.length){s=st._data(e,"fxshow")||st._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?st(e).show():p.done(function(){st(e).hide()}),p.done(function(){var t;st._removeData(e,"fxshow");for(t in h)st.style(e,t,h[t])});for(r=0;a>r;r++)i=g[r],l=p.createTween(i,m?s[i]:0),h[i]=s[i]||st.style(e,i),i in s||(s[i]=l.start,m&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function $(e,t,n,r,i){return new $.prototype.init(e,t,n,r,i)}function I(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=wn[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function z(e){return st.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var X,U,V=e.document,Y=e.location,J=e.jQuery,G=e.$,Q={},K=[],Z="1.9.0",et=K.concat,tt=K.push,nt=K.slice,rt=K.indexOf,it=Q.toString,ot=Q.hasOwnProperty,at=Z.trim,st=function(e,t){return new st.fn.init(e,t,X)},ut=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,lt=/\S+/g,ct=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ft=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,pt=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,dt=/^[\],:{}\s]*$/,ht=/(?:^|:|,)(?:\s*\[)+/g,gt=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,mt=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,yt=/^-ms-/,vt=/-([\da-z])/gi,bt=function(e,t){return t.toUpperCase()},xt=function(){V.addEventListener?(V.removeEventListener("DOMContentLoaded",xt,!1),st.ready()):"complete"===V.readyState&&(V.detachEvent("onreadystatechange",xt),st.ready())};st.fn=st.prototype={jquery:Z,constructor:st,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ft.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof st?n[0]:n,st.merge(this,st.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:V,!0)),pt.test(i[1])&&st.isPlainObject(n))for(i in n)st.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=V.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=V,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):st.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),st.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return nt.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=st.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return st.each(this,e,t)},ready:function(e){return st.ready.promise().done(e),this},slice:function(){return this.pushStack(nt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(st.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:tt,sort:[].sort,splice:[].splice},st.fn.init.prototype=st.fn,st.extend=st.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||st.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(e=arguments[u]))for(n in e)r=s[n],i=e[n],s!==i&&(c&&i&&(st.isPlainObject(i)||(o=st.isArray(i)))?(o?(o=!1,a=r&&st.isArray(r)?r:[]):a=r&&st.isPlainObject(r)?r:{},s[n]=st.extend(c,a,i)):i!==t&&(s[n]=i));return s},st.extend({noConflict:function(t){return e.$===st&&(e.$=G),t&&e.jQuery===st&&(e.jQuery=J),st},isReady:!1,readyWait:1,holdReady:function(e){e?st.readyWait++:st.ready(!0)},ready:function(e){if(e===!0?!--st.readyWait:!st.isReady){if(!V.body)return setTimeout(st.ready);st.isReady=!0,e!==!0&&--st.readyWait>0||(U.resolveWith(V,[st]),st.fn.trigger&&st(V).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===st.type(e)},isArray:Array.isArray||function(e){return"array"===st.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[it.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==st.type(e)||e.nodeType||st.isWindow(e))return!1;try{if(e.constructor&&!ot.call(e,"constructor")&&!ot.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||ot.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||V;var r=pt.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=st.buildFragment([e],t,i),i&&st(i).remove(),st.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=st.trim(n),n&&dt.test(n.replace(gt,"@").replace(mt,"]").replace(ht,"")))?Function("return "+n)():(st.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||st.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&st.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(yt,"ms-").replace(vt,bt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,o=0,a=e.length,s=n(e);if(r){if(s)for(;a>o&&(i=t.apply(e[o],r),i!==!1);o++);else for(o in e)if(i=t.apply(e[o],r),i===!1)break}else if(s)for(;a>o&&(i=t.call(e[o],o,e[o]),i!==!1);o++);else for(o in e)if(i=t.call(e[o],o,e[o]),i===!1)break;return e},trim:at&&!at.call("\ufeff\u00a0")?function(e){return null==e?"":at.call(e)}:function(e){return null==e?"":(e+"").replace(ct,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?st.merge(r,"string"==typeof e?[e]:e):tt.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(rt)return rt.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else for(;n[o]!==t;)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,r){var i,o=0,a=e.length,s=n(e),u=[];if(s)for(;a>o;o++)i=t(e[o],o,r),null!=i&&(u[u.length]=i);else for(o in e)i=t(e[o],o,r),null!=i&&(u[u.length]=i);return et.apply([],u)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(r=e[n],n=e,e=r),st.isFunction(e)?(i=nt.call(arguments,2),o=function(){return e.apply(n||this,i.concat(nt.call(arguments)))},o.guid=e.guid=e.guid||st.guid++,o):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===st.type(r)){o=!0;for(u in r)st.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,st.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(st(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),st.ready.promise=function(t){if(!U)if(U=st.Deferred(),"complete"===V.readyState)setTimeout(st.ready);else if(V.addEventListener)V.addEventListener("DOMContentLoaded",xt,!1),e.addEventListener("load",st.ready,!1);else{V.attachEvent("onreadystatechange",xt),e.attachEvent("onload",st.ready);var n=!1;try{n=null==e.frameElement&&V.documentElement}catch(r){}n&&n.doScroll&&function i(){if(!st.isReady){try{n.doScroll("left")}catch(e){return setTimeout(i,50)}st.ready()}}()}return U.promise(t)},st.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()}),X=st(V);var Tt={};st.Callbacks=function(e){e="string"==typeof e?Tt[e]||r(e):st.extend({},e);var n,i,o,a,s,u,l=[],c=!e.once&&[],f=function(t){for(n=e.memory&&t,i=!0,u=a||0,a=0,s=l.length,o=!0;l&&s>u;u++)if(l[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}o=!1,l&&(c?c.length&&f(c.shift()):n?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function r(t){st.each(t,function(t,n){var i=st.type(n);"function"===i?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==i&&r(n)})})(arguments),o?s=l.length:n&&(a=t,f(n))}return this},remove:function(){return l&&st.each(arguments,function(e,t){for(var n;(n=st.inArray(t,l,n))>-1;)l.splice(n,1),o&&(s>=n&&s--,u>=n&&u--)}),this},has:function(e){return st.inArray(e,l)>-1},empty:function(){return l=[],this},disable:function(){return l=c=n=t,this},disabled:function(){return!l},lock:function(){return c=t,n||p.disable(),this},locked:function(){return!c},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!c||(o?c.push(t):f(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},st.extend({Deferred:function(e){var t=[["resolve","done",st.Callbacks("once memory"),"resolved"],["reject","fail",st.Callbacks("once memory"),"rejected"],["notify","progress",st.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return st.Deferred(function(n){st.each(t,function(t,o){var a=o[0],s=st.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&st.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?st.extend(e,r):r}},i={};return r.pipe=r.then,st.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=nt.call(arguments),a=o.length,s=1!==a||e&&st.isFunction(e.promise)?a:0,u=1===s?e:st.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?nt.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=Array(a),n=Array(a),r=Array(a);a>i;i++)o[i]&&st.isFunction(o[i].promise)?o[i].promise().done(l(i,r,o)).fail(u.reject).progress(l(i,n,t)):--s;return s||u.resolveWith(r,o),u.promise()}}),st.support=function(){var n,r,i,o,a,s,u,l,c,f,p=V.createElement("div");if(p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",r=p.getElementsByTagName("*"),i=p.getElementsByTagName("a")[0],!r||!i||!r.length)return{};o=V.createElement("select"),a=o.appendChild(V.createElement("option")),s=p.getElementsByTagName("input")[0],i.style.cssText="top:1px;float:left;opacity:.5",n={getSetAttribute:"t"!==p.className,leadingWhitespace:3===p.firstChild.nodeType,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(i.getAttribute("style")),hrefNormalized:"/a"===i.getAttribute("href"),opacity:/^0.5/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:!!s.value,optSelected:a.selected,enctype:!!V.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==V.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===V.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},s.checked=!0,n.noCloneChecked=s.cloneNode(!0).checked,o.disabled=!0,n.optDisabled=!a.disabled;try{delete p.test}catch(d){n.deleteExpando=!1}s=V.createElement("input"),s.setAttribute("value",""),n.input=""===s.getAttribute("value"),s.value="t",s.setAttribute("type","radio"),n.radioValue="t"===s.value,s.setAttribute("checked","t"),s.setAttribute("name","t"),u=V.createDocumentFragment(),u.appendChild(s),n.appendChecked=s.checked,n.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,p.attachEvent&&(p.attachEvent("onclick",function(){n.noCloneEvent=!1}),p.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})p.setAttribute(l="on"+f,"t"),n[f+"Bubbles"]=l in e||p.attributes[l].expando===!1;return p.style.backgroundClip="content-box",p.cloneNode(!0).style.backgroundClip="",n.clearCloneStyle="content-box"===p.style.backgroundClip,st(function(){var r,i,o,a="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",s=V.getElementsByTagName("body")[0];s&&(r=V.createElement("div"),r.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",s.appendChild(r).appendChild(p),p.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=p.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",c=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",n.reliableHiddenOffsets=c&&0===o[0].offsetHeight,p.innerHTML="",p.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",n.boxSizing=4===p.offsetWidth,n.doesNotIncludeMarginInBodyOffset=1!==s.offsetTop,e.getComputedStyle&&(n.pixelPosition="1%"!==(e.getComputedStyle(p,null)||{}).top,n.boxSizingReliable="4px"===(e.getComputedStyle(p,null)||{width:"4px"}).width,i=p.appendChild(V.createElement("div")),i.style.cssText=p.style.cssText=a,i.style.marginRight=i.style.width="0",p.style.width="1px",n.reliableMarginRight=!parseFloat((e.getComputedStyle(i,null)||{}).marginRight)),p.style.zoom!==t&&(p.innerHTML="",p.style.cssText=a+"width:1px;padding:1px;display:inline;zoom:1",n.inlineBlockNeedsLayout=3===p.offsetWidth,p.style.display="block",p.innerHTML="<div></div>",p.firstChild.style.width="5px",n.shrinkWrapBlocks=3!==p.offsetWidth,s.style.zoom=1),s.removeChild(r),r=p=o=i=null)}),r=o=u=a=i=s=null,n}();var wt=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,Nt=/([A-Z])/g;st.extend({cache:{},expando:"jQuery"+(Z+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?st.cache[e[st.expando]]:e[st.expando],!!e&&!s(e)},data:function(e,t,n){return i(e,t,n,!1)},removeData:function(e,t){return o(e,t,!1)},_data:function(e,t,n){return i(e,t,n,!0)},_removeData:function(e,t){return o(e,t,!0)},acceptData:function(e){var t=e.nodeName&&st.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),st.fn.extend({data:function(e,n){var r,i,o=this[0],s=0,u=null;if(e===t){if(this.length&&(u=st.data(o),1===o.nodeType&&!st._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>s;s++)i=r[s].name,i.indexOf("data-")||(i=st.camelCase(i.substring(5)),a(o,i,u[i]));st._data(o,"parsedAttrs",!0)}return u}return"object"==typeof e?this.each(function(){st.data(this,e)}):st.access(this,function(n){return n===t?o?a(o,e,st.data(o,e)):null:(this.each(function(){st.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){st.removeData(this,e)})}}),st.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=st._data(e,n),r&&(!i||st.isArray(r)?i=st._data(e,n,st.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=st.queue(e,t),r=n.length,i=n.shift(),o=st._queueHooks(e,t),a=function(){st.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return st._data(e,n)||st._data(e,n,{empty:st.Callbacks("once memory").add(function(){st._removeData(e,t+"queue"),st._removeData(e,n)})})}}),st.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?st.queue(this[0],e):n===t?this:this.each(function(){var t=st.queue(this,e,n);st._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&st.dequeue(this,e)})},dequeue:function(e){return this.each(function(){st.dequeue(this,e)})},delay:function(e,t){return e=st.fx?st.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=st.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=st._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var Ct,kt,Et=/[\t\r\n]/g,St=/\r/g,At=/^(?:input|select|textarea|button|object)$/i,jt=/^(?:a|area)$/i,Dt=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Lt=/^(?:checked|selected)$/i,Ht=st.support.getSetAttribute,Mt=st.support.input;st.fn.extend({attr:function(e,t){return st.access(this,st.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){st.removeAttr(this,e)})},prop:function(e,t){return st.access(this,st.prop,e,t,arguments.length>1)},removeProp:function(e){return e=st.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=st.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?st.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return st.isFunction(e)?this.each(function(n){st(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n)for(var i,o=0,a=st(this),s=t,u=e.match(lt)||[];i=u[o++];)s=r?s:!a.hasClass(i),a[s?"addClass":"removeClass"](i);else("undefined"===n||"boolean"===n)&&(this.className&&st._data(this,"__className__",this.className),this.className=this.className||e===!1?"":st._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(Et," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=st.isFunction(e),this.each(function(r){var o,a=st(this);1===this.nodeType&&(o=i?e.call(this,r,a.val()):e,null==o?o="":"number"==typeof o?o+="":st.isArray(o)&&(o=st.map(o,function(e){return null==e?"":e+""})),n=st.valHooks[this.type]||st.valHooks[this.nodeName.toLowerCase()],n&&"set"in n&&n.set(this,o,"value")!==t||(this.value=o))});if(o)return n=st.valHooks[o.type]||st.valHooks[o.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(o,"value"))!==t?r:(r=o.value,"string"==typeof r?r.replace(St,""):null==r?"":r)}}}),st.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(st.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&st.nodeName(n.parentNode,"optgroup"))){if(t=st(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=st.makeArray(t);return st(e).find("option").each(function(){this.selected=st.inArray(st(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return e.getAttribute===t?st.prop(e,n,r):(a=1!==s||!st.isXMLDoc(e),a&&(n=n.toLowerCase(),o=st.attrHooks[n]||(Dt.test(n)?kt:Ct)),r===t?o&&a&&"get"in o&&null!==(i=o.get(e,n))?i:(e.getAttribute!==t&&(i=e.getAttribute(n)),null==i?t:i):null!==r?o&&a&&"set"in o&&(i=o.set(e,r,n))!==t?i:(e.setAttribute(n,r+""),r):(st.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(lt);if(o&&1===e.nodeType)for(;n=o[i++];)r=st.propFix[n]||n,Dt.test(n)?!Ht&&Lt.test(n)?e[st.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:st.attr(e,n,""),e.removeAttribute(Ht?n:r)},attrHooks:{type:{set:function(e,t){if(!st.support.radioValue&&"radio"===t&&st.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!st.isXMLDoc(e),a&&(n=st.propFix[n]||n,o=st.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):At.test(e.nodeName)||jt.test(e.nodeName)&&e.href?0:t}}}}),kt={get:function(e,n){var r=st.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?Mt&&Ht?null!=i:Lt.test(n)?e[st.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?st.removeAttr(e,n):Mt&&Ht||!Lt.test(n)?e.setAttribute(!Ht&&st.propFix[n]||n,n):e[st.camelCase("default-"+n)]=e[n]=!0,n}},Mt&&Ht||(st.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return st.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t
 
},set:function(e,n,r){return st.nodeName(e,"input")?(e.defaultValue=n,t):Ct&&Ct.set(e,n,r)}}),Ht||(Ct=st.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},st.attrHooks.contenteditable={get:Ct.get,set:function(e,t,n){Ct.set(e,""===t?!1:t,n)}},st.each(["width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),st.support.hrefNormalized||(st.each(["href","src","width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),st.each(["href","src"],function(e,t){st.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),st.support.style||(st.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),st.support.optSelected||(st.propHooks.selected=st.extend(st.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),st.support.enctype||(st.propFix.enctype="encoding"),st.support.checkOn||st.each(["radio","checkbox"],function(){st.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),st.each(["radio","checkbox"],function(){st.valHooks[this]=st.extend(st.valHooks[this],{set:function(e,n){return st.isArray(n)?e.checked=st.inArray(st(e).val(),n)>=0:t}})});var qt=/^(?:input|select|textarea)$/i,_t=/^key/,Ft=/^(?:mouse|contextmenu)|click/,Ot=/^(?:focusinfocus|focusoutblur)$/,Bt=/^([^.]*)(?:\.(.+)|)$/;st.event={global:{},add:function(e,n,r,i,o){var a,s,u,l,c,f,p,d,h,g,m,y=3!==e.nodeType&&8!==e.nodeType&&st._data(e);if(y){for(r.handler&&(a=r,r=a.handler,o=a.selector),r.guid||(r.guid=st.guid++),(l=y.events)||(l=y.events={}),(s=y.handle)||(s=y.handle=function(e){return st===t||e&&st.event.triggered===e.type?t:st.event.dispatch.apply(s.elem,arguments)},s.elem=e),n=(n||"").match(lt)||[""],c=n.length;c--;)u=Bt.exec(n[c])||[],h=m=u[1],g=(u[2]||"").split(".").sort(),p=st.event.special[h]||{},h=(o?p.delegateType:p.bindType)||h,p=st.event.special[h]||{},f=st.extend({type:h,origType:m,data:i,handler:r,guid:r.guid,selector:o,needsContext:o&&st.expr.match.needsContext.test(o),namespace:g.join(".")},a),(d=l[h])||(d=l[h]=[],d.delegateCount=0,p.setup&&p.setup.call(e,i,g,s)!==!1||(e.addEventListener?e.addEventListener(h,s,!1):e.attachEvent&&e.attachEvent("on"+h,s))),p.add&&(p.add.call(e,f),f.handler.guid||(f.handler.guid=r.guid)),o?d.splice(d.delegateCount++,0,f):d.push(f),st.event.global[h]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,m=st.hasData(e)&&st._data(e);if(m&&(u=m.events)){for(t=(t||"").match(lt)||[""],l=t.length;l--;)if(s=Bt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(f=st.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||st.removeEvent(e,d,m.handle),delete u[d])}else for(d in u)st.event.remove(e,d+t[l],n,r,!0);st.isEmptyObject(u)&&(delete m.handle,st._removeData(e,"events"))}},trigger:function(n,r,i,o){var a,s,u,l,c,f,p,d=[i||V],h=n.type||n,g=n.namespace?n.namespace.split("."):[];if(s=u=i=i||V,3!==i.nodeType&&8!==i.nodeType&&!Ot.test(h+st.event.triggered)&&(h.indexOf(".")>=0&&(g=h.split("."),h=g.shift(),g.sort()),c=0>h.indexOf(":")&&"on"+h,n=n[st.expando]?n:new st.Event(h,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=g.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:st.makeArray(r,[n]),p=st.event.special[h]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!st.isWindow(i)){for(l=p.delegateType||h,Ot.test(l+h)||(s=s.parentNode);s;s=s.parentNode)d.push(s),u=s;u===(i.ownerDocument||V)&&d.push(u.defaultView||u.parentWindow||e)}for(a=0;(s=d[a++])&&!n.isPropagationStopped();)n.type=a>1?l:p.bindType||h,f=(st._data(s,"events")||{})[n.type]&&st._data(s,"handle"),f&&f.apply(s,r),f=c&&s[c],f&&st.acceptData(s)&&f.apply&&f.apply(s,r)===!1&&n.preventDefault();if(n.type=h,!(o||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===h&&st.nodeName(i,"a")||!st.acceptData(i)||!c||!i[h]||st.isWindow(i))){u=i[c],u&&(i[c]=null),st.event.triggered=h;try{i[h]()}catch(m){}st.event.triggered=t,u&&(i[c]=u)}return n.result}},dispatch:function(e){e=st.event.fix(e);var n,r,i,o,a,s=[],u=nt.call(arguments),l=(st._data(this,"events")||{})[e.type]||[],c=st.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=st.event.handlers.call(this,e,l),n=0;(o=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,r=0;(a=o.handlers[r++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(a.namespace))&&(e.handleObj=a,e.data=a.data,i=((st.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u),i!==t&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==e.type){for(i=[],r=0;u>r;r++)a=n[r],o=a.selector+" ",i[o]===t&&(i[o]=a.needsContext?st(o,this).index(l)>=0:st.find(o,this,null,[l]).length),i[o]&&i.push(a);i.length&&s.push({elem:l,handlers:i})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[st.expando])return e;var t,n,r=e,i=st.event.fixHooks[e.type]||{},o=i.props?this.props.concat(i.props):this.props;for(e=new st.Event(r),t=o.length;t--;)n=o[t],e[n]=r[n];return e.target||(e.target=r.srcElement||V),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,i.filter?i.filter(e,r):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,a=n.button,s=n.fromElement;return null==e.pageX&&null!=n.clientX&&(r=e.target.ownerDocument||V,i=r.documentElement,o=r.body,e.pageX=n.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?n.toElement:s),e.which||a===t||(e.which=1&a?1:2&a?3:4&a?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return st.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==V.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===V.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=st.extend(new st.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?st.event.trigger(i,null,t):st.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},st.removeEvent=V.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,n,r){var i="on"+n;e.detachEvent&&(e[i]===t&&(e[i]=null),e.detachEvent(i,r))},st.Event=function(e,n){return this instanceof st.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?u:l):this.type=e,n&&st.extend(this,n),this.timeStamp=e&&e.timeStamp||st.now(),this[st.expando]=!0,t):new st.Event(e,n)},st.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=u,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=u,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u,this.stopPropagation()}},st.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){st.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!st.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),st.support.submitBubbles||(st.event.special.submit={setup:function(){return st.nodeName(this,"form")?!1:(st.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=st.nodeName(n,"input")||st.nodeName(n,"button")?n.form:t;r&&!st._data(r,"submitBubbles")&&(st.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),st._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&st.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return st.nodeName(this,"form")?!1:(st.event.remove(this,"._submit"),t)}}),st.support.changeBubbles||(st.event.special.change={setup:function(){return qt.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(st.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),st.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),st.event.simulate("change",this,e,!0)})),!1):(st.event.add(this,"beforeactivate._change",function(e){var t=e.target;qt.test(t.nodeName)&&!st._data(t,"changeBubbles")&&(st.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||st.event.simulate("change",this.parentNode,e,!0)}),st._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return st.event.remove(this,"._change"),!qt.test(this.nodeName)}}),st.support.focusinBubbles||st.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){st.event.simulate(t,e.target,st.event.fix(e),!0)};st.event.special[t]={setup:function(){0===n++&&V.addEventListener(e,r,!0)},teardown:function(){0===--n&&V.removeEventListener(e,r,!0)}}}),st.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(s in e)this.on(s,n,r,e[s],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=l;else if(!i)return this;return 1===o&&(a=i,i=function(e){return st().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=st.guid++)),this.each(function(){st.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,st(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=l),this.each(function(){st.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){st.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?st.event.trigger(e,n,r,!0):t},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),st.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){st.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)},_t.test(t)&&(st.event.fixHooks[t]=st.event.keyHooks),Ft.test(t)&&(st.event.fixHooks[t]=st.event.mouseHooks)}),function(e,t){function n(e){return ht.test(e+"")}function r(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>C.cacheLength&&delete e[t.shift()],e[n]=r}}function i(e){return e[P]=!0,e}function o(e){var t=L.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function a(e,t,n,r){var i,o,a,s,u,l,c,d,h,g;if((t?t.ownerDocument||t:R)!==L&&D(t),t=t||L,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!M&&!r){if(i=gt.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&O(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Q.apply(n,K.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&W.getByClassName&&t.getElementsByClassName)return Q.apply(n,K.call(t.getElementsByClassName(a),0)),n}if(W.qsa&&!q.test(e)){if(c=!0,d=P,h=t,g=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=f(e),(c=t.getAttribute("id"))?d=c.replace(vt,"\\$&"):t.setAttribute("id",d),d="[id='"+d+"'] ",u=l.length;u--;)l[u]=d+p(l[u]);h=dt.test(e)&&t.parentNode||t,g=l.join(",")}if(g)try{return Q.apply(n,K.call(h.querySelectorAll(g),0)),n}catch(m){}finally{c||t.removeAttribute("id")}}}return x(e.replace(at,"$1"),t,n,r)}function s(e,t){for(var n=e&&t&&e.nextSibling;n;n=n.nextSibling)if(n===t)return-1;return e?1:-1}function u(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e,t){var n,r,i,o,s,u,l,c=X[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=C.preFilter;s;){(!n||(r=ut.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(i=[])),n=!1,(r=lt.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(at," ")}),s=s.slice(n.length));for(o in C.filter)!(r=pt[o].exec(s))||l[o]&&!(r=l[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?a.error(e):X(e,u).slice(0)}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,i=n&&"parentNode"===t.dir,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=$+" "+o;if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(l=t[P]||(t[P]={}),(u=l[r])&&u[0]===c){if((s=u[1])===!0||s===N)return s===!0}else if(u=l[r]=[c],u[1]=e(t,n,a)||N,u[1]===!0)return!0}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function m(e,t,n,r,o,a){return r&&!r[P]&&(r=m(r)),o&&!o[P]&&(o=m(o,a)),i(function(i,a,s,u){var l,c,f,p=[],d=[],h=a.length,m=i||b(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?m:g(m,p,e,s,u),v=n?o||(i?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r)for(l=g(v,d),r(l,[],s,u),c=l.length;c--;)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f));if(i){if(o||e){if(o){for(l=[],c=v.length;c--;)(f=v[c])&&l.push(y[c]=f);o(null,v=[],l,u)}for(c=v.length;c--;)(f=v[c])&&(l=o?Z.call(i,f):p[c])>-1&&(i[l]=!(a[l]=f))}}else v=g(v===a?v.splice(h,v.length):v),o?o(null,a,v,u):Q.apply(a,v)})}function y(e){for(var t,n,r,i=e.length,o=C.relative[e[0].type],a=o||C.relative[" "],s=o?1:0,u=d(function(e){return e===t},a,!0),l=d(function(e){return Z.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==j)||((t=n).nodeType?u(e,n,r):l(e,n,r))}];i>s;s++)if(n=C.relative[e[s].type])c=[d(h(c),n)];else{if(n=C.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;i>r&&!C.relative[e[r].type];r++);return m(s>1&&h(c),s>1&&p(e.slice(0,s-1)).replace(at,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&p(e))}c.push(n)}return h(c)}function v(e,t){var n=0,r=t.length>0,o=e.length>0,s=function(i,s,u,l,c){var f,p,d,h=[],m=0,y="0",v=i&&[],b=null!=c,x=j,T=i||o&&C.find.TAG("*",c&&s.parentNode||s),w=$+=null==x?1:Math.E;for(b&&(j=s!==L&&s,N=n);null!=(f=T[y]);y++){if(o&&f){for(p=0;d=e[p];p++)if(d(f,s,u)){l.push(f);break}b&&($=w,N=++n)}r&&((f=!d&&f)&&m--,i&&v.push(f))}if(m+=y,r&&y!==m){for(p=0;d=t[p];p++)d(v,h,s,u);if(i){if(m>0)for(;y--;)v[y]||h[y]||(h[y]=G.call(l));h=g(h)}Q.apply(l,h),b&&!i&&h.length>0&&m+t.length>1&&a.uniqueSort(l)}return b&&($=w,j=x),v};return r?i(s):s}function b(e,t,n){for(var r=0,i=t.length;i>r;r++)a(e,t[r],n);return n}function x(e,t,n,r){var i,o,a,s,u,l=f(e);if(!r&&1===l.length){if(o=l[0]=l[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===t.nodeType&&!M&&C.relative[o[1].type]){if(t=C.find.ID(a.matches[0].replace(xt,Tt),t)[0],!t)return n;e=e.slice(o.shift().value.length)}for(i=pt.needsContext.test(e)?-1:o.length-1;i>=0&&(a=o[i],!C.relative[s=a.type]);i--)if((u=C.find[s])&&(r=u(a.matches[0].replace(xt,Tt),dt.test(o[0].type)&&t.parentNode||t))){if(o.splice(i,1),e=r.length&&p(o),!e)return Q.apply(n,K.call(r,0)),n;break}}return S(e,l)(r,t,M,n,dt.test(e)),n}function T(){}var w,N,C,k,E,S,A,j,D,L,H,M,q,_,F,O,B,P="sizzle"+-new Date,R=e.document,W={},$=0,I=0,z=r(),X=r(),U=r(),V=typeof t,Y=1<<31,J=[],G=J.pop,Q=J.push,K=J.slice,Z=J.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},et="[\\x20\\t\\r\\n\\f]",tt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",nt=tt.replace("w","w#"),rt="([*^$|!~]?=)",it="\\["+et+"*("+tt+")"+et+"*(?:"+rt+et+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+nt+")|)|)"+et+"*\\]",ot=":("+tt+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+it.replace(3,8)+")*)|.*)\\)|)",at=RegExp("^"+et+"+|((?:^|[^\\\\])(?:\\\\.)*)"+et+"+$","g"),ut=RegExp("^"+et+"*,"+et+"*"),lt=RegExp("^"+et+"*([\\x20\\t\\r\\n\\f>+~])"+et+"*"),ct=RegExp(ot),ft=RegExp("^"+nt+"$"),pt={ID:RegExp("^#("+tt+")"),CLASS:RegExp("^\\.("+tt+")"),NAME:RegExp("^\\[name=['\"]?("+tt+")['\"]?\\]"),TAG:RegExp("^("+tt.replace("w","w*")+")"),ATTR:RegExp("^"+it),PSEUDO:RegExp("^"+ot),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+et+"*(even|odd|(([+-]|)(\\d*)n|)"+et+"*(?:([+-]|)"+et+"*(\\d+)|))"+et+"*\\)|)","i"),needsContext:RegExp("^"+et+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+et+"*((?:-\\d)?\\d*)"+et+"*\\)|)(?=[^-]|$)","i")},dt=/[\x20\t\r\n\f]*[+~]/,ht=/\{\s*\[native code\]\s*\}/,gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,mt=/^(?:input|select|textarea|button)$/i,yt=/^h\d$/i,vt=/'|\\/g,bt=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,xt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,Tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{K.call(H.childNodes,0)[0].nodeType}catch(wt){K=function(e){for(var t,n=[];t=this[e];e++)n.push(t);return n}}E=a.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},D=a.setDocument=function(e){var r=e?e.ownerDocument||e:R;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=r.documentElement,M=E(r),W.tagNameNoComments=o(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),W.attributes=o(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),W.getByClassName=o(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),W.getByName=o(function(e){e.id=P+0,e.innerHTML="<a name='"+P+"'></a><div name='"+P+"'></div>",H.insertBefore(e,H.firstChild);var t=r.getElementsByName&&r.getElementsByName(P).length===2+r.getElementsByName(P+0).length;return W.getIdNotName=!r.getElementById(P),H.removeChild(e),t}),C.attrHandle=o(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},W.getIdNotName?(C.find.ID=function(e,t){if(typeof t.getElementById!==V&&!M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){return e.getAttribute("id")===t}}):(C.find.ID=function(e,n){if(typeof n.getElementById!==V&&!M){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==V&&r.getAttributeNode("id").value===e?[r]:t:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode("id");return n&&n.value===t}}),C.find.TAG=W.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==V?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i];i++)1===n.nodeType&&r.push(n);return r}return o},C.find.NAME=W.getByName&&function(e,n){return typeof n.getElementsByName!==V?n.getElementsByName(name):t},C.find.CLASS=W.getByClassName&&function(e,n){return typeof n.getElementsByClassName===V||M?t:n.getElementsByClassName(e)},_=[],q=[":focus"],(W.qsa=n(r.querySelectorAll))&&(o(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||q.push("\\["+et+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||q.push(":checked")}),o(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&q.push("[*^$]="+et+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),q.push(",.*:")})),(W.matchesSelector=n(F=H.matchesSelector||H.mozMatchesSelector||H.webkitMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){W.disconnectedMatch=F.call(e,"div"),F.call(e,"[s!='']:x"),_.push("!=",ot)}),q=RegExp(q.join("|")),_=RegExp(_.join("|")),O=n(H.contains)||H.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},B=H.compareDocumentPosition?function(e,t){var n;return e===t?(A=!0,0):(n=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&n||e.parentNode&&11===e.parentNode.nodeType?e===r||O(R,e)?-1:t===r||O(R,t)?1:0:4&n?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var n,i=0,o=e.parentNode,a=t.parentNode,u=[e],l=[t];if(e===t)return A=!0,0;if(e.sourceIndex&&t.sourceIndex)return(~t.sourceIndex||Y)-(O(R,e)&&~e.sourceIndex||Y);if(!o||!a)return e===r?-1:t===r?1:o?-1:a?1:0;if(o===a)return s(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;u[i]===l[i];)i++;return i?s(u[i],l[i]):u[i]===R?-1:l[i]===R?1:0},A=!1,[0,0].sort(B),W.detectDuplicates=A,L):L},a.matches=function(e,t){return a(e,null,null,t)},a.matchesSelector=function(e,t){if((e.ownerDocument||e)!==L&&D(e),t=t.replace(bt,"='$1']"),!(!W.matchesSelector||M||_&&_.test(t)||q.test(t)))try{var n=F.call(e,t);if(n||W.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return a(t,L,null,[e]).length>0},a.contains=function(e,t){return(e.ownerDocument||e)!==L&&D(e),O(e,t)},a.attr=function(e,t){var n;return(e.ownerDocument||e)!==L&&D(e),M||(t=t.toLowerCase()),(n=C.attrHandle[t])?n(e):M||W.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},a.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},a.uniqueSort=function(e){var t,n=[],r=1,i=0;if(A=!W.detectDuplicates,e.sort(B),A){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},k=a.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=k(t);return n},C=a.selectors={cacheLength:50,createPseudo:i,match:pt,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xt,Tt),e[3]=(e[4]||e[5]||"").replace(xt,Tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||a.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&a.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return pt.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ct.test(n)&&(t=f(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(xt,Tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=z[e+" "];return t||(t=RegExp("(^|"+et+")"+e+"("+et+"|$)"))&&z(e,function(e){return t.test(e.className||typeof e.getAttribute!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=a.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.substr(i.length-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){for(;g;){for(f=t;f=f[g];)if(s?f.nodeName.toLowerCase()===y:1===f.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(c=m[P]||(m[P]={}),l=c[e]||[],d=l[0]===$&&l[1],p=l[0]===$&&l[2],f=d&&m.childNodes[d];f=++d&&f&&f[g]||(p=d=0)||h.pop();)if(1===f.nodeType&&++p&&f===t){c[e]=[$,d,p];break}}else if(v&&(l=(t[P]||(t[P]={}))[e])&&l[0]===$)p=l[1];else for(;(f=++d&&f&&f[g]||(p=d=0)||h.pop())&&((s?f.nodeName.toLowerCase()!==y:1!==f.nodeType)||!++p||(v&&((f[P]||(f[P]={}))[e]=[$,p]),f!==t)););return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,r=C.pseudos[e]||C.setFilters[e.toLowerCase()]||a.error("unsupported pseudo: "+e);return r[P]?r(t):r.length>1?(n=[e,e,"",t],C.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=Z.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],n=[],r=S(e.replace(at,"$1"));return r[P]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:i(function(e){return function(t){return a(e,t).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return ft.test(e||"")||a.error("unsupported lang: "+e),e=e.replace(xt,Tt).toLowerCase(),function(t){var n;do if(n=M?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return mt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[w]=u(w);for(w in{submit:!0,reset:!0})C.pseudos[w]=l(w);S=a.compile=function(e,t){var n,r=[],i=[],o=U[e+" "];if(!o){for(t||(t=f(e)),n=t.length;n--;)o=y(t[n]),o[P]?r.push(o):i.push(o);o=U(e,v(i,r))}return o},C.pseudos.nth=C.pseudos.eq,C.filters=T.prototype=C.pseudos,C.setFilters=new T,D(),a.attr=st.attr,st.find=a,st.expr=a.selectors,st.expr[":"]=st.expr.pseudos,st.unique=a.uniqueSort,st.text=a.getText,st.isXMLDoc=a.isXML,st.contains=a.contains}(e);var Pt=/Until$/,Rt=/^(?:parents|prev(?:Until|All))/,Wt=/^.[^:#\[\.,]*$/,$t=st.expr.match.needsContext,It={children:!0,contents:!0,next:!0,prev:!0};st.fn.extend({find:function(e){var t,n,r;if("string"!=typeof e)return r=this,this.pushStack(st(e).filter(function(){for(t=0;r.length>t;t++)if(st.contains(r[t],this))return!0}));for(n=[],t=0;this.length>t;t++)st.find(e,this[t],n);return n=this.pushStack(st.unique(n)),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=st(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(st.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(f(this,e,!1))},filter:function(e){return this.pushStack(f(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?$t.test(e)?st(e,this.context).index(this[0])>=0:st.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=$t.test(e)||"string"!=typeof e?st(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?a.index(n)>-1:st.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return this.pushStack(o.length>1?st.unique(o):o)},index:function(e){return e?"string"==typeof e?st.inArray(this[0],st(e)):st.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?st(e,t):st.makeArray(e&&e.nodeType?[e]:e),r=st.merge(this.get(),n);return this.pushStack(st.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),st.fn.andSelf=st.fn.addBack,st.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return st.dir(e,"parentNode")},parentsUntil:function(e,t,n){return st.dir(e,"parentNode",n)},next:function(e){return c(e,"nextSibling")},prev:function(e){return c(e,"previousSibling")
 
},nextAll:function(e){return st.dir(e,"nextSibling")},prevAll:function(e){return st.dir(e,"previousSibling")},nextUntil:function(e,t,n){return st.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return st.dir(e,"previousSibling",n)},siblings:function(e){return st.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return st.sibling(e.firstChild)},contents:function(e){return st.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:st.merge([],e.childNodes)}},function(e,t){st.fn[e]=function(n,r){var i=st.map(this,t,n);return Pt.test(e)||(r=n),r&&"string"==typeof r&&(i=st.filter(r,i)),i=this.length>1&&!It[e]?st.unique(i):i,this.length>1&&Rt.test(e)&&(i=i.reverse()),this.pushStack(i)}}),st.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?st.find.matchesSelector(t[0],e)?[t[0]]:[]:st.find.matches(e,t)},dir:function(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!st(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var zt="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Xt=/ jQuery\d+="(?:null|\d+)"/g,Ut=RegExp("<(?:"+zt+")[\\s/>]","i"),Vt=/^\s+/,Yt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Jt=/<([\w:]+)/,Gt=/<tbody/i,Qt=/<|&#?\w+;/,Kt=/<(?:script|style|link)/i,Zt=/^(?:checkbox|radio)$/i,en=/checked\s*(?:[^=]|=\s*.checked.)/i,tn=/^$|\/(?:java|ecma)script/i,nn=/^true\/(.*)/,rn=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,on={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:st.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},an=p(V),sn=an.appendChild(V.createElement("div"));on.optgroup=on.option,on.tbody=on.tfoot=on.colgroup=on.caption=on.thead,on.th=on.td,st.fn.extend({text:function(e){return st.access(this,function(e){return e===t?st.text(this):this.empty().append((this[0]&&this[0].ownerDocument||V).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(st.isFunction(e))return this.each(function(t){st(this).wrapAll(e.call(this,t))});if(this[0]){var t=st(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return st.isFunction(e)?this.each(function(t){st(this).wrapInner(e.call(this,t))}):this.each(function(){var t=st(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=st.isFunction(e);return this.each(function(n){st(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){st.nodeName(this,"body")||st(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||st.filter(e,[n]).length>0)&&(t||1!==n.nodeType||st.cleanData(b(n)),n.parentNode&&(t&&st.contains(n.ownerDocument,n)&&m(b(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&st.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&st.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return st.clone(this,e,t)})},html:function(e){return st.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(Xt,""):t;if(!("string"!=typeof e||Kt.test(e)||!st.support.htmlSerialize&&Ut.test(e)||!st.support.leadingWhitespace&&Vt.test(e)||on[(Jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Yt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(st.cleanData(b(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=st.isFunction(e);return t||"string"==typeof e||(e=st(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;(n&&1===this.nodeType||11===this.nodeType)&&(st(this).remove(),t?t.parentNode.insertBefore(e,t):n.appendChild(e))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=et.apply([],e);var i,o,a,s,u,l,c=0,f=this.length,p=this,m=f-1,y=e[0],v=st.isFunction(y);if(v||!(1>=f||"string"!=typeof y||st.support.checkClone)&&en.test(y))return this.each(function(i){var o=p.eq(i);v&&(e[0]=y.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(f&&(i=st.buildFragment(e,this[0].ownerDocument,!1,this),o=i.firstChild,1===i.childNodes.length&&(i=o),o)){for(n=n&&st.nodeName(o,"tr"),a=st.map(b(i,"script"),h),s=a.length;f>c;c++)u=i,c!==m&&(u=st.clone(u,!0,!0),s&&st.merge(a,b(u,"script"))),r.call(n&&st.nodeName(this[c],"table")?d(this[c],"tbody"):this[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,st.map(a,g),c=0;s>c;c++)u=a[c],tn.test(u.type||"")&&!st._data(u,"globalEval")&&st.contains(l,u)&&(u.src?st.ajax({url:u.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):st.globalEval((u.text||u.textContent||u.innerHTML||"").replace(rn,"")));i=o=null}return this}}),st.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){st.fn[e]=function(e){for(var n,r=0,i=[],o=st(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),st(o[r])[t](n),tt.apply(i,n.get());return this.pushStack(i)}}),st.extend({clone:function(e,t,n){var r,i,o,a,s,u=st.contains(e.ownerDocument,e);if(st.support.html5Clone||st.isXMLDoc(e)||!Ut.test("<"+e.nodeName+">")?s=e.cloneNode(!0):(sn.innerHTML=e.outerHTML,sn.removeChild(s=sn.firstChild)),!(st.support.noCloneEvent&&st.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||st.isXMLDoc(e)))for(r=b(s),i=b(e),a=0;null!=(o=i[a]);++a)r[a]&&v(o,r[a]);if(t)if(n)for(i=i||b(e),r=r||b(s),a=0;null!=(o=i[a]);a++)y(o,r[a]);else y(e,s);return r=b(s,"script"),r.length>0&&m(r,!u&&b(e,"script")),r=i=o=null,s},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,f=e.length,d=p(t),h=[],g=0;f>g;g++)if(o=e[g],o||0===o)if("object"===st.type(o))st.merge(h,o.nodeType?[o]:o);else if(Qt.test(o)){for(s=s||d.appendChild(t.createElement("div")),a=(Jt.exec(o)||["",""])[1].toLowerCase(),u=on[a]||on._default,s.innerHTML=u[1]+o.replace(Yt,"<$1></$2>")+u[2],c=u[0];c--;)s=s.lastChild;if(!st.support.leadingWhitespace&&Vt.test(o)&&h.push(t.createTextNode(Vt.exec(o)[0])),!st.support.tbody)for(o="table"!==a||Gt.test(o)?"<table>"!==u[1]||Gt.test(o)?0:s:s.firstChild,c=o&&o.childNodes.length;c--;)st.nodeName(l=o.childNodes[c],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(st.merge(h,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=d.lastChild}else h.push(t.createTextNode(o));for(s&&d.removeChild(s),st.support.appendChecked||st.grep(b(h,"input"),x),g=0;o=h[g++];)if((!r||-1===st.inArray(o,r))&&(i=st.contains(o.ownerDocument,o),s=b(d.appendChild(o),"script"),i&&m(s),n))for(c=0;o=s[c++];)tn.test(o.type||"")&&n.push(o);return s=null,d},cleanData:function(e,n){for(var r,i,o,a,s=0,u=st.expando,l=st.cache,c=st.support.deleteExpando,f=st.event.special;null!=(o=e[s]);s++)if((n||st.acceptData(o))&&(i=o[u],r=i&&l[i])){if(r.events)for(a in r.events)f[a]?st.event.remove(o,a):st.removeEvent(o,a,r.handle);l[i]&&(delete l[i],c?delete o[u]:o.removeAttribute!==t?o.removeAttribute(u):o[u]=null,K.push(i))}}});var un,ln,cn,fn=/alpha\([^)]*\)/i,pn=/opacity\s*=\s*([^)]*)/,dn=/^(top|right|bottom|left)$/,hn=/^(none|table(?!-c[ea]).+)/,gn=/^margin/,mn=RegExp("^("+ut+")(.*)$","i"),yn=RegExp("^("+ut+")(?!px)[a-z%]+$","i"),vn=RegExp("^([+-])=("+ut+")","i"),bn={BODY:"block"},xn={position:"absolute",visibility:"hidden",display:"block"},Tn={letterSpacing:0,fontWeight:400},wn=["Top","Right","Bottom","Left"],Nn=["Webkit","O","Moz","ms"];st.fn.extend({css:function(e,n){return st.access(this,function(e,n,r){var i,o,a={},s=0;if(st.isArray(n)){for(i=ln(e),o=n.length;o>s;s++)a[n[s]]=st.css(e,n[s],!1,i);return a}return r!==t?st.style(e,n,r):st.css(e,n)},e,n,arguments.length>1)},show:function(){return N(this,!0)},hide:function(){return N(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:w(this))?st(this).show():st(this).hide()})}}),st.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=un(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":st.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=st.camelCase(n),l=e.style;if(n=st.cssProps[u]||(st.cssProps[u]=T(l,u)),s=st.cssHooks[n]||st.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=vn.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(st.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||st.cssNumber[u]||(r+="px"),st.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=st.camelCase(n);return n=st.cssProps[u]||(st.cssProps[u]=T(e.style,u)),s=st.cssHooks[n]||st.cssHooks[u],s&&"get"in s&&(o=s.get(e,!0,r)),o===t&&(o=un(e,n,i)),"normal"===o&&n in Tn&&(o=Tn[n]),r?(a=parseFloat(o),r===!0||st.isNumeric(a)?a||0:o):o},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(ln=function(t){return e.getComputedStyle(t,null)},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||st.contains(e.ownerDocument,e)||(u=st.style(e,n)),yn.test(u)&&gn.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):V.documentElement.currentStyle&&(ln=function(e){return e.currentStyle},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),yn.test(u)&&!dn.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u}),st.each(["height","width"],function(e,n){st.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&hn.test(st.css(e,"display"))?st.swap(e,xn,function(){return E(e,n,i)}):E(e,n,i):t},set:function(e,t,r){var i=r&&ln(e);return C(e,t,r?k(e,n,r,st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,i),i):0)}}}),st.support.opacity||(st.cssHooks.opacity={get:function(e,t){return pn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=st.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===st.trim(o.replace(fn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=fn.test(o)?o.replace(fn,i):o+" "+i)}}),st(function(){st.support.reliableMarginRight||(st.cssHooks.marginRight={get:function(e,n){return n?st.swap(e,{display:"inline-block"},un,[e,"marginRight"]):t}}),!st.support.pixelPosition&&st.fn.position&&st.each(["top","left"],function(e,n){st.cssHooks[n]={get:function(e,r){return r?(r=un(e,n),yn.test(r)?st(e).position()[n]+"px":r):t}}})}),st.expr&&st.expr.filters&&(st.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!st.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||st.css(e,"display"))},st.expr.filters.visible=function(e){return!st.expr.filters.hidden(e)}),st.each({margin:"",padding:"",border:"Width"},function(e,t){st.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+wn[r]+t]=o[r]||o[r-2]||o[0];return i}},gn.test(e)||(st.cssHooks[e+t].set=C)});var Cn=/%20/g,kn=/\[\]$/,En=/\r?\n/g,Sn=/^(?:submit|button|image|reset)$/i,An=/^(?:input|select|textarea|keygen)/i;st.fn.extend({serialize:function(){return st.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=st.prop(this,"elements");return e?st.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!st(this).is(":disabled")&&An.test(this.nodeName)&&!Sn.test(e)&&(this.checked||!Zt.test(e))}).map(function(e,t){var n=st(this).val();return null==n?null:st.isArray(n)?st.map(n,function(e){return{name:t.name,value:e.replace(En,"\r\n")}}):{name:t.name,value:n.replace(En,"\r\n")}}).get()}}),st.param=function(e,n){var r,i=[],o=function(e,t){t=st.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=st.ajaxSettings&&st.ajaxSettings.traditional),st.isArray(e)||e.jquery&&!st.isPlainObject(e))st.each(e,function(){o(this.name,this.value)});else for(r in e)j(r,e[r],n,o);return i.join("&").replace(Cn,"+")};var jn,Dn,Ln=st.now(),Hn=/\?/,Mn=/#.*$/,qn=/([?&])_=[^&]*/,_n=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Fn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,On=/^(?:GET|HEAD)$/,Bn=/^\/\//,Pn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Rn=st.fn.load,Wn={},$n={},In="*/".concat("*");try{Dn=Y.href}catch(zn){Dn=V.createElement("a"),Dn.href="",Dn=Dn.href}jn=Pn.exec(Dn.toLowerCase())||[],st.fn.load=function(e,n,r){if("string"!=typeof e&&Rn)return Rn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),st.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(o="POST"),s.length>0&&st.ajax({url:e,type:o,dataType:"html",data:n}).done(function(e){a=arguments,s.html(i?st("<div>").append(st.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,a||[e.responseText,t,e])}),this},st.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){st.fn[t]=function(e){return this.on(t,e)}}),st.each(["get","post"],function(e,n){st[n]=function(e,r,i,o){return st.isFunction(r)&&(o=o||i,i=r,r=t),st.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),st.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Dn,type:"GET",isLocal:Fn.test(jn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":In,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":st.parseJSON,"text xml":st.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?H(H(e,st.ajaxSettings),t):H(st.ajaxSettings,e)},ajaxPrefilter:D(Wn),ajaxTransport:D($n),ajax:function(e,n){function r(e,n,r,s){var l,f,v,b,T,N=n;2!==x&&(x=2,u&&clearTimeout(u),i=t,a=s||"",w.readyState=e>0?4:0,r&&(b=M(p,w,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=w.getResponseHeader("Last-Modified"),T&&(st.lastModified[o]=T),T=w.getResponseHeader("etag"),T&&(st.etag[o]=T)),304===e?(l=!0,N="notmodified"):(l=q(p,b),N=l.state,f=l.data,v=l.error,l=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),w.status=e,w.statusText=(n||N)+"",l?g.resolveWith(d,[f,N,w]):g.rejectWith(d,[w,N,v]),w.statusCode(y),y=t,c&&h.trigger(l?"ajaxSuccess":"ajaxError",[w,p,l?f:v]),m.fireWith(d,[w,N]),c&&(h.trigger("ajaxComplete",[w,p]),--st.active||st.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=t),n=n||{};var i,o,a,s,u,l,c,f,p=st.ajaxSetup({},n),d=p.context||p,h=p.context&&(d.nodeType||d.jquery)?st(d):st.event,g=st.Deferred(),m=st.Callbacks("once memory"),y=p.statusCode||{},v={},b={},x=0,T="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!s)for(s={};t=_n.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,v[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)y[t]=[y[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||T;return i&&i.abort(t),r(0,t),this}};if(g.promise(w).complete=m.add,w.success=w.done,w.error=w.fail,p.url=((e||p.url||Dn)+"").replace(Mn,"").replace(Bn,jn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=st.trim(p.dataType||"*").toLowerCase().match(lt)||[""],null==p.crossDomain&&(l=Pn.exec(p.url.toLowerCase()),p.crossDomain=!(!l||l[1]===jn[1]&&l[2]===jn[2]&&(l[3]||("http:"===l[1]?80:443))==(jn[3]||("http:"===jn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=st.param(p.data,p.traditional)),L(Wn,p,n,w),2===x)return w;c=p.global,c&&0===st.active++&&st.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!On.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(Hn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=qn.test(o)?o.replace(qn,"$1_="+Ln++):o+(Hn.test(o)?"&":"?")+"_="+Ln++)),p.ifModified&&(st.lastModified[o]&&w.setRequestHeader("If-Modified-Since",st.lastModified[o]),st.etag[o]&&w.setRequestHeader("If-None-Match",st.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&w.setRequestHeader("Content-Type",p.contentType),w.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+In+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)w.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(d,w,p)===!1||2===x))return w.abort();T="abort";for(f in{success:1,error:1,complete:1})w[f](p[f]);if(i=L($n,p,n,w)){w.readyState=1,c&&h.trigger("ajaxSend",[w,p]),p.async&&p.timeout>0&&(u=setTimeout(function(){w.abort("timeout")},p.timeout));try{x=1,i.send(v,r)}catch(N){if(!(2>x))throw N;r(-1,N)}}else r(-1,"No Transport");return w},getScript:function(e,n){return st.get(e,t,n,"script")},getJSON:function(e,t,n){return st.get(e,t,n,"json")}}),st.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return st.globalEval(e),e}}}),st.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),st.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=V.head||st("head")[0]||V.documentElement;return{send:function(t,i){n=V.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Xn=[],Un=/(=)\?(?=&|$)|\?\?/;st.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xn.pop()||st.expando+"_"+Ln++;return this[e]=!0,e}}),st.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Un.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Un.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=st.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Un,"$1"+o):n.jsonp!==!1&&(n.url+=(Hn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||st.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Xn.push(o)),s&&st.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Vn,Yn,Jn=0,Gn=e.ActiveXObject&&function(){var e;for(e in Vn)Vn[e](t,!0)};st.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&_()||F()}:_,Yn=st.ajaxSettings.xhr(),st.support.cors=!!Yn&&"withCredentials"in Yn,Yn=st.support.ajax=!!Yn,Yn&&st.ajaxTransport(function(n){if(!n.crossDomain||st.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,f,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=st.noop,Gn&&delete Vn[a]),i)4!==u.readyState&&u.abort();else{f={},s=u.status,p=u.responseXML,c=u.getAllResponseHeaders(),p&&p.documentElement&&(f.xml=p),"string"==typeof u.responseText&&(f.text=u.responseText);try{l=u.statusText}catch(d){l=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=f.text?200:404}}catch(h){i||o(-1,h)}f&&o(s,l,f,c)},n.async?4===u.readyState?setTimeout(r):(a=++Jn,Gn&&(Vn||(Vn={},st(e).unload(Gn)),Vn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Qn,Kn,Zn=/^(?:toggle|show|hide)$/,er=RegExp("^(?:([+-])=|)("+ut+")([a-z%]*)$","i"),tr=/queueHooks$/,nr=[W],rr={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=er.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(st.cssNumber[e]?"":"px"),"px"!==r&&s){s=st.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,st.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};st.Animation=st.extend(P,{tweener:function(e,t){st.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],rr[n]=rr[n]||[],rr[n].unshift(t)},prefilter:function(e,t){t?nr.unshift(e):nr.push(e)}}),st.Tween=$,$.prototype={constructor:$,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(st.cssNumber[n]?"":"px")},cur:function(){var e=$.propHooks[this.prop];return e&&e.get?e.get(this):$.propHooks._default.get(this)},run:function(e){var t,n=$.propHooks[this.prop];return this.pos=t=this.options.duration?st.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):$.propHooks._default.set(this),this}},$.prototype.init.prototype=$.prototype,$.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=st.css(e.elem,e.prop,"auto"),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){st.fx.step[e.prop]?st.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[st.cssProps[e.prop]]||st.cssHooks[e.prop])?st.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},$.propHooks.scrollTop=$.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},st.each(["toggle","show","hide"],function(e,t){var n=st.fn[t];st.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(I(t,!0),e,r,i)}}),st.fn.extend({fadeTo:function(e,t,n,r){return this.filter(w).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=st.isEmptyObject(e),o=st.speed(t,n,r),a=function(){var t=P(this,st.extend({},e),o);a.finish=function(){t.stop(!0)},(i||st._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=st.timers,a=st._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&tr.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&st.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=st._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=st.timers,a=r?r.length:0;for(n.finish=!0,st.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),st.each({slideDown:I("show"),slideUp:I("hide"),slideToggle:I("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){st.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),st.speed=function(e,t,n){var r=e&&"object"==typeof e?st.extend({},e):{complete:n||!n&&t||st.isFunction(e)&&e,duration:e,easing:n&&t||t&&!st.isFunction(t)&&t};return r.duration=st.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in st.fx.speeds?st.fx.speeds[r.duration]:st.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){st.isFunction(r.old)&&r.old.call(this),r.queue&&st.dequeue(this,r.queue)},r},st.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},st.timers=[],st.fx=$.prototype.init,st.fx.tick=function(){var e,n=st.timers,r=0;for(Qn=st.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||st.fx.stop(),Qn=t},st.fx.timer=function(e){e()&&st.timers.push(e)&&st.fx.start()},st.fx.interval=13,st.fx.start=function(){Kn||(Kn=setInterval(st.fx.tick,st.fx.interval))},st.fx.stop=function(){clearInterval(Kn),Kn=null},st.fx.speeds={slow:600,fast:200,_default:400},st.fx.step={},st.expr&&st.expr.filters&&(st.expr.filters.animated=function(e){return st.grep(st.timers,function(t){return e===t.elem}).length}),st.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){st.offset.setOffset(this,e,t)});var n,r,i={top:0,left:0},o=this[0],a=o&&o.ownerDocument;if(a)return n=a.documentElement,st.contains(n,o)?(o.getBoundingClientRect!==t&&(i=o.getBoundingClientRect()),r=z(a),{top:i.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:i.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):i},st.offset={setOffset:function(e,t,n){var r=st.css(e,"position");"static"===r&&(e.style.position="relative");var i,o,a=st(e),s=a.offset(),u=st.css(e,"top"),l=st.css(e,"left"),c=("absolute"===r||"fixed"===r)&&st.inArray("auto",[u,l])>-1,f={},p={};c?(p=a.position(),i=p.top,o=p.left):(i=parseFloat(u)||0,o=parseFloat(l)||0),st.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(f.top=t.top-s.top+i),null!=t.left&&(f.left=t.left-s.left+o),"using"in t?t.using.call(e,f):a.css(f)}},st.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===st.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),st.nodeName(e[0],"html")||(n=e.offset()),n.top+=st.css(e[0],"borderTopWidth",!0),n.left+=st.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-st.css(r,"marginTop",!0),left:t.left-n.left-st.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||V.documentElement;e&&!st.nodeName(e,"html")&&"static"===st.css(e,"position");)e=e.offsetParent;return e||V.documentElement})}}),st.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);st.fn[e]=function(i){return st.access(this,function(e,i,o){var a=z(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?st(a).scrollLeft():o,r?o:st(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}}),st.each({Height:"height",Width:"width"},function(e,n){st.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){st.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return st.access(this,function(n,r,i){var o;return st.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?st.css(n,r,s):st.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=st,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return st})})(window);
 
//@ sourceMappingURL=jquery.min.map
 
\ No newline at end of file
0 comments (0 inline, 0 general)