var MN=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DN=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}
function fmtDt(date,fmt) {
	fmt=fmt+"";
	var rs="";
	var i_fmt=0;
	var c="";
	var tk="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MN[M-1];
	value["NNN"]=MN[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DN[E+7];
	value["EE"]=DN[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_fmt < fmt.length) {
		c=fmt.charAt(i_fmt);
		tk="";
		while ((fmt.charAt(i_fmt)==c) && (i_fmt < fmt.length)) {
			tk += fmt.charAt(i_fmt++);
			}
		if (value[tk] != null) { rs=rs + value[tk]; }
		else { rs=rs + tk; }
		}
	return rs;
	}
function isIn(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function gtIn(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var tk=str.substring(i,i+x);
		if (tk.length < minlength) { return null; }
		if (isIn(tk)) { return tk; }
		}
	return null;
	}
function gDFF(val,fmt) {
	val=val+"";
	fmt=fmt+"";
	var i_val=0;
	var i_fmt=0;
	var c="";
	var tk="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";
	while (i_fmt < fmt.length) {
		c=fmt.charAt(i_fmt);
		tk="";
		while ((fmt.charAt(i_fmt)==c) && (i_fmt < fmt.length)) {
			tk += fmt.charAt(i_fmt++);
			}
		if (tk=="yyyy" || tk=="yy" || tk=="y") {
			if (tk=="yyyy") { x=4;y=4; }
			if (tk=="yy")   { x=2;y=2; }
			if (tk=="y")    { x=2;y=4; }
			year=gtIn(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (tk=="MMM"||tk=="NNN"){
			month=0;
			for (var i=0; i<MN.length; i++) {
				var month_name=MN[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					if (tk=="MMM"||(tk=="NNN"&&i>11)) {
						month=i+1;
						if (month>12) { month -= 12; }
						i_val += month_name.length;
						break;
						}
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (tk=="EE"||tk=="E"){
			for (var i=0; i<DN.length; i++) {
				var day_name=DN[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (tk=="MM"||tk=="M") {
			month=gtIn(val,i_val,tk.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (tk=="dd"||tk=="d") {
			date=gtIn(val,i_val,tk.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (tk=="hh"||tk=="h") {
			hh=gtIn(val,i_val,tk.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (tk=="HH"||tk=="H") {
			hh=gtIn(val,i_val,tk.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (tk=="KK"||tk=="K") {
			hh=gtIn(val,i_val,tk.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (tk=="kk"||tk=="k") {
			hh=gtIn(val,i_val,tk.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (tk=="mm"||tk=="m") {
			mm=gtIn(val,i_val,tk.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (tk=="ss"||tk=="s") {
			ss=gtIn(val,i_val,tk.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (tk=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+tk.length)!=tk) {return 0;}
			else {i_val+=tk.length;}
			}
		}
	if (i_val != val.length) { return 0; }
	if (month==2) {
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) {
			if (date > 29){ return 0; }
			}
		else { if (date > 28) { return 0; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return 0; }
		}
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
	}
function parseDate(val) {
	var preferEuro=(arguments.length==2)?arguments[1]:false;
	generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');
	monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');
	dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');
	var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');
	var d=null;
	for (var i=0; i<checkList.length; i++) {
		var l=window[checkList[i]];
		for (var j=0; j<l.length; j++) {
			d=gDFF(val,l[j]);
			if (d!=0) { return new Date(d); }
			}
		}
	return null;
	}
function pw_xy(anchorname) {
	var curleft = curtop = 0;
	var obj=document.getElementById(anchorname);
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	this.x = curleft; this.y = curtop-195;
	}
function pw_p(contents) {
	this.contents = contents;
	this.populated = false;
	}
function pw_rf() {
	document.getElementById(this.divName).innerHTML = this.contents;
	}
function pw_sp(anchorname) {
	this.xy(anchorname);
	this.x += this.offsetX;
	this.y += this.offsetY;
	if (!this.populated && (this.contents != "")) {
		this.populated = true;
		this.refresh();
		}
	if (this.divName != null) {
		document.getElementById(this.divName).style.left = this.x + "px";
		document.getElementById(this.divName).style.top = this.y + "px";
		document.getElementById(this.divName).style.visibility = "visible";
		}
	}
function pw_hp() {
	if (this.divName != null) {
		document.getElementById(this.divName).innerHTML='';
		document.getElementById(this.divName).style.visibility = "hidden"; window.pp=false;
		}
	}
function PopupWindow() {
	if (!window.popupWindowIndex) { window.popupWindowIndex = 0; }
	if (!window.popupWindowObjects) { window.popupWindowObjects = new Array(); }
	this.index = popupWindowIndex++;
	popupWindowObjects[this.index] = this;
	this.divName = null;
	this.width=0;
	this.height=0;
	this.populated = false;
	this.visible = false;
	this.contents = "";
	this.type="DIV";
	this.divName = arguments[0];
	this.offsetX = 0;
	this.offsetY = 0;
	this.xy = pw_xy;
	this.pp = pw_p;
	this.refresh = pw_rf;
	this.showPopup = pw_sp;
	this.hidePopup = pw_hp;
	}
function CalendarPopup() {
	var c;
	c = new PopupWindow(arguments[0]);
	c.mnm = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	c.ma = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	c.dh = new Array("S","M","T","W","T","F","S");
	c.rf = "cl_trf";
	c.wsd = 0;
	c.dty = "date";
	c.dwd = new Object();
	c.dde = "";
	c.currentDate = null;
	c.todayText="Today";
	c.cssPrefix="";
	window.cl_co = null;
	window.cl_ti = null;
	window.cl_df = "MM/dd/yyyy";
	c.mn2w = cl_mn2w;
	c.adsd = cl_adsd;
	c.scl = cl_sc;
	c.hcl = cl_hc;
	c.rcl = cl_rc;
	c.gcl = cl_gc;
	c.select = cl_s;
	c.mn2w();
	return c;
	}

function cl_mn2w() {
	if (typeof(window.MN)!="undefined" && window.MN!=null) {
		window.MN = new Array();
		for (var i=0; i<this.mnm.length; i++) {
			window.MN[window.MN.length] = this.mnm[i];
		}
		for (var i=0; i<this.ma.length; i++) {
			window.MN[window.MN.length] = this.ma[i];
		}
	}
}
function cl_trf(y,m,d) { 
	if (window.cl_ti!=null) {
		var dt = new Date(y,m-1,d,0,0,0);
		if (window.cl_co!=null) { window.cl_co.mn2w(); }
		window.cl_ti.value = fmtDt(dt,window.cl_df);
		}
	else {
		alert('Use setReturnFunction() to define which function will get the clicked rss!'); 
		}
	}
function cl_adsd(start, end) {
	if (arguments.length==1) { end=start; }
	if (start==null && end==null) { return; }
	if (this.dde!="") { this.dde+= "||"; }
	if (start!=null) { start = parseDate(start); start=""+start.getFullYear()+LZ(start.getMonth()+1)+LZ(start.getDate());}
	if (end!=null) { end=parseDate(end); end=""+end.getFullYear()+LZ(end.getMonth()+1)+LZ(end.getDate());}
	if (start==null) { this.dde+="(ds<="+end+")"; }
	else if (end  ==null) { this.dde+="(ds>="+start+")"; }
	else { this.dde+="(ds>="+start+"&&ds<="+end+")"; }
	}
function cl_hc() {
	if (arguments.length > 0) { window.popupWindowObjects[arguments[0]].hidePopup(); }
	else { this.hidePopup(); }
	}
function cl_rc(index) {
	var calObject = window.popupWindowObjects[index];
	if (arguments.length>1) { 
		calObject.pp(calObject.gcl(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]));
		}
	else {
		calObject.pp(calObject.gcl());
		}
	calObject.refresh();
	}
function cl_sc(anchorname) {
	if (arguments.length>1) {
		if (arguments[1]==null||arguments[1]=="") {
			this.currentDate=new Date();
			}
		else {
			this.currentDate=new Date(parseDate(arguments[1]));
			}
		}
	this.pp(this.gcl());
	this.showPopup(anchorname);
	}
function cl_s(inputobj, linkname, fmt) {
	handleClk(); window.pp=this.divName;
	var selectedDate=(arguments.length>3)?arguments[3]:null;
	if (!window.gDFF) {
		alert("calendar.select: To use this method you must also include 'date.js' for date formatting");
		return;
		}
	if (inputobj.disabled) { alert("Can't use calendar input on disabled form input !"); return; }
	window.cl_ti = inputobj;
	window.cl_co = this;
	this.currentDate=null;
	var time=0;
	if (selectedDate!=null) {
		time = gDFF(selectedDate,fmt)
		}
	else if (inputobj.value!="") {
		time = gDFF(inputobj.value,fmt);
		}
	if (selectedDate!=null || inputobj.value!="") {
		if (time==0) { this.currentDate=null; }
		else { this.currentDate=new Date(time); }
		}
	window.cl_df = fmt;
	this.scl(linkname);
	}
function cl_gc() {
	var now = new Date();
	var windowref = "";
	var rs = "";
	rs += '<TABLE CLASS="'+this.cssPrefix+'cpBorder" WIDTH=144 BORDER=1 BORDERWIDTH=1 CELLSPACING=0 CELLPADDING=1>\n';
	rs += '<TR><TD ALIGN=CENTER>\n';
	rs += '<CENTER>\n';
	if (this.dty=="date" || this.dty=="week-end") {
		if (this.currentDate==null) { this.currentDate = now; }
		if (arguments.length > 0) { var month = arguments[0]; }
			else { var month = this.currentDate.getMonth()+1; }
		if (arguments.length > 1 && arguments[1]>0 && arguments[1]-0==arguments[1]) { var year = arguments[1]; }
			else { var year = this.currentDate.getFullYear(); }
		var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
		if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {
			daysinmonth[2] = 29;
			}
		var current_month = new Date(year,month-1,1);
		var display_year = year;
		var display_month = month;
		var display_date = 1;
		var weekday= current_month.getDay();
		var offset = 0;
		offset = (weekday >= this.wsd) ? weekday-this.wsd : 7-this.wsd+weekday ;
		if (offset > 0) {
			display_month--;
			if (display_month < 1) { display_month = 12; display_year--; }
			display_date = daysinmonth[display_month]-offset+1;
			}
		var next_month = month+1;
		var next_month_year = year;
		if (next_month > 12) { next_month=1; next_month_year++; }
		var last_month = month-1;
		var last_month_year = year;
		if (last_month < 1) { last_month=12; last_month_year--; }
		var date_class;
		if (this.type!="WINDOW") {
			rs += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";
			}
		rs += '<TR>\n';
		var refresh = windowref+'cl_rc';
		var refreshLink = refresh;
		rs += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="" onClick="'+refreshLink+'('+this.index+','+last_month+','+last_month_year+'); return false;">&lt;&lt;</A></TD>\n';
		rs += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="100"><SPAN CLASS="'+this.cssPrefix+'cpMonthNavigation">'+this.mnm[month-1]+' '+year+'</SPAN></TD>\n';
		rs += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="" onClick="'+refreshLink+'('+this.index+','+next_month+','+next_month_year+'); return false;">&gt;&gt;</A></TD>\n';
		rs += '</TR></TABLE>\n';
		rs += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=0 CELLPADDING=1 ALIGN=CENTER>\n';
		rs += '<TR>\n';
		for (var j=0; j<7; j++) {
			rs += '<TD CLASS="'+this.cssPrefix+'cpDayColumnHeader" WIDTH="14%"><SPAN CLASS="'+this.cssPrefix+'cpDayColumnHeader">'+this.dh[(this.wsd+j)%7]+'</TD>\n';
			}
		rs += '</TR>\n';
		for (var row=1; row<=6; row++) {
			rs += '<TR>\n';
			for (var col=1; col<=7; col++) {
				var disabled=false;
				if (this.dde!="") {
					var ds=""+display_year+LZ(display_month)+LZ(display_date);
					eval("disabled=("+this.dde+")");
					}
				var dateClass = "";
				if ((display_month == this.currentDate.getMonth()+1) && (display_date==this.currentDate.getDate()) && (display_year==this.currentDate.getFullYear())) {
					dateClass = "cpCurrentDate";
					}
				else if (display_month == month) {
					dateClass = "cpCurrentMonthDate";
					}
				else {
					dateClass = "cpOtherMonthDate";
					}
				if (disabled || this.dwd[col-1]) {
					rs += '	<TD CLASS="'+this.cssPrefix+dateClass+'"><SPAN CLASS="'+this.cssPrefix+dateClass+'Disabled">'+display_date+'</SPAN></TD>\n';
					}
				else {
					var selected_date = display_date;
					var selected_month = display_month;
					var selected_year = display_year;
					if (this.dty=="week-end") {
						var d = new Date(selected_year,selected_month-1,selected_date,0,0,0,0);
						d.setDate(d.getDate() + (7-col));
						selected_year = d.getYear();
						if (selected_year < 1000) { selected_year += 1900; }
						selected_month = d.getMonth()+1;
						selected_date = d.getDate();
						}
					rs += '	<TD CLASS="'+this.cssPrefix+dateClass+'"><A HREF="" onClick="'+windowref+this.rf+'('+selected_year+','+selected_month+','+selected_date+');'+windowref+'cl_hc(\''+this.index+'\'); return false;" CLASS="'+this.cssPrefix+dateClass+'">'+display_date+'</A></TD>\n';
					}
				display_date++;
				if (display_date > daysinmonth[display_month]) {
					display_date=1;
					display_month++;
					}
				if (display_month > 12) {
					display_month=1;
					display_year++;
					}
				}
			rs += '</TR>';
			}
		var current_weekday = now.getDay() - this.wsd;
		if (current_weekday < 0) {
			current_weekday += 7;
			}
		rs += '<TR>\n';
		rs += '	<TD COLSPAN=7 ALIGN=CENTER CLASS="'+this.cssPrefix+'cpTodayText">\n';
		if (this.dde!="") {
			var ds=""+now.getFullYear()+LZ(now.getMonth()+1)+LZ(now.getDate());
			eval("disabled=("+this.dde+")");
			}
		if (disabled || this.dwd[current_weekday+1]) {
			rs += '		<SPAN CLASS="'+this.cssPrefix+'cpTodayTextDisabled">'+this.todayText+'</SPAN>\n';
			}
		else {
			rs += '		<A CLASS="'+this.cssPrefix+'cpTodayText" HREF="" onClick="'+windowref+this.rf+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'cl_hc(\''+this.index+'\'); return false;">'+this.todayText+'</A>\n';
			}
		rs += '		<BR>\n';
		rs += '	</TD></TR></TABLE></CENTER></TD></TR></TABLE>\n';
	}
	return rs;
}

var now = new Date(); 
now.setDate(now.getDate()-1); 
var cal1 = new CalendarPopup("mydiv1"); 
//cal1.adsd(null, fmtDt(now,"yyyy-MM-dd")); 

var cal12 = new CalendarPopup("mydiv2"); 
cal12.adsd(null, fmtDt(now,"yyyy-MM-dd")); 

document.onclick = handleClk; function handleClk(){ if(window.pp){ document.getElementById(window.pp).innerHTML=''; document.getElementById(window.pp).style.visibility = "hidden"; window.pp=false;}}