var currentDate  = new Date();
var currentLunarDate = null;
var lunarMonth = [null, '正', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '腊'];
var lunarDay   = [null, '初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十',
						'十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十',
						'廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十'];

$(document).ready(function() {
	
	/*
	if (lunar_year == null) {
		$.ajax({type:'GET', async:true, url:'/Cache/lunar_year.js', dataType:'json', success:function(json) {lunar_year = json;}});
	}
	if (leap_month == null) {
		$.ajax({type:'GET', async:true, url:'/Cache/leap_month.js', dataType:'json', success:function(json) {leap_month = json;}});
	}
	if (lunar_date == null) {
		$.ajax({type:'GET', async:true, url:'/Cache/lunar_date.js', dataType:'json', success:function(json) {lunar_date = json;}});
	}
	*/

	$("#span_select_solar_year").click(function() {
		if ($("#div_select_solar_year").is(":hidden")) {
			switchSolarYear($("#span_select_solar_year").text());
			$("#div_select_solar_year").slideDown("normal");
			$("#div_select_solar_month").fadeOut();
			$("#div_select_solar_day").fadeOut();
		} else {
			$("#div_select_solar_year").slideUp("normal");
		}
	});

	$("#span_select_solar_month").click(function() {
		if ($("#div_select_solar_month").is(":hidden")) {
			showSolarMonth();
			$("#div_select_solar_month").slideDown("normal");
			$("#div_select_solar_year").fadeOut();
			$("#div_select_solar_day").fadeOut();
		} else {
			$("#div_select_solar_month").slideUp("normal");
		}
	});

	$("#span_select_solar_day").click(function() {
		if ($("#div_select_solar_day").is(":hidden")) {
			showSolarDay($("#span_select_solar_year").text(), $("#span_select_solar_month").text());
			$("#div_select_solar_day").slideDown("normal");
			$("#div_select_solar_year").fadeOut();
			$("#div_select_solar_month").fadeOut();
		} else {
			$("#div_select_solar_day").slideUp("normal");
		}
	});

	$("#search_lunar").click(function() {
		searchLunarDate();
	});

	$("#span_select_lunar_year").click(function () {
		if ($("#div_select_lunar_year").is(":hidden")) {
			currentLunarYear = getLunarYearNumber($(this).text());
			switchLunarYear(currentLunarYear);
			$("#div_select_lunar_year").slideDown("normal");
			$("#div_select_lunar_month").fadeOut();
			$("#div_select_lunar_day").fadeOut();
		} else {
			$("#div_select_lunar_year").slideUp("normal");
		}
	});

	$("#span_select_lunar_month").click(function () {
		if ($("#div_select_lunar_month").is(":hidden")) {
			currentLunarYear = getLunarYearNumber($("#span_select_lunar_year").text());
			showLunarMonth(currentLunarYear);
			$("#div_select_lunar_month").slideDown("normal");
			$("#div_select_lunar_year").fadeOut();
			$("#div_select_lunar_day").fadeOut();
		} else {
			$("#div_select_lunar_month").slideUp("normal");
		}
	});

	$("#span_select_lunar_day").click(function () {
		if ($("#div_select_lunar_day").is(":hidden")) {
			showLunarDay(currentLunarYear, currentLunarMonth, currentLeapMonth);
			$("#div_select_lunar_day").slideDown("normal");
			$("#div_select_lunar_year").fadeOut();
			$("#div_select_lunar_month").fadeOut();
		} else {
			$("#div_select_lunar_day").slideUp("normal");
		}
	});

	$("#search_solar").click(function() {
		searchSolarDate();
	});

	$("#copy_solar_lunar").click(function() {
		var _clipData = '\n' + $("#solar_td").text() + '\n' + $("#lunar_td").text() + '\n\n我是从农历114查到的：\n' + location.href;
		window.clipboardData.setData('text', _clipData);
		$("#copy_solar_lunar").attr('disabled', true);
		$("#copy_solar_lunar").val('复制成功');
		setTimeout(function(){$("#copy_solar_lunar").val('复制内容');$("#copy_solar_lunar").attr('disabled', false);}, 3000);
	});

	$("#copy_lunar_solar").click(function() {
		var _clipData = '\n' + $("#lunar_td").text() + '\n' + $("#solar_td").text() + '\n\n我是从农历114查到的：\n' + location.href;
		window.clipboardData.setData('text', _clipData);
		$("#copy_lunar_solar").attr('disabled', true);
		$("#copy_lunar_solar").val('复制成功');
		setTimeout(function(){$("#copy_lunar_solar").val('复制内容');$("#copy_lunar_solar").attr('disabled', false);}, 3000);
	});

	$("#copy_bazi").click(function() {

		var _clipData = '';
		$("#bazi td").each(function () {
			_clipData = _clipData + '\n' + $(this).text();
		});
		 _clipData = _clipData + '\n\n我是从农历114查到的：\n' + location.href;

		window.clipboardData.setData('text', _clipData);
		$("#copy_bazi").attr('disabled', true);
		$("#copy_bazi").val('复制成功');
		setTimeout(function(){$("#copy_bazi").val('复制内容');$("#copy_bazi").attr('disabled', false);}, 3000);
	});
});

/**
 * 计算2个日期之间相隔的天数
 *
 */
function dateDiff(startDate, endDate)
{
	var days  = 0;

	if (startDate == endDate) {
		return days;
	}

	var sDate  = startDate.split('-');
	var eDate  = endDate.split('-');

	var sYear  = parseInt(sDate[0]);
	var sMonth = parseInt(sDate[1]);
	var sDay   = parseInt(sDate[2]);
	var eYear  = parseInt(eDate[0]);
	var eMonth = parseInt(eDate[1]);
	var eDay   = parseInt(eDate[2]);

	for (var y = sYear; y <= eYear; y++) {
		if (y == eYear) {
			for (var m = 1; m <= eMonth; m++) {
				if (m == eMonth) {
					days = days + eDay - sDay;
				} else if (m >= sMonth) {
					days = days + getMonthDays(y, m);
				}
			}
		} else {
			days = days + ((leapYear(y)) ? 366 : 365);
		}
	}

	return days;
}


function getMonthDays(year, month)
{
    var ar = new Array();
    ar[1]  = 31;
    ar[2]  = (leapYear(year)) ? 29 : 28;
    ar[3]  = 31;
    ar[4]  = 30;
    ar[5]  = 31;
    ar[6]  = 30;
    ar[7]  = 31;
    ar[8]  = 31;
    ar[9]  = 30;
    ar[10]  = 31;
    ar[11] = 30;
    ar[12] = 31;

    return ar[month];
}

function leapYear(year)
{
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        return true;
    }

    return false;
}

function showObject(obj)
{
    /* 用来保存所有的属性名称和值 */
    var props;
    /* 开始遍历 */
    for (var p in obj) {
        /* 方法 */
        if (typeof(obj[p]) == 'function') {
			/* obj[p](); */
		} else if (typeof(obj[p]) == 'object') {
			/* obj[p](); */
        } else {
            /* p 为属性名称，obj[p]为对应属性的值 */
            props += p + "=" + obj[p] + "\t";
        }
    }

	return props;
}

function switchSolarYear(year)
{
	var startYear, endYear;

	if (year == '') {
		year = currentYear;
	}
	year = parseInt(year);

	if (year < 1980) {
		startYear = year - (year % 20);
		endYear   = startYear + 19;
	} else if (year > 2014) {
		startYear = year - (year - 2015) % 20;
		endYear   = startYear + 19;
	} else {
		startYear = 1980;
		endYear   = 2014;
	}

	showSolarYear(startYear, endYear);
}

function showSolarYear(startYear, endYear)
{
	var className = '';

	if (startYear < 1800) {
		startYear = 1800;
	} else if (startYear >= 2100) {
		startYear = 2095;
	}
	if (endYear > 2100) {
		endYear = 2100;
	} else if (endYear <= 1800) {
		endYear = 1819;
	}

	$("#div_select_solar_year_date").html(startYear+'-'+endYear);

	$("#ul_select_solar_year").empty();
	for (var i = startYear; i <= endYear; i++) {
		className = (i == currentYear) ? ' class="currentLi2"' : '';
		$("#ul_select_solar_year").append("<li"+className+" year='"+i+"'>"+i+"</li>");
	}

	bindSolarYear();
}

function bindSolarYear()
{
	/* 绑定年份事件 */
	$('#div_select_solar_year ul>li').bind({
		click: function() {
			currentYear = parseInt($(this).attr('year'));
			$("#span_select_solar_year").html(currentYear);
			$("#div_select_solar_month_date").html(currentYear+'年');
			showSolarMonth();
			$("#div_select_solar_year").slideUp("normal", function(){$("#div_select_solar_month").slideDown("normal");});
		},
		mouseover: function() {
			$(this).addClass('currentLi');
		},
		mouseout: function() {
			$(this).removeClass('currentLi');
		}
	});
}

function switchSolarMonth(number)
{
	number = parseInt(number);

	currentYear = currentYear * 1 + number;

	if (currentYear < 1800) {
		currentYear = 1800;
	} else if (currentYear > 2100) {
		currentYear = 2100;
	}

	$("#div_select_solar_month_date").html(currentYear+'年');
	$("#span_select_solar_year").html(currentYear);
}

function showSolarMonth()
{
	$("#ul_select_solar_month").empty();
	for (var i = 1; i <= 12; i++) {
		className = (i == currentMonth) ? ' class="currentLi2"' : '';
		$("#ul_select_solar_month").append("<li"+className+" month='"+i+"'>"+i+"月</li>");
	}

	bindSolarMonth();
}

function bindSolarMonth()
{
	/* 绑定月份事件 */
	$('#div_select_solar_month ul>li').bind({
		click: function() {
			currentMonth = parseInt($(this).attr('month'));
			$("#span_select_solar_month").html(currentMonth);
			$("#div_select_solar_day_date").html(currentYear + '年' + currentMonth + '月');
			showSolarDay(currentYear, currentMonth);
			$("#div_select_solar_month").slideUp("normal", function(){$("#div_select_solar_day").slideDown("normal");});
		},
		mouseover: function() {
			$(this).addClass('currentLi');
		},
		mouseout: function() {
			$(this).removeClass('currentLi');
		}
	});
}

function switchSolarDay(number)
{
	number = parseInt(number);

	currentMonth = currentMonth * 1 + number;
	if (currentMonth < 1) {
		currentYear--;
		currentMonth = 12;
	} else if (currentMonth > 12) {
		currentYear++;
		currentMonth = 1;
	}

	if (currentYear < 1800) {
		currentYear = 1800;
	} else if (currentYear > 2100) {
		currentYear = 2100;
	}

	$("#span_select_solar_year").html(currentYear);
	$("#span_select_solar_month").html(currentMonth);
	$("#div_select_solar_day_date").html(currentYear+'年'+currentMonth+'月');

	showSolarDay(currentYear, currentMonth);
}

function showSolarDay(year, month)
{
	year  = parseInt(year);
	month = parseInt(month);

	$("#ul_select_solar_day").empty();

	var w    = 3;/*1800-1-1是周三*/
	var diff = dateDiff('1800-1-1', year + '-' + month + '-1');
	var week = ((diff % 7) + w) % 7;
	for (var i = 1; i <= week; i++) {
		$("#ul_select_solar_day").append("<li style='cursor:auto' day='0'></li>");
	}

	var days = getMonthDays(year, month);
	for (var i = 1; i <= days; i++) {
		className = (i == currentDay) ? ' class="currentLi2"' : '';
		$("#ul_select_solar_day").append("<li"+className+" day='"+i+"'>"+i+"</li>");
	}

	bindSolarDay();
}

function bindSolarDay()
{
    /* 绑定日期事件 */
	$('#ul_select_solar_day li').bind({
		click: function() {
			currentDay = parseInt($(this).attr('day'));
			if (currentDay) {
				$(this).css('cursor', 'wait');
				// $("#div_select_solar_day").slideUp("normal");
				$("#span_select_solar_day").html(currentDay);
				searchLunarDate();
			}
		},
		mouseover: function() {
			if ($(this).text() != '') {
				$(this).addClass('currentLi');
			}
		},
		mouseout: function() {
			$(this).removeClass('currentLi');
		}
	});
}

function searchLunarDate()
{
	currentDate = currentYear+'-'+currentMonth+'-'+currentDay;
	location.href = siteUrl + 'gongli/'+currentDate+'.html';
}


function switchLunarYear(year)
{
	var startYear, endYear;

	if (year == '') {
		year = currentYear;
	}
	year = parseInt(year);

	if (year < 1980) {
		startYear = year - (year % 20);
		endYear   = startYear + 19;
	} else if (year > 2014) {
		startYear = year - (year - 2015) % 20;
		endYear   = startYear + 19;
	} else {
		startYear = 1980;
		endYear   = 2014;
	}

	showLunarYear(startYear, endYear);
}

function getLunarYearNumber(year)
{
	return year.match(/\d{4}/g);
}

function getLunarFullYear(year)
{
	/*
	if (lunar_year == null) {
		$.ajax({type:'GET', async:false, url:'/Cache/lunar_year.js', dataType:'json', success:function(json) {lunar_year = json;}});
	}
	*/

	return lunar_year[year % 1800] + '(' + year + ')';
}

function showLunarYear(startYear, endYear)
{
	var className = '';

	if (startYear < 1800) {
		startYear = 1800;
	} else if (startYear >= 2100) {
		startYear = 2095;
	}
	if (endYear > 2100) {
		endYear = 2100;
	} else if (endYear <= 1800) {
		endYear = 1819;
	}

	$("#div_select_lunar_year_date").html(getLunarFullYear(startYear)+'-'+getLunarFullYear(endYear));

	$("#ul_select_lunar_year").empty();
	for (var i = startYear; i <= endYear; i++) {
		className = (i == currentLunarYear) ? ' class="currentLi2"' : '';
		$("#ul_select_lunar_year").append("<li"+className+" year='"+i+"'>"+getLunarFullYear(i)+"</li>");
	}

	bindLunarYear();
}

function bindLunarYear()
{
	/* 绑定年份事件 */
	$('#div_select_lunar_year ul>li').bind({
		click: function() {
			currentLunarYear = parseInt($(this).attr('year'));
			$("#span_select_lunar_year").html(getLunarFullYear(currentLunarYear));
			showLunarMonth(currentLunarYear);
			$("#div_select_lunar_year").slideUp("normal", function(){$("#div_select_lunar_month").slideDown("normal");});
		},
		mouseover: function() {
			$(this).addClass('currentLi');
		},
		mouseout: function() {
			$(this).removeClass('currentLi');
		}
	});
}

function switchLunarMonth(number)
{
	number = parseInt(number);

	currentLunarYear = currentLunarYear * 1 + number;

	if (currentLunarYear < 1800) {
		currentLunarYear = 1800;
	} else if (currentLunarYear > 2100) {
		currentLunarYear = 2100;
	}

	$("#div_select_lunar_month_date").html(getLunarFullYear(currentLunarYear)+'年');
	$("#span_select_lunar_year").html(getLunarFullYear(currentLunarYear));

	showLunarMonth(currentLunarYear);
}

function getLunarLeapMonth(year)
{
	/*
	if (leap_month == null) {
		$.ajax({type:'GET', async:false, url:'/Cache/leap_month.js', dataType:'json', success:function(json) {leap_month = json;}});
	}
	*/

	return leap_month[year % 1800];
}

function showLunarMonth(year)
{
	var leapMonth = getLunarLeapMonth(year);

	$("#div_select_lunar_month_date").html(getLunarFullYear(year)+'年');

	$("#ul_select_lunar_month").empty();
	for (var i = 1; i <= 12; i++) {
		className = (i == currentLunarMonth && !currentLeapMonth) ? ' class="currentLi2"' : '';
		$("#ul_select_lunar_month").append("<li"+className+" month='"+i+"' leap='0'>"+lunarMonth[i]+"月</li>");

		if (i == leapMonth) {
			className = (i == currentLunarMonth && currentLeapMonth) ? ' class="currentLi2"' : '';
			$("#ul_select_lunar_month").append("<li"+className+" month='"+i+"' leap='1'>闰"+lunarMonth[i]+"月</li>");
		}
	}

	bindLunarMonth();
}

function getLunarFullMonth(month, leapMonth)
{
	if (leapMonth) {
		return '闰' + lunarMonth[month];
	} else {
		return lunarMonth[month];
	}
}

function bindLunarMonth()
{
	/* 绑定月份事件 */
	$('#div_select_lunar_month ul>li').bind({
		click: function() {
			currentLunarMonth = parseInt($(this).attr('month'));
			currentLeapMonth  = parseInt($(this).attr('leap'));
			$("#span_select_lunar_month").html(getLunarFullMonth(currentLunarMonth, currentLeapMonth));
			$("#div_select_lunar_day_date").html(getLunarFullYear(currentLunarYear) + '年' + getLunarFullMonth(currentLunarMonth, currentLeapMonth) + '月');
			showLunarDay(currentLunarYear, currentLunarMonth, currentLeapMonth);
			$("#div_select_lunar_month").slideUp("normal", function(){$("#div_select_lunar_day").slideDown("normal");});
		},
		mouseover: function() {
			$(this).addClass('currentLi');
		},
		mouseout: function() {
			$(this).removeClass('currentLi');
		}
	});
}

function switchLunarDay(number)
{
	var leapMonth = getLunarLeapMonth(currentLunarYear);
	currentLunarMonth = currentLunarMonth + parseInt(number);

	if (currentLeapMonth) {
		if (currentLunarMonth < leapMonth) {
			currentLunarMonth = leapMonth;
		}
		currentLeapMonth = 0;
	} else if (leapMonth) {
		if (number > 0 && currentLunarMonth == (leapMonth*1+1)) {
			currentLeapMonth = 1;
			currentLunarMonth--;
		} else if (number < 0 && currentLunarMonth == leapMonth) {
			currentLeapMonth = 1;
		}
	}

	if (currentLunarMonth < 1) {
		currentLunarYear--;
		currentLunarMonth = 12;
		var leapMonth = getLunarLeapMonth(currentLunarYear);
		if (leapMonth == currentLunarMonth) {
			currentLeapMonth = 1;
		}
	} else if (currentLunarMonth > 12) {
		currentLunarYear++;
		currentLunarMonth = 1;
	}

	if (currentLunarYear < 1800) {
		currentLunarYear = 1800;
	} else if (currentLunarYear > 2100) {
		currentLunarYear = 2100;
	}

	$("#span_select_lunar_year").html(getLunarFullYear(currentLunarYear));
	$("#span_select_lunar_month").html(getLunarFullMonth(currentLunarMonth, currentLeapMonth));
	$("#div_select_lunar_day_date").html(getLunarFullYear(currentLunarYear)+'年'+getLunarFullMonth(currentLunarMonth, currentLeapMonth)+'月');

	showLunarDay(currentLunarYear, currentLunarMonth, currentLeapMonth);
}

function showLunarDay(year, month, leapMonth)
{
	/*
	if (lunar_date == null) {
		$.ajax({type:'GET', async:false, url:'/Cache/lunar_date.js', dataType:'json', success:function(json) {lunar_date = json;}});
	}
	*/

	$("#ul_select_lunar_day").empty();

	if (leapMonth) { /* 闰月 */
		var days = (lunar_date[year % 1800][0][1])  ? 30 : 29; /* 农历月大30天月小29天 */
	} else {
		var days = (lunar_date[year % 1800][month]) ? 30 : 29; /* 农历月大30天月小29天 */
	}

	for (var i = 1; i <= days; i++) {
		className = (i == currentLunarDay) ? ' class="currentLi2"' : '';
		$("#ul_select_lunar_day").append("<li"+className+" day='"+i+"'>"+lunarDay[i]+"</li>");
	}

	bindLunarDay();
}

function bindLunarDay()
{
    /* 绑定日期事件 */
	$('#ul_select_lunar_day li').bind({
		click: function() {
			$(this).css('cursor', 'wait');
			currentLunarDay = parseInt($(this).attr('day'));
			$("#span_select_lunar_day").html(lunarDay[currentLunarDay]);
			// $("#div_select_lunar_day").slideUp("normal");
			searchSolarDate();
		},
		mouseover: function() {
			if ($(this).text() != '') {
				$(this).addClass('currentLi');
			}
		},
		mouseout: function() {
			$(this).removeClass('currentLi');
		}
	});
}

function searchSolarDate()
{
	currentLunarDate = currentLunarYear+'-'+currentLunarMonth+'-'+currentLunarDay;
	if (currentLeapMonth) {
		currentLunarDate = currentLunarDate+'-1';
	}

	location.href = siteUrl + 'nongli/'+currentLunarDate+'.html';
}

jQuery.fn.highlight = function(keyword , style) {
	this.each(function() {
		var children = this.childNodes;
		for (var i = 0; i < children.length; i++) {
			var child = children[i];
			if (child.nodeType == 3) {
			   var temp_value = child.nodeValue;
			   var index  = temp_value.indexOf(keyword);
			   if (index >= 0) {
					child.nodeValue = temp_value.substr(0 , index);
					$(child).after("<span class='" + style + "'>" + keyword + "</span>" + temp_value.substr(index + keyword.length));
					i += 1;
			   }
			} else {
				$(child).highlight(keyword , style);
			}
		}
	});
};

function switchGiftTable(key, count)
{
	var obj1, obj2;

	for (var i = 0; i < count; i++) {
		obj1 = document.getElementById('mm_li_' + i);
		obj2 = document.getElementById('mm_table_' + i);
		if (i == key) {
			obj1.className = 'here';
			obj2.style.display = 'block';
		} else {
			obj1.className = '';
			obj2.style.display = 'none';
		}
	}
}
