var selectFieldLength = "single";

function divWrite(divId,text) {
  if (document.layers) {
    var div = document.layers[divId].document;
    div.open();
    div.write(text);
    div.close();
   } else {
   if (document.getElementById || document.all) {
       var el = document.getElementById? document.getElementById(divId): document.all[divId];
       if (el && typeof el.innerHTML != "undefined") el.innerHTML = text;
     }
   }
} 

function emptySelect(formSelect) {
    var x;
    //alert("emptySelect("+formSelect+")");
    if(formSelect)
    {
    	for (x = formSelect.options.length; x >= 0; x=x-1) {
        	formSelect.options[x] = null;
    	}
    	formSelect.style.display = "none";    
	}
}

function hideFinal(finalValue,fieldPrefix)  {
    finalValue.value = "";
    finalValue.style.display = "none";
    divWrite(fieldPrefix + 'finaldisplay','');
}

function populateSelect(level,destSelect,itemArray,fieldPrefix,fieldLength) {
    var i, j;
    var prompt;
    //alert("fieldLength = "+fieldLength+"; level = "+level);
    if (level>0)
    {
    	if (fieldLength=='multiple')
    	{
    		destSelect.size = 5;
    		destSelect.multiple = true;
    	} else {
    		destSelect.size = 1;
    		destSelect.multiple = false;
		}
	}
	prompt = (itemArray != null) ? itemArray[0] : null;
    if (prompt == null) {
        j = 0;
    } else {
        destSelect.options[0] = new Option('Select...');
        var nextLevel = level + 1;
        divWrite(fieldPrefix + nextLevel + 'prompt',prompt);
		j = 1;
    }	
	for (i = 1; i < itemArray.length; i++) {
		destSelect.options[j] = new Option(itemArray[i][1]);
		if (itemArray[i] != null) {
			destSelect.options[j].value = itemArray[i][0];
		}
		j++;
	}
}

/*
function multiSelect(level, srcSelect, destSelect, itemArray, fieldPrefix,fieldLength) {
	emptySelect(destSelect);
	if (itemArray != null) {
        	populateSelect(level, destSelect,itemArray,fieldPrefix,fieldLength,fieldLength);
		if (selectFieldLength=="single")
			destSelect.options[0].selected = true;
		destSelect.style.display = "inline";
	}
}
*/
function multiSelect(level, srcSelect, destSelect, itemArray, fieldPrefix,fieldLength) {
	//alert("multiSelect("+level+","+srcSelect+","+destSelect+","+itemArray+","+fieldPrefix+","+fieldLength+")");
	emptySelect(destSelect);
	var count = 0;
	for (i=0;i<srcSelect.length;i++) {
		if (srcSelect.checked&&srcSelect.value!="Select...") {
			count++;
		}
	}
	if (count<=1) {
		if (itemArray != null) {
			populateSelect(level, destSelect,itemArray,fieldPrefix,fieldLength,fieldLength);
			if (selectFieldLength=="single")
				destSelect.options[0].selected = true;
			destSelect.style.display = "inline";
		}
	}
}

function changeMultiSelect(srcSelect,level,levels,fieldPrefix) {   
	var fieldName;
	var destArray;
	var finalField = srcSelect.form.elements[fieldPrefix + 'final'];
	var multipleSelected = false;
	var count = 0;

	if (selectFieldLength == "multiple") {
    	count = 0;
    	for (i=1;i<srcSelect.length;i++) { if (srcSelect[i].selected) { count++; } }
    	if (count>1) multipleSelected = true;
    }
	//alert ("changeMultiSelect("+srcSelect+","+level+","+levels+","+fieldPrefix+") count = "+count+"; multipleSelected = "+multipleSelected);
	if (!multipleSelected)
	{
		for (x = level + 2; x <= levels; x=x+1)
		{
        	fieldName = fieldPrefix + x;
        	//alert("for loop = "+level+"; fieldName = "+fieldName);
        	emptySelect(srcSelect.form.elements[fieldName]);
        	divWrite(fieldPrefix + x + 'prompt','');
    	}    
    	if (level+1 <= levels)
    	{
        	//alert(level+1);
        	fieldName = fieldPrefix + (level + 1);
        	if (srcSelect.selectedIndex == 0)
        	{
            	destArray = null;
            	divWrite(fieldPrefix + (level + 1) + 'prompt','');
			} else {
            	if (level > 1)
            	{
                	var tmpFieldName = fieldPrefix + 1;
                	destArray = selectValues[srcSelect.form.elements[tmpFieldName].selectedIndex][2];
                	for (x = 2; x <= level; x=x+1) {
                    	tmpFieldName = fieldPrefix + x;
                    	destArray = destArray[srcSelect.form.elements[tmpFieldName].selectedIndex][2]                    
                	}
            	} else {
                	destArray = selectValues[srcSelect.selectedIndex][2];
            	}
            }
        }
        //alert("calling... multiSelect("+level+","+srcSelect+","+srcSelect.form.elements[fieldName]+","+destArray+","+fieldPrefix+","+selectFieldLength+")");
        multiSelect(level,srcSelect,srcSelect.form.elements[fieldName],destArray,fieldPrefix,selectFieldLength);
    }
}

function initMultiSelect(selectForm,fieldPrefix,fieldLength)
{
	var fieldName = fieldPrefix + 1;
	selectFieldLength = fieldLength;
	//alert("initMultiSelect ... populateSelect(0,selectForm.elements["+fieldName+"],"+selectValues+","+fieldPrefix+","+fieldLength+")");
	populateSelect(0,selectForm.elements[fieldName],selectValues,fieldPrefix,fieldLength);
	selectForm.elements[fieldName].style.display = "inline";
	selectForm.elements[fieldPrefix+'2'].style.display = "none";
	selectForm.elements[fieldPrefix+'3'].style.display = "none";
	selectForm.elements[fieldPrefix+'4'].style.display = "none";
	divWrite(fieldPrefix + '2prompt','');
	divWrite(fieldPrefix + '3prompt','');
}

function submitForm(form)
{
	var yearOK = false;
	var countryOK = false;
	var strandOK = false;

	if (form.level2.selectedIndex!=0)
		strandOK = true;
	if (!strandOK) {
		msg = "Please select a Strand.";
	}
	for (i=0;i<form.country.length;i++)
	{
		if (form.country[i].checked == true)
			{
			countryOK = true;
			break;
		}
	}
	if (!countryOK) {
		msg = "Please select a Country.";
	}
	if (form.level1.selectedIndex!=0)
		yearOK = true;
	if (!yearOK) {
		msg = "Please select a Year.";
	}
	if (yearOK&&countryOK&&strandOK)
	{
		return true;
	} else {
		alert(msg);
		return false;
	}
}

