var request1; // = createRequest();
//var request2 = createRequest();

/* Purpose: get all the data from the form fields and construct the 
 * URL that can be used to fetch the standings report. 
 * Place this URL into an HREF on the page if an element called "standingsUrl"
 * is on the page. 
 */
function setupStandingsUrl() {
	var baseScript = "stats-embedded.asp?";
	sDebugOut(baseScript);

	// first get the activity name
	//var hidElementName = window.document.getElementById("measure_form_element_name");	
	//sDebugOut("Getting hidden element: " + hidElementName.value);
	//var activitySelect = window.document.getElementById(hidElementName.value);
	//sDebugOut("selected index: " + activitySelect.selectedIndex);
	//var activityOption = activitySelect.options[activitySelect.selectedIndex];
	//var aName = activityOption.value;
	//sDebugOut("activity name: " + aName);
	
	// Need the activity ID
	var elem = window.document.getElementById("hidActivityId");
	var activityId = elem.value;
	sDebugOut("activityId = " & activityId );	

	// next get activity measure index : the "driving measure"
	var hidElementMeasureIndex = window.document.getElementById("hidDrivingMeasureIndex");
	var measureIndex = hidElementMeasureIndex.value;
	sDebugOut(measureIndex);

	// get measure index list and measure value list
	var measure_index_lst = window.document.getElementById("hidMeasureIndexList");	
	var measure_value_lst = window.document.getElementById("hidMeasureValueList");	
	sDebugOut(measure_index_lst.value);
	sDebugOut(measure_value_lst.value);
	
	// get gender
	var genderSelect = window.document.getElementById("gender");
	var genderOption = genderSelect.options[genderSelect.selectedIndex];
	var gender = genderOption.value;
	sDebugOut(gender);
	
	// get age_group
	var agegroupSelect = window.document.getElementById("age_group");
	var agegroupOption = agegroupSelect.options[agegroupSelect.selectedIndex];
	var agegroup = agegroupOption.value;

	// get rx
	//var rxSelect = window.document.getElementById("rx");
	//var rxOption = rxSelect.options[rxSelect.selectedIndex];
	//var rx = rxOption.value;

	// get Min-or-Max Sort order
	var mmxElem = window.document.getElementById("mmx");
	//var rxOption = rxSelect.options[rxSelect.selectedIndex];
	var mmx = mmxElem.value;

	var qs = "ai=" + activityId + 
	 "&mi=" + measureIndex +
	 "&mil=" + measure_index_lst.value +  // TODO: HTML encoding?
	 "&mvl=" + measure_value_lst.value + 
	 "&gender=" + gender + "&ag=" + agegroup + 
	 "&mmx=" + mmx + 
	 //"&rx=" + rx;
	 "";
	sDebugOut(baseScript + qs);

	var theServerRoot = window.document.getElementById("server_root");
	var theUrlRoot = window.document.getElementById("url_root");
		
	// get display element
	var standingsLink = window.document.getElementById("standingsUrl");
	standingsLink.href = theServerRoot.value + theUrlRoot.value + '/' + baseScript + qs;
	sDebugOut(baseScript);
	sDebugOut(standingsLink.href);
	//alert(standingsLink.href);
	
	// get iframe
	//var frm = window.document.getElementById("iFrameStandings");
	//frm.src = baseScript + qs;
	// TODO: This is broken; try using the TABLE instead??!!
}

function getStandingsUrlFromPage() {
	return window.document.getElementById("standingsUrl").href;
}

function getStandings(standingsUrl) {
	request1 = createRequest();
	var url;
	if (standingsUrl) {
		url = standingsUrl;
	} else {
		url = getStandingsUrlFromPage();
	}
	sDebugOut(url);
	request1.open("GET", url, true);
	request1.onreadystatechange = updatePage;
	request1.send(null);

}
/*
 * Purpose: Get the URL to fetch the given report from "standingsUrl"
 * and use it to construct a bit of script that will fetch it.
 * Show this script to the user in the given elemId, which should be a TEXTAREA.
 *REMOVED THIS BIT OF SCRIPT TO MAKE FIREFOX COPY THE SAME/




/*
 * Purpose: Get the URL to fetch the given report from "standingsUrl"
 * and use it to construct an IFRAME tag with the right source. 
 * Show this script to the user in the given elemId, which should be a TEXTAREA.
 */
function showStandingsScript(elemId) {
	
	dumpForm(document.forms[0]);
	var elem;
	elem = window.document.getElementById(elemId);
	if (!elem) {
		sDebugOut("Could not get element to show script: " + elemId);
		return;
	}
	var instruc;
	instruc = window.document.getElementById("ownPageInstructions");
	var standingsUrl = window.document.getElementById("standingsUrl");
		
	sDebugOut("className: " + elem.className + " , display:" + elem.style.display);
	if (elem.style.display == "block") {
		elem.style.display = "none";
		instruc.style.display = "none";
		standingsUrl.style.display = "none";
	} else {
		elem.style.display = "block";
		instruc.style.display = "block";
		standingsUrl.style.display = "block";
		var theScript;
		theScript = '<iframe width=100% HEIGHT=300 SCROLLING=auto src="' + getStandingsUrlFromPage() + '"></iframe>'	
		
		if (elem.innerText) { 
			elem.innerText = theScript; 
		} else {
			elem.value = theScript;
		}
		return;

	}
}

/*
 * Purpose: Interpret the XML and use DHTML to update the table on the page
 */ 
function updatePage() {
	if (request1.readyState == 4) {
		if (request1.status == 200) {
			var response = request1.responseText;
			// TODO: 
			var xmlDoc = request1.responseXML;
			//alert("got resp!");
			
			// this part works
			/*
			var nodesetResults = xmlDoc.getElementsByTagName("result");
			var nodeCurrentResult = nodesetResults[0];
			alert(nodeCurrentResult.firstChild.attributes.length);
			alert(nodeCurrentResult.firstChild.attributes[0].nodeValue);
*/
			//var nodeCurrentResult = nodesetResults.firstChild;
			//alert(nodeCurrentResult);
			//var measure = nodeCurrentResult.firstChild;
			//alert(measure);
			var t = window.document.getElementById("com.logsitall.standings");
			//var tBody = window.document.getElementById("com.logsitall.standings.tbody");
			drawTable("com.logsitall.standings", xmlDoc);
			// add a row to the table
			//alert(t.tBodies[0]);
			//t.tBodies[0].appendChild(document.createElement('tr'));
			// set up the table cell
			//var cel = window.document.createElement('td');
			//cel.appendChild(document.createTextNode('Tbody cell text'));
			// append the cell itself to the row in the table
			//theTable.tBodies[0].rows[0].appendChild(cel);
			
		}
	}
} // updatePage

// Draw table from xDoc document tree data
function drawTable(idStandingsTable, xDoc) {
    var tr, td, i, j, oneRecord;
    var t;
    /*
    var allTables = window.document.getElementsByTagName("div");
    for (i = 0; i < allTables.length; i++) {
		alert(allTables[i].id);
    }
    return;
    */
    // TODO: How to get a reference to table by id? nested in DIV and this don't work
    t = window.document.getElementById("com.logsitall.standings.table");
    
    //alert(t);
    //t = window.document.createElement("table");
     //CLASS='datatable' BORDER=1 id="firstDatatable" name="firstDatatableName">
    t.setAttribute("class", "datatable")
    t.setAttribute("border", "5")
    
    var tblBody = window.document.createElement("tbody");
    sDebugOut("loaded TBODY " + tblBody);   
	
    /* 
     * Get the actual results
     */
    var nodesetResults = xDoc.getElementsByTagName("result");
    sDebugOut('nodesetResults.length = ' + nodesetResults.length);
    var nodeCurrentResult;
    var cellContents;
    var measures;
    var nodeCurrentMeasure;
    var measureAttributes;
    var txt;
    
    // TODO: Why does this run backward?
    //for (i = 0; i < nodesetResults.length; i++) {
    for (var i = nodesetResults.length-1; i >= 0; i--) {
		sDebugOut("Processing result " + i);
		nodeCurrentResult = nodesetResults[i];
		sDebugOut('Got current node ' + nodeCurrentResult);
		sDebugOut('insert row at TBODY position ' + tblBody.rows.length);
		tr = t.insertRow(tblBody.rows.length);
		
		//alert(nodeCurrentResult.firstChild.attributes.length);
		//alert(nodeCurrentResult.firstChild.attributes[0].nodeValue);
		//txt = window.document.createTextNode(oneRecord.getElementsByTagName("year")[0].firstChild.nodeValue);
		sDebugOut('get childNodes: they will be child nodes of the current RESULT node');
		measures = nodeCurrentResult.childNodes;
		
		sDebugOut("How many measures in THIS result[" + i + "]? " + measures.length);
		
		for(measureIdx = 0; measureIdx < measures.length; measureIdx++) {
		
		//measureAttributes = 
			nodeCurrentMeasure = measures[measureIdx]; //nodeCurrentResult.firstChild;
			sDebugOut("node type: " + nodeCurrentMeasure.nodeType);			
			//sDebugOut('first node: ' + nodeCurrentMeasure.firstChild.nodeValue);
			sDebugOut("HERE");
			//alert(nodeCurrentMeasure);
			//sDebugOut("How many attributes in current node?");
			//sDebugOut('nodeCurrentMeasure: ' + nodeCurrentMeasure + ' has ' + 
			//	nodeCurrentMeasure.attributes.length + ' attributes.' );
			sDebugOut( 'measure-value ' + nodeCurrentMeasure.getAttribute('measure-value') ); 
			sDebugOut("THERE");
			//for (j = 0; j < nodeCurrentMeasure.attributes.length; j++) {
				//attrib = nodeCurrentMeasure.attributes[0];
				cellContents = "";
				//cellContents = attrib.nodeName;
	//			cellContents += nodeCurrentMeasure.firstChild.nodeValue; //.firstChild.getAttribute(attrib.nodeName);
	//TODO: show fields in a header row
				//cellContents += nodeCurrentMeasure.getAttribute('measure-name'); 
				cellContents += nodeCurrentMeasure.getAttribute('measure-value'); 
				//cellContents = nodeCurrentMeasure.data;
				//cellContents = nodeCurrentMeasure.firstChild.data;
				//nodeCurrentResult.firstChild.getAttribute(at
				txt = window.document.createTextNode(cellContents);	
				sDebugOut("Created text node:" + txt);
				td = tr.insertCell(tr.cells.length);
				td.appendChild(txt);
			//}
		}
	}
	
	

	// set up table header for measure names	
	var nodesetMeasureNames = xDoc.getElementsByTagName("measure-name");
	var currentMeasureName;
	tr = t.insertRow(tblBody.rows.length);
    for (var i = 0; i < nodesetMeasureNames.length; i++) {
		currentMeasureName = nodesetMeasureNames[i].getAttribute('friendly-name');
		td = tr.insertCell(tr.cells.length);
		td.appendChild(
			window.document.createTextNode(currentMeasureName)
		);
    }

	var body = window.document.getElementsByTagName("body")[0];
	body.appendChild(t);
	
					//txt = window.document.createTextNode("yoo hoo");		
					//sDebugOut('created text node: ' + txt);
					//body.appendChild(txt);

    return;        
    
//    tblBody = 
    alert(idTbody);
    alert(tblBody);
    // node tree
    var data = xDoc.getElementsByTagName("standings")[0];
    // for td class attributes
    var classes = ["ctr","","","","ctr"];
    for (i = 0; i < data.childNodes.length; i++) {
        // use only 1st level element nodes
        if (data.childNodes[i].nodeType == 1) {
            // one bowl record
            oneRecord = data.childNodes[i];
            tr = tblBody.insertRow(tblBody.rows.length);
            td = tr.insertCell(tr.cells.length);
            td.setAttribute("class",classes[tr.cells.length-1]);
            td.innerHTML = oneRecord.getElementsByTagName("measure")[0].firstChild.nodeValue;
            td = tr.insertCell(tr.cells.length);
            td.setAttribute("class",classes[tr.cells.length-1]);
            /*
            td.innerHTML = oneRecord.getElementsByTagName("year")[0].firstChild.nodeValue;
            td = tr.insertCell(tr.cells.length);
            td.setAttribute("class",classes[tr.cells.length-1]);
            td.innerHTML = oneRecord.getElementsByTagName("winner")[0].firstChild.nodeValue;
            td = tr.insertCell(tr.cells.length);
            td.setAttribute("class",classes[tr.cells.length-1]);
            td.innerHTML = oneRecord.getElementsByTagName("loser")[0].firstChild.nodeValue;
            td = tr.insertCell(tr.cells.length);
            td.setAttribute("class",classes[tr.cells.length-1]);
            td.innerHTML = oneRecord.getElementsByTagName("winscore")[0].firstChild.nodeValue + " - " + oneRecord.getElementsByTagName("losscore")[0].firstChild.nodeValue;
            */
        }
    }
}
