/* NOT USED YET
Generic function used to disable all buttons on a page.
Usefull in order to not allow user to press Submit button while request is processing
by the server.
*/
function submitForm(formP) {
	for(i=0; i<formP.elements.length; i++) {
		if (formP.elements[i].type=='submit' || formP.elements[i].type=='button') {
			formP.elements[i].disabled = true;
		}
	}
	return true;
}

/*
Removes all options that are not selected
*/
function removeAllUnselectedOptions(from){
	if (from){
		var len = from.options.length;
		for (var i = len-1; i >= 0; i--){
			if (!from.options[i].selected){
				removeOption(from, i);
			}
		}
	}
}//end removeAllUnselectedOptions


/*
Selects all of the options in a <select>
*/
function selectAllOptions(from){
	if (from){
		var len = from.options.length;
		for (var i = 0; i < len; i++){
			from.options[i].selected = true;
		}
	}
}//end selectAllOptions

/*
Removes an option. The first element is in a select tag is sometimes a spacer.
*/
function removeOption(from, index){
	if (from){
		from.options[index] = null;
	}
}//end removeOption

function moveSelectedOptions(from,to, sort) {
	if (from && to){
		// Move them over
		for (var i=0; i<from.options.length; i++) {
			var o = from.options[i];
			if (o.selected) {
				to.options[to.options.length] = new Option( o.text, o.value, false, false);
				}
			}
		// Delete them from original
		for (var i=(from.options.length-1); i>=0; i--) {
			var o = from.options[i];
			if (o.selected) {
				removeOption(from, i);
				}
			}
		if (sort) {
			sortSelect(from);
			sortSelect(to);
			}
		from.selectedIndex = -1;
		to.selectedIndex = -1;
	}
}//end moveSelectedOptions
	
// -------------------------------------------------------------------
// sortSelect(select_object)
//   Pass this function a SELECT object and the options will be sorted
//   by their text (display) values
// -------------------------------------------------------------------
function sortSelect(obj) {
	if(obj){
		var o = new Array();
		for (var i=0; i<obj.options.length; i++) {
			o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
		}
		o = o.sort( 
			function(a,b) { 
				if ((a.text+"").toUpperCase() < (b.text+"").toUpperCase()) { return -1; }
				if ((a.text+"").toUpperCase() > (b.text+"").toUpperCase()) { return 1; }
				return 0;
			} 
		);

		for (var i=0; i<o.length; i++) {
			obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
	}
}//end sortSelect

/*
 Remove all options in the to <select> that match values in the from <select>
*/
function removeAllOptions(fromSelect, toSelect){
	if (fromSelect && toSelect){
		var fromLen = fromSelect.options.length;
		for (var i = 0; i < fromLen; i++){
			var index = hasValue(fromSelect.options[i].value, toSelect);
			if (index > -1){
				//window.alert('From Text Value: '+fromSelect.options[i].text);
				//window.alert('To Text Value: '+toSelect.options[index].text);
				fromSelect.options[i].text = toSelect.options[index].text;
				removeOption(toSelect, index);
				//toSelect.options[index] = null;
			}
		}
	}
}//end removeAllOptions

/*
Returns the index of an option whose value matches a passed in value
*/
function hasValue(val, sel){
	var retVal = -1;
	
	if (sel){
		var len = sel.options.length;
		for (var i = 0; i < len; i++){
			if (sel.options[i].value == val){
				retVal = i;
				break;
			}
		}
	}
	
	return retVal;
}
