// Copyright IBM Corp. 2002, 2008  All Rights Reserved.
dojo.provide("lconn.core.Menu");dojo.declare("lconn.core.PopupClass", null, {
open: { },
returnFocusElement: false,
numOpenPopups: 0,
passedState: { },
toggler: null,
CONTAINER: 'oa-popup-container',
BACKGROUND: 'oa-popup-iframe',
constructor: function() {
},
show: function (id, event, options) {
options=options || {};if (this.isOpen(id)){
this.hide(id);} else {
if (options.focus) {
this.returnFocusElement=options.focus;}event=dojo.fixEvent(event);var eventSource=event.target
var popupElement=dojo.byId(id);var openPopupArray={
element: popupElement,
state: options.state || {},
placement: options.placement || "",
callFunction: options.closeFunction || ""
};var popupContainer=this.getPopupContainer();popupContainer.appendChild(popupElement);var popupBackground=this.getPopupBackground();this.open[id]=openPopupArray;this.numOpenPopups++;this.sizeBackground(popupElement, popupBackground, eventSource, event);var position=this.calculatePosition(popupElement, eventSource, event, openPopupArray.placement);new Popup.Effect.Appear(id, position.left, position.top);new Popup.Effect.Appear(this.BACKGROUND, position.left, position.top);dojo.stopEvent(event);};},
hide: function (id, options) {
var element=dojo.byId(id);dojo.byId(this.BACKGROUND).style.display="none";new Popup.Effect.Fade(element);var popup=this.open[id];this.numOpenPopups--;if (this.numOpenPopups == 0 && this.returnFocusElement) {
dojo.byId(this.returnFocusElement).focus();this.returnFocusElement=false;}this.open[id]=false;if (dojo.isString(popup.callFunction))
eval(popup.callFunction)
else if (dojo.isFunction(popup.callFunction))
popup.callFunction();},
isOpen: function (id) {
var popup=this.open[id];return popup != false && popup !== null && popup !== undefined;},
getState: function(id) {
return this.open[id].state;},
getReturnFocus: function() {
return this.returnFocusElement;},
clearReturnFocus: function() {
var returnFocus=this.returnFocusElement;this.returnFocusElement=false;return returnFocus;},
getPopupBackground: function () {
var popupBackground=dojo.byId(this.BACKGROUND);if (popupBackground == null) {
var popupBackground=dojo.doc.createElement("iframe");popupBackground.setAttribute('id', this.BACKGROUND);popupBackground.setAttribute('frameBorder', 'no');document.body.appendChild(popupBackground);popupBackground=dojo.byId(this.BACKGROUND);popupBackground.style.position="absolute";popupBackground.style.left="0";popupBackground.style.top="0";popupBackground.style.zIndex="899";}else{
popupBackground.style.display="block";};return popupBackground;},
getPopupContainer: function () {
var popupContainer=dojo.byId(this.CONTAINER);if (popupContainer == null) {
var popupContainer=document.createElement('div');popupContainer.setAttribute('id', this.CONTAINER);document.body.appendChild(popupContainer);popupBackground=dojo.byId(this.CONTAINER);popupBackground.style.position="absolute";popupBackground.style.left="0";popupBackground.style.top="0";popupBackground.style.zIndex="900";}return popupContainer;},
menuGetOffsetTop: function (pElem,pOTOP){
var offset=0;var curElem=pElem;while (curElem){
offset+=curElem.offsetTop;curElem=curElem.offsetParent;if (curElem) offset -= curElem.scrollTop;};return offset;},
menuGetOffsetLeft: function (pElem,pOLEFT){
var offset=0;var curElem=pElem;while (curElem){
offset+=curElem.offsetLeft;curElem=curElem.offsetParent;if (curElem) offset -= curElem.scrollLeft;};return offset;},
calculatePosition: function (popupElement, eventSource, event, placement) {
var menuLeftOffset;if (placement==""){
if(typeof(bidir) != "undefined" && bidir != null && bidir =='rtl') {
menuLeftOffset=(popupElement.offsetWidth > 0)? popupElement.offsetWidth : 175;menuLeftOffset=24 - menuLeftOffset;}else{
menuLeftOffset=eventSource.offsetWidth - 24	;};var popupY=(this.menuGetOffsetTop(eventSource,0) + eventSource.offsetHeight - 10);var popupX=(this.menuGetOffsetLeft(eventSource,0) + menuLeftOffset);}else{
menuLeftOffset=0;var placementArray=placement.split(",");switch (placementArray[0]){
case "left":
popupX=this.menuGetOffsetLeft(eventSource,0);break;case "right":
popupX=this.menuGetOffsetLeft(eventSource,0) + eventSource.offsetWidth;break;default:
popupX=parseInt(placementArray[0]);};switch (placementArray[1]){
case "above":
popupY=this.menuGetOffsetTop(eventSource,0) - popupElement.offsetHeight;break;case "top":
popupY=this.menuGetOffsetTop(eventSource,0);break;case "bottom":
popupY=this.menuGetOffsetTop(eventSource,0) + eventSource.offsetHeight;break;default:
popupY=parseInt(placementArray[1]);};};var body=document.documentElement ? document.documentElement : document.body;var windowHeight=window.innerHeight ? window.innerHeight : body.clientHeight;var windowWidth=window.innerWidth ? window.innerWidth : body.clientWidth;var scrollX=document.all ? document.body.scrollLeft : window.pageXOffset;var scrollY=document.all ? document.body.scrollTop : window.pageYOffset;if ((popupY + popupElement.offsetHeight) > (windowHeight + scrollY)) popupY -= popupElement.offsetHeight;if ((popupX + popupElement.offsetWidth) > (windowWidth + scrollX)) popupX -= popupElement.offsetWidth;if (popupY < scrollY) popupY=scrollY;if (popupX < scrollX) popupX=scrollX;if (dojo.isSafari){
popupX+=scrollX;popupY+=scrollY;}return { left: popupX  + "px", top: popupY + "px" };},
sizeBackground: function (popupElement, popupBackground, eventSource, event) {
popupBackground.width=popupElement.offsetWidth;popupBackground.height=popupElement.offsetHeight;}});dojo.declare("lconn.core.MenuPopupClass", lconn.core.PopupClass,
{
currentMenu: false,
hideMenu: function(options){
if (this.currentMenu) {
this.hide(this.currentMenu);this.currentMenu=false;}},
showMenu: function(id, event, options){
var tempCurrentMenu=this.currentMenu;this.hideMenu();if (id != tempCurrentMenu) {
this.currentMenu=id;this.show(id, event, options);}},
hideOnKeypress: function(event){
if(typeof(event) != "undefined" && event !== null && event.keyCode == Event.KEY_ESC) {
MenuPopup.hideMenu();}},
isMenuOpen: function(){
if (this.currentMenu) {
return true;}return false;},
getState: function(){
if (this.currentMenu) {
return this.open[this.currentMenu].state;}}});Popup=new lconn.core.PopupClass();MenuPopup=new lconn.core.MenuPopupClass();Popup.Effect={};Popup.Effect.DURATION=250;Popup.Effect.Fade=function(element) {
element=dojo.byId(element);var oldOpacity=dojo.style(element, "opacity");var anim=dojo.fadeOut({node: element, duration: Popup.Effect.DURATION})
dojo.connect(anim, "onEnd", function(){
dojo.style(element, "opacity", oldOpacity);dojo.style(element, "left", "-9999px")
});anim.play();};Popup.Effect.Appear=function(element, x, y) {
element=dojo.byId(element);dojo.style(element, "opacity", 0);dojo.style(element, "left", x);dojo.style(element, "top", y);dojo.fadeIn({node: element, duration: Popup.Effect.DURATION}).play();};