var id='';
var curmonth=1;
var n_weekstart = 1;
var week_days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
var arr_months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
var cur_date=new Date();

var base_year=cur_date.getFullYear();
var base_month=cur_date.getMonth();
var base_day=cur_date.getDate();
var dt_base_date=new Date(base_year, base_month, base_day);
var dt_base_dateyear=new Date(base_year, base_month, base_day);


var dt_max_date=new Date(base_year+3, 11, 31);
var displayprev='';
function show_calendar(str1,str2,str3,dateMonth,dateDay,dateYear)
{	
	
	
	var dt_first_month = new Date(dateYear, dateMonth-1, 1);
	var selected_date = new Date(dateYear, dateMonth-1,dateDay);            
	var dt_second_month = new Date(dt_first_month);
	dt_second_month.setMonth(dt_first_month.getMonth()+1);
	var dt_prev_month = new Date(dt_first_month);
	dt_prev_month.setMonth(dt_first_month.getMonth()-2);
	var dt_next_month = new Date(dt_first_month);
	dt_next_month.setMonth(dt_first_month.getMonth()+2);

	var str_buffer="<html>\n"+
					"<head>\n"+
					"<title>Cal</title>\n"+
					"</head>\n"+
					"<body bgcolor=\"#F7F9FB\">\n"+
					"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
					"<tr>"+
					"<td valign=\"top\">\n";
	
	str_buffer+=printMonth(dt_first_month, dt_prev_month, 0, str1, str2,str3,selected_date);
	str_buffer+="</td><td>&nbsp;&nbsp;</td><td valign=\"top\">\n";
	str_buffer+=printMonth(dt_second_month, 0, dt_next_month, str1, str2,str3,selected_date);

	str_buffer+="</td>\n</tr>\n</table>\n"+
				"</body>\n"+
				"</html>\n";

	var vWinCal = window.open("", "Calendar", "width=450,height=175,status=no,resizable=yes,top=200,left=200");
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}function printMonth(dt_month, dt_prev_month, dt_next_month, str1,str2,str3,selected_date)
{
    
             
	var str_buffer="<table bgcolor=\"#CECECE\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
					"<tr>\n"+
					"<td bgcolor=\"white\"align=\"center\">";

	if(dt_prev_month!=0)
		str_buffer+="<a href=\"javascript:window.opener.show_calendar('"+
					str1+"', '"+str2+"','"+str3+"', "+ dt2dtstr(dt_prev_month)+");\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"1\"><b><<</b></font></a>";
  
	str_buffer+="</td>\n"+
				"<td bgcolor=\"white\" colspan=\"5\" align=\"center\">"+
				"<font color=\"#504F4F\" face=\"tahoma, verdana\" size=\"2\"><b>"+
				arr_months[dt_month.getMonth()]+" "+dt_month.getFullYear()+
				"</b></font>"+
				"</td>\n"+
				"<td bgcolor=\"white\"align=\"center\">";
	
	if(dt_next_month!=0)
		str_buffer+="<a href=\"javascript:window.opener.show_calendar('"+
					str1+"', '"+str2+"','"+str3+"', "+ dt2dtstr(dt_next_month)+");\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"1\"><b>>></b></font></a>";
						

	str_buffer+="</td>\n"+
				"</tr>\n";

	var dt_firstday = new Date(dt_month);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);

	var dt_lastday = new Date(dt_month);                             
	dt_lastday.setMonth(dt_lastday.getMonth()+1);
	dt_lastday.setDate(0);

	var dt_current_day = new Date(dt_firstday);

	// print weekdays titles
	str_buffer+="<tr>\n";
	for (var n=0; n<7; n++)
		str_buffer+="<td bgcolor=\"#F7F9FB\">"+
					"<font color=\"#002A94\" face=\"tahoma, verdana\" size=\"2\"><b>"+
					week_days[(n_weekstart+n)%7]+"</b></font></td>\n";

	// print calendar table
	str_buffer+="</tr>\n";
	while(dt_current_day.getMonth() == dt_month.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row header
		str_buffer+="<tr>\n";
		for(var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if(dt_current_day.getDate() == dt_base_date.getDate() &&
					dt_current_day.getMonth() == dt_base_date.getMonth() &&
					dt_current_day.getFullYear() == dt_base_date.getFullYear())
					// print current date
					if(selected_date.getDate()==dt_current_day.getDate() && selected_date.getMonth()==dt_current_day.getMonth() && selected_date.getFullYear()==dt_current_day.getFullYear())
					str_buffer += "	<td bgcolor=\"orange\" align=\"right\">";
					else
					str_buffer += "	<td bgcolor=\"#EEEEEE\" align=\"right\">";
				else if(dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					
					if(selected_date.getDate()==dt_current_day.getDate() && selected_date.getMonth()==dt_current_day.getMonth() && selected_date.getFullYear()==dt_current_day.getFullYear())
					str_buffer += "	<td bgcolor=\"orange\" align=\"right\">";
					else
					str_buffer+="<td bgcolor=\"#EEEEEE\" align=\"right\">";
				else

					// print working days of current month

					
					str_buffer+="<td bgcolor=\"white\" align=\"right\">";
				
				if(dt_current_day.getTime() >= dt_base_date.getTime() && dt_current_day.getTime() <= dt_max_date.getTime()) {
					
					str_buffer+="<a href=\"javascript:window.opener.setFieldDate('', '', "+dt2dtstr(dt_current_day)+",'"+str1+"','"+str2+"','"+str3+"'); window.close();\">";
					if (dt_current_day.getMonth() == dt_month.getMonth()) {
					    
						if(dt_current_day.getDate()== dt_base_date.getDate() &&
							dt_current_day.getMonth() == dt_base_date.getMonth()-1 &&
							dt_current_day.getFullYear() == dt_base_date.getFullYear()){
							
							// print current date
							str_buffer+="<font color=\"#504F4F\" face=\"tahoma, verdana\" size=\"1\"><b>";
							}
						else
						{
							// print days of current month
							
							if((dt_current_day.getDate()!=cur_date.getDate() && dt_current_day.getMonth()!=cur_date.getMonth() && dt_current_day.getFullYear()!=cur_date.getFullYear())){													
							if(selected_date.getDate()==dt_current_day.getDate() && selected_date.getMonth()==dt_current_day.getMonth()-32 && selected_date.getFullYear()==dt_current_day.getFullYear())
							str_buffer+="<font color=\"red\" face=\"tahoma, verdana\" size=\"1\"><b>";
							else
							str_buffer+="<font color=\"#504F4F\" face=\"tahoma, verdana\" size=\"1\"><b>";
							}
							else{
							if(selected_date.getDate()==dt_current_day.getDate() && selected_date.getMonth()==dt_current_day.getMonth() && selected_date.getFullYear()==dt_current_day.getFullYear())
							str_buffer+="<font color=\"red\" face=\"tahoma, verdana\" size=\"1\"><b>";
							else
							str_buffer+="<font color=\"#504F4F\" face=\"tahoma, verdana\" size=\"1\"><b>";
							}
							
							if(dt_current_day.getDate()==cur_date.getDate() && dt_current_day.getMonth()==cur_date.getMonth() && dt_current_day.getFullYear()==cur_date.getFullYear())
							str_buffer+="<font color=\"#504F4F\" face=\"tahoma, verdana\" size=\"1\"><b>";
							
						}
					}
					else 
						// print days of other months
						str_buffer+="<font color=\"#A1A0A0\" face=\"tahoma, verdana\" size=\"1\"><b>";
						str_buffer+=dt_current_day.getDate()+"</b></font></a></td>\n"; 
				}
				else {
					
					str_buffer+="<font color=\"#A1A0A0\" face=\"tahoma, verdana\" size=\"1\"><b>";
														
					str_buffer+=dt_current_day.getDate()+"</b></font></td>\n";
										
					
				}
				
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer+="</tr>\n";
	}
	str_buffer+="</table>\n";

	return str_buffer;
}


function dt2dtstr (dt_datetime)
{
	var dt_date = new Date(dt_datetime);
	//return (new String (dt_date.getFullYear()+", "+(dt_date.getMonth()+1)+", "+dt_date.getDate()));
	return (new String ((dt_date.getMonth()+1)+","+dt_date.getDate()+","+dt_date.getFullYear()));
}



function setFieldDate(str_target, other_target,dateMonth,dateDay,dateYear,str1, str2 ,str3)
{
    
	if(str1 && !str2)
 	document.getElementById(str1).value=dateMonth+'/'+dateDay+'/'+dateYear;
	if(str2 && str3){
	document.getElementById(str2).value=dateDay;
	document.getElementById(str1).selectedIndex=dateMonth-1;
	document.getElementById(str3).value=dateYear;
	}
	return true;
}

function IsDateInPast(date)
{
  var today= new Date();
  var today= new Date(today.getFullYear(), today.getMonth(),1);
  
  date = new Date(date.getFullYear(), date.getMonth(),1);
  
  if(today.getTime() > date.getTime())
    return true;
    
  return false
}


  
					function  displayCalendar(reqDATE)
					{
						if(document.getElementById(reqDATE).value!=''){
						var d=document.getElementById(reqDATE).value;
						d=d.split('/');
						show_calendar(reqDATE,'','',d[0],d[1],d[2])//mm/dd/YYYY
						}
						else{
						var currentday = new Date();
						show_calendar(reqDATE,'','',currentday.getMonth()+1,currentday.getDate(),currentday.getFullYear())//mm/dd/YYYY
						}
												
					} 

					function  displayCal(reqMM,reqDay,reqYear)
					{
					   					  
						if(reqDay == '')
						show_calendar(reqMM,reqDay,reqYear,document.getElementById(reqMM).selectedIndex+1,1,document.getElementById(reqYear).value)
						else
						show_calendar(reqMM,reqDay,reqYear,document.getElementById(reqMM).selectedIndex+1,document.getElementById(reqDay).value,document.getElementById(reqYear).value)
						
																	
					}

			     function checkDateText(reqDATE){
				        
						var d=document.getElementById(reqDATE).value;
						d=d.split('/');

						if (d[0] == 2 && (d[2]%400 == 0 || (d[2]%4 == 0 && d[2]%100 != 0)))
						{
						  if(d[1]>=1 && d[1]<=29)
						  return true;
						  else{
						  alert('Not a valid date');
						  return false;
						  }
						 
						}

						if (d[0] == 2 && !(d[2]%400 == 0 || (d[2]%4 == 0 && d[2]%100 != 0)))
						{
						  if(d[1]>=1 && d[1]<=28)
						  return true;
						  else{
						  alert('Not a valid date');
						  return false;
						  }
				  
						 
						}

						if(d[0]==1 || d[0] == 3 || d[0] == 5 || d[0] == 7 || d[0] == 8 || d[0] == 10 || d[0] == 12){

								if(d[1] >=1 && d[1] <=31)
								return true;
								else{
						          alert('Not a valid date');
						          return false;
								}
						}
						if(d[0]==4 || d[0] == 6 || d[0] == 9 || d[0]== 11){

								if(d[1] >=1 && d[1] <=30) 
							    return true;
								else{
						          alert('Not a valid date');
						          return false;
								}
					
				 }

				 return true;
				 }

