﻿/*  TUF1_Calendar.js

	Public Function :
	1.setDateByDate(sID,sDate,lang)
	2.setDateByOffset(sID,sOffset,lang)
*/

var isIE = navigator.appName.indexOf("Microsoft") != -1;
var _ShowDash = false;

function _getDays(month, year) {
	var _daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (2 == month)
		return ((0 == year % 4) && (0 != (year % 100))) || 	(0 == year % 400) ? 29 : 28;
	else
		return _daysInMonth[month-1];
}

function _setDateChangeEvent(sID,ShowDash){
	document.getElementById(sID+'Year').onchange = function() { _DateChange(sID,ShowDash); }
	document.getElementById(sID+'Month').onchange = function() { _DateChange(sID,ShowDash); }
	document.getElementById(sID+'Day').onchange = function() { _DateChange(sID,ShowDash); }
}

var MonthFName = new Array("","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","===");
var MonthEName = new Array("","January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December","=========");
var MonthCName = new Array("","一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月","======");


function _setDateElementValue(sID,lang, mYear, mMonth, mDay){
	try{		
        var cNodes   = null;
	    if(isIE){
	        cNodes   = 	document.getElementById(sID+'Year').children;
	    }else{
	        cNodes   = 	document.getElementById(sID+'Year').value;
	    }
	    
        if (cNodes.length == 0 ){
    		for(i=0;i<3;i++){
    			var oOption = document.createElement("OPTION");
    			oOption.text=Number(mYear)+i-1;
    			oOption.value=Number(mYear)+i-1;
    			if (isIE){
    				document.getElementById(sID+'Year').add(oOption);
    			}else{
    				document.getElementById(sID+'Year').appendChild(oOption);
    			}
    		}
    	}
    	if(isIE){
		    var oOptions = document.getElementById(sID+'Year').children;
		}else{
		    var oOptions = document.getElementById(sID+'Year');
		}
		oOptions[1].selected=true;

        if(isIE){
            cNodes   = 	document.getElementById(sID+'Month').children;
        }else{
            cNodes   = 	document.getElementById(sID+'Month');
        }
        if (cNodes.length == 0 ){
        	if(_ShowDash){
        		var oOption = document.createElement("OPTION");
    			if (lang.toUpperCase()=='E'){
    		 		oOption.text = MonthEName[13];
    		 	}else if(lang.toUpperCase() =='C'){
    		 		oOption.text = MonthCName[13];
    		 	}else if (lang.toUpperCase() =='F'){
    		 		oOption.text = MonthFName[13];
    		 	}
    			oOption.value='00';
    			if(isIE){
    			    document.getElementById(sID+'Month').add(oOption);		
    			}else{
    		        document.getElementById(sID+'Month').appendChild(oOption);
    		    }
        	}
    		for(i=1;i<13;i++){
    		 	var oOption = document.createElement("OPTION");
    		 	if (lang.toUpperCase()=='E'){
    		 		oOption.text = MonthEName[i];
    		 	}else if(lang.toUpperCase() =='C'){
    		 		oOption.text = MonthCName[i];
    		 	}else if (lang.toUpperCase() =='F'){
    		 		oOption.text = MonthFName[i];
    		 	}
    			oOption.value=(i<10)?"0"+i:i;
    			if (isIE){
    				document.getElementById(sID+'Month').add(oOption);
    			}else{
    				document.getElementById(sID+'Month').appendChild(oOption);
    			}
    		}
    	}
    	
    	if (!_ShowDash){
    	    if(isIE){
			    var oOptions = document.getElementById(sID+'Month').children;
			}else{
			    var oOptions = document.getElementById(sID+'Month');
			}
			oOptions[Number(mMonth)-1].selected=true;
		}

        if(isIE){
            cNodes   = 	document.getElementById(sID+'Day').children;
        }else{
            cNodes   = 	document.getElementById(sID+'Day');
        }
        
        if (cNodes.length == 0 ){
        	if(_ShowDash){
        		var oOption = document.createElement("OPTION");
    			oOption.text='==';
    			oOption.value='00';
    			if(isIE){
    			    document.getElementById(sID+'Day').add(oOption);
    			}else{
    			    document.getElementById(sID+'Day').appendChild(oOption);
    		    }
        	}
    		var dayno = _getDays(mMonth, mYear) +1;
    	    for(i=1;i<dayno;i++){
    		 		var oOption = document.createElement("OPTION");
    		 		oOption.text=i;
    		 		oOption.value=(i<10)?"0"+i:i;
    				if (isIE){
    					document.getElementById(sID+'Day').add(oOption);
    				}else{
    					document.getElementById(sID+'Day').appendChild(oOption);
    				}
    		}
    	}
		if (!_ShowDash){
			var oDay = _getDays(mMonth, mYear);
			if(isIE){
			    var oOptions = document.getElementById(sID+'Day').children;
			}else{
			    var oOptions = document.getElementById(sID+'Day');
			}
			if (Number(mDay)>Number(oDay)){
				oOptions[Number(oDay)-1].selected=true;
			}else{
				oOptions[Number(mDay)-1].selected=true;
			}
		}
	}catch(err){
	      alert(err);
	}
}

function _createHiddenField(sID){
	//if (isIE){
		var oInput = document.createElement("INPUT");
		oInput.type='hidden';
		oInput.value=document.getElementById(sID+'Year').value+document.getElementById(sID+'Month').value+document.getElementById(sID+'Day').value;
		oInput.name=sID+'Date';
		oInput.id=sID+'Date';
		//var oParentObj = document.getElementById(sID+'Year').parentElement;//only IE
		var oParentObj = document.getElementById(sID+'Year').parentNode;//IE 及 FireFox都可
		oParentObj.appendChild(oInput);
	//}
	
}

function setDateByDate(sID,sDate,lang, ShowDash){
	if (ShowDash==null) {ShowDash=false;}
	if (sDate.length!=8) { throw "Date Format Error, It should be 'YYYYMMDD'.";}
	if (!Number(sDate)) {throw "Date Format Error, It should be 'YYYYMMDD'.";}
	try {
		var mYear = sDate.substring(0,4);
		var mMonth = sDate.substring(4,6);
		if (Number(mMonth)>12) {throw "Month is between 1 to 12.";}
		var mDay = sDate.substring(6);
		if (Number(mDay)>31) {throw "Day is between 1 to 31.";}
		if (lang.toUpperCase()!='E' && lang.toUpperCase()!='C' && lang.toUpperCase()!='F'){
	    	throw "Parameter 3(lang) must be 'C','E','F'.";
	    }
	    _ShowDash = ShowDash;
	    _setDateChangeEvent(sID,ShowDash);
		_setDateElementValue(sID, lang, mYear, mMonth, mDay);
		_createHiddenField(sID);
	}catch(exception) {
		alert(exception);
		return "";
	}
}

function setDateByOffset(sID,sOffset,lang, ShowDash) {
	if (ShowDash==null) {ShowDash=false;}
	if (!Number(sOffset)) {sOffset = 0;}
	try {
		var mDate  = new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate() - (0-sOffset))
	    var mYear  = mDate.getFullYear();
	    var mMonth = mDate.getMonth()+1;
	    var mDay   = mDate.getDate();
	    if (lang.toUpperCase()!='E' && lang.toUpperCase()!='C' && lang.toUpperCase()!='F'){
	    	throw "Parameter 3(lang) must be 'C','E','F'.";
	    }
	    _ShowDash = ShowDash;
	    _setDateChangeEvent(sID,ShowDash);
	    _setDateElementValue(sID, lang, mYear, mMonth, mDay);
	    _createHiddenField(sID);
	}catch(exception) {
		alert(exception);
		return "";
	}
}

function _DateChangeDash(sID){
	var mDayObj = document.getElementById(sID+'Day');	
	if(isIE){	
	    var nodes = mDayObj.children;	
	}else{
	    var nodes = mDayObj;
    }
	var nodesNo = nodes.length -1 ;
	var dayno = _getDays(document.getElementById(sID+'Month').value, document.getElementById(sID+'Year').value);
	if (nodesNo < dayno){
		var offset = dayno - nodesNo;
		for (i=0;i<offset;i++){
			var oOption = document.createElement("OPTION");
 			oOption.text=nodesNo + i + 1;
 			oOption.value=nodesNo + i + 1;
 			mDayObj.add(oOption);
		}
	}else if (nodesNo > dayno){
		for (i=nodesNo;i>dayno;i--)
		{
			var ochild = nodes[i-1];
			mDayObj.removeChild(ochild);
		}
	}
	//if (isIE){
		oParentId = document.getElementById(sID+'Date');
		oParentId.value=document.getElementById(sID+'Year').value+document.getElementById(sID+'Month').value+document.getElementById(sID+'Day').value;
	//}
}

function _DateChange(sID,ShowDash)
{		
	if (ShowDash){
		var mDayObj = document.getElementById(sID+'Day');			
		if(document.getElementById(sID+'Month').value==''){			
		    if(isIE){
			    var t = mDayObj.children.length-1;
			
			    for (i=0;i<t;i++){
    				var oOption = mDayObj.children[1];
    				mDayObj.removeChild(oOption);		
			    }
			}else{
			    var t = mDayObj.length-1;
			    
			    for (i=0;i<t;i++){
    				var oOption = mDayObj[1];
    				mDayObj.removeChild(oOption);		
			    }
		    }
			
			//if (isIE){
				oParentId = document.getElementById(sID+'Date');
				oParentId.value=document.getElementById(sID+'Year').value+document.getElementById(sID+'Month').value+document.getElementById(sID+'Day').value;
			//}
			return ;
		}
        	
	}
//	if (_ShowDash){		
//		var mDayObj = document.getElementById(sID+'Day');	
//		var oOption = document.getElementById(sID+'Day').children[0];
//		mDayObj.removeChild(oOption);		
//	}
	var mDayObj = document.getElementById(sID+'Day');	
	if(isIE){
	    var nodes = mDayObj.children;
	}else{
	    var nodes = mDayObj;
    }
	var nodesNo = nodes.length;
	var dayno = _getDays(document.getElementById(sID+'Month').value, document.getElementById(sID+'Year').value);
	
	//alert(nodesNo+":"+dayno+":"+ShowDash);
	if (nodesNo < dayno){
		var offset = dayno - nodesNo;
		if(ShowDash){
			for (i=0;i<=offset;i++){
				if(isIE){
    				var oOption = document.createElement("OPTION");
    	 			oOption.text=nodesNo + i ;
    	 			oOption.value=nodesNo + i ;
    	 			mDayObj.add(oOption);
    	 		}else{
    	 		    var oOption = new Option((nodesNo + i),(nodesNo + i));
    	 		    mDayObj.appendChild(oOption);
    	 	    }
			}	
		}else{
			for (i=0;i<offset;i++){
			    if(isIE){
    				var oOption = document.createElement("OPTION");
    	 			oOption.text=nodesNo + i +1;
    	 			oOption.value=nodesNo + i +1;
    	 			mDayObj.add(oOption);
    	 	    }else{
                    var oOption = new Option((nodesNo+i+1),(nodesNo+i+1));
                    mDayObj.appendChild(oOption);
                }
			}
		}
	}else if (nodesNo > dayno){
		if(ShowDash){
			for (i=nodesNo;i>dayno+1;i--)
			{
				var ochild = nodes[i-1];
				mDayObj.removeChild(ochild);
			}	
		}else{
			for (i=nodesNo;i>dayno;i--)
			{
				var ochild = nodes[i-1];
				mDayObj.removeChild(ochild);
			}	
		}
	}else if(nodesNo = dayno){
		if(ShowDash){
 			if(isIE){
 			    var oOption = document.createElement("OPTION");
     			oOption.text=nodesNo ;
     			oOption.value=nodesNo ;
 			    mDayObj.add(oOption);
 			}else{
 			    var oOption = new Option(nodesNo,nodesNo);
 			    mDayObj.appendChild(oOption);
 			}
 		}
	}
	//if (isIE){
		oParentId = document.getElementById(sID+'Date');
		oParentId.value=document.getElementById(sID+'Year').value+document.getElementById(sID+'Month').value+document.getElementById(sID+'Day').value;
	//}
	
	if (ShowDash){
//		var oOption = document.createElement("OPTION");
//		oOption.text='==';
// 		oOption.value='00';
//		mDayObj.add(oOption,0);
		
		try {
		    if(isIE){
    			for (i=1;i<mDayObj.children.length;i++){
    				if (mDayObj.children[i].selected){
    					mDayObj.children[i].selected=true;	
    					return;
    				}
    			}
    		}else{
    		    for (i=1;i<mDayObj.length;i++){
    				if (mDayObj[i].selected){
    					mDayObj[i].selected=true;	
    					return;
    				}
    			}
    	    }
		}catch(ex){;}
	}
	
}