// SimpleAPI
// set of functions for easily manipulating layers, a simple alternative to using the DynLayer
// 19990326

// Copyright (C) 1999 Dan Steinman
// Distributed under the terms of the GNU Library General Public License
// Available at http://www.dansteinman.com/dynapi/

// warning: these have not been test, please email me a fix if there's any problems

// get the style object reference
function getObject(id,nestref) {

	if (is.ns) {
	 if (is.v >= 5) {
		return document.getElementById (id);
	 } else {
	   //return (nestref)? eval('document.'+nestref+'.document.'+id+'.document') : document.layers[id].document;
	   return document.layers[id].document;
	 }
	}
	if (is.ie) return document.all[id].style;
}

// get the element object reference
function getElement(id,nestref) {
	if (is.ns) return getObject(id,nestref);
	if (is.ie) return document.all[id];
}

// get the element object reference
function getDOMElement(id) {
  if (is.ns && is.v < 5) { return document.layers[id]; } else
  if (is.ie) { return document.all[id]; }
  return document.getElementById (id);
}


// show and hide functions
function show(obj) {
  if (is.ns && is.v < 5) obj.visibility = "show";
  else if (is.ns && is.v >= 5) obj.style.visibility = "visible";
  else if (is.ie) obj.visibility = "visible";
}
function hide(obj) {
  if (is.ns && is.v < 5) obj.visibility = "hide";
  else if (is.ns && is.v >= 5) obj.style.visibility = "hidden";
  else if (is.ie) obj.visibility = "hidden";
}

// movement functions
function getX(obj) {
	if (is.ns) return obj.css.left;
	else return obj.css.pixelLeft;
}
function getY(obj) {
	if (is.ns) return obj.css.top;
	else return obj.css.pixelTop;
}
function setX(obj,x) {
	if (is.ns) obj.css.left = x;
	else obj.css.pixelLeft = x;
}
function setY(obj,y) {
	if (is.ns) obj.css.top = y;
	else obj.css.pixelTop = y;
}
function moveTo(obj,x,y) {
	if (x!=null) setX(obj,x);
	if (y!=null)setY(obj,y);
}
function moveBy(obj,x,y) {
	setX(obj,getX(obj)+x);
	setY(obj,getY(obj)+y);
}

function resizeLayer (id) {
  var obj;

  if (is.ns && is.v < 5) {
    obj = document.layers[id];
  } else {
    obj = document.getElementById (id);
  }

  if (is.ns && is.v < 5) {
    alert (obj.toSource());
  }
}

// layer write function
function layerWrite(elm,text) {  // use getElement()    
  if (is.ns && is.v < 5) {
    elm.open();
    elm.write(text);
    elm.close();
  }
  else elm.innerHTML = text;
}

// background color
function setbg(obj,color) {
	if (is.ns) obj.document.bgColor = color;
	else obj.backgroundColor = color;
}


function winPosition(w, h, hpos, vpos) {

  var x = 100;
  var y = 100;
  w = w + 20;
  h = h + 20;
  maxW = 0;
  maxH = 0;

  wx = window.screenX;
  if (isNaN(wx))
        wx = window.screenLeft;
  wy = window.screenY;
  if (isNaN(wy))
        wy = window.screenTop;

  if (screen.availWidth && screen.availHeight)
    {
      maxW = screen.availWidth - 24;
      maxH =  screen.availHeight - 24;
    } else if (screen.width && screen.height) {
      maxW = screen.width - 24;
      maxH = screen.height - 24;
    } else {
      maxW = 950;
      maxH = 700;
    }
    w = Math.min(w, maxW);
    h = Math.min(h, maxH);
    x = parseInt(hpos);
    if (isNaN(x)) {
            if (hpos == "left") {
              x = 1;
            } else if (hpos == "right") {
              x = maxW - w;
            } else {
              x = (maxW - w) / 2;
            }
    } else {
        x = x + wx;
    }
    y = parseInt(vpos);
    if (isNaN(y)) {
            if (vpos == "top") {
              y = 1;
            } else if (vpos == "bottom") {
              y = maxH - h;
            } else {
              y = (maxH - h) / 2;
            }
    } else {
        y = y + wy;
    }
    return "left=" + x + ",top=" + y + ",width=" + w +",height=" + h;
}
