]>
git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - html/html/include/jquery-1.2.6.min.js
2 * jQuery 1.2.6 - New Wave Javascript
4 * Copyright (c) 2008 John Resig (jquery.com)
5 * Dual licensed under the MIT (MIT-LICENSE.txt)
6 * and GPL (GPL-LICENSE.txt) licenses.
8 * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
11 ( function (){ var _jQuery
= window
. jQuery
, _
$= window
.$; var jQuery
= window
. jQuery
= window
.$= function ( selector
, context
){ return new jQuery
. fn
. init ( selector
, context
);}; var quickExpr
= /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/ , isSimple
= /^.[^:#\[\.]*$/ , undefined ; jQuery
. fn
= jQuery
. prototype ={ init : function ( selector
, context
){ selector
= selector
|| document
; if ( selector
. nodeType
){ this [ 0 ]= selector
; this . length
= 1 ; return this ;} if ( typeof selector
== "string" ){ var match
= quickExpr
. exec ( selector
); if ( match
&&( match
[ 1 ]||! context
)){ if ( match
[ 1 ]) selector
= jQuery
. clean ([ match
[ 1 ]], context
); else { var elem
= document
. getElementById ( match
[ 3 ]); if ( elem
){ if ( elem
. id
!= match
[ 3 ]) return jQuery (). find ( selector
); return jQuery ( elem
);} selector
=[];}} else
12 return jQuery ( context
). find ( selector
);} else if ( jQuery
. isFunction ( selector
)) return jQuery ( document
)[ jQuery
. fn
. ready
? "ready" : "load" ]( selector
); return this . setArray ( jQuery
. makeArray ( selector
));}, jquery
: "1.2.6" , size : function (){ return this . length
;}, length
: 0 , get : function ( num
){ return num
== undefined ? jQuery
. makeArray ( this ): this [ num
];}, pushStack : function ( elems
){ var ret
= jQuery ( elems
); ret
. prevObject
= this ; return ret
;}, setArray : function ( elems
){ this . length
= 0 ; Array
. prototype . push
. apply ( this , elems
); return this ;}, each : function ( callback
, args
){ return jQuery
. each ( this , callback
, args
);}, index : function ( elem
){ var ret
=- 1 ; return jQuery
. inArray ( elem
&& elem
. jquery
? elem
[ 0 ]: elem
, this );}, attr : function ( name
, value
, type
){ var options
= name
; if ( name
. constructor == String
) if ( value
=== undefined ) return this [ 0 ]&& jQuery
[ type
|| "attr" ]( this [ 0 ], name
); else { options
={}; options
[ name
]= value
;} return this . each ( function ( i
){ for ( name
in options
) jQuery
. attr ( type
? this . style
: this , name
, jQuery
. prop ( this , options
[ name
], type
, i
, name
));});}, css : function ( key
, value
){ 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 ]) 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
){ var ret
= this . map ( function (){ if ( jQuery
. browser
. msie
&&! jQuery
. isXMLDoc ( this )){ var clone
= this . cloneNode ( true ), container
= document
. createElement ( "div" ); container
. appendChild ( clone
); return jQuery
. clean ([ container
. innerHTML
])[ 0 ];} else
13 return this . cloneNode ( true );}); var clone
= ret
. find ( "*" ). andSelf (). each ( function (){ if ( this [ expando
]!= undefined ) this [ expando
]= null ;}); 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 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
) if ( isSimple
. test ( selector
)) return this . pushStack ( jQuery
. multiFilter ( selector
, this , true )); else
14 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 ]; if ( jQuery
. nodeName ( elem
, "select" )){ var index
= elem
. selectedIndex
, values
=[], options
= elem
. options
, one
= elem
. type
== "select-one" ; if ( index
< 0 ) return null ; for ( var i
= one
? index
: 0 , max
= one
? index
+ 1 : options
. length
; i
< max
; i
++){ var option
= options
[ i
]; if ( option
. selected
){ value
= jQuery
. browser
. msie
&&! option
. attributes
. value
. specified
? option
. text
: option
. value
; if ( one
) return value
; values
. push ( value
);}} return values
;} else
15 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
16 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
17 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 ; if ( jQuery
. nodeName ( elem
, "script" )) scripts
= scripts
. add ( elem
); else { if ( elem
. nodeType
== 1 ) scripts
= scripts
. add ( jQuery ( "script" , elem
). remove ()); callback
. call ( obj
, elem
);}}); scripts
. each ( evalScript
);});}}; jQuery
. fn
. init
. prototype = jQuery
. fn
; function evalScript ( i
, elem
){ if ( elem
. src
) jQuery
. ajax ({ url
: elem
. src
, async
: false , dataType
: "script" }); else
18 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 (){ var target
= arguments
[ 0 ]||{}, i
= 1 , length
= arguments
. length
, deep
= false , options
; if ( target
. constructor == Boolean
){ deep
= target
; target
= arguments
[ 1 ]||{}; i
= 2 ;} if ( typeof target
!= "object" && typeof target
!= "function" ) target
={}; if ( length
== i
){ target
= this ;-- i
;} for (; i
< length
; i
++) if (( options
= arguments
[ i
])!= null ) for ( var name
in options
){ var src
= target
[ name
], copy
= options
[ name
]; if ( target
=== copy
) continue ; if ( deep
&& copy
&& typeof copy
== "object" &&! copy
. nodeType
) target
[ name
]= jQuery
. extend ( deep
, src
||( copy
. length
!= null ?[]:{}), copy
); else if ( copy
!== undefined ) target
[ name
]= copy
;} return target
;}; var expando
= "jQuery" + now (), uuid
= 0 , windowData
={}, exclude
= /z-?index|font-?weight|opacity|zoom|line-?height/i , defaultView
= document
. defaultView
||{}; jQuery
. extend ({ noConflict : function ( deep
){ window
.$= _
$; if ( deep
) window
. jQuery
= _jQuery
; return jQuery
;}, isFunction : function ( fn
){ return !! fn
&& typeof fn
!= "string" &&! fn
. nodeName
&& fn
. constructor != Array
&& /^[\s[]?function/ . test ( fn
+ "" );}, isXMLDoc : function ( elem
){ return elem
. documentElement
&&! elem
. body
|| elem
. tagName
&& elem
. ownerDocument
&&! elem
. ownerDocument
. body
;}, globalEval : function ( data
){ data
= jQuery
. trim ( data
); if ( data
){ var head
= document
. getElementsByTagName ( "head" )[ 0 ]|| document
. documentElement
, script
= document
. createElement ( "script" ); script
. type
= "text/javascript" ; if ( jQuery
. browser
. msie
) script
. text
= data
; else
19 script
. appendChild ( document
. createTextNode ( data
)); 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
]; if (! id
) id
= elem
[ expando
]=++ uuid
; if ( name
&&! jQuery
. cache
[ id
]) jQuery
. cache
[ id
]={}; if ( data
!== undefined ) jQuery
. cache
[ id
][ name
]= data
; return name
? jQuery
. cache
[ id
][ name
]: id
;}, removeData : function ( elem
, name
){ elem
= elem
== window
? windowData
: elem
; var id
= elem
[ expando
]; if ( name
){ if ( jQuery
. cache
[ id
]){ delete jQuery
. cache
[ id
][ name
]; name
= "" ; for ( name
in jQuery
. cache
[ id
]) break ; if (! name
) jQuery
. removeData ( elem
);}} else { try { delete elem
[ expando
];} catch ( e
){ if ( elem
. removeAttribute
) elem
. removeAttribute ( expando
);} delete jQuery
. cache
[ id
];}}, 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
20 for (; i
< length
;) if ( callback
. apply ( object
[ i
++], args
)=== false ) break ;} else { if ( length
== undefined ){ for ( name
in object
) if ( callback
. call ( object
[ name
], name
, object
[ name
])=== false ) break ;} else
21 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
){ if ( jQuery
. isFunction ( value
)) value
= value
. call ( elem
, i
); return value
&& value
. constructor == Number
&& type
== "curCSS" &&! exclude
. test ( name
)? value
+ "px" : value
;}, className
:{ 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
;});}, 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 ( " " ): "" ;}, has : function ( elem
, className
){ return jQuery
. inArray ( className
,( elem
. className
|| elem
). toString (). split ( /\s+/ ))>- 1 ;}}, swap : function ( elem
, options
, callback
){ var old
={}; for ( var name
in options
){ old
[ name
]= elem
. style
[ name
]; elem
. style
[ name
]= options
[ name
];} callback
. call ( elem
); 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
22 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
; function color ( elem
){ if (! jQuery
. browser
. safari
) return false ; var ret
= defaultView
. getComputedStyle ( elem
, null ); return ! ret
|| ret
. getPropertyValue ( "color" )== "" ;} if ( name
== "opacity" && jQuery
. browser
. msie
){ ret
= jQuery
. attr ( style
, "opacity" ); return ret
== "" ? "1" : ret
;} if ( jQuery
. browser
. opera
&& name
== "display" ){ var save
= style
. outline
; style
. outline
= "0 solid black" ; style
. outline
= save
;} if ( name
. match ( /float/i )) name
= styleFloat
; if (! force
&& style
&& style
[ name
]) ret
= style
[ name
]; else if ( defaultView
. getComputedStyle
){ 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
); else { var swap
=[], stack
=[], a
= elem
, i
= 0 ; for (; a
&& color ( a
); a
= a
. parentNode
) stack
. unshift ( a
); for (; i
< stack
. length
; i
++) if ( color ( stack
[ i
])){ swap
[ i
]= stack
[ i
]. style
. display
; stack
[ i
]. style
. display
= "block" ;} ret
= name
== "display" && swap
[ stack
. length
- 1 ]!= null ? "none" :( computedStyle
&& computedStyle
. getPropertyValue ( name
))|| "" ; for ( i
= 0 ; i
< swap
. length
; i
++) if ( swap
[ i
]!= null ) stack
[ i
]. style
. display
= swap
[ i
];} 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
]; if (! /^\d+(px)?$/i . test ( ret
)&& /^\d/ . test ( ret
)){ var left
= style
. left
, rsLeft
= elem
. runtimeStyle
. left
; elem
. runtimeStyle
. left
= elem
. currentStyle
. left
; style
. left
= ret
|| 0 ; ret
= style
. pixelLeft
+ "px" ; style
. left
= left
; elem
. runtimeStyle
. left
= rsLeft
;}} return ret
;}, clean : function ( elems
, context
){ var ret
=[]; context
= context
|| document
; 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
+= '' ; if ( typeof elem
== "string" ){ 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
+ "></" + tag
+ ">" ;}); var tags
= jQuery
. trim ( elem
). toLowerCase (), div
= context
. createElement ( "div" ); var wrap
=! tags
. indexOf ( "<opt" )&&[ 1 , "<select multiple='multiple'>" , "</select>" ]||! tags
. indexOf ( "<leg" )&&[ 1 , "<fieldset>" , "</fieldset>" ]|| tags
. match (/^<( thead
| tbody
| tfoot
| colg
| cap
) /)&&[1,"<table>","</ table
> "]||!tags.indexOf(" < tr
")&&[2," < table
>< tbody
> "," < /tbody></ table
> "]||(!tags.indexOf(" < td
")||!tags.indexOf(" < th
"))&&[3," < table
>< tbody
>< tr
> "," < /tr></ tbody
>< /table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></ tbody
>< colgroup
> "," < /colgroup></ table
> "]||jQuery.browser.msie&&[1," div
< div
> "," < /div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/ ^\ s
/.test(elem))div.insertBefore(context.createTextNode(elem.match(/ ^\ s*/
)[ 0 ]), div
. firstChild
);} elem
= jQuery
. makeArray ( div
. childNodes
);} if ( elem
. length
=== 0 &&(! jQuery
. nodeName ( elem
, "form" )&&! jQuery
. nodeName ( elem
, "select" ))) return ; if ( elem
[ 0 ]== undefined || jQuery
. nodeName ( elem
, "form" )|| elem
. options
) ret
. push ( elem
); else
23 ret
= jQuery
. merge ( ret
, elem
);}); return ret
;}, attr : function ( elem
, name
, value
){ if (! elem
|| elem
. nodeType
== 3 || elem
. nodeType
== 8 ) return undefined ; var notxml
=! jQuery
. isXMLDoc ( elem
), set = value
!== undefined , msie
= jQuery
. browser
. msie
; name
= notxml
&& jQuery
. props
[ name
]|| name
; if ( elem
. tagName
){ var special
= /href|src|style/ . test ( name
); if ( name
== "selected" && jQuery
. browser
. safari
) elem
. parentNode
. selectedIndex
; if ( name
in elem
&& notxml
&&! special
){ if ( set ){ if ( name
== "type" && jQuery
. nodeName ( elem
, "input" )&& elem
. parentNode
) throw "type property can't be changed" ; elem
[ name
]= value
;} if ( jQuery
. nodeName ( elem
, "form" )&& elem
. getAttributeNode ( name
)) return elem
. getAttributeNode ( name
). nodeValue
; return elem
[ name
];} if ( msie
&& notxml
&& name
== "style" ) return jQuery
. attr ( elem
. style
, "cssText" , value
); if ( set ) elem
. setAttribute ( name
, "" + value
); var attr
= msie
&& notxml
&& special
? elem
. getAttribute ( name
, 2 ): elem
. getAttribute ( name
); return attr
=== null ? undefined : attr
;} if ( msie
&& name
== "opacity" ){ if ( set ){ elem
. zoom
= 1 ; elem
. filter
=( elem
. filter
|| "" ). replace ( /alpha\([^)]*\)/ , "" )+( parseInt ( value
)+ '' == "NaN" ? "" : "alpha(opacity=" + value
* 100 + ")" );} return elem
. filter
&& elem
. filter
. indexOf ( "opacity=" )>= 0 ?( parseFloat ( elem
. filter
. match ( /opacity=([^)]*)/ )[ 1 ]) /100)+'':"";}name=name.replace(/ -([ a
- z
]) /ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/ ^\ s
+|\ s
+$/ g
, "" );}, makeArray : function ( array
){ var ret
=[]; if ( array
!= null ){ var i
= array
. length
; if ( i
== null || array
. split
|| array
. setInterval
|| array
. call
) ret
[ 0 ]= array
; else
24 while ( i
) ret
[-- i
]= array
[ i
];} return ret
;}, inArray : function ( elem
, array
){ for ( var i
= 0 , length
= array
. length
; i
< length
; i
++) if ( array
[ i
]=== elem
) return i
; return - 1 ;}, merge : function ( first
, second
){ var i
= 0 , elem
, pos
= first
. length
; if ( jQuery
. browser
. msie
){ while ( elem
= second
[ i
++]) if ( elem
. nodeType
!= 8 ) first
[ pos
++]= elem
;} else
25 while ( elem
= second
[ i
++]) first
[ pos
++]= elem
; return first
;}, unique : function ( array
){ var ret
=[], done
={}; try { for ( var i
= 0 , length
= array
. length
; i
< length
; i
++){ var id
= jQuery
. data ( array
[ i
]); if (! done
[ id
]){ done
[ id
]= true ; ret
. push ( array
[ i
]);}}} catch ( e
){ ret
= array
;} return ret
;}, grep : function ( elems
, callback
, inv
){ var ret
=[]; for ( var i
= 0 , length
= elems
. length
; i
< length
; i
++) if (! inv
!=! callback ( elems
[ i
], i
)) ret
. push ( elems
[ i
]); return ret
;}, map : function ( elems
, callback
){ var ret
=[]; for ( var i
= 0 , length
= elems
. length
; i
< length
; i
++){ var value
= callback ( elems
[ i
], i
); if ( value
!= null ) ret
[ ret
. length
]= value
;} return ret
. concat
. apply ([], ret
);}}); var userAgent
= navigator
. userAgent
. toLowerCase (); jQuery
. browser
={ version
:( userAgent
. match ( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ )||[])[ 1 ], safari
: /webkit/ . test ( userAgent
), opera
: /opera/ . test ( userAgent
), msie
: /msie/ . test ( userAgent
)&&! /opera/ . test ( userAgent
), mozilla
: /mozilla/ . test ( userAgent
)&&! /(compatible|webkit)/ . test ( userAgent
)}; var styleFloat
= jQuery
. browser
. msie
? "styleFloat" : "cssFloat" ; jQuery
. extend ({ boxModel
:! jQuery
. browser
. msie
|| document
. compatMode
== "CSS1Compat" , props
:{ "for" : "htmlFor" , "class" : "className" , "float" : styleFloat
, cssFloat
: styleFloat
, styleFloat
: styleFloat
, readonly
: "readOnly" , maxlength
: "maxLength" , cellspacing
: "cellSpacing" }}); jQuery
. each ({ parent : function ( elem
){ return elem
. parentNode
;}, parents : function ( elem
){ return jQuery
. dir ( elem
, "parentNode" );}, next : function ( elem
){ return jQuery
. nth ( elem
, 2 , "nextSibling" );}, prev : function ( elem
){ return jQuery
. nth ( elem
, 2 , "previousSibling" );}, nextAll : function ( elem
){ return jQuery
. dir ( elem
, "nextSibling" );}, prevAll : function ( elem
){ return jQuery
. dir ( elem
, "previousSibling" );}, siblings : function ( elem
){ return jQuery
. sibling ( elem
. parentNode
. firstChild
, elem
);}, children : function ( elem
){ return jQuery
. sibling ( elem
. firstChild
);}, contents : function ( elem
){ return jQuery
. nodeName ( elem
, "iframe" )? elem
. contentDocument
|| elem
. contentWindow
. document
: jQuery
. makeArray ( elem
. childNodes
);}}, function ( name
, fn
){ jQuery
. fn
[ name
]= function ( selector
){ var ret
= jQuery
. map ( this , fn
); if ( selector
&& typeof selector
== "string" ) ret
= jQuery
. multiFilter ( selector
, ret
); return this . pushStack ( jQuery
. unique ( ret
));};}); jQuery
. each ({ appendTo
: "append" , prependTo
: "prepend" , insertBefore
: "before" , insertAfter
: "after" , replaceAll
: "replaceWith" }, function ( name
, original
){ jQuery
. fn
[ name
]= function (){ var args
= arguments
; return this . each ( function (){ for ( var i
= 0 , length
= args
. length
; i
< length
; i
++) jQuery ( args
[ i
])[ original
]( this );});};}); jQuery
. each ({ removeAttr : function ( name
){ jQuery
. attr ( this , name
, "" ); if ( this . nodeType
== 1 ) this . removeAttribute ( name
);}, addClass : function ( classNames
){ jQuery
. className
. add ( this , classNames
);}, removeClass : function ( classNames
){ jQuery
. className
. remove ( this , classNames
);}, toggleClass : function ( classNames
){ jQuery
. className
[ jQuery
. className
. has ( this , classNames
)? "remove" : "add" ]( this , classNames
);}, remove : function ( selector
){ if (! selector
|| jQuery
. filter ( selector
,[ this ]). r
. length
){ jQuery ( "*" , this ). add ( this ). each ( function (){ jQuery
. event
. remove ( this ); jQuery
. removeData ( this );}); if ( this . parentNode
) this . parentNode
. removeChild ( this );}}, empty : function (){ jQuery ( ">*" , this ). remove (); while ( this . firstChild
) this . removeChild ( this . firstChild
);}}, function ( name
, fn
){ jQuery
. fn
[ name
]= function (){ return this . each ( fn
, arguments
);};}); jQuery
. each ([ "Height" , "Width" ], function ( i
, name
){ var type
= name
. toLowerCase (); jQuery
. fn
[ type
]= function ( size
){ return this [ 0 ]== window
? jQuery
. browser
. opera
&& document
. body
[ "client" + name
]|| jQuery
. browser
. safari
&& window
[ "inner" + name
]|| document
. compatMode
== "CSS1Compat" && document
. documentElement
[ "client" + name
]|| document
. body
[ "client" + name
]: this [ 0 ]== document
? Math
. max ( Math
. max ( document
. body
[ "scroll" + name
], document
. documentElement
[ "scroll" + name
]), Math
. max ( document
. body
[ "offset" + name
], document
. documentElement
[ "offset" + name
])): size
== undefined ?( this . length
? jQuery
. css ( this [ 0 ], type
): null ): this . css ( type
, size
. constructor == String
? size
: size
+ "px" );};}); function num ( elem
, prop
){ return elem
[ 0 ]&& parseInt ( jQuery
. curCSS ( elem
[ 0 ], prop
, true ), 10 )|| 0 ;} var chars
= jQuery
. browser
. safari
&& parseInt ( jQuery
. browser
. version
)< 417 ? "(?:[ \\ w*_-]| \\\\ .)" : "(?:[ \\ w \u0128 - \uFFFF *_-]| \\\\ .)" , quickChild
= new RegExp ( "^> \\ s*(" + chars
+ "+)" ), quickID
= new RegExp ( "^(" + chars
+ "+)(#)(" + chars
+ "+)" ), quickClass
= new RegExp ( "^([#.]?)(" + chars
+ "*)" ); jQuery
. extend ({ expr
:{ "" : function ( a
, i
, m
){ return m
[ 2 ]== "*" || jQuery
. nodeName ( a
, m
[ 2 ]);}, "#" : function ( a
, i
, m
){ return a
. getAttribute ( "id" )== m
[ 2 ];}, ":" :{ lt : function ( a
, i
, m
){ return i
< m
[ 3 ]- 0 ;}, gt : function ( a
, i
, m
){ return i
> m
[ 3 ]- 0 ;}, nth : function ( a
, i
, m
){ return m
[ 3 ]- 0 == i
;}, eq : function ( a
, i
, m
){ return m
[ 3 ]- 0 == i
;}, first : function ( a
, i
){ return i
== 0 ;}, last : function ( a
, i
, m
, r
){ return i
== r
. length
- 1 ;}, even : function ( a
, i
){ return i
% 2 == 0 ;}, odd : function ( a
, i
){ return i
% 2 ;}, "first-child" : function ( a
){ return a
. parentNode
. getElementsByTagName ( "*" )[ 0 ]== a
;}, "last-child" : function ( a
){ return jQuery
. nth ( a
. parentNode
. lastChild
, 1 , "previousSibling" )== a
;}, "only-child" : function ( a
){ return ! jQuery
. nth ( a
. parentNode
. lastChild
, 2 , "previousSibling" );}, parent : function ( a
){ return a
. firstChild
;}, empty : function ( a
){ return ! a
. firstChild
;}, contains : function ( a
, i
, m
){ return ( a
. textContent
|| a
. innerText
|| jQuery ( a
). text ()|| "" ). indexOf ( m
[ 3 ])>= 0 ;}, visible : function ( a
){ return "hidden" != a
. type
&& jQuery
. css ( a
, "display" )!= "none" && jQuery
. css ( a
, "visibility" )!= "hidden" ;}, hidden : function ( a
){ return "hidden" == a
. type
|| jQuery
. css ( a
, "display" )== "none" || jQuery
. css ( a
, "visibility" )== "hidden" ;}, enabled : function ( a
){ return ! a
. disabled
;}, disabled : function ( a
){ return a
. disabled
;}, checked : function ( a
){ return a
. checked
;}, selected : function ( a
){ return a
. selected
|| jQuery
. attr ( a
, "selected" );}, text : function ( a
){ return "text" == a
. type
;}, radio : function ( a
){ return "radio" == a
. type
;}, checkbox : function ( a
){ return "checkbox" == a
. type
;}, file : function ( a
){ return "file" == a
. type
;}, password : function ( a
){ return "password" == a
. type
;}, submit : function ( a
){ return "submit" == a
. type
;}, image : function ( a
){ return "image" == a
. type
;}, reset : function ( a
){ return "reset" == a
. type
;}, button : function ( a
){ return "button" == a
. type
|| jQuery
. nodeName ( a
, "button" );}, input : function ( a
){ return /input|select|textarea|button/i . test ( a
. nodeName
);}, has : function ( a
, i
, m
){ return jQuery
. find ( m
[ 3 ], a
). length
;}, header : function ( a
){ return /h\d/i . test ( a
. nodeName
);}, animated : function ( a
){ return jQuery
. grep ( jQuery
. timers
, function ( fn
){ return a
== fn
. elem
;}). length
;}}}, parse
:[ /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/ , /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/ , new RegExp ( "^([:.#]*)(" + chars
+ "+)" )], multiFilter : function ( expr
, elems
, not
){ var old
, cur
=[]; while ( expr
&& expr
!= old
){ old
= expr
; var f
= jQuery
. filter ( expr
, elems
, not
); expr
= f
. t
. replace ( /^\s*,\s*/ , "" ); cur
= not
? elems
= f
. r
: jQuery
. merge ( cur
, f
. r
);} return cur
;}, find : function ( t
, context
){ if ( typeof t
!= "string" ) return [ t
]; if ( context
&& context
. nodeType
!= 1 && context
. nodeType
!= 9 ) return []; context
= context
|| document
; var ret
=[ context
], done
=[], last
, nodeName
; while ( t
&& last
!= t
){ var r
=[]; last
= t
; t
= jQuery
. trim ( t
); var foundToken
= false , re
= quickChild
, m
= re
. exec ( t
); if ( m
){ nodeName
= m
[ 1 ]. toUpperCase (); for ( var i
= 0 ; ret
[ i
]; i
++) for ( var c
= ret
[ i
]. firstChild
; c
; c
= c
. nextSibling
) if ( c
. nodeType
== 1 &&( nodeName
== "*" || c
. nodeName
. toUpperCase ()== nodeName
)) r
. push ( c
); ret
= r
; t
= t
. replace ( re
, "" ); if ( t
. indexOf ( " " )== 0 ) continue ; foundToken
= true ;} else { re
= /^([>+~])\s*(\w*)/i ; if (( m
= re
. exec ( t
))!= null ){ r
=[]; var merge
={}; nodeName
= m
[ 2 ]. toUpperCase (); m
= m
[ 1 ]; for ( var j
= 0 , rl
= ret
. length
; j
< rl
; j
++){ var n
= m
== "~" || m
== "+" ? ret
[ j
]. nextSibling
: ret
[ j
]. firstChild
; for (; n
; n
= n
. nextSibling
) if ( n
. nodeType
== 1 ){ var id
= jQuery
. data ( n
); if ( m
== "~" && merge
[ id
]) break ; if (! nodeName
|| n
. nodeName
. toUpperCase ()== nodeName
){ if ( m
== "~" ) merge
[ id
]= true ; r
. push ( n
);} if ( m
== "+" ) break ;}} ret
= r
; t
= jQuery
. trim ( t
. replace ( re
, "" )); foundToken
= true ;}} if ( t
&&! foundToken
){ if (! t
. indexOf ( "," )){ if ( context
== ret
[ 0 ]) ret
. shift (); done
= jQuery
. merge ( done
, ret
); r
= ret
=[ context
]; t
= " " + t
. substr ( 1 , t
. length
);} else { var re2
= quickID
; var m
= re2
. exec ( t
); if ( m
){ m
=[ 0 , m
[ 2 ], m
[ 3 ], m
[ 1 ]];} else { re2
= quickClass
; m
= re2
. exec ( t
);} m
[ 2 ]= m
[ 2 ]. replace ( /\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/ \\ /g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/ href
| src
| selected
/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/ (-?)(\ d
*) n ((?:\+|-)?\ d
*) /.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/ \ D
/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/ first
>= 0 ) add
= true ; if ( add
^ not
) tmp
. push ( node
);} r
= tmp
;} else { var fn
= jQuery
. expr
[ m
[ 1 ]]; if ( typeof fn
== "object" ) fn
= fn
[ m
[ 2 ]]; if ( typeof fn
== "string" ) fn
= eval ( "false||function(a,i){return " + fn
+ ";}" ); r
= jQuery
. grep ( r
, function ( elem
, i
){ return fn ( elem
, i
, m
, r
);}, not
);}} return { r
: r
, t
: t
};}, dir : function ( elem
, dir
){ var matched
=[], cur
= elem
[ dir
]; while ( cur
&& cur
!= document
){ if ( cur
. nodeType
== 1 ) matched
. push ( cur
); cur
= cur
[ dir
];} return matched
;}, nth : function ( cur
, result
, dir
, elem
){ result
= result
|| 1 ; var num
= 0 ; for (; cur
; cur
= cur
[ dir
]) if ( cur
. nodeType
== 1 &&++ num
== result
) break ; return cur
;}, sibling : function ( n
, elem
){ var r
=[]; for (; n
; n
= n
. nextSibling
){ if ( n
. nodeType
== 1 && n
!= elem
) r
. push ( n
);} return r
;}}); jQuery
. event
={ add : function ( elem
, types
, handler
, data
){ if ( elem
. nodeType
== 3 || elem
. nodeType
== 8 ) return ; if ( jQuery
. browser
. msie
&& elem
. setInterval
) elem
= window
; if (! handler
. guid
) handler
. guid
= this . guid
++; if ( data
!= undefined ){ var fn
= handler
; handler
= this . proxy ( fn
, function (){ return fn
. apply ( this , arguments
);}); handler
. data
= data
;} var events
= jQuery
. data ( elem
, "events" )|| jQuery
. data ( elem
, "events" ,{}), handle
= jQuery
. data ( elem
, "handle" )|| jQuery
. data ( elem
, "handle" , function (){ if ( typeof jQuery
!= "undefined" &&! jQuery
. event
. triggered
) return jQuery
. event
. handle
. apply ( arguments
. callee
. elem
, arguments
);}); handle
. elem
= elem
; jQuery
. each ( types
. split ( /\s+/ ), function ( index
, type
){ var parts
= type
. split ( "." ); type
= parts
[ 0 ]; handler
. type
= parts
[ 1 ]; var handlers
= events
[ type
]; if (! handlers
){ handlers
= events
[ type
]={}; if (! jQuery
. event
. special
[ type
]|| jQuery
. event
. special
[ type
]. setup
. call ( elem
)=== false ){ if ( elem
. addEventListener
) elem
. addEventListener ( type
, handle
, false ); else if ( elem
. attachEvent
) elem
. attachEvent ( "on" + type
, handle
);}} handlers
[ handler
. guid
]= handler
; jQuery
. event
. global
[ type
]= true ;}); elem
= null ;}, guid
: 1 , global
:{}, remove : function ( elem
, types
, handler
){ if ( elem
. nodeType
== 3 || elem
. nodeType
== 8 ) return ; var events
= jQuery
. data ( elem
, "events" ), ret
, index
; if ( events
){ if ( types
== undefined ||( typeof types
== "string" && types
. charAt ( 0 )== "." )) for ( var type
in events
) this . remove ( elem
, type
+( types
|| "" )); else { if ( types
. type
){ handler
= types
. handler
; types
= types
. type
;} jQuery
. each ( types
. split ( /\s+/ ), function ( index
, type
){ var parts
= type
. split ( "." ); type
= parts
[ 0 ]; if ( events
[ type
]){ if ( handler
) delete events
[ type
][ handler
. guid
]; else
26 for ( handler
in events
[ type
]) if (! parts
[ 1 ]|| events
[ type
][ handler
]. type
== parts
[ 1 ]) delete events
[ type
][ handler
]; for ( ret
in events
[ type
]) break ; if (! ret
){ if (! jQuery
. event
. special
[ type
]|| jQuery
. event
. special
[ type
]. teardown
. call ( elem
)=== false ){ if ( elem
. removeEventListener
) elem
. removeEventListener ( type
, jQuery
. data ( elem
, "handle" ), false ); else if ( elem
. detachEvent
) elem
. detachEvent ( "on" + type
, jQuery
. data ( elem
, "handle" ));} ret
= null ; delete events
[ type
];}}});} for ( ret
in events
) break ; if (! ret
){ var handle
= jQuery
. data ( elem
, "handle" ); if ( handle
) handle
. elem
= null ; jQuery
. removeData ( elem
, "events" ); jQuery
. removeData ( elem
, "handle" );}}}, trigger : function ( type
, data
, elem
, donative
, extra
){ data
= jQuery
. makeArray ( data
); if ( type
. indexOf ( "!" )>= 0 ){ type
= type
. slice ( 0 ,- 1 ); var exclusive
= true ;} if (! elem
){ if ( this . global
[ type
]) jQuery ( "*" ). add ([ window
, document
]). trigger ( type
, data
);} else { if ( elem
. nodeType
== 3 || elem
. nodeType
== 8 ) return undefined ; var val
, ret
, fn
= jQuery
. isFunction ( elem
[ type
]|| null ), event
=! data
[ 0 ]||! data
[ 0 ]. preventDefault
; if ( event
){ data
. unshift ({ type
: type
, target
: elem
, preventDefault : function (){}, stopPropagation : function (){}, timeStamp
: now ()}); data
[ 0 ][ expando
]= true ;} data
[ 0 ]. type
= type
; if ( exclusive
) data
[ 0 ]. exclusive
= true ; var handle
= jQuery
. data ( elem
, "handle" ); if ( handle
) val
= handle
. apply ( elem
, data
); if ((! fn
||( jQuery
. nodeName ( elem
, 'a' )&& type
== "click" ))&& elem
[ "on" + type
]&& elem
[ "on" + type
]. apply ( elem
, data
)=== false ) val
= false ; if ( event
) data
. shift (); if ( extra
&& jQuery
. isFunction ( extra
)){ ret
= extra
. apply ( elem
, val
== null ? data
: data
. concat ( val
)); if ( ret
!== undefined ) val
= ret
;} if ( fn
&& donative
!== false && val
!== false &&!( jQuery
. nodeName ( elem
, 'a' )&& type
== "click" )){ this . triggered
= true ; try { elem
[ type
]();} catch ( e
){}} this . triggered
= false ;} return val
;}, handle : function ( event
){ var val
, ret
, namespace , all
, handlers
; event
= arguments
[ 0 ]= jQuery
. event
. fix ( event
|| window
. event
); namespace = event
. type
. split ( "." ); event
. type
= namespace [ 0 ]; namespace = namespace [ 1 ]; all
=! namespace &&! event
. exclusive
; handlers
=( jQuery
. data ( this , "events" )||{})[ event
. type
]; for ( var j
in handlers
){ var handler
= handlers
[ j
]; if ( all
|| handler
. type
== namespace ){ event
. handler
= handler
; event
. data
= handler
. data
; ret
= handler
. apply ( this , arguments
); if ( val
!== false ) val
= ret
; if ( ret
=== false ){ event
. preventDefault (); event
. stopPropagation ();}}} return val
;}, fix : function ( event
){ if ( event
[ expando
]== true ) return event
; var originalEvent
= event
; event
={ originalEvent
: originalEvent
}; var 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 timeStamp toElement type view wheelDelta which" . split ( " " ); for ( var i
= props
. length
; i
; i
--) event
[ props
[ i
]]= originalEvent
[ props
[ i
]]; event
[ expando
]= true ; event
. preventDefault = function (){ if ( originalEvent
. preventDefault
) originalEvent
. preventDefault (); originalEvent
. returnValue
= false ;}; event
. stopPropagation = function (){ if ( originalEvent
. stopPropagation
) originalEvent
. stopPropagation (); originalEvent
. cancelBubble
= true ;}; event
. timeStamp
= event
. timeStamp
|| now (); if (! event
. target
) event
. target
= event
. srcElement
|| document
; if ( event
. target
. nodeType
== 3 ) event
. target
= event
. target
. parentNode
; if (! event
. relatedTarget
&& event
. fromElement
) event
. relatedTarget
= event
. fromElement
== event
. target
? event
. toElement
: event
. fromElement
; if ( event
. pageX
== null && event
. clientX
!= null ){ var doc
= document
. documentElement
, body
= document
. body
; event
. pageX
= event
. clientX
+( doc
&& doc
. scrollLeft
|| body
&& body
. scrollLeft
|| 0 )-( doc
. clientLeft
|| 0 ); event
. pageY
= event
. clientY
+( doc
&& doc
. scrollTop
|| body
&& body
. scrollTop
|| 0 )-( doc
. clientTop
|| 0 );} if (! event
. which
&&(( event
. charCode
|| event
. charCode
=== 0 )? event
. charCode
: event
. keyCode
)) event
. which
= event
. charCode
|| event
. keyCode
; if (! event
. metaKey
&& event
. ctrlKey
) event
. metaKey
= event
. ctrlKey
; if (! event
. which
&& event
. button
) event
. which
=( event
. button
& 1 ? 1 :( event
. button
& 2 ? 3 :( event
. button
& 4 ? 2 : 0 ))); return event
;}, proxy : function ( fn
, proxy
){ proxy
. guid
= fn
. guid
= fn
. guid
|| proxy
. guid
|| this . guid
++; return proxy
;}, special
:{ ready
:{ setup : function (){ bindReady (); return ;}, teardown : function (){ return ;}}, mouseenter
:{ setup : function (){ if ( jQuery
. browser
. msie
) return false ; jQuery ( this ). bind ( "mouseover" , jQuery
. event
. special
. mouseenter
. handler
); return true ;}, teardown : function (){ if ( jQuery
. browser
. msie
) return false ; jQuery ( this ). unbind ( "mouseover" , jQuery
. event
. special
. mouseenter
. handler
); return true ;}, handler : function ( event
){ if ( withinElement ( event
, this )) return true ; event
. type
= "mouseenter" ; return jQuery
. event
. handle
. apply ( this , arguments
);}}, mouseleave
:{ setup : function (){ if ( jQuery
. browser
. msie
) return false ; jQuery ( this ). bind ( "mouseout" , jQuery
. event
. special
. mouseleave
. handler
); return true ;}, teardown : function (){ if ( jQuery
. browser
. msie
) return false ; jQuery ( this ). unbind ( "mouseout" , jQuery
. event
. special
. mouseleave
. handler
); return true ;}, handler : function ( event
){ if ( withinElement ( event
, this )) return true ; event
. type
= "mouseleave" ; return jQuery
. event
. handle
. apply ( this , arguments
);}}}}; jQuery
. fn
. extend ({ bind : function ( type
, data
, fn
){ return type
== "unload" ? this . one ( type
, data
, fn
): this . each ( function (){ jQuery
. event
. add ( this , type
, fn
|| data
, fn
&& data
);});}, one : function ( type
, data
, fn
){ var one
= jQuery
. event
. proxy ( fn
|| data
, function ( event
){ jQuery ( this ). unbind ( event
, one
); return ( fn
|| data
). apply ( this , arguments
);}); return this . each ( function (){ jQuery
. event
. add ( this , type
, one
, fn
&& data
);});}, unbind : function ( type
, fn
){ return this . each ( function (){ jQuery
. event
. remove ( this , type
, fn
);});}, trigger : function ( type
, data
, fn
){ return this . each ( function (){ jQuery
. event
. trigger ( type
, data
, this , true , fn
);});}, triggerHandler : function ( type
, data
, fn
){ return this [ 0 ]&& jQuery
. event
. trigger ( type
, data
, this [ 0 ], false , fn
);}, toggle : function ( fn
){ var args
= arguments
, i
= 1 ; while ( i
< args
. length
) jQuery
. event
. proxy ( fn
, args
[ i
++]); return this . click ( jQuery
. event
. proxy ( fn
, function ( event
){ this . lastToggle
=( this . lastToggle
|| 0 )% i
; event
. preventDefault (); return args
[ this . lastToggle
++]. apply ( this , arguments
)|| false ;}));}, hover : function ( fnOver
, fnOut
){ return this . bind ( 'mouseenter' , fnOver
). bind ( 'mouseleave' , fnOut
);}, ready : function ( fn
){ bindReady (); if ( jQuery
. isReady
) fn
. call ( document
, jQuery
); else
27 jQuery
. readyList
. push ( function (){ return fn
. call ( this , jQuery
);}); return this ;}}); jQuery
. extend ({ isReady
: false , readyList
:[], ready : function (){ if (! jQuery
. isReady
){ jQuery
. isReady
= true ; if ( jQuery
. readyList
){ jQuery
. each ( jQuery
. readyList
, function (){ this . call ( document
);}); jQuery
. readyList
= null ;} jQuery ( document
). triggerHandler ( "ready" );}}}); var readyBound
= false ; function bindReady (){ if ( readyBound
) return ; readyBound
= true ; if ( document
. addEventListener
&&! jQuery
. browser
. opera
) document
. addEventListener ( "DOMContentLoaded" , jQuery
. ready
, false ); if ( jQuery
. browser
. msie
&& window
== top
)( function (){ if ( jQuery
. isReady
) return ; try { document
. documentElement
. doScroll ( "left" );} catch ( error
){ setTimeout ( arguments
. callee
, 0 ); return ;} jQuery
. ready ();})(); if ( jQuery
. browser
. opera
) document
. addEventListener ( "DOMContentLoaded" , function (){ if ( jQuery
. isReady
) return ; for ( var i
= 0 ; i
< document
. styleSheets
. length
; i
++) if ( document
. styleSheets
[ i
]. disabled
){ setTimeout ( arguments
. callee
, 0 ); return ;} jQuery
. ready ();}, false ); if ( jQuery
. browser
. safari
){ var numStyles
;( function (){ if ( jQuery
. isReady
) return ; if ( document
. readyState
!= "loaded" && document
. readyState
!= "complete" ){ setTimeout ( arguments
. callee
, 0 ); return ;} if ( numStyles
=== undefined ) numStyles
= jQuery ( "style, link[rel=stylesheet]" ). length
; if ( document
. styleSheets
. length
!= numStyles
){ setTimeout ( arguments
. callee
, 0 ); return ;} jQuery
. ready ();})();} jQuery
. event
. add ( window
, "load" , jQuery
. ready
);} jQuery
. each (( "blur,focus,load,resize,scroll,unload,click,dblclick," + "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + "submit,keydown,keypress,keyup,error" ). split ( "," ), function ( i
, name
){ jQuery
. fn
[ name
]= function ( fn
){ return fn
? this . bind ( name
, fn
): this . trigger ( name
);};}); var withinElement = function ( event
, elem
){ var parent
= event
. relatedTarget
; while ( parent
&& parent
!= elem
) try { parent
= parent
. parentNode
;} catch ( error
){ parent
= elem
;} return parent
== elem
;}; jQuery ( window
). bind ( "unload" , function (){ jQuery ( "*" ). add ( document
). unbind ();}); jQuery
. fn
. extend ({ _load
: jQuery
. fn
. load
, load : function ( url
, params
, callback
){ if ( typeof url
!= 'string' ) return this . _load ( url
); var off
= url
. indexOf ( " " ); if ( off
>= 0 ){ var selector
= url
. slice ( off
, url
. length
); url
= url
. slice ( 0 , off
);} callback
= callback
|| function (){}; var type
= "GET" ; if ( params
) if ( jQuery
. isFunction ( params
)){ callback
= params
; params
= null ;} else { params
= jQuery
. param ( params
); type
= "POST" ;} var self
= this ; jQuery
. ajax ({ url
: url
, type
: type
, dataType
: "html" , data
: params
, complete : function ( res
, status
){ if ( status
== "success" || status
== "notmodified" ) self
. html ( selector
? jQuery ( "<div/>" ). append ( res
. responseText
. replace (/< script (.|\ s
)*?\ /script>/g , "" )). find ( selector
): res
. responseText
); self
. each ( callback
,[ res
. responseText
, status
, res
]);}}); return this ;}, serialize : function (){ return jQuery
. param ( this . serializeArray ());}, serializeArray : function (){ return this . map ( function (){ return jQuery
. nodeName ( this , "form" )? jQuery
. makeArray ( this . elements
): this ;}). filter ( function (){ return this . name
&&! this . disabled
&&( this . checked
|| /select|textarea/i . test ( this . nodeName
)|| /text|hidden|password/i . test ( this . type
));}). map ( function ( i
, elem
){ var val
= jQuery ( this ). val (); return val
== null ? null : val
. constructor == Array
? jQuery
. map ( val
, function ( val
, i
){ return { name
: elem
. name
, value
: val
};}):{ name
: elem
. name
, value
: val
};}). get ();}}); jQuery
. each ( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend" . split ( "," ), function ( i
, o
){ jQuery
. fn
[ o
]= function ( f
){ return this . bind ( o
, f
);};}); var jsc
= now (); jQuery
. extend ({ get : function ( url
, data
, callback
, type
){ if ( jQuery
. isFunction ( data
)){ callback
= data
; data
= null ;} return jQuery
. ajax ({ type
: "GET" , url
: url
, data
: data
, success
: callback
, dataType
: type
});}, getScript : function ( url
, callback
){ return jQuery
. get ( url
, null , callback
, "script" );}, getJSON : function ( url
, data
, callback
){ return jQuery
. get ( url
, data
, callback
, "json" );}, post : function ( url
, data
, callback
, type
){ if ( jQuery
. isFunction ( data
)){ callback
= data
; data
={};} return jQuery
. ajax ({ type
: "POST" , url
: url
, data
: data
, success
: callback
, dataType
: type
});}, ajaxSetup : function ( settings
){ jQuery
. extend ( jQuery
. ajaxSettings
, settings
);}, ajaxSettings
:{ url
: location
. href
, global
: true , type
: "GET" , timeout
: 0 , contentType
: "application/x-www-form-urlencoded" , processData
: true , async
: true , data
: null , username
: null , password
: null , 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 ( s
){ s
= jQuery
. extend ( true , s
, jQuery
. extend ( true ,{}, jQuery
. ajaxSettings
, s
)); var jsonp
, jsre
= /=\?(&|$)/g , status
, data
, type
= s
. type
. toUpperCase (); if ( s
. data
&& s
. processData
&& typeof s
. data
!= "string" ) s
. data
= jQuery
. param ( s
. data
); if ( s
. dataType
== "jsonp" ){ if ( type
== "GET" ){ if (! s
. url
. match ( jsre
)) s
. url
+=( s
. url
. match ( /\?/ )? "&" : "?" )+( s
. jsonp
|| "callback" )+ "=?" ;} else if (! s
. data
||! s
. data
. match ( jsre
)) s
. data
=( s
. data
? s
. data
+ "&" : "" )+( s
. jsonp
|| "callback" )+ "=?" ; s
. dataType
= "json" ;} if ( s
. dataType
== "json" &&( s
. data
&& s
. data
. match ( jsre
)|| s
. url
. match ( jsre
))){ jsonp
= "jsonp" + jsc
++; if ( s
. data
) s
. data
=( s
. data
+ "" ). replace ( jsre
, "=" + jsonp
+ "$1" ); s
. url
= s
. url
. replace ( jsre
, "=" + jsonp
+ "$1" ); s
. dataType
= "script" ; window
[ jsonp
]= function ( tmp
){ data
= tmp
; success (); complete (); window
[ jsonp
]= undefined ; try { delete window
[ jsonp
];} catch ( e
){} if ( head
) head
. removeChild ( script
);};} if ( s
. dataType
== "script" && s
. cache
== null ) s
. cache
= false ; if ( s
. cache
=== false && type
== "GET" ){ var ts
= now (); var ret
= s
. url
. replace ( /(\?|&)_=.*?(&|$)/ , "$1_=" + ts
+ "$2" ); s
. url
= ret
+(( ret
== s
. url
)?( s
. url
. match ( /\?/ )? "&" : "?" )+ "_=" + ts
: "" );} if ( s
. data
&& type
== "GET" ){ s
. url
+=( s
. url
. match ( /\?/ )? "&" : "?" )+ s
. data
; s
. data
= null ;} if ( s
. global
&&! jQuery
. active
++) jQuery
. event
. trigger ( "ajaxStart" ); var remote
= /^(?:\w+:)?\/\/([^\/?#]+)/ ; if ( s
. dataType
== "script" && type
== "GET" && remote
. test ( s
. url
)&& remote
. exec ( s
. url
)[ 1 ]!= location
. host
){ var head
= document
. getElementsByTagName ( "head" )[ 0 ]; var script
= document
. createElement ( "script" ); script
. src
= s
. url
; if ( s
. scriptCharset
) script
. charset
= s
. scriptCharset
; if (! jsonp
){ var done
= false ; script
. onload
= script
. onreadystatechange = function (){ if (! done
&&(! this . readyState
|| this . readyState
== "loaded" || this . readyState
== "complete" )){ done
= true ; success (); complete (); head
. removeChild ( script
);}};} head
. appendChild ( script
); return undefined ;} var requestDone
= false ; var xhr
= window
. ActiveXObject
? new ActiveXObject ( "Microsoft.XMLHTTP" ): new XMLHttpRequest (); if ( s
. username
) xhr
. open ( type
, s
. url
, s
. async
, s
. username
, s
. password
); else
28 xhr
. open ( type
, s
. url
, s
. async
); try { if ( s
. data
) xhr
. setRequestHeader ( "Content-Type" , s
. contentType
); if ( s
. ifModified
) xhr
. setRequestHeader ( "If-Modified-Since" , jQuery
. lastModified
[ s
. url
]|| "Thu, 01 Jan 1970 00:00:00 GMT" ); xhr
. setRequestHeader ( "X-Requested-With" , "XMLHttpRequest" ); xhr
. setRequestHeader ( "Accept" , s
. dataType
&& s
. accepts
[ s
. dataType
]? s
. accepts
[ s
. dataType
]+ ", */*" : s
. accepts
. _default
);} catch ( e
){} if ( s
. beforeSend
&& s
. beforeSend ( xhr
, s
)=== false ){ s
. global
&& jQuery
. active
--; xhr
. abort (); return false ;} if ( s
. global
) jQuery
. event
. trigger ( "ajaxSend" ,[ xhr
, s
]); var onreadystatechange = function ( isTimeout
){ if (! requestDone
&& xhr
&&( xhr
. readyState
== 4 || isTimeout
== "timeout" )){ requestDone
= true ; if ( ival
){ clearInterval ( ival
); ival
= null ;} status
= isTimeout
== "timeout" && "timeout" ||! jQuery
. httpSuccess ( xhr
)&& "error" || s
. ifModified
&& jQuery
. httpNotModified ( xhr
, s
. url
)&& "notmodified" || "success" ; if ( status
== "success" ){ try { data
= jQuery
. httpData ( xhr
, s
. dataType
, s
. dataFilter
);} catch ( e
){ status
= "parsererror" ;}} if ( status
== "success" ){ var modRes
; try { modRes
= xhr
. getResponseHeader ( "Last-Modified" );} catch ( e
){} if ( s
. ifModified
&& modRes
) jQuery
. lastModified
[ s
. url
]= modRes
; if (! jsonp
) success ();} else
29 jQuery
. handleError ( s
, xhr
, status
); complete (); if ( s
. async
) xhr
= null ;}}; if ( s
. async
){ var ival
= setInterval ( onreadystatechange
, 13 ); if ( s
. timeout
> 0 ) setTimeout ( function (){ if ( xhr
){ xhr
. abort (); if (! requestDone
) onreadystatechange ( "timeout" );}}, s
. timeout
);} try { xhr
. send ( s
. data
);} catch ( e
){ jQuery
. handleError ( s
, xhr
, null , e
);} if (! s
. async
) onreadystatechange (); function success (){ if ( s
. success
) s
. success ( data
, status
); if ( s
. global
) jQuery
. event
. trigger ( "ajaxSuccess" ,[ xhr
, s
]);} function complete (){ if ( s
. complete
) s
. complete ( xhr
, status
); if ( s
. global
) jQuery
. event
. trigger ( "ajaxComplete" ,[ xhr
, s
]); if ( s
. global
&&!-- jQuery
. active
) jQuery
. event
. trigger ( "ajaxStop" );} return xhr
;}, handleError : function ( s
, xhr
, status
, e
){ if ( s
. error
) s
. error ( xhr
, status
, e
); if ( s
. global
) jQuery
. event
. trigger ( "ajaxError" ,[ xhr
, s
, e
]);}, active
: 0 , httpSuccess : function ( xhr
){ try { return ! xhr
. status
&& location
. protocol
== "file:" ||( xhr
. status
>= 200 && xhr
. status
< 300 )|| xhr
. status
== 304 || xhr
. status
== 1223 || jQuery
. browser
. safari
&& xhr
. status
== undefined ;} catch ( e
){} return false ;}, httpNotModified : function ( xhr
, url
){ try { var xhrRes
= xhr
. getResponseHeader ( "Last-Modified" ); return xhr
. status
== 304 || xhrRes
== jQuery
. lastModified
[ url
]|| jQuery
. browser
. safari
&& xhr
. status
== undefined ;} catch ( e
){} return false ;}, httpData : function ( xhr
, type
, filter
){ var ct
= xhr
. getResponseHeader ( "content-type" ), xml
= type
== "xml" ||! type
&& ct
&& ct
. indexOf ( "xml" )>= 0 , data
= xml
? xhr
. responseXML
: xhr
. responseText
; if ( xml
&& data
. documentElement
. tagName
== "parsererror" ) throw "parsererror" ; if ( filter
) data
= filter ( data
, type
); if ( type
== "script" ) jQuery
. globalEval ( data
); if ( type
== "json" ) data
= eval ( "(" + data
+ ")" ); return data
;}, param : function ( a
){ var s
=[]; if ( a
. constructor == Array
|| a
. jquery
) jQuery
. each ( a
, function (){ s
. push ( encodeURIComponent ( this . name
)+ "=" + encodeURIComponent ( this . value
));}); else
30 for ( var j
in a
) if ( a
[ j
]&& a
[ j
]. constructor == Array
) jQuery
. each ( a
[ j
], function (){ s
. push ( encodeURIComponent ( j
)+ "=" + encodeURIComponent ( this ));}); else
31 s
. push ( encodeURIComponent ( j
)+ "=" + encodeURIComponent ( jQuery
. isFunction ( a
[ j
])? a
[ j
](): a
[ j
])); return s
. join ( "&" ). replace ( /%20/g , "+" );}}); jQuery
. fn
. extend ({ show : function ( speed
, callback
){ return speed
? this . animate ({ height
: "show" , width
: "show" , opacity
: "show" }, speed
, callback
): this . filter ( ":hidden" ). each ( function (){ this . style
. display
= this . oldblock
|| "" ; if ( jQuery
. css ( this , "display" )== "none" ){ var elem
= jQuery ( "<" + this . tagName
+ " />" ). appendTo ( "body" ); this . style
. display
= elem
. css ( "display" ); if ( this . style
. display
== "none" ) this . style
. display
= "block" ; elem
. remove ();}}). end ();}, hide : function ( speed
, callback
){ return speed
? this . animate ({ height
: "hide" , width
: "hide" , opacity
: "hide" }, speed
, callback
): this . filter ( ":visible" ). each ( function (){ this . oldblock
= this . oldblock
|| jQuery
. css ( this , "display" ); this . style
. display
= "none" ;}). end ();}, _toggle
: jQuery
. fn
. toggle
, toggle : function ( fn
, fn2
){ return jQuery
. isFunction ( fn
)&& jQuery
. isFunction ( fn2
)? this . _toggle
. apply ( this , arguments
): fn
? this . animate ({ height
: "toggle" , width
: "toggle" , opacity
: "toggle" }, fn
, fn2
): this . each ( function (){ jQuery ( this )[ jQuery ( this ). is ( ":hidden" )? "show" : "hide" ]();});}, slideDown : function ( speed
, callback
){ return this . animate ({ height
: "show" }, speed
, callback
);}, slideUp : function ( speed
, callback
){ return this . animate ({ height
: "hide" }, speed
, callback
);}, slideToggle : function ( speed
, callback
){ return this . animate ({ height
: "toggle" }, speed
, callback
);}, fadeIn : function ( speed
, callback
){ return this . animate ({ opacity
: "show" }, speed
, callback
);}, fadeOut : function ( speed
, callback
){ return this . animate ({ opacity
: "hide" }, speed
, callback
);}, fadeTo : function ( speed
, to
, callback
){ return this . animate ({ opacity
: to
}, speed
, callback
);}, animate : function ( prop
, speed
, easing
, callback
){ var optall
= jQuery
. speed ( speed
, easing
, callback
); return this [ optall
. queue
=== false ? "each" : "queue" ]( function (){ if ( this . nodeType
!= 1 ) return false ; var opt
= jQuery
. extend ({}, optall
), p
, hidden
= jQuery ( this ). is ( ":hidden" ), self
= this ; for ( p
in prop
){ if ( prop
[ p
]== "hide" && hidden
|| prop
[ p
]== "show" &&! hidden
) return opt
. complete
. call ( this ); if ( p
== "height" || p
== "width" ){ opt
. display
= jQuery
. css ( this , "display" ); opt
. overflow
= this . style
. overflow
;}} if ( opt
. overflow
!= null ) this . style
. overflow
= "hidden" ; opt
. curAnim
= jQuery
. extend ({}, prop
); jQuery
. each ( prop
, function ( name
, val
){ var e
= new jQuery
. fx ( self
, opt
, name
); if (/ toggle
| show
| hide
/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/ ^([+-]=)?([\ d
+-.]+)(.*)$ /),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/ e
. cur ( true ))* start
; self
. style
[ name
]= start
+ unit
;} if ( parts
[ 1 ]) end
=(( parts
[ 1 ]== "-=" ?- 1 : 1 )* end
)+ start
; e
. custom ( start
, end
, unit
);} else
32 e
. custom ( start
, val
, "" );}}); return true ;});}, queue : function ( type
, fn
){ if ( jQuery
. isFunction ( type
)||( type
&& type
. constructor == Array
)){ fn
= type
; type
= "fx" ;} if (! type
||( typeof type
== "string" &&! fn
)) return queue ( this [ 0 ], type
); return this . each ( function (){ if ( fn
. constructor == Array
) queue ( this , type
, fn
); else { queue ( this , type
). push ( fn
); if ( queue ( this , type
). length
== 1 ) fn
. call ( this );}});}, stop : function ( clearQueue
, gotoEnd
){ var timers
= jQuery
. timers
; if ( clearQueue
) this . queue ([]); this . each ( function (){ for ( var i
= timers
. length
- 1 ; i
>= 0 ; i
--) if ( timers
[ i
]. elem
== this ){ if ( gotoEnd
) timers
[ i
]( true ); timers
. splice ( i
, 1 );}}); if (! gotoEnd
) this . dequeue (); return this ;}}); var queue = function ( elem
, type
, array
){ if ( elem
){ type
= type
|| "fx" ; var q
= jQuery
. data ( elem
, type
+ "queue" ); if (! q
|| array
) q
= jQuery
. data ( elem
, type
+ "queue" , jQuery
. makeArray ( array
));} return q
;}; jQuery
. fn
. dequeue = function ( type
){ type
= type
|| "fx" ; return this . each ( function (){ var q
= queue ( this , type
); q
. shift (); if ( q
. length
) q
[ 0 ]. call ( this );});}; jQuery
. extend ({ speed : function ( speed
, easing
, fn
){ var opt
= speed
&& speed
. constructor == Object
? speed
:{ complete
: fn
||! fn
&& easing
|| jQuery
. isFunction ( speed
)&& speed
, duration
: speed
, easing
: fn
&& easing
|| easing
&& easing
. constructor != Function
&& easing
}; opt
. duration
=( opt
. duration
&& opt
. duration
. constructor == Number
? opt
. duration
: jQuery
. fx
. speeds
[ opt
. duration
])|| jQuery
. fx
. speeds
. def
; opt
. old
= opt
. complete
; opt
. complete = function (){ if ( opt
. queue
!== false ) jQuery ( this ). dequeue (); if ( jQuery
. isFunction ( opt
. old
)) opt
. old
. call ( this );}; return opt
;}, easing
:{ linear : function ( p
, n
, firstNum
, diff
){ return firstNum
+ diff
* p
;}, swing : function ( p
, n
, firstNum
, diff
){ return ((- Math
. cos ( p
* Math
. PI
) /2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/ this . options
. duration
; this . pos
= jQuery
. easing
[ this . options
. easing
||( jQuery
. easing
. swing
? "swing" : "linear" )]( this . state
, n
, 0 , 1 , this . options
. duration
); this . now
= this . start
+(( this . end
- this . start
)* this . pos
); this . update ();} return true ;}}; jQuery
. extend ( jQuery
. fx
,{ speeds
:{ slow
: 600 , fast
: 200 , def
: 400 }, step
:{ scrollLeft : function ( fx
){ fx
. elem
. scrollLeft
= fx
. now
;}, scrollTop : function ( fx
){ fx
. elem
. scrollTop
= fx
. now
;}, opacity : function ( fx
){ jQuery
. attr ( fx
. elem
. style
, "opacity" , fx
. now
);}, _default : function ( fx
){ fx
. elem
. style
[ fx
. prop
]= fx
. now
+ fx
. unit
;}}}); jQuery
. fn
. offset = function (){ var left
= 0 , top
= 0 , elem
= this [ 0 ], results
; if ( elem
) with ( jQuery
. browser
){ var parent
= elem
. parentNode
, offsetChild
= elem
, offsetParent
= elem
. offsetParent
, doc
= elem
. ownerDocument
, safari2
= safari
&& parseInt ( version
)< 522 &&! /adobeair/i . test ( userAgent
), css
= jQuery
. curCSS
, fixed
= css ( elem
, "position" )== "fixed" ; if ( elem
. getBoundingClientRect
){ var box
= elem
. getBoundingClientRect (); add ( box
. left
+ Math
. max ( doc
. documentElement
. scrollLeft
, doc
. body
. scrollLeft
), box
. top
+ Math
. max ( doc
. documentElement
. scrollTop
, doc
. body
. scrollTop
)); add (- doc
. documentElement
. clientLeft
,- doc
. documentElement
. clientTop
);} else { add ( elem
. offsetLeft
, elem
. offsetTop
); while ( offsetParent
){ add ( offsetParent
. offsetLeft
, offsetParent
. offsetTop
); if ( mozilla
&&! /^t(able|d|h)$/i . test ( offsetParent
. tagName
)|| safari
&&! safari2
) border ( offsetParent
); if (! fixed
&& css ( offsetParent
, "position" )== "fixed" ) fixed
= true ; offsetChild
= /^body$/i . test ( offsetParent
. tagName
)? offsetChild
: offsetParent
; offsetParent
= offsetParent
. offsetParent
;} while ( parent
&& parent
. tagName
&&! /^body|html$/i . test ( parent
. tagName
)){ if (! /^inline|table.*$/i . test ( css ( parent
, "display" ))) add (- parent
. scrollLeft
,- parent
. scrollTop
); if ( mozilla
&& css ( parent
, "overflow" )!= "visible" ) border ( parent
); parent
= parent
. parentNode
;} if (( safari2
&&( fixed
|| css ( offsetChild
, "position" )== "absolute" ))||( mozilla
&& css ( offsetChild
, "position" )!= "absolute" )) add (- doc
. body
. offsetLeft
,- doc
. body
. offsetTop
); if ( fixed
) add ( Math
. max ( doc
. documentElement
. scrollLeft
, doc
. body
. scrollLeft
), Math
. max ( doc
. documentElement
. scrollTop
, doc
. body
. scrollTop
));} results
={ top
: top
, left
: left
};} function border ( elem
){ add ( jQuery
. curCSS ( elem
, "borderLeftWidth" , true ), jQuery
. curCSS ( elem
, "borderTopWidth" , true ));} function add ( l
, t
){ left
+= parseInt ( l
, 10 )|| 0 ; top
+= parseInt ( t
, 10 )|| 0 ;} return results
;}; jQuery
. fn
. extend ({ position : function (){ var left
= 0 , top
= 0 , results
; if ( this [ 0 ]){ var offsetParent
= this . offsetParent (), offset
= this . offset (), parentOffset
= /^body|html$/i . test ( offsetParent
[ 0 ]. tagName
)?{ top
: 0 , left
: 0 }: offsetParent
. offset (); offset
. top
-= num ( this , 'marginTop' ); offset
. left
-= num ( this , 'marginLeft' ); parentOffset
. top
+= num ( offsetParent
, 'borderTopWidth' ); parentOffset
. left
+= num ( offsetParent
, 'borderLeftWidth' ); results
={ top
: offset
. top
- parentOffset
. top
, left
: offset
. left
- parentOffset
. left
};} return results
;}, offsetParent : function (){ var offsetParent
= this [ 0 ]. offsetParent
; while ( offsetParent
&&(! /^body|html$/i . test ( offsetParent
. tagName
)&& jQuery
. css ( offsetParent
, 'position' )== 'static' )) offsetParent
= offsetParent
. offsetParent
; return jQuery ( offsetParent
);}}); jQuery
. each ([ 'Left' , 'Top' ], function ( i
, name
){ var method
= 'scroll' + name
; jQuery
. fn
[ method
]= function ( val
){ if (! this [ 0 ]) return ; return val
!= undefined ? this . each ( function (){ this == window
|| this == document
? window
. scrollTo (! i
? val
: jQuery ( window
). scrollLeft (), i
? val
: jQuery ( window
). scrollTop ()): this [ method
]= val
;}): this [ 0 ]== window
|| this [ 0 ]== document
? self
[ i
? 'pageYOffset' : 'pageXOffset' ]|| jQuery
. boxModel
&& document
. documentElement
[ method
]|| document
. body
[ method
]: this [ 0 ][ method
];};}); jQuery
. each ([ "Height" , "Width" ], function ( i
, name
){ var tl
= i
? "Left" : "Top" , br
= i
? "Right" : "Bottom" ; jQuery
. fn
[ "inner" + name
]= function (){ return this [ name
. toLowerCase ()]()+ num ( this , "padding" + tl
)+ num ( this , "padding" + br
);}; jQuery
. fn
[ "outer" + name
]= function ( margin
){ return this [ "inner" + name
]()+ num ( this , "border" + tl
+ "Width" )+ num ( this , "border" + br
+ "Width" )+( margin
? num ( this , "margin" + tl
)+ num ( this , "margin" + br
): 0 );};});})();