374 lines
7.2 KiB
JavaScript
374 lines
7.2 KiB
JavaScript
/*
|
|
* xbDOM.js
|
|
* $Revision: 1.2 $ $Date: 2003/02/07 16:04:18 $
|
|
*/
|
|
|
|
/* ***** 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
|