function isDate(asDate){
   var lsDate  = asDate + "";
   var loDate  = lsDate.split("-");
   if (loDate.length!=3) return false; 
   var liYear  = parseFloat(loDate[0]);
   var liMonth = parseFloat(loDate[1]);
   var liDay   = parseFloat(loDate[2]);
   if ((loDate[0].length>4)||(loDate[1].length>2)||(loDate[2].length>2)) return false;
   if (isNaN(liYear)||isNaN(liMonth)||isNaN(liDay)) return false;
   if ((liYear<1800)||(liYear>2500)) return false;
   if ((liMonth>12)||(liMonth<=0))   return false;
   return true;
}


function isDateTime(asDate){
	var loDate  = asDate.split(" ");
	if(loDate.length!=2){
		return false;
	}
	if(!isDate(loDate[0])){
		 return false;
	}else{
	 	loTime = loDate[1].split(":");
		 var liHour = parseFloat(loTime[0]);
         var liMin = parseFloat(loTime[1]);
         if((loTime[0].length>2)||(loTime[1].length>2)) return false;
         if (isNaN(liHour)||isNaN(liMin)) return false;
         if(!(liHour>=0 && liHour<24)) return false;
         if(!(liMin>=0 && liMin<60)) return false;
	}
	return true;
}

  function isNumber(str){ 
  	if(str.length==0) {return false;} 
  	for (i = 0; i < str.length; i++){
  		mychar = str.charAt(i); 
  	    if(mychar <'0' || mychar > '9'){ 
  		  return false;
  		} 
  	}
  	 return true; 
  }// end isnumber function 
  function isLeapYear(aYear){
   if ((aYear%400==0) || ((aYear%4==0) && (aYear%100!=0)))
   	 return true;
   else
      return false;
  }
  function getMaxDay(aYear,aMonth){
    //alert("getMaxDay(),aMonth:"+aMonth);
    //aMonth(1-12)
    var monthNumber = [31,28,31,30,31,30,31,31,30,31,30,31];   
    
    switch(aMonth){
       case 2: return isLeapYear(aYear)?29:28;
  	 default: return monthNumber[aMonth-1];
    }
  }
  function initCalendar(aYear,aMonth,aDay){
    var yearObj = document.getElementById("year");
  	yearObj.value = aYear;
  	document.getElementById("month").value = aMonth;
  	document.getElementById("day").value = aDay;
  	drawCalendar(aYear,aMonth,aDay);
  }

  function getWeekOfYear(aYear,aMonth,aDayOFMonth){
    aDate = new Date(aYear,0,1);
	//aMonth start from 1
  	dayAmount = 0;
  	weekNo = 0;	
  	
  	for (var i=1; i<=aMonth; i++){  		
  		dayAmount = dayAmount + getMaxDay(aYear,i);			
  	}	
  	dayAmount = dayAmount + aDayOFMonth;
  	var num = dayAmount + aDate.getDay();
  	
  	if(num<7) return 1;  
  	if(num%7 == 0){
  		weekNo =num/7;  	}
  	else{
  		weekNo =Math.floor(num/7)+1;
  	}	
  	return weekNo; 	 	
  }
  function setDate(aDate){
	  if(isDate(aDate)){
	   	 ymd=aDate.split('-');
	     initCalendar(parseInt(ymd[0]),ymd[1]-1,ymd[2]);
	 }else{
		 aNow = new Date();
		 initCalendar(aNow.getYear(),aNow.getMonth(),aNow.getDate());
	 }

  }
  function strToDate(value){
 		ymd=value.split('-');
    	return new Date(ymd[0],ymd[1]-1,ymd[2]);
    	
  }
  
  function clearCalendar(){
  	
  	aCalendarGrid = document.getElementById("calendarGrid");
  	
  	for(i = 1;i<7;i++){
  	  for(j=0;j<7;j++){
  		aCalendarGrid.rows[i].cells[j].innerHTML = "&nbsp;";
  	  }
  	}
  }
  function drawCalendar(aYear,aMonth,myDay){
    //alert("drawCalendar() aYear:"+aYear+" aMonth:"+aMonth+" myDay:"+myDay); 
         clearCalendar();  
            
  	aCalendarGrid = document.getElementById("calendarGrid");
  	
  	aValue = parseInt(aMonth,10)+1;
  	aMaxDay = getMaxDay(aYear,aValue);
  	//alert("aMaxDay:"+aMaxDay);
  	
    aCalendarCurrentMonth = document.getElementById("calendarCurrentMonth");
    aCalendarCurrentMonth.innerHTML = aYear+"年"+aValue+"月";
    
  	
  	aDate = new Date(aYear,aMonth,1)
  	aDay = aDate.getDay();
  	aBeginDay = 1;

  	for(i=1;i<7;i++){
  	   
  	     for(j=aDay;j<7;j++){
  		    aCalendarGrid.rows[i].cells[j].innerHTML = aBeginDay
  		  
  		    if(aBeginDay==myDay){
  		       aCalendarGrid.rows[i].cells[j].style.color="#99CC00";
  		    } 
  		    aBeginDay++;
  		    if(aBeginDay>aMaxDay){break;}
  	     }
  		 if(aBeginDay>aMaxDay){break;}
  		 aDay = 0;
  	 }
  }
  function refershCalendar(){
  	aYear = document.getElementById("year").value;
  	var m = document.getElementById("month");
    aMonth =m.value;
  	drawCalendar(aYear,aMonth);
  }
  function getTodayDate()
  {
     today= new Date();
     y= today.getYear();
     m= (today.getMonth() + 1);
     if (m<10)
     {
       m='0'+m;
     }
     d= today.getDate();
     if (d<10)
     {
       d='0'+d;
     }
  	return y+'-'+m+'-'+d
  }
  function setColor(tdTag,color){
  	tdTag.bgColor = color;
  }
  function choiceDay(value){
   
  }

  function draw(){
  	for(i=1;i<7;i++){
  		document.write("   <tr align=\"center\" bgcolor=\"#FFFFFF\" id=\"tr"+i+"\" style=\"cursor:hand\">");
    		for(j=0;i<1;j++){
      	 document.write("<td onMouseOver=\"this.bgColor='#FF9900';\" onMouseOut=\"this.bgColor='#FFFFFF';\" onClick=\"choiceDay(this.innerHTML)\">&nbsp;</td>");
    	    }
  	    document.write("</tr>");
  	}
  }
  function incYear(){
    var year = document.getElementById("year");
    aValue = parseInt(year.value,10);
    year.value = aValue + 1; 
    refershCalendar();
  }
  function decYear(){
   var year = document.getElementById("year");
   year.value=year.value-1;
   refershCalendar();
  }
  
   function incMonth(){
    var month = document.getElementById("month");
    aValue = parseInt(month.value,10);
    month.value = aValue + 1;
    //alert("incMonth(), to:"+month.value);    
    if (12==month.value) {
      month.value=0;
      incYear();
    }
    else
    	refershCalendar();
  }
  function decMonth(){
   var month = document.getElementById("month");
   month.value=month.value-1;
   if (-1==month.value) {
      month.value=11;
      decYear();
    }
    else
      refershCalendar();
  }


  function initCalendarNow(){   
   		setDate(getTodayDate());
  }
  function DateSegment(){
      this.beginDate = new Date();   
      this.endDate = new Date();
  }
  function getWeekDateSegment( year,week ) {  	
  	var firstDate =  new Date();
    firstDate.setTime(0);
	firstDate.setYear(year);
	dayUtc = 1000 * 60 * 60 * 24  
	weekUtc = dayUtc * 7
	var result = new DateSegment();	
	result.beginDate = new Date();
	result.beginDate.setTime(0);
	result.endDate = new Date(0);
	var fromDay = 1-(result.beginDate.getDay() - 7);
	var dayTotal = firstDate.getTime()+ weekUtc * week - fromDay * dayUtc;
	result.beginDate.setTime(dayTotal); 	
	result.endDate.setTime(dayTotal + weekUtc);
	return result;			
 }
  
  function getDate(aYear,aMonth,aDay){
  	return new Date(aYear,aMonth,aDay);
  }
  
  function validDateSegment(begin ,end){
      aBegin = strToDate(begin);
      aEnd = strToDate(end);
      return (aEnd.getTime()>=aBegin.getTime());
  }
  