/**************************************************

	File: helpers.js

	Description: form validation jscript helper functions
	
	author: gc
	last update: 12/10/2000

**************************************************/

// function: isValidDate
// descrip:  verify given date format
//			 supported formats: mm/dd/yyyy
// returns:  true if date is valid, false otherwise

function isValidDate(dateStr) {
// To require a 4 digit year entry, use this line instead:
//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

// To require a 2 digit year entry, use this line instead:
 var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
return false;
}
month = matchArray[1]; // parse date into variables
day = matchArray[3];
year = matchArray[4];
if (month < 1 || month > 12) { // check month range
return false;
}
if (day < 1 || day > 31) {
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
return false;
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
return false;
   }
}
return true;  // date is valid
}




// function: isDate
// descrip:  verify given date format
//			 supported formats: mm/dd/yy or mm/dd/yyyy
// returns:  true if date is valid, false otherwise

function isDate(s) {
	var er = 'Invalid date. Please verify date format (mm/dd/yyyy).';
	if ('' == s)
		return ('');
		
	if (s.length > 10 || s.length < 6) 
		return (er); 
	
	// search for first slash
	var i = s.indexOf('/', 0);
	if (0 == i) 
		return (er);
		
	var m = parseInt(s.substr(0, i), 10);
	// search for second slash
	var ii = i + 1;
	i = s.indexOf('/', ii);
	if (0 == i) 
		return (er); 
		
	var d = parseInt(s.substr(ii, i - ii), 10);
	var y = parseInt(s.substr(++i, s.length - i), 10);
		
	// test for numbers
	if ( isNaN(m) || isNaN(d)	|| isNaN(y) ) 
		return (er);
		
	// test month range
	if ( m < 1 || m > 12 ) 
		return (er);

	// test year value
	if ( y > 9999 ) 
		return (er);

		
	// test days range
	switch (m) {
	case 1, 3, 5, 7, 8, 10, 12:
		if ( d < 1 || d > 31 ) { return (er); }
		
	case 4, 6, 9, 11:
		if ( d < 1 || d > 31 ) { return (er); }
		
	case 2:
		var dd = 28;
		if ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) { dd++; }
		if ( d < 1 || d > dd ) { return (er); }
	}
	return ('');
}

// function: isText
// descrip:  verify that text string is not empty or spaces only
// returns:  empty string if text is not empty, error message otherwise

function isText(s) {
	
	var er = 'Required field is empty! Please enter a value.';
	
	var sc = s;
	//alert('before value: "' + sc + '"'); 
	
	
	var i = sc.indexOf(' ', 0);
	while (i == 0) {		
		sc = sc.substr(1, sc.length);
		//alert('Input value: "' + sc + '"'); 
		i = sc.indexOf(' ', 0);
	}
		//alert('after value: "' + sc + '"'); 
	
//	alert('first spae value: "' + s + '"'); 

	if (sc == '')
		return (er);
			
	return ('');
}

// function: today
// descrip:  return system's date
// returns:  true if date is valid, false otherwise
	
function today() {
	var dt = new Date();
	var m = 1 + dt.getMonth();
	var d = dt.getDate();
	var y = dt.getFullYear();
		
	return (m + '/' + d + '/' + y);
}


// function: isNumber
// descrip:  check if given string is a valid number and
//			 optionally, within the given range
// returns:  empty string if successful, error message otherwise
	
function isNumber(s, min, max) {
	if (isNaN(s))
		return ('Invalid number! Please modify it.');
	
	min = parseInt(min, 10);
	max = parseInt(max, 10);
	if (0 == min && 0 == max) {
	}
	else {
		var i = parseInt(s, 10);
		if (i < min || i > max)
			return ('Number out of range. Please enter a number between ' + min + ' and ' + max) ;
	}
	return ('');
}


function confirmDeletion(sVerb, sType, sValue, sAdd) {
    if (sVerb=='')  sVerb='delete';
    var strAdd = ''
    if (sAdd==null) sAdd='';
    if (sAdd!='') strAdd=sAdd + ' ';
      
	return(confirm('You are about to ' + sVerb + ' the ' + sType + ' ' + sValue + '. ' + strAdd + 'Click OK to confirm this action, or CANCEL to abort.'));
}


	function OpenWindow(url, w, h) {
		var options = "width=" + w + ",height=" + h + ",";
		options += "resizable=yes,scrollbars=yes,status=yes,";
		options += "menubar=no,toolbar=no,location=no,directories=no,top=20,left=500";
		var newWin = window.open(url, 'newWin', options);
		newWin.focus();
	}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isMoney (theField)
{
 if (isEmpty(theField))
        if (isMoney.arguments.length == 1) return false;
        else return (isMoney.arguments[1] == true);

 var money = /^\-?(([0-9])*(\.)*([0-9])*)*(\,([0-9]{0,2}))?\ *\??$/
	if (!(money.test(theField) )) return false;
 else return true;
}
