//生肖名称
var zodiac_name_list = {
1 :'鼠',
2 :'牛',
3 :'虎',
4 :'兔',
5 :'龙',
6 :'蛇',
7 :'马',
8 :'羊',
9 :'猴',
10:'鸡',
11:'狗',
12:'猪'};

//春节
var spring_festival_md_list = {
1930:130,
1931:217,
1932:206,
1933:126,
1934:214,
1935:204,
1936:124,
1937:211,
1938:131,
1939:219,
1940:208,
1941:127,
1942:215,
1943:205,
1944:125,
1945:213,
1946:202,
1947:122,
1948:210,
1949:129,
1950:217,
1951:206,
1952:127,
1953:214,
1954:203,
1955:124,
1956:212,
1957:131,
1958:218,
1959:208,
1960:128,
1961:215,
1962:205,
1963:125,
1964:213,
1965:202,
1966:121,
1967:209,
1968:130,
1969:217,
1970:206,
1971:127,
1972:215,
1973:203,
1974:123,
1975:211,
1976:131,
1977:218,
1978:207,
1979:128,
1980:216,
1981:205,
1982:125,
1983:213,
1984:202,
1985:220,
1986:209,
1987:129,
1988:217,
1989:206,
1990:127,
1991:215,
1992:204,
1993:123,
1994:210,
1995:131,
1996:219,
1997:207,
1998:128,
1999:216,
2000:205,
2001:124,
2002:212,
2003:201,
2004:122,
2005:209,
2006:129,
2007:218,
2008:207,
2009:126,
2010:214,
2011:203,
2012:123,
2013:210,
2014:131,
2015:219};

//春节Date对象列表
function get_spring_festival_list()
{
	var spring_festival_list=[], m, d;
	for(var y in spring_festival_md_list){
		m = Math.floor(spring_festival_md_list[y]/100);
		d = Math.floor(spring_festival_md_list[y]%100);
		spring_festival_list.push(new Date(y, m-1, d));
	}
	return spring_festival_list;
}

//农历年对应的生肖
function get_zodiac_by_lunar_year(year)
{
	var zodiac = (year-3)%12;
	return zodiac==0?12:zodiac;
}

//通过年龄界限得到生日界限
function get_birthday_limit_from_age(min_age, max_age)
{
	min_age = min_age<18 ? 18 : min_age;
	min_age = min_age>99 ? 99 : min_age;
	max_age = max_age<18 ? 18 : max_age;
	max_age = max_age>99 ? 99 : max_age;
	if(min_age > max_age){
		var temp=min_age; min_age=max_age; max_age=temp;
	}
	var now=new Date, start_date, end_date;
	start_date = new Date(now.getFullYear()-max_age-1, now.getMonth(), now.getDate());
	end_date = new Date(now.getFullYear()-min_age, now.getMonth(), now.getDate()+1);
	return {'start':start_date, 'end':end_date};
}

//得到年龄界限内的生肖列表
function get_zodiac_list_from_age(min_age, max_age)
{
	var dateLimit = get_birthday_limit_from_age(min_age, max_age);
	var spring_list = get_spring_festival_list();
	var zodiac_list=[], count=0, year;
	for(var i in spring_list){
		if(spring_list[i]<dateLimit['start']){ continue; }
		if(spring_list[i]>dateLimit['end']){ break; }
		if(spring_list[i]==dateLimit['start']){
			zodiac_list.push(get_zodiac_by_lunar_year(spring_list[i].getFullYear()));
			count++;
		}else if(i>0 && spring_list[i-1]<dateLimit['start']){
			year = spring_list[i].getFullYear();
			zodiac_list.push(get_zodiac_by_lunar_year(year-1));
			zodiac_list.push(get_zodiac_by_lunar_year(year));
			count+=2;
		}else{
			zodiac_list.push(get_zodiac_by_lunar_year(spring_list[i].getFullYear()));
			count++;
		}
		if(count>=12) break;
	}
	if(count<12 && spring_list[i+1]>dateLimit['end']){
		zodiac_list.push(get_zodiac_by_lunar_year(spring_list[i+1].getFullYear()));
	}
	return zodiac_list;
}

//通过生日Date对象得到出生的农历年
function get_lunar_year_by_birthday(birthday)
{
	var spring_list = get_spring_festival_list();
	for(var i in spring_list){
		if(birthday<spring_list[i]){
			return spring_list[i].getFullYear()-1;
		}
	}
	return false;
}

