function dchk(val)
{
	/*var val = obj.value*/
	no_of_slash = 0
	if (val.indexOf("/") > 2 || val.indexOf("/") < 1 || val.indexOf("/") == -1)
		return false;
	
	for (var i=0;i<val.length;i++)
		if(val.charAt(i) == "/")
			no_of_slash = no_of_slash + 1;
	
	if (no_of_slash > 2 || no_of_slash == 0)
		return false;
	
	// Date check
	var date = "";
	var i;
	for (var i=0; i < val.length && val.charAt(i) != "/";i++)
		date = date + val.charAt(i);

	date = parseFloat(date);
	date = parseInt(date);

	if (isNaN(date) || date < 1 || date > 31)
		return false;


	// Month check
	var month = "";
	
	var j;
	for (j=i+1;j<val.length && val.charAt(j) != "/";j++)
		month = month + val.charAt(j);

	month = parseFloat(month);	
	month = parseInt(month);
	
	if (isNaN(month) || month < 1 || month > 12)
		return false;
	
	// Year check
	var year = "";
	
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year = year + val.charAt(k);
	
	if (year.length < 4 || year.length > 4)
		return false;
	
	year = parseInt(year);
	
	if (isNaN(year))
		return false;
	
	if (year < 1900 || year > 2500)
		return false;

	if (getDays(month,year) < date)
		return false;
	return true;
}

/*Function to check for empty or null fields and blank spaces
Function returns true if any one of the conditions is satisfied*/
function nullchk(txt)
{

	if (txt == "" || txt == null)
	{
		return true;
	}
		
	var i
	for(i=0;i<txt.length;i++)
	{
		if (txt.charAt(i) != " ")
			return false
	}
	return true;
}

/*Function to check for ', `, \, or blank space
	returns false if any of the conditions is satisfied*/
function codechk(txt)
{
	var i
	var flag = true
	for(i=0;i<txt.length;i++)
	{
		if (txt.charAt(i) == "'" || txt.charAt(i) == "`" || txt.charAt(i) =="\"" || txt.charAt(i) == " ")
			return false
	}
	return true;
}
function codechkDesc(txt)
{
	var i
	var flag = true
	for(i=0;i<txt.length;i++)
	{
		if (txt.charAt(i) == "`" || txt.charAt(i) =="\"" ||txt.charAt(i) == "#"||txt.charAr=="@")
			return false
	}
	return true;
}


/*Function to check for only 2 digits befor the decimal point
	Returnd false if more than 2 digits are entered
*/
function two_digitchk(obj)
{
	decimal = false
	var val = obj.value
	no_int = 0
	for (var i=0;i<val.length && val.charAt(i) != ".";i++)
	{
		no_int = no_int + 1
	}
	if (no_int > 2)
		return false;
	else
		return true;
}

function one_digitchk(obj)
{
	decimal = false
	var val = obj
	no_int = 0
//	for (var i=0;i<val.length && val.charAt(i) != ".";i++) // this line is used for checking before decimal point
	for (var i=val.length-1;i>=0 && val.charAt(i) != ".";i--)
	{
		no_int = no_int + 1
	}
	if (no_int > 1 && no_int!=val.length)
		return false;
	else
		return true;
}

/*Function ot check for characters in Numeric field
	Returns false if Char appears or field has bo value at all*/
function numberchk(obj)
{
	decimal = false;
	/*var val = obj.value;*/

	for(var i=0;i < obj.length; i++)
	{
		if(obj.charAt(i) == '.' && decimal == true)
			return false;		
		if(obj.charAt(i) == '.')
			decimal = true;
	
		if((obj.charAt(i) >= '0' && obj.charAt(i) <= '9') || obj.charAt(i) == '.')
			continue;
		else
			return false;
			
	}
	if (obj.length == 0)
		return false;
	return true;
}

/*Check for Integer value 
	Returns true if value is Integer*/
function intchk(val)
{
	/*var val = obj.value*/
	for(var i=0;i < val.length; i++)
	{
		if((val.charAt(i) >= '0' && val.charAt(i) <= '9'))
			continue;
		else
			return false;
	}
	return true;
}

/*Function to validate Phone & Fax numders.
	Checks for numeric data and one opening brace & one closing brace.
	If condition not satisfied returns false
*/
function phfaxchk(val)
{
	/*var val = obj.value*/
	var opbrkt = 0
	var clbrkt = 0
	var hyphen = 0

	for(var i=0;i<val.length;i++)
	{
		if( (val.charAt(i) >= '0' && val.charAt(i) <= '9') || val.charAt(i) == '(' || val.charAt(i) == ')' || val.charAt(i) == '-')
		{
			if ( (opbrkt == 4 && val.charAt(i) == '(') || (clbrkt == 4 && val.charAt(i) == ')') || (hyphen == 4 && val.charAt(i) == '-') )
				return false;
			if (val.charAt(i) == '(')
				opbrkt = opbrkt + 1
			else if (val.charAt(i) == ')')
				clbrkt =clbrkt +  1
			else if (val.charAt(i) == '-')
				hyphen =hyphen + 1
			continue;
		}
		else
			return false;
	}
	return true;
}

/*Function to validate email field.
	Checks for "@", "." and 3 chars after the .
	returns false if condition is not satisfied
*/
function mailval(txt)
{

		alphapos=txt.indexOf("@");
		dotpos=txt.lastIndexOf(".");
		lastpos=txt.length-1;
		if (alphapos<1 || dotpos-alphapos<2 || lastpos-dotpos>3 || lastpos-dotpos<2) 
		{
			return false
		}
		else 
		{
			return true
		}

}


/*Function to validate Date*/
function datechk(obj)
{
	//var val = obj.value
	var val=obj
	no_of_slash = 0
	//Check for / at position more that 2 chars or less that 1 char or at -1 //position, If true then return False
	if (val.indexOf("/") > 2 || val.indexOf("/") < 1 || val.indexOf("/") == -1)
		return false;
	
	//Count no.of /'s in the field
	for (var i=0;i<val.length;i++){
		if(val.charAt(i) == "/")
			no_of_slash = no_of_slash + 1
	}
	//If no.of /'s is more that 2 return false
	if (no_of_slash > 2 || no_of_slash == 0)
		return false;
	
	// Month check
	var month = "";
	
	var i;
	//Checks for he first 2 numbers before the /
	for (i=0;i<val.length && val.charAt(i) != "/";i++)
		month = month + val.charAt(i);

	month = parseFloat(month);	//converts string into floating point number
	month = parseInt(month);	//converts string to integer
	//If month not a number or greater tahn 12 or less than 1 return false
	if (isNaN(month) || month < 1 || month > 12)
		return false;
	 
	// Date check
	var date = "";
	//Continues check from position after / to the next /
	for (var j=i+1; j < val.length && val.charAt(j) != "/";j++)
		date = date + val.charAt(j);

	date = parseFloat(date);
	date = parseInt(date);
	//If date not a number or greater tahn 31 or less than 1 return false
	if (isNaN(date) || date < 1 || date > 31)
		return false;
    
	// Year check
	var year = "";
	//Continues check from position after second  / 
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year = year + val.charAt(k);
	//check length of year to be 4 digits
	if (year.length < 4 || year.length > 4)
		return false;
	
	year = parseInt(year);
	//If year not a number return false
	if (isNaN(year))
		return false;
		
	//Check for year to be between 1980 and 2050
	if (year < 1900 || year > 2050 )
		return false;
	//Check for valid date, if date entered is greater than the days in the month return false
	if (getDays(month,year) < date)
		return false;

	return true;
}

//Check for leap year, returns true if leap year
function leapYear(year) 
{
	if (year % 4 == 0) //basic rule
		return true; // is leap year
	else
		return false;
}

//Function to determine the month, returns the number of days in that month
function getDays(month, year) 
{
	//create array to hold number of days in each month 
	var ar = new Array(12)
	ar[1]  =  31   //January
	ar[2]  =  (leapYear(year)) ? 29 : 28 //February
	ar[3]  =  31	//March
	ar[4]  =  30	//April
	ar[5]  =  31	//May
	ar[6]  =  30	//June
	ar[7]  =  31	//July
	ar[8]  =  31	//August
	ar[9]  =  30	//September
	ar[10] =  31	//October
	ar[11] =  30	//November
	ar[12] =  31	//December
	
	return ar[month];
}


//Check for future date
function futuredate(val)
{
	var month = "";
	var i;
	for (i=0;i<val.length && val.charAt(i) != "/";i++)
		month = month + val.charAt(i);

	month = parseFloat(month);	
	month = parseInt(month);

	var date = "";
	for (var j=i+1; j < val.length && val.charAt(j) != "/";j++)
		date = date + val.charAt(j);

	date = parseFloat(date);
	date = parseInt(date);

	var year = "";
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year = year + val.charAt(k);
	year = parseInt(year);
	
	var now = new Date();
	if (year > now.getFullYear()) 
		return true;
	
	if (year == now.getFullYear() && (month-1) > now.getMonth())
		return true;
	
	if (year == now.getFullYear() && (month-1) == now.getMonth() && date > now.getDate())
		return true;
	return false;
}

//Function to validate due date, due date should be gerater that transaction  date
function duedate(dat,trdat)
{
	var val = dat
	//Check for valid month of dat
	var month = "";
	var i;
	for (i=0;i<val.length && val.charAt(i) != "/";i++)
		month = month + val.charAt(i);

	month = parseFloat(month);	
	month = parseInt(month);

	//Check for valid date of dat
	var date = "";
	for (var j=i+1; j < val.length && val.charAt(j) != "/";j++)
		date = date + val.charAt(j);

	date = parseFloat(date);
	date = parseInt(date);
	
	//Check for valid year of dat
	var year = "";
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year = year + val.charAt(k);
	year = parseInt(year);
	

	var val = trdat
	//Check for valid month of trdate
	var month2 = "";
	var i;
	for (i=0;i<val.length && val.charAt(i) != "/";i++)
		month2 = month2 + val.charAt(i);

	month2 = parseFloat(month2);
	month2 = parseInt(month2);	

	//Check for valid date of trdate	
	var date2 = "";
	for (var j=i+1; j < val.length && val.charAt(j) != "/";j++)
		date2 = date2 + val.charAt(j);

	date2 = parseFloat(date2);
	date2 = parseInt(date2);
	
	//Check for valid year fo trdate
	var year2 = "";
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year2 = year2 + val.charAt(k);
	year2 = parseInt(year2);

	if (year2 > year)
		return false;
	
	if (year2 == year && month2 > month)
		return false;
	
	if (year2 == year && month2 == month && date2 > date)
		return false;
		
	return true;
}

//Date Compare : dat should be grater than or equal to trdate. other wise false will be returned.
function DateCompare(dat,trdat)
{
	var val = dat;
	//Check for valid date of dat
	var date = "";
	for (i=0;i<val.length && val.charAt(i) != "/";i++)
		date = date + val.charAt(i);
	date = parseFloat(date);
	date = parseInt(date);
	
	
	//Check for valid month of dat
	var month = "";
	var i;
	for (var j=i+1; j < val.length && val.charAt(j) != "/";j++)
		month = month + val.charAt(j);
	month = parseFloat(month);	
	month = parseInt(month);

	
	//Check for valid year of dat
	var year = "";
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year = year + val.charAt(k);
	year = parseInt(year);
	

	var val = trdat
	
	//Check for valid date of trdate	
	var date2 = "";
	for (i=0;i<val.length && val.charAt(i) != "/";i++)
		date2 = date2 + val.charAt(i);

	date2 = parseFloat(date2);
	date2 = parseInt(date2);
	
	//Check for valid month of trdate
	var month2 = "";
	var i;
	for (var j=i+1; j < val.length && val.charAt(j) != "/";j++)
		month2 = month2 + val.charAt(j);

	month2 = parseFloat(month2);
	month2 = parseInt(month2);	

	//Check for valid year fo trdate
	var year2 = "";
	for (var k=j+1; k < val.length && val.charAt(k) != "/";k++)
		year2 = year2 + val.charAt(k);
	year2 = parseInt(year2);

	if (year2 > year)
		return false;

	if (year2 == year && month2 > month)
		return false;
	
	if (year2 < year && month2 > month)
		return false;
		
	if (year2 == year && month2 == month && date2 > date)
		return false;
		
	return true;
}

function timechk(strVal)
{
	/*var val = obj.value*/
	var no_of_slash
	
	for (var i=0;i<strVal.length;i++)
		if(strVal.charAt(i) == ":")
			no_of_slash = no_of_slash + 1;
	
	if (no_of_slash > 1 || no_of_slash == 0)
		return false;
	
	// intHour check
	var intHour = "";
	var intMin = "" ;
	var i;

	intHour = strVal.substring(0,strVal.indexOf(":") );
	intMin = strVal.substring(strVal.indexOf(":")+1);
	
	intHour = parseInt(intHour);

	if (isNaN(intHour) || intHour < 0 || intHour > 23){
		return false;
	}

	// intMin check
		intMin = parseInt(intMin);

	if (isNaN(intMin) || intMin < 0 || intMin > 59){
		return false;
	}
	return true;
}

function Diff(FromDate,ToDate){
	var date1 = new Date();
	var date2 = new Date();
	var diff  = new Date();

	var date1temp = new Date(FromDate);
	date1.setTime(date1temp.getTime());
	
	var date2temp = new Date(ToDate);
	date2.setTime(date2temp.getTime());

	diff.setTime(Math.abs(date1.getTime() - date2.getTime()));

	var timediff = diff.getTime();
	weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
	timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

	days = Math.floor(timediff / (1000 * 60 * 60 * 24));
	timediff -= days * (1000 * 60 * 60 * 24);

	hours = Math.floor(timediff / (1000 * 60 * 60)); 
	timediff -= hours * (1000 * 60 * 60);

	mins = Math.floor(timediff / (1000 * 60)); 
	timediff -= mins * (1000 * 60);

	secs = Math.floor(timediff / 1000); 
	timediff -= secs * 1000;
	strOut = "";
	
	if(weeks != 0){
		//strOut = weeks + " weeks" 
		strOut = weeks;
	}
	if(days !=0){
		if(strOut != ""){
			strOut += "." + days + " Weeks";
		}
		else{
			strOut += days + " days";
		}
	}
	else 
		strOut += " Weeks"
	//alert(strOut);
	return strOut;
	//document.forms[0].txtPeriod.value = weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds";
}
function DtIsInRange(startDate, EndDate, ActualDate){
	var bool;
	bool = DateCompare(ActualDate,startDate);
	if (!bool) return false;
	bool = DateCompare(EndDate,ActualDate);
	if (!bool) return false;
	return true;
}

function DateFormat(str){
	var tmpstr = str.split("/");
	if(tmpstr.length != 3)
		return false;
	else
		str = tmpstr[1] +"/"+ tmpstr[0] +"/"+tmpstr[2];
	return str;
}
