//pre-load images
var aRoomNames = new Array();
var aRoomText = new Array();
var aRoomChecked = new Array();
var aRoomIDs = new Array();
var aRoomAssoc = new Array();

function imgOn(elemName, imgName)	{ document[elemName].src = eval("img" + imgName + "On.src"); }
function imgOff(elemName, imgName)	{ document[elemName].src = eval("img" + imgName + "Off.src"); }
function setSmokingOption(oCtrl, sSmokingCtrl) {
	if (oCtrl.options[oCtrl.selectedIndex].name == "optSmokingYes") {
		document.formMain.elements[sSmokingCtrl].value = "on";
	} else {
		document.formMain.elements[sSmokingCtrl].value = "off";
	}
}
		
function bracketTokenizer(sIn, cTok) {
	var nIdx = 0;
	var i = 0;
	var aOut = new Array();

	if (sIn == "") return aOut;
				
	while (nIdx >= 0) {
		if (i != 0) { nIdx++; }
		nTemp = sIn.indexOf(cTok, nIdx)
		if (nTemp < 0) {
			aOut[i] = sIn.substring(nIdx+1);		//assumes a preceding bracket character
		} else {
			aOut[i] = sIn.substring(nIdx+1, nTemp);	//assumes a preceding bracket character
		}
		nIdx = nTemp;
		i++;
	}
	return aOut;
}
		
function simpTokenizer(sIn, cTok) {
	var nIdx = 0;
	var i = 0;
	var aOut = new Array();

	if (sIn == "") return aOut;
				
	while (nIdx >= 0) {
		if (i != 0) { nIdx++; }
		nTemp = sIn.indexOf(cTok, nIdx)
		if (nTemp < 0) {
			aOut[i] = sIn.substring(nIdx);
		} else {
			aOut[i] = sIn.substring(nIdx, nTemp);
		}
		nIdx = nTemp;
		i++;
	}
	return aOut;
}
		
function buildRoomArrays() {
	var sRoomNames = new String(document.formMain.roomNames.value);
	var sRoomText = new String(document.formMain.roomText.value);
	var sRoomChecked = new String(document.formMain.roomChecked.value);
	var sRoomIDs = new String(document.formMain.roomIDs.value);
	var sRoomAssoc = new String(document.formMain.roomAssoc.value);

	aRoomNames = bracketTokenizer(sRoomNames, "]");
	aRoomText = bracketTokenizer(sRoomText, "]");
	aRoomChecked = bracketTokenizer(sRoomChecked, "]");
	aRoomIDs = bracketTokenizer(sRoomIDs, "]");
	aRoomAssoc = bracketTokenizer(sRoomAssoc, "]");
}
		
function updateRoomTypes() {
	var form = document.formMain;

	//determine selected facility types
	var sFacs = new String();
	for (var i=0; i < form.elements.length; i++) {
		if ((form.elements[i].name.substring(0, 10) == "chkFacType") && (form.elements[i].checked)) {
			sFacs += "[" + form.elements[i].name.substring(10) + "]";		//remove 'chkFacType' to get fac type id, enclose with "[]"
		}
	}
	var aAssoc = new Array();			
	var bFound = false;
	var oOption;
	var nIdx = 0;
	var sCurOpt = form.lstRoomTypes.options[form.lstRoomTypes.selectedIndex].value;

	for (var i=0; i < aRoomNames.length; i++) {
		if (sFacs == "") {
			bFound = true;
		} else {
			bFound = false;
			aAssoc = simpTokenizer(aRoomAssoc[i], ":");
			for (var j=0; !bFound && j < aAssoc.length; j++) {
				bFound = (sFacs.indexOf("[" + aAssoc[j] + "]") >= 0);
			}
		}
		if (bFound) {
			oOption = new Option(aRoomText[i], aRoomNames[i], false, aRoomChecked[i]);
			form.lstRoomTypes.options[++nIdx] = oOption;
		}
	}
	nIdx++;

	//Clear old options from the list.		
	while (form.lstRoomTypes.length > nIdx) {
		form.lstRoomTypes.options[form.lstRoomTypes.length-1] = null
	}
	
	bFound = false;
	for (var i=0; !bFound && i < form.lstRoomTypes.length; i++) {
		if (form.lstRoomTypes.options[i].value == sCurOpt) {
			form.lstRoomTypes.options[i].selected = true;
			bFound = true;
		}
	}

	if (!bFound) { form.lstRoomTypes.options[0].selected = true; }
}

function loadRoomTypes() {
	var form = document.formMain;

	//determine selected facility types
	var sFacs = new String();
	for (var i=0; i < form.elements.length; i++) {
		if ((form.elements[i].name.substring(0, 10) == "chkFacType") && (form.elements[i].checked)) {
			sFacs += "[" + form.elements[i].name.substring(10) + "]";		//remove 'chkFacType' to get fac type id, leave trailing ']'
		}
	}

	var aAssoc = new Array();			
	var bFound = false;
	var oOption;
	var nIdx = 0;
	var nSelIdx = 0;

	for (var i=0; i < aRoomNames.length; i++) {
		if (sFacs == "") {
			bFound = true;
		} else {
			bFound = false;
			aAssoc = simpTokenizer(aRoomAssoc[i], ":");
			for (var j=0; !bFound && j < aAssoc.length; j++) {
				bFound = (sFacs.indexOf("[" + aAssoc[j] + "]") >= 0);
			}
		}
		if (bFound) {
			oOption = new Option(aRoomText[i], aRoomNames[i], false, aRoomChecked[i]);
			form.lstRoomTypes.options[++nIdx] = oOption;
			if (aRoomChecked[i] == "true") {
				nSelIdx = nIdx;
			}
		}
	}
	nIdx++;

	//Clear old options from the list.		
	while (form.lstRoomTypes.length > nIdx) {
		form.lstRoomTypes.options[form.lstRoomTypes.length-1] = null
	}
	
	form.lstRoomTypes.options[nSelIdx].selected = true;
}


