diff --git a/README.md b/README.md
index eed7d41..ccb16f5 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
photon
======
-CSS 3D Lighting Engine
\ No newline at end of file
+CSS 3D Lighting Engine
+
+http://photon.attasi.com
\ No newline at end of file
diff --git a/css/.DS_Store b/css/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/css/.DS_Store differ
diff --git a/css/base.css b/css/base.css
new file mode 100644
index 0000000..b0dfa9c
--- /dev/null
+++ b/css/base.css
@@ -0,0 +1,737 @@
+@charset "UTF-8";
+/* CSS Document */
+
+
+html, body, .scene {
+ height: 100%;
+ min-height: 600px;
+}
+
+body {
+ font-family: 'museo-sans-1','museo-sans-2', sans-serif;
+ font-weight: 500;
+ font-size: 15px;
+ line-height: 22px;
+ color: #fff;
+ background: #000;
+ overflow-x: hidden;
+}
+
+a {
+ text-decoration: none;
+}
+
+
+
+
+
+/*---------------------------------
+
+ Primary Nav
+
+---------------------------------*/
+
+.primary-menu {
+ position: fixed;
+ top: 30px;
+ left: 30px;
+ z-index: 9999;
+}
+
+h1 {
+ margin-bottom: 3px;
+ font-weight: 900;
+ font-size: 26px;
+ color: #ff0;
+ text-transform: uppercase;
+}
+
+h2 {
+ position: relative;
+ padding-bottom: 6px;
+ margin-bottom: 20px;
+ font-weight: 900;
+ text-transform: uppercase;
+}
+
+h2:after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 50px;
+ height: 1px;
+ background: #fff;
+}
+
+.primary-menu a {
+ display: block;
+ float: left;
+ clear: both;
+ color: #999;
+ -webkit-transition: color .2s;
+}
+
+.primary-menu .download-btn {
+ margin-top: 20px;
+ padding: 3px 6px;
+ background: #ff0;
+ color: #000;
+ border-radius: 2px;
+}
+
+.primary-menu .download-btn:hover {
+ color: #000;
+}
+
+.primary-menu a:hover {
+ color: #fff;
+}
+
+.primary-menu a.current {
+ color: #fff;
+}
+
+.attasi {
+ position: fixed;
+ bottom: 30px;
+ left: 30px;
+ z-index: 9999;
+ font-size: 11px;
+ color: #fff;
+}
+
+.attasi a {
+ color: #fff;
+}
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Light Toggle
+
+---------------------------------*/
+
+.toggle {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ z-index: 9999;
+ margin-top: 200px;
+ margin-left: -115px;
+ width: 270px;
+ height: 70px;
+}
+
+.toggle a {
+ display: block;
+ float: left;
+ color: #464646;
+ line-height: 70px;
+}
+
+.toggle .label-on.current {
+ color: #ff0;
+}
+
+.toggle .label-off.current {
+ color: #7f7f7f;
+}
+
+.toggle-btn {
+ width: 70px;
+ height: 70px;
+ margin: 0 10px;
+ background: url(../images/toggle-button.png) no-repeat;
+ background-position: 0 0;
+ text-indent: 100%;
+ overflow: hidden;
+}
+
+.toggle-btn.on {
+ background-position: 0 -70px;
+}
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Example Menu
+
+---------------------------------*/
+
+.example-menu {
+ position: absolute;
+ top: 30px;
+ right: 30px;
+ z-index: 9999;
+}
+
+.example-menu li {
+ float: left;
+ margin-left: 10px;
+}
+
+.example-menu a {
+ display: block;
+ width: 132px;
+ height: 87px;
+ background: url(../images/example-thumbs.png) no-repeat rgba(0, 0, 0, .7);
+ text-indent: 100%;
+ overflow: hidden;
+ border: 1px solid #555;
+ -webkit-transition: border-color .2s;
+}
+
+.example-menu a:hover {
+ border-color: #fff;
+}
+
+.example-menu a.current {
+ background: url(../images/example-thumbs.png) no-repeat rgba(128, 128, 128, .4);
+ background-position-y: -87px;
+ border-color: #ff0;
+}
+
+.example-menu a.current:hover {
+ border-color: #ff0;
+}
+
+.example-menu a.crane-thumb {
+ background-position-x: 0;
+}
+
+.example-menu a.coverflow-thumb {
+ background-position-x: -132px;
+}
+
+.example-menu a.map-thumb {
+ background-position-x: -264px;
+}
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Scene
+
+---------------------------------*/
+
+.scene {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-perspective: 1000;
+ -webkit-transform-style: preserve-3d;
+}
+
+.coverflow,
+.map {
+ display: none;
+}
+
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Crane
+
+---------------------------------*/
+
+.crane {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-top: 50px;
+ -webkit-transform-style: preserve-3d;
+ -webkit-transform: rotateX(-15deg) rotateY(-42deg);
+}
+
+
+.crane .face {
+ position: absolute;
+ background: url(../images/texture-2.png) #ff0;
+ /*background: #eee;*/
+ /*background: #009ddc;*/
+}
+
+
+.crane .wing-1a {
+ width: 132px;
+ height: 346px;
+ -webkit-mask: url(../images/crane/wing-a.svg) no-repeat;
+ -webkit-transform-origin: bottom right;
+ -webkit-transform: translate3d(-131px, -346px, -60px) rotateX(50deg) rotateY(10deg);
+}
+
+.crane .wing-1b {
+ width: 132px;
+ height: 346px;
+ -webkit-mask: url(../images/crane/wing-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(0, -346px, -60px) rotateX(50deg) rotateY(-10deg);
+}
+
+.crane .wing-1c {
+ width: 132px;
+ height: 105px;
+ -webkit-mask: url(../images/crane/wing-c.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-128px, -22px, -34px) rotateY(6deg) rotateX(9deg);
+}
+
+.crane .wing-1d {
+ width: 132px;
+ height: 105px;
+ -webkit-mask: url(../images/crane/wing-d.svg) no-repeat;
+ -webkit-transform-origin: bottom right;
+ -webkit-transform: translate3d(-1px, -22px, -34px) rotateY(-6deg) rotateX(9deg);
+}
+
+.crane .wing-2a {
+ width: 132px;
+ height: 346px;
+ -webkit-mask: url(../images/crane/wing-a.svg) no-repeat;
+ -webkit-transform-origin: bottom right;
+ -webkit-transform: translate3d(-131px, -346px, 60px) rotateX(-50deg) rotateY(-10deg);
+}
+
+.crane .wing-2b {
+ width: 132px;
+ height: 346px;
+ -webkit-mask: url(../images/crane/wing-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(0, -346px, 60px) rotateX(-50deg) rotateY(10deg);
+}
+
+.crane .wing-2c {
+ width: 132px;
+ height: 105px;
+ -webkit-mask: url(../images/crane/wing-c.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-128px, -22px, 34px) rotateY(-6deg) rotateX(-9deg);
+}
+
+.crane .wing-2d {
+ width: 132px;
+ height: 105px;
+ -webkit-mask: url(../images/crane/wing-d.svg) no-repeat;
+ -webkit-transform-origin: bottom right;
+ -webkit-transform: translate3d(-1px, -22px, 34px) rotateY(6deg) rotateX(-9deg);
+}
+
+.crane .body-1a {
+ width: 132px;
+ height: 246px;
+ -webkit-mask: url(../images/crane/body-a.svg) no-repeat;
+ -webkit-transform-origin: bottom right;
+ -webkit-transform: translate3d(-130px, -163px, 0) rotateY(15deg);
+}
+
+.crane .body-1b {
+ width: 132px;
+ height: 246px;
+ -webkit-mask: url(../images/crane/body-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(0, -163px, 0) rotateY(-15deg);
+}
+
+.crane .body-1c {
+ width: 132px;
+ height: 246px;
+ -webkit-mask: url(../images/crane/body-a.svg) no-repeat;
+ -webkit-transform-origin: bottom right;
+ -webkit-transform: translate3d(-130px, -163px, 0) rotateY(-15deg);
+}
+
+.crane .body-1d {
+ width: 132px;
+ height: 246px;
+ -webkit-mask: url(../images/crane/body-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(0, -163px, 0) rotateY(15deg);
+}
+
+.crane .neck-a {
+ width: 230px;
+ height: 277px;
+ -webkit-mask: url(../images/crane/neck-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-1px, -194px, 7px) rotateY(-12deg) rotateX(11deg);
+}
+
+.crane .neck-b {
+ width: 230px;
+ height: 277px;
+ -webkit-mask: url(../images/crane/neck-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-1px, -194px, -7px) rotateY(12deg) rotateX(-11deg);
+}
+
+.crane .head-a {
+ width: 95px;
+ height: 35px;
+ -webkit-mask: url(../images/crane/head-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(208px, -188px, -4px) rotateX(-8.5deg) rotateY(-2deg) rotateY(-1deg);
+}
+
+.crane .head-b {
+ width: 95px;
+ height: 35px;
+ -webkit-mask: url(../images/crane/head-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(208px, -188px, 2px) rotateX(8.5deg) rotateY(1deg);
+}
+
+.crane .tail-a {
+ width: 127px;
+ height: 397px;
+ -webkit-mask: url(../images/crane/tail-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-90px, -269px, 33px) rotateY(12.5deg) rotateX(9.45deg) rotateZ(-37deg);
+}
+
+.crane .tail-b {
+ width: 127px;
+ height: 397px;
+ -webkit-mask: url(../images/crane/tail-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-90px, -269px, -34px) rotateY(-12.5deg) rotateX(-9.45deg) rotateZ(-37deg);
+}
+
+.crane .base-a {
+ width: 172px;
+ height: 61px;
+ -webkit-mask: url(../images/crane/base-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-2px, -8px, 1px) rotateX(90deg) rotateY(12deg);
+}
+
+.crane .base-b {
+ width: 172px;
+ height: 61px;
+ -webkit-mask: url(../images/crane/base-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-2px, -8px, -1px) rotateX(90deg) rotateY(12deg) rotateX(180deg);
+}
+
+.crane .base-c {
+ width: 172px;
+ height: 61px;
+ -webkit-mask: url(../images/crane/base-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-2px, -8px, 1px) rotateX(90deg) rotateY(12deg) rotateY(180deg);
+}
+
+.crane .base-d {
+ width: 172px;
+ height: 61px;
+ -webkit-mask: url(../images/crane/base-a.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-2px, -8px, 1px) rotateX(90deg) rotateY(12deg) rotateY(180deg) rotateX(180deg);
+}
+
+.crane .base-e {
+ width: 22px;
+ height: 107px;
+ -webkit-mask: url(../images/crane/base-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(130px, -23px, 52px) rotateY(90deg) rotateX(5deg);
+}
+
+.crane .base-f {
+ width: 22px;
+ height: 107px;
+ -webkit-mask: url(../images/crane/base-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(130px, -23px, -52px) rotateY(-90deg) rotateX(-5deg);
+}
+
+.crane .base-g {
+ width: 22px;
+ height: 107px;
+ -webkit-mask: url(../images/crane/base-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-128px, -23px, 52px) rotateY(90deg) rotateX(-5deg);
+}
+
+.crane .base-h {
+ width: 22px;
+ height: 107px;
+ -webkit-mask: url(../images/crane/base-b.svg) no-repeat;
+ -webkit-transform-origin: bottom left;
+ -webkit-transform: translate3d(-128px, -23px, -52px) rotateY(-90deg) rotateX(5deg);
+}
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Coverflow
+
+---------------------------------*/
+
+.coverflow {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-perspective: 1000;
+ -webkit-transform-style: preserve-3d;
+}
+
+.coverflow li {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ z-index: 100;
+ width: 400px;
+ height: 400px;
+ margin-left: -200px;
+ margin-top: -250px;
+ -webkit-transition: -webkit-transform .4s;
+ pointer-events: none;
+}
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Map
+
+---------------------------------*/
+
+.map {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform-style: preserve-3d;
+ -webkit-transform: rotateX(10deg) rotateY(30deg) rotateZ(0);
+}
+
+.panel-1,
+.panel-2,
+.panel-3 {
+ position: absolute;
+ top: -230px;
+ width: 240px;
+ height: 400px;
+ background: url(../images/map-2.png) no-repeat;
+}
+
+.panel-1 {
+ left: -360px;
+ background-position: 0 0;
+ -webkit-transform-origin: right;
+ -webkit-transform: rotateY(178deg);
+}
+
+.map.is-open .panel-1 {
+ -webkit-transform: rotateY(60deg);
+}
+
+.panel-2 {
+ left: -120px;
+ background-position: -240px 0;
+}
+
+.panel-3 {
+ left: 120px;
+ background-position: -480px 0;
+ -webkit-transform-origin: left;
+ -webkit-transform: rotateY(178deg);
+}
+
+.map.is-open .panel-3 {
+ -webkit-transform: rotateY(60deg);
+}
+
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Docs
+
+---------------------------------*/
+
+.docs-wrapper {
+ width: 600px;
+ margin: 30px 30px 30px 300px;
+ padding-bottom: 60px;
+}
+
+.docs-wrapper > section {
+ margin-bottom: 88px;
+}
+
+.docs-wrapper > section > section {
+ margin-bottom: 60px;
+}
+
+h3 {
+ margin: 0 0 16px -20px;
+ font-weight: 900;
+ font-size: 25px;
+ color: #ff0;
+}
+
+h4 {
+ margin: 24px 0 16px 0;
+ padding-bottom: 3px;
+ font-weight: 900;
+ font-size: 16px;
+ color: #fff;
+ text-transform: uppercase;
+ border-bottom: 2px solid #fff;
+}
+
+pre {
+ margin: 16px 0;
+ padding: 10px;
+ border-radius: 2px;
+ background: #333;
+}
+
+pre .comment {
+ color: #777;
+}
+
+pre .var {
+ color: #8de3fc;
+}
+
+pre .keyword {
+ color: #dd668d;
+}
+
+pre .num,
+pre .boolean {
+ color: #b370ff;
+}
+
+pre .string {
+ color: #84d041;
+}
+
+code {
+ padding: 1px 4px;
+ border-radius: 2px;
+ font-family: Monaco, monospace;
+ font-size: 14px;
+ color: #fff;
+ background: #333;
+}
+
+pre code {
+ background: none;
+}
+
+dt {
+ margin-bottom: 10px;
+}
+
+dt code {
+ font-size: 15px;
+}
+
+dt em {
+ font-size: 15px;
+ color: #666;
+}
+
+dd {
+ margin-bottom: 48px;
+}
+
+.library dt code {
+ background: #ff0;
+ color: #000;
+}
+
+.property-list {
+ margin: 24px 0 0 48px;
+ font-size: 13px;
+}
+
+.property-list dd {
+ margin: 0 0 24px 16px;
+ line-height: 18px;
+}
+
+.property-list dt {
+ clear: both;
+ margin: 0 16px 0 0;
+}
+
+.property-list dt em {
+ font-size: 13px;
+}
+
+.property-list dt code {
+ margin-right: 3px;
+ background: #333;
+ font-size: 13px;
+ color: #ff0;
+}
+
+.property-list dd code {
+ font-size: 13px;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/css/reset.css b/css/reset.css
new file mode 100644
index 0000000..a5c42b1
--- /dev/null
+++ b/css/reset.css
@@ -0,0 +1,49 @@
+@charset "UTF-8";
+/* CSS Document */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ font-weight: inherit;
+ font-style: inherit;
+ font-size: 100%;
+ font-family: inherit;
+ vertical-align: baseline;
+}
+/* remember to define focus styles! */
+:focus {
+ outline: 0;
+}
+body {
+ line-height: 1;
+ color: black;
+ background: white;
+}
+ol, ul {
+ list-style: none;
+}
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+ border-collapse: separate;
+ border-spacing: 0;
+}
+caption, th, td {
+ text-align: left;
+ font-weight: normal;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: "";
+}
+blockquote, q {
+ quotes: "" "";
+}
diff --git a/docs.html b/docs.html
new file mode 100644
index 0000000..337506f
--- /dev/null
+++ b/docs.html
@@ -0,0 +1,225 @@
+
+
+
+
+ Photon | CSS 3D Lighting Engine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Introduction
+
+ Photon is a JavaScript library that adds simple lighting effects to DOM elements in 3D space.
+
+ Requirements
+ WebKit is the only browser engine currently supported. Photon relies on the WebKitCSSMatrix
object. At the time, no other browsers have an equivalent.
+
+
+
+ Quick Start
+
+
+ Create a Light
+ The Light
object represents a point in 3D space from which faces are lit.
+
+var light = new Photon.Light();
+
+
+
+ Define Faces
+ Face
objects specify which DOM elements should be shaded or tinted by the light.
+
+
+var face = new Photon.Face( $ ('.face-1' ) );
+
+
+
+ Render
+ Call the render
method on your faces to shade or tint them based on their angle from the specified light.
+
+
+face.render(light, true );
+
+
+
+
+ Library Reference
+
+
+ Light
+
+
+ Photon.Light( x = 0, y = 0, z = 100 )
constructor
+ Creates a new Light
object. The default coordinates position the light straight towards the viewport.
+
+ moveTo( x, y, z )
method
+ Moves the light to a new set of coordinates.
+
+
+
+
+ Face
+
+
+ Photon.Face( element, maxShade = .5, maxTint = 0, isBackfaced = false )
constructor
+
+ Creates a new Face
object. By default, the light will subtly shade each element.
+
+
+ element
:jQuery Object
+
+ The DOM object to which shading should be applied.
+
+
+ maxShade
:float
+
+ The maximum amount of black that can be added to an element: 0–1.
+
+
+ maxTint
:float
+
+ The maximum amount of white that can be added to an element: 0–1.
+
+
+ isBackfaced
:Boolean
+
+ Determines if the backface of the element
should be shaded as if it were its own face. Rule of thumb: If the opposite side the element
is visible, you probably want to set this to true
.
+
+
+
+
+ render( light, getNewRotations, parentRotations )
method
+
+ Shades or tints the element based on its angle relative to the Light
object. Shades and tints are applied to an empty div within the element with a class of photon-shader
.
+
+
+ light
:Light
+ The Light
object to use to calculate shading or tinting.
+
+ getNewRotations
:Boolean
+ If true
, a new rotation vector is calculated before shading is applied. Use this when the element's transform property has changed.
+
+ parentRotations
:Object
+ The parent object's rotations (x, y and z in radians). These are used primarily for FaceGroup
objects.
+
+
+
+ setMaxShade( value )
method
+
+ Sets the maximum shade value: 0–1.
+
+
+ value
:float
+
+
+
+ setMaxTint( value )
method
+
+ Sets the maximum tint value: 0–1.
+
+
+ value
:float
+
+
+
+
+
+
+ FaceGroup
+
+ Photon.FaceGroup( parent, faces = parent.children(), maxShade = .5, maxTint = 0, isBackfaced = false )
constructor
+
+ Creates a new FaceGroup
object, which allows one call of render
to shade multiple faces. It also calculates the rotations of nested elements (i.e., if the parent element is rotated, the calculated rotations of the elements within it will be adjusted accordingly).
+
+
+ parent
:jQuery Object
+
+ The DOM object containing the faces to be shaded. Note: this element, itself, will not be shaded.
+
+
+ faces
:jQuery Object
+
+ The DOM elements to shade. Defaults to parent.children()
but an explicit selector is recommended.
+
+
+ maxShade
:float
+
+ The maximum amount of black that can be added to the faces: 0–1.
+
+
+ maxTint
:float
+
+ The maximum amount of white that can be added to the faces: 0–1.
+
+
+ isBackfaced
:Boolean
+
+ Determines if the backface of the faces
should be shaded as if it were its own face. Rule of thumb: If the opposite side the element
is visible, you probably want to set this to true
.
+
+
+
+
+ render( light, getNewGroupRotations, getNewFaceRotations )
method
+
+ Shades or tints the element based on its angle relative to the Light
object. Shades and tints are applied to an empty div within the element with a class of photon-shader
.
+
+
+ light
:Light
+ The Light
object to use to calculate shading or tinting.
+
+ getNewGroupRotations
:Boolean
+ If true
, a new rotation vector is calculated for the parent
element before shading is applied. The new vector will affect the rotations of all faces
. Use this when the parent
's transform property has changed.
+
+ getNewFaceRotations
:Boolean
+ If true
, new rotation vectors are calculated for all of the faces
. Use this when the transform properties of thefaces
have changed.
+
+
+
+ setMaxShade( value )
method
+
+ Sets the maximum shade value: 0–1.
+
+
+ value
:float
+
+
+
+ setMaxTint( value )
method
+
+ Sets the maximum tint value: 0–1.
+
+
+ value
:float
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/.DS_Store b/images/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/images/.DS_Store differ
diff --git a/images/attasi-logo.png b/images/attasi-logo.png
new file mode 100644
index 0000000..4cd3efc
Binary files /dev/null and b/images/attasi-logo.png differ
diff --git a/images/black-left-panel.svg b/images/black-left-panel.svg
new file mode 100644
index 0000000..5da2b6a
--- /dev/null
+++ b/images/black-left-panel.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/images/cover-1.png b/images/cover-1.png
new file mode 100644
index 0000000..2deb8bd
Binary files /dev/null and b/images/cover-1.png differ
diff --git a/images/cover-2.png b/images/cover-2.png
new file mode 100644
index 0000000..19b59b7
Binary files /dev/null and b/images/cover-2.png differ
diff --git a/images/cover-3.png b/images/cover-3.png
new file mode 100644
index 0000000..05dabdf
Binary files /dev/null and b/images/cover-3.png differ
diff --git a/images/cover-4.png b/images/cover-4.png
new file mode 100644
index 0000000..ef20ea9
Binary files /dev/null and b/images/cover-4.png differ
diff --git a/images/cover-5.png b/images/cover-5.png
new file mode 100644
index 0000000..b5305b2
Binary files /dev/null and b/images/cover-5.png differ
diff --git a/images/cover-6.png b/images/cover-6.png
new file mode 100644
index 0000000..317eb62
Binary files /dev/null and b/images/cover-6.png differ
diff --git a/images/crane/.DS_Store b/images/crane/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/images/crane/.DS_Store differ
diff --git a/images/crane/base-a.svg b/images/crane/base-a.svg
new file mode 100644
index 0000000..3ea0353
--- /dev/null
+++ b/images/crane/base-a.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/images/crane/base-b.svg b/images/crane/base-b.svg
new file mode 100644
index 0000000..323e60d
--- /dev/null
+++ b/images/crane/base-b.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/images/crane/body-a.svg b/images/crane/body-a.svg
new file mode 100644
index 0000000..3414165
--- /dev/null
+++ b/images/crane/body-a.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/crane/body-b.svg b/images/crane/body-b.svg
new file mode 100644
index 0000000..199ce6b
--- /dev/null
+++ b/images/crane/body-b.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/crane/head-a.svg b/images/crane/head-a.svg
new file mode 100644
index 0000000..216994b
--- /dev/null
+++ b/images/crane/head-a.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/images/crane/neck-a.svg b/images/crane/neck-a.svg
new file mode 100644
index 0000000..cec3189
--- /dev/null
+++ b/images/crane/neck-a.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/crane/tail-a.svg b/images/crane/tail-a.svg
new file mode 100644
index 0000000..0a741e8
--- /dev/null
+++ b/images/crane/tail-a.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/crane/tail-b.svg b/images/crane/tail-b.svg
new file mode 100644
index 0000000..cc34a5b
--- /dev/null
+++ b/images/crane/tail-b.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/crane/wing-a.svg b/images/crane/wing-a.svg
new file mode 100644
index 0000000..649d450
--- /dev/null
+++ b/images/crane/wing-a.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/images/crane/wing-b.svg b/images/crane/wing-b.svg
new file mode 100644
index 0000000..9a60ee2
--- /dev/null
+++ b/images/crane/wing-b.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/images/crane/wing-c.svg b/images/crane/wing-c.svg
new file mode 100644
index 0000000..f09a4a7
--- /dev/null
+++ b/images/crane/wing-c.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/crane/wing-d.svg b/images/crane/wing-d.svg
new file mode 100644
index 0000000..574434d
--- /dev/null
+++ b/images/crane/wing-d.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/images/example-thumbs.png b/images/example-thumbs.png
new file mode 100644
index 0000000..885f110
Binary files /dev/null and b/images/example-thumbs.png differ
diff --git a/images/map-2.png b/images/map-2.png
new file mode 100644
index 0000000..34d257d
Binary files /dev/null and b/images/map-2.png differ
diff --git a/images/map.png b/images/map.png
new file mode 100644
index 0000000..522106a
Binary files /dev/null and b/images/map.png differ
diff --git a/images/texture-2.png b/images/texture-2.png
new file mode 100644
index 0000000..d5d5bcc
Binary files /dev/null and b/images/texture-2.png differ
diff --git a/images/texture.png b/images/texture.png
new file mode 100644
index 0000000..df5e149
Binary files /dev/null and b/images/texture.png differ
diff --git a/images/toggle-button.png b/images/toggle-button.png
new file mode 100644
index 0000000..d3b61c4
Binary files /dev/null and b/images/toggle-button.png differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d665c6b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,94 @@
+
+
+
+
+ Photon | CSS 3D Lighting Engine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/.DS_Store b/js/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/js/.DS_Store differ
diff --git a/js/base.js b/js/base.js
new file mode 100644
index 0000000..78279b6
--- /dev/null
+++ b/js/base.js
@@ -0,0 +1,351 @@
+var $body,
+ $demos,
+ $crane,
+ $map,
+ $mapPanel1,
+ $mapPanel2,
+ $mapPanel3,
+ $coverflow,
+ $toggleBtn,
+ $toggleOn,
+ $toggleOff,
+ crane,
+ craneFaces,
+ cubeFaces,
+ map,
+ diamondFaces,
+ coverflowFaces,
+ shadeAmount,
+ tintAmount,
+ light,
+ currentCover,
+ renderTimer,
+ isLit;
+
+
+
+
+
+
+$(document).ready(function() {
+ $body = $('body'),
+ $demos = $('.demo'),
+ light = new Photon.Light(),
+ shadeAmount = .5,
+ tintAmount = 0,
+ coverflowFaces = [],
+ cubeFaces = [],
+ diamondFaces = [],
+ currentCover = 0,
+ renderCurrent = renderCrane,
+ $toggleBtn = $('.toggle-btn'),
+ $toggleOn = $('.toggle .label-on'),
+ $toggleOff = $('.toggle .label-off'),
+ isLit = true;
+
+ setupLightControls();
+ setupCoverflow();
+ setupCrane();
+ setupMap();
+ // showMap();
+ showCrane();
+
+ // demo menu
+ $('.example-menu a').bind('click', onDemoNav);
+});
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Light Controls
+
+---------------------------------*/
+
+function setupLightControls() {
+ $('.toggle a').bind('click', toggleLight);
+}
+
+function toggleLight(e) {
+ e.preventDefault();
+
+ switch($(e.target).attr('id')) {
+ case 'label-on':
+ isLit = true;
+ $toggleBtn.addClass('on');
+ $toggleOn.addClass('current');
+ $toggleOff.removeClass('current');
+ $('.photon-shader').show();
+ break;
+ case 'label-off':
+ isLit = false;
+ $toggleBtn.removeClass('on');
+ $toggleOn.removeClass('current');
+ $toggleOff.addClass('current');
+ $('.photon-shader').hide();
+ break;
+ case 'toggle-btn':
+ isLit = !isLit;
+ $toggleBtn.toggleClass('on');
+ $toggleOn.toggleClass('current');
+ $toggleOff.toggleClass('current');
+ $('.photon-shader').toggle();
+ break;
+ }
+}
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Menus
+
+---------------------------------*/
+
+function onDemoNav(e) {
+ e.preventDefault();
+
+ var demo = $(e.target).attr('data-demo');
+
+ $('.example-menu .current').removeClass('current');
+ $(this).addClass('current');
+
+ switch(demo) {
+ case 'coverflow':
+ hideCrane();
+ hideMap();
+ showCoverflow();
+ renderCurrent = renderCoverflow;
+ break;
+ case 'crane':
+ hideCoverflow();
+ hideMap();
+ showCrane();
+ renderCurrent = renderCrane;
+ break;
+ case 'map':
+ hideCoverflow();
+ hideCrane();
+ showMap();
+ renderCurrent = renderMap;
+ break;
+ }
+
+ renderCurrent();
+ if(!isLit) {
+ $('.photon-shader').hide();
+ }
+}
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Crane
+
+---------------------------------*/
+
+function setupCrane() {
+ $crane = $('.crane');
+ // crane = new Photon.FaceGroup($('.crane'), $('.face'), .6, .1, true);
+ crane = new Photon.FaceGroup($('.crane')[0], $('.crane .face'), .6, .1, true);
+ renderCrane();
+}
+
+function renderCrane() {
+ crane.render(light, true);
+}
+
+function showCrane() {
+ $body.bind('mousemove', rotateCrane);
+ $crane.show();
+}
+
+function hideCrane() {
+ $body.unbind('mousemove', rotateCrane);
+ $crane.hide();
+}
+
+function rotateCrane(e) {
+ var xPer = e.pageX / $body.width();
+
+ $(crane.element).css('-webkit-transform', 'rotateX(-15deg) rotateY(' + (-180 + (xPer * 360)) + 'deg)');
+ renderCrane();
+}
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Map
+
+---------------------------------*/
+
+function setupMap() {
+ $map = $('.map');
+ $mapPanel1 = $('.panel-1');
+ $mapPanel2 = $('.panel-2');
+ $mapPanel3 = $('.panel-3');
+ $map.bind('click', toggleMap);
+
+ map = new Photon.FaceGroup($('.map')[0], $('.map .face'), 1.5, .2, true);
+ renderMap();
+}
+
+function toggleMap() {
+ $map.toggleClass('is-open');
+
+ $map.unbind();
+ $map.bind('webkitTransitionEnd', stopRenderTimer);
+
+ if(!renderTimer) {
+ renderTimer = setInterval(renderMap, 34);
+ }
+}
+
+function renderMap() {
+ map.render(light, true, true);
+}
+
+function showMap() {
+ $body.bind('mousemove', rotateMap);
+ $map.show();
+}
+
+function hideMap() {
+ $body.unbind('mousemove', rotateMap);
+ $map.hide();
+}
+
+function rotateMap(e) {
+ var xPer = e.pageX / $body.width();
+ var yPer = e.pageY / $body.height();
+
+ $mapPanel1.css('-webkit-transform', 'rotateY(' + (178 - (138 * xPer)) + 'deg)');
+ $mapPanel3.css('-webkit-transform', 'rotateY(' + (178 - (138 * xPer)) + 'deg)');
+ $map.css('-webkit-transform', 'rotateX(' + (40 - (yPer * 70)) + 'deg) rotateY(' + (20 - (xPer * 60)) + 'deg) rotateZ(0)');
+
+ renderMap();
+}
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Coverflow
+
+---------------------------------*/
+
+function setupCoverflow() {
+ $coverflow = $('.coverflow');
+ var $coverflowItems = $coverflow.find('li');
+
+ $coverflowItems.each(function(i) {
+ coverflowFaces[i] = new Photon.Face($(this)[0], shadeAmount);
+ });
+
+ $coverflowItems.eq(1).bind('webkitTransitionEnd', stopRenderTimer);
+
+ $coverflow.bind('click', changeCover);
+
+ setCoverTransforms();
+}
+
+function changeCover() {
+ currentCover = currentCover < coverflowFaces.length - 1 ? currentCover + 1 : 0;
+ setCoverTransforms(true);
+}
+
+function setCoverTransforms(animate) {
+ if(!renderTimer && animate) {
+ renderTimer = setInterval(renderCoverflow, 34);
+ }
+ for(var i = 0; i < coverflowFaces.length; i++) {
+ var element = coverflowFaces[i].element;
+ var offset = Math.abs(currentCover - i);
+ var x = i == currentCover ? 0 : (150 + (100 * offset)) * (i < currentCover ? -1 : 1);
+ var z = i == currentCover ? 0 : -200;
+ // var rotationY = i == currentCover ? 0 : 80 * (i < currentCover ? 1 : -1);
+
+ var rotationY = i == currentCover ? 0 : (80 + (offset * -5)) * (i < currentCover ? 1 : -1);
+
+ $(element).css('-webkit-transform', 'translateX(' + x +'px) translateZ(' + z + 'px) rotateY(' + rotationY + 'deg)');
+ }
+}
+
+function stopRenderTimer() {
+ if(renderTimer) {
+ clearInterval(renderTimer);
+ renderTimer = null;
+ }
+}
+
+function renderCoverflow() {
+ console.log(coverflowFaces[1].rotations);
+ for(var i = 0; i < coverflowFaces.length; i++) {
+ coverflowFaces[i].render(light, true);
+ }
+}
+
+function hideCoverflow() {
+ $coverflow.hide();
+}
+
+function showCoverflow() {
+ $coverflow.show();
+}
+
+
+
+
+
+
+
+
+
+/*---------------------------------
+
+ Utilities
+
+---------------------------------*/
+
+function degToRad(deg) {
+ return deg * Math.PI / 180;
+}
+
+function radToDeg(rad) {
+ return rad * 180 / Math.PI;
+}
+
+function clamp(val, min, max) {
+ if(val > max) return max;
+ if(val < min) return min;
+ return val;
+}
diff --git a/js/jquery-1.7.1.min.js b/js/jquery-1.7.1.min.js
new file mode 100755
index 0000000..198b3ff
--- /dev/null
+++ b/js/jquery-1.7.1.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;ca ",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o=""+"",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c ",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML=" ",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="
";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>$2>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/