// Free for any type of use so long as original notice remains unchanged.
// Report errors to feedback@ashishware.com
//Copyrights 2006, Ashish Patil , ashishware.com
//////////////////////////////////////////////////////////////////////////
function ToolTip(id,isAnimated,aniSpeed)
{ var isInit = -1;
  var div,divWidth,divHeight;
  var xincr=10,yincr=10;
  var animateToolTip =false;
  var html;
  
  function Init(id)
  {
   div = document.getElementById(id);
   if(div==null) return;
   
   if((div.style.width=="" || div.style.height==""))
   {alert("Both width and height must be set");
   return;}
   
   divWidth = parseInt(div.style.width);
   divHeight= parseInt(div.style.height);
   if(div.style.overflow!="hidden")div.style.overflow="hidden";
   if(div.style.display!="none")div.style.display="none";
   if(div.style.position!="absolute")div.style.position="absolute";
   
   if(isAnimated && aniSpeed>0)
   {xincr = parseInt(divWidth/aniSpeed);
    yincr = parseInt(divHeight/aniSpeed);
    animateToolTip = true;
    }
   isInit++; 
  }
  
    
  this.Show =  function(e,strHTML,zone)
  {
    if(isInit<0) return;
    var newPosx,newPosy,height,width;
    if(typeof( document.documentElement.clientWidth ) == 'number' ){
    width = document.body.clientWidth;
    height = document.body.clientHeight;}
    else
    {
    width = parseInt(window.innerWidth);
    height = parseInt(window.innerHeight);
    }
    var curPosx = (e.x)?parseInt(e.x-50):parseInt(e.clientX-50);
    var curPosy = (e.y)?parseInt(e.y):parseInt(e.clientY);
    
    if(strHTML!=null)
    {
	html = createToolText(strHTML,zone);
	div.innerHTML=html;}
    
    if((curPosx+divWidth+10)< width)
    newPosx= curPosx+10;
    else
    newPosx = curPosx-divWidth;

    if((curPosy+divHeight)< height)
    newPosy= curPosy;
    else
    newPosy = curPosy-divHeight-10;

   if(window.pageYOffset)
   { newPosy= newPosy+ window.pageYOffset;
     newPosx = newPosx + window.pageXOffset;}
   else
   { newPosy= newPosy+ document.body.scrollTop;
     newPosx = newPosx + document.body.scrollLeft;}

    div.style.display='block';
    //debugger;
    //alert(document.body.scrollTop);
    div.style.top= newPosy + "px";
    div.style.left= newPosx+ "px";

    div.focus();
    if(animateToolTip){
    div.style.height= "0px";
    div.style.width= "0px";
    ToolTip.animate(div.id,divHeight,divWidth);}
      
    
    }

    function createToolText(time,zone)
	{
	html = "";
	prevEST = "";
	prevCST = "";
	prevPST = "";
	MilTime = TwelveToMil(time);
	if (zone == 0)
	   {
		WItime = MilTime - 14;
   	   }
	if (zone == 1)
	  {
		WItime = MilTime - 5;
	  }
	if (zone == 2)
	  {
		WItime = MilTime;
	  }

	if (WItime < 0)
	  {
		prevEST = "(Previous Day) ";
		WItime = WItime + 24;
	  }
	html = "Eastern Time: "+prevEST+MilToTwelve(WItime);
	WItime = WItime - 1;
	if ((prevEST == "(Previous Day) ") || (WItime < 0))
	  {
		prevCST = "(Previous Day) ";
		if (WItime < 0)
		WItime = WItime + 24;
	  }
        html = html+"<br />Central Time: "+prevCST+MilToTwelve(WItime);
	WItime = WItime - 2;
	if ((prevCST == "(Previous Day) ") || (WItime < 0))
	  {
		prevPST = "(Previous Day) ";
		if (WItime < 0)
		WItime = WItime + 24;
	  }
	html = html+"<br />Pacific Time: "+prevPST+MilToTwelve(WItime);	
	return html;
	}

function TwelveToMil(inTime)
	{
	switch (inTime)
		{
                case "12am" : outTime = 0;
                        break;
                case "1am"  : outTime = 1;
                        break;
                case "2am" : outTime = 2;
                        break;
                case "3am"  : outTime = 3;
                        break;
                case "4am" : outTime = 4;
                        break;
                case "5am"  : outTime = 5;
                        break;
                case "6am" : outTime = 6;
                        break;
                case "7am"  : outTime = 7;
                        break;
                case "8am" : outTime = 8;
                        break;
                case "9am"  : outTime = 9;
                        break;
                case "10am" : outTime = 10;
                        break;
                case "11am"  : outTime = 11;
                        break;
                case "12pm" : outTime = 12;
                                break;
                case "1pm"  : outTime = 13;
                                break;
                case "2pm" : outTime = 14;
                                break;
                case "3pm"  : outTime = 15;
                                break;
                case "4pm" : outTime = 16;
                                break;
                case "5pm"  : outTime = 17;
                                break;
                case "6pm" : outTime = 18;
                                break;
                case "7pm"  : outTime = 19;
                                break;
                case "8pm" : outTime = 20;
                                break;
                case "9pm"  : outTime = 21;
                                break;
                case "10pm" : outTime = 22;
                                break;
                case "11pm"  : outTime = 23;
                                break;
        	}
		return outTime;
	}

function MilToTwelve(inTime)
	{
	switch (inTime)
		{
			case 0 : APtime = "12am";
				break;
			case 1 : APtime = "1am";
				break;
			case 2 : APtime = "2am";
				break;
			case 3 : APtime = "3am";
				break;
			case 4 : APtime = "4am";
				break;
			case 5 : APtime = "5am";
				break;
			case 6 : APtime = "6am";
				break;
			case 7 : APtime = "7am";
				break;
			case 8 : APtime = "8am";
				break;
			case 9 : APtime = "9am";
				break;
			case 10 : APtime = "10am";
				break;
			case 11 : APtime = "11am";
				break;
			case 12 : APtime = "12pm";
				break;
			case 13 : APtime = "1pm";
				break;
			case 14 : APtime = "2pm";
				break;
			case 15 : APtime = "3pm";
				break;
			case 16 : APtime = "4pm";
				break;
			case 17 : APtime = "5pm";
				break;
			case 18 : APtime = "6pm";
				break;
			case 19 : APtime = "7pm";
				break;
			case 20 : APtime = "8pm";
				break;
			case 21 : APtime = "9pm";
				break;
			case 22 : APtime = "10pm";
				break;
			case 23 : APtime = "11pm";
				break;
		}
	return APtime;
	}

   this.Hide= function(e)
    {div.style.display='none';
    if(!animateToolTip)return;
    div.style.height= "0px";
    div.style.width= "0px";}
    
   this.SetHTML = function(strHTML)
   {html = strHTML;
    div.innerHTML=html;} 
    
    ToolTip.animate = function(a,iHeight,iWidth)
  { a = document.getElementById(a);
         
   var i = parseInt(a.style.width)+xincr ;
   var j = parseInt(a.style.height)+yincr;  
   
   if(i <= iWidth)
   {a.style.width = i+"px";}
   else
   {a.style.width = iWidth+"px";}
   
   if(j <= iHeight)
   {a.style.height = j+"px";}
   else
   {a.style.height = iHeight+"px";}
   
   if(!((i > iWidth) && (j > iHeight)))      
   setTimeout( "ToolTip.animate('"+a.id+"',"+iHeight+","+iWidth+")",1);
    }
    
   Init(id);
}
