﻿function WebCalendar(y,m) //初始化日历的设置
{   
    var date = new Date(y,m-1); //时间
    this.date=date;
    this.month  = date.getMonth()+1;//月份
    this.year  = date.getFullYear(); //年份
    this.firstweek=date.getDay();//本月第一天周几
    this.lastweek=new Date(y,m-1,GetDays(y,m)).getDay();
    this.datedays=GetDays(y,m);
    this.dayshow=this.datedays+this.firstweek+6-this.lastweek;//日历中显示的日子个数
    
    var lastdate=new Date(y,m-2);//上个月日期
    this.lastdate=lastdate;
    this.lastmonth=lastdate.getMonth()+1;//上个月月份
    this.lastyear  = lastdate.getFullYear(); //上个月年份
    
    var nextdate=new Date(y,m);//下个月日期
    this.nextdate=nextdate;
    this.nextmonth=nextdate.getMonth()+1;// 下个月月份
    this.nextyear  = nextdate.getFullYear(); //下个月年份

    this.today=new Date();//当前日期
    this.todayYear   = new Date().getFullYear(); //当前年份
    this.todayMonth  = new Date().getMonth()+ 1; //当前月份
    this.todaydate    = new Date().getDate();     //当前日期
    
    var lasttoday=new Date(this.todayYear,this.todayMonth-2);//当前月的上个月
    this.lasttoday=lasttoday;
    this.lasttodayMonth=lasttoday.getMonth()+1;//当前月的上个月的月份
    this.lasttodayYear=lasttoday.getFullYear();//当前月的上个月的年份
    
}   

//获取某年某月天数
function GetDays(Year,Month)
{
    return new Date(Year,Month,0).getDate();  
}

//是否为周末
function isweekend(y,m,j)
{
    return new Date(y,m-1,j).getDay()==5||new Date(y,m-1,j).getDay()==6;
}
function changemonth(year,month)
{
    var prodate=new WebCalendar(year,month);
    var calendartable=document.getElementById("divcalendarout");
    var arr=new Array(prodate.dayshow);
    var sday="";
    var html="";
    var json="";
    var valarr=null;var noprice = null;
	if(typeof(pricejson)!=="undefined"&&pricejson!=""&&pricejson!=null)
    {
        json=eval("("+pricejson+")");
        valarr=handlejson(year,month,json);
        noprice = treatjson(year,month,json);
    }
    html+="<table class=\"t_Calendar\" cellspacing=\"1\" cellpadding=\"2\" border=\"0\">";
    html+="<tr>"+
	      "<td colspan=\"7\" id=\"calendartop\">"+
	      "<table cellspacing=\"0\" border=\"0\" class=\"calendartop_table\">"+
	      "<tr>"+
	      "<td align=\"center\" id=\"lastmonth\">";
    if(prodate.lastmonth==prodate.lasttodayMonth&&prodate.lastyear==prodate.lasttodayYear)
        html+="<font><<"+prodate.lastmonth+"月</font>";
    else
        html+="<a href=\"javascript:{changemonth("+prodate.lastyear+","+prodate.lastmonth+")}\" title=\"转到上一个月\"><<"+prodate.lastmonth+"月</a>";
	html+="</td>"+
	      "<td align=\"center\" id=\"thismonth\">"+
	      "<div>"+prodate.year+"年"+prodate.month+"月</div>"+
	      "</td>"+
	      "<td align=\"center\" id=\"nextmonth\">"+
	      "<a href=\"javascript:{changemonth("+prodate.nextyear+","+prodate.nextmonth+")}\" title=\"转到下一个月\">"+prodate.nextmonth+"月>></a>"+
	      "</td>"+
	      "</tr>"+
	      "</table>"+
	      "</td>"+
	      "</tr>"+
	      "<tr class=\"weektitle\">"+
	      "<th align=\"center\" abbr=\"星期日\" scope=\"col\">日</th>"+
	      "<th align=\"center\" abbr=\"星期一\" scope=\"col\">一</th>"+
	      "<th align=\"center\" abbr=\"星期二\" scope=\"col\">二</th>"+
	      "<th align=\"center\" abbr=\"星期三\" scope=\"col\">三</th>"+
	      "<th align=\"center\" abbr=\"星期四\" scope=\"col\">四</th>"+
	      "<th align=\"center\" abbr=\"星期五\" scope=\"col\">五</th>"+
	      "<th align=\"center\" abbr=\"星期六\" scope=\"col\">六</th>"+
	      "</tr>";
	var nextthridtime=new Date(prodate.todayYear,prodate.todayMonth+2,prodate.todaydate).valueOf();
	var todaytime=new Date(prodate.todayYear,prodate.todayMonth-1,prodate.todaydate).valueOf();
    for(var i=0,j=0;i<prodate.dayshow;i++)
    {
        if(i>=prodate.firstweek&&i<prodate.firstweek+prodate.datedays)
        {
            j++;
            sday=j.toString();
            if(valarr!=null&&new Date(year,month-1,j).valueOf()<=nextthridtime&&new Date(year,month-1,j).valueOf()>=todaytime)
            {   
                if(noprice[j-1] !=null && noprice[j-1]==0)
                   arr[i]="<td align=\"center\" class=\"day_green\">"+j.toString()+"<br/><label>无房</label></td>";
                else
                   arr[i]="<td align=\"center\" class=\"day_yellow\"><div>"+j.toString()+"</div><div><a href=\""+json.url+year+"-"+month+"-"+j.toString()+"\" target=\"_blank\" id=\"calendarreservelink\">"+valarr[j-1]+"</a></div></td>";
             
            }else
            {
                arr[i]="<td align=\"center\" class=\"day_gray\">"+j.toString()+"</td>";
            }
            
        }
        else
        {
            arr[i]="<td align=\"center\" class=\"day_gray\"></td>";
        }
        if( (i+1) % 7 == 1)
            html+="<tr>";
        html+=arr[i];
        if((i+1)%7==0)
        {
            html+="</tr>";
            }
    }
    html+="</table>"
    calendartable.innerHTML=html;
    var bar=document.getElementById("tabmonth");
    var barhtml="<div id=\"calendarleft\" style=\"width:12px;background-image:url(/css/image/pro8.gif);background-repeat:no-repeat;\"></div>";
    for(var i=1;i<=12;i++)
    {
        if(prodate.year>prodate.todayYear||(prodate.year==prodate.todayYear&&i>=prodate.todayMonth))
        {
            if(i==prodate.month)
                barhtml+="<div style=\"background-image:url(/css/image/pro9.gif);background-repeat:no-repeat;\"><a href=\"javascript:{}\">"+i.toString()+"月</a></div>";
            else
                barhtml+="<div><a href=\"javascript:{changemonth("+prodate.year+","+i+")}\">"+i.toString()+"月</a></div>";
        }
            
        else
            barhtml+="<div style=\"color:#686868;cursor:inherit;\">"+i.toString()+"月</div>";
    }
    bar.innerHTML=barhtml;
}

function min(obj1,obj2)
{
    return obj1.valueOf()<obj2.valueOf()?obj1:obj2;
}
function max(obj1,obj2)
{
    return obj1.valueOf()<obj2.valueOf()?obj2:obj1;
}

function handlejson(year,month,json)
{
    var days=GetDays(year,month);
    var arr=new Array(days);
    if(json.saleprice_week=="null")
    {
        for(var k=0;k<days;k++)
        {
            arr[k]=json.saleprice;
        }
    }else
    {
        for(var k=0;k<days;k++)
        {
            arr[k]=isweekend(year,month,k+1)?json.saleprice_week:json.saleprice;
        }
    }
    if(json.pricelst!=null&&json.pricelst.length>0)
    {
        var len=json.pricelst.length;
        var begin,end,_begin,_end,s,e;
        for(var k=0;k<len;k++)
        {
            begin=new Date(json.pricelst[k].beginyear,json.pricelst[k].beginmonth-1,json.pricelst[k].beginday);
            end=new Date(json.pricelst[k].endyear,json.pricelst[k].endmonth-1,json.pricelst[k].endday);
            _begin=new Date(year,month-1,1);
            _end=new Date(year,month-1,days);
            if(begin.valueOf()>_end.valueOf())
                continue;
            if(end.valueOf()<_begin.valueOf())
                continue;
            if(begin.valueOf()<=end.valueOf())
            {
                for(var m=max(begin,_begin).getDate();m<=min(end,_end).getDate();m++)
                {
                    arr[m-1]=json.pricelst[k].Price;
                }
            }
        }
    }
    return arr;
}


function treatjson(year,month,json)
{
    var days=GetDays(year,month);
    var arr=new Array(days);
    if(json.saleprice_week=="null")
    {
        for(var k=0;k<days;k++)
        {
            arr[k]=json.saleprice;
        }
    }else
    {
        for(var k=0;k<days;k++)
        {
            arr[k]=isweekend(year,month,k+1)?json.saleprice_week:json.saleprice;
        }
    }
    if(json.nopricelst!=null&&json.nopricelst.length>0)
    {
        var len=json.nopricelst.length;
        var begin,end,_begin,_end,s,e;
        for(var k=0;k<len;k++)
        {
            begin=new Date(json.nopricelst[k].beginyear,json.nopricelst[k].beginmonth-1,json.nopricelst[k].beginday);
            end=new Date(json.nopricelst[k].endyear,json.nopricelst[k].endmonth-1,json.nopricelst[k].endday);
            _begin=new Date(year,month-1,1);
            _end=new Date(year,month-1,days);
            if(begin.valueOf()>_end.valueOf())
                continue;
            if(end.valueOf()<_begin.valueOf())
                continue;
            if(begin.valueOf()<=end.valueOf())
            {
                for(var m=max(begin,_begin).getDate();m<=min(end,_end).getDate();m++)
                {
                    arr[m-1]=0;
                }
            }
        }
    }
    return arr;
}