function FadeableObj(obj) { this.intervalId = 0; this.fadeableObj = obj; this.opacity = obj.style.opacity == null || obj.style.opacity == "" ? 1.0 : parseInt(obj.style.opacity); this.pause = 100; this.increment = 0.2; this.intervalId = 0; if (obj.id == null || obj.id == "") alert("FadeableObj.constructor(): ID property is required for the object."); this.setOpacity = function(fOpacity) { if (this.fadeableObj.style.opacity) this.fadeableObj.style.opacity = fOpacity; if (this.fadeableObj.style.MozOpacity) this.fadeableObj.style.MozOpacity = fOpacity; if (this.fadeableObj.style.KhtmlOpacity) this.fadeableObj.style.KhtmlOpacity = fOpacity; if (this.fadeableObj.style.filter) this.fadeableObj.style.filter = "alpha(opacity=" + (fOpacity*100.0) + ")"; this.opacity = fOpacity; } this.fadeIn = function () { FadeableObjManager.fadeIn(this); } } var FadeableObjManager = { intervalArray: new Array(), fadeIn: function (obj) { FadeableObjManager.intervalArray[obj.id] = 0; if (obj != null) { FadeableObjManager.intervalArray[obj.id] = setInterval( function() { var fOpacity = obj.opacity; if (fOpacity >= 1.0) { clearInterval(FadeableObjManager.intervalArray[obj.id]); FadeableObjManager.intervalArray[obj.id] = null; } else { obj.setOpacity(fOpacity+obj.increment); } }, obj.pause ); } } } var DraggableObj = { dragObject: null, mouseOffset: null, mouseCoords: function(ev) { if (ev.pageX || ev.pageY) { return {x:ev.pageX, y:ev.pageY}; } return { x:ev.clientX + ScrollXY.getX() - document.body.clientLeft, y:ev.clientY + ScrollXY.getY() - document.body.clientTop }; }, makeClickable: function(object) { object.onmousedown = function(){ DraggableObj.dragObject = this; } }, getMouseOffset: function(target, ev) { ev = ev || window.event; var docPos = DraggableObj.getPosition(target); var mousePos = DraggableObj.mouseCoords(ev); return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y}; }, getPosition: function(e) { var left = 0; var top = 0; while (e.offsetParent){ left += e.offsetLeft; top += e.offsetTop; e = e.offsetParent; } left += e.offsetLeft; top += e.offsetTop; return {x:left, y:top}; }, mouseMove: function(ev) { ev = ev || window.event; var mousePos = DraggableObj.mouseCoords(ev); if (DraggableObj.dragObject) { DraggableObj.dragObject.style.position = 'absolute'; DraggableObj.dragObject.style.top = mousePos.y - DraggableObj.mouseOffset.y + "px"; DraggableObj.dragObject.style.left = mousePos.x - DraggableObj.mouseOffset.x + "px"; return false; } }, mouseUp: function() { DraggableObj.dragObject = null; }, makeDraggable: function(item) { if(!item) return; document.onmousemove = DraggableObj.mouseMove; document.onmouseup = DraggableObj.mouseUp; item.style.cursor = "move"; item.onmousedown = function(ev) { DraggableObj.dragObject = this; DraggableObj.mouseOffset = DraggableObj.getMouseOffset(this, ev); return false; } } } var WpvTooltip = { timeOutId: 0, xmlRequest: new XmlRequest(), cache: new Array(), move: function (e) { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { e = e || window.event; var oCoords = DraggableObj.mouseCoords(e); oTooltip.style.left = oCoords.x + 10 + "px"; oTooltip.style.top = oCoords.y + 10 + "px"; } }, show: function(e, oText) { e = e || window.event; var oTooltip; var oCoords = DraggableObj.mouseCoords(e); var oTarget = WpvTooltip.getTarget(e); if ((oTooltip = document.getElementById("wpv-tooltip")) == null) { oTooltip = document.createElement("div") oTooltip.setAttribute("id", "wpv-tooltip") document.body.appendChild(oTooltip) } oTooltip.innerHTML = oText; WpvTooltip.move(e); if (oTooltip.style.display == "inline") oTooltip.style.display = "none"; oTarget.onmouseout = WpvTooltip.hide; oTarget.onmousemove = WpvTooltip.move; WpvTooltip.timeOutId = setTimeout( function() { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { oTooltip.style.display = "inline"; } }, 1000 ); }, hide: function(e) { e = e || window.event; if (WpvTooltip.timeOutId > 0) { clearTimeout(WpvTooltip.timeOutId); WpvTooltip.timeOutId = 0; } WpvTooltip.getTarget(e).style.cursor = "default"; setTimeout( function() { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { oTooltip.style.display = "none"; } }, 500 ); }, load: function(e, sUri, sId) { e = e || window.event; var oTooltip; var oCoords = DraggableObj.mouseCoords(e); var oTarget = WpvTooltip.getTarget(e); if ((oTooltip = document.getElementById("wpv-tooltip")) == null) { oTooltip = document.createElement("div") oTooltip.setAttribute("id", "wpv-tooltip") document.body.appendChild(oTooltip) } WpvTooltip.move(e); if (oTooltip.style.display == "inline") oTooltip.style.display = "none"; oTarget.onmouseout = WpvTooltip.hide; oTarget.onmousemove = WpvTooltip.move; WpvTooltip.timeOutId = setTimeout( function() { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { var oParameters = new XmlRequestParameters(); oParameters.add("wpv-tooltip", sId); if (WpvTooltip.cache[oParameters.getParameters()] == null) { WpvTooltip.xmlRequest.cancelRequest(); WpvTooltip.xmlRequest.requestUri = sUri; WpvTooltip.xmlRequest.onRequestSent = WpvTooltip.doRequestSent; WpvTooltip.xmlRequest.onSuccess = WpvTooltip.doRequestSuccess; WpvTooltip.xmlRequest.onFailure = WpvTooltip.doRequestFailed; WpvTooltip.xmlRequest.onTimeOut = WpvTooltip.doRequestFailed; WpvTooltip.xmlRequest.onCanceled = WpvTooltip.doRequestFailed; WpvTooltip.xmlRequest.sendPostRequest(oParameters); } else { oTooltip.innerHTML = WpvTooltip.cache[oParameters.getParameters()]; } oTooltip.style.display = "inline"; } }, 1000 ); }, doRequestSent: function() { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { oTooltip.innerHTML = "Loading..."; } }, doRequestSuccess: function(oRequest, iStatus, sStatusText) { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { oTooltip.innerHTML = oRequest.getResponseText(); WpvTooltip.cache[oRequest.parameters] = oRequest.getResponseText(); } }, doRequestFailed: function() { var oTooltip; if ((oTooltip = document.getElementById("wpv-tooltip")) != null) { oTooltip.innerHTML = "Failed to load the tooltip"; } }, getTarget: function(e) { var oTarget; if (e.target) oTarget = e.target; else if (e.srcElement) oTarget = e.srcElement; if (oTarget.nodeType == 3) // defeat Safari bug return oTarget.parentNode; return oTarget; } } var WpvPopup = { xmlRequest: new XmlRequest(), cache: new Array(), className: null, offsetLeft: 0, offsetTop: 0, canMove: true, getPopup: function() { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) == null) { oPopup = document.createElement("div"); oPopup.setAttribute("id", "wpv-popup"); if (WpvPopup.className != null) oPopup.className = WpvPopup.className; document.body.appendChild(oPopup); } return oPopup; }, updateText: function(sText) { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) != null) { oPopup.innerHTML = sText; oPopup.style.display = "inline"; } }, show: function(sText) { var oPopup; oPopup = WpvPopup.getPopup(); oPopup.innerHTML = sText; oPopup.style.left = WpvPopup.offsetLeft + "px"; oPopup.style.top = WpvPopup.offsetTop + "px"; oPopup.style.display = "inline"; if (WpvPopup.canMove) DraggableObj.makeDraggable(oPopup); }, hide: function() { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) != null) { oPopup.style.display = "none"; } }, load: function(sUri, sId) { var oPopup; var oParameters = new XmlRequestParameters(); if ((oPopup = document.getElementById("wpv-popup")) == null) { oPopup = document.createElement("div") oPopup.setAttribute("id", "wpv-popup") document.body.appendChild(oPopup) } oParameters.add("wpv-popup", sId); if (WpvPopup.cache[oParameters.getParameters()] == null) { WpvPopup.xmlRequest.cancelRequest(); WpvPopup.xmlRequest.requestUri = sUri; WpvPopup.xmlRequest.onRequestSent = WpvPopup.doRequestSent; WpvPopup.xmlRequest.onSuccess = WpvPopup.doRequestSuccess; WpvPopup.xmlRequest.onFailure = WpvPopup.doRequestFailed; WpvPopup.xmlRequest.onTimeOut = WpvPopup.doRequestFailed; WpvPopup.xmlRequest.onCanceled = WpvPopup.doRequestFailed; WpvPopup.xmlRequest.sendPostRequest(oParameters); } else { oPopup.innerHTML = WpvTooltip.cache[oParameters.getParameters()]; } oPopup.style.left = WpvPopup.offsetLeft + "px"; oPopup.style.top = WpvPopup.offsetTop + "px"; oPopup.style.display = "inline"; }, loadAdmin: function(sUri, sAction, oParameters) { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) == null) { oPopup = document.createElement("div") oPopup.setAttribute("id", "wpv-popup") document.body.appendChild(oPopup) } if (oParameters == null) oParameters = new XmlRequestParameters(); oParameters.add("action", sAction); oParameters.add("cookie", document.cookie); if (WpvPopup.cache[oParameters.getParameters()] == null) { WpvPopup.xmlRequest.cancelRequest(); WpvPopup.xmlRequest.requestUri = sUri + "/wp-admin/admin-ajax.php"; WpvPopup.xmlRequest.onRequestSent = WpvPopup.doRequestSent; WpvPopup.xmlRequest.onSuccess = WpvPopup.doRequestSuccess; WpvPopup.xmlRequest.onFailure = WpvPopup.doRequestFailed; WpvPopup.xmlRequest.onTimeOut = WpvPopup.doRequestFailed; WpvPopup.xmlRequest.onCanceled = WpvPopup.doRequestFailed; WpvPopup.xmlRequest.sendPostRequest(oParameters); } else { oPopup.innerHTML = WpvPopup.cache[oParameters.getParameters()]; } oPopup.style.left = WpvPopup.offsetLeft + "px"; oPopup.style.top = WpvPopup.offsetTop + "px"; oPopup.style.display = "inline"; }, doRequestSent: function() { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) != null) { oPopup.innerHTML = "
Loading...
"; } }, doRequestSuccess: function(oRequest, iStatus, sStatusText) { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) != null) { if (WpvPopup.canMove) DraggableObj.makeDraggable(oPopup); oPopup.innerHTML = oRequest.getResponseText(); WpvPopup.cache[oRequest.parameters] = oRequest.getResponseText(); } }, doRequestFailed: function() { var oPopup; if ((oPopup = document.getElementById("wpv-popup")) != null) { var sFailedMessage = "
"; sFailedMessage += "Failed to load data."; sFailedMessage += "
Close
"; sFailedMessage += "
"; oPopup.innerHTML = sFailedMessage; } } } var WindowSize = { // Adapted from Lightbox JS code by Lokesh Dhakar. // http://www.huddletogether.com/projects/lightbox/ getValues: function() { var xScroll, yScroll; var windowWidth, windowHeight; if (window.innerHeight && window.scrollMaxY) { xScroll = window.innerWidth + window.scrollMaxX; yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; } if (self.innerHeight) { // all except Explorer if (document.documentElement.clientWidth) { windowWidth = document.documentElement.clientWidth; } else { windowWidth = self.innerWidth; } windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } // for small pages with total height less then height of the viewport if (yScroll < windowHeight) { pageHeight = windowHeight; } else { pageHeight = yScroll; } // for small pages with total width less then width of the viewport if (xScroll < windowWidth) { pageWidth = xScroll; } else { pageWidth = windowWidth; } return new Array(pageWidth,pageHeight,windowWidth,windowHeight) }, getPageWidth: function() { return WindowSize.getValues()[0]; }, getPageHeight: function() { return WindowSize.getValues()[1]; }, getWindowWidth: function() { return WindowSize.getValues()[2]; }, getWindowHeight: function() { return WindowSize.getValues()[3]; } } var ScrollXY = { getX: function() { if ( typeof( window.pageXOffset ) == 'number' ) { //Netscape compliant return window.pageXOffset; } else if ( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { //DOM compliant return document.body.scrollLeft; } else if ( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { //IE6 standards compliant mode return document.documentElement.scrollLeft; } else { return 0; } }, getY: function() { if ( typeof( window.pageYOffset ) == 'number' ) { //Netscape compliant return window.pageYOffset; } else if ( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { //DOM compliant return document.body.scrollTop; } else if ( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { //IE6 standards compliant mode return document.documentElement.scrollTop; } else { return 0; } } } var WpvObjectOffset = { getOffsetLeft: function(obj, iLeft) { if (iLeft == null) { return WpvObjectOffset.getOffsetLeft(obj, obj.offsetLeft); } else if (obj.offsetParent != null) { return WpvObjectOffset.getOffsetLeft(obj.offsetParent, obj.offsetLeft + iLeft); } else { return iLeft; } }, getOffsetTop: function(obj, iTop) { if (iTop == null) { return WpvObjectOffset.getOffsetTop(obj, obj.offsetTop); } else if (obj.offsetParent != null) { return WpvObjectOffset.getOffsetTop(obj.offsetParent, obj.offsetTop + iTop); } else { return iTop; } } } var WpvGrayOut = { scrollX: 0, scrollY: 0, show: function() { var oGrayArea;; if ((oGrayArea = document.getElementById("wpv-gray-out")) == null) { oGrayArea = document.createElement("div"); oGrayArea.setAttribute("id", "wpv-gray-out"); oGrayArea.style.position = "absolute"; document.body.appendChild(oGrayArea); } if (oGrayArea != null) { var iWidth; var iHeight; var oDropdownArray = document.getElementsByTagName("SELECT"); // Hack to deal with IE6 bug where drop down comes through overlaying div element. for (var i = 0; i < oDropdownArray.length; i++) { oDropdownArray[i].style.display = "none"; } iWidth = WindowSize.getPageWidth(); iHeight = WindowSize.getPageHeight(); oGrayArea.style.width = iWidth + "px"; oGrayArea.style.height = iHeight + "px"; oGrayArea.style.left = ScrollXY.getX(); oGrayArea.style.top = "0px"; oGrayArea.style.display = "block"; window.onmousewheel = document.onmousewheel = function() {return false;}; } }, hide: function() { var oGrayArea = document.getElementById("wpv-gray-out"); var oDropdownArray = document.getElementsByTagName("SELECT"); // Hack to deal with IE6 bug where drop down comes through overlaying div element. for (var i = 0; i < oDropdownArray.length; i++) { oDropdownArray[i].style.display = "inline"; } oGrayArea.style.display = "none"; window.onmousewheel = document.onmousewheel = null; window.onclick = null; window.onmousedown = null; }, resize: function() { var oGrayArea = document.getElementById("wpv-gray-out"); if (oGrayArea != null) { oGrayArea.style.width = WindowSize.getPageWidth() + "px"; oGrayArea.style.height = WindowSize.getPageHeight() + "px"; } }, scroll: function() { var oGrayArea = document.getElementById("wpv-gray-out"); if (oGrayArea != null) { oGrayArea.style.left = ScrollXY.getX() + "px"; } } } var WpvDialog = { xmlRequest: new XmlRequest(), intervalId: 0, dialogId: "wpv-modal-dialog", openDialog: function(sUri, sMethod, oParameters, sDialogId) { var oDialog; if (sDialogId != null) WpvDialog.dialogId = sDialogId; if ((oDialog = document.getElementById(WpvDialog.dialogId)) == null) { oDialog = document.createElement("div"); oDialog.setAttribute("id", WpvDialog.dialogId); oDialog.style.position = "absolute"; document.body.appendChild(oDialog); } oDialog.style.visibility = "hidden"; window.onresize = WpvGrayOut.resize; window.onscroll = WpvGrayOut.scroll; this.xmlRequest.requestUri = sUri; this.xmlRequest.onRequestSent = this.doRequestSent.bind(this); this.xmlRequest.onSuccess = this.doRequestSuccess.bind(this); this.xmlRequest.onFailure = this.doRequestFailed.bind(this); this.xmlRequest.onTimeOut = this.doRequestFailed.bind(this); this.xmlRequest.onCanceled = this.doRequestFailed.bind(this); if (sMethod.toUpperCase() == "GET") this.xmlRequest.sendGetRequest(oParameters); else if (sMethod.toUpperCase() == "POST") this.xmlRequest.sendPostRequest(oParameters); }, openAdminDialog: function(frm) { var oDialog; if ((oDialog = document.getElementById(WpvDialog.dialogId)) == null) { oDialog = document.createElement("div"); oDialog.setAttribute("id", WpvDialog.dialogId); oDialog.style.position = "absolute"; document.body.appendChild(oDialog); } oDialog.style.visibility = "hidden"; window.onresize = WpvGrayOut.resize; window.onscroll = WpvGrayOut.scroll; frm.cookie.value = document.cookie; this.xmlRequest.requestUri = frm.requestUri.value; this.xmlRequest.onRequestSent = this.doRequestSent.bind(this); this.xmlRequest.onSuccess = this.doRequestSuccess.bind(this); this.xmlRequest.onFailure = this.doRequestFailed.bind(this); this.xmlRequest.onTimeOut = this.doRequestFailed.bind(this); this.xmlRequest.onCanceled = this.doRequestFailed.bind(this); this.xmlRequest.sendPostRequestFromForm(frm); }, doRequestSent: function(oRequest) { WpvGrayOut.show(); WpvGrayOut.resize(WindowSize.getWindowWidth(), WindowSize.getWindowHeight()); this.showMessage("Please Wait..."); }, doRequestSuccess: function(oRequest, iStatus, sStatusText) { var oDialog = document.getElementById(WpvDialog.dialogId); var oMessage; if ((oMessage = document.getElementById("wpv-modal-dialog-message")) != null) oMessage.style.visibility = "hidden"; oDialog.innerHTML = oRequest.getResponseText(); this.adjustLocation(oDialog); oDialog.style.visibility = "visible"; DraggableObj.makeDraggable(oDialog); if (this.onLoad != null) { this.onLoad(); } }, doRequestFailed: function(oRequest, iStatus, sStatusText) { var oDialog = document.getElementById(WpvDialog.dialogId); var oMessage, sFailedMessage; if ((oMessage = document.getElementById("wpv-modal-dialog-message")) != null) oMessage.style.visibility = "hidden"; sFailedMessage = "
"; sFailedMessage += iStatus + ": " + sStatusText; sFailedMessage += "
"; sFailedMessage += "
Click to close
"; oDialog.innerHTML = sFailedMessage; this.adjustLocation(oDialog); oDialog.style.visibility = "visible"; }, adjustLocation: function(obj) { if (obj != null) { var iWidth = WindowSize.getWindowWidth(); var iHeight = WindowSize.getWindowHeight(); var iObjWidth = obj.offsetWidth; var iObjHeight = obj.offsetHeight; var iObjLeft = (iWidth - iObjWidth) / 2 + ScrollXY.getX(); var iObjTop; WpvGrayOut.resize(); iObjTop = 10 + ScrollXY.getY(); obj.style.top = iObjTop + "px"; if (iObjLeft + iObjWidth > iWidth - 10) obj.style.left = iWidth - iObjWidth + "px"; else obj.style.left = (iObjLeft < 0 ? 0 : iObjLeft) + "px"; } }, closeDialog: function() { var oDialog = document.getElementById(WpvDialog.dialogId); if (WpvDialog.intervalId > 0) clearInterval(WpvDialog.intervalId); WpvGrayOut.hide(); oDialog.style.visibility = "hidden"; oDialog.innerHTML = ""; window.onresize = null; window.scroll = null; document.onmousemove = null; document.onmouseup = null; }, showMessage: function(sMessage) { var oMessage; if ((oMessage = document.getElementById("wpv-modal-dialog-message")) == null) { oMessage = document.createElement("div"); oMessage.setAttribute("id", "wpv-modal-dialog-message"); oMessage.style.position = "absolute"; oMessage.style.zIndex = 1002; oMessage.style.visibility = "hidden"; oMessage.style.backgroundColor = "#ffffff"; oMessage.style.borderColor = "#000000"; oMessage.style.padding = "10px 20px 10px 20px"; document.body.appendChild(oMessage); } oMessage.innerHTML = sMessage; this.adjustLocation(oMessage); oMessage.style.visibility = "visible" } }