

/*
	Block non numeric keystrokes.
	Allow: "[0-9], [ctrl + c,v,x], [Tab], [Enter]"
*/
function isNumeric(event) { 
	event = (event) ? event : ((window.event) ? window.event : "");
	var isValid = false;
	
	if(event.keyCode == 27
		|| event.keyCode == 13 // enter
		|| event.keyCode == 9 // tab
		|| (!event.shiftKey && event.keyCode >= 48 && event.keyCode <= 57)
		|| (event.keyCode >= 96 && event.keyCode <= 105) // numeric keyboard
		|| event.keyCode == 8
		|| event.keyCode == 46
		|| event.keyCode == 39
		|| event.keyCode == 37
		|| event.keyCode == 36
		|| event.keyCode == 35
		|| (event.ctrlKey) && (event.keyCode == 67 || event.keyCode == 86 || event.keyCode == 88)) // ctrl + c,v,x
			isValid = true;
	if(!isValid)
		return false;
}

function validateSecs(event, hourObj, minObj, secObj, timeInMsObj) {
	if(secObj.value > 59) {
		var mins = Math.floor(secObj.value / 60);
		var secs =  secObj.value % 60;
		secObj.value = secs;
		minObj.value = new Number(minObj.value) + mins;
		validateMins(event, hourObj, minObj, secObj, false);
	}
	setTimeInMs(hourObj.value, minObj.value, secObj.value, timeInMsObj);
}

function validateMins(event, hourObj, minObj, secObj, timeInMsObj, setMsField) {
	if(minObj.value > 59) {
		var hours = Math.floor(minObj.value / 60);
		var mins =  minObj.value % 60;
		minObj.value = mins;
		var totH = new Number(hourObj.value) + hours;
		if(totH > 999)
		 totH = 999; 
		hourObj.value = totH;
	}
	if(setMsField)
		setTimeInMs(hourObj.value, minObj.value, secObj.value, timeInMsObj);
}

var msPerH = (60 * 60 * 1000);
var msPerM = (60 * 1000);
var msPerS = 1000;
function setTimeInMs(hours, mins, secs, timeInMsObj) {
	var h = hours.length > 0 ? hours : 0;
	var m = mins.length > 0 ? mins : 0;
	var s = secs.length > 0 ? secs : 0;
	timeInMsObj.value = (s * msPerS) + (m * msPerM) + (h * msPerH);
}