//////////////////////////////////////////////////////////////////////////
// Text Validation Component v1.03
//
// Developed by Tadd Smyrnios
// 
// For Field Validation on web-based forms
// 
// This code is not copyrighted, however any use of this componenet
// is not warrenteed by any means, unless purchased.  The developer 
// will not be held liable for any financial loss by use of this code
// and does not guarantee absense of errors by any means.
//////////////////////////////////////////////////////////////////////////

var Fields = new Array();
var FieldNumber=0;
var ValueBeforeChange;
var FocusFromCheck=false;

function SetField(Field_ID,Display_Name,Max_Value,Min_Value)
{
	Fields[FieldNumber] = new Field(Field_ID,Display_Name,Max_Value,Min_Value);
	FieldNumber++;
}
function Field(Field_ID,Display_Name,Max_Value,Min_Value)
{
	this.FieldID=Field_ID;
	this.DisplayName=Display_Name;
	this.MaxValue=Max_Value;
	this.MinValue=Min_Value;
}

function CheckForBlanks()
{
	var BlankFields = new Array();
	var BlankCount = 0;
	var BlanksExist = false;
	for(var i=0;i<Fields.length;i++)
	{
		if(document.getElementById(Fields[i].FieldID).value=="")
		{
			BlankFields[BlankCount]=Fields[i].DisplayName;
			BlankCount++;
		}
	}
	if(BlankCount!=0)
	{
		var strMessage="";
		
		if(BlankCount==1)
		{ strMessage="The following field is blank:\r\n\r\n"; }
		else
		{ strMessage="The following fields are blank:\r\n\r\n"; }
		
		for(i=0;i<BlankCount;i++)
		{
			strMessage+="  - " + BlankFields[i] + "\r\n";
		}
		
		if(BlankCount==1)
		{ strMessage+="\r\nPlease Enter a value for this field."; }
		else
		{ strMessage+="\r\nPlease Enter values for these fields."; }
		
		alert(strMessage);
		BlanksExist=true;
	}
	return BlanksExist;
}

function CheckFieldLength(t,maxlength,nextField)
{
		if((t.value.length + 1)>maxlength)
		{
			FocusFromCheck=true;
			document.getElementById(nextField).value="";
			document.getElementById(nextField).select();
			document.getElementById(nextField).focus();
		}
}

function CompareFields(FieldName1,FieldName2, ErrMsg)
{
	var Failed=false;
	if(document.getElementById(FieldName1).value!=document.getElementById(FieldName2).value)
	{
		alert(ErrMsg);
		Failed=true;
	}
	return Failed;
}

function gotFocus(t)
{
	if(!FocusFromCheck)
	{
		ValueBeforeChange = t.value;
		t.value="";
		t.select();
	}
	else
	{
		FocusFromCheck = false;
	}
}

function LostFocus(t)
{
	if(t.value=="")
	{
		t.value=ValueBeforeChange;
	}
	else
	{
		RangeValidation(t);
	}
}

function EmailValidation(t)
{
	var Success = true;
	
	var Email = t.value;
	var AtCharPos = Email.indexOf("@");
	
	if(AtCharPos!=-1)
	{
		var MailName = Email.substring(0,AtCharPos);
		var Domain = Email.substring(AtCharPos+1,Email.length);
		var PeriodPos = Domain.lastIndexOf(".");
		
		if(Domain.indexOf("@")!=-1)
		{ Success=false; }
		
		if(PeriodPos!=-1)
		{
			var DomainPrefix = Domain.substring(0,PeriodPos);
			var DomainRoot = Domain.substring(PeriodPos+1,Domain.length);
			
			if(DomainPrefix.length<1)
			{ Success=false; }
			
			if(DomainRoot.length<2)
			{ Success=false; }
		}
		else
		{ Success=false; }
		
		if(MailName.length<1)
		{ Success=false; }
	}
	else
	{ Success=false; }
	
	if(Email=="")
	{ Success=true; }
	
	if(!Success)
	{
		alert("Invalid Email.");
		t.select();
	}
}

function RangeValidation(t)
{
	FieldNo = FindFieldNo(t);
	if(NumericsOnly(document.getElementById(t.id).value))
	{
		if(document.getElementById(t.id).value>Fields[FieldNo].MaxValue)
		{
			document.getElementById(t.id).value=Fields[FieldNo].MaxValue;
		}
	}
	else
	{
		document.getElementById(t.id).value=Fields[FieldNo].MinValue;
	}
}

function FindFieldNo(t)
{
	for(var i=0;i<Fields.length;i++)
	{
		if(t.id==Fields[i].FieldID)
		{
			return i;
		}
	}
}

function NumericsOnly(varvalue)
{
	var valid="01234567890.-";
	for(x=0;x<varvalue.length;x++)
	{
		if(valid.indexOf(varvalue.charAt(x),0)==-1)
			return false;
	}
	
	if(varvalue.length!=0)
		{return true;}
	else
		{return false;}
}

function CheckDay(MonthField,DayField,YearField)
{
	var Year = document.getElementById(YearField).value;
	var February = (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0)) ? 29 : 28;
	MonthDays = [ 31,February,31,30,31,30,31,31,30,31,30,31 ];
	
	if(document.getElementById(DayField).value>MonthDays[document.getElementById(MonthField).value - 1])
		{document.getElementById(DayField).value=MonthDays[document.getElementById(MonthField).value - 1];}
	if(document.getElementById(DayField).value<1)
		{document.getElementById(DayField).value=1;}	
}
//////////////////////////////////////////////////////////////////////////
