var timerlen = 5;
var slideAniLen = 400;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();
var pageToOpen = new Array();
var innerObject = new Array();



function toggleAndOpen(objname, href)
{
	pageToOpen[objname] = href;
	toggle(objname);
            
}

function toggle(objname)
{
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
            slideup(objname);
		else
			slidedown(objname);

        
}

function toggle(objname, innerobjname)
{
        if(moving[objname])
                return;


		innerObject[objname]=document.getElementById(innerobjname);
		

        if(document.getElementById(objname).style.display != "none")
            slideup(objname);
		else
			slidedown(objname);

        
}

function show(objname)
{
	slidedown(objname);
}

function slidedown(objname)
{
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}


function hide(objname)
{
	slideup(objname);
}

function slideup(objname)
{
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname)
{
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down")
		{
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname)
{
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
		{
                endSlide(objname)
		}
        else 
		{

			//check if height of outer div has exceeded the height of the inner object
			if(innerObject[objname]!=null && dir[objname] == "down")
			{
				var contentObject = innerObject[objname];
				var innerHeight = contentObject.offsetHeight;



				if(innerHeight>0)
				{
					endHeight[objname] = innerHeight;
				}
			}

                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname)
{
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";
		else
		{
			var pageToShow = pageToOpen[objname];
			if(pageToShow!=null)
				if(pageToShow!='')
				{
					obj[objname].src = pageToShow;
					alert('obj = ' + obj[objname]);
					alert('obj.src = ' + obj[objname].src);
					alert('pageToShow = ' + pageToShow);
				}
		}

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);
		delete(pageToOpen[objname]);
		delete(innerObject[objname]);

        return;
}










var smooth_timer;




function toggleTableRow(tableRowId, href) 
{
  var trObj = (document.getElementById) ? document.getElementById('ihtr' + i) : eval("document.all['hour_cell_" + i + "']");
  var ifObj = (document.getElementById) ? document.getElementById('ihif' + i) : eval("document.all['hour_" + i + "']");

  if (trObj != null) 
  {
    if (trObj.style.display=="none") 
    {
      ifObj.style.height = "0px";
      trObj.style.display="";

      smoothHeight('hour_' + i, 0, 210, 42, 'o');
    }
    else 
	{
      nameObj.style.background=nColor;
      smoothHeight('hour_' + i, 210, 0, 42, 'hour_cell_' + i);
    }
  }
}


function smoothHeight(id, curH, targetH, stepH, mode) 
{
	diff = targetH - curH;
	if (diff != 0) 
	{
		newH = (diff > 0) ? curH + stepH : curH - stepH;
		((document.getElementById) ? document.getElementById(id) : eval("document.all['" + id + "']")).style.height = newH + "px";

		if (smooth_timer) 
			window.clearTimeout(smooth_timer);
		smooth_timer = window.setTimeout( "smoothHeight('" + id + "'," + newH + "," + targetH + "," + stepH + ",'" + mode + "')", 16 );
	}else if (mode != "o") 
	{
		((document.getElementById) ? document.getElementById(mode) : eval("document.all['" + mode + "']")).style.display="none";
	}
}
