function isNumeric(txt,validchars) {
	var chr,chars=(!!validchars)?validchars:"0123456789.",isnum=true;
	if(txt.length==0)return false;
	for(var i=txt.length-1;(i>=0)&&(isnum==true);i--){
		chr=txt.charAt(i); 
		if(chars.indexOf(chr)==-1)isnum=false;
	}
	return isnum;
}
// locate page element in a manner compatible to all browsers
function getPageElement(name,win) {
	var elm,doc=(!win)?self.document:win.document;
	if(doc.getElementById)elm=doc.getElementById(name);
	else if(doc.all) elm=doc.all[name];
	else if (doc.layers){
		for (var i=0,imax=doc.forms[0].length;i<imax;i++)
			if (doc.forms[0].elements[i].name==name)
				{elm=doc.forms[0].elements[i];break;}
	}
	return elm;
}
function getPageValue(name,win) {
	var elm=getPageElement(name,win);
	if(!elm)return "";
	return (!!elm.value)?elm.value:"";
}
function setPageValue(name,val,win) {
	var elm=getPageElement(name,win);
	if(!elm)return null;
	elm.value=val;
}
function getPageNameFromURL(url, sep) {
	if(!sep)sep="/";
	var pos=url.lastIndexOf(sep)
	return (pos==-1)?url:url.substring(pos+1,url.length);
}
function toggleControl(id,type,state){
	var ctl=getPageElement(id);
	if(!ctl)return false;
	var ctype=(!!ctl.type)?ctl.type:type;
	var cstate=(arguments.length==3&&!state)?state:-1;
	if(!ctype)ctype="div";
	switch(ctype){
		case "div":ctl.style.display=(cstate==-1)?((ctl.style.display=="none")?"block":"none"):((cstate==1)?"block":"none");
		case "img":ctl.style.visibility=(cstate==-1)?((ctl.style.visibility=="hidden")?"visible":"hidden"):((cstate==1)?"visible":"hidden");
		case "radio":ctl.checked=(cstate==-1)?((ctl.checked==false)?true:false):((cstate==1)?true:false);
	}
}
function togglePopupDiv(state,div,shim) {
	if(!div||!shim)return false;
	if(state){
		div.style.display="block";
		shim.style.width=div.offsetWidth;
		shim.style.height=div.offsetHeight;
		shim.style.top=div.style.top;
		shim.style.left=div.style.left;
		shim.style.zIndex=div.style.zIndex-1;
		shim.style.display="block";
	}
	else{
		div.style.display="none";
		shim.style.display="none";
	}
}