/************************************************************* 
//Program:		validate.js
//Author:		L. Knight
//Date:			01/29/02
//Description:	This contant javascript validation function's 
//				required = TRUE/FALSE
//				datatype = DATE/TEXT/NUMBER
//				massage = error massage
//				style="required:true;datatype:text;massage;enter text please"
//				onSubmit="return valform(this.form)"
//Revisions:
//Rev Who Date      Description
**************************************************************/
noval = false
function uc_noval(state){
  noval = state;
}
function valform(obj){
if (noval)
 return true;
returnval = true;
for (var j=0; j<(obj.elements.length); j++)
{
	isReq = uc_isDataRequired(obj.elements[j]);
	hasValue = uc_hasValue(obj.elements[j],obj.elements[j].type.toUpperCase());
	hasValData = uc_hasDataValue(obj.elements[j]);
	if(isReq || hasValue){
	  if(!hasValData || !hasValue){
	   uc_massage(obj.elements[j]);
	   obj.elements[j].value = "";
	   obj.elements[j].focus();
	   j=obj.elements.length+1;
	   returnval = false;}
	}
}
return returnval;
}

function uc_massage(obj){
  if(obj.style.massage != null)
		alert(obj.style.massage);
	else
		alert(obj.name);
}
function uc_isDataRequired(obj){
	if(obj.style.required != null && obj.style.required.toUpperCase() == "TRUE")
		return true;
	else
		return false;
}
function uc_hasDataValue(obj){
if(obj.style.datatype != null){
  	switch (obj.style.datatype.toUpperCase())
		{
		case "DATE":
			if(uc_checkdate(obj.value))
			 return true;
			else
			 return false; 
    	break;
		case "TEXT":
			if(uc_hasValue(obj,obj.type.toUpperCase()))
				return true;
				else
			 	return false; 
		break;
		case "NUMBER":
			if(uc_checknumber(obj.value))
			 return true;
			 else
			 return false;
		break;
		}
		return true;
	}
	else
  return true;
  }
function uc_hasValue(obj, obj_type)
{
if (obj_type == "TEXT" || obj_type == "PASSWORD" || obj_type == "TEXTAREA")
	{
    	
		if (obj.value.length == 0) 
      		return false;
    	else 
      		return true;
    	}
    else if (obj_type.substring(0,6) == "SELECT")
	{
		if(obj.value == "")
			return false;
		for (i=0; i < obj.length; i++)
	    	{
		if (obj.options[i].selected)
			return true;
		}

       	return false;	
	}
    else if (obj_type == "SINGLE_VALUE_RADIO" || obj_type == "SINGLE_VALUE_CHECKBOX")
	{

		if (obj.checked)
			return true;
		else
       		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;	
	}
	return true;
}
function uc_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);

	if (sMonth.length == 0)
        return false;

	isplit = object_value.indexOf('/', isplit + 1);

	if (isplit == -1 || (isplit + 1 ) == object_value.length)
		return false;

    sDay = object_value.substring((sMonth.length + 1), isplit);

	if (sDay.length == 0)
        return false;

	sYear = object_value.substring(isplit + 1);

	if (!uc_checkinteger(sMonth)) 
		return false;
	else
	if (!uc_checkrange(sMonth, 1, 12))
		return false;
	else
	if (!uc_checkinteger(sYear))
		return false;
	else
	if (!uc_checkrange(sYear, 0, 9999))
		return false;
	else
	if (!uc_checkinteger(sDay))
		return false;
	else
	if (!uc_checkday(sYear, sMonth, sDay))
		return false;
	else
		return true;
}
function uc_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;

	check_char = start_format.indexOf(object_value.charAt(0))

	if (check_char == 1)
	    decimal = true;
	else if (check_char < 1)
		return false;

	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)
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;


		}
	        else if (trailing_blank)
			return false;
		else
			digits = true;
	}	
    return true
    }
	

function uc_checkinteger(object_value)
    {
    if (object_value.length == 0)
        return true;

	var decimal_format = ".";
	var check_char;

	check_char = object_value.indexOf(decimal_format)
    if (check_char < 1)
	return uc_checknumber(object_value);
    else
	return false;
    }
	function uc_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 uc_checkrange(checkDay, 1, maxDay);
    }
	function uc_numberrange(object_value, min_value, max_value)
    {

    if (min_value != null)
	{
        if (object_value < min_value)
		return false;
	}

    if (max_value != null)
	{
	if (object_value > max_value)
		return false;
	}
	return true;
    }
	
	function uc_checkrange(object_value, min_value, max_value)
    {
		if (object_value.length == 0)
        return true;
	if (!uc_checknumber(object_value))
	{
	return false;
	}
    else
	{
	return (uc_numberrange((eval(object_value)), min_value, max_value));
	}
    return true;
    }
