//
//  Advanced Search Scripts - Gallery Systems
//

var coll = "";
var styleobj = "";
if(is.ie){
	coll = "all.";
	styleobj = ".style"
}

var macIE = 0;
var rowCount = 5;
var currentState = new Array();
//state array
/*
0 = field
1 = operator
2 = text entry
3 = selected index
4 = thes 1/0
5 = ? historical
6 = mutipleindexes
7 = text entry b
*/

var defaultState = new Array(0, 0, '', 0, 0, 0, '', '');

//start the front of the state arrays
var currentLayerHeight = new Array(0);
var currentLayer = new Array('');

// make a call to set up the middle of the arrays dependant on how many rows
resetState();

// finish of the arrays for the button and the info layers
currentLayerHeight[rowCount + 1] = 50;
currentLayerHeight[rowCount + 2] = 50;
currentLayer[rowCount + 1] = 'buttons';
currentLayer[rowCount + 2] = 'info';

var startingPos = 232;
var leftPos = 160;
var info_Height = 100;
var truncate_text_at = 28;
var loading = false;

function f_getcookieval(offset){
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function f_getcookie(name){
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg) return f_getcookieval (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return '';
}

function f_setcookie (name, value, expires){
//alert('mi2.5');
	document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString()));
}

function resetState(){
	for(var i = 1;i<=rowCount;i++){
		currentState[i] = new Array();
		for(var j = 0;j<8;j++){
			currentState[i][j] = defaultState[j];
		}
		currentLayerHeight[i] = 50;
		currentLayer[i] = 'text_row';
	}
	return true;
}

function isInArray(arrayIn,toFind) {
	for(var i = 0;i<=arrayIn.length;i++){
		if (arrayIn[i]==toFind){
			return i;
		}
	}
	return -1;
}

function setState(row, col, value){
	var lPos
	var lSel
	if(isNaN(value)){
		lPos = value.indexOf('#',1);
	}else{
		lPos = 0
	}
	if(lPos > 0){
		value = value.substr(0, lPos);
	}

	if(col == 2 || col == 7){
		if(value=='posneg'){
			value = currentState[row][col];
		}
		if(value.length >0){
			if(!isNaN(value)){
				var tVal = parseInt(value);
				var sName = "posneg_row";
				if(col == 7){
					sName = "posnegb_row";
				}
				var oPosneg = getObject2(sName + row.toString());
				if(typeof(oPosneg) != 'undefined'){
					tVal = Math.abs(tVal);
					if(oPosneg.selectedIndex == 1){
						tVal = tVal * -1
					}
					value = tVal.toString();
				}
			}
		}
	}

	if(col<2){
		var cValue = currentState[row][col];
		if(cValue != value){
			currentState[row][col] = value;
			var startval = 0;
			if(col==1){
				startval = 3;
			}else{
				startval = col + 1;
			}
			for(var i=startval;i<currentState[row].length;i++){
				currentState[row][i] = defaultState[i];
			}
			Populate(row);
		}
	}else{
		currentState[row][col] = value;
	}
	return;
}

function storeMultiple(oMultiSelect, row){
	var lPos = 0;
	var lSel = 0;
	var value = "";
	multiVals = '';
	thisOptions = oMultiSelect.options;
	for(var i=0;i<thisOptions.length;i++){
		if(thisOptions[i].selected){
			value = thisOptions[i].value;
			if(isNaN(value)){
				lPos = value.indexOf('#',1);
			}else{
				lPos = 0
			}
			if(lPos > 0){
				value = value.substr(0, lPos);
			}
			if(multiVals.length > 0){
				multiVals += ';';
			}
			multiVals += value;
		}
	}
	setState(row, 6, multiVals);
	return;
}

function init(curState,reset) {
	var lastsearch=f_getcookie("lastadvsearch"+document.frm.profile.value);
	if (lastsearch.length!=0 && reset!=1){
		openCSV(lastsearch);
	}else{
		//TJC 9/12/2005: clear the darn cookie on a reset!
		f_setcookie("lastadvsearch"+document.frm.profile.value, "", null);

		openCSV(curState);
	}

	for(var i=1;i<=rowCount;i++){
		Populate(i);
	}
	return;
}

function Populate(row){
	var sLayers2Show = "";
	var oLayer = null;
	var aLayerList = new Array('d_combo_row','d_text_row','d_posneg_row','d_textb_row','d_posnegb_row','d_multiple_row','d_thes_row');

	if(loading){
		return false;
	}
	loading = true;
	
	//load the state into variables
	// currentState[1] = new Array(0, 0, '', 0, 0, 0, '', '');
	var selectedField = currentState[row][0];
	var selectedOperator = currentState[row][1];
	sLayers2Show = ChooseLayer(selectedField, selectedOperator)
	var aLayers=sLayers2Show.split(";");
	currentLayer[row] = 'row'+row;
	
	for(var i =0;i<aLayerList.length;i++){
		var j=isInArray(aLayers,aLayerList[i]);
		if (j>-1){
			PopulateField(selectedField,row);
			PopulateOperator(selectedField, selectedOperator, row);
			PopulateTerms(selectedField, selectedOperator, row);
			getStyleObj(aLayerList[i] + row.toString()).display='inline';
		}else{
			getStyleObj(aLayerList[i] + row.toString()).display='none';
		}
	}
	
	//for this row and all lower rows, position the layer
	for(var l = row;l<=rowCount;l++){
		var lHeight = GetHeight(sLayers2Show,l,row);
//alert("call ShowLayer, row=" + l + ", lHeight=" + lHeight);
		ShowLayer(getStyleObj('row' + l.toString()), lHeight);
	}
	
	oLayer = getStyleObj('buttons');
	lHeight = GetHeight(sLayers2Show,rowCount + 1,row);
	ShowLayer(oLayer, lHeight);
	oLayer = getStyleObj('info');
	lHeight = GetHeight(sLayers2Show,rowCount + 2,row);
	ShowLayer(oLayer, lHeight);
	loading = false;
	return;
}

function GetHeight(sLayers2Show, row, currrow){
	var myPos = startingPos;
	
	if (row==currrow){
		if (sLayers2Show.indexOf('d_multiple_row')>-1){
			currentLayerHeight[row] = 60; //multi-select
		}else{
			currentLayerHeight[row] = 30; //normal
		}
	}
	
	//where should I be?
	for(var i=1;i<row;i++){
		myPos += currentLayerHeight[i];
	}
	return myPos;
}

function PopulateTerms(selField, selOperator,row){
	var termText = currentState[row][2];
	var termSelect = currentState[row][3];
	var checkThes = currentState[row][4];
	var multiValues = currentState[row][6];
	var termTextb = currentState[row][7];

	switch(selOperator){
		case '1':case '2':case '14':case '15':  // id, text or character fields
			if(typeof(termOptions[selField]) != 'undefined'){ // if a list of options exists
				var thisArray = termOptions[selField];
				var oSelect = getObject2('combo_row' + row)
				PopulateCombo(oSelect, thisArray, termSelect);
			}else{
				if (fieldToPosNeg[selField]!= ''){
					var pnItem =0;
					if(!isNaN(termText) && termText !=''){
						var tVal = parseInt(termText);
						if(tVal < 0){
							pnItem = 1;
						}
						termText = Math.abs(termText);
					}
					var sPosNeg = fieldToPosNeg[selField];
					var aPosNeg = sPosNeg.split(';');
					var oSelect = getObject2('posneg_row' + row);
					PopulateValueCombos(oSelect,aPosNeg,pnItem);
				}
				var oTextbox = getObject2('text_row' + row)
				oTextbox.value = termText;
			}
			break;
			
		case '5':case '6':case '7': case '8': case '9': case '10':
			if (fieldToPosNeg[selField]!= ''){
				var pnItem =0;
				if(!isNaN(termText) && termText != ''){
					var tVal = parseInt(termText);
					if(tVal < 0){
						pnItem = 1;
					}
					termText = Math.abs(termText);
				}
				var sPosNeg = fieldToPosNeg[selField];
				var aPosNeg = sPosNeg.split(';');
				var oSelect = getObject2('posneg_row' + row);
				PopulateValueCombos(oSelect,aPosNeg,pnItem);
			}
			var oTextbox = getObject2('text_row' + row)
			oTextbox.value = termText;
			break;
		
		case '3': case '4':

			if (fieldToPosNeg[selField]!= ''){
				var pnItem = 0;
				if(!isNaN(termText) && termText != ''){
					var tVal = parseInt(termText);
					if(tVal < 0){
						pnItem = 1;
					}
					termText = Math.abs(termText);
				}
				var sPosNeg = fieldToPosNeg[selField];
				var aPosNeg = sPosNeg.split(';');
				var oSelect = getObject2('posneg_row' + row);
				PopulateValueCombos(oSelect,aPosNeg,pnItem);
				pnItem = 0;
				if(!isNaN(termTextb) && termTextb!=''){
					var tVal = parseInt(termTextb);
					if(tVal < 0){
						pnItem = 1;
					}
					termTextb = Math.abs(termTextb);
				}
				sPosNeg = fieldToPosNeg[selField];
				aPosNeg = sPosNeg.split(';');
				oSelect = getObject2('posnegb_row' + row);
				PopulateValueCombos(oSelect,aPosNeg,pnItem);
			}
			var oTextbox = getObject2('text_row' + row)
			oTextbox.value = termText;
			oTextbox = getObject2('textb_row' + row)
			oTextbox.value = termTextb;
			break;
			
		case '12':case '13':
			if(fieldstoOperators[selField]==5){
				if(typeof(termOptions[selField]) != 'undefined'){ // if a list of options exists
					var thisArray = termOptions[selField];
					var oSelect = getObject2('multiple_row' + row)
					PopulateMultiCombo(oSelect, thisArray, multiValues);
				}
			}else{
				var oTextbox = getObject2('text_row' + row)
				oTextbox.value = termText;
			}
			break;
			
		default :
			var oTextbox = getObject2('text_row' + row)
			oTextbox.value = "";
			break;
		}
	return;
}

function ChooseLayer(field, oper){
	//modified - returns a ; delim list of the layers to show
	var DefaultLayer = "d_text_row";
	var sLayer = "";

	if(oper==0){
		sLayer = DefaultLayer;
	}else{
		// well the field must have been chosen so double check....
		if(field==0){
			sLayer = DefaultLayer;
		}else{

			switch(oper){
				case '1':case '2':case '14':case '15':  // id, text or character fields
					if(typeof(termOptions[field]) != 'undefined'){ // if a list of options exists
						sLayer = "d_combo_row";
					}else{
						if (fieldToPosNeg[field]== ''){
							sLayer = "d_text_row";
						}else{
							sLayer = "d_text_row;d_posneg_row";
						}
					}
					break;

				case '5':case '6':case '7': case '8': case '9': case '10':
					if (fieldToPosNeg[field]== ''){
						sLayer = "d_text_row";
					}else{
						sLayer = "d_text_row;d_posneg_row";;
					}
					break;

				case '3': case '4':
					if (fieldToPosNeg[field]== ''){
						sLayer = "d_text_row;d_textb_row";
					}else{
						sLayer = "d_text_row;d_posneg_row;d_textb_row;d_posnegb_row";
					}
					break;

				case '12':case '13':
					if(fieldstoOperators[field]==5){
						sLayer = "d_multiple_row";
					}else{
						sLayer = "d_text_row";
					}
					break;

				default :
					sLayer = "d_text_row";
					break;

			}

			if(fieldToThes[field] == 1){
				sLayer += ";d_thes_row";
			}
		}
	}
	return sLayer;
}

function PopulateField(selField, row){
	var oSelect = getObject2('field_row' + row)
	PopulateCombo(oSelect, listofFields, selField);
	return;
}

function PopulateOperator(selField, selOperator, row){
	var oSelect = getObject2('operator_row' + row);
	var opList = listsofOperators[fieldstoOperators[selField]];
	PopulateArrayCombos(oSelect, opList, selOperator);
	return;
}

function PopulateMultiCombo(oSelect, opts, multiValues){
	if(is.ie){
		for(var j=oSelect.options.length-1;j>=0;j-=1){
			oSelect.options.remove(j);
	  	}
		for(var i=0;i<opts.length;i++){
			if(typeof(opts[i])!='undefined'){
				var bMatch;
				var as;
				as = multiValues.split(';');
		  		for(var k = 0;k<as.length;k++){
					if(as[k]==i){
			  			bMatch = true;
			  			break;
					}else{
			  			bMatch = false;
					}
				}
				var newOpt = document.createElement("OPTION");
				var currentText = opts[i].toString();
				if(currentText.length > truncate_text_at){
					currentText = currentText.substr(0,truncate_text_at-3) + '...';
				}
				newOpt.text = currentText;
				newOpt.value = i.toString() + '#' + opts[i].toString();
				if(bMatch){
					newOpt.selected = true;
				}
				oSelect.options.add(newOpt);
			}
		}
	}
	if(is.ns){ // not available in nn so single select
		for(var i=0;i<opts.length;i++){
			if(typeof(opts[i])!='undefined'){
				var bMatch;
				var as;
				as = multiValues.split(';');
				for(var k = 0;k<as.length;k++){
					if(as[k]==i){
						bMatch = true;
						break;
					}else{
						bMatch = false;
					}
				}

				if(bMatch){
					oSelect.options[i] = new Option(opts[i].toString(),i.toString() + '#' + opts[i].toString(),false,true);
				}else{
					oSelect.options[i] = new Option(opts[i].toString(),i.toString() + '#' + opts[i].toString(),false,false);
				}
			}
		}
	}
	return;
}

function PopulateCombo (oSelect, opts, selItem){

	for(var i=0;i<opts.length;i++){
		if(typeof(opts[i])!='undefined'){
			oSelect.options[i] = new Option(opts[i].toString(),i.toString() + '#' + opts[i].toString(),false,false);
			if (i==selItem){
				oSelect.selectedIndex = selItem.toString();
			}
		}
	}

	return;
}

function PopulateValueCombos (oSelect, opts, selItem){
	if(is.ie){
		for(var j=oSelect.options.length-1;j>=0;j-=1){
			oSelect.options.remove(j);
		}
		for(var i=0;i<opts.length;i++){
			if(typeof(opts[i])!='undefined'){
				var newOpt = document.createElement("OPTION");
				var currentText = opts[i].toString();
			if(currentText.length > truncate_text_at){
				currentText = currentText.substr(0,truncate_text_at-3) + '...';
			}
			newOpt.text = currentText;
			newOpt.value = i.toString() + '#' + opts[i].toString();
			if(i==selItem){
				newOpt.selected = true;
			}
			oSelect.options.add(newOpt);
		}
	}
	}else{
		if(is.ns){
			var pos = 0;
			for(var i=0;i<opts.length;i++){
				if(typeof(opts[i])!='undefined'){
					oSelect.options[pos] = new Option(opts[i].toString(),i.toString() + '#' + opts[i].toString());
					pos++;
				}
			}
			pos=0;
			for(var i=0;i<opts.length;i++){
				if(typeof(opts[i])!='undefined'){
					if(i==selItem){
						if(is.ns4){
							oSelect.options[pos].selected = true;
						}else{
							oSelect.selectedIndex = pos;
						}
					}
					pos++
				}
			}
		}
	}
	return;
}

function PopulateArrayCombos (oSelect, opts, selItem){
	if(is.ie){
		for(var j=oSelect.options.length-1;j>=0;j-=1){
			oSelect.options.remove(j);
		}
		for(var i=0;i<opts.length;i++){
			if(typeof(opts[i])!='undefined'){
				var optArray = opts[i];
				var newOpt = document.createElement("OPTION");
				var currentText = optArray[1].toString();
				if(currentText.length > truncate_text_at){
					currentText = currentText.substr(0,truncate_text_at-3) + '...';
				}
				newOpt.text = currentText;
				newOpt.value = optArray[0].toString() + '#' + optArray[1].toString();
				if(optArray[0]==selItem){
					newOpt.selected = true;
				}
				oSelect.options.add(newOpt);
			}
		}
	}else{
		if(is.ns){
			var pos = 0;
			for(var i=0;i<opts.length;i++){
				if(typeof(opts[i])!='undefined'){
					var optArray = opts[i];
					oSelect.options[pos] = new Option(optArray[1].toString(),optArray[0].toString() + '#' + optArray[1].toString());
					pos++;
				}
			}
			pos=0;
			for(var i=0;i<opts.length;i++){
				if(typeof(opts[i])!='undefined'){
					var optArray = opts[i];
					if(optArray[0]==selItem){
						if(is.ns4){
							oSelect.options[pos].selected = true;
						}else{
							oSelect.selectedIndex = pos;
						}
					}
					pos++
				}
			}
		}
	}
	return;
}

function ShowLayer(styleObj, lHeight){
//alert("ShowLayer Start: lHeight=" + lHeight);
	styleObj.top = lHeight+'px';
	styleObj.left=leftPos+'px';
	styleObj.visibility='visible';
//alert("ShowLayer End: top=" + styleObj.top);
	return;
}

function getStyleObj(obj){
	if(typeof obj == "string"){
		return document.getElementById(obj).style;
	}else{
		return obj;
	}
}

function getObject2(obj){
	if(typeof obj == "string"){
		return document.getElementById(obj);
	}else{
		return obj;
	}
}

function DoAdvSearch(){
	// go through each layer and grab the current values
	// assign them to the form with the fields and then
	// submit the form
	
	var sSearchCriteria = "";
	for(var i = 1;i<=rowCount;i++){

		var sLayer = currentLayer[i];
		var field = currentState[i][0];
		var sField = "";
		var sValue = "";
		var sValueb = "";
		var sThes = currentState[i][4];
		var sOperator = "";
		var operator = currentState[i][1];
		var oSelect = null;
		var sI = i.toString();

		sLayer += sI;

		if(sThes == "1"){
			sThes = "1";
		}else{
			sThes = "0";
		}

		sField = getSelectedText('field_row' + sI);
		sOperator = getSelectedText('operator_row' + sI);
			
		if(field!=0 && operator!=0){
		    // both the field and operator are set so need to know more
		    switch(operator){ //which operator
			case '1': case '2': case '12': case '13': case '14': case '15':  // id, text or character fields
				if(typeof(termOptions[field]) != 'undefined'){
					// if a list of options exists
					if(operator == '12' || operator == '13'){
						sValue = getSelectedText("multiple_row" + sI);
					}else{
						sValue = getSelectedText("combo_row" + sI);
					}
				}else{
					sValue = getTermText("text_row" + sI);
					if (fieldToPosNeg[field]!= '' && isNaN(sValue)==false){
						var sIndexes = "";
						sIndexes = getSelectedIndex("posneg_row" + sI);
						// should always be 1 or 0
						if(sIndexes == "1"){
							lValue = parseInt(sValue);
							lValue = lValue * -1;
							sValue = lValue.toString();
						}
					}
					if(isNaN(sValue)){
						sValue = sValue.replace("'","''");
					}
				}
				break;

			case '5':case '6':case '7': case '8': case '9': case '10':
				sValue = getTermText("text_row" + sI);
				if (fieldToPosNeg[field]!= '' && isNaN(sValue)==false){
					var sIndexes = "";
					sIndexes = getSelectedIndex("posneg_row" + sI);
					// should always be 1 or 0
					if(sIndexes == "1"){
						lValue = parseInt(sValue);
						lValue = lValue * -1;
						sValue = lValue.toString();
					}
				}
				if(isNaN(sValue)){
					sValue = sValue.replace("'","''");
				}
				break;

			case '3': case '4':
				sValue = getTermText("text_row" + sI);
				sValueb = getTermText("textb_row" + sI);
				if (fieldToPosNeg[field]!= '' && isNaN(sValue)==false){
					var sIndexes = "";
					sIndexes = getSelectedIndex("posneg_row" + sI);
					// should always be 1 or 0
					if(sIndexes == "1"){
						lValue = parseInt(sValue);
						lValue = lValue * -1;
						sValue = lValue.toString();
					}
				}

				if (fieldToPosNeg[field]!= '' && isNaN(sValueb)==false){
					var sIndexes = "";
					sIndexes = getSelectedIndex("posnegb_row" + sI);
					// should always be 1 or 0
					if(sIndexes == "1"){
						lValue = parseInt(sValueb);
						lValue = lValue * -1;
						sValueb = lValue.toString();
					}
				}
				if(sValue.length>0 && sValueb.length>0){
					sValue = sValue + ";" + sValueb;
				}else{
					sValue = "";
				}
				if(isNaN(sValue)){
					sValue = sValue.replace("'","''");
				}
				break;

			default :
				sValue = "";
				break;
		    }
		}

		if(sField != "" && sOperator != "" && sValue != ""){
			if(sSearchCriteria.length>0){
				sSearchCriteria += "/,/";
			}
			// escaping is now performed on entering the jscript
			//sField = sField.replace("'","''");
			sSearchCriteria +=  sField + "/,/";
			//sOperator = sOperator.replace("'","''");
			sSearchCriteria += sOperator + "/,/";
			//sValue = sValue.replace("'","''");
			sSearchCriteria += sValue.replace(/&/gi,"^^") + "/,/";
			sSearchCriteria += sThes;
			sSearchCriteria += "/,/0";
		}
	}

	// start audio modifications raj
	// update 2/2/2009 TJC: raj's programming does not allow for multiple media choices - they come across as
	//			mutually exclusive.  Until I have time to dig deep and find a solution, I am changing
	//			the checkboxes (in html/includes/rows.html) to radio buttons to accurately reflect
	//			the programming under the hood.
 	    //var image = document.audio_select.image.checked;
 	    //var audio = document.audio_select.audio.checked;
	    //var video = document.audio_select.video.checked;
	    var image = false;
	    var audio = false;
	    var video = false;

	    // determine if one of the radio buttons has been selected
	    for( i=0; i<document.mediaSelect.mediaFormat.length; i++ ){
		if( document.mediaSelect.mediaFormat[i].checked ){
		    switch( document.mediaSelect.mediaFormat[i].value ){
			case 'image': image=true; break;
			case 'audio': audio=true; break;
			case 'video': video=true; break;
		    }
		}
	    }
		
		if (image == true) {
		    if (sSearchCriteria.length>0) { 
			sSearchCriteria = sSearchCriteria + "/,/mediatype/,/is/,/image/,/0/,/0";
		    } else if (sSearchCriteria.length==0) {
			sSearchCriteria = sSearchCriteria + "mediatype/,/is/,/image/,/0/,/0";
		    }
		}
		
		if (audio == true) {
		    if (sSearchCriteria.length>0) { 
			sSearchCriteria = sSearchCriteria + "/,/mediatype/,/is/,/audio/,/0/,/0";
		    } else if (sSearchCriteria.length==0) {
			sSearchCriteria = sSearchCriteria + "mediatype/,/is/,/audio/,/0/,/0";
		    }
		}
			
		if (video == true) {
		    if (sSearchCriteria.length>0) { 
			sSearchCriteria = sSearchCriteria + "/,/mediatype/,/is/,/video/,/0/,/0";
		    } else if (sSearchCriteria.length==0) {
			sSearchCriteria = sSearchCriteria + "mediatype/,/is/,/video/,/0/,/0";
		    }
		}

		//alert(sSearchCriteria);
	
	// ok submit the form that holds all our stuff
	if (sSearchCriteria.length>0){
		//NOTE: Changing the form action here may cause problems if the user runs a search, then clicks the back button, then attempts to use the quick search box in the advanced search page.
		document.frm.emu_action.value = "advsearch";
		// finally stash the criteria and the state
		var sState = getCSV();
	
		if (window.encodeURIComponent){
			document.frm.action = "emuseum.asp?newaction=advsearch&rawsearch=" + encodeURIComponent(sSearchCriteria) + "&currentstate" + document.frm.profile.value + "=" + sState;
		}else{
			document.frm.action = "emuseum.asp?newaction=advsearch&rawsearch=" + escape(sSearchCriteria) + "&currentstate" + document.frm.profile.value + "=" + sState;
		}
		f_setcookie("lastadvsearch"+document.frm.profile.value,sState,null); 
		document.frm.submit();
		return false;
	}
}

function donot(){
	return false;
}

function getSelectedText(objName){
	var oSelect = getObject2(objName);
	var sSelected = "";
	if(oSelect != 'undefined'){
		// 0 should always be "Choose..."
		for(var i=1;i<oSelect.options.length;i++){
			if(oSelect.options[i].selected){
				if(sSelected.length > 0){
					sSelected += ";";
				}		
				var currText = oSelect.options[i].value.toString()
				var hashpos = currText.indexOf('#');
				if(hashpos > -1){
					currText = currText.substr(hashpos + 1);
				}
				sSelected += currText;
			}
		}
	}
	return sSelected;
}

function getSelectedIndex(objName){
	var oSelect = getObject2(objName);
	var sSelected = "";

	if(oSelect != 'undefined'){
		// 0 should always be "Choose..."
		for(var i=1;i<oSelect.options.length;i++){
			if(oSelect.options[i].selected){
				if(sSelected.length > 0){
					sSelected += ";";
				}
				sSelected += oSelect.options[i].index;
			}
		}
	}
	return sSelected;
}

function getTermText(objName){
	var oText = getObject2(objName);
	var sValue = "";

	if(oText != 'undefined'){
		sValue = oText.value;
	}
	return sValue;
}


function getCSV(){
	var s="";
	for(var j = 1;j<=rowCount; j++){
		for(var i=0; i<=7;i++){
			if(s.length > 0){
				s += ",";
			}
			s += currentState[j][i].toString();
		}
	}
	return s;
}

function openCSV(s){
	var as;
	as = s.split(',');
	var count = 0;

	for(var j = 1;j<=rowCount; j++){
		for(var i=0; i<=7;i++){
			if(s==''){
				if(i==2 || i== 6 || i == 7){
					currentState[j][i] = '';
				}else{
					currentState[j][i] = 0;
				}
			}else{
				if(count < s.length -1){
					currentState[j][i] = as[count];
					count++;
				}else{
					if(i==2 || i== 6 || i == 7){
						currentState[j][i] = '';
					}else{
						currentState[j][i] = 0;
					}
					count++;
				}
			}
		}
	}
	return;
}

if(document.layers){
    origWidth=innerWidth;
    origHeight=innerHeight;
    onresize=function(){
	if(innerWidth!=origWidth||innerHeight!=origHeight){
		location.reload();
	}
   }

}
