/*
	''  Page Name       	:-  validation.js 
	''  purpose          	:-  Validation of various Fields
	''  Created By       	:-  Nilambari Patil 
	''  Created On     		:-  06-11-2004
	''  Latest Modified 	:-  09-11-2004
*/
function trim(inputString) 
{
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   
   while (ch == " ") { 
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { 
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { 
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); 
   }
   return retValue;
}

// Remove leading spaces and carriage returns AND Remove trailing spaces and carriage returns
function PreTrim(s) 
{
  // Remove leading spaces and carriage returns
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }

  // Remove trailing spaces and carriage returns
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}
		
//check name
function checkname(sText)
{
    var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ& ";
    var IsNumber=true;
    var Char;
	if(sText.length==0)	
	{
	  return false;
	}
	else
	{
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }  
    return IsNumber;
   }	
}
//check name
function checkcity(sText)
{
    var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ& ";
	
    var IsNumber=true;
    var Char;
	if(sText.length==0)	
	{
	  return false;
	}
	else
	{
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }  
    return IsNumber;
   }	
}

function checksalutation(sText)
{
    var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var IsNumber=true;
    var Char;
	if(sText.length==0)	
	{
	  return false;
	}
	else
	{
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }  
    return IsNumber;
   }	
}


//check Address
function checkadd(sText)
{
    var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.#@-,;:/*_%$!&()+";
	return inValidCharSet(sText,ValidChars)
}
//check URL

function checkurl(sText)
{
    var ValidChars = ":abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789./_-";
	var CharsArr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var IsNumber=true;
    var Char;
	var dotcnt=0;
	var slcnt=0;
	for (i = 0; i < sText.length; i++)
	    {   
	        // Check if current character is '.' and count its occurances
	        var c = sText.charAt(i);
			if (c==".") dotcnt++;
	    }
	if (dotcnt == 0) return false;
	//chFlg = isChar(sText);
	return inValidCharSet(sText,ValidChars);	
}
function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset){
	var result = true;
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0){
			result = false;
			break;
		}
	return result;
}


function inValidCharZip(str)
{
	charset="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	
		return inValidCharSet(str,charset);
	
}

function checkAlphaNum(str)
{
	charset="0123456789 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	
		return inValidCharSet(str,charset);
	
}
function checkSalutation(str)
{
	charset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ."
	
		return inValidCharSet(str,charset);
	
}

function isValidExpDate(formField,fieldLabel,required)
{
	var result = true;
	var formValue = formField;

 	if (result && (formField.length>0))
 	{
 		var elems = formValue.split("/");
 		
 		result = (elems.length == 2); // should be two components
 		var expired = false;
 		
 		if (result)
 		{
 			var month = parseInt(elems[0],10);
 			var year = parseInt(elems[1],10);
 			
 			if (elems[1].length == 2)
 				year += 2000;
 			
 			var now = new Date();
 			
 			var nowMonth = now.getMonth() + 1;
 			var nowYear = now.getFullYear();
 			
 			expired = (nowYear > year) || ((nowYear == year ) && (nowMonth > month));
 			
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && ((elems[1].length == 2) || (elems[1].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter the "' + fieldLabel +'" field.');
			document.mycart.expmonth.focus();
			result = false;
		}
		else if (expired)
		{
 			result = false;
 			alert('The date for "' + fieldLabel +'" has expired.');
			document.mycart.expmonth.focus();
		}
	} 
	return result;
}

function checkCC(s) {
  var i, n, c, r, t;
  // First, reverse the string and remove any non-numeric characters.
  r = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
     {
      r = c + r;
     }
    else
	 {
	   return false;
	 }	  
  }
  // Check for a bad string.
  if (r.length <= 1)
    return false;

  // Now run through each single digit to create a new string. Even digits
  // are multiplied by two, odd digits are left alone.
  t = "";
  for (i = 0; i < r.length; i++) {
    c = parseInt(r.charAt(i), 10);
    if (i % 2 != 0)
      c *= 2;
    t = t + c;
  }
  // Finally, add up all the single digits in this string.
  n = 0;
  for (i = 0; i < t.length; i++) {
    c = parseInt(t.charAt(i), 10);
    n = n + c;
  }
  // If the resulting sum is an even multiple of ten (but not zero), the
  // card number is good.
  if (n != 0 && n % 10 == 0)
    return true;
  else
    return false;
}
function isInteger(s)
{
    var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function isChar(s)
{
    var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return true;
    }
    // All characters are numbers.
    return false;
}

function isFloat(s)
{
	var i;
	var cnt;
	cnt=0;
	if (s.length==0) return false;
    for (i = 0; i <= s.length; i++)
    {   
        // Check if current character is '.' and count its occurances
        var c = s.charAt(i);
        if (c==".") cnt++;
		if (cnt > 1) return false;
		//break;
    }
    return inValidCharSet(s,"0123456789.");
}

function stripCharsInBag(s, bag)
{
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}




function middletrim(inputString)
{
	Spacing=true
	for(i=0;i<inputString.length;i++)
	{
		if(i>0)
		{
		if(i!=inputString.length-1)
		{
			if(inputString.charAt(i)==" ") 
			{
				Spacing=false;
				i=inputString.length
			}
		}
		}

	}
	
	return Spacing;
}




function checkInternationalPhone(strPhone)
{
	var digits = "0123456789";
	var phoneNumberDelimiters = "-";
	var validWorldPhoneChars = phoneNumberDelimiters;
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length == minDigitsInIPhoneNumber);
}

function checkPhone(strPhone)
{
	var digits = "0123456789+- ()";
	var phoneNumberDelimiters = "-";
	var phoneNumberDelimiters1 = "+";
	var validPhoneChars = phoneNumberDelimiters;
	var validPhoneChars1 = phoneNumberDelimiters1;
	s=stripCharsInBag(strPhone,validPhoneChars);
	s=stripCharsInBag(s,validPhoneChars1);
	//return (isInteger(s));
	return inValidCharSet(strPhone,digits)
}
function checkMobile(strPhone)
{
	var digits = "0123456789";
	var phoneNumberDelimiters1 = "+";
	var validPhoneChars1 = phoneNumberDelimiters1;
	s=stripCharsInBag(strPhone,validPhoneChars1);
	return (isInteger(s));
}

function checkEmailAddress(strEmail)
{
	var atcnt, dotcnt;
	atcnt=0;
	dotcnt=0;
	//alert(strEmail);
	if (strEmail.length==0) return false;
    for (i = 0; i < strEmail.length; i++)
	    {   
	        // Check if current character is '@' and count its occurances
	        var c = strEmail.charAt(i);
	        if (c=="@") atcnt++;
			if (c==".") dotcnt++;
			if (atcnt > 1) return false;
	    }
	if (atcnt == 0) return false;
	if (dotcnt == 0) return false;
	if ((strEmail.indexOf("@")==0) || (strEmail.indexOf(".")==0)) return false;
	if ((strEmail.indexOf("@")==strEmail.length-1) || (strEmail.indexOf(".")==strEmail.length-1)) return false;
	if ((strEmail.indexOf("@.")>=0) || (strEmail.indexOf(".@")>=0)) return false;
	return inValidCharSet(strEmail,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@.0123456789_-");
}
function validatePassword(strpwd){
	for (i = 0; i < strpwd.length; i++)
	    {   
	        // Check the current character
	        var c = strpwd.charAt(i);
	        if ((c=="\"")||(c=="-")||(c=="/")||(c=="\"")||(c=="'")||(c==" ")||(c=="=")) return false;
	    }
	return true;
}
function checkprojname(projName){
	return inValidCharSet(projName,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789_-");
}
function isfutureDate(strDate)
{
	var d = new Date();
	var dateStr;
	dateStr = d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear()
	tempArr = strDate.split("/")
	strDate = tempArr[1] + "/" + tempArr[0] + "/" + tempArr[2]
	dtArr = strDate.split("/");
	if (dtArr[1].length<2) dtArr[1]="0"+dtArr[1];
	if (dtArr[0].length<2) dtArr[0]="0"+dtArr[0];
	if (d.getFullYear()>dtArr[2]) return false;
	else if (d.getFullYear()==dtArr[2]){
		 if ((d.getMonth()+1)>dtArr[1]) return false;
		 else if ((d.getMonth()+1)==dtArr[1]){	
		 	if (d.getDate()>=dtArr[0]) return false;
		}
	}
	return true;
}
function isfutureDateA(strDate)
{
	var d = new Date();
	var dateStr;
	dateStr = d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear()
	tempArr = strDate.split("/")
	strDate = tempArr[1] + "/" + tempArr[0] + "/" + tempArr[2]
	dtArr = strDate.split("/");
	if (dtArr[1].length<2) dtArr[1]="0"+dtArr[1];
	if (dtArr[0].length<2) dtArr[0]="0"+dtArr[0];
	if (d.getFullYear()>dtArr[2]) return false;
	else if (d.getFullYear()==dtArr[2]){
		 if ((d.getMonth()+1)>dtArr[1]) return false;
		 else if ((d.getMonth()+1)==dtArr[1]){	
		 	if (d.getDate()<dtArr[0]) return false;
		}
	}
	return true;
}
function isgreaterDate(strDate1,strDate2)
{
/*
	var dateStrArr;
	dateStrArr = strDate1.split("/");
	dtArr = strDate2.split("/");
	if (parseInt(dateStrArr[2])>parseInt(dtArr[2])) {return false;}
	else if (parseInt(dateStrArr[2])==parseInt(dtArr[2]))
	 {
		 if (dateStrArr[0]=="08") dateStrArr[0]=8
		 if (dtArr[0]=="09") dtArr[0]=9
		 if ((parseInt(dateStrArr[0])>parseInt(dtArr[0]))) { return false;}
		 else if (parseInt(dateStrArr[0])==parseInt(dtArr[0]))
		 {
		 	if (dateStrArr[1]=="08") dateStrArr[1]="8"
			if (dtArr[1]=="09") dtArr[1]="9"
		 	if (parseInt(dateStrArr[1])>parseInt(dtArr[1])) {return false;}
        }
    }
	return true;
*/	
	var dateStrArr;
	dateStrArr = strDate1.split("/");
	dtArr = strDate2.split("/");
	if (dateStrArr[2]>dtArr[2]) {return false;}
	else if (dateStrArr[2]==dtArr[2])
	 {
		 if (dateStrArr[0]>dtArr[0]) { return false;}
		 else if (dateStrArr[0]==dtArr[0])
		 {
		 	if (dateStrArr[1]>dtArr[1]) {return false;}
        }
    }
	return true;

}
function islessDate(strDate1,strDate2)
{
	var dateStrArr,tempArr;
	dateStrArr = strDate1.split("/");
	dtArr = strDate2.split("/");
	if (dateStrArr[2]<dtArr[2]) return false;
	else if (dateStrArr[2]==dtArr[2]){
		 if (dateStrArr[1]<dtArr[1]) return false;
		 else if (dateStrArr[1]==dtArr[1]){
		 //	alert("Checking date")	
		 	if (dateStrArr[0]<dtArr[0]) return false;
		}
	}
	return true;
}
function isLeapYear(myYearStr){
	var isleap = false;
	if (myYearStr%4==0 && (myYearStr%100!=0 || myYearStr%400==0)){
		isleap = true;
	}
	return isleap;
}

function checkDate(dd,mm,yyyy) {
	if (dd.length<2) dd= "0"+dd;
	if (mm.length<2) mm= "0"+mm;
	if (dd=="08") dd="8"
	if (dd=="09") dd="9"

	var monthDays = 0;

	if (mm=="Jan") mm="01";
	else if (mm=="Feb") mm="02";
	else if (mm=="Mar") mm="03";
	else if (mm=="Apr") mm="04";
	else if (mm=="May") mm="05";
	else if (mm=="Jun") mm="06";
	else if (mm=="Jul") mm="07";
	else if (mm=="Aug") mm="08";
	else if (mm=="Sep") mm="09";
	else if (mm=="Oct") mm="10";
	else if (mm=="Nov") mm="11";
	else if (mm=="Dec") mm="12";
	
	if (((mm%2)==0) && (parseInt(mm)<8))	monthDays = 30;
	if (((mm%2)==1) && (parseInt(mm)<8)) monthDays = 31;
	if (((mm%2)==0) && (parseInt(mm)>=8)) monthDays = 31;
	if (((mm%2)==1) && (parseInt(mm)>=8)) monthDays = 30;
	if (mm=="08")
    	monthDays = 31;

	if (monthDays<dd) return false;
	
	if (mm=="01") mm="Jan";
	else if (mm=="02") mm="Feb";
	else if (mm=="03") mm="Mar";
	else if (mm=="04") mm="Apr";
	else if (mm=="05") mm="May";
	else if (mm=="06") mm="Jun";
	else if (mm=="07") mm="Jul";
	else if (mm=="08") mm="Aug";
	else if (mm=="09") mm="Sep";
	else if (mm=="10") mm="Oct";
	else if (mm=="11") mm="Nov";
	else if (mm=="12") mm="Dec";
	
	var myDayStr = parseInt(dd)+1;
	var myMonthStr = mm;
	var myYearStr = yyyy;
	var myDateStr = myDayStr + ' ' + myMonthStr + ' ' + myYearStr;
	//alert(myDateStr)
	//Check for leap Year
	if (myMonthStr=="Feb"){
		if (((parseInt(myDayStr)-1)>29) ||((parseInt(myDayStr)-1)==29 && !isLeapYear(myYearStr))){
			//alert("This Month Does not have " + (myDayStr-1) + " Days.");
			return false;
		}
	}

	/* Using form values, create a new date object
	which looks like "Wed Jan 1 00:00:00 EST 1975". */

	var myDate = new Date( myDateStr );
	//alert(myDate)
	// Convert the date to a string so we can parse it.
	var myDate_string = myDate.toGMTString();
	/* Split the string at every space and put the values into an array so,
	using the previous example, the first element in the array is "Wed", the
	second element is "Jan", the third element is "1", etc. */
	//alert(myDate_string)
	var myDate_array = myDate_string.split( ' ' );
	
	/* If we entered "Feb 31, 1975" in the form, the "new Date()" function
	converts the value to "Mar 3, 1975". Therefore, we compare the month
	in the array with the month we entered into the form. If they match,
	then the date is valid, otherwise, the date is NOT valid. */
	//alert("myDate_array[2] = " + myDate_array[2]);
	//alert("myMonthStr = " + myMonthStr);
	if ( myDate_array[2] != myMonthStr ) {
	  return false;
	} 
	else {
	  return true;
	}	 
}
function checkfldrname(sText)
{
    var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789#@-;_.%$!&()+";
	return inValidCharSet(sText,ValidChars)
}