var never_hide_calendar = false;
var enabled_week_days = new Array();
enabled_week_days[1] = new Array();
enabled_week_days[1] = 1;
enabled_week_days[2] = new Array();
enabled_week_days[2] = 1;
enabled_week_days[3] = new Array();
enabled_week_days[3] = 1;
enabled_week_days[4] = new Array();
enabled_week_days[4] = 1;
enabled_week_days[5] = new Array();
enabled_week_days[5] = 1;
enabled_week_days[6] = new Array();
enabled_week_days[6] = 1;
enabled_week_days[7] = new Array();
enabled_week_days[7] = 1;
var disabled_week_days_msg = "This day disabled for selection";

function isStrDate(strDate) {
  var tmp=String(strDate).split("/");
  var month=Number(tmp[0]);
  var day=Number(tmp[1]);
  var year=Number(tmp[2]);
  var tmpDate=new Date(Date.parse(strDate));
  var day1=tmpDate.getDate();
  var month1=tmpDate.getMonth()+1;
  var year1=tmpDate.getFullYear();
  if (day==day1 && month==month1 && year==year1) return(true);
    else return(false);
}

function GetMonthName(num) {
	var res="";
	switch(num) {
		case 0: res="January"; break;
		case 1: res="February"; break;
		case 2: res="March"; break;
		case 3: res="April"; break;
		case 4: res="May"; break;
		case 5: res="June"; break;
		case 6: res="July"; break;
		case 7: res="August"; break;
		case 8: res="September"; break;
		case 9: res="October"; break;
		case 10: res="November"; break;
		case 11: res="December"; break;
	}
	return(res);
}

function DaysInMonth(d) {
	var tmp=new Date(d);
	tmp.setDate(1);
	tmp.setMonth(tmp.getMonth()+1);
	tmp.setDate(tmp.getDate()-1);
	return(tmp.getDate());
}

function GetX(input) {
  var img=input;
  var X=0;
  do {X+=img.offsetLeft} while ((img=img.offsetParent)!=null);
  return(X);
}

function GetXRightAlign(input) {
  var img=input;
  var X=0;
  var i=0;
  var offleft=0;
  var w=img.width;
  do {X+=img.offsetLeft;
      if(i==0)offleft=img.offsetLeft;
      i++;
  } while ((img=img.offsetParent)!=null);
  X-=(offleft-w);
  return(X);
}

function GetY(input) {
  var img=input;
  var Y=0;
  do {Y+=img.offsetTop} while ((img=img.offsetParent)!=null);
  return(Y);
}

function ShowPulldowns() {
	var sels = document.body.getElementsByTagName("SELECT");
	if ( sels ) {
		for ( var i = 0; i < sels.length; i++ )
			if (!sels[i].wasHidden && sels[i].style.visibility=="hidden")
				sels[i].style.visibility="visible";
			else
				sels[i].wasHidden=false;
	}
}

function HidePulldowns(left,top,right,bottom) {
	var sels = document.body.getElementsByTagName("SELECT");
	var sel;
	if ( sels ) {
		for ( var i = 0; i < sels.length; i++ ) 
		{
			sel = sels[i];
			if ( sel.name == "id" )
				continue;
				
			if (sel.style.visibility=="hidden") {
				sel.wasHidden=true;
				continue;
			}
			if (!sel.coords)
			{
				sel.coords={'left':GetX(sel),'top':GetY(sel)};
				sel.coords.bottom=sel.coords.top + sel.offsetHeight;
				sel.coords.right=sel.coords.left + sel.offsetWidth;
			}

			if(		sel.coords.top    < bottom 
				&&  sel.coords.bottom > top 
				&&  sel.coords.left   < right 
				&&  sel.coords.right  > left)
				sel.style.visibility="hidden";
		}
	}
	return;
}

function ShowCalendar(input) {
	// IE check
	//if (!document.all) return;
	
	var img=document.images["img_"+input];
	
	var calendar=document.getElementById("calendar");
	calendar.style.left = GetX(img)+1;
	calendar.style.top = GetY(img)+img.height+2;
	calendar.style.visibility="visible";

	var val=document.getElementsByTagName("INPUT")[input].value;

	DrawMonth(input,val);
	
	var left=parseInt(calendar.style.left);
	var top=parseInt(calendar.style.top);
	var right=parseInt(left)+calendar.offsetWidth;
	var bottom=parseInt(top)+calendar.offsetHeight;
	HidePulldowns(left,top,right,bottom);
}

//shows calendar on the right of the img margin
function ShowCalendarRightAlign(input) {
	// IE check
	if (!document.all) return;

	var img=document.images["img_"+input];
	
	var calendar=document.getElementById("calendar");
	calendar.style.left = GetXRightAlign(img)+1;
	calendar.style.top = GetY(img)+img.height+7;
	calendar.style.visibility="visible";
	
	var val=document.getElementsByTagName("INPUT")[input].value;

	DrawMonth(input,val);
	
	var left=calendar.style.left;
	var top=calendar.style.top;
	var right=left+calendar.offsetWidth;
	var bottom=top+calendar.offsetHeight;
	HidePulldowns(left,top,right,bottom);
}

function SimpleShowCalendar(input) {
	// IE check
	if (!document.all) return;
	
	var calendar=document.getElementById("calendar");	
	calendar.style.visibility="visible";	

	var val=document.getElementsByTagName("INPUT")[input].value;

	DrawMonth(input,val);
	
	var left=parseInt(calendar.style.left);
	var top=parseInt(calendar.style.top);
	var right=parseInt(left)+calendar.offsetWidth;
	var bottom=parseInt(top)+calendar.offsetHeight;
	HidePulldowns(left,top,right,bottom);
}


function HideCalendar() {
	// IE check
	
	//if (!document.all) return;
	if (never_hide_calendar) return;

	var calendar=document.getElementById("calendar");
	
	if (!calendar) return;
	
	if (calendar.style.visibility=="visible") {
		calendar.style.visibility="hidden";
		ShowPulldowns();
	}
}

function DrawMonth(input,datestr) {
	var inp_value=document.getElementsByTagName("INPUT")[input].value;
	var sel_d=new Date();
	if (isStrDate(inp_value))
		sel_d=new Date(Date.parse(inp_value));
	
	var d=new Date();
	if (isStrDate(datestr))
		d=new Date(Date.parse(datestr));

	var calendar=document.getElementById("calendar");

	//calendar.all["monthname"].innerHTML=GetMonthName(d.getMonth())+", "+d.getFullYear();
	document.getElementById("monthname").innerHTML=GetMonthName(d.getMonth())+", "+d.getFullYear();
	
	var links=calendar.getElementsByTagName("A");
	var cells=calendar.getElementsByTagName("TD");

	var tmp=new Date(d);
	tmp.setDate(1);
	tmp.setDate(tmp.getDate()-1);
	links["prevmonth"].href="javascript:DrawMonth('"+input+"','"+(tmp.getMonth()+1)+"/"+tmp.getDate()+"/"+tmp.getFullYear()+"');";
	tmp.setDate(tmp.getDate()+1);
	tmp.setMonth(tmp.getMonth()+1);
	links["nextmonth"].href="javascript:DrawMonth('"+input+"','"+(tmp.getMonth()+1)+"/"+tmp.getDate()+"/"+tmp.getFullYear()+"');";
	
	tmp=new Date(d);
	tmp.setDate(1);
	var firstcol=tmp.getDay();
	var firstrow=1;
	if (firstcol==0)
		firstrow=2;
	tmp.setDate(1-((firstrow-1)*7+firstcol));

	var link_obj, cell_obj;

	for (var i=1; i<=6; i++) {
		for (var j=0; j<=6; j++) {
			var id="d"+i+"-"+j;
			var cell="c"+i+"-"+j;
			var datestr="";
			if ((tmp.getMonth()+1)<10) datestr+="0";
			datestr+=(tmp.getMonth()+1)+"/";
			if (tmp.getDate()<10) datestr+="0";
			datestr+=tmp.getDate()+"/";
			datestr+=tmp.getFullYear();

			cell_obj=cells[cell];
			link_obj=links[id];

			cell_obj.style.backgroundColor="#ffffff";

			if ( enabled_week_days[j+1] == 1 )
			{
				link_obj.href="javascript:SetDate('"+input+"','"+datestr+"');";
			}
			else
			{
				link_obj.href="javascript:alert('"+disabled_week_days_msg+"');";
			}
			link_obj.innerHTML=tmp.getDate();
			link_obj.style.fontWeight="normal";
			link_obj.style.textDecoration="none";

			if ( enabled_week_days[j+1] == 1 )
			{
				if (d.getMonth()==tmp.getMonth()) 
					link_obj.style.color="#000000";
				else 
					link_obj.style.color="#888888";
			}
			else
			{
				if (d.getMonth()==tmp.getMonth()) 
					link_obj.style.color="#FF0303";
				else 
					link_obj.style.color="#FD9494";
			}

			if (tmp.getDate()==sel_d.getDate()&&
				tmp.getMonth()==sel_d.getMonth()&&
				tmp.getFullYear()==sel_d.getFullYear()) {
				link_obj.style.color="#ffffff";
				link_obj.style.fontWeight="bold";
				cell_obj.style.backgroundColor="#000000";
			}

			tmp.setDate(tmp.getDate()+1);
		}
	}
	tmp=new Date();
	datestr="";
	if ((tmp.getMonth()+1)<10) datestr+="0";
	datestr+=(tmp.getMonth()+1)+"/";
	if (tmp.getDate()<10) datestr+="0";
	datestr+=tmp.getDate()+"/";
	datestr+=tmp.getFullYear();
	links["today_link"].href="javascript:SetDate('"+input+"','"+datestr+"');";
	links["today_link"].innerHTML="Today: "+datestr;
}

function SetDate(input,value) 
{
	document.getElementsByTagName("INPUT")[input].value=value;

	if ( !never_hide_calendar )
		HideCalendar();
	else
		DrawMonth(input,value);	
}