//------------------------------------------------------
// check the validation

//	fieldname = tagName
//	Required = {true | false}
//	Type = {text | phone | email | integer | decimal}
//	MaxLength = digital number
//------------------------------------------------------


function FieldInfo(fieldname, labelText, required, typeName, maxLength){



//alert('field info func');



	document.all[fieldname].Required = required;
	document.all[fieldname].LabelText = labelText;
	document.all[fieldname].TypeName = typeName;
	document.all[fieldname].MaxLength = maxLength;



}




function checkGeneralValidation(formName, strErrorMessage)	
{
	var eles = formName.elements;
	var value;
	//var strErrorMessage = "";
	//var bResult = true;
	
//alert('TestingBlah');
	for(var i=0; i<eles.length; i++)
	{
		var e = eles[i];
		switch(e.type.toLowerCase())
		{
			case "text":
				e.className = "field"				// resetting background color
				value = document.all[e.name].value;
//alert(e.name)
//alert(value)

				if(e.Required == true)
					strErrorMessage = validateRequired(e, value, strErrorMessage);
			
				//switch(e.TypeName.toLowerCase())
				//{
				//	case "text":
				//		strErrorMessage = validateLength(e, value, strErrorMessage);
				//		break;
				//	case "phone":
				//		strErrorMessage = validatePhoneNumber(e, value, strErrorMessage);
				//		break;
				//	case "email":
				//		strErrorMessage = validateEmailAddress(e, value, strErrorMessage);
				//		break;
				//	case "integer":
				//		strErrorMessage = validateInteger(e, value, strErrorMessage)
				//		break;
				//	case "decimal":
				//		strErrorMessage = validateDecimal(e, value, strErrorMessage)
				//		break;
				//	default:
				//		var aaaa = "do nothing";
				//}
				break;
				
			case "password":
				e.className = "field"				// resetting background color
				value = document.all[e.name].value;

				if(e.Required == true)
					strErrorMessage = validateRequired(e, value, strErrorMessage);			
				break;				
			case "textarea":
				e.className = "field"	
				value = document.all[e.name].value;
				if(e.Required == true)
					strErrorMessage = validateRequired(e, value, strErrorMessage);
				strErrorMessage = validateLength(e, value, strErrorMessage);
				break;
				
			case "select-one":
				e.className = "field"	
				value = document.all[e.name].value;
				strErrorMessage = validateDropDown(e, value, strErrorMessage)

				break;
				
			case "radio":
				
				//alert('radio = ' + e.name)
				//document.all[e.name].className = "valid";
				/*if(document.all[e.name].Required == true)
				{
					alert('is required');
				}
				else
				{
					alert('is not required')
				}*/
				
				//strErrorMessage = validateRadioButton(e, strErrorMessage)		
				//i += document.all[e.name].length - 1;
				
				break;
				
			case "checkbox":
				e.className = "field"
				strErrorMessage = validateCheckBox(e, strErrorMessage);
				break;
		}
	}
	
	return 	strErrorMessage;
}


function validateRequired(e, v, errormessage)
{
	if(v == "")
	{
		// errormessage += "\nTo " + e.LabelText + ": Please enter a data.";
		errormessage += "\nPlease enter " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";
	}
	return errormessage;
}

function validateLength(e, v, errormessage)
{
	if(v.length > e.MaxLength)
	{
		errormessage += "\nPlease limit the " + e.LabelText + " field to " + e.MaxLength + " characters.";
		document.all[e.name].className = "invalidfield";
	}
	return errormessage;
}

function validatePhoneNumber(e, v, errormessage)
{
	if(v.length <= 0)
		return errormessage;
		
	if(isInteger(v) == false)
	{

		errormessage += "\nPlease enter numbers only for " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";
	}
	errormessage = validateLength(e, v, errormessage);
	return errormessage;	
}

function validateEmailAddress(e, v, errormessage)
{
	if(v.length <= 0)
		return errormessage;
		
	if (isEmail(v) == false)
	{
//		errormessage += "\nPlease enter a valid email address at " + e.LabelText + ".";
		errormessage += "\nPlease enter a valid email address.";
		document.all[e.name].className = "invalidfield";
	}
	errormessage = validateLength(e, v, errormessage);
	return errormessage;
}

function validateInteger(e, v, errormessage)
{
	if(v.length <= 0)
		return errormessage;
		
	if(isInteger(v) == false)
	{
		errormessage += "\nPlease enter numbers only for " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";
	}
	if(parseInt(v) < -2147483648 || parseInt(v) >2147483647)		// for integer datatype of SQL server
	{
		errormessage += "\nThe number is out of range for " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";	
	}
	return 	errormessage;
}

function validateDecimal(e, v, errormessage)
{
	if(v <= 0)
		return errormessage;
		
	if(isDecimal(v) == false)
	{
		errormessage += "\nPlease enter a decimal for " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";
	}
	return errormessage	
}

function validateDropDown(e, v, errormessage)
{
	if(e.Required == true && v.length <= 0)
	{
		errormessage += "\nPlease select " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";
	}
	return errormessage;
}

function validateRadioButton(e, errormessage)
{

	if(document.all[e.name].Required == true)
	{	
		errormessage += "\nPlease select " + document.all[e.name].LabelText + ".";
		//document.all[e.name].className = "invalidfield";
alert('333');
	}
	return errormessage;
}

function validateCheckBox(e, errormessage)
{
	
	if(e.Required == true && document.all[e.name].checked == false)
	{
		errormessage += "\nPlease select " + e.LabelText + ".";
		document.all[e.name].className = "invalidfield";
	}

	return errormessage;
}

function isSelectedRadioButton(e)
{
	var bReturn = false;
	var rdo = document.all[e.name]
	for(var j=0; j<rdo.length; j++)
	{
		if(rdo[j].checked == true)
			bReturn = true;
	}
	return bReturn;
}

function isInteger(s)
{
	reg1 = /^(\d+)$/
	return reg1.test(s);
}

function isDecimal(s)
{
	var reg1 = /^(\d+)\.(\d*)$/		// valid
	var reg2 = /^\.(\d+)$/			// valid
	var reg3 = /^(\d+)$/			// valid
	if(reg1.test(s) == true || reg2.test(s) == true || reg3.test(s) == true)
		return true;
	else
		return false;
}

function isEmail(str) 
{
	if (str == "")
	{
		return false;
	}
	if (str.indexOf('"') != -1)
	{
		return false;
	}

	// are regular expressions supported?
	var supported = 0;
	if (window.RegExp) 
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported)
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	if ((!r1.test(str) && r2.test(str)) == true)
	{
  		return true
	}
	else
	{
		return false;
	}
}

// ##########################################################

