function trim(str) {
	while (str.substring(0,1)==" ") {
		str=str.substring(1, str.length);
	}
	while (str.substring(str.length-1, str.length)==" ") {
		str = str.substring(0,str.length-1);
	}
	return str;
}

function stripe(otable,evenColor) {
	var even=false;
	if (!otable) return;
	var tbody=otable.getElementsByTagName("tbody");
	//Your allowed >1 body, but we only use one
	var trs=tbody[0].getElementsByTagName("tr");
	for (var i=0;i<trs.length;i++) {
		//var cls=trs[i].getAttributeNode("class");
		var cls=trs[i].className;
		if (cls==null) cls=false;
		if (!cls && even) trs[i].style.backgroundColor=evenColor;
		even=!even;
	}
}

function setSelect(obj,value) {
	for (var i=0;i<obj.options.length;i++) {
		if (obj.options[i].value==value) {
			obj.selectIndex=i;
			return;
		}
	}
}
function setRadio(obj,value) {
	for (var i=0;i<obj.length;i++) {
		if (obj[i].value==value) {
			obj[i].checked=true;
			return;
		}
	}
}
function setCheck(obj,check) {
	if (check) obj.checked=true;
}
function showTipAbove(e,text) {
	if (e==null) e=event;
	var t=document.getElementById('tip');
	if (!t) return;
	t.innerHTML=text.replace(/\n/g,'<br />');
	t.style.display="block";
	t.style.top=(e.clientY-t.offsetHeight-5)+'px';
	t.style.left=e.clientX+'px';
}

function showTip(e,text) {
	if (e==null) e=event;
	var t=document.getElementById('tip');
	if (!t) return;
	t.innerHTML=text.replace(/\n/g,'<br />');
	t.style.display="block";
	t.style.top=(e.clientY+10)+'px';
	t.style.left=e.clientX+'px';
}

function hideTip() {
	var t=document.getElementById('tip');
	if (!t) return;
	t.style.display="none";
}

function addSelect(sel,vl,txt){
	if (vl=='') return false;
	var newEl=document.createElement('option');
	newEl.text=(!txt?vl:txt);
	newEl.value=vl;
	try {
		sel.add(newEl,null);
	} catch(ex) {
		sel.add(newEl);
	}
	return true;
}
function setSelect(obj,value) {
	for (var i=0;i<obj.options.length;i++) {
		if (obj.options[i].value==value) {
			obj.selectedIndex=i;
			return;
		}
	}
}

function compileElements(list){
	var ret="";
	var o;
	for (var i = 0; i < list.length; i++) {
		o=document.getElementById(list[i]);
		if (o)
			ret+="&"+o.name+"="+escape(o.value);
	}
	return ret;
}

function getAllFormElements( parent_node ) {
	if( parent_node == undefined ) {
		parent_node = document;
	}
	var ret="";
	formInputs = parent_node.getElementsByTagName("input");
	for (var i = 0; i < formInputs.length; i++) {
		ret+="&"+formInputs.item(i).name+"="+escape(formInputs.item(i).value);
	}
	formInputs = parent_node.getElementsByTagName("textarea");
	for (var i = 0; i < formInputs.length; i++) {
		ret+="&"+formInputs.item(i).name+"="+escape(formInputs.item(i).value);
	}
	formInputs = parent_node.getElementsByTagName("select");
	for (var i = 0; i < formInputs.length; i++) {
		ret+="&"+formInputs.item(i).name+"="+escape(formInputs.item(i).options[formInputs.item(i).selectedIndex].value);
	}
	return ret;
}
