﻿

/* 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;
        if (startDay != 7) {
            numRows = Math.ceil(((startDay+1)+(daysInMonth))/7); // calculate the number of rows to generate
        }
		
        // calculate number of days before calendar starts
        if (startDay != 7) {
            var noPrintDays = startDay + 1; 
        } else {
            var noPrintDays = 0; // if sunday print right away	
        }
		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++) {
				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) {
						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++ )
				{
					$('day_'+popUpCal.Day_arr[i]['date']).set({'class':'today','html':setEventRes(popUpCal.Day_arr[i])});
				}
			}
		}}).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;
}

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;
}
function setEventTypeImg(n)
{
	return '<img alt="event'+n+'" width="15" height="28" src="../images/archive/calendar/img_etype_'+n+'.png"/>';
}
function setDateNumImg(n)
{
	return '<img alt="'+n+'" src="../images/archive/calendar/img_num_date_'+n+'.jpg"/>';
}
function setCurDateNumImg(n)
{
	return '<img alt="'+n+'" src="../images/archive/calendar/img_num_date_h_'+n+'.jpg"/>';
}
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){
}

