﻿//version 2.0.0.8
var __NBaseCalendarWin;
var __NBaseDateTextBox;
var __NBaseHideTopObjects="";
var __NBaseAFrmSet;
var __NBaseAFrmSet_ORows;
var __NBaseHideCal =true;

//
function __NBaseShowDatePickerPopup(strDatePickerId,event){    

	if(event==null) return false;
	event.cancelBubble = true;
	
	var objPicker
	//define IE or FireFox
	if (event.target) {
			objPicker = event.target
	} else {
	objPicker = event.srcElement
	}
	
	//find <A>
	if (document.getElementById&&!document.all){
		while(objPicker.nodeName!='A'){
			objPicker=objPicker.parentNode;
		}
		var objContainer=objPicker.parentNode;
		var objTarget=objPicker.previousSibling;
	}
	else{
		while(objPicker.tagName!='A'){
			objPicker=objPicker.parentElement;
		}
		var objContainer=objPicker.parentElement;
		var objTarget=objPicker.previousSibling;
	}	
	
	__NBaseDateTextBox = objTarget;

	if((__NBaseDateTextBox.disabled)||(__NBaseDateTextBox.readOnly)){
		return;
	}

	var aryPos = __NBaseGetObjectPos(objTarget);
	var intLeft = aryPos[0];
	var intTop = aryPos[2];
	if(__NBaseCalendarWin==null){
		__NBaseCalendarWin=document.getElementById(strDatePickerId);
	}

	if(document.addEventListener){
		document.addEventListener("click",__NBaseHideCalendar,false);
	}
	else{
		document.attachEvent("onclick",__NBaseHideCalendar);
	}
	
	__NBaseCalendarWin.style.position="absolute";
	//__NBaseCalendarWin.style.pixelTop=intTop+24;
	__NBaseCalendarWin.style.top= (intTop + 24) + "px";
	__NBaseCalendarWin.style.pixelLeft =intLeft;
	__NBaseCalendarWin.style.display = "";	
	__NBaseSetCalendar();
	var intBTop = __NBaseCalendarWin.style.pixelTop;
	var intETop = __NBaseCalendarWin.style.pixelTop + __NBaseCalendarWin.style.posHeight;
	var intBLeft = __NBaseCalendarWin.style.pixelLeft;
	var intELeft = __NBaseCalendarWin.style.pixelLeft + __NBaseCalendarWin.style.posWidth;

	__NBaseAdjustFrameSetRows(intETop);
	__NBaseControlTopObjects(__NBaseCalendarWin,intBLeft,intELeft,intBTop,intETop);
	var strDateBoxID=objTarget.id;
	if(strDateBoxID=="") strDateBoxID=objTarget.name;
	__NBaseHideCal=false; 
	return false;
}

//當lost focus之後要隱藏小月曆
function __NBaseHideCalendar(){
	
	if(__NBaseHideCal && event.srcElement.id!=null && event.srcElement.id!="")return;
	
	if(document.getElementById&&!document.all){

		var evt = document.createEvent("MouseEvents");
  	evt.initMouseEvent("click", false, false, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
		document.dispatchEvent(evt);
	}
	else{
		document.detachEvent("onclick",__NBaseHideCalendar);
	}
	__NBaseCalendarWin.style.display = "none";
	if(__NBaseAFrmSet!=null){
		__NBaseAFrmSet.rows = __NBaseAFrmSet_ORows;
	}
	if(__NBaseHideTopObjects=="") return false;
	var aryHideTopObjects = __NBaseHideTopObjects.split(",");
	__NBaseHideTopObjects="";
	for(var i=0;i<aryHideTopObjects.length;i++){
		var objControl = document.getElementById(aryHideTopObjects[i]);
		objControl.style.visibility = "visible";
	}
}

//小月曆所涵蓋的範圍內把其他會影響的物件隱藏起來
function __NBaseControlTopObjects(vobjMe,vintBLeft,vintELeft,vintBTop,vintETop){
		var colTopTypes = new Array("SELECT","OBJECT", "IFRAME", "APPLET","EMBED");
		for (var i=0; i<colTopTypes.length; i++)	{
			var colTopObjects = document.getElementsByTagName(colTopTypes[i]);
			
			for (var j=0; j<colTopObjects.length; j++){
				var objItem = colTopObjects[j];
				var aryPos = __NBaseGetObjectPos(objItem);
				var blnAllowHPos,blnAllowVPos;
				if((aryPos[0]>vintELeft) || (aryPos[1]<vintBLeft)){
					blnAllowHPos = true;}
				else{
					blnAllowHPos = false;}

				if((aryPos[2]>vintETop) || (aryPos[3]<vintBTop)){
					blnAllowVPos = true;}
				else{
					blnAllowVPos = false;}
				if((vobjMe.id!=objItem.id) && (!blnAllowHPos) && (!blnAllowVPos) 
					&& (objItem.style.visibility!="hidden") && (objItem.style.display!="none")
					&& (objItem.id!="DynaCal_cboMonth")){
						__NBaseHideTopObjects += "," + objItem.id;
						objItem.style.visibility = "hidden";
				}
			}
		}
		if(__NBaseHideTopObjects.substring(0,1)==","){
			__NBaseHideTopObjects = __NBaseHideTopObjects.substr(1);
		}
}


function __NBaseAdjustFrameSetRows(vintMinHeight){	
	var objCurrentFrame = document.parentWindow;
	//判斷是否有使用Frame切割畫面
	if(objCurrentFrame==null) return;
	var intWindowHeight = document.body.clientHeight;	//取得目前視窗大小
	if(vintMinHeight>intWindowHeight){
		var strCurrentFrameName = __NBaseGetControlUniqueID(objCurrentFrame);
		if(strCurrentFrameName=="") return;
		var intCurrentFrameIndex = -1;
		var objFrameSet=objCurrentFrame.parent.document.all[strCurrentFrameName].parentElement;
		if(objFrameSet.parentElement!=null){
			if(objFrameSet.parentElement.tagName=="FRAMESET"){
				strCurrentFrameName = __NBaseGetControlUniqueID(objFrameSet);
				objFrameSet = objFrameSet.parentElement;
			}
		}
		var colFrames = objFrameSet.children;

		for(var i=0;i<colFrames.length;i++){
			if(colFrames[i].uniqueID==strCurrentFrameName){
				intCurrentFrameIndex=i;
				break;
			}
		}
		__NBaseAFrmSet = objFrameSet;
		__NBaseAFrmSet_ORows = objFrameSet.rows;
		if(__NBaseAFrmSet_ORows=="") return;
		var aryRows = objFrameSet.rows.split(",");
		aryRows[intCurrentFrameIndex] = vintMinHeight;
		objFrameSet.rows = aryRows.toString();
	}
}