function MM_findObj(n, d, f) { //v4.01
  var p,i,x;  
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; 
	n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++) {x=d.forms[i][n]; if (x&&f&&(!x.form||x.form.name!=f)) x=false;}
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x = d.getElementById(n);
  if (x&&f&&(!x.form||x.form.name!=f)) x=false;
  if(!x && d.getElementsByName) x=d.getElementsByName(n);
  if (x&&x.length&&f) {
  	y = x[0];
  	for (i=1; (y.form.name!=f)&&i<x.length; i++) y=x[i];
	x=y;
  }
  return x;
}

function linkedrecord(num) {
	n=MM_findObj('navbar'); 
	r=MM_findObj('recnum',n); 
	r.value=num; 
	MM_findObj('Goto',n).click();
}

function menu(file) {
	f = MM_findObj('log');
	f.action=file; 
	f.submit(); 
	return true;
}

function goMain(t) {
	t.target = (window.opener.name ? window.opener.name : "MainWindow");
	window.opener.focus();
}

function checkAll(c,t) {
	checks = MM_findObj(c);
	if (!checks.length) checks.checked=t.checked;
	else for (i=0; i<checks.length; i++) checks[i].checked = t.checked;
}

function setorder(ord) {
	ordobj = MM_findObj("order");
	ordobj.value = ord;
	MM_findObj('Submit').click();
}

reportwin = false;

function openreport(report) {
	if (!reportwin || reportwin.closed) {
		reportwin = window.open (report, "report","width=1000,height=800,resizable=yes,scrollbars=yes,status=yes");
	}
	else {
		if (reportwin.location.pathname!="/" + report) reportwin.location = report;
		reportwin.focus();
	}
}

function settarget(b,t,a) {
	if (t) b.form.target = t;
	if (a) b.form.action = a;
	if (t!="_self") {
		if (t=="Test"||t=="sendlink") viewwin = window.open("",t,"dependent=yes,location=no,menubar=no,titlebar=no,toolbar=no,height=720,width=700,scrollbars=yes,status=yes,resizable=yes");
		else if (t=="email") viewwin = window.open("",t,"dependent=yes,location=no,menubar=no,titlebar=no,toolbar=no,height=720,width=700,scrollbars=yes,status=yes,resizable=yes");
		else viewwin = window.open("",t,"");
	}
	return true;
}

function alerterr(e) {
	alert(e);
	return false;
}

function notifyletters(t,f) {
	var m = /Notify|TestNotify/;
	var notify = /Notify/;
	var testnotify = /TestNotify/;
	if (!t||!t.name||!m.test(t.name)) return false;

	else if (!(n=numchecked('recs[]'))) return alerterr('Please select at least one record'); 

	else if (testnotify.test(t.name)) return settarget(t, "Test", f);

	else if (notify.test(t.name) && confirm('MERGE and SEND audition results to '+n+' checked students/parents?')) return settarget(t, "_self", f);

	else return false;
}

function domerge(t,n,f) {
	if (mailmerge(m=MM_findObj(n),f)) {
		if (n=="Mail") {
			t.value='Merging and Sending...'; 
			t.disabled=true;
		} 
		m.disabled=false; 
		t.form.submit();
		if (n=="Test") m.disabled=true;
	}
}

function mailmerge(t,f) {
	var m = /View|Test|Mail/;
	if (!t||!t.name) return false;
	if (m.test(t.name)) {
		action = (t.name=="View" ? "view":"merge");

		if (MM_findObj('filename').selectedIndex==0) return alerterr('Please select a template to '+action); 
		
		if (t.name=="View") return settarget(t, "Test", f);
		
		else if (!(n=numchecked('recs[]'))) return alerterr('Please select at least one record'); 
		
		else if (t.name=="Test") return settarget(t, "Test", f);

		else if (confirm('MERGE and SEND selected letter to '+n+' checked students/parents?')) return settarget(t, "_self", f);

		else return false;
	}
	else if (t.name=="Quickmail") {
		if (!numchecked('recs[]')) return alerterr('Please select at least one record'); 

		else return settarget(t, "email", f);
	}
	else return false;
}

function reportlogout(t,f) {
	if ((w=window.opener) && !w.closed) {
		lbutton = MM_findObj("logout",w);
		lbutton.click();
		window.close();
	} 
	
	else settarget(t,"_self",f);

	return true;
}

function numchecked(r) {
	obj = MM_findObj(r);
	if (!obj) return 0;
	if (!obj.length) {
		return (obj.checked?1:0);
	}
	ans = 0;
	for (i=0;i<obj.length;i++) if (obj[i].checked) {ans++;}
	return ans; 
}

function error(field, message) {
  alert(message);
  MM_findObj(field).focus();
  return false;
}

function setother(c, d) {
  c.checked ? show(d) : hide(d);
}

function show(d) {
  MM_findObj(d).style.display = "inline";
}
function hide(d) {
  MM_findObj(d).style.display = "none";
}
function toggle(d) {
  if (MM_findObj(d).style.display=="none")
  	show(d);
  else
  	hide(d);
}

function nextfield(f,e) {
  if (e.keyCode) code = e.keyCode;
  else code = e.charCode;
  c = String.fromCharCode(code);
  r = /^[0-9\x60-\x69]$/;
  if (!r.test(c)) return false;
  form = f.form;
  if (f.value.length==f.maxLength) {
	  for (i=0; i<form.elements.length; i++) if (form.elements[i]==f) break;
	  form.elements[i+1 % form.elements.length].focus();
	  form.elements[i+1 % form.elements.length].select();
  }
}

function checknum(e) {
  if (e.keyCode) code = e.keyCode;
  else code = e.charCode;
  if (e.altKey||e.ctrlKey||e.metaKey) return true;
  c = String.fromCharCode(code);
  var n = /^[0-9\x60-\x69\x01-\x1F]$/;
  if (!n.test(c)) {
  	alert("Numbers only in this field, keyCode="+e.keyCode+", charCode="+e.charCode);
	return false;
  }
  else return true;
}

function uncheck(c) {
  c.checked=false;
}

function setradio(r,v) {
  for (i=0; i<r.length; i++) {
  	if (r[i].value == v) r[i].checked = true;
	else r[i].checked = false;
  }
}

function dump_html(x) {
  msg="";
  for (prop in x) {
  	document.write(prop + "=" + eval("x."+prop) + "<BR>\n");
  }
}
function dump_alert(x) {
  msg="";
  for (prop in x) {
  	msg += prop + "=" + eval("x."+prop) + "\n";
  }
  alert(msg);
}


function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function nl2br(text){
	text = escape(text);
	re_nlchar = false;
	if(text.indexOf('%0D%0A') > -1){
		re_nlchar = /%0D%0A/g ;
	}else if(text.indexOf('%0A') > -1){
		re_nlchar = /%0A/g ;
	}else if(text.indexOf('%0D') > -1){
		re_nlchar = /%0D/g ;
	}
	return (re_nlchar ? unescape( text.replace(re_nlchar,"<br>\n")  ) : unescape(text));
}

function makeparamstr (a) {
	var ps = "";
	if (a) for (name in a) {
		val = encodeURIcomponent(a[name]);
		ps += name + "=" + val + "&";
	}
	return ps.slice(0,-1);	
}

function isEnter(e)
{
// Catch IE’s window.event if the 
// ‘e’ variable is null.
// FireFox and others populate the
// e variable automagically.
	if (!e) e = window.event;
	
// Catch the keyCode into a variable. 
// IE = keyCode, DOM = which.
	var code = (e.keyCode) ? e.keyCode : e.which;
	
// If code = 13 (enter) or 3 (return),
// cancel it out; else keep going and
// process the key.
	if (code == 13 || code == 3) return true;
	else return false;
}
