/** * SUBMODAL v1.5 * Used for displaying DHTML only popups instead of using buggy modal windows. * * By Seth Banks * http://www.subimage.com/ * * Contributions by: * Eric Angel - tab index code * Scott - hiding/showing selects for IE users * Todd Huss - inserting modal dynamically and anchor classes * * 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. */ var gPopupMask = null; var gPopupContainer = null; var gPopFrame = null; var gReturnFunc; var gPopupIsShown = false; var gDefaultPage = "/OpenModal_Loading.html"; var gHideSelects = false; var gReturnVal = null; var gTabIndexes = new Array(); var gTabbableTags = new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME"); if (!document.all) { document.onkeypress = keyDownHandler; } function initPopUp() { theBody = document.getElementsByTagName('BODY')[0]; popmask = document.createElement('div'); popmask.id = 'popupMask'; popmask.onclick = HideAllPopups; popcont = document.createElement('div'); popcont.id = 'popupContainer'; popcont.innerHTML = '' + '
' + '
' + '
' + '
' + '' + '
' + '
' + '' + '
'; theBody.appendChild(popmask); theBody.appendChild(popcont); gPopupMask = document.getElementById("popupMask"); gPopupContainer = document.getElementById("popupContainer"); gPopFrame = document.getElementById("popupFrame"); var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10); if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE") > -1) { gHideSelects = true; } var arrLinksOnPage = document.getElementsByTagName('a'); for (nLink=0; nLink= 0) { arrLinksOnPage[nLink].onclick = function() { var width = 500; var height = 400; arrClassNames = this.className.split(' '); for (nClass=0; nClass theBody.scrollHeight)?fullHeight:theBody.scrollHeight; popWidth = (fullWidth > theBody.scrollWidth )?fullWidth:theBody.scrollWidth; /* if (fullHeight > theBody.scrollHeight) { popHeight = fullHeight; } else { popHeight = theBody.scrollHeight; } if (fullWidth > theBody.scrollWidth) { popWidth = fullWidth; } else { popWidth = theBody.scrollWidth; } */ $("#popupMask").css("height", popHeight + "px"); $("#popupMask").css("width", popWidth + "px"); } /** * @argument callReturnFunc - bool - determines if we call the return function specified * @argument returnVal - anything - return value */ function hidePopWin(callReturnFunc) { gPopupIsShown = false; var theBody = document.getElementsByTagName("BODY")[0]; theBody.style.overflow = ""; restoreTabIndexes(); if (gPopupMask == null) { return; } $("#popupMask").hide(); $("#popupContainer").hide(); if (callReturnFunc == true && gReturnFunc != null) { // Set the return code to run in a timeout. // Was having issues using with an Ajax.Request(); gReturnVal = window.frames["popupFrame"].returnVal; window.setTimeout('gReturnFunc(gReturnVal);', 1); } gPopFrame.src = gDefaultPage; // display all select boxes if (gHideSelects == true) { displaySelectBoxes(); } } /** * 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() { return; if (window.frames["popupFrame"].document.title == null) { window.setTimeout("setPopTitle();", 10); } else { document.getElementById("popupTitle").innerHTML = window.frames["popupFrame"].document.title; } } function keyDownHandler(e) { if (gPopupIsShown && e.keyCode == 9) return false; } 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++; } } } } 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++; } } } } 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"; } } } } 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"; } } } }