// utilities.js

var helpPage = {
	"Adv_Mode": 2,
	"Select_Crit_Pg":3,
	"Choose_Yr_Pg":4,
	"Format_Tbl_Pg":5,
	"Results_Pg_Adv":6,
	"Sig_Test_Adv":7,
	"Regress_Adv":8,
	"Welcome":11,
	"QS_Mode":12,
	"Select_Crit_Pg_QS":13,
	"Results_Pg_QS":14,
	"Sig_Test":15
}

function getHelp(name){
	var file = (currMode == 1) ? "/nationsreportcard/nde/help/qs/index.asp" : "/nationsreportcard/nde/help/adv/index.asp"
	RH_ShowHelp("0", file, HH_HELP_CONTEXT, helpPage[name])
}

var accHelpPage = {
	"subject" : 1,
	"jurisdiction" : 2,
	"variable" : 3,
	"year" : 4,
	"type" : 5,
	"format" : 6,
	"collapse": 7,
	"order": 10,
	"preview": 8,
	"remove": 11,
	"results": 9,
	"graph": 12,
	"test": 13,
	"read": 14
}

function getAccHelp(name){
	var file = "/nationsreportcard/nde/help/508/index.asp"
	RH_ShowHelp("0", file, HH_HELP_CONTEXT, accHelpPage[name])
}
function itemsAreDiff(inItems, outItems){
	var ary1 = inItems.split(",").sort()
	var ary2 = outItems.split(",").sort()
	if(ary1.toString() != ary2.toString())
		return true
	return false
}

var loadingWin

function getLoadingWin(){
	//functionality changed
//	loadingWin = window.open("loadingresults.asp?mode=" + currMode, "loadwin", "width=350,height=300,scrollbars=yes,resizable=yes,screenX=0,screenY=0,top=0,left=0,top=0,left=0");
}
function closemsg(){
	document.LoadingImage.src = "images/transparent.gif"
//	loadingWin = window.open("", "loadwin", "width=100,height=100,scrollbars=yes,resizable=yes,screenX=0,screenY=0,top=0,left=0,top=0,left=0");
//	if(loadingWin && !loadingWin.closed)
//	loadingWin.close()
}

function changeObjectDisplay(objectId, newDisplay) {
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.display = newDisplay;
	return true;
    } else {
	return false;
    }
}

function setmsg(msg) {
  window.status=msg
  return true
}

function hasChildren(obj){
	for(var elem in obj){
		return true
	}
	return false
}

count = function(obj){
	var ctr=0
	for(var elem in obj){
		ctr++
	}
	return ctr
}

toCSString = function(obj){
	var str = ""
	for(var item in obj){
		str += item + ","
	}
	str = str.substring(0,str.length-1)
	return str
}

juris_toCSString = function(obj){
	var str = ""
	var llist = JUDOrder
	var judList = tab1.jurisdictions()
	for(var iii=0; iii<llist.length; iii++){
		var jurisdictions = jGroupingTable[llist[iii]]
		for(var jud in jurisdictions){
			var jurisdiction = jurisdictions[jud]
			if(obj[jurisdiction]){
				str += jurisdiction + ","
			}
		}
	}
	str = str.substring(0,str.length-1)
	return str
}

function toRIString(order){
	var str = ""
	for(var i=0; i<order.length; i++){
		if (order[i]!="Year"&&order[i]!="Jurisdictions") 
			str += order[i] + ","
	}
	return str.substring(0, str.length-1)
}

fromCSString = function(CSString){
	var objArray = CSString.split(",")
	var result = Object()
	for(var item in objArray){
		if(!result[objArray[item]]) result[objArray[item]] = true
	}
	return result
}

outputHTML = function(objName, HTMLString){
	if(document.all){
		var obj = getObject(objName)
		obj.innerHTML = HTMLString
	} else if(navigator.appName == "Netscape"){
		var obj = document.getElementById(objName)
		if(document.getElementById && !obj)
			obj = document.getElementById(objName)
		//if(!obj) alert("no object\n" + objName)
		if(obj.document && !document.getElementById){
			obj.document.open()
			obj.document.write(HTMLString)
			obj.document.close()
		}else{
			obj.innerHTML = HTMLString
		}
	} //else if(document.getElementById)
}

trim = function(str){
	var i=0,p = str.length-1;
	while(str.charAt(i)==' ') i++;
	while(str.charAt(p)==' ') p--;
	if(i>p) return '';
	return str.substring(i,p+1);
}//trim

rCopyItems = function(items){
	var result = {}
	for(var item in items){
		if(hasChildren(result[item]))
			result[item] = rCopyItems(result[item])
		else
			result[item] = items[item]
	}
	return result
}

function getSubjectName(subj){
	switch(subj){
	case "CIV": return 'Civics'; case "GEO": return 'Geography'; case "HIS": return 'U.S. History'; case "MAT": return 'Mathematics';
	case "RED": return 'Reading'; case "SCI": return 'Science'; case "WRI": return 'Writing';
	case "MA2": return 'Mathematics';
	case "LTR": return 'Long-Term Trend Reading'; case "LTM": return 'Long-Term Trend Mathematics';
	}
	return '!'
}

function showPopup(wintitle, title, asppage)
{
	var w = window.open("", wintitle, "resizable, status, scrollbars, toolbar=yes, width=640, height=480")
	w.moveTo(0, 0)
	var doc = w.document
	var f0 = document.forms.dataForm
	

	doc.writeln("<html><title>NAEP Data Explorer - " + title + "</title>")
	doc.writeln("<body onload = 'document.forms[0].submit()'>")
	doc.writeln("<form action = " + asppage + " id=dataform name=dataform method=post>")
	var len = f0.elements.length
	for (var i = 0; i < len; ++i)  {
		var e = f0.elements[i]
		doc.writeln("<input type='hidden' name='" + e.name + "' value='" + e.value + "'>");
	}

	doc.writeln("</form>")
	doc.writeln("<div align=center><blink>Loading ....</blink></div>");
	doc.writeln("</body></html>")
	doc.close();
}


//===========debug functions=================
var newwin
function writeToWindow(str){
	if(!newwin)
	newwin = window.open("", "popup","width=350,height=350,scrollbars")
//	newwin.document.open()
	newwin.document.write(str + "<br>")
//	newwin.document.close()
}
function writeMatrix(){//for page1
	writeToWindow(tab1.dTable.dependencies.toDebugString())
}
function getCYears(){//for page2
	alert(toCSString(tab2.comparisonYears))
}
function getFrmVrs(obj, ret){
	var str = ""
	var elements = document.forms.dataForm.elements
	for(var i=0; i < elements.length; ++i){
		str += elements[i].name + " = " + elements[i].value + "<br>"
	}
	str += "<hr>"
	for(var thing in obj){
		if(typeof obj[thing]== "function") continue
		var val = (obj[thing] == "[object Object]") ? toCSString(obj[thing]) : obj[thing]
		str += thing + " = " + val + " <br>"
	}
	if(ret)
		return str
	else
		writeToWindow(str)
}

function debug(obj){
	var str = ""
	for(var thing in obj){
		if(typeof obj[thing]== "function") continue
		var val = (obj[thing] == "[object Object]") ? toCSString(obj[thing]) : obj[thing]
		str += thing + " = " + val + " <br>"
	}
	return str
}
function PrintMatrix(X) { // for page3 matrix
var str = ""
for (var i=0; i<X.length; i++) {
 for (var j=0; j<X[i].length; j++) {
  str += X[i][j] + '\n'
 }
 str += "<br>\n"
}
writeToWindow(str)
}

var st, st1
function starttime(){
	st = new Date()
	st1 = st.getTime()
}
function stoptime(){
	var sttr = new Date()
	var st2 = sttr.getTime()
	writeToWindow(st2-st1 +"<BR>")
}

// LTT functions

function getAge(grade) {
	alert("get rid of a call on this page to getAge()")
	var age
	switch(grade){
		case "4":
			age = "9"
		break
		case "8":
			age = "13"
		break
		case "12":
			age = "17"
		break
	}
	return age
}
