compass-jquery-plugin 0.3.2.pre.2 → 0.3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. data/LICENSE.md +20 -20
  2. data/README.md +7 -2
  3. data/VERSION.yml +2 -2
  4. data/lib/jquery/gridify/grid.rb +1 -1
  5. data/lib/jquery/gridify/grid_column.rb +1 -1
  6. data/lib/jquery/gridify/grid_finder.rb +16 -1
  7. data/lib/jquery/gridify/grid_view.rb +1 -1
  8. data/lib/jquery/jqgrid.rb +4 -4
  9. data/lib/jquery/jqtouch.rb +3 -3
  10. data/lib/jquery/jquery.rb +431 -431
  11. data/lib/jquery/jquery_json_response.rb +28 -0
  12. data/lib/jquery/secret_sauce.rb +8 -8
  13. data/lib/jquery/secret_sauce/controller/ui_dialog_controls.rb +13 -13
  14. data/lib/jquery/secret_sauce/controller/ui_grid_controls.rb +18 -18
  15. data/lib/jquery/secret_sauce/helpers/ui_dialog_helper.rb +5 -5
  16. data/lib/jquery/secret_sauce/model/find_for_grid.rb +41 -41
  17. data/templates/dynatree/jquery.dynatree.js +111 -110
  18. data/templates/dynatree/jquery.dynatree.min.js +75 -77
  19. data/templates/dynatree/jquery/dynatree/aero.scss +1 -3
  20. data/templates/dynatree/jquery/dynatree/aqua.scss +1 -3
  21. data/templates/dynatree/jquery/dynatree/crystal.scss +1 -3
  22. data/templates/dynatree/jquery/dynatree/xp.scss +1 -3
  23. data/templates/emulators/emulators/iphone.landscape.png +0 -0
  24. data/templates/emulators/emulators/iphone.landscape.scss +4 -4
  25. data/templates/emulators/emulators/palm.landscape.scss +6 -6
  26. data/templates/emulators/emulators/palm.pre.landscape.png +0 -0
  27. data/templates/ical/jquery.ical.js +3202 -3197
  28. data/templates/ical/jquery.ical.min.js +185 -184
  29. data/templates/ical/jquery/ical.scss +3 -3
  30. data/templates/jqgrid/i18n/jqgrid/locale-ar.js +126 -0
  31. data/templates/jqgrid/i18n/jqgrid/locale-ar.min.js +6 -0
  32. data/templates/jqgrid/i18n/jqgrid/locale-fi.js +45 -47
  33. data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +6 -6
  34. data/templates/jqgrid/jquery.jqGrid.js +2047 -2036
  35. data/templates/jqgrid/jquery.jqGrid.min.js +48 -48
  36. data/templates/jqgrid/manifest.rb +2 -0
  37. data/templates/jqtouch/jquery.jqtouch.js +122 -113
  38. data/templates/jqtouch/jquery.jqtouch.min.js +1 -1
  39. data/templates/jquery/config/initializers/jquery.rb +4 -2
  40. data/templates/jquery/i18n/jquery.ui/datepicker-ar-DZ.js +23 -0
  41. data/templates/jquery/i18n/jquery.ui/datepicker-ar-DZ.min.js +2 -0
  42. data/templates/jquery/i18n/jquery.ui/datepicker-en-AU.js +23 -0
  43. data/templates/jquery/i18n/jquery.ui/datepicker-en-AU.min.js +2 -0
  44. data/templates/jquery/i18n/jquery.ui/datepicker-en-NZ.js +23 -0
  45. data/templates/jquery/i18n/jquery.ui/datepicker-en-NZ.min.js +2 -0
  46. data/templates/jquery/i18n/jquery.ui/datepicker-ml.js +23 -0
  47. data/templates/jquery/i18n/jquery.ui/datepicker-ml.min.js +2 -0
  48. data/templates/jquery/jquery-ui.js +354 -316
  49. data/templates/jquery/jquery-ui.min.js +544 -544
  50. data/templates/jquery/jquery.cookie.js +3 -3
  51. data/templates/jquery/jquery.form.js +271 -140
  52. data/templates/jquery/jquery.form.min.js +19 -17
  53. data/templates/jquery/jquery.layout.js +2435 -2437
  54. data/templates/jquery/jquery.layout.min.js +4 -3
  55. data/templates/jquery/jquery.mousewheel.js +78 -0
  56. data/templates/jquery/jquery.mousewheel.min.js +2 -0
  57. data/templates/jquery/jquery.offline.js +212 -0
  58. data/templates/jquery/jquery.offline.min.js +4 -0
  59. data/templates/jquery/jquery.tmpl.js +15 -22
  60. data/templates/jquery/jquery.tmpl.min.js +12 -12
  61. data/templates/jquery/jquery.tmplPlus.js +1 -0
  62. data/templates/jquery/jquery/ui/_theme.scss +27 -27
  63. data/templates/jquery/json.js +7 -0
  64. data/templates/jquery/json.min.js +7 -0
  65. data/templates/jquery/manifest.rb +14 -2
  66. data/templates/mobile/glyphish/{Read me first - license.txt → License.txt} +0 -0
  67. data/templates/mobile/jquery.mobile.js +1583 -1408
  68. data/templates/mobile/jquery.mobile.min.js +5 -5
  69. data/templates/mobile/jquery/mobile/_base.scss +938 -1038
  70. data/templates/mobile/jquery/mobile/default.scss +25 -26
  71. data/templates/mobile/jquery/mobile/valencia.scss +0 -1
  72. data/templates/mobile/manifest.rb +1 -1
  73. data/templates/tools/config/initializers/tools.rb +2 -0
  74. data/templates/tools/flowplayer.js +24 -0
  75. data/templates/tools/flowplayer.min.js +30 -0
  76. data/templates/tools/jquery.tools.js +4 -3
  77. data/templates/tools/jquery.tools.min.js +1 -1
  78. data/templates/tools/manifest.rb +4 -0
  79. data/templates/tools/swfobject.js +777 -0
  80. data/templates/tools/swfobject.min.js +19 -0
  81. metadata +31 -15
  82. data/templates/jquery/jquery.metadata.js +0 -122
  83. data/templates/jquery/jquery.metadata.min.js +0 -2
@@ -12,7 +12,7 @@ if(b.doCallback&&b.callback){b.doCallback=false;var c=b.callback.split(","),d=c[
12
12
  D=function(b,c){var d=0,e=false,f="";if(!i.browser.msie)if(i.curCSS(b[0],"display",true)=="none"){e=true;f=i.curCSS(b[0],"visibility",true);b.css({display:"block",visibility:"hidden"})}d=parseInt(i.curCSS(b[0],c,true),10)||0;if(e){b.css({display:"none"});f&&f!="hidden"&&b.css({visibility:f})}return d},E=function(b,c){var d;if(M(b)){b=G(b);d=s[b]}else d=i(b);if(c<=0)return 0;else c>0||(c=M(b)?H(b):d.outerWidth());return i.boxModel?c-D(d,"paddingLeft")-D(d,"paddingRight")-(i.curCSS(d[0],"borderLeftStyle",
13
13
  true)=="none"?0:D(d,"borderLeftWidth"))-(i.curCSS(d[0],"borderRightStyle",true)=="none"?0:D(d,"borderRightWidth")):c},A=function(b,c){var d;if(M(b)){b=G(b);d=s[b]}else d=i(b);if(c<=0)return 0;else c>0||(c=M(b)?H(b):d.outerHeight());return i.boxModel?c-D(d,"paddingTop")-D(d,"paddingBottom")-(i.curCSS(d[0],"borderTopStyle",true)=="none"?0:D(d,"borderTopWidth"))-(i.curCSS(d[0],"borderBottomStyle",true)=="none"?0:D(d,"borderBottomWidth")):c},H=function(b,c){var d=s[b],e=p[b],f=t[b],g=c?e.spacing_open:
14
14
  0;e=c?e.spacing_closed:0;return!d||f.isHidden?0:f.isClosed||f.isSliding&&c?e:l[b].dir=="horz"?d.outerHeight()+g:d.outerWidth()+g},U=function(b){var c=q,d=l[b].dir,e=t[b],f=s[ga[b]],g=p[b].spacing_open,k=p[ga[b]].spacing_open,h=!f?0:d=="horz"?f.outerHeight():f.outerWidth();f=e.minSize||0;d=Math.min(e.maxSize||9999,(d=="horz"?c.innerHeight:c.innerWidth)-g-h-k);var m,j;switch(b){case "north":m=c.offsetTop+f;j=c.offsetTop+d;break;case "west":m=c.offsetLeft+f;j=c.offsetLeft+d;break;case "south":m=c.offsetTop+
15
- c.innerHeight-d;j=c.offsetTop+c.innerHeight-f;break;case "east":m=c.offsetLeft+c.innerWidth-d;j=c.offsetLeft+c.innerWidth-f}i.extend(e,{minSize:f,maxSize:d,minPosition:m,maxPosition:j})},ja=function(){var b={top:H("north",true),bottom:H("south",true),left:H("west",true),right:H("east",true),width:0,height:0};with(b){width=q.innerWidth-left-right;height=q.innerHeight-bottom-top;top+=q.top;bottom+=q.bottom;left+=q.left;right+=q.right}return b},ka=function(b){var c={},d,e,f;i.each("Left,Right,Top,Bottom".split(","),
15
+ c.innerHeight-d;j=c.offsetTop+c.innerHeight-f;break;case "east":m=c.offsetLeft+c.innerWidth-d;j=c.offsetLeft+c.innerWidth-f}i.extend(e,{minSize:f,maxSize:d,minPosition:m,maxPosition:j})},ja=function(){var b={top:H("north",true),bottom:H("south",true),left:H("west",true),right:H("east",true),width:0,height:0};b.width=q.innerWidth-left-right;b.height=q.innerHeight-bottom-top;b.top+=q.top;b.bottom+=q.bottom;b.left+=q.left;b.right+=q.right;return b},ka=function(b){var c={},d,e,f;i.each("Left,Right,Top,Bottom".split(","),
16
16
  function(){d=G(this);e=c["border"+d]=D(b,"border"+d+"Width");f=c["padding"+d]=D(b,"padding"+d);c["offset"+d]=e+f;if(b==z)c[d.toLowerCase()]=i.boxModel?f:0});c.innerWidth=c.outerWidth=b.outerWidth();c.innerHeight=c.outerHeight=b.outerHeight();if(i.boxModel){c.innerWidth-=c.offsetLeft+c.offsetRight;c.innerHeight-=c.offsetTop+c.offsetBottom}return c},pa=function(b,c,d,e){var f=window.layout=window.layout||{};f=f.timers=f.timers||{};b="layout_"+t.id+"_"+b+"_"+c;f[b]||(f[b]=setTimeout(d,e))},V=function(b,
17
17
  c){var d=window.layout=window.layout||{};d=d.timers=d.timers||{};var e="layout_"+t.id+"_"+b+"_"+c;if(d[e]){clearTimeout(d[e]);delete d[e];return true}else return false},qa=function(){try{if(z[0].tagName=="BODY"){i("html").css({height:"100%",overflow:"hidden"});i("body").css({position:"relative",height:"100%",overflow:"hidden",margin:0,padding:0,border:"none"})}else{var b={overflow:"hidden"},c=z.css("position"),d=z.css("height");if(!z.hasClass("ui-layout-pane")){if(!c||"fixed,absolute,relative".indexOf(c)<
18
18
  0)b.position="relative";if(!d||d=="auto")b.height="100%"}z.css(b)}}catch(e){}q=t.container=ka(z)},ra=function(){i.each(l.borderPanes.split(","),function(b,c){var d=p[c];if(d.enableCursorHotkey||d.customHotkey){i(document).keydown(na);return false}})},sa=function(){u=oa(u);if(u.effects){i.extend(Z,u.effects);delete u.effects}i.each("name,scrollToBookmarkOnLoad".split(","),function(d,e){if(u[e]!==undefined)p[e]=u[e];else if(u.defaults[e]!==undefined){p[e]=u.defaults[e];delete u.defaults[e]}});i.each("paneSelector,resizerCursor,customHotkey".split(","),
@@ -45,5 +45,6 @@ false;n=f.isClosed?w:r;if(r)r.css("display",f.isClosed?"none":"block");if(w)w.cs
45
45
  e=q.innerWidth<b,f,g;if(d||e)i.each(["south","north","east","west"],function(k,h){f=t[h];g=l[h].dir;if(!f.isClosed&&(d&&g=="horz"||e&&g=="vert")){U(h);f.size>f.maxSize&&ba(h,f.maxSize)}});L("all");P("all")},z=i(this).css({overflow:"hidden"}),s={},N={},B={},O={},l={allPanes:"north,south,east,west,center",borderPanes:"north,south,east,west",zIndex:{resizer_normal:1,pane_normal:2,mask:4,sliding:100,resizing:1E4,animation:1E4},resizers:{cssReq:{position:"absolute",padding:0,margin:0,fontSize:"1px",textAlign:"left",
46
46
  overflow:"hidden",zIndex:1},cssDef:{background:"#DDD",border:"none"}},togglers:{cssReq:{position:"absolute",display:"block",padding:0,margin:0,overflow:"hidden",textAlign:"center",fontSize:"1px",cursor:"pointer",zIndex:1},cssDef:{background:"#AAA"}},content:{cssReq:{overflow:"auto"},cssDef:{}},defaults:{cssReq:{position:"absolute",margin:0,zIndex:2},cssDef:{padding:"10px",background:"#FFF",border:"1px solid #BBB",overflow:"auto"}},north:{edge:"top",sizeType:"height",dir:"horz",cssReq:{top:0,bottom:"auto",
47
47
  left:0,right:0,width:"auto"}},south:{edge:"bottom",sizeType:"height",dir:"horz",cssReq:{top:"auto",bottom:0,left:0,right:0,width:"auto"}},east:{edge:"right",sizeType:"width",dir:"vert",cssReq:{left:"auto",right:0,top:"auto",bottom:"auto",height:"auto"}},west:{edge:"left",sizeType:"width",dir:"vert",cssReq:{left:0,right:"auto",top:"auto",bottom:"auto",height:"auto"}},center:{dir:"center",cssReq:{left:"auto",right:"auto",top:"auto",bottom:"auto",height:"auto",width:"auto"}}},q=t.container;(function(){sa();
48
- qa();ta();ua();va();Q("all");if(p.scrollToBookmarkOnLoad)with(self.location)hash&&replace(hash);ra();i(window).resize(function(){var b="timerLayout_"+t.id;window[b]&&clearTimeout(window[b]);window[b]=null;window[b]=setTimeout(ma,100)})})();return{options:p,state:t,panes:s,toggle:R,open:K,close:I,hide:$,show:W,resizeContent:Q,sizePane:ba,resizeAll:ma,addToggleBtn:function(b,c){var d=T(b,c,"toggle");if(d)d.attr("title",t[c].isClosed?"Open":"Close").click(function(e){R(c);e.stopPropagation()})},addOpenBtn:function(b,
49
- c){var d=T(b,c,"open");d&&d.attr("title","Open").click(function(e){K(c);e.stopPropagation()})},addCloseBtn:function(b,c){var d=T(b,c,"close");d&&d.attr("title","Close").click(function(e){I(c);e.stopPropagation()})},addPinBtn:function(b,c){var d=T(b,c,"pin");if(d){var e=t[c];d.click(function(f){Y(i(this),c,e.isSliding||e.isClosed);e.isSliding||e.isClosed?K(c):I(c);f.stopPropagation()});Y(d,c,!e.isClosed&&!e.isSliding);l[c].pins.push(b)}},allowOverflow:ea,resetOverflow:S,cssWidth:E,cssHeight:A}}})(jQuery);
48
+ qa();ta();ua();va();Q("all");p.scrollToBookmarkOnLoad&&self.location.hash&&replace(self.location.hash);ra();i(window).resize(function(){var b="timerLayout_"+t.id;window[b]&&clearTimeout(window[b]);window[b]=null;window[b]=setTimeout(ma,100)})})();return{options:p,state:t,panes:s,toggle:R,open:K,close:I,hide:$,show:W,resizeContent:Q,sizePane:ba,resizeAll:ma,addToggleBtn:function(b,c){var d=T(b,c,"toggle");if(d)d.attr("title",t[c].isClosed?"Open":"Close").click(function(e){R(c);e.stopPropagation()})},
49
+ addOpenBtn:function(b,c){var d=T(b,c,"open");d&&d.attr("title","Open").click(function(e){K(c);e.stopPropagation()})},addCloseBtn:function(b,c){var d=T(b,c,"close");d&&d.attr("title","Close").click(function(e){I(c);e.stopPropagation()})},addPinBtn:function(b,c){var d=T(b,c,"pin");if(d){var e=t[c];d.click(function(f){Y(i(this),c,e.isSliding||e.isClosed);e.isSliding||e.isClosed?K(c):I(c);f.stopPropagation()});Y(d,c,!e.isClosed&&!e.isSliding);l[c].pins.push(b)}},allowOverflow:ea,resetOverflow:S,cssWidth:E,
50
+ cssHeight:A}}})(jQuery);
@@ -0,0 +1,78 @@
1
+ /*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
2
+ * Licensed under the MIT License (LICENSE.txt).
3
+ *
4
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
5
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
6
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
7
+ *
8
+ * Version: 3.0.4
9
+ *
10
+ * Requires: 1.2.2+
11
+ */
12
+
13
+ (function($) {
14
+
15
+ var types = ['DOMMouseScroll', 'mousewheel'];
16
+
17
+ $.event.special.mousewheel = {
18
+ setup: function() {
19
+ if ( this.addEventListener ) {
20
+ for ( var i=types.length; i; ) {
21
+ this.addEventListener( types[--i], handler, false );
22
+ }
23
+ } else {
24
+ this.onmousewheel = handler;
25
+ }
26
+ },
27
+
28
+ teardown: function() {
29
+ if ( this.removeEventListener ) {
30
+ for ( var i=types.length; i; ) {
31
+ this.removeEventListener( types[--i], handler, false );
32
+ }
33
+ } else {
34
+ this.onmousewheel = null;
35
+ }
36
+ }
37
+ };
38
+
39
+ $.fn.extend({
40
+ mousewheel: function(fn) {
41
+ return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
42
+ },
43
+
44
+ unmousewheel: function(fn) {
45
+ return this.unbind("mousewheel", fn);
46
+ }
47
+ });
48
+
49
+
50
+ function handler(event) {
51
+ var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
52
+ event = $.event.fix(orgEvent);
53
+ event.type = "mousewheel";
54
+
55
+ // Old school scrollwheel delta
56
+ if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
57
+ if ( event.detail ) { delta = -event.detail/3; }
58
+
59
+ // New school multidimensional scroll (touchpads) deltas
60
+ deltaY = delta;
61
+
62
+ // Gecko
63
+ if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
64
+ deltaY = 0;
65
+ deltaX = -1*delta;
66
+ }
67
+
68
+ // Webkit
69
+ if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
70
+ if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
71
+
72
+ // Add event and delta to the front of the arguments
73
+ args.unshift(event, delta, deltaX, deltaY);
74
+
75
+ return $.event.handle.apply(this, args);
76
+ }
77
+
78
+ })(jQuery);
@@ -0,0 +1,2 @@
1
+ (function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=
2
+ f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
@@ -0,0 +1,212 @@
1
+ /*!
2
+ * jQuery Offline
3
+ * Version 1.0.0
4
+ *
5
+ * http://github.com/wycats/jquery-offline
6
+ *
7
+ * Copyright 2010, Yehuda Katz
8
+ *
9
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ * of this software and associated documentation files (the "Software"), to deal
11
+ * in the Software without restriction, including without limitation the rights
12
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ * copies of the Software, and to permit persons to whom the Software is
14
+ * furnished to do so, subject to the following conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be included in
17
+ * all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ * THE SOFTWARE.
26
+ *
27
+ * Date: Fri Jul 9 10:20:00 2010 -0800
28
+ */
29
+
30
+ (function($) {
31
+
32
+ var prefix = "offline.jquery:",
33
+ mostRecent = null,
34
+ requesting = {};
35
+
36
+ // Allow the user to explicitly turn off localStorage
37
+ // before loading this plugin
38
+ if (typeof $.support.localStorage === "undefined") {
39
+ $.support.localStorage = !!window.localStorage;
40
+ }
41
+
42
+ // modified getJSON which uses ifModified: true
43
+ function getJSON(url, data, fn) {
44
+ if (jQuery.isFunction(data)) {
45
+ fn = data;
46
+ data = null;
47
+ }
48
+
49
+ var requestingKey = url + "?" + $.param(data || {});
50
+ if (requesting[requestingKey]) {
51
+ return false;
52
+ }
53
+
54
+ requesting[requestingKey] = true;
55
+
56
+ return jQuery.ajax({
57
+ type: "GET",
58
+ url: url,
59
+ data: data,
60
+ success: function(responseData, text) {
61
+ delete requesting[requestingKey];
62
+
63
+ // handle lack of response (error callback isn't called in this case)
64
+ if (undefined === responseData) {
65
+ if (!window.navigator.onLine) {
66
+ // requeue the request for the next time we come online
67
+ mostRecent = function() {
68
+ getJSON(url, data, fn);
69
+ };
70
+ }
71
+ return;
72
+ }
73
+
74
+ fn(responseData, text);
75
+ },
76
+ error: function() {
77
+ delete requesting[requestingKey];
78
+ },
79
+ dataType: "json",
80
+ ifModified: true
81
+ });
82
+ }
83
+
84
+ if ($.support.localStorage) {
85
+ // If localStorage is available, define jQuery.retrieveJSON
86
+ // and jQuery.clearJSON to operate in terms of the offline
87
+ // cache
88
+ // If the user comes online, run the most recent request
89
+ // that was queued due to the user being offline
90
+ $(window).bind("online", function() {
91
+ if (mostRecent) {
92
+ mostRecent();
93
+ }
94
+ });
95
+
96
+ // If the user goes offline, hide any loading bar
97
+ // the user may have created
98
+ $(window).bind("offline", function() {
99
+ jQuery.event.trigger("ajaxStop");
100
+ });
101
+
102
+ $.retrieveJSON = function(url, data, fn) {
103
+ // allow jQuery.retrieveJSON(url, fn)
104
+ if ($.isFunction(data)) {
105
+ fn = data;
106
+ data = {};
107
+ }
108
+
109
+ // remember when this request started so we can report
110
+ // the time when a follow-up Ajax request completes.
111
+ // this is especially important when the user comes
112
+ // back online, since retrieveDate may be minutes,
113
+ // hours or even days before the Ajax request finally
114
+ // completes
115
+ var retrieveDate = new Date;
116
+
117
+ // get a String value for the data passed in, and then
118
+ // use it to calculate a cache key
119
+ var param = $.param(data),
120
+ key = prefix + url + ":" + param,
121
+ text = localStorage[key],
122
+ dateString = localStorage[key + ":date"],
123
+ date = new Date(Date.parse(dateString));
124
+
125
+ function cleanupLocalStorage() {
126
+ // take all date keys and remove the oldest half
127
+ var dateKeys = [];
128
+ for (var i = 0; i < localStorage.length; ++i) {
129
+ var key = localStorage.key(i);
130
+ if (/:date$/.test(key)) {
131
+ dateKeys.push(key);
132
+ }
133
+ }
134
+ dateKeys.sort(function(a, b) {
135
+ var date_a = localStorage[a], date_b = localStorage[b];
136
+ return date_a < date_b ? -1 : (date_a > date_b ? +1 : 0);
137
+ });
138
+ for (var i = 0; i < dateKeys.length / 2; ++i) {
139
+ var key = dateKeys[i];
140
+ delete localStorage[key];
141
+ delete localStorage[key.substr(0, key.length - 5)]; // :date
142
+ }
143
+ }
144
+
145
+ // create a function that will make an Ajax request and
146
+ // store the result in the cache. This function will be
147
+ // deferred until later if the user is offline
148
+ function getData() {
149
+ getJSON(url, data, function(json, status) {
150
+ if ( status == 'notmodified' ) {
151
+ // Just return if the response has a 304 status code
152
+ return false;
153
+ }
154
+
155
+ while (true) {
156
+ try {
157
+ localStorage[key] = JSON.stringify(json);
158
+ localStorage[key + ":date"] = new Date;
159
+ break;
160
+ } catch (e) {
161
+ if (e.name == "QUOTA_EXCEEDED_ERR" || e.name ==
162
+ "NS_ERROR_DOM_QUOTA_REACHED") {
163
+ cleanupLocalStorage();
164
+ }
165
+ }
166
+ }
167
+
168
+ // If this is a follow-up request, create an object
169
+ // containing both the original time of the cached
170
+ // data and the time that the data was originally
171
+ // retrieved from the cache. With this information,
172
+ // users of jQuery Offline can provide the user
173
+ // with improved feedback if the lag is large
174
+ var data = text && { cachedAt: date, retrievedAt: retrieveDate };
175
+ fn(json, status, data);
176
+ });
177
+ }
178
+
179
+ // If there is anything in the cache, call the callback
180
+ // right away, with the "cached" status string
181
+ if( text ) {
182
+ var response = fn( $.parseJSON(text), "cached", { cachedAt: date } );
183
+ if( response === false ) return false;
184
+ }
185
+
186
+ // If the user is online, make the Ajax request right away;
187
+ // otherwise, make it the most recent callback so it will
188
+ // get triggered when the user comes online
189
+ if (window.navigator.onLine) {
190
+ getData();
191
+ } else {
192
+ mostRecent = getData;
193
+ }
194
+
195
+ return true;
196
+ };
197
+
198
+ // jQuery.clearJSON is simply a wrapper around deleting the
199
+ // localStorage for a URL/data pair
200
+ $.clearJSON = function(url, data) {
201
+ var param = $.param(data || {});
202
+ delete localStorage[prefix + url + ":" + param];
203
+ delete localStorage[prefix + url + ":" + param + ":date"];
204
+ };
205
+ } else {
206
+ // If localStorage is unavailable, just make all requests
207
+ // regular Ajax requests.
208
+ $.retrieveJSON = getJSON;
209
+ $.clearJSON = $.noop;
210
+ }
211
+
212
+ })(jQuery);
@@ -0,0 +1,4 @@
1
+ (function(a){function m(e,b,c){if(jQuery.isFunction(b)){c=b;b=null}var h=e+"?"+a.param(b||{});if(j[h])return false;j[h]=true;return jQuery.ajax({type:"GET",url:e,data:b,success:function(i,n){delete j[h];if(undefined===i)window.navigator.onLine||(k=function(){m(e,b,c)});else c(i,n)},error:function(){delete j[h]},dataType:"json",ifModified:true})}var k=null,j={};if(typeof a.support.localStorage==="undefined")a.support.localStorage=!!window.localStorage;if(a.support.localStorage){a(window).bind("online",
2
+ function(){k&&k()});a(window).bind("offline",function(){jQuery.event.trigger("ajaxStop")});a.retrieveJSON=function(e,b,c){function h(){for(var g=[],d=0;d<localStorage.length;++d){var f=localStorage.key(d);/:date$/.test(f)&&g.push(f)}g.sort(function(s,t){var p=localStorage[s],q=localStorage[t];return p<q?-1:p>q?+1:0});for(d=0;d<g.length/2;++d){f=g[d];delete localStorage[f];delete localStorage[f.substr(0,f.length-5)]}}function i(){m(e,b,function(g,d){if(d=="notmodified")return false;for(;;)try{localStorage[l]=
3
+ JSON.stringify(g);localStorage[l+":date"]=new Date;break}catch(f){if(f.name=="QUOTA_EXCEEDED_ERR"||f.name=="NS_ERROR_DOM_QUOTA_REACHED")h()}c(g,d,o&&{cachedAt:r,retrievedAt:n})})}if(a.isFunction(b)){c=b;b={}}var n=new Date,u=a.param(b),l="offline.jquery:"+e+":"+u,o=localStorage[l],r=new Date(Date.parse(localStorage[l+":date"]));if(o)if(c(a.parseJSON(o),"cached",{cachedAt:r})===false)return false;if(window.navigator.onLine)i();else k=i;return true};a.clearJSON=function(e,b){var c=a.param(b||{});delete localStorage["offline.jquery:"+
4
+ e+":"+c];delete localStorage["offline.jquery:"+e+":"+c+":date"]}}else{a.retrieveJSON=m;a.clearJSON=a.noop}})(jQuery);
@@ -1,6 +1,7 @@
1
1
  /*!
2
- * jQuery Templates Plugin
2
+ * jQuery Templates Plugin 1.0.0pre
3
3
  * http://github.com/jquery/jquery-tmpl
4
+ * Requires jQuery 1.4.2
4
5
  *
5
6
  * Copyright Software Freedom Conservancy, Inc.
6
7
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -27,7 +28,7 @@
27
28
  update: tiUpdate
28
29
  };
29
30
  if ( options ) {
30
- jQuery.extend( newItem, options, { nodes: [], parent: parentItem } );
31
+ jQuery.extend( newItem, options, { nodes: [], parent: parentItem });
31
32
  }
32
33
  if ( fn ) {
33
34
  // Build the hierarchical content to be used during insertion into DOM
@@ -60,7 +61,7 @@
60
61
  for ( i = 0, l = insert.length; i < l; i++ ) {
61
62
  cloneIndex = i;
62
63
  elems = (i > 0 ? this.clone(true) : this).get();
63
- jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
64
+ jQuery( insert[i] )[ original ]( elems );
64
65
  ret = ret.concat( elems );
65
66
  }
66
67
  cloneIndex = 0;
@@ -91,14 +92,9 @@
91
92
  },
92
93
 
93
94
  domManip: function( args, table, callback, options ) {
94
- // This appears to be a bug in the appendTo, etc. implementation
95
- // it should be doing .call() instead of .apply(). See #6227
96
- if ( args[0] && args[0].nodeType ) {
97
- var dmArgs = jQuery.makeArray( arguments ), argsLength = args.length, i = 0, tmplItem;
98
- while ( i < argsLength && !(tmplItem = jQuery.data( args[i++], "tmplItem" ))) {}
99
- if ( argsLength > 1 ) {
100
- dmArgs[0] = [jQuery.makeArray( args )];
101
- }
95
+ if ( args[0] && jQuery.isArray( args[0] )) {
96
+ var dmArgs = jQuery.makeArray( arguments ), elems = args[0], elemsLength = elems.length, i = 0, tmplItem;
97
+ while ( i < elemsLength && !(tmplItem = jQuery.data( elems[i++], "tmplItem" ))) {}
102
98
  if ( tmplItem && cloneIndex ) {
103
99
  dmArgs[2] = function( fragClone ) {
104
100
  // Handler called by oldManip when rendered template has been inserted into DOM.
@@ -187,7 +183,10 @@
187
183
  }
188
184
  if ( tmpl.nodeType ) {
189
185
  // If this is a template block, use cached copy, or generate tmpl function and cache.
190
- tmpl = jQuery.data( tmpl, "tmpl" ) || jQuery.data( tmpl, "tmpl", buildTmplFn( tmpl.innerHTML ));
186
+ tmpl = jQuery.data( tmpl, "tmpl" ) || jQuery.data( tmpl, "tmpl", buildTmplFn( tmpl.innerHTML ));
187
+ // Issue: In IE, if the container element is not a script block, the innerHTML will remove quotes from attribute values whenever the value does not include white space.
188
+ // This means that foo="${x}" will not work if the value of x includes white space: foo="${x}" -> foo=value of x.
189
+ // To correct this, include space in tag: foo="${ x }" -> foo="value of x"
191
190
  }
192
191
  return typeof name === "string" ? (jQuery.template[name] = tmpl) : tmpl;
193
192
  }
@@ -341,7 +340,7 @@
341
340
  args = args ? ("," + unescape( args ) + ")") : (parens ? ")" : "");
342
341
  // Support for target being things like a.toLowerCase();
343
342
  // In that case don't call with template item as 'this' pointer. Just evaluate...
344
- expr = parens ? (target.indexOf(".") > -1 ? target + parens : ("(" + target + ").call($item" + args)) : target;
343
+ expr = parens ? (target.indexOf(".") > -1 ? target + unescape( parens ) : ("(" + target + ").call($item" + args)) : target;
345
344
  exprAutoFnDetect = parens ? expr : "(typeof(" + target + ")==='function'?(" + target + ").call($item):(" + target + "))";
346
345
  } else {
347
346
  exprAutoFnDetect = expr = def.$1 || "null";
@@ -352,13 +351,7 @@
352
351
  .split( "$notnull_1" ).join( target ? "typeof(" + target + ")!=='undefined' && (" + target + ")!=null" : "true" )
353
352
  .split( "$1a" ).join( exprAutoFnDetect )
354
353
  .split( "$1" ).join( expr )
355
- .split( "$2" ).join( fnargs ?
356
- fnargs.replace( /\s*([^\(]+)\s*(\((.*?)\))?/g, function( all, name, parens, params ) {
357
- params = params ? ("," + params + ")") : (parens ? ")" : "");
358
- return params ? ("(" + name + ").call($item" + params) : all;
359
- })
360
- : (def.$2||"")
361
- ) +
354
+ .split( "$2" ).join( fnargs || def.$2 || "" ) +
362
355
  "_.push('";
363
356
  }) +
364
357
  "');}return _;"
@@ -407,7 +400,7 @@
407
400
  if ( !(tmplItem = newTmplItems[key]) ) {
408
401
  // The item is for wrapped content, and was copied from the temporary parent wrappedItem.
409
402
  tmplItem = wrappedItems[key];
410
- tmplItem = newTmplItem( tmplItem, newTmplItems[pntNode]||wrappedItems[pntNode], null, true );
403
+ tmplItem = newTmplItem( tmplItem, newTmplItems[pntNode]||wrappedItems[pntNode] );
411
404
  tmplItem.key = ++itemKey;
412
405
  newTmplItems[itemKey] = tmplItem;
413
406
  }
@@ -443,7 +436,7 @@
443
436
  function cloneTmplItem( key ) {
444
437
  key = key + keySuffix;
445
438
  tmplItem = newClonedItems[key] =
446
- (newClonedItems[key] || newTmplItem( tmplItem, newTmplItems[tmplItem.parent.key + keySuffix] || tmplItem.parent, null, true ));
439
+ (newClonedItems[key] || newTmplItem( tmplItem, newTmplItems[tmplItem.parent.key + keySuffix] || tmplItem.parent ));
447
440
  }
448
441
  }
449
442
  }
@@ -1,12 +1,12 @@
1
- (function(d){function s(a,b,e,c){c={data:c||(b?b.data:{}),_wrap:b?b._wrap:null,tmpl:null,parent:b||null,nodes:[],calls:I,nest:J,wrap:K,html:L,update:M};a&&d.extend(c,a,{nodes:[],parent:b});if(e){c.tmpl=e;c._ctnt=c._ctnt||c.tmpl(d,c);c.key=++t;(y.length?u:m)[t]=c}return c}function v(a,b,e){var c;e=e?d.map(e,function(f){return typeof f==="string"?a.key?f.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+q+'="'+a.key+'" $2'):f:v(f,a,f._ctnt)}):a;if(b)return e;e=e.join("");e.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,
2
- function(f,g,h,j){c=d(h).get();C(c);if(g)c=z(g).concat(c);if(j)c=c.concat(z(j))});return c?c:z(e)}function z(a){var b=document.createElement("div");b.innerHTML=a;return d.makeArray(b.childNodes)}function D(a){return new Function("jQuery","$item","var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('"+d.trim(a).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
3
- function(b,e,c,f,g,h,j){b=d.tmpl.tag[c];if(!b)throw"Template command not found: "+c;c=b._default||[];if(h&&!/\w$/.test(g)){g+=h;h=""}if(g){g=A(g);j=j?","+A(j)+")":h?")":"";j=h?g.indexOf(".")>-1?g+h:"("+g+").call($item"+j:g;h=h?j:"(typeof("+g+")==='function'?("+g+").call($item):("+g+"))"}else h=j=c.$1||"null";f=A(f);return"');"+b[e?"close":"open"].split("$notnull_1").join(g?"typeof("+g+")!=='undefined' && ("+g+")!=null":"true").split("$1a").join(h).split("$1").join(j).split("$2").join(f?f.replace(/\s*([^\(]+)\s*(\((.*?)\))?/g,
4
- function(p,n,w,l){return(l=l?","+l+")":w?")":"")?"("+n+").call($item"+l:p}):c.$2||"")+"_.push('"})+"');}return _;")}function E(a,b){a._wrap=v(a,true,d.isArray(b)?b:[F.test(b)?b:d(b).html()]).join("")}function A(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function C(a){function b(n){function w(B){B+=e;i=g[B]=g[B]||s(i,m[i.parent.key+e]||i.parent,null,true)}var l,k=n,i,r;if(r=n.getAttribute(q)){for(;k.parentNode&&(k=k.parentNode).nodeType===1&&!(l=k.getAttribute(q)););if(l!==r){k=k.parentNode?
5
- k.nodeType===11?0:k.getAttribute(q)||0:0;if(!(i=m[r])){i=u[r];i=s(i,m[k]||u[k],null,true);i.key=++t;m[t]=i}o&&w(r)}n.removeAttribute(q)}else if(o&&(i=d.data(n,"tmplItem"))){w(i.key);m[i.key]=i;k=(k=d.data(n.parentNode,"tmplItem"))?k.key:0}if(i){for(l=i;l&&l.key!=k;){l.nodes.push(n);l=l.parent}delete i._ctnt;delete i._wrap;d.data(n,"tmplItem",i)}}var e="_"+o,c,f,g={},h,j,p;h=0;for(j=a.length;h<j;h++)if((c=a[h]).nodeType===1){f=c.getElementsByTagName("*");for(p=f.length-1;p>=0;p--)b(f[p]);b(c)}}function I(a,
6
- b,e,c){if(!a)return y.pop();y.push({_:a,tmpl:b,item:this,data:e,options:c})}function J(a,b,e){return d.tmpl(d.template(a),b,e,this)}function K(a,b){var e=a.options||{};e.wrapped=b;return d.tmpl(d.template(a.tmpl),a.data,e,a.item)}function L(a,b){var e=this._wrap;return d.map(d(d.isArray(e)?e.join(""):e).filter(a||"*"),function(c){if(b)c=c.innerText||c.textContent;else{var f;if(!(f=c.outerHTML)){f=document.createElement("div");f.appendChild(c.cloneNode(true));f=f.innerHTML}c=f}return c})}function M(){var a=
7
- this.nodes;d.tmpl(null,null,null,this).insertBefore(a[0]);d(a).remove()}var G=d.fn.domManip,q="_tmplitem",F=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,m={},u={},x,H={key:0,data:{}},t=0,o=0,y=[];d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(e){var c=[];e=d(e);var f,g,h;f=this.length===1&&this[0].parentNode;x=m||{};if(f&&f.nodeType===11&&f.childNodes.length===1&&e.length===1){e[b](this[0]);c=this}else{g=0;for(h=
8
- e.length;g<h;g++){o=g;f=(g>0?this.clone(true):this).get();d.fn[b].apply(d(e[g]),f);c=c.concat(f)}o=0;c=this.pushStack(c,a,e.selector)}e=x;x=null;d.tmpl.complete(e);return c}});d.fn.extend({tmpl:function(a,b,e){return d.tmpl(this[0],a,b,e)},tmplItem:function(){return d.tmplItem(this[0])},template:function(a){return d.template(a,this[0])},domManip:function(a,b,e){if(a[0]&&a[0].nodeType){for(var c=d.makeArray(arguments),f=a.length,g=0,h;g<f&&!(h=d.data(a[g++],"tmplItem")););if(f>1)c[0]=[d.makeArray(a)];
9
- if(h&&o)c[2]=function(j){d.tmpl.afterManip(this,j,e)};G.apply(this,c)}else G.apply(this,arguments);o=0;x||d.tmpl.complete(m);return this}});d.extend({tmpl:function(a,b,e,c){var f=!c;if(f){c=H;a=d.template[a]||d.template(null,a);u={}}else if(!a){a=c.tmpl;m[c.key]=c;c.nodes=[];c.wrapped&&E(c,c.wrapped);return d(v(c,null,c.tmpl(d,c)))}if(!a)return[];if(typeof b==="function")b=b.call(c||{});e&&e.wrapped&&E(e,e.wrapped);b=d.isArray(b)?d.map(b,function(g){return g?s(e,c,a,g):null}):[s(e,c,a,b)];return f?
10
- d(v(c,null,b)):b},tmplItem:function(a){var b;if(a instanceof d)a=a[0];for(;a&&a.nodeType===1&&!(b=d.data(a,"tmplItem"))&&(a=a.parentNode););return b||H},template:function(a,b){if(b){if(typeof b==="string")b=D(b);else if(b instanceof d)b=b[0]||{};if(b.nodeType)b=d.data(b,"tmpl")||d.data(b,"tmpl",D(b.innerHTML));return typeof a==="string"?d.template[a]=b:b}return a?typeof a!=="string"?d.template(null,a):d.template[a]||d.template(null,F.test(a)?a:d(a)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});
11
- d.extend(d.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){_=_.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(_,$1,$2);_=[];",close:"call=$item.calls();_=call._.concat($item.wrap(call,_));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){_.push($1a);}"},"=":{_default:{$1:"$data"},
12
- open:"if($notnull_1){_.push($.encode($1a));}"},"!":{open:""}},complete:function(){m={}},afterManip:function(a,b,e){var c=b.nodeType===11?d.makeArray(b.childNodes):b.nodeType===1?[b]:[];e.call(a,b);C(c);o++}})})(jQuery);
1
+ (function(d){function s(a,b,e,c){c={data:c||(b?b.data:{}),_wrap:b?b._wrap:null,tmpl:null,parent:b||null,nodes:[],calls:I,nest:J,wrap:K,html:L,update:M};a&&d.extend(c,a,{nodes:[],parent:b});if(e){c.tmpl=e;c._ctnt=c._ctnt||c.tmpl(d,c);c.key=++t;(y.length?u:l)[t]=c}return c}function v(a,b,e){var c;e=e?d.map(e,function(f){return typeof f==="string"?a.key?f.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+q+'="'+a.key+'" $2'):f:v(f,a,f._ctnt)}):a;if(b)return e;e=e.join("");e.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,
2
+ function(f,g,h,j){c=d(h).get();B(c);if(g)c=z(g).concat(c);if(j)c=c.concat(z(j))});return c?c:z(e)}function z(a){var b=document.createElement("div");b.innerHTML=a;return d.makeArray(b.childNodes)}function C(a){return new Function("jQuery","$item","var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('"+d.trim(a).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
3
+ function(b,e,c,f,g,h,j){b=d.tmpl.tag[c];if(!b)throw"Template command not found: "+c;c=b._default||[];if(h&&!/\w$/.test(g)){g+=h;h=""}if(g){g=w(g);j=j?","+w(j)+")":h?")":"";j=h?g.indexOf(".")>-1?g+w(h):"("+g+").call($item"+j:g;h=h?j:"(typeof("+g+")==='function'?("+g+").call($item):("+g+"))"}else h=j=c.$1||"null";f=w(f);return"');"+b[e?"close":"open"].split("$notnull_1").join(g?"typeof("+g+")!=='undefined' && ("+g+")!=null":"true").split("$1a").join(h).split("$1").join(j).split("$2").join(f||c.$2||
4
+ "")+"_.push('"})+"');}return _;")}function D(a,b){a._wrap=v(a,true,d.isArray(b)?b:[E.test(b)?b:d(b).html()]).join("")}function w(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function B(a){function b(o){function F(A){A+=e;i=g[A]=g[A]||s(i,l[i.parent.key+e]||i.parent)}var m,k=o,i,r;if(r=o.getAttribute(q)){for(;k.parentNode&&(k=k.parentNode).nodeType===1&&!(m=k.getAttribute(q)););if(m!==r){k=k.parentNode?k.nodeType===11?0:k.getAttribute(q)||0:0;if(!(i=l[r])){i=u[r];i=s(i,l[k]||u[k]);
5
+ i.key=++t;l[t]=i}n&&F(r)}o.removeAttribute(q)}else if(n&&(i=d.data(o,"tmplItem"))){F(i.key);l[i.key]=i;k=(k=d.data(o.parentNode,"tmplItem"))?k.key:0}if(i){for(m=i;m&&m.key!=k;){m.nodes.push(o);m=m.parent}delete i._ctnt;delete i._wrap;d.data(o,"tmplItem",i)}}var e="_"+n,c,f,g={},h,j,p;h=0;for(j=a.length;h<j;h++)if((c=a[h]).nodeType===1){f=c.getElementsByTagName("*");for(p=f.length-1;p>=0;p--)b(f[p]);b(c)}}function I(a,b,e,c){if(!a)return y.pop();y.push({_:a,tmpl:b,item:this,data:e,options:c})}function J(a,
6
+ b,e){return d.tmpl(d.template(a),b,e,this)}function K(a,b){var e=a.options||{};e.wrapped=b;return d.tmpl(d.template(a.tmpl),a.data,e,a.item)}function L(a,b){var e=this._wrap;return d.map(d(d.isArray(e)?e.join(""):e).filter(a||"*"),function(c){if(b)c=c.innerText||c.textContent;else{var f;if(!(f=c.outerHTML)){f=document.createElement("div");f.appendChild(c.cloneNode(true));f=f.innerHTML}c=f}return c})}function M(){var a=this.nodes;d.tmpl(null,null,null,this).insertBefore(a[0]);d(a).remove()}var G=d.fn.domManip,
7
+ q="_tmplitem",E=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,l={},u={},x,H={key:0,data:{}},t=0,n=0,y=[];d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(e){var c=[];e=d(e);var f,g,h;f=this.length===1&&this[0].parentNode;x=l||{};if(f&&f.nodeType===11&&f.childNodes.length===1&&e.length===1){e[b](this[0]);c=this}else{g=0;for(h=e.length;g<h;g++){n=g;f=(g>0?this.clone(true):this).get();d(e[g])[b](f);c=c.concat(f)}n=0;
8
+ c=this.pushStack(c,a,e.selector)}e=x;x=null;d.tmpl.complete(e);return c}});d.fn.extend({tmpl:function(a,b,e){return d.tmpl(this[0],a,b,e)},tmplItem:function(){return d.tmplItem(this[0])},template:function(a){return d.template(a,this[0])},domManip:function(a,b,e){if(a[0]&&d.isArray(a[0])){for(var c=d.makeArray(arguments),f=a[0],g=f.length,h=0,j;h<g&&!(j=d.data(f[h++],"tmplItem")););if(j&&n)c[2]=function(p){d.tmpl.afterManip(this,p,e)};G.apply(this,c)}else G.apply(this,arguments);n=0;x||d.tmpl.complete(l);
9
+ return this}});d.extend({tmpl:function(a,b,e,c){var f=!c;if(f){c=H;a=d.template[a]||d.template(null,a);u={}}else if(!a){a=c.tmpl;l[c.key]=c;c.nodes=[];c.wrapped&&D(c,c.wrapped);return d(v(c,null,c.tmpl(d,c)))}if(!a)return[];if(typeof b==="function")b=b.call(c||{});e&&e.wrapped&&D(e,e.wrapped);b=d.isArray(b)?d.map(b,function(g){return g?s(e,c,a,g):null}):[s(e,c,a,b)];return f?d(v(c,null,b)):b},tmplItem:function(a){var b;if(a instanceof d)a=a[0];for(;a&&a.nodeType===1&&!(b=d.data(a,"tmplItem"))&&(a=
10
+ a.parentNode););return b||H},template:function(a,b){if(b){if(typeof b==="string")b=C(b);else if(b instanceof d)b=b[0]||{};if(b.nodeType)b=d.data(b,"tmpl")||d.data(b,"tmpl",C(b.innerHTML));return typeof a==="string"?d.template[a]=b:b}return a?typeof a!=="string"?d.template(null,a):d.template[a]||d.template(null,E.test(a)?a:d(a)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});d.extend(d.tmpl,{tag:{tmpl:{_default:{$2:"null"},
11
+ open:"if($notnull_1){_=_.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(_,$1,$2);_=[];",close:"call=$item.calls();_=call._.concat($item.wrap(call,_));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){_.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){_.push($.encode($1a));}"},
12
+ "!":{open:""}},complete:function(){l={}},afterManip:function(a,b,e){var c=b.nodeType===11?d.makeArray(b.childNodes):b.nodeType===1?[b]:[];e.call(a,b);B(c);n++}})})(jQuery);
@@ -1,4 +1,5 @@
1
1
  /*!
2
+ * tmplPlus.js: for jQuery Templates Plugin 1.0.0pre
2
3
  * Additional templating features or support for more advanced/less common scenarios.
3
4
  * Requires jquery.tmpl.js
4
5
  * http://github.com/jquery/jquery-tmpl