var win;

function now() 
{ 
	var stDate; 
	var now; 
	now_date= new Date(); 
	stDate=(now_date.getMonth()+1)+"/"+now_date.getDate()+"/"+now_date.getYear(); 
	return(stDate); 
} 

function IsEmail(sFieldValue)
{
	var checkEmail = "@.";
	var checkStr = sFieldValue;
	var EmailValid = false;
	var EmailAt = false;
	var EmailPeriod = false;

	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkEmail.length;  j++)
		{
			if (ch == checkEmail.charAt(j) && ch == "@")
				EmailAt = true;
			if (ch == checkEmail.charAt(j) && ch == ".")
				EmailPeriod = true;
			if (EmailAt && EmailPeriod)
				break;
			if (j == checkEmail.length)
				break;
		}
		// if both the @ and . were in the string
		if (EmailAt && EmailPeriod)
		{
			EmailValid = true
			break;
		}
	}

	return(EmailValid);
}
function IsNumeric(sFieldValue)
{
	var checkOK = "0123456789.";
	var checkStr = sFieldValue;
	var allValid = true;
	var allNum = "";

	if (checkStr=="")
	{
		return(false);
	}
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);

		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j))
				break;
		}
		
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}

		if (ch != ",")
		{
			allNum += ch;
		}

		if (!allValid)
		{
			allValid =false;
		}
	}

	return(allValid);
}
function IsDate(sFieldValue)
{
	var checkOK = "0123456789/";
	var numberOK = "0123456789";
	var checkStr = sFieldValue;
	var allValid = true;
	var allNum = "";
	var ch;

	if (checkStr=="")
	{
		return(false);
	}
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);

		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j))
				break;
		}
		
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}

		if (ch != ",")
		{
			allNum += ch;
		}

		if (!allValid)
		{
			allValid =false;
		}
	}

	iCount=0;
	//alert(sFieldValue);
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		if ( ch =='/')
		{
			iCount++;
		}
	}
	if (iCount < 2) 
	{
		allValid=false;
	}
	
	if (checkStr.length < 7) 
	{
		allValid=false;
	}
	
	if (checkStr.length > 10)
	{
		allValid=false;
	}

	return(allValid);
}
function IsAlpha(sFieldValue)
{
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz ':;/?.,-|\{}[]~!@#$%^<>&*()-_+=";
	var checkStr = sFieldValue;
	var allValid = true;
	var allNum = "";

	if (checkStr=="")
	{
		return(false);
	}
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);

		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j))
				break;
		}
		
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}

		if (!allValid)
		{
			allValid =false;
		}
	}

	return(allValid);
}

function FieldValidation(sFieldName, sFieldValue, sRule, bRequired, maxLength)
{
	var sErrorMessage;
	
	sErrorMessage="";

	if (sFieldValue.length>0)
	{
	switch(sRule)
	{
		case "Numeric":
			if (IsNumeric(sFieldValue)==false)
			{
				sErrorMessage+=sFieldName + " is not numeric <br>";
			}
			break;
		case "Date":
			if (IsDate(sFieldValue)==false)
			{
				sErrorMessage+=sFieldName + " is not a Date <br>";
			}
			break;
		case "Alpha":
			if (IsAlpha(sFieldValue)==false)
			{
				sErrorMessage+=sFieldName + " is not alpha numeric <br>";
			}
			break;
		case "Email":
			if (IsEmail(sFieldValue)==false)
			{
				sErrorMessage+=sFieldName + " is not an email <br>";
			}
			break;
		case "Year":
			if ((IsNumeric(sFieldValue)==false) || ((sFieldValue.length!=2) && (sFieldValue.length!=4)))
			{
				sErrorMessage+=sFieldName + " is not a year <br>";
			}
			break;
	}
	}
	
	/*------------------------------------------check if field is required---------------------------*/
	if ( (bRequired==true) && (sFieldValue!=""))
	{
		if (sFieldValue.length==0)
		{
			sErrorMessage+=sFieldName + " is required <br>";
		}
	}	
	else if ( (bRequired==true) && (sFieldValue==""))
	{
		sErrorMessage+=sFieldName + " is required <br>";
	}
	/*------------------------------------check for maxlength--------------------------------------*/
	if ((sFieldValue!="") && (maxLength>0))
	{
		if (sFieldValue.length>maxLength)
		{
			sErrorMessage+=sFieldName + " exceeded the maximum length of " + maxLength + " characters <br>";
		}
	}

	return(sErrorMessage);
}
function displayErrorMessage(sErrorMsg) 
{
win = window.open(",", 'popup', 'height = 200 width=200 toolbar = yes  titlebar=yes status = no resizeable=yes scrollbars=yes');
win.document.write("Data Validation Errors<br>");
win.document.write("" + sErrorMsg + "");
StartTimer();
}

function now()
{
	var stDate;
	var now;
	now= new Date();
	stDate=(now.getMonth()+1)+"/"+now.getDate()+"/"+now.getYear();
	return(stDate);
}
function dayOfWeek(sDay)
{
	var stDate;
	var now;
	var assoc= new Array(7);

	assoc[0]="Sunday";
	assoc[1]="Monday";
	assoc[2]="Tuesday";
	assoc[3]="Wednesday";
	assoc[4]="Thursday";
	assoc[5]="Friday";
	assoc[6]="Saturday";

	now= new Date(sDay);
	stDate=now.getDay();
	return(assoc[stDate]);
}
function systemTime()
{
	var now;
	var stTime;
	now= new Date();
	if (now.getHours()>12)
	{
		stTime=(now.getHours()-12)+":"+now.getMinutes()+":"+now.getSeconds()+" p.m";
	}
	else
	{
		stTime=now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+ "a.m";
	}
	return(stTime);
}

function dateAdd(startDate, numDays, numMonths, numYears)
{
	var returnDate;
	var yearsToAdd;
	var month;

	returnDate = new Date(startDate.getTime());

	yearsToAdd=numYears;
	
	month = returnDate.getMonth()+ numMonths;
	
	if (month > 11)
	{
		yearsToAdd = Math.floor((month+1)/12);
		month -= 12*yearsToAdd;
		yearsToAdd += numYears;
	}
	returnDate.setMonth(month);
	returnDate.setFullYear(returnDate.getFullYear()	+ yearsToAdd);
	
	returnDate.setTime(returnDate.getTime()+60000*60*24*numDays);

	return returnDate;

}

function yearAdd(startDate, numYears)
{
		return dateAdd(startDate,0,0,numYears);
}

function monthAdd(startDate, numMonths)
{
		return dateAdd(startDate,0,numMonths,0);
}

function dayAdd(startDate, numDays)
{
		return dateAdd(startDate,numDays,0,0);
}

function getEndWorkDay(StartDate, Hours)
{
    var iHoursToDays;
    var iCount;
    var bFlag;
    var EndDate;
    var CheckDate;
    var iFoundCount;
    var sDay;
    var RetDate;

		StartDate=new Date(StartDate);    
        iHoursToDays = Math.ceil(eval(parseFloat(Hours) / 8.0));
        EndDate = StartDate;
        
        if (iHoursToDays > 1)
        {
            bFlag = false;
            iCount = 0;
            iFoundCount = 0;
            while (bFlag == false)
            {
               CheckDate = dayAdd(StartDate,iCount);
               sDay = dayOfWeek(CheckDate);
               if ((sDay != 'Sunday') && (sDay != 'Saturday'))
               {
                    EndDate = CheckDate;
                    iFoundCount = iFoundCount + 1;
               }
               if (iFoundCount >= iHoursToDays)
               {
                    break;
               }
               iCount = iCount + 1;
            }
        }

		RetDate=(EndDate.getMonth()+1)+"/"+EndDate.getDate()+"/"+EndDate.getYear();
        return(RetDate);
}

var timerID = 0;
var tStart  = null;
		
function UpdateTimer() {
   if(timerID) {
      clearTimeout(timerID);
      clockID  = 0;
   }

   if(!tStart)
      tStart   = new Date();

   var   tDate = new Date();
   var   tDiff = tDate.getTime() - tStart.getTime();

   tDate.setTime(tDiff);
   win.close();
		
   timerID = setTimeout("UpdateTimer()", 5000);
}

function StartTimer() 
{
   tStart   = new Date();
   timerID  = setTimeout("UpdateTimer()", 5000);
}
