//window utilities

function getrnd(n){return Math.floor(Math.random()*n)}

function dotest(value)
{
 var s=(value.charAt(0)==";"?value:mathof(value))
 return alert(s+" = "+eval(s))
}
function debugprint(swhat)
{
 var s=swhat+"\n"
 for(var i=1; i<arguments.length; i++)s+=arguments[i]+"\n"
 alert (s)
}

function dogoto(swhere){document.location="#end";document.location=swhere}

function waitforload(sexec,wnd,loc)
{
 if(loc!="-")
 {
  if(loc.length)wnd.document.location=loc
  wndloading=wnd
 }else{
  var s=wndloading.status
  if(wndloading.status==null || s.length==0) return eval(sexec)
 }
 return setTimeout("waitforload('"+sexec+"',0,'-')",1000)
}

function selectof(c){return c[c.selectedIndex].value}
function getselectof(swhat){return selectof(eval("usr."+swhat))}
function textof(c){return c[c.selectedIndex].text}
function gettextof(swhat){return textof(eval("usr."+swhat))}

function getvalue(swhat){return eval("usr."+swhat+".value")}
function findvalue(sform,sname)
{
 var form=eval(sform)
 var i=findname(form,sname)
 return(i<0?"":form.elements[i].value)
}
function findname(form,sname)
{
 for(var i=0;i<form.elements.length;i++)
 {
  if(form.elements[i].name==sname)return i
 }
 return -1
}

function finditem(control,sitem,idef,byvalue,doset){
 //looks in a select control for sitem
 for(var i=0;i<control.length;i++)
 {
	var s=(byvalue?control.options[i].value:control.options[i].text)  
	if (s.indexOf(sitem)==0){
		if(doset)control.selectedIndex=i
		return i
	}
 }
 return idef
}

//math,string utilities
function roundoff(x,ndec)
{
 //round x to ndec decimal places (+) fixed; (-) floating
 if(x==0)return 0
 if(ndec==0)return Math.round(x)
 var neg=(x<0?"-":"")
 var xs=Math.abs(x)+""
 var i=(xs.indexOf("E") & xs.indexOf("e"))
 if(ndec<0 && i<0)
 {
  var xs=roundoff(Math.abs(x)*1e-100,-ndec)
  var i=(xs.indexOf("E") & xs.indexOf("e"))
  var e=(eval(xs.substring(i+1,xs.length))+100)
  return neg+xs.substring(0,i)+(e!=0?"E"+e:"")
 }
 if (i>0)
 {
  var s=roundoff(xs.substring(0,i),Math.abs(ndec)-1)+"E"+xs.substring(i+1,xs.length)
  return neg+s 
 }
 i=xs.indexOf(".")
 if (i<0) 
 {
  xs=xs+"."
  i=xs.indexOf(".")
 }
 xs=xs+"000000000"
 var s="."+xs.substring(i+1+ndec,xs.length)
 xs=xs.substring(0,i)+xs.substring(i+1,i+1+ndec)
 var add1=(xs.charAt(0)=="0")
 if(add1)xs="1"+xs
 xs=eval(xs)+Math.round(eval(s))+""
 if(add1)xs=xs.substring(1,xs.length)
 xs=xs.substring(0,xs.length-ndec)+"."+xs.substring(xs.length-ndec,xs.length)
 return neg+xs
}

function strsub(ssub,ch1,ch2)
{
 if (ch2!=""){if (ch2.indexOf(ch1)>=0) return ssub}
 var s=ssub
 var i=s.indexOf(ch1)
 while (i>=0)
 {
  s=s.substring(0,i)+ch2+s.substring(i+ch1.length,s.length)
  i=s.indexOf(ch1)
 }
 return s
}


function mathclean(sclean){return clean(sclean," ","")}
function strclean(sclean){return clean(sclean,","," ")}

function clean(sclean,ch1,ch2) 
{
 //tabs and commas to space and leading spaces removed
 var s=sclean
 s=strsub(s,"[","")
 s=strsub(s,"]","")
 s=strsub(s,"{","(")
 s=strsub(s,"}",")")
 s=strsub(s,"\n"," ")
 s=strsub(s,"\r"," ")
 s=strsub(s,"\f"," ")
 s=strsub(s,"\t"," ")
 s=strsub(s,"\x22","") //double quote
 s=strsub(s,"'","")
 s=strsub(s,"==","=")
 s=strsub(s,ch1,ch2)
 s=strsub(s,"  "," ")
 var i=0
 while (s.charAt(i)==" ")i++
 if(i>0)s=s.substring(i,s.length)
 var i=s.lastIndexOf(" ")
 if(i>=0 && i==s.length-1)s=s.substring(0,i)
 return s
}

function tableselect(slabel,sname,n) 
{
 var s=slabel+" <select name=s"+sname+" onchange='doselect(name)'>"
 for(var i=3; i<arguments.length-1; i+=2)
 {
  var sv=arguments[i]
  var st=arguments[i+1]
  if(st.length==0)st=sv
  s+="<option "+((i-3)==2*n?"selected":"")+" value=\""+sv+"\">"+st
 }
return s+"</select>"
}
function tablecheck(slabel,sname,svalue,ischecked,ch)
{
 var s=(ch=="_"?"":"<td nowrap>")+"<input type=checkbox name=o"+ch+sname+" value='"+svalue+"' "+(ischecked?"checked":"")+"  onChange=docheck(name)>"+slabel
 return(s)
}
function tableinput(slabel,sname,svalue,isize,dotd)
{
 return (dotd?"<td nowrap>":" ")+slabel+(dotd?"<td>":" ")+"<input type=text name=t"+sname+" value='"+svalue+"' size="+isize+">"
}
function tablebtn(sname,svalue,isref)
{
 var s="doBtn('"+sname+"')"
 if(isref) return "&nbsp;&nbsp;<a href=javascript:void("+s+")>"+svalue+"</a>&nbsp;&nbsp;"
 return "<input type=button value='"+svalue+"' onclick="+s+">"
}

function sof(n,ndec)
{
  var s="          "+n.toString()
  return s.substring(s.length-(s.length<=ndec+10?ndec:s.length-10),s.length)
}


