var currentMember;
var maxRowIndex=0;

function XBrowserAddHandler(target,eventName,fnHandler) { 
var originalHandler = target["on" + eventName]; 
if ( originalHandler ) { 
// note that we have just created a memory leak in IE because the closures from 
// these two anonymous functions reference "target", an HTML element. nuts :( 
target["on" + eventName] = function(e){ 
XBrowserApplyHandler(this, originalHandler, e); 
XBrowserApplyHandler(this, fnHandler, e); 
}; 
} else { 
target["on" + eventName] = function(e) { 
XBrowserApplyHandler(this, fnHandler, e) 
}; 
} 
} 

function XBrowserApplyHandler(target, fn, e) { 
if (!e) e = window.event; 
if (!e) alert("Problem with XBrowserApplyHandler: could not find event object."); 

if (Function.prototype.call) { 
fn.call(target, e); 
} else { 
target.__XBrowserElementApply = fn; 
target.__XBrowserElementApply(e) 
} 
}

function Card(id,uses,cost)
{
	this.id = id;
	this.cost = cost;
	this.uses = uses;
}

function Membership(id,duration,cost)
{
	this.id = id;
	this.cost = cost;
	this.duration = duration;
}

function Sale(id,details, cost)
{
	this.id = id;
	this.cost = cost;
	this.details = details;
}

function Member(name, id, photo_loc,default_subs)
{
	this.name = name;
	this.id = id;
	this.photo_loc = photo_loc;
	this.cards = new Array();
	this.sales = new Array();	
	this.mships = new Array();	
	this.used = false;
	this.unPaidCards = new Array();
	this.notes = false;
	this.default_subs = default_subs;
}

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

function populateMembers(sel, value)
{
	var j = 0;
	sel.options.length = 0;
	

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

}

function addRowToTable(disabled,noMemberReserve, bottom)
{
	var tbl = document.getElementById('session_table');
	if(bottom == 1)
		var addRow = tbl.rows.length;
	else
		var addRow = 4;
		
	var rowNumber = tbl.rows.length;
	var row = tbl.insertRow(addRow);
	maxRowIndex++;

	// members name
	var cell1 = row.insertCell(0);
	cell1.align="center";
	
	var sel = document.createElement('select');
	sel.name = 'memberRow' + rowNumber;
	sel.id = 'memberRow' + rowNumber;
	populateMembers(sel,0);
	XBrowserAddHandler(sel,'change',memberChanged);
	XBrowserAddHandler(sel,'focus',updateChangingMember);
	sel.disabled = disabled;
	sel.selectedIndex = 0;
	if(!noMemberReserve)
		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',doSize);

	var notesimg=document.createElement('img');
	notesimg.name = 'notes' + rowNumber;
	notesimg.id = 'notes' + rowNumber;
	notesimg.src="img/notes.png";
	notesimg.alt="Add Note"
	notesimg.description = "Add Note"
	notesimg.height = 20;
	XBrowserAddHandler(notesimg,'click',doReferNotes);
	
	var showNotes=document.createElement('img');
	showNotes.name = 'showNotesnewimg' + rowNumber;
	showNotes.id = 'showNotesnewimg' + rowNumber;
	showNotes.src="img/showNotes.png";
	showNotes.alt="Show Notes"
	showNotes.description = "Show Notes"
	showNotes.height = 0;
	XBrowserAddHandler(showNotes,'click',doReferMember);
	
	var tbl2 = document.createElement('table');
	var subRow = tbl2.insertRow(0);
	var subCell1 = subRow.insertCell(0);
	subCell2 = subRow.insertCell(1);
	subCell2.appendChild(sel);
	subCell1.appendChild(newimg);
	subCell1.rowSpan = 2;
//	subCell1.colSpan = 2;
	subRow = tbl2.insertRow(1);
	subRow.vAlign = "middle";
	subCell1 = subRow.insertCell(0);
	subCell1.align = "right";	
//	subCell1 = subRow.insertCell(1);
//	subCell2 = subRow.insertCell(1);
//    subCell1.appendChild(newimg);
	subCell1.appendChild(showNotes);
	subCell1.appendChild(notesimg);
	cell1.appendChild(tbl2);

	
	//radio buttons (money, card)
	var cell2 = row.insertCell(1);
	var radButCash,radButCard;
	try{
		var name = "<input type=\"radio\" checked=\"true\" name=\"cashcard" + rowNumber + "\" />";
		radButCash = document.createElement(name);
	}
	catch(err)
	{
		radButCash = document.createElement('input');
		radButCash.type = 'radio';
		radButCash.name ='cashcard' + rowNumber;
		radButCash.checked = true;
	}
	radButCash.id ='cashcard_cash' + rowNumber;
	radButCash.value = 'Cash';	
	XBrowserAddHandler(radButCash,'click',selectedCashCard)
	radButCash.disabled = disabled;
	
	try{
		var name = "<input type=\"radio\" name=\"cashcard" + rowNumber + "\" />";
		radButCard = document.createElement(name);
	}
	catch(err)
	{
		radButCard = document.createElement('input');
		radButCard.type = 'radio';
		radButCard.name = 'cashcard' + rowNumber;
	}
	radButCard.id ='cashcard_card' + rowNumber;
	radButCard.value = 'Card';
	XBrowserAddHandler(radButCard,'click',selectedCashCard);
	radButCard.disabled = disabled;

	//now we need a box accepting the cash (which will be changed to a drop down list for the card)
	var txt = document.createElement('input');
	txt.type = 'text';
	txt.name = 'amount' + rowNumber;
	txt.id = 'amount' + rowNumber;
	txt.size = 10;
	txt.value=formatAsMoney(g_cashAmount);
	txt.className = "compulsory";
	XBrowserAddHandler(txt,'keypress',verifyCash);
	txt.disabled = disabled;
	
	var cardDiv = document.createElement('div');
	cardDiv.name = 'cardDiv' + rowNumber;
	cardDiv.id = 'cardDiv' + rowNumber;
	
	//also create the drop down list for card id's.
	var sel2 = document.createElement('select');
	sel2.name = 'cardID' + rowNumber;
	sel2.id = 'cardID' + rowNumber;
	sel2.disabled=true;
	
	cardDiv.appendChild(radButCard);
	cardDiv.appendChild(document.createTextNode("Card "));
	cardDiv.appendChild(sel2);
	cardDiv.appendChild(document.createElement("br"));
	
	cell2.appendChild(cardDiv);
	cell2.appendChild(radButCash);
	var txtNode = document.createTextNode("Cash ");
	cell2.appendChild(txtNode);
	cell2.appendChild(txt);
	hideEl(cardDiv);

	//purchase
	var cell_sales  	= row.insertCell(2);
	var cb_sales 		= document.createElement("input"); // create input node
	cb_sales.type 		= "checkbox"; // set type
	cb_sales.name 		= "cb_sales"+rowNumber+"_1"; 
	cb_sales.id 		= "cb_sales"+rowNumber+"_1"; 
	cb_sales.checked	= false; 
	XBrowserAddHandler(cb_sales,'click',salesChanged);
	cb_sales.disabled 	= disabled;
	
	var sel_sales 		= document.createElement('select');
	sel_sales.name 		= 'salesID' + rowNumber+"_1";
	sel_sales.id 		= 'salesID' + rowNumber+"_1";
	sel_sales.disabled	= true;
	XBrowserAddHandler(sel_sales,'change',udpateSalesDropDowns);
	
	var salesimg=document.createElement('img');
	salesimg.name 		= 'sales_add' + rowNumber;
	salesimg.id 		= 'sales_add' + rowNumber;
	salesimg.src		= "img/add_detail.png";
	salesimg.alt		= "Add Sale";
	salesimg.description= "Add Sale";
	salesimg.width		= 20;
	XBrowserAddHandler(salesimg,'click',doReferSales);
	
	var salesDiv = document.createElement('div');
	salesDiv.name = 'salesDiv' + rowNumber;
	salesDiv.id = 'salesDiv' + rowNumber;
	
	salesDiv.appendChild(cb_sales);
	salesDiv.appendChild(document.createTextNode(" "));
	salesDiv.appendChild(sel_sales);
	cell_sales.appendChild(salesDiv);
	cell_sales.appendChild(salesimg);
	hideEl(salesDiv);
	
	
	//Card purchase
	var cell_upcard 	= row.insertCell(3);
	var cb_upcard 		= document.createElement("input"); // create input node
	cb_upcard.type 		= "checkbox"; // set type
	cb_upcard.name 		= "cb_upcard"+rowNumber+"_1"; 
	cb_upcard.id 		= "cb_upcard"+rowNumber+"_1"; 
	cb_upcard.checked 	= false; 
	XBrowserAddHandler(cb_upcard,'click',upcardChanged);
	cb_upcard.disabled = disabled;
	
	var sel_upcard 		= document.createElement('select');
	sel_upcard.name 	= 'upcardID' + rowNumber+"_1";
	sel_upcard.id 		= 'upcardID' + rowNumber+"_1";
	sel_upcard.disabled	= true;
	XBrowserAddHandler(sel_upcard,'change',udpateUPCardDropDowns);
	
	var cards_add		= document.createElement('img');
	cards_add.name 		= 'cards_add' + rowNumber;
	cards_add.id 		= 'cards_add' + rowNumber;
	cards_add.src		= "img/add_detail.png";
	cards_add.width		= 20;
	XBrowserAddHandler(cards_add,'click',doReferCards);
	
	var cpDiv = document.createElement('div');
	cpDiv.name = 'cpDiv' + rowNumber;
	cpDiv.id = 'cpDiv' + rowNumber;
	
	cpDiv.appendChild(cb_upcard);
	cpDiv.appendChild(document.createTextNode(" "));
	cpDiv.appendChild(sel_upcard);
	cell_upcard.appendChild(cpDiv);
	cell_upcard.appendChild(cards_add);
	hideEl(cpDiv);


	//Mship purchase
	var cell_mship 		= row.insertCell(4);
	var cb_mship 		= document.createElement("input"); // create input node
	cb_mship.type 		= "checkbox"; // set type
	cb_mship.name 		= "cb_mship"+rowNumber+"_1"; // set name if necessary
	cb_mship.id 		= "cb_mship"+rowNumber+"_1"; // set name if necessary
	cb_mship.checked 	= false; 
	XBrowserAddHandler(cb_mship,'click',mshipChanged);
	cb_mship.disabled = disabled;
	
	var sel_mship 		= document.createElement('select');
	sel_mship.name 		= 'mshipID' + rowNumber+"_1";
	sel_mship.id 		= 'mshipID' + rowNumber+"_1";
	sel_mship.disabled	= true;
	XBrowserAddHandler(sel_mship,'change',udpateMshipDropDowns);
	
	var mship_add		= document.createElement('img');
	mship_add.name 		= 'mship_add' + rowNumber;
	mship_add.id 		= 'mship_add' + rowNumber;
	mship_add.src		= "img/add_detail.png";
	mship_add.width		= 20;
	XBrowserAddHandler(mship_add,'click',doReferMship);
	
	var mshipDiv = document.createElement('div');
	mshipDiv.name = 'mshipDiv' + rowNumber;
	mshipDiv.id = 'mshipDiv' + rowNumber;
	
	mshipDiv.appendChild(cb_mship);
	mshipDiv.appendChild(document.createTextNode(" "));
	mshipDiv.appendChild(sel_mship);
	cell_mship.appendChild(mshipDiv);
	cell_mship.appendChild(mship_add);
	hideEl(mshipDiv);
	
	//Other income
	var cell6 = row.insertCell(5);
	var cb_other 		= document.createElement("input"); // create input node
	cb_other.type 	= "checkbox"; // set type
	cb_other.name 	= "cb_other"+rowNumber; // set name if necessary
	cb_other.id 		= "cb_other"+rowNumber; // set name if necessary
	cb_other.checked 	= false; 
	XBrowserAddHandler(cb_other,'click',otherChanged);
	cb_other.disabled = disabled;
	
	var other_txt 	= document.createElement('input');
	other_txt.type 	= 'text';
	other_txt.name 	= 'other' + rowNumber;
	other_txt.id 	= 'other' + rowNumber;
	other_txt.size 	= 9;
	XBrowserAddHandler(other_txt,'keypress',verifyCash);
	other_txt.disabled = true;
	
	var desc_txt 	= document.createElement('input');
	desc_txt.type 	= 'text';
	desc_txt.name 	= 'other_desc' + rowNumber;
	desc_txt.id 	= 'other_desc' + rowNumber;
	desc_txt.size 	= 12;
	desc_txt.disabled = true;
	
	cell6.appendChild(cb_other);
	cell6.appendChild(document.createTextNode(" Amount:"));
	cell6.appendChild(other_txt);
		cell6.appendChild(document.createElement("br"));
	cell6.appendChild(document.createTextNode("   Reason:"));
	cell6.appendChild(desc_txt);

	
	//Delete
	var cell7 = row.insertCell(6);
	var deleteBut	= document.createElement('img');
	deleteBut.src	= 'img/delete.gif';
	deleteBut.name = 'delete' + rowNumber;
	deleteBut.id 	='delete' + rowNumber;
	deleteBut.width	= 30;
	if(navigator.appName.indexOf("Microsoft") == 0)
	{
		deleteBut.height= 30;
	}	
	XBrowserAddHandler(deleteBut,'click',deleteRecord);
	deleteBut.disabled = disabled;
	cell7.appendChild(deleteBut);
	
	repopulateAllMembers(disabled);
}

function verifyCash(e)
{
	if(!numbersonly(this, e, true,false,false))
	{
		e.returnValue = false;
	}
}

function salesChanged()
{
	//row number
	var endPart = this.name.split("cb_sales")[1];
	var rowNumber = endPart.split("_")[0];
	var subIndex = endPart.split("_")[1];
	var nextIndex = parseInt(subIndex,10)+1;
	
	//associated drop down
	var salesEl = document.getElementById("salesID"+rowNumber+"_"+subIndex);
	
	if(this.checked)
	{
		salesEl.disabled=false;
		if(salesEl.options.length > 1)
		{
			addSalesRow(salesEl,rowNumber, nextIndex);	
		}
		updateSalesList(rowNumber);
	}
	else
	{
		salesEl.disabled=true;
		parentNode = salesEl.parentNode;
		var i = 0;
		//first find which index we are in
		while(parentNode.hasChildNodes() )
		{
			if(parentNode.childNodes[i++].id == salesEl.id)
			{
				break;
			}
		}
		while(parentNode.childNodes.length > i)
		{
			parentNode.removeChild(parentNode.lastChild);
		}
		updateSalesList(rowNumber);
	}
}

function addSalesRow(salesEl,rowNumber,nextIndex)
{
		var cb_sales 		= document.createElement("input"); // create input node
		cb_sales.type 	= "checkbox"; // set type
		cb_sales.name 	= "cb_sales"+rowNumber+"_"+nextIndex; 
		cb_sales.id 	= "cb_sales"+rowNumber+"_"+nextIndex;  
		cb_sales.checked = false; 
		XBrowserAddHandler(cb_sales,'click',salesChanged);
		cb_sales.disabled = false;

		var sel_sales 		= document.createElement('select');
		sel_sales.name 		= "salesID"+rowNumber+"_"+nextIndex;
		sel_sales.id 		= "salesID"+rowNumber+"_"+nextIndex;
		sel_sales.disabled	= true;
		XBrowserAddHandler(sel_sales,'change',udpateSalesDropDowns);
		for( var i = 0; i < salesEl.options.length; ++i)
		{
			if(salesEl.options[i].selected == false)
				sel_sales.options[sel_sales.options.length] = new Option(salesEl.options[i].text,salesEl.options[i].value);
		}
		salesEl.parentNode.appendChild(document.createElement("br"));
		salesEl.parentNode.appendChild(cb_sales);
		salesEl.parentNode.appendChild(document.createTextNode(" "));
		salesEl.parentNode.appendChild(sel_sales);
}

function updateSalesList(rowID)
{
	//associated drop down
	var randomSalesEl = document.getElementById("salesID"+rowID+"_1");
	var mshipEl = document.getElementById("memberRow"+rowID);
	
	var usedIDs = new Array();
	var parent = randomSalesEl.parentNode;
	for(var i= 0; i < parent.childNodes.length;++i)
	{
		if(parent.childNodes[i].tagName == "SELECT")
		{
			//check if ticked to decide whether to use
			var endPart = parent.childNodes[i].name.split("salesID")[1];
			var subIndex = endPart.split("_")[1];
			var cb_sales = document.getElementById("cb_sales"+rowID+"_"+subIndex);
			
			if(cb_sales.checked)
			{
				usedIDs.push(parent.childNodes[i].options[parent.childNodes[i].selectedIndex].value);
				
			}
		}
	}
	
	for(var i = 0; i < g_membersArray.length; ++i)
	{
		if(g_membersArray[i].id == mshipEl.value)
		{
			sales		= g_membersArray[i].sales;
			break;
		}
	}

	var slength = sales.length;
	var finalSalesList = new Array();
	var found = false;
	//remove options from our list
	for(var k = 0; k < slength;++k)
	{
		for(var i = 0; i < usedIDs.length;++i)
		{
			if(sales[k].id == usedIDs[i])
			{
				found = true;
			}
		}	
		if(found)
			found = false;
		else
		{
			finalSalesList.push(sales[k]);
		}
	}

	//through again to repopulate the options
	for(var i= 0; i < parent.childNodes.length;++i)
	{
		if(parent.childNodes[i].tagName == "SELECT")
		{
			//check if ticked to add the selected one back in
			var endPart = parent.childNodes[i].name.split("salesID")[1];
			var subIndex = endPart.split("_")[1];
			var cb_sales = document.getElementById("cb_sales"+rowID+"_"+subIndex);
			
			var selectedOption = new Option(parent.childNodes[i].options[parent.childNodes[i].selectedIndex].text,parent.childNodes[i].options[parent.childNodes[i].selectedIndex].value);
			parent.childNodes[i].options.length = 0;
		
			//add the options
			for(var k = 0; k < finalSalesList.length;++k)
			{
				parent.childNodes[i].options[k] = new Option(finalSalesList[k].details+" ("+ finalSalesList[k].cost +")", finalSalesList[k].id);
			}
			//add in the one that was selected
			if(cb_sales.checked)
			{
				parent.childNodes[i].options[parent.childNodes[i].options.length] = selectedOption;
				parent.childNodes[i].options[parent.childNodes[i].options.length-1].selected = true;
			}
		}
	}
}

function udpateSalesDropDowns()
{
	//collect list of all used id's
	var endPart = this.name.split("salesID")[1];
	var rowNumber = endPart.split("_")[0];
	updateSalesList(rowNumber);
	
	
}

//--------------------
//upcard
//--------------------
function upcardChanged()
{
	
	//row number
	var endPart = this.name.split("cb_upcard")[1];
	var rowNumber = endPart.split("_")[0];
	var subIndex = endPart.split("_")[1];
	var nextIndex = parseInt(subIndex,10)+1;
	
	//associated drop down
	var upcardEl = document.getElementById("upcardID"+rowNumber+"_"+subIndex);
	
	if(this.checked)
	{
		upcardEl.disabled=false;
		if(upcardEl.options.length > 1)
		{
			addUPCardRow(upcardEl,rowNumber, nextIndex);	
		}
		updateUPCardList(rowNumber);
	}
	else
	{
		upcardEl.disabled=true;
		parentNode = upcardEl.parentNode;
		var i = 0;
		//first find which index we are in
		while(parentNode.hasChildNodes() )
		{
			if(parentNode.childNodes[i++].id == upcardEl.id)
			{
				break;
			}
		}
		while(parentNode.childNodes.length > i)
		{
			parentNode.removeChild(parentNode.lastChild);
		}
		updateUPCardList(rowNumber);
	}
}

function udpateUPCardDropDowns()
{
	//collect list of all used id's
	var endPart = this.name.split("upcardID")[1];
	var rowNumber = endPart.split("_")[0];
	updateUPCardList(rowNumber);
}

function addUPCardRow(upcardEl,rowNumber,nextIndex)
{
	var cb_upcard 		= document.createElement("input"); // create input node
	cb_upcard.type 	= "checkbox"; // set type
	cb_upcard.name 	= "cb_upcard"+rowNumber+"_"+nextIndex; 
	cb_upcard.id 	= "cb_upcard"+rowNumber+"_"+nextIndex;  
	cb_upcard.checked = false; 
	XBrowserAddHandler(cb_upcard,'click',upcardChanged);
	cb_upcard.disabled = false;

	var sel_upcard 		= document.createElement('select');
	sel_upcard.name 	= "upcardID"+rowNumber+"_"+nextIndex;
	sel_upcard.id 		= "upcardID"+rowNumber+"_"+nextIndex;
	sel_upcard.disabled	= true;
	XBrowserAddHandler(sel_upcard,'change',udpateUPCardDropDowns);
	for( var i = 0; i < upcardEl.options.length; ++i)
	{
		if(upcardEl.options[i].selected == false)
			sel_upcard.options[sel_upcard.options.length] = new Option(upcardEl.options[i].text,upcardEl.options[i].value);
	}
	upcardEl.parentNode.appendChild(document.createElement("br"));
	upcardEl.parentNode.appendChild(cb_upcard);
	upcardEl.parentNode.appendChild(document.createTextNode(" "));
	upcardEl.parentNode.appendChild(sel_upcard);
}

function updateUPCardList(rowID)
{
	//associated drop down
	var randomUPCardEl = document.getElementById("upcardID"+rowID+"_1");
	var mshipEl = document.getElementById("memberRow"+rowID);
	
	var usedIDs = new Array();
	var parent = randomUPCardEl.parentNode;
	for(var i= 0; i < parent.childNodes.length;++i)
	{
		if(parent.childNodes[i].tagName == "SELECT")
		{
			//check if ticked to decide whether to use
			var endPart = parent.childNodes[i].name.split("upcardID")[1];
			var subIndex = endPart.split("_")[1];
			var cb_upcard = document.getElementById("cb_upcard"+rowID+"_"+subIndex);
			
			if(cb_upcard.checked)
			{
				usedIDs.push(parent.childNodes[i].options[parent.childNodes[i].selectedIndex].value);
				
			}
		}
	}
	
	for(var i = 0; i < g_membersArray.length; ++i)
	{
		if(g_membersArray[i].id == mshipEl.value)
		{
			upcards		= g_membersArray[i].unPaidCards;
			break;
		}
	}

	var slength = upcards.length;
	var finalList = new Array();
	var found = false;
	//remove options from our list
	for(var k = 0; k < slength;++k)
	{
		for(var i = 0; i < usedIDs.length;++i)
		{
			if(upcards[k].id == usedIDs[i])
			{
				found = true;
			}
		}	
		if(found)
			found = false;
		else
		{
			finalList.push(upcards[k]);
		}
	}

	//through again to repopulate the options
	for(var i= 0; i < parent.childNodes.length;++i)
	{
		if(parent.childNodes[i].tagName == "SELECT")
		{
			//check if ticked to add the selected one back in
			var endPart = parent.childNodes[i].name.split("upcardID")[1];
			var subIndex = endPart.split("_")[1];
			var cb_upcard = document.getElementById("cb_upcard"+rowID+"_"+subIndex);
			
			var selectedOption = new Option(parent.childNodes[i].options[parent.childNodes[i].selectedIndex].text,parent.childNodes[i].options[parent.childNodes[i].selectedIndex].value);
			parent.childNodes[i].options.length = 0;
		
			//add the options
			for(var k = 0; k < finalList.length;++k)
			{
				parent.childNodes[i].options[k] = new Option(finalList[k].uses+" uses ("+ finalList[k].cost +")", finalList[k].id);
			}
			//add in the one that was selected
			if(cb_upcard.checked)
			{
				parent.childNodes[i].options[parent.childNodes[i].options.length] = selectedOption;
				parent.childNodes[i].options[parent.childNodes[i].options.length-1].selected = true;
			}
		}
	}
}

//--------------------
//mship
//--------------------
function mshipChanged()
{
	//row number
	var endPart = this.name.split("cb_mship")[1];
	var rowNumber = endPart.split("_")[0];
	var subIndex = endPart.split("_")[1];
	var nextIndex = parseInt(subIndex,10)+1;
	
	//associated drop down
	var mshipEl = document.getElementById("mshipID"+rowNumber+"_"+subIndex);

	if(this.checked)
	{
		mshipEl.disabled=false;
		if(mshipEl.options.length > 1)
		{
			addMshipRow(mshipEl,rowNumber, nextIndex);	
		}
		updateMshipList(rowNumber);
	}
	else
	{
		mshipEl.disabled=true;
		parentNode = mshipEl.parentNode;
		var i = 0;
		//first find which index we are in
		while(parentNode.hasChildNodes() )
		{
			if(parentNode.childNodes[i++].id == mshipEl.id)
			{
				break;
			}
		}
		while(parentNode.childNodes.length > i)
		{
			parentNode.removeChild(parentNode.lastChild);
		}
		updateMshipList(rowNumber);
	}
}

function udpateMshipDropDowns()
{
	//collect list of all used id's
	var endPart = this.name.split("mshipID")[1];
	var rowNumber = endPart.split("_")[0];
	updateMshipList(rowNumber);
}

function addMshipRow(mshipEl,rowNumber,nextIndex)
{
	var cb_mship 		= document.createElement("input"); // create input node
	cb_mship.type 	= "checkbox"; // set type
	cb_mship.name 	= "cb_mship"+rowNumber+"_"+nextIndex; 
	cb_mship.id 	= "cb_mship"+rowNumber+"_"+nextIndex;  
	cb_mship.checked = false; 
	XBrowserAddHandler(cb_mship,'click',mshipChanged);
	cb_mship.disabled = false;

	var sel_mship 		= document.createElement('select');
	sel_mship.name 	= "mshipID"+rowNumber+"_"+nextIndex;
	sel_mship.id 		= "mshipID"+rowNumber+"_"+nextIndex;
	sel_mship.disabled	= true;
	XBrowserAddHandler(sel_mship,'change',udpateMshipDropDowns);
	for( var i = 0; i < mshipEl.options.length; ++i)
	{
		if(mshipEl.options[i].selected == false)
			sel_mship.options[sel_mship.options.length] = new Option(mshipEl.options[i].text,mshipEl.options[i].value);
	}
	mshipEl.parentNode.appendChild(document.createElement("br"));
	mshipEl.parentNode.appendChild(cb_mship);
	mshipEl.parentNode.appendChild(document.createTextNode(" "));
	mshipEl.parentNode.appendChild(sel_mship);
}

function updateMshipList(rowID)
{
	//associated drop down
	var randommshipEl = document.getElementById("mshipID"+rowID+"_1");
	var mshipEl = document.getElementById("memberRow"+rowID);
	
	var usedIDs = new Array();
	var parent = randommshipEl.parentNode;
	for(var i= 0; i < parent.childNodes.length;++i)
	{
		if(parent.childNodes[i].tagName == "SELECT")
		{
			//check if ticked to decide whether to use
			var endPart = parent.childNodes[i].name.split("mshipID")[1];
			var subIndex = endPart.split("_")[1];
			var cb_mship = document.getElementById("cb_mship"+rowID+"_"+subIndex);
			
			if(cb_mship.checked)
			{
				usedIDs.push(parent.childNodes[i].options[parent.childNodes[i].selectedIndex].value);
				
			}
		}
	}
	
	for(var i = 0; i < g_membersArray.length; ++i)
	{
		if(g_membersArray[i].id == mshipEl.value)
		{
			mships		= g_membersArray[i].mships;
			break;
		}
	}

	var slength = mships.length;
	var finalList = new Array();
	var found = false;
	//remove options from our list
	for(var k = 0; k < slength;++k)
	{
		for(var i = 0; i < usedIDs.length;++i)
		{
			if(mships[k].id == usedIDs[i])
			{
				found = true;
			}
		}	
		if(found)
			found = false;
		else
		{
			finalList.push(mships[k]);
		}
	}

	//through again to repopulate the options
	for(var i= 0; i < parent.childNodes.length;++i)
	{
		if(parent.childNodes[i].tagName == "SELECT")
		{
			//check if ticked to add the selected one back in
			var endPart = parent.childNodes[i].name.split("mshipID")[1];
			var subIndex = endPart.split("_")[1];
			var cb_mship = document.getElementById("cb_mship"+rowID+"_"+subIndex);
			
			var selectedOption = new Option(parent.childNodes[i].options[parent.childNodes[i].selectedIndex].text,parent.childNodes[i].options[parent.childNodes[i].selectedIndex].value);
			parent.childNodes[i].options.length = 0;
		
			//add the options
			for(var k = 0; k < finalList.length;++k)
			{
				parent.childNodes[i].options[k] = new Option(finalList[k].duration+" ("+ finalList[k].cost +")", finalList[k].id);
			}
			//add in the one that was selected
			if(cb_mship.checked)
			{
				parent.childNodes[i].options[parent.childNodes[i].options.length] = selectedOption;
				parent.childNodes[i].options[parent.childNodes[i].options.length-1].selected = true;
			}
		}
	}
}

function otherChanged()
{
	//row number
	var rowNumber = this.name.split("cb_other")[1];
	
	//associated text box
	var txtEl = document.getElementById("other"+rowNumber);
	var descEl = document.getElementById("other_desc"+rowNumber);
	if(this.checked)
	{
		txtEl.disabled=false;
		txtEl.className = "compulsory";
		txtEl.value=formatAsMoney(0);
		descEl.disabled=false;
		descEl.className = "compulsory";
	}
	else
	{
		txtEl.disabled=true;
		txtEl.className = "";
		txtEl.value='';
		descEl.disabled=true;
		descEl.className = "";
		descEl.value='';		
	}
}

function doReferMember()
{
	var rowNumber = this.name.split("newimg")[1];
	//find member id for this row number
	var memberEl = document.getElementById("memberRow"+rowNumber);
	addRefer('members.php?action=3&member_id='+memberEl.value);
}

function doReferNotes()
{
	var rowNumber = this.name.split("notes")[1];
	//find member id for this row number
	var memberEl = document.getElementById("memberRow"+rowNumber);
	addRefer('notes.php?action=1&member_id='+memberEl.value);
}

function doShowNotes()
{
	var rowNumber = this.name.split("showNotesnewimg")[1];
	//find member id for this row number
	var memberEl = document.getElementById("memberRow"+rowNumber);
	addRefer('notes.php?action=2&member_id='+memberEl.value);
	
}

function doReferSales()
{
	var rowNumber = this.name.split("sales_add")[1];
	//find member id for this row number
	var memberEl = document.getElementById("memberRow"+rowNumber);
	addRefer('sales.php?action=1&member_id='+memberEl.value);
	
}

function doReferCards()
{
	var rowNumber = this.name.split("cards_add")[1];
	//find member id for this row number
	var memberEl = document.getElementById("memberRow"+rowNumber);
	addRefer('cards.php?action=1&member_id='+memberEl.value);
}

function doReferMship()
{
	var rowNumber = this.name.split("mship_add")[1];
	//find member id for this row number
	var memberEl = document.getElementById("memberRow"+rowNumber);
	addRefer('membership.php?action=1&member_id='+memberEl.value);
	
}


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



function selectedCashCard()
{
	//get the rowNumber part
	var rowNumber = this.name.split("cashcard")[1];
	
	
	//find the elements to be changed
	var cashEl = document.getElementById("amount"+rowNumber);
	var cardEl = document.getElementById("cardID"+rowNumber);
	if(this.value == 'Card')
	{
		cashEl.disabled = true;
		cashEl.className = "";
		cardEl.disabled = false;
//		cashEl.value=formatAsMoney(g_cashAmount);
	}
	else if (this.value == 'Cash')
	{
		cashEl.disabled = false;
		cashEl.className = "compulsory";
		cardEl.disabled = true;
	}
	
}

function updateChangingMember()
{
	currentMember = this.value;
}

//this function sets the correct ids in the 
function memberChanged()
{
	//update the member use
	setUsedMember(currentMember, false);
	setUsedMember(this.value, true);
	currentMember = this.value;
	var rowID = this.name.split("memberRow")[1]
	
	//if member is a guest then stop them buying anything and also disable the notes
	var addSales = document.getElementById("sales_add"+rowID);
	var addMship = document.getElementById("mship_add"+rowID);
	var addCard = document.getElementById("cards_add"+rowID);
	var showNotes = document.getElementById("notes"+rowID);
	if(currentMember == 1)
	{
		hideEl(addSales);
		hideEl(addMship);
		hideEl(addCard);
		hideEl(showNotes);	
	}
	else
	{
		showEl(addSales);
		showEl(addMship);
		showEl(addCard);
		showEl(showNotes);
	}
	
	
	//clear out mulitple entries in the sales column
	var randomSalesEl = document.getElementById("salesID"+rowID+"_1");
	var cb_salesEl = document.getElementById("cb_sales"+rowID+"_1");	
	parentNode = randomSalesEl.parentNode;	
	cb_salesEl.checked = false;
	randomSalesEl.disabled = true;
	var i = 0;
	//first find which index we are in
	while(parentNode.childNodes.length > 3 )
	{
		parentNode.removeChild(parentNode.lastChild);
	}
	
	//clear out mulitple entries in the upcard column
	var randomUPCardEl = document.getElementById("upcardID"+rowID+"_1");
	var cb_upcardEl = document.getElementById("cb_upcard"+rowID+"_1");	
	parentNode = randomUPCardEl.parentNode;	
	cb_upcardEl.checked = false;
	randomUPCardEl.disabled = true;
	var i = 0;
	//first find which index we are in
	while(parentNode.childNodes.length > 3 )
	{
		parentNode.removeChild(parentNode.lastChild);
	}
	
	//clear out mulitple entries in the mship column
	var randommshipEl = document.getElementById("mshipID"+rowID+"_1");
	var cb_mshipEl = document.getElementById("cb_mship"+rowID+"_1");	
	parentNode = randommshipEl.parentNode;	
	cb_mshipEl.checked = false;
	randommshipEl.disabled = true;
	var i = 0;
	//first find which index we are in
	while(parentNode.childNodes.length > 3 )
	{
		parentNode.removeChild(parentNode.lastChild);
	}
	
	//repopulate all drop down lists but keep the same selection (sigh)
	repopulateAllMembers(false);
	
	//get the cards for this new selection
	fillInOptions(rowID, this.value);
}

function repopulateAllMembers(disabled)
{	
	var disabled = (disabled == null) ? false : disabled;
	for(var i = 0; i < maxRowIndex+4; ++i)
	{
		var memberEl = document.getElementById("memberRow"+i);
		if(memberEl)
		{
			var memberVal = memberEl.value;
			populateMembers(memberEl, memberVal);	
			memberEl.value = memberVal;
			
			//get the cards for this new selection
		//	if(fill_in_all_list)
				
		}
	}
	var countEl = document.getElementById("attendee_count");
	if(maxRowIndex > 0)
	{
		var textCount = document.createTextNode("Attendees: " + maxRowIndex);
	}
	else
	{
var textCount = document.createTextNode("Click \"+\" to add attendees");		
		
	}
	while ( countEl.childNodes.length >= 1 )
	{
		countEl.removeChild( countEl.firstChild );       
	} 
	countEl.appendChild(textCount);
}

function fillInOptions(rowNumber, value,disabled)
{
	var mydisabled = (disabled == null) ? false : disabled;
	var cards,mships,unPaidCards,sales;
	var img = "img/guest.gif";
	//find the member element by searching through g_members
	for(var i = 0; i < g_membersArray.length; ++i)
	{
		if(g_membersArray[i].id == value)
		{
			cards 		= g_membersArray[i].cards;
			sales		= g_membersArray[i].sales;
			upcards 	= g_membersArray[i].unPaidCards;
			mships      = g_membersArray[i].mships;
			imgloc		= g_membersArray[i].photo_loc;
			notes		= g_membersArray[i].notes;
			default_subs = g_membersArray[i].default_subs;
			break;
		}
	}
	
	//get correct card drop down
	var cardEl = document.getElementById("cardID"+rowNumber);
	var cb_cardEl = document.getElementById("cashcard_cash"+rowNumber);
	var cardDiv = document.getElementById("cardDiv"+rowNumber);
	var upcardEl = document.getElementById("upcardID"+rowNumber+"_1");
	var salesEl = document.getElementById("salesID"+rowNumber+"_1");
	var salesDiv = document.getElementById("salesDiv"+rowNumber);
	var cpDiv = document.getElementById("cpDiv"+rowNumber);
	var mshipDiv = document.getElementById("mshipDiv"+rowNumber);
	var mshipEl = document.getElementById("mshipID"+rowNumber+"_1");
	var cb_mshipEl = document.getElementById("cb_mship"+rowNumber+"_1");	
	var cb_salesEl = document.getElementById("cb_sales"+rowNumber+"_1");	
	var cb_upcardEl = document.getElementById("cb_upcard"+rowNumber+"_1");	
	var cashcard_cardEl = document.getElementById("cashcard_card"+rowNumber);
	var imgEl = document.getElementById("newimg"+rowNumber);
	var notesEl = document.getElementById("notes"+rowNumber);
	var showNotesEl = document.getElementById("showNotesnewimg"+rowNumber);
	var amountEl = document.getElementById("amount"+rowNumber);
	
	amountEl.value = formatAsMoney(default_subs);
	
	imgEl.src = imgloc;
	if(notes == 1)
	{
		showNotesEl.height=20;	
	}
	else
	{
		showNotesEl.height=0;	
	}
	
	cardEl.options.length = 0;
	upcardEl.options.length = 0;
	salesEl.options.length = 0;
	mshipEl.options.length = 0;

	//add the options
	for(var i = 0; i < cards.length;++i)
	{
		cardEl.options[i] = new Option(cards[i].uses +" left", cards[i].id);
	}
	for(var i = 0; i < sales.length;++i)
	{
		salesEl.options[i] = new Option(sales[i].details+" ("+ sales[i].cost +")", sales[i].id);
	}
	for(var i = 0; i < mships.length;++i)
	{
		mshipEl.options[i] = new Option(mships[i].duration +" ("+ mships[i].cost +")", mships[i].id);
	}
	for(var i = 0; i < upcards.length;++i)
	{
		upcardEl.options[i] = new Option(upcards[i].uses+" uses ("+ upcards[i].cost +")", upcards[i].id);
	}
	
	if(cards.length == 0)
	{
		cashcard_cardEl.disabled = true;
		hideEl(cardDiv);
		cb_cardEl.checked = true;
	}
	else 
	{
		cashcard_cardEl.disabled = mydisabled;
		showEl(cardDiv);
	}

	if(mships.length == 0)
	{
		cb_mshipEl.disabled = true;
		hideEl(mshipDiv);
	}
	else 
	{
		cb_mshipEl.disabled = mydisabled;
		showEl(mshipDiv);
	}

	if(sales.length == 0)
	{
		cb_salesEl.disabled = true;
		hideEl(salesDiv);
	
	}
	else 
	{
		cb_salesEl.disabled = mydisabled;
		showEl(salesDiv);
	}

	if(upcards.length == 0)
	{
		cb_upcardEl.disabled = true;
		hideEl(cpDiv);
	}
	else 
	{
		cb_upcardEl.disabled = mydisabled;
		showEl(cpDiv);
	}

}

function hideEl(element)
{
	if (document.layers) { // Netscape 4
				element.display = 'none';
			}
			else { // IE 4
				element.style.display = 'none';
			}
}

function showEl(element)
{
	if (document.layers) { // Netscape 4
				element.display = 'block';
			}
			else { // IE 4
				element.style.display = 'block';
			}
}

function deleteRecord()
{
	//free member
	var rowIndex = this.name.split("delete")[1];
	var memberEl = document.getElementById("memberRow"+rowIndex);
	setUsedMember(memberEl.value, false);
	maxRowIndex--;
	repopulateAllMembers(false);

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

function addMemberDetails(member_id,amount, card_id, sales_id_array, upcard_id_array, mship_id_array, disabled, other_amount, other_description)
{
	//add a blank row
	addRowToTable(disabled,true, true);
	var tbl = document.getElementById('session_table');
	//get correct rowNumber
	var lastRow = tbl.rows.length-1;
	//elements
	var cashEl 			= document.getElementById("amount"+lastRow);
	var cardEl 			= document.getElementById("cardID"+lastRow);
	var cashcard_cashEl = document.getElementById("cashcard_cash"+lastRow);
	var cashcard_cardEl = document.getElementById("cashcard_card"+lastRow);
	var memberEl 		= document.getElementById("memberRow"+lastRow);
	var otherAmountEl 	= document.getElementById("other"+lastRow);
	var otherDescEl 	= document.getElementById("other_desc"+lastRow);
	var otherCBEl 		= document.getElementById("cb_other"+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
	setUsedMember(member_id, true);
	
	//repopulate all drop down lists but keep the same selection (sigh)
	repopulateAllMembers(disabled);
	if(member_id != 1)
		fillInOptions(lastRow, member_id,disabled);
	
	if(card_id == "NULL")
	{
		cashEl.value = formatAsMoney(amount);
		cashcard_cashEl.checked=true;
		cashEl.disabled = disabled;
		cashEl.className = "compulsory";
		cardEl.disabled = true;
	}
	else
	{
		cashEl.value = formatAsMoney(g_cashAmount);
		cashcard_cardEl.checked=true;
		cashEl.disabled = true;
		cashEl.className = "";
		cardEl.disabled = disabled;

		for(var i = 0; i < cardEl.options.length; ++i)
		{
			if(cardEl.options[i].value == card_id)
			{
				cardEl.options[i].selected = true;
				break;
			}
		}
	}
	
	//sales
	k = 1;
	for(var sales_i = 0; sales_i < sales_id_array.length; ++sales_i)
	{
		var salesEl			= document.getElementById("salesID"+lastRow+"_"+k);
		var salesCBEl		= document.getElementById("cb_sales"+lastRow+"_"+k);
		salesCBEl.checked 	= true;
		salesEl.disabled	= disabled;
		salesCBEl.disabled 	= disabled;
		
		for(var sales_j = 0; sales_j < salesEl.options.length; ++sales_j)
		{
			if(salesEl.options[sales_j].value == sales_id_array[sales_i])
			{
				salesEl.options[sales_j].selected = true;
				break;
			}
		}
		if(salesEl.options.length > 1)
		{
			addSalesRow(salesEl,lastRow, k+1);
			updateSalesList(lastRow);
			k++;
		}	
	}
	
	//upcard
	k = 1;
	for(var upcard_i = 0; upcard_i < upcard_id_array.length; ++upcard_i)
	{
		var upcardEl		= document.getElementById("upcardID"+lastRow+"_"+k);
		var upcardCBEl		= document.getElementById("cb_upcard"+lastRow+"_"+k);
		upcardCBEl.checked 	= true;
		upcardEl.disabled	= disabled;
		upcardCBEl.disabled 	= disabled;
		
		for(var upcard_j = 0; upcard_j < upcardEl.options.length; ++upcard_j)
		{
			if(upcardEl.options[upcard_j].value == upcard_id_array[upcard_i])
			{
				upcardEl.options[upcard_j].selected = true;
				break;
			}
		}
		if(upcardEl.options.length > 1)
		{
			addUPCardRow(upcardEl,lastRow, k+1);
			updateUPCardList(lastRow);
			k++;
		}	
	}
	
	//mships
	k = 1;
	for(var mship_i = 0; mship_i < mship_id_array.length; ++mship_i)
	{
		var mshipEl		= document.getElementById("mshipID"+lastRow+"_"+k);
		var mshipCBEl		= document.getElementById("cb_mship"+lastRow+"_"+k);
		mshipCBEl.checked 	= true;
		mshipEl.disabled	= disabled;
		mshipCBEl.disabled 	= disabled;
		
		for(var mship_j = 0; mship_j < mshipEl.options.length; ++mship_j)
		{
			if(mshipEl.options[mship_j].value == mship_id_array[mship_i])
			{
				mshipEl.options[mship_j].selected = true;
				break;
			}
		}
		if(mshipEl.options.length > 1)
		{
			addMshipRow(mshipEl,lastRow, k+1);
			updateMshipList(lastRow);
			k++;
		}	
	}
	
	
	//others
	otherAmountEl.value = formatAsMoney(other_amount);
	otherDescEl.value = other_description;
	if(other_amount=="0.00")
	{
		otherCBEl.checked 		= false;
		otherAmountEl.disabled	= true ;
		otherAmountEl.className = "";
		otherDescEl.disabled	= true;
		otherDescEl.className 	= "";
		otherAmountEl.value 	= "";
	}
	else
	{
		otherCBEl.checked = true;
		otherAmountEl.disabled	= disabled ;
		otherAmountEl.className = "compulsory";
		otherDescEl.disabled	= disabled;
		otherDescEl.className 	= "compulsory";
	}
	

}

function formatAsMoney(mnt) {
    mnt -= 0;
    mnt = (Math.round(mnt*100))/100;
    return (mnt == Math.floor(mnt)) ? mnt + '.00' 
              : ( (mnt*10 == Math.floor(mnt*10)) ? 
                       mnt + '0' : mnt);
}

function addRefer(address)
{
//find the action and change it to add card then submit the form
	var form = document.getElementById("change_record_form");
	var hidden=document.createElement('input');
	hidden.name = 'hidden';
	hidden.id = 'hidden';
	hidden.type="hidden";
	hidden.value = address;
	form.appendChild(hidden);
	form.submit();
}
