134 lines
4.5 KiB
JavaScript
134 lines
4.5 KiB
JavaScript
|
//\/////
|
||
|
//\ overLIB Hide Form Plugin
|
||
|
//\ This file requires overLIB 4.00 or later.
|
||
|
//\
|
||
|
//\ Uses an iframe shim to mask system controls for IE v5.5 or higher as suggested in
|
||
|
//\ http://dotnetjunkies.com/weblog/jking/posts/488.aspx
|
||
|
//\
|
||
|
//\ overLIB 4.05 - You may not remove or change this notice.
|
||
|
//\ Copyright Erik Bosrup 1998-2004. All rights reserved.
|
||
|
//\ Contributors are listed on the homepage.
|
||
|
//\ See http://www.bosrup.com/web/overlib/ for details.
|
||
|
// $Revision: 1.1 $ $Date: 2004/09/15 05:00:18 $
|
||
|
//\/////
|
||
|
|
||
|
if (typeof olInfo == 'undefined' || olInfo.simpleversion < 400) alert('overLIB 4.00 or later is required for the HideForm Plugin.');
|
||
|
|
||
|
// Function which generates the popup with an IFRAME shim
|
||
|
function generatePopUp(content) {
|
||
|
if(!olIe4||olOp||!olIe55||(typeof o3_shadow != 'undefined' && o3_shadow)||(typeof o3_bubble != 'undefined' && o3_bubble)) return;
|
||
|
|
||
|
var wd,ht,txt, zIdx = 0;
|
||
|
|
||
|
wd = parseInt(o3_width);
|
||
|
ht = over.offsetHeight;
|
||
|
txt = bckDropSrc(wd,ht,zIdx++);
|
||
|
txt += '<div style="position: absolute; top: 0; left: 0; width: '+ wd+'px; z-index: ' + zIdx + ';">' + content + '</div>';
|
||
|
layerWrite(txt);
|
||
|
}
|
||
|
|
||
|
// Code for the IFRAME which is used in other places
|
||
|
function bckDropSrc(width, height, Z) {
|
||
|
return '<iframe frameborder="0" scrolling="no" src="" width="' + width + '" height="' + height + '" style="z-index: ' + Z + '; filter: Beta(Style=0,Opacity=0);"></iframe>';
|
||
|
}
|
||
|
|
||
|
// Hides SELECT boxes that will be under the popup
|
||
|
// Checking Gecko version number to try to include other browsers based on the Gecko engine
|
||
|
function hideSelectBox() {
|
||
|
if(olNs4 || olOp || olIe55) return;
|
||
|
var px, py, pw, ph, sx, sw, sy, sh, selEl, v;
|
||
|
|
||
|
if(olIe4) v = 0;
|
||
|
else {
|
||
|
v = navigator.userAgent.match(/Gecko\/(\d{8})/i);
|
||
|
if(!v) return; // return if no string match
|
||
|
v = parseInt(v[1]);
|
||
|
}
|
||
|
|
||
|
if (v < 20030624) { // versions less than June 24, 2003 were earlier Netscape browsers
|
||
|
px = parseInt(over.style.left);
|
||
|
py = parseInt(over.style.top);
|
||
|
pw = o3_width;
|
||
|
ph = (o3_aboveheight ? parseInt(o3_aboveheight) : over.offsetHeight);
|
||
|
selEl = (olIe4) ? o3_frame.document.all.tags("SELECT") : o3_frame.document.getElementsByTagName("SELECT");
|
||
|
for (var i=0; i<selEl.length; i++) {
|
||
|
if(!olIe4 && selEl[i].size < 2) continue; // Not IE and SELECT size is 1 or not specified
|
||
|
sx = pageLocation(selEl[i],'Left');
|
||
|
sy = pageLocation(selEl[i],'Top');
|
||
|
sw = selEl[i].offsetWidth;
|
||
|
sh = selEl[i].offsetHeight;
|
||
|
if((px+pw) < sx || px > (sx+sw) || (py+ph) < sy || py > (sy+sh)) continue;
|
||
|
selEl[i].isHidden = 1;
|
||
|
selEl[i].style.visibility = 'hidden';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Shows previously hidden SELECT Boxes
|
||
|
function showSelectBox() {
|
||
|
if(olNs4 || olOp || olIe55) return;
|
||
|
var selEl, v;
|
||
|
|
||
|
if(olIe4) v = 0;
|
||
|
else {
|
||
|
v = navigator.userAgent.match(/Gecko\/(\d{8})/i);
|
||
|
if(!v) return;
|
||
|
v = parseInt(v[1]);
|
||
|
}
|
||
|
|
||
|
if(v < 20030624) {
|
||
|
selEl = (olIe4) ? o3_frame.document.all.tags("SELECT") : o3_frame.document.getElementsByTagName("SELECT");
|
||
|
for (var i=0; i<selEl.length; i++) {
|
||
|
if(typeof selEl[i].isHidden != 'undefined' && selEl[i].isHidden) {
|
||
|
selEl[i].isHidden = 0;
|
||
|
selEl[i].style.visibility = 'visible';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// function gets the total offset properties of an element
|
||
|
// this same function occurs in overlib_mark.js.
|
||
|
function pageLocation(o,t){
|
||
|
var x = 0
|
||
|
|
||
|
while(o.offsetParent){
|
||
|
x += o['offset'+t]
|
||
|
o = o.offsetParent
|
||
|
}
|
||
|
|
||
|
x += o['offset'+t]
|
||
|
|
||
|
return x
|
||
|
}
|
||
|
|
||
|
// reset mouse move routine for NS7 but not NS7.1,Opera, or IE5.5+
|
||
|
// It also bypasses Netscape 6 since the modifications mess up the display of popups
|
||
|
// and don't work anyways.
|
||
|
// Modify mouse move routine while loading so that hideSelectBox()
|
||
|
// can be called from the correct location
|
||
|
if (!(olNs4 || olOp || olIe55 || navigator.userAgent.indexOf('Netscape6') != -1)) {
|
||
|
var MMStr = olMouseMove.toString();
|
||
|
var strRe = /(if\s*\(o3_allowmove\s*==\s*1.*\)\s*)/;
|
||
|
var f = MMStr.match(strRe);
|
||
|
|
||
|
if (f) {
|
||
|
var ls = MMStr.search(strRe);
|
||
|
ls += f[1].length;
|
||
|
var le = MMStr.substring(ls).search(/[;|}]\n/);
|
||
|
MMStr = MMStr.substring(0,ls) + ' { runHook("placeLayer",FREPLACE); if(olHideForm) hideSelectBox(); ' + MMStr.substring(ls + (le != -1 ? le+3 : 0));
|
||
|
document.writeln('<script type="text/javascript">\n<!--\n' + MMStr + '\n//-->\n</' + 'script>');
|
||
|
}
|
||
|
|
||
|
f = capExtent.onmousemove.toString().match(/function[ ]+(\w*)\(/);
|
||
|
if (f&&f[1] != 'annoymous') capExtent.onmousemove = olMouseMove;
|
||
|
}
|
||
|
|
||
|
|
||
|
////////
|
||
|
// PLUGIN REGISTRATIONS
|
||
|
////////
|
||
|
registerHook("createPopup",generatePopUp,FAFTER);
|
||
|
registerHook("hideObject",showSelectBox,FAFTER);
|
||
|
olHideForm=1;
|