From 320c1ba8d53c7a51c228189c01606b7a58271ca8 Mon Sep 17 00:00:00 2001 From: mattn Date: Fri, 26 Feb 2010 22:04:43 +0900 Subject: [PATCH] import. --- index.html | 66 + static/css/style-sites.css | 94 + static/images/ajax-loader.gif | Bin 0 -> 673 bytes static/images/allow-right-green.png | Bin 0 -> 978 bytes static/images/allow-right-orange.png | Bin 0 -> 1300 bytes static/images/logo.png | Bin 0 -> 4233 bytes static/images/zencoding-vim-logo.png | Bin 0 -> 17611 bytes static/js/jquery-latest.js | 3549 ++++++++++++++++++++++++++ 8 files changed, 3709 insertions(+) create mode 100644 index.html create mode 100644 static/css/style-sites.css create mode 100644 static/images/ajax-loader.gif create mode 100644 static/images/allow-right-green.png create mode 100644 static/images/allow-right-orange.png create mode 100644 static/images/logo.png create mode 100644 static/images/zencoding-vim-logo.png create mode 100644 static/js/jquery-latest.js diff --git a/index.html b/index.html new file mode 100644 index 0000000..bf3c6da --- /dev/null +++ b/index.html @@ -0,0 +1,66 @@ + + + ZenCoding.vim + + + + + + + +

vim plugins for HTML and CSS hi-speed coding.

+
+
+

Whats

+

zencoding for vim

+
+
+
+

Install

+

copy zencoding.vim to your ftplugin directory

+
+# mkdir ~/.vim/ftplugin/html
+# cp zencoding.vim ~/.vim/ftplugin/html/.
+
+
+
+
+

How This Work

+

+ Under construction. This will be widget of ttyshare? +

+
+
+ +
+
+

License

+

BSD style license.

+
+
+ +
+
+ diff --git a/static/css/style-sites.css b/static/css/style-sites.css new file mode 100644 index 0000000..f96a4a8 --- /dev/null +++ b/static/css/style-sites.css @@ -0,0 +1,94 @@ +@charset "utf-8" + +section, article, aside, hgroup, header, footer, nav, figure { display: block; } + +body { + font-family: "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", Meiryo, "メイリオ", "MS Pゴシック", Verdana, Geneva, Arial, Helvetica; + text-align: center; +} + +section { + clear:both; + text-align: left; +} + +article { +} + +img { + border: none; +} + +#content { +} + +h1 { + font-family: 'Verdana', 'Arial'; + padding: 0.5em; margin-top: 0; margin-bottom: 0; +} + +.subtitle { + background: transparent url(../images/allow-right-orange.png) no-repeat scroll 0%; + padding-left: 26px; + line-height: 26px; + text-decoration: underline; +} + +.maintitle { + background: transparent url(../images/allow-right-green.png) no-repeat scroll 0%; + padding-left: 26px; + line-height: 26px; + text-decoration: underline; +} + +.blocked-content { + padding: 1em; + border: 1px dotted gray; + font-family: 'Verdana', 'Arial'; +} + +a{ + color: #006699; + text-decoration: none; +} + +a:link { + color: #006699; + text-decoration: none; +} + +a:visited { + color: #006699; + text-decoration: none; +} + +a:hover { + color: #006699; + text-decoration: underline; +} + +li a, h3 a { + padding-left:5px; + padding-right:5px; + background-color:none; + text-decoration:none; + color: #333333; + text-shadow:1px 1px 1px #ffffff; + line-height: 25px; +} +li a:hover, li a:active, h3 a:hover, li a:active { + background-color:#334d55; + text-decoration:none; + color:#ffffff; + text-shadow:1px 1px 1px #000000; +} + +pre.code { + padding: 1em; + border: 1px dotted gray; + font-family: 'Verdana', 'Arial'; + color: white; + background: gray; + width: 500px; +} + diff --git a/static/images/ajax-loader.gif b/static/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0bce1542342e912da81a2c260562df172f30d73 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nnmm28Kh24mmkF0U1e2Nli^nlO|14{Lk&@8WQa67~pE8 zXTZz|lvDgC+Z`3#dv5h=E26FfcG1 zbL_hF&)}42ws10s6^G;;cE1^EoUR)U5A70}d2pLv!jVIT7j&Z~EblI3x0K*v_sV|m z0kj3v921Z^em#l`(k(o@H$3ZdDRc@9NidXDNbqrumReCGv$gd8+e8WW28HVqkJ_9i zH>s*<31KtHjANIPvi2#*6BEu%3Dak5O_t&NBI)H?V$TxT}#l{vOTn5naXTfF^&~Hhq+NX@#Ccc>y7T?;vjI&jdhsDsPJyAw*m0Qz>i}K7# zL9w50Ng{fT}A5JUe8lRK1h7_Y2;BWJDd=c6f&i?Wv5(5q?6|P zQw{>maxZP<537OA37Uk}7@%_$4o$EWe_Zl>&#id|lE-BpDC#+Fn|msJ%_2h{Hg1vP z#N8WAzfWasG}yq|xqE)DrWaOofX=z|?*pgc%{ig5vl!pqDlC|q&~Z0$&Rvsft&VO- z4MZj+%-+Vx%W}v;V76hyp=;+R;x+~t^Q%*xuFTQAF2})fSfTHDAs>sO!OBw`)&)o$ c0!CNZt))x~rAZP^^P&YOFfdqy5)K#u0POD40{{R3 literal 0 HcmV?d00001 diff --git a/static/images/allow-right-green.png b/static/images/allow-right-green.png new file mode 100644 index 0000000000000000000000000000000000000000..509deb26ac198d0e959b45e8bdef77003f4d5c91 GIT binary patch literal 978 zcmV;@11so+6H zY(Xp5x^}7AO*YBQ_+GM`P3mfQ1s}X5GkNoU?`P&Ek`MwCi3E_e-&-A)B-jrUG~;j$ z2nfSeA~{zRZJ*-3kJ+O0{HA9nO(v5`kn#kF`d8Kb3ukc?@A#c4pLc>;d^on1cx_@DlI?N zaMuixk)CD;2)wGQ3QUusflE-TI6>e=Rs_tPk$|zWu_dM{2=jvM64@Dq$HJ)=Jn;1VVy(Rjoin?s`7SdsPWT>*5nIH@?UjpM0{Tc(IX;q9H6H zY4tSiL|}8Fq61)|C-@Au2&$y09ym!y!}Z^6oOP%!24QivKtPiW{-_ff4URwB9&q?{ zWA9(rFy`9jBPdCaJ!}q;oLSpj)DFFO?p_V@FY?l~a3^e-zoVobbaq`I9DT4YFegL- z&zGWtmI|JibL(#a6MhUA(Nj zQYCVg%5m6~<5aeI?j|)xIV6M5O-PRz173(G}zD&I|XtqL@6t@;i)v&vV|f! zYYBs}2-8VM?vp7`TNc|~v!~{~5>*z&;&F(_V`ZHMO-n;s(}3x0Xrz1ONal6AA3vGg zAy{>_5k4G#TOm(ZR#msoX^GZG8={mFy>If0?gq!` zW7|7QSuJWc>Z~%mMGAEk^)v1Kz+c7xlwSf202GnL_JpQZGynhq07*qoM6N<$g5bxm AN&o-= literal 0 HcmV?d00001 diff --git a/static/images/allow-right-orange.png b/static/images/allow-right-orange.png new file mode 100644 index 0000000000000000000000000000000000000000..c679d7bd445d277b8c1b3b048ef66eb3bdbea7b6 GIT binary patch literal 1300 zcmV+v1?&2WP)h&RTMt=&g^@aEeiyc zrdkmbszFWkM|}iIeI+FRA^HOhL`{5@L=!@40`l^i)JLjBjj;)#5e0t~_g>Gvvz{gX0t#ffNQ@4gyIff+~FcPLq)_R zX$0H^0-gmBX*7mvDgi+-ru@N+gV)bNh^^HRe)`8%02+a46uiG|u=))7@}sEVjk=7U zoTY#f2u1jjsz8al^^Ck!NT7zB9%+7mIsjF7oB%f&SUq^y<1cZC9|F)bS~LyZ5vcQk zTPQa3f2F8B23jlyG#n4(J5A>gKHWS$3I!mLYa2P|E_)26iH2hu(IRNjL*Ez(mm|=G z$Y;4P^$fuTBcLbK_{*O;_tn}hlK~V(cJ?hO{4%l-@4K}~G(jU#1*#}f9!Qo#kgQn) zTB=HIjUC_W7X^`25k(myAZ3PB-+#*!Eyn_ioJ%EeEcbQcvINn?zK5O^;fn+#T3}qR zirVdEy*$VKNSQ>`z_q*`Qz*jZW~c|N^#q0~Id{v(Sy}L&nI*`zZ=S;M?E79-I_{Q% z@I4xd1LbhX*?ntk1Ax+)xdOcp30EFwWv^zIY}=+OAem*aseP{UB=aQ{kdZAtF7>*+ zm<9KNB-Mc9!Ew%$H`hUQQ5{^%np5`%jJ9s{UzI(AG=o{ZH;90Hq6!36=uqbUT8)pd zxevbyz`(b`DHsW~du>WlTSH^Sg z+Y~*1vatzuS`2cKx4iBY6Dw4BM5tsHx{g4pw*%{+s4`_Z0C~wpIvFfjiF9CJ1jfJH zhMnzV57_FNSq_*CbiCxa9iv-13tw#w-M~XY};CRqsw6XsugRM|*|^qTHA? zLSZOd?5r85=*6a^M@@iU;o;0;;)*3Y-T3I&o53qM;O0t7FW&`@y^soiXNW%X!U6Q2W=Y)rq@eCF6ik5CYJ=!xOofg;R0BLd9W{CR?o_7tbHvJ z1sWINxIEvu_s514XGglG%p%#rQo086C!XK&?F%`>Jk7lVL>JD2@SG%QNROJBa_I4L zB11ZaD&i2kA%l^cP%`bo?VtTnzrVBh5U7@$G_D6*)&-M!>H0mPxv9uqjZfb5)SZjw ztXz@5`@fc7&6pRCAnwa2%tQ@arD1Uh4?&BYK4d!K%O8@v|4(wXz&;D_c4SQu| zRku}EEPd{wTbD1X%+$_KMi+-Pno-l2^P*95disWqpIh3yT92H$cnY`AOVy0u_ zzGss_i1tgHU3_&?X*0t^7lD;(swzo3Tz0000< KMNUMnLSTY51YrXJ literal 0 HcmV?d00001 diff --git a/static/images/logo.png b/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e236105082d415da1d84f4db3cfdf5b9feee21e7 GIT binary patch literal 4233 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 literal 0 HcmV?d00001 diff --git a/static/images/zencoding-vim-logo.png b/static/images/zencoding-vim-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e5739e08774cd6696f0b72960788463de8991ae1 GIT binary patch literal 17611 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 P5fnvPRhddD)6o9|smyMi literal 0 HcmV?d00001 diff --git a/static/js/jquery-latest.js b/static/js/jquery-latest.js new file mode 100644 index 0000000..88e661e --- /dev/null +++ b/static/js/jquery-latest.js @@ -0,0 +1,3549 @@ +(function(){ +/* + * jQuery 1.2.6 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ + * $Rev: 5685 $ + */ + +// Map over jQuery in case of overwrite +var _jQuery = window.jQuery, +// Map over the $ in case of overwrite + _$ = window.$; + +var jQuery = window.jQuery = window.$ = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context ); +}; + +// A simple way to check for HTML strings or ID strings +// (both of which we optimize for) +var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/, + +// Is it a simple selector + isSimple = /^.[^:#\[\.]*$/, + +// Will speed up references to undefined, and allows munging its name. + undefined; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + return this; + } + // Handle HTML strings + if ( typeof selector == "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Make sure an element was located + if ( elem ){ + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + return jQuery( elem ); + } + selector = []; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); + + return this.setArray(jQuery.makeArray(selector)); + }, + + // The current version of jQuery being used + jquery: "1.2.6", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // The number of elements contained in the matched element set + length: 0, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == undefined ? + + // Return a 'clean' array + jQuery.makeArray( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + var ret = -1; + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem && elem.jquery ? elem[0] : elem + , this ); + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( name.constructor == String ) + if ( value === undefined ) + return this[0] && jQuery[ type || "attr" ]( this[0], name ); + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text != "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) + // The elements to wrap the target around + jQuery( html, this[0].ownerDocument ) + .clone() + .insertBefore( this[0] ) + .map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }) + .append(this); + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, false, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, true, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + find: function( selector ) { + var elems = jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + }); + + return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? + jQuery.unique( elems ) : + elems ); + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var clone = this.cloneNode(true), + container = document.createElement("div"); + container.appendChild(clone); + return jQuery.clean([container.innerHTML])[0]; + } else + return this.cloneNode(true); + }); + + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function(){ + if ( this[ expando ] != undefined ) + this[ expando ] = null; + }); + + // Copy the events from the original to the clone + if ( events === true ) + this.find("*").andSelf().each(function(i){ + if (this.nodeType == 3) + return; + var events = jQuery.data( this, "events" ); + + for ( var type in events ) + for ( var handler in events[ type ] ) + jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); + }); + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, this ) ); + }, + + not: function( selector ) { + if ( selector.constructor == String ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ) ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return this.pushStack( jQuery.unique( jQuery.merge( + this.get(), + typeof selector == 'string' ? + jQuery( selector ) : + jQuery.makeArray( selector ) + ))); + }, + + is: function( selector ) { + return !!selector && jQuery.multiFilter( selector, this ).length > 0; + }, + + hasClass: function( selector ) { + return this.is( "." + selector ); + }, + + val: function( value ) { + if ( value == undefined ) { + + if ( this.length ) { + var elem = this[0]; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + + // Everything else, we just grab the value + } else + return (this[0].value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + if( value.constructor == Number ) + value += ''; + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = jQuery.makeArray(value); + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value == undefined ? + (this[0] ? + this[0].innerHTML : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + data: function( key, value ){ + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + if ( data === undefined && this.length ) + data = jQuery.data( this[0], key ); + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } else + return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ + jQuery.data( this, key, value ); + }); + }, + + removeData: function( key ){ + return this.each(function(){ + jQuery.removeData( this, key ); + }); + }, + + domManip: function( args, table, reverse, callback ) { + var clone = this.length > 1, elems; + + return this.each(function(){ + if ( !elems ) { + elems = jQuery.clean( args, this.ownerDocument ); + + if ( reverse ) + elems.reverse(); + } + + var obj = this; + + if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) + obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); + + var scripts = jQuery( [] ); + + jQuery.each(elems, function(){ + var elem = clone ? + jQuery( this ).clone( true )[0] : + this; + + // execute all scripts after the elements have been injected + if ( jQuery.nodeName( elem, "script" ) ) + scripts = scripts.add( elem ); + else { + // Remove any inner scripts for later evaluation + if ( elem.nodeType == 1 ) + scripts = scripts.add( jQuery( "script", elem ).remove() ); + + // Inject the elements into the document + callback.call( obj, elem ); + } + }); + + scripts.each( evalScript ); + }); + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +function now(){ + return +new Date; +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( target.constructor == Boolean ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target != "object" && typeof target != "function" ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + var src = target[ name ], copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) + continue; + + // Recurse if we're merging object values + if ( deep && copy && typeof copy == "object" && !copy.nodeType ) + target[ name ] = jQuery.extend( deep, + // Never move original objects, clone them + src || ( copy.length != null ? [ ] : { } ) + , copy ); + + // Don't bring in undefined values + else if ( copy !== undefined ) + target[ name ] = copy; + + } + + // Return the modified object + return target; +}; + +var expando = "jQuery" + now(), uuid = 0, windowData = {}, + // exclude the following css properties to add px + exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, + // cache defaultView + defaultView = document.defaultView || {}; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning this function. + isFunction: function( fn ) { + return !!fn && typeof fn != "string" && !fn.nodeName && + fn.constructor != Array && /^[\s[]?function/.test( fn + "" ); + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.documentElement && !elem.body || + elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + data = jQuery.trim( data ); + + if ( data ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.browser.msie ) + script.text = data; + else + script.appendChild( document.createTextNode( data ) ); + + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709). + head.insertBefore( script, head.firstChild ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + cache: {}, + + data: function( elem, name, data ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // Compute a unique ID for the element + if ( !id ) + id = elem[ expando ] = ++uuid; + + // Only generate the data cache if we're + // trying to access or manipulate it + if ( name && !jQuery.cache[ id ] ) + jQuery.cache[ id ] = {}; + + // Prevent overriding the named cache with undefined values + if ( data !== undefined ) + jQuery.cache[ id ][ name ] = data; + + // Return the named cache data, or the ID for the element + return name ? + jQuery.cache[ id ][ name ] : + id; + }, + + removeData: function( elem, name ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // If we want to remove a specific section of the element's data + if ( name ) { + if ( jQuery.cache[ id ] ) { + // Remove the section of cache data + delete jQuery.cache[ id ][ name ]; + + // If we've removed all the data, remove the element's cache + name = ""; + + for ( name in jQuery.cache[ id ] ) + break; + + if ( !name ) + jQuery.removeData( elem ); + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch(e){ + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if ( elem.removeAttribute ) + elem.removeAttribute( expando ); + } + + // Completely remove the data cache + delete jQuery.cache[ id ]; + } + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, length = object.length; + + if ( args ) { + if ( length == undefined ) { + for ( name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( ; i < length; ) + if ( callback.apply( object[ i++ ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( length == undefined ) { + for ( name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames != undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use hasClass("class") + has: function( elem, className ) { + return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + var padding = 0, border = 0; + jQuery.each( which, function() { + padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + val -= Math.round(padding + border); + } + + if ( jQuery(elem).is(":visible") ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, val); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret, style = elem.style; + + // A helper method for determining if an element's values are broken + function color( elem ) { + if ( !jQuery.browser.safari ) + return false; + + // defaultView is cached + var ret = defaultView.getComputedStyle( elem, null ); + return !ret || ret.getPropertyValue("color") == ""; + } + + // We need to handle opacity special in IE + if ( name == "opacity" && jQuery.browser.msie ) { + ret = jQuery.attr( style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + // Opera sometimes will give the wrong display answer, this fixes it, see #2037 + if ( jQuery.browser.opera && name == "display" ) { + var save = style.outline; + style.outline = "0 solid black"; + style.outline = save; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && style && style[ name ] ) + ret = style[ name ]; + + else if ( defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var computedStyle = defaultView.getComputedStyle( elem, null ); + + if ( computedStyle && !color( elem ) ) + ret = computedStyle.getPropertyValue( name ); + + // If the element isn't reporting its values properly in Safari + // then some display: none elements are involved + else { + var swap = [], stack = [], a = elem, i = 0; + + // Locate all of the parent display: none elements + for ( ; a && color(a); a = a.parentNode ) + stack.unshift(a); + + // Go through and make them visible, but in reverse + // (It would be better if we knew the exact display type that they had) + for ( ; i < stack.length; i++ ) + if ( color( stack[ i ] ) ) { + swap[ i ] = stack[ i ].style.display; + stack[ i ].style.display = "block"; + } + + // Since we flip the display style, we have to handle that + // one special, otherwise get the value + ret = name == "display" && swap[ stack.length - 1 ] != null ? + "none" : + ( computedStyle && computedStyle.getPropertyValue( name ) ) || ""; + + // Finally, revert the display styles back + for ( i = 0; i < swap.length; i++ ) + if ( swap[ i ] != null ) + stack[ i ].style.display = swap[ i ]; + } + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var left = style.left, rsLeft = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + style.left = ret || 0; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + elem.runtimeStyle.left = rsLeft; + } + } + + return ret; + }, + + clean: function( elems, context ) { + var ret = []; + context = context || document; + // !context.createElement fails in IE with an error but returns typeof 'object' + if (typeof context.createElement == 'undefined') + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + jQuery.each(elems, function(i, elem){ + if ( !elem ) + return; + + if ( elem.constructor == Number ) + elem += ''; + + // Convert html string into DOM nodes + if ( typeof elem == "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); + + var wrap = + // option or optgroup + !tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "", "
" ] || + + !tags.indexOf("", "" ] || + + // matched above + (!tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + // IE can't serialize and