jim 0.2.3 → 0.3.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -1
- data/Gemfile.lock +2 -0
- data/HISTORY +13 -0
- data/README.md +148 -0
- data/Rakefile +6 -3
- data/bin/jim +1 -2
- data/default +0 -0
- data/jim.gemspec +142 -105
- data/lib/jim.rb +1 -1
- data/lib/jim/bundler.rb +168 -73
- data/lib/jim/cli.rb +200 -151
- data/lib/jim/index.rb +20 -9
- data/lib/jim/installer.rb +46 -46
- data/lib/jim/rack.rb +57 -20
- data/lib/jim/templates/jimfile +11 -5
- data/lib/jim/version_parser.rb +3 -3
- data/test/fixtures/infoincomments.js +1 -1
- data/test/fixtures/jimfile +14 -7
- data/test/fixtures/jquery-1.4.1.js +3 -6057
- data/test/fixtures/jquery.color.js +1 -1
- data/test/fixtures/localfile.js +1 -1
- data/test/fixtures/mustache.js/package.json +1 -1
- data/test/fixtures/noversion.js +1 -1
- data/test/fixtures/old_jimfile +7 -0
- data/test/fixtures/sammy-0.5.0/examples/backend/app.rb +4 -4
- data/test/fixtures/sammy-0.5.0/examples/backend/public/javascripts/app.js +18 -18
- data/test/fixtures/sammy-0.5.0/examples/backend/public/javascripts/jquery.cloudkit.js +1 -1
- data/test/fixtures/sammy-0.5.0/examples/backend/public/javascripts/jquery.js +1 -1
- data/test/fixtures/sammy-0.5.0/examples/backend/public/javascripts/sammy.js +161 -161
- data/test/fixtures/sammy-0.5.0/examples/backend/public/templates/task.html.erb +1 -1
- data/test/fixtures/sammy-0.5.0/examples/backend/public/templates/task_details.html.erb +1 -1
- data/test/fixtures/sammy-0.5.0/examples/backend/views/app.sass +6 -6
- data/test/fixtures/sammy-0.5.0/examples/backend/views/index.haml +5 -5
- data/test/fixtures/sammy-0.5.0/examples/form_handling/index.html +16 -16
- data/test/fixtures/sammy-0.5.0/examples/hello_world/index.html +13 -13
- data/test/fixtures/sammy-0.5.0/examples/location_override/data.html +28 -28
- data/test/fixtures/sammy-0.5.0/examples/location_override/index.html +18 -18
- data/test/fixtures/sammy-0.5.0/examples/location_override/test.html +36 -36
- data/test/fixtures/sammy-0.5.0/lib/min/sammy-0.5.0.min.js +1 -1
- data/test/fixtures/sammy-0.5.0/lib/min/sammy-lastest.min.js +1 -1
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.cache.js +13 -13
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.haml.js +2 -2
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.json.js +15 -15
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.mustache.js +46 -46
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.nested_params.js +29 -29
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.storage.js +54 -54
- data/test/fixtures/sammy-0.5.0/lib/plugins/sammy.template.js +17 -17
- data/test/fixtures/sammy-0.5.0/lib/sammy.js +220 -220
- data/test/fixtures/sammy-0.5.0/test/fixtures/partial.html +1 -1
- data/test/fixtures/sammy-0.5.0/test/index.html +26 -26
- data/test/fixtures/sammy-0.5.0/test/test_sammy_application.js +60 -60
- data/test/fixtures/sammy-0.5.0/test/test_sammy_event_context.js +21 -21
- data/test/fixtures/sammy-0.5.0/test/test_sammy_location_proxy.js +3 -3
- data/test/fixtures/sammy-0.5.0/test/test_sammy_plugins.js +17 -17
- data/test/fixtures/sammy-0.5.0/test/test_sammy_storage.js +4 -4
- data/test/helper.rb +15 -0
- data/test/test_jim_bundler.rb +114 -74
- data/test/test_jim_cli.rb +34 -18
- data/test/test_jim_index.rb +19 -19
- data/test/test_jim_installer.rb +13 -13
- data/test/test_jim_rack.rb +41 -0
- data/test/test_jim_version_parser.rb +4 -4
- metadata +204 -41
- data/.gitignore +0 -24
- data/README.rdoc +0 -105
- data/lib/jim/templates/commands +0 -58
data/test/fixtures/localfile.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
// local file
|
1
|
+
// local file
|
data/test/fixtures/noversion.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
function() {};
|
1
|
+
function() {};
|
@@ -4,14 +4,14 @@ require 'sass'
|
|
4
4
|
require 'cloudkit'
|
5
5
|
|
6
6
|
class Tasks < Sinatra::Default
|
7
|
-
|
7
|
+
|
8
8
|
use CloudKit::Service, :collections => [:tasks]
|
9
|
-
|
9
|
+
|
10
10
|
get '/' do
|
11
11
|
haml :index
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
get '/stylesheets/:sheet.css' do
|
15
15
|
sass :"#{params['sheet']}"
|
16
16
|
end
|
17
|
-
end
|
17
|
+
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
;(function($) {
|
2
2
|
var app = new Sammy.Application(function() { with(this) {
|
3
3
|
element_selector = '#main';
|
4
|
-
|
4
|
+
|
5
5
|
var db, db_loaded;
|
6
6
|
db = null;
|
7
7
|
db_loaded = false;
|
8
|
-
|
8
|
+
|
9
9
|
before(function() { with(this) {
|
10
10
|
if (!db_loaded) {
|
11
11
|
redirect('#/connecting');
|
12
12
|
return false;
|
13
|
-
}
|
13
|
+
}
|
14
14
|
}});
|
15
|
-
|
15
|
+
|
16
16
|
// display tasks
|
17
17
|
get('#/', function() { with (this) {
|
18
18
|
partial('/templates/index.html.erb', function(html) {
|
@@ -25,17 +25,17 @@
|
|
25
25
|
});
|
26
26
|
});
|
27
27
|
}});
|
28
|
-
|
28
|
+
|
29
29
|
get('#/tasks/:id', function() { with(this) {
|
30
30
|
this.task = db.collection('tasks').get(params['id']).json();
|
31
31
|
this.partial('/templates/task_details.html.erb')
|
32
32
|
}});
|
33
|
-
|
33
|
+
|
34
34
|
post('#/tasks', function() { with(this) {
|
35
35
|
var context = this;
|
36
36
|
var task = {
|
37
|
-
entry: params['entry'],
|
38
|
-
completed: false,
|
37
|
+
entry: params['entry'],
|
38
|
+
completed: false,
|
39
39
|
created_at: Date()
|
40
40
|
};
|
41
41
|
db.collection('tasks').create(task, {
|
@@ -52,11 +52,11 @@
|
|
52
52
|
});
|
53
53
|
return false;
|
54
54
|
}});
|
55
|
-
|
55
|
+
|
56
56
|
get('#/connecting', function() { with(this) {
|
57
57
|
$('#main').html('<span class="loading">... Loading ...</span>');
|
58
58
|
}});
|
59
|
-
|
59
|
+
|
60
60
|
bind('task-toggle', function(e, data) { with(this) {
|
61
61
|
this.log('data', data)
|
62
62
|
var $task = data.$task;
|
@@ -68,7 +68,7 @@
|
|
68
68
|
}
|
69
69
|
});
|
70
70
|
}});
|
71
|
-
|
71
|
+
|
72
72
|
bind('run', function() {
|
73
73
|
var context = this;
|
74
74
|
db = $.cloudkit;
|
@@ -82,25 +82,25 @@
|
|
82
82
|
context.trigger('error', {message: 'Could not connect to CloudKit.'})
|
83
83
|
}
|
84
84
|
});
|
85
|
-
|
85
|
+
|
86
86
|
$('li.task :checkbox').live('click', function() {
|
87
87
|
var $task = $(this).parents('.task');
|
88
88
|
context.trigger('task-toggle', {$task: $task});
|
89
89
|
});
|
90
90
|
});
|
91
|
-
|
91
|
+
|
92
92
|
bind('db-loaded', function() { with(this) {
|
93
93
|
redirect('#/')
|
94
94
|
}});
|
95
|
-
|
95
|
+
|
96
96
|
bind('error', function(e, data) { with(this) {
|
97
97
|
render('text', '#error', data.message).show();
|
98
98
|
}});
|
99
|
-
|
100
|
-
|
99
|
+
|
100
|
+
|
101
101
|
}});
|
102
|
-
|
102
|
+
|
103
103
|
$(function() {
|
104
104
|
app.run('#/');
|
105
105
|
})
|
106
|
-
})(jQuery);
|
106
|
+
})(jQuery);
|
@@ -637,7 +637,7 @@ You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2
|
|
637
637
|
that.isDeleted = function() {
|
638
638
|
return (meta.deleted == true);
|
639
639
|
};
|
640
|
-
|
640
|
+
|
641
641
|
that.attr = function(name, value) {
|
642
642
|
if (typeof json[name] != 'undefined') {
|
643
643
|
switch(typeof value) {
|
@@ -16,4 +16,4 @@
|
|
16
16
|
* Released under the MIT, BSD, and GPL Licenses.
|
17
17
|
* More information: http://sizzlejs.com/
|
18
18
|
*/
|
19
|
-
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
|
19
|
+
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
|
@@ -1,34 +1,34 @@
|
|
1
1
|
;(function($) {
|
2
|
-
|
2
|
+
|
3
3
|
var PATH_REPLACER = "([^\/]+)";
|
4
4
|
var PATH_NAME_MATCHER = /:([\w\d]+)/g;
|
5
5
|
var QUERY_STRING_MATCHER = /\?([^#]*)$/;
|
6
|
-
|
6
|
+
|
7
7
|
var loggers = [];
|
8
|
-
|
8
|
+
|
9
9
|
Sammy = {};
|
10
|
-
|
10
|
+
|
11
11
|
Sammy.VERSION = '0.4.0pre';
|
12
|
-
|
13
|
-
// Add to the global logger pool. Takes a function that accepts an
|
12
|
+
|
13
|
+
// Add to the global logger pool. Takes a function that accepts an
|
14
14
|
// unknown number of arguments and should print them or send them somewhere
|
15
15
|
// The first argument is always a timestamp.
|
16
16
|
Sammy.addLogger = function(logger) {
|
17
17
|
loggers.push(logger);
|
18
18
|
};
|
19
|
-
|
19
|
+
|
20
20
|
// Sends a log message to each logger listed in the global
|
21
21
|
// loggers pool. Can take any number of arguments.
|
22
22
|
// Also prefixes the arguments with a timestamp.
|
23
|
-
Sammy.log = function()
|
23
|
+
Sammy.log = function() {
|
24
24
|
var args = $.makeArray(arguments);
|
25
25
|
args.unshift("[" + Date() + "]");
|
26
26
|
$.each(loggers, function(i, logger) {
|
27
27
|
logger.apply(Sammy, args);
|
28
28
|
});
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
};
|
30
|
+
|
31
|
+
if (typeof window.console != 'undefined') {
|
32
32
|
Sammy.addLogger(function() {
|
33
33
|
window.console.log.apply(window.console, arguments);
|
34
34
|
});
|
@@ -37,30 +37,30 @@
|
|
37
37
|
console.log.apply(console, arguments);
|
38
38
|
});
|
39
39
|
}
|
40
|
-
|
41
|
-
// Sammy.Object is the base for all other Sammy classes. It provides some useful
|
40
|
+
|
41
|
+
// Sammy.Object is the base for all other Sammy classes. It provides some useful
|
42
42
|
// functionality, including cloning, iterating, etc.
|
43
43
|
Sammy.Object = function(obj) { // constructor
|
44
44
|
this.extend(obj);
|
45
45
|
};
|
46
|
-
|
47
|
-
$.extend(Sammy.Object.prototype, {
|
48
|
-
|
46
|
+
|
47
|
+
$.extend(Sammy.Object.prototype, {
|
48
|
+
|
49
49
|
// Extend this object with the passed object
|
50
50
|
extend: function(obj) {
|
51
51
|
$.extend(this, obj);
|
52
52
|
},
|
53
|
-
|
53
|
+
|
54
54
|
// If passed an obj, clone the attributes and methods of that object
|
55
55
|
// If called without arguments, clones the callee.
|
56
56
|
clone: function(obj) {
|
57
57
|
if (typeof obj == 'undefined') obj = this;
|
58
58
|
return $.extend({}, obj);
|
59
59
|
},
|
60
|
-
|
60
|
+
|
61
61
|
// Returns a copy of the object with Functions removed.
|
62
62
|
toHash: function() {
|
63
|
-
var json = {};
|
63
|
+
var json = {};
|
64
64
|
this.each(function(k,v) {
|
65
65
|
if (!$.isFunction(v)) {
|
66
66
|
json[k] = v
|
@@ -68,11 +68,11 @@
|
|
68
68
|
});
|
69
69
|
return json;
|
70
70
|
},
|
71
|
-
|
71
|
+
|
72
72
|
// Renders a simple HTML version of this Objects attributes.
|
73
73
|
// Does not render functions.
|
74
74
|
// For example. Given this Sammy.Object:
|
75
|
-
//
|
75
|
+
//
|
76
76
|
// var s = new Sammy.Object({first_name: 'Sammy', last_name: 'Davis Jr.'});
|
77
77
|
// s.toHTML() //=> '<strong>first_name</strong> Sammy<br /><strong>last_name</strong> Davis Jr.<br />'
|
78
78
|
//
|
@@ -85,7 +85,7 @@
|
|
85
85
|
});
|
86
86
|
return display;
|
87
87
|
},
|
88
|
-
|
88
|
+
|
89
89
|
// Generates a unique identifing string. Used for application namespaceing.
|
90
90
|
uuid: function() {
|
91
91
|
if (typeof this._uuid == 'undefined' || !this._uuid) {
|
@@ -93,10 +93,10 @@
|
|
93
93
|
}
|
94
94
|
return this._uuid;
|
95
95
|
},
|
96
|
-
|
96
|
+
|
97
97
|
// If passed an object and a callback, will iterate over the object
|
98
98
|
// with (k, v) in the context of this object.
|
99
|
-
// If passed just an argument - will itterate over
|
99
|
+
// If passed just an argument - will itterate over
|
100
100
|
// the properties of this Sammy.Object
|
101
101
|
each: function() {
|
102
102
|
var context, object, callback, bound_callback;
|
@@ -113,8 +113,8 @@
|
|
113
113
|
}
|
114
114
|
$.each(object, bound_callback);
|
115
115
|
},
|
116
|
-
|
117
|
-
// Returns an array of keys for this object. If <tt>attributes_only</tt>
|
116
|
+
|
117
|
+
// Returns an array of keys for this object. If <tt>attributes_only</tt>
|
118
118
|
// is true will not return keys that map to a <tt>function()</tt>
|
119
119
|
keys: function(attributes_only) {
|
120
120
|
var keys = [];
|
@@ -125,37 +125,37 @@
|
|
125
125
|
}
|
126
126
|
return keys;
|
127
127
|
},
|
128
|
-
|
129
|
-
// convenience method to join as many arguments as you want
|
128
|
+
|
129
|
+
// convenience method to join as many arguments as you want
|
130
130
|
// by the first argument - useful for making paths
|
131
131
|
join: function() {
|
132
132
|
var args = $.makeArray(arguments);
|
133
133
|
var delimiter = args.shift();
|
134
134
|
return args.join(delimiter);
|
135
135
|
},
|
136
|
-
|
136
|
+
|
137
137
|
// Shortcut to Sammy.log
|
138
138
|
log: function() {
|
139
139
|
Sammy.log.apply(Sammy, arguments);
|
140
140
|
},
|
141
|
-
|
142
|
-
// Returns a string representation of this object.
|
143
|
-
// if <tt>include_functions</tt> is true, it will also toString() the
|
141
|
+
|
142
|
+
// Returns a string representation of this object.
|
143
|
+
// if <tt>include_functions</tt> is true, it will also toString() the
|
144
144
|
// methods of this object. By default only prints the attributes.
|
145
145
|
toString: function(include_functions) {
|
146
146
|
var s = []
|
147
147
|
this.each(function(k, v) {
|
148
|
-
|
148
|
+
if (!$.isFunction(v) || include_functions) {
|
149
149
|
s.push('"' + k + '": ' + v.toString());
|
150
|
-
|
150
|
+
}
|
151
151
|
});
|
152
|
-
return "Sammy.Object: {" + s.join(',') + "}";
|
152
|
+
return "Sammy.Object: {" + s.join(',') + "}";
|
153
153
|
}
|
154
154
|
});
|
155
|
-
|
155
|
+
|
156
156
|
Sammy.HashLocationProxy = function(app, run_interval_every) {
|
157
157
|
this.app = app;
|
158
|
-
|
158
|
+
|
159
159
|
// check for native hash support
|
160
160
|
if ('onhashchange' in window) {
|
161
161
|
Sammy.log('native hash change exists, using');
|
@@ -166,7 +166,7 @@
|
|
166
166
|
this._startPolling(run_interval_every);
|
167
167
|
}
|
168
168
|
};
|
169
|
-
|
169
|
+
|
170
170
|
Sammy.HashLocationProxy.prototype = {
|
171
171
|
bind: function() {
|
172
172
|
var app = this.app;
|
@@ -174,11 +174,11 @@
|
|
174
174
|
app.trigger('location-changed');
|
175
175
|
});
|
176
176
|
},
|
177
|
-
|
177
|
+
|
178
178
|
unbind: function() {
|
179
179
|
$(window).die('hashchange.' + this.app.eventNamespace());
|
180
180
|
},
|
181
|
-
|
181
|
+
|
182
182
|
getLocation: function() {
|
183
183
|
// Bypass the `window.location.hash` attribute. If a question mark
|
184
184
|
// appears in the hash IE6 will strip it and all of the following
|
@@ -186,11 +186,11 @@
|
|
186
186
|
var matches = window.location.toString().match(/^[^#]*(#.+)$/);
|
187
187
|
return matches ? matches[1] : '';
|
188
188
|
},
|
189
|
-
|
189
|
+
|
190
190
|
setLocation: function(new_location) {
|
191
191
|
return window.location = new_location;
|
192
192
|
},
|
193
|
-
|
193
|
+
|
194
194
|
_startPolling: function(every) {
|
195
195
|
// set up interval
|
196
196
|
var proxy = this;
|
@@ -199,7 +199,7 @@
|
|
199
199
|
var hashCheck = function() {
|
200
200
|
current_location = proxy.getLocation();
|
201
201
|
// Sammy.log('getLocation', current_location);
|
202
|
-
if (!Sammy.HashLocationProxy._last_location ||
|
202
|
+
if (!Sammy.HashLocationProxy._last_location ||
|
203
203
|
current_location != Sammy.HashLocationProxy._last_location) {
|
204
204
|
setTimeout(function() {
|
205
205
|
$(window).trigger('hashchange');
|
@@ -215,12 +215,12 @@
|
|
215
215
|
}
|
216
216
|
}
|
217
217
|
};
|
218
|
-
|
218
|
+
|
219
219
|
Sammy.DataLocationProxy = function(app, data_name) {
|
220
220
|
this.app = app;
|
221
221
|
this.data_name = data_name || 'sammy-location';
|
222
222
|
};
|
223
|
-
|
223
|
+
|
224
224
|
Sammy.DataLocationProxy.prototype = {
|
225
225
|
bind: function() {
|
226
226
|
var proxy = this;
|
@@ -230,20 +230,20 @@
|
|
230
230
|
}
|
231
231
|
});
|
232
232
|
},
|
233
|
-
|
233
|
+
|
234
234
|
unbind: function() {
|
235
235
|
this.app.$element().die('setData');
|
236
236
|
},
|
237
|
-
|
237
|
+
|
238
238
|
getLocation: function() {
|
239
239
|
return this.app.$element().data(this.data_name);
|
240
240
|
},
|
241
|
-
|
241
|
+
|
242
242
|
setLocation: function(new_location) {
|
243
243
|
return this.app.$element().data(this.data_name, new_location);
|
244
244
|
}
|
245
245
|
};
|
246
|
-
|
246
|
+
|
247
247
|
// Sammy.Application is the Base prototype for defining 'applications'.
|
248
248
|
// An 'application' is a collection of 'routes' and bound events that is
|
249
249
|
// attached to an element when <tt>run()</tt> is called.
|
@@ -273,57 +273,57 @@
|
|
273
273
|
});
|
274
274
|
}
|
275
275
|
};
|
276
|
-
|
276
|
+
|
277
277
|
Sammy.Application.prototype = $.extend({}, Sammy.Object.prototype, {
|
278
|
-
|
278
|
+
|
279
279
|
// the four route verbs
|
280
280
|
ROUTE_VERBS: ['get','post','put','delete'],
|
281
|
-
|
282
|
-
// An array of the default events triggered by the
|
281
|
+
|
282
|
+
// An array of the default events triggered by the
|
283
283
|
// application during its lifecycle
|
284
284
|
APP_EVENTS: ['run','unload','lookup-route','run-route','route-found','event-context-before','event-context-after','changed','error-404','check-form-submission','redirect'],
|
285
|
-
|
285
|
+
|
286
286
|
_last_route: null,
|
287
287
|
_running: false,
|
288
|
-
|
288
|
+
|
289
289
|
// On <tt>run()</tt> the application object is stored in a <tt>$.data</tt> entry
|
290
290
|
// assocciated with the application's <tt>$element()</tt>
|
291
291
|
data_store_name: 'sammy-app',
|
292
|
-
|
293
|
-
// Defines what element the application is bound to. Provide a selector
|
292
|
+
|
293
|
+
// Defines what element the application is bound to. Provide a selector
|
294
294
|
// (parseable by <tt>jQuery()</tt>) and this will be used by <tt>$element()</tt>
|
295
295
|
element_selector: 'body',
|
296
|
-
|
296
|
+
|
297
297
|
// When set to true, logs all of the default events using <tt>log()</tt>
|
298
298
|
debug: false,
|
299
|
-
|
299
|
+
|
300
300
|
// When set to false, will throw a javascript error when a route is invoked
|
301
301
|
// and can not be found.
|
302
302
|
silence_404: true,
|
303
|
-
|
303
|
+
|
304
304
|
// The time in milliseconds that the URL is queried for changes
|
305
|
-
run_interval_every: 50,
|
306
|
-
|
305
|
+
run_interval_every: 50,
|
306
|
+
|
307
307
|
// //=> Sammy.Application: body
|
308
308
|
toString: function() {
|
309
309
|
return 'Sammy.Application:' + this.element_selector;
|
310
310
|
},
|
311
|
-
|
311
|
+
|
312
312
|
// returns a jQuery object of the Applications bound element.
|
313
313
|
$element: function() {
|
314
314
|
return $(this.element_selector);
|
315
315
|
},
|
316
|
-
|
316
|
+
|
317
317
|
// <tt>use()</tt> is the entry point for including Sammy plugins.
|
318
|
-
// The first argument to use should be a function() that is evaluated
|
318
|
+
// The first argument to use should be a function() that is evaluated
|
319
319
|
// in the context of the current application, just like the <tt>app_function</tt>
|
320
320
|
// argument to the <tt>Sammy.Application</tt> constructor.
|
321
321
|
//
|
322
322
|
// Any additional arguments are passed to the app function sequentially.
|
323
323
|
//
|
324
|
-
// For much more detail about plugins, check out:
|
324
|
+
// For much more detail about plugins, check out:
|
325
325
|
// http://code.quirkey.com/sammy/doc/plugins.html
|
326
|
-
//
|
326
|
+
//
|
327
327
|
// === Example
|
328
328
|
//
|
329
329
|
// var MyPlugin = function(app, prepend) {
|
@@ -333,15 +333,15 @@
|
|
333
333
|
// alert(prepend + " " + text);
|
334
334
|
// }
|
335
335
|
// });
|
336
|
-
//
|
336
|
+
//
|
337
337
|
// };
|
338
338
|
//
|
339
339
|
// var app = $.sammy(function() {
|
340
|
-
//
|
340
|
+
//
|
341
341
|
// this.use(MyPlugin, 'This is my plugin');
|
342
|
-
//
|
342
|
+
//
|
343
343
|
// this.get('#/', function() {
|
344
|
-
// this.myhelper('and dont you forget it!');
|
344
|
+
// this.myhelper('and dont you forget it!');
|
345
345
|
// //=> Alerts: This is my plugin and dont you forget it!
|
346
346
|
// });
|
347
347
|
//
|
@@ -354,7 +354,7 @@
|
|
354
354
|
args.unshift(this);
|
355
355
|
plugin.apply(this, args);
|
356
356
|
},
|
357
|
-
|
357
|
+
|
358
358
|
// <tt>route()</tt> is the main method for defining routes within an application.
|
359
359
|
// For great detail on routes, check out: http://code.quirkey.com/sammy/doc/routes.html
|
360
360
|
//
|
@@ -369,17 +369,17 @@
|
|
369
369
|
route: function(verb, path, callback) {
|
370
370
|
// turn path into regex
|
371
371
|
// create a simple object and add the route to it
|
372
|
-
var app = this,
|
372
|
+
var app = this,
|
373
373
|
param_names = [],
|
374
374
|
r;
|
375
375
|
// if path is a string turn it into a regex
|
376
376
|
if (path.constructor == String) {
|
377
|
-
|
377
|
+
|
378
378
|
// Needs to be explicitly set because IE will maintain the index unless NULL is returned,
|
379
379
|
// which means that with two consecutive routes that contain params, the second set of params will not be found and end up in splat instead of params
|
380
|
-
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/lastIndex
|
380
|
+
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp/lastIndex
|
381
381
|
PATH_NAME_MATCHER.lastIndex = 0;
|
382
|
-
|
382
|
+
|
383
383
|
// find the names
|
384
384
|
while ((path_match = PATH_NAME_MATCHER.exec(path)) != null) {
|
385
385
|
param_names.push(path_match[1]);
|
@@ -399,13 +399,13 @@
|
|
399
399
|
// return the route
|
400
400
|
return r;
|
401
401
|
},
|
402
|
-
|
402
|
+
|
403
403
|
// A unique event namespace defined per application.
|
404
404
|
// All events bound with <tt>bind()</tt> are automatically bound within this space.
|
405
405
|
eventNamespace: function() {
|
406
406
|
return [this.data_store_name, this.namespace].join('-');
|
407
407
|
},
|
408
|
-
|
408
|
+
|
409
409
|
// Works just like <tt>jQuery.fn.bind()</tt> with a couple noteable differences.
|
410
410
|
//
|
411
411
|
// * It binds all events to the application element
|
@@ -422,9 +422,9 @@
|
|
422
422
|
if (typeof callback == 'undefined') callback = data;
|
423
423
|
var listener_callback = function() {
|
424
424
|
// pull off the context from the arguments to the callback
|
425
|
-
var e, context, data;
|
425
|
+
var e, context, data;
|
426
426
|
e = arguments[0];
|
427
|
-
data = arguments[1];
|
427
|
+
data = arguments[1];
|
428
428
|
if (data && data['context']) {
|
429
429
|
context = data['context']
|
430
430
|
delete data['context'];
|
@@ -434,7 +434,7 @@
|
|
434
434
|
e.cleaned_type = e.type.replace(app.eventNamespace(), '');
|
435
435
|
callback.apply(context, [e, data]);
|
436
436
|
};
|
437
|
-
|
437
|
+
|
438
438
|
// it could be that the app element doesnt exist yet
|
439
439
|
// so attach to the listeners array and then run()
|
440
440
|
// will actually bind the event.
|
@@ -446,81 +446,81 @@
|
|
446
446
|
return this._listen(name, listener_callback);
|
447
447
|
}
|
448
448
|
},
|
449
|
-
|
449
|
+
|
450
450
|
// Triggers custom events defined with <tt>bind()</tt>
|
451
451
|
//
|
452
452
|
// === Arguments
|
453
|
-
//
|
453
|
+
//
|
454
454
|
// +name+:: The name of the event. Automatically prefixed with the <tt>eventNamespace()</tt>
|
455
455
|
// +data+:: An optional Object that can be passed to the bound callback.
|
456
|
-
// +context+:: An optional context/Object in which to execute the bound callback.
|
456
|
+
// +context+:: An optional context/Object in which to execute the bound callback.
|
457
457
|
// If no context is supplied a the context is a new <tt>Sammy.EventContext</tt>
|
458
458
|
//
|
459
459
|
trigger: function(name, data) {
|
460
460
|
return this.$element().trigger([name, this.eventNamespace()].join('.'), [data]);
|
461
461
|
},
|
462
|
-
|
462
|
+
|
463
463
|
// Reruns the current route
|
464
464
|
refresh: function() {
|
465
465
|
this.last_location = null;
|
466
466
|
},
|
467
|
-
|
467
|
+
|
468
468
|
// Takes a single callback that is pushed on to a stack.
|
469
|
-
// Before any route is run, the callbacks are evaluated in order within
|
469
|
+
// Before any route is run, the callbacks are evaluated in order within
|
470
470
|
// the current <tt>Sammy.EventContext</tt>
|
471
471
|
//
|
472
|
-
// If any of the callbacks explicitly return false, execution of any
|
472
|
+
// If any of the callbacks explicitly return false, execution of any
|
473
473
|
// further callbacks and the route itself is halted.
|
474
474
|
before: function(callback) {
|
475
475
|
return this.befores.push(callback);
|
476
476
|
},
|
477
|
-
|
477
|
+
|
478
478
|
// A shortcut for binding a callback to be run after a route is executed.
|
479
479
|
// After callbacks have no guarunteed order.
|
480
480
|
after: function(callback) {
|
481
481
|
return this.bind('event-context-after', callback);
|
482
482
|
},
|
483
|
-
|
483
|
+
|
484
484
|
// Returns a boolean of weather the current application is running.
|
485
485
|
isRunning: function() {
|
486
486
|
return this._running;
|
487
487
|
},
|
488
|
-
|
488
|
+
|
489
489
|
// Helpers extends the EventContext prototype specific to this app.
|
490
490
|
// This allows you to define app specific helper functions that can be used
|
491
491
|
// whenever you're inside of an event context (templates, routes, bind).
|
492
|
-
//
|
492
|
+
//
|
493
493
|
// === Example
|
494
494
|
//
|
495
495
|
// var app = $.sammy(function() {
|
496
|
-
//
|
496
|
+
//
|
497
497
|
// helpers({
|
498
498
|
// upcase: function(text) {
|
499
499
|
// return text.toString().toUpperCase();
|
500
500
|
// }
|
501
501
|
// });
|
502
|
-
//
|
502
|
+
//
|
503
503
|
// get('#/', function() { with(this) {
|
504
504
|
// // inside of this context I can use the helpers
|
505
505
|
// $('#main').html(upcase($('#main').text());
|
506
506
|
// }});
|
507
|
-
//
|
507
|
+
//
|
508
508
|
// });
|
509
509
|
//
|
510
|
-
//
|
510
|
+
//
|
511
511
|
// === Arguments
|
512
|
-
//
|
512
|
+
//
|
513
513
|
// +extensions+:: An object collection of functions to extend the context.
|
514
|
-
//
|
514
|
+
//
|
515
515
|
helpers: function(extensions) {
|
516
516
|
$.extend(this.context_prototype.prototype, extensions);
|
517
517
|
},
|
518
|
-
|
518
|
+
|
519
519
|
// Actually starts the application's lifecycle. <tt>run()</tt> should be invoked
|
520
520
|
// within a document.ready block to ensure the DOM exists before binding events, etc.
|
521
521
|
//
|
522
522
|
// === Example
|
523
|
-
//
|
523
|
+
//
|
524
524
|
// var app = $.sammy(function() { ... }); // your application
|
525
525
|
// $(function() { // document.ready
|
526
526
|
// app.run();
|
@@ -528,19 +528,19 @@
|
|
528
528
|
//
|
529
529
|
// === Arguments
|
530
530
|
//
|
531
|
-
// +start_url+:: "value", Optionally, a String can be passed which the App will redirect to
|
531
|
+
// +start_url+:: "value", Optionally, a String can be passed which the App will redirect to
|
532
532
|
// after the events/routes have been bound.
|
533
533
|
run: function(start_url) {
|
534
534
|
if (this.isRunning()) return false;
|
535
535
|
var app = this;
|
536
|
-
|
536
|
+
|
537
537
|
// actually bind all the listeners
|
538
538
|
this.each(this.listeners.toHash(), function(name, callbacks) {
|
539
539
|
this.each(callbacks, function(i, listener_callback) {
|
540
540
|
this._listen(name, listener_callback);
|
541
541
|
});
|
542
542
|
});
|
543
|
-
|
543
|
+
|
544
544
|
this.trigger('run', {start_url: start_url});
|
545
545
|
this._running = true;
|
546
546
|
// set data for app
|
@@ -549,17 +549,17 @@
|
|
549
549
|
this.last_location = null;
|
550
550
|
if (this.getLocation() == '' && typeof start_url != 'undefined') {
|
551
551
|
this.setLocation(start_url);
|
552
|
-
}
|
552
|
+
}
|
553
553
|
// check url
|
554
554
|
this._checkLocation();
|
555
555
|
this.location_proxy.bind();
|
556
556
|
this.bind('location-changed', function() {
|
557
557
|
app._checkLocation();
|
558
558
|
});
|
559
|
-
|
559
|
+
|
560
560
|
// bind re-binding to after route
|
561
561
|
this.bind('changed', function() {
|
562
|
-
// bind form submission
|
562
|
+
// bind form submission
|
563
563
|
app.$element()
|
564
564
|
.find('form:not(.' + app.eventNamespace() + ')')
|
565
565
|
.bind('submit', function() {
|
@@ -571,11 +571,11 @@
|
|
571
571
|
$('body').bind('onunload', function() {
|
572
572
|
app.unload();
|
573
573
|
});
|
574
|
-
|
574
|
+
|
575
575
|
// trigger html changed
|
576
576
|
this.trigger('changed');
|
577
577
|
},
|
578
|
-
|
578
|
+
|
579
579
|
// The opposite of <tt>run()</tt>, un-binds all event listeners and intervals
|
580
580
|
// <tt>run()</tt> Automaticaly binds a <tt>onunload</tt> event to run this when
|
581
581
|
// the document is closed.
|
@@ -599,11 +599,11 @@
|
|
599
599
|
});
|
600
600
|
this._running = false;
|
601
601
|
},
|
602
|
-
|
603
|
-
// Will bind a single callback function to every event that is already
|
602
|
+
|
603
|
+
// Will bind a single callback function to every event that is already
|
604
604
|
// being listened to in the app. This includes all the <tt>APP_EVENTS</tt>
|
605
605
|
// as well as any custom events defined with <tt>bind()</tt>.
|
606
|
-
//
|
606
|
+
//
|
607
607
|
// Used internally for debug logging.
|
608
608
|
bindToAllEvents: function(callback) {
|
609
609
|
// bind to the APP_EVENTS first
|
@@ -623,9 +623,9 @@
|
|
623
623
|
routablePath: function(path) {
|
624
624
|
return path.replace(QUERY_STRING_MATCHER, '');
|
625
625
|
},
|
626
|
-
|
626
|
+
|
627
627
|
// Given a verb and a String path, will return either a route object or false
|
628
|
-
// if a matching route can be found within the current defined set.
|
628
|
+
// if a matching route can be found within the current defined set.
|
629
629
|
lookupRoute: function(verb, path) {
|
630
630
|
var routed = false;
|
631
631
|
this.trigger('lookup-route', {verb: verb, path: path});
|
@@ -640,16 +640,16 @@
|
|
640
640
|
return routed;
|
641
641
|
},
|
642
642
|
|
643
|
-
// First, invokes <tt>lookupRoute()</tt> and if a route is found, parses the
|
643
|
+
// First, invokes <tt>lookupRoute()</tt> and if a route is found, parses the
|
644
644
|
// possible URL params and then invokes the route's callback within a new
|
645
|
-
// <tt>Sammy.EventContext</tt>. If the route can not be found, it calls
|
645
|
+
// <tt>Sammy.EventContext</tt>. If the route can not be found, it calls
|
646
646
|
// <tt>notFound()</tt> and raise an error. If <tt>silence_404</tt> is <tt>true</tt>
|
647
647
|
// this error will be caught be the internal methods that call <tt>runRoute</tt>.
|
648
648
|
//
|
649
649
|
// You probably will never have to call this directly.
|
650
650
|
//
|
651
651
|
// === Arguments
|
652
|
-
//
|
652
|
+
//
|
653
653
|
// +verb+:: A String for the verb.
|
654
654
|
// +path+:: A String path to lookup.
|
655
655
|
// +params+:: An Object of Params pulled from the URI or passed directly.
|
@@ -664,7 +664,7 @@
|
|
664
664
|
if (typeof params == 'undefined') params = {};
|
665
665
|
|
666
666
|
$.extend(params, this._parseQueryString(path));
|
667
|
-
|
667
|
+
|
668
668
|
var route = this.lookupRoute(verb, path);
|
669
669
|
if (route) {
|
670
670
|
this.trigger('route-found', {route: route});
|
@@ -685,12 +685,12 @@
|
|
685
685
|
}
|
686
686
|
});
|
687
687
|
}
|
688
|
-
|
688
|
+
|
689
689
|
// set event context
|
690
690
|
var context = new this.context_prototype(this, verb, path, params);
|
691
691
|
this.last_route = route;
|
692
692
|
// run all the before filters
|
693
|
-
var before_value = true;
|
693
|
+
var before_value = true;
|
694
694
|
var befores = this.befores.slice(0);
|
695
695
|
while (befores.length > 0) {
|
696
696
|
if (befores.shift().apply(context) === false) return false;
|
@@ -703,62 +703,62 @@
|
|
703
703
|
this.notFound(verb, path);
|
704
704
|
}
|
705
705
|
},
|
706
|
-
|
706
|
+
|
707
707
|
// The default behavior is to return the current window's location hash.
|
708
|
-
// Override this and <tt>setLocation()</tt> to detach the app from the
|
708
|
+
// Override this and <tt>setLocation()</tt> to detach the app from the
|
709
709
|
// window.location object.
|
710
710
|
getLocation: function() {
|
711
711
|
return this.location_proxy.getLocation()
|
712
712
|
},
|
713
|
-
|
713
|
+
|
714
714
|
// The default behavior is to set the current window's location.
|
715
|
-
// Override this and <tt>getLocation()</tt> to detach the app from the
|
715
|
+
// Override this and <tt>getLocation()</tt> to detach the app from the
|
716
716
|
// window.location object.
|
717
717
|
//
|
718
718
|
// === Arguments
|
719
|
-
//
|
719
|
+
//
|
720
720
|
// +new_location+:: A new location string (e.g. '#/')
|
721
721
|
//
|
722
722
|
setLocation: function(new_location) {
|
723
723
|
return this.location_proxy.setLocation(new_location);
|
724
724
|
},
|
725
|
-
|
725
|
+
|
726
726
|
// Swaps the content of <tt>$element()</tt> with <tt>content</tt>
|
727
727
|
// You can override this method to provide an alternate swap behavior
|
728
728
|
// for <tt>EventContext.partial()</tt>.
|
729
|
-
//
|
729
|
+
//
|
730
730
|
// === Example
|
731
731
|
//
|
732
732
|
// var app = $.sammy(function() {
|
733
|
-
//
|
733
|
+
//
|
734
734
|
// // implements a 'fade out'/'fade in'
|
735
735
|
// this.swap = function(content) {
|
736
736
|
// this.$element().hide('slow').html(content).show('slow');
|
737
737
|
// }
|
738
|
-
//
|
738
|
+
//
|
739
739
|
// get('#/', function() {
|
740
740
|
// this.partial('index.html.erb') // will fade out and in
|
741
741
|
// });
|
742
|
-
//
|
742
|
+
//
|
743
743
|
// });
|
744
744
|
//
|
745
745
|
swap: function(content) {
|
746
746
|
return this.$element().html(content);
|
747
747
|
},
|
748
|
-
|
748
|
+
|
749
749
|
// This thows a '404 Not Found' error.
|
750
750
|
notFound: function(verb, path) {
|
751
751
|
this.trigger('error-404', {verb: verb, path: path});
|
752
752
|
throw('404 Not Found ' + verb + ' ' + path);
|
753
753
|
},
|
754
|
-
|
754
|
+
|
755
755
|
_defineRouteShortcut: function(verb) {
|
756
756
|
var app = this;
|
757
757
|
this[verb] = function(path, callback) {
|
758
758
|
app.route.apply(app, [verb, path, callback]);
|
759
759
|
}
|
760
760
|
},
|
761
|
-
|
761
|
+
|
762
762
|
_checkLocation: function() {
|
763
763
|
try { // try, catch 404s
|
764
764
|
// get current location
|
@@ -783,7 +783,7 @@
|
|
783
783
|
}
|
784
784
|
return returned;
|
785
785
|
},
|
786
|
-
|
786
|
+
|
787
787
|
_checkFormSubmission: function(form) {
|
788
788
|
var $form, path, verb, params, returned;
|
789
789
|
this.trigger('check-form-submission', {form: form});
|
@@ -791,7 +791,7 @@
|
|
791
791
|
path = $form.attr('action');
|
792
792
|
verb = $form.attr('method').toString().toLowerCase();
|
793
793
|
params = $.extend({}, this._parseFormParams($form), {'$form': $form});
|
794
|
-
|
794
|
+
|
795
795
|
try { // catch 404s
|
796
796
|
returned = this.runRoute(verb, path, params);
|
797
797
|
} catch(e) {
|
@@ -803,7 +803,7 @@
|
|
803
803
|
}
|
804
804
|
return (typeof returned == 'undefined') ? false : returned;
|
805
805
|
},
|
806
|
-
|
806
|
+
|
807
807
|
_parseFormParams: function($form) {
|
808
808
|
var params = {};
|
809
809
|
$.each($form.serializeArray(), function(i, field) {
|
@@ -819,7 +819,7 @@
|
|
819
819
|
});
|
820
820
|
return params;
|
821
821
|
},
|
822
|
-
|
822
|
+
|
823
823
|
_parseQueryString: function(path) {
|
824
824
|
var query = {}, parts, pairs, pair, i;
|
825
825
|
|
@@ -834,21 +834,21 @@
|
|
834
834
|
|
835
835
|
return query;
|
836
836
|
},
|
837
|
-
|
837
|
+
|
838
838
|
_listen: function(name, callback) {
|
839
839
|
return this.$element().bind([name, this.eventNamespace()].join('.'), callback);
|
840
840
|
},
|
841
|
-
|
841
|
+
|
842
842
|
_unlisten: function(name, callback) {
|
843
843
|
return this.$element().unbind([name, this.eventNamespace()].join('.'), callback);
|
844
844
|
}
|
845
845
|
|
846
846
|
});
|
847
|
-
|
848
|
-
// <tt>Sammy.EventContext</tt> objects are created every time a route is run or a
|
847
|
+
|
848
|
+
// <tt>Sammy.EventContext</tt> objects are created every time a route is run or a
|
849
849
|
// bound event is triggered. The callbacks for these events are evaluated within a <tt>Sammy.EventContext</tt>
|
850
850
|
// This within these callbacks the special methods of <tt>EventContext</tt> are available.
|
851
|
-
//
|
851
|
+
//
|
852
852
|
// === Example
|
853
853
|
//
|
854
854
|
// $.sammy(function() { with(this) {
|
@@ -878,21 +878,21 @@
|
|
878
878
|
this.path = path;
|
879
879
|
this.params = new Sammy.Object(params);
|
880
880
|
}
|
881
|
-
|
881
|
+
|
882
882
|
Sammy.EventContext.prototype = $.extend({}, Sammy.Object.prototype, {
|
883
|
-
|
883
|
+
|
884
884
|
// A shortcut to the app's <tt>$element()</tt>
|
885
885
|
$element: function() {
|
886
886
|
return this.app.$element();
|
887
887
|
},
|
888
|
-
|
888
|
+
|
889
889
|
// Used for rendering remote templates or documents within the current application/DOM.
|
890
890
|
// By default Sammy and <tt>partial()</tt> know nothing about how your templates
|
891
891
|
// should be interpeted/rendered. This is easy to change, though. <tt>partial()</tt> looks
|
892
892
|
// for a method in <tt>EventContext</tt> that matches the extension of the file you're
|
893
893
|
// fetching (e.g. 'myfile.template' will look for a template() method, 'myfile.haml' => haml(), etc.)
|
894
894
|
// If no matching render method is found it just takes the file contents as is.
|
895
|
-
//
|
895
|
+
//
|
896
896
|
// === Caching
|
897
897
|
//
|
898
898
|
// If you use the <tt>Sammy.Cache</tt> plugin, remote requests will be automatically cached unless
|
@@ -901,22 +901,22 @@
|
|
901
901
|
// === Examples
|
902
902
|
//
|
903
903
|
// There are a couple different ways to use <tt>partial()</tt>:
|
904
|
-
//
|
904
|
+
//
|
905
905
|
// partial('doc.html');
|
906
906
|
// //=> Replaces $element() with the contents of doc.html
|
907
907
|
//
|
908
|
-
// use(Sammy.Template);
|
908
|
+
// use(Sammy.Template);
|
909
909
|
// //=> includes the template() method
|
910
|
-
// partial('doc.template', {name: 'Sammy'});
|
910
|
+
// partial('doc.template', {name: 'Sammy'});
|
911
911
|
// //=> Replaces $element() with the contents of doc.template run through <tt>template()</tt>
|
912
912
|
//
|
913
913
|
// partial('doc.html', function(data) {
|
914
914
|
// // data is the contents of the template.
|
915
|
-
// $('.other-selector').html(data);
|
915
|
+
// $('.other-selector').html(data);
|
916
916
|
// });
|
917
917
|
//
|
918
918
|
partial: function(path, data, callback) {
|
919
|
-
var file_data,
|
919
|
+
var file_data,
|
920
920
|
wrapped_callback,
|
921
921
|
engine,
|
922
922
|
cache_key = 'partial:' + path,
|
@@ -939,7 +939,7 @@
|
|
939
939
|
wrapped_callback = function(response) {
|
940
940
|
if (engine && $.isFunction(context[engine])) {
|
941
941
|
response = context[engine].apply(context, [response, data]);
|
942
|
-
}
|
942
|
+
}
|
943
943
|
callback.apply(context, [response]);
|
944
944
|
context.trigger('changed');
|
945
945
|
};
|
@@ -954,8 +954,8 @@
|
|
954
954
|
});
|
955
955
|
}
|
956
956
|
},
|
957
|
-
|
958
|
-
// Changes the location of the current window. If <tt>to</tt> begins with
|
957
|
+
|
958
|
+
// Changes the location of the current window. If <tt>to</tt> begins with
|
959
959
|
// '#' it only changes the document's hash. If passed more than 1 argument
|
960
960
|
// redirect will join them together with forward slashes.
|
961
961
|
//
|
@@ -966,7 +966,7 @@
|
|
966
966
|
// redirect('#', 'other', 'route');
|
967
967
|
//
|
968
968
|
redirect: function() {
|
969
|
-
var to, args = $.makeArray(arguments),
|
969
|
+
var to, args = $.makeArray(arguments),
|
970
970
|
current_location = this.app.getLocation();
|
971
971
|
if (args.length > 1) {
|
972
972
|
args.unshift('/');
|
@@ -981,31 +981,31 @@
|
|
981
981
|
this.app.trigger('location-changed');
|
982
982
|
}
|
983
983
|
},
|
984
|
-
|
984
|
+
|
985
985
|
// Triggers events on <tt>app</tt> within the current context.
|
986
986
|
trigger: function(name, data) {
|
987
|
-
if (typeof data == 'undefined') data = {};
|
987
|
+
if (typeof data == 'undefined') data = {};
|
988
988
|
if (!data.context) data.context = this;
|
989
989
|
return this.app.trigger(name, data);
|
990
990
|
},
|
991
|
-
|
991
|
+
|
992
992
|
// A shortcut to app's <tt>eventNamespace()</tt>
|
993
993
|
eventNamespace: function() {
|
994
994
|
return this.app.eventNamespace();
|
995
995
|
},
|
996
|
-
|
996
|
+
|
997
997
|
// Raises a possible <tt>notFound()</tt> error for the current path.
|
998
998
|
notFound: function() {
|
999
999
|
return this.app.notFound(this.verb, this.path);
|
1000
1000
|
},
|
1001
|
-
|
1001
|
+
|
1002
1002
|
// //=> Sammy.EventContext: get #/ {}
|
1003
1003
|
toString: function() {
|
1004
1004
|
return "Sammy.EventContext: " + [this.verb, this.path, this.params].join(' ');
|
1005
1005
|
}
|
1006
|
-
|
1006
|
+
|
1007
1007
|
});
|
1008
|
-
|
1008
|
+
|
1009
1009
|
$.sammy = function(app_function) {
|
1010
1010
|
return new Sammy.Application(app_function);
|
1011
1011
|
};
|