
try {
  // create image element so that HTMLElement is accessible
  document.createElement('img');
  HTMLElement.prototype.click = function () {
    if (typeof this.onclick == 'function')
      this.onclick({type: 'click'});
  };
}
catch (e) {
  //alert('click method for HTMLElement couldn\'t be added')
}

function RemoveDialogs()
{
	var jaxDiv = document.getElementById("jaxDiv");
	
	var popupDiv = document.getElementById("popupDiv");
	if (popupDiv != null) 
	{
		if (jaxDiv != null)
			jaxDiv.removeChild(popupDiv);
		else	
			document.body.removeChild(popupDiv); 
	}
	
	var dialogDiv = document.getElementById("dialogDiv");
	if (dialogDiv != null) 
	{
		if (jaxDiv != null)
			jaxDiv.removeChild(dialogDiv);
		else	
			document.body.removeChild(dialogDiv); 
	}
}

function showDialog(dialogXML)
{	//alert('start showDialog');
	var newHTML = new String();
	var tag = new String();

	var dialogDiv;
	RemoveDialogs();
	
	if (xIE4Up) {
		dialogDiv = document.createElement('<div id="dialogDiv">');
	}
	else {
		dialogDiv = document.createElement('div');
		dialogDiv.id = "dialogDiv";
    }

	
	var width = parseInt(dialogXML.getAttribute("Width"));
		
	var focusOnButton;
	
	newHTML += '<div id="popupMask">&nbsp;</div>	';
	newHTML += '		<div id="popupContainer">	';
	newHTML += '			<div id="popupInner">	';
	newHTML += '				<div id="popupTitleBar">	';
	newHTML += '					<div id="popupTitle"></div>	';
	newHTML += '					<div id="popupControls">	';
	newHTML += '						<img id="imgPopUpClose" src="' + resourcePath + '/images/close.gif" onclick="hidePopWin(false,\'' + dialogXML.getAttribute("View") + '\' );" />	';
	newHTML += '					</div>	';
	newHTML += '				</div>	';
	newHTML += '				<table width="95%">	'; 
	newHTML += '					<tr >	';
	newHTML += '						<td class="DialogContent">	';
	
	newHTML += dialogXML.getAttribute("DialogText");
	
	newHTML += '						</td>	';
	newHTML += '					</tr>	';
	newHTML += '					<tr>	';
	newHTML += '						<td style="text-align: right;">	';
	
	for (var i = 0; i < dialogXML.getElementsByTagName("Button").length; i++)
	{
		var button = dialogXML.getElementsByTagName("Button")[i];
		tag = '							<input class="DialogButton" id="btn[VALUE]" type="button" value="[TEXT]" NAME="[VALUE]" onclick=\'JavaScript:dialogButtonClicked("[VIEW]","[DIALOGNAME]","[BUTTON]")\'>';
		tag = tag.replace(/\[VALUE\]/g, button.getAttribute("Value"));
		tag = tag.replace(/\[TEXT\]/g, button.getAttribute("Text"));
		tag = tag.replace(/\[VIEW\]/g, dialogXML.getAttribute("View"));
		tag = tag.replace(/\[DIALOGNAME\]/g, dialogXML.getAttribute("Name"));
		tag = tag.replace(/\[BUTTON\]/g, button.getAttribute("Value"));
				
		newHTML += tag;
		
		if (i == 0)
		{
			focusOnButton = "btn[VALUE]";
			focusOnButton = focusOnButton.replace(/\[VALUE\]/g, button.getAttribute("Value"));
		}
	}

	newHTML += '						</td>	';
	newHTML += '					</tr>	';
	newHTML += '				</table>	';
	newHTML += '			</div>	';
	newHTML += '		</div>	';
	
	dialogDiv.innerHTML = newHTML;
	
	var jaxDiv = document.getElementById("jaxDiv");
	if (jaxDiv != null)
	{
		jaxDiv.appendChild(dialogDiv);
	}
	else
	{
		document.body.appendChild(dialogDiv);
	}
	
	showPopWin(dialogXML.getAttribute("Title"), width, parseInt(dialogXML.getAttribute("Height")), null, focusOnButton);	
	
}

function dialogButtonClicked(view, dialogName, button)
{	
	dialogButton = null;
	var commandString = new String();
	var controllerId = null;
	eval('controllerId = ' + view + 'ControllerId;');
		
	hidePopWin(false, view);
	
	commandString = controllerURL + '?_method=DialogButtonClicked&_sender=[DIALOGNAME]&_controller_id=[CONTROLLERID]&_button=[BUTTON]';
	commandString = commandString.replace(/\[DIALOGNAME\]/g,dialogName);
	commandString = commandString.replace(/\[CONTROLLERID\]/g,controllerId);
	commandString = commandString.replace(/\[BUTTON\]/g,button);	

	ajax_request(commandString,'',null, null);		
	 				 
}



function showPopUp(url, title, width, height, view)
{
	var newHTML = new String();

	var popupDiv;
	RemoveDialogs();

	if (xIE4Up) {
		popupDiv = document.createElement('<div id="popupDiv">');
	}
	else {
		popupDiv = document.createElement('div');
		popupDiv.id = "popupDiv";
    }
	
	newHTML += '	<div id="popupMask">&nbsp;</div>';
	newHTML += '	<div id="popupContainer">';
	newHTML += '		<div id="popupInner">';
	newHTML += '			<div id="popupTitleBar">';
	newHTML += '				<div id="popupTitle"></div>';
	newHTML += '				<div id="popupControls">';
	newHTML += '					<img id="imgPopUpClose" src="' + (resourcePath == undefined? '':resourcePath) + '/images/close.gif" onclick="hidePopWin(false, \'' + view + '\');raisePopupClosedEvent(\'' + view + '\');" />';
	newHTML += '				</div>';
	newHTML += '			</div>';
	newHTML += '			<iframe src="' + url + '" style="width:99%;height:99%;background-color:transparent;" scrolling="auto" frameborder="0" allowtransparency="true" id="popupFrame" name="popupFrame"></iframe>';
	newHTML += '		</div>';
	newHTML += '	</div>';

	popupDiv.innerHTML = newHTML;
	
	var jaxDiv = document.getElementById("jaxDiv");
	if (jaxDiv != null)
	{
		jaxDiv.appendChild(popupDiv);
	}
	else
	{
		document.body.appendChild(popupDiv);
	}
	
	showPopWin(title, width, height, null);
}

function hidePopWinFromPopUp(view) {
	//window.frameElement.ownerDocument.all.panelTitle.innerText
	//alert('closing popup');
	//window.frameElement.ownerDocument.hidePopWin(false);
	
	restoreTabIndexesFromPopUp();
	var popupMask = window.frameElement.ownerDocument.getElementById("popupMask");
	var popupContainer = window.frameElement.ownerDocument.getElementById("popupContainer");

	popupMask.style.display = "none";
	popupContainer.style.display = "none";
	
	closePopUp(view);
}

function closePopUp(view)
{
	dialogButton = null;
	//hidePopWin(false, view);
	// trigger a popup closed event for realJAX
	// trigger a submit for server side event handling
//alert('closing popup');

	var theform;
	var closeButton;
	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
		theform = window.frameElement.ownerDocument.Form1;
		//alert(theform);
		closeButton = window.frameElement.ownerDocument.getElementById("imgPopUpClose");
		//alert(closeButton);
	}
	else {
		theform = window.frameElement.ownerDocument.forms["Form1"];
		closeButton = window.frameElement.ownerDocument.getElementById("imgPopUpClose");
	}	
	if (closeButton != null) closeButton.click();
	theform.__EVENTARGUMENT.value = 'PopUpClosed';
	theform.submit();
	
	//alert('popup closed');
}

function raisePopupClosedEvent(view) { 
	//VPA-5547 - InDa - 2-8-2010
	//VPA-5547 - GeMa - 23-08-2010 : surrounded undefined with quotes
	if(view != null && view != '' && view != 'undefined')
	{
		var commandString = new String();
		var controllerId = null;

		eval('controllerId = ' + view + 'ControllerId;');

		commandString = controllerURL + '?_method=DialogButtonClicked&_sender=[DIALOGNAME]&_controller_id=[CONTROLLERID]&_button=[BUTTON]';
		commandString = commandString.replace(/\[DIALOGNAME\]/g,view);
		commandString = commandString.replace(/\[CONTROLLERID\]/g,controllerId);
		commandString = commandString.replace(/\[BUTTON\]/g,'Close');
	
		ajax_request(commandString,'',null, null, false);
	}
}
function restoreTabIndexesFromPopUp() {
	if (window.frameElement.ownerDocument.all) { //alert('restoreTabIndexesFromPopUp');
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = window.frameElement.ownerDocument.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				tagElements[k].tabIndex = gTabIndexes[i];
				tagElements[k].tabEnabled = true;
				i++;
			}
		}
	}
}


// * POPUP WINDOW CODE
// * Used for displaying DHTML only popups instead of using buggy modal windows.
// *
// * By Seth Banks (webmaster at subimage dot com)
// * http://www.subimage.com/
// *
// * Contributions by Eric Angel (tab index code) and Scott (hiding/showing selects for IE users)
// *
// * Up to date code can be found at http://www.subimage.com/dhtml/subModal
// *
// * This code is free for you to use anywhere, just keep this comment block.
// Popup code
var gPopupMask = null;
var gPopupContainer = null;

var gReturnFunc;
var gPopupIsShown = false;

var gHideSelects = false;


var gTabIndexes = new Array();
// Pre-defined list of tags we want to disable/enable tabbing into
var gTabbableTags = new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME");	

// If using Mozilla or Firefox, use Tab-key trap.
if (!document.all) {
	document.onkeypress = keyDownHandler;
}


// Initializes popup code on load.	
function initPopUp() {	
	gPopupMask = document.getElementById("popupMask");
	gPopupContainer = document.getElementById("popupContainer");	
	
	// check to see if this is IE version 6 or lower. hide select boxes if so
	// maybe they'll fix this in version 7?
	var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10);
	if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE") > -1) {
		gHideSelects = true;
	}
}
//addEvent(window, "load", initPopUp);

//	* @argument width - int in pixels
//	* @argument height - int in pixels
//	* @argument url - url to display
//	* @argument returnFunc - function to call when returning true from the window.
function showPopWin(title, width2, height2, returnFunc, focusOnButton) {
	initPopUp();
	
	var width = width2.toString();
	var height = height2.toString();
	
	gPopupIsShown = true;
	disableTabIndexes();
	// calculate size if it's a percentage
	var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);
	
	if(width.indexOf('%')!=-1) 
		width = parseInt(getViewportWidth() * (parseInt(width) *0.01));
	else
		width = parseInt(width);
	
	if(height.indexOf('%')!=-1) 
		height = parseInt((getViewportHeight() * (parseInt(height) *0.01))) - titleBarHeight;
	else
		height = parseInt(height);	

					
	// calculate where to place the window on screen
	centerPopWin(width, height);

	gPopupContainer.style.width = width + "px";
	//gPopupContainer.style.height = (height+titleBarHeight) + "px";
	gPopupContainer.style.height = height + "px";
	// need to set the width of the iframe to the title bar width because of the dropshadow
	// some oddness was occuring and causing the frame to poke outside the border in IE6

	// for IE
	if (gHideSelects == true) {
		hideSelectBoxes();
	}
	//alert(title);
	setPopTitle(title);
	
	gPopupMask.style.display = "block";
	gPopupContainer.style.display = "block";

	if (focusOnButton != null)
	{
		var button = document.getElementById(focusOnButton);
		try { button.focus(); } catch(e) {}
		dialogButton = button;
	}
	else
	{
		dialogButton = document.getElementById("imgPopUpClose");
		
	}
}

//
var gi = 0;
function centerPopWin(width, height) {
	if (gPopupIsShown == true) {
		if (width == null || isNaN(width)) {
			width = gPopupContainer.offsetWidth;
		}
		if (height == null) {
			height = gPopupContainer.offsetHeight;
		}
		
		var fullHeight = getViewportHeight();
		var fullWidth = getViewportWidth();
		
		var theBody = document.documentElement;
		
		var scTop = parseInt(theBody.scrollTop,10);
		var scLeft = parseInt(theBody.scrollLeft,10);
		
		gPopupMask.style.height = fullHeight + "px";
		gPopupMask.style.width = fullWidth + "px";
		gPopupMask.style.top = scTop + "px";
		gPopupMask.style.left = scLeft + "px";
		
		//window.status = gPopupMask.style.top + " " + gPopupMask.style.left + " " + gi++;
		
		var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);
		
		gPopupContainer.style.top = (scTop + ((fullHeight - (height+titleBarHeight)) / 2)) + "px";
		gPopupContainer.style.left =  (scLeft + ((fullWidth - width) / 2)) + "px";
		
	}
}
addEvent(window, "resize", centerPopWin);
//addEvent(window, "scroll", centerPopWin);
window.onscroll = centerPopWin;


// @argument callReturnFunc - bool - determines if we call the return function specified
// @argument returnVal - anything - return value 
function hidePopWin(callReturnFunc, view) {
	gPopupIsShown = false;
	
	restoreTabIndexes();
	pickerButton = null;
	
	if (gPopupMask == null) {
		return;
	}
	gPopupMask.style.display = "none";
	gPopupContainer.style.display = "none";
	

	//if (callReturnFunc == true && gReturnFunc != null) {
	//	gReturnFunc(window.frames["popupFrame"].returnVal);
	//}
	
	// display all select boxes
	if (gHideSelects == true) {
		displaySelectBoxes();
	}

	dialogButton = null;
	//raisePopupClosedEvent(view);
	
}

 // Sets the popup title based on the title of the html document it contains.
 // Uses a timeout to keep checking until the title is valid.
function setPopTitle(title) {	
		document.getElementById("popupTitle").innerHTML = title;
}


// Tab key trap. iff popup is shown and key was [TAB], suppress it.
// @argument e - event - keyboard event that caused this function to be called.
function keyDownHandler(e) {
    if (gPopupIsShown && e.keyCode == 9)  return false;
}

// For IE.  Go through predefined tags and disable tabbing into them.
function disableTabIndexes() {
	if (document.all) {
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				gTabIndexes[i] = tagElements[k].tabIndex;
				tagElements[k].tabIndex="-1";
				i++;
			}
		}
	}
}

// For IE. Restore tab-indexes.
function restoreTabIndexes() {
	if (document.all) {
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				tagElements[k].tabIndex = gTabIndexes[i];
				tagElements[k].tabEnabled = true;
				i++;
			}
		}
	}
}



// Hides all drop down form select boxes on the screen so they do not appear above the mask layer.
// IE has a problem with wanted select form tags to always be the topmost z-index or layer
//
// Thanks for the code Scott!
function hideSelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
				document.forms[i].elements[e].style.visibility="hidden";
			}
		}
	}
}

// Makes all drop down form select boxes on the screen visible so they do not reappear after the dialog is closed.
// IE has a problem with wanted select form tags to always be the topmost z-index or layer
function displaySelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
			document.forms[i].elements[e].style.visibility="visible";
			}
		}
	}
}

 // COMMON DHTML FUNCTIONS
 // These are handy functions I use all the time.
 //
 // By Seth Banks (webmaster at subimage dot com)
 // http://www.subimage.com/
 //
 // Up to date code can be found at http://www.subimage.com/dhtml/
 //
 // This code is free for you to use anywhere, just keep this comment block.
 
 // X-browser event handler attachment and detachment
 //
 // @argument obj - the object to attach event to
 // @argument evType - name of the event - DONT ADD "on", pass only "mouseover", etc
 // @argument fn - function to call
function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}
function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}

 // Code below taken from - http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/
 //
 // Modified 4/22/04 to work with Opera/Moz (by webmaster at subimage dot com)
 //
 // Gets the full width/height because it's different for most browsers.
function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}
function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}
