/*
ns dc				http://purl.org/dc/elements/1.1/
dc:title			SemSol JavaScript library
dc:creator			benjamin nowack, bnowack at appmosphere.com
dc:date				2006-03-09
*/

function elById(id){
	return (typeof id != "string") ? id : (document["getElementById"] ? document.getElementById(id) : false );
}

function elsByTag(t, p){
	var p_el=(p) ? elById(p) : document; 
	return (p_el["getElementsByTagName"]) ? p_el.getElementsByTagName(t) : [];
}
	
function elByTag(t, p){
	var els=elsByTag(t, p);
	return (els.length) ? els[0] : false;
}
	
function elsByClass(c, p, t){
	var els=(t) ? elsByTag(t, p) : elsByTag("*", p);
	var re=new RegExp("(^|\\s)"+c+"(\\s|$)");
	var r=[];
	for(var i=0, i_max=els.length; i<i_max; i++){
		if(els[i].className && els[i].className.match(re)){
			r[r.length]=els[i];
		}
	}
	return r;
}

function elByClass(c, p){
	var els=elsByClass(c, p);
	return (els.length) ? els[0] : false;
}

function hasClass(el, c){
	var re=new RegExp("(^|\\s)"+c+"(\\s|$)");
	return (el.className && el.className.match(re)) ? true : false;
}

function addClass(el, c) {
  if (!hasClass(el, c)) {
    el.className += (el.className) ? " "+c : c;
  }
}

function elsByAttr(a_name, a, p){
	var els=elsByTag("*", p);
	var esc_a = a.replace(/([\.])/g, '\\$1');
	var re=new RegExp("(^|\\s)"+esc_a+"(\\s|$)");
	var r=[];
	var cur_a;
	for(var i=0, i_max=els.length; i<i_max; i++){
		if((cur_a=els[i].getAttribute(a_name)) && cur_a.match(re)){
			r[r.length]=els[i];
		}
	}
	return r;
}

function elByAttr(a_name, a, p){
	var els=elsByAttr(a_name, a, p);
	return (els.length) ? els[0] : false;
}

function attrVal(el, a_name){
	return(el && el["getAttribute"]) ? el.getAttribute(a_name) : false;
}

function toggleEl(el){
	el.style.display= (el.style.display=="none") ? "" : "none";
	window.focus();
}

function updateEl(id, val){
	elById(id).innerHTML=val;
}

function addHeadScript(url, id){
	var head, node;
	node=document.createElement('script');
	node.type = 'text/javascript';
	node.src = url;
	if(id){
		node.id = id;
	}
	head = elByTag("head");
	head.appendChild(node)	
}

function addEventHandler(el, eType, handler){
	if(el){
		if(eType == "click"){
			//el["on"+eType] = handler;
		}
		if(el["addEventListener"]){
			el.addEventListener(eType, handler, false);
		}
		else if(el["attachEvent"]){
			el.attachEvent("on"+eType, handler);
		}
		else{
			el["on"+eType]=handler;
		}
	}
}

function cancelEvent(e) {
  if (e['preventDefault']) {
    e.preventDefault();
    e.stopPropagation();
  }
  else {
    e.cancelBubble = true;
    e.returnValue = false;
  }
}
