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 preloadImg(imgName) {
 if (document.images) (new Image()).src = imgName;
}

function preloadimgApp(imgArray) {
 if (document.images) {
  for (i=0; i<imgArray.length; i++) {
   (new Image()).src = imgArray[i];
  }
 }
}

function swapImage(target,src) { // 020507
 var NN4_layerPath;
 if (arguments.length > 2 && document.layers) {
  NN4_layerPath = "";
  for (i=2; i<arguments.length; i++) NN4_layerPath += 'document.layers["' + arguments[i] + '"].';
  eval(NN4_layerPath + 'document.images["' + target + '"]').src = src;
  return;
 }
 document.images[target].src = src;
}

function openWindow(url,title,options) {
 var newWin;
 if (!!window && url) {
  if (!title) title = "_blank";
  if (!options) {
   options = "toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,favorites=yes";
  }
  newWin = window.open(url,title,options);
  if (!WinIE55) newWin.focus();
 }
}

/* js component for "reloading page onResize"
   original source: resize.js 0.3 970811 by gary smith */
 if(!window.saveInnerWidth) {
   window.onresize = resizeIt;
   window.saveInnerWidth = window.innerWidth;
   window.saveInnerHeight = window.innerHeight;
 }
function resizeIt() {
    if (saveInnerWidth < window.innerWidth || 
        saveInnerWidth > window.innerWidth || 
        saveInnerHeight > window.innerHeight || 
        saveInnerHeight < window.innerHeight ) 
    {
        window.history.go(0);
    }
}

function getInnerSize() {
 var obj = new Object();

 if (document.all || (document.getElementById && IE)) {
  obj.width = document.documentElement.clientWidth;
  obj.height = document.documentElement.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 || document.documentElement.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  || document.documentElement.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 && parseInt(toY) > (getAnchorPosObj('end').y) - getInnerSize().height) toY = (getAnchorPosObj('end').y - getInnerSize().height) + 1;
//alert('toY:'+toY+', '+'cuY:'+cuY);
 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 jumpToPageTop() {
 if (!Opera && !iCab) {
  pageScroll(0,0,5);
 } else {
  if (Opera) {
   location.href = "#top";
  } else {
   location.hash = "top";
  }
 }
}

function setObj(id) {
 if (document.getElementById) {
  return document.getElementById(id);
 } else 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;
}

function jumpToAnchor(elementname) {
 if ((!getAnchorPosObj(getHash(elementname)).x - getContFontSize() <= 0 || getAnchorPosObj(getHash(elementname)).y - getContFontSize() >= 0) && !Opera && !iCab){
  pageScroll(0, getAnchorPosObj(getHash(elementname)).y - getContFontSize(), 5);
 } else {
  if (Opera) {
   location.href = "#" + elementname;
  } else {
   location.hash = elementname;
  }
 }
}

function gstrTrim(strData) {
	var strTemp = strData;

	strTemp = gstrRTrim(strTemp);
	strTemp = gstrLTrim(strTemp);

	return strTemp;
}

function gstrRTrim(strData) {
	var strTemp = strData;

	for (var i = 0; i < strData.length; i++) {
		if ((strTemp.slice(-1) == " ") || (strTemp.slice(-1) == "@")){
			strTemp = strTemp.substring(0, (strTemp.length - 1));
		}
	}

	return strTemp;
}

function gstrLTrim(strData) {
	var strTemp = strData;

	for (var i = 0; i < strData.length; i++) {
		if ((strTemp.slice(0, 1) == " ") || (strTemp.slice(0, 1) == "@")){
			strTemp = strTemp.substring(1, strTemp.length);
		}
	}

	return strTemp;
}