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(IE){
		return document.body.scrollLeft;
	}else if(window.pageXOffset){
		return window.pageXOffset;
	}else{
		return 0;
	}
}

function getScrollTop(){
	if(IE){
		if(Win){
			var CANVAS = document[ 'CSS1Compat' == document.compatMode ? 'documentElement' : 'body'];
			return CANVAS.scrollTop;
		}else{
			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;
	mvX = (toX - getScrollLeft()) / frms;
	mvY = (toY - getScrollTop() ) / frms;
	cuX += mvX; if(cuX < 0) cuX = 0;
	cuY += mvY; 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+")", 10);
	}
}

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;
}

jumpflag = false;

function jumpToAnchor(elementname, frms){
	frms = (frms > 1) ? frms : 6;
	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(), frms);
	}else{
		jumpflag = true;
	}
}

function jumpToPageTop(frms){
	frms = (frms > 1) ? frms : 6;
	if(!Opera && !iCab && !MacIE4 && (Vmajor >=4)){
		pageScroll(0, 0, frms);
	}else{
		jumpflag = true;
	}
}
