// 定义一个HashMap
function HashMap() {
	/** Map 大小 * */

	var size = 0;
	/** 对象 * */
	var entry = new Object();

	/** 存 * */
	this.put = function(key, value) {
		if (!this.containsKey(key)) {
			size++;
		}
		entry[key] = value;
	}

	/** 取 * */
	this.get = function(key) {
		return this.containsKey(key) ? entry[key] : null;
	}

	/** 删除 * */
	this.remove = function(key) {
		if (this.containsKey(key) && (delete entry[key])) {
			size--;
		}
	}

	/** 是否包含 Key * */
	this.containsKey = function(key) {
		return (key in entry);
	}

	/** 是否包含 Value * */
	this.containsValue = function(value) {
		for (var prop in entry) {
			if (entry[prop] == value) {
				return true;
			}
		}
		return false;
	}

	/** 所有 Value * */
	this.values = function() {
		var values = new Array();
		for (var prop in entry) {
			values.push(entry[prop]);
		}
		return values;
	}

	/** 所有 Key * */
	this.keys = function() {
		var keys = new Array();
		for (var prop in entry) {
			keys.push(prop);
		}
		return keys;
	}

	/** Map Size * */
	this.size = function() {
		return size;
	}

	/* 清空 */
	this.clear = function() {
		size = 0;
		entry = new Object();
	}
}

/**
 * 计算农历日期
 */
function nongli() {
	var lunarinfo = new Array(0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260,
			0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6,
			0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0,
			0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54,
			0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, 0x0d4a0, 0x0ea50,
			0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,
			0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0,
			0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0,
			0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6,
			0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950,
			0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4,
			0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, 0x049b0,
			0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60,
			0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58,
			0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0,
			0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,
			0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0,
			0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52,
			0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, 0x05aa0,
			0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250,
			0x0d520, 0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577,
			0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0);
	// ==== 传回农历 y年的总天数
	function lyeardays(y) {
		var i, sum = 348
		for (i = 0x8000; i > 0x8; i >>= 1)
			sum += (lunarinfo[y - 1900] & i) ? 1 : 0
		return (sum + leapdays(y))
	}
	// ==== 传回农历 y年闰月的天数
	function leapdays(y) {
		if (leapmonth(y))
			return ((lunarinfo[y - 1900] & 0x10000) ? 30 : 29)
		else
			return (0)
	}
	// ==== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
	function leapmonth(y) {
		return (lunarinfo[y - 1900] & 0xf)
	}
	// ====================================== 传回农历 y年m月的总天数
	function monthdays(y, m) {
		return ((lunarinfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
	}
	// ==== 算出农历, 传入日期物件, 传回农历日期物件
	// 该物件属性有 .year .month .day .isleap .yearcyl .daycyl .moncyl
	function lunar(objdate) {
		var i, leap = 0, temp = 0;
		var basedate = new Date(1900, 0, 31);
		var offset = (objdate - basedate) / 86400000;
		this.daycyl = offset + 40;
		this.moncyl = 14;
		for (i = 1900; i < 2050 && offset > 0; i++) {
			temp = lyeardays(i);
			offset -= temp;
			this.moncyl += 12;
		}
		if (offset < 0) {
			offset += temp;
			i--;
			this.moncyl -= 12;
		}
		this.year = i;
		this.yearcyl = i - 1864;
		leap = leapmonth(i); // 闰哪个月
		this.isleap = false
		for (i = 1; i < 13 && offset > 0; i++) {
			// 闰月
			if (leap > 0 && i == (leap + 1) && this.isleap == false) {
				--i;
				this.isleap = true;
				temp = leapdays(this.year);
			} else {
				temp = monthdays(this.year, i);
			}
			// 解除闰月
			if (this.isleap == true && i == (leap + 1))
				this.isleap = false
			offset -= temp
			if (this.isleap == false)
				this.moncyl++
		}
		if (offset == 0 && leap > 0 && i == leap + 1)
			if (this.isleap) {
				this.isleap = false;
			} else {
				this.isleap = true;
				--i;
				--this.moncyl;
			}
		if (offset < 0) {
			offset += temp;
			--i;
			--this.moncyl;
		}
		this.month = i
		this.day = offset + 1
	}
	function cday(m, d) {
		var nstr1 = new Array('日', '一', '二', '三', '四', '五', '六', '七', '八', '九',
				'十');
		var nstr2 = new Array('初', '十', '廿', '卅', '　');
		var s;
		if (m > 10) {
			s = '十' + nstr1[m - 10]
		} else {
			s = nstr1[m]
		}
		s += '月'
		if (s == "十二月")
			s = "腊月";
		if (s == "一月")
			s = "正月";
		switch (d) {
			case 10 :
				s += '初十';
				break;
			case 20 :
				s += '二十';
				break;
			case 30 :
				s += '三十';
				break;
			default :
				s += nstr2[Math.floor(d / 10)];
				s += nstr1[d % 10];
		}
		return (s);
	}
	function solarday() {
		var now = new Date()
		var sdobj = new Date(now.getFullYear(), now.getMonth(), now.getDate());
		var ldobj = new lunar(sdobj);
		var cl = '';
		// 农历bb’+(cld[d].isleap?’闰 ’:’ ’)+cld[d].lmonth+’ 月 ’+cld[d].lday+’ 日
		var tt = cday(ldobj.month, ldobj.day);
		// document.write(now.getFullYear()+"年"+(now.getMonth()+1)+"月"+now.getDate()+"日
		// 农历"+tt+"");
		// alert(now.getFullYear() + "年" + (now.getMonth() + 1) + "月"
		// + now.getDate() + "日 农历" + tt + "");
		return now.getFullYear() + "年" + (now.getMonth() + 1) + "月"
				+ now.getDate() + "日 农历" + tt + "";
	}
return solarday();
}

/**
 * 计算风力
 * 0 无风 0.0-0.2 静,烟直上 平静
 * 1 软风 0.3-1.5 烟示风向 微波峰无飞沫 
 * 2 轻风 1.6-3.3 感觉有风 小波峰未破碎 
 * 3 微风 3.4-5.4 旌旗展开 小波峰顶破裂 
 * 4 和风 5.5-7.9 吹起尘土 小浪白沫波峰 
 * 5 劲风 8.0-10.7 小树摇摆 中浪折沫峰群 
 * 6 强风 10.8-13.8 电线有声 大浪白沫离峰 
 * 7 疾风 13.9-17.1 步行困难 破峰白沫成条 
 * 8 大风 17.2-20.7 折毁树枝 浪长高有浪花 
 * 9 烈风 20.8-24.4 小损房屋 浪峰倒卷 
 * 10 狂风 24.5-28.4 拔起树木 海浪翻滚咆哮 
 * 11 暴风 28.5-32.6 损毁重大 波峰全呈飞沫 
 * 12 飓风 >32.6 摧毁极大 海浪滔天
 */

function fengli(sspeed)
{
	var fengli = 0;
	//0 级  无风 0.0-0.2 静,烟直上 平静
	if(sspeed>=0&&sspeed<=0.2)
	{
		fengli = 0
	}
	//1 级 软风 0.3-1.5 烟示风向 微波峰无飞沫 
	if(sspeed>=0.3&&sspeed<=1.5)
	{
		fengli = 1
	}
	//2 级 轻风 1.6-3.3 感觉有风 小波峰未破碎
	if(sspeed>=1.6&&sspeed<=3.3)
	{
		fengli = 2
	}
	//3 级 微风 3.4-5.4 旌旗展开 小波峰顶破裂
	if(sspeed>=3.4&&sspeed<=5.4)
	{
		fengli = 3
	}
	//4 级 和风 5.5-7.9 吹起尘土 小浪白沫波峰 
	if(sspeed>=5.5&&sspeed<=7.9)
	{
		fengli = 4
	}
	//5 级 劲风 8.0-10.7 小树摇摆 中浪折沫峰群
	if(sspeed>=8.0&&sspeed<=10.7)
	{
		fengli = 5
	}
	//6 级 强风 10.8-13.8 电线有声 大浪白沫离峰 
	if(sspeed>=10.8&&sspeed<=13.8)
	{
		fengli = 6
	}
	//7 级 疾风 13.9-17.1 步行困难 破峰白沫成条 
	if(sspeed>=13.9&&sspeed<=17.1)
	{
		fengli = 7
	}
	//8 级 大风 17.2-20.7 折毁树枝 浪长高有浪花
	if(sspeed>=17.2&&sspeed<=20.7)
	{
		fengli = 8
	} 
	//9 级 烈风 20.8-24.4 小损房屋 浪峰倒卷 
	if(sspeed>=20.8&&sspeed<=24.4)
	{
		fengli = 9
	}
	//10 级 狂风 24.5-28.4 拔起树木 海浪翻滚咆哮 
	if(sspeed>=24.5&&sspeed<=28.4)
	{
		fengli = 10
	}
	//11 级 暴风 28.5-32.6 损毁重大 波峰全呈飞沫 
	if(sspeed>=28.5&&sspeed<=32.6)
	{
		fengli = 11
	}
	//12 级 飓风 >32.6 摧毁极大 海浪滔天
	if(sspeed>32.6)
	{
		fengli = 12
	}
	
	return fengli;
		
}

/**
 * 计算风向
 */
function fengxiang(degree){
		var n = degree / 22.5;
		var fxStr = '北';

		if (n > 0 && n <= 1) {
			fxStr = '北';
		} else if (n > 1 && n <= 3) {
			fxStr = '东北';
		} else if (n > 3 && n <= 5) {
			fxStr = '东';
		} else if (n > 5 && n <= 7) {
			fxStr = '东南';
		} else if (n > 7 && n <= 9) {
			fxStr = '南';
		} else if (n > 9 && n <= 11) {
			fxStr = '西南';
		} else if (n > 11 && n <= 13) {
			fxStr = '西';
		} else if (n > 13 && n <= 15) {
			fxStr = '西北';
		} else if (n > 15 && n <= 16) {
			fxStr = '北';
		}
		return fxStr;
		
}


