
/**************************************
'File Name		:	CommonJs.js
'Purpose		:	The Common JS File
'On Action		:	
'Called From	:
'Database		:	ICS Singapore(Ms-SQL Sever)
'Tables Used	:	
'Last Modified	:	24 Nov 2002
'Issues			:
'Version		:	1.0.0
'Author			:	BIZSOFTSVCS
'*************************************/
/*  Function to set title of each page*/
function getTitle()
   { 
	 	
     return ("ICS Singapore.net") ; 
   }


/*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 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);

}

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 of birth  
  function ValidateDOB(dd,mm,yyyy,msg,compulsory) {
  var datevalid = ValidateDate(dd,mm,yyyy,msg,compulsory);
  var today = new Date();
  var thisyear = today.getFullYear();
  if (thisyear - yyyy.value < 21) {
	  alert("You must be older than 21 years of age.");
      yyyy.focus();
      validated = false;
      return false;
  	}
	else
	{
	return true;
	}	
}

//Open Help Window
function openHelpWindow(url, name)
{  
  window.open(url,name,'toolbar=no,directories=no,resizable=no,menubar=no,location=no,scrollbars=yes,width=400,height=300,maximize=no,top=5,left=30'); 
}

//************** Changing Dates on Month Select **************/
  function changeDays(yearInput,monthInput,dayInput)   
  {		  
	var myday;
	var val ; 
	var i; 

	val =  monthInput.options[monthInput.selectedIndex].value  ;  

	myday= new Array
	myday[0]= new Option("Day","0");
	myday[1]= new Option("1","1");
	myday[2]= new Option("2","2");
	myday[3]= new Option("3","3");
	myday[4]= new Option("4","4");
	myday[5]= new Option("5","5");
	myday[6]= new Option("6","6");
	myday[7]= new Option("7","7");
	myday[8]= new Option("8","8");
	myday[9]= new Option("9","9");
	myday[10]= new Option("10","10");
	myday[11]= new Option("11","11");
	myday[12]= new Option("12","12");
	myday[13]= new Option("13","13");
	myday[14]= new Option("14","14");
	myday[15]= new Option("15","15");
	myday[16]= new Option("16","16");
	myday[17]= new Option("17","17");
	myday[18]= new Option("18","18");
	myday[19]= new Option("19","19");
	myday[20]= new Option("20","20");
	myday[21]= new Option("21","21");
	myday[22]= new Option("22","22");
	myday[23]= new Option("23","23");
	myday[24]= new Option("24","24");
	myday[25]= new Option("25","25");
	myday[26]= new Option("26","26");
	myday[27]= new Option("27","27");
	myday[28]= new Option("28","28");	



	if ((val == 1 ) || (val == 3) || (val == 5) || (val == 7) || (val == 8 ) || (val == 10) || (val == 12))
	{  
		myday[29]= new Option("29","29")
		myday[30]= new Option("30","30")
		myday[31]= new Option("31","31")
	}
	else
	{
		if ((val == 4 ) || (val == 6) || (val == 9) || (val == 11))
		{
			myday[29]= new Option("29","29")
			myday[30]= new Option("30","30")
		}
		else
		{
			if(val==2)
			{	
				if (yearInput.options[yearInput.selectedIndex].value%100 == 0)
				{
					
					if (yearInput.options[yearInput.selectedIndex].value%400 == 0)
					{
						myday[29]= new Option("29","29")
					}
				}				
				else 
				{
					if (yearInput.options[yearInput.selectedIndex].value%4 == 0)
					{			
				
						myday[29]= new Option("29","29")
					}
				}
			}
		}
	}	


	for(i=dayInput.length; i>=0; i--)
	{
		dayInput.options[i]=null;
	}

	for(i=0; i< myday.length; i++)
	{
		dayInput.options[i]=myday[i];
	}		
}

//Function for the Photo File Selection
function LimitAttach(form, file, foc) 
{		
	extArray = new Array(".gif",".jpg", ".png",".jpeg",".pdf");
	allowSubmit = false;
	if (!file) return;
	while (file.indexOf("\\") != -1)
		file = file.slice(file.indexOf("\\") + 1);
		ext = file.slice(file.indexOf(".")).toLowerCase();
		for (var i = 0; i < extArray.length; i++) 
			{
				if (extArray[i] == ext) { allowSubmit = true; break; }
			}
			//if (allowSubmit) form.submit();
		if (allowSubmit)
			return true;
		else
			alert("Please only upload files that end in types:  " 
			+ (extArray.join("  ")) + "\nPlease select a new "
			+ "file to upload and submit again.");

			foc.select();
			foc.focus();
return false;
}
//Function for validating whether the file is a pdf file or not
function LimitAttachPdf(form, file, foc) 
{		
	extArray = new Array(".pdf");
	allowSubmit = false;
	if (!file) return;
	while (file.indexOf("\\") != -1)
		file = file.slice(file.indexOf("\\") + 1);
		ext = file.slice(file.indexOf(".")).toLowerCase();
		for (var i = 0; i < extArray.length; i++) 
			{
				if (extArray[i] == ext) { allowSubmit = true; break; }
			}
			//if (allowSubmit) form.submit();
		if (allowSubmit)
			return true;
		else
			alert("Please only upload files that end in type:  " 
			+ (extArray.join("  ")) + "\nPlease select a new "
			+ "file to upload and submit again.");

			foc.select();
			foc.focus();
return false;
}

//Function for Grade Window
function openGradeWindow(url, name)
{  
  window.open(url,name,'toolbar=no,directories=no,resizable=no,menubar=no,location=no,scrollbars=yes,width=600,height=450,maximize=no,top=5,left=30'); 
}
/********  Checking whether a form element is Alpha Numeric ***********/

function Is_Number_Present(str)
	{
		str = trim(str)
		
		for(var i=4;i<str.length;i++)
		{

			if(!((str.substring(i,i+1)>="0")&&(str.substring(i,i+1)<="9"))) 
			{
				return(0)
			}			
		}		
		return(1)
	}


	
/********  Checking whether a form element is Alpha Numeric ***********/

function Is_Alpha_Present(str)
	{
		var j
		j=0
		
		str = trim(str)
		
		for(var i=0;i<str.length;i++)
		{

			if(((str.substring(i,i+1)>="a") &&(str.substring(i,i+1)<="z"))||((str.substring(i,i+1)>="A") && (str.substring(i,i+1)<="Z")))		
			{
				j++
				break
			}
		}	
		
		if(j > 0 )
		{
			return(1)
		}
		else
		{
			return(0)
		}			
	}
	
/********  Checking whether a form element is an integer***********/

	function Is_Integer(a_value)
	{

		a_value = trim(a_value)
		
		var strValidChars = "0123456789";
		var strChar;
		var blnResult = 1;
		var z;	

		for (z = 0; z < a_value.length && blnResult == true; z++)
		{
			strChar = a_value.charAt(z);
			if (strValidChars.indexOf(strChar) == -1)
			{
				blnResult = 0;
			}
		}
		return blnResult;
	}
	
	
/************** 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:- compareDate(Date1,Date2)
  Input	  :- a) Date1 : First date(dd/mm/yyyy) to be compared
			 b) Date2 : Second date(dd/mm/yyyy) to be compared 
  Output  :- -1 If Date1 < Date2			  
              0 If Date1 = Date2			  
              1 If Date1 > Date2
 ************************************************************************/
 function compareDate(Date1,Date2)
 {
//	alert(Date1)
//	alert(Date2)
	ar_Date1 = Date1.split("/");
	ar_Date2 = Date2.split("/");
	
	if (parseInt(ar_Date1[2]) < parseInt(ar_Date2[2]))
	{
		return -1;
	}
	else if (parseInt(ar_Date1[2]) > parseInt(ar_Date2[2]))
	{
		return 1;
	}
	else if ((ar_Date1[2]*1) == (ar_Date2[2]*1))
	{
		if ((ar_Date1[1]*1) < (ar_Date2[1]*1))
		{
			return -1;
		}
		else if ((ar_Date1[1]*1) > (ar_Date2[1]*1))
		{
			return 1;
		}
		else if ((ar_Date1[1]*1) == (ar_Date2[1]*1))
		{
			if ((ar_Date1[0]*1) < (ar_Date2[0]*1))
			{
				return -1;
			}
			else if ((ar_Date1[0]*1) > (ar_Date2[0]*1))
			{
				return 1;
			}
			else if ((ar_Date1[0]*1) == (ar_Date2[0]*1))
			{
				return 0;
			}		
		
		}		
	}
	
}
	
/*************** End of function compareDate(Date1,Date2) ******/		
	
		

