0
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 1
/*
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 2
* jQuery 1.2.6 - New Wave Javascript
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 3
*
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 4
* Copyright (c) 2008 John Resig (jquery.com)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 5
* Dual licensed under the MIT (MIT-LICENSE.txt)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 6
* and GPL (GPL-LICENSE.txt) licenses.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 7
*
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 8
* $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 9
* $Rev: 5685 $
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 10
*/
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
+ − 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 );};});})();