﻿/*
 * Bazillyo's Spiffy DHTML Popup Calendar v. 1.0 ?2000 S. Ousta
 *   - freeware with this comment
 *   - for download size, you can strip all spaces & comments except the ?notices
 *   - Thanks to Chris for the domlay() function
 *   - this requires calendarcode.js, calendar.css, and calendarTest.htm
 *   - works in IE4.x, IE5.x, NS4.75 possibly 4.x, NS6 (with slight cosmetic issues)
 *   - Netscape does display some controls overtop of the layer so layout is important
 *Atao Chuang modifeid this file. 2002-8-25
 *   - www.enetmaker.net Email:webmaster@enetmaker.net
 */
 

 
 
// initialiZe variables... 
var ppcIE=((navigator.appName == "Microsoft Internet Explorer") || ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5)));
var ppcNN6=((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5));
//var ppcIE=(navigator.appName == "Microsoft Internet Explorer");
var ppcNN=((navigator.appName == "Netscape")&&(document.layers));
var ppcX = 4;
var ppcY = 4;
var IsCalendarVisible;
var calfrmName;
var maxYearList;
var minYearList;
var todayDate = new Date; 
var curDate = new Date; 
var curImg;
var curDateBox;
var minDate = new Date;
var maxDate = new Date;
var hideDropDowns;
var IsUsingMinMax = false;
var FuncsToRun;
var img_del;
var img_close;
var channel_url='';
img_del=new Image();
img_del.src="images/decoration/btn_del_small.gif";
img_close=new Image();
img_close.src="images/decoration/btn_close_small.gif";

minYearList=2005;
maxYearList=todayDate.getFullYear()+2;
IsCalendarVisible=false;

img_Date_UP=new Image();
img_Date_UP.src="images/decoration/button_time.gif";

img_Date_OVER=new Image();
img_Date_OVER.src="images/decoration/btn_date_over.gif";

img_Date_DOWN=new Image();
img_Date_DOWN.src="images/decoration/button_time.gif";


function calSwapImg(whatID, NewImg,override) {
    if (document.images) {
     if (!( IsCalendarVisible && override )) {
        document.images[whatID].src = eval(NewImg + ".src");
     }
    }
    window.status=' ';
    return true;
}

function getOffsetLeft (el) {
    var ol = el.offsetLeft;
    while ((el = el.offsetParent) != null)
        ol += el.offsetLeft;
    return ol;
}

function getOffsetTop (el) {
    var ot = el.offsetTop;
    while((el = el.offsetParent) != null)
        ot += el.offsetTop;
    return ot;
}

function showCalendar(chnUrl,MnDt, MnMo, MnYr, MxDt, MxMo, MxYr) {
	channel_url=chnUrl;
	if ((MnDt!=null) && (MnMo!=null) && (MnYr!=null)) {
        IsUsingMinMax = true;
        minDate.setDate(MnDt);
        minDate.setMonth(MnMo-1);
        minDate.setFullYear(MnYr);
    }
	if ((MxDt!=null) && (MxMo!=null) && (MxYr!=null)) {
        IsUsingMinMax = true;
        maxDate.setDate(MxDt);
        maxDate.setMonth(MxMo-1);
        maxDate.setFullYear(MxYr);
    }
    domlay('calendar',1,ppcX,ppcY,Calendar(todayDate.getMonth(),todayDate.getFullYear()));  
}


function calClick() {
        window.focus();
}

function domlay(id,trigger,lax,lay,content) {
	document.getElementById(id).innerHTML=content;
}

function Calendar(whatMonth,whatYear) {
    var output = '';
    var datecolwidth;
    var startMonth;
    var startYear;
    startMonth=whatMonth;
    startYear=whatYear;

    curDate.setMonth(whatMonth);
    curDate.setFullYear(whatYear);
    curDate.setDate(todayDate.getDate());

	output += '<form name="Cal" style="margin:0px; padding:0px;" id="cale"><div id="month_selector"><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>';
    output += '<td width="16"></td><td  style="font-size:14px;">新闻回顾</td>';
   
	output +='<td align="center" width="50" ><select name="cboYear" onChange="changeYear();" style="font-size: 9px; font-family:verdana; border: #e1e1e1 1px solid;">';

    for (year=minYearList; year<maxYearList; year++) {
        if (year == whatYear) output += '<OPTION VALUE="' + year + '" SELECTED>' + year + '<\/OPTION>';
        else              output += '<OPTION VALUE="' + year + '">'          + year + '<\/OPTION>';
    }

	output += '<\/SELECT><\/td><td align="center"   width="25" valign="bottom">年<\/td>';
	 output += '<td align="center"  width="60"><select name="cboMonth" onChange="changeMonth();" style="font-size: 9px; font-family:\'verdana\'; border: #e1e1e1 1px solid;vertical-align:middle;">';
    for (month=0; month<12; month++) {
        if (month == whatMonth)
        	output += '<OPTION VALUE="' + month + '" SELECTED>' + names[month] + '<\/OPTION>';
        else
        	output += '<OPTION VALUE="' + month + '">'          + names[month] + '<\/OPTION>';
    }

	output += '<\/select><\/td>';
	output +='<td align="left" width="25" valign="bottom">月<\/td>';
	output +='<\/tr><\/table><\/div>';
	
    firstDay = new Date(whatYear,whatMonth,1);
    startDay = firstDay.getDay();

    if (((whatYear % 4 == 0) && (whatYear % 100 != 0)) || (whatYear % 400 == 0))
         days[1] = 29;
    else
         days[1] = 28;

    output += '<div id="cal_body"><table border="0" cellspacing="0" cellpadding="1" id="cal_table"   style="background:url(http://img.phoenixtv.com/tres/pub_res/calendar/review_new.gif) 0 20 no-repeat;"><tr style="background-color:#ddd">';

    for (i=0; i<7; i++) {
		output += '<td class="top_td">'+ dow[i] +'<\/td>';
    }
    output += '<\/tr><tr class="tr_white" >';
//alert(output);
    var column = 0;
    var lastMonth = whatMonth - 1;
    var lastYear = whatYear;
    if (lastMonth == -1) { lastMonth = 11; lastYear=lastYear-1;}

    for (i=0; i<startDay; i++, column++) {
        output += getDayLink((days[lastMonth]-startDay+i+1),true,lastMonth,lastYear);
    }

    for (i=1; i<=days[whatMonth]; i++, column++) {
        output += getDayLink(i,false,whatMonth,whatYear);
        if (column == 6) {
            output += '<\/tr><tr class="tr_white" valign="bottom">';
            column = -1;
        }
    }
    
    var nextMonth = whatMonth+1;
    var nextYear = whatYear;
    if (nextMonth==12) { nextMonth=0; nextYear=nextYear+1;}
    
    if (column > 0) {
        for (i=1; column<7; i++, column++) {
            output +=  getDayLink(i,true,nextMonth,nextYear);
        }
        output += '<\/tr><\/table>';
    }
    else {
        output = output.substr(0,output.length-37); // remove the <tr> from the end if there's no last row
        output += '<\/table></div>';
    }
    
	output += '<\/form>';

    curDate.setDate(1);
    curDate.setMonth(startMonth);
    curDate.setFullYear(startYear);
    return output;
}

function getDayLink(linkDay,isGreyDate,linkMonth,linkYear) {
    var templink;
    if (!(IsUsingMinMax)) {
        if (isGreyDate) {
            templink='<td align="center" class="cal-GreyDate">' + linkDay + '<\/td>';
        }
        else {
            if (isDayToday(linkDay)) {
                templink='<td align="center" class="cal-DayCell">' + '<a class="cal-TodayLink" onmouseover="self.status=\' \';return true" href="javascript:changeDay(' + linkDay + ');">' + linkDay + '<\/a>' +'<\/td>';
            }
            else {
                templink='<td align="center" class="cal-DayCell">' + '<a class="cal-DayLink" onmouseover="self.status=\' \';return true" href="javascript:changeDay(' + linkDay + ');">' + linkDay + '<\/a>' +'<\/td>';
            }
        }
    }
    else {
        if (isDayValid(linkDay,linkMonth,linkYear)) {

            if (isGreyDate){
                templink='<td align="center" class="cal-GreyDate">' + linkDay + '<\/td>';
            }
            else {
                if (isDayToday(linkDay)) {
                    templink='<td align="center" class="cal-DayCell">' + '<a class="cal-TodayLink">' + linkDay + '<\/a>' +'<\/td>';
                }
                else {
                    templink='<td align="center" class="cal-DayCell">' + '<a class="cal-DayLink" onmouseover="self.status=\' \';return true" href="javascript:changeDay(' + linkDay + ');">' + linkDay + '<\/a>' +'<\/td>';
                }
            }
        }
        else {
            templink='<td align="center" class="cal-GreyInvalidDate">'+ linkDay + '<\/td>';
        }
    }
    return templink;
}

function isDayToday(isDay) {
    if ((curDate.getFullYear() == todayDate.getFullYear()) && (curDate.getMonth() == todayDate.getMonth()) && (isDay == todayDate.getDate())) {
        return true;
    }
    else {
        return false;
    }
}

function isDayValid(validDay, validMonth, validYear){
    
    curDate.setDate(validDay);
    curDate.setMonth(validMonth);
    curDate.setFullYear(validYear);
    
    if ((curDate>=minDate) && (curDate<=maxDate)) {
        return true;
    }
    else {
        return false;
    }
}

function padout(number) { return (number < 10) ? '0' + number : number; }

function clearDay() {
    eval('document.' + calfrmName + '.' + curDateBox + '.value = \'\'');
    hideCalendar();
    if (FuncsToRun!=null)
        eval(FuncsToRun); 
}
//修改连接样式
function changeDay(whatDay) {
    curDate.setDate(whatDay);
	window.open(channel_url+ curDate.getFullYear() + names[curDate.getMonth()] + '/' +  padout(curDate.getDate()) + ".html");
	if (FuncsToRun!=null)
        eval(FuncsToRun); 
}

function changeMonth() {

    if (ppcIE) {        
        curDate.setMonth(document.forms["Cal"].cboMonth.options[document.forms["Cal"].cboMonth.selectedIndex].value);
        domlay('calendar',1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
    else if (ppcNN) {

        curDate.setMonth(document.calendar.document.forms["Cal"].cboMonth.options[document.calendar.document.forms["Cal"].cboMonth.selectedIndex].value);
        domlay('calendar',1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }

}

function changeYear() {
    if (ppcIE) {

        curDate.setFullYear(document.forms["Cal"].cboYear.options[document.forms["Cal"].cboYear.selectedIndex].value);
        domlay('calendar',1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));


    }
    else if (ppcNN) {

        curDate.setFullYear(document.calendar.document.forms["Cal"].cboYear.options[document.calendar.document.forms["Cal"].cboYear.selectedIndex].value);
        domlay('calendar',1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }

}

function makeArray0() {
    for (i = 0; i<makeArray0.arguments.length; i++)
        this[i] = makeArray0.arguments[i];
}

var names     = new makeArray0('01','02','03','04','05','06','07','08','09','10','11','12');
var days      = new makeArray0(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
//var dow       = new makeArray0('S','M','T','W','T','F','S');
var dow       = new makeArray0('日','一','二','三','四','五','六');
