function showlayer(objname){
        document.getElementById(objname).style.display = "block";
}
function hidelayer(objname){
        document.getElementById(objname).style.display = "none";
}

var timerlen = 10;
var slideAniLen = 320;
var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var autohide = new Array();
var endHeight = new Array();
var start_w = new Array();
var start_h = new Array();
var end_w = new Array();
var end_h = new Array();
var start_x = new Array();
var start_y = new Array();
var end_x = new Array();
var end_y = new Array();
var moving = new Array();
var moving_h = new Array();
var moving_v = new Array();
var dir = new Array();
var dir_h = new Array();
var dir_v = new Array();
var move_h = new Array();
var move_v = new Array();

function getScrollPosX()
{
	if (window.pageXOffset != null)
	{
		return window.pageXOffset;
	}
	else if (document.body.scrollLeft != null)
	{
		return document.body.scrollLeft;
	}
	return 0;
}
function getScrollPosY()
{
	if (window.pageYOffset != null)
	{
		return window.pageYOffset;
	}
	else if (document.body.scrollTop != null)
	{
		return document.body.scrollTop;
	}
	return 0;
}

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 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";
        obj[objname].style.overflow = "hidden";
        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}
function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];
        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                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";
                obj[objname].style.overflow = "hidden";                
                } else {
                obj[objname].style.overflow = "visible";					
				}
        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]);
        return;
}
//////////// HORIZONTAL ///////////////
function scaleto(objname,newwidth,newheight){
	    if(moving_h[objname]) return;
        if(moving_v[objname]) return;        
		var d = document.getElementById(objname);
		var currentwidth = d.offsetWidth;
		var currentheight = d.offsetHeight;	
        if(newwidth > currentwidth) {dir_h[objname] = "out"} else {dir_h[objname] = "in"}
        if(newheight > currentheight) {dir_v[objname] = "out"} else {dir_v[objname] = "in"}  
        moving_h[objname] = true;
        moving_v[objname] = true;  
        start_w[objname] = currentwidth;
        start_h[objname] = currentheight;
		end_w[objname] = newwidth;
        end_h[objname] = newheight;
		startscale(objname);
}
function startscale(objname){
        obj[objname] = document.getElementById(objname);
    	startTime[objname] = (new Date()).getTime();
		obj[objname].style.width = start_w[objname];  
		obj[objname].style.height = start_h[objname];  
        timerID[objname] = setInterval('scaletick(\'' + objname + '\');',timerlen);
}
function scaletick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];
        if (elapsed > slideAniLen)
                endScale(objname)
        else {
        	    // x
        	   var x = Math.round(elapsed / slideAniLen * end_w[objname] );
                if(dir_h[objname] == "in")
                        x = end_w[objname] - x;
                obj[objname].style.width = x + "px";
                // y
                var y = Math.round(elapsed / slideAniLen * end_h[objname] );
                if(dir_v[objname] == "in")
                        y = end_h[objname] - y;
                obj[objname].style.height = y + "px";
        }
        return;
}
function endScale(objname){
        clearInterval(timerID[objname]);
        obj[objname].style.overflow = "visible";					
        obj[objname].style.width = end_w[objname] + "px";
        obj[objname].style.height = end_h[objname] + "px";        
        delete(moving_h[objname]);
        delete(moving_v[objname]);        
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(start_w[objname]);
        delete(start_h[objname]);        
        delete(end_w[objname]);
        delete(end_h[objname]);        
		delete(obj[objname]);
        delete(dir_h[objname]);
        delete(dir_v[objname]);
        return;
}
//////////// FREE FLYING ///////////////
function flyto(objname, obj_from, obj_to, ahide){
	    if(moving_h[objname]) return;
        if(moving_v[objname]) return;      
		var obj_start = document.getElementById(obj_from);
		var obj_end = document.getElementById(obj_to);		
	// start object params
		autohide[objname] = ahide;
		start_w[objname] = obj_start.offsetWidth;
		start_h[objname] = obj_start.offsetHeight;		
		start_x[objname] = findPosX(obj_start);
		start_y[objname] = findPosY(obj_start);		
		// end obj params
		end_w[objname] = obj_end.offsetWidth;
		end_h[objname] = obj_end.offsetHeight;		
		end_x[objname] = findPosX(obj_end);
		end_y[objname] = findPosY(obj_end);
        moving_h[objname] = true;
        moving_v[objname] = true;  
		startflying(objname);
}
function startflying(objname){
        obj[objname] = document.getElementById(objname);
		obj[objname].style.width = start_w[objname];  
		obj[objname].style.height = start_h[objname];  
	//	obj[objname].style.top = start_x[objname];  
	//	obj[objname].style.left = start_y[objname];
        //for(var a = 0; a < 100; a++){
		//	var a_moz = Math.round(a*10)/10;
		//	obj[objname].style.filter="alpha(opacity=" + a + "); -moz-opacity:" + a_moz;
		//}
        startTime[objname] = (new Date()).getTime();
		timerID[objname] = setInterval('flytick(\'' + objname + '\');',timerlen);
		obj[objname].style.visibility = "visible";
}
function flytick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];
        if (elapsed > slideAniLen)
		  endFly(objname)
        else {
        	    var nv = 0;
        	    var st = 0;
        	    var dist = 0;
                if(start_x[objname] < end_x[objname]) {  
                	 dist = end_x[objname] - start_x[objname]; // total distance to travel
          	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_x[objname] + st;  // right to left  
					 } else {
					 dist = start_x[objname] - end_x[objname]; // total distance to travel
        	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_x[objname] - st; // left to right			
					 }
                obj[objname].style.left = nv + "px"; // apply
                if(start_y[objname] < end_y[objname]) {  
                	 dist = end_y[objname] - start_y[objname]; // total distance to travel
          	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_y[objname] + st;  // upt  
					 } else {
					 dist = start_y[objname] - end_y[objname]; // total distance to travel
        	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_y[objname] - st; // down			
					 }
                obj[objname].style.top = nv + "px"; // apply                
                if(start_w[objname] < end_w[objname]) {  
                	 dist = end_w[objname] - start_w[objname]; // total distance to travel
          	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_w[objname] + st;  // wider  
					 } else {
					 dist = start_w[objname] - end_w[objname]; // total distance to travel
        	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_w[objname] - st; // smaller			
					 }
                obj[objname].style.width = nv + "px"; // apply
                if(start_h[objname] < end_h[objname]) {  
                	 dist = end_h[objname] - start_h[objname]; // total distance to travel
          	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_h[objname] + st;  // right to left  
					 } else {
					 dist = start_h[objname] - end_h[objname]; // total distance to travel
        	         st = Math.round(elapsed / slideAniLen * dist ); // step per anim tick * steps
					 nv = start_h[objname] - st; // left to right			
					 }
                obj[objname].style.height = nv + "px"; // apply				                
        }
        return;
}
function endFly(objname){
        clearInterval(timerID[objname]);
        obj[objname].style.overflow = "visible";					
        obj[objname].style.width = end_w[objname] + "px";
        obj[objname].style.height = end_h[objname] + "px";        
        obj[objname].style.left = end_x[objname] + "px";
        obj[objname].style.top = end_y[objname] + "px"; 
		//for(var a=100; a >0; a--){
		//	var a_moz = Math.round(a*10)/10;
		//	obj[objname].style.filter="alpha(opacity=" + a + "); -moz-opacity:" + a_moz;
		//}
        if(autohide[objname]=="true") obj[objname].style.visibility = "hidden";   
	    delete(autohide[objname]);
        delete(moving_h[objname]);
        delete(moving_v[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
		delete(start_w[objname]);
        delete(start_h[objname]);        
        delete(end_w[objname]);
        delete(end_h[objname]);        
		delete(start_x[objname]);
        delete(start_y[objname]);        
        delete(end_x[objname]);
        delete(end_y[objname]);        
		delete(obj[objname]);
		delete(dir_h[objname]);
        delete(dir_v[objname]);
		delete(move_h[objname]);
        delete(move_v[objname]);
        return;
}
////////////////////////////////////////////////////////////////////////////////////
function Anim(id){
	try {
	 flyto("flyer", "menu_" + id, "content", "true");
	 } catch(error){}
}
/////////////////////////////////////////////////////////////////////////////////////
function toggleSlide(objname){
  if(document.getElementById(objname).style.display == "none"){
    // div is hidden, so let's slide down
    slidedown(objname);
  }else{
    // div is not hidden, so slide up
    slideup(objname);
  }
}