
function createDate(form, yy, mm, dd, yyBefore, yyAfter){
	yyBefore = yyBefore || 70;
	yyAfter  = yyAfter  || 0;
	var currentYear = new Date().getYear();
	currentYear += currentYear < 1000 ? 1900 : 0;	
	var yymin = currentYear - yyBefore;
	var yymax = currentYear + yyAfter;
	makeDate(form, yy, mm, dd, yymax, yymin, false);
}

function buildDate(form, yy, mm, dd, currentYear, yyBefore, yyAfter, bynow){
	yyBefore = yyBefore || 70;
	yyAfter  = yyAfter  || 0;		
	bynow = bynow || false; 
	if(!currentYear) { 
		currentYear = new Date().getYear();
		currentYear += currentYear < 1000 ? 1900 : 0;
	}
	var yymin = currentYear - yyBefore;
	var yymax = currentYear + yyAfter;
	makeDate(form, yy, mm, dd, yymax, yymin, bynow);
}

function makeDate(form, yy, mm, dd, yyfr, yyto, bynow){
	form = document.forms[form] || form;
	yy = form[yy] || yy;
	mm = form[mm] || mm;
	dd = form[dd] || dd;
	createValList(yy, yyfr, yyto);
	createValList(mm, 1, 12);
	createValList(dd, 1, 31);
	if (bynow) { yy.options[0].text = '现在'; }
}

function createValList(list, minVal, maxVal) {
	if (!list) return;
	for (var i = list.length - 1; i >= 0; i--)
		list.options[i] = null;
	list.options[0] = new Option('', '', true, true);
	var step = minVal < maxVal ? 1 : -1;
	var txt = '';
	for (var j = minVal; j != maxVal + step; j += step){
		txt = j < 10 ? ('0' + j) : j;
		list.options[list.length] = new Option(txt, j);
	}
}

function setYMD(form, ylst, mlst, dlst) {
	form = document.forms[form] || form;
	ylst = form[ylst] || ylst;
	mlst = form[mlst] || mlst;
	dlst = form[dlst] || dlst;
	var yy = ylst.options[ylst.selectedIndex].value;
	var mm = mlst.options[mlst.selectedIndex].value;
	var dd = dlst.options[dlst.selectedIndex].value;
	var maxdd = getDays(yy, mm);
	createValList(dlst, 1, maxdd);
	if (dd>0 && dd <= maxdd){
		dlst.value = dd;
	}
}

function getDays(yy, mm) {
	var dd = 30;
	if (mm == 2) {
		dd = (yy % 400 == 0 || yy % 100 != 0 && yy % 4 == 0) ? 29: 28;
	} else if (mm <= 7 && mm % 2 == 1 || mm > 7 && mm % 2 == 0) {
		dd = 31;
	}
	return dd;
}

function isValiDate(yy, mm, dd) {
   	if (! /^\d+$/.test("" + yy + mm + dd)) { 
		return false;
   	}
   	if (yy < 0 || mm < 1 || mm > 12 || dd < 1 || dd > 31) {
      	return false;
	}
	return dd <= getDays(yy, mm);
}
