// scrolling show/hide div.
// Usage: slidedown(objname) or slideup(objname) or ToggleSlideDiv(objname)
// Your div needs to be have the styles, display:none; and overflow:hidden; and a height: to start.
var timerlen = 2; // Speed at which the div fades
var slideAniLen = 200; // Speed of the slider

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 scrOfX = 0;
var scrOfY = 0;

var IE = document.all?true:false;
if (!IE) document.addEventListener("mousemove",GetMouseXY,false);
document.onmousemove = GetMouseXY;
var tempX = 0;
var tempY = 0;

function GetMouseXY(e) {
	if (IE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.documentElement.scrollLeft;
		tempY = event.clientY + document.documentElement.scrollTop;
	}
	else {  // grab the x-y pos.s if browser is NS
		tempX = e.pageX;
		tempY = e.pageY;
	}  
	if (tempX < 0){tempX = 0;}
	if (tempY < 0){tempY = 0;}  
//	document.Show.MouseX.value = tempX;
//	document.Show.MouseY.value = tempY;
	return true;
}

function GetScrollXY() {
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	}
}

function GetScrollbarWidth() {
	// Get inner width of browser without scrollbar
	document.body.style.overflow = 'hidden';
	var width = document.body.clientWidth;
 
	// Set browser to have scrollbar
	document.body.style.overflow = 'scroll';
 
	// Get width different from original browser width without scrollbar
	width -= document.body.clientWidth;

	// For IE
	if(!width) width = document.body.offsetWidth-document.body.clientWidth;
 
	// Reset overflow
	document.body.style.overflow = '';
 
	return width;
}

function DisablePage(yourDiv) {
	GetScrollXY();
	var docHeight = Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight);
	var blurDiv = document.createElement("div");
	document.getElementsByTagName("body")[0].appendChild(blurDiv);
	blurDiv.id = "blurDiv";
	blurDiv.style.cssText = "position:absolute; top:0; right:0; z-index:100; width:100%; height:"+docHeight+"px; background-color: #000000; opacity:0.6; filter:alpha(opacity=60)";
	blurDiv.onclick = function() {
		EnablePage();
		if (yourDiv) {
			ajax.get('run.php?pageID=blank',yourDiv);
			document.getElementById(yourDiv).style.display='none';
		}
	}
   window.onresize = function() {
		CenterDiv('blurDiv');
	}
//	document.body.style.overflow='hidden';
//	document.documentElement.style.overflow='hidden';
}

function EnablePage() {
	var blurDiv = document.getElementById("blurDiv");
	blurDiv.parentNode.removeChild(blurDiv);
//	document.body.style.overflow='auto';
//	document.documentElement.style.overflow='auto';
}

function CenterDiv(divID) {
	var pageTop;
   window.onresize = function() {
		CenterDiv(divID);
	}

	GetScrollXY();
	var scrollbarWidth = GetScrollbarWidth();
   if (window.innerWidth) {
       pageLeft = (window.innerWidth - document.getElementById(divID).style.width.replace('px','') - scrollbarWidth)/2;
       if (pageLeft < 0) pageLeft = 0;
       //pageTop = (window.innerHeight - document.getElementById(divID).style.height.replace('px',''))/2  + scrOfY;
       if (pageTop < 0) pageTop = 0;
       pageTop = scrOfY + 30;
       document.getElementById(divID).style.left = pageLeft + "px";
       document.getElementById(divID).style.top = pageTop + "px";
   }
   else if (document.documentElement) { // IE6+
      pageLeft = (document.documentElement.clientWidth - document.getElementById(divID).style.width.replace('px','') - scrollbarWidth)/2;
      if (pageLeft < 0) pageLeft = 0;
      //pageTop = (document.documentElement.clientHeight - document.getElementById(divID).style.height.replace('px',''))/2 + scrOfY;
      if (pageTop < 0) pageTop = 0;
      pageTop = scrOfY + 30;
      document.all[divID].style.left = pageLeft + "px";
      document.all[divID].style.top = pageTop + "px";
   }
   else if (document.body) { // older IEs
      pageLeft = (document.body.clientWidth - document.getElementById(divID).style.width.replace('px',''))/2;
      if (pageLeft < 0) pageLeft = 0;
      //pageTop = (document.body.clientHeight - document.getElementById(divID).style.height.replace('px',''))/2  + scrOfY;
      if (pageTop < 0) pageTop = 0;
      pageTop = scrOfY + 30;
      document.all[divID].style.left = pageLeft - scrollbarWidth + "px";
      document.all[divID].style.top = pageTop + "px";
   }
}

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";
 
	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]);
		var f = elapsed / slideAniLen;

		if (dir[objname] == "up") {
			d = endHeight[objname] - d;
			f = 1 - f;
		} 

		obj[objname].style.height = d + "px";
		obj[objname].style.opacity = f;
		obj[objname].style.filter = 'alpha(opacity='+(f*100)+')';
		document.getElementById(objname).value=f;
	}
 
	return;
}

function endSlide(objname){
	clearInterval(timerID[objname]);
 
	if(dir[objname] == "up"){
		obj[objname].style.display = "none";
		obj[objname].style.opacity = 0;
		obj[objname].style.filter = 'alpha(opacity='+(0)+')';
	}
	else{
		obj[objname].style.opacity = 1;
		obj[objname].style.filter = "";
	} 

	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;
}

function ToggleSlideDiv(divID) {
	if (document.getElementById(divID).style.display == 'block')
		slideup(divID);
	else
		slidedown(divID);
}

// Use this function with a setTimeout if you have a div with a dynamic height
function InitSlideDiv(objName) {
	var divStatus;

	// Get original div display setting
	if (document.getElementById(objName).style.display == "block")
		divStatus = "block";
	else
		divStatus = "none";

	// Unhide div
	ShowHideDiv(objName,'block');

	// Get height
	document.getElementById(objName).style.height=parseInt(document.getElementById(objName).offsetHeight)+'px';
	if (document.getElementById(objName).offsetHeight > slideAniLen) slideAniLen=parseInt(document.getElementById(objName).offsetHeight);

	// Reset div display
	ShowHideDiv(objName,divStatus);
}

// Non scrolling show/hide div. Your div needs a style setting of either display:none; or display:block to start.
function ShowHideDiv(divID,force) {
  if (document.getElementById(divID).style.display == 'block' && force != 'block')
    document.getElementById(divID).style.display = 'none';
  else if (document.getElementById(divID).style.display == 'none' && force != 'none')
    document.getElementById(divID).style.display = 'block';
}