/*
Copyright (c) 2008, HNAS Co. Ltd,
Version: 1.0.2
Create by Yongm_wang
Notes:This script is based on the YUI script named 'calendar-core.js'
*/
YAHOO.namespace("calendar");	
	var _nowShowObject=null;
	/**
    * Initialize the calendar object
    * @class initCalendar
	* @param {String} imgId 按钮图标Id
    * @param {String} inpDateId 日期输入控件Id
    * @param {String} calContainerId 日历Div容器Id，日历Div容器一般置于body末，div代码示例
	*                 <div id="" style="display:none;z-index:2;"></div>
    * @param {Object} calObj 日历对象
	* @param {String} calId 日历对象Id
	* @param {String} cfgType 日历配置类型
	* 0： 2页 可选择前后日期
	* 1： 2页 仅可选择今天后的日期
	* 2： 1页 可选择前后日期 
	* 3： 1页 仅可选择今天后的日期
	* 4:  2页 可选择前后日期，并给日期输入框赋当天值
	* 5:  2页 可选择前后日期，并给日期输入框后一个月值
    */
    
	function initCalendar(imgId,inpDateId,calContainerId,calObj,calId,cfgType){		
		var inpDate = YAHOO.util.Dom.get(inpDateId);
		var calContainer = YAHOO.util.Dom.get(calContainerId);
		var cfg;
		switch (cfgType){ 
			case "0" : cfg={ pages:2, title:'请选择日期:', close:true };
						break;
			case "1" : cfg={ pages:2, title:'请选择日期:', close:true ,mindate:getTodayDate() };
						break;
			case "2" : cfg={ pages:1, title:'请选择日期:', close:true };
						break;
			case "3" : cfg={ pages:1, title:'请选择日期:', close:true ,mindate:getTodayDate() };
						break;
			case "4" : cfg={ pages:2, title:'请选择日期:', close:true };						
					   inpDate.value  = getDate(1);
						break;
			case "5" : cfg={ pages:2, title:'请选择日期:', close:true };
					   inpDate.value  = getDate(2);
						break;			
			default:   cfg={ pages:1, title:'请选择日期:', close:true };
						break;
		}
		calObj = new YAHOO.widget.CalendarGroup(calId,calContainerId,cfg);
		calObj.selectEvent.subscribe(function (){
				var dateTemp = calObj.getSelectedDates()[0];			
				inpDate.value = dateTemp.getFullYear()+"-"+(dateTemp.getMonth()+1)+"-"+dateTemp.getDate();
				calObj.hide();
				_nowShowObject = null;
			}					
		);  
		calObj.render();		
		YAHOO.util.Dom.setStyle(imgId, "cursor","pointer");
		YAHOO.util.Event.addListener(inpDateId, "click",function (){if(_nowShowObject!=null)_nowShowObject.hide();});
		YAHOO.util.Event.addListener(inpDateId, "blur", function () { 
				var dateTemp = inpDate.value;	
				var dateFormat = /^(19|20)\d{2}-(0?\d|1[012])-(0?\d|[12]\d|3[01])$/;
				if(dateTemp!="" && dateFormat.test(dateTemp)==false){
					alert("日期格式输入有误，格式应为yyyy-MM-dd或yyyy-M-d!");
					return false;			
				}
				if(dateTemp!="" && dateFormat.test(dateTemp)==true){
					if(calObj!=null){
						var year = dateTemp.split('-')[0];	
						var month = dateTemp.split('-')[1];
						var day = dateTemp.split('-')[2];	
						//alert(this.id);alert(date1);alert(objCalendar);		
						calObj.select(month + "/" + day + "/" + year);
						calObj.setMonth(month-1);
						calObj.setYear(year);
						calObj.render();
					}
				}		
			}
		);
		YAHOO.util.Event.addListener(imgId, "click", function (){
				var pos = YAHOO.util.Dom.getXY(inpDate);	
				if(_nowShowObject != null){
					_nowShowObject.hide();
				}
				calObj.show();				
				try{
					var pnum = 1;
					var posx = pos[0];
					var posy = pos[1]+inpDate.offsetHeight+1;
					pnum = calObj.cfg.config.pages.value;
					
					var cw = document.body.clientWidth;
					if(pos[0]+pnum*155 > cw){
						posx = cw-pnum*155-10;
					}
								
					YAHOO.util.Dom.setXY(calContainer, [posx,posy]);				
				}
				catch(ex){}
				 				
				_nowShowObject = calObj;
			}				
		);	
	}		
	
	function getTodayDate(){
	   var d, s = "";           
	   d = new Date();                           
	   s += (d.getMonth() + 1) + "/";            
	   s += d.getDate() + "/";                   
	   s += d.getFullYear();                         
	   return(s);                             
	}
	
	function getDate(num){
	   var d, s = "";           
	   d = new Date();      
	   s += d.getFullYear() + "-";                       
	   s += (d.getMonth() + num) + "-";            
	   s += d.getDate();                   
	   return(s);                             
	}

