document.write('<iframe id="testFrame" style="display:none" src="/wwwroot/lib/pushform/pushForm.html"></iframe>')

function pushForm(div, optionsObj){
	if (!optionsObj){
		var optionsObj = {}
	}
	var last=prev=0;
	if (!window.sessionFrame){
		sessionFrame = $('testFrame');
		
		if (sessionFrame.contentDocument)
			browser = 'ff';
		else 
			browser = 'ie';
	}

	var doc = sessionFrame.contentWindow.document;
	
	if (window.overlayArray && overlayArray.currentPage < overlayArray.length-1){
		var a=[];
		a.currentPage = overlayArray.currentPage;
		for(var i=0;i<=overlayArray.currentPage;i++)
			a[i] = overlayArray[i]
		overlayArray=a;
	}

	if (window.pageYOffset)	{
		  var scrollTop = window.pageYOffset
		  var scrollLeft = window.pageXOffset
	}
	else if (document.documentElement && document.documentElement.scrollTop)	{
		var scrollTop = document.documentElement.scrollTop
		var scrollLeft = document.documentElement.scrollLeft
	}
	else if (document.body){
		  var scrollTop = document.body.scrollTop
		  var scrollLeft = document.body.scrollLeft
	}
	
	if (window.innerHeight){
		var windowHeight = window.innerHeight
		var windowWidth = window.innerWidth
	}
	else if (document.documentElement && document.documentElement.clientHeight)	{
		var windowHeight = document.documentElement.clientHeight
		var windowWidth = document.documentElement.clientWidth
	}
	else if (document.body)	{
		var windowHeight = document.body.clientHeight;
		var windowWidth = document.body.clientWidth;
	}
	
	if (!window.overlayArray){
		overlayArray=new Array();
	}

	if (overlayArray.length==0)
		var currentZ = 0;
	else
		var currentZ = parseInt(overlayArray[overlayArray.length-1].style.zIndex)
		
	if (!window.overlay){
		overlay = document.createElement('div');
		overlay.id = 'overlay';
		overlay.onclick='event.cancelBubble=true';
		overlay.style.position='absolute';
		overlay.style.top='0';
		overlay.style.left='0';
		overlay.style.display='none';
		overlay.style.opacity='.5';
		overlay.style.filter='Alpha(Opacity=50)';
		overlay.style.backgroundColor='black';
		document.body.appendChild(overlay); 
	}
	if (optionsObj.opacity){
		overlay.style.opacity=optionsObj.opacity;
		overlay.style.filter='Alpha(Opacity='+optionsObj.opacity*100+')';
	}
	if (optionsObj.color){
		overlay.style.backgroundColor=optionsObj.color;
	}
	overlay.style.height = document.body.scrollHeight+'px';
	overlay.style.width = document.body.scrollWidth+'px';
	
	last = overlayArray.length
	overlayArray[last]= div;
	
	div.screenTop = div.saveScreenTop = scrollTop;

	overlayArray.currentPage = last;
	
	div.style.zIndex = currentZ+20;
	
	var divTop = Math.round(scrollTop+((windowHeight-div.clientHeight)/2))
	var divLeft = Math.round(scrollLeft+((windowWidth-div.clientWidth)/2))
	div.style.top = Math.max(divTop,0)+'px'
	div.style.left = Math.max(divLeft,0)+'px'

	var newZ = currentZ+10;
	div.boundHandler = lockWindow.bindAsEventListener(div);
	
	var historyScript = '<script>par=window.parent;if(par.overlayArray){par.overlay.style.display="";par.overlay.style.zIndex='+newZ+'; par.overlayArray['+(overlayArray.length-1)+'].style.visibility="visible";par.cleanupOverlay('+last+');}else{history.back()}</script>'
	if (browser == 'ie'){
		doc.open();
		doc.write(historyScript)
		doc.close();
	}
	else
		sessionFrame.src='/wwwroot/lib/pushform/echo.cfm?data='+historyScript;
}


function popForm(){
	history.back();
}

function cleanupOverlay(current){
	overlayArray.currentPage = current;
	if (current == -1){
		Event.stopObserving(document.body,'scroll',overlayArray[0].boundHandler)
		Event.stopObserving(window,'scroll',overlayArray[0].boundHandler)
		overlayArray[0].style.visibility="hidden";
		scroll(0,overlayArray[0].saveScreenTop)
		overlay.style.display="none";
		return;
	} 
	
	for (var i = 0;i<overlayArray.length;i++){
		Event.stopObserving(document.body,'scroll',overlayArray[i].boundHandler)
		Event.stopObserving(window,'scroll',overlayArray[i].boundHandler)
		
		if (i>current)
			overlayArray[i].style.visibility="hidden";
		else if (i==current){
			//alert(i+':'+overlayArray.length)
			if (i+1 < overlayArray.length)
				scroll(0,overlayArray[i+1].saveScreenTop)
			Event.observe(document.body,'scroll',overlayArray[i].boundHandler)
			Event.observe(window,'scroll',overlayArray[i].boundHandler)
		}
	}
}


function lockWindow(div){
	if (window.pageYOffset)	{
		  var scrollTop = window.pageYOffset
	}
	else if (document.documentElement && document.documentElement.scrollTop)	{
		var scrollTop = document.documentElement.scrollTop
	}
	else if (document.body)	{
		  var scrollTop = document.body.scrollTop
	}
	
	if (window.innerHeight)	{
		var clientHeight = window.innerHeight-16
	}
	else if (document.documentElement && document.documentElement.clientHeight)	{
		var clientHeight = document.documentElement.clientHeight
	}
	else if (document.body)	{
		var clientHeight = document.body.clientHeight
	}
	
	
	if (clientHeight >= this.offsetHeight){
		if (scrollTop < this.screenTop){
			if (this.offsetTop+this.offsetHeight > scrollTop+clientHeight){
				scroll(0,this.offsetTop+this.offsetHeight-clientHeight)
				this.screenTop = this.offsetTop+this.offsetHeight-clientHeight
			}
		}
		if (scrollTop > this.screenTop){
			if (scrollTop > this.offsetTop){
				scroll(0,this.offsetTop)
				this.screenTop = this.offsetTop
			}
		}
	}
	else {
		if (scrollTop < this.screenTop){
			if (this.offsetTop > scrollTop){
				scroll(0,this.offsetTop)
				this.screenTop = this.offsetTop
			}
		}
		if (scrollTop > this.screenTop){
			if (this.offsetTop+this.offsetHeight < scrollTop+clientHeight){
				scroll(0,this.offsetTop+this.offsetHeight-clientHeight)
				this.screenTop = this.offsetTop+this.offsetHeight-clientHeight
			}
		}
	}
}


