├── demo
├── assets
│ ├── arrowleft.png
│ ├── arrowtop.png
│ ├── arrowtop2.png
│ ├── LeagueGothic.otf
│ ├── arrowbottom.png
│ ├── arrowbottom2.png
│ ├── arrowleft2.png
│ ├── arrowright.png
│ ├── arrowright2.png
│ ├── brushed_alu.png
│ ├── Classy Skaught.jpg
│ ├── dark_geometric.png
│ └── dark_geometric2.png
├── index.css
├── examples.js
├── index.js
└── libs
│ ├── xo.css
│ └── jq.js
├── parallax.min.js
├── README.md
├── parallax.js
└── index.html
/demo/assets/arrowleft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowleft.png
--------------------------------------------------------------------------------
/demo/assets/arrowtop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowtop.png
--------------------------------------------------------------------------------
/demo/assets/arrowtop2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowtop2.png
--------------------------------------------------------------------------------
/demo/assets/LeagueGothic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/LeagueGothic.otf
--------------------------------------------------------------------------------
/demo/assets/arrowbottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowbottom.png
--------------------------------------------------------------------------------
/demo/assets/arrowbottom2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowbottom2.png
--------------------------------------------------------------------------------
/demo/assets/arrowleft2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowleft2.png
--------------------------------------------------------------------------------
/demo/assets/arrowright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowright.png
--------------------------------------------------------------------------------
/demo/assets/arrowright2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/arrowright2.png
--------------------------------------------------------------------------------
/demo/assets/brushed_alu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/brushed_alu.png
--------------------------------------------------------------------------------
/demo/assets/Classy Skaught.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/Classy Skaught.jpg
--------------------------------------------------------------------------------
/demo/assets/dark_geometric.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/dark_geometric.png
--------------------------------------------------------------------------------
/demo/assets/dark_geometric2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stolksdorf/Parallaxjs/HEAD/demo/assets/dark_geometric2.png
--------------------------------------------------------------------------------
/demo/index.css:
--------------------------------------------------------------------------------
1 | body{
2 | overflow:hidden;
3 | }
4 |
5 | .background{
6 | background-image: url(assets/dark_geometric2.png);
7 | }
8 |
9 | .noanchor:link, .noanchor:visited, .noanchor:active {
10 | text-decoration: none;
11 | color:white;
12 | }
13 |
14 | .page{
15 | width:100%;
16 | height:100%;
17 | }
18 |
19 | #logo{
20 | left:10px;
21 | top:0px;
22 | }
23 |
24 | #content{
25 | height:100%;
26 | overflow-y: scroll;
27 | overflow-x: hidden;
28 | background-image: url(assets/brushed_alu.png);
29 |
30 | }
31 |
32 | .jscode{
33 | background-color:white;
34 | font-family:"Courier New",Courier,monospace;
35 | width:600px;
36 | margin-left:40px;
37 | padding:10 15 10 15;
38 | -moz-box-shadow: 5px 5px 5px #888;-webkit-box-shadow: 5px 5px 5px #888;box-shadow: 5px 5x 5px #888;
39 | }
40 |
41 | p{
42 | margin-left:10px;
43 | font-family:Calibri;
44 | font-size:15px;
45 | margin-bottom:15px;
46 | }
47 |
48 | #titlebox{
49 | position:absolute;
50 | left:40%;
51 | top:100px;
52 | width:650px;
53 | height:500px;
54 |
55 | }
56 |
57 | #codebox{
58 | margin-top:20px;
59 | background-color:white;
60 | font-family:"Courier New",Courier,monospace;
61 | width:500px;
62 | height:100px;
63 | margin-left:40px;
64 | padding:10 15 10 15;
65 | -moz-box-shadow: 5px 5px 5px #888;-webkit-box-shadow: 5px 5px 5px #888;box-shadow: 5px 5x 5px #888;
66 | }
67 |
68 | .arrow{
69 | opacity:0.2;
70 | }
71 |
72 | .dirText{
73 | color:white;
74 | font-size:40px;
75 | margin-top:45px;
76 | opacity:0.0;
77 | }
78 |
79 | .control{
80 | position:fixed;
81 | width:170px;
82 | cursor:pointer;
83 | }
84 |
85 | #rightControl{
86 | right:0px;
87 | top:40%;
88 | }
89 |
90 | #leftControl{
91 | left:0px;
92 | top:40%;
93 | }
94 |
--------------------------------------------------------------------------------
/demo/examples.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | var rightCode = "parallax.speed = 2000;\n\nparallax.boo.right();";
4 | var topCode = "parallax.scaling = 'linear';\n\nparallax.boo.top();"
5 | var leftCode ="parallax.scaling = 0.9;\n\nparallax.boo.left();";
6 | var bottomCode ="parallax.boo.onload = function(){\n\talert('Awesome alert buddy. Truly spectacular.');\n});\n\nparallax.boo.bottom();";
7 | var lastCode="parallax.last.bottom();"
8 | var currentCode="parallax.current.ackbar(); ////What is it? "
9 |
10 | $(document).ready(function () {
11 |
12 | $("#boo").click(function(){
13 | //clear away all the modifers
14 | parallax.speed = 800;
15 | parallax.easing = 'swing';
16 | parallax.scaling = 0.15;
17 | parallax.boo.onload = function(){};
18 | //Randomly picks a direction to head back too
19 | var rand =Math.floor(Math.random()*4)
20 | if(rand == 0) parallax.sandbox.top();
21 | else if(rand == 1) parallax.sandbox.left();
22 | else if(rand == 2) parallax.sandbox.right();
23 | else parallax.sandbox.bottom();
24 | });
25 |
26 | $("#fromLast").click(function(){
27 | parallax.last.bottom();
28 | }).hover(function(){
29 | $("#codebox").html(lastCode);
30 | });
31 |
32 | $("#fromCurrent").click(function(){
33 | parallax.current.ackbar();
34 | }).hover(function(){
35 | $("#codebox").html(currentCode);
36 | });
37 |
38 | $("#fromRight").click(function(){
39 | parallax.speed = 2000;
40 | parallax.boo.right();
41 | }).hover(function(){
42 | $("#codebox").html(rightCode);
43 | });
44 |
45 | $("#fromTop").click(function(){
46 | parallax.scaling = 'linear';
47 | parallax.boo.top();
48 | }).hover(function(){
49 | $("#codebox").html(topCode);
50 | });
51 |
52 | $("#fromLeft").click(function(){
53 | parallax.scaling = 0.9;
54 | parallax.boo.left();
55 | }).hover(function(){
56 | $("#codebox").html(leftCode);
57 | });
58 |
59 | $("#fromBottom").click(function(){
60 | parallax.boo.onload = function(){
61 | alert("Awesome alert buddy. Truly spectacular.");
62 | };
63 | parallax.boo.bottom();
64 | }).hover(function(){
65 | $("#codebox").html(bottomCode);
66 | });
67 | });
--------------------------------------------------------------------------------
/parallax.min.js:
--------------------------------------------------------------------------------
1 | window.onload=function(){if(typeof jQuery==="undefined"){alert("ERROR: parallax.js requires jQuery.")}else{var a=function(){parallax.width=window.innerWidth;parallax.height=window.innerHeight};a();$(window).resize(function(){a()})}};var parallaxPage=function(a,b){return{key:a,page:b,right:function(a){return this.transition({left:parallax.width,top:0},{left:-parallax.width,top:0},a)},left:function(a){return this.transition({left:-parallax.width,top:0},{left:parallax.width,top:0},a)},top:function(a){return this.transition({left:0,top:-parallax.height},{left:0,top:parallax.height},a)},bottom:function(a){return this.transition({left:0,top:parallax.height},{left:0,top:-parallax.height},a)},transition:function(a,b,c){if(!parallax.sliding){parallax.sliding=true;var d=this;if(parallax.current!==this){this.hide(a);if(typeof parallax.preload==="function"){parallax.preload()}if(typeof this.preload==="function"){this.preload()}this.slide({left:0,top:0},function(){d.makeCurrent();parallax.sliding=false;if(typeof c==="function"){c()}});if(typeof parallax.current!=="undefined"){parallax.current.slide(b,function(){parallax.sliding=false})}parallax.slideBackground(a)}}return this},slide:function(a,b){this.page.css("display","block");this.page.stop().animate(a,parallax.speed,parallax.easing,function(){if(typeof b==="function"){b()}})},hide:function(a){a=a||{left:parallax.width,top:0};this.page.css("display","none");this.page.css(a);return this},show:function(a){a=a||{left:0,top:0};if(typeof parallax.current!=="undefined"){parallax.current.hide()}this.makeCurrent();this.page.css("display","block");this.page.css(a);return this},makeCurrent:function(){if(this===parallax.current){return false}else{if(typeof parallax.current!=="undefined"){parallax.current.hide();parallax.last=parallax.current}if(parallax.updateUrl===true){this.updateUrl()}if(typeof parallax.onload=="function"){parallax.onload()}if(typeof this.onload==="function"){this.onload()}parallax.current=this}return true},updateUrl:function(){var a=document.URL;a=a.lastIndexOf("#")===-1?a:a.substring(0,a.lastIndexOf("#"));window.location.href=a+"#"+this.key},ackbar:function(){alert(this.key+" thinks it's a trap!");return this}}};var parallax={speed:800,easing:"swing",sliding:false,unusableNames:["last","current","background","onload","updateUrl","preload"],scaling:.15,add:function(a,b){var c=true;if(typeof a==="object"){try{b=a;a=a.attr("id")}catch(d){c=false;alert("ERROR:Page object lacks an id")}}else if(typeof a!=="string"){c=false;alert("ERROR:undefined key")}if(typeof b!=="object"){c=false;alert("ERROR:undefined page")}if(c){validKeyName=true;for(propName in this){if(propName===a){validKeyName=false}}if($.inArray(a,this.unusableNames)!==-1){validKeyName=false}if(validKeyName){this[a]=parallaxPage(a,b);this[a].hide();this[a].page.css("position","absolute")}else{alert("ERROR:'"+a+"' cannot be used as a page identifier")}}return this},fromUrl:function(){var a=document.URL.lastIndexOf("#");if(a!==-1){pageName=document.URL.substring(a+1,document.URL.length);if(parallax.hasOwnProperty(pageName)){return parallax[pageName]}}},slideBackground:function(a){if(typeof this.background!=="undefined"&&typeof a!=="undefined"){$(this.background).animate({"background-position-x":"+="+ -a.left*parallax.scaling+"px","background-position-y":"+="+ -a.top*parallax.scaling+"px"},parallax.speed,parallax.easing)}}}
2 |
--------------------------------------------------------------------------------
/demo/index.js:
--------------------------------------------------------------------------------
1 | var rightKey, leftKey, topKey, bottomKey;
2 |
3 | $(document).ready(function () {
4 |
5 | //Set up the triggers for the arrow keys
6 | $(document).keydown(function(e){
7 | if (e.keyCode == 37 && typeof leftKey === 'function') {
8 | leftKey();
9 | } else if(e.keyCode == 38 && typeof topKey === 'function') {
10 | topKey();
11 | } else if(e.keyCode == 39 && typeof rightKey === 'function') {
12 | rightKey();
13 | } else if(e.keyCode == 40 && typeof bottomKey === 'function') {
14 | bottomKey();
15 | }
16 | });
17 |
18 | parallax.add($("#features"))
19 | .add($("#index"))
20 | .add($("#boo"))
21 | .add($("#sandbox"))
22 | .add($("#me"));
23 |
24 | parallax.background = $("body");
25 |
26 | //Clears each page navigation on load
27 | parallax.preload = function(){
28 | rightKey = leftKey = topKey = bottomKey = "";
29 | $(".control").hide();
30 | };
31 |
32 |
33 | //Setting up page navigation
34 | parallax.index.onload=function(){
35 | setRight("features", "Features");
36 | setTop("sandbox", "SandBox");
37 | setLeft("me","The Guy");
38 | };
39 |
40 | parallax.sandbox.onload=function(){
41 | setBottom("index","Home");
42 | };
43 |
44 | parallax.features.onload=function(){
45 | setLeft("index", "Home");
46 | setRight("me", "The Guy");
47 | };
48 |
49 | parallax.me.onload=function(){
50 | setLeft("features", "Features");
51 | setRight("index","Home");
52 | };
53 |
54 |
55 | //Sets the correct triggers for the arrows, plus arrow keys
56 | function setRight(page, text){
57 | $("#rightText").text(text);
58 | $("#rightControl").show().unbind('click').click(function(){
59 | parallax[page].right();
60 | });
61 | rightKey = function(){
62 | parallax[page].right();
63 | };
64 | }
65 |
66 | function setLeft(page, text){
67 | $("#leftText").text(text);
68 | $("#leftControl").show().unbind('click').click(function(){
69 | parallax[page].left();
70 | });
71 | leftKey = function(){
72 | parallax[page].left();
73 | };
74 | }
75 |
76 | function setTop(page, text){
77 | $("#topText").text(text);
78 | $("#topControl").show().unbind('click').click(function(){
79 | parallax[page].top();
80 | });
81 | topKey = function(){
82 | parallax[page].top();
83 | };
84 | }
85 |
86 | function setBottom(page, text){
87 | $("#bottomText").text(text);
88 | $("#bottomControl").show().unbind('click').click(function(){
89 | parallax[page].bottom();
90 | });
91 | bottomKey = function(){
92 | parallax[page].bottom();
93 | };
94 | }
95 |
96 | //The fadey bits
97 | $("#bottomControl").mouseenter(function(){
98 | $("#bottomArrow").fadeTo(500,1);
99 | $("#bottomText").fadeTo(500,1);
100 | }).mouseleave(function(){
101 | $("#bottomArrow").stop().fadeTo(500,0.2);
102 | $("#bottomText").stop().fadeTo(500,0);
103 | });
104 |
105 | $("#leftControl").mouseenter(function(){
106 | $("#leftArrow").fadeTo(500,1);
107 | $("#leftText").fadeTo(500,1);
108 | }).mouseleave(function(){
109 | $("#leftArrow").stop().fadeTo(500, 0.2);
110 | $("#leftText").stop().fadeTo(500,0);
111 | });
112 |
113 | $("#rightControl").mouseenter(function(){
114 | $("#rightArrow").fadeTo(500,1);
115 | $("#rightText").fadeTo(500,1);
116 | }).mouseleave(function(){
117 | $("#rightArrow").stop().fadeTo(500, 0.2);
118 | $("#rightText").stop().fadeTo(500,0);
119 | });
120 |
121 | $("#topControl").mouseenter(function(){
122 | $("#topArrow").fadeTo(500,1);
123 | $("#topText").fadeTo(500,1);
124 | }).mouseleave(function(){
125 | $("#topArrow").stop().fadeTo(500, 0.2);
126 | $("#topText").stop().fadeTo(500,0);
127 | });
128 |
129 |
130 | $(".control").hide();
131 | parallax.index.show();
132 |
133 | });
134 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # What is Parallax.js?
2 | Is a javascript framework allowing you to slide in pages of your site with having a parallaxing background.
3 | Parallax.js keeps pages in a structureless format, meaning you can absolutely control where pages come in and from where, even if it doesn't make geometric sense. You add html elements, or pages, to Parallax.js and use the movement functions to slide them into view, pushing whatever was there out of the way. Very light weight, very cool. Just like fezes.
4 |
5 | Check out the [demo page](http://stolksdorf.github.com/Parallaxjs)'s features section. It should explain everything you need to know to use Parallax.js. I strongly you suggest to take a dive into the demo page's code base as well, some nifty things in there.
6 |
7 | # I want to use Parallax.js for my project. What license is it under?
8 | I like to consider Parallax.js under the [WTFPL](http://sam.zoy.org/wtfpl/). In short, do whatever you like. Good luck on whatever you are working on and feel free to email me when it's done, I'd love to see your work.
9 |
10 | # Adding Pages
11 | Add accepts either a name and an element, or just an element. With the latter Parallax.js will try to use the element's Id as the name. Pages can be accessed using their name as a property on the Parallax.js object.
12 |
13 | parallax.add("foo", $("#page1"))
14 | parallax.add($("#bar"));
15 |
16 | parallax.foo; //<- woah! they're properties now!
17 | parallax.bar;
18 |
19 | # Backgrounds and Parallax Scaling
20 | To get a nifty parallaxing background, just set a jQuery element to be Parallax.js's background. For best results, make sure that the element's background image is a repeating image. You can also control the scaling, or how much the background moves in relation to pages.
21 |
22 | parallax.background = $("body");
23 | parallax.scaling = 0.4; //background moves 40% with the pages
24 |
25 | # Speed and Easing
26 | Some like it fast, some like it slow. Some like to swing and others like to get... umm linear?
27 | Whatever you fancy, Parallax.js has you covered.
28 |
29 | parallax.speed = 1200; //In milliseconds of course!
30 | parallax.easing = 'linear';
31 |
32 | # Movement
33 | The meat and potatoes. Invoking these will move that page in from that side.
34 |
35 | parallax.bar.left(); //Bar slides in from the left
36 | parallax.foo.top(); //bringing back foo from the top
37 | parallax.bar.bottom(IAmBack()); //We got callbacks too ;)
38 |
39 | functon IAmBack(){
40 | alert("I'm back foo!");
41 | }
42 |
43 | # Show and Hide
44 | Sometimes we don't need the fanciness. Show and hide simply bring pages to focus instantly, or hides them.
45 |
46 | //All pages start out hidden,
47 | //remember to show your initial page!
48 | parallax.foo.show();
49 | parallax.bar.hide(); //Bar is being a tad shy
50 |
51 | # Last and Current
52 | Parallax.js has two special pages that it fills in for you. You can use that just like regular pages.
53 |
54 | parallax.bar.left()
55 | parallax.current.ackbar(); //Bar thinks it's a trap!
56 | parallax.foo.top();
57 | parallax.current.ackbar(); //Foo now thinks it's a trap
58 | parallax.last.right(); //Bar slides in from the right
59 |
60 | # OnLoad and Preload
61 | Sometimes your page just has to run some code when it hits the big screen. We understand. Preload runs before the page animation, onload runs after.
62 |
63 | parallax.bar.onload = function(){
64 | alert( "sweetest function eva!");
65 | };
66 | parallax.bar.left(); //Fires that function!
67 | parallax.bar.show(); //Also fires it, how cool!
68 |
69 | //parallax itself has it's own preload and onload functions
70 | parallax.preload = function(){
71 | //these get run on -every- page,
72 | //in addition to the page's onload/preload functions
73 | alert("Super annoying alert");
74 | };
75 |
76 | # Protips!
77 | //Remember parallax can be aliased!
78 | p = parallax;
79 |
80 | //Using arrow key navigation is super cool
81 | //most users find it very intuitive
82 | $(document).keydown(function(e){
83 | if (e.keyCode == 37) { //this is the left key,
84 | p.bar.left();
85 | }
86 | }); //check out the code of this demo, it has arrow key navigation!
87 | //For reference; 38 - top, 39 - right, 40 - bottom
88 |
89 | //Before using .last either check to see if it's null
90 | if(typeof p.last === 'undefined'){
91 | //handle it here
92 | }
93 | //or set it before hand
94 | p.last = p.foo;
95 |
96 | //Movement callbacks and .onload look like they do the same thing
97 | //But they don't!
98 | p.bar.onload = herp();
99 | p.bar.left(derp()); //both herp and derp get run
100 | p.current.show() //only herp gets run
101 |
102 | Godspeed.
103 |
--------------------------------------------------------------------------------
/parallax.js:
--------------------------------------------------------------------------------
1 | window.onload = function(){
2 | if (typeof jQuery === 'undefined') {
3 | alert("ERROR: parallax.js requires jQuery.");
4 | } else {
5 | var updateparallax = function(){
6 | parallax.width = window.innerWidth;
7 | parallax.height = window.innerHeight;
8 | }
9 | updateparallax();
10 | $(window).resize(function(){updateparallax();});
11 | }
12 | }
13 |
14 | var parallaxPage = function(name, pageHtml){
15 | return{
16 | key: name,
17 | page : pageHtml,
18 | right : function(callback){return this.transition({left:parallax.width,top:0} ,{left:-parallax.width,top:0} ,callback);},
19 | left : function(callback){return this.transition({left:-parallax.width,top:0} ,{left:parallax.width,top:0} ,callback);},
20 | top : function(callback){return this.transition({left:0,top:-parallax.height},{left:0,top:parallax.height} ,callback);},
21 | bottom : function(callback){return this.transition({left:0,top:parallax.height} ,{left:0,top:-parallax.height},callback);},
22 |
23 | transition : function(locationNew, locationOld, callback){
24 | if(!parallax.sliding){
25 | parallax.sliding = true;
26 | var thisPage = this;
27 | if(parallax.current !== this){
28 | this.hide(locationNew);
29 | if(typeof parallax.preload === 'function'){
30 | parallax.preload();
31 | }
32 | if(typeof this.preload === 'function'){
33 | this.preload();
34 | }
35 | this.slide({left:0,top:0}, function(){
36 | thisPage.makeCurrent();
37 | parallax.sliding = false;
38 | if(typeof callback === 'function'){
39 | callback();
40 | }
41 | });
42 | if(typeof parallax.current !== 'undefined'){
43 | parallax.current.slide( locationOld,
44 | function(){
45 | parallax.sliding = false;
46 | }
47 | );
48 | }
49 | parallax.slideBackground(locationNew);
50 | }
51 | }
52 | return this;
53 | },
54 |
55 | slide : function(css, callback){
56 | this.page.css("display", "block");
57 | this.page.stop().animate(css, parallax.speed, parallax.easing,
58 | function(){if(typeof callback === "function"){callback();}
59 | });
60 | },
61 |
62 | hide : function(newLocation){
63 | newLocation = newLocation || {left:parallax.width,top:0}; //defaults left off screen
64 | this.page.css("display", "none");
65 | this.page.css(newLocation);
66 | return this;
67 | },
68 |
69 | show : function(newLocation){
70 | newLocation = newLocation || {left:0,top:0}; //defaults on screen
71 | if(typeof parallax.current !== 'undefined'){
72 | parallax.current.hide();
73 | }
74 | this.makeCurrent();
75 | this.page.css("display", "block");
76 | this.page.css(newLocation);
77 | return this;
78 | },
79 |
80 | makeCurrent : function(){
81 | if(this === parallax.current){
82 | return false;
83 | }else{
84 | if(typeof parallax.current !== 'undefined'){
85 | parallax.current.hide();
86 | parallax.last = parallax.current;
87 | }
88 | if(parallax.updateUrl === true){ this.updateUrl(); }
89 | if(typeof parallax.onload == 'function'){ parallax.onload();}
90 | if(typeof this.onload === 'function'){ this.onload();}
91 | parallax.current = this;
92 | }
93 | return true;
94 | },
95 |
96 | updateUrl : function(){
97 | var url = document.URL;
98 | url = (url.lastIndexOf("#") === -1)? url : url.substring(0, url.lastIndexOf("#"));
99 | window.location.href = url + "#" + this.key;
100 | },
101 |
102 | ackbar : function(){ alert(this.key + " thinks it's a trap!"); return this;},
103 | };
104 | };
105 |
106 | var parallax = {
107 | speed : 800,
108 | easing : 'swing',
109 | sliding : false,
110 | unusableNames : ["last", "current", "background","onload","updateUrl", "preload"],
111 | scaling : 0.15,
112 |
113 | add : function(key,object) {
114 | var check = true;
115 | if(typeof key === 'object'){
116 | try{
117 | object = key
118 | key = key.attr('id');
119 | } catch(err){
120 | check = false;
121 | alert("ERROR:Page object lacks an id");
122 | }
123 | }else if(typeof key !== 'string'){
124 | check = false;
125 | alert("ERROR:undefined key");
126 | }
127 |
128 | if(typeof object !== 'object'){
129 | check = false;
130 | alert("ERROR:undefined page");
131 | }
132 |
133 | if(check){
134 | validKeyName = true;
135 | for(propName in this){
136 | if(propName === key) {
137 | validKeyName = false;
138 | }
139 | }
140 | if($.inArray(key, this.unusableNames) !== -1){
141 | validKeyName = false;
142 | }
143 | if(validKeyName){
144 | this[key] = parallaxPage(key,object);
145 | this[key].hide();
146 | this[key].page.css("position","absolute");
147 | }else{
148 | alert("ERROR:'"+key+"' cannot be used as a page identifier");
149 | }
150 | }
151 | return this;
152 | },
153 |
154 | fromUrl : function(){
155 | var temp = document.URL.lastIndexOf("#")
156 | if(temp !== -1){
157 | pageName = document.URL.substring(temp + 1, document.URL.length);
158 | if(parallax.hasOwnProperty(pageName)){
159 | return parallax[pageName];
160 | }
161 | }
162 | },
163 |
164 | slideBackground : function(newLocation){
165 | if(typeof this.background !== 'undefined' && typeof newLocation !== 'undefined'){
166 | $(this.background).animate({
167 | 'background-position-x': '+=' + -newLocation.left * parallax.scaling + 'px',
168 | 'background-position-y': '+=' + -newLocation.top * parallax.scaling + 'px',
169 | }, parallax.speed, parallax.easing);
170 | }
171 | },
172 | };
173 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
Parallax.js
32 | The swankiest Javascript framework for elegantly sliding pages and parallaxing backgrounds. It'll make your monocle drop.
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
Me enjoying some fine chocolate milk.
44 |
45 |
Hey, I'm Scott
46 |
47 | I like to hit the keyboard and make nifty things.
48 | I do hope you fine chaps enjoy Parallax.js as much as I do.
49 | If you have any questions, compliments, or just built something super cool with it, I'd love to hear about it!
50 | Contact:
scott.tolksdorf@gmail.com
51 |
52 |
53 |
54 |
55 |
PARALLAX.JS
56 |
57 |
58 |
59 |
Examples
60 |
61 |
Returns you to the last page you were on
62 |
Alert from the current page
63 |
From the right slow
64 |
From the top with linear easing
65 |
From the left with increased parallax
66 |
From the bottom with an onload function
67 |
68 |
Hover to see code.
69 | Click to see it in action!
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
BOO!
78 |
Click anywhere to head back.
79 |
80 |
81 |
82 |
83 |
PARALLAX.JS
84 |
85 |
86 |
What is Parallax.js?
87 |
88 | Parallax.js is a nifty Javascript framework that allows you to easily add sliding page trasitions and parallaxing backgrounds to any project.
89 | Very light weight, very cool. Just like fezes.
90 |
91 |
92 |
Adding Pages
93 |
94 | Add accepts either a name and an element, or just an element.
95 | With the latter Parallax.js will try to use the element's Id as the name.
96 | Pages can be accessed using their name as a property on the Parallax.js object.
97 |
parallax.add("foo", $("#page1"))
98 | .add($("#bar"));
99 |
100 | parallax.foo; //<- woah! they're properties now!
101 | parallax.bar;
102 |
103 |
104 |
Backgrounds and Parallax Scaling
105 |
106 | To get a nifty parallaxing background, just set a jQuery element to be Parallax.js's background.
107 | For best results, make sure that the element's background image is a repeating image.
108 | You can also control the scaling, or how much the background moves in relation to pages.
109 |
parallax.background = $("body");
110 |
111 | parallax.scaling = 0.4; //background moves 40% with the pages
112 |
113 |
114 |
Speed and Easing
115 |
116 | Some like it fast, some like it slow. Some like to swing and others like to get... umm linear?
117 | Whatever you fancy, Parallax.js has you covered.
118 |
parallax.speed = 1200; //In milliseconds of course!
119 |
120 | parallax.easing = 'linear';
121 |
122 |
Movement
123 |
124 | The meat and potatoes. Invoking these will move that page in from that side.
125 |
parallax.bar.left(); //Bar slides in from the left
126 | parallax.foo.top(); //bringing back foo from the top
127 |
128 | parallax.bar.bottom(IAmBack()); //We got callbacks too ;)
129 |
130 | function IAmBack(){
131 | alert("I'm back foo!");
132 | }
133 |
134 |
135 |
Show and Hide
136 |
137 | Sometimes we don't need the fanciness. Show and hide simply bring pages to focus instantly, or hides them.
138 |
139 |
//All pages start out hidden,
140 | //remember to show your initial page!
141 | parallax.foo.show();
142 |
143 | parallax.bar.hide(); //Bar is being a tad shy
144 |
145 |
146 |
Last and Current
147 |
148 | Parallax.js has two special pages that it fills in for you. You can use that just like regular pages.
149 |
150 |
151 |
parallax.bar.left()
152 | parallax.current.ackbar(); //Bar thinks it's a trap!
153 |
154 | parallax.foo.top();
155 | parallax.current.ackbar(); //Foo now thinks it's a trap
156 | parallax.last.right(); //Bar slides in from the right
157 |
158 |
159 |
OnLoad and Preload
160 |
161 | Sometimes your page just has to run some code when it hits the big screen. We understand. Preload runs before the page animation, onload runs after.
162 |
163 |
parallax.bar.onload = function(){
164 | alert( "sweetest function eva!");
165 | };
166 | parallax.bar.left(); //Fires that function!
167 | parallax.bar.show(); //Also fires it, how cool!
168 |
169 | //parallax itself has it's own preload and onload functions
170 | parallax.preload = function(){
171 | //these get run on -every- page,
172 | //in addition to the page's onload/preload functions
173 | alert("Super annoying alert");
174 | };
175 |
176 |
177 |
178 |
Protips!
179 |
180 |
//Remember parallax can be aliased!
181 | p = parallax;
182 |
183 | //Using arrow key navigation is super cool
184 | //most users find it very intuitive
185 | $(document).keydown(function(e){
186 | if (e.keyCode == 37) { //this is the left key,
187 | p.bar.left();
188 | }
189 | }); //check out the code of this demo, it has arrow key navigation!
190 | //For reference; 38 - top, 39 - right, 40 - bottom
191 |
192 | //Before using .last either check to see if it's null
193 | if(typeof p.last === 'undefined'){
194 | //handle it here
195 | }
196 | //or set it before hand
197 | p.last = p.foo;
198 |
199 | //Movement callbacks and .onload look like they do the same thing
200 | //But they don't!
201 | p.bar.onload = herp();
202 | p.bar.left(derp()); //both herp and derp get run
203 | p.current.show() //only herp gets run
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
Test
220 |
221 |
222 |
223 |
224 |
Test
225 |
226 |
227 |
228 |
229 |
Test
230 |
231 |
232 |
233 |
Test
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
--------------------------------------------------------------------------------
/demo/libs/xo.css:
--------------------------------------------------------------------------------
1 | /* ----- RESET ----- */
2 | *{outline: 0;padding: 0;margin: 0;border: 0;}
3 | body,p,ul,ol,dl,textarea,input {font-family: 'LeagueGothic'; font-size:25px;}
4 |
5 | /* ----- FONTS ----- */
6 | @font-face { font-family: 'LeagueGothic'; src:url('../assets/LeagueGothic.otf'); }
7 | @font-face { font-family: 'Chunk'; src:url('fonts/Chunk.otf'); }
8 | @font-face { font-family: 'Raleway'; src:url('fonts/Raleway.otf'); }
9 | @font-face { font-family: 'Sniglet'; src:url('fonts/Sniglet.otf'); }
10 |
11 | .leaguegothic{font-family:'LeagueGothic'; }
12 | .chunk {font-family:'Chunk'; }
13 | .raleway {font-family:'Raleway'; }
14 | .sniglet {font-family:'Sniglet'; }
15 | .helvetica {font-family:"Helvetica Neue", Helvetica,Arial, sans-serif;}
16 | .calibri {font-family:Calibri;}
17 | .code {font-family:"Courier New",Courier,monospace;}
18 |
19 | /* ----- BLUEPRINT ----- */
20 | /* container_width/#divisions - margin */
21 | .xoblueprint {width:950px;margin:0 auto;overflow:auto;}
22 | .x1,.x2,.x3,.x4,.x5,.x6 {float:left;margin-right:10px;}
23 | .last {margin-right:0;clear:right;}
24 | .x1 {width:150px;}
25 | .x2 {width:310px;}
26 | .x3 {width:470px;}
27 | .x4 {width:630px;}
28 | .x5 {width:790px;}
29 | .x6, .full {width:950px;margin-right:0;}
30 |
31 | /* ----- TEXT ----- */
32 | .f0 {font-size:15px;}
33 | .f1 {font-size:25px;}
34 | .f2 {font-size:50px;}
35 | .f3 {font-size:100px;}
36 | .f4 {font-size:150px;}
37 | .f5 {font-size:200px;}
38 |
39 | /* add in line-height */
40 | .lh0 {line-height:0.75em;}
41 | .lh1 {line-height:1.0em;}
42 | .lh2 {line-height:1.25em;}
43 |
44 | .s1{letter-spacing:10px;}
45 |
46 | .txtshadow{ text-shadow: 1px 1px 3px #000;}
47 |
48 | .uppercase{text-transform:uppercase;}
49 | .lowercase{text-transform:lowercase;}
50 |
51 | .txtcenter{text-align:center;}
52 | .txtbottom{vertical-align:text-bottom;}
53 | .txtleft{text-align:left;}
54 | .txtright{text-align:right;}
55 |
56 | /* ----- DIV SPACING ----- */
57 | .wauto{width:auto;}
58 | .w1000{width:1000px;}
59 | .w960 {width:960px;}
60 | .w750 {width:750px;}
61 | .w500 {width:500px;}
62 | .w400 {width:400px;}
63 | .w300 {width:300px;}
64 | .w250 {width:250px;}
65 | .w200 {width:200px;}
66 | .w150 {width:150px;}
67 | .w100 {width:100px;}
68 | .w75 {width:75px;}
69 | .w50 {width:50px;}
70 |
71 | .pad {padding:15 15 15 15;}
72 | .padtop {padding-top:15;}
73 | .padbottom{padding-bottom:15;}
74 | .padleft {padding-left:15;}
75 | .padright {padding-right:15;}
76 |
77 | .trim {margin:15 15 15 15;}
78 | .trimtop {margin-top:15;}
79 | .trimbottom{margin-bottom:15;}
80 | .trimleft {margin-left:15;}
81 | .trimright {margin-right:15;}
82 |
83 | /* Full height? */
84 |
85 | /* ----- DIV POSITION ----- */
86 | .absolute{position:absolute;}
87 | .relative{position:relative;}
88 |
89 | .bottom{bottom:0px;}
90 | .top{top:0px;}
91 |
92 | .center{margin-left: auto;margin-right: auto;}
93 | .right {float:right;}
94 | .left {float:left;}
95 | .clear{clear:both;}
96 |
97 | .zabove{z-index:10;}
98 | .znorm {z-index:auto;}
99 | .zbelow{z-index:-10;}
100 |
101 | /* ----- DIV DECORATION ----- */
102 | .clickable{cursor:pointer;}
103 |
104 | .show {display:block;}
105 | .hide {display:none;}
106 | .faded {opacity:0.4;}
107 | .opaque{opacity:1.0;}
108 |
109 | .rounded {-moz-border-radius: 15px;border-radius: 15px;padding-left:10px;padding-right:10px;-moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}
110 | .shadow { -moz-box-shadow: 0 0 5px 5px #888;-webkit-box-shadow: 0 0 5px 5px#888;box-shadow: 0 0 5px 5px #888;}
111 | .dropshadow{ -moz-box-shadow: 10px 10px 5px #888;-webkit-box-shadow: 10px 10px 5px #888;box-shadow: 10px 10px 5px #888;}
112 |
113 |
114 | .slant { -webkit-transform: rotate(10deg);-moz-transform: rotate(10deg);-ms-transform: rotate(10deg);-o-transform: rotate(10deg);transform: rotate(10deg);zoom: 1;}
115 | .slantleft { -webkit-transform: rotate(-10deg);-moz-transform: rotate(-10deg);-ms-transform: rotate(-10deg);-o-transform: rotate(-10deg);transform: rotate(-10deg);zoom: 1;}
116 | .tilt { -webkit-transform: rotate(25deg);-moz-transform: rotate(25deg);-ms-transform: rotate(25deg);-o-transform: rotate(25deg);transform: rotate(25deg);zoom: 1;}
117 | .tiltleft { -webkit-transform: rotate(-25deg);-moz-transform: rotate(-25deg);-ms-transform: rotate(-25deg);-o-transform: rotate(-25deg);transform: rotate(-25deg);zoom: 1;}
118 | .rotate90 { -webkit-transform: rotate(90deg);-moz-transform: rotate(90deg);-ms-transform: rotate(90deg);-o-transform: rotate(90deg);transform: rotate(90deg);zoom: 1;}
119 | .rotate270{ -webkit-transform: rotate(270deg);-moz-transform: rotate(270deg);-ms-transform: rotate(270deg);-o-transform: rotate(270deg);transform: rotate(270deg);zoom: 1;}
120 |
121 | .noise{background-image:url('images/noise.png');}
122 | .dust{background-image:url('images/dust.png');}
123 | .fabric{background-image:url('images/canvas.png');}
124 | .vignette{}
125 | /* look at https://gist.github.com/1387878*/
126 |
127 | /* ---- PAGE DECORATION ---- */
128 | .topbar { top:0px;width:100%;position:fixed; z-index:100;}
129 | .bottombar{ width:100%;position:fixed;bottom:0px;}
130 | .header { width:100%;position:relative;}
131 | .footer { width:100%;clear:both;overflow:auto;}
132 |
133 |
134 |
135 |
136 | /* -- Extra stuff -- */
137 |
138 | /* -- work on this for a slight tilt left or right, 90 and flip -- */
139 |
140 |
141 |
142 |
143 | /* --- stuff to do ---
144 | - add pushing on blueprint
145 | - fixed clearing on blueprint
146 | - p, and h#
147 | - Forms
148 | - Buttons
149 | - Rotation
150 | - http://www.blueprintcss.org/tests/parts/elements.html
151 | - http://css3please.com/
152 |
153 | /* ----- stuff I took from blueprint ---- */
154 | .colborder {
155 | border-right: 1px solid #DDDDDD;
156 | margin-right: 25px;
157 | padding-right: 24px;
158 | }
159 |
160 | hr {
161 | background: none repeat scroll 0 0 #DDDDDD;
162 | border: medium none;
163 | clear: both;
164 | color: #DDDDDD;
165 | float: none;
166 | height: 1px;
167 | margin: 0 0 17px;
168 | width: 100%;
169 | }
170 |
171 | .error, .alert {
172 | background: none repeat scroll 0 0 #FBE3E4;
173 | border-color: #FBC2C4;
174 | color: #8A1F11;
175 | }
176 |
177 | .error, .alert, .notice, .success, .info {
178 | border: 2px solid #DDDDDD;
179 | margin-bottom: 1em;
180 | padding: 0.8em;
181 | }
182 |
183 |
184 | /* ----- COLORS ----- */
185 | /* -- Text -- */
186 | .yellow{color:#CCC400;}
187 | .orange{color:#CC6F00;}
188 | .red {color:#CC0200;}
189 | .purple{color:#C300CC;}
190 | .blue {color:#0100CC;}
191 | .cyan {color:#00CBCC;}
192 | .green {color:#0BCC00;}
193 | .brown {color:#6E4437;}
194 | .grey {color:#808080;}
195 | .white {color:white;}
196 | .black {color:black;}
197 |
198 | .lghtyellow{color:#FFF84C;}
199 | .lghtorange{color:#FFAD4C;}
200 | .lghtred {color:#FF4E4C;}
201 | .lghtpurple{color:#F74CFF;}
202 | .lghtblue {color:#4D4CFF;}
203 | .lghtcyan {color:#4CFEFF;}
204 | .lghtgreen {color:#56FF4C;}
205 | .lghtbrown {color:#8F4E36;}
206 | .lghtgrey {color:#C0C0C0;}
207 |
208 | .drkyellow{color:#7F7B00;}
209 | .drkorange{color:#7F4500;}
210 | .drkred {color:#7F0100;}
211 | .drkpurple{color:#79007F;}
212 | .drkblue {color:#01007F;}
213 | .drkcyan {color:#007E7F;}
214 | .drkgreen {color:#077F00;}
215 | .drkbrown {color:#3D261F;}
216 | .drkgrey {color:#404040;}
217 |
218 | /* -- Backgrounds -- */
219 | .yellowbg{background-color:#CCC400;}
220 | .orangebg{background-color:#CC6F00;}
221 | .redbg {background-color:#CC0200;}
222 | .purplebg{background-color:#C300CC;}
223 | .bluebg {background-color:#0100CC;}
224 | .cyanbg {background-color:#00CBCC;}
225 | .greenbg {background-color:#0BCC00;}
226 | .brownbg {background-color:#6E4437;}
227 | .greybg {background-color:#808080;}
228 | .whitebg {background-color:white;}
229 | .blackbg {background-color:black;}
230 |
231 | .lghtyellowbg{background-color:#FFF84C;}
232 | .lghtorangebg{background-color:#FFAD4C;}
233 | .lghtredbg {background-color:#FF4E4C;}
234 | .lghtpurplebg{background-color:#F74CFF;}
235 | .lghtbluebg {background-color:#4D4CFF;}
236 | .lghtcyanbg {background-color:#4CFEFF;}
237 | .lghtgreenbg {background-color:#56FF4C;}
238 | .lghtbrownbg {background-color:#8F4E36;}
239 | .lghtgreybg {background-color:#C0C0C0;}
240 |
241 | .drkyellowbg{background-color:#7F7B00;}
242 | .drkorangebg{background-color:#7F4500;}
243 | .drkredbg {background-color:#7F0100;}
244 | .drkpurplebg{background-color:#79007F;}
245 | .drkbluebg {background-color:#01007F;}
246 | .drkcyanbg {background-color:#007E7F;}
247 | .drkgreenbg {background-color:#077F00;}
248 | .drkbrownbg {background-color:#3D261F;}
249 | .drkgreybg {background-color:#404040;}
250 |
251 | /* -- Hovers -- */
252 | .yellowhvr:hover{color:#CCC400;}
253 | .orangehvr:hover{color:#CC6F00;}
254 | .redhvr:hover {color:#CC0200;}
255 | .purplehvr:hover{color:#C300CC;}
256 | .bluehvr:hover {color:#0100CC;}
257 | .cyanhvr:hover {color:#00CBCC;}
258 | .greenhvr:hover {color:#0BCC00;}
259 | .brownhvr:hover {color:#6E4437;}
260 | .greyhvr:hover {color:#808080;}
261 | .whitehvr:hover {color:white;}
262 | .blackhvr:hover {color:black;}
263 |
264 | .lghtyellowhvr:hover{color:#FFF84C;}
265 | .lghtorangehvr:hover{color:#FFAD4C;}
266 | .lghtredhvr:hover {color:#FF4E4C;}
267 | .lghtpurplehvr:hover{color:#F74CFF;}
268 | .lghtbluehvr:hover {color:#4D4CFF;}
269 | .lghtcyanhvr:hover {color:#4CFEFF;}
270 | .lghtgreenhvr:hover {color:#56FF4C;}
271 | .lghtbrownhvr:hover {color:#8F4E36;}
272 | .lghtgreyhvr:hover {color:#C0C0C0;}
273 |
274 | .drkyellowhvr:hover{color:#7F7B00;}
275 | .drkorangehvr:hover{color:#7F4500;}
276 | .drkredhvr:hover {color:#7F0100;}
277 | .drkpurplehvr:hover{color:#79007F;}
278 | .drkbluehvr:hover {color:#01007F;}
279 | .drkcyanhvr:hover {color:#007E7F;}
280 | .drkgreenhvr:hover {color:#077F00;}
281 | .drkbrownhvr:hover {color:#3D261F;}
282 | .drkgreyhvr:hover {color:#404040;}
283 |
284 | /* -- Background Hover -- */
285 | .yellowbghvr:hover{background-color:#CCC400;}
286 | .orangebghvr:hover{background-color:#CC6F00;}
287 | .redbghvr:hover {background-color:#CC0200;}
288 | .purplebghvr:hover{background-color:#C300CC;}
289 | .bluebghvr:hover {background-color:#0100CC;}
290 | .cyanbghvr:hover {background-color:#00CBCC;}
291 | .greenbghvr:hover {background-color:#0BCC00;}
292 | .brownbghvr:hover {background-color:#6E4437;}
293 | .greybghvr:hover {background-color:#808080;}
294 | .whitebghvr:hover {background-color:white;}
295 | .blackbghvr:hover {background-color:black;}
296 |
297 | .lghtyellowbghvr:hover{background-color:#FFF84C;}
298 | .lghtorangebghvr:hover{background-color:#FFAD4C;}
299 | .lghtredbghvr:hover {background-color:#FF4E4C;}
300 | .lghtpurplebghvr:hover{background-color:#F74CFF;}
301 | .lghtbluebghvr:hover {background-color:#4D4CFF;}
302 | .lghtcyanbghvr:hover {background-color:#4CFEFF;}
303 | .lghtgreenbghvr:hover {background-color:#56FF4C;}
304 | .lghtbrownbghvr:hover {background-color:#8F4E36;}
305 | .lghtgreybghvr:hover {background-color:#C0C0C0;}
306 |
307 | .drkyellowbghvr:hover{background-color:#7F7B00;}
308 | .drkorangebghvr:hover{background-color:#7F4500;}
309 | .drkredbghvr:hover {background-color:#7F0100;}
310 | .drkpurplebghvr:hover{background-color:#79007F;}
311 | .drkbluebghvr:hover {background-color:#01007F;}
312 | .drkcyanbghvr:hover {background-color:#007E7F;}
313 | .drkgreenbghvr:hover {background-color:#077F00;}
314 | .drkbrownbghvr:hover {background-color:#3D261F;}
315 | .drkgreybghvr:hover {background-color:#404040;}
316 |
317 |
318 | /* -- Borders -- */
319 | .yellowbdr{border-color:#CCC400;border-style:solid;border-width:5px;}
320 | .orangebdr{border-color:#CC6F00;border-style:solid;border-width:5px;}
321 | .redbdr {border-color:#CC0200;border-style:solid;border-width:5px;}
322 | .purplebdr{border-color:#C300CC;border-style:solid;border-width:5px;}
323 | .bluebdr {border-color:#0100CC;border-style:solid;border-width:5px;}
324 | .cyanbdr {border-color:#00CBCC;border-style:solid;border-width:5px;}
325 | .greenbdr {border-color:#0BCC00;border-style:solid;border-width:5px;}
326 | .brownbdr {border-color:#6E4437;border-style:solid;border-width:5px;}
327 | .greybdr {border-color:#808080;border-style:solid;border-width:5px;}
328 | .whitebdr {border-color:white;border-style:solid;border-width:5px;}
329 |
330 | .lghtyellowbdr{border-color:#FFF84C;border-style:solid;border-width:5px;}
331 | .lghtorangebdr{border-color:#FFAD4C;border-style:solid;border-width:5px;}
332 | .lghtredbdr {border-color:#FF4E4C;border-style:solid;border-width:5px;}
333 | .lghtpurplebdr{border-color:#F74CFF;border-style:solid;border-width:5px;}
334 | .lghtbluebdr {border-color:#4D4CFF;border-style:solid;border-width:5px;}
335 | .lghtcyanbdr {border-color:#4CFEFF;border-style:solid;border-width:5px;}
336 | .lghtgreenbdr {border-color:#56FF4C;border-style:solid;border-width:5px;}
337 | .lghtbrownbdr {border-color:#8F4E36;border-style:solid;border-width:5px;}
338 | .lghtgreybdr {border-color:#C0C0C0;border-style:solid;border-width:5px;}
339 |
340 | .drkyellowbdr{border-color:#7F7B00;border-style:solid;border-width:5px;}
341 | .drkorangebdr{border-color:#7F4500;border-style:solid;border-width:5px;}
342 | .drkredbdr {border-color:#7F0100;border-style:solid;border-width:5px;}
343 | .drkpurplebdr{border-color:#79007F;border-style:solid;border-width:5px;}
344 | .drkbluebdr {border-color:#01007F;border-style:solid;border-width:5px;}
345 | .drkcyanbdr {border-color:#007E7F;border-style:solid;border-width:5px;}
346 | .drkgreenbdr {border-color:#077F00;border-style:solid;border-width:5px;}
347 | .drkbrownbdr {border-color:#3D261F;border-style:solid;border-width:5px;}
348 | .drkgreybdr {border-color:#404040;border-style:solid;border-width:5px;}
349 |
350 | /* ----- BORDERS ----- */
351 | .border {border-width:5px;border-style:solid;}
352 | .thinbdr {border-width:1px;border-style:solid;}
353 | .thickbdr {border-width:10px;border-style:solid;}
354 | .dashed {border-style:dashed;}
355 |
--------------------------------------------------------------------------------
/demo/libs/jq.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * jQuery JavaScript Library v1.6.2
3 | * http://jquery.com/
4 | *
5 | * Copyright 2011, John Resig
6 | * Dual licensed under the MIT or GPL Version 2 licenses.
7 | * http://jquery.org/license
8 | *
9 | * Includes Sizzle.js
10 | * http://sizzlejs.com/
11 | * Copyright 2011, The Dojo Foundation
12 | * Released under the MIT, BSD, and GPL Licenses.
13 | *
14 | * Date: Thu Jun 30 14:16:56 2011 -0400
15 | */
16 | (function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(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){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,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=n.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.6.2",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.done(a);return this},eq:function(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.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();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},isNaN:function(a){return a==null||!m.test(a)||isNaN(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;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw 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(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},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,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?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;ca ",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.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:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([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&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.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}})}}),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=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=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},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},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(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j =0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
17 | shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.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(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.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]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),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]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.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!!k(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=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([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.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":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=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=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(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c ",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.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:[]}},l.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&&(l.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")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="
";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[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}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.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 k(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;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;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||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());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(V(c[0])||V(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),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.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 X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._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){return this.each(function(){f(this).wrapAll(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(arguments[0]);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(arguments[0]).toArray());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(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$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
18 | )}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},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(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");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&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.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 bo.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;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,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=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,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.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/