document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};

//adds an event listener to an event
//function addEventListener( element, event_name, observer, capturing ) {
//    if ( element.addEventListener ) // the DOM2, W3C way  
//        element.addEventListener( event_name, observer, capturing );
//    else if ( element.attachEvent ) // the IE way  
//        element.attachEvent( "on" + event_name, observer );
//}

function DropShadow(obj, cl) {
	if (obj.constructor.toString().indexOf("String") != -1) {
		obj = document.getElementById(obj);
	}
	this._obj = obj;
	this._class = cl;
	this.addMenuDiv = function() {
		var ul = obj.getElementsByTagName("UL");
		var node, div = null;
		for (var i = 0; i < ul.length; ++i) {
			div = document.createElement("DIV");
			div.className = this._class;
			node = ul[i].parentNode;
			div.style.position = "absolute";
			div.style.left = "-999em";
			div.width = ul[i].offsetWidth;
			div.style.width = ul[i].offsetWidth + "px";
			div.height = ul[i].offsetHeight;
			div.style.height = ul[i].offsetHeight + "px";
			div.style = ul[i].style;
			div.appendChild(ul[i]);
			node.appendChild(div);
		}
	}
	this.removeMenuDiv = function() {
		var divs = document.getElementsByClassName(this._class);
		var node = null;
		for (var i = 0; i < divs.length; ++i) {
			for (var j = 0; j < divs[i].childNodes.length; ++j) {
				node = divs[i].childNodes[j];
				divs[i].removeChild(node);
				divs[i].parentNode.appendChild(node);
			}
		}
	}
}

DropShadow.prototype.show = function() {
	this.addMenuDiv();
}

DropShadow.prototype.hide = function() {
	this.removeMenuDiv();
}