var DOM = {
	byID:function(name) {
		return document.getElementById(name);
	},
	byClass:function(name, parent){
		if (document.evaluate){
			var query = document.evaluate(
																		'.//*[contains(concat(" ",@class," ")," '+name+' ")]',
																		parent || document,
																		null,
																		XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
																		null);
			var query_length = query.snapshotLength;
			var elms = new Array(query_length);
			for (var i = 0; i < query_length; i++) {
				elms[i] = query.snapshotItem(i);
			}
			return elms;
		} else {
			var nodes;
			if(!parent) {
				nodes = document.body.getElementsByTagName("*");
			} else {
				nodes = parent.getElementsByTagName("*");
			}
			var elms = new Array();
			for (var n = 0; n < nodes.length; n++) {
				if (this.hasClassName(nodes[n],name)) {
					elms.push(nodes[n]);
				}
			}
			return elms;
		}
	},
	
	hasClassName:function(target, name) {
		var tc = target.className;
		if(tc.length==0) return false;
		if(tc==name || tc.match(new RegExp("(^|\\s)" + name + "(\\s|$)"))) return true;
		return false;		
	}
}

var Event = {
	set:function(elm,evt,func,cap){
		if(elm.addEventListener){
			elm.addEventListener(evt,func,cap);
		} else if(elm.attachEvent){
			elm.attachEvent('on'+evt,func);
		} else{
			return false;
		}
	}
}

var UI = {};
UI.RoundCorner = function(obj){
	var topleft = document.createElement("span");
	topleft.className = "topleft";
	var topright = document.createElement("span");
	topright.className = "topright";
	var btmleft = document.createElement("span");
	btmleft.className = "btmleft";
	var btmright = document.createElement("span");
	btmright.className = "btmright";
	obj.appendChild(topleft);
	obj.appendChild(topright);
	obj.appendChild(btmleft);
	obj.appendChild(btmright);
}
UI.ClosablePanel = function(elm){this.initialize.apply(this,arguments)};
UI.ClosablePanel.prototype = {
	_target:null,
    _openBtn:[],
    _closeBtn:[],
	initialize:function(elm){
		this._target=elm;
		this._target.style.display="none";		
	},
	setCloseBtn:function(elm){
		var scope=this;
        this._closeBtn.push(elm);
		elm.onclick=function(){scope._close();return false}
	},
	setOpenBtn:function(elm){
		var scope=this;
        this._openBtn.push(elm);
		elm.onclick=function(){scope._open();return false}
	},
	_open:function(){
		this._target.style.display="block";
        for (i = 0; i < this._openBtn.length; i++) {
            this._openBtn[i].style.display="none";
        }
        for (i = 0; i < this._closeBtn.length; i++) {
            this._closeBtn[i].style.display="";
        }
	},
	_close:function(){
		this._target.style.display="none";
        for (i = 0; i < this._openBtn.length; i++) {
            this._openBtn[i].style.display="";
        }
        for (i = 0; i < this._closeBtn.length; i++) {
            this._closeBtn[i].style.display="none";
        }
	}
}
