// SHARED FUNCTIONS
// used by calendar, dropdown


function isValidDate( yyyy, mm, dd ) {
	if( --mm == 1 ) { // February
		if( ( yyyy % 4 ) || ( yyyy % 100 == 0 && yyyy % 400 ) ) 
			return ( dd <= 28 );
		return ( dd <= 29 );
	}
	return ( dd <= daysInMonth[ mm ] );
}

function isDefined( variable) {
	return (typeof(window[variable]) == "undefined")?  false: true;
}

function getParent(field) {
	return field.parentNode;
}


function addLoadEvent(func) {
	// Function written by Simon Willison
	// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
	// Adds events to a queue of onload events instead of overwriting
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

function bodyClick(e) {
	if (!e) var e = window.event;
	if (e.target) { targ = e.target;
	} else if (e.srcElement) { targ = e.srcElement; }
	
	if (typeof closeAllCalendars == 'function') {
		inside = false;
		calendarTarget = targ;
		while (calendarTarget.tagName != "HTML") {
			if (calendarTarget.className != "calendarobj" && calendarTarget.className != "calendarinput") {
				calendarTarget = getParent(calendarTarget);
			} else {
				inside = true;
//				clearDrop();
				return false;
				break;
			}
		}
		if (!inside)  {
			 closeAllCalendars(); 
		}
	}
	
	if (typeof clearDrop == 'function') {
		inside = false;
		dropTarget = targ;
		while (dropTarget.tagName != "HTML") {
			if (dropTarget.className != "customDrop" && dropTarget.className != "dropTarget") {
				dropTarget = getParent(dropTarget);
			} else {
				inside = true;
				
				closeAllCalendars(); 
				return false;
				break;
			}
		}
		if (!inside)  {
			 clearDrop();
		}
	}
} 

function setSelectionRange(input, selectionStart, selectionEnd) {
	// TO MOVE SELECTION TO THE END OF THE FIELD
	// setSelectionRange($(field), $(field).value.length+1, $(field).value.length+1);

	if (input.setSelectionRange) {
		input.focus();
		input.setSelectionRange(selectionStart, selectionEnd);
	} else if (input.createTextRange) {
		var range = input.createTextRange();
		range.collapse(true);
		range.moveEnd('character', selectionEnd);
		range.moveStart('character', selectionStart);
		range.select();
	}
}
