//var $id;
//$id || 

function $id(s){
   if(document.getElementById){return eval('document.getElementById("' + s + '")');}
   else{return eval('document.all.' + s);}
}  


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,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b6a0,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,
0x14b63);


//====================================== 返回農曆 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,Calendar,LeapMonth
//EX: if (checkDate({"Year":"_iYear","Month":"_iMonth","Day":"_iDay","Calendar":"_Calendar","LeapMonth":"_LeapMonth"})){alert('日期選擇錯誤!請重新選擇~');return false;}
function checkDate(iInputField){
 	   var ret = true;
		 var tCalendar,tLeapMonth,tYear,tMonth,tDay;
		 tYear      = parseInt($id('' + iInputField["Year"]).options[$id('' + iInputField["Year"]).selectedIndex].value,10);
		 tMonth     = parseInt($id('' + iInputField["Month"]).options[$id('' + iInputField["Month"]).selectedIndex].value,10);
		 tDay       = parseInt($id('' + iInputField["Day"]).options[$id('' + iInputField["Day"]).selectedIndex].value,10);
		 tCalendar  = parseInt((iInputField["Calendar"])?($id('' + iInputField["Calendar"]).options[$id('' + iInputField["Calendar"]).selectedIndex].value):1);
     tLeapMonth = parseInt((iInputField["LeapMonth"])?($id('' + iInputField["LeapMonth"]).options[$id('' + iInputField["LeapMonth"]).selectedIndex].value):0);
     
     //alert(''+tYear+tMonth+tDay+tCalendar+tLeapMonth);     
     if (tCalendar == 1){//陽曆
     	   
     	   var MaxDay = ((tMonth == 2)?(((tYear%4 == 0) && (tYear%100 != 0) || (tYear%400 == 0)) ? 29 : 28 ):((tMonth == 1 || tMonth == 3 || tMonth == 5 || tMonth == 7 || tMonth == 8 || tMonth == 10 || tMonth == 12)? 31 : 30 )); 
     	   //alert(MaxDay);
     	   if (tDay > MaxDay){
     	   	 ret = false;
     	   	 //alert(iInputField['ERR_MSG']);     	   	 
     	   }
     }else if((tLeapMonth == 0) && (tDay < 30)){//陰曆非閏月,日期小於30
     }else{ //陰曆閏月或日期大於29    
         if (tLeapMonth == 1){
         	  var _lM = leapMonth(tYear);
         	  if (_lM != tMonth){
         	  	 ret = false;
         	  	 //alert(iInputField['ERR_MSG']); 
         	  }else{
         	  	 var _lMDays = leapDays(tYear);
         	  	 if (_lMDays < tDay){ret = false;}
         	  }
         }else{
         	  var _mDays = monthDays(tYear,tMonth);
         	  if (_mDays < tDay){ret = false;}
         }          
     } 
     return    ret;        	
}

//Year,Month,Day,Calendar,LeapMonth
function checkDateEx(iInputField){
 	   var ret = {"err" : 0, "msg" : ""};
		 var tCalendar,tLeapMonth,tYear,tMonth,tDay;
		 tYear      = parseInt($id('' + iInputField["Year"]).options[$id('' + iInputField["Year"]).selectedIndex].value,10);
		 tMonth     = parseInt($id('' + iInputField["Month"]).options[$id('' + iInputField["Month"]).selectedIndex].value,10);
		 tDay       = parseInt($id('' + iInputField["Day"]).options[$id('' + iInputField["Day"]).selectedIndex].value,10);
		 tCalendar  = parseInt((iInputField["Calendar"])?($id('' + iInputField["Calendar"]).options[$id('' + iInputField["Calendar"]).selectedIndex].value):1);
     tLeapMonth = parseInt((iInputField["LeapMonth"])?($id('' + iInputField["LeapMonth"]).options[$id('' + iInputField["LeapMonth"]).selectedIndex].value):0);
         
     if (tCalendar == 1){//陽曆
     	   
     	   var MaxDay = ((tMonth == 2)?(((tYear%4 == 0) && (tYear%100 != 0) || (tYear%400 == 0)) ? 29 : 28 ):((tMonth == 1 || tMonth == 3 || tMonth == 5 || tMonth == 7 || tMonth == 8 || tMonth == 10 || tMonth == 12)? 31 : 30 )); 
     	   //alert(MaxDay);
     	   if (tDay > MaxDay){
     	   	 ret = {"err" : 1, "msg" : "陽曆" + tYear + "年" + tMonth + "月只有" + MaxDay + "天哦！"};
     	   	 //alert(iInputField['ERR_MSG']);     	   	 
     	   }
     }else if((tLeapMonth == 0) && (tDay < 30)){//陰曆非閏月,日期小於30
     }else{ //陰曆閏月或日期大於29    
         if (tLeapMonth == 1){
         	  var _lM = leapMonth(tYear);
         	  if (_lM != tMonth){
         	  	 ret = {"err" : 3, "msg" : "陰曆" + tYear + "年" + tMonth + "月不是閏月的哦！"};
         	  	 //alert(iInputField['ERR_MSG']); 
         	  }else{
         	  	 var _lMDays = leapDays(tYear);
         	  	 if (_lMDays < tDay){
         	  	 	  ret = {"err" : 4, "msg" : "陰曆" + tYear + "年" + tMonth + "月（閏月）只有" + _lMDays + "天哦！"};
         	  	 }
         	  }
         }else{
         	  var _mDays = monthDays(tYear,tMonth);
         	  if (_mDays < tDay){
         	  	  ret = {"err" : 2, "msg" : "陰曆" + tYear + "年" + tMonth + "月只有" + _mDays + "天哦！"};
         	  }
         }          
     } 
     return    ret;        	
}

