// From layerDialog.js
// Help choose from four UI pseudo-window flavors
/*****        Adpated from            ****
*****    JavaScript & DHTL Cookbook   ****
*****        Danny Goodman            ****
***** Simulating a Window with Layers ****/
var folderAbove = "";
var agent = navigator.userAgent.toLowerCase();
var isIE = (agent.indexOf("msie") != -1);
isIE = isIE || (agent.indexOf('macintosh') != -1);

function ReplaceString(src,rep_str,rep_by_str)
	{
	var val = src;
	var start = 0;
	while ((start=val.indexOf(rep_str,start)) != -1)
		{
		val = val.substring(0,start)+val.substring(start).replace(rep_str,rep_by_str);	
		start += rep_by_str.length-rep_str.length;
		}
	return val;
	}

function getElementStyle(elemID, IEStyleProp, CSSStyleProp) {
    var elem = document.getElementById(elemID);
    if (elem.currentStyle) {
        return elem.currentStyle[IEStyleProp];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(elem, "");
        return compStyle.getPropertyValue(CSSStyleProp);
    }
    return "";
}

function blankFrame()
	{
	return "<html><body "+(isIE?"bgcolor=transparent":"bgcolor=transparent")+"></body></html>";
	}

function getCurrOSUI() 
	{
  var ua = navigator.userAgent;
  if (ua.indexOf("Mac") != -1) 
    if (ua.indexOf("OS X") != -1 || ua.indexOf("MSIE 5.2") != -1) 
      return "macosX";
		else 
      return "macos9";
	else if (ua.indexOf("Windows XP") != -1 || ua.indexOf("NT 5.1") != -1) 
    return "winxp";
 	else if ((document.compatMode && document.compatMode != "BackComp") || 
    (navigator.product && navigator.product == "Gecko")) 
    // Win9x and CSS-compatible
    return "win9x";
  else 
    // default for Windows 9x in quirks mode, Unix/Linux, & unknowns
    return "win9xQ";
  }
var currOS = getCurrOSUI();
// Load OS-specific style sheet for pseudo dialog layer
document.write("<link rel='stylesheet' type='text/css' href='"+folderAbove+"css/dialogLayer_" + currOS + ".css'>");

function MyShowModalDialog(beforeUnloadFn)
  {
	// pointer to this dialog object
	var thisDlg = this;

	// from layerDialogDrag.js
	// Global holds reference to selected element
	var selectedObj;
	
	// Globals hold location of click relative to element
	var offsetX, offsetY;

	// Set global reference to element being engaged and dragged
	function setSelectedElem(evt) 
		{
		var target = (evt.target) ? evt.target : evt.srcElement;
		var divID = (target.id == "titlebar") ? "pseudoWindow" : "";
		if (divID) 
		  {
			if (document.layers) 
			  {
				selectedObj = document.layers[divID];
				} 
			else if (document.all) 
			  {
				selectedObj = document.all(divID);
				} 
			else if (document.getElementById) 
			  {
				selectedObj = document.getElementById(divID);
				}
			setZIndex(selectedObj, 100);
			return;
			}
		selectedObj = null;
		return;
	  }
	
	// Turn selected element on
	function engage(evt) 
	  {
		evt = (evt) ? evt : event;
		setSelectedElem(evt);
		if (selectedObj) 
		  {
			if (document.body && document.body.setCapture) 
			  {
				// engage event capture in IE/Win
				document.body.setCapture();
				}
			if (evt.pageX) 
			  {
				offsetX = evt.pageX - ((typeof selectedObj.offsetLeft != "undefined") ? 
				  selectedObj.offsetLeft : selectedObj.left);
				offsetY = evt.pageY - ((selectedObj.offsetTop) ? 
					selectedObj.offsetTop : selectedObj.top);
				} 
			else if (typeof evt.clientX != "undefined") 
			  {
				offsetX = evt.clientX - ((selectedObj.offsetLeft) ? 
				  selectedObj.offsetLeft : 0);
				offsetY = evt.clientY - ((selectedObj.offsetTop) ? 
				  selectedObj.offsetTop : 0);
				} 
			else if (evt.offsetX || evt/offsetY) 
			  {
				offsetX = evt.offsetX - ((evt.offsetX < -2) ? 
				  0 : document.body.scrollLeft);
				offsetX -= (document.body.parentElement && 
				  document.body.parentElement.scrollLeft) ? 
				document.body.parentElement.scrollLeft : 0
				  offsetY = evt.offsetY - ((evt.offsetY < -2) ? 
				    0 : document.body.scrollTop);
				offsetY -= (document.body.parentElement && 
				  document.body.parentElement.scrollTop) ? 
				    document.body.parentElement.scrollTop : 0
				}
			evt.cancelBubble = true;
			return false;
			}
		}
	
	// Drag an element
	function dragIt(evt) 
	  {
		evt = (evt) ? evt : event;
		if (selectedObj) 
		  {
			if (evt.pageX) 
			  {
				shiftTo(selectedObj, (evt.pageX - offsetX), (evt.pageY - offsetY));
				} 
			else if (evt.clientX || evt.clientY) 
			  {
				shiftTo(selectedObj, (evt.clientX - offsetX), (evt.clientY - offsetY));
				}
			evt.cancelBubble = true;
			return false;
			}
	  }

	// Turn selected element off
	function release(evt) 
	  {
		if (selectedObj) 
		  {
			setZIndex(selectedObj, 0);
			if (document.body && document.body.releaseCapture) 
			  {
				// stop event capture in IE/Win
				document.body.releaseCapture();
				}
			selectedObj = null;
			}
	  }

	function blockEvents(evt) 
	  {
		evt = (evt) ? evt : event;
		evt.cancelBubble = true;
		return false;
	  }

	// Assign event handlers used by both Navigator and IE
	function initDrag() 
	  {
		if (document.layers) 
		  {
			// turn on event capture for these events in NN4 event model
			document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
			return;
			} 
		else if (document.body && document.body.addEventListener) 
		  {
			// turn on event capture for these events in W3C DOM event model
    	document.addEventListener("mousedown", engage, true);
    	document.addEventListener("mousemove", dragIt, true);
    	document.addEventListener("mouseup", release, true);
    	return;
			}
  	document.onmousedown = engage;
   	document.onmousemove = dragIt;
   	document.onmouseup = release;
		return;
	  }

  //******************************
  //  BEGIN LAYER DIALOG CODE
  //******************************/

  // One object tracks the current pseudo-window layer.
  var dialogLayer = {layer:null, visible:false};

  // Center a positionable element whose name is passed as 
  // a parameter in the current window/frame, and show it
  function centerOnWindow(elemID) 
	  {
    // 'obj' is the positionable object
    var obj = getRawObject(elemID);
    // window scroll factors
    var scrollX = 0, scrollY = 0;
    if (document.body && typeof document.body.scrollTop != "undefined") 
		  {
      scrollX += document.body.scrollLeft;
      scrollY += document.body.scrollTop;
      if (document.body.parentNode && 
        typeof document.body.parentNode.scrollTop != "undefined") 
				{
        scrollX += document.body.parentNode.scrollLeft;
        scrollY += document.body.parentNode.scrollTop
        }
		  } 
		else if (typeof window.pageXOffset != "undefined") 
		  {
      scrollX += window.pageXOffset;
      scrollY += window.pageYOffset;
      }
    var x = Math.round((getInsideWindowWidth()/2) - 
        (getObjectWidth(obj)/2)) + scrollX;
    var y = Math.round((getInsideWindowHeight()/2) - 
        (getObjectHeight(obj)/2)) + scrollY;
    shiftTo(obj, x, y);
    }

  function initLayerDialog() 
	  {
    document.getElementById("closebox").src = folderAbove+"images/closeBox_" + currOS + ".jpg";
    dialogLayer.layer = document.getElementById("transWindow");
    }

  // Set up and display pseudo-window.
  // Parameters:
  //    url -- URL of the page/frameset to be loaded into iframe
  //    returnFunc -- reference to the function (on this page)
  //                  that is to act on the data returned from the dialog
  //    args -- [optional] any data you need to pass to the dialog
  function openLayerDialog(url, title, returnFunc, callerData, args) 
	  {
    if (!dialogLayer.visible) 
		  {
      // Initialize properties of the modal dialog object.
      dialogLayer.url = url;
      dialogLayer.title = title;
      dialogLayer.returnFunc = returnFunc;
      dialogLayer.args = args;
      dialogLayer.returnValue = "";
      dialogLayer.callerData = callerData;
       
			var contentFrame = document.getElementById("contentFrame");
			var titlebar = document.getElementById("titlebar")
			var barTitle = document.getElementById("barTitle")
			var pseudoWindow = document.getElementById("pseudoWindow");

			var transWindow = document.getElementById("transWindow")
			transWindow.style.width = document.body.scrollWidth
			transWindow.style.height = document.body.scrollHeight

			var dialogWidth = 400;
			var dialogHeight = 300;
			var titlebarHeightPlusBorder = getElementStyle("contentFrame", "top", "top");
			titlebarHeightPlusBorder = parseInt(ReplaceString(titlebarHeightPlusBorder,'px',''))

			var borderRight = 3;
			var borderLeft = 3;
			var borderTop = 3;
			var borderBottom = 3;

			if (args != null)
			  {
				var p = args.split(';');
				for (var i = 0; i < p.length; ++i)
				  {
					var ele = p[i].split(':')
					var fName = ele[0]
					var fValue = ele[1]
					if (fName == 'dialogWidth')
						dialogWidth = parseInt(ReplaceString(fValue,'px',''));
					else if (fName == 'dialogHeight')
						dialogHeight = parseInt(ReplaceString(fValue,'px',''));
					else if (fName == 'titlebar')
						{
						if (fValue == 'no')
						  {
							titlebarHeightPlusBorder = 0;
							titlebar.style.display='none'
							borderRight = borderLeft = borderTop = borderBottom = 
							pseudoWindow.style.borderRight = pseudoWindow.style.borderLeft = pseudoWindow.style.borderTop = pseudoWindow.style.borderBottom = 0;
							}
						else
						  {
							titlebarHeightPlusBorder = 30;
							titlebar.style.display='inline'
							}
						}
					else if (fName == 'transparent')
						{
						if (fValue == 'yes')
						  {
							titlebarHeightPlusBorder = 
							borderRight = borderLeft = borderTop = borderBottom = 0;
							//pseudoWindow.style.backgroundImage=url(folderAbove+'\images\trans.gif')
							}
						}
					}
				}
			pseudoWindow.style.width = dialogWidth+'px';
			titlebar.style.width = (dialogWidth-4)+'px';
			contentFrame.width = (dialogWidth-borderRight-borderLeft)+'px';
			pseudoWindow.style.height = dialogHeight+'px';
			contentFrame.height = (dialogHeight-titlebarHeightPlusBorder-borderBottom)+'px';
			contentFrame.style.top = titlebarHeightPlusBorder+'px';
      // Load URL
      contentFrame.src = url;
        
      // Set title of "window"
      barTitle.firstChild.nodeValue=title
  
      // Center "window" in browser window or frame
      dialogLayer.layer.style.visibility = "hidden";
      dialogLayer.layer.style.display = "block"
      centerOnWindow("pseudoWindow");
        
      // Show it and set visibility flag
      dialogLayer.layer.style.visibility = "visible"
      dialogLayer.visible = true;
      }
    }

  function closeLayerDialog() 
	  {
    dialogLayer.layer.style.display = "none"
    dialogLayer.visible = false;
		var contentFrame = document.getElementById("contentFrame");
 		contentFrame.src = 'javascript:parent.blankFrame()'
   }
  //**************************
  //  END LAYER DIALOG CODE
  //**************************/

	// main code
  function handleOK() 
	  {
		if (dialogLayer.returnFunc)
		  dialogLayer.returnFunc(thisDlg, dialogLayer.callerData);
		closeLayerDialog()
		}

  // Close the dialog
  function closeme(fmInside) 
	  {
		if (!fmInside)
		  {
			var s = '';
			if (this.beforeUnloadFn)
				{
				s = this.beforeUnloadFn();
				if (typeof(s) == 'undefined')
					s = '';
				}
			if (s != '')
				{
				alert(s)
				return false
				}
			}
		closeLayerDialog()
		return true
    }

	this.html = 
	  "<div id='transWindow'>"+
			"<div id='pseudoWindow'>"+
			"  <div id='titlebar' class='draggable'>"+
			"    <img id='closebox' src='"+folderAbove+"images/closeBox_"+currOS+".jpg' onclick='myModalDialog.close(true)'/>"+
			"    <span id='barTitle'>Titlebar</span>"+
			"  </div>"+
			"  <iframe id='contentFrame' src='javascript:parent.blankFrame()' frameborder='0' vspace='0' hspace='0' "+
			"    marginwidth='14' marginHeight='14' scrolling='no' style='overflow:hidden' allowtransparency=true>"+
			"  </iframe>"+
			"</div>"+
		"</div>";

	function Init()
	  {
		initDHTMLAPI();
		initDrag(); 
		initLayerDialog();
		}

	// input
	this.beforeUnloadFn = beforeUnloadFn;

	// expose these methods
	this.init = Init;
	this.open = openLayerDialog;
	this.close = closeme;
	this.handleOK = handleOK;
	this.dialogLayer = dialogLayer;
	}

function GetMyDialog() 
	{
	if (typeof(parent.myModalDialog)=="undefined")
		return parent.window;
	return parent.myModalDialog;
	}
function GetMyDialogExternal() 
	{
	if (typeof(parent.myModalDialog)=="undefined")
		return parent.external;
	return parent.myModalDialog.dialogLayer;
	}
function onClose()  {
	  myModalDialog.close() 
	}

	