

/* MarcGrabanski.com */

/* Pop-Up Calendar Built from Scratch by Marc Grabanski */

var popUpCal = {
    selectedMonth: new Date().getMonth(), // 0-11
    selectedYear: new Date().getFullYear(), // 4-digit year
    selectedDay: new Date().getDate(),
    calendarId: 'eventCalendar',
    calendarDaySel: 'eventCalendarDaySel',
    inputClass: 'eventCalendar',
	Day_arr:new Array(4,6,9,12),

	init: function () {
		  popUpCal.drawCalendar(this);
        //var x = getElementsByClass(popUpCal.inputClass, document, 'input');
        //var y = document.getElementById(popUpCal.calendarId);
        // set the calendar position based on the input position

    },

    drawCalendar: function (inputObj) {
		//alert('ok');
		var html = '';
		var daySelHtml = '';
		daySelHtml += '<ul>';
    	daySelHtml += '<li id="prevMonth"><a><img src="../images/archive/icon_arrow_l_left.gif"/></a></li>';
		daySelHtml += '<li class="calendarHeader"><p>'+getYearNumImg(popUpCal.selectedYear)+'</p></li>';
		daySelHtml += '<li class="calendarHeader"><p>'+getMonthName(popUpCal.selectedMonth)+'</p></li>';
		daySelHtml += '<li id="nextMonth"><a><img src="../images/archive/icon_arrow_l_right.gif"/></a></li>';
		daySelHtml += '</ul>';
        var daysInMonth = getDaysInMonth(popUpCal.selectedYear, popUpCal.selectedMonth);
        var startDay = getFirstDayofMonth(popUpCal.selectedYear, popUpCal.selectedMonth);
        var numRows = 0;
        var printDate = 1;

		///alert(startDay);
		//alert(daysInMonth);
		//alert((startDay+1)+(daysInMonth));

		//起始日为星期天
        if (startDay == 6) {
            numRows = Math.ceil(((startDay+1)+(daysInMonth))/7)-1; // calculate the number of rows to generate
            var noPrintDays = 0; // if sunday print right away	 // calculate number of days before calendar starts
        }else{
            numRows = Math.ceil(((startDay+1)+(daysInMonth))/7); // calculate the number of rows to generate
            var noPrintDays = startDay + 1;  // calculate number of days before calendar starts
		}
		//alert(numRows);
		var today = new Date().getDate();
		var thisMonth = new Date().getMonth();
		var thisYear = new Date().getFullYear();
        // create calendar rows
		var j =1 ;
        html += '<table><tbody>'

        for (var e=0; e<numRows; e++) {
			html += '<tr class="weekDaysRow">';
            // create calendar days
            for (var f=0; f<7; f++) {
				//alert(e);
				if ( (printDate == today)
					 && (popUpCal.selectedYear == thisYear)
					 && (popUpCal.selectedMonth == thisMonth)
					 && (noPrintDays == 0)) {
					html += '<td id="today" class="weekDaysCell">';
				} else {
                	html += '<td class="weekDaysCell">';
				}
                if (noPrintDays == 0) {
					if (printDate <= daysInMonth) {
						if ( (printDate == today)
							 && (popUpCal.selectedYear == thisYear)
							 && (popUpCal.selectedMonth == thisMonth)
							 && (noPrintDays == 0)) {
							html += '<p id="day_'+j+'"><span class="d">'+setCurDateNumImgNow(printDate)+'</span></p>';
						}else{
							html += '<p id="day_'+j+'"><span class="d">'+setDateNumImg(printDate)+'</span></p>';
						}
						//alert(printDate);
						j++;
					}
                    printDate++;
                }
                html += '</td>';
                if(noPrintDays > 0) noPrintDays--;

            }
            html += '</tr>';

        }
        html += '</tbody></table>'

        // add calendar to element to calendar Div
        var calendarDiv = document.getElementById(popUpCal.calendarId);
        var calendarDaySelCon = document.getElementById(popUpCal.calendarDaySel);
		if(calendarDiv!='null' && calendarDiv!=undefined && calendarDiv!=''){
        calendarDiv.innerHTML = html;
        calendarDaySelCon.innerHTML = daySelHtml;
		}

		popUpCal.send_load();
		/*
        // close button link
        document.getElementById('closeCalender').onclick = function () {
            calendarDiv.style.display = 'none';
        }
		*/
		// setup next and previous links
        document.getElementById('prevMonth').onclick = function () {
            popUpCal.selectedMonth--;
            if (popUpCal.selectedMonth < 0) {
                popUpCal.selectedMonth = 11;
                popUpCal.selectedYear--;
            }
            //popUpCal.send_load();
            popUpCal.drawCalendar(inputObj);
            //popUpCal.setupLinks(inputObj);
        }
        document.getElementById('nextMonth').onclick = function () {
            popUpCal.selectedMonth++;
            if (popUpCal.selectedMonth > 11) {
                popUpCal.selectedMonth = 0;
                popUpCal.selectedYear++;
            }
            popUpCal.drawCalendar(inputObj);
        }

    }, // end drawCalendar function

	send_load:function(){
		//alert('send');
		var para = "getDateCam";
		var sUrl = window.location.href;
		var re = sUrl.indexOf("mediaShow.php");
		var reL = sUrl.indexOf("mediaList.php");
		if(re>0 || reL>0) para = "media";

		var jsonRequest = new Request.JSON({
			url: "../tempdata/getdate.php",
			onComplete: function(data){
				popUpCal.Day_arr = data;
				if( popUpCal.Day_arr ){
					for( i=0; i < popUpCal.Day_arr.length ; i++ ){
						var sDay;//起始天数
						var eDay;//结束天数
						//当月第一天
						var nfDdate = popUpCal.selectedYear+"/"+(popUpCal.selectedMonth+1)+"/"+'01';
						//当月最后天
						var nlDdate = popUpCal.selectedYear+"/"+(popUpCal.selectedMonth+1)+"/"+getLastDay(popUpCal.selectedYear,(popUpCal.selectedMonth+1));

						//如果当月第一天比开始日期晚 就用当月第一天
						if(compareDate(nfDdate,popUpCal.Day_arr[i]['bDate'])){
							sDay = getSDay(nfDdate);
						}else{

							if(getSMonth(popUpCal.Day_arr[i]['bDate'])==popUpCal.selectedMonth){
								sDay = getSDay(popUpCal.Day_arr[i]['bDate']);
							}else{
								continue;
							}
						}

						//如果当月最后天比开始日期早 就用当月最后天
						if(compareDate(popUpCal.Day_arr[i]['eDate'],nlDdate)){
							eDay = getSDay(nlDdate);
						}else{
							if(getSMonth(popUpCal.Day_arr[i]['eDate'])==popUpCal.selectedMonth){
								eDay = getSDay(popUpCal.Day_arr[i]['eDate']);
							}else{
								continue;
							}
						}



						for(var k = sDay;k<=eDay;k++){
							//这天没有活动的情况下新增一条
							if($('day_'+k).get('class') != 'today'){
								$('day_'+k).set({'class':'today'});
								if($('day_'+k).getParent('.weekDaysCell').get('id')!='today'){
									$('day_'+k).getChildren('.d').set({'html':'<span class="d">' + setCurDateNumImg(k) + '</span>'});
								}

								var stmpImg = setEventTypeImg(1);
								var stmpHtml = '<a target="_blank" href="'+popUpCal.Day_arr[i]['url']+'">'+stmpImg+'</a>';

								var newElementVar1 = new Element('span', {'class':'l','html':stmpHtml});
								newElementVar1.inject($('day_'+k),'bottom');
							//这天有活动的情况下追加一条
							}else{
								var sdayobj = $('day_'+k).getChildren('.l');
								var tmpdayobj = $('day_'+k).getChildren('.l').getChildren('a')+"";
								var tmpDSize = tmpdayobj.split(',');
								if(tmpDSize.length != 3){
									var sdayobjhtml = sdayobj.get('html');

									var stmpImg = setEventTypeImg(tmpDSize.length+1);
									var stmpHtml = '<a target="_blank" href="'+popUpCal.Day_arr[i]['url']+'">'+stmpImg+'</a>';
									sdayobj.set({'html':sdayobjhtml+stmpHtml})
								}
							}

						}
						//alert(getgMonthLastDay(nlDdate));
						//$('day_'+popUpCal.Day_arr[i]['date']).set({'class':'today','html':setEventRes(i,popUpCal.Day_arr,popUpCal.Day_arr[i]['date'])});
					}
				}
			}
		}).post({'cmd': para, 'date':popUpCal.selectedYear+'-'+(popUpCal.selectedMonth+1)});
	}, //end ajax

    setupLinks: function (inputObj) {
        // set up link events on calendar table
        var y = document.getElementById('calendar');
        var x = y.getElementsByTagName('a');
        for (var i=0; i<x.length; i++) {
            x[i].onmouseover = function () {
                this.parentNode.className = 'weekDaysCellOver';
            }
            x[i].onmouseout = function () {
                this.parentNode.className = 'weekDaysCell';
            }
            x[i].onclick = function () {
                document.getElementById(popUpCal.calendarId).style.display = 'none';
                popUpCal.selectedDay = this.innerHTML;
                inputObj.value = formatDate(popUpCal.selectedDay, popUpCal.selectedMonth, popUpCal.selectedYear);
            }
        }
    }

}
/* Functions Dealing with Dates */

function formatDate(Day, Month, Year) {
    Month++; // adjust javascript month
    if (Month <10) Month = '0'+Month; // add a zero if less than 10
    if (Day < 10) Day = '0'+Day; // add a zero if less than 10
    var dateString = Month+'/'+Day+'/'+Year;
    return dateString;
}

//odd 2010.11.30
/*
function setEventRes(v)
{
	var resHtml = '<span class="d">' + setCurDateNumImg(v['date']) + '</span>';
	for(var z = 0; z < v['links'].length; z++)
	{
		resHtml += '<span class="l"><a href="'+v['links'][z]['url']+'">'+setEventTypeImg(v['links'][z]['type'])+'</a></span>';
	}
	return resHtml;
}
*/

/** 2010.12.17
function setEventRes(i,v,d)
{
	//alert(v.length);
	var resHtml = '<span class="d">' + setCurDateNumImg(v[i]['date']) + '</span>';
	var si = 1;
	for(var z = 0; z < v.length; z++){
		if(v[z]['date'] == d){
			if(si >3){
				break;
			}
			resHtml += '<span class="l"><a href="'+v[z]['links'][0]['url']+'" target="_blank">'+setEventTypeImg(v[z]['links'][0]['type'])+'</a></span>';
			si++;
		}else{
			continue;
		}
	}
	return resHtml;
}
**/


function setEventTypeImg(n)
{
	return '<img alt="event'+n+'" height="12" src="../images/archive/calendar/img_etype_'+n+'.gif"/>';
}
function setDateNumImg(n)
{
	return '<img alt="'+n+'" style="height:15px;" src="../images/archive/calendar/img_num_date_'+n+'.jpg"/>';
}
function setCurDateNumImg(n)
{
	return '<img alt="'+n+'" style="height:17px;" src="../images/archive/calendar/img_num_date_h_'+n+'.jpg"/>';
}

function setCurDateNumImgNow(n)
{
	return '<img alt="'+n+'" style="height:17px;" src="../images/archive/calendar/img_num_date_n_'+n+'.gif"/>';
}

function setYearNumImg(n)
{
	return '<img alt="'+n+'" src="../images/archive/calendar/img_num_year_'+parseInt(n)+'.jpg"/>';
}
function getYearNumImg(n)
{
	var yearStr = n + "";
	var yearImg = "";
	for(var i = 0; i < yearStr.length; i++)
	{
		yearImg += setYearNumImg(yearStr.slice(i,i+1));
	}
	return yearImg;
}
function setMonthNumImg(n)
{
	return '<img alt="'+n+'" src="../images/archive/calendar/img_num_month_'+n+'.jpg"/>';
}
function getMonthName(month) {
    var monthNames = new Array(
    	setMonthNumImg(0)+setMonthNumImg(1),
    	setMonthNumImg(0)+setMonthNumImg(2),
    	setMonthNumImg(0)+setMonthNumImg(3),
    	setMonthNumImg(0)+setMonthNumImg(4),
    	setMonthNumImg(0)+setMonthNumImg(5),
    	setMonthNumImg(0)+setMonthNumImg(6),
    	setMonthNumImg(0)+setMonthNumImg(7),
    	setMonthNumImg(0)+setMonthNumImg(8),
    	setMonthNumImg(0)+setMonthNumImg(9),
    	setMonthNumImg(1)+setMonthNumImg(0),
    	setMonthNumImg(1)+setMonthNumImg(1),
    	setMonthNumImg(1)+setMonthNumImg(2)
    );
    return monthNames[month];
}

function getDayName(day) {
    var dayNames = new Array('周一','周二','周三','周四','周五','周六','周日')
    return dayNames[day];
}

function getDaysInMonth(year, month) {
    return 32 - new Date(year, month, 32).getDate();
}

function getFirstDayofMonth(year, month) {
    var day;
    day = new Date(year, month, 0).getDay();
    return day;
}
function getCampaign(id){
}

function getLastDay(year,month){
	var new_year = year;
	var new_month = month++;
	if(month>12)
	{
	new_month -=12;
	new_year++;
	}
	var new_date = new Date(new_year,new_month,1);
	return (new Date(new_date.getTime()-1000*60*60*24)).getDate();
}

function compareDate(d1,d2){
	var dt1=new Date(d1);
	var dt2=new Date(d2);

	return dt1>dt2;
}

function getSDay(date){
	return new Date(date).getDate();
}
function getSMonth(date){
	return new Date(date).getMonth();
}


