diff --git a/.htaccess b/.htaccess index 9e201d3..257eede 100644 --- a/.htaccess +++ b/.htaccess @@ -1,10 +1,19 @@ IndexIgnore * +# --- # Uncomment these lines to change PHP parameters if you are using the PHP Apache module +# --- # # php_value max_execution_time 200 # php_value post_max_size 200M # php_value upload_max_size 200M # php_value upload_max_filesize 20M # php_value max_file_uploads 100 -# \ No newline at end of file +# + +# --- +# Uncomment these lines when you want to allow access to the Lychee API from different origins +# --- +#Header add Access-Control-Allow-Origin "*" +#Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" +#Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6faff3d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,37 @@ +## How to report a bug + +Read the following before reporting a bug on GitHub: + +1. Update to the newest version of Lychee +2. Update your Browser to the newest version +2. Take a look in the [FAQ](https://github.com/electerious/Lychee/blob/master/docs/FAQ.md) +3. Check if someone has [already reported](https://github.com/electerious/Lychee/issues) the same bug + +When reporting a bug on GitHub, make sure you include the following information: + +- Detailed description of the problem +- How to reproduce the issue (step-by-step) +- What you have already tried +- Output of the diagnostics (`plugins/check/index.php`) +- Browser and Browser version +- Attach files when you have problems which specific photos + +## Coding Guidelines + +Check if there are branches newer than `master`. Always fork the newest available branch. + +Please follow the conventions already established in the code. + +- **Spacing**:
+ Use tabs for indentation. No spaces. + +- **Naming**:
+ Keep variable and method names concise and descriptive. + +- **Quotes**:
+ Single-quoted strings are preferred to double-quoted strings + +- **Comments**:
+ Please use single-line comments to annotate significant additions. Use `#` for comments in PHP; `//` for comments in JS and CSS. + +Merge your changes when the forked branch has been updated in the meanwhile. Make sure your code is 100% working before creating a Pull-Request on GitHub. diff --git a/lychme.md b/README.md similarity index 97% rename from lychme.md rename to README.md index 344efe0..37d38f4 100644 --- a/lychme.md +++ b/README.md @@ -53,6 +53,7 @@ Here's a list of all available Plugins and Extensions: | Jekyll | Liquid tag for Jekyll sites that allows embedding Lychee albums | [More »](https://gist.github.com/tobru/9171700) | | lychee-redirect | Redirect from an album-name to a Lychee-album | [More »](https://github.com/electerious/lychee-redirect) | | lychee-watermark | Adds a second watermarked photo when uploading images | [More »](https://github.com/electerious/lychee-watermark) | +| lychee-rss | Creates a RSS-Feed out of your photos | [More »](https://github.com/cternes/Lychee-RSS) | ## Troubleshooting diff --git a/assets/js/album.js b/assets/js/album.js index affddad..573cad3 100644 --- a/assets/js/album.js +++ b/assets/js/album.js @@ -86,7 +86,7 @@ album = { }, - parse: function(photo) { + parse: function() { if (!album.json.title) album.json.title = "Untitled"; @@ -146,7 +146,7 @@ album = { if (visible.albums()) { - albumIDs.forEach(function(id, index, array) { + albumIDs.forEach(function(id) { albums.json.num--; view.albums.content.delete(id); delete albums.json.content[id] @@ -228,7 +228,7 @@ album = { } else if (visible.albums()) { - albumIDs.forEach(function(id, index, array) { + albumIDs.forEach(function(id) { albums.json.content[id].title = newTitle; view.albums.content.title(id); }); @@ -374,10 +374,11 @@ album = { getArchive: function(albumID) { - var link; + var link, + url = "php/api.php?function=getAlbumArchive&albumID=" + albumID; - if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", "php/api.php?function=getAlbumArchive&albumID=" + albumID); - else link = location.href.replace(location.hash, "") + "php/api.php?function=getAlbumArchive&albumID=" + albumID; + if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", url); + else link = location.href.replace(location.hash, "") + url; if (lychee.publicMode) link += "&password=" + password.value; diff --git a/assets/js/build.js b/assets/js/build.js index 762e3f7..375059a 100644 --- a/assets/js/build.js +++ b/assets/js/build.js @@ -302,7 +302,8 @@ build = { public, editTitleHTML, editDescriptionHTML, - infos; + infos, + exifHash = ""; infobox += "

About

"; infobox += "
"; @@ -337,7 +338,9 @@ build = { ["Tags", build.tags(photoJSON.tags, forView)] ]; - if ((photoJSON.takestamp+photoJSON.make+photoJSON.model+photoJSON.shutter+photoJSON.aperture+photoJSON.focal+photoJSON.iso)!="0") { + exifHash = photoJSON.takestamp+photoJSON.make+photoJSON.model+photoJSON.shutter+photoJSON.aperture+photoJSON.focal+photoJSON.iso; + + if (exifHash!="0"&&exifHash!=="null") { infos = infos.concat([ ["", "Camera"], diff --git a/assets/js/contextMenu.js b/assets/js/contextMenu.js index 8e0c528..2800539 100644 --- a/assets/js/contextMenu.js +++ b/assets/js/contextMenu.js @@ -164,6 +164,7 @@ contextMenu = { function() { photo.setStar([photoID]) }, function() { photo.editTags([photoID]) }, function() { photo.setTitle([photoID]) }, + function() { photo.duplicate([photoID]) }, function() { contextMenu.move([photoID], e, "right") }, function() { photo.delete([photoID]) } ]; @@ -173,8 +174,9 @@ contextMenu = { [" Tags", 1], ["separator", -1], [" Rename", 2], - [" Move", 3], - [" Delete", 4] + [" Duplicate", 3], + [" Move", 4], + [" Delete", 5] ]; contextMenu.show(items, mouse_x, mouse_y, "right"); @@ -195,6 +197,7 @@ contextMenu = { function() { photo.setStar(photoIDs) }, function() { photo.editTags(photoIDs) }, function() { photo.setTitle(photoIDs) }, + function() { photo.duplicate(photoIDs) }, function() { contextMenu.move(photoIDs, e, "right") }, function() { photo.delete(photoIDs) } ]; @@ -204,8 +207,9 @@ contextMenu = { [" Tag All", 1], ["separator", -1], [" Rename All", 2], - [" Move All", 3], - [" Delete All", 4] + [" Duplicate All", 3], + [" Move All", 4], + [" Delete All", 5] ]; contextMenu.show(items, mouse_x, mouse_y, "right"); @@ -266,7 +270,8 @@ contextMenu = { var mouse_x = e.pageX, mouse_y = e.pageY, - items; + items, + link = ""; mouse_y -= $(document).scrollTop(); diff --git a/assets/js/init.js b/assets/js/init.js index 531a423..88288ee 100755 --- a/assets/js/init.js +++ b/assets/js/init.js @@ -104,6 +104,10 @@ $(document).ready(function(){ .bind(['command+backspace', 'ctrl+backspace'], function() { if (visible.photo()&&!visible.message()) photo.delete([photo.getID()]); else if (visible.album()&&!visible.message()) album.delete([album.getID()]); + }) + .bind(['command+a', 'ctrl+a'], function() { + if (visible.album()&&!visible.message()) multiselect.selectAll(); + else if (visible.albums()&&!visible.message()) multiselect.selectAll(); }); Mousetrap.bindGlobal('enter', function() { diff --git a/assets/js/lychee.js b/assets/js/lychee.js index 9b1ff76..2d93e95 100644 --- a/assets/js/lychee.js +++ b/assets/js/lychee.js @@ -8,8 +8,8 @@ var lychee = { title: "", - version: "2.6.1", - version_code: "020601", + version: "2.6.2", + version_code: "020602", api_path: "php/api.php", update_path: "http://lychee.electerious.com/version/index.php", @@ -149,7 +149,7 @@ var lychee = { logout: function() { - lychee.api("logout", function(data) { + lychee.api("logout", function() { window.location.reload(); }); diff --git a/assets/js/multiselect.js b/assets/js/multiselect.js index cca4ad1..69be00c 100644 --- a/assets/js/multiselect.js +++ b/assets/js/multiselect.js @@ -9,31 +9,70 @@ multiselect = { position: { - top: null, - right: null, - bottom: null, - left: null + top: null, + right: null, + bottom: null, + left: null }, show: function(e) { - if (mobileBrowser()) return false; - if (lychee.publicMode) return false; - if (visible.search()) return false; - if ($('.album:hover, .photo:hover').length!==0) return false; - if (visible.multiselect()) $('#multiselect').remove(); + if (mobileBrowser()) return false; + if (lychee.publicMode) return false; + if (visible.search()) return false; + if (visible.infobox()) return false; + if (!visible.albums()&&!visible.album) return false; + if ($('.album:hover, .photo:hover').length!==0) return false; + if (visible.multiselect()) $('#multiselect').remove(); - multiselect.position.top = e.pageY; - multiselect.position.right = -1 * (e.pageX - $(document).width()); - multiselect.position.bottom = -1 * (multiselect.position.top - $(window).height()); - multiselect.position.left = e.pageX; + multiselect.position.top = e.pageY; + multiselect.position.right = -1 * (e.pageX - $(document).width()); + multiselect.position.bottom = -1 * (multiselect.position.top - $(window).height()); + multiselect.position.left = e.pageX; $('body').append(build.multiselect(multiselect.position.top, multiselect.position.left)); $(document).on('mousemove', multiselect.resize); }, + selectAll: function() { + + var e, + newWidth, + newHeight; + + if (mobileBrowser()) return false; + if (lychee.publicMode) return false; + if (visible.search()) return false; + if (visible.infobox()) return false; + if (!visible.albums()&&!visible.album) return false; + if (visible.multiselect()) $('#multiselect').remove(); + + multiselect.position.top = 70; + multiselect.position.right = 40; + multiselect.position.bottom = 90; + multiselect.position.left = 20; + + $('body').append(build.multiselect(multiselect.position.top, multiselect.position.left)); + + newWidth = $(document).width() - multiselect.position.right + 2; + newHeight = $(document).height() - multiselect.position.bottom; + + $('#multiselect').css({ + width: newWidth, + height: newHeight + }); + + e = { + pageX: $(document).width() - (multiselect.position.right / 2), + pageY: $(document).height() - multiselect.position.bottom + }; + + multiselect.getSelection(e); + + }, + resize: function(e) { var mouse_x = e.pageX, @@ -49,7 +88,7 @@ multiselect = { if (mouse_y>=multiselect.position.top) { // Do not leave the screen - newHeight = e.pageY - multiselect.position.top; + newHeight = mouse_y - multiselect.position.top; if ((multiselect.position.top+newHeight)>=$(document).height()) newHeight -= (multiselect.position.top + newHeight) - $(document).height() + 2; @@ -72,7 +111,7 @@ multiselect = { if (mouse_x>=multiselect.position.left) { // Do not leave the screen - newWidth = e.pageX - multiselect.position.left; + newWidth = mouse_x - multiselect.position.left; if ((multiselect.position.left+newWidth)>=$(document).width()) newWidth -= (multiselect.position.left + newWidth) - $(document).width() + 2; @@ -105,10 +144,10 @@ multiselect = { if (!visible.multiselect()) return false; return { - top: $('#multiselect').offset().top, - left: $('#multiselect').offset().left, - width: parseInt($('#multiselect').css('width').replace('px', '')), - height: parseInt($('#multiselect').css('height').replace('px', '')) + top: $('#multiselect').offset().top, + left: $('#multiselect').offset().left, + width: parseInt($('#multiselect').css('width').replace('px', '')), + height: parseInt($('#multiselect').css('height').replace('px', '')) }; }, @@ -135,7 +174,7 @@ multiselect = { id = $(this).data('id'); - if (id!=='0'&&id!==0&&id!=='f'&&id!=='s'&&id!=='r'&&id!==null&id!==undefined) { + if (id!=='0'&&id!==0&&id!=='f'&&id!=='s'&&id!=='r'&&id!==null&&id!==undefined) { ids.push(id); $(this).addClass('active'); @@ -156,10 +195,10 @@ multiselect = { multiselect.stopResize(); - multiselect.position.top = null; - multiselect.position.right = null; - multiselect.position.bottom = null; - multiselect.position.left = null; + multiselect.position.top = null; + multiselect.position.right = null; + multiselect.position.bottom = null; + multiselect.position.left = null; lychee.animate('#multiselect', 'fadeOut'); setTimeout(function() { diff --git a/assets/js/photo.js b/assets/js/photo.js index fe3578a..aa0ad51 100644 --- a/assets/js/photo.js +++ b/assets/js/photo.js @@ -132,6 +132,23 @@ photo = { }, + duplicate: function(photoIDs) { + + var params; + + if (!photoIDs) return false; + if (photoIDs instanceof Array===false) photoIDs = [photoIDs]; + + params = "duplicatePhoto&photoIDs=" + photoIDs; + lychee.api(params, function(data) { + + if (data!==true) lychee.error(null, params, data); + else album.load(album.getID(), false); + + }); + + }, + delete: function(photoIDs) { var params, @@ -151,6 +168,9 @@ photo = { buttons = [ ["", function() { + var nextPhoto, + previousPhoto; + photoIDs.forEach(function(id, index, array) { // Change reference for the next and previous photo @@ -519,10 +539,11 @@ photo = { getArchive: function(photoID) { - var link; + var link, + url = "php/api.php?function=getPhotoArchive&photoID=" + photoID; - if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", "php/api.php?function=getPhotoArchive&photoID=" + photoID); - else link = location.href.replace(location.hash, "") + "php/api.php?function=getPhotoArchive&photoID=" + photoID; + if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", url); + else link = location.href.replace(location.hash, "") + url; if (lychee.publicMode) link += "&password=" + password.value; @@ -538,8 +559,10 @@ photo = { getViewLink: function(photoID) { - if (location.href.indexOf("index.html")>0) return location.href.replace("index.html" + location.hash, "view.php?p=" + photoID); - else return location.href.replace(location.hash, "view.php?p=" + photoID); + var url = "view.php?p=" + photoID; + + if (location.href.indexOf("index.html")>0) return location.href.replace("index.html" + location.hash, url); + else return location.href.replace(location.hash, url); } diff --git a/assets/js/settings.js b/assets/js/settings.js index 79ad7e6..ccccfdb 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -13,21 +13,23 @@ var settings = { dbUser, dbPassword, dbHost, + dbTablePrefix, buttons, params; buttons = [ ["Connect", function() { - dbHost = $(".message input.text#dbHost").val(); - dbUser = $(".message input.text#dbUser").val(); - dbPassword = $(".message input.text#dbPassword").val(); - dbName = $(".message input.text#dbName").val(); + dbHost = $(".message input.text#dbHost").val(); + dbUser = $(".message input.text#dbUser").val(); + dbPassword = $(".message input.text#dbPassword").val(); + dbName = $(".message input.text#dbName").val(); + dbTablePrefix = $(".message input.text#dbTablePrefix").val(); if (dbHost.length<1) dbHost = "localhost"; if (dbName.length<1) dbName = "lychee"; - params = "dbCreateConfig&dbName=" + escape(dbName) + "&dbUser=" + escape(dbUser) + "&dbPassword=" + escape(dbPassword) + "&dbHost=" + escape(dbHost); + params = "dbCreateConfig&dbName=" + escape(dbName) + "&dbUser=" + escape(dbUser) + "&dbPassword=" + escape(dbPassword) + "&dbHost=" + escape(dbHost) + "&dbTablePrefix=" + escape(dbTablePrefix); lychee.api(params, function(data) { if (data!==true) { @@ -94,7 +96,7 @@ var settings = { ["", function() {}] ]; - modal.show("Configuration", "Enter your database connection details below:
Lychee will create its own database. If required, you can enter the name of an existing database instead:", buttons, -215, false); + modal.show("Configuration", "Enter your database connection details below:
Lychee will create its own database. If required, you can enter the name of an existing database instead:", buttons, -235, false); }, diff --git a/assets/js/upload.js b/assets/js/upload.js index f96beab..9a740db 100755 --- a/assets/js/upload.js +++ b/assets/js/upload.js @@ -12,7 +12,7 @@ upload = { upload.close(true); $("body").append(build.uploadModal(title, files)); - if (callback!=null&&callback!=undefined) callback(); + if (callback!==null&&callback!==undefined) callback(); }, @@ -101,6 +101,7 @@ upload = { formData.append("function", "upload"); formData.append("albumID", albumID); + formData.append("tags", ""); formData.append(0, file); xhr.open("POST", lychee.api_path); diff --git a/assets/min/main.css b/assets/min/main.css old mode 100644 new mode 100755 index d36b0a5..5822348 --- a/assets/min/main.css +++ b/assets/min/main.css @@ -1 +1 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.contentZoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1);animation-timing-function:cubic-bezier(0.51,.92,.24,1)}.contentZoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1);animation-timing-function:cubic-bezier(0.51,.92,.24,1)}@-webkit-keyframes moveUp{0%{-webkit-transform:translateY(100px);transform:translateY(100px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes moveUp{0%{-webkit-transform:translateY(100px);transform:translateY(100px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes popIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes popIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes pulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}@keyframes pulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}#content::before{content:"";position:absolute;left:0;width:100%;height:20px;background:-webkit-linear-gradient(top,#262626,#222);background:linear-gradient(to bottom,#262626,#222);border-top:1px solid #333}#content.view::before{display:none}#content{position:absolute;padding:50px 0 33px;width:100%;min-height:-webkit-calc(100% - 90px);min-height:calc(100% - 90px);-webkit-overflow-scrolling:touch}.photo{float:left;display:inline-block;width:206px;height:206px;margin:30px 0 0 30px;cursor:pointer}.photo img{position:absolute;width:200px;height:200px;background-color:#222;border-radius:2px;border:2px solid #ccc}.photo.active img,.photo:hover img{box-shadow:0 0 5px #005ecc}.photo:active{-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.album{float:left;display:inline-block;width:204px;height:204px;margin:30px 0 0 30px;cursor:pointer}.album img:first-child,.album img:nth-child(2){-webkit-transform:rotate(0deg) translateY(0px) translateX(0px);-ms-transform:rotate(0deg) translateY(0px) translateX(0px);transform:rotate(0deg) translateY(0px) translateX(0px);opacity:0}.album:hover img:first-child{-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px);opacity:1}.album:hover img:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px);opacity:1}.album img{position:absolute;width:200px;height:200px;background-color:#222;border-radius:2px;border:2px solid #ccc}.album.active img,.album:hover img{box-shadow:0 0 5px #005ecc}.album .overlay,.photo .overlay{position:absolute;width:200px;height:200px;margin:2px}.album .overlay{background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0) 40%,rgba(0,0,0,.85) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,0) 40%,rgba(0,0,0,.85) 100%)}.photo .overlay{background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0) 60%,rgba(0,0,0,.5) 80%,rgba(0,0,0,.9) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,0) 60%,rgba(0,0,0,.5) 80%,rgba(0,0,0,.9) 100%);opacity:0}.photo.active .overlay,.photo:hover .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:185px;margin:153px 0 3px 15px;color:#fff;font-size:16px;font-weight:700;overflow:hidden}.album .overlay a,.photo .overlay a{font-size:11px;color:#aaa}.album .overlay a{margin-left:15px}.photo .overlay a{margin:155px 0 5px 15px}.photo .overlay a span{margin:0 5px 0 0}.album .badge,.photo .badge{position:absolute;margin-top:-1px;margin-left:12px;padding:12px 7px 3px;box-shadow:0 0 3px rgba(0,0,0,.8);border-radius:0 0 3px 3px;border:1px solid #fff;border-top:none;color:#fff;font-size:24px;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge.icon-star,.photo .badge.icon-star{padding:12px 8px 3px}.album .badge.icon-share,.photo .badge.icon-share{padding:12px 6px 3px 8px}.album .badge.icon-time,.photo .badge.icon-time{padding:12px 8px 3px 9px}.album .badge::after,.photo .badge::after{content:"";position:absolute;margin-top:-12px;margin-left:-26px;width:38px;height:5px;background:-webkit-linear-gradient(top,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%);background:linear-gradient(to bottom,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%);opacity:.4}.album .badge.icon-star::after,.photo .badge.icon-star::after{margin-left:-29px}.album .badge.icon-share::after,.photo .badge.icon-share::after{margin-left:-31px}.album .badge.icon-time::after,.photo .badge.icon-time::after{margin-left:-29px}.album .badge.icon-reorder::after{margin-left:-30px}.album .badge:nth-child(2n),.photo .badge:nth-child(2n){margin-left:57px}.album .badge.red,.photo .badge.red{background:-webkit-linear-gradient(top,#d64b4b 0,#ab2c2c 100%);background:linear-gradient(to bottom,#d64b4b 0,#ab2c2c 100%)}.album .badge.blue,.photo .badge.blue{background:-webkit-linear-gradient(top,#347cd6 0,#2945ab 100%);background:linear-gradient(to bottom,#347cd6 0,#2945ab 100%)}.divider{float:left;width:100%;margin-top:50px;opacity:0;border-top:1px solid #2E2E2E;box-shadow:0 -1px 0 #151515}.divider:first-child{margin-top:0;border-top:none}.divider h1{float:left;margin:20px 0 0 30px;color:#fff;font-size:14px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.8)}.no_content{position:absolute;top:50%;left:50%;height:160px;width:180px;margin-top:-60px;margin-left:-90px;padding-top:20px;color:rgba(20,20,20,1);text-shadow:0 1px 0 rgba(255,255,255,.05);text-align:center}.no_content .icon{font-size:80px}.no_content p{font-size:18px;font-weight:700}.contextmenu_bg{position:fixed;height:100%;width:100%;z-index:1000}.contextmenu{position:fixed;top:0;left:0;padding:5px 0 6px;background:-webkit-linear-gradient(top,#444 0,#2f2f2f 100%);background:linear-gradient(to bottom,#444 0,#2f2f2f 100%);border:1px solid rgba(0,0,0,.5);border-bottom:1px solid rgba(0,0,0,.7);border-radius:5px;box-shadow:0 3px 4px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.1);opacity:0;z-index:1001;-webkit-transition:none;transition:none}.contextmenu tr{font-size:14px;color:#eee;text-shadow:0 -1px 0 rgba(0,0,0,.2);cursor:pointer}.contextmenu tr:hover{background:-webkit-linear-gradient(top,#6a84f2,#4967F0);background:linear-gradient(to bottom,#6a84f2,#4967F0)}.contextmenu tr.no_hover:hover{cursor:inherit;background-color:inherit;background-image:none}.contextmenu tr.separator{float:left;height:1px;width:100%;background-color:#1f1f1f;border-bottom:1px solid #4c4c4c;margin:5px 0;cursor:inherit}.contextmenu tr.separator:hover{background-color:#222;background-image:none}.contextmenu tr td{padding:7px 30px 6px 12px;white-space:nowrap;-webkit-transition:none;transition:none}.contextmenu tr:hover td{color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.05);text-shadow:0 -1px 0 rgba(0,0,0,.2)}.contextmenu tr.no_hover:hover td{box-shadow:none}.contextmenu tr a{float:left;width:10px;margin-right:10px;text-align:center}.contextmenu #link{float:right;width:140px;margin:-1px -18px -2px -1px;padding:5px 7px 6px;background-color:#444;color:#fff;border:none;border:1px solid rgba(0,0,0,.5);box-shadow:0 1px 0 rgba(255,255,255,.08);outline:0;border-radius:5px}.contextmenu tr a#link_icon{padding-top:4px}@font-face{font-family:FontAwesome;src:url(../font/fontawesome-webfont.eot);src:url(../font/fontawesome-webfont.eot?#iefix) format('eot'),url(../font/fontawesome-webfont.woff) format('woff'),url(../font/fontawesome-webfont.ttf) format('truetype'),url(../font/fontawesome-webfont.svg#FontAwesome) format('svg');font-weight:400;font-style:normal}[class*=" icon-"]:before,[class^=icon-]:before{font-family:FontAwesome;font-weight:400;font-style:normal;display:inline-block;text-decoration:inherit}a [class*=" icon-"],a [class^=icon-]{display:inline-block;text-decoration:inherit}.icon-large:before{vertical-align:top;font-size:1.3333333333333333em}.btn [class*=" icon-"],.btn [class^=icon-]{line-height:.9em}li [class*=" icon-"],li [class^=icon-]{display:inline-block;width:1.25em;text-align:center}li .icon-large[class*=" icon-"],li .icon-large[class^=icon-]{width:1.875em}li[class*=" icon-"],li[class^=icon-]{margin-left:0;list-style-type:none}li[class*=" icon-"]:before,li[class^=icon-]:before{text-indent:-2em;text-align:center}li[class*=" icon-"].icon-large:before,li[class^=icon-].icon-large:before{text-indent:-1.3333333333333333em}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope-alt:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-user-md:before{content:"\f200"}header{position:fixed;height:49px;width:100%;background:-webkit-linear-gradient(top,#3E3E3E,#282828);background:linear-gradient(to bottom,#3E3E3E,#282828);border-bottom:1px solid #161616;z-index:1;-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}header.hidden{-webkit-transform:translateY(-60px);-ms-transform:translateY(-60px);transform:translateY(-60px)}header.loading{-webkit-transform:translateY(2px);-ms-transform:translateY(2px);transform:translateY(2px)}header.error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}header.view.error{background-color:rgba(10,10,10,.99)}header.view{background:0 0;border-bottom:none}header.view #title,header.view .button,header.view .tools{text-shadow:none!important}header #title{position:absolute;margin:0 30%;width:40%;padding:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;text-shadow:0 -1px 0 #222}header #title.editable{cursor:pointer}header .button{color:#888;font-family:FontAwesome;font-size:21px;font-weight:700;text-decoration:none!important;cursor:pointer;text-shadow:0 -1px 0 #222}header .button.left{float:left;position:absolute;padding:16px 10px 8px 18px}header .button.right{float:right;position:relative;padding:16px 19px 13px 11px}header .button:hover{color:#fff}header #button_signin,header #tools_album,header #tools_albums,header #tools_photo{display:none}header .button_divider{float:right;position:relative;width:14px;height:50px}header #search{float:right;width:80px;margin:12px 12px 0 0;padding:5px 12px 6px;background-color:#383838;color:#fff;border:none;border:1px solid #131313;box-shadow:0 1px 0 rgba(255,255,255,.1);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,-webkit-transform .3s ease-out,box-shadow .3s,width .2s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,width .2s ease-out}header #search:focus{width:140px}header #search:focus~#clearSearch{opacity:1}header #clearSearch{position:absolute;top:15px;right:81px;padding:0;font-size:20px;opacity:0;-webkit-transition:opacity .2s ease-out;transition:opacity .2s ease-out}header #clearSearch:hover{opacity:1}header .tools:first-of-type{margin-right:6px}header .tools{float:right;padding:14px 8px;color:#888;font-size:21px;text-shadow:0 -1px 0 #222;cursor:pointer}header .tools:hover a{color:#fff}header .tools .icon-star{color:#f0ef77}header .tools .icon-share.active{color:#ff9737}header #hostedwith{float:right;padding:5px 10px;margin:13px 9px;color:#888;font-size:13px;text-shadow:0 -1px 0 #222;display:none;cursor:pointer}header #hostedwith:hover{background-color:rgba(0,0,0,.2);border-radius:100px}#imageview{position:fixed;display:none;width:100%;min-height:100%;background-color:rgba(10,10,10,.98);-webkit-transition:background-color .3s;transition:background-color .3s}#imageview.view{background-color:inherit}#imageview.full{background-color:rgba(0,0,0,1)}#imageview #image{position:absolute;top:60px;right:30px;bottom:30px;left:30px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,margin-top .3s,opacity .2s,-webkit-transform .3s cubic-bezier(0.51,.92,.24,1.15);transition:top .3s,right .3s,bottom .3s,left .3s,margin-top .3s,opacity .2s,transform .3s cubic-bezier(0.51,.92,.24,1.15);-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}#imageview #image.small{top:50%;right:auto;bottom:auto;left:50%}#imageview #image.full{top:0;right:0;bottom:0;left:0}#imageview .arrow_wrapper{position:fixed;width:20%;height:-webkit-calc(100% - 60px);height:calc(100% - 60px);top:60px;z-index:1}#imageview .arrow_wrapper.previous{left:0}#imageview .arrow_wrapper.next{right:0}#imageview .arrow_wrapper a{position:fixed;top:50%;margin-top:-10px;color:#fff;font-size:50px;text-shadow:0 1px 2px #000;cursor:pointer;opacity:0;z-index:2;-webkit-transition:opacity .2s;transition:opacity .2s}#imageview .arrow_wrapper:hover a{opacity:.2}#imageview .arrow_wrapper a#previous{left:20px}#imageview .arrow_wrapper a#next{right:20px}#infobox_overlay{z-index:3;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.8)}#infobox{z-index:4;position:fixed;right:0;width:350px;height:100%;background-color:rgba(20,20,20,.98);box-shadow:-1px 0 2px rgba(0,0,0,.8);display:none;-webkit-transform:translateX(370px);-ms-transform:translateX(370px);transform:translateX(370px);-webkit-transition:-webkit-transform .3s cubic-bezier(0.51,.92,.24,1.15);transition:transform .3s cubic-bezier(0.51,.92,.24,1.15)}#infobox.active{-webkit-transform:translateX(50px);-ms-transform:translateX(50px);transform:translateX(50px)}#infobox .wrapper{float:left;height:100%;width:300px;overflow:scroll;-webkit-overflow-scrolling:touch}#infobox .edit{display:inline;margin-left:3px;width:20px;height:5px;cursor:pointer}#infobox .bumper{float:left;width:100%;height:50px}#infobox .header{float:left;height:49px;width:100%;background-image:-webkit-linear-gradient(top,#2A2A2A,#131313);background-image:linear-gradient(to bottom,#2A2A2A,#131313);border-bottom:1px solid #000}#infobox .header h1{position:absolute;margin:15px 30% 15px -webkit-calc(30% - 25px);margin:15px 30% 15px calc(30% - 25px);width:40%;color:#fff;font-size:16px;font-weight:700;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.8)}#infobox .header a{float:right;padding:15px 65px 15px 15px;color:#fff;font-size:20px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.8);opacity:.5;cursor:pointer}#infobox .header a:hover{opacity:1}#infobox .separator{float:left;width:100%;border-top:1px solid rgba(255,255,255,.04);box-shadow:0 -1px 0 #000}#infobox .separator h1{margin:20px 0 5px 20px;color:#fff;font-size:14px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.8)}#infobox table{float:left;margin:10px 0 15px 20px}#infobox table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#infobox table tr td:first-child{width:110px}#infobox table tr td:last-child{padding-right:10px}#infobox #tags{width:-webkit-calc(100% - 40px);width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#infobox #tags .empty{font-size:14px;margin-bottom:8px}#infobox #tags .edit{display:inline-block}#infobox #tags .empty .edit{display:inline}#infobox .tag{float:left;padding:4px 7px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border:2px solid rgba(255,255,255,.3);border-radius:100px;font-size:12px;-webkit-transition:border .3s;transition:border .3s}#infobox .tag:hover{border:2px solid #aaa}#infobox .tag span{float:right;width:0;padding:0;margin:0 0 -2px;color:red;font-size:11px;cursor:pointer;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .3s,margin .3s,-webkit-transform .3s;transition:width .3s,margin .3s,transform .3s}#infobox .tag:hover span{width:10px;margin:0 0 -2px 6px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#loading{position:fixed;width:100%;height:3px;background-size:100px 3px;background-repeat:repeat-x;border-bottom:1px solid rgba(0,0,0,.3);display:none;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#loading.loading{background-image:-webkit-linear-gradient(left,#153674 0,#153674 47%,#2651AE 53%,#2651AE 100%);background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651AE 53%,#2651AE 100%);z-index:2}#loading.error{background-color:#2f0d0e;background-image:-webkit-linear-gradient(left,#451317 0,#451317 47%,#AA3039 53%,#AA3039 100%);background-image:linear-gradient(to right,#451317 0,#451317 47%,#AA3039 53%,#AA3039 100%);z-index:1}#loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#loading h1 span{margin-left:10px;font-weight:400;text-transform:none}@media only screen and (max-width:900px){#title{margin:0 20%!important;width:40%!important}#title.view{margin:0 20%!important;width:60%!important}#title span{display:none!important}}@media only screen and (max-width:640px){#title{display:none!important}#title.view{display:block!important;width:70%!important;margin:0 20% 0 10%!important}#button_archive,#button_move{display:none!important}.center{top:0!important;left:0!important}.album,.photo{margin:40px 0 0 50px!important}#imageview .arrow_wrapper{display:none!important}.message{position:fixed!important;width:100%!important;height:100%!important;margin:1px 0 0!important;border-radius:0!important;-webkit-animation:moveUp .3s!important;animation:moveUp .3s!important}.upload_message{margin-top:0!important;margin-left:0!important;width:100%!important}}.message_overlay{position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.85);z-index:1000}.message{position:absolute;display:inline-block;width:500px;margin-left:-250px;margin-top:-95px;background-color:#444;background-image:-webkit-linear-gradient(top,#4b4b4b,#2d2d2d);background-image:linear-gradient(to bottom,#4b4b4b,#2d2d2d);border-radius:5px;box-shadow:0 0 5px #000,inset 0 1px 0 rgba(255,255,255,.08);-webkit-animation-name:moveUp;animation-name:moveUp;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.message h1{float:left;width:100%;padding:12px 0;color:#fff;font-size:16px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.3);text-align:center}.message .close{position:absolute;top:0;right:0;padding:12px 14px 6px 7px;color:#aaa;font-size:20px;text-shadow:0 -1px 0 rgba(0,0,0,.3);cursor:pointer}.message .close:hover{color:#fff}.message p{float:left;width:90%;margin-top:1px;padding:12px 5% 15px;color:#eee;font-size:14px;text-shadow:0 -1px 0 rgba(0,0,0,.3);line-height:20px}.message p b{font-weight:700;color:#fff}.message p a{color:#eee;text-decoration:none;border-bottom:1px dashed #888}.message .button{float:right;margin:15px 15px 15px 0;padding:7px 10px 8px;color:#ccc;font-size:14px;font-weight:700;text-align:center;text-shadow:0 -1px 0 #222;border-radius:5px;border:1px solid rgba(0,0,0,.4);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 1px 0 rgba(255,255,255,.05);cursor:pointer}.message .button:first-of-type{margin:15px 5% 18px 0!important}.message .button.active{color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 1px 0 rgba(255,255,255,.1),0 0 4px #005ecc}.message .button:hover{background-image:-webkit-linear-gradient(top,#3c3c3c,#393939);background-image:linear-gradient(to bottom,#3c3c3c,#393939)}.message .button.pressed,.message .button:active{background-color:#393939;background-image:-webkit-linear-gradient(top,#393939,#3c3c3c);background-image:linear-gradient(to bottom,#393939,#3c3c3c)}.sign_in{float:left;width:100%;margin-top:1px;padding:5px 0;color:#eee;font-size:14px;text-shadow:0 -1px 0 #222;line-height:20px}.sign_in input{float:left;width:88%;padding:7px 1% 9px;margin:0 5%;background-color:transparent;color:#fff;text-shadow:0 -1px 0 #222;border:none;border-bottom:1px solid #222;box-shadow:0 1px 0 rgba(255,255,255,.1);border-radius:0;outline:0}.sign_in input:first-of-type{margin-bottom:10px}.sign_in input.error:focus{box-shadow:0 1px 0 rgba(204,0,7,.6)}.message #version{display:inline-block;margin-top:23px;margin-left:5%;color:#888;text-shadow:0 -1px 0 #111}.message #version span{display:none}.message #version span a{color:#888}.message input.text{float:left;width:-webkit-calc(100% - 10px);width:calc(100% - 10px);padding:17px 5px 9px;margin-top:10px;background-color:transparent;color:#fff;text-shadow:0 -1px 0 #222;border:none;box-shadow:0 1px 0 rgba(255,255,255,.1);border-bottom:1px solid #222;border-radius:0;outline:0}.message input.less{margin-bottom:-10px}.message input.more{margin-bottom:30px}.message .copylink{margin-bottom:20px}.message .choice{float:left;margin:12px 5%;width:90%;color:#fff}.message .choice input{float:left}.message .choice h2{float:left;margin:1px 0 0 8px;color:#fff;font-size:14px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.message .choice p{margin-top:2px;padding:0 5% 0 25px;color:#aaa;font-size:13px}.message .choice p input{width:100%;padding:10px 1px 9px;margin-top:10px}body,html{min-height:100%}body{background-color:#222;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}body.view{background-color:#0f0f0f}.center{position:absolute;left:50%;top:50%}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s}input{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid rgba(0,94,204,1);border-radius:3px;z-index:3}.tipsy{padding:4px;font-size:12px;position:absolute;z-index:100000;-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s}.tipsy-inner{padding:8px 10px 7px;color:#fff;max-width:200px;text-align:center;background:rgba(0,0,0,.8);border-radius:25px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed rgba(0,0,0,.8)}.tipsy-arrow-n{border-bottom-color:rgba(0,0,0,.8)}.tipsy-arrow-s{border-top-color:rgba(0,0,0,.8)}.tipsy-arrow-e{border-left-color:rgba(0,0,0,.8)}.tipsy-arrow-w{border-right-color:rgba(0,0,0,.8)}.tipsy-n .tipsy-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#upload{display:none}.upload_overlay{position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.85);z-index:1000}.upload_message{position:absolute;display:inline-block;width:450px;margin-left:-225px;margin-top:-170px;background-image:-webkit-linear-gradient(top,#4b4b4b,#2d2d2d);background-image:linear-gradient(to bottom,#4b4b4b,#2d2d2d);border-radius:5px;box-shadow:0 0 5px #000,inset 0 1px 0 rgba(255,255,255,.08),inset 1px 0 0 rgba(255,255,255,.03),inset -1px 0 0 rgba(255,255,255,.03);-webkit-animation-name:moveUp;animation-name:moveUp;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.upload_message h1{float:left;width:100%;padding:12px 0;color:#fff;font-size:16px;font-weight:700;text-shadow:0 -1px 0 #222;text-align:center}.upload_message .close{display:none;position:absolute;top:0;right:0;padding:11px 14px 6px 7px;color:#aaa;font-size:20px;text-shadow:0 -1px 0 #222;cursor:pointer}.upload_message .close:hover{color:#fff}.upload_message .rows{float:left;margin:3px 8px 8px;width:-webkit-calc(100% - 16px);width:calc(100% - 16px);height:300px;background-color:rgba(0,0,0,.5);overflow:hidden;overflow-y:scroll;border-radius:3px;box-shadow:inset 0 0 3px rgba(0,0,0,.8)}.upload_message .rows .row{float:left;display:inline-block;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.upload_message .rows .row:nth-child(2n){background-color:rgba(255,255,255,0)}.upload_message .rows .row a.name{float:left;padding:5px 10px;width:-webkit-calc(70% - 20px);width:calc(70% - 20px);color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.upload_message .rows .row a.status{float:left;padding:5px 10px;width:-webkit-calc(30% - 20px);width:calc(30% - 20px);color:rgba(255,255,255,.5);font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.upload_message .rows .row a.status.error,.upload_message .rows .row a.status.success{-webkit-animation:none;animation:none}.upload_message .rows .row a.status.error{color:#d51818}.upload_message .rows .row a.status.success{color:#2ad500}.upload_message .rows .row p.notice{display:none;float:left;padding:2px 10px 5px;width:-webkit-calc(100% - 20px);width:calc(100% - 20px);color:rgba(255,255,255,.5);font-size:12px;overflow:hidden;line-height:16px} \ No newline at end of file +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.contentZoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1);animation-timing-function:cubic-bezier(0.51,.92,.24,1)}.contentZoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1);animation-timing-function:cubic-bezier(0.51,.92,.24,1)}@-webkit-keyframes moveUp{0%{-webkit-transform:translateY(100px);transform:translateY(100px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes moveUp{0%{-webkit-transform:translateY(100px);transform:translateY(100px);opacity:0}100%{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8)}}@-webkit-keyframes popIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes popIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes pulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}@keyframes pulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}#content::before{content:"";position:absolute;left:0;width:100%;height:20px;background:-webkit-linear-gradient(top,#262626,#222);background:linear-gradient(to bottom,#262626,#222);border-top:1px solid #333}#content.view::before{display:none}#content{position:absolute;padding:50px 0 33px;width:100%;min-height:-webkit-calc(100% - 90px);min-height:calc(100% - 90px);-webkit-overflow-scrolling:touch}.photo{float:left;display:inline-block;width:206px;height:206px;margin:30px 0 0 30px;cursor:pointer}.photo img{position:absolute;width:200px;height:200px;background-color:#222;border-radius:2px;border:2px solid #ccc}.photo.active img,.photo:hover img{box-shadow:0 0 5px #005ecc}.photo:active{-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transform:scale(0.98);-ms-transform:scale(0.98);transform:scale(0.98)}.album{float:left;display:inline-block;width:204px;height:204px;margin:30px 0 0 30px;cursor:pointer}.album img:first-child,.album img:nth-child(2){-webkit-transform:rotate(0deg) translateY(0px) translateX(0px);-ms-transform:rotate(0deg) translateY(0px) translateX(0px);transform:rotate(0deg) translateY(0px) translateX(0px);opacity:0}.album:hover img:first-child{-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px);opacity:1}.album:hover img:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px);opacity:1}.album img{position:absolute;width:200px;height:200px;background-color:#222;border-radius:2px;border:2px solid #ccc}.album.active img,.album:hover img{box-shadow:0 0 5px #005ecc}.album .overlay,.photo .overlay{position:absolute;width:200px;height:200px;margin:2px}.album .overlay{background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0) 40%,rgba(0,0,0,.85) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,0) 40%,rgba(0,0,0,.85) 100%)}.photo .overlay{background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0) 60%,rgba(0,0,0,.5) 80%,rgba(0,0,0,.9) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,0) 60%,rgba(0,0,0,.5) 80%,rgba(0,0,0,.9) 100%);opacity:0}.photo.active .overlay,.photo:hover .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:185px;margin:153px 0 3px 15px;color:#fff;font-size:16px;font-weight:700;overflow:hidden}.album .overlay a,.photo .overlay a{font-size:11px;color:#aaa}.album .overlay a{margin-left:15px}.photo .overlay a{margin:155px 0 5px 15px}.photo .overlay a span{margin:0 5px 0 0}.album .badge,.photo .badge{position:absolute;margin-top:-1px;margin-left:12px;padding:12px 7px 3px;box-shadow:0 0 3px rgba(0,0,0,.8);border-radius:0 0 3px 3px;border:1px solid #fff;border-top:none;color:#fff;font-size:24px;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge.icon-star,.photo .badge.icon-star{padding:12px 8px 3px}.album .badge.icon-share,.photo .badge.icon-share{padding:12px 6px 3px 8px}.album .badge.icon-time,.photo .badge.icon-time{padding:12px 8px 3px 9px}.album .badge::after,.photo .badge::after{content:"";position:absolute;margin-top:-12px;margin-left:-26px;width:38px;height:5px;background:-webkit-linear-gradient(top,#000 0,rgba(0,0,0,0) 100%);background:linear-gradient(to bottom,#000 0,rgba(0,0,0,0) 100%);opacity:.4}.album .badge.icon-star::after,.photo .badge.icon-star::after{margin-left:-29px}.album .badge.icon-share::after,.photo .badge.icon-share::after{margin-left:-31px}.album .badge.icon-time::after,.photo .badge.icon-time::after{margin-left:-29px}.album .badge.icon-reorder::after{margin-left:-30px}.album .badge:nth-child(2n),.photo .badge:nth-child(2n){margin-left:57px}.album .badge.red,.photo .badge.red{background:-webkit-linear-gradient(top,#d64b4b 0,#ab2c2c 100%);background:linear-gradient(to bottom,#d64b4b 0,#ab2c2c 100%)}.album .badge.blue,.photo .badge.blue{background:-webkit-linear-gradient(top,#347cd6 0,#2945ab 100%);background:linear-gradient(to bottom,#347cd6 0,#2945ab 100%)}.divider{float:left;width:100%;margin-top:50px;opacity:0;border-top:1px solid #2E2E2E;box-shadow:0 -1px 0 #151515}.divider:first-child{margin-top:0;border-top:none}.divider h1{float:left;margin:20px 0 0 30px;color:#fff;font-size:14px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.8)}.no_content{position:absolute;top:50%;left:50%;height:160px;width:180px;margin-top:-60px;margin-left:-90px;padding-top:20px;color:#141414;text-shadow:0 1px 0 rgba(255,255,255,.05);text-align:center}.no_content .icon{font-size:80px}.no_content p{font-size:18px;font-weight:700}.contextmenu_bg{position:fixed;height:100%;width:100%;z-index:1000}.contextmenu{position:fixed;top:0;left:0;padding:5px 0 6px;background:-webkit-linear-gradient(top,#444 0,#2f2f2f 100%);background:linear-gradient(to bottom,#444 0,#2f2f2f 100%);border:1px solid rgba(0,0,0,.5);border-bottom:1px solid rgba(0,0,0,.7);border-radius:5px;box-shadow:0 3px 4px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.1);opacity:0;z-index:1001;-webkit-transition:none;transition:none}.contextmenu tr{font-size:14px;color:#eee;text-shadow:0 -1px 0 rgba(0,0,0,.2);cursor:pointer}.contextmenu tr:hover{background:-webkit-linear-gradient(top,#6a84f2,#4967F0);background:linear-gradient(to bottom,#6a84f2,#4967F0)}.contextmenu tr.no_hover:hover{cursor:inherit;background-color:inherit;background-image:none}.contextmenu tr.separator{float:left;height:1px;width:100%;background-color:#1f1f1f;border-bottom:1px solid #4c4c4c;margin:5px 0;cursor:inherit}.contextmenu tr.separator:hover{background-color:#222;background-image:none}.contextmenu tr td{padding:7px 30px 6px 12px;white-space:nowrap;-webkit-transition:none;transition:none}.contextmenu tr:hover td{color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.05);text-shadow:0 -1px 0 rgba(0,0,0,.2)}.contextmenu tr.no_hover:hover td{box-shadow:none}.contextmenu tr a{float:left;width:10px;margin-right:10px;text-align:center}.contextmenu #link{float:right;width:140px;margin:-1px -18px -2px -1px;padding:5px 7px 6px;background-color:#444;color:#fff;border:none;border:1px solid rgba(0,0,0,.5);box-shadow:0 1px 0 rgba(255,255,255,.08);outline:0;border-radius:5px}.contextmenu tr a#link_icon{padding-top:4px}@font-face{font-family:FontAwesome;src:url(../font/fontawesome-webfont.eot);src:url(../font/fontawesome-webfont.eot?#iefix) format('eot'),url(../font/fontawesome-webfont.woff) format('woff'),url(../font/fontawesome-webfont.ttf) format('truetype'),url(../font/fontawesome-webfont.svg#FontAwesome) format('svg');font-weight:400;font-style:normal}[class*=" icon-"]:before,[class^=icon-]:before{font-family:FontAwesome;font-weight:400;font-style:normal;display:inline-block;text-decoration:inherit}a [class*=" icon-"],a [class^=icon-]{display:inline-block;text-decoration:inherit}.icon-large:before{vertical-align:top;font-size:1.33333em}.btn [class*=" icon-"],.btn [class^=icon-]{line-height:.9em}li [class*=" icon-"],li [class^=icon-]{display:inline-block;width:1.25em;text-align:center}li .icon-large[class*=" icon-"],li .icon-large[class^=icon-]{width:1.875em}li[class*=" icon-"],li[class^=icon-]{margin-left:0;list-style-type:none}li[class*=" icon-"]:before,li[class^=icon-]:before{text-indent:-2em;text-align:center}li[class*=" icon-"].icon-large:before,li[class^=icon-].icon-large:before{text-indent:-1.33333em}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope-alt:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-user-md:before{content:"\f200"}header{position:fixed;height:49px;width:100%;background:-webkit-linear-gradient(top,#3E3E3E,#282828);background:linear-gradient(to bottom,#3E3E3E,#282828);border-bottom:1px solid #161616;z-index:1;-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}header.hidden{-webkit-transform:translateY(-60px);-ms-transform:translateY(-60px);transform:translateY(-60px)}header.loading{-webkit-transform:translateY(2px);-ms-transform:translateY(2px);transform:translateY(2px)}header.error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}header.view.error{background-color:rgba(10,10,10,.99)}header.view{background:0 0;border-bottom:none}header.view #title,header.view .button,header.view .tools{text-shadow:none!important}header #title{position:absolute;margin:0 30%;width:40%;padding:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;text-shadow:0 -1px 0 #222}header #title.editable{cursor:pointer}header .button{color:#888;font-family:FontAwesome;font-size:21px;font-weight:700;text-decoration:none!important;cursor:pointer;text-shadow:0 -1px 0 #222}header .button.left{float:left;position:absolute;padding:16px 10px 8px 18px}header .button.right{float:right;position:relative;padding:16px 19px 13px 11px}header .button:hover{color:#fff}header #button_signin,header #tools_album,header #tools_albums,header #tools_photo{display:none}header .button_divider{float:right;position:relative;width:14px;height:50px}header #search{float:right;width:80px;margin:12px 12px 0 0;padding:5px 12px 6px;background-color:#383838;color:#fff;border:none;border:1px solid #131313;box-shadow:0 1px 0 rgba(255,255,255,.1);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,-webkit-transform .3s ease-out,box-shadow .3s,width .2s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,width .2s ease-out}header #search:focus{width:140px}header #search:focus~#clearSearch{opacity:1}header #clearSearch{position:absolute;top:15px;right:81px;padding:0;font-size:20px;opacity:0;-webkit-transition:opacity .2s ease-out;transition:opacity .2s ease-out}header #clearSearch:hover{opacity:1}header .tools:first-of-type{margin-right:6px}header .tools{float:right;padding:14px 8px;color:#888;font-size:21px;text-shadow:0 -1px 0 #222;cursor:pointer}header .tools:hover a{color:#fff}header .tools .icon-star{color:#f0ef77}header .tools .icon-share.active{color:#ff9737}header #hostedwith{float:right;padding:5px 10px;margin:13px 9px;color:#888;font-size:13px;text-shadow:0 -1px 0 #222;display:none;cursor:pointer}header #hostedwith:hover{background-color:rgba(0,0,0,.2);border-radius:100px}#imageview{position:fixed;display:none;width:100%;min-height:100%;background-color:rgba(10,10,10,.98);-webkit-transition:background-color .3s;transition:background-color .3s}#imageview.view{background-color:inherit}#imageview.full{background-color:#000}#imageview #image{position:absolute;top:60px;right:30px;bottom:30px;left:30px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,margin-top .3s,opacity .2s,-webkit-transform .3s cubic-bezier(0.51,.92,.24,1.15);transition:top .3s,right .3s,bottom .3s,left .3s,margin-top .3s,opacity .2s,transform .3s cubic-bezier(0.51,.92,.24,1.15);-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}#imageview #image.small{top:50%;right:auto;bottom:auto;left:50%}#imageview #image.full{top:0;right:0;bottom:0;left:0}#imageview .arrow_wrapper{position:fixed;width:20%;height:-webkit-calc(100% - 60px);height:calc(100% - 60px);top:60px;z-index:1}#imageview .arrow_wrapper.previous{left:0}#imageview .arrow_wrapper.next{right:0}#imageview .arrow_wrapper a{position:fixed;top:50%;margin-top:-10px;color:#fff;font-size:50px;text-shadow:0 1px 2px #000;cursor:pointer;opacity:0;z-index:2;-webkit-transition:opacity .2s;transition:opacity .2s}#imageview .arrow_wrapper:hover a{opacity:.2}#imageview .arrow_wrapper a#previous{left:20px}#imageview .arrow_wrapper a#next{right:20px}#infobox_overlay{z-index:3;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.8)}#infobox{z-index:4;position:fixed;right:0;width:350px;height:100%;background-color:rgba(20,20,20,.98);box-shadow:-1px 0 2px rgba(0,0,0,.8);display:none;-webkit-transform:translateX(370px);-ms-transform:translateX(370px);transform:translateX(370px);-webkit-transition:-webkit-transform .3s cubic-bezier(0.51,.92,.24,1.15);transition:transform .3s cubic-bezier(0.51,.92,.24,1.15)}#infobox.active{-webkit-transform:translateX(50px);-ms-transform:translateX(50px);transform:translateX(50px)}#infobox .wrapper{float:left;height:100%;width:300px;overflow:scroll;-webkit-overflow-scrolling:touch}#infobox .edit{display:inline;margin-left:3px;width:20px;height:5px;cursor:pointer}#infobox .bumper{float:left;width:100%;height:50px}#infobox .header{float:left;height:49px;width:100%;background-image:-webkit-linear-gradient(top,#2A2A2A,#131313);background-image:linear-gradient(to bottom,#2A2A2A,#131313);border-bottom:1px solid #000}#infobox .header h1{position:absolute;margin:15px 30% 15px -webkit-calc(30% - 25px);margin:15px 30% 15px calc(30% - 25px);width:40%;color:#fff;font-size:16px;font-weight:700;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.8)}#infobox .header a{float:right;padding:15px 65px 15px 15px;color:#fff;font-size:20px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.8);opacity:.5;cursor:pointer}#infobox .header a:hover{opacity:1}#infobox .separator{float:left;width:100%;border-top:1px solid rgba(255,255,255,.04);box-shadow:0 -1px 0 #000}#infobox .separator h1{margin:20px 0 5px 20px;color:#fff;font-size:14px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.8)}#infobox table{float:left;margin:10px 0 15px 20px}#infobox table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#infobox table tr td:first-child{width:110px}#infobox table tr td:last-child{padding-right:10px}#infobox #tags{width:-webkit-calc(100% - 40px);width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#infobox #tags .empty{font-size:14px;margin-bottom:8px}#infobox #tags .edit{display:inline-block}#infobox #tags .empty .edit{display:inline}#infobox .tag{float:left;padding:4px 7px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border:2px solid rgba(255,255,255,.3);border-radius:100px;font-size:12px;-webkit-transition:border .3s;transition:border .3s}#infobox .tag:hover{border:2px solid #aaa}#infobox .tag span{float:right;width:0;padding:0;margin:0 0 -2px;color:red;font-size:11px;cursor:pointer;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .3s,margin .3s,-webkit-transform .3s;transition:width .3s,margin .3s,transform .3s}#infobox .tag:hover span{width:10px;margin:0 0 -2px 6px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#loading{position:fixed;width:100%;height:3px;background-size:100px 3px;background-repeat:repeat-x;border-bottom:1px solid rgba(0,0,0,.3);display:none;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#loading.loading{background-image:-webkit-linear-gradient(left,#153674 0,#153674 47%,#2651AE 53%,#2651AE 100%);background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651AE 53%,#2651AE 100%);z-index:2}#loading.error{background-color:#2f0d0e;background-image:-webkit-linear-gradient(left,#451317 0,#451317 47%,#AA3039 53%,#AA3039 100%);background-image:linear-gradient(to right,#451317 0,#451317 47%,#AA3039 53%,#AA3039 100%);z-index:1}#loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#loading h1 span{margin-left:10px;font-weight:400;text-transform:none}.message_overlay{position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.85);z-index:1000}.message{position:absolute;display:inline-block;width:500px;margin-left:-250px;margin-top:-95px;background-color:#444;background-image:-webkit-linear-gradient(top,#4b4b4b,#2d2d2d);background-image:linear-gradient(to bottom,#4b4b4b,#2d2d2d);border-radius:5px;box-shadow:0 0 5px #000,inset 0 1px 0 rgba(255,255,255,.08);-webkit-animation-name:moveUp;animation-name:moveUp;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.message h1{float:left;width:100%;padding:12px 0;color:#fff;font-size:16px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.3);text-align:center}.message .close{position:absolute;top:0;right:0;padding:12px 14px 6px 7px;color:#aaa;font-size:20px;text-shadow:0 -1px 0 rgba(0,0,0,.3);cursor:pointer}.message .close:hover{color:#fff}.message p{float:left;width:90%;margin-top:1px;padding:12px 5% 15px;color:#eee;font-size:14px;text-shadow:0 -1px 0 rgba(0,0,0,.3);line-height:20px}.message p b{font-weight:700;color:#fff}.message p a{color:#eee;text-decoration:none;border-bottom:1px dashed #888}.message .button{float:right;margin:15px 15px 15px 0;padding:7px 10px 8px;color:#ccc;font-size:14px;font-weight:700;text-align:center;text-shadow:0 -1px 0 #222;border-radius:5px;border:1px solid rgba(0,0,0,.4);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 1px 0 rgba(255,255,255,.05);cursor:pointer}.message .button:first-of-type{margin:15px 5% 18px 0!important}.message .button.active{color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 1px 0 rgba(255,255,255,.1),0 0 4px #005ecc}.message .button:hover{background-image:-webkit-linear-gradient(top,#3c3c3c,#393939);background-image:linear-gradient(to bottom,#3c3c3c,#393939)}.message .button.pressed,.message .button:active{background-color:#393939;background-image:-webkit-linear-gradient(top,#393939,#3c3c3c);background-image:linear-gradient(to bottom,#393939,#3c3c3c)}.sign_in{float:left;width:100%;margin-top:1px;padding:5px 0;color:#eee;font-size:14px;text-shadow:0 -1px 0 #222;line-height:20px}.sign_in input{float:left;width:88%;padding:7px 1% 9px;margin:0 5%;background-color:transparent;color:#fff;text-shadow:0 -1px 0 #222;border:none;border-bottom:1px solid #222;box-shadow:0 1px 0 rgba(255,255,255,.1);border-radius:0;outline:0}.sign_in input:first-of-type{margin-bottom:10px}.sign_in input.error:focus{box-shadow:0 1px 0 rgba(204,0,7,.6)}.message #version{display:inline-block;margin-top:23px;margin-left:5%;color:#888;text-shadow:0 -1px 0 #111}.message #version span{display:none}.message #version span a{color:#888}.message input.text{float:left;width:-webkit-calc(100% - 10px);width:calc(100% - 10px);padding:17px 5px 9px;margin-top:10px;background-color:transparent;color:#fff;text-shadow:0 -1px 0 #222;border:none;box-shadow:0 1px 0 rgba(255,255,255,.1);border-bottom:1px solid #222;border-radius:0;outline:0}.message input.less{margin-bottom:-10px}.message input.more{margin-bottom:30px}.message .copylink{margin-bottom:20px}.message .choice{float:left;margin:12px 5%;width:90%;color:#fff}.message .choice input{float:left}.message .choice h2{float:left;margin:1px 0 0 8px;color:#fff;font-size:14px;font-weight:700;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.message .choice p{margin-top:2px;padding:0 5% 0 25px;color:#aaa;font-size:13px}.message .choice p input{width:100%;padding:10px 1px 9px;margin-top:10px}body,html{min-height:100%}body{background-color:#222;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}body.view{background-color:#0f0f0f}.center{position:absolute;left:50%;top:50%}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s}input{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:3}.tipsy{padding:4px;font-size:12px;position:absolute;z-index:100000;-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s}.tipsy-inner{padding:8px 10px 7px;color:#fff;max-width:200px;text-align:center;background:rgba(0,0,0,.8);border-radius:25px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed rgba(0,0,0,.8)}.tipsy-arrow-n{border-bottom-color:rgba(0,0,0,.8)}.tipsy-arrow-s{border-top-color:rgba(0,0,0,.8)}.tipsy-arrow-e{border-left-color:rgba(0,0,0,.8)}.tipsy-arrow-w{border-right-color:rgba(0,0,0,.8)}.tipsy-n .tipsy-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#upload{display:none}.upload_overlay{position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.85);z-index:1000}.upload_message{position:absolute;display:inline-block;width:450px;margin-left:-225px;margin-top:-170px;background-image:-webkit-linear-gradient(top,#4b4b4b,#2d2d2d);background-image:linear-gradient(to bottom,#4b4b4b,#2d2d2d);border-radius:5px;box-shadow:0 0 5px #000,inset 0 1px 0 rgba(255,255,255,.08),inset 1px 0 0 rgba(255,255,255,.03),inset -1px 0 0 rgba(255,255,255,.03);-webkit-animation-name:moveUp;animation-name:moveUp;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(0.51,.92,.24,1.15);animation-timing-function:cubic-bezier(0.51,.92,.24,1.15)}.upload_message h1{float:left;width:100%;padding:12px 0;color:#fff;font-size:16px;font-weight:700;text-shadow:0 -1px 0 #222;text-align:center}.upload_message .close{display:none;position:absolute;top:0;right:0;padding:11px 14px 6px 7px;color:#aaa;font-size:20px;text-shadow:0 -1px 0 #222;cursor:pointer}.upload_message .close:hover{color:#fff}.upload_message .rows{float:left;margin:3px 8px 8px;width:-webkit-calc(100% - 16px);width:calc(100% - 16px);height:300px;background-color:rgba(0,0,0,.5);overflow:hidden;overflow-y:scroll;border-radius:3px;box-shadow:inset 0 0 3px rgba(0,0,0,.8)}.upload_message .rows .row{float:left;display:inline-block;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.upload_message .rows .row:nth-child(2n){background-color:rgba(255,255,255,0)}.upload_message .rows .row a.name{float:left;padding:5px 10px;width:-webkit-calc(70% - 20px);width:calc(70% - 20px);color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.upload_message .rows .row a.status{float:left;padding:5px 10px;width:-webkit-calc(30% - 20px);width:calc(30% - 20px);color:rgba(255,255,255,.5);font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.upload_message .rows .row a.status.error,.upload_message .rows .row a.status.success{-webkit-animation:none;animation:none}.upload_message .rows .row a.status.error{color:#d51818}.upload_message .rows .row a.status.success{color:#2ad500}.upload_message .rows .row p.notice{display:none;float:left;padding:2px 10px 5px;width:-webkit-calc(100% - 20px);width:calc(100% - 20px);color:rgba(255,255,255,.5);font-size:12px;overflow:hidden;line-height:16px}@media only screen and (max-width:900px){#title{margin:0 20%!important;width:40%!important}#title.view{margin:0 20%!important;width:60%!important}#title span{display:none!important}}@media only screen and (max-width:640px){#title{display:none!important}#title.view{display:block!important;width:70%!important;margin:0 20% 0 10%!important}#button_archive,#button_move{display:none!important}.center{top:0!important;left:0!important}.album,.photo{margin:40px 0 0 50px!important}#imageview .arrow_wrapper{display:none!important}.message{position:fixed!important;width:100%!important;height:100%!important;margin:1px 0 0!important;border-radius:0!important;-webkit-animation:moveUp .3s!important;animation:moveUp .3s!important}.upload_message{margin-top:0!important;margin-left:0!important;width:100%!important}} \ No newline at end of file diff --git a/assets/min/main.js b/assets/min/main.js index 7d3cc5d..5760178 100644 --- a/assets/min/main.js +++ b/assets/min/main.js @@ -229,7 +229,7 @@ album = { }, - parse: function(photo) { + parse: function() { if (!album.json.title) album.json.title = "Untitled"; @@ -257,9 +257,9 @@ album = { if (data===true) data = 1; // Avoid first album to be true if (data!==false&&isNumber(data)) { - albums.refresh(); - lychee.goto(data); - } + albums.refresh(); + lychee.goto(data); + } else lychee.error(null, params, data); }); @@ -289,10 +289,10 @@ album = { if (visible.albums()) { - albumIDs.forEach(function(id, index, array) { + albumIDs.forEach(function(id) { albums.json.num--; view.albums.content.delete(id); - delete albums.json.content[id] + delete albums.json.content[id] }); } else lychee.goto(""); @@ -371,7 +371,7 @@ album = { } else if (visible.albums()) { - albumIDs.forEach(function(id, index, array) { + albumIDs.forEach(function(id) { albums.json.content[id].title = newTitle; view.albums.content.title(id); }); @@ -436,8 +436,8 @@ album = { password = "", listed = false, downloadable = false; - - albums.refresh(); + + albums.refresh(); if (!visible.message()&&album.json.public==0) { @@ -449,7 +449,7 @@ album = { else $(".message .choice input.text").hide(); }); - + return true; } @@ -517,10 +517,11 @@ album = { getArchive: function(albumID) { - var link; + var link, + url = "php/api.php?function=getAlbumArchive&albumID=" + albumID; - if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", "php/api.php?function=getAlbumArchive&albumID=" + albumID); - else link = location.href.replace(location.hash, "") + "php/api.php?function=getAlbumArchive&albumID=" + albumID; + if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", url); + else link = location.href.replace(location.hash, "") + url; if (lychee.publicMode) link += "&password=" + password.value; @@ -548,73 +549,73 @@ albums = { lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomOut"); lychee.animate(".divider", "fadeOut"); - - startTime = new Date().getTime(); + + startTime = new Date().getTime(); - - if(this.json == null) { - lychee.api("getAlbums", function(data) { - - /* Smart Albums */ - data.unsortedAlbum = { - id: 0, - title: "Unsorted", - sysdate: data.unsortedNum + " photos", - unsorted: 1, - thumb0: data.unsortedThumb0, - thumb1: data.unsortedThumb1, - thumb2: data.unsortedThumb2 - }; - - data.starredAlbum = { - id: "f", - title: "Starred", - sysdate: data.starredNum + " photos", - star: 1, - thumb0: data.starredThumb0, - thumb1: data.starredThumb1, - thumb2: data.starredThumb2 - }; - - data.publicAlbum = { - id: "s", - title: "Public", - sysdate: data.publicNum + " photos", - public: 1, - thumb0: data.publicThumb0, - thumb1: data.publicThumb1, - thumb2: data.publicThumb2 - }; - - data.recentAlbum = { - id: "r", - title: "Recent", - sysdate: data.recentNum + " photos", - recent: 1, - thumb0: data.recentThumb0, - thumb1: data.recentThumb1, - thumb2: data.recentThumb2 - }; - - albums.json = data; - - durationTime = (new Date().getTime() - startTime); - if (durationTime>300) waitTime = 0; else waitTime = 300 - durationTime; - if (!visible.albums()&&!visible.photo()&&!visible.album()) waitTime = 0; - if (visible.album()&&lychee.content.html()==="") waitTime = 0; - - setTimeout(function() { - view.header.mode("albums"); - view.albums.init(); - lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn"); - - }, waitTime); - }); - } else { + + if(this.json == null) { + lychee.api("getAlbums", function(data) { + + /* Smart Albums */ + data.unsortedAlbum = { + id: 0, + title: "Unsorted", + sysdate: data.unsortedNum + " photos", + unsorted: 1, + thumb0: data.unsortedThumb0, + thumb1: data.unsortedThumb1, + thumb2: data.unsortedThumb2 + }; + + data.starredAlbum = { + id: "f", + title: "Starred", + sysdate: data.starredNum + " photos", + star: 1, + thumb0: data.starredThumb0, + thumb1: data.starredThumb1, + thumb2: data.starredThumb2 + }; + + data.publicAlbum = { + id: "s", + title: "Public", + sysdate: data.publicNum + " photos", + public: 1, + thumb0: data.publicThumb0, + thumb1: data.publicThumb1, + thumb2: data.publicThumb2 + }; + + data.recentAlbum = { + id: "r", + title: "Recent", + sysdate: data.recentNum + " photos", + recent: 1, + thumb0: data.recentThumb0, + thumb1: data.recentThumb1, + thumb2: data.recentThumb2 + }; + + albums.json = data; + + durationTime = (new Date().getTime() - startTime); + if (durationTime>300) waitTime = 0; else waitTime = 300 - durationTime; + if (!visible.albums()&&!visible.photo()&&!visible.album()) waitTime = 0; + if (visible.album()&&lychee.content.html()==="") waitTime = 0; + + setTimeout(function() { + view.header.mode("albums"); + view.albums.init(); + lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn"); + + }, waitTime); + }); + } else { view.header.mode("albums"); view.albums.init(); lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn"); - } + } }, parse: function(album) { @@ -630,10 +631,10 @@ albums = { } }, - - refresh: function() { - this.json = null; - } + + refresh: function() { + this.json = null; + } }; /** @@ -940,7 +941,8 @@ build = { public, editTitleHTML, editDescriptionHTML, - infos; + infos, + exifHash = ""; infobox += "

About

"; infobox += "
"; @@ -975,7 +977,9 @@ build = { ["Tags", build.tags(photoJSON.tags, forView)] ]; - if ((photoJSON.takestamp+photoJSON.make+photoJSON.model+photoJSON.shutter+photoJSON.aperture+photoJSON.focal+photoJSON.iso)!="0") { + exifHash = photoJSON.takestamp+photoJSON.make+photoJSON.model+photoJSON.shutter+photoJSON.aperture+photoJSON.focal+photoJSON.iso; + + if (exifHash!="0"&&exifHash!=="null") { infos = infos.concat([ ["", "Camera"], @@ -1288,6 +1292,7 @@ contextMenu = { function() { photo.setStar([photoID]) }, function() { photo.editTags([photoID]) }, function() { photo.setTitle([photoID]) }, + function() { photo.duplicate([photoID]) }, function() { contextMenu.move([photoID], e, "right") }, function() { photo.delete([photoID]) } ]; @@ -1297,8 +1302,9 @@ contextMenu = { [" Tags", 1], ["separator", -1], [" Rename", 2], - [" Move", 3], - [" Delete", 4] + [" Duplicate", 3], + [" Move", 4], + [" Delete", 5] ]; contextMenu.show(items, mouse_x, mouse_y, "right"); @@ -1319,6 +1325,7 @@ contextMenu = { function() { photo.setStar(photoIDs) }, function() { photo.editTags(photoIDs) }, function() { photo.setTitle(photoIDs) }, + function() { photo.duplicate(photoIDs) }, function() { contextMenu.move(photoIDs, e, "right") }, function() { photo.delete(photoIDs) } ]; @@ -1328,8 +1335,9 @@ contextMenu = { [" Tag All", 1], ["separator", -1], [" Rename All", 2], - [" Move All", 3], - [" Delete All", 4] + [" Duplicate All", 3], + [" Move All", 4], + [" Delete All", 5] ]; contextMenu.show(items, mouse_x, mouse_y, "right"); @@ -1390,7 +1398,8 @@ contextMenu = { var mouse_x = e.pageX, mouse_y = e.pageY, - items; + items, + link = ""; mouse_y -= $(document).scrollTop(); @@ -1577,6 +1586,10 @@ $(document).ready(function(){ .bind(['command+backspace', 'ctrl+backspace'], function() { if (visible.photo()&&!visible.message()) photo.delete([photo.getID()]); else if (visible.album()&&!visible.message()) album.delete([album.getID()]); + }) + .bind(['command+a', 'ctrl+a'], function() { + if (visible.album()&&!visible.message()) multiselect.selectAll(); + else if (visible.albums()&&!visible.message()) multiselect.selectAll(); }); Mousetrap.bindGlobal('enter', function() { @@ -1763,8 +1776,8 @@ loadingBar = { var lychee = { title: "", - version: "2.6.1", - version_code: "020601", + version: "2.6.2", + version_code: "020602", api_path: "php/api.php", update_path: "http://lychee.electerious.com/version/index.php", @@ -1904,7 +1917,7 @@ var lychee = { logout: function() { - lychee.api("logout", function(data) { + lychee.api("logout", function() { window.location.reload(); }); @@ -2170,31 +2183,70 @@ multiselect = { position: { - top: null, - right: null, - bottom: null, - left: null + top: null, + right: null, + bottom: null, + left: null }, show: function(e) { - if (mobileBrowser()) return false; - if (lychee.publicMode) return false; - if (visible.search()) return false; - if ($('.album:hover, .photo:hover').length!==0) return false; - if (visible.multiselect()) $('#multiselect').remove(); + if (mobileBrowser()) return false; + if (lychee.publicMode) return false; + if (visible.search()) return false; + if (visible.infobox()) return false; + if (!visible.albums()&&!visible.album) return false; + if ($('.album:hover, .photo:hover').length!==0) return false; + if (visible.multiselect()) $('#multiselect').remove(); - multiselect.position.top = e.pageY; - multiselect.position.right = -1 * (e.pageX - $(document).width()); - multiselect.position.bottom = -1 * (multiselect.position.top - $(window).height()); - multiselect.position.left = e.pageX; + multiselect.position.top = e.pageY; + multiselect.position.right = -1 * (e.pageX - $(document).width()); + multiselect.position.bottom = -1 * (multiselect.position.top - $(window).height()); + multiselect.position.left = e.pageX; $('body').append(build.multiselect(multiselect.position.top, multiselect.position.left)); $(document).on('mousemove', multiselect.resize); }, + selectAll: function() { + + var e, + newWidth, + newHeight; + + if (mobileBrowser()) return false; + if (lychee.publicMode) return false; + if (visible.search()) return false; + if (visible.infobox()) return false; + if (!visible.albums()&&!visible.album) return false; + if (visible.multiselect()) $('#multiselect').remove(); + + multiselect.position.top = 70; + multiselect.position.right = 40; + multiselect.position.bottom = 90; + multiselect.position.left = 20; + + $('body').append(build.multiselect(multiselect.position.top, multiselect.position.left)); + + newWidth = $(document).width() - multiselect.position.right + 2; + newHeight = $(document).height() - multiselect.position.bottom; + + $('#multiselect').css({ + width: newWidth, + height: newHeight + }); + + e = { + pageX: $(document).width() - (multiselect.position.right / 2), + pageY: $(document).height() - multiselect.position.bottom + }; + + multiselect.getSelection(e); + + }, + resize: function(e) { var mouse_x = e.pageX, @@ -2210,7 +2262,7 @@ multiselect = { if (mouse_y>=multiselect.position.top) { // Do not leave the screen - newHeight = e.pageY - multiselect.position.top; + newHeight = mouse_y - multiselect.position.top; if ((multiselect.position.top+newHeight)>=$(document).height()) newHeight -= (multiselect.position.top + newHeight) - $(document).height() + 2; @@ -2233,7 +2285,7 @@ multiselect = { if (mouse_x>=multiselect.position.left) { // Do not leave the screen - newWidth = e.pageX - multiselect.position.left; + newWidth = mouse_x - multiselect.position.left; if ((multiselect.position.left+newWidth)>=$(document).width()) newWidth -= (multiselect.position.left + newWidth) - $(document).width() + 2; @@ -2266,10 +2318,10 @@ multiselect = { if (!visible.multiselect()) return false; return { - top: $('#multiselect').offset().top, - left: $('#multiselect').offset().left, - width: parseInt($('#multiselect').css('width').replace('px', '')), - height: parseInt($('#multiselect').css('height').replace('px', '')) + top: $('#multiselect').offset().top, + left: $('#multiselect').offset().left, + width: parseInt($('#multiselect').css('width').replace('px', '')), + height: parseInt($('#multiselect').css('height').replace('px', '')) }; }, @@ -2296,7 +2348,7 @@ multiselect = { id = $(this).data('id'); - if (id!=='0'&&id!==0&&id!=='f'&&id!=='s'&&id!=='r'&&id!==null&id!==undefined) { + if (id!=='0'&&id!==0&&id!=='f'&&id!=='s'&&id!=='r'&&id!==null&&id!==undefined) { ids.push(id); $(this).addClass('active'); @@ -2317,10 +2369,10 @@ multiselect = { multiselect.stopResize(); - multiselect.position.top = null; - multiselect.position.right = null; - multiselect.position.bottom = null; - multiselect.position.left = null; + multiselect.position.top = null; + multiselect.position.right = null; + multiselect.position.bottom = null; + multiselect.position.left = null; lychee.animate('#multiselect', 'fadeOut'); setTimeout(function() { @@ -2444,19 +2496,19 @@ photo = { }); }, - - //preload the next photo for better response time - preloadNext: function(photoID) { - if(album.json && - album.json.content && - album.json.content[photoID] && - album.json.content[photoID].nextPhoto!="") { - - var nextPhoto = album.json.content[photoID].nextPhoto; - var url = album.json.content[nextPhoto].url; - cache = new Image(); - cache.src = url; - } + + //preload the next photo for better response time + preloadNext: function(photoID) { + if(album.json && + album.json.content && + album.json.content[photoID] && + album.json.content[photoID].nextPhoto!="") { + + var nextPhoto = album.json.content[photoID].nextPhoto; + var url = album.json.content[nextPhoto].url; + cache = new Image(); + cache.src = url; + } }, parse: function() { @@ -2527,6 +2579,23 @@ photo = { }, + duplicate: function(photoIDs) { + + var params; + + if (!photoIDs) return false; + if (photoIDs instanceof Array===false) photoIDs = [photoIDs]; + + params = "duplicatePhoto&photoIDs=" + photoIDs; + lychee.api(params, function(data) { + + if (data!==true) lychee.error(null, params, data); + else album.load(album.getID(), false); + + }); + + }, + delete: function(photoIDs) { var params, @@ -2546,6 +2615,9 @@ photo = { buttons = [ ["", function() { + var nextPhoto, + previousPhoto; + photoIDs.forEach(function(id, index, array) { // Change reference for the next and previous photo @@ -2706,22 +2778,22 @@ photo = { if (data!==true) lychee.error(null, params, data); }); - - albums.refresh(); + + albums.refresh(); }, setPublic: function(photoID, e) { var params; - + if (photo.json.public==2) { modal.show("Public Album", "This photo is located in a public album. To make this photo private or public, edit the visibility of the associated album.", [["Show Album", function() { lychee.goto(photo.json.original_album) }], ["Close", function() {}]]); return false; } - - albums.refresh(); + + albums.refresh(); if (visible.photo()) { @@ -2914,10 +2986,11 @@ photo = { getArchive: function(photoID) { - var link; + var link, + url = "php/api.php?function=getPhotoArchive&photoID=" + photoID; - if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", "php/api.php?function=getPhotoArchive&photoID=" + photoID); - else link = location.href.replace(location.hash, "") + "php/api.php?function=getPhotoArchive&photoID=" + photoID; + if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", url); + else link = location.href.replace(location.hash, "") + url; if (lychee.publicMode) link += "&password=" + password.value; @@ -2933,8 +3006,10 @@ photo = { getViewLink: function(photoID) { - if (location.href.indexOf("index.html")>0) return location.href.replace("index.html" + location.hash, "view.php?p=" + photoID); - else return location.href.replace(location.hash, "view.php?p=" + photoID); + var url = "view.php?p=" + photoID; + + if (location.href.indexOf("index.html")>0) return location.href.replace("index.html" + location.hash, url); + else return location.href.replace(location.hash, url); } @@ -3051,21 +3126,23 @@ var settings = { dbUser, dbPassword, dbHost, + dbTablePrefix, buttons, params; buttons = [ ["Connect", function() { - dbHost = $(".message input.text#dbHost").val(); - dbUser = $(".message input.text#dbUser").val(); - dbPassword = $(".message input.text#dbPassword").val(); - dbName = $(".message input.text#dbName").val(); + dbHost = $(".message input.text#dbHost").val(); + dbUser = $(".message input.text#dbUser").val(); + dbPassword = $(".message input.text#dbPassword").val(); + dbName = $(".message input.text#dbName").val(); + dbTablePrefix = $(".message input.text#dbTablePrefix").val(); if (dbHost.length<1) dbHost = "localhost"; if (dbName.length<1) dbName = "lychee"; - params = "dbCreateConfig&dbName=" + escape(dbName) + "&dbUser=" + escape(dbUser) + "&dbPassword=" + escape(dbPassword) + "&dbHost=" + escape(dbHost); + params = "dbCreateConfig&dbName=" + escape(dbName) + "&dbUser=" + escape(dbUser) + "&dbPassword=" + escape(dbPassword) + "&dbHost=" + escape(dbHost) + "&dbTablePrefix=" + escape(dbTablePrefix); lychee.api(params, function(data) { if (data!==true) { @@ -3132,7 +3209,7 @@ var settings = { ["", function() {}] ]; - modal.show("Configuration", "Enter your database connection details below:
Lychee will create its own database. If required, you can enter the name of an existing database instead:", buttons, -215, false); + modal.show("Configuration", "Enter your database connection details below:
Lychee will create its own database. If required, you can enter the name of an existing database instead:", buttons, -235, false); }, @@ -3392,7 +3469,7 @@ upload = { upload.close(true); $("body").append(build.uploadModal(title, files)); - if (callback!=null&&callback!=undefined) callback(); + if (callback!==null&&callback!==undefined) callback(); }, @@ -3481,6 +3558,7 @@ upload = { formData.append("function", "upload"); formData.append("albumID", albumID); + formData.append("tags", ""); formData.append(0, file); xhr.open("POST", lychee.api_path); @@ -3894,8 +3972,8 @@ view = { }, content: { - - scroll_pos: 0, + + scroll_pos: 0, init: function() { @@ -3910,16 +3988,16 @@ view = { if (!lychee.publicMode) smartData = build.divider("Smart Albums") + build.album(albums.json.unsortedAlbum) + build.album(albums.json.starredAlbum) + build.album(albums.json.publicAlbum) + build.album(albums.json.recentAlbum); /* Albums */ - - if (albums.json.content) { + + if (albums.json.content) { $.each(albums.json.content, function() { albums.parse(this); - - //display albums in reverse order + + //display albums in reverse order albumsData = build.album(this) + albumsData; }); - - if (!lychee.publicMode) albumsData = build.divider("Albums") + albumsData; + + if (!lychee.publicMode) albumsData = build.divider("Albums") + albumsData; } if (smartData===""&&albumsData==="") { @@ -3930,12 +4008,12 @@ view = { } $("img[data-type!='nonretina']").retina(); - - //restore scroll - if (view.albums.content.scroll_pos != null) { - //$("html, body").setanimate({ scrollTop: view.albums.content.scroll_pos }, "slow"); - $("html, body").scrollTop(view.albums.content.scroll_pos); - } + + //restore scroll + if (view.albums.content.scroll_pos != null) { + //$("html, body").setanimate({ scrollTop: view.albums.content.scroll_pos }, "slow"); + $("html, body").scrollTop(view.albums.content.scroll_pos); + } }, @@ -4033,10 +4111,10 @@ view = { lychee.content.html(photosData); $("img[data-type!='svg']").retina(); - - view.albums.content.scroll_pos = $(document).scrollTop(); - //scroll to top - $("html, body").animate({ scrollTop: 0 }, "slow"); + + view.albums.content.scroll_pos = $(document).scrollTop(); + //scroll to top + $("html, body").animate({ scrollTop: 0 }, "slow"); }, @@ -4243,7 +4321,7 @@ view = { photo: function() { lychee.imageview.html(build.imageview(photo.json, photo.isSmall(), visible.controls())); - + if ((album.json&&album.json.content&&album.json.content[photo.getID()]&&album.json.content[photo.getID()].nextPhoto==="")||lychee.viewMode) $("a#next").hide(); if ((album.json&&album.json.content&&album.json.content[photo.getID()]&&album.json.content[photo.getID()].previousPhoto==="")||lychee.viewMode) $("a#previous").hide(); diff --git a/assets/min/view.js b/assets/min/view.js index 76f35dc..7ff23a9 100644 --- a/assets/min/view.js +++ b/assets/min/view.js @@ -1,4 +1,4 @@ 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),i=n.exec(window.location.href);return null===i?"":i[1]}function key(e){code=e.keyCode?e.keyCode:e.which,27===code&&visibleInfobox()&&(hideInfobox(),e.preventDefault())}function visibleInfobox(){return parseInt(infobox.css("right").replace("px",""))<0?!1:!0}function isPhotoSmall(e){return size=[["width",!1],["height",!1]],e.width<$(window).width()-60&&(size.width=!0),e.height<$(window).height()-100&&(size.height=!0),size.width&&size.height?!0:!1}function showInfobox(){$("body").append("
"),infobox.addClass("active")}function hideInfobox(){$("#infobox_overlay").removeClass("fadeIn").addClass("fadeOut"),setTimeout(function(){$("#infobox_overlay").remove()},300),infobox.removeClass("active")}function loadPhotoInfo(e){params="function=getPhoto&photoID="+e+"&albumID=0&password=''",$.ajax({type:"POST",url:api_path,data:params,dataType:"json",success:function(t){t.title||(t.title="Untitled"),document.title="Lychee - "+t.title,headerTitle.html(t.title),imageview.attr("data-id",e),isPhotoSmall(t)?imageview.html("
"):imageview.html("
"),imageview.removeClass("fadeOut").addClass("fadeIn").show(),infobox.html(build.infoboxPhoto(t,!0)).show()},error:ajaxError})}function ajaxError(e,t,n){console.log(e),console.log(t),console.log(n)}!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 i(e,t,n){if(Z.isFunction(t))return Z.grep(e,function(e,i){return!!t.call(e,i,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 r(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 i;if(void 0===n&&1===e.nodeType)if(i="data-"+t.replace(xt,"-$1").toLowerCase(),n=e.getAttribute(i),"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(r){}yt.set(e,t,n)}else n=void 0;return n}function l(){return!0}function c(){return!1}function f(){try{return Q.activeElement}catch(e){}}function d(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,i=e.length;i>n;n++)vt.set(e[n],"globalEval",!t||vt.get(t[n],"globalEval"))}function m(e,t){var n,i,r,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(r in l)for(n=0,i=l[r].length;i>n;n++)Z.event.add(t,r,l[r][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&&Ct.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function b(t,n){var i,r=Z(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(i=e.getDefaultComputedStyle(r[0]))?i.display:Z.css(r[0],"display");return r.detach(),o}function x(e){var t=Q,n=Rt[e];return n||(n=b(e,t),"none"!==n&&n||(Ft=(Ft||Z("