//String Handling functions on Javascript V1.1 from Epsilon Systems(Subhashini.G)
    var TempStr
    var NewStr
    var OrgLen
    var LastPos
    var StartPos
    var Cnt
    var i
    
   
 // This function is internal usage   
  function JTrimInitialize(Astr) {
    OrgLen=0
    OrgLen=JLen(Astr)   
    
    NewStr=""
    Cnt=0
    LastPos=-1
    StartPos=-1
    
    if (OrgLen==0)  { 
        return('')         }   
    
    
    // Last Character Position
     LastPos=FindLastPos()
         
     // Starting Character Postion   
        StartPos=FindStartPos()      
      
      if (LastPos>=0) {
        LastPos+=1   }
        
      if (StartPos>=0) {
         StartPos+=1   }  
        
      return('')      
      }
      
       // This function is used to find out the starting character position
   // from the string excluding white spaces 
    
     
     function FindStartPos() {
      for(i=0;i<OrgLen;i++) {
	      if (TempStr.charAt(i)!=' ') {
		       break;   }      
       }
		return(i)		       
    	}
   
      
      
   // This function is used to find out the last character position
   // from the string excluding white spaces 
   
     function FindLastPos() {
       for(i=OrgLen-1;i>=0;i--) {
         if (TempStr.charAt(i)!=' ') {
           break;   }      
         }
         return(i)
     }    
     

// These are the functions which are used as built-in functions

//******************************************************************
    	
    	
  function JLen(Astr) {  
    TempStr=new String(Astr)
    return(TempStr.length)			 }
 	
     
//*******************************************************************

   function JTrim(Astr) {
      JTrimInitialize(Astr)
      // Trim
     if (StartPos>=0 && LastPos>=0) {
       return(TempStr.substring(StartPos-1,LastPos)) }
     else {
       return('') } 
  
   }
 	
//**********************************************************************    	
   function JLtrim(Astr) {
      JTrimInitialize(Astr)
    // LTrim  
     if (StartPos>=0 && LastPos>=0) {
       return(TempStr.substring(StartPos-1,OrgLen)) }
     else {
       return('') } 
   }
   
   function JRtrim(Astr) {
      JTrimInitialize(Astr)
    // RTrim  
     if (StartPos>=0 && LastPos>=0) {
        return(TempStr.substring(0,LastPos)) }
     else {
       return('') } 
   }
   
   // Counting No. of Occurences    
   
   
//************************************************************************   

  function JOccurs(AStr,ASearch) {
     var StrLen
     var SearchLen
     var noofOccurences
     var TempOccur
     var i
     
     TempOccur=new String(AStr)
     
         
     StrLen=JLen(AStr)
     SearchLen=JLen(ASearch)
     noofOccurences=0

     for (i=0;i<StrLen;i++) {
         if(TempOccur.substring(i,i+SearchLen)==ASearch) {
                noofOccurences+=1								}      
     } 
     return(noofOccurences)

}

//************************************************************************

 function JIsAlpha(ATxt) {
    if (JLen(JTrim(ATxt))<=0) return false
    for(i=0;i<ATxt.length;i++) {
      if (ATxt.charAt(i)!=0) {
        if (eval(parseInt(ATxt.charAt(i))>0)==true) {
            return(true)}	
        }  
     }   
     return(false)
  }

//************************************************************************

 function JIsSpecial(ATxt) {
    if (JLen(JTrim(ATxt))<=0) return(false);
    myarr = new Array(27);
	myarr[0]= "~"
	myarr[1]= "#"
	myarr[2]= "$"
	myarr[3]= "^"
	myarr[4]= "%"
	myarr[5]= "("
	myarr[6]= ")"
	myarr[7]= "*"
	myarr[8]= "="
	myarr[9]= "+"
	myarr[10]= "-"
	myarr[11]= ";"
	myarr[12]= ":"
	myarr[13]= "/"
	myarr[14]= "<"
	myarr[15]= ">"
	myarr[16]= "?"
	myarr[17]= ","
	myarr[18]= "+"
	myarr[19]= "`"
	myarr[20]= "["
	myarr[21]= "]"
	myarr[22]= "{"
	myarr[23]= "}"
	myarr[24]= "}"
	myarr[25]= "|"
	//myarr[26]= "\"
	//myarr[27]= """
	myarr[26]= "'"

    for(i=0;i<ATxt.length;i++) {
		for (j=0;j<27;j++){
		  if (ATxt.charAt(i)== myarr[j]) return(true);
        }  
     }   
     return(false);
  }
 
//************************************************************************

  function JIsNumeric(ANum) {
    if (JLen(JTrim(ANum))<=0) return false
    for(i=0;i<ANum.length;i++) {
      if (ANum.charAt(i)!=0) {
        if (eval(parseInt(ANum.charAt(i))>0)==false) {
            return(false)					}			
           }  
     }   
     return(true)
  }
 
 
//************************************************************************
      
 function JIsNull(AStr) {
    if (JLen(AStr)<=0) {
       return true  }
    else {
       return false }
  }    
  
  
//************************************************************************  
      
 function JSqueeze(AStr,ARemove) {
    var temp=""
    var c
    for(var i=0;i<AStr.length;i++) {
       c=AStr.charAt(i)
       if(c!=ARemove) temp+=c              }
       
     return temp
  }             
      
//************************************************************************
      
  function JSplit(AStr,ASplit) {
    return(AStr.split(ASplit))      }  
    
//************************************************************************
  function JSearch(AStr,ASearch) {
     return(AStr.search(ASearch)+1)
  }   

//************************************************************************

function JProper(AStr)  {
  var StrHold
  var StrLen
  var TempStr
  var Cnt
  var ValStr

  StrLen = AStr.length
  Cnt=0
  StrHold=""
  ValStr=""

  if (StrLen>0)  {
    for(i=0;i<StrLen;i++) {
        TempStr = AStr.charAt(i)
        if (TempStr !=' ' && TempStr.length > 0 && Cnt==0) {
          ValStr=AStr.charAt(i)
          StrHold = StrHold + ValStr.toUpperCase()
          Cnt=1                                       }
        else {
          ValStr=AStr.charAt(i)
          StrHold = StrHold + ValStr.toLowerCase()       }                           }
  }
    return(StrHold)
 }

//************************************************************************

function JReplace(AStr,strReplaceWhat,strReplaceWith)
	{
		var strReturnValue = ""
		var strCharacter
		var intLoop
		for(intLoop=0;intLoop<AStr.length;intLoop++)
		{
			strCharacter=AStr.charAt(intLoop)
			if(strCharacter!=strReplaceWhat)
			{
				strReturnValue+=strCharacter
			}
			else
			{
				strReturnValue = strReturnValue+strReplaceWith
			}
		}
		return strReturnValue
	}
	
//************************************************************************

//varad
function checkdate(mydte){
        var err=0
        var psj=0;
        a=mydte
        if (a.length != 10) err=1
        d = a.substring(0, 2)// day
        c = a.substring(2, 3)// '/'
        b = a.substring(3, 5)// month
        e = a.substring(5, 6)// '/'
        f = a.substring(6, 10)// year

        //basic error checking
        if (b<1 || b>12) err = 1
        if (c != '/' && c != '-') err = 1
        if (d<1 || d>31) err = 1
        if (e != '/' && e != '-') err = 1
        if (f<1965 || f>2000) err = 1
        
        //advanced error checking

        // months with 30 days
        if (b==4 || b==6 || b==9 || b==11){
                if (d==31) err=1
        }

        // february, leap year
        if (b==2){
                // feb
                var g=parseInt(f/4)
                if (isNaN(g)) {
                        err=1
                }

                if (d>29) err=1
                if (d==29 && ((f/4)!=parseInt(f/4))) err=1
        }

        if (err==1){
                return false
        }
        else{
                return true
        }

}

//************************************************************************

function Date_Check(format,dtt)
{
   var f
   var d
   var flag
   var smon
   var sdt
   var syy
   var mon
   var dt
   var yy
   var ldt
   var result=""
   f=format
   d=dtt
   if (f.length==d.length)
      {
	if (f=="mm/dd/yyyy")
	  {
  	    smon=d.substring(0,2)
	    sdt	=d.substring(3,5)
	    syy=d.substring(6,10)
	    ldt=sdt.length;
	    mon=parseInt(smon)
	    
	    dt=parseInt(sdt)
	    if (dt<10) 
	      dt=10;
	    yy=parseInt(syy)
	    if (yy%4==0)
		{flag=1}
	    else
		{flag=0}
		if (mon==2 && flag==0 && dt>28)
	      {
	       result = "Invalid Date";
	       return result;
	       }
	      if (mon==2 && flag==1 && dt>29)
	       {
	        result="Invalid Date";
	        return result;
	       }
	     if ((mon%2==0 && mon==8 && dt<=31) || (mon%2==0 && mon!=8 && dt<=30)||(mon%2!=0 && dt<=30) || (mon%2!=0 && mon==7 && dt<=30)||(mon%2==0 && mon==12 && dt<=31))
          { 
		    if (mon>=1 && mon<=12)
		   {
		       if (dt>=1 && dt<=31)
			{
			  if (yy>=1900 && yy<=2000)
			    {
			      result="Valid Date"
			      return result
		        }
			  else
			    {
			      result="Invalid Date"
			      return result
			    } // end of the validation.	
			} // end of date.		
			else
			    {
			      result="Invalid Date"
			      return result
			    } // end of the validation.	
		   } // end of month.
		   else
			    {
			      result="Invalid Date"
			      return result
			    } // end of the validation.	
		  }  // end of big if.
		  else
			    {
			      result="Invalid Date"
			      return result
			    } // end of the validation.	
        } // end of mm/dd/yyyy
	 else if (f=="dd/mm/yyyy")
	   {
	    smon=d.substring(3,5)
	    sdt=d.substring(0,2)
	    syy=d.substring(6,10)
	    ldt=sdt.length;
	    mon=parseInt(smon)
	    dt=parseInt(sdt)
	    if (dt<10)
	      dt=10;
	    yy=parseInt(syy)
	    if (yy%4==0)
		{flag=1}
	    else
		{flag=0}
	    if (mon==2 && flag==0 && dt>28)
	      {
	       result="Invalid Date";
	       return result;
	      }
	     if ((mon%2==0 && mon==8 && dt<=31) || (mon%2==0 && mon!=8 && dt<=30)|| (mon%2!=0 && dt<=30) || (mon%2!=0 && mon==7 && dt<=30)||(mon%2==0 && mon==12 && dt<=31))
          {
		   if (mon>=1 && mon<=12)
		    {
		    if (dt>=1 && dt<=31)
			 {
			  if (yy>=1900 && yy<=2000)
			    { 
			      result="Valid Date"
			      return result
		            }
			  else
			    {
			      result="Invalid Date"
			      return result
			    } // end of validation.
			 } // end of date.		
			 else
			    {
			      result="Invalid Date"
			      return result
			    } // end of validation.
		     } // end of month.
		     else
			    {
			      result="Invalid Date"
			      return result
			    } // end of validation.
		  } // end of big if.
		  else
			    {
			      result="Invalid Date"
			      return result
			    } // end of validation.
         } // end of dd/mm/yyyy.
	} // end if of length comparison.		
	else
	 {
	   result="Invalid Date"
	   return result 
	 } // end of the length comparison.
} // End of the function.	    		

//************************************************************************

function JDateDifference(startDate,endDate)  {
  if (JIsDate(startDate)!=true) {
      return(false); // Invalid start Date  
   }
   
  if (JIsDate(endDate)!=true) {
     return(false);   // Invalid End Date		
  }
  
  var sdate=new Date(startDate);
  var edate=new Date(endDate);
  var datediff=(edate-sdate)/86400000;
  return(datediff);

}

//************************************************************************

function JMonthsDifference(startDate,endDate) {
  if (JIsDate(startDate)!=true) {
      return(false); // Invalid start Date  
   }
   
  if (JIsDate(endDate)!=true) {
     return(false);   // Invalid End Date		
  }
  
  var sdate=new Date(startDate);
  var edate=new Date(endDate);
  syear=sdate.getFullYear();
  eyear=edate.getFullYear();
  smonth=sdate.getMonth()+1;
  emonth=edate.getMonth()+1;
  
  diffMonths=emonth-smonth;
  diffyear=eyear-syear;
  diffMonths=(diffyear * 12) + diffMonths;
  return(diffMonths);
}

//************************************************************************

function JIsDate(dateStr) {
// Checks for the following valid date formats:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
// Also separates date into month, day, and year variables

 
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

// To require a 4 digit year entry, use this line instead:
// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
 return("Date is not in a valid format.")
}
month = matchArray[1]; // parse date into variables
day = matchArray[3];
year = matchArray[4];

if (month < 1 || month > 12) { // check month range
  alert("Month must be between 1 and 12.");
  return false;
}
if (day < 1 || day > 31) {
   alert("Day must be between 1 and 31.");
   return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
  alert("Month "+month+" doesn't have 31 days!")
  return false;
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
  alert("February " + year + " doesn't have " + day + " days!");
  return false;
  }
}
return true;  // date is valid
}


//Function to Format Date

function JFormatDate(datestr, formatstr)
{
  
	var syear;
	var smonth;
	var sdate,sfulldate;
	var finaldt;
	
	syear=datestr.getFullYear();
	smonth=datestr.getMonth()+1;
  
	sfulldate = new String(datestr);
	sdate=sfulldate.substring(8,10);
		
	switch (formatstr)
	{
		case 'DD/MM/YYYY':
			finaldt = sdate + '/' + smonth  + '/' + syear;
			break;

		case 'MM/DD/YYYY':
			finaldt = smonth + '/' + sdate  + '/' + syear;
			break;

		case 'DD-MON-YYYY':
			finaldt = sdate + '-' + sfulldate.substring(4,7)  + '-' + syear;
			break;

	}
	return(finaldt);
}

 function JIsZero(AStr) {
    if (Number(AStr)==0) {
       return true  }
    else {
       return false }
  }    
