/*
* Script: browser.js
* Author: UMG
* Descrpition: Browser interface script.
*/

var gBrowserIs5Up      = false;
var gBrowserIsIE       = false;
var gBrowserIsIE5_5Up  = false;
var gBrowserIsNS       = false;
var gBrowserIsNS4      = false;
var gBrowserIsNS6      = false;
var gBrowserIsWin      = false;
var gBrowserMouseX     = 0;
var gBrowserMouseY     = 0;
var gBrowserLeftButton = 1;

// detect browser (assume ie if not netscape)
var gBrowserIsNS = (navigator.appName.indexOf("Netscape")>=0);
if (gBrowserIsNS) {
  if (parseFloat(navigator.appVersion)>=5) {
    gBrowserIs5Up=true;gBrowserIsNS6=true;
  } else gBrowserIsNS4 = true;
} else {
  gBrowserIsIE = true;
  if (navigator.appVersion.indexOf("MSIE 5")>0) {
    gBrowserIs5Up=true;
    var pTmp = navigator.appVersion.match(/MSIE \d+.\d+/);
    if ((pTmp != null) && (pTmp.length > 0)) {
      var pTmp2 = pTmp[0].substr(5);
      if (!isNaN(pTmp2)) gBrowserIsIE5_5Up = (parseFloat(pTmp2) >= 5.5);
    }
  }
}
if (navigator.userAgent.indexOf("Win") >= 0) gBrowserIsWin = true;

// clip an element
function browserClipElement(el,nLeft,nTop,nRight,nBottom) {
  if (el!=null) {
    //if (gBrowserIsNS) {
    if (true) {
       var nW = Math.abs(nLeft-nRight); if (nW == 0) nW = 1;
       var nH = Math.abs(nTop-nBottom); if (nH == 0) nH = 1;
       el.style.left   = nLeft+"px";
       el.style.top    = nTop+"px";
       el.style.width  = nW+"px";
       el.style.height = nH+"px";
     } else {
       el.style.clip = 'rect('+nTop+' '+nRight+' '+nBottom+' '+nLeft+')';
    }
  }
}

// create an element
function browserCreateElement(sName,nLeft,nTop,nWidth,nHeight,bVisible,sContent) {
  document.writeln('<div id="'+sName+'" style="position:absolute; overflow:hidden; left:'+nLeft+'px; top:'+nTop+'px; width:'+nWidth+'px; height:'+nHeight+'px;'+' visibility:'+(bVisible? 'visible;' : 'hidden;')+'">');
  document.writeln(sContent);
  document.writeln('</div>');
}

// find an element
function browserFindElement(sID,oDocument) {
  var el,i,n;
  if (!oDocument) oDocument=document;
  if ((n=sID.indexOf("?"))>0 && parent.frames.length) {
    oDocument=parent.frames[sID.substring(n+1)].document; sID=sID.substring(0,n);
  }
  if (!(el=oDocument[sID]) && oDocument.all) el=oDocument.all[sID];
  if (!el) {if (gBrowserIsNS) el=oDocument.getElementById(sID);}
  for (i=0;!el && i<oDocument.forms.length;i++) el=oDocument.forms[i][sID];
  for (i=0;!el && oDocument.layers && i<oDocument.layers.length;i++)
    el=browserFindElement(sID,oDocument.layers[i].document)
  return el;
}

// get height
function browserGetHeight() {
  var nVal = window.innerHeight;
  if (nVal == null) nVal = document.body.clientHeight;
  return nVal ;
}

// get width
function browserGetWidth() {
  var nVal = window.innerWidth;
  if (nVal == null) nVal = document.body.clientWidth;
  return nVal ;
}

// determine if element is visible
function browserIsElementVisible(el) {
  var bVis = false;
  if (el!=null) bVis = (el.style.visibility != "hidden");
  return bVis;
}

// determine if the left mouse button was pushed
function browserIsLeftButton(e) {
  var b=false;
  if (gBrowserIsNS)
    b=(e.which==gBrowserLeftButton);
  else {
    b=(window.event.button==gBrowserLeftButton);
  }
  return b;
}

// move element
function browserMoveElement(el,nLeft,nTop) {
  if (el!=null) {el.style.left=nLeft+"px"; el.style.top=nTop+"px";}
}

// set element background color
function browserSetBgColor(el,vColor) {
  if (el!=null) el.style.backgroundColor=vColor;
}

// set cursor
function browserSetCursor(el,sCursor) {
  if (el!=null) {el.style.cursor = sCursor;}
}

// set mouse xy coords
function browserSetMouseXY(e) {
  if (gBrowserIsNS) {
    gBrowserMouseX=e.pageX;
    gBrowserMouseY=e.pageY;
  } else if (document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
    gBrowserMouseX=event.clientX + document.documentElement.scrollLeft;
    gBrowserMouseY=event.clientY + document.documentElement.scrollTop;
  } else {
    gBrowserMouseX=event.clientX + document.body.scrollLeft;
    gBrowserMouseY=event.clientY + document.body.scrollTop;
  }
}

// hide/show element
function browserToggleElement(el,bVisible) {
  if (el!=null) {
    var vis = "visible"; if (!bVisible) vis = "hidden";
    el.style.visibility = vis;
  }
}


