pushformVPath = "/wwwroot/lib/pushform/1.1/";
document.write('<iframe name="timiscool" id="testFrame" style="display:none"  src="'+pushformVPath+'pushForm.html"></iframe>')
//

overlayArray=[];

initScript = 'par=window.parent;'+
	'if(par.overlay)'+
	'	par.cleanupOverlay(-1);'+
	'if (par.overlayArray && par.overlayArray.reInit){'+
	'	par.overlayArray.reInit()'+
	'}'
	
overlayArray.truncate = function(index){
	for (var i=index;i<overlayArray.length;i++)
		overlayArray[i] = 'goBack'
}


function pushForm(div, optionsObj){
	if (!optionsObj){
		var optionsObj = {}
	}
	var last=prev=0;

	truncateOverlayArray();


	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 (overlayArray.length==0)
		var currentZ = 0;
	else {
		var x = overlayArray.length-1;
		while (!overlayArray[x].style && x > 0)
			x--;
		if (overlayArray[x].style)
			var currentZ = parseInt(overlayArray[x].style.zIndex)
		else
			var currentZ = 0;
	}
	
	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 = Math.max(windowHeight, document.body.scrollHeight)+'px';
	overlay.style.width = Math.max(windowWidth, document.body.scrollWidth)+'px';
	
	last = overlayArray.length
	overlayArray[last]= div;
	
	//alert(last);
	
	div.screenTop = div.saveScreenTop = scrollTop;

	overlayArray.currentPage = last;
	
	div.style.zIndex = currentZ+20;
	
	var divTop = Math.max(scrollTop, 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);
	
	writeScript(createDivJs(last,newZ));
}

function createDivJs(x,newZ){
	var a=['<script>'
	,'par=window.parent;'
	,'var me = '+x+';'
	,'if(par.overlayArray){'
	,'	if(par.overlayArray[me]=="end"){	'
	,'		history.back();	'
	,'	}else if(par.overlayArray[me]=="goForward"){	'
	,'		par.overlayArray[me] = "goBack";		'
	,'		history.forward();	'
	,'	}else if (par.overlayArray[me]=="goBack"){	'
	,'		par.overlayArray[me] = "goForward";		'
	,'		history.back();	'
	,'	}else{		'
	,'		par.overlay.style.display="";'
	,'		par.overlay.style.zIndex='+newZ+'; '
	,'		par.overlayArray[me].style.visibility="visible";'
	,'		par.cleanupOverlay(me);'
	,'	}	'
	,'}else'
	,'	{history.back()}'
	,'</script>'];
	
	return a.join('');
}
function createFxJs(x){
	var a=['<script>'
	,'	par=window.parent;'
	,'	var me = '+x+';'
	,'	par.cleanupOverlay(me);'
	,'	if (par.overlayArray.length-1 > me && par.overlayArray[me+1].style && par.overlay.style.display==""){ '
	,'		par.overlay.style.display="none";'
	,'		par.overlayArray[me+1].style.visibility="hidden";'
	,'	}else if (par.overlayArray[me] == "goBack"){	'
	,'		par.overlayArray[me] = "goForward";	'
	,'		history.go(-1);	'
	,'	}else if (par.overlayArray[me] == "goForward"){	'
	,'		par.overlayArray[me] = "goBack";	'
	,'		history.forward();	'
	,'	}else if (par.overlayArray.length-1 >= me){ '
	,'		par.overlayArray[me]();'
	,'	};	'
	,'</script>']
	return a.join('');
}

function truncateOverlayArray(){
	if (window.overlayArray && overlayArray.currentPage < overlayArray.length-1){
		overlayArray.splice(overlayArray.currentPage+1,999)
	}
}




function pushF(fx){
	truncateOverlayArray();
	var x = overlayArray.length;
	overlayArray[x]= fx;
	overlayArray.currentPage = x;
	writeScript(createFxJs(x))
}

function writeScript(historyScript){
	if (!window.sessionFrame){
		sessionFrame = $('testFrame');
	}	
	
		
	var doc = sessionFrame.contentWindow.document;
	if (sessionFrame.contentDocument){
		sessionFrame.src= pushformVPath+'echo.cfm?data='+encodeURIComponent(historyScript);
	}
	else {
		doc.open();
		doc.write(historyScript)
		doc.close();
	}
}

function popForm(destroy){
	if (destroy){
		var me = overlayArray.currentPage;
		
		overlay.style.display="none";
		if (overlayArray[me].style){
			overlayArray[me].style.visibility="hidden";
			Event.stopObserving(document.body,'scroll',overlayArray[me].boundHandler)
			Event.stopObserving(window,'scroll',overlayArray[me].boundHandler)
		}
		overlayArray[me] = "goBack";

		if (me == 0)
			historyScript = initScript;
		else {
			overlayArray.push(overlayArray[me-1]);
			if (overlayArray[me-1].tagName){
				var z = overlayArray[overlayArray.length-1].style.zIndex - 10;
				writeScript(createDivJs(me+1,z))
			}
			else
				writeScript(createFxJs(me+1))
			overlayArray[me-1] = "goBack";
		}
	}
	else
		history.back();
}


function cleanupOverlay(current){
	overlayArray.currentPage = current;
	if (current == -1){
		if (overlayArray[0].style){
			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){
			if (overlayArray[i].style){
				overlayArray[i].style.visibility="hidden";
			}
			}
			else if (i==current){
				if (i+1 < overlayArray.length && overlayArray[i+1].saveScreenTop)
					scroll(0,overlayArray[i+1].saveScreenTop)
				if (window.parent.isFunction(overlayArray[i].boundHandler)){
					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
			}
		}
	}
}

