var g_MINY = 1753;
var g_MAXY = 4500;
var g_month = 0;
var g_day = 0;
var g_year = 0;
var g_yLow = 1990;
var g_eC=null;
var g_eCV="";
var g_dFmt=GetDateFmt();
var g_fnCB=null;
var rgMC=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

function GetDowStart() {return 0;}
function GetDateFmt() {return "mmddyy";}
function GetDateSep() {return "/";}

function GetInputDate(t,f){
	var l = t.length;
	if(0 == l) return false;
	var cSp = '\0';
	var sSp1 = "";
	var sSp2 = "";
	for(var i = 0; i < t.length; i++){
		var c = t.charAt(i);
		if(c == ' ' || isdigit(c)) continue;
		else if(cSp == '\0' && (c == '/' || c == '-' || c == '.')){
		cSp = c;
		sSp1 = t.substring(i+1,l);
		}
		else if(c == cSp) sSp2 = t.substring(i+1,l);
		else if(c != cSp) return false;
	}
	if(0 == sSp1.length) return false;
	var m;
	var d;
	var y; 
	if(f=="mmddyy"){
		m = atoi(t);
		d = atoi(sSp1);
		if(0 != sSp2.length) y = atoi(sSp2);
		else y = DefYr(m,d);
	}
	else if(f=="ddmmyy"){
		m = atoi(sSp1);
		d = atoi(t);
		if(0 != sSp2.length) y = atoi(sSp2);
		else y = DefYr(m,d);
	}
	else{
		if(0 == sSp2.length) return false;
		m = atoi(sSp1);
		d = atoi(sSp2);
		y = atoi(t);
	}
	if(y < 100){
		y = 1900+y;
		while(y < g_yLow) y = y+100;
	}
	if(y < g_MINY || y > g_MAXY || m < 1 || m > 12) return false;
	if(d < 1 || d > GetMonthCount(m,y)) return false;
	g_month = m;
	g_day = d;
	g_year = y;
	return true;
}

function DefYr(m,d){
	var dt = new Date();
	var yCur = (dt.getYear() < 1000) ? 1900+dt.getYear() : dt.getYear();
	if(m-1 < dt.getMonth() || (m-1 == dt.getMonth() && d < dt.getDate())) return 1+yCur;
	else return yCur;
}

function atoi(s){
	var t = 0;
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if(!isdigit(c)) return t;
		else t = t*10 + (c-'0');
	}
	return t;
}

function isdigit(c) {return(c >= '0' && c <= '9');}
function GetMonthCount(m,y){
	var c = rgMC[m-1];
	if((2 == m) && IsLeapYear(y)) c++;
	return c;
}
function IsLeapYear(y){
	if(0 == y % 4 && ((y % 100 != 0) || (y % 400 == 0))) return true;
	else return false;
}

function cc_RegisterMouseDown(myDocBody,CurFrame) {
	if (CurFrame==EById('CalFrame').contentWindow) return;
	try {CurFrame.document.body.onmousedown 	= function() {myDocBody.fireEvent("onmousedown") } } 
	catch(e) {}
	for(var i=0;i < CurFrame.frames.length;i++) cc_RegisterMouseDown(myDocBody,CurFrame.frames[i]);
}

function cc_UnRegisterMouseDown(CurFrame) {
	if (CurFrame==EById('CalFrame').contentWindow) return;
	try {CurFrame.document.body.onmousedown 	= null; } 
	catch(e) {}
	for(var i=0;i < CurFrame.frames.length;i++) cc_UnRegisterMouseDown(CurFrame.frames[i]);
}

function cc_HideCalendar() {
	var dFFF;
	dFFF=EById('CalFrame');
	cc_UnRegisterMouseDown(top);
	if (dFFF) dFFF.style.display="none";
}

function ShowCalendar(eP,eD,eDP,dmin,dmax,fnCB,stopId,scrollId){
	cc_RegisterMouseDown(document.body,top);
	document.body.onmousedown	= cc_HideCalendar;
	var dF=EById('CalFrame');
	var wF=dF.contentWindow;

	if(null==wF.g_fCalLoaded || false==wF.g_fCalLoaded){
		alert("Unable to load popup calendar.\r\nPlease reload the page.");
		return;
	}
	wF.SetMinMax(new Date(dmin),new Date(dmax));
	g_fnCB=fnCB;

	if(eD==g_eC && "block"==dF.style.display){
		if(g_eCV != eD.value && GetInputDate(eD.value,g_dFmt)){
			wF.SetInputDate(g_day,g_month,g_year);
			wF.SetDate(g_day,g_month,g_year);
			g_eCV=eD.value;
		}
		else {
			dF.style.display="none";
		}
	}
	else {
		if(GetInputDate(eD.value,g_dFmt)){
			wF.SetInputDate(g_day,g_month,g_year);
			wF.SetDate(g_day,g_month,g_year);
		}
		else {
			if(null != eDP && GetInputDate(eDP.value,g_dFmt)){
			//	wF.SetInputDate(g_day,g_month,g_year);
				wF.SetDate(g_day,g_month,g_year);
			}
			else{
				var dt=new Date(dmin);
				wF.SetInputDate(-1,-1,-1);
				wF.SetDate(dt.getDate(),dt.getMonth()+1,dt.getFullYear());
			}
		}
		if (eP!=null) {
			dF.style.top =get_top( eP,EById(scrollId),190,stopId?EById(stopId):null)
			dF.style.left=get_left(eP,EById(scrollId),150,stopId?EById(stopId):null);
		}
		else {
			dF.style.top =""+((document.body.offsetHeight-192)/2)+"px";
			dF.style.left=""+((document.body.offsetWidth-145)/2)+"px";
		}
	
		g_eC=eD;
		g_eCV=eD.value;
		if ("none"==dF.style.display) dF.style.display="block";
	}
}

function SetDate(d,m,y){
	var ds=GetDateSep();
	var txtDateId="";
	if (undefined != CalFrame) txtDateId=CalFrame.document.all.txtDateId.value;
	if (txtDateId!="") g_eC=MyIndex.document.getElementById(txtDateId);
	if("mmddyy"==g_dFmt) {
		var m0	= "";
		if (m<9) m0='0';
		var d0	= "";
		if (d<9) d0='0';
		g_eC.value=m0+m+ds+d0+d+ds+y;
	}
	else 
		if("ddmmyy"==g_dFmt) g_eC.value=d+ds+m+ds+y;
		else g_eC.value=y+ds+m+ds+d;
	g_eCV=g_eC.value;
	if(null != g_fnCB && "" != g_fnCB) g_fnCB(g_eC.value);
	if (g_eC.disabled) return;
	g_eC.focus();
}
