/*______________________________________

  JavaScript Lib.

  Copyright (C) 2001-2002

  Business Architects Inc. All rights reserved.

  http://www.b-architects.com

______________________________________*/

var Mac     = navigator.appVersion.indexOf('Mac',0) != -1;

var Win     = navigator.appVersion.indexOf('Win',0) != -1;

var IE      = navigator.appName.indexOf("Microsoft Internet Explorer",0) != -1;

var NN      = navigator.appName.indexOf("Netscape",0) != -1;

var Moz     = navigator.userAgent.indexOf("Gecko") != -1;

var Opera   = window.opera;

var Opera6  = navigator.userAgent.indexOf("Opera 6") != -1;

var Opera7  = navigator.userAgent.indexOf("Opera 7") != -1;

var Vmajor  = parseInt(navigator.appVersion); // ex. 3

var Vminor  = parseFloat(navigator.appVersion); // ex. 3.01

var WinIE55 = ((Win && navigator.appVersion.indexOf('MSIE 5.5',0) != -1));

var MacIE5  = ((Mac && navigator.appVersion.indexOf('MSIE 5.',0) != -1));

var MacIE4  = ((Mac && navigator.appVersion.indexOf('MSIE 4.',0) != -1));

var MacIE3  = ((Mac && navigator.appVersion.indexOf('MSIE 3.',0) != -1));

var iCab    = (navigator.userAgent.indexOf("iCab",0) != -1);



function getInnerSize()

{

	var obj = new Object();

	if( document.all || ( document.getElementById && IE ) )

	{

		obj.width = document.body.clientWidth;

		obj.height = document.body.clientHeight;

	}

	else if( document.layers || document.getElementById )

	{

		obj.width = window.innerWidth;

		obj.height = window.innerHeight;

	}

	return obj;

}



function getScrollLeft()

{

	if( ( navigator.appName.indexOf( "Microsoft Internet Explorer", 0 ) != -1 ) )

	{

		return document.body.scrollLeft;

	}

	else if( window.pageXOffset )

	{

		return window.pageXOffset;

	}

	else

	{

		return 0;

	}

}



function getScrollTop()

{

	if( ( navigator.appName.indexOf( "Microsoft Internet Explorer", 0 ) != -1 ) )

	{

		return document.body.scrollTop;

	}

	else if( window.pageYOffset )

	{

		return window.pageYOffset;

	}

	else

	{

		return 0;

	}

}



var pageScrollTimer;



function pageScroll( toX, toY, frms, cuX, cuY )

{

	if( pageScrollTimer )

	{

		clearTimeout(pageScrollTimer);

	}

	if( !toX || toX < 0 )

	{

		toX = 0;

	}

	if( !toY || toY < 0)

	{

		toY = 0;

	}

	if( !cuX )

	{

		cuX = 0 + getScrollLeft();

	}

	if( !cuY )

	{

		cuY = 0 + getScrollTop();

	}

	if( !frms )

	{

		frms = 6;

	}

	if( toY > cuY && toY > ( getAnchorPosObj( 'end' ).y ) - getInnerSize().height ) toY = ( getAnchorPosObj( 'end' ).y - getInnerSize().height ) + 1;

	cuX += ( toX - getScrollLeft() ) / frms; if( cuX < 0 ) cuX = 0;

	cuY += ( toY - getScrollTop()  ) / frms; if( cuY < 0 ) cuY = 0;

	var posX = Math.floor( cuX );

	var posY = Math.floor( cuY );

	window.scrollTo( posX, posY );

	if( posX != toX || posY != toY )

	{

		pageScrollTimer = setTimeout( "pageScroll("+toX+","+toY+","+frms+","+cuX+","+cuY+")", 16 );

	}

}



function setObj( id )

{

	if( document.all )

	{

		return document.all(id);

	}

	else if( document.getElementById )

	{

		return document.getElementById(id);

	}

	else if( document.layers )

	{

		return document.layers[id];

	}

	return false;

}



function getAnchorPosObj( elementname )

{

	var obj = setObj( elementname );

	var objnew = new Object();

	var objtmp;

	if( document.getElementById )

	{

		objtmp = obj;

		objnew.x = objtmp.offsetLeft;

		objnew.y = objtmp.offsetTop;

		while( ( objtmp = objtmp.offsetParent ) != null )

		{

			objnew.x += objtmp.offsetLeft;

			objnew.y += objtmp.offsetTop;

		}

	}

	else if( document.all )

	{

		objtmp = obj;

		objnew.x = objtmp.offsetLeft;

		objnew.y = objtmp.offsetTop;

		while( ( objtmp = objtmp.offsetParent ) != null )

		{

			objnew.x += objtmp.offsetLeft;

			objnew.y += objtmp.offsetTop;

		}

	}

	else if( document.layers )

	{

		objnew.x = document.anchors[elementname].x;

		objnew.y = document.anchors[elementname].y;

	}

	else

	{

		objnew.x = 0;

		objnew.y = 0;

	}

	return objnew;

}



function getHash( strPath )

{

	return strPath.substring( strPath.lastIndexOf( "#" ) + 1 );

}



function getContFontSize()

{

	var intSize = 0;

	if( Moz || Opera )

	{

		intSize = 16;

	}

	return intSize;

}



var flag = false;

function jumpToAnchor( elementname, frms )

{

	var argFrms;

	if( frms )

	{

		argFrms = frms;

	}

	else

	{

		argFrms = 10;

	}



	if( ( !getAnchorPosObj( getHash( elementname ) ).x - getContFontSize() <= 0 || getAnchorPosObj( getHash( elementname ) ).y - getContFontSize() <= 0 ) && !Opera && !iCab && !MacIE4 && ( Vmajor >=4 ) )

	{

		pageScroll( 0, getAnchorPosObj( getHash( elementname ) ).y - getContFontSize(), argFrms );

	}

	else

	{

		flag = true;

	}

}



function jumpToPageTop()

{

	if( !Opera && !iCab && !MacIE4 && ( Vmajor >=4 ) )

	{

		pageScroll(0, 0, 5);

	}

	else

	{

		flag = true;

	}

}


