
/**************************************
'File Name		:	CommonJs.js
'Purpose		:	The Common JS File
'Date Created	:	4 Dec 2006
'Last Modified	:	4 Dec 2006
'Issues			:
'Version		:	1.0.0
'Author			:	AceInfoBahn Pvt. ltd
'*************************************/

/*Function to return string by removing initial and trailing spaces*/

function trim(pstrString)
{	var intLoop = 0;
	
	for(intLoop = 0; intLoop < pstrString.length;intLoop = intLoop + 1 )
	{	
		if(pstrString.charAt(intLoop) == " ")
			pstrString = pstrString.substring(intLoop + 1, pstrString.length);
		else
			break;
	}
	
	for(intLoop = pstrString.length - 1; intLoop >= 0; intLoop = pstrString.length - 1)
	{	
		if(pstrString.charAt(intLoop) == " ")
			pstrString = pstrString.substring(0,intLoop);
		else
			break;
	}
	
	return pstrString;
}

// Function to display error message and set focus to supplied object
 function AbortEntry(sMsg, Obj)
 {
	alert(sMsg);
	Obj.focus();
	return false;
 }
 
 //Function to Validate Email address entered by user in Obj
 function validate_email(Obj) 
  {
    if(Obj.value.length == 0) { 
      return AbortEntry("Please enter Email address",Obj); 
      }
    if(-1 == Obj.value.indexOf("@")) { 
       return AbortEntry("Your email must have a '@'",Obj); 
       }
    if(-1 != Obj.value.indexOf(",")) { 
       return AbortEntry("Your email must not have a ',' in it",Obj);
       }
    if(-1 != Obj.value.indexOf("#")) { 
       return AbortEntry("Your email must not have an '#' in it.",Obj); 
       }
    if(-1 != Obj.value.indexOf("!")) { 
       return AbortEntry("Your email must not have a '!' in it.",Obj); 
       }
    if(-1 != Obj.value.indexOf(" ")) { 
       return AbortEntry("Your email must not have a space in it.",Obj); 
       }
    if(Obj.value.length == (Obj.value.indexOf("@")+1) ) {
       return AbortEntry("Your email must have a domain name after the '@'.",Obj); 
       }
    if(-1 == Obj.value.indexOf(".")) { 
       return AbortEntry("Your email must have a '.'.",Obj); 
       }
    if(Obj.value.length == 0) { 
      return AbortEntry("Please enter your email.",Obj); 
      }
    return true;
  }

/*Function to return Today's date in dd/mm/yyyy format*/
function today()
{
	var dt = new Date();
	currmt = dt.getMonth();
	corrmt = parseInt(currmt) + 1;
	newdate =dt.getDate()+'/'+corrmt+'/'+dt.getYear();
	return today.value= newdate;
}

/*Function to return Today's date SQlFormat i.e. in mm/dd/yyyy format*/
function todaySQL()
{
	var mydt = new Date();
	currmt	 = mydt.getMonth();
	corrmt	 = parseInt(currmt) + 1;
	newmydate =corrmt+'/'+mydt.getDate()+'/'+mydt.getYear();
	return todaySQL.value= newmydate;
}

function NewDate()
{
	var dt ;
	dt= new Date();
	dt=DateAdd1(dt, 30,0,0);
	
	currmt = dt.getMonth();
	corrmt = parseInt(currmt) + 1;
	newdate =dt.getDate()+'/'+corrmt+'/'+dt.getYear();

	return NewDate.value= newdate;
}

/*Function to Add Date */
function DateAdd1(startDate, numDays, numMonths, numYears)
{
	var returnDate = new Date(startDate.getTime());
	var yearsToAdd = numYears;
	
	var 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 to Add Year to current date */
function YearAdd(startDate, numYears)
{
		return DateAdd1(startDate,0,0,numYears);
}

/*Function to Add Month to current date */
function MonthAdd(startDate, numMonths)
{
		return DateAdd1(startDate,0,numMonths,0);
}

/*Function to Add Day to current date */
function DayAdd(startDate, numDays)
{
		return DateAdd1(startDate,numDays,0,0);
}

/************** Checking whether a form element is a valid Date **************/
/*************** This function validates the date for dd/mm/yy format ******/
function Is_Date(field1,display)
{
  if(Validate_Date(field1,display))
	{
      if(Past_Date(field1,display))
	   {
		return(true);
	   }
	  else
	   {
		return(false);
	   }
	}
	else
	{
     return(false);
    }
}
function Past_Date(field1,display)
{
	var tdate;
	var imonth,tmonth;
	var iday,tday;
	var iyear,tyear;
	
	imonth = parseInt(field1.value.substring(3,5),10);
	iday = parseInt(field1.value.substring(0,2),10);	
	iyear = parseInt(field1.value.substring(6,10),10);	
	
	var tdate=new Date()
	var tyear=tdate.getYear()
	if (tyear < 1000)
		tyear+=1900

	var tday=tdate.getDate()
	var tmonth=tdate.getMonth()+1
/*
	if(iyear>tyear)
	{
		alert('Future Dates not allowed')
		return(false);
	}
	
	if( (iyear==tyear) && (imonth>tmonth) )
	{
		alert('Future Dates not allowed')
		return(false);
	}
		
	if( (iyear==tyear) && (imonth==tmonth) && (iday>tday) )
	{
		alert('Future Dates not allowed')
		return(false);
	}		
*/		
	return(true);	
}

function Validate_Date(field1,display)
{
 var fLength = field1.value.length;								// Length of supplied field in characters.
 var divider_values = new Array ('-','.','/',' ',':','_',',');	// Array to hold permitted date seperators.  Add in '\' value
 var array_elements = 7; 										// Number of elements in the array - divider_values.
 var day1 = new String(null); 									// day value holder
 var month1 = new String(null); 								// month value holder
 var year1 = new String(null); 									// year value holder
 var divider1 = null; 											// divider holder
 var outdate1 = null; 											// formatted date to send back to calling field holder
 var counter1 = 0; 												// counter for divider looping 
 var divider_holder = new Array ('0','0','0'); 					// array to hold positions of dividers in dates
 var s = String(field1.value); 									// supplied date value variable

 //If field is empty do nothing
 if ( fLength == 0 ) {
    return true;
}
 // Deal with today or now
 if ( field1.value.toUpperCase() == 'NOW' || field1.value.toUpperCase() == 'TODAY' ) {   
		var newDate1 = new Date();
	if (navigator.appName == "Netscape") {
   		var myYear1 = newDate1.getYear() + 1900;
  		}
  	else {
  			var myYear1 =newDate1.getYear();
  		}
  
	var myMonth1 = newDate1.getMonth()+1;  
	var myDay1 = newDate1.getDate();
		field1.value = myDay1 + "/" + myMonth1 + "/" + myYear1;
		fLength = field1.value.length;							//re-evaluate string length.
		s = String(field1.value)								//re-evaluate the string value.
}

//Check the date is the required length
if ( fLength != 0 && (fLength < 6 || fLength > 11) ) {
	invalid_date(field1,display);
	return false;   
}

// Find position and type of divider in the date
for ( var i=0; i<3; i++ ) {
	for ( var x=0; x<array_elements; x++ ) {
		if ( s.indexOf(divider_values[x], counter1) != -1 ) {
			divider1 = divider_values[x];
			divider_holder[i] = s.indexOf(divider_values[x], counter1);
			counter1 = divider_holder[i] + 1;
			break;
		}
 	}
 }
	// if element 2 is not 0 then more than 2 dividers have been found so date is invalid.
	if ( divider_holder[2] != 0 ) {
	   invalid_date(field1,display);
	return false;   
}
// See if no dividers are present in the date string.
if ( divider_holder[0] == 0 && divider_holder[1] == 0 ) { 
	if ( fLength == 6 ) {							//ddmmyy
		//change for mm-dd-yy
   		month1 = field1.value.substring(2,4);
   		day1 = field1.value.substring(0,2);
		year1 = field1.value.substring(4,6);
	if ( (year1 = validate_year(year1)) == false ) {
			invalid_date(field1,display);
			return false; 
		}
	}
else if ( fLength == 7 ) {						//ddmmmy
	// change for mm-dd-yy		
	month1 = field1.value.substring(2,5);
	day1 = field1.value.substring(0,2);
	year1 = field1.value.substring(5,7);
	if ( (month1 = convert_month(month1)) == false ) {
		invalid_date(field1,display);
		return false; 
		}
  	if ( (year1 = validate_year(year1)) == false ) {
   		invalid_date(field1,display);
		return false; 
	}
	}
else if ( fLength == 8 ) {						//ddmmyyyy
	// change for mm-dd-yy				
	month1 = field1.value.substring(2,4);
	day1 = field1.value.substring(0,2);
	year1 = field1.value.substring(4,8);
	}
else if ( fLength == 9 ) {						//ddmmmyyyy
	// change for mm-dd-yy				
	month1 = field1.value.substring(2,5);
	day1 = field1.value.substring(0,2);
	year1 = field1.value.substring(5,9);
	if ( (month1 = convert_month(month1)) == false ) {
		invalid_date(field1,display);
		return false; 
		}
	}
	if ( (outdate1 = validate_date(day1,month1,year1)) == false ) {
		alert(display + " is not a vaild date.\n\r" +  
		"Please enter a valid date in the format dd/mm/yy");
		field1.focus();
		field1.select();
	return false;
	}
	field1.value = outdate1;
	return true;								// All OK
	}
		
// 2 dividers are present so continue to process	
if ( divider_holder[0] != 0 && divider_holder[1] != 0 ) { 	
	//change for mm-dd-yy
  	month1 = field1.value.substring(0, divider_holder[0]);
  	day1 = field1.value.substring(divider_holder[0] + 1, divider_holder[1]);
  	year1 = field1.value.substring(divider_holder[1] + 1, field1.value.length);
	}

if ( isNaN(day1) && isNaN(year1) ) { 							// Check day and year are numeric
	invalid_date(field1,display);
	return false;  
   }

if ( day1.length == 1 ) { 								//Make d day dd
   day1 = '0' + day1;  
	}

if ( month1.length == 1 ) {								//Make m month mm
	month1 = '0' + month1;   
	}

if ( year1.length == 2 ) {								//Make yy year yyyy
   if ( (year1 = validate_year(year1)) == false ) {
   		invalid_date(field1,display);
		return false;  
	}
}

if ( month1.length == 3 || month1.length == 4 ) {		//Make mmm month mm
   if ( (month1 = convert_month(month1)) == false) {
   	alert("month1" + month1);
   	invalid_date(field1,display);
   	return false;  
   }
}

// Date components are OK
if ( (day1.length == 2 || month1.length == 2 || year1.length == 4) == false) {
   invalid_date(field1,display);
   return false;
}

//Validate the date
if ( (outdate1 = validate_date( month1,day1, year1)) == false ) {
   
   alert(display + " is not a vaild date.\n\r" +  
	"Please enter a valid date in the format dd/mm/yy");
	
	field1.focus();
	field1.select();
	return false;
}

// Redisplay the date in dd/mm/yyyy format
	field1.value = outdate1;
return true;//All is well
}
function convert_month(monthIn) {
	var month_values = new Array ("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
		monthIn = monthIn.toUpperCase(); 
	if ( monthIn.length == 3 ) {
		for ( var i=0; i<12; i++ ) 
			{
   				if ( monthIn == month_values[i] ) 
   				{
					monthIn = i + 1;
					if ( i != 10 && i != 11 && i != 12 ) 
					{
   					monthIn = '0' + monthIn;
					}
					return monthIn;
				}	
			}
	}
	else if ( monthIn.length == 4 && monthIn == 'SEPT') {
		monthIn = '09';
		return monthIn;
	}
	
	else {
		return false;
	} 
}
function invalid_date(inField,display) 
{
	alert(display + " is not in a vaild date format.\n\r" + "Please enter date in the format dd/mm/yy");
	inField.focus();
	inField.select();
	return true;
}

function validate_date(day2, month2, year2)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
{                               
	var DayArray = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var MonthArray = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
	var inpDate = day2 + month2 + year2;
	var filter=/^[0-9]{2}[0-9]{2}[0-9]{4}$/;
	//Check ddmmyyyy date supplied
	if (! filter.test(inpDate))   
  	{
  		return false;
  	}
	/* Check Valid Month */ 
	filter=/01|02|03|04|05|06|07|08|09|10|11|12/ ;
	if (! filter.test(month2))
	  {
		  return false;
	  }
	/* Check For Leap Year */
	var N = Number(year2);
	if ( ( N%4==0 && N%100 !=0 ) || ( N%400==0 ) )
  	{
	   DayArray[1]=29;
  	}
	/* Check for valid days for month */
	for(var ctr=0; ctr<=11; ctr++)
  	{
	   if (MonthArray[ctr]==month2)
		{
		  if (day2<= DayArray[ctr] && day2 >0 )
		    {
		      inpDate = day2 + '/' + month2 + '/' + year2;
		      return inpDate;
		    }
		  else
		    {
		      return false;
		    } 
	   	}
	}
}

function validate_year(inYear) 
{
if ( inYear < 10 ) 
	{
   inYear = "20" + inYear;
   return inYear;
	}
else if ( inYear >= 10 )
	{
   inYear = "19" + inYear;
   return inYear;
	}
else 
	{
	return false;
	}   
}

/*************** End of function that validates the date for dd/mm/yy format ******/	


function ValidateDate(dd,mm,yyyy,msg,compulsory) {
	var res = /^\s+/ig;
	var ree = /\s+$/ig;
	day = dd.value.replace(res,"").replace(ree,"");
	month = mm.value.replace(res,"").replace(ree,"");
	year = yyyy.value.replace(res,"").replace(ree,"");
    if (year != "" && year < 1900) {
	    alert(msg);
	    yyyy.focus();
        validated = false;
        return false;
    }
	
	var test = new Date(year,month-1,day);
    if ((test.getFullYear() == year) && (month - 1 == test.getMonth()) && (day == test.getDate())) {
         validated = true;
         return true; 
    }
    else {
		 if (compulsory == "0" && day.length == 0 && month.length == 0 && year.length == 0) {
           validated = true;
           return true;
         }
         else {
           alert(msg);
		   dd.focus();
		   validated = false;
           return false;
         }
    }    
}         


//Function for valid date


function IsDate(dt,msg,compulsory)
{
var d;
	//alert(d);
	
	d=(dt.split('/'));
	alert(d[0])
	ValidateDate(d[0],d[1],d[2],msg,compulsory);

}




