var g_SelectedItems = new Object();
var g_nSelected = new Object();
var g_bSelectAll = new Object();


function myFilterClick(id, value)
{
	document.all.listeventform.myFilter.value = value;
	document.all.listeventform.field.value = id;
	var ret = document.all(id).reload('reload');
}

function lsSetButtonStatus(id)
{
	if(g_bSelectAll[id] || g_nSelected[id] != 1) {
		if (document.all('modify_' + id)) { document.all('modify_' + id).disabled = true; }
		if (document.all('enquire_' + id)) { document.all('enquire_' + id).disabled = true; }
		if (document.all('print_' + id)) { document.all('print_' + id).disabled = true; }
		if (document.all('export_' + id)) { document.all('export_' + id).disabled = true; }
		if (document.all('jobs_' + id)) { document.all('jobs_' + id).disabled = true; }
		if (document.all('notes_' + id)) { document.all('notes_' + id).disabled = true; }
		if (document.all('manualdates_' + id)) { document.all('manualdates_' + id).disabled = true; }
		if (document.all('save_' + id)) { document.all('save_' + id).disabled = true; }
	}
	else {
		if (document.all('modify_' + id)) { document.all('modify_' + id).disabled = false; }
		if (document.all('enquire_' + id)) { document.all('enquire_' + id).disabled = false; }
		if (document.all('print_' + id)) { document.all('print_' + id).disabled = false; }
		if (document.all('export_' + id)) { document.all('export_' + id).disabled = false; }
		if (document.all('jobs_' + id)) { document.all('jobs_' + id).disabled = false; }
		if (document.all('notes_' + id)) { document.all('notes_' + id).disabled = false; }
		if (document.all('manualdates_' + id)) { document.all('manualdates_' + id).disabled = false; }
		if (document.all('save_' + id)) { document.all('save_' + id).disabled = false; }
	}
	
	if (g_nSelected[id] != 0 || g_bSelectAll[id]) {
		if (document.all('delete_' + id)) { document.all('delete_' + id).disabled = false; }
	}
	else {
		if (document.all('delete_' + id)) { document.all('delete_' + id).disabled = true; }
	}
	
}

function lsErrorHandler(id)
{
	//alert("Oh s***, an error. Shout at Thom.");
}


function lsRowSelectHandler(id, key)
{
	if(g_SelectedItems[id] == null) { g_SelectedItems[id] = new Array(); }
	if(g_nSelected[id] == null) { g_nSelected[id] = 0; }

	xmlSelection = window.event.XMLrecord;
	iKey = xmlSelection.selectSingleNode('./' + key).text;

	g_SelectedItems[id][g_nSelected[id]] = iKey;
	g_nSelected[id] += 1;
	
	if (g_nSelected[id] >= document.all(id).xmlList.selectNodes('//record/').length) 
	{ 
		g_bSelectAll[id] = true; 
	}
	else
	{
		g_bSelectAll[id] = false; 
	}

	lsSetButtonStatus(id);
	
}

function lsRowUnselectHandler(id, key)
{
	if(g_SelectedItems[id] == null) { g_SelectedItems[id] = new Array(); }
	if(g_nSelected[id] == null) { g_nSelected[id] = 0; }
	
	xmlSelection = window.event.XMLrecord;
	
	iKey = xmlSelection.selectSingleNode('./' + key).text;

	for(var i=0; i < g_SelectedItems[id].length; i++) {
		if(g_SelectedItems[id][i] == iKey) {
			g_SelectedItems[id].splice(i, 1);
		}	
	}
	
	if (g_nSelected[id] > 0)
	{
		g_nSelected[id] = g_nSelected[id] - 1;
	}
	
	if (g_nSelected[id] >= document.all(id).xmlList.selectNodes('//record/').length) 
	{ 
		g_bSelectAll[id] = true; 
	}
	else
	{
		g_bSelectAll[id] = false; 
	}
	
	lsSetButtonStatus(id);
}

function lsAllUnselectHandler(id, key)
{
	g_SelectedItems[id] = null;
	g_SelectedItems[id] = new Array();
	g_nSelected[id] = 0;
	g_bSelectAll[id] = false;
	lsSetButtonStatus(id);
}

function lsAllSelectHandler(id, key)
{
	if(g_SelectedItems[id] == null) { g_SelectedItems[id] = new Array(); }
	if(g_nSelected[id] == null) { g_nSelected[id] = 0; }
	
	g_bSelectAll[id] = true;
	lsSetButtonStatus(id);
}

function lsHeaderClickHandler(id)
{
	listeventform.field.value = id;
	return true;
}

function lsNewPageHandler(id)
{
	listeventform.field.value = id;
}

function lsFilterSubmitHandler(id)
{
	listeventform.field.value = id;
}

//ListSheet action handlers.
function lsActionCreate(listSheet, editPage)
{
	var args = getArgs();
	var mode = args.mode;
	if (mode == null) mode = 'application';
	editSheetForm.action = editPage + ".asp?mode=" + mode + '&area=' + args.area;
	editSheetForm.type.value = 'create';
	editSheetForm.submit();	
}

function lsActionModify(listSheet, editPage)
{
	if(g_nSelected[listSheet] == 1)
	{
		var args = getArgs();
		var mode = args.mode;
		if (mode == null) mode = 'application';
		editSheetForm.action = editPage + ".asp?mode=" + mode + '&area=' + args.area;
		editSheetForm.type.value = 'modify';
		editSheetForm.key.value = g_SelectedItems[listSheet][0];
		editSheetForm.submit();
	}
}

function lsActionMultiCreate(listSheet, editPage)
{
	var args = getArgs();
	var mode = args.mode;
	if (mode == null) mode = 'application';
	editSheetForm.action = editPage + ".asp?mode=" + mode + '&area=' + args.area;
	editSheetForm.type.value = 'create';
	if(g_SelectedItems[listSheet])
	{
		editSheetForm.key.value = g_SelectedItems[listSheet].join();
	}
	editSheetForm.submit();	
}

function lsActionEnquire(listSheet, editPage)
{
	if (g_nSelected[listSheet] == 1)
	{
		var args = getArgs();
		var mode = args.mode;
		if (mode == null) mode = 'application';
		editSheetForm.action = editPage + ".asp?mode=" + mode + '&area=' + args.area;
		editSheetForm.type.value = 'enquire';
		editSheetForm.key.value = g_SelectedItems[listSheet][0];
		editSheetForm.submit();
	}
}

function lsActionDelete(listSheet, editPage)
{
	if (g_nSelected[listSheet] < 1) return;
	
	var msg = listsheet_01;								// Some special msgs for special deletes
	if (editPage == "setup_vehicleType")
		msg = listsheet_02;
	else if (editPage == "setup_driverType")
		msg = listsheet_03;
	else if (editPage == "setup_base")
		msg = listsheet_04;

	if (confirm(msg))
	{
		var args = getArgs();
		var mode = args.mode;
		if(mode == null) { mode = 'application'; }
		editCommitForm.action = editPage + ".asp?mode=" + mode + '&area=' + args.area;
		editCommitForm.back.value = editCommitForm.config.value;
		editCommitForm.config.value = editPage;
		editCommitForm.type.value = 'delete';
		editCommitForm.key.value = g_SelectedItems[listSheet].join();
		editCommitForm.submit();
	}
}

function lsActionPrint(listSheet, editPage)
{
	if (g_nSelected[listSheet] == 1)
	{
		var args = getArgs();
		var mode = args.mode;
		if(mode == null) { mode = 'application'; }
		editSheetForm.action = editPage + ".asp?mode=" + mode + '&area=' + args.area;
		editSheetForm.type.value = 'print';
		editSheetForm.key.value = g_SelectedItems[listSheet][0];
		editSheetForm.submit();
	}
}

function getArgs()
{
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&");
	for (var i=0;i < pairs.length;i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos == -1) continue;
		var argname = pairs[i].substring(0, pos);
		var value = pairs[i].substring(pos+1);
		args[argname] = unescape(value);
	}
	return args;
}

function FiddleMeta(oList, oListMeta, sColumnPrefix, sDataField, oDataIsland)
{
	if (oDataIsland == null) oDataIsland = document.all.mainData;

	var sColumns = oDataIsland.selectSingleNode("/document/record/" + sDataField).text;
	
	var aColumns = sColumns.split(", ");
	for (var i = 0; i < aColumns.length; i++)
	{
		ShowColumn(oListMeta, sColumnPrefix + aColumns[i]);
	}
	
	oList.Initialize();
}

function ShowColumn(oMetaXML, sColumnName)
{
	try
	{
		var xmlNode = oMetaXML.selectSingleNode("listsheet/columns/column[@id='" + sColumnName + "' and @hide='yes']");
		xmlNode.attributes.removeNamedItem("hide");
	}
	catch(e)
	{}
}