﻿var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31);
var today=new getToday();
var year=today.year;
var month=today.month;
var newCal; 
function AddClassName(objElement, strClass, blnMayAlreadyExist)
{
    if ( objElement.className )
    {
        var arrList = objElement.className.split(' ');
        if ( blnMayAlreadyExist )
        {
         var strClassUpper = strClass.toUpperCase();
         for ( var i = 0; i < arrList.length; i++ )
            {
                if (arrList[i].toUpperCase() == strClassUpper )
               {
                   arrList.splice(i, 1);
                   i--;
               }
            }
        }
        arrList[arrList.length] = strClass;
        objElement.className = arrList.join(' ');
    }
    else
    {
        objElement.className = strClass;
    }
}
function RemoveClassName(objElement, strClass)
{
    if (objElement.className )
    {
        var arrList = objElement.className.split(' ');
        var strClassUpper = strClass.toUpperCase();
        for ( var i = 0; i < arrList.length; i++ )
         {
            if ( arrList[i].toUpperCase() == strClassUpper )
            {
                arrList.splice(i, 1);
                i--;
            }
         }
        objElement.className = arrList.join(' ');
    }
}
function getDays(month, year) {
    if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) ||(0 == year % 400) ? 29 : 28;
    else return daysInMonth[month];
}
function getToday() {
    this.now = new Date();
    this.year = this.now.getFullYear();
    this.month = this.now.getMonth();
    this.day = this.now.getDate();
}
function Calendar(y,m) {
    var resdaily;
    var cell;
    if(y&&m)
    {
        year=y;
        month=m-1;
    }
    $("CalenMon").innerHTML=getyearmon(year,month);
    newCal = new Date(year,month,1);
    var startDay = newCal.getDay();
    var daily = 1-startDay;
    var caltable = $("CalenTable");
    if(caltable.rows.length==0)
    {
        for (var intWeeks = 0; intWeeks < 6; intWeeks++)
        {
            var temTR=caltable.insertRow(0);
            for (var intDays = 0; intDays < 7;intDays++) temTR.insertCell(0);
        } 
    }
    var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
    var lastmonth,lastyear;
    if ((newCal.getMonth()-1)>=0)
    {
        lastmonth=newCal.getMonth()-1;
        lastyear=newCal.getFullYear();
    }
    else
    {
        lastmonth=11;
        lastyear=newCal.getFullYear()-1;
    }   
    var lastDaysInMonth =getDays(lastmonth, lastyear);
    
    for (var intWeek = 0; intWeek < caltable.rows.length;intWeek++)
        for (var intDay = 0;intDay < caltable.rows[intWeek].cells.length;intDay++)
        {
            cell = caltable.rows[intWeek].cells[intDay];
            cell.className="";
            cell.title="";
            if(daily>0&&daily<=intDaysInMonth)
            {
                cell.id="Caln_"+daily;
                if((today.year == year) &&(today.month == month)&&(today.day == daily))
                {
                   AddClassName(cell,"CalToday",true);
                }
                cell.innerHTML = '<span>'+daily+'</span>';
            }
            else
            {
                cell.id="";
                if(daily<=0)
                {
                    resdaily=lastDaysInMonth+daily;
                }
                else
                {
                    var temp=daily-intDaysInMonth;
                    resdaily=temp;
                }
                cell.innerHTML = '<span style="color:#999999;">'+resdaily+'</span>';
            }
            
            daily++;
        }
    processCalendar();
    processCalHday();
}
function getPad(s)
{
    s=parseInt(s);
    return s<10?"0"+s:s;
}
function processCalendar()
{
    if(typeof(blogday)!="object")
    {
        return;
    }
    var tempmonth=month+1;
    var resmonth=getPad(tempmonth);
    
    today = new getToday();
    if(today.year<year)return;
    else if(today.year==year&&today.month<month)return;
    
    var pa=enPath=="1"?"":"Default.aspx";
    if(typeof(blogday[year+"-"+tempmonth])=="string")
    {
        var urlbase=myBlogBase+"PostsList/"+myBlogId+"/"+year+"_"+resmonth+"_";
        var dayinfos=blogday[year+"-"+tempmonth].split(";");
        for(var i=0;i<dayinfos.length;i++)
        {
            dayinfo=dayinfos[i].split(":");
            if($("Caln_"+dayinfo[0]))
            {
                var resday=dayinfo[0];
                var pt=$("Caln_"+dayinfo[0]).title;
                if(pt)pt=pt+"\n";
                $("Caln_"+dayinfo[0]).innerHTML='<a href="'+urlbase+getPad(resday)+'/'+pa+'" title="'+pt + JsLang.Get("dayposts").format(dayinfo[1])+'">'+resday+'</a>';
            }
        }
    }
    else if(typeof(XMLHttpObj)=="function")
    {
        var params={
		    "cmd":"CalenMon",
		    "data":"CalenDay="+year+resmonth+"&Bid="+myBlogId,
            "url":"/Ajax.aspx",
		    "handler":calenDayHandler
	    }
	    var Ajaxobj=new XMLHttpObj();
	    Ajaxobj.sendRequest(params);
    }
}
function calenDayHandler(res)
{
    if(res)
    {
        eval(res);
        processCalendar();
    }
}
function processCalHday(t)
{
    var tempmonth=month+1;
    var resmonth=getPad(tempmonth);
    if(typeof(calhday[year+"-"+tempmonth])=="object")
    {
        var ch=(calhday[year+"-"+tempmonth]);
        for(var i in ch)
        {
            if($("Caln_"+i))
            {
                var tarr=[];
                var icon=null;
                for(var k=0;k<ch[i].length;k++)
                {
                    var ti=ch[i][k].split(",");
                    tarr.push(ti[0]);
                    if(ti[1] && isNaN(parseInt(ti[1])))icon=ti[1];
                }
                
                if(icon)icon="<img src='/CommonRes/images/"+icon+"' border=0 />";
                var pc=$("Caln_"+i).getElementsByTagName("a");
                if(pc.length>0)
                {
                    pc[0].title=tarr.join(',')+"\n"+pc[0].title;
                    if(icon)pc[0].innerHTML=icon;
                }
                else 
                {
                    $("Caln_"+i).title =tarr.join(',');
                    if(icon)$("Caln_"+i).innerHTML=icon;
                }
                AddClassName($("Caln_"+i),"CalHoliday",true);
            }
        }
    }
    else if(typeof(XMLHttpObj)=="function")
    {
        var params={
		    "cmd":"CalenHday",
		    "data":"CalenMonth="+year+resmonth,
            "url":"/Ajax.aspx",
		    "handler":processCalHdayHandler
	    }
	    var Ajaxobj=new XMLHttpObj();
	    Ajaxobj.sendRequest(params);
    }
}
function processCalHdayHandler(res)
{
    if(res)
    {
        eval(res);
        processCalHday(1);
    }
}
function preMonth()
{
    if ((month-1)<0)
    {
        month=11;
        year=year-1;
    } 
    else
    {
        month=month-1;
    }
    Calendar();
}
function nextMonth()
{
    if((month+1)>11)
    {
        month=0;
        year=year+1;
    } 
    else
    {
        month=month+1;
    }
    Calendar();
}
function preYear()
{
    year=year-1;
    Calendar();
}
function nextYear()
{
    year=year+1;
    Calendar();
}
function toToday()
{
    today=new getToday();
    year=today.year;
    month=today.month;
    Calendar();
}