﻿/// NOTE: This library will NOT work in Lotus Notes Client 7 or below

// LayerPopManager JSON Class
// buildLayer (URL of page to load, Height, Width, Top frame position, Left frame position, LayerName, Modal - true/false)
// hideLayer
// showLayer
// deleteLayer
// deleteLayerByName(LayerName)
// closeIFrameFromChild - Put this in buttons on the form loaded into the popup in order to close it

// Properties:
// IsModal true/false
// SelectedLayerName - name of layer

var layerPopupManager = {
	
	// Properties
	IsModal: false,
	SelectedLayerName: "",
	AllowScroll: true,
	
	// Methods & Functions
	buildLayer: function(URL, Height, Width, Top, Left, LayerName, Modal)
	{
		try
		{			
			// Build an iFrame within a floating Div element
			this.SelectedLayerName = LayerName;
			if(Modal){this.makeParentWindowModal();}
			this.deleteLayer(); // Clear out - just in case
			var newDiv = document.createElement("div");
			newDiv.id = LayerName;
	        newDiv.className="LayerHolder";
			newDiv.style.height = Height + "px";
			newDiv.style.width = Width + "px";
			newDiv.style.paddingLeft = "2px";
			newDiv.style.paddingRight = "2px";
			newDiv.appendChild(this.createIFrame(URL));
			document.forms[0].appendChild(newDiv);
		}
		catch(e){alert(e.message);}
	},
	
	createIFrame: function(URL)
	{
		// id is hard-coded to "PopUpIFrame"
		// ParentDivID yields the passed-in Layer Name in order to close the layer from within the form
		var newIFrame = document.createElement("iframe");
		newIFrame.setAttribute("src",URL);
		newIFrame.setAttribute("width","100%");
		newIFrame.setAttribute("height","100%");
		if(this.AllowScroll){ newIFrame.setAttribute("scrolling","auto");	}
			else { newIFrame.setAttribute("scrolling","no"); }
		newIFrame.frameBorder=0;
		newIFrame.style.borderStyle = "solid";
		newIFrame.style.borderWidth= "1px";		
		newIFrame.style.position = "relative";
		newIFrame.style.display = "block";
		newIFrame.setAttribute("AllowTransparent","yes");
		newIFrame.setAttribute("id","PopUpIFrame");
		newIFrame.setAttribute("ParentDivID",this.SelectedLayerName);
		return newIFrame;
	},
	
	hideLayer: function ()
	{
		var selectedLayer = document.getElementById(this.SelectedLayerName);
		if(selectedLayer != null)
		{
			selectedLayer.style.display= "none";
		}
	},
	
	showLayer: function ()
	{
		var selectedLayer = document.getElementById(this.SelectedLayerName);
		if(selectedLayer != null)
		{
			selectedLayer.style.display = "inline";
		}
	},
	
	deleteLayer: function()
	{
		this.deleteLayerByName(this.SelectedLayerName);
	},
	
	deleteLayerByName: function(LayerName)
	{
		var selectedLayer = document.getElementById(LayerName);
		if(selectedLayer != null)
		{
			selectedLayer.parentNode.removeChild(selectedLayer);
		}		
	},
	
	closeIFrameFromChild: function()
	{
		// Closes IFrame when called from the IFrame
		try
		{
			var curIFrame = parent.document.getElementById("PopUpIFrame"); // hard-coded IFrame ID
			var divID = curIFrame.getAttribute("ParentDivID"); // hard-coded IFrame "ParentDivID" attribute
			var parentDiv = parent.document.getElementById(divID);
			
			this.removeOverlayFromParent();			
			curIFrame.parentNode.removeChild(curIFrame);
			parentDiv.parentNode.removeChild(parentDiv);
		}
		catch(e){alert(e.message);}
	},
	
	makeParentWindowModal: function()
	{
		this.removeOverlay();
		this.IsModal=true;	
		var newDiv = document.createElement("div");
		newDiv.className="LayerBackground";
		newDiv.id= "PopupOverlay";
		newDiv.style.position="absolute";
		newDiv.style.left="0px";
		newDiv.style.top="0px";
		newDiv.style.zindex="10000";
		//newDiv.style.width=(document.width || document.body.offsetWidth) + "px";
		newDiv.style.width="100000px";
	    newDiv.style.height="100000px";
		document.forms[0].appendChild(newDiv);
	},
	
	removeOverlay: function()
	{
		var overlay = document.getElementById("PopupOverlay");
		while(overlay != null)
		{
			overlay.parentNode.removeChild(overlay);
			overlay = document.getElementById("PopupOverlay");
		}
	},
	
	removeOverlayFromParent: function()
	{
		var overlay = parent.document.getElementById("PopupOverlay");
		while(overlay != null)
		{
			overlay.parentNode.removeChild(overlay);
			overlay = parent.document.getElementById("PopupOverlay");
		}
	}
}

