2014-10-21 12:55:35 +00:00
function mobileBrowser ( ) { return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i . test ( navigator . userAgent ) ? ! 0 : ! 1 } 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 , n = Z . type ( e ) ; return "function" === n || Z . isWindow ( e ) ? ! 1 : 1 === e . nodeType && t ? ! 0 : "array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e } function r ( e , t , n ) { if ( Z . isFunction ( t ) ) return Z . grep ( e , function ( e , r ) { return ! ! t . call ( e , r , e ) !== n } ) ; if ( t . nodeType ) return Z . grep ( e , function ( e ) { return e === t !== n } ) ; if ( "string" == typeof t ) { if ( st . test ( t ) ) return Z . filter ( t , e , n ) ; t = Z . filter ( t , e ) } return Z . grep ( e , function ( e ) { return U . call ( t , e ) >= 0 !== n } ) } function i ( e , t ) { for ( ; ( e = e [ t ] ) && 1 !== e . nodeType ; ) ; return e } function o ( e ) { var t = ht [ e ] = { } ; return Z . each ( e . match ( pt ) || [ ] , function ( e , n ) { t [ n ] = ! 0 } ) , t } function a ( ) { Q . removeEventListener ( "DOMContentLoaded" , a , ! 1 ) , e . removeEventListener ( "load" , a , ! 1 ) , Z . ready ( ) } function s ( ) { Object . defineProperty ( this . cache = { } , 0 , { get : function ( ) { return { } } } ) , this . expando = Z . expando + Math . random ( ) } function u ( e , t , n ) { var r ; if ( void 0 === n && 1 === e . nodeType ) if ( r = "data-" + t . replace ( xt , "-$1" ) . toLowerCase ( ) , n = e . getAttribute ( r ) , "string" == typeof n ) { try { n = "true" === n ? ! 0 : "false" === n ? ! 1 : "null" === n ? null : + n + "" === n ? + n : bt . test ( n ) ? Z . parseJSON ( n ) : n } catch ( i ) { } yt . set ( e , t , n ) } else n = void 0 ; return n } function l ( ) { return ! 0 } function c ( ) { return ! 1 } function d ( ) { try { return Q . activeElement } catch ( e ) { } } function f ( e , t ) { return Z . nodeName ( e , "table" ) && Z . nodeName ( 11 !== t . nodeType ? t : t . firstChild , "tr" ) ? e . getElementsByTagName ( "tbody" ) [ 0 ] || e . appendChild ( e . ownerDocument . createElement ( "tbody" ) ) : e } function p ( e ) { return e . type = ( null !== e . getAttribute ( "type" ) ) + "/" + e . type , e } function h ( e ) { var t = Pt . exec ( e . type ) ; return t ? e . type = t [ 1 ] : e . removeAttribute ( "type" ) , e } function g ( e , t ) { for ( var n = 0 , r = e . length ; r > n ; n ++ ) vt . set ( e [ n ] , "globalEval" , ! t || vt . get ( t [ n ] , "globalEval" ) ) } function m ( e , t ) { var n , r , i , o , a , s , u , l ; if ( 1 === t . nodeType ) { if ( vt . hasData ( e ) && ( o = vt . access ( e ) , a = vt . set ( t , o ) , l = o . events ) ) { delete a . handle , a . events = { } ; for ( i in l ) for ( n = 0 , r = l [ i ] . length ; r > n ; n ++ ) Z . event . add ( t , i , l [ i ] [ n ] ) } yt . hasData ( e ) && ( s = yt . access ( e ) , u = Z . extend ( { } , s ) , yt . set ( t , u ) ) } } function v ( e , t ) { var n = e . getElementsByTagName ? e . getElementsByTagName ( t || "*" ) : e . querySelectorAll ? e . querySelectorAll ( t || "*" ) : [ ] ; return void 0 === t || t && Z . nodeName ( e , t ) ? Z . merge ( [ e ] , n ) : n } function y ( e , t ) { var n = t . nodeName . toLowerCase ( ) ; "input" === n && Tt . test ( e . type ) ? t . checked = e . checked : ( "input" === n || "textarea" === n ) && ( t . defaultValue = e . defaultValue ) } function b ( t , n ) { var r , i = Z ( n . createElement ( t ) ) . appendTo ( n . body ) , o = e . getDefaultComputedStyle && ( r = e . getDefaultComputedStyle ( i [ 0 ] ) ) ? r . display : Z . css ( i [ 0 ] , "display" ) ; return i . detach ( ) , o } function x ( e ) { var t = Q , n = Rt [ e ] ; return n || ( n = b ( e , t ) , "none" !== n && n || ( $t = ( $t || Z ( "<iframe frameborder='0' width='0' height='0'/>" ) ) . appendTo ( t . documentElement ) , t = $t [ 0 ] . contentDocument , t . write ( ) , t . close ( ) , n = b ( e , t ) , $t . detach ( ) ) , Rt [ e ] = n ) , n } function w ( e , t , n ) { var r , i , o , a , s = e . style ; return n = n || Bt ( e ) , n && ( a = n . getPropertyValue ( t ) || n [ t ] ) , n && ( "" !== a || Z . contains ( e . ownerDocument , e ) || ( a = Z . style ( e , t ) ) , Wt . test ( a ) && _t . test ( t ) && ( r = s . width , i = s . minWidth , o = s . maxWidth , s . minWidth = s . maxWidth = s . width = a , a = n . width , s . width = r , s . minWidth = i , s . maxWidth = o ) ) , void 0 !== a ? a + "" : a } function k ( e , t ) { return { get : function ( ) { return e ( ) ? void delete this . get : ( this . get = t ) . apply ( this , arguments ) } } } function C ( e , t ) { if ( t in e ) return t ; for ( var n = t [ 0 ] . toUpperCase ( ) + t . slice ( 1 ) , r = t , i = Kt . length ; i -- ; ) if ( t = Kt [ i ] + n , t in e ) return t ; return r } function T ( e , t , n ) { var r = Xt . exec ( t ) ; return r ? Math . max ( 0 , r [ 1 ] - ( n || 0 ) ) + ( r [ 2 ] || "px" ) : t } function S ( e , t , n , r , i ) { for ( var o = n === ( r ? "border" : "content" ) ? 4 : "width" === t ? 1 : 0 , a = 0 ; 4 > o ; o += 2 ) "margin" === n && ( a += Z . css ( e , n + kt [ o ] , ! 0 , i ) ) , r ? ( "content" === n && ( a -= Z . css ( e , "padding" + kt [ o ] , ! 0 , i ) ) , "margin" !== n && ( a -= Z . css ( e , "border" + kt [ o ] + "Width" , ! 0 , i ) ) ) : ( a += Z . css ( e , "padding" + kt [ o ] , ! 0
} ) ) } , Z . fn . extend ( { find : function ( e ) { var t , n = this . length , r = [ ] , i = this ; if ( "string" != typeof e ) return this . pushStack ( Z ( e ) . filter ( function ( ) { for ( t = 0 ; n > t ; t ++ ) if ( Z . contains ( i [ t ] , this ) ) return ! 0 } ) ) ; for ( t = 0 ; n > t ; t ++ ) Z . find ( e , i [ t ] , r ) ; return r = this . pushStack ( n > 1 ? Z . 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 && ot . test ( e ) ? Z ( e ) : e || [ ] , ! 1 ) . length } } ) ; var ut , lt = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/ , ct = Z . fn . init = function ( e , t ) { var n , r ; if ( ! e ) return this ; if ( "string" == typeof e ) { if ( n = "<" === e [ 0 ] && ">" === e [ e . length - 1 ] && e . length >= 3 ? [ null , e , null ] : lt . exec ( e ) , ! n || ! n [ 1 ] && t ) return ! t || t . jquery ? ( t || ut ) . find ( e ) : this . constructor ( t ) . find ( e ) ; if ( n [ 1 ] ) { if ( t = t instanceof Z ? t [ 0 ] : t , Z . merge ( this , Z . parseHTML ( n [ 1 ] , t && t . nodeType ? t . ownerDocument || t : Q , ! 0 ) ) , at . test ( n [ 1 ] ) && Z . isPlainObject ( t ) ) for ( n in t ) Z . isFunction ( this [ n ] ) ? this [ n ] ( t [ n ] ) : this . attr ( n , t [ n ] ) ; return this } return r = Q . getElementById ( n [ 2 ] ) , r && r . parentNode && ( this . length = 1 , this [ 0 ] = r ) , this . context = Q , this . selector = e , this } return e . nodeType ? ( this . context = this [ 0 ] = e , this . length = 1 , this ) : Z . isFunction ( e ) ? "undefined" != typeof ut . ready ? ut . ready ( e ) : e ( Z ) : ( void 0 !== e . selector && ( this . selector = e . selector , this . context = e . context ) , Z . makeArray ( e , this ) ) } ; ct . prototype = Z . fn , ut = Z ( Q ) ; var dt = /^(?:parents|prev(?:Until|All))/ , ft = { children : ! 0 , contents : ! 0 , next : ! 0 , prev : ! 0 } ; Z . extend ( { dir : function ( e , t , n ) { for ( var r = [ ] , i = void 0 !== n ; ( e = e [ t ] ) && 9 !== e . nodeType ; ) if ( 1 === e . nodeType ) { if ( i && Z ( e ) . is ( n ) ) break ; r . push ( e ) } return r } , sibling : function ( e , t ) { for ( var n = [ ] ; e ; e = e . nextSibling ) 1 === e . nodeType && e !== t && n . push ( e ) ; return n } } ) , Z . fn . extend ( { has : function ( e ) { var t = Z ( e , this ) , n = t . length ; return this . filter ( function ( ) { for ( var e = 0 ; n > e ; e ++ ) if ( Z . contains ( this , t [ e ] ) ) return ! 0 } ) } , closest : function ( e , t ) { for ( var n , r = 0 , i = this . length , o = [ ] , a = ot . test ( e ) || "string" != typeof e ? Z ( e , t || this . context ) : 0 ; i > r ; r ++ ) for ( n = this [ r ] ; n && n !== t ; n = n . parentNode ) if ( n . nodeType < 11 && ( a ? a . index ( n ) > - 1 : 1 === n . nodeType && Z . find . matchesSelector ( n , e ) ) ) { o . push ( n ) ; break } return this . pushStack ( o . length > 1 ? Z . unique ( o ) : o ) } , index : function ( e ) { return e ? "string" == typeof e ? U . call ( Z ( e ) , this [ 0 ] ) : U . call ( this , e . jquery ? e [ 0 ] : e ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( e , t ) { return this . pushStack ( Z . unique ( Z . merge ( this . get ( ) , Z ( e , t ) ) ) ) } , addBack : function ( e ) { return this . add ( null == e ? this . prevObject : this . prevObject . filter ( e ) ) } } ) , Z . each ( { parent : function ( e ) { var t = e . parentNode ; return t && 11 !== t . nodeType ? t : null } , parents : function ( e ) { return Z . dir ( e , "parentNode" ) } , parentsUntil : function ( e , t , n ) { return Z . dir ( e , "parentNode" , n ) } , next : function ( e ) { return i ( e , "nextSibling" ) } , prev : function ( e ) { return i ( e , "previousSibling" ) } , nextAll : function ( e ) { return Z . dir ( e , "nextSibling" ) } , prevAll : function ( e ) { return Z . dir ( e , "previousSibling" ) } , nextUntil : function ( e , t , n ) { return Z . dir ( e , "nextSibling" , n ) } , prevUntil : function ( e , t , n ) { return Z . dir ( e , "previousSibling" , n ) } , siblings : function ( e ) { return Z . sibling ( ( e . parentNode || { } ) . firstChild , e ) } , children : function ( e ) { return Z . sibling ( e . firstChild ) } , contents : function ( e ) { return e . contentDocument || Z . merge ( [ ] , e . childNodes ) } } , function ( e , t ) { Z . fn [ e ] = function ( n , r ) { var i = Z . map ( this , t , n ) ; return "Until" !== e . slice ( - 5 ) && ( r = n ) , r && "string" == typeof r && ( i = Z . filter ( r , i ) ) , this . length > 1 && ( ft [ e ] || Z . unique ( i ) , dt . test ( e ) && i . reverse ( ) ) , this . pushStack ( i ) } } ) ; var pt = /\S+/g , ht = { } ; Z . Callbacks = function ( e ) { e = "string" == typeof e ? ht [ e ] || o ( e ) : Z . extend ( { } , e ) ; var t , n , r , i , a , s , u = [ ] , l = ! e . once && [ ] , c = function ( o ) { for ( t = e . memory && o , n = ! 0 , s = i || 0 , i = 0 , a = u . length , r = ! 0 ; u && a > s ; s ++ ) if ( u [ s ] . apply ( o [ 0 ] , o [ 1 ] ) === ! 1 && e . stopOnFalse ) { t = ! 1 ; break } r = ! 1 , u && ( l ? l . length && c ( l . shift ( ) ) : t ? u = [ ] : d . disable ( ) ) } , d = { add : function ( ) { if ( u ) { var n = u . length ; ! function o ( t ) { Z . each ( t , function ( t , n ) { var r = Z . type ( n ) ; "function" === r ? e . unique && d . has ( n ) || u . push ( n ) : n && n . length && "string" !== r && o ( n ) } ) } ( arguments ) , r ? a = u . length : t && ( i = n , c ( t ) ) } return this } , remove : function ( ) { return u && Z . each ( arguments , function ( e , t ) { for ( var n ; ( n = Z . inArray ( t , u , n ) ) > - 1 ; ) u . splice ( n , 1 ) , r && ( a >= n && a -- , s >= n && s -- ) } ) , this } , has : function ( e ) { return e ? Z . i
for ( t = 0 ; a > t ; t ++ ) r [ t ] && r [ t ] . finish && r [ t ] . finish . call ( this ) ; delete n . finish } ) } } ) , Z . each ( [ "toggle" , "show" , "hide" ] , function ( e , t ) { var n = Z . fn [ t ] ; Z . fn [ t ] = function ( e , r , i ) { return null == e || "boolean" == typeof e ? n . apply ( this , arguments ) : this . animate ( j ( t , ! 0 ) , e , r , i ) } } ) , Z . each ( { slideDown : j ( "show" ) , slideUp : j ( "hide" ) , slideToggle : j ( "toggle" ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } , fadeToggle : { opacity : "toggle" } } , function ( e , t ) { Z . fn [ e ] = function ( e , n , r ) { return this . animate ( t , e , n , r ) } } ) , Z . timers = [ ] , Z . fx . tick = function ( ) { var e , t = 0 , n = Z . timers ; for ( Gt = Z . now ( ) ; t < n . length ; t ++ ) e = n [ t ] , e ( ) || n [ t ] !== e || n . splice ( t -- , 1 ) ; n . length || Z . fx . stop ( ) , Gt = void 0 } , Z . fx . timer = function ( e ) { Z . timers . push ( e ) , e ( ) ? Z . fx . start ( ) : Z . timers . pop ( ) } , Z . fx . interval = 13 , Z . fx . start = function ( ) { Qt || ( Qt = setInterval ( Z . fx . tick , Z . fx . interval ) ) } , Z . fx . stop = function ( ) { clearInterval ( Qt ) , Qt = null } , Z . fx . speeds = { slow : 600 , fast : 200 , _default : 400 } , Z . fn . delay = function ( e , t ) { return e = Z . fx ? Z . fx . speeds [ e ] || e : e , t = t || "fx" , this . queue ( t , function ( t , n ) { var r = setTimeout ( t , e ) ; n . stop = function ( ) { clearTimeout ( r ) } } ) } , function ( ) { var e = Q . createElement ( "input" ) , t = Q . createElement ( "select" ) , n = t . appendChild ( Q . createElement ( "option" ) ) ; e . type = "checkbox" , G . checkOn = "" !== e . value , G . optSelected = n . selected , t . disabled = ! 0 , G . optDisabled = ! n . disabled , e = Q . createElement ( "input" ) , e . value = "t" , e . type = "radio" , G . radioValue = "t" === e . value } ( ) ; var rn , on , an = Z . expr . attrHandle ; Z . fn . extend ( { attr : function ( e , t ) { return mt ( this , Z . attr , e , t , arguments . length > 1 ) } , removeAttr : function ( e ) { return this . each ( function ( ) { Z . removeAttr ( this , e ) } ) } } ) , Z . extend ( { attr : function ( e , t , n ) { var r , i , o = e . nodeType ; return e && 3 !== o && 8 !== o && 2 !== o ? typeof e . getAttribute === St ? Z . prop ( e , t , n ) : ( 1 === o && Z . isXMLDoc ( e ) || ( t = t . toLowerCase ( ) , r = Z . attrHooks [ t ] || ( Z . expr . match . bool . test ( t ) ? on : rn ) ) , void 0 === n ? r && "get" in r && null !== ( i = r . get ( e , t ) ) ? i : ( i = Z . find . attr ( e , t ) , null == i ? void 0 : i ) : null !== n ? r && "set" in r && void 0 !== ( i = r . set ( e , n , t ) ) ? i : ( e . setAttribute ( t , n + "" ) , n ) : void Z . removeAttr ( e , t ) ) : void 0 } , removeAttr : function ( e , t ) { var n , r , i = 0 , o = t && t . match ( pt ) ; if ( o && 1 === e . nodeType ) for ( ; n = o [ i ++ ] ; ) r = Z . propFix [ n ] || n , Z . expr . match . bool . test ( n ) && ( e [ r ] = ! 1 ) , e . removeAttribute ( n ) } , attrHooks : { type : { set : function ( e , t ) { if ( ! G . radioValue && "radio" === t && Z . nodeName ( e , "input" ) ) { var n = e . value ; return e . setAttribute ( "type" , t ) , n && ( e . value = n ) , t } } } } } ) , on = { set : function ( e , t , n ) { return t === ! 1 ? Z . removeAttr ( e , n ) : e . setAttribute ( n , n ) , n } } , Z . each ( Z . expr . match . bool . source . match ( /\w+/g ) , function ( e , t ) { var n = an [ t ] || Z . find . attr ; an [ t ] = function ( e , t , r ) { var i , o ; return r || ( o = an [ t ] , an [ t ] = i , i = null != n ( e , t , r ) ? t . toLowerCase ( ) : null , an [ t ] = o ) , i } } ) ; var sn = /^(?:input|select|textarea|button)$/i ; Z . fn . extend ( { prop : function ( e , t ) { return mt ( this , Z . prop , e , t , arguments . length > 1 ) } , removeProp : function ( e ) { return this . each ( function ( ) { delete this [ Z . propFix [ e ] || e ] } ) } } ) , Z . extend ( { propFix : { "for" : "htmlFor" , "class" : "className" } , prop : function ( e , t , n ) { var r , i , o , a = e . nodeType ; return e && 3 !== a && 8 !== a && 2 !== a ? ( o = 1 !== a || ! Z . isXMLDoc ( e ) , o && ( t = Z . propFix [ t ] || t , i = Z . 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 ) { return e . hasAttribute ( "tabindex" ) || sn . test ( e . nodeName ) || e . href ? e . tabIndex : - 1 } } } } ) , G . optSelected || ( Z . propHooks . selected = { get : function ( e ) { var t = e . parentNode ; return t && t . parentNode && t . parentNode . selectedIndex , null } } ) , Z . each ( [ "tabIndex" , "readOnly" , "maxLength" , "cellSpacing" , "cellPadding" , "rowSpan" , "colSpan" , "useMap" , "frameBorder" , "contentEditable" ] , function ( ) { Z . propFix [ this . toLowerCase ( ) ] = this } ) ; var un = /[\t\r\n\f]/g ; Z . fn . extend ( { addClass : function ( e ) { var t , n , r , i , o , a , s = "string" == typeof e && e , u = 0 , l = this . length ; if ( Z . isFunction ( e ) ) return this . each ( function ( t ) { Z ( this ) . addClass ( e . call ( this , t , this . className ) ) } ) ; if ( s ) for ( t = ( e || "" ) . match ( pt ) || [ ] ; l > u ; u ++ ) if ( n = this [ u ] , r = 1 === n . nodeType && ( n . className ? ( " " + n . className + " " ) . replace ( un , " " ) : " " ) ) { for ( o = 0 ; i = t [ o ++ ] ; ) r . indexOf ( " " + i + " " ) < 0 && ( r += i + " " ) ; a = Z . trim ( r ) , n . className !== a && ( n . className = a ) } return this } , removeClass : function ( e ) { var t , n , r , i , o , a , s = 0 === arguments . length || "string" == typeof e && e , u = 0 , l = this . length ; if ( Z . isFunction ( e ) ) return this . each ( function ( t ) { Z ( th
} , error : ajaxError } ) } , ajaxError = function ( e , t , n ) { console . log ( e ) , console . log ( t ) , console . log ( n ) } , window . build = { } , build . divider = function ( e ) { return "<div class='divider fadeIn'><h1>" + e + "</h1></div>" } , build . editIcon = function ( e ) { return "<div id='" + e + "' class='edit'><a class='icon-pencil'></a></div>" } , build . multiselect = function ( e , t ) { return "<div id='multiselect' style='top: " + e + "px; left: " + t + "px;'></div>" } , build . album = function ( e ) { var t , n , r , i ; return null == e ? "" : ( r = e . title , n = "" , i = "" , null != r && r . length > 18 && ( r = e . title . substr ( 0 , 18 ) + "..." , n = e . title ) , "svg" === e . thumb0 . split ( "." ) . pop ( ) && ( i = "nonretina" ) , t = "<div class='album' data-id='" + e . id + "' data-password='" + e . password + "'>\n <img src='" + e . thumb2 + "' width='200' height='200' alt='thumb' data-type='nonretina'>\n <img src='" + e . thumb1 + "' width='200' height='200' alt='thumb' data-type='nonretina'>\n <img src='" + e . thumb0 + "' width='200' height='200' alt='thumb' data-type='" + i + "'>\n <div class='overlay'>" , t += e . password && lychee . publicMode === ! 1 ? "<h1 title='" + n + "'><span class='icon-lock'></span> " + r + "</h1>" : "<h1 title='" + n + "'>" + r + "</h1>" , t += " <a>" + e . sysdate + "</a>\n</div>" , lychee . publicMode === ! 1 && ( "1" === e . star && ( t += "<a class='badge red icon-star'></a>" ) , "1" === e [ "public" ] && ( t += "<a class='badge red icon-share'></a>" ) , "1" === e . unsorted && ( t += "<a class='badge red icon-reorder'></a>" ) , "1" === e . recent && ( t += "<a class='badge red icon-time'></a>" ) ) , t += "</div>" ) } , build . photo = function ( e ) { var t , n , r ; return null == e ? "" : ( r = e . title , n = "" , null != r && r . length > 18 && ( r = e . title . substr ( 0 , 18 ) + "..." , n = e . title ) , t = "<div class='photo' data-album-id='" + e . album + "' data-id='" + e . id + "'>\n <img src='" + e . thumbUrl + "' width='200' height='200' alt='thumb'>\n <div class='overlay'>\n <h1 title='" + n + "'>" + r + "</h1>" , t += "1" === e . cameraDate ? "<a><span class='icon-camera' title='Photo Date'></span>" + e . sysdate + "</a>" : "<a>" + e . sysdate + "</a>" , t += "</div>" , "1" === e . star && ( t += "<a class='badge red icon-star'></a>" ) , lychee . publicMode === ! 1 && "1" === e [ "public" ] && "1" !== album . json [ "public" ] && ( t += "<a class='badge red icon-share'></a>" ) , t += "</div>" ) } , build . imageview = function ( e , t , n ) { var r ; return null == e ? "" : ( r = "<div class='arrow_wrapper previous'><a id='previous' class='icon-caret-left'></a></div>\n<div class='arrow_wrapper next'><a id='next' class='icon-caret-right'></a></div>" , "big" === t ? r += n === ! 0 ? "<div id='image' style='background-image: url(" + e . url + ")'></div>" : "<div id='image' style='background-image: url(" + e . url + ");' class='full'></div>" : "medium" === t ? r += n === ! 0 ? "<div id='image' style='background-image: url(" + e . medium + ")'></div>" : "<div id='image' style='background-image: url(" + e . medium + ");' class='full'></div>" : "small" === t && ( r += n === ! 0 ? "<div id='image' class='small' style='background-image: url(" + e . url + "); width: " + e . width + "px; height: " + e . height + "px; margin-top: -" + parseInt ( e . height / 2 - 20 ) + "px; margin-left: -" + e . width / 2 + "px;'></div>" : "<div id='image' class='small' style='background-image: url(" + e . url + "); width: " + e . width + "px; height: " + e . height + "px; margin-top: -" + parseInt ( e . height / 2 ) + "px; margin-left: -" + e . width / 2 + "px;'></div>" ) , r ) } , build . no _content = function ( e ) { var t ; switch ( t = "<div class='no_content fadeIn'>\n <a class='icon icon-" + e + "'></a>" , e ) { case "search" : t += "<p>No results</p>" ; break ; case "share" : t += "<p>No public albums</p>" ; break ; case "cog" : t += "<p>No configuration</p>" } return t += "</div>" } , build . modal = function ( e , t , n , r , i ) { var o , a ; return o = null != r ? "style='margin-top: " + r + "px;'" : "" , a = "<div class='message_overlay fadeIn'>\n <div class='message center' " + o + ">\n <h1>" + e + "</h1>" , i !== ! 1 && ( a += "<a class='close icon-remove-sign'></a>" ) , a += "<p>" + t + "</p>" , $ . each ( n , function ( e ) { return "" !== this [ 0 ] ? a += 0 === e ? "<a class='button active'>" + this [ 0 ] + "</a>" : "<a class='button'>" + this [ 0 ] + "</a>" : void 0 } ) , a += " </div>\n</div>" } , build . signInModal = function ( ) { var e ; return e = " < div class = 'message_overlay' > \ n < div class = 'message center' > \ n < h1 > < a class = 'icon-lock' > < / a > S i g n I n < / h 1 > \ n < a c l a s s = ' c l o s e i c o n - r e m o v e - s i g n ' > < / a > \ n < d i v c l a s s = ' s i g n _ i n ' > \ n < i n p u t i d = ' u s e r n a m e ' t y p e = ' t e x t ' v a l u e = ' ' p l a c e h o l d e r = ' u s e r n a m e ' a u t o c a p i t a l i z e = ' o f f ' a u t o c o r r e c t = ' o f f ' > \ n < i n p u t i d = ' p a s s w o r d ' t y p e = ' p a s s w o r d ' v a l u e = ' ' p