// Simple Calender Creator
// By Brian Gosselin of http://scriptasylum.com

// Usage:  buildCal(month, year, main_css_classname, header_css_classname, Sat-Sun_css_classname, days_css_classname, border_thickness, starting_day, date_onclick_handler)
//         Pass the result to the document.write() method. ex: document.write( buildCal(<parameters>) );

// Release History:
// V1.0 - Initial Release
// V1.1 - Added revisions made by DynamicDrive.com (changes denoted by the letters "DD").
// V1.2 - Added ability to specify the starting day of the week (Sun, Mon, Tue, etc)
// V1.3 - Added ability to execute a function when a date is clicked. Fixed a minor visual bug in Mozilla.

Date.prototype.getWeek = function() {
  var onejan = new Date(this.getFullYear(),0,1,0,0,0);
  return Math.ceil((((this - onejan) / 86400000) + onejan.getDay())/7);
}

var month,year,link,aD,ad_loaded,active;

function buildCal(m, y,l,a){
var mn=['ßíâàðü','Ôåâðàëü','Ìàðò','Àïðåëü','Ìàé','Èþíü','Èþëü','Àâãóñò','Ñåíòÿáðü','Îêòÿáðü','Íîÿáðü','Äåêàáðü'];
var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
var sDay = 2;
month=m;
year=y;
link=l;
active=a;
 
var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st
var week = oD.getWeek();

var tmpod=oD.od-sDay;
if(tmpod<0)tmpod=7+tmpod;
oD.od=tmpod+1;

var wkstr = "ÂñÏíÂòÑð×òÏòÑá";
var wkstr=wkstr.substr(sDay*2-2,wkstr.length)+wkstr.substr(0,sDay*2-2);

var todaydate=new Date(a.substr(0,4),a.substr(4,2)*1-1,a.substr(6,2)*1) //DD

var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD

dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
var t='<table class="calendar" cellpadding="0" border="0" cellspacing="0">';
t+='<tr><th colspan="7"><b>'+mn[m-1]+' '+y+'</b></td></tr>';
t+='<tr><td><a href="#" onclick="return listCalendar('+"'«'"+')">&laquo;</a></td><td><a href="#" onclick="return listCalendar('+"'<'"+')">&lt;</a></td><td colspan="3">&nbsp;</td><td><a href="#" onclick="return listCalendar('+"'>'"+')">&gt;</a></td><td><a href="#" onclick="return listCalendar('+"'»'"+')">&raquo;</a></td></tr>';
t+='<tr align="center">';
for(s=0;s<14;s+=2){t+='<th>'+wkstr.substr(s,2)+'</th>';};
t+='</tr><tr>';
for(i=1;i<=42;i++){
var c='';
if ((i)%7==0) c+=' right';
if (i>28) c+= ' bottom';
if((Math.ceil(i/7)%2) == 1) c+=' bg';
var x=( (i-oD.od>=0) && (i-oD.od<dim[m-1]) )? (i-oD.od+1) : '&nbsp;';
if (i-oD.od+1==scanfortoday && x!='&nbsp;') c+=' current';
if(aD.substr((i-oD.od),1) == 1)
{
  	if (x!='&nbsp;')c+=' withlink';
  	mtxt = m<10?'0'+m:m;
  	xtxt = x<10?'0'+x:x;
  	lnk=y+''+mtxt+''+xtxt+'.html';
  if (x!='&nbsp;') x = '<a href="'+l+lnk+'">'+x+'</a>';
}
t+='<td class="'+c+'">'+x+'</td>';
//if (((i)%7==0) && i>=dim[m-1]+oD.od-1) i=45;
if(((i)%7==0))
{
  week++;
  t+='</tr><tr>';
}
}
t+='</tr></table>';
return t;
}

function listCalendar(d)
{
  if (d=='<')
  {
  	if (month==1){month=13;year--;};
  	$('.calendarContainer').html(actCal(month-1,year,link,active));
  }
  else if (d=='>')
  {
  	if (month==12){month=0;year++;};
  	$('.calendarContainer').html(actCal(month+1,year,link,active));
  }
  else if (d=='»') $('#calendarContainer').html(actCal(month,year+1,link,active));
  else if (d=='«') $('#calendarContainer').html(actCal(month,year-1,link,active));
  return false;
}

function actCal(m, y, l,a)
{
  m-=1;
  tmpD = new Date();
  if (y<=tmpD.getFullYear())
  {
    if (m<tmpD.getMonth() || (m>tmpD.getMonth() && y<tmpD.getFullYear())) aD = '1111111111111111111111111111111';
    else if(m>tmpD.getMonth()) aD = '0000000000000000000000000000000';
    else
    {
      aD='';
      for (i=1;i<=31;i++)
      {
      	if (i<=tmpD.getDate() || y<tmpD.getFullYear()) aD+='1';
      	else aD+='0';
      }
    }
  } else aD = '0000000000000000000000000000000';
  //$.get("/export/calendar.php?y="+y+"&m="+m+"&l="+l, function(data){
  //aD=data;
  m+=1;
   $('#calendarContainer').html(buildCal(m, y, l,a))
}
