//this section contains declaration for the calender
var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// *********end section****************///////////////////////////////////////////////////////////////

function validate()// function for validating chnage password functionality
{ 

    var theMessage = "Please complete the following: \n-----------------------------------\n";
	var noErrors = theMessage

	// make sure Login is not blank
	if (document.catfrm.oldpass.value=="") {
	theMessage = theMessage + "\n --> Empty Old Password";
	}
	// make sure Password is not blank
	if (document.catfrm.newpass.value=="") {
	theMessage = theMessage + "\n --> Empty New Password";
	}
	// make sure Ship Last Name is not blank
	if (document.catfrm.confirmpass.value=="") {
	theMessage = theMessage + "\n --> Empty Confirmation Password";
	}
	if(document.catfrm.newpass.value!=document.catfrm.confirmpass.value)
	{ theMessage=theMessage + "\n --> New password and  Confirmation Password does not match";
	}
	// If no errors, submit the form
	if (theMessage == noErrors) {
	return true;
	} else {
	// If errors were found, show alert message
	alert(theMessage);
	return false;
	}
	
}
function delete_confirm()
{
	window.confirm("Are you sure you want to delete?");
	return false;
}
function datevalidation()//function to validate working hours functionality//////////////
{	
var user=document.seluserfrm.usercode.value;
var yearf=document.seluserfrm.foy.value;
var yearl=document.seluserfrm.toy.value;
var monthf=document.seluserfrm.fom.value;
var monthl=document.seluserfrm.tom.value;
var dayf=document.seluserfrm.fod.value;
var dayl=document.seluserfrm.tod.value;

if(user=="0")
{
alert("Please Select User");
document.seluserfrm.usercode.focus();
return false;
}

if(dayf=="")
{
alert("Please choose day from which you have to search.")
document.seluserfrm.dd1.focus();
return false;
}
if(dayf!="Day")
{
if(monthf=="")
{
alert("Please choose a month from which you have to search.");
document.seluserfrm.mm2.focus();
return false;
}
if(yearf=="")
{
alert("Please choose a Year from which you have to search.");
document.seluserfrm.yy2.focus();
return false;
}
if(dayl=="")
{
alert("Please choose a day to which you have to search.");
document.seluserfrm.dd2.focus();
return false;
}
if(monthl=="")
{
alert("Please choose a month to which you have to search.");
document.seluserfrm.mm2.focus();
return false;
}
if(yearl=="Year")
{
alert("Please choose a year to which you have to search.");
document.seluserfrm.yy2.focus();
return false;
}
if(yearf>yearl)
{
alert("The last year cannot be smaller than the first year.");
document.seluserfrm.yy2.focus();
return false;
}

if(yearf==yearl && monthf>monthl)
{
alert("The last month cannot be smaller than the first month.");
document.seluserfrm.mm2.focus();
return false;
}

if(yearf==yearl && monthf==monthl)
{
if(parseInt(dayf)>parseInt(dayl))
{
alert("The last day cannot be smaller than the first day.");
document.seluserfrm.dd2.focus();
return false;
}
}
return true;
}
}
function visit_start_validate() // validate visit end functionality
{   
	var remarks=document.visit.remarks.value;
	if(remarks=="")
	{ window.alert("Please enter remarks");
	return false;
	} 
	
}
function visit_end_validate()// validate visit end functionality
{   
	var date=document.visit.date.value;
	var time=document.visit.time.value;
	var matchtime=/\d{2}[:]\d{2}[:]\d{2}$/;//making pattern for time
	if(date=="")
	{    window.alert("Please enter date");
	     return false;
	} 
	if(!matchtime.test(time))
	{ 
		 alert("Please enter time in right format of 'hh-mm-ss'");
		 return false;
	}
}
	
	

function workmultiple_validation()// function to validate work multiple entries/////////////////////
{	
	var user=document.seluserfrm.usercode.value;
	var from=document.seluserfrm.calender.value;
	var to=document.seluserfrm.calender1.value;
	var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	var from_date=from; 
	var to_date=to;
	    	
	    var date_from=from.split("-",3);
	    var year_from=date_from[0];
	    var month_from=date_from[1];
		month_from=(month_from-1);
	    var day_from=date_from[2];
		
		var from_time=new Date();
    	from_time.setFullYear(year_from,month_from,day_from);
		var from_timestamp=from_time.getTime();
		
		
		
		var date_to=to.split("-",3);
	    var year_to=date_to[0];
	    var month_to=date_to[1];
		month_to=(month_to-1);
	    var day_to=date_to[2];	
		
		var to_time=new Date();
		to_time.setFullYear(year_to,month_to,day_to);
		var to_timestamp=to_time.getTime();
	
	if(user=="0")
	{
	alert("Please Select User");
	document.seluserfrm.usercode.focus();
	return false;
	}
	if(from_timestamp>to_timestamp)
	{
	alert("Can not show report from higher date to lower");
	document.seluserfrm.calender.focus();
	return false;
	}
	if(!(matchdate.test(from_date)))
		{   
			alert("Please enter From date in right format of 'yyyy-mm-dd'");
			document.seluserfrm.calender.focus();
			return false;
		}
	if(!(matchdate.test(to_date)))
		{   
			alert("Please enter  TO date in right format of 'yyyy-mm-dd'");
			document.seluserfrm.calender1.focus();
			return false;
		}
	
return true;
}
function worksingle_validation()// function to validate work single day report/////////////////////
{	
	var user=document.seluserfrm.usercode.value;
	
	if(user=="0")
	{
	alert("Please Select User");
	document.seluserfrm.usercode.focus();
	return false;
	}
	
return true;
}

function self_task_report_validation()// function to validate self task report entries////////////////////
{	
	
	var from=document.seluserfrm.calender.value;
	var to=document.seluserfrm.calender1.value;
	var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	var from_date=from; 
	var to_date=to;
	    	
	    var date_from=from.split("-",3);
	    var year_from=date_from[0];
	    var month_from=date_from[1];
		month_from=(month_from-1);
	    var day_from=date_from[2];
		
		var from_time=new Date();
    	from_time.setFullYear(year_from,month_from,day_from);
		var from_timestamp=from_time.getTime();
		
		
		
		var date_to=to.split("-",3);
	    var year_to=date_to[0];
	    var month_to=date_to[1];
		month_to=(month_to-1);
	    var day_to=date_to[2];	
		
		var to_time=new Date();
		to_time.setFullYear(year_to,month_to,day_to);
		var to_timestamp=to_time.getTime();
	
	if(from=="")
	{
	alert("Please Enter From date");
	document.seluserfrm.calender.focus();
	return false;
	}
	if(to=="")
	{
	alert("Please Enter TO date");
	document.seluserfrm.calender1.focus();
	return false;
	}
	if(from_timestamp>to_timestamp)
	{
	alert("Can not show report from higher date to lower");
	document.seluserfrm.calender.focus();
	return false;
	}
	if(!(matchdate.test(from_date))  )
		{   
			alert("Please enter From date in right format of 'yyyy-mm-dd'");
			document.seluserfrm.calender.focus();
			return false;
		}
	if(!(matchdate.test(to_date)))
		{   
			alert("Please enter  TO date in right format of 'yyyy-mm-dd'");
			document.seluserfrm.calender1.focus();
			return false;
		}
	
return true;
}

function overridevalidate()// function to validate overiride functionality/////////////////////////////
	{  
	
	  var lasttime;
      var newtime;
	  var futuretime;
	  
      var last = new Date();
	  var now  = new Date();
	  var future =new Date();
	  
	   futuretime=future.getTime();
		//futuretime=futuretime;
	  var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	  var matchtime=/\d{2}[:]\d{2}[:]\d{2}$/;
	  
	  var valuedate=document.overridefrm.date.value;
	  var valuetime=document.overridefrm.time.value;
	   
	  var date=valuedate.split("-",3);
	  var year=date[0];
	  var month=date[1];
	  var day=date[2];
	  
	  var time=valuetime.split(":",3);	
	  var hour=time[0];
	  var minute=time[1];
	  var second=time[2];
	    
	  var  yr=document.overridefrm.yr.value;
	  var  mn=document.overridefrm.mn.value; 
	  var  dy=document.overridefrm.dy.value; 
	  var  hr=document.overridefrm.hr.value; 
      var  mi=document.overridefrm.mi.value; 
      var  sc=document.overridefrm.sc.value; 
	  ///// setting  and getting timestamps for user////
	    last.setFullYear(yr,mn-1,dy);
		last.setHours(hr);
		last.setMinutes(mi);
		last.setSeconds(sc);
		lasttime=last.getTime();
  //// setting and geting timestamp enterd///////		
		now.setFullYear(year,month-1,day);
		now.setHours(hour);
		now.setMinutes(minute);
		now.setSeconds(second);
		newtime=now.getTime();
		
		
		if(document.overridefrm.usercode.value=="0")
	     {
	       window.alert("Please Select User");
	       document.overridefrm.usercode.focus();
	       return false;
	     }
		
		if(document.overridefrm.overridetype.value=="")
		{ 
			window.alert("Please Select the Override type");
			document.overridefrm.overridetype.focus();
			return false;
		}
		if(!matchdate.test(valuedate))
		{   
			alert("Please enter date in right format of 'yyyy-mm-dd'");
			return false;
		}
		if(!matchtime.test(valuetime))
		{ 
			alert("Please enter time in right format of 'hh-mm-ss'");
			return false;
		}
		
		 
	return true;		
		
	}

function leavevalidate()///fuction to validate leave entry functionality/////////////////////////
	{    
	    var lasttime;
        var  newtime;
		var futuretime;
		
		var last = new Date();
		var now  = new Date();
		var future =new Date();
	  
	    futuretime=future.getTime();
		futuretime=futuretime+(9*60*60*1000);
	    var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	    var matchtime=/\d{2}[:]\d{2}[:]\d{2}$/;
	    var valuedate=document.leavefrm.date.value;
	    var valuetime=document.leavefrm.time.value;		
	    var date=valuedate.split("-",3);
	    var year=date[0];
	    var month=date[1];
		month=(month-1);
	    var day=date[2];	  
	    var time=valuetime.split(":",3);	
	    var hour=time[0];
	    var minute=time[1];
	    var second=time[2];	    
	    var  yr=document.leavefrm.yr.value;
	    var  mn=document.leavefrm.mn.value; 
		mn=(mn-1);
	    var  dy=document.leavefrm.dy.value; 
	    var  hr=document.leavefrm.hr.value; 
        var  mi=document.leavefrm.mi.value; 
        var  sc=document.leavefrm.sc.value; 
		
		//setting and getting timestamp for user//
		last.setFullYear(yr,mn,dy);
		last.setHours(hr);
		last.setMinutes(mi);
		last.setSeconds(sc);
		lasttime=last.getTime();
		
		///// setting and getting timestamp  of entered date time///////
		now.setFullYear(year,month,day);
		now.setHours(hour);
		now.setMinutes(minute);
		now.setSeconds(second);
		newtime=now.getTime();		
		
		if(document.leavefrm.usercode.value=='0')
	     {
	       alert("Please Select User");
	       document.leavefrm.usercode.focus();
	       return false;
	     }		
		if(document.leavefrm.leavetype.value=="")
		{ 
			window.alert("Please Select the Leave type");
			document.leavefrm.leavetype.focus();
			return false;
		}
		 if(!matchdate.test(valuedate))
		{ 
			alert("Please enter date in right format of 'yyyy-mm-dd'");
			document.leavefrm.date.focus();
			return false;
		}
		if(!matchtime.test(valuetime))
		{ 
			alert("Please enter time in right format of 'hh-mm-ss'");
			document.leavefrm.time.focus();
			return false;
		}
		
		 
	return true;				
		
	 }
	function validate_enter_task()// function to validate enter new task functionality/////////////////////////////
	{   
	
	var project         =  document.getElementById('project');
	var project_task    =  document.getElementById('project_task');
	var task_summary    =  document.getElementById('task_summary');
	var task_description=  document.getElementById('task_description');
	var user            =  document.getElementById('user');
	var task_date       =  document.getElementById('task_date');
	var status          =  document.getElementById('status');
	var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	if(project.value==0)
	{
	window.alert("Select atleast one project");
	project.focus();
	return false;
	}
	
	if(task_summary.value=="")
	{
	window.alert("Enter task summary"); 
	task_summary.focus();
	return false;
	}
	if(task_description.value=="")
	{
	window.alert("Enter task description"); 
	task_description.focus();
	return false;
	}
	if(user.value==0)
	{
	window.alert("Select user"); 
	user.focus();
	return false;
	}
	if(task_date.value=="")
	{
	window.alert("Enter date"); 
	task_date.focus();
	return false;
	}
	/*if(!matchdate.test(task_date))
		{ 
			alert("Please enter date in right format of 'yyyy-mm-dd'");
			task_date.focus();
			return false;
		}*/
	
	}// end fuction
	
	function validate_enter_assign_task()// function to validate enter new task functionality/////////////////////////////
	{   
	
	var project         =  document.getElementById('project');
	var project_task    =  document.getElementById('project_task');
	var task_summary    =  document.getElementById('task_summary');
	var task_description=  document.getElementById('task_description');
	var user            =  document.getElementById('user');
	var task_date       =  document.getElementById('task_date');
	var status          =  document.getElementById('status');
	var default_task    =  document.getElementById('default_status');
	var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	if(project.value==0)
	{
	window.alert("Select atleast one project");
	project.focus();
	return false;
	}
	
	if(task_summary.value=="")
	{
	window.alert("Enter task summary"); 
	task_summary.focus();
	return false;
	}
	if(task_description.value=="")
	{
	window.alert("Enter task description"); 
	task_description.focus();
	return false;
	}
	if(user.value==0)
	{
	window.alert("Select user"); 
	user.focus();
	return false;
	}
	if(!(default_task.checked))
	{
		if(task_date.value=="")
		{
		window.alert("Enter date"); 
		task_date.focus();
		return false;
		}
	}
	
	/*if(!matchdate.test(task_date))
		{ 
			alert("Please enter date in right format of 'yyyy-mm-dd'");
			task_date.focus();
			return false;
		}*/
	
	}// end fuction
	function validate_enter_project_task()// function to validate enter new project task functionality/////////////////////////////
	{   
	var user              =  document.getElementById('user');	
	var owner_type        =  document.getElementById('owner_type');
	var project           =  document.getElementById('project');	
	var task_description  =  document.getElementById('task_desc');
	//var remarks           =  document.getElementById('remarks');
	var est_date          =  document.getElementById('est_date');
	var task_summary      =  document.getElementById('task_summary');
	var cust_rec_date     =  document.getElementById('cust_rec_date');
	var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	if(project.value==0)
	{
	window.alert("Select atleast one project");
	project.focus();
	return false;
	}	
	if(task_summary.value==0)
	{
	window.alert("Enter Task Summary"); 
	task_summary.focus();
	return false;
	}
	if(task_description.value=="")
	{
	window.alert("Enter task descriptionj"); 
	task_description.focus();
	return false;
	}	
	if(est_date.value=="")
	{
	window.alert("Enter Estimated Completion date"); 
	est_date.focus();
	return false;
	}
	
	if(cust_rec_date.value==0)
	{
	window.alert("Enter Customer Required Completion Date"); 
	cust_rec_date.focus();
	return false;
	}
	if(!matchdate.test(est_date.value))
		{ 
			alert("Please enter date in right format of 'yyyy-mm-dd'");
			est_date.focus();
			return false;
		}
		if(!matchdate.test(cust_rec_date.value))
		{ 
			alert("Please enter date in right format of 'yyyy-mm-dd'");
			cust_rec_date.focus();
			return false;
		}
	
 }//end function
 
 function validate_project_ownership()// function to validate enter new project task functionality/////////////////////////////
	{   
	
	var project           =  document.getElementById('project');	
	var user              =  document.getElementById('user');	
	var owner_type        =  document.getElementById('owner_type');
	if(project.value==0)
	{
	window.alert("Select atleast one project");
	project.focus();
	return false;
	}	
	if(user.value==0)
	{
	window.alert("Select Atleast one User"); 
	user.focus();
	return false;
	}
	if(owner_type.value==0)
	{
	window.alert("Select ownership Type"); 
	owner_type.focus();
	return false;
	}	
	
 }//end function
/*function list_task_validation()// function for validating todays task entries
{ 
	
	var total_task=document.task_list.total.value;
	var i;
	var hours;
	var status; 
	status=document.task_list.status.value;
	if(status==0)
	{
		alert("please select status");
		document.task_list.status.focus();
		return false;
	}
	
	return true;
}// end fuction  
	*/ 
	
	
function validate_today_task()
 {
	var hours=document.getElementById('hours');
	if(!IsNumeric(hours.value))
	{
	window.alert("Please enter hours in numeric format");
	hours.focus();
	return false;
	}
	return true;
	
 }// end function

function IsNumeric(strString)

   //  check for valid numeric strings	

   {

   var strValidChars = "0123456789.-";

   var strChar;

   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above

   for (i = 0; i < strString.length && blnResult == true; i++)

      {

      strChar = strString.charAt(i);

      if (strValidChars.indexOf(strChar) == -1)

         {

         blnResult = false;

         }

      }

   return blnResult;

   }
	
	var toggle;
function workvalidation()/////function to validate working hours functionality///////////////////////
{	
	var user=document.seluserfrm.usercode.value;
	var yearf=document.seluserfrm.foy.value;
	var yearl=document.seluserfrm.toy.value;
	var monthf=document.seluserfrm.fom.value;
	var monthl=document.seluserfrm.tom.value;
	var dayf=document.seluserfrm.fod.value;
	var dayl=document.seluserfrm.tod.value;
	if(user=="0")
	{
	alert("Please Select User");
	document.seluserfrm.usercode.focus();
	return false;
	}
	if(document.seluserfrm.radiobutton.checked==false)		
	{		if(dayf=="")
			{
			alert("Please choose day from which you have to search.")
			document.seluserfrm.fod.focus();
			return false;
			}
		  if(monthf=="")
			{
			alert("Please choose a month from which you have to search.");
			document.seluserfrm.fom.focus();
			return false;
			}
			if(yearf=="")
			{
			alert("Please choose a Year from which you have to search.");
			document.seluserfrm.foy.focus();
			return false;
			}
			if(dayl=="")
			{
			alert("Please choose a day to which you have to search.");
			document.seluserfrm.tod.focus();
			return false;
			}
			if(monthl=="")
			{
			alert("Please choose a month to which you have to search.");
			document.seluserfrm.tom.focus();
			return false;
			}	
			if(yearl=="")
			{
			alert("Please choose a year to which you have to search.");
			document.seluserfrm.toy.focus();
			return false;
			}
			if(yearf>yearl)
			{
			alert("The last year cannot be smaller than the first year.");
			document.seluserfrm.foy.focus();
			return false;
			}
			if(yearf==yearl && monthf>monthl)
			{
			alert("The last month cannot be smaller than the first month.");
			document.seluserfrm.fom.focus();
			return false;
			}
			if(yearf==yearl && monthf==monthl)
			{
				if(parseInt(dayf)>parseInt(dayl))
				{
				alert("The last day cannot be smaller than the first day.");
				document.seluserfrm.fod.focus();
				return false;
				}
			}
	}		
return true;
}
function project_report_validation()// function to validate project report section/////////////////////
{	
		var project=document.getElementById('project');
		var user=document.getElementById('user');	
		var from=document.getElementById('calender');
	    var to=document.getElementById('calender1');
        var all_date=document.getElementById('all_date');
		var all_users=document.getElementById('all_users');	
		var matchdate=/\d{4}[-]\d{2}[-]\d{2}$/;
	    var from_date=from.value; 
		var to_date=to.value;
		if(project.value=="")
		{
		alert("Please Select Project");
		project.focus();
		return false;
		}
		if(!(all_users.checked))// if the cheeckbox is unchecked
	    {
			if(user.value=="")
			{
			alert("Please Select atleast one User");
			user.focus();
			return false;
		}
		}
		if(!(all_date.checked))// if the cheeckbox is unchecked
	    {
			if(from.value=="")
			{
				alert('please select the date you want to ger report from');
				from.focus();
				return false;
			}
			if(to.value=="")
			{
				alert('please select the date you want to ger report to');
				to.focus();
				return false;
			}
		}
	    var date_from=from.value.split("-",3);
	    var year_from=date_from[0];
	    var month_from=date_from[1];
		month_from=(month_from-1);
	    var day_from=date_from[2];
		
		var from_time=new Date();
    	from_time.setFullYear(year_from,month_from,day_from);
		var from_timestamp=from_time.getTime();
		
		
		
		var date_to=to.value.split("-",3);
	    var year_to=date_to[0];
	    var month_to=date_to[1];
		month_to=(month_to-1);
	    var day_to=date_to[2];	
		
		var to_time=new Date();
		to_time.setFullYear(year_to,month_to,day_to);
		var to_timestamp=to_time.getTime();
	
	if(project.value=="")
	{
	alert("Please Select Project");
	project.focus();
	return false;
	}
	if(from_timestamp>to_timestamp)
	{
	alert("Can not show report from higher date to lower");
	from.focus();
	return false;
	}	
	/*if(!(matchdate.test(from_date)) && from_date!="")
	{
	  alert("Please enter date in right format");
	  from.focus();
	  return false;
	}
	if(!(matchdate.test(to_date)) && to_date!="")
	{
	  alert("Please enter date in right format");
	  to.focus();
	  return false;
	}
	*/

}// end function
function all_date_check()// this function is called when user select checkbox present on project report section
{   
    var all_date=document.getElementById('all_date');
    var from=document.getElementById('calender');
	var to=document.getElementById('calender1');
	
	if(all_date.checked)
	{
		from.value="";
		to.value="";
		from.disabled=true;
		to.disabled=true;
		
	}
	if(!(all_date.checked))
	{
		
		from.disabled=false;
		to.disabled=false;
		
	}
}// end function
function check_date_checkbox()// this function is called user click date_picker in project report section
{
	var all_date=document.getElementById('all_date');
	if(all_date.checked)
	{
		alert('please deselect the above checkbox for date first');
		return false;
	}
	
}// end function

function check() // this fuction is for checking and unchecking the overallradio button after alternating clicking
{      // toggle is a global variable 
	if(toggle==0)
	  {   
	      document.seluserfrm.radiobutton.checked=false;
	      toggle=1;
	      return true;
	   }
	 
	if(document.seluserfrm.radiobutton.checked==true )
	 {   
	     toggle=0;		 
	     return true;
	 }
	
}
function resetpasswordvalidate()
 {	
	var user=document.seluserfrm.usercode.value;
	
	if(user=="0")
	{
	alert("Please Select User");
	document.seluserfrm.usercode.focus();
	return false;
	}
	
return true;
}




///////////following section makes calender/***************************************////////////////////////


function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
        if ((p_month == null) && (p_year == null))        return;

        if (p_WinCal == null)
                this.gWinCal = ggWinCal;
        else
                this.gWinCal = p_WinCal;
        
        if (p_month == null) {
                this.gMonthName = null;
                this.gMonth = null;
                this.gYearly = true;
        } else {
                this.gMonthName = Calendar.get_month(p_month);
                this.gMonth = new Number(p_month);
                this.gYearly = false;
        }

        this.gYear = p_year;
        this.gFormat = p_format;
        this.gBGColor = "white";
        this.gFGColor = "black";
        this.gTextColor = "black";
        this.gHeaderColor = "black";
        this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {
        return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
        /* 
        Check for leap year ..
        1.Years evenly divisible by four are normally leap years, except for... 
        2.Years also evenly divisible by 100 are not leap years, except for... 
        3.Years also evenly divisible by 400 are leap years. 
        */
        if ((p_year % 4) == 0) {
                if ((p_year % 100) == 0 && (p_year % 400) != 0)
                        return Calendar.DOMonth[monthNo];
        
                return Calendar.lDOMonth[monthNo];
        } else
                return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
        /* 
        Will return an 1-D array with 1st element being the calculated month 
        and second being the calculated year 
        after applying the month increment/decrement as specified by 'incr' parameter.
        'incr' will normally have 1/-1 to navigate thru the months.
        */
        var ret_arr = new Array();
        
        if (incr == -1) {
                // B A C K W A R D
                if (p_Month == 0) {
                        ret_arr[0] = 11;
                        ret_arr[1] = parseInt(p_Year) - 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) - 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        } else if (incr == 1) {
                // F O R W A R D
                if (p_Month == 11) {
                        ret_arr[0] = 0;
                        ret_arr[1] = parseInt(p_Year) + 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) + 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        }
        
        return ret_arr;
}

function Calendar_print() {
        ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
        /* 
        Will return an 1-D array with 1st element being the calculated month 
        and second being the calculated year 
        after applying the month increment/decrement as specified by 'incr' parameter.
        'incr' will normally have 1/-1 to navigate thru the months.
        */
        var ret_arr = new Array();
        
        if (incr == -1) {
                // B A C K W A R D
                if (p_Month == 0) {
                        ret_arr[0] = 11;
                        ret_arr[1] = parseInt(p_Year) - 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) - 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        } else if (incr == 1) {
                // F O R W A R D
                if (p_Month == 11) {
                        ret_arr[0] = 0;
                        ret_arr[1] = parseInt(p_Year) + 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) + 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        }
        
        return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
        var vCode = "";
        var vHeader_Code = "";
        var vData_Code = "";
        
        // Begin Table Drawing code here..
        vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
        
        vHeader_Code = this.cal_header();
        vData_Code = this.cal_data();
        vCode = vCode + vHeader_Code + vData_Code;
        
        vCode = vCode + "</TABLE>";
        
        return vCode;
}

Calendar.prototype.show = function() {
        var vCode = "";
        
        this.gWinCal.document.open();

        // Setup the page...
        this.wwrite("<html>");
        this.wwrite("<head><title>Calendar</title>");
        this.wwrite("</head>");

        this.wwrite("<body " + 
                "link=\"" + this.gLinkColor + "\" " + 
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
        this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
        this.wwriteA(this.gMonthName + " " + this.gYear);
        this.wwriteA("</B><BR>");

        // Show navigation buttons
        var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
        var prevMM = prevMMYYYY[0];
        var prevYYYY = prevMMYYYY[1];

        var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
        var nextMM = nextMMYYYY[0];
        var nextYYYY = nextMMYYYY[1];
        
        this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" + 
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
                ");" +
                "\"><<<\/A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" + 
                "'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\"><<\/A>]</TD><TD ALIGN=center>");
        //this.wwrite("[<A HREF=\"javascript:window.print();Print\"></A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" + 
                "'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">><\/A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" + 
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
                ");" +
                "\">>><\/A>]</TD></TR></TABLE><BR>");

        // Get the complete calendar code for the month..
        vCode = this.getMonthlyCalendarCode();
        this.wwrite(vCode);

        this.wwrite("</font></body></html>");
        this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
        var vCode = "";
        var i;
        var vr, vc, vx, vy;                // Row, Column, X-coord, Y-coord
        var vxf = 285;                        // X-Factor
        var vyf = 200;                        // Y-Factor
        var vxm = 10;                        // X-margin
        var vym;                                // Y-margin
        if (isIE)        vym = 75;
        else if (isNav)        vym = 25;
        
        this.gWinCal.document.open();

        this.wwrite("<html>");
        this.wwrite("<head><title>Calendar</title>");
        this.wwrite("<style type='text/css'>\n<!--");
        for (i=0; i<12; i++) {
                vc = i % 3;
                if (i>=0 && i<= 2)        vr = 0;
                if (i>=3 && i<= 5)        vr = 1;
                if (i>=6 && i<= 8)        vr = 2;
                if (i>=9 && i<= 11)        vr = 3;
                
                vx = parseInt(vxf * vc) + vxm;
                vy = parseInt(vyf * vr) + vym;

                this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
        }
        this.wwrite("-->\n</style>");
        this.wwrite("</head>");

        this.wwrite("<body " + 
                "link=\"" + this.gLinkColor + "\" " + 
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
        this.wwrite("Year : " + this.gYear);
        this.wwrite("</B><BR>");

        // Show navigation buttons
        var prevYYYY = parseInt(this.gYear) - 1;
        var nextYYYY = parseInt(this.gYear) + 1;
        
        this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" + 
                "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" + 
                "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">>><\/A>]</TD></TR></TABLE><BR>");

        // Get the complete calendar code for each month..
        var j;
        for (i=11; i>=0; i--) {
                if (isIE)
                        this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
                else if (isNav)
                        this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

                this.gMonth = i;
                this.gMonthName = Calendar.get_month(this.gMonth);
                vCode = this.getMonthlyCalendarCode();
                this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
                this.wwrite(vCode);

                if (isIE)
                        this.wwrite("</DIV>");
                else if (isNav)
                        this.wwrite("</LAYER>");
        }

        this.wwrite("</font><BR></body></html>");
        this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
        this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
        this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
        var vCode = "";
        
        vCode = vCode + "<TR>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
        vCode = vCode + "</TR>";
        
        return vCode;
}

Calendar.prototype.cal_data = function() {
        var vDate = new Date();
        vDate.setDate(1);
        vDate.setMonth(this.gMonth);
        vDate.setFullYear(this.gYear);

        var vFirstDay=vDate.getDay();
        var vDay=1;
        var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
        var vOnLastDay=0;
        var vCode = "";

        /*
        Get day for the 1st of the requested month/year..
        Place as many blank cells before the 1st day of the month as necessary. 
        */

        vCode = vCode + "<TR>";
        for (i=0; i<vFirstDay; i++) {
                vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
        }

        // Write rest of the 1st week
        for (j=vFirstDay; j<7; j++) {
                vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
                        "<A HREF='#' " + 
                                "onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
                                this.format_data(vDay) + 
                                "';window.close();\">" + 
                                this.format_day(vDay) + 
                        "</A>" + 
                        "</FONT></TD>";
                vDay=vDay + 1;
        }
        vCode = vCode + "</TR>";

        // Write the rest of the weeks
        for (k=2; k<7; k++) {
                vCode = vCode + "<TR>";

                for (j=0; j<7; j++) {
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
                                "<A HREF='#' " + 
                                        "onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
                                        this.format_data(vDay) + 
                                        "';window.close();\">" + 
                                this.format_day(vDay) + 
                                "</A>" + 
                                "</FONT></TD>";
                        vDay=vDay + 1;

                        if (vDay > vLastDay) {
                                vOnLastDay = 1;
                                break;
                        }
                }

                if (j == 6)
                        vCode = vCode + "</TR>";
                if (vOnLastDay == 1)
                        break;
        }
        
        // Fill up the rest of last week with proper blanks, so that we get proper square blocks
        for (m=1; m<(7-j); m++) {
                if (this.gYearly)
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
                        "><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
                else
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
                        "><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
        }
		
        
        return vCode;
}

Calendar.prototype.format_day = function(vday) {
        var vNowDay = gNow.getDate();
        var vNowMonth = gNow.getMonth();
        var vNowYear = gNow.getFullYear();

        if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
                return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
        else
                return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
        var i;

        // Return special formatting for the weekend day.
        for (i=0; i<weekend.length; i++) {
                if (vday == weekend[i])
                        return (" BGCOLOR=\"" + weekendColor + "\"");
        }
        
        return "";
}

Calendar.prototype.format_data = function(p_day) {
        var vData;
        var vMonth = 1 + this.gMonth;
        vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
        var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
        var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
        var vY4 = new String(this.gYear);
        var vY2 = new String(this.gYear.substr(2,2));
        var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

        switch (this.gFormat) {
                case "MM\/DD\/YYYY" :
                        vData = vMonth + "\/" + vDD + "\/" + vY4;
                        break;
                case "MM\/DD\/YY" :
                        vData = vMonth + "\/" + vDD + "\/" + vY2;
                        break;
				case "YYYY-MM-DD" :
                        vData = vY4 + "-" + vMonth + "-" + vDD;
                        break;
                case "MM-DD-YYYY" :
                        vData = vMonth + "-" + vDD + "-" + vY4;
                        break;
                case "MM-DD-YY" :
                        vData = vMonth + "-" + vDD + "-" + vY2;
                        break;

                case "DD\/MON\/YYYY" :
                        vData = vDD + "\/" + vMon + "\/" + vY4;
                        break;
                case "DD\/MON\/YY" :
                        vData = vDD + "\/" + vMon + "\/" + vY2;
                        break;
                case "DD-MON-YYYY" :
                        vData = vDD + "-" + vMon + "-" + vY4;
                        break;
                case "DD-MON-YY" :
                        vData = vDD + "-" + vMon + "-" + vY2;
                        break;

                case "DD\/MONTH\/YYYY" :
                        vData = vDD + "\/" + vFMon + "\/" + vY4;
                        break;
                case "DD\/MONTH\/YY" :
                        vData = vDD + "\/" + vFMon + "\/" + vY2;
                        break;
                case "DD-MONTH-YYYY" :
                        vData = vDD + "-" + vFMon + "-" + vY4;
                        break;
                case "DD-MONTH-YY" :
                        vData = vDD + "-" + vFMon + "-" + vY2;
                        break;

                case "DD\/MM\/YYYY" :
                        vData = vDD + "\/" + vMonth + "\/" + vY4;
                        break;
                case "DD\/MM\/YY" :
                        vData = vDD + "\/" + vMonth + "\/" + vY2;
                        break;
                case "DD-MM-YYYY" :
                        vData = vDD + "-" + vMonth + "-" + vY4;
                        break;
                case "DD-MM-YY" :
                        vData = vDD + "-" + vMonth + "-" + vY2;
                        break;
				case "YYYY\/MM\/DD" :
                        vData = vY4 + "\/" + vMonth + "\/" + vDD;
                        break;
				

                default :
                        vData = vMonth + "\/" + vDD + "\/" + vY4;
        }

        return vData;
}

function Build(p_item, p_month, p_year, p_format) {
        var p_WinCal = ggWinCal;
        gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

        // Customize your Calendar here..
        gCal.gBGColor="white";
        gCal.gLinkColor="black";
        gCal.gTextColor="black";
        gCal.gHeaderColor="darkgreen";

        // Choose appropriate show function
        if (gCal.gYearly)        gCal.showY();
        else        gCal.show();
}

function show_calendar() {


		var s;
		s=screen.width;
	
        /* 
                p_month : 0-11 for Jan-Dec; 12 for All Months.
                p_year        : 4-digit year
                p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
                p_item        : Return Item.
        */

        p_item = arguments[0];
        if (arguments[1] == null)
                p_month = new String(gNow.getMonth());
        else
                p_month = arguments[1];
        if (arguments[2] == "" || arguments[2] == null)
                p_year = new String(gNow.getFullYear().toString());
        else
                p_year = arguments[2];
        if (arguments[3] == null)
                p_format = "YYYY-MM-DD";
        else
                p_format = arguments[3];

		if(s=="800")
		{
			vWinCal = window.open("", "Calendar", 
                "width=250,height=250,status=no,resizable=no,top=300,left=450");
		}

		else
		{
			if(s=="640")
				{
					vWinCal = window.open("", "Calendar", 
					"width=250,height=250,status=no,resizable=no,top=190,left=350");
				}
				else
				{
			
					vWinCal = window.open("", "Calendar", 
					"width=250,height=250,status=no,resizable=no,top=290,left=530");
				}
				
		}

		window.focus=true;

        vWinCal.opener = self;
        ggWinCal = vWinCal;

        Build(p_item, p_month, p_year, p_format);
	
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar(p_item, p_year, p_format) {
        // Load the defaults..
        if (p_year == null || p_year == "")
                p_year = new String(gNow.getFullYear().toString());
        if (p_format == null || p_format == "")
                p_format = "YYYY-MM-DD";

        var vWinCal = window.open("", "Calendar", "scrollbars=yes");
        vWinCal.opener = self;
        ggWinCal = vWinCal;

        Build(p_item, null, p_year, p_format);
}




function add(session,subject,datebox)
{
	if(subject.length && datebox.length)
	{
	loc="add_to_todolist.php?session="+session+"&subject="+subject+"&datebox="+datebox;
	window.location=loc;
	}
	
}



function checkAll(field1,field2)
{

if(field1)
	{
	
	
		if(field2.checked)
			{
			
			for (i = 0; i < field1.length; i++)
				field1[i].checked = true ;
			if(!field1.checked)
				{
					field1.checked=true;
				}
			}
			else
			{
			
			for (i = 0; i < field1.length; i++)
				field1[i].checked = false ;
			if(field1.checked)
				{
					field1.checked=false;
				}
			}
		
	}
}


function delete_button_click(field,session,from,to)
{
	if(field)
	{
		checked_file="";
		box=from;
		j=0;
		if(field.checked)
		{
			checked_file=checked_file+"&check_file"+j+"="+field.value;
				j=j+1;
		}
		for (i = 0; i < field.length; i++)
			if(field[i].checked)
			{
				checked_file=checked_file+"&check_file"+j+"="+field[i].value;
				j=j+1;
		
			}
			if(j!=0)
			{
				loc=from+"_to_"+to+".php?session="+session+"&box="+box+checked_file;
				window.location=loc;
			}
	}
	
		
}
//////////////////end calender******////////////////////////////////////////