2007-07-03 01:57:52 +02:00
/ *
2008-06-03 18:44:51 +02:00
* jQuery 1.2 . 6 - New Wave Javascript
2007-07-03 01:57:52 +02:00
*
2008-02-08 08:33:51 +01:00
* Copyright ( c ) 2008 John Resig ( jquery . com )
2007-07-03 01:57:52 +02:00
* Dual licensed under the MIT ( MIT - LICENSE . txt )
* and GPL ( GPL - LICENSE . txt ) licenses .
*
2009-01-02 16:08:58 +01:00
* $Date : 2008 - 05 - 24 14 : 22 : 17 - 0400 ( Sat , 24 May 2008 ) $
* $Rev : 5685 $
2007-07-03 01:57:52 +02:00
* /
2009-01-02 16:08:58 +01:00
( 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
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
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
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
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 ; 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
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
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
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
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
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
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
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
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
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
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 , asyn
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
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
for ( var j in a ) if ( a [ j ] && a [ j ] . constructor == Array ) jQuery . each ( a [ j ] , function ( ) { s . push ( encodeURIComponent ( j ) + "=" + encodeURIComponent ( this ) ) ; } ) ; else
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
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 ( )