2012-12-04 15:36:51 -05:00
/*! jQuery v1.8.2 jquery.com | jquery.org/license */
( function ( a , b ) { function G ( a ) { var b = F [ a ] = { } ; return p . each ( a . split ( s ) , function ( a , c ) { b [ c ] = ! 0 } ) , b } function J ( a , c , d ) { if ( d === b && a . nodeType === 1 ) { var e = "data-" + c . replace ( I , "-$1" ) . toLowerCase ( ) ; d = a . getAttribute ( e ) ; if ( typeof d == "string" ) { try { d = d === "true" ? ! 0 : d === "false" ? ! 1 : d === "null" ? null : + d + "" === d ? + d : H . test ( d ) ? p . parseJSON ( d ) : d } catch ( f ) { } p . data ( a , c , d ) } else d = b } return d } function K ( a ) { var b ; for ( b in a ) { if ( b === "data" && p . isEmptyObject ( a [ b ] ) ) continue ; if ( b !== "toJSON" ) return ! 1 } return ! 0 } function ba ( ) { return ! 1 } function bb ( ) { return ! 0 } function bh ( a ) { return ! a || ! a . parentNode || a . parentNode . nodeType === 11 } function bi ( a , b ) { do a = a [ b ] ; while ( a && a . nodeType !== 1 ) ; return a } function bj ( a , b , c ) { b = b || 0 ; if ( p . isFunction ( b ) ) return p . grep ( a , function ( a , d ) { var e = ! ! b . call ( a , d , a ) ; return e === c } ) ; if ( b . nodeType ) return p . grep ( a , function ( a , d ) { return a === b === c } ) ; if ( typeof b == "string" ) { var d = p . grep ( a , function ( a ) { return a . nodeType === 1 } ) ; if ( be . test ( b ) ) return p . filter ( b , d , ! c ) ; b = p . filter ( b , d ) } return p . grep ( a , function ( a , d ) { return p . inArray ( a , b ) >= 0 === c } ) } function bk ( a ) { var b = bl . split ( "|" ) , c = a . createDocumentFragment ( ) ; if ( c . createElement ) while ( b . length ) c . createElement ( b . pop ( ) ) ; return c } function bC ( a , b ) { return a . getElementsByTagName ( b ) [ 0 ] || a . appendChild ( a . ownerDocument . createElement ( b ) ) } function bD ( a , b ) { if ( b . nodeType !== 1 || ! p . hasData ( a ) ) return ; var c , d , e , f = p . _data ( a ) , g = p . _data ( b , f ) , h = f . events ; if ( h ) { delete g . handle , g . events = { } ; for ( c in h ) for ( d = 0 , e = h [ c ] . length ; d < e ; d ++ ) p . event . add ( b , c , h [ c ] [ d ] ) } g . data && ( g . data = p . extend ( { } , g . data ) ) } function bE ( a , b ) { var c ; if ( b . nodeType !== 1 ) return ; b . clearAttributes && b . clearAttributes ( ) , b . mergeAttributes && b . mergeAttributes ( a ) , c = b . nodeName . toLowerCase ( ) , c === "object" ? ( b . parentNode && ( b . outerHTML = a . outerHTML ) , p . support . html5Clone && a . innerHTML && ! p . trim ( b . innerHTML ) && ( b . innerHTML = a . innerHTML ) ) : c === "input" && bv . test ( a . type ) ? ( b . defaultChecked = b . checked = a . checked , b . value !== a . value && ( b . value = a . value ) ) : c === "option" ? b . selected = a . defaultSelected : c === "input" || c === "textarea" ? b . defaultValue = a . defaultValue : c === "script" && b . text !== a . text && ( b . text = a . text ) , b . removeAttribute ( p . expando ) } function bF ( a ) { return typeof a . getElementsByTagName != "undefined" ? a . getElementsByTagName ( "*" ) : typeof a . querySelectorAll != "undefined" ? a . querySelectorAll ( "*" ) : [ ] } function bG ( a ) { bv . test ( a . type ) && ( a . defaultChecked = a . checked ) } function bY ( a , b ) { if ( b in a ) return b ; var c = b . charAt ( 0 ) . toUpperCase ( ) + b . slice ( 1 ) , d = b , e = bW . length ; while ( e -- ) { b = bW [ e ] + c ; if ( b in a ) return b } return d } function bZ ( a , b ) { return a = b || a , p . css ( a , "display" ) === "none" || ! p . contains ( a . ownerDocument , a ) } function b$ ( a , b ) { var c , d , e = [ ] , f = 0 , g = a . length ; for ( ; f < g ; f ++ ) { c = a [ f ] ; if ( ! c . style ) continue ; e [ f ] = p . _data ( c , "olddisplay" ) , b ? ( ! e [ f ] && c . style . display === "none" && ( c . style . display = "" ) , c . style . display === "" && bZ ( c ) && ( e [ f ] = p . _data ( c , "olddisplay" , cc ( c . nodeName ) ) ) ) : ( d = bH ( c , "display" ) , ! e [ f ] && d !== "none" && p . _data ( c , "olddisplay" , d ) ) } for ( f = 0 ; f < g ; f ++ ) { c = a [ f ] ; if ( ! c . style ) continue ; if ( ! b || c . style . display === "none" || c . style . display === "" ) c . style . display = b ? e [ f ] || "" : "none" } return a } function b _ ( a , b , c ) { var d = bP . exec ( b ) ; return d ? Math . max ( 0 , d [ 1 ] - ( c || 0 ) ) + ( d [ 2 ] || "px" ) : b } function ca ( a , b , c , d ) { var e = c === ( d ? "border" : "content" ) ? 4 : b === "width" ? 1 : 0 , f = 0 ; for ( ; e < 4 ; e += 2 ) c === "margin" && ( f += p . css ( a , c + bV [ e ] , ! 0 ) ) , d ? ( c === "content" && ( f -= parseFloat ( bH ( a , "padding" + bV [ e ] ) ) || 0 ) , c !== "margin" && ( f -= parseFloat ( bH ( a , "border" + bV [ e ] + "Width" ) ) || 0 ) ) : ( f += parseFloat ( bH ( a , "padding" + bV [ e ] ) ) || 0 , c !== "padding" && ( f += parseFloat ( bH ( a , "border" + bV [ e ] + "Width" ) ) || 0 ) ) ; return f } function cb ( a , b , c ) { var d = b === "width" ? a . offsetWidth : a . offsetHeight , e = ! 0 , f = p . support . boxSizing && p . css ( a , "boxSizing" ) === "border-box" ; if ( d <= 0 || d == null ) { d = bH ( a , b ) ; if ( d < 0 || d == null ) d = a . style [ b ] ; if ( bQ . test ( d ) ) return d ; e = f && ( p . support . boxSizingReliable || d === a . style [ b ] ) , d = parseFloat ( d ) || 0 } return d + ca ( a , b , c || ( f ? "border" : "content" ) , e ) + "px" } function cc ( a ) { if ( bS [ a ] ) return bS [ a ] ; var b = p ( "<" + a + ">" ) . appendTo ( e . body ) , c = b . css ( "display" ) ; b . remove ( ) ; if ( c === "none" || c === "" ) { bI = e . body . appendChild ( bI || p . extend ( e . createElement ( "iframe" ) , { frameBorder : 0 , width : 0 , height : 0 } ) ) ; if ( ! bJ || ! bI . createElement ) bJ = ( bI . contentWindow || bI . contentDocument ) . document , bJ . write ( "<!doctype html><html><body>" ) , bJ
/ * *
* Timeago is a jQuery plugin that makes it easy to support automatically
* updating fuzzy timestamps ( e . g . "4 minutes ago" or "about 1 day ago" ) .
*
* @ name timeago
* @ version 0.11 . 1
* @ requires jQuery v1 . 2.3 +
* @ author Ryan McGeary
* @ license MIT License - http : //www.opensource.org/licenses/mit-license.php
*
* For usage and examples , visit :
* http : //timeago.yarp.com/
*
* Copyright ( c ) 2008 - 2011 , Ryan McGeary ( ryanonjavascript - [ at ] - mcgeary [ * dot * ] org )
* /
( function ( e ) { function n ( ) { var t = r ( this ) ; if ( ! isNaN ( t . datetime ) ) { e ( this ) . text ( i ( t . datetime ) ) } return this } function r ( n ) { n = e ( n ) ; if ( ! n . data ( "timeago" ) ) { n . data ( "timeago" , { datetime : t . datetime ( n ) } ) ; var r = e . trim ( n . text ( ) ) ; if ( r . length > 0 && ! ( t . isTime ( n ) && n . attr ( "title" ) ) ) { n . attr ( "title" , r ) } } return n . data ( "timeago" ) } function i ( e ) { return t . inWords ( s ( e ) ) } function s ( e ) { return ( new Date ) . getTime ( ) - e . getTime ( ) } e . timeago = function ( t ) { if ( t instanceof Date ) { return i ( t ) } else if ( typeof t === "string" ) { return i ( e . timeago . parse ( t ) ) } else if ( typeof t === "number" ) { return i ( new Date ( t ) ) } else { return i ( e . timeago . datetime ( t ) ) } } ; var t = e . timeago ; e . extend ( e . timeago , { settings : { refreshMillis : 6e4 , allowFuture : false , strings : { prefixAgo : null , prefixFromNow : null , suffixAgo : "ago" , suffixFromNow : "from now" , seconds : "less than a minute" , minute : "about a minute" , minutes : "%d minutes" , hour : "about an hour" , hours : "about %d hours" , day : "a day" , days : "%d days" , month : "about a month" , months : "%d months" , year : "about a year" , years : "%d years" , wordSeparator : " " , numbers : [ ] } } , inWords : function ( t ) { function l ( r , i ) { var s = e . isFunction ( r ) ? r ( i , t ) : r ; var o = n . numbers && n . numbers [ i ] || i ; return s . replace ( /%d/i , o ) } var n = this . settings . strings ; var r = n . prefixAgo ; var i = n . suffixAgo ; if ( this . settings . allowFuture ) { if ( t < 0 ) { r = n . prefixFromNow ; i = n . suffixFromNow } } var s = Math . abs ( t ) / 1e3 ; var o = s / 60 ; var u = o / 60 ; var a = u / 24 ; var f = a / 365 ; var c = s < 45 && l ( n . seconds , Math . round ( s ) ) || s < 90 && l ( n . minute , 1 ) || o < 45 && l ( n . minutes , Math . round ( o ) ) || o < 90 && l ( n . hour , 1 ) || u < 24 && l ( n . hours , Math . round ( u ) ) || u < 42 && l ( n . day , 1 ) || a < 30 && l ( n . days , Math . round ( a ) ) || a < 45 && l ( n . month , 1 ) || a < 365 && l ( n . months , Math . round ( a / 30 ) ) || f < 1.5 && l ( n . year , 1 ) || l ( n . years , Math . round ( f ) ) ; var h = n . wordSeparator === undefined ? " " : n . wordSeparator ; return e . trim ( [ r , c , i ] . join ( h ) ) } , parse : function ( t ) { var n = e . trim ( t ) ; n = n . replace ( /\.\d+/ , "" ) ; n = n . replace ( /-/ , "/" ) . replace ( /-/ , "/" ) ; n = n . replace ( /T/ , " " ) . replace ( /Z/ , " UTC" ) ; n = n . replace ( /([\+\-]\d\d)\:?(\d\d)/ , " $1$2" ) ; return new Date ( n ) } , datetime : function ( n ) { var r = t . isTime ( n ) ? e ( n ) . attr ( "datetime" ) : e ( n ) . attr ( "title" ) ; return t . parse ( r ) } , isTime : function ( t ) { return e ( t ) . get ( 0 ) . tagName . toLowerCase ( ) === "time" } } ) ; e . fn . timeago = function ( ) { var e = this ; e . each ( n ) ; var r = t . settings ; if ( r . refreshMillis > 0 ) { setInterval ( function ( ) { e . each ( n ) } , r . refreshMillis ) } return e } ; document . createElement ( "abbr" ) ; document . createElement ( "time" ) } ) ( jQuery )
2015-03-31 13:53:13 -04:00
/ * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Bootstrap : dropdown . js v3 . 3.4
* http : //getbootstrap.com/javascript/#dropdowns
* === === === === === === === === === === === === === === === === === === === === === === === ===
* Copyright 2011 - 2015 Twitter , Inc .
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
* === === === === === === === === === === === === === === === === === === === === === === === === * /
+ function ( a ) { "use strict" ; function e ( d ) { d && 3 === d . which || ( a ( b ) . remove ( ) , a ( c ) . each ( function ( ) { var b = a ( this ) , c = f ( b ) , e = { relatedTarget : this } ; c . hasClass ( "open" ) && ( d && "click" == d . type && /input|textarea/i . test ( d . target . tagName ) && a . contains ( c [ 0 ] , d . target ) || ( c . trigger ( d = a . Event ( "hide.bs.dropdown" , e ) ) , d . isDefaultPrevented ( ) || ( b . attr ( "aria-expanded" , "false" ) , c . removeClass ( "open" ) . trigger ( "hidden.bs.dropdown" , e ) ) ) ) } ) ) } function f ( b ) { var c = b . attr ( "data-target" ) ; c || ( c = b . attr ( "href" ) , c = c && /#[A-Za-z]/ . test ( c ) && c . replace ( /.*(?=#[^\s]*$)/ , "" ) ) ; var d = c && a ( c ) ; return d && d . length ? d : b . parent ( ) } function g ( b ) { return this . each ( function ( ) { var c = a ( this ) , e = c . data ( "bs.dropdown" ) ; e || c . data ( "bs.dropdown" , e = new d ( this ) ) , "string" == typeof b && e [ b ] . call ( c ) } ) } var b = ".dropdown-backdrop" , c = '[data-toggle="dropdown"]' , d = function ( b ) { a ( b ) . on ( "click.bs.dropdown" , this . toggle ) } ; d . VERSION = "3.3.4" , d . prototype . toggle = function ( b ) { var c = a ( this ) ; if ( ! c . is ( ".disabled, :disabled" ) ) { var d = f ( c ) , g = d . hasClass ( "open" ) ; if ( e ( ) , ! g ) { "ontouchstart" in document . documentElement && ! d . closest ( ".navbar-nav" ) . length && a ( document . createElement ( "div" ) ) . addClass ( "dropdown-backdrop" ) . insertAfter ( a ( this ) ) . on ( "click" , e ) ; var h = { relatedTarget : this } ; if ( d . trigger ( b = a . Event ( "show.bs.dropdown" , h ) ) , b . isDefaultPrevented ( ) ) return ; c . trigger ( "focus" ) . attr ( "aria-expanded" , "true" ) , d . toggleClass ( "open" ) . trigger ( "shown.bs.dropdown" , h ) } return ! 1 } } , d . prototype . keydown = function ( b ) { if ( /(38|40|27|32)/ . test ( b . which ) && ! /input|textarea/i . test ( b . target . tagName ) ) { var d = a ( this ) ; if ( b . preventDefault ( ) , b . stopPropagation ( ) , ! d . is ( ".disabled, :disabled" ) ) { var e = f ( d ) , g = e . hasClass ( "open" ) ; if ( ! g && 27 != b . which || g && 27 == b . which ) return 27 == b . which && e . find ( c ) . trigger ( "focus" ) , d . trigger ( "click" ) ; var h = " li:not(.disabled):visible a" , i = e . find ( '[role="menu"]' + h + ', [role="listbox"]' + h ) ; if ( i . length ) { var j = i . index ( b . target ) ; 38 == b . which && j > 0 && j -- , 40 == b . which && j < i . length - 1 && j ++ , ~ j || ( j = 0 ) , i . eq ( j ) . trigger ( "focus" ) } } } } ; var h = a . fn . dropdown ; a . fn . dropdown = g , a . fn . dropdown . Constructor = d , a . fn . dropdown . noConflict = function ( ) { return a . fn . dropdown = h , this } , a ( document ) . on ( "click.bs.dropdown.data-api" , e ) . on ( "click.bs.dropdown.data-api" , ".dropdown form" , function ( a ) { a . stopPropagation ( ) } ) . on ( "click.bs.dropdown.data-api" , c , d . prototype . toggle ) . on ( "keydown.bs.dropdown.data-api" , c , d . prototype . keydown ) . on ( "keydown.bs.dropdown.data-api" , '[role="menu"]' , d . prototype . keydown ) . on ( "keydown.bs.dropdown.data-api" , '[role="listbox"]' , d . prototype . keydown ) } ( jQuery ) ;
2012-12-05 11:28:55 -05:00
Sidekiq = { } ;
2012-05-11 19:48:03 -04:00
$ ( function ( ) {
2012-10-09 17:36:54 -04:00
$ . timeago . settings . allowFuture = true ;
$ . timeago . settings . refreshMillis = 0 ;
2012-05-11 19:48:03 -04:00
$ ( "time" ) . timeago ( ) ;
2012-12-04 15:36:51 -05:00
$ ( document ) . on ( 'click' , '.check_all' , function ( ) {
2012-05-11 19:48:03 -04:00
var checked = $ ( this ) . attr ( 'checked' ) ;
if ( checked == 'checked' ) {
$ ( 'input[type=checkbox]' , $ ( this ) . closest ( 'table' ) ) . attr ( 'checked' , checked ) ;
} else {
$ ( 'input[type=checkbox]' , $ ( this ) . closest ( 'table' ) ) . removeAttr ( 'checked' ) ;
}
} ) ;
2012-09-30 08:57:51 -04:00
2012-12-03 20:00:02 -05:00
$ ( document ) . on ( "click" , "[data-confirm]" , function ( ) {
2012-08-23 06:49:54 -04:00
return confirm ( $ ( this ) . attr ( 'data-confirm' ) ) ;
} ) ;
2013-01-28 16:55:14 -05:00
$ ( document ) . on ( "click" , "[data-toggle]" , function ( ) {
$ ( $ ( this ) . attr ( 'data-target' ) ) . toggle ( ) ;
} ) ;
2012-08-23 06:49:54 -04:00
} ) ;
2015-03-26 15:47:10 -04:00
function updatePage ( url ) {
setInterval ( function ( ) {
$ . ajax ( {
url : url ,
dataType : 'html'
} ) . done ( function ( data ) {
var $page = $ ( data ) . filter ( '#page' )
$ ( '#page' ) . replaceWith ( $page )
2015-05-05 11:50:55 -04:00
$ ( "time" ) . timeago ( )
2015-03-26 15:47:10 -04:00
} )
} , parseInt ( localStorage . timeInterval ) || 2000 ) ;
}
2015-03-31 13:53:13 -04:00
$ ( function ( ) {
'use strict' ;
var $navbar = $ ( '.navbar-default' )
, staticContentWidth = 0
$ ( '[data-navbar="static"]' ) . each ( function ( ) {
staticContentWidth += $ ( this ) . width ( )
} ) ;
if ( $navbar . width ( ) < staticContentWidth ) {
$ ( '[data-navbar="custom-tab"]' ) . hide ( )
$ ( '[data-navbar="dropdown"]' ) . show ( )
}
} ) ;