2016-04-30 13:30:53 +00:00
function _taggedTemplateLiteral ( e , t ) { return Object . freeze ( Object . defineProperties ( e , { raw : { value : Object . freeze ( t ) } } ) ) } function gup ( e ) { e = e . replace ( /[\[]/ , "\\[" ) . replace ( /[\]]/ , "\\]" ) ; var t = "[\\?&]" + e + "=([^&#]*)" , n = new RegExp ( t ) , r = n . exec ( window . location . href ) ; return null === r ? "" : r [ 1 ] } ! function ( e , t ) { "object" == typeof module && "object" == typeof module . exports ? module . exports = e . document ? t ( e , ! 0 ) : function ( e ) { if ( ! e . document ) throw new Error ( "jQuery requires a window with a document" ) ; return t ( e ) } : t ( e ) } ( "undefined" != typeof window ? window : this , function ( e , t ) { function n ( e ) { var t = ! ! e && "length" in e && e . length , n = oe . type ( e ) ; return "function" === n || oe . isWindow ( e ) ? ! 1 : "array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e } function r ( e , t , n ) { if ( oe . isFunction ( t ) ) return oe . grep ( e , function ( e , r ) { return ! ! t . call ( e , r , e ) !== n } ) ; if ( t . nodeType ) return oe . grep ( e , function ( e ) { return e === t !== n } ) ; if ( "string" == typeof t ) { if ( ge . test ( t ) ) return oe . filter ( t , e , n ) ; t = oe . filter ( t , e ) } return oe . grep ( e , function ( e ) { return Z . call ( t , e ) > - 1 !== n } ) } function i ( e , t ) { for ( ; ( e = e [ t ] ) && 1 !== e . nodeType ; ) ; return e } function o ( e ) { var t = { } ; return oe . each ( e . match ( we ) || [ ] , function ( e , n ) { t [ n ] = ! 0 } ) , t } function a ( ) { G . removeEventListener ( "DOMContentLoaded" , a ) , e . removeEventListener ( "load" , a ) , oe . ready ( ) } function s ( ) { this . expando = oe . expando + s . uid ++ } function l ( e , t , n ) { var r ; if ( void 0 === n && 1 === e . nodeType ) if ( r = "data-" + t . replace ( De , "-$&" ) . toLowerCase ( ) , n = e . getAttribute ( r ) , "string" == typeof n ) { try { n = "true" === n ? ! 0 : "false" === n ? ! 1 : "null" === n ? null : + n + "" === n ? + n : je . test ( n ) ? oe . parseJSON ( n ) : n } catch ( i ) { } Ee . set ( e , t , n ) } else n = void 0 ; return n } function u ( e , t , n , r ) { var i , o = 1 , a = 20 , s = r ? function ( ) { return r . cur ( ) } : function ( ) { return oe . css ( e , t , "" ) } , l = s ( ) , u = n && n [ 3 ] || ( oe . cssNumber [ t ] ? "" : "px" ) , c = ( oe . cssNumber [ t ] || "px" !== u && + l ) && Se . exec ( oe . css ( e , t ) ) ; if ( c && c [ 3 ] !== u ) { u = u || c [ 3 ] , n = n || [ ] , c = + l || 1 ; do o = o || ".5" , c /= o , oe . style ( e , t , c + u ) ; while ( o !== ( o = s ( ) / l ) && 1 !== o && -- a ) } return n && ( c = + c || + l || 0 , i = n [ 1 ] ? c + ( n [ 1 ] + 1 ) * n [ 2 ] : + n [ 2 ] , r && ( r . unit = u , r . start = c , r . end = i ) ) , i } function c ( e , t ) { var n = "undefined" != typeof e . getElementsByTagName ? e . getElementsByTagName ( t || "*" ) : "undefined" != typeof e . querySelectorAll ? e . querySelectorAll ( t || "*" ) : [ ] ; return void 0 === t || t && oe . nodeName ( e , t ) ? oe . merge ( [ e ] , n ) : n } function d ( e , t ) { for ( var n = 0 , r = e . length ; r > n ; n ++ ) ke . set ( e [ n ] , "globalEval" , ! t || ke . get ( t [ n ] , "globalEval" ) ) } function f ( e , t , n , r , i ) { for ( var o , a , s , l , u , f , p = t . createDocumentFragment ( ) , h = [ ] , g = 0 , m = e . length ; m > g ; g ++ ) if ( o = e [ g ] , o || 0 === o ) if ( "object" === oe . type ( o ) ) oe . merge ( h , o . nodeType ? [ o ] : o ) ; else if ( Pe . test ( o ) ) { for ( a = a || p . appendChild ( t . createElement ( "div" ) ) , s = ( Oe . exec ( o ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) , l = He [ s ] || He . _default , a . innerHTML = l [ 1 ] + oe . htmlPrefilter ( o ) + l [ 2 ] , f = l [ 0 ] ; f -- ; ) a = a . lastChild ; oe . merge ( h , a . childNodes ) , a = p . firstChild , a . textContent = "" } else h . push ( t . createTextNode ( o ) ) ; for ( p . textContent = "" , g = 0 ; o = h [ g ++ ] ; ) if ( r && oe . inArray ( o , r ) > - 1 ) i && i . push ( o ) ; else if ( u = oe . contains ( o . ownerDocument , o ) , a = c ( p . appendChild ( o ) , "script" ) , u && d ( a ) , n ) for ( f = 0 ; o = a [ f ++ ] ; ) qe . test ( o . type || "" ) && n . push ( o ) ; return p } function p ( ) { return ! 0 } function h ( ) { return ! 1 } function g ( ) { try { return G . activeElement } catch ( e ) { } } function m ( e , t , n , r , i , o ) { var a , s ; if ( "object" == typeof t ) { "string" != typeof n && ( r = r || n , n = void 0 ) ; for ( s in t ) m ( e , s , n , r , t [ s ] , o ) ; return e } if ( null == r && null == i ? ( i = n , r = n = void 0 ) : null == i && ( "string" == typeof n ? ( i = r , r = void 0 ) : ( i = r , r = n , n = void 0 ) ) , i === ! 1 ) i = h ; else if ( ! i ) return e ; return 1 === o && ( a = i , i = function ( e ) { return oe ( ) . off ( e ) , a . apply ( this , arguments ) } , i . guid = a . guid || ( a . guid = oe . guid ++ ) ) , e . each ( function ( ) { oe . event . add ( this , t , i , r , n ) } ) } function v ( e , t ) { return oe . nodeName ( e , "table" ) && oe . nodeName ( 11 !== t . nodeType ? t : t . firstChild , "tr" ) ? e . getElementsByTagName ( "tbody" ) [ 0 ] || e . appendChild ( e . ownerDocument . createElement ( "tbody" ) ) : e } function b ( e ) { return e . type = ( null !== e . getAttribute ( "type" ) ) + "/" + e . type , e } function y ( e ) { var t = Ue . exec ( e . type ) ; return t ? e . type = t [ 1 ] : e . removeAttribute ( "type" ) , e } function x ( e , t ) { var n , r , i , o , a , s , l , u ; if ( 1 === t . nodeType ) { if ( ke . hasData ( e ) && ( o = ke . access ( e ) , a = ke . set ( t , o ) , u = o . events ) ) { delete a . handle , a . events = { } ; for ( i in u ) for ( n = 0 , r = u [ i ] . length ; r > n ; n ++ ) oe . event . add ( t , i , u [ i ] [ n ] ) } Ee . hasData ( e ) && ( s = Ee . access ( e ) , l = oe . extend ( { } , s ) , Ee . set ( t , l ) ) } } functi
return "input" === t && "button" === e . type || "button" === t } , text : function ( e ) { var t ; return "input" === e . nodeName . toLowerCase ( ) && "text" === e . type && ( null == ( t = e . getAttribute ( "type" ) ) || "text" === t . toLowerCase ( ) ) } , first : u ( function ( ) { return [ 0 ] } ) , last : u ( function ( e , t ) { return [ t - 1 ] } ) , eq : u ( function ( e , t , n ) { return [ 0 > n ? n + t : n ] } ) , even : u ( function ( e , t ) { for ( var n = 0 ; t > n ; n += 2 ) e . push ( n ) ; return e } ) , odd : u ( function ( e , t ) { for ( var n = 1 ; t > n ; n += 2 ) e . push ( n ) ; return e } ) , lt : u ( function ( e , t , n ) { for ( var r = 0 > n ? n + t : n ; -- r >= 0 ; ) e . push ( r ) ; return e } ) , gt : u ( function ( e , t , n ) { for ( var r = 0 > n ? n + t : n ; ++ r < t ; ) e . push ( r ) ; return e } ) } } , T . pseudos . nth = T . pseudos . eq ; for ( x in { radio : ! 0 , checkbox : ! 0 , file : ! 0 , password : ! 0 , image : ! 0 } ) T . pseudos [ x ] = s ( x ) ; for ( x in { submit : ! 0 , reset : ! 0 } ) T . pseudos [ x ] = l ( x ) ; return d . prototype = T . filters = T . pseudos , T . setFilters = new d , k = t . tokenize = function ( e , n ) { var r , i , o , a , s , l , u , c = U [ e + " " ] ; if ( c ) return n ? 0 : c . slice ( 0 ) ; for ( s = e , l = [ ] , u = T . preFilter ; s ; ) { r && ! ( i = le . exec ( s ) ) || ( i && ( s = s . slice ( i [ 0 ] . length ) || s ) , l . push ( o = [ ] ) ) , r = ! 1 , ( i = ue . exec ( s ) ) && ( r = i . shift ( ) , o . push ( { value : r , type : i [ 0 ] . replace ( se , " " ) } ) , s = s . slice ( r . length ) ) ; for ( a in T . filter ) ! ( i = pe [ a ] . exec ( s ) ) || u [ a ] && ! ( i = u [ a ] ( i ) ) || ( r = i . shift ( ) , o . push ( { value : r , type : a , matches : i } ) , s = s . slice ( r . length ) ) ; if ( ! r ) break } return n ? s . length : s ? t . error ( e ) : U ( e , l ) . slice ( 0 ) } , E = t . compile = function ( e , t ) { var n , r = [ ] , i = [ ] , o = z [ e + " " ] ; if ( ! o ) { for ( t || ( t = k ( e ) ) , n = t . length ; n -- ; ) o = b ( t [ n ] ) , o [ I ] ? r . push ( o ) : i . push ( o ) ; o = z ( e , y ( i , r ) ) , o . selector = e } return o } , j = t . select = function ( e , t , n , r ) { var i , o , a , s , l , u = "function" == typeof e && e , d = ! r && k ( e = u . selector || e ) ; if ( n = n || [ ] , 1 === d . length ) { if ( o = d [ 0 ] = d [ 0 ] . slice ( 0 ) , o . length > 2 && "ID" === ( a = o [ 0 ] ) . type && w . getById && 9 === t . nodeType && O && T . relative [ o [ 1 ] . type ] ) { if ( t = ( T . find . ID ( a . matches [ 0 ] . replace ( xe , we ) , t ) || [ ] ) [ 0 ] , ! t ) return n ; u && ( t = t . parentNode ) , e = e . slice ( o . shift ( ) . value . length ) } for ( i = pe . needsContext . test ( e ) ? 0 : o . length ; i -- && ( a = o [ i ] , ! T . relative [ s = a . type ] ) ; ) if ( ( l = T . find [ s ] ) && ( r = l ( a . matches [ 0 ] . replace ( xe , we ) , be . test ( o [ 0 ] . type ) && c ( t . parentNode ) || t ) ) ) { if ( o . splice ( i , 1 ) , e = r . length && f ( o ) , ! e ) return K . apply ( n , r ) , n ; break } } return ( u || E ( e , d ) ) ( r , t , ! O , n , ! t || be . test ( e ) && c ( t . parentNode ) || t ) , n } , w . sortStable = I . split ( "" ) . sort ( X ) . join ( "" ) === I , w . detectDuplicates = ! ! S , N ( ) , w . sortDetached = i ( function ( e ) { return 1 & e . compareDocumentPosition ( A . createElement ( "div" ) ) } ) , i ( function ( e ) { return e . innerHTML = "<a href='#'></a>" , "#" === e . firstChild . getAttribute ( "href" ) } ) || o ( "type|href|height|width" , function ( e , t , n ) { return n ? void 0 : e . getAttribute ( t , "type" === t . toLowerCase ( ) ? 1 : 2 ) } ) , w . attributes && i ( function ( e ) { return e . innerHTML = "<input/>" , e . firstChild . setAttribute ( "value" , "" ) , "" === e . firstChild . getAttribute ( "value" ) } ) || o ( "value" , function ( e , t , n ) { return n || "input" !== e . nodeName . toLowerCase ( ) ? void 0 : e . defaultValue } ) , i ( function ( e ) { return null == e . getAttribute ( "disabled" ) } ) || o ( te , function ( e , t , n ) { var r ; return n ? void 0 : e [ t ] === ! 0 ? t . toLowerCase ( ) : ( r = e . getAttributeNode ( t ) ) && r . specified ? r . value : null } ) , t } ( e ) ; oe . find = ce , oe . expr = ce . selectors , oe . expr [ ":" ] = oe . expr . pseudos , oe . uniqueSort = oe . unique = ce . uniqueSort , oe . text = ce . getText , oe . isXMLDoc = ce . isXML , oe . contains = ce . contains ; var de = function ( e , t , n ) { for ( var r = [ ] , i = void 0 !== n ; ( e = e [ t ] ) && 9 !== e . nodeType ; ) if ( 1 === e . nodeType ) { if ( i && oe ( e ) . is ( n ) ) break ; r . push ( e ) } return r } , fe = function ( e , t ) { for ( var n = [ ] ; e ; e = e . nextSibling ) 1 === e . nodeType && e !== t && n . push ( e ) ; return n } , pe = oe . expr . match . needsContext , he = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ , ge = /^.[^:#\[\.,]*$/ ; oe . filter = function ( e , t , n ) { var r = t [ 0 ] ; return n && ( e = ":not(" + e + ")" ) , 1 === t . length && 1 === r . nodeType ? oe . find . matchesSelector ( r , e ) ? [ r ] : [ ] : oe . find . matches ( e , oe . grep ( t , function ( e ) { return 1 === e . nodeType } ) ) } , oe . fn . extend ( { find : function ( e ) { var t , n = this . length , r = [ ] , i = this ; if ( "string" != typeof e ) return this . pushStack ( oe ( e ) . filter ( function ( ) { for ( t = 0 ; n > t ; t ++ ) if ( oe . contains ( i [ t ] , this ) ) return ! 0 } ) ) ; for ( t = 0 ; n > t ; t ++ ) oe . find ( e , i [ t ] , r ) ; return r = this . pushStack ( n > 1 ? oe . unique ( r ) : r ) , r . selector = this . selector ? this . selector + " " + e : e , r } , filter : function ( e ) { return this . pushStack ( r ( this , e || [ ] , ! 1 ) ) } , not : function ( e ) { return this . pushStack ( r ( this , e || [ ] , ! 0 ) ) } , is : function ( e ) { return ! ! r ( this , "string" == typeof e && pe . test ( e ) ? oe ( e ) : e || [ ] , ! 1 ) . length } } ) ; var me , ve = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/ , be = oe . fn
slideDown : q ( "show" ) , slideUp : q ( "hide" ) , slideToggle : q ( "toggle" ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } , fadeToggle : { opacity : "toggle" } } , function ( e , t ) { oe . fn [ e ] = function ( e , n , r ) { return this . animate ( t , e , n , r ) } } ) , oe . timers = [ ] , oe . fx . tick = function ( ) { var e , t = 0 , n = oe . timers ; for ( it = oe . now ( ) ; t < n . length ; t ++ ) e = n [ t ] , e ( ) || n [ t ] !== e || n . splice ( t -- , 1 ) ; n . length || oe . fx . stop ( ) , it = void 0 } , oe . fx . timer = function ( e ) { oe . timers . push ( e ) , e ( ) ? oe . fx . start ( ) : oe . timers . pop ( ) } , oe . fx . interval = 13 , oe . fx . start = function ( ) { ot || ( ot = e . setInterval ( oe . fx . tick , oe . fx . interval ) ) } , oe . fx . stop = function ( ) { e . clearInterval ( ot ) , ot = null } , oe . fx . speeds = { slow : 600 , fast : 200 , _default : 400 } , oe . fn . delay = function ( t , n ) { return t = oe . fx ? oe . fx . speeds [ t ] || t : t , n = n || "fx" , this . queue ( n , function ( n , r ) { var i = e . setTimeout ( n , t ) ; r . stop = function ( ) { e . clearTimeout ( i ) } } ) } , function ( ) { var e = G . createElement ( "input" ) , t = G . createElement ( "select" ) , n = t . appendChild ( G . createElement ( "option" ) ) ; e . type = "checkbox" , re . checkOn = "" !== e . value , re . optSelected = n . selected , t . disabled = ! 0 , re . optDisabled = ! n . disabled , e = G . createElement ( "input" ) , e . value = "t" , e . type = "radio" , re . radioValue = "t" === e . value } ( ) ; var lt , ut = oe . expr . attrHandle ; oe . fn . extend ( { attr : function ( e , t ) { return _e ( this , oe . attr , e , t , arguments . length > 1 ) } , removeAttr : function ( e ) { return this . each ( function ( ) { oe . removeAttr ( this , e ) } ) } } ) , oe . extend ( { attr : function ( e , t , n ) { var r , i , o = e . nodeType ; return 3 !== o && 8 !== o && 2 !== o ? "undefined" == typeof e . getAttribute ? oe . prop ( e , t , n ) : ( 1 === o && oe . isXMLDoc ( e ) || ( t = t . toLowerCase ( ) , i = oe . attrHooks [ t ] || ( oe . expr . match . bool . test ( t ) ? lt : void 0 ) ) , void 0 !== n ? null === n ? void oe . removeAttr ( e , t ) : i && "set" in i && void 0 !== ( r = i . set ( e , n , t ) ) ? r : ( e . setAttribute ( t , n + "" ) , n ) : i && "get" in i && null !== ( r = i . get ( e , t ) ) ? r : ( r = oe . find . attr ( e , t ) , null == r ? void 0 : r ) ) : void 0 } , attrHooks : { type : { set : function ( e , t ) { if ( ! re . radioValue && "radio" === t && oe . nodeName ( e , "input" ) ) { var n = e . value ; return e . setAttribute ( "type" , t ) , n && ( e . value = n ) , t } } } } , removeAttr : function ( e , t ) { var n , r , i = 0 , o = t && t . match ( we ) ; if ( o && 1 === e . nodeType ) for ( ; n = o [ i ++ ] ; ) r = oe . propFix [ n ] || n , oe . expr . match . bool . test ( n ) && ( e [ r ] = ! 1 ) , e . removeAttribute ( n ) } } ) , lt = { set : function ( e , t , n ) { return t === ! 1 ? oe . removeAttr ( e , n ) : e . setAttribute ( n , n ) , n } } , oe . each ( oe . expr . match . bool . source . match ( /\w+/g ) , function ( e , t ) { var n = ut [ t ] || oe . find . attr ; ut [ t ] = function ( e , t , r ) { var i , o ; return r || ( o = ut [ t ] , ut [ t ] = i , i = null != n ( e , t , r ) ? t . toLowerCase ( ) : null , ut [ t ] = o ) , i } } ) ; var ct = /^(?:input|select|textarea|button)$/i , dt = /^(?:a|area)$/i ; oe . fn . extend ( { prop : function ( e , t ) { return _e ( this , oe . prop , e , t , arguments . length > 1 ) } , removeProp : function ( e ) { return this . each ( function ( ) { delete this [ oe . propFix [ e ] || e ] } ) } } ) , oe . extend ( { prop : function ( e , t , n ) { var r , i , o = e . nodeType ; return 3 !== o && 8 !== o && 2 !== o ? ( 1 === o && oe . isXMLDoc ( e ) || ( t = oe . propFix [ t ] || t , i = oe . propHooks [ t ] ) , void 0 !== n ? i && "set" in i && void 0 !== ( r = i . set ( e , n , t ) ) ? r : e [ t ] = n : i && "get" in i && null !== ( r = i . get ( e , t ) ) ? r : e [ t ] ) : void 0 } , propHooks : { tabIndex : { get : function ( e ) { var t = oe . find . attr ( e , "tabindex" ) ; return t ? parseInt ( t , 10 ) : ct . test ( e . nodeName ) || dt . test ( e . nodeName ) && e . href ? 0 : - 1 } } } , propFix : { "for" : "htmlFor" , "class" : "className" } } ) , re . optSelected || ( oe . propHooks . selected = { get : function ( e ) { var t = e . parentNode ; return t && t . parentNode && t . parentNode . selectedIndex , null } , set : function ( e ) { var t = e . parentNode ; t && ( t . selectedIndex , t . parentNode && t . parentNode . selectedIndex ) } } ) , oe . each ( [ "tabIndex" , "readOnly" , "maxLength" , "cellSpacing" , "cellPadding" , "rowSpan" , "colSpan" , "useMap" , "frameBorder" , "contentEditable" ] , function ( ) { oe . propFix [ this . toLowerCase ( ) ] = this } ) ; var ft = /[\t\r\n\f]/g ; oe . fn . extend ( { addClass : function ( e ) { var t , n , r , i , o , a , s , l = 0 ; if ( oe . isFunction ( e ) ) return this . each ( function ( t ) { oe ( this ) . addClass ( e . call ( this , t , F ( this ) ) ) } ) ; if ( "string" == typeof e && e ) for ( t = e . match ( we ) || [ ] ; n = this [ l ++ ] ; ) if ( i = F ( n ) , r = 1 === n . nodeType && ( " " + i + " " ) . replace ( ft , " " ) ) { for ( a = 0 ; o = t [ a ++ ] ; ) r . indexOf ( " " + o + " " ) < 0 && ( r += o + " " ) ; s = oe . trim ( r ) , i !== s && n . setAttribute ( "class" , s ) } return this } , removeClass : function ( e ) { var t , n , r , i , o , a , s , l = 0 ; if ( oe . isFunction ( e ) ) return this . each ( function ( t ) { oe ( this ) . removeClass ( e . call ( this , t , F ( this ) ) ) } ) ; if ( ! arguments . length ) return this . attr ( "class" , "" ) ; if ( "string" == typeof e && e ) for ( t = e . match ( we ) || [ ] ; n = this [ l ++ ] ; ) if ( i = F ( n )
lychee . publicMode === ! 1 && ( t += lychee . html ( _templateObject6 , "1" === e . star ? "badge--visible" : "" , build . iconic ( "star" ) , "1" === e [ "public" ] ? "badge--visible" : "" , build . iconic ( "eye" ) , "1" === e . unsorted ? "badge--visible" : "" , build . iconic ( "list" ) , "1" === e . recent ? "badge--visible" : "" , build . iconic ( "clock" ) , "1" === e . password ? "badge--visible" : "" , build . iconic ( "lock-locked" ) ) ) , t += "</div>" } , build . photo = function ( e ) { var t = "" , n = lychee . retinize ( e . thumbUrl ) , r = n . path ; return t += lychee . html ( _templateObject7 , e . album , e . id , e . thumbUrl , r , e . title , e . title ) , t += "1" === e . cameraDate ? lychee . html ( _templateObject8 , build . iconic ( "camera-slr" ) , e . sysdate ) : lychee . html ( _templateObject9 , e . sysdate ) , t += "</div>" , lychee . publicMode === ! 1 && ( t += lychee . html ( _templateObject10 , "1" === e . star ? "badge--visible" : "" , build . iconic ( "star" ) , "1" === e [ "public" ] && "1" !== album . json [ "public" ] ? "badge--visible" : "" , build . iconic ( "eye" ) ) ) , t += "</div>" } , build . imageview = function ( e , t ) { var n = "" , r = "" !== e . medium ; return n += r === ! 1 ? lychee . html ( _templateObject11 , t === ! 0 ? "" : "full" , e . url ) : lychee . html ( _templateObject12 , t === ! 0 ? "" : "full" , e . url , e . medium , e . url , e . width ) , n += "\n <div class='arrow_wrapper arrow_wrapper--previous'><a id='previous'>" + build . iconic ( "caret-left" ) + "</a></div>\n <div class='arrow_wrapper arrow_wrapper--next'><a id='next'>" + build . iconic ( "caret-right" ) + "</a></div>\n " } , build . no _content = function ( e ) { var t = "" ; switch ( t += "\n <div class='no_content fadeIn'>\n " + build . iconic ( e ) + "\n " , e ) { case "magnifying-glass" : t += "<p>No results</p>" ; break ; case "eye" : t += "<p>No public albums</p>" ; break ; case "cog" : t += "<p>No configuration</p>" ; break ; case "question-mark" : t += "<p>Photo not found</p>" } return t += "</div>" } , build . uploadModal = function ( e , t ) { var n = "" ; n += lychee . html ( _templateObject13 , e ) ; for ( var r = 0 ; r < t . length ; ) { var i = t [ r ] ; i . name . length > 40 && ( i . name = i . name . substr ( 0 , 17 ) + "..." + i . name . substr ( i . name . length - 20 , 20 ) ) , n += lychee . html ( _templateObject14 , i . name ) , r ++ } return n += "</div>" } , build . tags = function ( e ) { var t = "" ; return "" !== e ? ( e = e . split ( "," ) , e . forEach ( function ( e , n , r ) { t += lychee . html ( _templateObject15 , e , n , build . iconic ( "x" ) ) } ) ) : t = "<div class='empty'>No Tags</div>" , t } , api = { path : "php/index.php" , onError : null } , api . post = function ( e , t , n ) { loadingBar . show ( ) , t = $ . extend ( { "function" : e } , t ) ; var r = function ( e ) { return setTimeout ( loadingBar . hide , 100 ) , "string" == typeof e && "Error: " === e . substring ( 0 , 7 ) ? ( api . onError ( e . substring ( 7 , e . length ) , t , e ) , ! 1 ) : void n ( e ) } , i = function ( e , n , r ) { api . onError ( "Server error or API not found." , t , r ) } ; $ . ajax ( { type : "POST" , url : api . path , data : t , dataType : "json" , success : r , error : i } ) } , header = { _dom : $ ( ".header" ) } , header . dom = function ( e ) { return null == e || "" === e ? header . _dom : header . _dom . find ( e ) } , header . bind = function ( ) { var e = lychee . getEventName ( ) ; return header . dom ( ".header__title" ) . on ( e , function ( e ) { return $ ( this ) . hasClass ( "header__title--editable" ) === ! 1 ? ! 1 : void ( visible . photo ( ) ? contextMenu . photoTitle ( album . getID ( ) , photo . getID ( ) , e ) : contextMenu . albumTitle ( album . getID ( ) , e ) ) } ) , header . dom ( "#button_share" ) . on ( e , function ( e ) { "1" === photo . json [ "public" ] || "2" === photo . json [ "public" ] ? contextMenu . sharePhoto ( photo . getID ( ) , e ) : photo . setPublic ( photo . getID ( ) , e ) } ) , header . dom ( "#button_share_album" ) . on ( e , function ( e ) { "1" === album . json [ "public" ] ? contextMenu . shareAlbum ( album . getID ( ) , e ) : album . setPublic ( album . getID ( ) , ! 0 , e ) } ) , header . dom ( "#button_signin" ) . on ( e , lychee . loginDialog ) , header . dom ( "#button_settings" ) . on ( e , contextMenu . settings ) , header . dom ( "#button_info_album" ) . on ( e , sidebar . toggle ) , header . dom ( "#button_info" ) . on ( e , sidebar . toggle ) , header . dom ( ".button_add" ) . on ( e , contextMenu . add ) , header . dom ( "#button_more" ) . on ( e , function ( e ) { contextMenu . photoMore ( photo . getID ( ) , e ) } ) , header . dom ( "#button_move" ) . on ( e , function ( e ) { contextMenu . move ( [ photo . getID ( ) ] , e ) } ) , header . dom ( ".header__hostedwith" ) . on ( e , function ( ) { window . open ( lychee . website ) } ) , header . dom ( "#button_trash_album" ) . on ( e , function ( ) { album [ "delete" ] ( [ album . getID ( ) ] ) } ) , header . dom ( "#button_trash" ) . on ( e , function ( ) { photo [ "delete" ] ( [ photo . getID ( ) ] ) } ) , header . dom ( "#button_archive" ) . on ( e , function ( ) { album . getArchive ( album . getID ( ) ) } ) , header . dom ( "#button_star" ) . on ( e , function ( ) { photo . setStar ( [ photo . getID ( ) ] ) } ) ,