/**
 *  Find out how many days are in a month
 */

function getNumDays(month, year) {
	month = parseInt(month);
	year = parseInt(year);
	if (month >= 0 && month <= 11) {
		var A=new Date(), B=new Date();
		A.setFullYear(year);
		A.setMonth(month);
		A.setDate(28);
		var B_month = month + 1, B_year;
		if (B_month==12) {
			B_month = 0;
			B_year = year + 1;
		} else {
			B_year = year;
		}
		B.setFullYear(B_year);
		B.setMonth(B_month);
		B.setDate(1);
		var diff = B.getDay() - A.getDay();
		if (diff <= 0) diff += 7;
		return 28 + diff - 1;
	} else {
		return 0;
	}
}



/**
 *  Get selected option
 *  requires prototype.js
 */

function getSelectedOption(listName) {
	var listElem = (typeof(listName) == 'object')? listName : $(listName);
	if (listElem.nodeName.toLowerCase() == "select") {
		var N = false, opts = listElem.getElementsByTagName('option');
		var selectedNode = $A(opts).detect(function(node) {
			return node.selected;
		} );
		return selectedNode;	// null if no element matches
	} else {
		return false;	// returned if element is not a <select>
	}
}



/**
 *  Get option by value
 *  requires prototype.js
 *
 *  V can be a regex i.e. /foo/ or new RegExp('foo')
 */

function getOptionsByValue(listName, V) {
	var listElem = (typeof(listName) == 'object')? listName : $(listName);
	if (listElem.nodeName.toLowerCase() == "select") {
		if (typeof(V) != 'function')
			V = V.toString();
		var opts = listElem.getElementsByTagName('option');
		var selectedNodes = $A(opts).findAll(function(node) {
			if (typeof(V) == 'function')
				return node.value.match(V);
			else
				return node.value == V;
		} );
		return selectedNodes;	// null if no element matches
	} else {
		return false;	// returned if element is not a <select>
	}
}

// Using the above...
function setSelectValue(listName, V) {
	var selectedOption = getSelectedOption(listName);
	if (selectedOption !== false) {
		selectedOption.selected = false;
		var opts = getOptionsByValue(listName, V);
		if (opts !== null)
			opts[0].selected = true;
	}
}
