var weekend = [5,6];
var weekendColor = "#D2CCCC";
var fontface = "FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; COLOR=#010595 ";
var fontsize = 2;
var ThisDate = new Date();
var ggWinCal;
Calendar.Months = ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"];
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

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.gReturnItem = p_item;
}

Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.get_month = Calendar_get_month;
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)
{
  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)
{
  var ret_arr = new Array();

  if (incr == -1)
  { // Geri
    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)
  { // İleri
    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)
{
  var ret_arr = new Array();

  if (incr == -1)
  { // Geri
    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)
  { // İleri
    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;
}

new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function()
{
  var vCode = "";
  var vHeader_Code = "";
  var vData_Code = "";

  vCode = vCode + "<TABLE BORDER=0 cellpadding=1 cellspacing=1 BGCOLOR=\"" + "#D2CCCC" + "\">";
  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();
  this.wwrite("<html><head><title>Takvim</title></head>");
  this.wwrite("<body bgcolor=\"" + "#E6E4E4" + "\" " + "link=\"" + "#191DA2" + "\" " + "vlink=\"" + "#191DA2" + "\" " + "alink=\"" + "#191DA2" + "\" " + "text=\"" + "#191DA2" + "\">");
  this.wwriteA("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=1 CELLPADDING=3 BGCOLOR='#D2CCCC'><tr><td WIDTH='50%'><FONT SIZE='2' FACE='" + fontface + "'><B>" + this.gMonthName);
  this.wwriteA("</font></td><td align=\"right\" WIDTH='50%'><FONT SIZE='2' FACE='" + fontface + "'><b>" + this.gYear + "</b></font></td></tr></table>");
  this.wwriteA("</B><FONT FACE='" + fontface + "' SIZE=2>");

  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=0 CELLSPACING=1 CELLPADDING=3 BGCOLOR='#D2CCCC'><TR><TD ALIGN=center bgcolor='#D2CCCC'>");
  this.wwrite("[<A HREF=\"" + "javascript:window.opener.Build(" + "'" +
		this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" + ");" + "\">&ltYıl<\/A>]</TD><TD ALIGN=center bgcolor='#D2CCCC'>");
  this.wwrite("[<A HREF=\"" + "javascript:window.opener.Build(" + "'" +
		this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" + ");" + "\">&ltAy<\/A>]</TD><TD ALIGN=center bgcolor='#D2CCCC'>");
  this.wwrite("[<A HREF=\"" + "javascript:window.opener.Build(" + "'" +
        this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" + ");" + "\">Ay&gt<\/A>]</TD><TD ALIGN=center bgcolor='#D2CCCC'>");
  this.wwrite("[<A HREF=\"" + "javascript:window.opener.Build(" + "'" +
		this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" + ");" + "\">Yıl&gt<\/A>]</TD></TR></TABLE><BR>");

  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 = 75;				// Y-margin

  this.gWinCal.document.open();
  this.wwrite("<html><head><title>Calendar</title><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></head>1" + "<body bgcolor='\"" + this.gBodyBGColor + "\" ");
  this.wwrite("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>");

  var prevYYYY = parseInt(this.gYear) - 1;
  var nextYYYY = parseInt(this.gYear) + 1;

  this.wwrite("<TABLE WIDTH='100%' BGCOLOR='#000000'><TR><TD ALIGN=center bgcolor='#e0e0e0'>");
  this.wwrite("[<A HREF=\"" + "javascript:window.opener.Build(" + "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" +
              this.gFormat + "'" + ");" + "\" alt='Önceki Yıl'><\/A>]</TD><TD ALIGN=center bgcolor='#e0e0e0'>");
  this.wwrite("[<A HREF=\"" + "javascript:window.opener.Build(" + "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" +
              this.gFormat + "'" + ");" + "\" alt='Sonraki Yıl'><\/A>]</TD></TR></TABLE><BR>");
  var j;
  for (i=11; i>=0; i--)
  {
	this.wwrite("<DIV 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);

			this.wwrite("</DIV>");
	}
  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 = "<TR>";

  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Pzt</B></FONT></TD>";
  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Sal</B></FONT></TD>";
  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Çrş</B></FONT></TD>";
  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Prş</B></FONT></TD>";
  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Cum</B></FONT></TD>";
  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Cmt</B></FONT></TD>";
  vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "'><B>Paz</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() - 1;
  var vDay=1;
  var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
  var vOnLastDay=0;
  var vCode = "";

  if (vFirstDay == -1)
	vFirstDay = 6;
  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>";
  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) + "'; self.opener.document." +
			this.gReturnItem + ".onchange(); window.close();\">" + this.format_day(vDay) + "</A>" + "</FONT></TD>";
	vDay=vDay + 1;
  }
  vCode = vCode + "</TR>";
  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) + "'; self.opener.document." +
			  this.gReturnItem + ".onchange(); 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;
  }
  for (m=1; m<(7-j); m++)
  {
	if (this.gYearly)
	  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + "><FONT SIZE='2' COLOR='gray'> </FONT></TD>";
	else
	  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + "><FONT SIZE='2' COLOR='gray'>" + m + "</FONT></TD>";
  }
  return vCode;
}

Calendar.prototype.format_day = function(vday)
{
  var vNowDay = ThisDate.getDate();
  var vNowMonth = ThisDate.getMonth();
  var vNowYear = ThisDate.getFullYear();

  if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
	return ("<FONT COLOR=\"#FCA6A6\"><B>" + vday + "</B></FONT>");
  else
	return (vday);
}

Calendar.prototype.write_weekend_string = function(vday)
{
  var i;

  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;

  vData = vDD + "/" + vMonth + "/" + 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);
  if (gCal.gYearly)
    gCal.showY();
  else
    gCal.show();
}

function show_calendar(argu, toppos, topleft)
{
  p_item = arguments[0];
  p_month = new String(ThisDate.getMonth());
  p_year = new String(ThisDate.getFullYear().toString());
  toppos = toppos + 100 ;
  topleft = topleft + 120 ;
  vWinCal = window.open("", "Takvim", "width=250,height=250,status=no,resizable=no,top=" + toppos + ",left=" + topleft );
  vWinCal.opener = self;
  ggWinCal = vWinCal;
  Build(p_item, p_month, p_year, null);
}

function show_yearly_calendar(p_item, p_year, p_format)
{
  if (p_year == null || p_year == "")
	p_year = new String(ThisDate.getFullYear().toString());
  var vWinCal = window.open("", "Takvim", "scrollbars=no");
  vWinCal.opener = self;
  ggWinCal = vWinCal;
  Build(p_item, null, p_year, null);
}

function CloseWindow()
{
    return 1;
}

