function leftTrim(str)
{
	while (str.substring(0,1) == ' ')
	{ 
		str = str.substring(1,str.length);
	}
	return str;
}

function rightTrim(str)
{
	while (str.substring(str.length-1,str.length) == ' ')
	{
		str = str.substring(0,str.length-1); 
	}
	return str;
}

function removeBlanks(str) {
	var finalStr = "";
	var c;
	var prevCharWasBlank = false;
	for(var i = 0; i < str.length; i++) {
		c = str.charAt(i);
		if(!prevCharWasBlank || c != ' ') {
			if (c == ' ') {
				prevCharWasBlank = true;
			} else {
				prevCharWasBlank = false;
				finalStr+=c;	
			}
			
		}
	}
	return finalStr;
}

function trimBlanks(str)
{
	return leftTrim(rightTrim(removeBlanks(str)));
} 


function removeExtraBlanks(str) {
	var finalStr = "";
	var c;
	var prevCharWasBlank = false;
	for(var i = 0; i < str.length; i++) {
		c = str.charAt(i);
		if(!prevCharWasBlank || c != ' ') {
			if (c == ' ') {
				prevCharWasBlank = true;
			} else {
				prevCharWasBlank = false;
			}
			finalStr+=c;
		}
	}
	return finalStr;
}

function trim(str)
{
	return leftTrim(rightTrim(removeExtraBlanks(str)));
} 

function isEmailValid(sEmail)
{
	if (sEmail == "")
	{
		alert("Please fill in your email address.");
		return false;
	}
	else if (!emailCheck(sEmail))
	{
		return false;
	}
	return true;
}
function LogOff()
{
	window.location.href="logoff.asp";
}
/**
 * this function is used to validate names. Names like first and last names cannot contain spaces,
 * however, names like team names and league names can contain spaces. Pass true or false as second 
 * argument accordingly.
 */
function isNameValid(str)
{
	if (isBlank(str))
	{
		return false;
	}
	
	var val = "><~+|=1234567890\"%\\@!#$%^&*()?";
		val += "";
	
	for (i=0; i < str.length; i++)
	{
		var s = str.charAt(i);
		if (val.indexOf(s) != -1)
		{
			return false;
		}
	}
	
	return true;
}

function isDNameValid(str)
{
	if (isBlank(str))
	{
		return false;
	}
	
	var val = "><~+|=\"%\\@!#$%^&*()?";
		val += "";
	
	for (i=0; i < str.length; i++)
	{
		var s = str.charAt(i);
		if (val.indexOf(s) != -1)
		{
			return false;
		}
	}
	
	return true;
}

function isPasswordValid(sPwd)
{
	if (sPwd == "")
	{
		alert("Please fill in the password.");
		return false;
	}
	else if (sPwd.length < 8)
	{
		alert("Password must be at least 8 characters");
		return false;
	}
	else if(!isValidPassword(sPwd))
	{
		alert("Password cannot contain special characters like \', \", %, \\");
		return false;
	}
	return true;
}

function validateEmailPwd(emailval,passval)
{
	if (emailval == "")
	{
		alert("Please fill in your email address.");
		return "emailNull";
	}
	else if (!emailCheck(emailval))
	{
		return "emailNull";
	}
	else if (passval == "")
	{
		alert("Please fill in your password.");
		return "passwordNull" ;
	}
}

function emailCheck (emailStr) 
{
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)#$%^&*<>,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s" + specialChars + "\]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom = validChars + '+';
	var word = "(" + atom + "|" + quotedUser + ")";
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray = emailStr.match(emailPat);
	var user,domain=null,IPArray,domainArray,atomPat,domArr,len,errStr;
	
	/*Changes made by biju on 22/06/06*/
	var at="@"
	var lat=emailStr.indexOf(at)
	var un="_"
	var und=emailStr.indexOf(un)
	
	
	if (und==0)	{
	alert("Email Name cannot start with a _ ");
	return false;

	}
	
	 if (emailStr.indexOf(at,(lat+1))!=-1){
		    alert("Email address is incorrect (check @ and .'s)");
		    return false;
		 }
		
		
		/*END HERE 22/06/06*/
		
		
	if (matchArray == null)
	{
		
		alert("Email address is incorrect (check @ and .'s)");
		
		
		return false;
	}

	user=matchArray[1];
	domain=matchArray[2];	
	if (user.match(userPat) == null)
	{
		alert("Email address' username is invalid.");
		return false;
	}

	/*checks if there is a domain ie after '.'*/
	domainArray = domain.match(domainPat)
	if (domainArray == null)
	{
		alert("Email address' domain name is invalid.")
		return false
	}
	
	//donno why this is used
	IPArray = domain.match(ipDomainPat);
  
	if (IPArray != null) 
	{
		for (var i=1;i<=4;i++)
		{	
			if (IPArray[i]>255)
			{
				alert("Destination IP address is invalid!")
				return false
			}
		}
		return true
	}

//checks if there is a '.' after domain 
	atomPat = new RegExp(atom,"g")
	domArr = domain.match(atomPat)
	len = domArr.length
	if (len<2)
	{
		errStr = "Email address is missing hostname!"
		alert(errStr);
		return false
	}
	if (domArr[len-1].length<2 || domArr[len-1].length>3)
	{
		alert("Email address must end in a three-letter domain, or two letter country.")
		return false
	}
	return true;
}

function isBlank(str)
{
	if (str == "")
		return true;

	return false;
}

function isNumeric(str1)
{
	var val = "0123456789";
	for (i=0; i < str1.length; i++)
	{
		var s = str1.charAt(i);
		if (val.indexOf(s) == -1)
			return false;
	}
	return true;
}

function isPhone(str1)
{
	var val = "()0123456789- ";
	for (i=0; i < str1.length; i++)
	{
		var s = str1.charAt(i);
		if (val.indexOf(s) == -1)
			return false;
	}
	return true;
}

function isAlphaNumeric(str1)
{
	var val = "_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (i=0; i < str1.length; i++)
	{
		var s = str1.charAt(i);
		if (val.indexOf(s) == -1)
			return true;
	}
	return false;
}

function isValidPassword(str1)
{
	var val = "'\"%\\";
	for (i=0; i < str1.length; i++)
	{
		var s = str1.charAt(i);
		if (val.indexOf(s) != -1)
			return false;
	}
	return true;
}

function removeBlanks(str) {
	var finalStr = "";
	var c;
	var prevCharWasBlank = false;
	for(var i = 0; i < str.length; i++) {
		c = str.charAt(i);
		if(!prevCharWasBlank || c != ' ') {
			if (c == ' ') {
				prevCharWasBlank = true;
			} else {
				prevCharWasBlank = false;
			}
			finalStr+=c;	
		}
	}
	return finalStr;
}


function makeNameCaps(str)
{
	 var array = str.split(" ");
	 var buffer="";
	 var strTemp="";
	 for(var i=0;i<array.length;i++){
		 var strTemp = array[i];
		 var c = strTemp.charAt(0);
		 var newString = c.toUpperCase()+strTemp.substring(1,strTemp.length).toLowerCase();
		buffer = buffer+newString +" ";
	}
	return removeBlanks(leftTrim(rightTrim(buffer)));
}

//------------------------------------------------------------------------------------
// function: isProperDate
//           Function to tell whether the given date is valid or not
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function isProperDate(argDate) {
	var tmpDay = getDay(argDate)
	var tmpMon = getMonth(argDate)
	var tmpYear = getYear(argDate)

	return isProperDay(tmpDay, tmpMon, tmpYear) && isProperMonth(tmpMon) && isProperYear(tmpYear)
}

//------------------------------------------------------------------------------------
// function: isWhiteSpace
//           Function to check whether the given argument consists of charactes other
//           than a space and \t
//------------------------------------------------------------------------------------
function isWhiteSpace(argWhiteSpace) {
	argWs = argWhiteSpace.toString()
	
	for (var intI=0; intI < argWs.length; intI++)
		if (argWs.charAt(intI) != ' ' && argWs.charAt(intI) != '\t')
			return false
	
	return true
}

//------------------------------------------------------------------------------------
// function: isLeapYear
//           Function to tell, whether the given year is leap year or not
//------------------------------------------------------------------------------------
function isLeapYear(argYear) {
	return ((argYear % 4 == 0) && (argYear % 100 != 0)) || (argYear % 400 == 0) 
}

//------------------------------------------------------------------------------------
// function: daysInMonth
//           Function to return the maximum number of days in a given month of a
//           given year
//------------------------------------------------------------------------------------
function daysInMonth(argMonth, argYear) {
	switch (Number(argMonth)) {
		case 1:		// Jan
		case 3:		// Mar
		case 5:		// May
		case 7:		// Jul
		case 8:		// Aug
		case 10:		// Oct
		case 12:		// Dec
			return 31;
			break;
		
		case 4:		// Apr
		case 6:		// Jun
		case 9:		// Sep
		case 11:		// Nov
			return 30;
			break;
		
		case 2:		// Feb
			if (isLeapYear(argYear))
				return 29
			else
				return 28
			break;
		
		default:
			return 0;
	}
}

//------------------------------------------------------------------------------------
// function: getDateSeparator
//           Function to return the date separator
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getDateSeparator(argDate) {
	// Are there invalid separators?
	if ((argDate.indexOf('-') > 0) && (argDate.indexOf('/') > 0))
		return ' '

	if (argDate.indexOf('-') > 0)
		return '-'
	else
		if (argDate.indexOf('/') > 0)
			return '/'
		else
			return ' '
}


//------------------------------------------------------------------------------------
// function: getYear
//           Function to return the year part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getYear(argDate) {
	var dateSep = getDateSeparator(argDate)
	
	if (dateSep == ' ')
		return 0

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[2]
	else
		return 0
}

//------------------------------------------------------------------------------------
// function: getMonth
//           Function to return the month part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getMonth(argDate) {
	var dateSep = getDateSeparator(argDate)
	
	if (dateSep == ' ')
		return 0

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[0]
	else
		return 0
}

//------------------------------------------------------------------------------------
// function: getDay
//           Function to return the day part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getDay(argDate) {
	var dateSep = getDateSeparator(argDate)
	
	if (dateSep == ' ')
		return 0

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[1]
	else
		return 0
}

//------------------------------------------------------------------------------------
// function: isProperDay
//           Function to tell whether the given day of the given month is valid
//------------------------------------------------------------------------------------
function isProperDay(argDay, argMonth, argYear) {
	if ((isWhiteSpace(argDay)) || (argDay == 0))
		return false

	if ((argDay > 0) && (argDay < daysInMonth(argMonth, argYear) + 1))
		return true
	else 
		return false
}

//------------------------------------------------------------------------------------
// function: isProperMonth
//           Function to tell whether the given month is a valid one
//------------------------------------------------------------------------------------
function isProperMonth(argMonth) {
	if ((isWhiteSpace(argMonth)) || (argMonth == 0))
		return false
	
	if ((argMonth > 0) && (argMonth < 13))
		return true
	else
		return false
}

//------------------------------------------------------------------------------------
// function: isProperYear
//           Function to tell whether the given Year is a valid one
//------------------------------------------------------------------------------------
function isProperYear(argYear) {
	if ((isWhiteSpace(argYear)) || (argYear.toString().length > 4) || (argYear.toString().length == 3))
		return false
	
	switch (argYear.toString().length) {
		case 1:
			if (argYear >=0 && argYear < 10)
				return true
			else
				return false
			
		case 2:
			if (argYear >=0 && argYear < 100)
				return true
			else
				return false
			
		case 4:
			if (((argYear >=1900) || (argYear >=2000)) && ((argYear < 3000) || (argYear < 2000)))
				return true
			else
				return false
		
		default:
			return false
	}
}

//------------------------------------------------------------------------------------
// function: getDateString
//           Function to return a date in the format  : "MM/DD/YYYY"
//------------------------------------------------------------------------------------
function getDateString(day, month, year) {
    var monthNoArray = new Array(12);
    monthNoArray["Jan"] = 1;
    monthNoArray["Feb"] = 2;
    monthNoArray["Mar"] = 3;
    monthNoArray["Apr"] = 4;
    monthNoArray["May"] = 5;
    monthNoArray["Jun"] = 6;
    monthNoArray["Jul"] = 7;
    monthNoArray["Aug"] = 8;
    monthNoArray["Sep"] = 9;
    monthNoArray["Oct"] = 10;
    monthNoArray["Nov"] = 11;
    monthNoArray["Dec"] = 12;
    
    var monthNo = monthNoArray[month];
	return finalDate = monthNo + '/' + day + '/' + year;	
}

function checkDate(day, month, year) {
	var finalDate = getDateString(day, month, year);	
	if (!isProperDate(finalDate)) {
		return false;
	}	
	return true;
}

function chkDate(day,month,year) {
	var finalDate = month+'/'+day+'/'+year;
	if(!isProperDate(finalDate)) {
		return false;
	}
	return true;
}
