var app_version = navigator.appVersion;
var user_agent  = navigator.userAgent;
var app_name    = navigator.appName;

UA = new Object();

// os
if( app_version.indexOf( 'Win', 0 ) != -1 )
{
	UA.os = 'Win'
}
else if( app_version.indexOf( 'Mac', 0 ) != -1 )
{
	UA.os = 'Mac';
}

else
{
	UA.os = "";
}

// name
if( app_name.indexOf( 'Microsoft Internet Explorer', 0 ) != -1 )
{
	UA.name = 'IE';
}
else if( app_name.indexOf( 'Netscape', 0 ) != -1 )
{
	UA.name = 'NS'

	if( user_agent.indexOf( 'Gecko', 0 ) != -1 )
	{
		UA.name = 'Gecko'
	}
}
else if( user_agent.indexOf( 'Opera', 0 ) != -1 )
{
	UA.name = 'Opera';
}
else
{
	UA.name = '';
}

// version
// IE
if( UA.name == 'IE' )
{
	if( user_agent.indexOf( 'MSIE 4', 0 ) != -1 )
	{
		UA.version = 4;
	}
	else if( user_agent.indexOf( 'MSIE 5', 0 ) != -1 )
	{
		UA.version = 5;
	}
}
// NS4
else if( UA.name == 'NS' )
{
	var num = parseFloat( app_version );
	if( num < 4.76 && num >= 4 )
	{
		UA.version = '4o';
	}
	else if( num >= 4.76 )
	{
		UA.version = '4n';
	}
	else
	{
		UA.version = '';
	}
}
// Gecko
else if(UA.name == 'Gecko' )
{
	if( UA.os=='Mac' && user_agent.indexOf( 'Netscape6/6.0', 0 ) != -1  )
	{
		UA.version = '60'
	}
	else if( user_agent.indexOf( 'Netscape/7.0', 0 ) != -1 )
	{
		UA.version = '7'
	}
	else
	{
		UA.version = '';
	}
}
else
{
	UA.version = '';
}


// type
UA.type = UA.os + UA.name + UA.version;


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, 6);
	}
	else
	{
		flag = true;
	}
}
