var errmsg = 'The date must be entered in mm/dd/yy format.\nThe date is invalid.';

function checkdate(dtfield,dtform) {
var err = 0
string = dtfield.value
var valid = "0123456789/"
var temp;
for (var i=0; i< string.length; i++) {
temp = "" + string.substring(i, i+1);
if (valid.indexOf(temp) == "-1") err = 1;
}
if (string.length != 8) err=1
b = string.substring(0, 2) // day
c = string.substring(2, 3)// '/'
d = string.substring(3, 5) // month
e = string.substring(5, 6)// '/'
f = string.substring(6, 8) // year
if (b<1 || b>31) err = 1
if (c != '/') err = 1
if (d<1 || d>12) err = 1
if (e != '/') err = 1
if (f<0 || f>99) err = 1
if (b==4 || b==6 || b==9 || b==11){
if (d==31) err=1
}
if (b==2){
var g=parseInt(f/4)
if (isNaN(g)) {
err=1
}
if (d>29) err=1
if (d==29 && ((f/4)!=parseInt(f/4))) err=1
}
if (err==1) {
alert('The date must be entered in dd/mm/yy format.\nThe date will be unchanged.');
dtfield.value = dtform.OldDate.value;
dtfield.focus();
dtfield.select();
return false;
}else {
return true;
}
}

//// The following comes from ColdFusion, two date textbox, one is txtFrom, the other is txtTo

function _onError(form_object, input_object, object_value, error_message){
	alert(error_message);
    return false;	
}

function _hasValue(obj, obj_type){
    if (obj_type == "TEXT" || obj_type == "PASSWORD"){
    	if (obj.value.length == 0) 
      		return false;
    	else 
      		return true;
    }
    else if (obj_type == "SELECT"){
        for (i=0; i < obj.length; i++){
			if (obj.options[i].selected)
				return true;
		}
       	return false;	
	}
    else if (obj_type == "RADIO" || obj_type == "CHECKBOX"){
        for (i=0; i < obj.length; i++){
			if (obj[i].checked)
				return true;
		}
       	return false;	
	}
}

function _checkdate(object_value){
    if (object_value.length == 0)
        return true;

	isplit = object_value.indexOf('/');

	if (isplit == -1 || isplit == object_value.length)
		return false;

    sMonth = object_value.substring(0, isplit);
	isplit = object_value.indexOf('/', isplit + 1);

	if (isplit == -1 || isplit == object_value.length)
		return false;

    sDay = object_value.substring((sMonth.length + 1), isplit);

	sYear = object_value.substring(isplit + 1);

	if (!_CF_checkinteger(sMonth)) //check month
		return false;
	else
	if (!_checkrange(sMonth, 1, 12)) //check month
		return false;
	else
	if (!_CF_checkinteger(sYear)) //check year
		return false;
	else
	/// Duc added in Jan 15,2002 :min year input should not be less than 1800
	if (!_checkrange(sYear, 1800, null)) //check year
		return false;
	else
	if (!_CF_checkinteger(sDay)) //check day
		return false;
	else
	if (!_checkday(sYear, sMonth, sDay)) // check day
		return false;
	else
		return true;
}

function _checkday(checkYear, checkMonth, checkDay){
	maxDay = 31;
	if (checkMonth == 4 || checkMonth == 6 || checkMonth == 9 || checkMonth == 11)
		maxDay = 30;
	else
	if (checkMonth == 2){
		if (checkYear % 4 > 0)
			maxDay =28;
		else
		if (checkYear % 100 == 0 && checkYear % 400 > 0)
			maxDay = 28;
		else
			maxDay = 29;
	}
	return _checkrange(checkDay, 1, maxDay); //check day
}



function _CF_checkinteger(object_value){
    if (object_value.length == 0) return true;
    
	var decimal_format = ".";
	var check_char;

    //The first character can be + -  blank or a digit.
	check_char = object_value.indexOf(decimal_format)
    //Was it a decimal?
    if (check_char < 1)
		return _checknumber(object_value);
    else
		return false;
}

function _numberrange(object_value, min_value, max_value){
    // check minimum
    if (min_value != null){
        if (object_value < min_value) return false;
	}

    // check maximum
    if (max_value != null){
		if (object_value > max_value) return false;
	}
	
    return true;
}

function _checknumber(object_value){
    if (object_value.length == 0) return true;

	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

    //The first character can be + - .  blank or a digit.
	check_char = start_format.indexOf(object_value.charAt(0))
    //Was it a decimal?
	if (check_char == 1)
	    decimal = true;
	else if (check_char < 1)
		return false;
        
	//Remaining characters can be only . or a digit, but only one decimal.
	for (var i = 1; i < object_value.length; i++){
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0)
			return false;
		else if (check_char == 1){
			if (decimal)		// Second decimal.
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0){
			if (decimal || digits)	
				trailing_blank = true;
        // ignore leading blanks
		}
        else if (trailing_blank)
			return false;
		else
			digits = true;
	}	
    return true
}

function _checkrange(object_value, min_value, max_value){
    if (object_value.length == 0)
        return true;
    if (!_checknumber(object_value)){
		return false;
	}
    else{
		return (_numberrange((eval(object_value)), min_value, max_value));
	}
	
    return true;
}


function checkkeydown(num){
	var frm = document.daterange;
	
	if(window.event.keyCode==13){
		if (checkdateforkeydown(frm,num)){
			frm.submit()
		}
	}
}

function checkdateforkeydown(frm,num){
    if  (!_hasValue(frm.txtFrom, "TEXT" )) {
		frm.txtFrom.focus();
		frm.txtFrom.select();
		return false; 
	}
    if  (!_checkdate(frm.txtFrom.value)){
		frm.txtFrom.focus();
		frm.txtFrom.select();
		return false; 
    }
    if (num == 2) {
		if  (!_hasValue(frm.txtTo, "TEXT" )) {
			frm.txtTo.focus();
			frm.txtTo.select();
		    return false; 
		}
		if  (!_checkdate(frm.txtTo.value)){
			frm.txtTo.focus();
			frm.txtTo.select();
		    return false; 
		}
	}
    return true
}


function  checkdaterange(num){
	var frm = document.frmDate;
    if  (!_hasValue(frm.txtFrom, "TEXT" )) {
        if  (!_onError(frm, frm.txtFrom, frm.txtFrom.value, errmsg)){
			frm.txtFrom.focus();
			frm.txtFrom.select();
            return false; 
        }
	}
    if  (!_checkdate(frm.txtFrom.value)){
        if  (!_onError(frm, frm.txtFrom, frm.txtFrom.value, errmsg)){
			frm.txtFrom.focus();
			frm.txtFrom.select();
            return false; 
        }
    }
    if (num == 2) {
		if  (!_hasValue(frm.txtTo, "TEXT" )) {
		    if  (!_onError(frm, frm.txtTo, frm.txtTo.value, errmsg)){
				frm.txtTo.focus();
				frm.txtTo.select();
		        return false; 
		    }
		}
		if  (!_checkdate(frm.txtTo.value)){
		    if  (!_onError(frm, frm.txtTo, frm.txtTo.value, errmsg)){
				frm.txtTo.focus();
				frm.txtTo.select();
		        return false; 
		    }
		}
	}
	
	frm.submit();
    return true;
    }


