"Bill" <bi*********@yahoo.com.au> wrote in message
news:bo**********@news4.jaring.my...
<snip>
... so the "in window pop-up" becomes the
nearest practical option. ...
<snip>You can probaly see from my other posts that I expressed
things badly. I'm REALLY looking to give peopole a CHOICE
whether they read about a freebie or not.
<snip>
I may as well provide you with an example of what I was talking about.
The following script still needs a bit of work but is mostly working and
demonstrates the principals.
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title></title>
<style type="text/css">
#dialogDiv {
border: 2px solid #007686;
background-color:#44CCDD;
color:#FFFFFF;
width:35ex;
padding:0px;
}
#dialogDiv DIV {
background-color:#44CCDD;
color:#FFFFFF;
width:100%;
padding:0px;
margin:0px;
}
#dialogDiv FORM {
padding:0.2em 0.5em 0px 0.5em;
margin:0;
}
#dialogDiv INPUT {
padding:0.1em;
margin:0.2em;
}
#dialogBar {
text-align:right;
padding:0.1em;
margin:0;
}
#dialogBar A {
color:#FFFFFF;
background-color:#44CCDD;
text-decoration:none;
font-style:bold;
}
</style>
<script type="text/javascript">
var queryStrings = (function(out){
if(typeof location != 'undefined'){
var temp = location.search||location.href||'';
var ofSet;
if((ofSet = temp.indexOf('?')) > -1){
temp = temp.substring((ofSet+1), temp.length);
var workAr = temp.split('&');
for(var nvp,c = workAr.length;c--;){
nvp = workAr[c].split('=');
if(nvp.length > 1){
out[nvp[0]] = nvp[1];
}
}
}
}
return out;
})({}); //inline function expression call passed an object
// literal - {} - as its parameter (out).
var TimedQue = function(){
var base, timer;
var interval = 40;
var newFncs = null;
function addFnc(next, f){
function t(){
next = next&&next();
if(f()){
return t;
}else{
f = null;
return next;
}
};
t.addItem = function(d){
if(next){
next.addItem(d);
}else{
next = d;
}
return this;
};
t.finalize = function(){
return ((next)&&(next = next.finalize())||(f = null));
};
return t;
};
function tmQue(fc){
if(newFncs){
newFncs = newFncs.addItem(addFnc(null, fc));
}else{
newFncs = addFnc(null, fc);
}
if(!timer){
timer = setTimeout(tmQue.act, interval);
}
};
tmQue.act = function(){
var fn = newFncs, strt = new Date().getTime();
if(fn){
newFncs = null;
if(base){
base.addItem(fn);
}else{
base = fn;
}
}
base = base&&base();
if(base){
var t = interval - (new Date().getTime() - strt);
timer = setTimeout(tmQue.act, ((t > 0)?t:1));
}else{
timer = null;
};
};
tmQue.act.toString = function(){
return 'TimedQue.act()';
};
tmQue.finalize = function(){
timer = timer&&clearTimeout(timer);
base = base&&base.finalize();
newFncs = [];
};
return tmQue;
}();
var dialogBox = (function(){
var global = this;
var diOuterDiv, diOuterDivStyle;
var posMod, targetWidth, targetHeight;
var windowState, pageState, isOpen = false,active = false;
function compatModeTest(obj){
if((document.compatMode)&&
(document.compatMode == 'CSS1Compat')&&
(document.documentElement)){
return document.documentElement;
}else if(document.body){
return document.body;
}else{
return obj;
}
};
function getWindowState(){
var readScroll = {scrollLeft:0,scrollTop:0};
var readSize = {clientWidth:0,clientHeight:0};
var readScrollX = 'scrollLeft';
var readScrollY = 'scrollTop';
var readWidth = 'clientWidth';
var readHeight = 'clientHeight';
if((typeof global.innerHeight == 'number')&&
(typeof global.innerWidth == 'number')){
readSize = global;
readWidth = 'innerWidth';
readHeight = 'innerHeight';
}else{
readSize = compatModeTest(readSize);
}
if((typeof global.pageYOffset == 'number')&&
(typeof global.pageXOffset == 'number')){
readScroll = global;
readScrollY = 'pageYOffset';
readScrollX = 'pageXOffset';
}else{
readScroll = compatModeTest(readScroll);
}
return {
getScrollX:function(){
return readScroll[readScrollX];
},
getScrollY:function(){
return readScroll[readScrollY];
},
getWidth:function(){
return readSize[readWidth];
},
getHeight:function(){
return readSize[readHeight];
}
};
}
function getPageState(){
var readPageSize = {scrollWidth:0,scrollHeight:0};
var readPageWidth = 'scrollWidth';
var readPageHeight = 'scrollHeight';
if((typeof document.width == 'number')&&
(typeof document.height == 'number')){
readPageSize = document;
readPageWidth = 'width';
readPageHeight = 'height';
}else{
readPageSize = compatModeTest(readPageSize);
if((!readPageSize[readPageWidth])&&
(!readPageSize[readPageHeight])){
if(readPageSize.offsetHeight){
readPageWidth = 'offsetWidth';
readPageHeight = 'offsetHeight';
}
}
}
return {
getPageWidth:function(){
return readPageSize[readPageWidth]||0;
},
getPageHeight:function(){
return readPageSize[readPageHeight]||0;
}
};
};
function retTrue(){return true;}
function getEl(iD){
var obj;
if(document.getElementById){
obj = document.getElementById(iD);
}else if(document.all){
obj = document.all[iD];
}else if(document.layers){
obj = document.layers[iD];
}
return obj;
}
function getDimensions(div){
var obj = {};
if(div.document&&(typeof div.document.width == 'number')){
obj.width = div.document.width;
obj.height = div.document.height;
}else{
obj.width = div.offsetWidth||div.scrollWidth||0;
obj.height = div.offsetHeight||div.scrollHeight||0;
}
return obj;
}
function init(){
pageState = getPageState();
windowState = getWindowState();
diOuterDiv = getEl("dialogDiv");
diOuterDivStyle = (diOuterDiv && diOuterDiv.style)||diOuterDiv;
if((diOuterDiv)&&(diOuterDivStyle)&&
(typeof diOuterDivStyle != 'boolean')){
diOuterDivStyle.position = 'absolute';
diOuterDivStyle.visibility = 'hidden';
posMod = ((typeof diOuterDivStyle.top == 'string')?'px':0);
}else{
init.showDialog = retTrue;
init.closeDialog = retTrue;
}
}
function closeDiv(){
isOpen = false;
diOuterDivStyle.visibility = "hidden";
return false;
}
function setPos(){
if(isOpen){
var availWidth = windowState.getWidth();
var availHeight = windowState.getHeight();
var pageWidth = pageState.getPageWidth();
var pageHeight = pageState.getPageHeight();
var scrollTop = windowState.getScrollY();
if(pageWidth < availWidth)pageWidth = availWidth;
if(pageHeight < availHeight)pageHeight = availHeight;
var topOffset = (windowState.getScrollY()+
((availHeight > targetHeight)?
((availHeight - targetHeight)>>1):0));
var leftOffset = (windowState.getScrollX()+
((availWidth > targetWidth)?
((availWidth - targetWidth)>>1):0));
if((leftOffset+targetWidth) > pageWidth){
leftOffset = pageWidth - targetWidth;
if(leftOffset < 0)leftOffset = 0;
}
if((topOffset+targetHeight) > pageHeight){
topOffset = pageHeight - targetHeight;
if(topOffset < 0)topOffset = 0;
}
diOuterDivStyle.top = topOffset + posMod;
diOuterDivStyle.left = leftOffset + posMod;
}else{
active = false;
}
return isOpen;
}
function showDialog(lnkEl, wd ,ht, altText){
closeDiv();
isOpen = true;
var dimensions = getDimensions(diOuterDiv);
targetWidth = dimensions.width;
targetHeight = dimensions.height;
setPos();
if(!active){
TimedQue(setPos);
active = true;
}
diOuterDivStyle.visibility = "visible"
return false;
}
init.closeButton = function(x){
x.document.write('<a href="#" onclick="return window.',
'dialogBox.closeDialog();">X<\/a>');
}
init.closeDialog = closeDiv;
init.showDialog = showDialog;
if((global.queryStrings&&!queryStrings['noDynamic'])&&
(document.getElementById||document.all||
((document.layers)&&(typeof Layer == 'function')))){
if(document.layers){
document.write('<style type="text/css">#dialogDiv',
' {position:absolute;}<\/style>');
}
return init;
}else{
retTrue.closeButton = retTrue;
retTrue.showDialog = retTrue;
return retTrue;
}
})();
</script>
</head>
<body onload="if(typeof dialogBox == 'function')dialogBox();">
<script type="text/javascript">
var hf = (typeof location != 'undefined')?location.href:'';
hf = hf.substring(0, ((hf.lastIndexOf('?') >= 0)?
hf.lastIndexOf('?'):hf.length));
document.write('<a href="'+hf+'?noDynamic=true">View this',
' page without scripted content.</a><br>');
</script>
<a href="#eMailName"
onclick="return (typeof dialogBox == 'function')?
dialogBox.showDialog():true;">enter eMail details</a><br>
<br>nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn< br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn<br>
<div id="dialogDiv">
<div id="dialogBar"><script
type="text/javascript">if((window.dialogBox)&&
(window.dialogBox.closeButton)){
window.dialogBox.closeButton(this);}</script></div>
<div>
<form name="eMailForm" action="">
<a name="eMailName">Name:</a><br>
<input type="text" value="" size="30" name="eName"><br>
E-Mail Address:<br>
<input type="text" value="" size="30" name="eAddress"><br>
<input type="submit" value="send">
</form>
</div>
</div>
</body>
</html>
Richard.