Select = function(e){
	if(!e)
		return;
	for(var a = arguments, c = a.callee, i = a.length; --i; c(a[i]));
	if(e.built)
		for(var i = 2; i--; e.parentNode.removeChild(e.previousSibling));
	var model, d = document, f = document.createDocumentFragment(),
	p = f.appendChild(d.createElement("p")),
	ul = f.appendChild(d.createElement("ul"));
	addEvent(ul, "click", function(ev){
		e.value = ev.target.href.replace(/.*#/, "");
		e.onchange && e.onchange();
		p.innerHTML = ev.target.innerHTML;
		p.onclick();
		return false;
	});
	(model = d.createElement("li")).appendChild(d.createElement("a"));

	e.style.display = "none";
	ul.style.display = "none";
	var s = " " + e.className;
	e.parentNode.className = e.parentNode.className.split(s).join(" ") + s;
	p.appendChild(d.createTextNode(e.options[e.selectedIndex].text));
	addEvent(p, "click", function(){
		c.last && c.last != ul && showHide(c.last);
		c.last = c.last == ul ? null : ul;
		showHide(ul);
	});
	for(var l = e.options, i = -1, j = l.length; ++i < j;){
		var o = ul.appendChild(model.cloneNode(true));
		o.childNodes[0].href = "#" + l[i].value;
		o.childNodes[0].innerHTML = l[i].text;
	}
	e.parentNode.insertBefore(f, e);
	e.built = true;
};
