/ * !
* jQuery JavaScript Library v1 . 4
* http : //jquery.com/
*
* Copyright 2010 , John Resig
* Dual licensed under the MIT or GPL Version 2 licenses .
* http : //docs.jquery.com/License
*
* Includes Sizzle . js
* http : //sizzlejs.com/
* Copyright 2010 , The Dojo Foundation
* Released under the MIT , BSD , and GPL Licenses .
*
* Date : Wed Jan 13 15 : 23 : 05 2010 - 0500
* /
( function ( A , w ) { function oa ( ) { if ( ! c . isReady ) { try { s . documentElement . doScroll ( "left" ) } catch ( a ) { setTimeout ( oa , 1 ) ; return } c . ready ( ) } } function La ( a , b ) { b . src ? c . ajax ( { url : b . src , async : false , dataType : "script" } ) : c . globalEval ( b . text || b . textContent || b . innerHTML || "" ) ; b . parentNode && b . parentNode . removeChild ( b ) } function $ ( a , b , d , f , e , i ) { var j = a . length ; if ( typeof b === "object" ) { for ( var o in b ) $ ( a , o , b [ o ] , f , e , d ) ; return a } if ( d !== w ) { f = ! i && f && c . isFunction ( d ) ; for ( o = 0 ; o < j ; o ++ ) e ( a [ o ] , b , f ? d . call ( a [ o ] , o , e ( a [ o ] , b ) ) : d , i ) ; return a } return j ?
e ( a [ 0 ] , b ) : null } function K ( ) { return ( new Date ) . getTime ( ) } function aa ( ) { return false } function ba ( ) { return true } function pa ( a , b , d ) { d [ 0 ] . type = a ; return c . event . handle . apply ( b , d ) } function qa ( a ) { var b = true , d = [ ] , f = [ ] , e = arguments , i , j , o , p , n , t = c . extend ( { } , c . data ( this , "events" ) . live ) ; for ( p in t ) { j = t [ p ] ; if ( j . live === a . type || j . altLive && c . inArray ( a . type , j . altLive ) > - 1 ) { i = j . data ; i . beforeFilter && i . beforeFilter [ a . type ] && ! i . beforeFilter [ a . type ] ( a ) || f . push ( j . selector ) } else delete t [ p ] } i = c ( a . target ) . closest ( f , a . currentTarget ) ;
n = 0 ; for ( l = i . length ; n < l ; n ++ ) for ( p in t ) { j = t [ p ] ; o = i [ n ] . elem ; f = null ; if ( i [ n ] . selector === j . selector ) { if ( j . live === "mouseenter" || j . live === "mouseleave" ) f = c ( a . relatedTarget ) . closest ( j . selector ) [ 0 ] ; if ( ! f || f !== o ) d . push ( { elem : o , fn : j } ) } } n = 0 ; for ( l = d . length ; n < l ; n ++ ) { i = d [ n ] ; a . currentTarget = i . elem ; a . data = i . fn . data ; if ( i . fn . apply ( i . elem , e ) === false ) { b = false ; break } } return b } function ra ( a , b ) { return [ "live" , a , b . replace ( /\./g , "`" ) . replace ( / /g , "&" ) ] . join ( "." ) } function sa ( a ) { return ! a || ! a . parentNode || a . parentNode . nodeType ===
11 } function ta ( a , b ) { var d = 0 ; b . each ( function ( ) { if ( this . nodeName === ( a [ d ] && a [ d ] . nodeName ) ) { var f = c . data ( a [ d ++ ] ) , e = c . data ( this , f ) ; if ( f = f && f . events ) { delete e . handle ; e . events = { } ; for ( var i in f ) for ( var j in f [ i ] ) c . event . add ( this , i , f [ i ] [ j ] , f [ i ] [ j ] . data ) } } } ) } function ua ( a , b , d ) { var f , e , i ; if ( a . length === 1 && typeof a [ 0 ] === "string" && a [ 0 ] . length < 512 && a [ 0 ] . indexOf ( "<option" ) < 0 ) { e = true ; if ( i = c . fragments [ a [ 0 ] ] ) if ( i !== 1 ) f = i } if ( ! f ) { b = b && b [ 0 ] ? b [ 0 ] . ownerDocument || b [ 0 ] : s ; f = b . createDocumentFragment ( ) ; c . clean ( a , b , f , d ) } if ( e ) c . fragments [ a [ 0 ] ] =
i ? f : 1 ; return { fragment : f , cacheable : e } } function T ( a ) { for ( var b = 0 , d , f ; ( d = a [ b ] ) != null ; b ++ ) if ( ! c . noData [ d . nodeName . toLowerCase ( ) ] && ( f = d [ H ] ) ) delete c . cache [ f ] } function L ( a , b ) { var d = { } ; c . each ( va . concat . apply ( [ ] , va . slice ( 0 , b ) ) , function ( ) { d [ this ] = a } ) ; return d } function wa ( a ) { return "scrollTo" in a && a . document ? a : a . nodeType === 9 ? a . defaultView || a . parentWindow : false } var c = function ( a , b ) { return new c . fn . init ( a , b ) } , Ma = A . jQuery , Na = A . $ , s = A . document , U , Oa = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/ , Pa = /^.[^:#\[\.,]*$/ , Qa = /\S/ ,
Ra = /^(\s|\u00A0)+|(\s|\u00A0)+$/g , Sa = /^<(\w+)\s*\/?>(?:<\/\1>)?$/ , P = navigator . userAgent , xa = false , Q = [ ] , M , ca = Object . prototype . toString , da = Object . prototype . hasOwnProperty , ea = Array . prototype . push , R = Array . prototype . slice , V = Array . prototype . indexOf ; c . fn = c . prototype = { init : function ( a , b ) { var d , f ; if ( ! a ) return this ; if ( a . nodeType ) { this . context = this [ 0 ] = a ; this . length = 1 ; return this } if ( typeof a === "string" ) if ( ( d = Oa . exec ( a ) ) && ( d [ 1 ] || ! b ) ) if ( d [ 1 ] ) { f = b ? b . ownerDocument || b : s ; if ( a = Sa . exec ( a ) ) if ( c . isPlainObject ( b ) ) { a = [ s . createElement ( a [ 1 ] ) ] ;
c . fn . attr . call ( a , b , true ) } else a = [ f . createElement ( a [ 1 ] ) ] ; else { a = ua ( [ d [ 1 ] ] , [ f ] ) ; a = ( a . cacheable ? a . fragment . cloneNode ( true ) : a . fragment ) . childNodes } } else { if ( b = s . getElementById ( d [ 2 ] ) ) { if ( b . id !== d [ 2 ] ) return U . find ( a ) ; this . length = 1 ; this [ 0 ] = b } this . context = s ; this . selector = a ; return this } else if ( ! b && /^\w+$/ . test ( a ) ) { this . selector = a ; this . context = s ; a = s . getElementsByTagName ( a ) } else return ! b || b . jquery ? ( b || U ) . find ( a ) : c ( b ) . find ( a ) ; else if ( c . isFunction ( a ) ) return U . ready ( a ) ; if ( a . selector !== w ) { this . selector = a . selector ;
this . context = a . context } return c . isArray ( a ) ? this . setArray ( a ) : c . makeArray ( a , this ) } , selector : "" , jquery : "1.4" , length : 0 , size : function ( ) { return this . length } , toArray : function ( ) { return R . call ( this , 0 ) } , get : function ( a ) { return a == null ? this . toArray ( ) : a < 0 ? this . slice ( a ) [ 0 ] : this [ a ] } , pushStack : function ( a , b , d ) { a = c ( a || null ) ; a . prevObject = this ; a . context = this . context ; if ( b === "find" ) a . selector = this . selector + ( this . selector ? " " : "" ) + d ; else if ( b ) a . selector = this . selector + "." + b + "(" + d + ")" ; return a } , setArray : function ( a ) { this . length =
0 ; ea . apply ( this , a ) ; return this } , each : function ( a , b ) { return c . each ( this , a , b ) } , ready : function ( a ) { c . bindReady ( ) ; if ( c . isReady ) a . call ( s , c ) ; else Q && Q . push ( a ) ; return this } , eq : function ( a ) { return a === - 1 ? this . slice ( a ) : this . slice ( a , + a + 1 ) } , first : function ( ) { return this . eq ( 0 ) } , last : function ( ) { return this . eq ( - 1 ) } , slice : function ( ) { return this . pushStack ( R . apply ( this , arguments ) , "slice" , R . call ( arguments ) . join ( "," ) ) } , map : function ( a ) { return this . pushStack ( c . map ( this , function ( b , d ) { return a . call ( b , d , b ) } ) ) } , end : function ( ) { return this . prevObject ||
c ( null ) } , push : ea , sort : [ ] . sort , splice : [ ] . splice } ; c . fn . init . prototype = c . fn ; c . extend = c . fn . extend = function ( ) { var a = arguments [ 0 ] || { } , b = 1 , d = arguments . length , f = false , e , i , j , o ; if ( typeof a === "boolean" ) { f = a ; a = arguments [ 1 ] || { } ; b = 2 } if ( typeof a !== "object" && ! c . isFunction ( a ) ) a = { } ; if ( d === b ) { a = this ; -- b } for ( ; b < d ; b ++ ) if ( ( e = arguments [ b ] ) != null ) for ( i in e ) { j = a [ i ] ; o = e [ i ] ; if ( a !== o ) if ( f && o && ( c . isPlainObject ( o ) || c . isArray ( o ) ) ) { j = j && ( c . isPlainObject ( j ) || c . isArray ( j ) ) ? j : c . isArray ( o ) ? [ ] : { } ; a [ i ] = c . extend ( f , j , o ) } else if ( o !== w ) a [ i ] =
o } return a } ; c . extend ( { noConflict : function ( a ) { A . $ = Na ; if ( a ) A . jQuery = Ma ; return c } , isReady : false , ready : function ( ) { if ( ! c . isReady ) { if ( ! s . body ) return setTimeout ( c . ready , 13 ) ; c . isReady = true ; if ( Q ) { for ( var a , b = 0 ; a = Q [ b ++ ] ; ) a . call ( s , c ) ; Q = null } c . fn . triggerHandler && c ( s ) . triggerHandler ( "ready" ) } } , bindReady : function ( ) { if ( ! xa ) { xa = true ; if ( s . readyState === "complete" ) return c . ready ( ) ; if ( s . addEventListener ) { s . addEventListener ( "DOMContentLoaded" , M , false ) ; A . addEventListener ( "load" , c . ready , false ) } else if ( s . attachEvent ) { s . attachEvent ( "onreadystatechange" ,
M ) ; A . attachEvent ( "onload" , c . ready ) ; var a = false ; try { a = A . frameElement == null } catch ( b ) { } s . documentElement . doScroll && a && oa ( ) } } } , isFunction : function ( a ) { return ca . call ( a ) === "[object Function]" } , isArray : function ( a ) { return ca . call ( a ) === "[object Array]" } , isPlainObject : function ( a ) { if ( ! a || ca . call ( a ) !== "[object Object]" || a . nodeType || a . setInterval ) return false ; if ( a . constructor && ! da . call ( a , "constructor" ) && ! da . call ( a . constructor . prototype , "isPrototypeOf" ) ) return false ; var b ; for ( b in a ) ; return b === w || da . call ( a , b ) } ,
isEmptyObject : function ( a ) { for ( var b in a ) return false ; return true } , noop : function ( ) { } , globalEval : function ( a ) { if ( a && Qa . test ( a ) ) { var b = s . getElementsByTagName ( "head" ) [ 0 ] || s . documentElement , d = s . createElement ( "script" ) ; d . type = "text/javascript" ; if ( c . support . scriptEval ) d . appendChild ( s . createTextNode ( a ) ) ; else d . text = a ; b . insertBefore ( d , b . firstChild ) ; b . removeChild ( d ) } } , nodeName : function ( a , b ) { return a . nodeName && a . nodeName . toUpperCase ( ) === b . toUpperCase ( ) } , each : function ( a , b , d ) { var f , e = 0 , i = a . length , j = i === w || c . isFunction ( a ) ;
if ( d ) if ( j ) for ( f in a ) { if ( b . apply ( a [ f ] , d ) === false ) break } else for ( ; e < i ; ) { if ( b . apply ( a [ e ++ ] , d ) === false ) break } else if ( j ) for ( f in a ) { if ( b . call ( a [ f ] , f , a [ f ] ) === false ) break } else for ( d = a [ 0 ] ; e < i && b . call ( d , e , d ) !== false ; d = a [ ++ e ] ) ; return a } , trim : function ( a ) { return ( a || "" ) . replace ( Ra , "" ) } , makeArray : function ( a , b ) { b = b || [ ] ; if ( a != null ) a . length == null || typeof a === "string" || c . isFunction ( a ) || typeof a !== "function" && a . setInterval ? ea . call ( b , a ) : c . merge ( b , a ) ; return b } , inArray : function ( a , b ) { if ( b . indexOf ) return b . indexOf ( a ) ; for ( var d =
0 , f = b . length ; d < f ; d ++ ) if ( b [ d ] === a ) return d ; return - 1 } , merge : function ( a , b ) { var d = a . length , f = 0 ; if ( typeof b . length === "number" ) for ( var e = b . length ; f < e ; f ++ ) a [ d ++ ] = b [ f ] ; else for ( ; b [ f ] !== w ; ) a [ d ++ ] = b [ f ++ ] ; a . length = d ; return a } , grep : function ( a , b , d ) { for ( var f = [ ] , e = 0 , i = a . length ; e < i ; e ++ ) ! d !== ! b ( a [ e ] , e ) && f . push ( a [ e ] ) ; return f } , map : function ( a , b , d ) { for ( var f = [ ] , e , i = 0 , j = a . length ; i < j ; i ++ ) { e = b ( a [ i ] , i , d ) ; if ( e != null ) f [ f . length ] = e } return f . concat . apply ( [ ] , f ) } , guid : 1 , proxy : function ( a , b , d ) { if ( arguments . length === 2 ) if ( typeof b ===
"string" ) { d = a ; a = d [ b ] ; b = w } else if ( b && ! c . isFunction ( b ) ) { d = b ; b = w } if ( ! b && a ) b = function ( ) { return a . apply ( d || this , arguments ) } ; if ( a ) b . guid = a . guid = a . guid || b . guid || c . guid ++ ; return b } , uaMatch : function ( a ) { var b = { browser : "" } ; a = a . toLowerCase ( ) ; if ( /webkit/ . test ( a ) ) b = { browser : "webkit" , version : /webkit[\/ ]([\w.]+)/ } ; else if ( /opera/ . test ( a ) ) b = { browser : "opera" , version : /version/ . test ( a ) ? /version[\/ ]([\w.]+)/ : /opera[\/ ]([\w.]+)/ } ; else if ( /msie/ . test ( a ) ) b = { browser : "msie" , version : /msie ([\w.]+)/ } ; else if ( /mozilla/ . test ( a ) &&
! /compatible/ . test ( a ) ) b = { browser : "mozilla" , version : /rv:([\w.]+)/ } ; b . version = ( b . version && b . version . exec ( a ) || [ 0 , "0" ] ) [ 1 ] ; return b } , browser : { } } ) ; P = c . uaMatch ( P ) ; if ( P . browser ) { c . browser [ P . browser ] = true ; c . browser . version = P . version } if ( c . browser . webkit ) c . browser . safari = true ; if ( V ) c . inArray = function ( a , b ) { return V . call ( b , a ) } ; U = c ( s ) ; if ( s . addEventListener ) M = function ( ) { s . removeEventListener ( "DOMContentLoaded" , M , false ) ; c . ready ( ) } ; else if ( s . attachEvent ) M = function ( ) { if ( s . readyState === "complete" ) { s . detachEvent ( "onreadystatechange" ,
M ) ; c . ready ( ) } } ; if ( V ) c . inArray = function ( a , b ) { return V . call ( b , a ) } ; ( function ( ) { c . support = { } ; var a = s . documentElement , b = s . createElement ( "script" ) , d = s . createElement ( "div" ) , f = "script" + K ( ) ; d . style . display = "none" ; d . innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>" ; var e = d . getElementsByTagName ( "*" ) , i = d . getElementsByTagName ( "a" ) [ 0 ] ; if ( ! ( ! e || ! e . length || ! i ) ) { c . support = { leadingWhitespace : d . firstChild . nodeType === 3 , tbody : ! d . getElementsByTagName ( "tbody" ) . length ,
htmlSerialize : ! ! d . getElementsByTagName ( "link" ) . length , style : /red/ . test ( i . getAttribute ( "style" ) ) , hrefNormalized : i . getAttribute ( "href" ) === "/a" , opacity : /^0.55$/ . test ( i . style . opacity ) , cssFloat : ! ! i . style . cssFloat , checkOn : d . getElementsByTagName ( "input" ) [ 0 ] . value === "on" , optSelected : s . createElement ( "select" ) . appendChild ( s . createElement ( "option" ) ) . selected , scriptEval : false , noCloneEvent : true , boxModel : null } ; b . type = "text/javascript" ; try { b . appendChild ( s . createTextNode ( "window." + f + "=1;" ) ) } catch ( j ) { } a . insertBefore ( b ,
a . firstChild ) ; if ( A [ f ] ) { c . support . scriptEval = true ; delete A [ f ] } a . removeChild ( b ) ; if ( d . attachEvent && d . fireEvent ) { d . attachEvent ( "onclick" , function o ( ) { c . support . noCloneEvent = false ; d . detachEvent ( "onclick" , o ) } ) ; d . cloneNode ( true ) . fireEvent ( "onclick" ) } c ( function ( ) { var o = s . createElement ( "div" ) ; o . style . width = o . style . paddingLeft = "1px" ; s . body . appendChild ( o ) ; c . boxModel = c . support . boxModel = o . offsetWidth === 2 ; s . body . removeChild ( o ) . style . display = "none" } ) ; a = function ( o ) { var p = s . createElement ( "div" ) ; o = "on" + o ; var n = o in
p ; if ( ! n ) { p . setAttribute ( o , "return;" ) ; n = typeof p [ o ] === "function" } return n } ; c . support . submitBubbles = a ( "submit" ) ; c . support . changeBubbles = a ( "change" ) ; a = b = d = e = i = null } } ) ( ) ; c . props = { "for" : "htmlFor" , "class" : "className" , readonly : "readOnly" , maxlength : "maxLength" , cellspacing : "cellSpacing" , rowspan : "rowSpan" , colspan : "colSpan" , tabindex : "tabIndex" , usemap : "useMap" , frameborder : "frameBorder" } ; var H = "jQuery" + K ( ) , Ta = 0 , ya = { } , Ua = { } ; c . extend ( { cache : { } , expando : H , noData : { embed : true , object : true , applet : true } , data : function ( a ,
b , d ) { if ( ! ( a . nodeName && c . noData [ a . nodeName . toLowerCase ( ) ] ) ) { a = a == A ? ya : a ; var f = a [ H ] , e = c . cache ; if ( ! b && ! f ) return null ; f || ( f = ++ Ta ) ; if ( typeof b === "object" ) { a [ H ] = f ; e = e [ f ] = c . extend ( true , { } , b ) } else e = e [ f ] ? e [ f ] : typeof d === "undefined" ? Ua : ( e [ f ] = { } ) ; if ( d !== w ) { a [ H ] = f ; e [ b ] = d } return typeof b === "string" ? e [ b ] : e } } , removeData : function ( a , b ) { if ( ! ( a . nodeName && c . noData [ a . nodeName . toLowerCase ( ) ] ) ) { a = a == A ? ya : a ; var d = a [ H ] , f = c . cache , e = f [ d ] ; if ( b ) { if ( e ) { delete e [ b ] ; c . isEmptyObject ( e ) && c . removeData ( a ) } } else { try { delete a [ H ] } catch ( i ) { a . removeAttribute &&
a . removeAttribute ( H ) } delete f [ d ] } } } } ) ; c . fn . extend ( { data : function ( a , b ) { if ( typeof a === "undefined" && this . length ) return c . data ( this [ 0 ] ) ; else if ( typeof a === "object" ) return this . each ( function ( ) { c . data ( this , a ) } ) ; var d = a . split ( "." ) ; d [ 1 ] = d [ 1 ] ? "." + d [ 1 ] : "" ; if ( b === w ) { var f = this . triggerHandler ( "getData" + d [ 1 ] + "!" , [ d [ 0 ] ] ) ; if ( f === w && this . length ) f = c . data ( this [ 0 ] , a ) ; return f === w && d [ 1 ] ? this . data ( d [ 0 ] ) : f } else return this . trigger ( "setData" + d [ 1 ] + "!" , [ d [ 0 ] , b ] ) . each ( function ( ) { c . data ( this , a , b ) } ) } , removeData : function ( a ) { return this . each ( function ( ) { c . removeData ( this ,
a ) } ) } } ) ; c . extend ( { queue : function ( a , b , d ) { if ( a ) { b = ( b || "fx" ) + "queue" ; var f = c . data ( a , b ) ; if ( ! d ) return f || [ ] ; if ( ! f || c . isArray ( d ) ) f = c . data ( a , b , c . makeArray ( d ) ) ; else f . push ( d ) ; return f } } , dequeue : function ( a , b ) { b = b || "fx" ; var d = c . queue ( a , b ) , f = d . shift ( ) ; if ( f === "inprogress" ) f = d . shift ( ) ; if ( f ) { b === "fx" && d . unshift ( "inprogress" ) ; f . call ( a , function ( ) { c . dequeue ( a , b ) } ) } } } ) ; c . fn . extend ( { queue : function ( a , b ) { if ( typeof a !== "string" ) { b = a ; a = "fx" } if ( b === w ) return c . queue ( this [ 0 ] , a ) ; return this . each ( function ( ) { var d = c . queue ( this ,
a , b ) ; a === "fx" && d [ 0 ] !== "inprogress" && c . dequeue ( this , a ) } ) } , dequeue : function ( a ) { return this . each ( function ( ) { c . dequeue ( this , a ) } ) } , delay : function ( a , b ) { a = c . fx ? c . fx . speeds [ a ] || a : a ; b = b || "fx" ; return this . queue ( b , function ( ) { var d = this ; setTimeout ( function ( ) { c . dequeue ( d , b ) } , a ) } ) } , clearQueue : function ( a ) { return this . queue ( a || "fx" , [ ] ) } } ) ; var za = /[\n\t]/g , fa = /\s+/ , Va = /\r/g , Wa = /href|src|style/ , Xa = /(button|input)/i , Ya = /(button|input|object|select|textarea)/i , Za = /^(a|area)$/i , Aa = /radio|checkbox/ ; c . fn . extend ( { attr : function ( a ,
b ) { return $ ( this , a , b , true , c . attr ) } , removeAttr : function ( a ) { return this . each ( function ( ) { c . attr ( this , a , "" ) ; this . nodeType === 1 && this . removeAttribute ( a ) } ) } , addClass : function ( a ) { if ( c . isFunction ( a ) ) return this . each ( function ( p ) { var n = c ( this ) ; n . addClass ( a . call ( this , p , n . attr ( "class" ) ) ) } ) ; if ( a && typeof a === "string" ) for ( var b = ( a || "" ) . split ( fa ) , d = 0 , f = this . length ; d < f ; d ++ ) { var e = this [ d ] ; if ( e . nodeType === 1 ) if ( e . className ) for ( var i = " " + e . className + " " , j = 0 , o = b . length ; j < o ; j ++ ) { if ( i . indexOf ( " " + b [ j ] + " " ) < 0 ) e . className +=
" " + b [ j ] } else e . className = a } return this } , removeClass : function ( a ) { if ( c . isFunction ( a ) ) return this . each ( function ( p ) { var n = c ( this ) ; n . removeClass ( a . call ( this , p , n . attr ( "class" ) ) ) } ) ; if ( a && typeof a === "string" || a === w ) for ( var b = ( a || "" ) . split ( fa ) , d = 0 , f = this . length ; d < f ; d ++ ) { var e = this [ d ] ; if ( e . nodeType === 1 && e . className ) if ( a ) { for ( var i = ( " " + e . className + " " ) . replace ( za , " " ) , j = 0 , o = b . length ; j < o ; j ++ ) i = i . replace ( " " + b [ j ] + " " , " " ) ; e . className = i . substring ( 1 , i . length - 1 ) } else e . className = "" } return this } , toggleClass : function ( a ,
b ) { var d = typeof a , f = typeof b === "boolean" ; if ( c . isFunction ( a ) ) return this . each ( function ( e ) { var i = c ( this ) ; i . toggleClass ( a . call ( this , e , i . attr ( "class" ) , b ) , b ) } ) ; return this . each ( function ( ) { if ( d === "string" ) for ( var e , i = 0 , j = c ( this ) , o = b , p = a . split ( fa ) ; e = p [ i ++ ] ; ) { o = f ? o : ! j . hasClass ( e ) ; j [ o ? "addClass" : "removeClass" ] ( e ) } else if ( d === "undefined" || d === "boolean" ) { this . className && c . data ( this , "__className__" , this . className ) ; this . className = this . className || a === false ? "" : c . data ( this , "__className__" ) || "" } } ) } , hasClass : function ( a ) { a =
" " + a + " " ; for ( var b = 0 , d = this . length ; b < d ; b ++ ) if ( ( " " + this [ b ] . className + " " ) . replace ( za , " " ) . indexOf ( a ) > - 1 ) return true ; return false } , val : function ( a ) { if ( a === w ) { var b = this [ 0 ] ; if ( b ) { if ( c . nodeName ( b , "option" ) ) return ( b . attributes . value || { } ) . specified ? b . value : b . text ; if ( c . nodeName ( b , "select" ) ) { var d = b . selectedIndex , f = [ ] , e = b . options ; b = b . type === "select-one" ; if ( d < 0 ) return null ; var i = b ? d : 0 ; for ( d = b ? d + 1 : e . length ; i < d ; i ++ ) { var j = e [ i ] ; if ( j . selected ) { a = c ( j ) . val ( ) ; if ( b ) return a ; f . push ( a ) } } return f } if ( Aa . test ( b . type ) &&
! c . support . checkOn ) return b . getAttribute ( "value" ) === null ? "on" : b . value ; return ( b . value || "" ) . replace ( Va , "" ) } return w } var o = c . isFunction ( a ) ; return this . each ( function ( p ) { var n = c ( this ) , t = a ; if ( this . nodeType === 1 ) { if ( o ) t = a . call ( this , p , n . val ( ) ) ; if ( typeof t === "number" ) t += "" ; if ( c . isArray ( t ) && Aa . test ( this . type ) ) this . checked = c . inArray ( n . val ( ) , t ) >= 0 ; else if ( c . nodeName ( this , "select" ) ) { var z = c . makeArray ( t ) ; c ( "option" , this ) . each ( function ( ) { this . selected = c . inArray ( c ( this ) . val ( ) , z ) >= 0 } ) ; if ( ! z . length ) this . selectedIndex =
- 1 } else this . value = t } } ) } } ) ; c . extend ( { attrFn : { val : true , css : true , html : true , text : true , data : true , width : true , height : true , offset : true } , attr : function ( a , b , d , f ) { if ( ! a || a . nodeType === 3 || a . nodeType === 8 ) return w ; if ( f && b in c . attrFn ) return c ( a ) [ b ] ( d ) ; f = a . nodeType !== 1 || ! c . isXMLDoc ( a ) ; var e = d !== w ; b = f && c . props [ b ] || b ; if ( a . nodeType === 1 ) { var i = Wa . test ( b ) ; if ( b in a && f && ! i ) { if ( e ) { if ( b === "type" && Xa . test ( a . nodeName ) && a . parentNode ) throw "type property can't be changed" ; a [ b ] = d } if ( c . nodeName ( a , "form" ) && a . getAttributeNode ( b ) ) return a . getAttributeNode ( b ) . nodeValue ;
if ( b === "tabIndex" ) return ( b = a . getAttributeNode ( "tabIndex" ) ) && b . specified ? b . value : Ya . test ( a . nodeName ) || Za . test ( a . nodeName ) && a . href ? 0 : w ; return a [ b ] } if ( ! c . support . style && f && b === "style" ) { if ( e ) a . style . cssText = "" + d ; return a . style . cssText } e && a . setAttribute ( b , "" + d ) ; a = ! c . support . hrefNormalized && f && i ? a . getAttribute ( b , 2 ) : a . getAttribute ( b ) ; return a === null ? w : a } return c . style ( a , b , d ) } } ) ; var $a = function ( a ) { return a . replace ( /[^\w\s\.\|`]/g , function ( b ) { return "\\" + b } ) } ; c . event = { add : function ( a , b , d , f ) { if ( ! ( a . nodeType ===
3 || a . nodeType === 8 ) ) { if ( a . setInterval && a !== A && ! a . frameElement ) a = A ; if ( ! d . guid ) d . guid = c . guid ++ ; if ( f !== w ) { d = c . proxy ( d ) ; d . data = f } var e = c . data ( a , "events" ) || c . data ( a , "events" , { } ) , i = c . data ( a , "handle" ) , j ; if ( ! i ) { j = function ( ) { return typeof c !== "undefined" && ! c . event . triggered ? c . event . handle . apply ( j . elem , arguments ) : w } ; i = c . data ( a , "handle" , j ) } if ( i ) { i . elem = a ; b = b . split ( /\s+/ ) ; for ( var o , p = 0 ; o = b [ p ++ ] ; ) { var n = o . split ( "." ) ; o = n . shift ( ) ; d . type = n . slice ( 0 ) . sort ( ) . join ( "." ) ; var t = e [ o ] , z = this . special [ o ] || { } ; if ( ! t ) { t = e [ o ] = { } ;
if ( ! z . setup || z . setup . call ( a , f , n , d ) === false ) if ( a . addEventListener ) a . addEventListener ( o , i , false ) ; else a . attachEvent && a . attachEvent ( "on" + o , i ) } if ( z . add ) if ( ( n = z . add . call ( a , d , f , n , t ) ) && c . isFunction ( n ) ) { n . guid = n . guid || d . guid ; d = n } t [ d . guid ] = d ; this . global [ o ] = true } a = null } } } , global : { } , remove : function ( a , b , d ) { if ( ! ( a . nodeType === 3 || a . nodeType === 8 ) ) { var f = c . data ( a , "events" ) , e , i , j ; if ( f ) { if ( b === w || typeof b === "string" && b . charAt ( 0 ) === "." ) for ( i in f ) this . remove ( a , i + ( b || "" ) ) ; else { if ( b . type ) { d = b . handler ; b = b . type } b = b . split ( /\s+/ ) ;
for ( var o = 0 ; i = b [ o ++ ] ; ) { var p = i . split ( "." ) ; i = p . shift ( ) ; var n = ! p . length , t = c . map ( p . slice ( 0 ) . sort ( ) , $a ) ; t = new RegExp ( "(^|\\.)" + t . join ( "\\.(?:.*\\.)?" ) + "(\\.|$)" ) ; var z = this . special [ i ] || { } ; if ( f [ i ] ) { if ( d ) { j = f [ i ] [ d . guid ] ; delete f [ i ] [ d . guid ] } else for ( var B in f [ i ] ) if ( n || t . test ( f [ i ] [ B ] . type ) ) delete f [ i ] [ B ] ; z . remove && z . remove . call ( a , p , j ) ; for ( e in f [ i ] ) break ; if ( ! e ) { if ( ! z . teardown || z . teardown . call ( a , p ) === false ) if ( a . removeEventListener ) a . removeEventListener ( i , c . data ( a , "handle" ) , false ) ; else a . detachEvent && a . detachEvent ( "on" +
i , c . data ( a , "handle" ) ) ; e = null ; delete f [ i ] } } } } for ( e in f ) break ; if ( ! e ) { if ( B = c . data ( a , "handle" ) ) B . elem = null ; c . removeData ( a , "events" ) ; c . removeData ( a , "handle" ) } } } } , trigger : function ( a , b , d , f ) { var e = a . type || a ; if ( ! f ) { a = typeof a === "object" ? a [ H ] ? a : c . extend ( c . Event ( e ) , a ) : c . Event ( e ) ; if ( e . indexOf ( "!" ) >= 0 ) { a . type = e = e . slice ( 0 , - 1 ) ; a . exclusive = true } if ( ! d ) { a . stopPropagation ( ) ; this . global [ e ] && c . each ( c . cache , function ( ) { this . events && this . events [ e ] && c . event . trigger ( a , b , this . handle . elem ) } ) } if ( ! d || d . nodeType === 3 || d . nodeType ===
8 ) return w ; a . result = w ; a . target = d ; b = c . makeArray ( b ) ; b . unshift ( a ) } a . currentTarget = d ; var i = c . data ( d , "handle" ) ; i && i . apply ( d , b ) ; var j , o ; try { if ( ! ( d && d . nodeName && c . noData [ d . nodeName . toLowerCase ( ) ] ) ) { j = d [ e ] ; o = d [ "on" + e ] } } catch ( p ) { } i = c . nodeName ( d , "a" ) && e === "click" ; if ( ! f && j && ! a . isDefaultPrevented ( ) && ! i ) { this . triggered = true ; try { d [ e ] ( ) } catch ( n ) { } } else if ( o && d [ "on" + e ] . apply ( d , b ) === false ) a . result = false ; this . triggered = false ; if ( ! a . isPropagationStopped ( ) ) ( d = d . parentNode || d . ownerDocument ) && c . event . trigger ( a , b , d , true ) } ,
handle : function ( a ) { var b , d ; a = arguments [ 0 ] = c . event . fix ( a || A . event ) ; a . currentTarget = this ; d = a . type . split ( "." ) ; a . type = d . shift ( ) ; b = ! d . length && ! a . exclusive ; var f = new RegExp ( "(^|\\.)" + d . slice ( 0 ) . sort ( ) . join ( "\\.(?:.*\\.)?" ) + "(\\.|$)" ) ; d = ( c . data ( this , "events" ) || { } ) [ a . type ] ; for ( var e in d ) { var i = d [ e ] ; if ( b || f . test ( i . type ) ) { a . handler = i ; a . data = i . data ; i = i . apply ( this , arguments ) ; if ( i !== w ) { a . result = i ; if ( i === false ) { a . preventDefault ( ) ; a . stopPropagation ( ) } } if ( a . isImmediatePropagationStopped ( ) ) break } } return a . result } ,
props : "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which" . split ( " " ) , fix : function ( a ) { if ( a [ H ] ) return a ; var b = a ; a = c . Event ( b ) ; for ( var d = this . props . length , f ; d ; ) { f = this . props [ -- d ] ; a [ f ] = b [ f ] } if ( ! a . target ) a . target = a . srcElement ||
s ; if ( a . target . nodeType === 3 ) a . target = a . target . parentNode ; if ( ! a . relatedTarget && a . fromElement ) a . relatedTarget = a . fromElement === a . target ? a . toElement : a . fromElement ; if ( a . pageX == null && a . clientX != null ) { b = s . documentElement ; d = s . body ; a . pageX = a . clientX + ( b && b . scrollLeft || d && d . scrollLeft || 0 ) - ( b && b . clientLeft || d && d . clientLeft || 0 ) ; a . pageY = a . clientY + ( b && b . scrollTop || d && d . scrollTop || 0 ) - ( b && b . clientTop || d && d . clientTop || 0 ) } if ( ! a . which && ( a . charCode || a . charCode === 0 ? a . charCode : a . keyCode ) ) a . which = a . charCode || a . keyCode ; if ( ! a . metaKey &&
a . ctrlKey ) a . metaKey = a . ctrlKey ; if ( ! a . which && a . button !== w ) a . which = a . button & 1 ? 1 : a . button & 2 ? 3 : a . button & 4 ? 2 : 0 ; return a } , guid : 1E8 , proxy : c . proxy , special : { ready : { setup : c . bindReady , teardown : c . noop } , live : { add : function ( a , b ) { c . extend ( a , b || { } ) ; a . guid += b . selector + b . live ; c . event . add ( this , b . live , qa , b ) } , remove : function ( a ) { if ( a . length ) { var b = 0 , d = new RegExp ( "(^|\\.)" + a [ 0 ] + "(\\.|$)" ) ; c . each ( c . data ( this , "events" ) . live || { } , function ( ) { d . test ( this . type ) && b ++ } ) ; b < 1 && c . event . remove ( this , a [ 0 ] , qa ) } } , special : { } } , beforeunload : { setup : function ( a ,
b , d ) { if ( this . setInterval ) this . onbeforeunload = d ; return false } , teardown : function ( a , b ) { if ( this . onbeforeunload === b ) this . onbeforeunload = null } } } } ; c . Event = function ( a ) { if ( ! this . preventDefault ) return new c . Event ( a ) ; if ( a && a . type ) { this . originalEvent = a ; this . type = a . type } else this . type = a ; this . timeStamp = K ( ) ; this [ H ] = true } ; c . Event . prototype = { preventDefault : function ( ) { this . isDefaultPrevented = ba ; var a = this . originalEvent ; if ( a ) { a . preventDefault && a . preventDefault ( ) ; a . returnValue = false } } , stopPropagation : function ( ) { this . isPropagationStopped =
ba ; var a = this . originalEvent ; if ( a ) { a . stopPropagation && a . stopPropagation ( ) ; a . cancelBubble = true } } , stopImmediatePropagation : function ( ) { this . isImmediatePropagationStopped = ba ; this . stopPropagation ( ) } , isDefaultPrevented : aa , isPropagationStopped : aa , isImmediatePropagationStopped : aa } ; var Ba = function ( a ) { for ( var b = a . relatedTarget ; b && b !== this ; ) try { b = b . parentNode } catch ( d ) { break } if ( b !== this ) { a . type = a . data ; c . event . handle . apply ( this , arguments ) } } , Ca = function ( a ) { a . type = a . data ; c . event . handle . apply ( this , arguments ) } ; c . each ( { mouseenter : "mouseover" ,
mouseleave : "mouseout" } , function ( a , b ) { c . event . special [ a ] = { setup : function ( d ) { c . event . add ( this , b , d && d . selector ? Ca : Ba , a ) } , teardown : function ( d ) { c . event . remove ( this , b , d && d . selector ? Ca : Ba ) } } } ) ; if ( ! c . support . submitBubbles ) c . event . special . submit = { setup : function ( a , b , d ) { if ( this . nodeName . toLowerCase ( ) !== "form" ) { c . event . add ( this , "click.specialSubmit." + d . guid , function ( f ) { var e = f . target , i = e . type ; if ( ( i === "submit" || i === "image" ) && c ( e ) . closest ( "form" ) . length ) return pa ( "submit" , this , arguments ) } ) ; c . event . add ( this , "keypress.specialSubmit." +
d . guid , function ( f ) { var e = f . target , i = e . type ; if ( ( i === "text" || i === "password" ) && c ( e ) . closest ( "form" ) . length && f . keyCode === 13 ) return pa ( "submit" , this , arguments ) } ) } else return false } , remove : function ( a , b ) { c . event . remove ( this , "click.specialSubmit" + ( b ? "." + b . guid : "" ) ) ; c . event . remove ( this , "keypress.specialSubmit" + ( b ? "." + b . guid : "" ) ) } } ; if ( ! c . support . changeBubbles ) { var ga = /textarea|input|select/i ; function Da ( a ) { var b = a . type , d = a . value ; if ( b === "radio" || b === "checkbox" ) d = a . checked ; else if ( b === "select-multiple" ) d = a . selectedIndex >
- 1 ? c . map ( a . options , function ( f ) { return f . selected } ) . join ( "-" ) : "" ; else if ( a . nodeName . toLowerCase ( ) === "select" ) d = a . selectedIndex ; return d } function ha ( a , b ) { var d = a . target , f , e ; if ( ! ( ! ga . test ( d . nodeName ) || d . readOnly ) ) { f = c . data ( d , "_change_data" ) ; e = Da ( d ) ; if ( e !== f ) { if ( a . type !== "focusout" || d . type !== "radio" ) c . data ( d , "_change_data" , e ) ; if ( d . type !== "select" && ( f != null || e ) ) { a . type = "change" ; return c . event . trigger ( a , b , this ) } } } } c . event . special . change = { filters : { focusout : ha , click : function ( a ) { var b = a . target , d = b . type ; if ( d ===
"radio" || d === "checkbox" || b . nodeName . toLowerCase ( ) === "select" ) return ha . call ( this , a ) } , keydown : function ( a ) { var b = a . target , d = b . type ; if ( a . keyCode === 13 && b . nodeName . toLowerCase ( ) !== "textarea" || a . keyCode === 32 && ( d === "checkbox" || d === "radio" ) || d === "select-multiple" ) return ha . call ( this , a ) } , beforeactivate : function ( a ) { a = a . target ; a . nodeName . toLowerCase ( ) === "input" && a . type === "radio" && c . data ( a , "_change_data" , Da ( a ) ) } } , setup : function ( a , b , d ) { for ( var f in W ) c . event . add ( this , f + ".specialChange." + d . guid , W [ f ] ) ; return ga . test ( this . nodeName ) } ,
remove : function ( a , b ) { for ( var d in W ) c . event . remove ( this , d + ".specialChange" + ( b ? "." + b . guid : "" ) , W [ d ] ) ; return ga . test ( this . nodeName ) } } ; var W = c . event . special . change . filters } s . addEventListener && c . each ( { focus : "focusin" , blur : "focusout" } , function ( a , b ) { function d ( f ) { f = c . event . fix ( f ) ; f . type = b ; return c . event . handle . call ( this , f ) } c . event . special [ b ] = { setup : function ( ) { this . addEventListener ( a , d , true ) } , teardown : function ( ) { this . removeEventListener ( a , d , true ) } } } ) ; c . each ( [ "bind" , "one" ] , function ( a , b ) { c . fn [ b ] = function ( d ,
f , e ) { if ( typeof d === "object" ) { for ( var i in d ) this [ b ] ( i , f , d [ i ] , e ) ; return this } if ( c . isFunction ( f ) ) { thisObject = e ; e = f ; f = w } var j = b === "one" ? c . proxy ( e , function ( o ) { c ( this ) . unbind ( o , j ) ; return e . apply ( this , arguments ) } ) : e ; return d === "unload" && b !== "one" ? this . one ( d , f , e , thisObject ) : this . each ( function ( ) { c . event . add ( this , d , j , f ) } ) } } ) ; c . fn . extend ( { unbind : function ( a , b ) { if ( typeof a === "object" && ! a . preventDefault ) { for ( var d in a ) this . unbind ( d , a [ d ] ) ; return this } return this . each ( function ( ) { c . event . remove ( this , a , b ) } ) } , trigger : function ( a ,
b ) { return this . each ( function ( ) { c . event . trigger ( a , b , this ) } ) } , triggerHandler : function ( a , b ) { if ( this [ 0 ] ) { a = c . Event ( a ) ; a . preventDefault ( ) ; a . stopPropagation ( ) ; c . event . trigger ( a , b , this [ 0 ] ) ; return a . result } } , toggle : function ( a ) { for ( var b = arguments , d = 1 ; d < b . length ; ) c . proxy ( a , b [ d ++ ] ) ; return this . click ( c . proxy ( a , function ( f ) { var e = ( c . data ( this , "lastToggle" + a . guid ) || 0 ) % d ; c . data ( this , "lastToggle" + a . guid , e + 1 ) ; f . preventDefault ( ) ; return b [ e ] . apply ( this , arguments ) || false } ) ) } , hover : function ( a , b ) { return this . mouseenter ( a ) . mouseleave ( b ||
a ) } , live : function ( a , b , d ) { if ( c . isFunction ( b ) ) { d = b ; b = w } c ( this . context ) . bind ( ra ( a , this . selector ) , { data : b , selector : this . selector , live : a } , d ) ; return this } , die : function ( a , b ) { c ( this . context ) . unbind ( ra ( a , this . selector ) , b ? { guid : b . guid + this . selector + a } : null ) ; return this } } ) ; c . each ( "blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error" . split ( " " ) , function ( a , b ) { c . fn [ b ] = function ( d ) { return d ?
this . bind ( b , d ) : this . trigger ( b ) } ; if ( c . attrFn ) c . attrFn [ b ] = true } ) ; A . attachEvent && ! A . addEventListener && A . attachEvent ( "onunload" , function ( ) { for ( var a in c . cache ) if ( c . cache [ a ] . handle ) try { c . event . remove ( c . cache [ a ] . handle . elem ) } catch ( b ) { } } ) ; ( function ( ) { function a ( g ) { for ( var h = "" , k , m = 0 ; g [ m ] ; m ++ ) { k = g [ m ] ; if ( k . nodeType === 3 || k . nodeType === 4 ) h += k . nodeValue ; else if ( k . nodeType !== 8 ) h += a ( k . childNodes ) } return h } function b ( g , h , k , m , r , q ) { r = 0 ; for ( var v = m . length ; r < v ; r ++ ) { var u = m [ r ] ; if ( u ) { u = u [ g ] ; for ( var y = false ; u ; ) { if ( u . sizcache ===
k ) { y = m [ u . sizset ] ; break } if ( u . nodeType === 1 && ! q ) { u . sizcache = k ; u . sizset = r } if ( u . nodeName . toLowerCase ( ) === h ) { y = u ; break } u = u [ g ] } m [ r ] = y } } } function d ( g , h , k , m , r , q ) { r = 0 ; for ( var v = m . length ; r < v ; r ++ ) { var u = m [ r ] ; if ( u ) { u = u [ g ] ; for ( var y = false ; u ; ) { if ( u . sizcache === k ) { y = m [ u . sizset ] ; break } if ( u . nodeType === 1 ) { if ( ! q ) { u . sizcache = k ; u . sizset = r } if ( typeof h !== "string" ) { if ( u === h ) { y = true ; break } } else if ( p . filter ( h , [ u ] ) . length > 0 ) { y = u ; break } } u = u [ g ] } m [ r ] = y } } } var f = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g ,
e = 0 , i = Object . prototype . toString , j = false , o = true ; [ 0 , 0 ] . sort ( function ( ) { o = false ; return 0 } ) ; var p = function ( g , h , k , m ) { k = k || [ ] ; var r = h = h || s ; if ( h . nodeType !== 1 && h . nodeType !== 9 ) return [ ] ; if ( ! g || typeof g !== "string" ) return k ; for ( var q = [ ] , v , u , y , S , I = true , N = x ( h ) , J = g ; ( f . exec ( "" ) , v = f . exec ( J ) ) !== null ; ) { J = v [ 3 ] ; q . push ( v [ 1 ] ) ; if ( v [ 2 ] ) { S = v [ 3 ] ; break } } if ( q . length > 1 && t . exec ( g ) ) if ( q . length === 2 && n . relative [ q [ 0 ] ] ) u = ia ( q [ 0 ] + q [ 1 ] , h ) ; else for ( u = n . relative [ q [ 0 ] ] ? [ h ] : p ( q . shift ( ) , h ) ; q . length ; ) { g = q . shift ( ) ; if ( n . relative [ g ] ) g += q . shift ( ) ;
u = ia ( g , u ) } else { if ( ! m && q . length > 1 && h . nodeType === 9 && ! N && n . match . ID . test ( q [ 0 ] ) && ! n . match . ID . test ( q [ q . length - 1 ] ) ) { v = p . find ( q . shift ( ) , h , N ) ; h = v . expr ? p . filter ( v . expr , v . set ) [ 0 ] : v . set [ 0 ] } if ( h ) { v = m ? { expr : q . pop ( ) , set : B ( m ) } : p . find ( q . pop ( ) , q . length === 1 && ( q [ 0 ] === "~" || q [ 0 ] === "+" ) && h . parentNode ? h . parentNode : h , N ) ; u = v . expr ? p . filter ( v . expr , v . set ) : v . set ; if ( q . length > 0 ) y = B ( u ) ; else I = false ; for ( ; q . length ; ) { var E = q . pop ( ) ; v = E ; if ( n . relative [ E ] ) v = q . pop ( ) ; else E = "" ; if ( v == null ) v = h ; n . relative [ E ] ( y , v , N ) } } else y = [ ] } y || ( y = u ) ; if ( ! y ) throw "Syntax error, unrecognized expression: " +
( E || g ) ; if ( i . call ( y ) === "[object Array]" ) if ( I ) if ( h && h . nodeType === 1 ) for ( g = 0 ; y [ g ] != null ; g ++ ) { if ( y [ g ] && ( y [ g ] === true || y [ g ] . nodeType === 1 && F ( h , y [ g ] ) ) ) k . push ( u [ g ] ) } else for ( g = 0 ; y [ g ] != null ; g ++ ) y [ g ] && y [ g ] . nodeType === 1 && k . push ( u [ g ] ) ; else k . push . apply ( k , y ) ; else B ( y , k ) ; if ( S ) { p ( S , r , k , m ) ; p . uniqueSort ( k ) } return k } ; p . uniqueSort = function ( g ) { if ( D ) { j = o ; g . sort ( D ) ; if ( j ) for ( var h = 1 ; h < g . length ; h ++ ) g [ h ] === g [ h - 1 ] && g . splice ( h -- , 1 ) } return g } ; p . matches = function ( g , h ) { return p ( g , null , null , h ) } ; p . find = function ( g , h , k ) { var m , r ; if ( ! g ) return [ ] ;
for ( var q = 0 , v = n . order . length ; q < v ; q ++ ) { var u = n . order [ q ] ; if ( r = n . leftMatch [ u ] . exec ( g ) ) { var y = r [ 1 ] ; r . splice ( 1 , 1 ) ; if ( y . substr ( y . length - 1 ) !== "\\" ) { r [ 1 ] = ( r [ 1 ] || "" ) . replace ( /\\/g , "" ) ; m = n . find [ u ] ( r , h , k ) ; if ( m != null ) { g = g . replace ( n . match [ u ] , "" ) ; break } } } } m || ( m = h . getElementsByTagName ( "*" ) ) ; return { set : m , expr : g } } ; p . filter = function ( g , h , k , m ) { for ( var r = g , q = [ ] , v = h , u , y , S = h && h [ 0 ] && x ( h [ 0 ] ) ; g && h . length ; ) { for ( var I in n . filter ) if ( ( u = n . leftMatch [ I ] . exec ( g ) ) != null && u [ 2 ] ) { var N = n . filter [ I ] , J , E ; E = u [ 1 ] ; y = false ; u . splice ( 1 , 1 ) ; if ( E . substr ( E . length -
1 ) !== "\\" ) { if ( v === q ) q = [ ] ; if ( n . preFilter [ I ] ) if ( u = n . preFilter [ I ] ( u , v , k , q , m , S ) ) { if ( u === true ) continue } else y = J = true ; if ( u ) for ( var X = 0 ; ( E = v [ X ] ) != null ; X ++ ) if ( E ) { J = N ( E , u , X , v ) ; var Ea = m ^ ! ! J ; if ( k && J != null ) if ( Ea ) y = true ; else v [ X ] = false ; else if ( Ea ) { q . push ( E ) ; y = true } } if ( J !== w ) { k || ( v = q ) ; g = g . replace ( n . match [ I ] , "" ) ; if ( ! y ) return [ ] ; break } } } if ( g === r ) if ( y == null ) throw "Syntax error, unrecognized expression: " + g ; else break ; r = g } return v } ; var n = p . selectors = { order : [ "ID" , "NAME" , "TAG" ] , match : { ID : /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/ ,
CLASS : /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/ , NAME : /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/ , ATTR : /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/ , TAG : /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/ , CHILD : /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/ , POS : /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/ , PSEUDO : /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ } , leftMatch : { } , attrMap : { "class" : "className" , "for" : "htmlFor" } , attrHandle : { href : function ( g ) { return g . getAttribute ( "href" ) } } ,
relative : { "+" : function ( g , h ) { var k = typeof h === "string" , m = k && ! /\W/ . test ( h ) ; k = k && ! m ; if ( m ) h = h . toLowerCase ( ) ; m = 0 ; for ( var r = g . length , q ; m < r ; m ++ ) if ( q = g [ m ] ) { for ( ; ( q = q . previousSibling ) && q . nodeType !== 1 ; ) ; g [ m ] = k || q && q . nodeName . toLowerCase ( ) === h ? q || false : q === h } k && p . filter ( h , g , true ) } , ">" : function ( g , h ) { var k = typeof h === "string" ; if ( k && ! /\W/ . test ( h ) ) { h = h . toLowerCase ( ) ; for ( var m = 0 , r = g . length ; m < r ; m ++ ) { var q = g [ m ] ; if ( q ) { k = q . parentNode ; g [ m ] = k . nodeName . toLowerCase ( ) === h ? k : false } } } else { m = 0 ; for ( r = g . length ; m < r ; m ++ ) if ( q = g [ m ] ) g [ m ] =
k ? q . parentNode : q . parentNode === h ; k && p . filter ( h , g , true ) } } , "" : function ( g , h , k ) { var m = e ++ , r = d ; if ( typeof h === "string" && ! /\W/ . test ( h ) ) { var q = h = h . toLowerCase ( ) ; r = b } r ( "parentNode" , h , m , g , q , k ) } , "~" : function ( g , h , k ) { var m = e ++ , r = d ; if ( typeof h === "string" && ! /\W/ . test ( h ) ) { var q = h = h . toLowerCase ( ) ; r = b } r ( "previousSibling" , h , m , g , q , k ) } } , find : { ID : function ( g , h , k ) { if ( typeof h . getElementById !== "undefined" && ! k ) return ( g = h . getElementById ( g [ 1 ] ) ) ? [ g ] : [ ] } , NAME : function ( g , h ) { if ( typeof h . getElementsByName !== "undefined" ) { var k = [ ] ;
h = h . getElementsByName ( g [ 1 ] ) ; for ( var m = 0 , r = h . length ; m < r ; m ++ ) h [ m ] . getAttribute ( "name" ) === g [ 1 ] && k . push ( h [ m ] ) ; return k . length === 0 ? null : k } } , TAG : function ( g , h ) { return h . getElementsByTagName ( g [ 1 ] ) } } , preFilter : { CLASS : function ( g , h , k , m , r , q ) { g = " " + g [ 1 ] . replace ( /\\/g , "" ) + " " ; if ( q ) return g ; q = 0 ; for ( var v ; ( v = h [ q ] ) != null ; q ++ ) if ( v ) if ( r ^ ( v . className && ( " " + v . className + " " ) . replace ( /[\t\n]/g , " " ) . indexOf ( g ) >= 0 ) ) k || m . push ( v ) ; else if ( k ) h [ q ] = false ; return false } , ID : function ( g ) { return g [ 1 ] . replace ( /\\/g , "" ) } , TAG : function ( g ) { return g [ 1 ] . toLowerCase ( ) } ,
CHILD : function ( g ) { if ( g [ 1 ] === "nth" ) { var h = /(-?)(\d*)n((?:\+|-)?\d*)/ . exec ( g [ 2 ] === "even" && "2n" || g [ 2 ] === "odd" && "2n+1" || ! /\D/ . test ( g [ 2 ] ) && "0n+" + g [ 2 ] || g [ 2 ] ) ; g [ 2 ] = h [ 1 ] + ( h [ 2 ] || 1 ) - 0 ; g [ 3 ] = h [ 3 ] - 0 } g [ 0 ] = e ++ ; return g } , ATTR : function ( g , h , k , m , r , q ) { h = g [ 1 ] . replace ( /\\/g , "" ) ; if ( ! q && n . attrMap [ h ] ) g [ 1 ] = n . attrMap [ h ] ; if ( g [ 2 ] === "~=" ) g [ 4 ] = " " + g [ 4 ] + " " ; return g } , PSEUDO : function ( g , h , k , m , r ) { if ( g [ 1 ] === "not" ) if ( ( f . exec ( g [ 3 ] ) || "" ) . length > 1 || /^\w/ . test ( g [ 3 ] ) ) g [ 3 ] = p ( g [ 3 ] , null , null , h ) ; else { g = p . filter ( g [ 3 ] , h , k , true ^ r ) ; k || m . push . apply ( m ,
g ) ; return false } else if ( n . match . POS . test ( g [ 0 ] ) || n . match . CHILD . test ( g [ 0 ] ) ) return true ; return g } , POS : function ( g ) { g . unshift ( true ) ; return g } } , filters : { enabled : function ( g ) { return g . disabled === false && g . type !== "hidden" } , disabled : function ( g ) { return g . disabled === true } , checked : function ( g ) { return g . checked === true } , selected : function ( g ) { return g . selected === true } , parent : function ( g ) { return ! ! g . firstChild } , empty : function ( g ) { return ! g . firstChild } , has : function ( g , h , k ) { return ! ! p ( k [ 3 ] , g ) . length } , header : function ( g ) { return /h\d/i . test ( g . nodeName ) } ,
text : function ( g ) { return "text" === g . type } , radio : function ( g ) { return "radio" === g . type } , checkbox : function ( g ) { return "checkbox" === g . type } , file : function ( g ) { return "file" === g . type } , password : function ( g ) { return "password" === g . type } , submit : function ( g ) { return "submit" === g . type } , image : function ( g ) { return "image" === g . type } , reset : function ( g ) { return "reset" === g . type } , button : function ( g ) { return "button" === g . type || g . nodeName . toLowerCase ( ) === "button" } , input : function ( g ) { return /input|select|textarea|button/i . test ( g . nodeName ) } } ,
setFilters : { first : function ( g , h ) { return h === 0 } , last : function ( g , h , k , m ) { return h === m . length - 1 } , even : function ( g , h ) { return h % 2 === 0 } , odd : function ( g , h ) { return h % 2 === 1 } , lt : function ( g , h , k ) { return h < k [ 3 ] - 0 } , gt : function ( g , h , k ) { return h > k [ 3 ] - 0 } , nth : function ( g , h , k ) { return k [ 3 ] - 0 === h } , eq : function ( g , h , k ) { return k [ 3 ] - 0 === h } } , filter : { PSEUDO : function ( g , h , k , m ) { var r = h [ 1 ] , q = n . filters [ r ] ; if ( q ) return q ( g , k , h , m ) ; else if ( r === "contains" ) return ( g . textContent || g . innerText || a ( [ g ] ) || "" ) . indexOf ( h [ 3 ] ) >= 0 ; else if ( r === "not" ) { h =
h [ 3 ] ; k = 0 ; for ( m = h . length ; k < m ; k ++ ) if ( h [ k ] === g ) return false ; return true } else throw "Syntax error, unrecognized expression: " + r ; } , CHILD : function ( g , h ) { var k = h [ 1 ] , m = g ; switch ( k ) { case "only" : case "first" : for ( ; m = m . previousSibling ; ) if ( m . nodeType === 1 ) return false ; if ( k === "first" ) return true ; m = g ; case "last" : for ( ; m = m . nextSibling ; ) if ( m . nodeType === 1 ) return false ; return true ; case "nth" : k = h [ 2 ] ; var r = h [ 3 ] ; if ( k === 1 && r === 0 ) return true ; h = h [ 0 ] ; var q = g . parentNode ; if ( q && ( q . sizcache !== h || ! g . nodeIndex ) ) { var v = 0 ; for ( m = q . firstChild ; m ; m =
m . nextSibling ) if ( m . nodeType === 1 ) m . nodeIndex = ++ v ; q . sizcache = h } g = g . nodeIndex - r ; return k === 0 ? g === 0 : g % k === 0 && g / k >= 0 } } , ID : function ( g , h ) { return g . nodeType === 1 && g . getAttribute ( "id" ) === h } , TAG : function ( g , h ) { return h === "*" && g . nodeType === 1 || g . nodeName . toLowerCase ( ) === h } , CLASS : function ( g , h ) { return ( " " + ( g . className || g . getAttribute ( "class" ) ) + " " ) . indexOf ( h ) > - 1 } , ATTR : function ( g , h ) { var k = h [ 1 ] ; g = n . attrHandle [ k ] ? n . attrHandle [ k ] ( g ) : g [ k ] != null ? g [ k ] : g . getAttribute ( k ) ; k = g + "" ; var m = h [ 2 ] ; h = h [ 4 ] ; return g == null ? m === "!=" : m ===
"=" ? k === h : m === "*=" ? k . indexOf ( h ) >= 0 : m === "~=" ? ( " " + k + " " ) . indexOf ( h ) >= 0 : ! h ? k && g !== false : m === "!=" ? k !== h : m === "^=" ? k . indexOf ( h ) === 0 : m === "$=" ? k . substr ( k . length - h . length ) === h : m === "|=" ? k === h || k . substr ( 0 , h . length + 1 ) === h + "-" : false } , POS : function ( g , h , k , m ) { var r = n . setFilters [ h [ 2 ] ] ; if ( r ) return r ( g , k , h , m ) } } } , t = n . match . POS ; for ( var z in n . match ) { n . match [ z ] = new RegExp ( n . match [ z ] . source + /(?![^\[]*\])(?![^\(]*\))/ . source ) ; n . leftMatch [ z ] = new RegExp ( /(^(?:.|\r|\n)*?)/ . source + n . match [ z ] . source . replace ( /\\(\d+)/g , function ( g ,
h ) { return "\\" + ( h - 0 + 1 ) } ) ) } var B = function ( g , h ) { g = Array . prototype . slice . call ( g , 0 ) ; if ( h ) { h . push . apply ( h , g ) ; return h } return g } ; try { Array . prototype . slice . call ( s . documentElement . childNodes , 0 ) } catch ( C ) { B = function ( g , h ) { h = h || [ ] ; if ( i . call ( g ) === "[object Array]" ) Array . prototype . push . apply ( h , g ) ; else if ( typeof g . length === "number" ) for ( var k = 0 , m = g . length ; k < m ; k ++ ) h . push ( g [ k ] ) ; else for ( k = 0 ; g [ k ] ; k ++ ) h . push ( g [ k ] ) ; return h } } var D ; if ( s . documentElement . compareDocumentPosition ) D = function ( g , h ) { if ( ! g . compareDocumentPosition ||
! h . compareDocumentPosition ) { if ( g == h ) j = true ; return g . compareDocumentPosition ? - 1 : 1 } g = g . compareDocumentPosition ( h ) & 4 ? - 1 : g === h ? 0 : 1 ; if ( g === 0 ) j = true ; return g } ; else if ( "sourceIndex" in s . documentElement ) D = function ( g , h ) { if ( ! g . sourceIndex || ! h . sourceIndex ) { if ( g == h ) j = true ; return g . sourceIndex ? - 1 : 1 } g = g . sourceIndex - h . sourceIndex ; if ( g === 0 ) j = true ; return g } ; else if ( s . createRange ) D = function ( g , h ) { if ( ! g . ownerDocument || ! h . ownerDocument ) { if ( g == h ) j = true ; return g . ownerDocument ? - 1 : 1 } var k = g . ownerDocument . createRange ( ) , m =
h . ownerDocument . createRange ( ) ; k . setStart ( g , 0 ) ; k . setEnd ( g , 0 ) ; m . setStart ( h , 0 ) ; m . setEnd ( h , 0 ) ; g = k . compareBoundaryPoints ( Range . START_TO_END , m ) ; if ( g === 0 ) j = true ; return g } ; ( function ( ) { var g = s . createElement ( "div" ) , h = "script" + ( new Date ) . getTime ( ) ; g . innerHTML = "<a name='" + h + "'/>" ; var k = s . documentElement ; k . insertBefore ( g , k . firstChild ) ; if ( s . getElementById ( h ) ) { n . find . ID = function ( m , r , q ) { if ( typeof r . getElementById !== "undefined" && ! q ) return ( r = r . getElementById ( m [ 1 ] ) ) ? r . id === m [ 1 ] || typeof r . getAttributeNode !== "undefined" &&
r . getAttributeNode ( "id" ) . nodeValue === m [ 1 ] ? [ r ] : w : [ ] } ; n . filter . ID = function ( m , r ) { var q = typeof m . getAttributeNode !== "undefined" && m . getAttributeNode ( "id" ) ; return m . nodeType === 1 && q && q . nodeValue === r } } k . removeChild ( g ) ; k = g = null } ) ( ) ; ( function ( ) { var g = s . createElement ( "div" ) ; g . appendChild ( s . createComment ( "" ) ) ; if ( g . getElementsByTagName ( "*" ) . length > 0 ) n . find . TAG = function ( h , k ) { k = k . getElementsByTagName ( h [ 1 ] ) ; if ( h [ 1 ] === "*" ) { h = [ ] ; for ( var m = 0 ; k [ m ] ; m ++ ) k [ m ] . nodeType === 1 && h . push ( k [ m ] ) ; k = h } return k } ; g . innerHTML = "<a href='#'></a>" ;
if ( g . firstChild && typeof g . firstChild . getAttribute !== "undefined" && g . firstChild . getAttribute ( "href" ) !== "#" ) n . attrHandle . href = function ( h ) { return h . getAttribute ( "href" , 2 ) } ; g = null } ) ( ) ; s . querySelectorAll && function ( ) { var g = p , h = s . createElement ( "div" ) ; h . innerHTML = "<p class='TEST'></p>" ; if ( ! ( h . querySelectorAll && h . querySelectorAll ( ".TEST" ) . length === 0 ) ) { p = function ( m , r , q , v ) { r = r || s ; if ( ! v && r . nodeType === 9 && ! x ( r ) ) try { return B ( r . querySelectorAll ( m ) , q ) } catch ( u ) { } return g ( m , r , q , v ) } ; for ( var k in g ) p [ k ] = g [ k ] ; h = null } } ( ) ;
( function ( ) { var g = s . createElement ( "div" ) ; g . innerHTML = "<div class='test e'></div><div class='test'></div>" ; if ( ! ( ! g . getElementsByClassName || g . getElementsByClassName ( "e" ) . length === 0 ) ) { g . lastChild . className = "e" ; if ( g . getElementsByClassName ( "e" ) . length !== 1 ) { n . order . splice ( 1 , 0 , "CLASS" ) ; n . find . CLASS = function ( h , k , m ) { if ( typeof k . getElementsByClassName !== "undefined" && ! m ) return k . getElementsByClassName ( h [ 1 ] ) } ; g = null } } } ) ( ) ; var F = s . compareDocumentPosition ? function ( g , h ) { return g . compareDocumentPosition ( h ) & 16 } : function ( g ,
h ) { return g !== h && ( g . contains ? g . contains ( h ) : true ) } , x = function ( g ) { return ( g = ( g ? g . ownerDocument || g : 0 ) . documentElement ) ? g . nodeName !== "HTML" : false } , ia = function ( g , h ) { var k = [ ] , m = "" , r ; for ( h = h . nodeType ? [ h ] : h ; r = n . match . PSEUDO . exec ( g ) ; ) { m += r [ 0 ] ; g = g . replace ( n . match . PSEUDO , "" ) } g = n . relative [ g ] ? g + "*" : g ; r = 0 ; for ( var q = h . length ; r < q ; r ++ ) p ( g , h [ r ] , k ) ; return p . filter ( m , k ) } ; c . find = p ; c . expr = p . selectors ; c . expr [ ":" ] = c . expr . filters ; c . unique = p . uniqueSort ; c . getText = a ; c . isXMLDoc = x ; c . contains = F } ) ( ) ; var ab = /Until$/ , bb = /^(?:parents|prevUntil|prevAll)/ ,
cb = /,/ ; R = Array . prototype . slice ; var Fa = function ( a , b , d ) { if ( c . isFunction ( b ) ) return c . grep ( a , function ( e , i ) { return ! ! b . call ( e , i , e ) === d } ) ; else if ( b . nodeType ) return c . grep ( a , function ( e ) { return e === b === d } ) ; else if ( typeof b === "string" ) { var f = c . grep ( a , function ( e ) { return e . nodeType === 1 } ) ; if ( Pa . test ( b ) ) return c . filter ( b , f , ! d ) ; else b = c . filter ( b , a ) } return c . grep ( a , function ( e ) { return c . inArray ( e , b ) >= 0 === d } ) } ; c . fn . extend ( { find : function ( a ) { for ( var b = this . pushStack ( "" , "find" , a ) , d = 0 , f = 0 , e = this . length ; f < e ; f ++ ) { d = b . length ;
c . find ( a , this [ f ] , b ) ; if ( f > 0 ) for ( var i = d ; i < b . length ; i ++ ) for ( var j = 0 ; j < d ; j ++ ) if ( b [ j ] === b [ i ] ) { b . splice ( i -- , 1 ) ; break } } return b } , has : function ( a ) { var b = c ( a ) ; return this . filter ( function ( ) { for ( var d = 0 , f = b . length ; d < f ; d ++ ) if ( c . contains ( this , b [ d ] ) ) return true } ) } , not : function ( a ) { return this . pushStack ( Fa ( this , a , false ) , "not" , a ) } , filter : function ( a ) { return this . pushStack ( Fa ( this , a , true ) , "filter" , a ) } , is : function ( a ) { return ! ! a && c . filter ( a , this ) . length > 0 } , closest : function ( a , b ) { if ( c . isArray ( a ) ) { var d = [ ] , f = this [ 0 ] , e , i =
{ } , j ; if ( f && a . length ) { e = 0 ; for ( var o = a . length ; e < o ; e ++ ) { j = a [ e ] ; i [ j ] || ( i [ j ] = c . expr . match . POS . test ( j ) ? c ( j , b || this . context ) : j ) } for ( ; f && f . ownerDocument && f !== b ; ) { for ( j in i ) { e = i [ j ] ; if ( e . jquery ? e . index ( f ) > - 1 : c ( f ) . is ( e ) ) { d . push ( { selector : j , elem : f } ) ; delete i [ j ] } } f = f . parentNode } } return d } var p = c . expr . match . POS . test ( a ) ? c ( a , b || this . context ) : null ; return this . map ( function ( n , t ) { for ( ; t && t . ownerDocument && t !== b ; ) { if ( p ? p . index ( t ) > - 1 : c ( t ) . is ( a ) ) return t ; t = t . parentNode } return null } ) } , index : function ( a ) { if ( ! a || typeof a ===
"string" ) return c . inArray ( this [ 0 ] , a ? c ( a ) : this . parent ( ) . children ( ) ) ; return c . inArray ( a . jquery ? a [ 0 ] : a , this ) } , add : function ( a , b ) { a = typeof a === "string" ? c ( a , b || this . context ) : c . makeArray ( a ) ; b = c . merge ( this . get ( ) , a ) ; return this . pushStack ( sa ( a [ 0 ] ) || sa ( b [ 0 ] ) ? b : c . unique ( b ) ) } , andSelf : function ( ) { return this . add ( this . prevObject ) } } ) ; c . each ( { parent : function ( a ) { return ( a = a . parentNode ) && a . nodeType !== 11 ? a : null } , parents : function ( a ) { return c . dir ( a , "parentNode" ) } , parentsUntil : function ( a , b , d ) { return c . dir ( a , "parentNode" ,
d ) } , next : function ( a ) { return c . nth ( a , 2 , "nextSibling" ) } , prev : function ( a ) { return c . nth ( a , 2 , "previousSibling" ) } , nextAll : function ( a ) { return c . dir ( a , "nextSibling" ) } , prevAll : function ( a ) { return c . dir ( a , "previousSibling" ) } , nextUntil : function ( a , b , d ) { return c . dir ( a , "nextSibling" , d ) } , prevUntil : function ( a , b , d ) { return c . dir ( a , "previousSibling" , d ) } , siblings : function ( a ) { return c . sibling ( a . parentNode . firstChild , a ) } , children : function ( a ) { return c . sibling ( a . firstChild ) } , contents : function ( a ) { return c . nodeName ( a , "iframe" ) ?
a . contentDocument || a . contentWindow . document : c . makeArray ( a . childNodes ) } } , function ( a , b ) { c . fn [ a ] = function ( d , f ) { var e = c . map ( this , b , d ) ; ab . test ( a ) || ( f = d ) ; if ( f && typeof f === "string" ) e = c . filter ( f , e ) ; e = this . length > 1 ? c . unique ( e ) : e ; if ( ( this . length > 1 || cb . test ( f ) ) && bb . test ( a ) ) e = e . reverse ( ) ; return this . pushStack ( e , a , R . call ( arguments ) . join ( "," ) ) } } ) ; c . extend ( { filter : function ( a , b , d ) { if ( d ) a = ":not(" + a + ")" ; return c . find . matches ( a , b ) } , dir : function ( a , b , d ) { var f = [ ] ; for ( a = a [ b ] ; a && a . nodeType !== 9 && ( d === w || ! c ( a ) . is ( d ) ) ; ) { a . nodeType ===
1 && f . push ( a ) ; a = a [ b ] } return f } , nth : function ( a , b , d ) { b = b || 1 ; for ( var f = 0 ; a ; a = a [ d ] ) if ( a . nodeType === 1 && ++ f === b ) break ; return a } , sibling : function ( a , b ) { for ( var d = [ ] ; a ; a = a . nextSibling ) a . nodeType === 1 && a !== b && d . push ( a ) ; return d } } ) ; var Ga = / jQuery\d+="(?:\d+|null)"/g , Y = /^\s+/ , db = /(<([\w:]+)[^>]*?)\/>/g , eb = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i , Ha = /<([\w:]+)/ , fb = /<tbody/i , gb = /<|&\w+;/ , hb = function ( a , b , d ) { return eb . test ( d ) ? a : b + "></" + d + ">" } , G = { option : [ 1 , "<select multiple='multiple'>" , "</select>" ] ,
legend : [ 1 , "<fieldset>" , "</fieldset>" ] , thead : [ 1 , "<table>" , "</table>" ] , tr : [ 2 , "<table><tbody>" , "</tbody></table>" ] , td : [ 3 , "<table><tbody><tr>" , "</tr></tbody></table>" ] , col : [ 2 , "<table><tbody></tbody><colgroup>" , "</colgroup></table>" ] , area : [ 1 , "<map>" , "</map>" ] , _ default : [ 0 , "" , "" ] } ; G . optgroup = G . option ; G . tbody = G . tfoot = G . colgroup = G . caption = G . thead ; G . th = G . td ; if ( ! c . support . htmlSerialize ) G . _ default = [ 1 , "div<div>" , "</div>" ] ; c . fn . extend ( { text : function ( a ) { if ( c . isFunction ( a ) ) return this . each ( function ( b ) { var d = c ( this ) ;
return d . text ( a . call ( this , b , d . text ( ) ) ) } ) ; if ( typeof a !== "object" && a !== w ) return this . empty ( ) . append ( ( this [ 0 ] && this [ 0 ] . ownerDocument || s ) . createTextNode ( a ) ) ; return c . getText ( this ) } , wrapAll : function ( a ) { if ( c . isFunction ( a ) ) return this . each ( function ( d ) { c ( this ) . wrapAll ( a . call ( this , d ) ) } ) ; if ( this [ 0 ] ) { var b = c ( a , this [ 0 ] . ownerDocument ) . eq ( 0 ) . clone ( true ) ; this [ 0 ] . parentNode && b . insertBefore ( this [ 0 ] ) ; b . map ( function ( ) { for ( var d = this ; d . firstChild && d . firstChild . nodeType === 1 ; ) d = d . firstChild ; return d } ) . append ( this ) } return this } ,
wrapInner : function ( a ) { return this . each ( function ( ) { var b = c ( this ) , d = b . contents ( ) ; d . length ? d . wrapAll ( a ) : b . append ( a ) } ) } , wrap : function ( a ) { return this . each ( function ( ) { c ( this ) . wrapAll ( a ) } ) } , unwrap : function ( ) { return this . parent ( ) . each ( function ( ) { c . nodeName ( this , "body" ) || c ( this ) . replaceWith ( this . childNodes ) } ) . end ( ) } , append : function ( ) { return this . domManip ( arguments , true , function ( a ) { this . nodeType === 1 && this . appendChild ( a ) } ) } , prepend : function ( ) { return this . domManip ( arguments , true , function ( a ) { this . nodeType === 1 &&
this . insertBefore ( a , this . firstChild ) } ) } , before : function ( ) { if ( this [ 0 ] && this [ 0 ] . parentNode ) return this . domManip ( arguments , false , function ( b ) { this . parentNode . insertBefore ( b , this ) } ) ; else if ( arguments . length ) { var a = c ( arguments [ 0 ] ) ; a . push . apply ( a , this . toArray ( ) ) ; return this . pushStack ( a , "before" , arguments ) } } , after : function ( ) { if ( this [ 0 ] && this [ 0 ] . parentNode ) return this . domManip ( arguments , false , function ( b ) { this . parentNode . insertBefore ( b , this . nextSibling ) } ) ; else if ( arguments . length ) { var a = this . pushStack ( this ,
"after" , arguments ) ; a . push . apply ( a , c ( arguments [ 0 ] ) . toArray ( ) ) ; return a } } , clone : function ( a ) { var b = this . map ( function ( ) { if ( ! c . support . noCloneEvent && ! c . isXMLDoc ( this ) ) { var d = this . outerHTML , f = this . ownerDocument ; if ( ! d ) { d = f . createElement ( "div" ) ; d . appendChild ( this . cloneNode ( true ) ) ; d = d . innerHTML } return c . clean ( [ d . replace ( Ga , "" ) . replace ( Y , "" ) ] , f ) [ 0 ] } else return this . cloneNode ( true ) } ) ; if ( a === true ) { ta ( this , b ) ; ta ( this . find ( "*" ) , b . find ( "*" ) ) } return b } , html : function ( a ) { if ( a === w ) return this [ 0 ] && this [ 0 ] . nodeType ===
1 ? this [ 0 ] . innerHTML . replace ( Ga , "" ) : null ; else if ( typeof a === "string" && ! /<script/i . test ( a ) && ( c . support . leadingWhitespace || ! Y . test ( a ) ) && ! G [ ( Ha . exec ( a ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ] ) try { for ( var b = 0 , d = this . length ; b < d ; b ++ ) if ( this [ b ] . nodeType === 1 ) { T ( this [ b ] . getElementsByTagName ( "*" ) ) ; this [ b ] . innerHTML = a } } catch ( f ) { this . empty ( ) . append ( a ) } else c . isFunction ( a ) ? this . each ( function ( e ) { var i = c ( this ) , j = i . html ( ) ; i . empty ( ) . append ( function ( ) { return a . call ( this , e , j ) } ) } ) : this . empty ( ) . append ( a ) ; return this } , replaceWith : function ( a ) { if ( this [ 0 ] &&
this [ 0 ] . parentNode ) { c . isFunction ( a ) || ( a = c ( a ) . detach ( ) ) ; return this . each ( function ( ) { var b = this . nextSibling , d = this . parentNode ; c ( this ) . remove ( ) ; b ? c ( b ) . before ( a ) : c ( d ) . append ( a ) } ) } else return this . pushStack ( c ( c . isFunction ( a ) ? a ( ) : a ) , "replaceWith" , a ) } , detach : function ( a ) { return this . remove ( a , true ) } , domManip : function ( a , b , d ) { function f ( t ) { return c . nodeName ( t , "table" ) ? t . getElementsByTagName ( "tbody" ) [ 0 ] || t . appendChild ( t . ownerDocument . createElement ( "tbody" ) ) : t } var e , i , j = a [ 0 ] , o = [ ] ; if ( c . isFunction ( j ) ) return this . each ( function ( t ) { var z =
c ( this ) ; a [ 0 ] = j . call ( this , t , b ? z . html ( ) : w ) ; return z . domManip ( a , b , d ) } ) ; if ( this [ 0 ] ) { e = a [ 0 ] && a [ 0 ] . parentNode && a [ 0 ] . parentNode . nodeType === 11 ? { fragment : a [ 0 ] . parentNode } : ua ( a , this , o ) ; if ( i = e . fragment . firstChild ) { b = b && c . nodeName ( i , "tr" ) ; for ( var p = 0 , n = this . length ; p < n ; p ++ ) d . call ( b ? f ( this [ p ] , i ) : this [ p ] , e . cacheable || this . length > 1 || p > 0 ? e . fragment . cloneNode ( true ) : e . fragment ) } o && c . each ( o , La ) } return this } } ) ; c . fragments = { } ; c . each ( { appendTo : "append" , prependTo : "prepend" , insertBefore : "before" , insertAfter : "after" , replaceAll : "replaceWith" } ,
function ( a , b ) { c . fn [ a ] = function ( d ) { var f = [ ] ; d = c ( d ) ; for ( var e = 0 , i = d . length ; e < i ; e ++ ) { var j = ( e > 0 ? this . clone ( true ) : this ) . get ( ) ; c . fn [ b ] . apply ( c ( d [ e ] ) , j ) ; f = f . concat ( j ) } return this . pushStack ( f , a , d . selector ) } } ) ; c . each ( { remove : function ( a , b ) { if ( ! a || c . filter ( a , [ this ] ) . length ) { if ( ! b && this . nodeType === 1 ) { T ( this . getElementsByTagName ( "*" ) ) ; T ( [ this ] ) } this . parentNode && this . parentNode . removeChild ( this ) } } , empty : function ( ) { for ( this . nodeType === 1 && T ( this . getElementsByTagName ( "*" ) ) ; this . firstChild ; ) this . removeChild ( this . firstChild ) } } ,
function ( a , b ) { c . fn [ a ] = function ( ) { return this . each ( b , arguments ) } } ) ; c . extend ( { clean : function ( a , b , d , f ) { b = b || s ; if ( typeof b . createElement === "undefined" ) b = b . ownerDocument || b [ 0 ] && b [ 0 ] . ownerDocument || s ; var e = [ ] ; c . each ( a , function ( i , j ) { if ( typeof j === "number" ) j += "" ; if ( j ) { if ( typeof j === "string" && ! gb . test ( j ) ) j = b . createTextNode ( j ) ; else if ( typeof j === "string" ) { j = j . replace ( db , hb ) ; var o = ( Ha . exec ( j ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) , p = G [ o ] || G . _ default , n = p [ 0 ] ; i = b . createElement ( "div" ) ; for ( i . innerHTML = p [ 1 ] + j + p [ 2 ] ; n -- ; ) i = i . lastChild ;
if ( ! c . support . tbody ) { n = fb . test ( j ) ; o = o === "table" && ! n ? i . firstChild && i . firstChild . childNodes : p [ 1 ] === "<table>" && ! n ? i . childNodes : [ ] ; for ( p = o . length - 1 ; p >= 0 ; -- p ) c . nodeName ( o [ p ] , "tbody" ) && ! o [ p ] . childNodes . length && o [ p ] . parentNode . removeChild ( o [ p ] ) } ! c . support . leadingWhitespace && Y . test ( j ) && i . insertBefore ( b . createTextNode ( Y . exec ( j ) [ 0 ] ) , i . firstChild ) ; j = c . makeArray ( i . childNodes ) } if ( j . nodeType ) e . push ( j ) ; else e = c . merge ( e , j ) } } ) ; if ( d ) for ( a = 0 ; e [ a ] ; a ++ ) if ( f && c . nodeName ( e [ a ] , "script" ) && ( ! e [ a ] . type || e [ a ] . type . toLowerCase ( ) ===
"text/javascript" ) ) f . push ( e [ a ] . parentNode ? e [ a ] . parentNode . removeChild ( e [ a ] ) : e [ a ] ) ; else { e [ a ] . nodeType === 1 && e . splice . apply ( e , [ a + 1 , 0 ] . concat ( c . makeArray ( e [ a ] . getElementsByTagName ( "script" ) ) ) ) ; d . appendChild ( e [ a ] ) } return e } } ) ; var ib = /z-?index|font-?weight|opacity|zoom|line-?height/i , Ia = /alpha\([^)]*\)/ , Ja = /opacity=([^)]*)/ , ja = /float/i , ka = /-([a-z])/ig , jb = /([A-Z])/g , kb = /^-?\d+(?:px)?$/i , lb = /^-?\d/ , mb = { position : "absolute" , visibility : "hidden" , display : "block" } , nb = [ "Left" , "Right" ] , ob = [ "Top" , "Bottom" ] , pb = s . defaultView &&
s . defaultView . getComputedStyle , Ka = c . support . cssFloat ? "cssFloat" : "styleFloat" , la = function ( a , b ) { return b . toUpperCase ( ) } ; c . fn . css = function ( a , b ) { return $ ( this , a , b , true , function ( d , f , e ) { if ( e === w ) return c . curCSS ( d , f ) ; if ( typeof e === "number" && ! ib . test ( f ) ) e += "px" ; c . style ( d , f , e ) } ) } ; c . extend ( { style : function ( a , b , d ) { if ( ! a || a . nodeType === 3 || a . nodeType === 8 ) return w ; if ( ( b === "width" || b === "height" ) && parseFloat ( d ) < 0 ) d = w ; var f = a . style || a , e = d !== w ; if ( ! c . support . opacity && b === "opacity" ) { if ( e ) { f . zoom = 1 ; b = parseInt ( d , 10 ) + "" ===
"NaN" ? "" : "alpha(opacity=" + d * 100 + ")" ; a = f . filter || c . curCSS ( a , "filter" ) || "" ; f . filter = Ia . test ( a ) ? a . replace ( Ia , b ) : b } return f . filter && f . filter . indexOf ( "opacity=" ) >= 0 ? parseFloat ( Ja . exec ( f . filter ) [ 1 ] ) / 100 + "" : "" } if ( ja . test ( b ) ) b = Ka ; b = b . replace ( ka , la ) ; if ( e ) f [ b ] = d ; return f [ b ] } , css : function ( a , b , d , f ) { if ( b === "width" || b === "height" ) { var e , i = b === "width" ? nb : ob ; function j ( ) { e = b === "width" ? a . offsetWidth : a . offsetHeight ; f !== "border" && c . each ( i , function ( ) { f || ( e -= parseFloat ( c . curCSS ( a , "padding" + this , true ) ) || 0 ) ; if ( f === "margin" ) e +=
parseFloat ( c . curCSS ( a , "margin" + this , true ) ) || 0 ; else e -= parseFloat ( c . curCSS ( a , "border" + this + "Width" , true ) ) || 0 } ) } a . offsetWidth !== 0 ? j ( ) : c . swap ( a , mb , j ) ; return Math . max ( 0 , Math . round ( e ) ) } return c . curCSS ( a , b , d ) } , curCSS : function ( a , b , d ) { var f , e = a . style ; if ( ! c . support . opacity && b === "opacity" && a . currentStyle ) { f = Ja . test ( a . currentStyle . filter || "" ) ? parseFloat ( RegExp . $1 ) / 100 + "" : "" ; return f === "" ? "1" : f } if ( ja . test ( b ) ) b = Ka ; if ( ! d && e && e [ b ] ) f = e [ b ] ; else if ( pb ) { if ( ja . test ( b ) ) b = "float" ; b = b . replace ( jb , "-$1" ) . toLowerCase ( ) ; e =
a . ownerDocument . defaultView ; if ( ! e ) return null ; if ( a = e . getComputedStyle ( a , null ) ) f = a . getPropertyValue ( b ) ; if ( b === "opacity" && f === "" ) f = "1" } else if ( a . currentStyle ) { d = b . replace ( ka , la ) ; f = a . currentStyle [ b ] || a . currentStyle [ d ] ; if ( ! kb . test ( f ) && lb . test ( f ) ) { b = e . left ; var i = a . runtimeStyle . left ; a . runtimeStyle . left = a . currentStyle . left ; e . left = d === "fontSize" ? "1em" : f || 0 ; f = e . pixelLeft + "px" ; e . left = b ; a . runtimeStyle . left = i } } return f } , swap : function ( a , b , d ) { var f = { } ; for ( var e in b ) { f [ e ] = a . style [ e ] ; a . style [ e ] = b [ e ] } d . call ( a ) ; for ( e in b ) a . style [ e ] =
f [ e ] } } ) ; if ( c . expr && c . expr . filters ) { c . expr . filters . hidden = function ( a ) { var b = a . offsetWidth , d = a . offsetHeight , f = a . nodeName . toLowerCase ( ) === "tr" ; return b === 0 && d === 0 && ! f ? true : b > 0 && d > 0 && ! f ? false : c . curCSS ( a , "display" ) === "none" } ; c . expr . filters . visible = function ( a ) { return ! c . expr . filters . hidden ( a ) } } var qb = K ( ) , rb = /<script(.|\s)*?\/script>/gi , sb = /select|textarea/i , tb = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i , O = /=\?(&|$)/ , ma = /\?/ , ub = /(\?|&)_=.*?(&|$)/ , vb = /^(\w+:)?\/\/([^\/?#]+)/ ,
wb = /%20/g ; c . fn . extend ( { _ load : c . fn . load , load : function ( a , b , d ) { if ( typeof a !== "string" ) return this . _ load ( a ) ; else if ( ! this . length ) return this ; var f = a . indexOf ( " " ) ; if ( f >= 0 ) { var e = a . slice ( f , a . length ) ; a = a . slice ( 0 , f ) } f = "GET" ; if ( b ) if ( c . isFunction ( b ) ) { d = b ; b = null } else if ( typeof b === "object" ) { b = c . param ( b , c . ajaxSettings . traditional ) ; f = "POST" } c . ajax ( { url : a , type : f , dataType : "html" , data : b , context : this , complete : function ( i , j ) { if ( j === "success" || j === "notmodified" ) this . html ( e ? c ( "<div />" ) . append ( i . responseText . replace ( rb ,
"" ) ) . find ( e ) : i . responseText ) ; d && this . each ( d , [ i . responseText , j , i ] ) } } ) ; return this } , serialize : function ( ) { return c . param ( this . serializeArray ( ) ) } , serializeArray : function ( ) { return this . map ( function ( ) { return this . elements ? c . makeArray ( this . elements ) : this } ) . filter ( function ( ) { return this . name && ! this . disabled && ( this . checked || sb . test ( this . nodeName ) || tb . test ( this . type ) ) } ) . map ( function ( a , b ) { a = c ( this ) . val ( ) ; return a == null ? null : c . isArray ( a ) ? c . map ( a , function ( d ) { return { name : b . name , value : d } } ) : { name : b . name , value : a } } ) . get ( ) } } ) ;
c . each ( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend" . split ( " " ) , function ( a , b ) { c . fn [ b ] = function ( d ) { return this . bind ( b , d ) } } ) ; c . extend ( { get : function ( a , b , d , f ) { if ( c . isFunction ( b ) ) { f = f || d ; d = b ; b = null } return c . ajax ( { type : "GET" , url : a , data : b , success : d , dataType : f } ) } , getScript : function ( a , b ) { return c . get ( a , null , b , "script" ) } , getJSON : function ( a , b , d ) { return c . get ( a , b , d , "json" ) } , post : function ( a , b , d , f ) { if ( c . isFunction ( b ) ) { f = f || d ; d = b ; b = { } } return c . ajax ( { type : "POST" , url : a , data : b , success : d , dataType : f } ) } ,
ajaxSetup : function ( a ) { c . extend ( c . ajaxSettings , a ) } , ajaxSettings : { url : location . href , global : true , type : "GET" , contentType : "application/x-www-form-urlencoded" , processData : true , async : true , xhr : A . XMLHttpRequest && ( A . location . protocol !== "file:" || ! A . ActiveXObject ) ? function ( ) { return new A . XMLHttpRequest } : function ( ) { try { return new A . ActiveXObject ( "Microsoft.XMLHTTP" ) } catch ( a ) { } } , accepts : { xml : "application/xml, text/xml" , html : "text/html" , script : "text/javascript, application/javascript" , json : "application/json, text/javascript" ,
text : "text/plain" , _ default : "*/*" } } , lastModified : { } , etag : { } , ajax : function ( a ) { function b ( ) { e . success && e . success . call ( p , o , j , x ) ; e . global && f ( "ajaxSuccess" , [ x , e ] ) } function d ( ) { e . complete && e . complete . call ( p , x , j ) ; e . global && f ( "ajaxComplete" , [ x , e ] ) ; e . global && ! -- c . active && c . event . trigger ( "ajaxStop" ) } function f ( r , q ) { ( e . context ? c ( e . context ) : c . event ) . trigger ( r , q ) } var e = c . extend ( true , { } , c . ajaxSettings , a ) , i , j , o , p = e . context || e , n = e . type . toUpperCase ( ) ; if ( e . data && e . processData && typeof e . data !== "string" ) e . data = c . param ( e . data ,
e . traditional ) ; if ( e . dataType === "jsonp" ) { if ( n === "GET" ) O . test ( e . url ) || ( e . url += ( ma . test ( e . url ) ? "&" : "?" ) + ( e . jsonp || "callback" ) + "=?" ) ; else if ( ! e . data || ! O . test ( e . data ) ) e . data = ( e . data ? e . data + "&" : "" ) + ( e . jsonp || "callback" ) + "=?" ; e . dataType = "json" } if ( e . dataType === "json" && ( e . data && O . test ( e . data ) || O . test ( e . url ) ) ) { i = e . jsonpCallback || "jsonp" + qb ++ ; if ( e . data ) e . data = ( e . data + "" ) . replace ( O , "=" + i + "$1" ) ; e . url = e . url . replace ( O , "=" + i + "$1" ) ; e . dataType = "script" ; A [ i ] = A [ i ] || function ( r ) { o = r ; b ( ) ; d ( ) ; A [ i ] = w ; try { delete A [ i ] } catch ( q ) { } B &&
B . removeChild ( C ) } } if ( e . dataType === "script" && e . cache === null ) e . cache = false ; if ( e . cache === false && n === "GET" ) { var t = K ( ) , z = e . url . replace ( ub , "$1_=" + t + "$2" ) ; e . url = z + ( z === e . url ? ( ma . test ( e . url ) ? "&" : "?" ) + "_=" + t : "" ) } if ( e . data && n === "GET" ) e . url += ( ma . test ( e . url ) ? "&" : "?" ) + e . data ; e . global && ! c . active ++ && c . event . trigger ( "ajaxStart" ) ; t = ( t = vb . exec ( e . url ) ) && ( t [ 1 ] && t [ 1 ] !== location . protocol || t [ 2 ] !== location . host ) ; if ( e . dataType === "script" && n === "GET" && t ) { var B = s . getElementsByTagName ( "head" ) [ 0 ] || s . documentElement , C = s . createElement ( "script" ) ;
C . src = e . url ; if ( e . scriptCharset ) C . charset = e . scriptCharset ; if ( ! i ) { var D = false ; C . onload = C . onreadystatechange = function ( ) { if ( ! D && ( ! this . readyState || this . readyState === "loaded" || this . readyState === "complete" ) ) { D = true ; b ( ) ; d ( ) ; C . onload = C . onreadystatechange = null ; B && C . parentNode && B . removeChild ( C ) } } } B . insertBefore ( C , B . firstChild ) ; return w } var F = false , x = e . xhr ( ) ; if ( x ) { e . username ? x . open ( n , e . url , e . async , e . username , e . password ) : x . open ( n , e . url , e . async ) ; try { if ( e . data || a && a . contentType ) x . setRequestHeader ( "Content-Type" ,
e . contentType ) ; if ( e . ifModified ) { c . lastModified [ e . url ] && x . setRequestHeader ( "If-Modified-Since" , c . lastModified [ e . url ] ) ; c . etag [ e . url ] && x . setRequestHeader ( "If-None-Match" , c . etag [ e . url ] ) } t || x . setRequestHeader ( "X-Requested-With" , "XMLHttpRequest" ) ; x . setRequestHeader ( "Accept" , e . dataType && e . accepts [ e . dataType ] ? e . accepts [ e . dataType ] + ", */*" : e . accepts . _ default ) } catch ( ia ) { } if ( e . beforeSend && e . beforeSend . call ( p , x , e ) === false ) { e . global && ! -- c . active && c . event . trigger ( "ajaxStop" ) ; x . abort ( ) ; return false } e . global && f ( "ajaxSend" ,
[ x , e ] ) ; var g = x . onreadystatechange = function ( r ) { if ( ! x || x . readyState === 0 ) { F || d ( ) ; F = true ; if ( x ) x . onreadystatechange = c . noop } else if ( ! F && x && ( x . readyState === 4 || r === "timeout" ) ) { F = true ; x . onreadystatechange = c . noop ; j = r === "timeout" ? "timeout" : ! c . httpSuccess ( x ) ? "error" : e . ifModified && c . httpNotModified ( x , e . url ) ? "notmodified" : "success" ; if ( j === "success" ) try { o = c . httpData ( x , e . dataType , e ) } catch ( q ) { j = "parsererror" } if ( j === "success" || j === "notmodified" ) i || b ( ) ; else c . handleError ( e , x , j ) ; d ( ) ; r === "timeout" && x . abort ( ) ; if ( e . async ) x =
null } } ; try { var h = x . abort ; x . abort = function ( ) { if ( x ) { h . call ( x ) ; if ( x ) x . readyState = 0 } g ( ) } } catch ( k ) { } e . async && e . timeout > 0 && setTimeout ( function ( ) { x && ! F && g ( "timeout" ) } , e . timeout ) ; try { x . send ( n === "POST" || n === "PUT" || n === "DELETE" ? e . data : null ) } catch ( m ) { c . handleError ( e , x , null , m ) ; d ( ) } e . async || g ( ) ; return x } } , handleError : function ( a , b , d , f ) { if ( a . error ) a . error . call ( a . context || A , b , d , f ) ; if ( a . global ) ( a . context ? c ( a . context ) : c . event ) . trigger ( "ajaxError" , [ b , a , f ] ) } , active : 0 , httpSuccess : function ( a ) { try { return ! a . status && location . protocol ===
"file:" || a . status >= 200 && a . status < 300 || a . status === 304 || a . status === 1223 || a . status === 0 } catch ( b ) { } return false } , httpNotModified : function ( a , b ) { var d = a . getResponseHeader ( "Last-Modified" ) , f = a . getResponseHeader ( "Etag" ) ; if ( d ) c . lastModified [ b ] = d ; if ( f ) c . etag [ b ] = f ; return a . status === 304 || a . status === 0 } , httpData : function ( a , b , d ) { var f = a . getResponseHeader ( "content-type" ) || "" , e = b === "xml" || ! b && f . indexOf ( "xml" ) >= 0 ; a = e ? a . responseXML : a . responseText ; if ( e && a . documentElement . nodeName === "parsererror" ) throw "parsererror" ; if ( d &&
d . dataFilter ) a = d . dataFilter ( a , b ) ; if ( typeof a === "string" ) if ( b === "json" || ! b && f . indexOf ( "json" ) >= 0 ) if ( /^[\],:{}\s]*$/ . test ( a . replace ( /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g , "@" ) . replace ( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g , "]" ) . replace ( /(?:^|:|,)(?:\s*\[)+/g , "" ) ) ) a = A . JSON && A . JSON . parse ? A . JSON . parse ( a ) : ( new Function ( "return " + a ) ) ( ) ; else throw "Invalid JSON: " + a ; else if ( b === "script" || ! b && f . indexOf ( "javascript" ) >= 0 ) c . globalEval ( a ) ; return a } , param : function ( a , b ) { function d ( e , i ) { i =
c . isFunction ( i ) ? i ( ) : i ; f [ f . length ] = encodeURIComponent ( e ) + "=" + encodeURIComponent ( i ) } var f = [ ] ; if ( b === w ) b = c . ajaxSettings . traditional ; c . isArray ( a ) || a . jquery ? c . each ( a , function ( ) { d ( this . name , this . value ) } ) : c . each ( a , function e ( i , j ) { if ( c . isArray ( j ) ) c . each ( j , function ( o , p ) { b ? d ( i , p ) : e ( i + "[" + ( typeof p === "object" || c . isArray ( p ) ? o : "" ) + "]" , p ) } ) ; else ! b && j != null && typeof j === "object" ? c . each ( j , function ( o , p ) { e ( i + "[" + o + "]" , p ) } ) : d ( i , j ) } ) ; return f . join ( "&" ) . replace ( wb , "+" ) } } ) ; var na = { } , xb = /toggle|show|hide/ , yb = /^([+-]=)?([\d+-.]+)(.*)$/ ,
Z , va = [ [ "height" , "marginTop" , "marginBottom" , "paddingTop" , "paddingBottom" ] , [ "width" , "marginLeft" , "marginRight" , "paddingLeft" , "paddingRight" ] , [ "opacity" ] ] ; c . fn . extend ( { show : function ( a , b ) { if ( a != null ) return this . animate ( L ( "show" , 3 ) , a , b ) ; else { a = 0 ; for ( b = this . length ; a < b ; a ++ ) { var d = c . data ( this [ a ] , "olddisplay" ) ; this [ a ] . style . display = d || "" ; if ( c . css ( this [ a ] , "display" ) === "none" ) { d = this [ a ] . nodeName ; var f ; if ( na [ d ] ) f = na [ d ] ; else { var e = c ( "<" + d + " />" ) . appendTo ( "body" ) ; f = e . css ( "display" ) ; if ( f === "none" ) f = "block" ; e . remove ( ) ;
na [ d ] = f } c . data ( this [ a ] , "olddisplay" , f ) } } a = 0 ; for ( b = this . length ; a < b ; a ++ ) this [ a ] . style . display = c . data ( this [ a ] , "olddisplay" ) || "" ; return this } } , hide : function ( a , b ) { if ( a != null ) return this . animate ( L ( "hide" , 3 ) , a , b ) ; else { a = 0 ; for ( b = this . length ; a < b ; a ++ ) { var d = c . data ( this [ a ] , "olddisplay" ) ; ! d && d !== "none" && c . data ( this [ a ] , "olddisplay" , c . css ( this [ a ] , "display" ) ) } a = 0 ; for ( b = this . length ; a < b ; a ++ ) this [ a ] . style . display = "none" ; return this } } , _ toggle : c . fn . toggle , toggle : function ( a , b ) { var d = typeof a === "boolean" ; if ( c . isFunction ( a ) &&
c . isFunction ( b ) ) this . _ toggle . apply ( this , arguments ) ; else a == null || d ? this . each ( function ( ) { var f = d ? a : c ( this ) . is ( ":hidden" ) ; c ( this ) [ f ? "show" : "hide" ] ( ) } ) : this . animate ( L ( "toggle" , 3 ) , a , b ) ; return this } , fadeTo : function ( a , b , d ) { return this . filter ( ":hidden" ) . css ( "opacity" , 0 ) . show ( ) . end ( ) . animate ( { opacity : b } , a , d ) } , animate : function ( a , b , d , f ) { var e = c . speed ( b , d , f ) ; if ( c . isEmptyObject ( a ) ) return this . each ( e . complete ) ; return this [ e . queue === false ? "each" : "queue" ] ( function ( ) { var i = c . extend ( { } , e ) , j , o = this . nodeType === 1 && c ( this ) . is ( ":hidden" ) ,
p = this ; for ( j in a ) { var n = j . replace ( ka , la ) ; if ( j !== n ) { a [ n ] = a [ j ] ; delete a [ j ] ; j = n } if ( a [ j ] === "hide" && o || a [ j ] === "show" && ! o ) return i . complete . call ( this ) ; if ( ( j === "height" || j === "width" ) && this . style ) { i . display = c . css ( this , "display" ) ; i . overflow = this . style . overflow } if ( c . isArray ( a [ j ] ) ) { ( i . specialEasing = i . specialEasing || { } ) [ j ] = a [ j ] [ 1 ] ; a [ j ] = a [ j ] [ 0 ] } } if ( i . overflow != null ) this . style . overflow = "hidden" ; i . curAnim = c . extend ( { } , a ) ; c . each ( a , function ( t , z ) { var B = new c . fx ( p , i , t ) ; if ( xb . test ( z ) ) B [ z === "toggle" ? o ? "show" : "hide" : z ] ( a ) ;
else { var C = yb . exec ( z ) , D = B . cur ( true ) || 0 ; if ( C ) { z = parseFloat ( C [ 2 ] ) ; var F = C [ 3 ] || "px" ; if ( F !== "px" ) { p . style [ t ] = ( z || 1 ) + F ; D = ( z || 1 ) / B . cur ( true ) * D ; p . style [ t ] = D + F } if ( C [ 1 ] ) z = ( C [ 1 ] === "-=" ? - 1 : 1 ) * z + D ; B . custom ( D , z , F ) } else B . custom ( D , z , "" ) } } ) ; return true } ) } , stop : function ( a , b ) { var d = c . timers ; a && this . queue ( [ ] ) ; this . each ( function ( ) { for ( var f = d . length - 1 ; f >= 0 ; f -- ) if ( d [ f ] . elem === this ) { b && d [ f ] ( true ) ; d . splice ( f , 1 ) } } ) ; b || this . dequeue ( ) ; return this } } ) ; c . each ( { slideDown : L ( "show" , 1 ) , slideUp : L ( "hide" , 1 ) , slideToggle : L ( "toggle" ,
1 ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } } , function ( a , b ) { c . fn [ a ] = function ( d , f ) { return this . animate ( b , d , f ) } } ) ; c . extend ( { speed : function ( a , b , d ) { var f = a && typeof a === "object" ? a : { complete : d || ! d && b || c . isFunction ( a ) && a , duration : a , easing : d && b || b && ! c . isFunction ( b ) && b } ; f . duration = c . fx . off ? 0 : typeof f . duration === "number" ? f . duration : c . fx . speeds [ f . duration ] || c . fx . speeds . _ default ; f . old = f . complete ; f . complete = function ( ) { f . queue !== false && c ( this ) . dequeue ( ) ; c . isFunction ( f . old ) && f . old . call ( this ) } ; return f } , easing : { linear : function ( a ,
b , d , f ) { return d + f * a } , swing : function ( a , b , d , f ) { return ( - Math . cos ( a * Math . PI ) / 2 + 0.5 ) * f + d } } , timers : [ ] , fx : function ( a , b , d ) { this . options = b ; this . elem = a ; this . prop = d ; if ( ! b . orig ) b . orig = { } } } ) ; c . fx . prototype = { update : function ( ) { this . options . step && this . options . step . call ( this . elem , this . now , this ) ; ( c . fx . step [ this . prop ] || c . fx . step . _ default ) ( this ) ; if ( ( this . prop === "height" || this . prop === "width" ) && this . elem . style ) this . elem . style . display = "block" } , cur : function ( a ) { if ( this . elem [ this . prop ] != null && ( ! this . elem . style || this . elem . style [ this . prop ] ==
null ) ) return this . elem [ this . prop ] ; return ( a = parseFloat ( c . css ( this . elem , this . prop , a ) ) ) && a > - 10000 ? a : parseFloat ( c . curCSS ( this . elem , this . prop ) ) || 0 } , custom : function ( a , b , d ) { function f ( i ) { return e . step ( i ) } this . startTime = K ( ) ; this . start = a ; this . end = b ; this . unit = d || this . unit || "px" ; this . now = this . start ; this . pos = this . state = 0 ; var e = this ; f . elem = this . elem ; if ( f ( ) && c . timers . push ( f ) && ! Z ) Z = setInterval ( c . fx . tick , 13 ) } , show : function ( ) { this . options . orig [ this . prop ] = c . style ( this . elem , this . prop ) ; this . options . show = true ; this . custom ( this . prop ===
"width" || this . prop === "height" ? 1 : 0 , this . cur ( ) ) ; c ( this . elem ) . show ( ) } , hide : function ( ) { this . options . orig [ this . prop ] = c . style ( this . elem , this . prop ) ; this . options . hide = true ; this . custom ( this . cur ( ) , 0 ) } , step : function ( a ) { var b = K ( ) , d = true ; if ( a || b >= this . options . duration + this . startTime ) { this . now = this . end ; this . pos = this . state = 1 ; this . update ( ) ; this . options . curAnim [ this . prop ] = true ; for ( var f in this . options . curAnim ) if ( this . options . curAnim [ f ] !== true ) d = false ; if ( d ) { if ( this . options . display != null ) { this . elem . style . overflow =
this . options . overflow ; a = c . data ( this . elem , "olddisplay" ) ; this . elem . style . display = a ? a : this . options . display ; if ( c . css ( this . elem , "display" ) === "none" ) this . elem . style . display = "block" } this . options . hide && c ( this . elem ) . hide ( ) ; if ( this . options . hide || this . options . show ) for ( var e in this . options . curAnim ) c . style ( this . elem , e , this . options . orig [ e ] ) ; this . options . complete . call ( this . elem ) } return false } else { e = b - this . startTime ; this . state = e / this . options . duration ; a = this . options . easing || ( c . easing . swing ? "swing" : "linear" ) ; this . pos =
c . easing [ this . options . specialEasing && this . options . specialEasing [ this . prop ] || a ] ( this . state , e , 0 , 1 , this . options . duration ) ; this . now = this . start + ( this . end - this . start ) * this . pos ; this . update ( ) } return true } } ; c . extend ( c . fx , { tick : function ( ) { for ( var a = c . timers , b = 0 ; b < a . length ; b ++ ) a [ b ] ( ) || a . splice ( b -- , 1 ) ; a . length || c . fx . stop ( ) } , stop : function ( ) { clearInterval ( Z ) ; Z = null } , speeds : { slow : 600 , fast : 200 , _ default : 400 } , step : { opacity : function ( a ) { c . style ( a . elem , "opacity" , a . now ) } , _ default : function ( a ) { if ( a . elem . style && a . elem . style [ a . prop ] !=
null ) a . elem . style [ a . prop ] = ( a . prop === "width" || a . prop === "height" ? Math . max ( 0 , a . now ) : a . now ) + a . unit ; else a . elem [ a . prop ] = a . now } } } ) ; if ( c . expr && c . expr . filters ) c . expr . filters . animated = function ( a ) { return c . grep ( c . timers , function ( b ) { return a === b . elem } ) . length } ; c . fn . offset = "getBoundingClientRect" in s . documentElement ? function ( a ) { var b = this [ 0 ] ; if ( ! b || ! b . ownerDocument ) return null ; if ( a ) return this . each ( function ( e ) { c . offset . setOffset ( this , a , e ) } ) ; if ( b === b . ownerDocument . body ) return c . offset . bodyOffset ( b ) ; var d = b . getBoundingClientRect ( ) ,
f = b . ownerDocument ; b = f . body ; f = f . documentElement ; return { top : d . top + ( self . pageYOffset || c . support . boxModel && f . scrollTop || b . scrollTop ) - ( f . clientTop || b . clientTop || 0 ) , left : d . left + ( self . pageXOffset || c . support . boxModel && f . scrollLeft || b . scrollLeft ) - ( f . clientLeft || b . clientLeft || 0 ) } } : function ( a ) { var b = this [ 0 ] ; if ( ! b || ! b . ownerDocument ) return null ; if ( a ) return this . each ( function ( t ) { c . offset . setOffset ( this , a , t ) } ) ; if ( b === b . ownerDocument . body ) return c . offset . bodyOffset ( b ) ; c . offset . initialize ( ) ; var d = b . offsetParent , f =
b , e = b . ownerDocument , i , j = e . documentElement , o = e . body ; f = ( e = e . defaultView ) ? e . getComputedStyle ( b , null ) : b . currentStyle ; for ( var p = b . offsetTop , n = b . offsetLeft ; ( b = b . parentNode ) && b !== o && b !== j ; ) { if ( c . offset . supportsFixedPosition && f . position === "fixed" ) break ; i = e ? e . getComputedStyle ( b , null ) : b . currentStyle ; p -= b . scrollTop ; n -= b . scrollLeft ; if ( b === d ) { p += b . offsetTop ; n += b . offsetLeft ; if ( c . offset . doesNotAddBorder && ! ( c . offset . doesAddBorderForTableAndCells && /^t(able|d|h)$/i . test ( b . nodeName ) ) ) { p += parseFloat ( i . borderTopWidth ) ||
0 ; n += parseFloat ( i . borderLeftWidth ) || 0 } f = d ; d = b . offsetParent } if ( c . offset . subtractsBorderForOverflowNotVisible && i . overflow !== "visible" ) { p += parseFloat ( i . borderTopWidth ) || 0 ; n += parseFloat ( i . borderLeftWidth ) || 0 } f = i } if ( f . position === "relative" || f . position === "static" ) { p += o . offsetTop ; n += o . offsetLeft } if ( c . offset . supportsFixedPosition && f . position === "fixed" ) { p += Math . max ( j . scrollTop , o . scrollTop ) ; n += Math . max ( j . scrollLeft , o . scrollLeft ) } return { top : p , left : n } } ; c . offset = { initialize : function ( ) { var a = s . body , b = s . createElement ( "div" ) ,
d , f , e , i = parseFloat ( c . curCSS ( a , "marginTop" , true ) ) || 0 ; c . extend ( b . style , { position : "absolute" , top : 0 , left : 0 , margin : 0 , border : 0 , width : "1px" , height : "1px" , visibility : "hidden" } ) ; b . innerHTML = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>" ; a . insertBefore ( b , a . firstChild ) ;
d = b . firstChild ; f = d . firstChild ; e = d . nextSibling . firstChild . firstChild ; this . doesNotAddBorder = f . offsetTop !== 5 ; this . doesAddBorderForTableAndCells = e . offsetTop === 5 ; f . style . position = "fixed" ; f . style . top = "20px" ; this . supportsFixedPosition = f . offsetTop === 20 || f . offsetTop === 15 ; f . style . position = f . style . top = "" ; d . style . overflow = "hidden" ; d . style . position = "relative" ; this . subtractsBorderForOverflowNotVisible = f . offsetTop === - 5 ; this . doesNotIncludeMarginInBodyOffset = a . offsetTop !== i ; a . removeChild ( b ) ; c . offset . initialize = c . noop } ,
bodyOffset : function ( a ) { var b = a . offsetTop , d = a . offsetLeft ; c . offset . initialize ( ) ; if ( c . offset . doesNotIncludeMarginInBodyOffset ) { b += parseFloat ( c . curCSS ( a , "marginTop" , true ) ) || 0 ; d += parseFloat ( c . curCSS ( a , "marginLeft" , true ) ) || 0 } return { top : b , left : d } } , setOffset : function ( a , b , d ) { if ( /static/ . test ( c . curCSS ( a , "position" ) ) ) a . style . position = "relative" ; var f = c ( a ) , e = f . offset ( ) , i = parseInt ( c . curCSS ( a , "top" , true ) , 10 ) || 0 , j = parseInt ( c . curCSS ( a , "left" , true ) , 10 ) || 0 ; if ( c . isFunction ( b ) ) b = b . call ( a , d , e ) ; d = { top : b . top - e . top + i , left : b . left -
e . left + j } ; "using" in b ? b . using . call ( a , d ) : f . css ( d ) } } ; c . fn . extend ( { position : function ( ) { if ( ! this [ 0 ] ) return null ; var a = this [ 0 ] , b = this . offsetParent ( ) , d = this . offset ( ) , f = /^body|html$/i . test ( b [ 0 ] . nodeName ) ? { top : 0 , left : 0 } : b . offset ( ) ; d . top -= parseFloat ( c . curCSS ( a , "marginTop" , true ) ) || 0 ; d . left -= parseFloat ( c . curCSS ( a , "marginLeft" , true ) ) || 0 ; f . top += parseFloat ( c . curCSS ( b [ 0 ] , "borderTopWidth" , true ) ) || 0 ; f . left += parseFloat ( c . curCSS ( b [ 0 ] , "borderLeftWidth" , true ) ) || 0 ; return { top : d . top - f . top , left : d . left - f . left } } , offsetParent : function ( ) { return this . map ( function ( ) { for ( var a =
this . offsetParent || s . body ; a && ! /^body|html$/i . test ( a . nodeName ) && c . css ( a , "position" ) === "static" ; ) a = a . offsetParent ; return a } ) } } ) ; c . each ( [ "Left" , "Top" ] , function ( a , b ) { var d = "scroll" + b ; c . fn [ d ] = function ( f ) { var e = this [ 0 ] , i ; if ( ! e ) return null ; if ( f !== w ) return this . each ( function ( ) { if ( i = wa ( this ) ) i . scrollTo ( ! a ? f : c ( i ) . scrollLeft ( ) , a ? f : c ( i ) . scrollTop ( ) ) ; else this [ d ] = f } ) ; else return ( i = wa ( e ) ) ? "pageXOffset" in i ? i [ a ? "pageYOffset" : "pageXOffset" ] : c . support . boxModel && i . document . documentElement [ d ] || i . document . body [ d ] : e [ d ] } } ) ;
c . each ( [ "Height" , "Width" ] , function ( a , b ) { var d = b . toLowerCase ( ) ; c . fn [ "inner" + b ] = function ( ) { return this [ 0 ] ? c . css ( this [ 0 ] , d , false , "padding" ) : null } ; c . fn [ "outer" + b ] = function ( f ) { return this [ 0 ] ? c . css ( this [ 0 ] , d , false , f ? "margin" : "border" ) : null } ; c . fn [ d ] = function ( f ) { var e = this [ 0 ] ; if ( ! e ) return f == null ? null : this ; return "scrollTo" in e && e . document ? e . document . compatMode === "CSS1Compat" && e . document . documentElement [ "client" + b ] || e . document . body [ "client" + b ] : e . nodeType === 9 ? Math . max ( e . documentElement [ "client" + b ] , e . body [ "scroll" +
b ] , e . documentElement [ "scroll" + b ] , e . body [ "offset" + b ] , e . documentElement [ "offset" + b ] ) : f === w ? c . css ( e , d ) : this . css ( d , typeof f === "string" ? f : f + "px" ) } } ) ; A . jQuery = A . $ = c } ) ( window ) ;
/* ColorBox v1.3.6 - a full featured, light-weight, customizable lightbox based on jQuery 1.3 */
( function ( c ) { function r ( b , d ) { d = d === "x" ? m . width ( ) : m . height ( ) ; return typeof b === "string" ? Math . round ( b . match ( /%/ ) ? d / 100 * parseInt ( b , 10 ) : parseInt ( b , 10 ) ) : b } function M ( b ) { b = c . isFunction ( b ) ? b . call ( i ) : b ; return a . photo || b . match ( /\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i ) } function Y ( ) { for ( var b in a ) if ( c . isFunction ( a [ b ] ) && b . substring ( 0 , 2 ) !== "on" ) a [ b ] = a [ b ] . call ( i ) ; a . rel = a . rel || i . rel ; a . href = a . href || i . href ; a . title = a . title || i . title } function Z ( b ) { i = b ; a = c ( i ) . data ( q ) ; Y ( ) ; if ( a . rel && a . rel !== "nofollow" ) { g = c ( ".cboxElement" ) . filter ( function ( ) { return ( c ( this ) . data ( q ) . rel || this . rel ) === a . rel } ) ; j = g . index ( i ) ; if ( j < 0 ) { g = g . add ( i ) ; j = g . length - 1 } } else { g = c ( i ) ; j = 0 } if ( ! B ) { C = B = n ; N = i ; N . blur ( ) ; c ( document ) . bind ( "keydown.cbox_close" , function ( d ) { if ( d . keyCode === 27 ) { d . preventDefault ( ) ; e . close ( ) } } ) . bind ( "keydown.cbox_arrows" , function ( d ) { if ( g . length > 1 ) if ( d . keyCode === 37 ) { d . preventDefault ( ) ; D . click ( ) } else if ( d . keyCode === 39 ) { d . preventDefault ( ) ; E . click ( ) } } ) ; a . overlayClose && s . css ( { cursor : "pointer" } ) . one ( "click" , e . close ) ; c . event . trigger ( aa ) ; a . onOpen && a . onOpen . call ( i ) ; s . css ( { opacity : a . opacity } ) . show ( ) ; a . w = r ( a . initialWidth , "x" ) ; a . h = r ( a . initialHeight , "y" ) ; e . position ( 0 ) ; O && m . bind ( "resize.cboxie6 scroll.cboxie6" , function ( ) { s . css ( { width : m . width ( ) , height : m . height ( ) , top : m . scrollTop ( ) , left : m . scrollLeft ( ) } ) } ) . trigger ( "scroll.cboxie6" ) } P . add ( D ) . add ( E ) . add ( t ) . add ( Q ) . hide ( ) ; R . html ( a . close ) . show ( ) ; e . slideshow ( ) ; e . load ( ) } var q = "colorbox" , F = "hover" , n = true , e , x = ! c . support . opacity , O = x && ! window . XMLHttpRequest , aa = "cbox_open" , H = "cbox_load" , S = "cbox_complete" , T = "resize.cbox_resize" , s , k , u , p , U , V , W , X , g , m , l , I , J , K , Q , P , t , E , D , R , y , z , v , w , i , N , j , a , B , C , $ = { transition : "elastic" , speed : 350 , width : false , height : false , innerWidth : false , innerHeight : false , initialWidth : "400" , initialHeight : "400" , maxWidth : false , maxHeight : false , scalePhotos : n , scrolling : n , inline : false , html : false , iframe : false , photo : false , href : false , title : false , rel : false , opacity : 0.9 , preloading : n , current : "image {current} of {total}" , previous : "previous" , next : "next" , close : "close" , open : false , overlayClose : n , slideshow : false , slideshowAuto : n , slideshowSpeed : 2500 , slideshowStart : "start slideshow" , slideshowStop : "stop slideshow" , onOpen : false , onLoad : false , onComplete : false , onCleanup : false , onClosed : false } ; e = c . fn . colorbox = function ( b , d ) { var h = this ; if ( ! h . length ) if ( h . selector === "" ) { h = c ( "<a/>" ) ; b . open = n } else return this ; h . each ( function ( ) { var f = c . extend ( { } , c ( this ) . data ( q ) ? c ( this ) . data ( q ) : $ , b ) ; c ( this ) . data ( q , f ) . addClass ( "cboxElement" ) ; if ( d ) c ( this ) . data ( q ) . onComplete = d } ) ; b && b . open && Z ( h ) ; return this } ; e . init = function ( ) { function b ( d ) { return c ( '<div id="cbox' + d + '"/>' ) } m = c ( window ) ; k = c ( '<div id="colorbox"/>' ) ; s = b ( "Overlay" ) . hide ( ) ; u = b ( "Wrapper" ) ; p = b ( "Content" ) . append ( l = b ( "LoadedContent" ) . css ( { width : 0 , height : 0 } ) , J = b ( "LoadingOverlay" ) , K = b ( "LoadingGraphic" ) , Q = b ( "Title" ) , P = b ( "Current" ) , t = b ( "Slideshow" ) , E = b ( "Next" ) , D = b ( "Previous" ) , R = b ( "Close" ) ) ; u . append ( c ( "<div/>" ) . append ( b ( "TopLeft" ) , U = b ( "TopCenter" ) , b ( "TopRight" ) ) , c ( "<div/>" ) . append ( V = b ( "MiddleLeft" ) , p , W = b ( "MiddleRight" ) ) , c ( "<div/>" ) . append ( b ( "BottomLeft" ) , X = b ( "BottomCenter" ) , b ( "BottomRight" ) ) ) . children ( ) . children ( ) . css ( { "float" : "left" } ) ; I = c ( "<div style='position:absolute; top:0; left:0; width:9999px; height:0;'/>" ) ; c ( "body" ) . prepend ( s , k . append ( u , I ) ) ; if ( x ) { k . addClass ( "cboxIE" ) ; O && s . css ( "position" , "absolute" ) } p . children ( ) . bind ( "mouseover mouseout" , function ( ) { c ( this ) . toggleClass ( F ) } ) . addClass ( F ) ; y = U . height ( ) + X . height ( ) + p . outerHeight ( n ) - p . height ( ) ; z = V . width ( ) + W . width ( ) + p . outerWidth ( n ) - p . width ( ) ; v = l . outerHeight ( n ) ; w = l . outerWidth ( n ) ; k . css ( { "padding-bottom" : y , "padding-right" : z } ) . hide ( ) ; E . click ( e . next ) ; D . click ( e . prev ) ; R . click ( e . close ) ; p . children ( ) . removeClass ( F ) ; c ( ".cboxElement" ) . live ( "click" , function ( d ) { if ( d . button !== 0 && typeof d . button !== "undefined" ) return n ; else { Z ( this ) ; return false } } ) } ; e . position = function ( b , d ) { function h ( A ) { U [ 0 ] . style . width = X [ 0 ] . style . width = p [ 0 ] . style . width = A . style . width ; K [ 0 ] . style . height = J [ 0 ] . style . height = p [ 0 ] . style . height = V [ 0 ] . style . height = W [ 0 ] . style . height = A . style . height } var f = m . height ( ) ; f = Math . max ( f - a . h - v - y , 0 ) / 2 + m . scrollTop ( ) ; var o = Math . max ( document . documentElement . clientWidth - a . w - w - z , 0 ) / 2 + m . scrollLeft ( ) ; b = k
/ * *
* jQuery Cookie plugin 1.0
*
* Copyright ( c ) 2006 Klaus Hartl ( stilbuero . de )
* Dual licensed under the MIT and GPL licenses :
* http : //www.opensource.org/licenses/mit-license.php
* http : //www.gnu.org/licenses/gpl.html
*
* /
eval ( function ( p , a , c , k , e , d ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) { d [ e ( c ) ] = k [ c ] || e ( c ) } k = [ function ( e ) { return d [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) { if ( k [ c ] ) { p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) } } return p } ( 'o.5=B(9,b,2){6(h b!=\'E\'){2=2||{};6(b===n){b=\'\';2.3=-1}4 3=\'\';6(2.3&&(h 2.3==\'j\'||2.3.k)){4 7;6(h 2.3==\'j\'){7=w u();7.t(7.q()+(2.3*r*l*l*x))}m{7=2.3}3=\'; 3=\'+7.k()}4 8=2.8?\'; 8=\'+(2.8):\'\';4 a=2.a?\'; a=\'+(2.a):\'\';4 c=2.c?\'; c\':\'\';d.5=[9,\'=\',C(b),3,8,a,c].y(\'\')}m{4 e=n;6(d.5&&d.5!=\'\'){4 g=d.5.A(\';\');s(4 i=0;i<g.f;i++){4 5=o.z(g[i]);6(5.p(0,9.f+1)==(9+\'=\')){e=D(5.p(9.f+1));v}}}F e}};' , 42 , 42 , '||options|expires|var|cookie|if|date|path|name|domain|value|secure|document|cookieValue|length|cookies|typeof||number|toUTCString|60|else|null|jQuery|substring|getTime|24|for|setTime|Date|break|new|1000|join|trim|split|function|encodeURIComponent|decodeURIComponent|undefined|return' . split ( '|' ) , 0 , { } ) )
/ * *
* jQuery hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* < http : //cherne.net/brian/resources/jquery.hoverIntent.html>
*
* @ param f onMouseOver function || An object with configuration options
* @ param g onMouseOut function || Nothing ( use configuration options object )
* @ author Brian Cherne < brian @ cherne . net >
* /
eval ( function ( p , a , c , k , e , d ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) { d [ e ( c ) ] = k [ c ] || e ( c ) } k = [ function ( e ) { return d [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) { if ( k [ c ] ) { p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) } } return p } ( '(6($){$.J.K=6(f,g){8 5={y:7,l:I,H:0};5=$.u(5,g?{v:f,z:g}:f);8 d,b,k,i;8 h=6(3){d=3.G;b=3.B};8 m=6(3,2){2.4=o(2.4);9((w.x(k-d)+w.x(i-b))<5.y){$(2).D("n",h);2.j=1;c 5.v.t(2,[3])}E{k=d;i=b;2.4=r(6(){m(3,2)},5.l)}};8 C=6(3,2){2.4=o(2.4);2.j=0;c 5.z.t(2,[3])};8 q=6(e){8 p=(e.A=="s"?e.N:e.U)||e.T;R(p&&p!=a){S{p=p.O}P(e){p=a}}9(p==a){c Q}8 3=F.u({},e);8 2=a;9(2.4){2.4=o(2.4)}9(e.A=="s"){k=3.G;i=3.B;$(2).M("n",h);9(2.j!=1){2.4=r(6(){m(3,2)},5.l)}}E{$(2).D("n",h);9(2.j==1){2.4=r(6(){C(3,2)},5.H)}}};c a.s(q).L(q)}})(F);' , 57 , 57 , '||ob|ev|hoverIntent_t|cfg|function||var|if|this|cY|return|cX||||track|pY|hoverIntent_s|pX|interval|compare|mousemove|clearTimeout||handleHover|setTimeout|mouseover|apply|extend|over|Math|abs|sensitivity|out|type|pageY|delay|unbind|else|jQuery|pageX|timeout|100|fn|hoverIntent|mouseout|bind|fromElement|parentNode|catch|false|while|try|relatedTarget|toElement' . split ( '|' ) , 0 , { } ) )
/*! jQuery LiveQuery Copyright (c) 2008 Brandon Aaron (http:/ / brandonaaron . net )
* Dual licensed under the MIT ( http : //www.opensource.org/licenses/mit-license.php)
* and GPL ( http : //www.opensource.org/licenses/gpl-license.php) licenses.
*
* Version : 1.0 . 3
* Requires jQuery 1.1 . 3 +
* Docs : http : //docs.jquery.com/Plugins/livequery
* /
eval ( function ( p , a , c , k , e , d ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) { d [ e ( c ) ] = k [ c ] || e ( c ) } k = [ function ( e ) { return d [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) { if ( k [ c ] ) { p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) } } return p } ( '(5($){$.T($.4,{3:5(6,4,8){g t=2,q;7($.N(6))8=4,4=6,6=C;$.h($.3.j,5(i,9){7(t.d==9.d&&t.f==9.f&&6==9.6&&(!4||4.$e==9.4.$e)&&(!8||8.$e==9.8.$e))k(q=9)&&z});q=q||U $.3(2.d,2.f,6,4,8);q.A=z;q.v();k 2},W:5(6,4,8){g t=2;7($.N(6))8=4,4=6,6=C;$.h($.3.j,5(i,9){7(t.d==9.d&&t.f==9.f&&(!6||6==9.6)&&(!4||4.$e==9.4.$e)&&(!8||8.$e==9.8.$e)&&!2.A)$.3.B(9.b)});k 2}});$.3=5(d,f,6,4,8){2.d=d;2.f=f||O;2.6=6;2.4=4;2.8=8;2.u=[];2.A=z;2.b=$.3.j.I(2)-1;4.$e=4.$e||$.3.H++;7(8)8.$e=8.$e||$.3.H++;k 2};$.3.p={B:5(){g 9=2;7(2.6)2.u.12(2.6,2.4);G 7(2.8)2.u.h(5(i,m){9.8.x(m)});2.u=[];2.A=P},v:5(){7(2.A)k;g 9=2;g o=2.u,w=$(2.d,2.f),J=w.Z(o);2.u=w;7(2.6){J.10(2.6,2.4);7(o.s>0)$.h(o,5(i,m){7($.D(m,w)<0)$.Y.Q(m,9.6,9.4)})}G{J.h(5(){9.4.x(2)});7(2.8&&o.s>0)$.h(o,5(i,m){7($.D(m,w)<0)9.8.x(m)})}}};$.T($.3,{H:0,j:[],l:[],F:z,E:11,S:5(){7($.3.F&&$.3.l.s){g s=$.3.l.s;X(s--)$.3.j[$.3.l.V()].v()}},16:5(){$.3.F=z},R:5(){$.3.F=P;$.3.v()},L:5(){$.h(K,5(i,n){7(!$.4[n])k;g M=$.4[n];$.4[n]=5(){g r=M.x(2,K);$.3.v();k r}})},v:5(b){7(b!=C){7($.D(b,$.3.l)<0)$.3.l.I(b)}G $.h($.3.j,5(b){7($.D(b,$.3.l)<0)$.3.l.I(b)});7($.3.E)1f($.3.E);$.3.E=13($.3.S,1h)},B:5(b){7(b!=C)$.3.j[b].B();G $.h($.3.j,5(b){$.3.j[b].B()})}});$.3.L(\'1j\',\'1k\',\'1g\',\'1d\',\'17\',\'1e\',\'15\',\'14\',\'18\',\'19\',\'1c\',\'Q\');$(5(){$.3.R()});g y=$.p.y;$.p.y=5(a,c){g r=y.x(2,K);7(a&&a.d)r.f=a.f,r.d=a.d;7(1b a==\'1a\')r.f=c||O,r.d=a;k r};$.p.y.p=$.p})(1i);' , 62 , 83 , '||this|livequery|fn|function|type|if|fn2|query||id||selector|lqguid|context|var|each||queries|return|queue|el||oEls|prototype|||length|self|elements|run|els|apply|init|false|stopped|stop|undefined|inArray|timeout|running|else|guid|push|nEls|arguments|registerPlugin|old|isFunction|document|true|remove|play|checkQueue|extend|new|shift|expire|while|event|not|bind|null|unbind|setTimeout|addClass|removeAttr|pause|wrap|removeClass|toggleClass|string|typeof|empty|before|attr|clearTimeout|after|20|jQuery|append|prepend' . split ( '|' ) , 0 , { } ) )
/ * *
* Pagination jQuery plugin -- with modifications by pairofdimes , where noted
*
* @ author Gabriel Birke ( birke * at * d - scribe * dot * de )
* @ version 1.2
* /
jQuery . fn . pagination = function ( maxentries , opts ) {
opts = jQuery . extend ( {
items_per_page : 10 ,
num_display_entries : 10 ,
current_page : 0 ,
num_edge_entries : 0 ,
link_to : "#" ,
prev_text : "Prev" ,
next_text : "Next" ,
ellipse_text : "..." ,
prev_show_always : true ,
next_show_always : true ,
callback : function ( ) { return false ; }
} , opts || { } ) ;
return this . each ( function ( ) {
/ * *
* Calculate the maximum number of pages
* /
function numPages ( ) {
return Math . ceil ( maxentries / opts . items_per_page ) ;
}
/ * *
* Calculate start and end point of pagination links depending on
* current_page and num_display_entries .
* @ return { Array }
* /
function getInterval ( ) {
var ne_half = Math . ceil ( opts . num_display_entries / 2 ) ;
var np = numPages ( ) ;
var upper_limit = np - opts . num_display_entries ;
var start = current_page > ne_half ? Math . max ( Math . min ( current_page - ne_half , upper_limit ) , 0 ) : 0 ;
var end = current_page > ne_half ? Math . min ( current_page + ne_half , np ) : Math . min ( opts . num_display_entries , np ) ;
return [ start , end ] ;
}
/ * *
* This is the event handling function for the pagination links .
* @ param { int } page_id The new page number
* /
function pageSelected ( page_id , evt ) {
current_page = page_id ;
drawLinks ( ) ;
var continuePropagation = opts . callback ( page_id , panel ) ;
if ( ! continuePropagation ) {
if ( evt . stopPropagation ) {
evt . stopPropagation ( ) ;
}
else {
evt . cancelBubble = true ;
}
}
return continuePropagation ;
}
/ * *
* This function inserts the pagination links into the container element
* /
function drawLinks ( ) {
panel . empty ( ) ;
var interval = getInterval ( ) ;
var np = numPages ( ) ;
// This helper function returns a handler function that calls pageSelected with the right page_id
var getClickHandler = function ( page_id ) {
return function ( evt ) { return pageSelected ( page_id , evt ) ; }
}
// Helper function for generating a single link (or a span tag if it's the current page)
var appendItem = function ( page_id , appendopts ) {
page_id = page_id < 0 ? 0 : ( page_id < np ? page_id : np - 1 ) ; // Normalize page id to sane value
appendopts = jQuery . extend ( { text : page_id + 1 , classes : "" } , appendopts || { } ) ;
if ( page_id == current_page ) {
var lnk = jQuery ( "<span class='current loading'>" + ( appendopts . text ) + "</span>" ) ; // modification by pairofdimes
}
else
{
var lnk = jQuery ( "<a>" + ( appendopts . text ) + "</a>" )
. bind ( "click" , getClickHandler ( page_id ) )
; //.attr('href', opts.link_to.replace(/__id__/,page_id)); // modification by pairofdimes
}
if ( appendopts . classes ) { lnk . addClass ( appendopts . classes ) ; }
panel . append ( lnk ) ;
}
// Generate "Previous"-Link
if ( opts . prev_text && ( current_page > 0 || opts . prev_show_always ) ) {
appendItem ( current_page - 1 , { text : opts . prev_text , classes : "prev" } ) ;
}
// Generate starting points
if ( interval [ 0 ] > 0 && opts . num_edge_entries > 0 )
{
var end = Math . min ( opts . num_edge_entries , interval [ 0 ] ) ;
for ( var i = 0 ; i < end ; i ++ ) {
appendItem ( i ) ;
}
if ( opts . num_edge_entries < interval [ 0 ] && opts . ellipse_text )
{
jQuery ( "<span>" + opts . ellipse_text + "</span>" ) . appendTo ( panel ) ;
}
}
// Generate interval links
for ( var i = interval [ 0 ] ; i < interval [ 1 ] ; i ++ ) {
appendItem ( i ) ;
}
// Generate ending points
if ( interval [ 1 ] < np && opts . num_edge_entries > 0 )
{
if ( np - opts . num_edge_entries > interval [ 1 ] && opts . ellipse_text )
{
jQuery ( "<span>" + opts . ellipse_text + "</span>" ) . appendTo ( panel ) ;
}
var begin = Math . max ( np - opts . num_edge_entries , interval [ 1 ] ) ;
for ( var i = begin ; i < np ; i ++ ) {
appendItem ( i ) ;
}
}
// Generate "Next"-Link
if ( opts . next_text && ( current_page < np - 1 || opts . next_show_always ) ) {
appendItem ( current_page + 1 , { text : opts . next_text , classes : "next" } ) ;
}
}
// Extract current_page from options
var current_page = opts . current_page ;
// Create a sane value for maxentries and items_per_page
maxentries = ( ! maxentries || maxentries < 0 ) ? 1 : maxentries ;
opts . items_per_page = ( ! opts . items_per_page || opts . items_per_page < 0 ) ? 1 : opts . items_per_page ;
// Store DOM element for easy access from all inner functions
var panel = jQuery ( this ) ;
// Attach control functions to the DOM element
this . selectPage = function ( page_id ) { pageSelected ( page_id ) ; }
this . prevPage = function ( ) {
if ( current_page > 0 ) {
pageSelected ( current_page - 1 ) ;
return true ;
}
else {
return false ;
}
}
this . nextPage = function ( ) {
if ( current_page < numPages ( ) - 1 ) {
pageSelected ( current_page + 1 ) ;
return true ;
}
else {
return false ;
}
}
// When all initialisation is done, draw the links
drawLinks ( ) ;
// call callback function
//opts.callback(current_page, this); // modification by pairofdimes
} ) ;
}
/ *
* Superfish v1 . 4.8 - jQuery menu widget
* Copyright ( c ) 2008 Joel Birch
*
* Dual licensed under the MIT and GPL licenses :
* http : //www.opensource.org/licenses/mit-license.php
* http : //www.gnu.org/licenses/gpl.html
*
* CHANGELOG : http : //users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
* /
eval ( function ( p , a , c , k , e , d ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) { d [ e ( c ) ] = k [ c ] || e ( c ) } k = [ function ( e ) { return d [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) { if ( k [ c ] ) { p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) } } return p } ( ';(3($){$.h.F=3(b){8 2=$.h.F,c=2.c,$S=$([\'<Q 1t="\',c.O,\'"> s;</Q>\'].f(\'\')),t=3(){8 $$=$(4),9=z($$);X(9.y);$$.10().1u().q()},I=3(){8 $$=$(4),9=z($$),o=2.b;X(9.y);9.y=1v(3(){o.x=($.1y($$[0],o.$k)>-1);$$.q();p(o.$k.G&&$$.J([\'d.\',o.g].f(\'\')).G<1){t.e(o.$k)}},o.1g)},z=3($9){8 9=$9.J([\'5.\',c.C,\':N\'].f(\'\'))[0];2.b=2.o[9.W];l 9},R=3($a){$a.u(c.M).1q($S.1i())};l 4.j(3(){8 s=4.W=2.o.G;8 o=$.12({},2.Y,b);o.$k=$(\'d.\'+o.B,4).1l(0,o.K).j(3(){$(4).u([o.g,c.D].f(\' \')).1n(\'d:T(5)\').Z(o.B)});2.o[s]=2.b=o;$(\'d:T(5)\',4)[($.h.P&&!o.13)?\'P\':\'1o\'](t,I).j(3(){p(o.1d)R($(\'>a:N-1M\',4))}).m(\'.\'+c.D).q();8 $a=$(\'a\',4);$a.j(3(i){8 $d=$a.U(i).J(\'d\');$a.U(i).1N(3(){t.e($d)}).1J(3(){I.e($d)})});o.14.e(4)}).j(3(){E=[c.C];p(2.b.A&&!($.n.V&&$.n.L<7))E.1D(c.r);$(4).u(E.f(\' \'))})};8 2=$.h.F;2.o=[];2.b={};2.H=3(){8 o=2.b;p($.n.V&&$.n.L>6&&o.A&&o.v.1f!=1G)4.1z(2.c.r+\'-15\')};2.c={D:\'2-1I\',C:\'2-1E-1B\',M:\'2-1O-5\',O:\'2-1p-1m\',r:\'2-1k\'};2.Y={g:\'1w\',B:\'1r\',K:1,1g:1A,v:{1f:\'1F\'},17:\'1H\',1d:w,A:w,13:11,14:3(){},19:3(){},18:3(){},1e:3(){}};$.h.12({q:3(){8 o=2.b,m=(o.x===w)?o.$k:\'\';o.x=11;8 $5=$([\'d.\',o.g].f(\'\'),4).1C(4).m(m).Z(o.g).16(\'>5\').1K().1c(\'1a\',\'1b\');o.1e.e($5);l 4},10:3(){8 o=2.b,1L=2.c.r+\'-15\',$5=4.u(o.g).16(\'>5:1b\').1c(\'1a\',\'1j\');2.H.e($5);o.19.e($5);$5.1x(o.v,o.17,3(){2.H.e($5);o.18.e($5)});l 4}})})(1h);' , 62 , 113 , '||sf|function|this|ul|||var|menu||op||li|call|join|hoverClass|fn||each|path|return|not|browser||if|hideSuperfishUl|shadowClass||over|addClass|animation|true|retainPath|sfTimer|getMenu|dropShadows|pathClass|menuClass|bcClass|menuClasses|superfish|length|IE7fix|out|parents|pathLevels|version|anchorClass|first|arrowClass|hoverIntent|span|addArrow|arrow|has|eq|msie|serial|clearTimeout|defaults|removeClass|showSuperfishUl|false|extend|disableHI|onInit|off|find|speed|onShow|onBeforeShow|visibility|hidden|css|autoArrows|onHide|opacity|delay|jQuery|clone|visible|shadow|slice|indicator|filter|hover|sub|append|overideThisToUse|187|class|siblings|setTimeout|sfHover|animate|inArray|toggleClass|800|enabled|add|push|js|show|undefined|normal|breadcrumb|blur|hide|sh|child|focus|with' . split ( '|' ) , 0 , { } ) )
/ * *
* TableDnD plug - in for JQuery , allows you to drag and drop table rows
* You can set up various options to control how the system will work
* Copyright ( c ) Denis Howlett < denish @ isocra . com >
* Licensed like jQuery , see http : //docs.jquery.com/License.
*
* /
eval ( function ( p , a , c , k , e , d ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) { d [ e ( c ) ] = k [ c ] || e ( c ) } k = [ function ( e ) { return d [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) { if ( k [ c ] ) { p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) } } return p } ( '1.3={j:f,h:f,G:f,F:0,1x:a(1p){8.z(a(){8.k=1.1A({1m:f,1r:f,v:"1C",12:f,t:f,w:5,15:/[^\\-]*$/,1N:f,N:f},1p||{});1.3.O(8)});1(g).1s(\'V\',1.3.V).1s(\'Z\',1.3.Z);9 8},O:a(c){4 7=c.k;6(c.k.N){4 1u=1("1J."+c.k.N,c);1u.z(a(){1(8).1l(a(b){1.3.h=8.Y;1.3.j=c;1.3.G=1.3.Q(8,b);6(7.t){7.t(c,8)}9 L})})}m{4 l=1("1H",c);l.z(a(){4 d=1(8);6(!d.1t("1K")){d.1l(a(b){6(b.P.1F=="1E"){1.3.h=8;1.3.j=c;1.3.G=1.3.Q(8,b);6(7.t){7.t(c,8)}9 L}}).11("1M","1L")}})}},1D:a(){8.z(a(){6(8.k){1.3.O(8)}})},U:a(b){6(b.1k||b.1h){9{x:b.1k,y:b.1h}}9{x:b.1z+g.o.1B-g.o.1w,y:b.1y+g.o.S-g.o.1G}},Q:a(P,b){b=b||q.23;4 X=8.C(P);4 p=8.U(b);9{x:p.x-X.x,y:p.y-X.y}},C:a(e){4 K=0;4 I=0;6(e.E==0){e=e.M}21(e.1f){K+=e.1e;I+=e.1g;e=e.1f}K+=e.1e;I+=e.1g;9{x:K,y:I}},V:a(b){6(1.3.h==f){9}4 D=1(1.3.h);4 7=1.3.j.k;4 p=1.3.U(b);4 y=p.y-1.3.G.y;4 u=q.27;6(g.26){6(18 g.17!=\'1b\'&&g.17!=\'24\'){u=g.T.S}m 6(18 g.o!=\'1b\'){u=g.o.S}}6(p.y-u<7.w){q.1v(0,-7.w)}m{4 1j=q.1a?q.1a:g.T.W?g.T.W:g.o.W;6(1j-(p.y-u)<7.w){q.1v(0,7.w)}}6(y!=1.3.F){4 R=y>1.3.F;1.3.F=y;6(7.v){D.1X(7.v)}m{D.11(7.1m)}4 r=1.3.1o(D,y);6(r){6(R&&1.3.h!=r){1.3.h.Y.1q(1.3.h,r.1W)}m 6(!R&&1.3.h!=r){1.3.h.Y.1q(1.3.h,r)}}}9 L},1o:a(16,y){4 l=1.3.j.l;1d(4 i=0;i<l.10;i++){4 d=l[i];4 B=8.C(d).y;4 H=1n(d.E)/2;6(d.E==0){B=8.C(d.M).y;H=1n(d.M.E)/2}6((y>B-H)&&(y<(B+H))){6(d==16){9 f}4 7=1.3.j.k;6(7.1i){6(7.1i(16,d)){9 d}m{9 f}}m{4 13=1(d).1t("13");6(!13){9 d}m{9 f}}9 d}}9 f},Z:a(e){6(1.3.j&&1.3.h){4 A=1.3.h;4 7=1.3.j.k;6(7.v){1(A).1V(7.v)}m{1(A).11(7.1r)}1.3.h=f;6(7.12){7.12(1.3.j,A)}1.3.j=f}},1Y:a(){6(1.3.j){9 1.3.14(1.3.j)}m{9"1U: 1T 1P J 19, 1Q 1R 20 19 1S J 1Z 28 c 25 1O d"}},14:a(c){4 n="";4 1c=c.J;4 l=c.l;1d(4 i=0;i<l.10;i++){6(n.10>0)n+="&";4 s=l[i].J;6(s&&s&&c.k&&c.k.15){s=s.22(c.k.15)[0]}n+=1c+\'[]=\'+s}9 n},1I:a(){4 n="";8.z(a(){n+=1.3.14(8)});9 n}}' , 62 , 133 , '|jQuery||tableDnD|var||if|config|this|return|function|ev|table|row||null|document|dragObject||currentTable|tableDnDConfig|rows|else|result|body|mousePos|window|currentRow|rowId|onDragStart|yOffset|onDragClass|scrollAmount|||each|droppedRow|rowY|getPosition|dragObj|offsetHeight|oldY|mouseOffset|rowHeight|top|id|left|false|firstChild|dragHandle|makeDraggable|target|getMouseOffset|movingDown|scrollTop|documentElement|mouseCoords|mousemove|clientHeight|docPos|parentNode|mouseup|length|css|onDrop|nodrop|serializeTable|serializeRegexp|draggedRow|compatMode|typeof|set|innerHeight|undefined|tableId|for|offsetLeft|offsetParent|offsetTop|pageY|onAllowDrop|windowHeight|pageX|mousedown|onDragStyle|parseInt|findDropTargetRow|options|insertBefore|onDropStyle|bind|hasClass|cells|scrollBy|clientLeft|build|clientY|clientX|extend|scrollLeft|tDnD_whileDrag|updateTables|TD|tagName|clientTop|tr|serializeTables|td|nodrag|move|cursor|serializeParamName|every|Table|you|need|an|No|Error|removeClass|nextSibling|addClass|serialize|on|to|while|match|event|BackCompat|and|all|pageYOffset|your' . split ( '|' ) , 0 , { } ) )
jQuery . fn . extend ( { tableDnD : jQuery . tableDnD . build , tableDnDUpdate : jQuery . tableDnD . updateTables , tableDnDSerialize : jQuery . tableDnD . serializeTables } ) ;
/ *
* jQuery Tooltip plugin 1.3
*
* http : //bassistance.de/jquery-plugins/jquery-plugin-tooltip/
* http : //docs.jquery.com/Plugins/Tooltip
*
* Copyright ( c ) 2006 - 2008 Jörn Zaefferer
*
* $Id : jquery . tooltip . js 5741 2008 - 06 - 21 15 : 22 : 16 Z joern . zaefferer $
*
* Dual licensed under the MIT and GPL licenses :
* http : //www.opensource.org/licenses/mit-license.php
* http : //www.gnu.org/licenses/gpl.html
* /
eval ( function ( p , a , c , k , e , r ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) r [ e ( c ) ] = k [ c ] || e ( c ) ; k = [ function ( e ) { return r [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) if ( k [ c ] ) p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) ; return p } ( ';(8($){j e={},9,m,B,A=$.2u.2g&&/29\\s(5\\.5|6\\.)/.1M(1H.2t),M=12;$.k={w:12,1h:{Z:25,r:12,1d:19,X:"",G:15,E:15,16:"k"},2s:8(){$.k.w=!$.k.w}};$.N.1v({k:8(a){a=$.1v({},$.k.1h,a);1q(a);g 2.F(8(){$.1j(2,"k",a);2.11=e.3.n("1g");2.13=2.m;$(2).24("m");2.22=""}).21(1e).1U(q).1S(q)},H:A?8(){g 2.F(8(){j b=$(2).n(\'Y\');4(b.1J(/^o\\(["\']?(.*\\.1I)["\']?\\)$/i)){b=1F.$1;$(2).n({\'Y\':\'1D\',\'1B\':"2r:2q.2m.2l(2j=19, 2i=2h, 1p=\'"+b+"\')"}).F(8(){j a=$(2).n(\'1o\');4(a!=\'2f\'&&a!=\'1u\')$(2).n(\'1o\',\'1u\')})}})}:8(){g 2},1l:A?8(){g 2.F(8(){$(2).n({\'1B\':\'\',Y:\'\'})})}:8(){g 2},1x:8(){g 2.F(8(){$(2)[$(2).D()?"l":"q"]()})},o:8(){g 2.1k(\'28\')||2.1k(\'1p\')}});8 1q(a){4(e.3)g;e.3=$(\'<t 16="\'+a.16+\'"><10></10><t 1i="f"></t><t 1i="o"></t></t>\').27(K.f).q();4($.N.L)e.3.L();e.m=$(\'10\',e.3);e.f=$(\'t.f\',e.3);e.o=$(\'t.o\',e.3)}8 7(a){g $.1j(a,"k")}8 1f(a){4(7(2).Z)B=26(l,7(2).Z);p l();M=!!7(2).M;$(K.f).23(\'W\',u);u(a)}8 1e(){4($.k.w||2==9||(!2.13&&!7(2).U))g;9=2;m=2.13;4(7(2).U){e.m.q();j a=7(2).U.1Z(2);4(a.1Y||a.1V){e.f.1c().T(a)}p{e.f.D(a)}e.f.l()}p 4(7(2).18){j b=m.1T(7(2).18);e.m.D(b.1R()).l();e.f.1c();1Q(j i=0,R;(R=b[i]);i++){4(i>0)e.f.T("<1P/>");e.f.T(R)}e.f.1x()}p{e.m.D(m).l();e.f.q()}4(7(2).1d&&$(2).o())e.o.D($(2).o().1O(\'1N://\',\'\')).l();p e.o.q();e.3.P(7(2).X);4(7(2).H)e.3.H();1f.1L(2,1K)}8 l(){B=S;4((!A||!$.N.L)&&7(9).r){4(e.3.I(":17"))e.3.Q().l().O(7(9).r,9.11);p e.3.I(\':1a\')?e.3.O(7(9).r,9.11):e.3.1G(7(9).r)}p{e.3.l()}u()}8 u(c){4($.k.w)g;4(c&&c.1W.1X=="1E"){g}4(!M&&e.3.I(":1a")){$(K.f).1b(\'W\',u)}4(9==S){$(K.f).1b(\'W\',u);g}e.3.V("z-14").V("z-1A");j b=e.3[0].1z;j a=e.3[0].1y;4(c){b=c.2o+7(9).E;a=c.2n+7(9).G;j d=\'1w\';4(7(9).2k){d=$(C).1r()-b;b=\'1w\'}e.3.n({E:b,14:d,G:a})}j v=z(),h=e.3[0];4(v.x+v.1s<h.1z+h.1n){b-=h.1n+20+7(9).E;e.3.n({E:b+\'1C\'}).P("z-14")}4(v.y+v.1t<h.1y+h.1m){a-=h.1m+20+7(9).G;e.3.n({G:a+\'1C\'}).P("z-1A")}}8 z(){g{x:$(C).2e(),y:$(C).2d(),1s:$(C).1r(),1t:$(C).2p()}}8 q(a){4($.k.w)g;4(B)2c(B);9=S;j b=7(2);8 J(){e.3.V(b.X).q().n("1g","")}4((!A||!$.N.L)&&b.r){4(e.3.I(\':17\'))e.3.Q().O(b.r,0,J);p e.3.Q().2b(b.r,J)}p J();4(7(2).H)e.3.1l()}})(2a);' , 62 , 155 , '||this|parent|if|||settings|function|current||||||body|return|||var|tooltip|show|title|css|url|else|hide|fade||div|update||blocked|||viewport|IE|tID|window|html|left|each|top|fixPNG|is|complete|document|bgiframe|track|fn|fadeTo|addClass|stop|part|null|append|bodyHandler|removeClass|mousemove|extraClass|backgroundImage|delay|h3|tOpacity|false|tooltipText|right||id|animated|showBody|true|visible|unbind|empty|showURL|save|handle|opacity|defaults|class|data|attr|unfixPNG|offsetHeight|offsetWidth|position|src|createHelper|width|cx|cy|relative|extend|auto|hideWhenEmpty|offsetTop|offsetLeft|bottom|filter|px|none|OPTION|RegExp|fadeIn|navigator|png|match|arguments|apply|test|http|replace|br|for|shift|click|split|mouseout|jquery|target|tagName|nodeType|call||mouseover|alt|bind|removeAttr|200|setTimeout|appendTo|href|MSIE|jQuery|fadeOut|clearTimeout|scrollTop|scrollLeft|absolute|msie|crop|sizingMethod|enabled|positionLeft|AlphaImageLoader|Microsoft|pageY|pageX|height|DXImageTransform|progid|block|userAgent|browser' . split ( '|' ) , 0 , { } ) )
/ * *
*
* AJAX IFRAME METHOD ( AIM )
* http : //www.webtoolkit.info/
*
* Copyright ( c ) 2006 - 2008 www . webtoolkit . info
* Licensed under Gnu Public Licence V3 or higher .
* http : //www.gnu.org/licenses/gpl.html
* * /
eval ( function ( p , a , c , k , e , d ) { e = function ( c ) { return ( c < a ? '' : e ( parseInt ( c / a ) ) ) + ( ( c = c % a ) > 35 ? String . fromCharCode ( c + 29 ) : c . toString ( 36 ) ) } ; if ( ! '' . replace ( /^/ , String ) ) { while ( c -- ) { d [ e ( c ) ] = k [ c ] || e ( c ) } k = [ function ( e ) { return d [ e ] } ] ; e = function ( ) { return '\\w+' } ; c = 1 } ; while ( c -- ) { if ( k [ c ] ) { p = p . replace ( new RegExp ( '\\b' + e ( c ) + '\\b' , 'g' ) , k [ c ] ) } } return p } ( '6={h:0(c){1 n=\'f\'+k.z(k.w()*u);1 d=3.y(\'C\');d.e=\'<o B="D:t" x="g:s" 7="\'+n+\'" 8="\'+n+\'" v="6.p(\\\'\'+n+\'\\\')"></o>\';3.j.A(d);1 i=3.m(n);2(c&&a(c.4)==\'0\'){i.4=c.4}5 n},l:0(f,8){f.J(\'K\',8)},I:0(f,c){6.l(f,6.h(c));2(c&&a(c.b)==\'0\'){5 c.b()}9{5 E}},p:0(7){1 i=3.m(7);2(i.q){1 d=i.q}9 2(i.r){1 d=i.r.3}9{1 d=G.L[7].3}2(d.F.H=="g:s"){5}2(a(i.4)==\'0\'){i.4(d.j.e)}}}' , 48 , 48 , 'function|var|if|document|onComplete|return|AIM|id|name|else|typeof|onStart|||innerHTML||about|frame||body|Math|form|getElementById||iframe|loaded|contentDocument|contentWindow|blank|none|99999|onload|random|src|createElement|floor|appendChild|style|DIV|display|true|location|window|href|submit|setAttribute|target|frames' . split ( '|' ) , 0 , { } ) )
// ***************************************************************
// Plush main code as follows, by pairofdimes (see LICENSE-CC.txt)
jQuery ( function ( $ ) { // safely invoke $ selector
$ . plush = { // object definition
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Plush defaults
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
refreshRate : $ . cookie ( 'refreshRate' ) ? $ . cookie ( 'refreshRate' ) : 30 , // refresh rate in seconds
queuePerPage : $ . cookie ( 'queuePerPage' ) ? $ . cookie ( 'queuePerPage' ) : 10 , // pagination - nzbs per page
histPerPage : $ . cookie ( 'histPerPage' ) ? $ . cookie ( 'histPerPage' ) : 10 , // pagination - nzbs per page
confirmDeleteQueue : $ . cookie ( 'confirmDeleteQueue' ) == 0 ? false : true , // confirm queue nzb removal
confirmDeleteHistory : $ . cookie ( 'confirmDeleteHistory' ) == 0 ? false : true , // confirm history nzb removal
blockRefresh : $ . cookie ( 'blockRefresh' ) == 0 ? false : true , // prevent refreshing when hovering queue
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
$ . plush . refreshQueue ( ) -- fetch HTML data from queue . tmpl , make updates throughout interface
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
refreshQueue : function ( page ) {
// Skip refresh if cursor hovers queue, to prevent annoyance
if ( $ . plush . blockRefresh && $ . plush . skipRefresh ) {
$ ( '#manual_refresh_wrapper' ) . addClass ( 'refresh_skipped' ) ;
return false ;
}
// no longer a need for a pending queue refresh (associated with nzb deletions)
$ . plush . pendingQueueRefresh = false ;
// Deal with pagination for start/limit
if ( typeof ( page ) == 'undefined' || page == "ok\n" || page < 0 )
page = $ . plush . queuecurpage ;
else if ( page != $ . plush . queuecurpage )
$ . plush . queuecurpage = page ;
// Refresh state notification
$ ( '#manual_refresh_wrapper' ) . removeClass ( 'refresh_skipped' ) . addClass ( 'refreshing' ) ;
// Fetch updated content from queue.tmpl
$ . ajax ( {
type : "POST" ,
url : "queue/" ,
data : { start : ( page * $ . plush . queuePerPage ) , limit : $ . plush . queuePerPage } ,
success : function ( result ) {
// Replace queue contents with queue.tmpl -- this file also sets several stat vars via javascript
$ ( '#queue' ) . html ( result ) ;
// Refresh state notification
$ ( '#manual_refresh_wrapper' ) . removeClass ( 'refreshing' ) ;
// Tooltips
$ ( '#time-left' ) . attr ( 'title' , $ . plush . eta ) ;
$ ( '#time-left, #queueTable tr .download-title a' ) . tooltip ( {
extraClass : "tooltip" ,
showURL : false ,
track : true
} ) ;
// Speed limit selector
if ( $ ( "#maxSpeed-option" ) . val ( ) != $ . plush . speedlimit && ! $ . plush . focusedOnSpeedChanger )
$ ( "#maxSpeed-option" ) . val ( $ . plush . speedlimit ) ;
// Completion script selector
if ( $ ( "#onQueueFinish-option" ) . val ( ) != $ . plush . finishaction )
$ ( "#onQueueFinish-option" ) . val ( $ . plush . finishaction ) ;
// Pause/resume button state
if ( $ . plush . paused && ! $ ( '#pause_resume' ) . hasClass ( 'sprite_q_pause_on' ) )
$ ( '#pause_resume' ) . removeClass ( 'sprite_q_pause' ) . addClass ( 'sprite_q_pause_on' ) ;
else if ( ! $ . plush . paused && ! $ ( '#pause_resume' ) . hasClass ( 'sprite_q_pause' ) )
$ ( '#pause_resume' ) . removeClass ( 'sprite_q_pause_on' ) . addClass ( 'sprite_q_pause' ) ;
// Pause interval
( $ . plush . pause_int == "0" ) ? $ ( '#pause_int' ) . html ( "" ) : $ ( '#pause_int' ) . html ( $ . plush . pause_int ) ;
// ETA/speed stats at top of queue
if ( $ . plush . queuenoofslots < 1 )
$ ( '#stats_speed, #stats_eta' ) . html ( '—' ) ;
else if ( $ . plush . kbpersec < 1 && $ . plush . paused )
$ ( '#stats_speed, #stats_eta' ) . html ( '—' ) ;
else {
$ ( '#stats_speed' ) . html ( $ . plush . speed + "B/s" ) ;
$ ( '#stats_eta' ) . html ( $ . plush . timeleft ) ;
}
// Update bottom right stats
$ ( '#queue_stats' ) . html ( $ . plush . queuestats ) ;
// Update warnings count/latest warning text in main menu
$ ( '#have_warnings' ) . html ( '(' + $ . plush . have_warnings + ')' ) ;
$ ( '#last_warning' ) . attr ( 'title' , $ . plush . last_warning ) . tooltip ( {
extraClass : "tooltip" ,
track : true ,
showURL : false
} ) ;
// Remove spinner graphic from pagination
$ ( '#queue-pagination span' ) . removeClass ( 'loading' ) ;
// *** don't forget the live() & livequery() methods defined in $.plush.initEvents() ***
} ,
error : function ( ) {
// Failed refresh notification
$ ( '#manual_refresh_wrapper' ) . addClass ( 'refresh_skipped' ) ;
}
} ) ;
} , // end $.plush.refreshQueue()
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
$ . plush . refreshHistory ( ) -- fetch HTML data from history . tmpl
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
refreshHistory : function ( page ) {
if ( $ . plush . modalOpen ) // Skip refreshing when modal is open, which destroys colorbox rel prev/next
return ;
// Deal with pagination for start/limit
if ( typeof ( page ) == 'undefined' )
page = $ . plush . histcurpage ;
else if ( page != $ . plush . histcurpage )
$ . plush . histcurpage = page ;
$ . ajax ( {
type : "POST" ,
url : "history/" ,
data : { start : ( page * $ . plush . histPerPage ) , limit : $ . plush . histPerPage } ,
success : function ( result ) {
// Replace history contents with history.tmpl -- this file sets a couple stat vars via javascript
$ ( '#history' ) . html ( result ) ;
// Update bottom right stats
$ ( '#history_stats' ) . html ( $ . plush . histstats ) ;
// Tooltips for verbose notices
$ ( '#history .icon_history_verbose' ) . tooltip ( {
extraClass : "tooltip" ,
track : true
} ) ;
// Remove spinner graphic from pagination
$ ( '#history-pagination span' ) . removeClass ( 'loading' ) ;
// *** don't forget the live() & livequery() methods defined in $.plush.initEvents() ***
}
} ) ;
} , // end $.plush.refreshHistory()
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
$ . plush . refresh ( )
triggers refreshQueue & refreshHistory
then loops ( calls itself ) after $ . plush . refreshRate seconds
accepts 'force' boolean , used by manual refresh event ( in event of refresh otherwise disabled )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
refresh : function ( force ) {
// Clear timeout in case multiple refreshes are triggered
clearTimeout ( $ . plush . timeout ) ;
if ( force || $ . plush . refreshRate > 0 ) {
// no longer a need for a pending history refresh (associated with nzb deletions)
// (queue var reset in $.plush.refreshQueue() due to possible blocking
$ . plush . pendingHistoryRefresh = false ;
$ . plush . refreshQueue ( ) ;
$ . plush . refreshHistory ( ) ;
// Loop
$ . plush . timeout = setTimeout ( "$.plush.refresh()" , $ . plush . refreshRate * 1000 ) ;
} else if ( ! $ . plush . histstats ) {
// Initial load if refresh rate saved as "Disabled"
$ . plush . refreshQueue ( ) ;
$ . plush . refreshHistory ( ) ;
}
} , // end $.plush.refresh()
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
$ . plush . initEvents ( ) -- initialize all the UI events
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
initEvents : function ( ) {
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
"Add NZB" Methods
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
// Fetch NZB by URL/Newzbin Report ID
$ ( '#addID' ) . click ( function ( ) { // also works when hitting enter because of <form>
if ( $ ( '#addID_input' ) . val ( ) != 'URL' ) {
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : {
mode : 'addid' ,
name : $ ( "#addID_input" ) . val ( ) ,
pp : $ ( "#addID_pp" ) . val ( ) ,
script : $ ( "#addID_script" ) . val ( ) ,
cat : $ ( "#addID_cat" ) . val ( ) ,
priority : $ ( "#addID_priority" ) . val ( ) ,
apikey : $ . plush . apikey
} ,
success : $ . plush . refreshQueue
} ) ;
$ ( "#addID_input" ) . val ( '' ) ;
}
return false ; // aborts <form> submission
} ) ;
$ ( '#addID_input' ) . val ( 'URL' )
. focus ( function ( ) {
if ( $ ( this ) . val ( ) == "URL" )
$ ( this ) . val ( '' ) ;
} ) . blur ( function ( ) {
if ( ! $ ( this ) . val ( ) )
$ ( this ) . val ( 'URL' ) ;
} ) ;
// Upload NZB ajax with webtoolkit
$ ( '#uploadNZBFile' ) . change ( function ( ) { $ ( '#uploadNZBForm' ) . submit ( ) ; } ) ;
$ ( '#uploadNZBForm' ) . submit ( function ( ) {
return AIM . submit ( this , { 'onComplete' : $ . plush . refreshQueue } )
} ) ;
// Fetch Newzbin Bookmarks
$ ( '#fetch_newzbin_bookmarks' ) . click ( function ( ) {
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'newzbin' , name : 'get_bookmarks' , apikey : $ . plush . apikey } ,
success : function ( result ) {
$ . plush . refreshQueue ( ) ;
}
} ) ;
} ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Main Menu Methods
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
// Main menu -- uses jQuery hoverIntent
$ ( "#main_menu ul.sf-menu" ) . superfish ( {
autoArrows : true ,
dropShadows : false
} ) ;
$ ( "#queue-buttons ul" ) . superfish ( {
autoArrows : false ,
dropShadows : false
} ) ;
// Max Speed main menu input -- don't change value on refresh when focused
$ ( "#maxSpeed-option" ) . focus ( function ( ) { $ . plush . focusedOnSpeedChanger = true ; } )
. blur ( function ( ) { $ . plush . focusedOnSpeedChanger = false ; } ) ;
$ ( "#maxSpeed-option" ) . change ( function ( ) { // works with hitting enter
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'config' , name : 'set_speedlimit' , value : $ ( this ) . val ( ) , apikey : $ . plush . apikey }
} ) ;
} ) ;
// Refresh rate
$ ( "#refreshRate-option" ) . val ( $ . plush . refreshRate ) . change ( function ( ) {
$ . plush . refreshRate = $ ( "#refreshRate-option" ) . val ( ) ;
$ . cookie ( 'refreshRate' , $ . plush . refreshRate , { expires : 365 } ) ;
$ . plush . refresh ( ) ;
} ) ;
// Confirm Queue Deletions toggle
$ ( "#confirmDeleteQueue" ) . attr ( 'checked' , $ . plush . confirmDeleteQueue ) . change ( function ( ) {
$ . plush . confirmDeleteQueue = $ ( "#confirmDeleteQueue" ) . attr ( 'checked' ) ;
$ . cookie ( 'confirmDeleteQueue' , $ . plush . confirmDeleteQueue ? 1 : 0 , { expires : 365 } ) ;
} ) ;
// Confirm History Deletions toggle
$ ( "#confirmDeleteHistory" ) . attr ( 'checked' , $ . plush . confirmDeleteHistory ) . change ( function ( ) {
$ . plush . confirmDeleteHistory = $ ( "#confirmDeleteHistory" ) . attr ( 'checked' ) ;
$ . cookie ( 'confirmDeleteHistory' , $ . plush . confirmDeleteHistory ? 1 : 0 , { expires : 365 } ) ;
} ) ;
// Block Refreshes on Hover toggle
$ ( "#blockRefresh" ) . attr ( 'checked' , $ . plush . blockRefresh ) . change ( function ( ) {
$ . plush . blockRefresh = $ ( "#blockRefresh" ) . attr ( 'checked' ) ;
$ . cookie ( 'blockRefresh' , $ . plush . blockRefresh ? 1 : 0 , { expires : 365 } ) ;
} ) ;
// Sabnzbd shutdown
$ ( '#shutdown_sabnzbd' ) . click ( function ( ) {
if ( confirm ( $ ( '#shutdown_sabnzbd' ) . attr ( 'rel' ) ) )
window . location = 'shutdown?session=' + $ . plush . apikey ;
} ) ;
// Queue "Upon Completion" script
$ ( "#onQueueFinish-option" ) . change ( function ( ) {
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'change_complete_action' , value : $ ( this ) . val ( ) , apikey : $ . plush . apikey }
} ) ;
} ) ;
// Queue purge
$ ( '#queue_purge' ) . click ( function ( event ) {
if ( confirm ( $ ( '#queue_purge' ) . attr ( 'rel' ) ) ) {
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'delete' , value : 'all' , apikey : $ . plush . apikey } ,
success : $ . plush . refreshQueue
} ) ;
}
} ) ;
// Queue sort (6-in-1)
$ ( '#queue_sort_list .queue_sort' ) . click ( function ( event ) {
var sort , dir ;
switch ( $ ( this ) . attr ( 'id' ) ) {
case 'sortAgeAsc' : sort = 'avg_age' ; dir = 'asc' ; break ;
case 'sortAgeDesc' : sort = 'avg_age' ; dir = 'desc' ; break ;
case 'sortNameAsc' : sort = 'name' ; dir = 'asc' ; break ;
case 'sortNameDesc' : sort = 'name' ; dir = 'desc' ; break ;
case 'sortSizeAsc' : sort = 'size' ; dir = 'asc' ; break ;
case 'sortSizeDesc' : sort = 'size' ; dir = 'desc' ; break ;
}
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'sort' , sort : sort , dir : dir , apikey : $ . plush . apikey } ,
success : $ . plush . refreshQueue
} ) ;
} ) ;
// Queue pause intervals
$ ( '#set_pause_list .set_pause' ) . click ( function ( event ) {
var minutes = $ ( event . target ) . attr ( 'rel' ) ;
if ( minutes == "custom" )
minutes = prompt ( $ ( event . target ) . attr ( 'title' ) ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'config' , name : 'set_pause' , value : minutes , apikey : $ . plush . apikey } ,
success : $ . plush . refreshQueue
} ) ;
} ) ;
// Manual refresh
$ ( '#manual_refresh_wrapper' ) . click ( function ( e ) {
// prevent button text highlighting
e . target . onselectstart = function ( ) { return false ; } ;
e . target . unselectable = "on" ;
e . target . style . MozUserSelect = "none" ;
//e.target.style.cursor = "default";
$ . plush . refresh ( true ) ;
} ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Queue Events
several of these methods will remain instantiated
even when the contents of the queue change ,
through use of live ( ) & livequery ( )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
// Skip queue refresh on mouseover
$ ( '#queue' ) . hover (
function ( ) { $ . plush . skipRefresh = true ; } , // over
function ( ) { $ . plush . skipRefresh = false ; } // out
) ;
//$('#queueTable').live("mouseover", function(){ $.plush.skipRefresh=true; });
//$('#queueTable').live("mouseout", function(){ $.plush.skipRefresh=false; });
//$('#box_fatbottom_queue').live("mouseover mouseout", function(){ $.plush.skipRefresh=false; });
// NZB pause/resume individual toggle
$ ( '#queueTable .nzb_status' ) . live ( 'click' , function ( event ) {
var pid = $ ( this ) . parent ( ) . parent ( ) . attr ( 'id' ) ;
if ( $ ( this ) . hasClass ( 'sprite_ql_grip_queued_on' ) ) {
$ ( this ) . toggleClass ( 'sprite_ql_grip_queued_on' ) . toggleClass ( 'sprite_ql_grip_paused_on' ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'pause' , value : pid , apikey : $ . plush . apikey }
} ) ;
} else if ( $ ( this ) . hasClass ( 'sprite_ql_grip_active' ) ) {
$ ( this ) . toggleClass ( 'sprite_ql_grip_active' ) . toggleClass ( 'sprite_ql_grip_paused_on' ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'pause' , value : pid , apikey : $ . plush . apikey }
} ) ;
} else {
$ ( this ) . toggleClass ( 'sprite_ql_grip_queued_on' ) . toggleClass ( 'sprite_ql_grip_paused_on' ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'resume' , value : pid , apikey : $ . plush . apikey }
} ) ;
}
} ) ;
// NZB individual deletion
$ ( '#queue .sprite_ql_cross' ) . live ( 'click' , function ( event ) {
if ( ! $ . plush . confirmDeleteQueue || confirm ( $ . plush . Tconfirmation ) ) {
delid = $ ( event . target ) . parent ( ) . parent ( ) . attr ( 'id' ) ;
$ ( '#' + delid ) . fadeTo ( 'normal' , 0.25 ) ;
$ . plush . pendingQueueRefresh = true ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'delete' , value : delid , apikey : $ . plush . apikey } ,
success : function ( ) {
if ( $ ( "#queueTable tr:visible" ) . length - 1 < 1 ) { // don't leave stranded on non-page
$ . plush . skipRefresh = false ;
$ . plush . queueforcerepagination = true ;
$ . plush . refreshQueue ( $ . plush . queuecurpage - 1 ) ;
}
}
} ) ;
}
} ) ;
// refresh on mouseout after deletion
$ ( '#queue' ) . hover ( // $.mouseout was triggering too often
function ( ) { } , // over
function ( ) { // out
if ( $ . plush . pendingQueueRefresh ) {
$ . plush . pendingQueueRefresh = false ;
$ . plush . refreshQueue ( ) ;
}
}
) ;
// Pagination per-page selection
$ ( "#queue-pagination-perpage" ) . change ( function ( event ) {
$ . plush . queuecurpage = Math . floor ( $ . plush . queuecurpage * $ . plush . queuePerPage / $ ( event . target ) . val ( ) ) ;
$ . plush . queuePerPage = $ ( event . target ) . val ( ) ;
$ . cookie ( 'queuePerPage' , $ . plush . queuePerPage , { expires : 365 } ) ;
$ . plush . queueforcerepagination = true ;
$ . plush . refreshQueue ( ) ;
} ) ;
// Set queue per-page preference
$ ( "#queue-pagination-perpage" ) . val ( $ . plush . queuePerPage ) ;
$ . plush . queuecurpage = 0 ; // default 1st page
// Sustained binding of events for elements added to DOM
// Same idea as jQuery live(), but use jQuery livequery() plugin for functions/events not supported by live()
$ ( '#queueTable' ) . livequery ( function ( ) {
// Build pagination only when needed
if ( ( $ . plush . queueforcerepagination && $ . plush . queuenoofslots > $ . plush . queuePerPage ) || $ . plush . queuenoofslots > $ . plush . queuePerPage &&
Math . ceil ( $ . plush . queueprevslots / $ . plush . queuePerPage ) !=
Math . ceil ( $ . plush . queuenoofslots / $ . plush . queuePerPage ) ) {
$ . plush . queueforcerepagination = false ;
if ( $ ( "#queueTable tr:visible" ) . length - 1 < 1 ) // don't leave stranded on non-page
$ . plush . queuecurpage -- ;
$ ( "#queue-pagination" ) . pagination ( $ . plush . queuenoofslots , {
current_page : $ . plush . queuecurpage ,
items_per_page : $ . plush . queuePerPage ,
num_display_entries : 8 ,
num_edge_entries : 1 ,
prev_text : "« " + $ . plush . Tprev , // translation
next_text : $ . plush . Tnext + " »" , // translation
callback : $ . plush . refreshQueue
} ) ;
$ ( '#queue-pagination span' ) . removeClass ( 'loading' ) ; // hide spinner graphic
} else if ( $ . plush . queuenoofslots <= $ . plush . queuePerPage ) {
$ ( "#queue-pagination" ) . html ( '' ) ; // remove pages if history empty
}
$ . plush . queueprevslots = $ . plush . queuenoofslots ; // for the next refresh
// Drag and drop sorting
$ ( "#queueTable" ) . tableDnD ( {
onDrop : function ( table , row ) {
if ( table . tBodies [ 0 ] . rows . length < 2 )
return false ;
// determine which position the repositioned row is at now
var val2 ;
for ( var i = 0 ; i < table . tBodies [ 0 ] . rows . length ; i ++ ) {
if ( table . tBodies [ 0 ] . rows [ i ] . id == row . id ) {
val2 = ( i + $ . plush . queuecurpage * $ . plush . queuePerPage ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'switch' , value : row . id , value2 : val2 , apikey : $ . plush . apikey } ,
success : function ( result ) {
// change priority of the nzb if necessary (priority is returned by API)
var newPriority = result . split ( ' ' ) ;
newPriority = parseInt ( newPriority [ 1 ] ) ;
if ( newPriority != $ ( '#' + row . id + ' .options .proc_priority' ) . val ( ) )
$ ( '#' + row . id + ' .options .proc_priority' ) . val ( newPriority ) ; // must be int, not string
}
} ) ;
return false ;
}
}
}
} ) ;
// NZB change priority
$ ( '#queueTable .options .proc_priority' ) . change ( function ( ) {
var nzbid = $ ( this ) . parent ( ) . parent ( ) . attr ( 'id' ) ;
var oldPos = $ ( '#' + nzbid ) [ 0 ] . rowIndex + $ . plush . queuecurpage * $ . plush . queuePerPage ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'queue' , name : 'priority' , value : nzbid , value2 : $ ( this ) . val ( ) , apikey : $ . plush . apikey } ,
success : function ( newPos ) {
// reposition the nzb if necessary (new position is returned by the API)
if ( parseInt ( newPos ) < $ . plush . queuecurpage * $ . plush . queuePerPage
|| ( $ . plush . queuecurpage + 1 ) * $ . plush . queuePerPage < parseInt ( newPos ) ) {
$ . plush . skipRefresh = false ;
$ . plush . refreshQueue ( ) ;
} else if ( oldPos < newPos )
$ ( '#' + nzbid ) . insertAfter ( $ ( '#queueTable tr:eq(' + ( newPos - $ . plush . queuecurpage * $ . plush . queuePerPage ) + ')' ) ) ;
else if ( oldPos > newPos )
$ ( '#' + nzbid ) . insertBefore ( $ ( '#queueTable tr:eq(' + ( newPos - $ . plush . queuecurpage * $ . plush . queuePerPage ) + ')' ) ) ;
}
} ) ;
} ) ;
// 3-in-1 change nzb [category + processing + script]
$ ( '#queueTable .options .change_cat, #queueTable .options .change_opts, #queueTable .options .change_script' ) . change ( function ( e ) {
var val = $ ( this ) . parent ( ) . parent ( ) . attr ( 'id' ) ;
var cval = $ ( this ) . attr ( 'class' ) . split ( " " ) [ 0 ] ; // ignore added "hovering" class
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : cval , value : val , value2 : $ ( this ) . val ( ) , apikey : $ . plush . apikey } ,
success : function ( resp ) {
// each category can define different priority/processing/script -- must be accounted for
if ( cval == "change_cat" ) {
$ . plush . skipRefresh = false ;
$ . plush . refreshQueue ( ) ; // this is not ideal, but the API does not yet offer a nice way of refreshing just one nzb
}
}
} ) ;
} ) ;
// NZB icon hover states -- done here rather than in CSS:hover due to sprites
$ ( '#queueTable tr' ) . hover (
function ( ) {
$ ( this ) . find ( 'td .icon_nzb_remove' ) . addClass ( 'sprite_ql_cross' ) ;
$ ( this ) . find ( 'td .sprite_ql_grip_queued' ) . toggleClass ( 'sprite_ql_grip_queued' ) . toggleClass ( 'sprite_ql_grip_queued_on' ) ;
$ ( this ) . find ( 'td .sprite_ql_grip_paused' ) . toggleClass ( 'sprite_ql_grip_paused' ) . toggleClass ( 'sprite_ql_grip_paused_on' ) ;
} ,
function ( ) {
$ ( this ) . find ( 'td .icon_nzb_remove' ) . removeClass ( 'sprite_ql_cross' ) ;
$ ( this ) . find ( 'td .sprite_ql_grip_queued_on' ) . toggleClass ( 'sprite_ql_grip_queued' ) . toggleClass ( 'sprite_ql_grip_queued_on' ) ;
$ ( this ) . find ( 'td .sprite_ql_grip_paused_on' ) . toggleClass ( 'sprite_ql_grip_paused' ) . toggleClass ( 'sprite_ql_grip_paused_on' ) ;
}
) ;
$ ( '#queueTable tr td .icon_nzb_remove' ) . hover (
function ( ) { $ ( this ) . addClass ( 'sprite_ql_cross_on' ) ; } ,
function ( ) { $ ( this ) . removeClass ( 'sprite_ql_cross_on' ) ; }
) ;
// Styling that is broken in IE (IE8 auto-closes select menus if defined)
if ( ! $ . browser . msie ) {
$ ( '#queueTable tr' ) . hover (
function ( ) { $ ( this ) . find ( 'td.options select' ) . addClass ( 'hovering' ) ; } ,
function ( ) { $ ( this ) . find ( 'td.options select' ) . removeClass ( 'hovering' ) ; }
) ;
}
} ) ; // end livequery
// Pause/resume toggle (queue)
$ ( '#pause_resume' ) . click ( function ( event ) {
if ( $ ( event . target ) . hasClass ( 'sprite_q_pause_on' ) ) {
$ ( '#pause_resume' ) . removeClass ( 'sprite_q_pause_on' ) . addClass ( 'sprite_q_pause' ) ;
$ ( '#pause_int' ) . html ( "" ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'resume' , apikey : $ . plush . apikey }
} ) ;
} else {
$ ( '#pause_resume' ) . removeClass ( 'sprite_q_pause' ) . addClass ( 'sprite_q_pause_on' ) ;
$ ( '#pause_int' ) . html ( "" ) ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'pause' , apikey : $ . plush . apikey }
} ) ;
}
} ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
History Methods
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
// NZB individual removal
$ ( '#history .sprite_ql_cross' ) . live ( 'click' , function ( event ) {
if ( ! $ . plush . confirmDeleteHistory || confirm ( $ . plush . Tconfirmation ) ) {
delid = $ ( event . target ) . parent ( ) . parent ( ) . attr ( 'id' ) ;
$ ( '#' + delid ) . fadeTo ( 'normal' , 0.25 ) ;
$ . plush . pendingHistoryRefresh = true ;
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'history' , name : 'delete' , value : delid , apikey : $ . plush . apikey } ,
success : function ( ) {
if ( $ ( "#historyTable tr:visible" ) . length - 1 < 1 ) { // don't leave stranded on non-page
$ . plush . histforcerepagination = true ;
$ . plush . refreshHistory ( $ . plush . histcurpage - 1 ) ;
}
}
} ) ;
}
} ) ;
// refresh on mouseout after deletion
$ ( '#history' ) . hover ( // $.mouseout was triggering too often
function ( ) { } , // over
function ( ) { // out
if ( $ . plush . pendingHistoryRefresh ) {
$ . plush . pendingHistoryRefresh = false ;
$ . plush . refreshHistory ( ) ;
}
}
) ;
// Pagination per-page selection
$ ( "#history-pagination-perpage" ) . change ( function ( event ) {
$ . plush . histcurpage = Math . floor ( $ . plush . histcurpage * $ . plush . histPerPage / $ ( event . target ) . val ( ) ) ;
$ . plush . histPerPage = $ ( event . target ) . val ( ) ;
$ . cookie ( 'histPerPage' , $ . plush . histPerPage , { expires : 365 } ) ;
$ . plush . histforcerepagination = true ;
$ . plush . refreshHistory ( ) ;
} ) ;
// Set history per-page preference
$ ( "#history-pagination-perpage" ) . val ( $ . plush . histPerPage ) ;
$ . plush . histcurpage = 0 ; // default 1st page
// Sustained binding of events for elements added to DOM
$ ( '#historyTable' ) . livequery ( function ( ) {
// Build pagination only when needed
if ( ( $ . plush . histforcerepagination && $ . plush . histnoofslots > $ . plush . histPerPage ) || $ . plush . histnoofslots > $ . plush . histPerPage &&
Math . ceil ( $ . plush . histprevslots / $ . plush . histPerPage ) !=
Math . ceil ( $ . plush . histnoofslots / $ . plush . histPerPage ) ) {
$ . plush . histforcerepagination = false ;
if ( $ ( "#historyTable tr:visible" ) . length - 1 < 1 ) // don't leave stranded on non-page
$ . plush . histcurpage -- ;
$ ( "#history-pagination" ) . pagination ( $ . plush . histnoofslots , {
current_page : $ . plush . histcurpage ,
items_per_page : $ . plush . histPerPage ,
num_display_entries : 8 ,
num_edge_entries : 1 ,
prev_text : "« " + $ . plush . Tprev , // translation
next_text : $ . plush . Tnext + " »" , // translation
callback : $ . plush . refreshHistory
} ) ;
$ ( '#history-pagination span' ) . removeClass ( 'loading' ) ; // hide spinner graphic
} else if ( $ . plush . histnoofslots <= $ . plush . histPerPage ) {
$ ( "#history-pagination" ) . html ( '' ) ; // remove pages if history empty
}
$ . plush . histprevslots = $ . plush . histnoofslots ; // for the next refresh
// modal for viewing script logs
$ ( '#historyTable .modal' ) . colorbox ( { width : "80%" , height : "80%" , initialWidth : "80%" , initialHeight : "80%" , speed : 0 , opacity : 0.7 } ) ;
// Remove NZB hover states -- done here rather than in CSS:hover due to sprites
$ ( '#historyTable tr' ) . hover (
function ( ) { $ ( this ) . find ( '.icon_nzb_remove' ) . addClass ( 'sprite_ql_cross' ) ; } ,
function ( ) { $ ( this ) . find ( '.icon_nzb_remove' ) . removeClass ( 'sprite_ql_cross' ) ; }
) ;
$ ( '#historyTable tr td .icon_nzb_remove' ) . hover (
function ( ) { $ ( this ) . addClass ( 'sprite_ql_cross_on' ) ; } ,
function ( ) { $ ( this ) . removeClass ( 'sprite_ql_cross_on' ) ; }
) ;
} ) ; // end livequery
// colorbox event bindings - so history doesn't refresh when viewing modal (thereby breaking rel prev/next)
$ ( ) . bind ( 'cbox_open' , function ( ) { $ . plush . modalOpen = true ; } ) ;
$ ( ) . bind ( 'cbox_closed' , function ( ) { $ . plush . modalOpen = false ; } ) ;
$ ( ) . bind ( 'cbox_complete' , function ( ) {
$ ( '#cboxLoadedContent input' ) . hide ( ) ; // hide back button
$ ( '#cboxLoadedContent h3' ) . append ( '<br/><br/>' ) ; // add spacing to header
} ) ;
// Purge
$ ( '#hist_purge' ) . click ( function ( event ) {
if ( confirm ( $ . plush . TconfirmPurgeH ) ) {
$ . ajax ( {
type : "POST" ,
url : "tapi" ,
data : { mode : 'history' , name : 'delete' , value : 'all' , apikey : $ . plush . apikey } ,
success : $ . plush . refreshHistory
} ) ;
}
} ) ;
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Misc Methods
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
// Static tooltips
$ ( '#explain-blockRefresh, #uploadTip, #fetch_newzbin_bookmarks, #last_warning, #pause_resume, #hist_purge' ) . tooltip ( {
extraClass : "tooltip" ,
track : true ,
showURL : false
} ) ;
} // end $.plush.initEvents()
} ; // end $.plush object
} ) ;
// Once the DOM is ready, run this
jQuery ( document ) . ready ( function ( $ ) {
$ . plush . initEvents ( ) ; // Initialize Plush UI
$ . plush . refresh ( ) ; // Initiate Plush refresh cycle
} ) ;