/*
  AUTHOR
    Eric Gracyalny - Staff Consultant - Data Directions, Inc.
    eric_gracyalny@data-directions.com

  DESCRIPTION
    A quick and dirty browser sniffing routine used for other JavaScript
    code.  Taken mostly from shareware HeirMenus.  getIdRef returns an
    object that allows one to easily modify style of ID named tag regardless
    of browser.  Used frequently by other other JavaScript code.

  MODIFICATION HISTORY
    10/23/2001 - DDI - EJG - initial release
    03/07/2002 - DDI - EJG - modified positionItem to allow min/max ranges
*/

var BRWS_DOM;
var BRWS_NS4;
var BRWS_IE;
var BRWS_IE4;
var BRWS_MAC;
var BRWS_IE4M;
var BRWS_CMPLNT;
checkBrowser();

function checkBrowser() {
       BRWS_DOM = (document.getElementById) ? true : false;
       BRWS_NS4 = (document.layers) ? true : false;
        BRWS_IE = (document.all) ? true : false;
       BRWS_IE4 = BRWS_IE && !BRWS_DOM;
       BRWS_MAC = (navigator.appVersion.indexOf("Mac") != -1);
      BRWS_IE4M = BRWS_IE4 && BRWS_MAC;
    BRWS_CMPLNT = (BRWS_DOM || BRWS_NS4 || (BRWS_IE4 && !BRWS_IE4M));
}


function getIdRef(frame, object) {

    var rObj = new Object();
    if (BRWS_DOM) {
        rObj.obj = eval(frame + ".getElementById('" + object + "')");
        rObj.style = eval(frame + ".getElementById('" + object + "').style");
    } else if (BRWS_IE) {
        rObj.obj = eval(frame + ".all['" + object + "']");
        rObj.style = eval(frame + ".all['" + object + "'].style");
    } else if (BRWS_NS4) {
        rObj.obj = eval(frame + ".layers['" + object + "']");
        rObj.style = eval(frame + ".layers['" + object + "']");
    } else {
        rObj.obj = new Object();
        rObj.style = new Object();
    }
    return rObj;

}

function getScreenInfo(frame) {

    var rObj = new Object();
    rObj.left   = (BRWS_IE) ? document.body.scrollLeft   : window.pageXOffset;
    rObj.top    = (BRWS_IE) ? document.body.scrollTop    : window.pageYOffset;
    rObj.width  = (BRWS_IE) ? document.body.clientWidth  : window.innerWidth;
    rObj.height = (BRWS_IE) ? document.body.clientHeight : window.innerHeight;
    rObj.right  = rObj.left + rObj.width;
    rObj.bottom = rObj.top  + rObj.height;
    return rObj;

}

function positionItem() {

  var item     = arguments[0];
  var scrwin   = arguments[1];
  var x_size   = arguments[2];
  var y_size   = arguments[3];
  var x_offset = arguments[4];
  var y_offset = arguments[5];
  var x_attach = arguments[6];
  var y_attach = arguments[7];
  var x_min    = -2500;
  var y_min    = -2500;
  var x_max    =  2500;
  var y_max    =  2500;
  var x_skip   = false;
  var y_skip   = false;
  if (arguments.length > 8)  { x_min  = arguments[8];  }
  if (arguments.length > 9)  { y_min  = arguments[9];  }
  if (arguments.length > 10) { x_max  = arguments[10]; }
  if (arguments.length > 11) { y_max  = arguments[11]; }
  if (arguments.length > 12) { y_skip = arguments[12]; }
  if (arguments.length > 13) { y_skip = arguments[13]; }

  var newLeft = 0;
  var newTop = 0

  if (x_attach == "right") {
    newLeft = scrwin.right - x_size - x_offset;
  } else if (x_attach == "center") {
    newLeft = scrwin.left + parseInt((scrwin.width - x_size)/2) + x_offset
  } else {
    newLeft = scrwin.left + x_offset;
  }

  if (y_attach == "bottom") {
    newTop  = scrwin.bottom - y_size - y_offset;
  } else {
    newTop  = scrwin.top + y_offset;
  }

  if (newLeft < x_min) { newLeft = x_min; }
  if (newLeft > x_max) { newLeft = x_max; }
  if (newTop < y_min)  { newTop = y_min; }
  if (newTop > y_max)  { newTop = y_max; }

  if (!x_skip) { item.left = newLeft; }
  if (!y_skip) { item.top = newTop; }

}

