/*	
	双日历控件 ziqiu.zhang 2007.11.5日 
	改版自elong.com 原单日历控件
	增加了对XHtml的支持.
 */
document.write('<iframe id=\"CalFrame\" name=\"CalFrame\" frameborder=\"0\" style=\"display:none;position:absolute;z-index:1000\" onload=\"loadCalendarHtm();\"></iframe>');
document.onclick=hideCalendar;

//SAC 李志能 增加 2008-12-08 加载Script/calendar/calendar.htm
function loadCalendarHtm() {
}

function showCalendar(sImg,bOpenBound,sFld1,sNextP,sNextD,sStartD,sEndD,sVD,sOE,sVDE,sOT,s3F,sFld2,sCallback,sNextVDE,iPosLeft,iPosTop)
{
	//1.sImg日历弹出位置的控件的名称,
	//2.bOpenBound,
	//3.sFld1取得日期的控件名称,
	
	
	//4.sNextP选取日期后新日历弹出的位置的控件名称,可不输入,
	//5.sNextD选取日期后新日历弹出从中取值的控件名称,可不输入,
	
	//6.sStartD开始有效时间,
	//7.sEndD截至有效时间,
	
	//8.sVD周几有效,例如：'1,3,5',注意星期日应输入'0'
	//9.sOE,单双日有效,'0'表示双日,'1'表示单日
	//10.sVDE特殊日期,例如'2004-10-11,2004-11-20,',最后一定要输入','
	//11.sOT如果是直接在文本框中点击则值为'text',
	//12.s3F下一个日历弹出并选择后点取日期后定位到新的控件
	
	//sFld2,弹出日历默认日期
	//sCallback
	
	// sNextVDE 下一次焦点的有效时间.
	
	//iPosLeft 定位x坐标
	//iPosTop  定位y坐标
	
	var fld1,fld2;
	var cf=document.getElementById("CalFrame");
	
	//SAC 李志能增加，2008-12-08 动态加载calendar.htm，减少页面加载连接		
	if (cf!=null && cf!="undefine" && cf.src=="") 
	{		 
	    loadCalendarHtm = function() {
	         showCalendar(sImg,bOpenBound,sFld1,sNextP,sNextD,sStartD,sEndD,sVD,sOE,sVDE,sOT,s3F,sFld2,sCallback,sNextVDE);	         
	    } 	    	    	     
	    cf.src = "/jd/js/calendar.htm";	   	    	
	    return;	    
	}
	
	var wcf=window.frames.CalFrame;
	var oImg=document.getElementById(sImg);
	if(!oImg){alert("控制对象不存在！");return;}
	if(!sFld1){alert("输入控件未指定！");return;}
	fld1=document.getElementById(sFld1);
	if(!fld1){alert("输入控件不存在！");return;}
	if(fld1.tagName!="INPUT"||fld1.type!="text"){alert("输入控件类型错误！");return;}
	if(sFld2)
	{
		fld2=document.getElementById(sFld2);
		if(!fld2){alert("参考控件不存在！");return;}
		if(fld2.tagName!="INPUT"||(fld2.type!="text"&&fld2.type!="hidden")){alert("参考控件类型错误！");return;}
	}
	if(!wcf.bCalLoaded){alert("日历未成功装载！请刷新页面！");return;}
	wcf.n_position=sNextP;
	wcf.n_textdate=sNextD;
	wcf.startdate=sStartD;
	wcf.enddate=sEndD;
	wcf.vailidday=sVD;
	wcf.oddeven=sOE;
	wcf.vailiddate=sVDE;
	wcf.nextvailiddate = sNextVDE;
	wcf.objecttype=sOT;
	wcf.thirdfocus=s3F;
	if(cf.style.display=="block"){cf.style.display="none";return;}
	
	/*
	//==============新版本更新: 关于日历显示位置的更改 ziqiu.zhang 开始	=================
	var eT=0,eL=0,p=oImg;
	
	var sT=(document.body.scrollTop > document.documentElement.scrollTop)? document.body.scrollTop:document.documentElement.scrollTop;

	var sL=(document.body.scrollLeft > document.documentElement.scrollLeft )? document.body.scrollLeft:document.documentElement.scrollLeft;
	
	var h1 = document.body.clientHeight;

	var h2 = document.documentElement.clientHeight;

	var isXhtml = (h2<=h1&&h2!=0)?true:false;

	var myClient = getClient();
	
	var myScroll = getScroll();		
	
	var eH=oImg.height,eW=oImg.width;
	
	while(p&&p.tagName.toUpperCase() !="BODY"){eT+=p.offsetTop;eL+=p.offsetLeft;p=p.offsetParent;}	
	
	var bottomSpace = myClient.clientHeight - ( eT - myScroll.sTop );

	eH=0;
	
	cf.height = 175;
	
	if(sOT=="text")
	{
		cf.style.top = ( (bottomSpace>=cf.height)?eT+eH+20:eT-cf.height ).toString() + "px";		
	}
	else
	{
		cf.style.top = ( (bottomSpace>=cf.height)?eT+eH+20:eT-cf.height ).toString() + "px";		
	}
	
	cf.style.left=( (isXhtml?document.documentElement.clientWidth:document.body.clientWidth-(eL-sL)>=cf.width)?eL:eL+eW-cf.width ).toString() + "px";
	cf.style.display="block";
	
	//==============新版本更新: 关于日历显示位置的更改 ziqiu.zhang 结束	=================
	* */
	
	
	if (!(iPosLeft && iPosTop))
	{
//	    var pos = getAbsolutePos(oImg);  
//	    iPosLeft = pos.x;
//	    iPosTop = pos.y + oImg.clientHeight;

	    var pos = getPositionNew(oImg);
	    iPosLeft = pos.OffsetLeft;
	    iPosTop = pos.OffsetTop +(oImg.clientHeight == null ? 0 : oImg.clientHeight);
	}
	cf.style.left = iPosLeft + "px";
	cf.style.top  = (iPosTop + 4) + "px";
	cf.height = 175;
	cf.style.display="block";
	
	wcf.openbound=bOpenBound;
	wcf.fld1=fld1;
	wcf.fld2=fld2;
	wcf.callback=sCallback;
	wcf.initCalendar();
}

function hideCalendar()
{
	var cf=document.getElementById("CalFrame");
	cf.style.display="none";
}

//获得控件在页面上的绝对位置
function getAbsolutePos(obj)
{
    var pos = { x: 0, y: 0 };
    var offset_x = obj.clientLeft;
    var offset_y = obj.clientTop;
    
    function innerFunction()
    {
        while(obj && (obj.style.position != "relative"))
        {
           pos.x += obj.offsetLeft;
           pos.y += obj.offsetTop;
           pos.x += obj.clientLeft;
           pos.y += obj.clientTop;
           //如果需要计算滚动条
           if(obj.scrollLeft)
             pos.x += obj.clientLeft;
           if(obj.scrollTop)
             pos.y += obj.scrollTop;
             
           obj=obj.offsetParent;
        }
    }
    
    innerFunction();
    pos.x -= offset_x;
    pos.y -= offset_y;
    
    return pos;
}


//ziqiu.zhang 2007.11.5

//得到鼠标滚过的距离 scrollTop 与 scrollLeft 
//用法与测试:
/*
	var myClient = getClient();
	alert("myClient.clientHeight:" + myClient.clientHeight);
	alert("myClient.clientWidth:" + myClient.clientWidth);
*/
function getScroll() 
{     
		var sTop = 0, sLeft = 0, sWidth = 0, sHeight = 0; 
        
		sTop = (document.body.scrollTop > document.documentElement.scrollTop)? document.body.scrollTop:document.documentElement.scrollTop;
		if( isNaN(sTop) || sTop <0 ){ sTop = 0 ;}
        
		sLeft = (document.body.scrollLeft > document.documentElement.scrollLeft )? document.body.scrollLeft:document.documentElement.scrollLeft;
		if( isNaN(sLeft) || sLeft <0 ){ sLeft = 0 ;}
		
		return { sTop:sTop, sLeft: sLeft, sWidth: sWidth, sHeight: sHeight }; 
}

//得到浏览器当前显示区域的大小 clientHeight 与 clientWidth
/*	用法与测试:
	var myScroll = getScroll();	
	alert("myScroll.sTop:" + myScroll.sTop);
	alert("myScroll.sLeft:" + myScroll.sLeft);
*/
function getClient()
{
    			var h1 = document.body.clientHeight;
			var h2 = document.documentElement.clientHeight;
			var isXhtml = (h2<=h1&&h2!=0)?true:false;
				
			this.clientHeight = isXhtml?document.documentElement.clientHeight:document.body.clientHeight;
			this.clientWidth  = isXhtml?document.documentElement.clientWidth:document.body.clientWidth;
            
    return {clientHeight:this.clientHeight,clientWidth:this.clientWidth};
}

//获取对象相对于Body对象的偏移量坐标.需要在Body元素加上position:relative, 并且保证任何父级元素都没有position:relative
/*  参数说明:
sObj      : 要弹出图层的事件源
    
用法与测试: 
var sObj = document.getElementById("divId");
var position = ScriptHelperV2.getPosition(sObj);
var sObjOffsetTop = parseInt(  position.OffsetTop );
var sObjOffsetLeft = parseInt( position.OffsetLeft );
*/
function getPositionNew(sObj) {
    var sObjOffsetTop = 0;      //事件源的垂直距离
    var sObjOffsetLeft = 0;     //事件源的水平距离

    /* 获取事件源对象的偏移量 */
    var tempObj = sObj; //用于计算事件源坐标的临时对象
    while (tempObj && tempObj.tagName.toUpperCase() != "BODY") {
        sObjOffsetTop += tempObj.offsetTop;
        sObjOffsetLeft += tempObj.offsetLeft;
        tempObj = tempObj.offsetParent;
    }
    tempObj = null;
    return { OffsetTop: sObjOffsetTop, OffsetLeft: sObjOffsetLeft };
}

function getClientNew(){
    //判断页面是否符合XHTML标准
    var isXhtml = true;
    if (document.documentElement == null || document.documentElement.clientHeight <= 0) {
        if (document.body.clientHeight > 0) {
            isXhtml = false;
        }
    }

    this.clientHeight = isXhtml ? document.documentElement.clientHeight : document.body.clientHeight;
    this.clientWidth = isXhtml ? document.documentElement.clientWidth : document.body.clientWidth;
    return { clientHeight: this.clientHeight, clientWidth: this.clientWidth };
}

//  得到鼠标滚过的距离 scrollTop 与 scrollLeft  
/*  用法与测试:
var myScroll = getScroll();
alert("myScroll.scrollTop:" + myScroll.scrollTop);
alert("myScroll.scrollLeft:" + myScroll.scrollLeft);
*/
function getScrollNew() {
    var scrollTop = 0, scrollLeft = 0;

    scrollTop = (document.body.scrollTop > document.documentElement.scrollTop) ? document.body.scrollTop : document.documentElement.scrollTop;
    if (isNaN(scrollTop) || scrollTop < 0) { scrollTop = 0; }

    scrollLeft = (document.body.scrollLeft > document.documentElement.scrollLeft) ? document.body.scrollLeft : document.documentElement.scrollLeft;
    if (isNaN(scrollLeft) || scrollLeft < 0) { scrollLeft = 0; }

    return { scrollTop: scrollTop, scrollLeft: scrollLeft };
}