/** * $Source: * /home/cvs/cvsroot/cms/integration/web/components/floatbar/floatbar.js,v $ * $Author: mpih $ $Revision: 1.7 $ $Date: 2009/10/20 17:23:45 $ */ function FloatingToolbar(toolbarName) { this.id = toolbarName; this.top = 0; this.bounces = new Array(0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 1, 2, 3, 2); this.bounceIndex = 0; this.isHidden = this.readState(); var floatbar = document.createElement("DIV"); floatbar.id = toolbarName; floatbar.style.position = 'absolute'; floatbar.style.left = 2; floatbar.style.margin = 0; floatbar.style.overflow = 'hidden'; floatbar.style.backgroundColor = '#CCCCCC'; floatbar.style.border = 'solid 1 #999999'; floatbar.style.zIndex = 99999; var gripper = document.createElement("IMG"); gripper.src = "/components/floatbar/images/gripper.gif"; gripper.style.border = "0"; gripper.style.display = "inline"; eval("gripper.onclick = function() { " + toolbarName + ".hide() }"); floatbar.appendChild(gripper); document.body.appendChild(floatbar); } FloatingToolbar.prototype.setTop = function(top) { this.top = top; } FloatingToolbar.prototype.addButton = function(imageLink, actionLink, toolTip) { var floatbar = document.getElementById(this.id); var children = floatbar.childNodes; var buttonImage = document.createElement("IMG"); buttonImage.id = this.id + floatbar.childNodes.length; buttonImage.src = imageLink; buttonImage.style.border = "solid 1 #CCCCCC"; buttonImage.style.display = "inline"; buttonImage.align = "absmiddle"; if (! actionLink) { floatbar.insertBefore(buttonImage, children[children.length - 1]); } else { var buttonLink = document.createElement("A"); buttonLink.style.padding = "0px 4px 0px 4px"; buttonLink.href = actionLink; buttonLink.title = toolTip; buttonLink.onmouseover = function() { this.firstChild.style.border = "outset 1 white"; } buttonLink.onmouseout = function() { this.firstChild.style.border = "solid 1 #CCCCCC"; } buttonLink.appendChild(buttonImage); floatbar.insertBefore(buttonLink, children[children.length - 1]); } floatbar.style.top = buttonImage.height * -1; } FloatingToolbar.prototype.show = function() { var floatbar = document.getElementById(this.id); var top = parseInt(floatbar.style.top); if (this.isHidden) { floatbar.style.left = this.getWidth() * -1; } if (top < this.top) { floatbar.style.top = top + 1; setTimeout(this.id + '.show()', 5); } else if (this.bounceIndex < this.bounces.length) { floatbar.style.top = this.top + this.bounces[this.bounceIndex++]; setTimeout(this.id + '.show()', 10); } else { this.bounceIndex = 0; } } FloatingToolbar.prototype.getWidth = function() { var floatbar = document.getElementById(this.id); var width = 0; for (var i = 0; i < floatbar.childNodes.length - 1; i++) { var element = floatbar.childNodes[i]; if (element.tagName == "A") { element = element.childNodes[0]; width += 10; } width += element.width; } return width; } FloatingToolbar.prototype.hide = function() { var floatbar = document.getElementById(this.id); var left = parseInt(floatbar.style.left); var width = this.getWidth(); if (! this.isHidden) { if (left * -1 < width) { floatbar.style.left = left - 2; setTimeout(this.id + '.hide()', 10); } else { this.setState("hidden"); } } else { if (left < 0) { floatbar.style.left = left + 2; setTimeout(this.id + '.hide()', 10); } else if (this.bounceIndex < this.bounces.length) { floatbar.style.left = this.bounces[this.bounceIndex++]; setTimeout(this.id + '.hide()', 5); } else { this.bounceIndex = 0; this.setState("visible"); } } } FloatingToolbar.prototype.setState = function(state) { this.isHidden = (state == "hidden"); var dateString; var today = new Date(); var millis = Date.parse(today); today.setTime(millis + 24 * 60 * 60 * 30 * 1000); dateString = today.toString(); document.cookie = "toolbarState=" + state + ";EXPIRES=" + dateString + ";PATH=/"; } FloatingToolbar.prototype.readState = function() { var cookieString = "" + document.cookie; var start = cookieString.indexOf("toolbarState"); if (start == -1) { return false; } var end = cookieString.indexOf(';', start); if (end == -1) { end = cookieString.length; } var state = cookieString.substring(start + "toolbarState".length + 1, end); return (state == "hidden"); } CONVIO.page.showNavPrompt = true; CONVIO.page.editMenu = function() { if (CONVIO.page.navFolderID == null) { alert("This folder is not associated with a navigation menu."); return; } if (CONVIO.page.navFolderID != CONVIO.page.folderID && CONVIO.page.showNavPrompt && ! window.confirm("This folder currently inherits its navigation menu from the " + "parent folder \"" + CONVIO.page.navFolderTitle + "\". Do you want to create a " + "separate navigation menu for this folder?")) { return; } CONVIO.page.showNavPrompt = false; var dialogURL = CONVIO.page.adminURL + "/admin/pagelet/linkset.jsp?isMenu=true" + "&folderID=" + CONVIO.page.folderID; function showDialog(path, arguments) { var now = new Date(); var millis = Date.parse(now); path += path.match(/\?/) ? "&" : "?"; return window.showModalDialog( path + "nocache=" + millis, arguments, "dialogHeight: px; dialogWidth: px; dialogTop: px; " + "dialogLeft: px; edge: Raised; center: Yes; help: No; " + "resizable: Yes; status: No;"); } if (showDialog(dialogURL)) { window.location = window.location.href; } } new function() { function doLoad() { if (! CONVIO.prefs || CONVIO.prefs.authorToolbarState != "enabled") { return; } if (CONVIO.page && CONVIO.page.authorToolbar) { return; } var draftID = CONVIO.page.draftID; var folderID = CONVIO.page.folderID; var adminURL = CONVIO.page.adminURL; var cmsToolbar = new FloatingToolbar('CONVIO.page.authorToolbar'); cmsToolbar.addButton("/components/floatbar/images/title.gif"); cmsToolbar.addButton("/system/icons/24x24/toolbox.gif", adminURL + "/admin/portal/portal.jsp?hostID=" + CONVIO.page.hostID, "Workspace"); cmsToolbar.addButton("/system/icons/24x24/step.gif", "javascript:CONVIO.page.editMenu()", "Navigation"); if (CONVIO.page.typeID) { cmsToolbar.addButton("/system/icons/24x24/about.gif", adminURL + "/admin/item/actions/status.jsp?itemID=" + draftID, "Status"); cmsToolbar.addButton("/system/icons/24x24/form_green.gif", adminURL + "/admin/item/actions/properties-edit.jsp?itemID=" + draftID + "&wizard=true", "Edit Properties"); if (CONVIO.page.hasEditorStep) { cmsToolbar.addButton("/system/icons/24x24/document_text.gif", adminURL + "/admin/item/actions/body-edit.jsp?itemID=" + draftID + "&wizard=true", "Edit Body Content"); } } cmsToolbar.addButton("/system/icons/24x24/folder.gif", adminURL + "/admin/subsite/folders.jsp?folderID=" + folderID, "Browse this folder"); if (CONVIO.page.typeID) { cmsToolbar.addButton("/system/icons/24x24/document_add.gif", adminURL + "/admin/item/actions/properties-new.jsp?folderID=" + folderID + "&typeID=" + CONVIO.page.typeID, "New " + CONVIO.page.typeLabel); } if (CONVIO.page.hasForm) { cmsToolbar.addButton("/system/icons/24x24/inbox_into.gif", adminURL + "/admin/item/actions/status.jsp?pane=form&itemID=" + draftID, "Form Submissions and Notifications"); } CONVIO.page.authorToolbar = cmsToolbar; cmsToolbar.show(); } if (window == window.top) { if (window.attachEvent) { window.attachEvent("onload", doLoad); } else { window.addEventListener('load',doLoad,false); } } }();