/* hoverbox.js */
var jsAlert = {
	
	alertID 	: 'alertBox'
	, hoverID	: 'alertHover'
	, alertType	: 'text'
	, Cnt		: 0
	, zIndex	: 2500
	, width 	: 250
	, height 	: 50
	, scr_h		: 0
	, scr_hs	: 0
	, scr_w		: 0
	, scr_ws	: 0
	, defTitle	: 'Please Note!'
	, defProc	: 'Processing, Please Wait!'
	, titleH	: 28
	, defClose	: 1
	, timeoutObj: null
	
	, overlay : function (Obj) 
	{
		var objID	= jsAlert.hoverID+jsAlert.Cnt;
		if (!$(objID)) {
			var objBody 	= document.getElementsByTagName("body").item(0);
			var objOverlay 	= Builder.node('div',{id:objID, className:'hBoxOverlay', style:'display:none;z-index:'+(jsAlert.zIndex-1)});
			
			if (Obj.close!=false)
			{
				Event.observe(objOverlay, 'click', function(){ jsAlert.hide(); }, false);
			}
			else
			{
				objOverlay.setStyle({cursor:'default'});
			}
			
			objBody.appendChild(objOverlay);
			if (Obj.trans) { $(objID).setStyle({opacity:0}); }
			var arrayPageSize = klGeneric.getPageSize();
			$(objID).setStyle({height:arrayPageSize[1]+'px'});
			$(objID).show();
		}
		else { $(objID).remove(); }
		klGeneric.hideSelects(true);
	}
	
	, show : function(Obj) {
			if (jsAlert.timeoutObj) { window.clearTimeout(jsAlert.timeoutObj); }
			jsAlert.Cnt++;
			jsAlert.overlay(Obj);
			
			var objID 		= jsAlert.alertID+jsAlert.Cnt;
			var aType		= (Obj.type) ? Obj.type : jsAlert.alertType;
			var overSizedH	= false;
			var overSizedW	= false;
			var width		= (Obj.width) 	? (Obj.width+25) : jsAlert.width;
			var height		= (Obj.height) 	? Obj.height 	 : jsAlert.height;
			
			jsAlert.resize();
			var leftPos = 0, topPos = 0;
			var scr_w = jsAlert.scr_w;
			var scr_h = jsAlert.scr_hs;
			
			left 	= Math.round((scr_w-width)/2);
			topPos 	= Math.round((scr_h - height - 20 - jsAlert.titleH)/2);
			bod 	= document.getElementsByTagName('body')[0];
			
			if (height>scr_h)
			{
				topPos	= 10;
				height 	= (jsAlert.scr_h - jsAlert.titleH-30);
				overSizedH = true;
			}
			if (width>scr_w)
			{
				left	= 10;
				width 	= (jsAlert.scr_w - 20);
				overSizedW = true;
			}
			
			if (!$(objID))
			{
				boxTitleTxt				= (Obj.title && Obj.title!=='') ? Obj.title : jsAlert.defTitle;
				var boxTitle 			= Builder.node('div', { className:'titlebar' }, boxTitleTxt);
				boxTitle.onSelect		= "return false";
				
				var allowClose			= (Obj.close===false || Obj.close===true) ? Obj.close : jsAlert.defClose;
				if (allowClose) 
				{
					var boxClose		= Builder.node('a', { href:'#', className:'close' });
					Event.observe(boxClose, 'focus', function(){this.blur();}, false);
					Event.observe(boxClose, 'click', jsAlert.hide, false);
					boxTitle.appendChild(boxClose);
				}
				var boxObj 				= Builder.node('div', { id:objID, className:'hBox', style:'display:none; top:'+topPos+'px; left:'+left+'px; min-height:'+height+'px;'+' width:'+width+'px;'});
				bod 					= document.getElementsByTagName('body')[0];
				boxObj.onselectstart 	= new Function("return false");
				
				var boxContent			= Builder.node('div', { className:'content' });
				
				switch (aType)
				{
					case 'text':
						if (Obj.anim) { boxContent.innerHTML = '<div class="anim"></div>'; if (!Obj.text) { Obj.text = jsAlert.defProc; }}
						if (Obj.text) { boxContent.innerHTML += Obj.text; }
						break;
					case 'iframe':
						if (Obj.src) {
							iframeHtml = '<iframe src="'+Obj.src+'" name="iFrame'+jsAlert.Cnt+'" style="border:1px solid black;" id="iFrame'+jsAlert.Cnt+'" width="100%" height="'+Obj.height+'" marginwidth="0" marginheight="0" scrolling="auto" frameborder="0"></iframe>';
							boxContent.innerHTML = iframeHtml;
						}
						break;
					case 'img':
						if (Obj.src) { 
							imgWidth 	 = (Obj.objW) ? Obj.objW : null;
							imgHeight 	 = (Obj.objH) ? Obj.objH : null;
							boxImg		 = Builder.node('img', { src:Obj.src, alt:'', border:'0', width:imgWidth, height:imgHeight });
							Event.observe(boxImg, 'click', jsAlert.hide, false);
							if (overSizedH || overSizedW)
							{
								var styleStr = "";
								if (overSizedH) { styleStr += ' height:'+(height-10)+'px;' }
								if (overSizedW) { styleStr += ' width:'+(width-25)+'px;' }
								boxImgWrap	= Builder.node('div', { style: styleStr, className:'pointer imgWrap' });
								boxImgWrap.appendChild(boxImg);
								boxContent.appendChild(boxImgWrap);
							}
							else { boxContent.appendChild(boxImg); }
						}
						break;
				}
				boxObj.appendChild(boxTitle);
				boxObj.appendChild(boxContent);
				bod.appendChild(boxObj);
				boxObj.show();
				
				if (Obj.timer) { jsAlert.setTimer(Obj.timer); }
				
				Event.observe(boxObj, 'mousedown', function(event) { 
					var caller = Event.element(event);
					if (caller.hasClassName('titlebar')) { dragOBJ(this,event); return false; }
				});
				
			}
	}
	
	, setTimer : function (timer) { 
		var defTime = (timer==="") ? 2800 : timer;
		if (defTime!=="") { 
			jsAlert.timeoutObj = window.setTimeout('jsAlert.hide()', defTime); 
		}
	}
	
	, hide : function () {
		var	alertID	= jsAlert.alertID+jsAlert.Cnt;
		var hoverID = jsAlert.hoverID+jsAlert.Cnt;
		if ($(alertID)) { $(alertID).remove(); }
		if ($(hoverID)) { $(hoverID).remove(); }
		jsAlert.Cnt--;
		klGeneric.hideSelects(false);
	}
	
	, resize : function () {
		var pageSize 	= klGeneric.getPageSize();
		var pageScroll 	= klGeneric.getPageScroll();
		jsAlert.scr_w = pageSize[0];
		jsAlert.scr_h = pageSize[1];
		jsAlert.scr_ws = pageSize[2]+(pageScroll[1]*2);
		jsAlert.scr_hs = pageSize[3]+(pageScroll[0]*2);
	}
}

function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
function xy(e,v) { return(v?(agent('msie')?event.clientY+document.body.scrollTop:e.pageY):(agent('msie')?event.clientX+document.body.scrollTop:e.pageX)); }
function dragOBJ(d,e) 
{
	var dims = d.getDimensions();
	
	function drag(e) 
	{ 
		if (!stop) { 
			var topPos  = (tX=xy(e,1)+oY-eY);
			var leftPos = (tY=xy(e)+oX-eX);
			if (topPos>=0 && topPos<=(jsAlert.scr_h-dims.height)) { d.style.top= topPos+'px'; }
			if (leftPos>=0 && leftPos<=(jsAlert.scr_w-dims.width))  { d.style.left = leftPos+'px'; }
		} 
	}

	var oX=parseInt(d.style.left),oY=parseInt(d.style.top),eX=xy(e),eY=xy(e,1),tX,tY,stop;
	document.onmousemove = drag;
	document.onmouseup = function() { stop=1; document.onmousemove=''; document.onmouseup=''; };
}

onContent( function(){ Event.observe(window, 'resize', jsAlert.resize, false); });