/*
 * xbDOM.js
 * $Revision: 1.2 $ $Date: 2003/02/07 16:04:18 $
 */

function xbMailTo(domain, user, makeLink, linkText, subject)
{
   var sendto = user + "@" + domain;
   var mailURL = "mailto:" + sendto;
   if (subject) 
      mailURL = mailURL + "?subject=" + subject;

   if (makeLink)
   {
      if (linkText)
         return linkText.link(mailURL);
      else
         return sendto.link(mailURL);
   }
   else
      return sendto;
}

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Netscape code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Corporation.
 * Portions created by the Initial Developer are Copyright (C) 2001
 * the Initial Developer. All Rights Reserved.
 * * Contributor(s): Bob Clary <bclary@netscape.com>
 *
 * ***** END LICENSE BLOCK ***** */

function xbToInt(s)
{
  var i = parseInt(s, 10);
  if (isNaN(i))
    i = 0;
  return i;
}

function xbGetWindowWidth(windowRef)
{
  var width = 0;
  if (!windowRef)
  {
    windowRef = window;
  }
  if (typeof(windowRef.innerWidth) == 'number')
  {
    width = windowRef.innerWidth;
  }
  else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')
  {
    width = windowRef.document.body.clientWidth;  
  }
  return width;
}

function xbGetWindowHeight(windowRef)
{
  var height = 0;
  
  if (!windowRef)
  {
    windowRef = window;
  }
  if (typeof(windowRef.innerWidth) == 'number')
  {
    height = windowRef.innerHeight;
  }
  else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')
  {
    height = windowRef.document.body.clientHeight;    
  }
  return height;
}

function xbGetElementsByNameAndType(name, type, windowRef)
{
  if (!windowRef)
    windowRef = window;

  var elmlist = new Array();
  xbFindElementsByNameAndType(windowRef.document, name, type, elmlist);
  return elmlist;
}

function xbFindElementsByNameAndType(doc, name, type, elmlist)
{
  var i;
  var subdoc;
  
  for (i = 0; i < doc[type].length; ++i)
  {
    if (doc[type][i].name && name == doc[type][i].name)
    {
      elmlist[elmlist.length] = doc[type][i];
    }
  }
  if (doc.layers)
  {
    for (i = 0; i < doc.layers.length; ++i)
    {
      subdoc = doc.layers[i].document;
      xbFindElementsByNameAndType(subdoc, name, type, elmlist);
    }
  }
}

if (document.layers)
{
  nav4FindLayer = function (doc, id)
  {
    var i;
    var subdoc;
    var obj;
    
    for (i = 0; i < doc.layers.length; ++i)
    {
      if (doc.layers[i].id && id == doc.layers[i].id)
        return doc.layers[i];
        
      subdoc = doc.layers[i].document;
      obj    = nav4FindLayer(subdoc, id);
      if (obj != null)
        return obj;
    }
    return null;
  }

  nav4FindElementsByName = function (doc, name, elmlist)
  {
    var i;
    var j;
    var subdoc;
    
    for (i = 0; i < doc.images.length; ++i)
    {
      if (doc.images[i].name && name == doc.images[i].name)
      {
        elmlist[elmlist.length] = doc.images[i];
      }
    }

    for (i = 0; i < doc.forms.length; ++i)
    {
      for (j = 0; j < doc.forms[i].elements.length; j++)
      {
        if (doc.forms[i].elements[j].name && name == doc.forms[i].elements[j].name)
        {
          elmlist[elmlist.length] = doc.forms[i].elements[j];
        }
      }
      if (doc.forms[i].name && name == doc.forms[i].name)
      {
        elmlist[elmlist.length] = doc.forms[i];
      }
    }

    for (i = 0; i < doc.anchors.length; ++i)
    {
      if (doc.anchors[i].name && name == doc.anchors[i].name)
      {
        elmlist[elmlist.length] = doc.anchors[i];
      }
    }

    for (i = 0; i < doc.links.length; ++i)
    {
      if (doc.links[i].name && name == doc.links[i].name)
      {
        elmlist[elmlist.length] = doc.links[i];
      }
    }

    for (i = 0; i < doc.applets.length; ++i)
    {
      if (doc.applets[i].name && name == doc.applets[i].name)
      {
        elmlist[elmlist.length] = doc.applets[i];
      }
    }

    for (i = 0; i < doc.embeds.length; ++i)
    {
      if (doc.embeds[i].name && name == doc.embeds[i].name)
      {
        elmlist[elmlist.length] = doc.embeds[i];
      }
    }

    for (i = 0; i < doc.layers.length; ++i)
    {
      if (doc.layers[i].name && name == doc.layers[i].name)
      {
        elmlist[elmlist.length] = doc.layers[i];
      }
        
      subdoc = doc.layers[i].document;
      nav4FindElementsByName(subdoc, name, elmlist);
    }
  }

  xbGetElementById = function (id, windowRef)
  {
    if (!windowRef)
      windowRef = window;

    return nav4FindLayer(windowRef.document, id);
  };

  xbGetElementsByName = function (name, windowRef)
  {
    if (!windowRef)
      windowRef = window;
    var elmlist = new Array();
    nav4FindElementsByName(windowRef.document, name, elmlist);
    return elmlist;
  };
}
else if (document.all)

{
  
  xbGetElementById = 
function (id, windowRef)

  {
 
   if (!windowRef)
 
   {
      windowRef = window;
 
   }

    var elm = windowRef.document.all[id];
 
   if (!elm)
 
   {

      elm = null;
 
   }

    return elm;
 
 };



  xbGetElementsByName = function (name, windowRef)

  {

    if (!windowRef)

      windowRef = window;


    var i;

    var idnamelist = windowRef.document.all[name];
    var elmlist = new Array();


    if (!idnamelist.length || idnamelist.name == name)

    {

      if (idnamelist)

        elmlist[elmlist.length] = idnamelist;

    }

    else

    {

      for (i = 0; i < idnamelist.length; i++)

      {

        if (idnamelist[i].name == name)
          elmlist[elmlist.length] = idnamelist[i];

      }

    }


    return elmlist;

  }


}
 
else if (document.getElementById)

{
  xbGetElementById = function (id, windowRef)

  {
 
   if (!windowRef)
 
   {

      windowRef = window;
    }

    return windowRef.document.getElementById(id);

  };



  xbGetElementsByName = 
function (name, windowRef)

  {

    if (!windowRef)

    {
      windowRef = window;

    }

    return windowRef.document.getElementsByName(name);

  };

}

else 

{
  
  xbGetElementById = function (id, windowRef)

  {
 
    return null;

  };



  xbGetElementsByName = function (name, windowRef)

  {
 
    return new Array();

  };


}



function xbGetPageScrollX(windowRef)

{

  if (!windowRef)

  {

    windowRef = window;

  }


  if (typeof(windowRef.pageXOffset) == 'number')

  {

    return windowRef.pageXOffset;

  }


  if (typeof(windowRef.document.body && windowRef.document.body.scrollLeft) == 'number')

  {

    return windowRef.document.body.scrollLeft;

  }


  return 0;

}



function xbGetPageScrollY(windowRef)

{

  if (!windowRef)

  {

    windowRef = window;

  }


  if (typeof(windowRef.pageYOffset) == 'number')

  {

    return windowRef.pageYOffset;

  }


  if (typeof(windowRef.document.body && windowRef.document.body.scrollTop) == 'number')

  {

    return windowRef.document.body.scrollTop;

  }


  return 0;

}



if (document.layers)

{

  xbSetInnerHTML = function (element, str)

  {
 
    element.document.write(str);
 
    element.document.close();
 
 };

}

else 

{

  xbSetInnerHTML = function (element, str)
  {
 
    if (typeof(element.innerHTML) != 'undefined')
 
    {

       element.innerHTML = str;
 
    }

  };

}

// eof: xbDOM.js
