var calendar2={
	tr : "<tr>",
	trc : "</tr>",
	td : "<td>",
	tdc : "</td>",
	spc : "</span>",
	dName : new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"),
	mName : new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),
	myDate : new Date(),
	bDay : 0,
	nDate : new Date(),
	actDate : new Date(),
	objTxt:null,
	objSPC:null,
	objPRT:null,
	bCLD : false,
	sameDate : false
}
calendar2.calOffset=function(obj,attr) {
	var offset=0;
	while(obj) {
		offset += obj[attr];
		obj=obj.offsetParent;
	}
	return offset;
}
calendar2.showCalendar=function(objName, nM, elin, elout, elnight, elimaxnight) {
	this.elin=null, this.elout=null, this.elnight=null, this.elimaxnight=null;
	if(elin){
		this.elin=document.getElementById(elin);
		this.elout=document.getElementById(elout);
		this.elnight=document.getElementById(elnight);
		this.elimaxnight=elimaxnight;
	}
	var actDate=this.actDate;
	var dfDate=this.dfDate;
	this.bCLD=true;
	this.objPRT=document.getElementById(objName);
	var width=196*nM;
	var left=this.calOffset(this.objPRT,"offsetLeft");
	var top=this.calOffset(this.objPRT,"offsetTop") + this.objPRT.offsetHeight;

	if(!document.getElementById("dCLD")){
		var div = document.createElement("div");
		div.id="dCLD";
		div.className="select-free";
		document.body.appendChild(div);
		document.getElementById("dCLD").innerHTML = "<div class=\"bd\" id=\"dCLD2\"></div><!--[if lte IE 6.5]><iframe></iframe><![endif]-->";
	}

	this.objSPC=document.getElementById("dCLD");
	this.objTxt=document.getElementById("dCLD2");
	var objLs=this.objSPC.style;
	var strD = this.objPRT.value;
	strD=strD.replace(/-/g,"");
	if (strD.length!=6)  { actDate=dfDate; } else { actDate.setFullYear(2000 + (strD.substr(4,2)-0),(strD.substr(2,2)-1),(strD.substr(0,2)-0)); }
	this.objTxt.innerHTML=this.crtCLD(actDate,nM,actDate);
	objLs.border="2px solid #665555";
	objLs.left=left + "px";
	objLs.top=top + "px";
	objLs.width=width + "px";
	objLs.display="";
}
calendar2.setTxt=function(nY,nM,nD) {
	var strM=nM; var strD=nD;
	if (nM.length<2) strM="0" + nM;
	if (nD.length<2) strD="0" + nD;
	this.objPRT.value=strD + "-" + strM + "-" + nY;
	this.clsCal();

	if(this.elimaxnight){
		var inFloat = this.elin.value.split("-");
		var outFloat = this.elout.value.split("-");
		if(this.elnight.getAttribute("iText")=="1"){
			var nightFloat = parseFloat(this.elnight.innerHTML);
		}else{
			var nightFloat = parseFloat(this.elnight.value);
		}
		var inDate = new Date(parseFloat("20"+inFloat[2]), parseFloat(inFloat[1])-1, parseFloat(inFloat[0]));
		var outDate = new Date(parseFloat("20"+outFloat[2]), parseFloat(outFloat[1])-1, parseFloat(outFloat[0]));

		//checkin action
		var boutDate = false;
		if(this.objPRT.id==this.elin.id){
			//checkin before checkout calculate night
			if((+outDate)>(+inDate)){
				var diffFloat = ((+outDate)-(+inDate))/86400000;
				if(this.elimaxnight<diffFloat){
					diffFloat = this.elimaxnight;
					nightFloat = this.elimaxnight;
					if(this.elnight.getAttribute("iText")=="1"){
						this.elnight.innerHTML = diffFloat;
					}else{
						this.elnight.value = diffFloat;
					}
				}
			}
			boutDate = true;
		}else
		//checkout action
		{
			boutDate = true;
			var nightFloat = 1;
			if((+outDate)>(+inDate)){
				boutDate = false;
				var nightFloat = ((+outDate)-(+inDate))/86400000;
				if(nightFloat>this.elimaxnight){
					boutDate = true;
					nightFloat = this.elimaxnight;
				}
			}

			//checkout samedate
			if(calendar2.sameDate){
				if((+outDate)<=(+inDate)){nightFloat = 0;}
			}

			if(this.elnight.getAttribute("iText")=="1"){
				this.elnight.innerHTML = nightFloat;
			}else{
				this.elnight.value = nightFloat;
			}
		}
		if(boutDate){
			var outDate = new Date(parseFloat("20"+inFloat[2]), parseFloat(inFloat[1])-1, parseFloat(inFloat[0])+nightFloat);
			var dd = (outDate.getDate()).toString();
			var mm = (outDate.getMonth()+1).toString();
			var yy = outDate.getFullYear().toString().substr(2,2);
			if(dd.length<2) dd="0" + dd;
			if(mm.length<2) mm="0" + mm;
			this.elout.value = dd+"-"+mm+"-"+yy;
		}
	}
}
calendar2.clsCal=function() {
	this.objSPC.style.display="none";
}
calendar2.mvCLD=function(mvY,mvM,nM) {
	this.bCLD=true;
	var nY=parseInt(mvY);
	if (nY<1900) { nY=nY+1900; }
	this.myDate.setFullYear(nY,mvM,1);
	this.objTxt.innerHTML=this.crtCLD(this.myDate,nM,this.actDate);
}
calendar2.crtCLD=function(objD,nM,objDF) {
	//Test Section
	var str="";
	str="<TABLE class=\"cT\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
	str=str + this.crtM_R(objD.getMonth(),objD.getYear(),nM) ;
	str=str + this.crtCM(objD,nM) ;
	str=str + this.crtTDay(nM);
	str=str + this.crtDate(objD,nM,objDF);
	str=str + "</TABLE>";
	return(str);
}
calendar2.crtM_R=function(mSt,nYear,nM) {
	var td=this.td;
	var tr=this.tr;
	var mName=this.mName;
	var tdc=this.tdc;
	var trc=this.trc;
	var str= tr;
	var mP=mSt;nY=nYear;
	if (nY<1900) { nY=nY+1900; }
	var cspan=0;
	str = str + td + tdc ;
	for (var i=0;i<nM;i++) {
		cspan=6;
		if (i==(nM-1)) { cspan=6; }
		if ((mP+i)>11) { mP=-1; nY=nY+ 1; }
		str = str + "<TD colspan=\"" + cspan + "\"><a class=\"cB1\">" + mName[mP+i] + " " + nY + "</a>" + tdc ;
	}
	str = str + td + "<a href=\"#\" class=\"cB2\" onClick=\"calendar2.clsCal();\">X</a>" + tdc + trc;
	return(str);
}
calendar2.crtCM=function(objD,nM) {
	var td=this.td;
	var tr=this.tr;
	var tdc=this.tdc;
	var trc=this.trc;
	var dfDate=this.dfDate;
	var sp="<label href=\"#\" class=\"cB3\" onClick=\"calendar2.mvCLD('";
	var spa="</label>";
	this.myDate=new Date();
	var str;
	var mSt=objD.getMonth();
	var ySt=objD.getYear();
	var cspan=3 + (7*(nM-1));
	var nY=this.dfDate.getYear();
	if (nY<1900) { nY=nY+1900; }

	str = tr + td + sp + (ySt-1) + "','" + mSt + "'," + nM + ");\">&lt;&lt;" + spa + tdc;
	str = str + td + sp + ySt + "','" + (mSt-1) + "'," + nM + ");\">&lt;" + spa + tdc;
	str = str + "<TD colspan=\"" + cspan + "\"><label class=\"cB3\" onClick=\"calendar2.setTxt('" + nY.toString().substr(2,2) + "','" + (dfDate.getMonth()+1) + "','" + dfDate.getDate() + "')\">Today" + spa + tdc;
	str = str + td + sp + ySt + "','" + (mSt+1) + "'," + nM + ");\">&gt;" + spa + tdc;
	str = str + td + sp + (ySt+1) + "','" + mSt + "'," + nM + ");\">&gt;&gt;" + spa + tdc+ trc;
	return(str);
}
calendar2.crtTDay=function(nM) {
	var td=this.td;
	var tdR=this.tdR;
	var tdB=this.tdB;
	var tr=this.tr;
	var tdc=this.tdc;
	var trc=this.trc;
	var str,strTmp;
	var tdR="<TD class=\"cDateR\" width=\"25\">";
	var tdB="<TD class=\"cDateB\" width=\"25\">";
	str = tdR + "Sun" + tdc + tdB + "Mon" + tdc + tdB + "Tue" + tdc + tdB + "Wed" + tdc + tdB + "Thu" + tdc + tdB + "Fri" + tdc + tdR + "Sat" + tdc;
	strTmp=str;
	strTmp=strTmp.split(">Sun<").join("style=\"border-left:1px solid #665555;\">Sun<");
	for (var i=0;i<nM-1;i++) { str = str + strTmp; }
	str = tr + str + trc;
	return(str);
}
calendar2.crtDate=function(objD,nM,objDF){
	var td=this.td;
	var tr=this.tr;
	var spc=this.spc;
	var tdc=this.tdc;
	var trc=this.trc;
	var nDate=this.nDate;
	//Find Max Week of all month
	var nDay,nLastDay,iDate;
	var mWeek=0;
	var nW=0;
	var str="";
	var nY=0;
	for (var i=0;i<nM;i++) {
		nY=objD.getYear();
		if (nY<1900) { nY=nY+1900; }
		nDate.setFullYear(nY,objD.getMonth()+i,objD.getDate()-objD.getDate()+1);
		nW=this.getMW(nDate);
		if (mWeek<nW) mWeek=nW;
	}
	//Loop weeks
	for (var i=0;i<mWeek;i++) {
		str=str + tr;
		for (var j=0;j<nM;j++) {
			nY=objD.getYear();
			if (nY<1900) { nY=nY+1900; }
			nDate.setFullYear(nY,objD.getMonth()+j,objD.getDate()-objD.getDate()+1);
			nDay=nDate.getDay();
			for (var k=0;k<7;k++) {
				//on each month each week display date
				nY=objD.getYear();
				if (nY<1900) { nY=nY+1900; }
				nDate.setFullYear(nY,objD.getMonth()+j+1,objD.getDate()-objD.getDate());
				nLastDay=nDate.getDate();
				iDate=(k + (i*7)-nDay+1);
				td="<td>";
				if(k==0 && j>0){
					td=td.split("<td>").join("<td style=\"border-left:1px solid #665555;\">");
				}
				if ((iDate<=nLastDay) && (iDate>0)) {
					if ((objDF.getYear()==nDate.getYear()) && (objDF.getMonth()==nDate.getMonth()) && (objDF.getDate()==iDate)) { //act Date
						str=str + td + "<span class=\"cDateA\">" + iDate + spc + tdc;
					}
					else {
						if(new Date(nDate.getFullYear(),nDate.getMonth(),iDate)<this.dfDate){
							str=str + td + "<span class=\"cDate-dis\">" + iDate + spc + tdc;
						}else{
							str=str + td + "<span class=\"cDate-out\" onmouseover=\"this.className='cDate-over';\" onmouseout=\"this.className='cDate-out';\" onClick=\"calendar2.setTxt('" + nDate.getFullYear().toString().substr(2,2) + "','" + (nDate.getMonth()+1) + "','" + iDate + "')\">" + iDate + spc + tdc;
						}
					}
				}
				else {
					str=str + td + "&nbsp;" + tdc;
				}
			}
		}
		str=str + trc;
	}
	return(str);
}
calendar2.getMW=function(objD) {
	var nDate=this.nDate;
	var nY=objD.getYear();
	if (nY<1900) { nY=nY+1900; }
	nDate.setFullYear(nY,objD.getMonth(),objD.getDate()-objD.getDate()+1);
	var nDay=nDate.getDay();
	nDate.setFullYear(nY,nDate.getMonth()+1,0);
	var nLDate=nDate.getDate();
	var nW=Math.ceil((nDay+nLDate)/7);
	return(nW);
}
calendar2.addEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else { // Opera (or old browsers)
		el["on" + evname] = func;
	}
};
calendar2.removeEvent = function(el, evname, func) {
	if (el.detachEvent) { // IE
		el.detachEvent("on" + evname, func);
	} else if (el.removeEventListener) { // Gecko / W3C
		el.removeEventListener(evname, func, true);
	} else { // Opera (or old browsers)
		el["on" + evname] = null;
	}
};
calendar2.nightCalendar=function(elin, elout, elnight, elimaxnight){
	this.elin=document.getElementById(elin);
	this.elout=document.getElementById(elout);
	this.elnight=document.getElementById(elnight);
	this.elimaxnight=elimaxnight;
	if((parseFloat(this.elnight.value)*1).toString()!=this.elnight.value){this.elnight.value=1;}
	if(parseFloat(this.elnight.value)<1){this.elnight.value=1;}
	if(parseFloat(this.elnight.value)>this.elimaxnight){this.elnight.value=this.elimaxnight;}

	var inFloat = this.elin.value.split("-");
	var outFloat = this.elout.value.split("-");
	var nightFloat = parseFloat(this.elnight.value);
	var inDate = new Date(parseFloat("20"+inFloat[2]), parseFloat(inFloat[1])-1, parseFloat(inFloat[0]));
	var outDate = new Date(parseFloat("20"+inFloat[2]), parseFloat(inFloat[1])-1, parseFloat(inFloat[0])+nightFloat);
	var dd = (outDate.getDate()).toString();
	var mm = (outDate.getMonth()+1).toString();
	var yy = outDate.getFullYear().toString().substr(2,2);
	if(dd.length<2) dd="0" + dd;
	if(mm.length<2) mm="0" + mm;
	this.elout.value = dd+"-"+mm+"-"+yy;
}
calendar2.setup=function(elname, elact, nCal, elin, elout, elnight, elimaxnight){
	//if(!document.getElementById("dCLD"))document.write("<div class=\"select-free\" id=\"dCLD\"><div class=\"bd\" id=\"dCLD2\"></div><!--[if lte IE 6.5]><iframe></iframe><![endif]--></div>");
	document.onclick=function(){if(calendar2.objSPC!=null){if(calendar2.bCLD){calendar2.bCLD=false;}else{calendar2.clsCal();}}};
	//alert(elname+"::"+elact+"::"+nCal+"::"+elin+"::"+elout+"::"+elnight+"::"+elimaxnight);
	this.addEvent(document.getElementById(elact), "click", function(){calendar2.showCalendar(elname, nCal, elin, elout, elnight, elimaxnight);});
	this.dfDate = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()+this.bDay);
	var dd = (this.dfDate.getDate()).toString();
	var mm = (this.dfDate.getMonth()+1).toString();
	var yy = this.dfDate.getFullYear().toString().substr(2,2);
	if(elname==elin){
		if(document.getElementById(elin).value==""){
			if(dd.length<2) dd="0" + dd;
			if(mm.length<2) mm="0" + mm;
			document.getElementById(elin).value = dd+"-"+mm+"-"+yy;
			if(elout){
				var inDate = new Date(parseFloat("20"+yy), parseFloat(mm)-1, parseFloat(dd)+1);
				var dd = (inDate.getDate()).toString();
				var mm = (inDate.getMonth()+1).toString();
				var yy = inDate.getFullYear().toString().substr(2,2);
				if(dd.length<2) dd="0" + dd;
				if(mm.length<2) mm="0" + mm;
				document.getElementById(elout).value = dd+"-"+mm+"-"+yy;
				if(document.getElementById(elnight).getAttribute("iText")=="1"){
					document.getElementById(elnight).innerHTML = 1;
				}else{
					document.getElementById(elnight).value = 1;
				}
			}
		}
		if(elnight){
			if(document.getElementById(elnight).getAttribute("iText")==null){
				this.addEvent(document.getElementById(elnight), "change", function(){calendar2.nightCalendar(elin, elout, elnight, elimaxnight);});
			}
		}
	}
}

