var NS4 = (document.layers)	? true : false;
var DOM = (document.getElementById)	? true : false;

function clearSelect(objSelect){

	var iCount=0;

	if(!objSelect) return;

	iCount = objSelect.options.length;
	for(var i=0;i<iCount;i++){
	
		if(DOM) {
			objSelect.options[0]	= null;
		} else if(NS4) {
			objSelect.options[0]=null;
		}
	}
}

function addOptions(objSelect, arrList, parent, szDefault){

	var elOption;

	var idxSelect=0;	

	//check arguments.
	if((!arrList) || (!objSelect)) {
		return;		
	}
	if(parent.length <=	0) {
		return;
	}
	
	//now looop through all the list items only entering relevant options.
	clearSelect(objSelect);	

	//add a blank list
	elBlankOption = new Option();

	elBlankOption.text = "Select...";

	if(NS4) {
		objSelect.options[0] = elBlankOption;
	} else if(DOM) {
		objSelect.options.add(elBlankOption,0);
	}
	
	elBlankOption.value = "0";
	
	idxSelect++;

	for(var i = 0; i < arrList.length; i++) {		
		//only the child entries of the parent				
		if(arrList[i][2] == parent) {									
			elOption = new Option();
			elOption.value					= arrList[i][0];			
			elOption.text					= arrList[i][1];
			//now IE and NS have a different way to handle object creation.
			if(NS4) {						
				objSelect.options[idxSelect]	= elOption;
			} else if(DOM) {				
				objSelect.options.add(elOption, idxSelect);				
			}						
			if(szDefault != null && szDefault == elOption.value) {
				elOption.selected			= true;
			}
			idxSelect++;
			delete(elOption);
		}			
	}	
}

function clearOptions(szSelect,szForm) {

	if(szSelect.length <= 0 || szForm.length <=0) {
		alert("error:clearOption must pass arguments");	
	}
	if(DOM) {
		clearSelect(document.getElementById(szSelect));
	} else if(NS4) {
		clearSelect(eval('document.' + szForm + '.' + szSelect));
	}
}

function listAllOptions(szSelect,szForm,arrList){

	var elOption;
	var idxSelect=0;
	var objSelect = new Object();	

	//check arguments.
	if(!arrList) {
		return;			
	}
	if(DOM) {
		objSelect = document.getElementById(szSelect);
	} else if(NS4) {
		objSelect = eval('document.' + szForm + '.' + szSelect);
	}
	
	if(!objSelect) {
		return;			
	}	

	//now looop through all the list items entering all
	clearSelect(objSelect);

	for(var i=0;i<arrList.length;i++) {							
		elOption = new Option();

		//now IE and NS have a different way to handle object creation.
		if(NS4) {
			elOption.value 					= arrList[i][0];
			elOption.text 					= arrList[i][1];
			objSelect.options[idxSelect] 	= elOption;
		} else if(DOM) {				
			elOption.value 					= arrList[i][0];
			elOption.text 					= arrList[i][1];
			objSelect.options.add(elOption,idxSelect);				
		}						

		idxSelect++;
		delete(elOption);					
	}	
}

function UpdateSelect(szSelect,szForm,szParent,arrList,szDefault) {
	
	clearOptions(szSelect, szForm);
	if(DOM) {
		addOptions(document.getElementById(szSelect),arrList,szParent,szDefault);
	} else if(NS4) {
		addOptions(eval('document.' + szForm + '.' + szSelect),arrList,szParent,szDefault);
	}
}