var myAgent   = navigator.userAgent.toLowerCase();
var myOpera   = (myAgent.indexOf("opera") > -1) ? parseInt(myAgent.substring(myAgent.indexOf("opera")+6, myAgent.length)) : 0;
var myIE      = (document.all && !myOpera) ? parseFloat(myAgent.substring(myAgent.indexOf("msie")+5, myAgent.length)) : 0;
var myIE4     = parseInt(myIE) == 4;
var myNS4     = navigator.appName.toLowerCase() == "netscape" && !document.getElementById;
var myNS      = myNS4 || (document.getElementById && !document.all);
var myBrowser = myNS || myIE || (myOpera >= 7);

var ELEMENT   = (myIE && (document.compatMode == "CSS1Compat")) ? "document.documentElement" : "document.body";
var SpecifyOffset = myNS ? 15 : 0;
var Count = 0, move = 0, FilterLayer = 0, needOffset, fixTitle;
var TipID = 'TipBox', TipCoverID = 'TipCoverBox';
var Behavior_Exception = 0, Behavior_None = 0, Behavior_Static = 1, Behavior_Visible = 2, Behavior_Sticky = 3, Behavior_Around = 4;
var TipPosType_Right = 0, TipPosType_Left = 1, TipPosType_Center = 2, TipPosType_LeftTopConner = 3, TipPosType_Fixed = 4;
var TitleBgImg         = "";
var TextBgImg          = "";
var CloseImg           = "Graph_Close.png";
var TableWidth         = "";
var TableHeight        = "";
var TipXpos            = 10;
var TipYpos            = 19;
var TableBorderSize    = "1";
var TableTextpadding   = "2";
var TransitionNumber   = 24;
var TransitionDuration = 0.3;
var TransparencyLevel  = 0;
var ShadowType         = 2;
var ShadowColor        = "#0066CC";
var Behavior           = Behavior_None;
var TipPosType         = TipPosType_Right;
var myTitle            = "";
var myMessage          = "";

document.write("<DIV id='"+TipID+"' class=TipDiv></DIV>");
if (myIE) {
	document.write("<iFrame id='"+TipCoverID+"' src='/blank.html' scrolling='no' frameborder='0' class='TipiFrame'></iFrame>");
	document.getElementById(TipID).parentNode.appendChild(document.getElementById(TipCoverID));
}

function getMouseEvent() {
	if (myBrowser) {
		window.onresize = reloadTipLayer;
		document.onmousemove = setMousePosition;
		if (myNS4)
			document.captureEvents(Event.MOUSEMOVE);
	}
	return;
}

function getLayerStyle() {
	return myNS4 ? getTipLayer() : getTipLayer().style;
}

function getCoverLayerStyle() {
	return myNS4 ? getTipCoverLayer() : getTipCoverLayer().style;
}

function getTipCoverLayer() {
	with(document) {
    	return 	myNS4 ? layers[TipCoverID] : myIE4 ? all[TipCoverID] : getElementById(TipCoverID);
    }
}

function getTipLayer() {
	with(document) {
		var TipLayerObj = myNS4 ? layers[TipID] : myIE4 ? all[TipID] : getElementById(TipID);
		if (myIE) {
			var TipCoverLayerObj =  getTipCoverLayer();
			with(getCoverLayerStyle()) {
				top = TipLayerObj.style.top;
    				left = TipLayerObj.style.left;
				width = TipLayerObj.offsetWidth;
				height = TipLayerObj.offsetHeight;
			}
		}
	}
	return TipLayerObj;
}

function getClientScrollInfo() {
	return [parseInt(myIE ? eval(ELEMENT).scrollLeft : window.pageXOffset), parseInt(myIE ? eval(ELEMENT).scrollTop : window.pageYOffset)];
}

function getClientWindowInfo() {
	return [parseInt(myNS ? window.innerWidth : eval(ELEMENT).clientWidth), parseInt(myNS ? window.innerHeight : eval(ELEMENT).clientHeight)];
}

function getClientOffsetInfo() {
	return [parseInt(myNS4 ? getTipLayer().clip.width : getTipLayer().offsetWidth) + 3, parseInt(myNS4 ? getTipLayer().clip.height : getTipLayer().offsetHeight) + 5];
}

function TipLayerFilter() {
	if (myIE >= 5.5) {
		FilterLayer = 1;
		var PID=" progid:DXImageTransform.Microsoft."
		getLayerStyle().filter="revealTrans()"+PID+"Fade(Overlap=1.00 enabled=0)"+PID+"Inset(enabled=0)"+PID+"Iris(irisstyle=PLUS,motion=in enabled=0)"+PID+"Iris(irisstyle=PLUS,motion=out enabled=0)"+PID+"Iris(irisstyle=DIAMOND,motion=in enabled=0)"+PID+"Iris(irisstyle=DIAMOND,motion=out enabled=0)"+PID+"Iris(irisstyle=CROSS,motion=in enabled=0)"+PID+"Iris(irisstyle=CROSS,motion=out enabled=0)"+PID+"Iris(irisstyle=STAR,motion=in enabled=0)"+PID+"Iris(irisstyle=STAR,motion=out enabled=0)"+PID+"RadialWipe(wipestyle=CLOCK enabled=0)"+PID+"RadialWipe(wipestyle=WEDGE enabled=0)"+PID+"RadialWipe(wipestyle=RADIAL enabled=0)"+PID+"Pixelate(MaxSquare=35,enabled=0)"+PID+"Slide(slidestyle=HIDE,Bands=25 enabled=0)"+PID+"Slide(slidestyle=PUSH,Bands=25 enabled=0)"+PID+"Slide(slidestyle=SWAP,Bands=25 enabled=0)"+PID+"Spiral(GridSizeX=16,GridSizeY=16 enabled=0)"+PID+"Stretch(stretchstyle=HIDE enabled=0)"+PID+"Stretch(stretchstyle=PUSH enabled=0)"+PID+"Stretch(stretchstyle=SPIN enabled=0)"+PID+"Wheel(spokes=16 enabled=0)"+PID+"GradientWipe(GradientSize=1.00,wipestyle=0,motion=forward enabled=0)"+PID+"GradientWipe(GradientSize=1.00,wipestyle=0,motion=reverse enabled=0)"+PID+"GradientWipe(GradientSize=1.00,wipestyle=1,motion=forward enabled=0)"+PID+"GradientWipe(GradientSize=1.00,wipestyle=1,motion=reverse enabled=0)"+PID+"Zigzag(GridSizeX=8,GridSizeY=8 enabled=0)"+PID+"Alpha(enabled=0)"+PID+"Dropshadow(OffX=3,OffY=3,Positive=true,enabled=0)"+PID+"Shadow(strength=3,direction=135,enabled=0)";	
	}
	return;
}


function Appearance() {
	Count++;
	
	if (Count == 1) {
		if (FilterLayer) {
			if (TransitionNumber == 51)
				TransitionNumber = parseInt(Math.random()*50);
			var theTransition1 = ((TransitionNumber > -1) && (TransitionNumber < 24) && (TransitionDuration > 0));
			var theTransition2 = ((TransitionNumber > 23) && (TransitionNumber < 51) && (TransitionDuration > 0));
			var theTransitionElement = getTipLayer().filters[theTransition2 ? (TransitionNumber - 23) : 0];

			for (var i = 28; i < 31; i++) {
				getTipLayer().filters[i].enabled=0;
			}
			for (var j = 0 ; j < 28; j++) {
				if (getTipLayer().filters[j].status)
					getTipLayer().filters[j].stop();
			}
			for (var k = 1; k < 3; k++) {
				if (ShadowColor && (ShadowType == k)) {
					with (getTipLayer().filters[28 + k]) {
						enabled = 1;
						color   = ShadowColor;
					}
				}
			}
			if ((TransparencyLevel > 0) && (TransparencyLevel < 100)) {
				with (getTipLayer().filters[28]) {
					enabled = 1;
					opacity = TransparencyLevel;
				}
			}
			if (theTransition1 || theTransition2) {
				if (theTransition1)
					getTipLayer().filters[0].transition = TransitionNumber;
				theTransitionElement.duration = TransitionDuration;
				theTransitionElement.apply();
			}
		}
		getLayerStyle().visibility = myNS4 ? "show" : "visible";
		if (myIE)
			getCoverLayerStyle().visibility = myNS4 ? "show" : "visible";

		if (FilterLayer && (theTransition1 || theTransition2)) {
			theTransitionElement.play();
		}

		if (Behavior_Exception || ((Behavior > 0) && (Behavior < 4)))
			move = 0;
	}
	return;
}

function setMousePosition(e) {
	if (move) {
		var newX = 0, newY = 0;
		var ScrollInfo = getClientScrollInfo();
		var WindowInfo = getClientWindowInfo();
		var currX = myNS ? e.pageX : myIE4 ? event.x : event.x + ScrollInfo[0];
		var currY = myNS ? e.pageY : myIE4 ? event.y : event.y + ScrollInfo[1];

		if (myIE4)
			needOffset = getClientOffsetInfo();
			
		switch (TipPosType) {
			case 1:
				newX = currX - needOffset[0] - TipXpos + 6;
				newY = currY + TipYpos;
				break;
				
			case 2:
				newX = currX - (needOffset[0] / 2);
				newY = currY + TipYpos;
				break;
				
			case 3:
				newX = TipXpos + ScrollInfo[0];
				newY = TipYpos + ScrollInfo[1];
				break;
				
			case 4:
				newX = TipXpos;
				newY = TipYpos;
				break;
				
			default:
				newX = currX + TipXpos;
				newY = currY + TipYpos;
				break;
		}
		
		if ((WindowInfo[0] + ScrollInfo[0]) < (needOffset[0] + newX + SpecifyOffset))
			newX = WindowInfo[0] + ScrollInfo[0] - needOffset[0] - SpecifyOffset;
			
		if ((WindowInfo[1] + ScrollInfo[1]) < (needOffset[1] + newY + SpecifyOffset)) {
                        with (getLayerStyle()) {
                                if (WindowInfo[1] > ScrollInfo[1]) {
                                        if ((WindowInfo[1] - ScrollInfo[1] - 25) > 0)
                                                height = WindowInfo[1] - ScrollInfo[1] - 25;
                                } else
                                        height = ScrollInfo[1] - WindowInfo[1];
                                overflow = 'auto';
                        }

			if (TipPosType > 2)
				newY = WindowInfo[1] + ScrollInfo[1] - needOffset[1] - SpecifyOffset;
			else {
				if (WindowInfo[1] < needOffset[1]) { 
					newY = ScrollInfo[1] + TipYpos;
					Behavior_Exception = 1;
				} else
					newY = currY - needOffset[1];
			}
		}
		
		if (newX < ScrollInfo[0])
			newX = ScrollInfo[0];

		with (getLayerStyle()) {
			left = newX + "px";
			top  = newY + "px";
		}
		if (myIE) {
			with (getCoverLayerStyle()) {
				left = newX + "px";
				top  = newY + "px";
			}
		}

		if (Behavior_Exception)
			showTipLayer (returnTipMessage (myTitle, myMessage));

		Appearance();
	}
	return;
}


function showTipLayer(TipMessage) {
	if (myNS4){
		with(getTipLayer().document) {
			open();
			write(TipMessage);
			close();
		}
	} else {
		getTipLayer().innerHTML = TipMessage;
	}

	return;
}

function hideTipLayer(Action) {
	if (Action)
		showTipLayer("");
	if (myIE) {
		with (getCoverLayerStyle()) {
			display = "none";
			visibility = myNS4 ? "hide" : "hidden";
			left = 0;
			top  = -2048;
			height = '';
		}
	}
	with (getLayerStyle()) {
		display = "none";
		visibility = myNS4 ? "hide" : "hidden";
		left = 0;
		top  = -2048;
		height = '';
		overflow = '';
	}

	return;
}

function reloadTipLayer() {
	var WindowInfo  = getClientWindowInfo();
	var InnerWidth  = window.innerWidth;
	var InnerHeight = window.innerHeight;
	
	if (myNS4 && (WindowInfo[0] - InnerWidth || WindowInfo[1] - InnerHeight))
		location.reload();
	else if (Behavior_Exception || (Behavior == Behavior_Sticky) || (Behavior == Behavior_Visible))
		hideTipLayer(1);
	return;
}

function CssFilter() {
	if (getTipLayer()) {
		getMouseEvent();
		TipLayerFilter();
	}
	return;
}

function returnTipMessage(Title, Message) {
        myTitle = Title ? Title : fixTitle ? fixTitle : "";
	myMessage = Message ? Message : "";

	if ((document.onmousemove != setMousePosition) || (window.onresize != reloadTipLayer))
		getMouseEvent();
			
	getLayerStyle().display = "block";
	if (myIE)
		getCoverLayerStyle().display = "block";

	if (FilterLayer && (TransitionNumber > -1) && (TransitionDuration > 0)) {
		getLayerStyle().visibility = "hidden";
		if (myIE)
			getCoverLayerStyle().visibility = "hidden";
	}

	if (TitleBgImg)			TitleBgImg  = "STYLE='BACKGROUND-IMAGE: url(../icons_eng/"+TitleBgImg+");";
	if (TextBgImg)			TextBgImg   = "STYLE='BACKGROUND-IMAGE: url(../icons_eng/"+TextBgImg+");";
	if (TableWidth)			TableWidth  = "WIDTH='"+TableWidth+"'";
	if (TableHeight)		TableHeight = "HEIGHT='"+TableHeight+"'";
		
	var CloseLink = (Behavior_Exception || (Behavior == Behavior_Sticky)) ? "<TD ALIGN='right'><A HREF='javascript:void(0)' ONCLICK='hideTipLayer(0)'><IMG SRC='../icons_eng/"+CloseImg+"' BORDER='0' ALIGN='absmiddle'></A></TD>":"";
		
	var TipTitle = (myTitle || Behavior_Exception || (Behavior == Behavior_Sticky)) ? "<TABLE WIDTH='100%' BORDER='0' CELLPADDING='0' CELLSPACING='0' "+TitleBgImg+"><TR class='TipTitleCol'><TD>"+myTitle+"</TD>"+CloseLink+"</TR></TABLE>":"";
		
	var TipMessage="<TABLE class='TipMainTable' "+TableWidth+"' BORDER='0' CELLSPACING='"+TableBorderSize+"' CELLPADDING='0'><TR><TD>"+TipTitle+"<TABLE WIDTH='100%' "+TableHeight+" BORDER='0' CELLPADDING='"+TableTextpadding+"' CELLSPACING='0' "+TextBgImg+"><TR class='TipContentCol'><TD>"+myMessage+"</TD></TR></TABLE></TD></TR></TABLE>";

	return TipMessage;
	
}

function showTip(Message) {
	if (myBrowser) {
		showTipLayer (returnTipMessage(null, Message));
		
		if (myIE4)
			getLayerStyle().width = TableWidth;
			
		needOffset = getClientOffsetInfo();
		Count = 0;
		move  = 1;
	}
	CssFilter();
	
	return;
}

function showMTip(Title, Message) {
	if (myBrowser) {
		showTipLayer (returnTipMessage(Title, Message));
		
		if (myIE4)
			getLayerStyle().width = TableWidth;
			
		needOffset = getClientOffsetInfo();
		Count = 0;
		move  = 1;
	}
	CssFilter();
	
	return;
}

function hideTip() {
	if (myBrowser) {
		if (Behavior != Behavior_Around) {
			move = 0;
			if (!Behavior_Exception && (Behavior != Behavior_Sticky) && (Behavior != Behavior_Visible))
				hideTipLayer(1);
		}

		if (Behavior_Exception)
			Behavior_Exception = 0;
	}
	return;
}

function  initMozTextOverflow(obj)
{
    function re_render()
    {
	doMozTextOverflow(obj);
    }
    setTimeout(re_render, 0);
}

function doMozTextOverflow(obj)
{
    function _overflow(e)
    {
	var el = e.currentTarget;
	el.className="_textOverflow";
    }
	
    function _underflow(e)
    {
	var el = e.currentTarget;
	el.className="_textUnderflow";
    }

    obj.className="_textUnderflow";
    obj.addEventListener("overflow", _overflow, false);
    obj.addEventListener("underflow", _underflow, false);
    obj.ins = document.createElement("ins");
    obj.ins.innerHTML="&hellip;";
    obj.appendChild(obj.ins);
}
