├── .gitignore ├── LICENSE ├── README.markdown ├── examples ├── index.html ├── js │ ├── jquery-1.3.2.min.js │ ├── jquery-ui-1.7.2.custom.min.js │ └── ui-demo.js └── skin │ ├── images │ ├── ui-bg_diagonals-medium_20_d34d17_40x40.png │ ├── ui-bg_flat_30_cccccc_40x100.png │ ├── ui-bg_flat_50_5c5c5c_40x100.png │ ├── ui-bg_gloss-wave_45_817865_500x100.png │ ├── ui-bg_gloss-wave_60_fece2f_500x100.png │ ├── ui-bg_gloss-wave_70_ffdd57_500x100.png │ ├── ui-bg_gloss-wave_90_fff9e5_500x100.png │ ├── ui-bg_highlight-soft_100_feeebd_1x100.png │ ├── ui-bg_inset-soft_30_ffffff_1x100.png │ ├── ui-icons_3d3d3d_256x240.png │ ├── ui-icons_bd7b00_256x240.png │ ├── ui-icons_d19405_256x240.png │ ├── ui-icons_eb990f_256x240.png │ ├── ui-icons_ed9f26_256x240.png │ ├── ui-icons_fadc7a_256x240.png │ └── ui-icons_ffe180_256x240.png │ └── jquery-ui-1.7.2.custom.css └── jquery.haml-1.3.js /.gitignore: -------------------------------------------------------------------------------- 1 | .bzr 2 | .bzrignore 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009 Tim Caswell 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | # jQuery-haml 2 | 3 | jQuery-haml is a [haml][] like language written in JSON. This allows for easy dom building so that web apps can do more work independent of the server for a better user experience. Based on [haml][] from the ruby world. 4 | 5 | You can see a small example page using it at 6 | 7 | View source to see that all the content is build after page load. 8 | 9 | # NOTE: This project was recently split 10 | 11 | The server-side half of the component stayed at the old name of [haml-js][] and has it's own documentation and everything there. 12 | 13 | --------------------- 14 | 15 | jQuery-haml is a [jQuery][] plugin. In order to use it you simply include the `jquery.haml-1.3.js` file in your jQuery project and use it as a dom builder. 16 | 17 | ## How to use 18 | 19 | ### Basic Syntax 20 | 21 | Here is the first example from the haml site converted to jsonified haml: 22 | 23 | **jsonified-haml** 24 | 25 | [".profile", 26 | [".left.column", 27 | ["#date", print_date() ], 28 | ["#address", curent_user.address ] 29 | ], 30 | [".right.column", 31 | ["#email", current_user.email ], 32 | ["#bio", current_user.bio ] 33 | ] 34 | ] 35 | 36 | **html** 37 | 38 |
39 |
40 |
Friday, July 3, 2009
41 |
Richardson, TX
42 |
43 |
44 |
tim@creationix.com
45 |
Experienced software professional...
46 |
47 |
48 | 49 | One thing you'll notice right away is that this is encoded in pure JSON. This means that you can stream it from a server via ajax calls and it can be executed in the browser to create dom structures on the fly. 50 | 51 | The basic rules are very similar to the real [haml][] for ruby. If the first item in a list is a string, then that is the css selector for that node. It consists of `element#id.class`. If the element is left out, jQuery-haml will assume div. You can have multiple css classes and even include spaces. The id and class are of course optional. After that, everything in the list is considered content inside the node. Arrays are child nodes and more strings are text nodes. 52 | 53 | ### Attributes syntax 54 | 55 | Here is another example with some html attributes specified: 56 | 57 | **jsonified-haml** 58 | 59 | ["%strong", {class: "code", style: "color:red;"}, "Hello, World!"] 60 | 61 | **html** 62 | 63 | Hello, World! 64 | 65 | The new thing to note here is that we can specify html attributes. This is done by including a json object after the string representing the node's css selector. The keys and values become the attributes of the html node. 66 | 67 | ### CSS Special Syntax 68 | 69 | Sometimes css can be complex enough that some structure is desired. 70 | 71 | **jsonified-haml** 72 | 73 | ["#main", {css: {position: "absolute", left:0, right:0, top:0, bottom:0}}, 74 | [".greeting", {css: {"margin-top": "200px", "text-align": "center"}}, "Hello, World!"] 75 | ] 76 | 77 | **html** 78 | 79 |
80 |
Hello, World!
81 |
82 | 83 | When `css`, is used as an attribute, the value is a json object with key/value pairs representing the css styles. These will be applied using jQuery's css method. Note that other parameters can be used in this same overall hash. Also if preferred, a regular style attribute can be specified with manually formatted css. 84 | 85 | ### Javascript jQuery plugin Syntax 86 | 87 | This is where this template language/framework really shines. Until now, this had little power over server side html generation or other dom builders like the ones built into other frameworks. Javascript execution syntax allows you to declaratively schedule JavaScript methods to be called when the node gets attached to the page. 88 | 89 | **jsonified-haml** 90 | 91 | ["%div", {style: "width:260px; margin:15px;", $:{ 92 | slider: [{value: 60}] 93 | }}] 94 | 95 | **html** 96 | 97 |
98 | 99 |
100 | 101 | This will render a fully functional slider widget from the [jQuery-ui][] library. Internally it queues up an event to call the `slider` method on the created node once it's attached to some element that's part of the page. Like the css syntax, this is encoded as an attribute. If the attribute it dollar, `$`, then the key/value pairs are method name and method parameters that are schedules to be applied to the node once it's live. 102 | 103 | ### Javascript onload Syntax 104 | 105 | Sometimes the jquery plugins aren't enough, or you need to call the same plugin more than once, but only ome key is allowed in a hash. This is where the onload syntax comes in handy. 106 | 107 | ["%div", {style: "width:260px; margin:15px;", $:{ 108 | slider: [{value: 60}], 109 | $: function() { this.slider('disable'); } 110 | }}] 111 | 112 | In this example, we wanted to call the disable action on the slider plugin after turning the div into a slider. This was done with a generic onload function. The function given will be called in scope of the jquery node. 113 | 114 | ### Turning the jQuery-haml into DOM HTML 115 | 116 | Usually you will be wanting to attach these element to some part of the page and so the this format is used more often. This is the `.haml` plugin that all jQuery object now have. 117 | 118 | $("body").haml(["%p", "Hello ", ["%img",{src:"logo.jpg"}]]); 119 | 120 | This will create the new element and append it to the end of the body tag. Once it's the recursive function gets to the last step and appends the element tree to the page, any event's queued up would then take place. 121 | 122 | Here is a fun one. Add a paragraph saying "Hello World" onto every element in a page. 123 | 124 | $('*').haml(["%p", "Hello World"]) 125 | 126 | Run that in the Javascript console of any page that has jquery-haml loaded and watch the messages fly. 127 | 128 | ## TopCloud 129 | 130 | Since jquery-haml can get out of hand for large applications, I wrote an abstraction layer on top of it. Check out [TopCloud][]. 131 | 132 | ## Get Involved 133 | 134 | If you want to use this project and something is missing then send me a message. I'm very busy and have several open source projects I manage. I'll contribute to this project as I have time, but if there is more interest for some particular aspect, I'll work on it a lot faster. Also you're welcome to fork this project and send me patches/pull-requests. 135 | 136 | ## License 137 | 138 | jQuery-haml is [licensed][] under the [MIT license][]. 139 | 140 | [MIT license]: http://creativecommons.org/licenses/MIT/ 141 | [licensed]: http://github.com/creationix/jquery-haml/blob/master/LICENSE 142 | [haml]: http://haml.hamptoncatlin.com/ 143 | [jquery]: http://jquery.com/ 144 | [jquery-ui]: http://jqueryui.com/ 145 | [TopCloud]: http://github.com/creationix/topcloud 146 | [haml-js]: http://github.com/creationix/haml-js -------------------------------------------------------------------------------- /examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jQuery HAML + UI Example Page 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/js/jquery-1.3.2.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery JavaScript Library v1.3.2 3 | * http://jquery.com/ 4 | * 5 | * Copyright (c) 2009 John Resig 6 | * Dual licensed under the MIT and GPL licenses. 7 | * http://docs.jquery.com/License 8 | * 9 | * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) 10 | * Revision: 6246 11 | */ 12 | (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); 13 | /* 14 | * Sizzle CSS Selector Engine - v0.9.3 15 | * Copyright 2009, The Dojo Foundation 16 | * Released under the MIT, BSD, and GPL Licenses. 17 | * More information: http://sizzlejs.com/ 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":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=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 UT[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=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";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="
";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="

";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="
";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;W0){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;Z0||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=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("
").append(M.responseText.replace(//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").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=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=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='
';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")}})})(); -------------------------------------------------------------------------------- /examples/js/ui-demo.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | // Render the page 3 | $("body").haml( 4 | [".ui-widget-overlay"], 5 | ["%table",{css:{position:"absolute","margin-top":"2em"}}, 6 | ["%tr", 7 | ["%td", {style:"vertical-align:top;padding: 0 10px"}, 8 | ["%p.ui-state-default.ui-corner-all.ui-helper-clearfix", {style: "padding:4px;" }, 9 | ["%span.ui-icon.ui-icon-volume-on", {style: "float:left; margin:-2px 5px 0 0;" }], 10 | "Master volume" 11 | ], 12 | ["%div", {style: "width:260px; margin:15px;", $:{ 13 | slider: [{ 14 | value: 60 15 | }] 16 | }}], 17 | ["%p.ui-state-default.ui-corner-all", {style:"padding:4px;margin-top:4em;" }, 18 | ["%span.ui-icon.ui-icon-signal", {style: "float:left; margin:-2px 5px 0 0;" }], 19 | "Graphic EQ" 20 | ], 21 | ["%div", $.map([88, 77, 55, 33, 40, 45, 70], function (v) { 22 | return [["%span", { 23 | css: {height: "120px", "float": "left", margin: "15px"}, 24 | $: {slider:[{value:v,range:"min",animate:true,orientation:"vertical"}]} 25 | }]]; 26 | })], 27 | ["%p.ui-state-default.ui-corner-all", {style:"padding:4px;margin-top:4em;clear:both;" }, 28 | ["%span.ui-icon.ui-icon-calendar", {style: "float:left; margin:-2px 5px 0 0;" }], 29 | "Date Picker" 30 | ], 31 | ["%div", {$:{datepicker:[]}}] 32 | ], 33 | ["%td", {style:"vertical-align:top;padding: 0 10px;width:400px"}, 34 | ["%p.ui-state-default.ui-corner-all", {style:"padding:4px;" }, 35 | ["%span.ui-icon.ui-icon-calendar", {style: "float:left; margin:-2px 5px 0 0;" }], 36 | "Accordion" 37 | ], 38 | ["%div", {$:{accordion:[]}}, 39 | ["%h3", ["%a",{href:"#"}, "Section 1"]], 40 | ["%div", 41 | ["%p", "Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate."] 42 | ], 43 | ["%h3", ["%a",{href:"#"}, "Section 2"]], 44 | ["%div", 45 | ["%p", "Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna."] 46 | ], 47 | ["%h3", ["%a",{href:"#"}, "Section 3"]], 48 | ["%div", 49 | ["%p", "Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui."], 50 | ["%ul", 51 | ["%li", "List item one"], 52 | ["%li", "List item two"], 53 | ["%li", "List item three"] 54 | ] 55 | ], 56 | ["%h3", ["%a",{href:"#"}, "Section 4"]], 57 | ["%div", 58 | ["%p", "Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est."], 59 | ["%p", "Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos."] 60 | ] 61 | ] 62 | ], 63 | ["%td", {style:"vertical-align:top;width:430px;padding: 0 10px;"}, 64 | ["%p.ui-state-default.ui-corner-all", {style:"padding:4px;" }, 65 | ["%span.ui-icon.ui-icon-calculator", {style: "float:left; margin:-2px 5px 0 0;" }], 66 | "Tabs" 67 | ], 68 | ["%div", {$:{tabs:[]}}, 69 | ["%ul", 70 | ["%li", ["%a",{href:"#tabs-1"}, "Nunc tincidunt"]], 71 | ["%li", ["%a",{href:"#tabs-2"}, "Proin dolor"]], 72 | ["%li", ["%a",{href:"#tabs-3"}, "Aenean lacinia"]] 73 | ], 74 | ["#tabs-1", 75 | ["%p", "Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus."] 76 | ], 77 | ["#tabs-2", 78 | ["%p", "Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus."] 79 | ], 80 | ["#tabs-3", 81 | ["%p", "Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus."], 82 | ["%p", "Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit."] 83 | ] 84 | ], 85 | ["%p.ui-state-default.ui-corner-all", {style:"padding:4px;margin-top:4em;" }, 86 | ["%span.ui-icon.ui-icon-lightbulb", {style: "float:left; margin:-2px 5px 0 0;" }], 87 | "Highlight / Error" 88 | ], 89 | [".ui-widget", 90 | [".ui-state-highlight.ui-corner-all", {style: "padding: 0pt 0.7em; margin-top: 20px;"}, 91 | ["%p", 92 | ["%span.ui-icon.ui-icon-info", {style: "float: left; margin-right: 0.3em;"} ], 93 | ["%strong", "Hey!"], 94 | "Sample ui-state-highlight style." 95 | ] 96 | ] 97 | ], 98 | ["%br"], 99 | [".ui-widget", 100 | [".ui-state-error.ui-corner-all", {style: "padding: 0pt 0.7em; margin-top: 20px;"}, 101 | ["%p", 102 | ["%span.ui-icon.ui-icon-alert", {style: "float: left; margin-right: 0.3em;"} ], 103 | ["%strong", "Alert:"], 104 | "Sample ui-state-error style." 105 | ] 106 | ] 107 | ] 108 | ] 109 | ] 110 | ] 111 | ); 112 | 113 | }); 114 | -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_diagonals-medium_20_d34d17_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_diagonals-medium_20_d34d17_40x40.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_flat_30_cccccc_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_flat_30_cccccc_40x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_flat_50_5c5c5c_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_flat_50_5c5c5c_40x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_gloss-wave_45_817865_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_gloss-wave_45_817865_500x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_gloss-wave_60_fece2f_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_gloss-wave_60_fece2f_500x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_gloss-wave_70_ffdd57_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_gloss-wave_70_ffdd57_500x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_gloss-wave_90_fff9e5_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_gloss-wave_90_fff9e5_500x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_highlight-soft_100_feeebd_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_highlight-soft_100_feeebd_1x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-bg_inset-soft_30_ffffff_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-bg_inset-soft_30_ffffff_1x100.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_3d3d3d_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_3d3d3d_256x240.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_bd7b00_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_bd7b00_256x240.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_d19405_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_d19405_256x240.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_eb990f_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_eb990f_256x240.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_ed9f26_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_ed9f26_256x240.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_fadc7a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_fadc7a_256x240.png -------------------------------------------------------------------------------- /examples/skin/images/ui-icons_ffe180_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/creationix/jquery-haml/4569bf55f2b353cf21175fd65418fc68b86d0f4a/examples/skin/images/ui-icons_ffe180_256x240.png -------------------------------------------------------------------------------- /examples/skin/jquery-ui-1.7.2.custom.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI CSS Framework 3 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 4 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 5 | */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { display: none; } 10 | .ui-helper-hidden-accessible { position: absolute; left: -99999999px; } 11 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 12 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 13 | .ui-helper-clearfix { display: inline-block; } 14 | /* required comment for clearfix to work in Opera \*/ 15 | * html .ui-helper-clearfix { height:1%; } 16 | .ui-helper-clearfix { display:block; } 17 | /* end clearfix */ 18 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 19 | 20 | 21 | /* Interaction Cues 22 | ----------------------------------*/ 23 | .ui-state-disabled { cursor: default !important; } 24 | 25 | 26 | /* Icons 27 | ----------------------------------*/ 28 | 29 | /* states and images */ 30 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 31 | 32 | 33 | /* Misc visuals 34 | ----------------------------------*/ 35 | 36 | /* Overlays */ 37 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 38 | 39 | 40 | 41 | /* 42 | * jQuery UI CSS Framework 43 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 44 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 45 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=12_gloss_wave.png&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=07_diagonals_medium.png&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px 46 | */ 47 | 48 | 49 | /* Component containers 50 | ----------------------------------*/ 51 | .ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; } 52 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; } 53 | .ui-widget-content { border: 1px solid #8e846b; background: #feeebd url(images/ui-bg_highlight-soft_100_feeebd_1x100.png) 50% top repeat-x; color: #383838; } 54 | .ui-widget-content a { color: #383838; } 55 | .ui-widget-header { border: 1px solid #494437; background: #817865 url(images/ui-bg_gloss-wave_45_817865_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } 56 | .ui-widget-header a { color: #ffffff; } 57 | 58 | /* Interaction states 59 | ----------------------------------*/ 60 | .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d19405; background: #fece2f url(images/ui-bg_gloss-wave_60_fece2f_500x100.png) 50% 50% repeat-x; font-weight: bold; color: #4c3000; outline: none; } 61 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4c3000; text-decoration: none; outline: none; } 62 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #a45b13; background: #ffdd57 url(images/ui-bg_gloss-wave_70_ffdd57_500x100.png) 50% 50% repeat-x; font-weight: bold; color: #381f00; outline: none; } 63 | .ui-state-hover a, .ui-state-hover a:hover { color: #381f00; text-decoration: none; outline: none; } 64 | .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #655e4e; background: #ffffff url(images/ui-bg_inset-soft_30_ffffff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #0074c7; outline: none; } 65 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #0074c7; outline: none; text-decoration: none; } 66 | 67 | /* Interaction Cues 68 | ----------------------------------*/ 69 | .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #eeb420; background: #fff9e5 url(images/ui-bg_gloss-wave_90_fff9e5_500x100.png) 50% top repeat-x; color: #1f1f1f; } 70 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #1f1f1f; } 71 | .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #ffb73d; background: #d34d17 url(images/ui-bg_diagonals-medium_20_d34d17_40x40.png) 50% 50% repeat; color: #ffffff; } 72 | .ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; } 73 | .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; } 74 | .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 75 | .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } 76 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 77 | 78 | /* Icons 79 | ----------------------------------*/ 80 | 81 | /* states and images */ 82 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_d19405_256x240.png); } 83 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_d19405_256x240.png); } 84 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_fadc7a_256x240.png); } 85 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_3d3d3d_256x240.png); } 86 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_bd7b00_256x240.png); } 87 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_eb990f_256x240.png); } 88 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_ed9f26_256x240.png); } 89 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffe180_256x240.png); } 90 | 91 | /* positioning */ 92 | .ui-icon-carat-1-n { background-position: 0 0; } 93 | .ui-icon-carat-1-ne { background-position: -16px 0; } 94 | .ui-icon-carat-1-e { background-position: -32px 0; } 95 | .ui-icon-carat-1-se { background-position: -48px 0; } 96 | .ui-icon-carat-1-s { background-position: -64px 0; } 97 | .ui-icon-carat-1-sw { background-position: -80px 0; } 98 | .ui-icon-carat-1-w { background-position: -96px 0; } 99 | .ui-icon-carat-1-nw { background-position: -112px 0; } 100 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 101 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 102 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 103 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 104 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 105 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 106 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 107 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 108 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 109 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 110 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 111 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 112 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 113 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 114 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 115 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 116 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 117 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 118 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 119 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 120 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 121 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 122 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 123 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 124 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 125 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 126 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 127 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 128 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 129 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 130 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 131 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 132 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 133 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 134 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 135 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 136 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 137 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 138 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 139 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 140 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 141 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 142 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 143 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 144 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 145 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 146 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 147 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 148 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 149 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 150 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 151 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 152 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 153 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 154 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 155 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 156 | .ui-icon-arrow-4 { background-position: 0 -80px; } 157 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 158 | .ui-icon-extlink { background-position: -32px -80px; } 159 | .ui-icon-newwin { background-position: -48px -80px; } 160 | .ui-icon-refresh { background-position: -64px -80px; } 161 | .ui-icon-shuffle { background-position: -80px -80px; } 162 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 163 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 164 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 165 | .ui-icon-folder-open { background-position: -16px -96px; } 166 | .ui-icon-document { background-position: -32px -96px; } 167 | .ui-icon-document-b { background-position: -48px -96px; } 168 | .ui-icon-note { background-position: -64px -96px; } 169 | .ui-icon-mail-closed { background-position: -80px -96px; } 170 | .ui-icon-mail-open { background-position: -96px -96px; } 171 | .ui-icon-suitcase { background-position: -112px -96px; } 172 | .ui-icon-comment { background-position: -128px -96px; } 173 | .ui-icon-person { background-position: -144px -96px; } 174 | .ui-icon-print { background-position: -160px -96px; } 175 | .ui-icon-trash { background-position: -176px -96px; } 176 | .ui-icon-locked { background-position: -192px -96px; } 177 | .ui-icon-unlocked { background-position: -208px -96px; } 178 | .ui-icon-bookmark { background-position: -224px -96px; } 179 | .ui-icon-tag { background-position: -240px -96px; } 180 | .ui-icon-home { background-position: 0 -112px; } 181 | .ui-icon-flag { background-position: -16px -112px; } 182 | .ui-icon-calendar { background-position: -32px -112px; } 183 | .ui-icon-cart { background-position: -48px -112px; } 184 | .ui-icon-pencil { background-position: -64px -112px; } 185 | .ui-icon-clock { background-position: -80px -112px; } 186 | .ui-icon-disk { background-position: -96px -112px; } 187 | .ui-icon-calculator { background-position: -112px -112px; } 188 | .ui-icon-zoomin { background-position: -128px -112px; } 189 | .ui-icon-zoomout { background-position: -144px -112px; } 190 | .ui-icon-search { background-position: -160px -112px; } 191 | .ui-icon-wrench { background-position: -176px -112px; } 192 | .ui-icon-gear { background-position: -192px -112px; } 193 | .ui-icon-heart { background-position: -208px -112px; } 194 | .ui-icon-star { background-position: -224px -112px; } 195 | .ui-icon-link { background-position: -240px -112px; } 196 | .ui-icon-cancel { background-position: 0 -128px; } 197 | .ui-icon-plus { background-position: -16px -128px; } 198 | .ui-icon-plusthick { background-position: -32px -128px; } 199 | .ui-icon-minus { background-position: -48px -128px; } 200 | .ui-icon-minusthick { background-position: -64px -128px; } 201 | .ui-icon-close { background-position: -80px -128px; } 202 | .ui-icon-closethick { background-position: -96px -128px; } 203 | .ui-icon-key { background-position: -112px -128px; } 204 | .ui-icon-lightbulb { background-position: -128px -128px; } 205 | .ui-icon-scissors { background-position: -144px -128px; } 206 | .ui-icon-clipboard { background-position: -160px -128px; } 207 | .ui-icon-copy { background-position: -176px -128px; } 208 | .ui-icon-contact { background-position: -192px -128px; } 209 | .ui-icon-image { background-position: -208px -128px; } 210 | .ui-icon-video { background-position: -224px -128px; } 211 | .ui-icon-script { background-position: -240px -128px; } 212 | .ui-icon-alert { background-position: 0 -144px; } 213 | .ui-icon-info { background-position: -16px -144px; } 214 | .ui-icon-notice { background-position: -32px -144px; } 215 | .ui-icon-help { background-position: -48px -144px; } 216 | .ui-icon-check { background-position: -64px -144px; } 217 | .ui-icon-bullet { background-position: -80px -144px; } 218 | .ui-icon-radio-off { background-position: -96px -144px; } 219 | .ui-icon-radio-on { background-position: -112px -144px; } 220 | .ui-icon-pin-w { background-position: -128px -144px; } 221 | .ui-icon-pin-s { background-position: -144px -144px; } 222 | .ui-icon-play { background-position: 0 -160px; } 223 | .ui-icon-pause { background-position: -16px -160px; } 224 | .ui-icon-seek-next { background-position: -32px -160px; } 225 | .ui-icon-seek-prev { background-position: -48px -160px; } 226 | .ui-icon-seek-end { background-position: -64px -160px; } 227 | .ui-icon-seek-first { background-position: -80px -160px; } 228 | .ui-icon-stop { background-position: -96px -160px; } 229 | .ui-icon-eject { background-position: -112px -160px; } 230 | .ui-icon-volume-off { background-position: -128px -160px; } 231 | .ui-icon-volume-on { background-position: -144px -160px; } 232 | .ui-icon-power { background-position: 0 -176px; } 233 | .ui-icon-signal-diag { background-position: -16px -176px; } 234 | .ui-icon-signal { background-position: -32px -176px; } 235 | .ui-icon-battery-0 { background-position: -48px -176px; } 236 | .ui-icon-battery-1 { background-position: -64px -176px; } 237 | .ui-icon-battery-2 { background-position: -80px -176px; } 238 | .ui-icon-battery-3 { background-position: -96px -176px; } 239 | .ui-icon-circle-plus { background-position: 0 -192px; } 240 | .ui-icon-circle-minus { background-position: -16px -192px; } 241 | .ui-icon-circle-close { background-position: -32px -192px; } 242 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 243 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 244 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 245 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 246 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 247 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 248 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 249 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 250 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 251 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 252 | .ui-icon-circle-check { background-position: -208px -192px; } 253 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 254 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 255 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 256 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 257 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 258 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 259 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 260 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 261 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 262 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 263 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 264 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 265 | 266 | 267 | /* Misc visuals 268 | ----------------------------------*/ 269 | 270 | /* Corner radius */ 271 | .ui-corner-tl { -moz-border-radius-topleft: 8px; -webkit-border-top-left-radius: 8px; } 272 | .ui-corner-tr { -moz-border-radius-topright: 8px; -webkit-border-top-right-radius: 8px; } 273 | .ui-corner-bl { -moz-border-radius-bottomleft: 8px; -webkit-border-bottom-left-radius: 8px; } 274 | .ui-corner-br { -moz-border-radius-bottomright: 8px; -webkit-border-bottom-right-radius: 8px; } 275 | .ui-corner-top { -moz-border-radius-topleft: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topright: 8px; -webkit-border-top-right-radius: 8px; } 276 | .ui-corner-bottom { -moz-border-radius-bottomleft: 8px; -webkit-border-bottom-left-radius: 8px; -moz-border-radius-bottomright: 8px; -webkit-border-bottom-right-radius: 8px; } 277 | .ui-corner-right { -moz-border-radius-topright: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-bottomright: 8px; -webkit-border-bottom-right-radius: 8px; } 278 | .ui-corner-left { -moz-border-radius-topleft: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-bottomleft: 8px; -webkit-border-bottom-left-radius: 8px; } 279 | .ui-corner-all { -moz-border-radius: 8px; -webkit-border-radius: 8px; } 280 | 281 | /* Overlays */ 282 | .ui-widget-overlay { background: #5c5c5c url(images/ui-bg_flat_50_5c5c5c_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); } 283 | .ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #cccccc url(images/ui-bg_flat_30_cccccc_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion 284 | ----------------------------------*/ 285 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 286 | .ui-accordion .ui-accordion-li-fix { display: inline; } 287 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 288 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } 289 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 290 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } 291 | .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker 292 | ----------------------------------*/ 293 | .ui-datepicker { width: 17em; padding: .2em .2em 0; } 294 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 295 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 296 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 297 | .ui-datepicker .ui-datepicker-prev { left:2px; } 298 | .ui-datepicker .ui-datepicker-next { right:2px; } 299 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 300 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 301 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 302 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 303 | .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } 304 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 305 | .ui-datepicker select.ui-datepicker-month, 306 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 307 | .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } 308 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 309 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 310 | .ui-datepicker td { border: 0; padding: 1px; } 311 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 312 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 313 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 314 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 315 | 316 | /* with multiple calendars */ 317 | .ui-datepicker.ui-datepicker-multi { width:auto; } 318 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 319 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 320 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 321 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 322 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 323 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 324 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 325 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 326 | .ui-datepicker-row-break { clear:both; width:100%; } 327 | 328 | /* RTL support */ 329 | .ui-datepicker-rtl { direction: rtl; } 330 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 331 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 332 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 333 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 334 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 335 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 336 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 337 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 338 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 339 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 340 | 341 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 342 | .ui-datepicker-cover { 343 | display: none; /*sorry for IE5*/ 344 | display/**/: block; /*sorry for IE5*/ 345 | position: absolute; /*must have*/ 346 | z-index: -1; /*must have*/ 347 | filter: mask(); /*must have*/ 348 | top: -4px; /*must have*/ 349 | left: -4px; /*must have*/ 350 | width: 200px; /*must have*/ 351 | height: 200px; /*must have*/ 352 | }/* Dialog 353 | ----------------------------------*/ 354 | .ui-dialog { position: relative; padding: .2em; width: 300px; } 355 | .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } 356 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } 357 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 358 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 359 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 360 | .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 361 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 362 | .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } 363 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 364 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 365 | /* Progressbar 366 | ----------------------------------*/ 367 | .ui-progressbar { height:2em; text-align: left; } 368 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable 369 | ----------------------------------*/ 370 | .ui-resizable { position: relative;} 371 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} 372 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 373 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } 374 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } 375 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } 376 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } 377 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 378 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 379 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 380 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider 381 | ----------------------------------*/ 382 | .ui-slider { position: relative; text-align: left; } 383 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 384 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } 385 | 386 | .ui-slider-horizontal { height: .8em; } 387 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 388 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 389 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 390 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 391 | 392 | .ui-slider-vertical { width: .8em; height: 100px; } 393 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 394 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 395 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 396 | .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs 397 | ----------------------------------*/ 398 | .ui-tabs { padding: .2em; zoom: 1; } 399 | .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } 400 | .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } 401 | .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } 402 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } 403 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 404 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 405 | .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } 406 | .ui-tabs .ui-tabs-hide { display: none !important; } 407 | -------------------------------------------------------------------------------- /jquery.haml-1.3.js: -------------------------------------------------------------------------------- 1 | /* ex:ts=2:et: */ 2 | /*jslint white: true, onevar: true, browser: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, evil: true, maxerr: 50, indent: 2 */ 3 | /*globals jQuery */ 4 | 5 | ////////////////////////////////////////// 6 | // // 7 | // HAML for JS - DomBuilder for jQuery // 8 | // // 9 | // Tim Caswell // 10 | // // 11 | ////////////////////////////////////////// 12 | 13 | (function ($) { 14 | 15 | var action_queue = [], data_cache = {}; 16 | 17 | // Test an object for it's constructor type. Sort of a reverse, discriminatory instanceof 18 | function isTypeOf(t, c) { 19 | if (t === undefined) { 20 | return c === 'undefined'; 21 | } 22 | if (t === null) { 23 | return c === 'null'; 24 | } 25 | return t.constructor.toString().match(new RegExp(c, 'i')) !== null; 26 | } 27 | 28 | // Parses declarations out of the flat attribute array 29 | function extractor(attrs, symbol) { 30 | if (!attrs || !attrs[symbol]) { 31 | return undefined; 32 | } 33 | var extract = attrs[symbol]; 34 | delete attrs[symbol]; 35 | return extract; 36 | } 37 | 38 | function is_selector(obj) { 39 | // Must be string of at least 2 length 40 | if (typeof obj !== "string" || obj.length < 2) { 41 | return false; 42 | } 43 | // Must start with '.', '#', or '%' 44 | var c = obj.charAt(0); 45 | if (!(c === '.' || c === '#' || c === '%')) { 46 | return false; 47 | } 48 | return true; 49 | } 50 | 51 | 52 | // The workhorse that creates the node. 53 | function exec_haml(node, haml) { 54 | 55 | var css, actions, input, selector, classes, ids, tag, newnode, attributes; 56 | 57 | // Shallow copy haml so we don't eat our input when we shift the array 58 | // Also this turns "arguments" pseudo-arrays to real arrays 59 | input = Array.prototype.slice.call(haml, 0); 60 | 61 | function apply_haml(parent, part) { 62 | 63 | // Ignore undefined and null, they only break things. 64 | if (part === undefined || part === null) { 65 | return; 66 | } 67 | 68 | // Pass dom and jquery nodes through as is 69 | if (part.nodeType || part.jquery) { 70 | parent.append(part); 71 | return; 72 | } 73 | 74 | // Strings and numbers are text nodes 75 | if (isTypeOf(part, 'String') && part.length > 0) { 76 | // Strip of leading backslash 77 | if (part[0] === '\\') { 78 | part = part.substr(1); 79 | } 80 | parent.append(document.createTextNode(part)); 81 | return; 82 | } 83 | if (isTypeOf(part, 'Number')) { 84 | parent.append(document.createTextNode(part)); 85 | return; 86 | } 87 | 88 | // Recursivly run arrays 89 | if (isTypeOf(part, 'Array') && part.length > 0) { 90 | exec_haml(parent, part); 91 | return; 92 | } 93 | } 94 | 95 | if (input.length && input.length > 0) 96 | { 97 | if (is_selector(input[0])) { 98 | // Pull the selector off the front 99 | // Parse out the selector information 100 | // Default tag to div if not specified 101 | selector = input.shift(); 102 | classes = selector.match(/\.[^\.#]+/g); 103 | ids = selector.match(/#[^\.#]+/g); 104 | tag = selector.match(/^%([^\.#]+)/g); 105 | tag = tag ? tag[0].substr(1) : 'div'; 106 | 107 | // Create the node 108 | newnode = $(document.createElement(tag)); 109 | 110 | // Parse the attributes if there are any 111 | if (input.length > 0 && isTypeOf(input[0], 'Object') && !input[0].nodeType && !input[0].jquery) { 112 | attributes = input.shift(); 113 | css = extractor(attributes, 'css'); 114 | actions = extractor(attributes, '$'); 115 | newnode.attr(attributes); 116 | } 117 | 118 | // Add in the ids from the selector 119 | if (ids) { 120 | $.each(ids, function () { 121 | var id, old_id; 122 | id = this.substr(1); 123 | old_id = newnode.attr('id'); 124 | if (old_id) { 125 | newnode.attr('id', old_id + " " + id); 126 | } 127 | else { 128 | newnode.attr('id', id); 129 | } 130 | }); 131 | } 132 | 133 | // Add in the classes from the selector 134 | if (classes) { 135 | $.each(classes, function () { 136 | newnode.addClass(this.substr(1)); 137 | }); 138 | } 139 | 140 | // Add in any css from underscore styles 141 | if (css) { 142 | newnode.css(css); 143 | } 144 | 145 | // Move a level deeper in the dom tree 146 | node.append(newnode); 147 | node = newnode; 148 | 149 | // Process jquery actions as well 150 | if (actions) { 151 | $.each(actions, function (method) { 152 | action_queue.push({node: node, method: method, params: this}); 153 | }); 154 | } 155 | } 156 | 157 | // Add in content with recursive call 158 | $.each(input, function () { 159 | apply_haml(node, this); 160 | }); 161 | } 162 | else 163 | { 164 | apply_haml(node, input); 165 | } 166 | } 167 | 168 | // jQuery events are queued up till we're sure the node exists in the main dom. Once 169 | // it's safe, this function is called to actually flush the queue and execute the function calls. 170 | function flush_queue() { 171 | $.each(action_queue, function () { 172 | // $ is a special case that means onload 173 | if (this.method === '$') { 174 | this.params.apply(this.node, []); 175 | } 176 | // otherwise call method on the jquery object with given params. 177 | else { 178 | if (!isTypeOf(this.params, 'Array')) { 179 | this.params = [this.params]; 180 | } 181 | this.node[this.method].apply(this.node, this.params); 182 | } 183 | }); 184 | action_queue = []; 185 | } 186 | 187 | function real_haml(haml) { 188 | var newnode; 189 | 190 | // Build the dom on a non-attached node 191 | newnode = $(document.createElement("div")); 192 | exec_haml(newnode, haml); 193 | 194 | // Then attach it's children to the page. 195 | this.append(newnode.contents()); 196 | 197 | // Flush action queue once we're on the page 198 | if (this.closest('body').length > 0) { 199 | flush_queue(); 200 | } 201 | 202 | return newnode.contents(); 203 | } 204 | 205 | // Like the original haml, but returns the new nodes instead of the 206 | // original matched set. 207 | $.fn.insertHaml = function (/* haml1, haml2, ... */) { 208 | return real_haml.call(this, 209 | Array.prototype.slice.call(arguments, 0) 210 | ); 211 | }; 212 | 213 | // Calling haml on a node converts the passed in array to dom children 214 | $.fn.haml = function (/* haml1, haml2, ... */) { 215 | real_haml.call(this, 216 | Array.prototype.slice.call(arguments, 0) 217 | ); 218 | 219 | // Return "this" to allow for chaining. 220 | return this; 221 | 222 | }; 223 | 224 | // static helper functions 225 | $.haml = { 226 | // This is a constructor to create a piece of page that is re-drawable. 227 | // The passed in callback is the function that provides the haml input. 228 | // Call inject() on the resulting object to place it in the haml document stream 229 | // and call update() on the placeholder whenever you want it to redraw itself. 230 | placeholder: function (callback) { 231 | var children; 232 | 233 | function inject() { 234 | // Build the dom on a non-attached node 235 | var node = $(document.createElement("div")); 236 | node.haml(callback.apply(this, arguments)); 237 | children = node.contents(); 238 | return children; 239 | } 240 | 241 | // Replace the first child node with the new children and remove other 242 | // old children if there are any. 243 | function update() { 244 | var args = arguments; 245 | $.each(children, function (i, child) { 246 | if (i === 0) { 247 | $(child).replaceWith(inject.apply(this, args)); 248 | } else { 249 | $(child).remove(); 250 | } 251 | }); 252 | flush_queue(); 253 | } 254 | 255 | return { 256 | inject: inject, 257 | update: update 258 | }; 259 | }, 260 | 261 | // data_provider is a function that has the form "function (on_data)" where 262 | // on_data is of the form "function (data)" so that OnDemand can call 263 | // data_provider giving it a callback, and the callback will be called with 264 | // the data when it's available. 265 | // onDemand returns functions that returns a placeholder. See above for details. 266 | onDemand: function (data_provider, loading_message) { 267 | var placeholder; 268 | 269 | loading_message = ["%div", {style: "text-align: center; cursor: wait"}, loading_message || "Loading..."]; 270 | 271 | return function (renderer/*, param1, param2...*/) { 272 | var params = Array.prototype.slice.call(arguments, 1); 273 | function render_haml() { 274 | var key = Util.stringify(params); 275 | if (data_cache[key] !== undefined) { 276 | // If data is in data_cache, render directly 277 | return renderer(data_cache[key]); 278 | } else { 279 | // Otherwise put in a placeholder and then replace once the data is known 280 | function on_data(data) { 281 | data_cache[key] = data; 282 | placeholder.update(); 283 | } 284 | data_provider.apply(this, [on_data].concat(params)); 285 | return loading_message; 286 | } 287 | } 288 | placeholder = $.haml.placeholder(render_haml); 289 | return placeholder; 290 | }; 291 | } 292 | }; 293 | 294 | }(jQuery)); 295 | --------------------------------------------------------------------------------