/*
BusinessGarden Tools 
 Copyright (c) 2007-2009 Daniel C. Hall/ businessgarden.com  <http://www.businessgarden.com>  

 * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License

1.1	Jun 9 2009			- added support for display of hidden elements within the tool win
									-to use set displayElement to the element ID -- if part of a form element set displayParent
1.2	Jun 26 2009		-fixed some tools added at DAN site.
1.3	Jun 30 2009		-added shadow rounded corner box. System creates an external box if rs=true. Must include images.
1.4	Jul 9 2009			-added zoom open -- zooms window and fades in veil.
*/

//Add our style sheet for rounded corners with shadows

var bgrsboxImg="/images/rsbox/";
if (bgrsboxImg!="") document.write("<style> .bgrsbox{ border: 0px; margin: 0px; padding: 0px; background-color: transparent; clear: both; } .bgrsbox .tl{ background-image: url(" + bgrsboxImg + "tl.png); background-position: top left; background-repeat: no-repeat; width: 12px; height: 15px; float: left; } .bgrsbox .tc{ background-image: url(" + bgrsboxImg + "tc.png); background-repeat: repeat-h; height: 15px; float: left; } .bgrsbox .tr{ background-image: url(" + bgrsboxImg + "tr.png); background-position: top right; background-repeat: no-repeat; width: 28px; height: 15px; float: left; } .bgrsbox .ml{ background-image: url(" + bgrsboxImg + "ml.png); background-repeat: repeat-y; width: 2px; float: left; height: 100%; } .bgrsbox .mc{ background-color: #fff; float: left; height: 100%; } .mr{ background-image: url(" + bgrsboxImg + "mr.png); background-repeat: repeat-y; width: 19px; float: left; height: 100%; } .bgrsbox .bl{ background-image: url(" + bgrsboxImg + "bl.png); background-position: bottom left; background-repeat: no-repeat; width: 28px; height: 25px; float: left; } .bgrsbox .bc{ background-image: url(" + bgrsboxImg + "bc.png); background-position: bottom right; background-repeat: repeat-h; height: 25px;  float: left; } .bgrsbox .br{ background-image: url(" + bgrsboxImg + "br.png); background-position: bottom right; background-repeat: no-repeat; width: 25px; height: 25px; float: left; } </style>")

bgt= new function() {
	this.veilColor="#fff";	//"/images/veil.gif";
	this.veilOpacity=60;
	this.displayElement="";
	this.displayParent="";
	this.rs=false;
	this.version=function(){
		return "1.1";
	}

	//
	//GENERAL TOOLS
	this.e=function(id) {return document.getElementById(id);}  
	function e(id) {return document.getElementById(id);}

	//
	//VEIL TOOLS
	//
	this.veil=function(showIt) 
	{
		this.veilInit();
		this.veilDim();
		e("bgVeilLayer").style.display = showIt ? "block" : "none";
	}


	this.veilInit=function()
	{
		if (!e("bgVeilLayer") ) 
		{ 
			bgNewDiv = document.createElement('div');
			bgNewDiv.setAttribute("id", "bgVeilLayer");
			bgNewDiv.style.position="absolute";
			bgNewDiv.style.top="0px";
			bgNewDiv.style.left="0px";
			bgNewDiv.style.cursor="not-allowed";
			bgNewDiv.style.display="none";
			bgNewDiv.style.background =this.veilColor;
			bgNewDiv.style.filter = "alpha(opacity=" + this.veilOpacity + ")"; 
			bgNewDiv.style.opacity = (this.veilOpacity  / 100); 
			bgNewDiv.style.zIndex = 1000;
			bgNewDiv.innerHTML = "&nbsp;";
			document.body.appendChild(bgNewDiv);
			this.veilListener(window, "resize", this.veilDim);
		}
	}

	this.veilDim= function()
	{
		var myWidth = 0, myHeight = 0;
		var d= document.documentElement;
		var b= document.body;
		var who= d.offsetHeight ? d: b;
		var whow=d.offsetWidth ? d: b;

		myHeight=Math.max(who.scrollHeight,who.offsetHeight);
		myWidth=Math.max(who.scrollWidth,who.offsetWidth);

		//alert("h:" + myHeight + "\nw:" + myWidth);
		e("bgVeilLayer").style.height=myHeight + "px";
		e("bgVeilLayer").style.width=myWidth + "px";
	}


	this.veilListener= function(obj, evType, fn) 
	{
		if (obj.addEventListener) 
		{
			obj.addEventListener(evType, fn, false);
			return true;
		}
		  else if (obj.attachEvent) return obj.attachEvent('on' + evType, fn);
		  else return false;
	}



	//
	//TOOL WINDOW
	//
	this.toolWin=function(showIt, winid) 
	{
		if(winid==undefined) 
		{	
			if(bgt.rs) winid="bgToolWinRS"; else winid="bgToolWin";
		}
		

		if (e(winid )) e(winid).style.display = showIt ? "block" : "none";
		
		if (showIt==false) 
		{
			if(this.displayElement!="" && e(this.displayElement))
			{
				e(this.displayElement).style.display="none";
				if(e(this.displayParent))
					e(this.displayParent).appendChild(e(this.displayElement));
				else
					document.body.appendChild(e(this.displayElement));
				
				if(bgt.rs)
					e("bgToolWin").innerHTML="";
				else
					e(winid).innerHTML="";

				this.displayElement="";
				this.displayParent="";
			}
			this.veil(false);
		}
	}



	this.toolWinInit=function(w, h, bg, p, winid) 
	{
		if (bg==undefined) bg="#fff";
		this.zoombg=bg;
		this.tWidth=w;
		this.tHeight=h;
		if(winid==undefined) 
		{	
			if(bgt.rs) winid="bgToolWinRS"; else winid="bgToolWin";
		}
		

		if (!e(winid) )  
		{ 

			bgNewDiv = document.createElement('div');
			bgNewDiv.setAttribute("id", winid);
			if(bgt.rs)
			{
				bgNewDiv.style.border="0px";
			}			
			else
			{
				bgNewDiv.style.padding="15px";
				bgNewDiv.style.border="2px solid #404040";
			}

			bgNewDiv.style.zIndex = 1001;
			bgNewDiv.style.position="absolute";
			bgNewDiv.style.width="250px";
			bgNewDiv.style.height="250px";
			bgNewDiv.style.display="block";
			bgNewDiv.style.backgroundColor="transparent";
			bgNewDiv.style.textAlign = "left";
			if(bgt.rs) bgNewDiv.innerHTML ="<div id='bgrst' class=bgrsbox style='width: " + w + "px; height: 15px;'><div id='bgrstl' class=tl></div><div id='bgrstc'  class=tc style='width: " + (w-40) + "px; '></div><div id='bgrstr'  class=tr></div></div><div id='bgrsm'  class=bgrsbox style='width: " + w + "px; height: " + h + "px;'><div  id='bgrsml' class=ml></div><div id='bgToolWin'  class=mc style='width: " + (w-21) + "px;'></div><div id= id='bgrsmb' class=mr></div></div><div id='bgrsb'  class=bgrsbox style='width: " + w + "px; height: 25px;'><div id='bgrsbl'  class=bl></div><div  id='bgrsbc' class=bc style='width: " + (w-53) + "px;'></div><div id='bgrsbr'  class=br></div></div>";
			else bgNewDiv.innerHTML = "&nbsp;";
			
			document.body.appendChild(bgNewDiv);
		}

		e(winid).style.display="none";

		var myWidth = 0, myHeight = 0;
		myWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
		myHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
			
		if(bgt.rs)
		{
			e(winid).style.width=w + "px";
			e(winid).style.height=h + "px";
			e("bgrst").style.width=w + "px";
			e("bgrsm").style.width=w + "px";
			e("bgrsm").style.height=h + "px";
			e("bgrsb").style.width=w + "px";
			e("bgToolWin").style.width=(w-21) + "px";
			e("bgrstc").style.width=(w-40) + "px";
			e("bgrsbc").style.width=(w-53) + "px";

		}
		else
		{
			e(winid).style.backgroundColor=bg;
			e(winid).style.width=w + "px";
			e(winid).style.height=h + "px";

			if ( p == undefined ) 
				e(winid).style.padding="15px";		
			else
				e(winid).style.padding=p + "px";
		}
		
		var scrollOffSet=window.pageYOffset || (window.document.documentElement.scrollTop || window.document.body.scrollTop);

		this.tLeft=((myWidth-w)/2);
		this.tTop=((((myHeight-h)/2) - 0) + scrollOffSet);

		e(winid).style.left=this.tLeft + "px";
		e(winid).style.top=this.tTop + "px";


		if(this.displayElement!="" && e(this.displayElement))
		{
			if(this.rs)
			{
				e("bgToolWin").innerHTML="";
				e("bgToolWin").appendChild(e(this.displayElement));
			}
			else
			{
				e(winid).innerHTML="";
				e(winid).appendChild(e(this.displayElement));
			}
			e(this.displayElement).style.display="block";
		}

	}

	this.showWin=function()
	{
		bgt.veil(true);
		bgt.toolWin(true);
	}


	this.closeWin=function()
	{
		bgt.toolWin(false);
		bgt.veil(false);
	}

	this.winOpen=function() //is the tool window open
	{
		if(!e("bgToolWin")) return false
		if(e("bgToolWin").style.display=="none")return false; else return true;
	}

	//
	//PAGE LOADING
	//

	this.pageLoading=function() 
	{
		var w=81;
		var h=17;
		var img="loadingtext.gif"

		if (!e("bgPageLoading") )  
		{ 
			bgel = document.createElement('div');
			bgel.setAttribute("id", "bgPageLoading");
			bgel.style.position="absolute";
			bgel.style.width=w + "px";
			bgel.style.height=h + "px";
			bgel.style.display="none";
			bgel.style.backgroundColor="transparent";
			bgel.style.border="0px";
			bgel.style.padding="0px";
			bgel.style.zIndex = 1001;
			bgel.style.textAlign = "left";
			bgel.innerHTML = "<img src='/images/" + img + "' border=0>";
			document.body.appendChild(bgel);
		}
		var myWidth = 0, myHeight = 0;
		myWidth = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
		myHeight = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
		var scrollOffSet=window.pageYOffset || (window.document.documentElement.scrollTop || window.document.body.scrollTop);

		e("bgPageLoading").style.left=((myWidth-w)/2) + "px";
		e("bgPageLoading").style.top=((((myHeight-h)/2) - 0) + scrollOffSet) + "px";

		this.veilColor="/images/darkbg.png"
		this.veil(true);
		e("bgPageLoading").style.display="block";

	}


	this.setClick=function(ev){
		/*var node = (evt.target) ? evt.target : ((evt.srcElement)
		?evt.srcElement : null );
		evt = (evt) ? evt : ((event) ? event : null);
		this.aLeft = evt.clientX;
		this.aTop  = evt.clientY;*/

		this.aTop = ev.pageY;
		this.aLeft = ev.pageX;
		if ( ev.pageX == null && ev.clientX != null ) {
			var doc = document.documentElement, body = document.body;
			this.aLeft=event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
			this.aTop=event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
		}

	}


	this.zoomWin = function(steps, frDelay) {
		/*
		this.aTop = ev.pageY;
		this.aLeft = ev.pageX;
		if ( ev.pageX == null && ev.clientX != null ) {
			var doc = document.documentElement, body = document.body;
			this.aLeft=event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
			this.aTop=event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
		}
		*/

		if(!bgt.bgzw)
		{
			this.bgzw = document.createElement('div');
			this.bgzw.setAttribute("id", "bgzw");
			this.bgzw.style.position="absolute";
			this.bgzw.style.border="2px solid #444";
			this.bgzw.style.zIndex = 1001;		
			this.bgzw.innerHTML = "&nbsp;";
			document.body.appendChild(this.bgzw);
		}
		else
			this.bgzw=e("bgzw");
		
		bgt.aHeight=2;
		bgt.aWidth=2;
		bgt.aOpacity=10;
		bgt.aVeilOpacity=0;

		bgt.veil(false);
		e("bgVeilLayer").style.opacity = 0;
		e("bgVeilLayer").style.filter = "alpha(opacity=0)"; 
		e("bgVeilLayer").style.display="block"


		bgt.bgzw.style.top=bgt.aTop + "px";
		bgt.bgzw.style.left=bgt.aLeft + "px";
		bgt.bgzw.style.backgroundColor =bgt.zoombg;
		bgt.bgzw.style.width="1px";
		bgt.bgzw.style.height="1px";
		bgt.bgzw.style.opacity = .5;
		bgt.bgzw.style.filter = "alpha(opacity=5)"; 
		bgt.bgzw.style.display = "block";

		//calculate how much to change each animation var 
		bgt.iHeight=bgt.tHeight/steps;
		bgt.iWidth=bgt.tWidth/steps;
		bgt.iTop=(bgt.tTop-bgt.aTop)/steps;
		bgt.iLeft=(bgt.tLeft-bgt.aLeft)/steps;
		bgt.iOpacity=100/steps
		bgt.iVeilOpacity=bgt.veilOpacity/steps

		bgt.x=steps
		if (!bgt.timer) bgt.timer = setInterval(function(){bgt.animate()},frDelay);
	}

	this.animate=function()
	{
		bgt.aTop=bgt.aTop+bgt.iTop;
		bgt.aLeft=bgt.aLeft+bgt.iLeft;
		bgt.aHeight=bgt.aHeight+bgt.iHeight;
		bgt.aWidth=bgt.aWidth+bgt.iWidth;
		bgt.aOpacity=bgt.aOpacity+bgt.iOpacity;
		bgt.aVeilOpacity=bgt.aVeilOpacity+bgt.iVeilOpacity;

		bgt.bgzw.style.width = bgt.aWidth +'px';
		bgt.bgzw.style.height = bgt.aHeight +'px';
		bgt.bgzw.style.left = bgt.aLeft +'px';
		bgt.bgzw.style.top = bgt.aTop +'px';
		bgt.bgzw.style.filter = "alpha(opacity=" + bgt.aOpacity + ")"; 
		bgt.bgzw.style.opacity = (bgt.aOpacity / 100 ); 
		e("bgVeilLayer").style.filter = "alpha(opacity=" + bgt.aVeilOpacity + ")"; 
		e("bgVeilLayer").style.opacity = (bgt.aVeilOpacity / 100 ); 

		bgt.x=bgt.x-1;
		if(bgt.x<1) 
		{
			if (!bgt.timer) return false;
			clearInterval(bgt.timer);
			this.timer = null;
			bgt.toolWin(true);
			e("bgzw").style.display="none";
		}
	}


}



