function PopUp()
{
	var agent = navigator.userAgent.toLowerCase();
	this.isOP = (agent.indexOf('opera')!=-1);
	this.isNS = (agent.indexOf('netscape')!=-1);
	this.isIE = (agent.indexOf('msie')!=-1 && !this.isOP);
	this.isSA = (agent.indexOf('safari')!=-1);
	this.isFF = (agent.indexOf('firefox')!=-1);
	this.isGE = (agent.indexOf('gecko')!=-1);
	this.varName = null;
	this.PopupName = '_popup_';
	this.maxHeight = 150;
	this.minHeight = 60;
	this.getExplorerVersion = function(){return 0;}
	this.GetPosX = function(e){ 
		var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
		var macIE45 = document.all && !onWindows && this.getExplorerVersion() == 4.5;
		var par = e;
		var lastOffset = 0;
		var x=0;
		while(par){
			if( par.leftMargin && ! onWindows ) x += parseInt(par.leftMargin);
			if( (par.offsetLeft != lastOffset) && par.offsetLeft ) x += parseInt(par.offsetLeft);
			if( par.offsetLeft != 0 ) lastOffset = par.offsetLeft;
			par = macIE45 ? par.parentElement : par.offsetParent;
		}
		return Math.abs(x);
	}
	
	this.GetPosY = function(e){
		var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
		var macIE45 = document.all && !onWindows && this.getExplorerVersion() == 4.5;
		var par = e;
		var lastOffset = 0;
		var y = 0;
		while(par){
			if( par.topMargin && !onWindows ) y += parseInt(par.topMargin);
			if( (par.offsetTop != lastOffset) && par.offsetTop ) y += parseInt(par.offsetTop);
			if( par.offsetTop != 0 ) lastOffset = par.offsetTop;
			par = macIE45 ? par.parentElement : par.offsetParent;
		}		
		return Math.abs(y);
	}

	this.Show = function(o, p, tobj, dx, dy){
		var t = '';
		tobj = document.getElementById(tobj);
		t = tobj.innerHTML;
		var dw,dh,x,y;
		if(document.body.clientHeight){
			dh = document.body.clientHeight + document.body.scrollTop;
			dw = document.body.clientWidth + document.body.scrollLeft;
		}else if(window.innerHeight){
			dh = window.innerHeight+window.pageYOffset;
			dw = window.innerWidth+window.pageXOffset;
		}
		
		if(typeof(o)!='object') o = document.getElementById(o);
		var ox,oy,fra;
		ox = this.GetPosX(o);
		oy = this.GetPosY(o);
		fra = document.getElementById(this.PopupName);
		
		var pop_content = document.getElementById(this.PopupName+'_content');
		pop_content.innerHTML = t;

		if(pop_content.offsetHeight<this.minHeight)
		{
			pop_content.style.height = this.minHeight + 'px';
		}
		else if(pop_content.offsetHeight>this.maxHeight)
		{
			pop_content.style.height = this.maxHeight + 'px';
		}
		else
		{
			pop_content.style.height = '';
		}
		var pop_shadow_content = document.getElementById(this.PopupName+'_shadow_content');
		pop_shadow_content.style.height = pop_content.offsetHeight + 'px';
		
		switch(p.toLowerCase())
		{
			case 'top':
				x = ox;
				y = oy - fra.offsetHeight;
				if(x + fra.offsetWidth > dw){
					x = x - fra.offsetWidth;
					if(x<0) x = 0;
				}
				
				if(y<0) y = oy + o.offsetHeight;
			break;
			case 'right':
				x = ox + o.offsetWidth;
				y = oy;
				if(x + fra.offsetWidth > dw){
					x = x - fra.offsetWidth - o.offsetWidth;
					if(x<0) x = 0;
				}
				if(y + fra.offsetHeight > dh){
					y = y - fra.offsetHeight ;
					if(y<0) y = oy + o.offsetHeight;
				}
			break;
			case 'bottom':
				x = ox;
				y = oy + o.offsetHeight;
				if(x + fra.offsetWidth > dw){
					x = x - fra.offsetWidth;
					if(x<0) x = 0;
				}
				if(y + fra.offsetHeight > dh){
					y = y - o.offsetHeight - fra.offsetHeight ;
					if(y<0) y = oy + o.offsetHeight;
				}
			break;
			case 'left':
				x = ox - fra.offsetWidth;
				y = oy;
				if(x<0) x = ox + o.offsetWidth;
				if(y + fra.offsetHeight > dh){
					y = y - fra.offsetHeight ;
					if(y<0) y = oy + o.offsetHeight;
				}
			break;
			case 'top-right':
				x = ox + o.offsetWidth;
				y = oy - fra.offsetHeight;
				if(x + fra.offsetWidth > dw){
					x = x - fra.offsetWidth - o.offsetWidth;
					if(x<0) x = 0;
				}
				if(y<0) y = oy + o.offsetHeight;
			break;
			case 'bottom-right':
				x = ox + o.offsetWidth;
				y = oy + o.offsetHeight;
				if(x + fra.offsetWidth > dw){
					x = x - fra.offsetWidth - o.offsetWidth;
					if(x<0) x = 0;
				}
				if(y + fra.offsetHeight > dh){
					y = y - o.offsetHeight - fra.offsetHeight ;
					if(y<0) y = oy + o.offsetHeight;
				}
			break;
			case 'bottom-left':
				x = ox - fra.offsetWidth;
				y = oy + o.offsetHeight;
				if(x<0) x = ox + o.offsetWidth;
				if(y + fra.offsetHeight > dh){
					y = y - o.offsetHeight - fra.offsetHeight ;
					if(y<0) y = oy + o.offsetHeight;
				}
			break;
			case 'top-left':
				x = ox  - fra.offsetWidth;
				y = oy  - fra.offsetHeight;
				if(x<0) x = ox + o.offsetWidth;
				if(y<0) y = oy + o.offsetHeight;
			break;
		}
		
		fra.style.top = y + 'px';
		fra.style.left = x + 'px';
		fra.style.zIndex = '9999';
		fra.style.visibility = 'visible';
		
		var fra_shadow = document.getElementById(this.PopupName+'_shadow');
		fra_shadow.style.top = (y + dy) + 'px';
		fra_shadow.style.left = (x + dx) + 'px';
		fra_shadow.style.zIndex = '9998';
		fra_shadow.style.visibility = 'visible';
		
	}
	this.Hide = function(){
		var fra = document.getElementById(this.PopupName);
		fra.style.visibility = 'hidden';
		fra.style.top = '-500px';
		fra.style.left = '-500px';
		fra.style.zIndex = '-1';

		if(arguments.length<1){
			var obj = document.getElementById(this.PopupName+'_content');
			obj.innerHTML = '';
		}
		
		var fra_shadow = document.getElementById(this.PopupName+'_shadow');
		fra_shadow.style.visibility = 'hidden';
		fra_shadow.style.top = '-500px';
		fra_shadow.style.left = '-500px';
		fra_shadow.style.zIndex = '-1';
	}
	
	this.Init = function(varName){
		this.varName = varName;
		document.write('<link href="styles/popup.css" type="text/css" rel="stylesheet" />');
		if(this.isIE) document.write('<link href="styles/ie.css" type="text/css" rel="stylesheet" />')
		document.body.onkeypress = new Function('e','{if(!e) e = event;if(e.keyCode==27) eval('+this.varName+'.Hide());}');
		document.write('<div id="'+this.PopupName+'" style="position:absolute;visibility: hidden;z-index:-1;left:-300px;top:-300px;">');
		document.write('<table class="popup" border="0" cellpadding="0" cellspacing="0"><tr><td class="topleft"></td><td class="top" valign="bottom"><a href="javascript:void(0);"><img src="images/close.jpg" width="16" height="16" vspace="1" align="absmiddle" onclick="'+this.varName+'.Hide();" border="0"></a></td><td class="topright"></td></tr>');
		document.write('<tr><td colspan="3" class="border" bgcolor="#FFFFFF"><div class="content" id="'+this.PopupName+'_content">&nbsp;</div></td></tr><tr><td class="bottomleft"></td><td class="bottom"></td><td class="bottomright"></td></tr></table>');		
		document.write('</div>');
		
		//shadow
		document.write('<div id="'+this.PopupName+'_shadow" style="position:absolute;visibility: hidden;z-index:-1;left:-300px;top:-300px;">');		
		document.write('<table class="popup_shadow" border="0" cellpadding="0" cellspacing="0"><tr><td class="topleft"></td><td class="top">&nbsp;</td><td class="topright"></td></tr>');
		document.write('<tr><td colspan="3" class="border"><div id="'+this.PopupName+'_shadow_content">&nbsp;</div></td></tr><tr><td class="bottomleft"></td><td class="bottom"></td><td class="bottomright"></td></tr></table>');
		document.write('</div>');
				
	}
}

