+ <script language="javascript">
+
+ /* hide all those forms. */
+ function hideAndShowBlock(blockElement, clickToShowElement, clickToHideElement) {
+ $(blockElement).hide();
+ $(clickToShowElement).removeClass("hidden");
+ $(clickToShowElement).click(function() {
+ $(blockElement).slideDown();
+ $(clickToShowElement).addClass("hidden");
+ $(clickToHideElement).removeClass("hidden");
+ });
+ $(clickToHideElement).click(function() {
+ $(blockElement).slideUp();
+ $(clickToHideElement).addClass("hidden");
+ $(clickToShowElement).removeClass("hidden");
+ });
+ }
+
+ /**
+ * Returns the image element with the given ID.
+ *
+ * @param imageId The ID of the image
+ * @return The image element
+ */
+ function getImage(imageId) {
+ return $("#sone .image-in-album .image-id:contains('" + imageId + "')").closest(".image-in-album");
+ }
+
+ /**
+ * Swaps two images.
+ *
+ * @param sourceId The ID of the source image
+ * @param destinationId The ID of the destionation image
+ */
+ function swapImage(sourceId, destinationId) {
+ sourceElement = getImage(sourceId);
+ destinationElement = getImage(destinationId);
+ sourceParent = sourceElement.closest(".image-row");
+ sourcePrevSibling = sourceElement.prev();
+ sourceElement.detach();
+ destinationElement.before(sourceElement);
+ if (sourcePrevSibling.get(0) != destinationElement.get(0)) {
+ destinationElement.detach();
+ (sourcePrevSibling.size() > 0) ? sourcePrevSibling.after(destinationElement) : sourceParent.prepend(destinationElement);
+ }
+ if ($("button[name='moveLeft']", sourceElement).hasClass("hidden") != $("button[name='moveLeft']", destinationElement).hasClass("hidden")) {
+ $("button[name='moveLeft']", sourceElement).toggleClass("hidden");
+ $("button[name='moveLeft']", destinationElement).toggleClass("hidden");
+ }
+ if ($("button[name='moveRight']", sourceElement).hasClass("hidden") != $("button[name='moveRight']", destinationElement).hasClass("hidden")) {
+ $("button[name='moveRight']", sourceElement).toggleClass("hidden");
+ $("button[name='moveRight']", destinationElement).toggleClass("hidden");
+ }
+ }
+
+ /**
+ * Prepare all images for inline editing.
+ */
+ function prepareImages() {
+ $(".image-in-album").each(function() {
+ imageId = $(this).closest(".image-in-album").find(".image-id").text();
+ (function(element, imageId) {
+ $("button[name='moveLeft'], button[name='moveRight']", element).click(function() {
+ ajaxGet("editImage.ajax", { "formPassword": getFormPassword(), "image": imageId, "moveLeft": this.name == "moveLeft", "moveRight": this.name == "moveRight" }, function(data) {
+ if (data && data.success) {
+ swapImage(data.sourceImageId, data.destinationImageId);
+ }
+ });
+ return false;
+ });
+ })(this, imageId);
+ });
+ }
+
+ /**
+ * Returns the album element with the given ID.
+ *
+ * @param albumId The ID of the album
+ * @return The album element
+ */
+ function getAlbum(albumId) {
+ return $("#sone .album .album-id:contains('" + albumId + "')").closest(".album");
+ }
+
+ /**
+ * Swaps two albums.
+ *
+ * @param sourceId The ID of the source album
+ * @param destinationId The ID of the destionation album
+ */
+ function swapAlbum(sourceId, destinationId) {
+ sourceElement = getAlbum(sourceId);
+ destinationElement = getAlbum(destinationId);
+ sourceParent = sourceElement.closest(".album-row");
+ sourcePrevSibling = sourceElement.prev();
+ sourceElement.detach();
+ destinationElement.before(sourceElement);
+ if (sourcePrevSibling.get(0) != destinationElement.get(0)) {
+ destinationElement.detach();
+ (sourcePrevSibling.size() > 0) ? sourcePrevSibling.after(destinationElement) : sourceParent.prepend(destinationElement);
+ }
+ if ($("button[name='moveLeft']", sourceElement).hasClass("hidden") != $("button[name='moveLeft']", destinationElement).hasClass("hidden")) {
+ $("button[name='moveLeft']", sourceElement).toggleClass("hidden");
+ $("button[name='moveLeft']", destinationElement).toggleClass("hidden");
+ }
+ if ($("button[name='moveRight']", sourceElement).hasClass("hidden") != $("button[name='moveRight']", destinationElement).hasClass("hidden")) {
+ $("button[name='moveRight']", sourceElement).toggleClass("hidden");
+ $("button[name='moveRight']", destinationElement).toggleClass("hidden");
+ }
+ }
+
+ /**
+ * Prepare all albums for inline editing.
+ */
+ function prepareAlbums() {
+ $(".album").each(function() {
+ albumId = $(this).closest(".album").find(".album-id").text();
+ (function(element, albumId) {
+ $("button[name='moveLeft'], button[name='moveRight']", element).click(function() {
+ ajaxGet("editAlbum.ajax", { "formPassword": getFormPassword(), "album": albumId, "moveLeft": this.name == "moveLeft", "moveRight": this.name == "moveRight" }, function(data) {
+ if (data && data.success) {
+ swapAlbum(data.sourceAlbumId, data.destinationAlbumId);
+ }
+ });
+ return false;
+ });
+ })(this, albumId);
+ });
+ }
+
+ </script>
+