document.getElementsByAttribute = function(attr, parent, test, tag) 
{
	var ch = (parent || document.body).getElementsByTagName(tag?tag:'*');
	var a = new Array();
	if( test==undefined )
		for( var i=0; i<ch.length; i++ ) {
			if( ch[i].getAttribute(attr)!=null ) a.push(ch[i]);
		}
	else
		for( var i=0; i<ch.length; i++ ) 
			if( ch[i].getAttribute(attr)!=null && ch[i].getAttribute(attr)==test ) 
				a.push(ch[i]);
	return a;
};

document.getElementsByName = function(name, parent, tag) 
{
	var ch = (parent || document.body).getElementsByTagName(tag?tag:'*');
	var a = new Array();
	for( var i=0; i<ch.length; i++ ) 
		if( ch[i].getAttribute('name')!=undefined && ch[i].getAttribute('name')==name ) 
			a.push(ch[i]);
	return a;
};


document.getElementsByAttribute_A = function(attr, parent, test, tags) 
{
	var inc = test==undefined;
	var ch, a=new Array();
	for( var t=0; t<tags.length; t++ ) {
		ch = (parent || document.body).getElementsByTagName(tags[t]);
		if( test==undefined )
			for( var i=0; i<ch.length; i++ ) {
				if( ch[i].getAttribute(attr)!=null ) a.push(ch[i]);
			}
		else
			for( var i=0; i<ch.length; i++ ) 
				if( ch[i].getAttribute(attr)!=null && ch[i].getAttribute(attr)==test ) a.push(ch[i]);
	}
	return a;
};

document.getElementsByClassName = function(clsName,parent,tag) 
{
	var ch = (parent || document.body).getElementsByTagName(tag?tag:'*');
	var a = new Array(); 
	for( var i=0; i<ch.length; i++ ) if( ch[i].className==clsName ) a.push(ch[i]);
	return a;
};

document.getLabelFor = function( name, f ) {
	var lbls = (f||document.body).getElementsByTagName('LABEL');
	for (var i=0; i<lbls.length; i++) 
		if( lbls[i].htmlFor==name )
			return lbls[i];
	return false;
};

function getNthTagBelowId(n,tag,id)
{
	var tmp = document.getElementById(id);
	if( !tmp ) return null;
	var sub = tmp.getElementsByTagName(tag);
	if( !sub || sub.length<=n ) return null;
	return sub[n];
};


document.addStyleSheet = function(ss,d)
{
	if( !d ) d=document;

	var hd=d.getElementsByTagName("head")[0];
	if( !hd ) {
		hd = document.createElement('head');
		d.appendChild(hd);
	}

	if( d.createStyleSheet ) {
		d.createStyleSheet(ss);
	}
	else
	{
		var newSS=document.createElement('link');
		newSS.rel='stylesheet';
		newSS.type='text/css';
		newSS.href=ss;
		hd.appendChild(newSS);
	}
};
