// ===================================================================
// Author: Christopher Manciero <cmanciero@gmail.com>
// WWW: http://www.chrismanciero.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

// These variable are for the vertical sliding methods
var timerlen = 5;
var slideAniLen = 800;
var timerID = new Array();    
var obj = new Array();
var endLength = new Array();
var moving = new Array();
var dir = new Array();
var startTime = new Array();
var myHeight;
var scroll;
// This object slide the elements vertically (top to bottom)
function VerticalSlide(ObjectToSlide)
{    

//var height = document.getElementById("showPageIframe").Document.body.scrollHeight;
//document.getElementById("showPage").style.display="none";
    this.ToggleSlide(ObjectToSlide);

}

/*
    This function sees if object is shown, slide up or if object is hidden, slide down
    Parameters
        objname - name of object to slide
*/
VerticalSlide.prototype.ToggleSlide = function (objname)
{	
	//if(document.getElementById(objname).style.display == "none")
	//{
		// div is hidden, so let's slide down
		this.SlideDown(objname);
	//}
	//else
	//{
		// div is not hidden, so slide up
	//	this.SlideUp(objname);
	//}
};

/*
    This function slides the object down
    Parameters
        objname - name of object to slide
*/
VerticalSlide.prototype.SlideDown = function (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";
	this.StartSlide(objname);
};

/*
    This function slides the object up
    Parameters
        objname - name of object to slide
*/
VerticalSlide.prototype.SlideUp = function (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";
	this.StartSlide(objname);
};

/*
    This function start slidings the object
    Parameters
        objname - name of object to slide
*/
VerticalSlide.prototype.StartSlide = function (objname)
{
	obj[objname] = document.getElementById(objname);
//alert(document.getElementById("showPage").style.height);

//obj[objname].style.height = "1002px";
    obj[objname].style.height =document.getElementById("showPageIframe").style.height;
	endLength[objname] = parseInt(obj[objname].style.height);

	startTime[objname] = (new Date()).getTime();

	//if(dir[objname] == "down" )
	//	obj[objname].style.height = "1px";
    //else
    if(typeof(myHeight)!="undefined")
    	obj[objname].style.height = myHeight;
		


	timerID[objname] = setInterval('VerticalSlide.prototype.SlideTick(\'' + objname + '\');',timerlen);
		obj[objname].style.display = "block";
};

/*
    This function checks if the time since the slide started has passed
    the define value for slideAniLen if it hasn't keep sliding
    Parameters
        objname - name of object to slide
*/
VerticalSlide.prototype.SlideTick = function (objname)
{
	var elapsed = (new Date()).getTime() - startTime[objname];


if(navigator.appName.indexOf("Microsoft") != -1)
    elapsed -=1000;
    if(elapsed <0)
        elapsed =0;
 //alert(elapsed + ">"+slideAniLen + "?"+ navigator.appName + "+"+navigator.appVersion );
	if (elapsed > slideAniLen)
		this.EndSlide(objname)
	else 
	{

		if(typeof(myHeight)=="undefined")
		{
		    var d =Math.round(elapsed / slideAniLen * endLength[objname]);
		    if(dir[objname] == "up")
			    d = endLength[objname] - d;
		    obj[objname].style.height = d + "px";
		}
		else
		{
	        if(typeof window.pageYOffset != "undefined")//FF and Safari
	        {
	        
		        scroll = window.pageYOffset;
	
	        }
	        else if(typeof document.documentElement.scrollTop != "undefined")//IE
	        {
		        scroll = document.documentElement.scrollTop;
	        }
	        else
	        {
		        scroll = document.body.scrollTop;
	        }
	if(scroll>485)//485px is the height from the top of the Fryshuset page
		    window.scrollBy(0,-100); 
	        
	        //		    myHeight = myHeight.replace("px","");
//		    if(myHeight > endLength[objname])
//		    {
//		        dir[objname]="up";
//		    }
//		        var e= Math.round(elapsed/slideAniLen* myHeight);
//		        if(dir[objname] == "up")
//			        e = endLength[objname] - e;
//		        obj[objname].style.height = e +"px";
		    
		}

	}
	return;
};

/* 
    This function ends the sliding
    Parameters
        objname - name of object to slide
*/
VerticalSlide.prototype.EndSlide = function (objname)
{
	clearInterval(timerID[objname]);
 
	//if(dir[objname] == "up")
	//	obj[objname].style.display = "none";

	obj[objname].style.height = endLength[objname] + "px";
    myHeight = obj[objname].style.height;
	delete(moving[objname]);
	delete(timerID[objname]);
	delete(startTime[objname]);
	delete(endLength[objname]);
//	delete(obj[objname]);
//	delete(dir[objname]);
// hideLoadingImg();
	return;
};
