/*	
	双日历控件 ziqiu.zhang 2007.11.5日 
	改版自elong.com 原单日历控件
	增加了对XHtml的支持.
 */

var url = "js/calendar/calendar.html";
document.write("<iframe id=\"CalFrame\" name=\"CalFrame\" frameborder=\"0\" src=\""
				+ url
				+ "\" style=\"display:none;position:absolute;z-index:110\"></iframe>");
document.onclick = hideCalendar;

function getRelativePath() {
	var url = location.href;// 当前url
	var path = url.length - url.replace(/\//g, "").length - 4;

	// 层次为url包含/的长度-没有包含/的长度再减去项目头/的个数(如:http://hi.baidu.com/zdz8207/)
	var str = "";
	for ( var i = 0; i < path; i++) {
		str += "../";// 组合成一个相对路径的字符串返回
	}
	return str;
}

function displayCalendar(inputEleId, bOpenBound, sFld1){
	
	var sdd = new Date();
	sStartD = document.getElementById(inputEleId).value;
	sEndD = (sdd.getYear(0) + 1) + "-" + sdd.getMonth() + "-" + sdd.getDay();
	
	var fld1, fld2;
	var cf = document.getElementById("CalFrame");
	var wcf = window.frames.CalFrame;

	var oImg = document.getElementById(inputEleId);
	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 (!wcf.bCalLoaded) {
		alert("日历未成功装载！请刷新页面！");
		return;
	}
	
	if (cf.style.display == "block") {
		cf.style.display = "none";
		return;
	}

	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;
	
	var inputPosition = this.getElementPosition(inputEleId);
	var elementHeight = document.getElementById(inputEleId).offsetHeight;
	
	cf.style.top = inputPosition.y + elementHeight + "px";
	cf.style.left = inputPosition.x + "px";
	
	cf.style.display = "block";

	wcf.openbound = bOpenBound;
	wcf.fld1 = fld1;
	wcf.fld2 = fld2;
	wcf.callback = SetReturnDatecn;
	wcf.initCalendar();
}

function showCalendar(inputEleId, bOpenBound, sFld1, sNextP, sNextD, sStartD, sEndD,
		sVD, sOE, sVDE, sOT, s3F, sFld2, sCallback, sNextVDE, sLeftPx, sTopPx) {
	// 1.inputEleId日历弹出位置的控件的名称,
	// 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 下一次焦点的有效时间.

	sStartD = document.getElementById(inputEleId).value;
	var sdd = new Date();
	sEndD = (sdd.getYear(0) + 1) + "-" + sdd.getMonth() + "-" + sdd.getDay()
//	if (inputEleId == "FromDate")
		sStartD = "";

	var fld1, fld2;
	var cf = document.getElementById("CalFrame");
	var wcf = window.frames.CalFrame;

	var oImg = document.getElementById(inputEleId);
	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;
	}

	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 = sTopPx ? sTopPx + "px" : ((bottomSpace >= cf.height) ? eT + eH + 24 : eT - cf.height).toString() + "px";
	} else {
		cf.style.top = sTopPx ? sTopPx + "px" : ((bottomSpace >= cf.height) ? eT + eH + 24 : eT
				- cf.height).toString()
				+ "px";

	}

	cf.style.left = sLeftPx ? sLeftPx + "px" : ((isXhtml ? document.documentElement.clientWidth
			: document.body.clientWidth - (eL - sL) >= cf.width) ? eL : eL + eW
			- cf.width).toString()
			+ "px";
	cf.style.display = "block";

	wcf.openbound = bOpenBound;
	wcf.fld1 = fld1;
	wcf.fld2 = fld2;
	wcf.callback = sCallback;
	wcf.initCalendar();
}

function getElementPosition(elementId) {
	var ua = navigator.userAgent.toLowerCase();
	var isOpera = (ua.indexOf('opera') != -1);
	var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

	var el = document.getElementById(elementId);

	if (el.parentNode === null || el.style.display == 'none') {
		return false;
	}

	var parent = null;
	var pos = [];
	var box;

	if (el.getBoundingClientRect) // IE
	{
		box = el.getBoundingClientRect();
		var scrollTop = Math.max(document.documentElement.scrollTop,
				document.body.scrollTop);
		var scrollLeft = Math.max(document.documentElement.scrollLeft,
				document.body.scrollLeft);

		return {
			x :box.left + scrollLeft,
			y :box.top + scrollTop
		};
	} else if (document.getBoxObjectFor) // gecko
	{
		box = document.getBoxObjectFor(el);

		var borderLeft = (el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth)
				: 0;
		var borderTop = (el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth)
				: 0;

		pos = [ box.x - borderLeft, box.y - borderTop ];
	} else // safari & opera
	{
		pos = [ el.offsetLeft, el.offsetTop ];
		parent = el.offsetParent;
		if (parent != el) {
			while (parent) {
				pos[0] += parent.offsetLeft;
				pos[1] += parent.offsetTop;
				parent = parent.offsetParent;
			}
		}
		if (ua.indexOf('opera') != -1
				|| (ua.indexOf('safari') != -1 && el.style.position == 'absolute')) {
			pos[0] -= document.body.offsetLeft;
			pos[1] -= document.body.offsetTop;
		}
	}

	if (el.parentNode) {
		parent = el.parentNode;
	} else {
		parent = null;
	}

	while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account
																				// for
																				// any
																				// scrolled
																				// ancestors
		pos[0] -= parent.scrollLeft;
		pos[1] -= parent.scrollTop;

		if (parent.parentNode) {
			parent = parent.parentNode;
		} else {
			parent = null;
		}
	}
	
	return {
		x :pos[0],
		y :pos[1]
	};
}

function hideCalendar() {
	var cf = document.getElementById("CalFrame");
	cf.style.display = "none";
}

/**
 * 返回滚动距离
 * 
 * @return object
 */
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
	};
}

/**
 * 返回浏览器当前区域大小
 * 
 * @return object
 */
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
	};
}


function ShowErrStr(objID){
	var isIE = (navigator.appVersion.indexOf('MSIE') >= 0);
	
	if (isIE){
		getObj(objID).style.display = 'block'
	} else {
		getObj(objID).removeAttribute("style");
		getObj(objID).style.width = "auto";
	}
	
}

function getObj(objID){
	if (document.getElementById) {
		return document.getElementById(objID);
	} else if (document.all) {
		return document.all[objID];
	} else if (document.layers) {
		return document.layers[objID];
	}
	
}

function SetReturnDatecn(){
	//var r = document.getElementById("FromCity").value;

	//r.setHours(8);//加八小时是因为我们处于东八区 
	//r.setDate(r.getDate()+1);
		
	//var n = r.getMonth() +1;

	//document.getElementById("ToCity").value = r.getUTCFullYear() + "-" + n + "-" + r.getDate();

}

/**
 * 错误信息显示
 * 
 * @param divid
 * @param errtext
 * 
 * @return
 */
function ShowErrDIV(divid,errtext){
	var inputLeft,inputTop;
	GetInputXY(divid + '_input');
	
	getObj( divid+'_err').style.left = inputLeft + 3;
	getObj( divid+'_err').style.top = inputTop + 20;	
	
	getObj( divid+'_err').innerHTML = errtext;
	
	getObj( divid+'_err').style.visibility = 'visible';
	
	function GetInputXY(inputid){
		var p = getObj(inputid);
		var eT = 0,eL = 0;
		var isIE =(navigator.appVersion.indexOf('MSIE') >= 0);
		
		while(p && p.tagName != "BODY"){
			if (isIE){
				eT+=p.offsetTop;
				eL+=p.offsetLeft;
			} else {
				//eL += p.currentStyle.borderLeftWidth;
				//eT += p.currentStyle.borderTopWidth;
			}
			
			p = p.offsetParent;
		}
		
		inputLeft = eL;
		inputTop  = eT;
	}
}