/**
============================================================ $Keywords ======
  Unit Name     swResize.js
  Environment   JavaScript
  Project       Tutelar SpiderWorks
					 $AddProject: spiderworks $

  Copyright     (c) 2002 - Tutelar Technologies Inc.

  Author(s)     ejd

  Create Date   August 2002

  Current Version
					 $Version: 0 $ / $Revision: 1 $

  Last Revised  $CheckInDate: 6/22/03 9:47:58 PM $
				by  $CheckInUser: Edward $

  $OriginalPath: w:\spiderworks\ $

  -------------------------------------------------------------------------
  Description

  Adds enhancements so IE 5+ and Firefox displays web pages with proper scrolling.

============================================================ $NoKeywords ==*/

var isPrinting = false;

var useSizing = document.getElementById && document.defaultView;
var ssIdx;

if (document.all && document.createStyleSheet) {  // Microsoft Internet Explorer

function doIEResize()
{
	if (!isPrinting && layoutContents && layoutContents.style) {
		layoutContents.style.pixelWidth =
				 document.body.clientWidth - frameNav.offsetWidth -
				 (2 * (layoutMain.clientLeft + frameContents.clientLeft + layoutContents.clientLeft +
						 layoutContents.offsetLeft)) ;
	}
}

function doBeforePrint()
{
	isPrinting = true;
	layoutContents.style.width = '100%';
}

function doAfterPrint()
{
	isPrinting = false;
	doIEResize();
}

var ss = document.createStyleSheet();
ss.media = 'screen';
ss.addRule('#layoutContents', 'overflow:auto;height:100%');
ss.addRule('#layoutNav', 'overflow:auto;height:100%');
ss.addRule('#panelContents', 'width:100%;');
ss.addRule('#panelTop', 'width:100%;');
ss.addRule('#panelBottom', 'width:100%;');

document.body.style.overflow='hidden';

doIEResize();

try {
	panelContents.focus();
}
catch (e) {
}

window.onresize = doIEResize;
window.onbeforeprint = doBeforePrint;
window.onafterprint = doAfterPrint;

} else if (document.styleSheets) {    // FireFox

function recalcSizes()
{
	var lc = document.getElementById('layoutContents');
	var ln = document.getElementById('layoutNav');
	var lcp = lc.parentNode;
	var lnp = ln.parentNode;
	var pc = document.getElementById('panelContents');
	var pn = document.getElementById('panelNav');
	var s, idx, cs = '', ns = '';
	var ss = document.styleSheets[0];
	if (!ssIdx) {
		s = '@media screen {body{overflow:hidden;}}';  // turn off main page scroll bars
		ss.insertRule(s, 1);
	} else {
		ss.deleteRule(ssIdx);   // delete old sizing rule
		ssIdx = null;
	}

	var cw = parseInt(document.defaultView.getComputedStyle(lc, '').getPropertyValue('width'));
	pc.style.display = 'none'; // hide contents
	var nw = parseInt(document.defaultView.getComputedStyle(ln, '').getPropertyValue('width'));
	if (isNaN(nw))
		nw = 0;
	var nh = parseInt(document.defaultView.getComputedStyle(ln, '').getPropertyValue('height'));
	var lw = parseInt(document.defaultView.getComputedStyle(lc, '').getPropertyValue('width'));

	idx = ss.insertRule('@media screen {#layoutNav{width:'+nw+'px;height:'+nh+'px;overflow:hidden}}', 1); // calculate orig client width
	var prevW = ln.clientWidth;   // remember this to eliminate nav side scroll bar later
	ss.deleteRule(idx);

	// calculate proper navigation height
	var oh = lnp.offsetHeight;
	var pd = pn.style.display;
	pn.style.display = 'none'; // hide navigation
	var diff = oh - lnp.offsetHeight;
	if (diff > 0) {
		nh -= diff;
		ns = 'height:'+nh+'px;width:'+nw+'px;overflow:auto';
	}
	// calculate proper contents height
	oh = lcp.offsetHeight;
	pc.style.display = ''; // redisplay contents
	idx = ss.insertRule('@media screen {#layoutContents{height:5000px;overflow:hidden}}', 1);
	var ch = 5000;
	diff = lcp.offsetHeight - oh;
	ss.deleteRule(idx);
	if ((diff > 0) || (lw != cw)) {
		if (diff > 0) {
			ch -= diff;
			cs += 'height:'+ch+'px;';
		}
		if (lw != cw)
			cw = lw;
		cs += 'width:'+cw+'px;';
		cs += 'overflow:auto';
	}
	pn.style.display = pd; // redisplay navigation

	if (ns + cs) {
		s = '@media screen {' +
				(cs ? ('#layoutContents{' + cs + '}') : '') +
				(ns ? ('#layoutNav{' + ns + '}') : '') + '}';
		ssIdx = ss.insertRule(s, 1);
		if (ns) {   // if nav was re-sized, see if horizontal scroll bar needs to be removed
			prevW -= ln.clientWidth;   // this is the scrollbar width
			if (prevW > 0) {
				nw += prevW;
				ns = 'height:'+nh+'px;width:'+nw+'px;overflow:auto';
				if (cs) {
					cw -= prevW;
					cs = 'height:'+ch+'px;width:'+cw+'px;overflow:auto';
				}
				ss.deleteRule(ssIdx);   // delete old rule
				s = '@media screen {' +
						(cs ? ('#layoutContents{' + cs + '}') : '') +
						(ns ? ('#layoutNav{' + ns + '}') : '') + '}';
				ssIdx = ss.insertRule(s, 1);
			}
		}
	}
}

function doResize()
{
	if (useSizing)
		recalcSizes();
/*   else
		location.reload(); */
}

function doMouseWheel(event)
{
	var el = event.currentTarget;
	if (event.detail < 0)
		el.scrollTop -= 30;
	else
		el.scrollTop += 30;
}

function doKeyPress(event)
{
	var el = document.getElementById('layoutContents');
	var prevTop = el.scrollTop;
	var prevLeft = el.scrollLeft;
	switch (event.keyCode) {
		case event.DOM_VK_UP :
			el.scrollTop -= 30;
			break;
		case event.DOM_VK_DOWN:
			el.scrollTop += 30;
			break;
		case event.DOM_VK_RIGHT:
			el.scrollLeft += 30;
			break;
		case event.DOM_VK_LEFT:
			el.scrollLeft -= 30;
			break;
		case event.DOM_VK_PAGE_UP:
			el.scrollTop -= parseInt(document.defaultView.getComputedStyle(el, '').getPropertyValue('height')) - 30;
//         el.scrollTop -= parseInt(el.clientHeight) - 30;
			break;
		case event.DOM_VK_PAGE_DOWN:
			el.scrollTop += parseInt(document.defaultView.getComputedStyle(el, '').getPropertyValue('height')) - 30;
//         el.scrollTop += parseInt(el.clientHeight) - 30;
			break;
		case event.DOM_VK_HOME:
			el.scrollTop = 0;
			break;
		case event.DOM_VK_END:
			el.scrollTop = el.scrollHeight;
			break;
	}
	if ((prevTop != el.scrollTop) || (prevLeft != el.scrollLeft)) {
		event.stopPropagation();
		event.preventDefault();
	}
}

window.onresize = doResize;
if (useSizing) {
	window.setTimeout(recalcSizes, 10);

	var lc = document.getElementById('layoutContents');
/*
	lc.addEventListener("DOMMouseScroll", doMouseWheel, false);
	lc.addEventListener("keypress", doKeyPress, false);
	document.getElementById('layoutNav').addEventListener("DOMMouseScroll", doMouseWheel, false);
*/
//   document.onkeypress = doKeyPress;
	lc.tabIndex = 1;
	lc.focus();
}

}
