jQuery.fn.menuReveal = function(callback) { debug.log("UI", "Revealing",$(this).attr('id')); var self = this; if (this.hasClass('toggledown')) { if (callback) { this.slideToggle('fast',callback); } else { this.slideToggle('fast'); } } else { this.findParentScroller().saveScrollPos(); this.show(0, function() { var i = self.find('.album_menu_image'); if (i.length > 0) { i.attr('src', i.attr('asrc')); } if (callback) { callback(); } }); } return this; } jQuery.fn.menuHide = function(callback) { debug.log("UI", "Hiding",$(this).attr('id')); var self = this; if (this.hasClass('toggledown')) { if (callback) { this.slideToggle('fast',callback); } else { this.slideToggle('fast'); } } else { this.hide(0, function() { if (callback) { callback(); } self.findParentScroller().restoreScrollPos(); if (self.hasClass('removeable')) { self.remove(); } else { debug.log("UI", "Hiding Image",$(this).attr('id')); var i = self.find('.album_menu_image'); i.removeAttr('src'); } }); } return this; } jQuery.fn.isOpen = function() { if (this.hasClass('backmenu') || $('#'+this.attr('name')).is(':visible')) { return true; } else { return false; } } jQuery.fn.isClosed = function() { if (this.hasClass('backmenu') || $('#'+this.attr('name')).is(':visible')) { return false; } else { return true; } } jQuery.fn.makeSpinner = function() { if (this.hasClass('icon-toggle-closed') || this.hasClass('icon-toggle-open') || this.hasClass('podicon')) { return this.each(function() { var originalclasses = new Array(); var classes = ''; if ($(this).attr("class")) { var classes = $(this).attr("class").split(/\s/); } for (var i = 0, len = classes.length; i < len; i++) { if (classes[i] == "invisible" || (/^icon/.test(classes[i]))) { originalclasses.push(classes[i]); $(this).removeClass(classes[i]); } } $(this).attr("originalclass", originalclasses.join(" ")); $(this).addClass('icon-spin6 spinner'); }); } else { this.addClass('clickflash'); return this; } } jQuery.fn.stopSpinner = function() { if (this.hasClass('spinner')) { this.each(function() { $(this).removeClass('icon-spin6 spinner'); if ($(this).attr("originalclass")) { $(this).addClass($(this).attr("originalclass")); $(this).removeAttr("originalclass"); } }); } else { this.removeClass('clickflash'); } return this; } jQuery.fn.findParentScroller = function() { var parentScroller = this.parent(); while (!parentScroller.hasClass('scroller') && !parentScroller.hasClass('dropmenu') && !parentScroller.hasClass('phone')) { parentScroller = parentScroller.parent(); } return parentScroller; } jQuery.fn.saveScrollPos = function() { this.prepend(''); this.scrollTo(0); this.css('overflow-y', 'hidden'); } jQuery.fn.restoreScrollPos = function() { var a = this.find('input[name="restorescrollpos"]'); this.css('overflow-y', 'scroll'); this.scrollTop(a.val()); a.remove(); } jQuery.fn.makeTagMenu = function(options) { var settings = $.extend({ textboxname: "", textboxextraclass: "", labelhtml: "", populatefunction: null, buttontext: null, buttonfunc: null, buttonclass: "" },options); this.each(function() { var tbc = "enter"; if (settings.textboxextraclass) { tbc = tbc + " "+settings.textboxextraclass; } if ($(this).is('td')) { $(this).prev().html(settings.labelhtml); var wrapper = $('
', {class: 'containerbox dropdown-container'}).appendTo($(this)); var holder = $('
', { class: "expand"}).appendTo(wrapper); var dropbutton = $('', { class: 'fixed combo-button'}).appendTo(wrapper); var textbox = $('', { type: "text", class: tbc, name: settings.textboxname }).appendTo(holder); var dropbox = $('
', {class: "drop-box tagmenu dropshadow"}).appendTo($(this)); } else { $(this).append(settings.labelhtml); var holder = $('
', { class: "expand"}).appendTo($(this)); var dropbutton = $('', { class: 'fixed combo-button'}).appendTo($(this)); var textbox = $('', { type: "text", class: tbc, name: settings.textboxname }).appendTo(holder); var dropbox = $('
', {class: "drop-box tagmenu dropshadow"}).insertAfter($(this)); } var menucontents = $('
', {class: "tagmenu-contents"}).appendTo(dropbox); if (settings.buttontext !== null) { var submitbutton = $('