var grad_currentMember;
var grad_maxRowIndex=0;

function grad_Member(name, id, photo_loc,current_grade)
{
	this.name = name;
	this.id = id;
	this.photo_loc = photo_loc;
	this.current_grade = current_grade;
	
	this.used = false;
}

function grad_setUsedMember(id, used)
{
	for(var i = 0; i < grad_membersArray.length;++i)
	{
		if(grad_membersArray[i].id == id)
		{
			grad_membersArray[i].used = used;
			break;
		}
	}
	
}

function grad_populateMembers(sel, value)
{
	var j = 0;
	sel.options.length = 0;
	
	for(var i = 0; i < grad_membersArray.length;++i)
	{
		//don't allow used members in drop down list
		if(grad_membersArray[i].id == 1  || !grad_membersArray[i].used || grad_membersArray[i].id == value)
		{
			sel.options[j++] = new Option(grad_membersArray[i].name, grad_membersArray[i].id);
		}
	}
}

function grad_populateResults(sel)
{
	var j = 0;
	sel.options.length = 0;
	

	for(var i = 0; i < grad_resultsArray.length;++i)
	{
		sel.options[j++] = new Option(grad_resultsArray[i], grad_resultsArray[i]);
		
	}

}

function grad_addRowToTable(disabled,noMemberReserve, bottom)
{
	var tbl = document.getElementById('grading_table');
	if(bottom == 1)
		var addRow = tbl.rows.length-2;
	else
		var addRow = 3;
		
	var rowNumber = tbl.rows.length;
	var row = tbl.insertRow(addRow);
	grad_maxRowIndex ++;

	// members name
	var cell1 = row.insertCell(0);
	cell1.align="center";
	var sel = document.createElement('select');
	sel.name = 'memberRow' + rowNumber;
	sel.id = 'memberRow' + rowNumber;
	grad_populateMembers(sel,0);
	XBrowserAddHandler(sel,'change',grad_memberChanged);
	XBrowserAddHandler(sel,'focus',grad_updateChangingMember);
	sel.disabled = disabled;
	sel.selectedIndex = 0;
	if(!noMemberReserve)
		grad_setUsedMember(sel.options[0].value, true);
		
	var newimg=document.createElement('img');
	newimg.name = 'newimg' + rowNumber;
	newimg.id = 'newimg' + rowNumber;
	newimg.src="img/guest.gif";
	XBrowserAddHandler(newimg,'click',doReferMember);
	XBrowserAddHandler(newimg,'load',doGradSize);

	var tbl2 = document.createElement('table');
	var subRow = tbl2.insertRow(0);
	var subCell1 = subRow.insertCell(0);
	subCell1.appendChild(sel);
	subCell1.colSpan = 2;
	subRow.vAlign = "middle";
	subCell1 = subRow.insertCell(0);
    subCell1.appendChild(newimg);

	cell1.appendChild(tbl2);

	
	//grade
	var cell2 = row.insertCell(1);
	var txtNode = document.createTextNode(grad_resultsArray[0]);
	cell2.align = "center";
	cell2.name = 'grade' + rowNumber;
	cell2.id = 'grade' + rowNumber;
	cell2.appendChild(txtNode);


	//result
	var cell_result  	= row.insertCell(2);
	var sel_result 		= document.createElement('select');
	sel_result.name 	= 'result' + rowNumber;
	sel_result.id 		= 'result' + rowNumber;
	sel_result.disabled	= disabled;
	grad_populateResults(sel_result);
	cell_result.appendChild(sel_result);

	//notes
	var cell6 = row.insertCell(3);
	var desc_txt 	= document.createElement('textArea');
	desc_txt.name 	= 'notes' + rowNumber;
	desc_txt.id 	= 'notes' + rowNumber;
	desc_txt.cols 	= 20;
	desc_txt.rows	= 4;
	desc_txt.disabled = disabled;
	cell6.appendChild(desc_txt);
	
	//Delete
	var cell7 = row.insertCell(4);
	var deleteBut	= document.createElement('img');
	deleteBut.src	= 'img/delete.gif';
	deleteBut.name = 'delete' + rowNumber;
	deleteBut.id 	='delete' + rowNumber;
	deleteBut.width	= 30;
	XBrowserAddHandler(deleteBut,'click',grad_deleteRecord);
	deleteBut.disabled = disabled;
	cell7.appendChild(deleteBut);
	
	grad_repopulateAllMembers(disabled);
	
}

function doGradSize()
{
	var oldWidth = this.width;
	var oldHeight = this.height;
	this.width=60;
	if(navigator.appName.indexOf("Microsoft") == 0)
	{
		this.height = 60;
	}
}

function grad_updateChangingMember()
{
	grad_currentMember = this.value;
}

//this function sets the correct ids in the 
function grad_memberChanged()
{
	//update the member use
	grad_setUsedMember(grad_currentMember, false);
	grad_setUsedMember(this.value, true);
	grad_currentMember = this.value;
	var rowID = this.name.split("memberRow")[1]
	
	//repopulate all drop down lists but keep the same selection (sigh)
	grad_repopulateAllMembers(false);
	
	//get the details for this selection
	grad_fillInOptions(rowID, this.value);
}

function grad_fillInOptions(rowNumber, value,disabled)
{
	var mydisabled = (disabled == null) ? false : disabled;
	var img = "img/guest.gif";
	//find the member element by searching through g_members
	for(var i = 0; i < grad_membersArray.length; ++i)
	{
		if(grad_membersArray[i].id == value)
		{
			imgloc			= grad_membersArray[i].photo_loc;
			current_grade 	= grad_membersArray[i].current_grade;
			break;
		}
	}
	
	//get correct elements
	var imgEl = document.getElementById("newimg"+rowNumber);
	var gradeEl = document.getElementById("grade"+rowNumber);
	while (gradeEl.hasChildNodes())
		gradeEl.removeChild(gradeEl.lastChild);
	gradeEl.appendChild(document.createTextNode(current_grade));
	
	imgEl.src = imgloc;
	

}

function grad_repopulateAllMembers(disabled)
{	
	var disabled = (disabled == null) ? false : disabled;
	for(var i = 0; i < grad_maxRowIndex +4; ++i)
	{
		var memberEl = document.getElementById("memberRow"+i);
		if(memberEl)
		{
			var memberVal = memberEl.value;
			grad_populateMembers(memberEl, memberVal);	
			memberEl.value = memberVal;
			
		}
	}
}

function grad_deleteRecord()
{
	//free member
	var rowIndex = this.name.split("delete")[1];
	var memberEl = document.getElementById("memberRow"+rowIndex);
	grad_setUsedMember(memberEl.value, false);
	grad_repopulateAllMembers(false);

	//button-cell-row
	var row = this.parentNode.parentNode;
	var tbl = document.getElementById('grading_table');
	tbl.deleteRow(row.rowIndex);
}

function grad_addMemberDetails(member_id, new_grade, notes,disabled)
{
	//add a blank row
	grad_addRowToTable(disabled,true, false);
	var tbl = document.getElementById('grading_table');
	//get correct rowNumber
	var lastRow = tbl.rows.length-1;
	//elements
	
	var memberEl 		= document.getElementById("memberRow"+lastRow);
	var notesEl 		= document.getElementById("notes"+lastRow);
	var newGrade		= document.getElementById("result"+lastRow);
	//set member first
	for(var i = 0; i < memberEl.options.length; ++i)
	{
		if(memberEl.options[i].value == member_id)
		{
			memberEl.options[i].selected = true;
			break;
		}
	}

	//set member first
	grad_setUsedMember(member_id, true);

	//repopulate all drop down lists but keep the same selection (sigh)
	grad_repopulateAllMembers(disabled);

	//get the details for this selection
	grad_fillInOptions(lastRow, member_id);

	//others
	notesEl.value = notes;
	for(var i = 0; i < newGrade.options.length; ++i)
	{
		if(newGrade.options[i].value == new_grade)
		{
			newGrade.options[i].selected = true;
			break;
		}
	}
}
