function getAnchorPosition(anchorname){
var useWindow=false;
var coordinates=new Object();
var x=0,y=0;
var use_gebi=false,use_css=false,use_layers=false;
if(document.getElementById){use_gebi=true;}
else if(document.all){use_css=true;}
else if(document.layers){use_layers=true;}
if(use_gebi && document.all){
x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);}
else if(use_gebi){
var o=document.getElementById(anchorname);
x=AnchorPosition_getPageOffsetLeft(o);
y=AnchorPosition_getPageOffsetTop(o);}
else if(use_css){
x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);}
else if(use_layers){
var found=0;
for (var i=0; i<document.anchors.length; i++){
if(document.anchors[i].name==anchorname){found=1; break;}}
if(found==0){coordinates.x=0; coordinates.y=0; return coordinates;}
x=document.anchors[i].x;
y=document.anchors[i].y;}
else{
coordinates.x=0; coordinates.y=0; return coordinates;}
coordinates.x=x;
coordinates.y=y;
return coordinates;}
function getAnchorWindowPosition(anchorname){
var coordinates=getAnchorPosition(anchorname);
var x=0;
var y=0;
if(document.getElementById){
if(isNaN(window.screenX)){
x=coordinates.x-document.body.scrollLeft+window.screenLeft;
y=coordinates.y-document.body.scrollTop+window.screenTop;}
else{
x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;}}
else if(document.all){
x=coordinates.x-document.body.scrollLeft+window.screenLeft;
y=coordinates.y-document.body.scrollTop+window.screenTop;}
else if(document.layers){
x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;}
coordinates.x=x;
coordinates.y=y;
return coordinates;}
function AnchorPosition_getPageOffsetLeft (el){
var ol=el.offsetLeft;
while ((el=el.offsetParent) !=null){ol+=el.offsetLeft;}
return ol;}
function AnchorPosition_getWindowOffsetLeft (el){
return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;}	
function AnchorPosition_getPageOffsetTop (el){
var ot=el.offsetTop;
while((el=el.offsetParent) !=null){ot+=el.offsetTop;}
return ot;}
function AnchorPosition_getWindowOffsetTop (el){
return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;}
function PopupWindow_getXYPosition(anchorname){
var coordinates;
if(this.type=="WINDOW"){
coordinates=getAnchorWindowPosition(anchorname);}
else{
coordinates=getAnchorPosition(anchorname);}this.x=coordinates.x;this.y=coordinates.y;}
function PopupWindow_setSize(width,height){this.width=width;this.height=height;}
function PopupWindow_populate(contents){this.contents=contents;this.populated=false;}
function PopupWindow_setUrl(url){this.url=url;}
function PopupWindow_setWindowProperties(props){this.windowProperties=props;}
function PopupWindow_refresh(){
if(this.divName !=null){
if(this.use_gebi){
document.getElementById(this.divName).innerHTML=this.contents;}
else if(this.use_css){
document.all[this.divName].innerHTML=this.contents;}
else if(this.use_layers){
var d=document.layers[this.divName]; 
d.document.open();
d.document.writeln(this.contents);
d.document.close();}}
else{
if(this.popupWindow !=null && !this.popupWindow.closed){
if(this.url!=""){this.popupWindow.location.href=this.url;}
else{this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close();}this.popupWindow.focus();}}}
function PopupWindow_showPopup(anchorname){this.getXYPosition(anchorname);this.x+=this.offsetX;this.y+=this.offsetY;
if(!this.populated && (this.contents !="")){this.populated=true;this.refresh();}
if(this.divName !=null){
if(this.use_gebi){
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";}
else if(this.use_css){
document.all[this.divName].style.left=this.x;
document.all[this.divName].style.top=this.y;
document.all[this.divName].style.visibility="visible";}
else if(this.use_layers){
document.layers[this.divName].left=this.x;
document.layers[this.divName].top=this.y;
document.layers[this.divName].visibility="visible";}}
else{
if(this.popupWindow==null || this.popupWindow.closed){
if(this.x<0){this.x=0;}
if(this.y<0){this.y=0;}
if(screen && screen.availHeight){
if((this.y + this.height) > screen.availHeight){this.y=screen.availHeight - this.height;}}
if(screen && screen.availWidth){
if((this.x + this.width) > screen.availWidth){this.x=screen.availWidth - this.width;}}
var avoidAboutBlank=window.opera || ( document.layers && !navigator.mimeTypes['*'] ) || navigator.vendor=='KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled );this.popupWindow=window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");}this.refresh();}}
function PopupWindow_hidePopup(){
if(this.divName !=null){
if(this.use_gebi){
document.getElementById(this.divName).style.visibility="hidden";}
else if(this.use_css){
document.all[this.divName].style.visibility="hidden";}
else if(this.use_layers){
document.layers[this.divName].visibility="hidden";}}
else{
if(this.popupWindow && !this.popupWindow.closed){this.popupWindow.close();this.popupWindow=null;}}}
function PopupWindow_isClicked(e){
if(this.divName !=null){
if(this.use_layers){
var clickX=e.pageX;
var clickY=e.pageY;
var t=document.layers[this.divName];
if((clickX > t.left) && (clickX < t.left+t.clip.width) && (clickY > t.top) && (clickY < t.top+t.clip.height)){
return true;}
else{return false;}}
else if(document.all){
var t=window.event.srcElement;
while (t.parentElement !=null){
if(t.id==this.divName){
return true;}
t=t.parentElement;}
return false;}
else if(this.use_gebi && e){
var t=e.originalTarget;
while (t.parentNode !=null){
if(t.id==this.divName){
return true;}
t=t.parentNode;}
return false;}
return false;}
return false;}
function PopupWindow_hideIfNotClicked(e){
if(this.autoHideEnabled && !this.isClicked(e)){this.hidePopup();}}
function PopupWindow_autoHide(){this.autoHideEnabled=true;}
function PopupWindow_hidePopupWindows(e){
for (var i=0; i<popupWindowObjects.length; i++){
if(popupWindowObjects[i] !=null){
var p=popupWindowObjects[i];
p.hideIfNotClicked(e);}}}
function PopupWindow_attachListener(){
if(document.layers){
document.captureEvents(Event.MOUSEUP);}
window.popupWindowOldEventListener=document.onmouseup;
if(window.popupWindowOldEventListener !=null){
document.onmouseup=new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();");}
else{
document.onmouseup=PopupWindow_hidePopupWindows;}}
function PopupWindow()
{
	if(!window.popupWindowIndex){window.popupWindowIndex=0;}
	if(!window.popupWindowObjects){window.popupWindowObjects=new Array();}
	if(!window.listenerAttached)
	{
		window.listenerAttached=true;
		PopupWindow_attachListener();
	}
	this.index=popupWindowIndex++;
	popupWindowObjects[this.index]=this;this.divName=null;this.popupWindow=null;this.width=0;this.height=0;this.populated=false;this.visible=false;this.autoHideEnabled=false;this.contents="";this.url="";this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";
	if(arguments.length>0)
	{
		this.type="DIV";
		this.divName=arguments[0];
	}
	else
		this.type="WINDOW";
	this.use_gebi=false;
	this.use_css=false;
	this.use_layers=false;
	if(document.getElementById)
		this.use_gebi=true;
	else if(document.all)
		this.use_css=true;
	else if(document.layers)
		this.use_layers=true;
	else
		this.type="WINDOW";
	this.offsetX=0;
	this.offsetY=0;
	this.getXYPosition=PopupWindow_getXYPosition;
	this.populate=PopupWindow_populate;
	this.setUrl=PopupWindow_setUrl;
	this.setWindowProperties=PopupWindow_setWindowProperties;
	this.refresh=PopupWindow_refresh;
	this.showPopup=PopupWindow_showPopup;
	this.hidePopup=PopupWindow_hidePopup;
	this.setSize=PopupWindow_setSize;
	this.isClicked=PopupWindow_isClicked;
	this.autoHide=PopupWindow_autoHide;
	this.hideIfNotClicked=PopupWindow_hideIfNotClicked;
	this.dpnd = new Array();
}
function CalendarPopup(){
	var c;
	if(arguments.length>0)
		c=new PopupWindow(arguments[0]);
	else
	{
		c=new PopupWindow();
		c.setSize(150,175);
	}
	if( arguments[1] !=null )
	{
		c.offsetX=arguments[1];
		c.offsetY=arguments[2];
	}
	else
	{
		c.offsetX=20;
		c.offsetY=-140;
	}
	c.autoHide();
	c.monthNames=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	c.monthAbbreviations=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	c.dayHeaders=new Array("S","M","T","W","T","F","S");
	c.returnFunction="CP_tmpReturnFunction";
	c.returnMonthFunction="CP_tmpReturnMonthFunction";
	c.returnQuarterFunction="CP_tmpReturnQuarterFunction";
	c.returnYearFunction="CP_tmpReturnYearFunction";
	c.weekStartDay=0;
	c.isShowYearNavigation=false;
	c.displayType="date";
	c.disabledWeekDays=new Object();
	c.disabledDatesExpression="";
	c.yearSelectStartOffset=2;
	c.currentDate=null;
	c.todayText="Today";
	c.cssPrefix="";
	c.isShowNavigationDropdowns=false;
	c.isShowYearNavigationInput=false;
	window.CP_calendarObject=null;
	window.CP_targetInput=null;
	window.CP_dateFormat="MM/dd/yyyy";
	c.copyMonthNamesToWindow=CP_copyMonthNamesToWindow;
	c.setReturnFunction=CP_setReturnFunction;
	c.setReturnMonthFunction=CP_setReturnMonthFunction;
	c.setReturnQuarterFunction=CP_setReturnQuarterFunction;
	c.setReturnYearFunction=CP_setReturnYearFunction;
	c.setMonthNames=CP_setMonthNames;
	c.setMonthAbbreviations=CP_setMonthAbbreviations;
	c.setDayHeaders=CP_setDayHeaders;
	c.setWeekStartDay=CP_setWeekStartDay;
	c.setDisplayType=CP_setDisplayType;
	c.setDisabledWeekDays=CP_setDisabledWeekDays;
	c.setDependency=CP_setDependency;
	c.addDisabledDates=CP_addDisabledDates;
	c.setYearSelectStartOffset=CP_setYearSelectStartOffset;
	c.setTodayText=CP_setTodayText;
	c.showYearNavigation=CP_showYearNavigation;
	c.showCalendar=CP_showCalendar;
	c.hideCalendar=CP_hideCalendar;
	c.getStyles=getCalendarStyles;
	c.refreshCalendar=CP_refreshCalendar;
	c.getCalendar=CP_getCalendar;
	c.select=CP_select;
	c.setCssPrefix=CP_setCssPrefix;
	c.showNavigationDropdowns=CP_showNavigationDropdowns;
	c.showYearNavigationInput=CP_showYearNavigationInput;
	c.copyMonthNamesToWindow();
	c.dpnd = new Array();
	return c;
}
function CP_copyMonthNamesToWindow()
{
	if(typeof(window.MONTH_NAMES)!="undefined" && window.MONTH_NAMES!=null)
	{
		window.MONTH_NAMES=new Array();
		for (var i=0; i<this.monthNames.length; i++)
			window.MONTH_NAMES[window.MONTH_NAMES.length]=this.monthNames[i];
		for (var i=0; i<this.monthAbbreviations.length; i++)
			window.MONTH_NAMES[window.MONTH_NAMES.length]=this.monthAbbreviations[i];
	}
	if ( this.dpnd )
		window.CP_dependency = this.dpnd;
}
function CP_tmpReturnFunction(y,m,d)
{
	if(window.CP_targetInput!=null)
	{
		var dt=new Date(y,m-1,d,0,0,0);
		if(window.CP_calendarObject!=null)
			window.CP_calendarObject.copyMonthNamesToWindow();
		window.CP_targetInput.value=formatDate(dt,window.CP_dateFormat);
		if ( window.CP_targetInput.id  == window.CP_dependency[1].id && window.CP_dependency[0] )
		{
			var dpnd_date = new Date(y,m-1,d+window.CP_dependency[2],0,0,0);
			if ( getDateFromFormat(window.CP_dependency[0].value,window.CP_dateFormat) < dpnd_date )
				 window.CP_dependency[0].value = formatDate(dpnd_date,window.CP_dateFormat)
		}
	}
	else
		alert('Use setReturnFunction() to define which function will get the clicked results!');
}
function CP_tmpReturnMonthFunction(y,m){alert('Use setReturnMonthFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' ,month='+m);}
function CP_tmpReturnQuarterFunction(y,q){alert('Use setReturnQuarterFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' ,quarter='+q);}
function CP_tmpReturnYearFunction(y){alert('Use setReturnYearFunction() to define which function will get the clicked results!\nYou clicked: year='+y);}
function CP_setReturnFunction(name){this.returnFunction=name;}
function CP_setReturnMonthFunction(name){this.returnMonthFunction=name;}
function CP_setReturnQuarterFunction(name){this.returnQuarterFunction=name;}
function CP_setReturnYearFunction(name){this.returnYearFunction=name;}
function CP_setMonthNames(){
for (var i=0; i<arguments.length; i++){this.monthNames[i]=arguments[i];}this.copyMonthNamesToWindow();}
function CP_setMonthAbbreviations(){
for (var i=0; i<arguments.length; i++){this.monthAbbreviations[i]=arguments[i];}this.copyMonthNamesToWindow();}
function CP_setDayHeaders(){
for (var i=0; i<arguments.length; i++){this.dayHeaders[i]=arguments[i];}}
function CP_setWeekStartDay(day){this.weekStartDay=day;}
function CP_showYearNavigation(){this.isShowYearNavigation=(arguments.length>0)?arguments[0]:true;}
function CP_setDisplayType(type){
if(type!="date"){alert("Invalid display type! Must be 'date'"); return false;}this.displayType=type;}
function CP_setYearSelectStartOffset(num){this.yearSelectStartOffset=num;}
function CP_setDisabledWeekDays(){this.disabledWeekDays=new Object();
for (var i=0; i<arguments.length; i++){this.disabledWeekDays[arguments[i]]=true;}}
function CP_addDisabledDates(start,end){
if(arguments.length==1){end=start;}
if(start==null && end==null){return;}
if(this.disabledDatesExpression!=""){this.disabledDatesExpression+="||";}
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.disabledDatesExpression+="(ds<="+end+")";}
else if(end ==null){this.disabledDatesExpression+="(ds>="+start+")";}
else{this.disabledDatesExpression+="(ds>="+start+"&&ds<="+end+")";}}
function CP_setTodayText(text){this.todayText=text;}
function CP_setCssPrefix(val){this.cssPrefix=val;}
function CP_showNavigationDropdowns(){this.isShowNavigationDropdowns=(arguments.length>0)?arguments[0]:true;}
function CP_showYearNavigationInput(){this.isShowYearNavigationInput=(arguments.length>0)?arguments[0]:true;}
function CP_hideCalendar()
{
	if(arguments.length > 0)
		window.popupWindowObjects[arguments[0]].hidePopup();
	else
		this.hidePopup();
}
function CP_refreshCalendar(index)
{
	var calObject=window.popupWindowObjects[index];
	if(arguments.length>1)
		calObject.populate(calObject.getCalendar(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]));
	else
		calObject.populate(calObject.getCalendar());
	calObject.refresh();
}
function CP_setDependency(dependent, source, add)
{
	if ( !dependent || !source )
		return;
	this.dpnd[0] = dependent;
	this.dpnd[1] = source;
	this.dpnd[2] = add;
}
function CP_showCalendar(anchorname)
{
	if( arguments.length>1 )
	{
		if(arguments[1]==null||arguments[1]=="")
			this.currentDate=new Date();
		else
			this.currentDate=new Date(parseDate(arguments[1]));
	}
	this.populate(this.getCalendar());
	this.showPopup(anchorname);
}
function CP_select(inputobj,linkname,format)
{
	var selectedDate=(arguments.length>3)?arguments[3]:null;
	if(!window.getDateFromFormat)
	{
		alert("calendar.select: To use this method you must also include 'date.js' for date formatting");
		return;
	}
	if(this.displayType!="date")
	{
		alert("calendar.select: This function can only be used with displayType 'date'");
		return;
	}
	if(inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea")
	{
		alert("calendar.select: Input object passed is not a valid form input object"); 
		window.CP_targetInput=null;
		return;
	}
	if(inputobj.disabled){return;} // Can't use calendar input on disabled form input!
	window.CP_targetInput=inputobj;
	window.CP_calendarObject=this;
	this.currentDate=null;
	var time=0;
	if(selectedDate!=null)
	{
		time=getDateFromFormat(selectedDate,format);
	}
	else if(inputobj.value!="")
	{
		time=getDateFromFormat(inputobj.value,format);
	}
	if(selectedDate!=null || inputobj.value!="")
	{
		if(time==0)
			this.currentDate=null;
		else
			this.currentDate=new Date(time);
	}
	window.CP_dateFormat=format;
	this.showCalendar(linkname);
}
function getCalendarStyles()
{
	var result="";
	var p="";
	if(this!=null && typeof(this.cssPrefix)!="undefined" && this.cssPrefix!=null && this.cssPrefix!="")
		p=this.cssPrefix;
	return result;
}
function CP_getCalendar()
{
	var now=new Date();
	if(this.type=="WINDOW")
		var windowref="window.opener.";
	else
		var windowref="";
	var result="";
	result+='<table cellspacing="0" cellpadding="0">\n';
	result+='<tr><td>\n';
	if(this.displayType=="date")
	{
		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()-1;
		var datee = new Date();
		var offset=0;
		offset=(weekday >= this.weekStartDay) ? weekday-this.weekStartDay : 7-this.weekStartDay+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;
		result+='<table cellspacing="0" cellpadding="0">';
		result+='<tr>\n';
		var refresh=windowref+'CP_refreshCalendar';
		var refreshLink='javascript:' + refresh;
		if(this.isShowNavigationDropdowns)
		{
			result+='<td class="'+this.cssPrefix+'cpMonthNavigation" colspan="7">';
			result+='<select class="'+this.cssPrefix+'cpMonthNavigation" name="cpMonth" onchange="'+refresh+'('+this.index+',this.options[this.selectedIndex].value-0,'+(year-0)+');">';
			for( var monthCounter=1; monthCounter<=12; monthCounter++ )
			{
				var selected=(monthCounter==month) ? 'selected="selected"' : '';
				result+='<option value="'+monthCounter+'" '+selected+'>'+this.monthNames[monthCounter-1]+'</option>';
			}
			result+='</select>';
			result+='</td></tr><tr>';
			result+='<td class="'+this.cssPrefix+'cpYearNavigation" colspan="7">';
			result+='<select class="'+this.cssPrefix+'cpYearNavigation" name="cpYear" onchange="'+refresh+'('+this.index+','+month+',this.options[this.selectedIndex].value-0);">';
			for ( var yearCounter=year-this.yearSelectStartOffset; yearCounter<=year+this.yearSelectStartOffset; yearCounter++ )
			{
				var selected=(yearCounter==year) ? 'selected="selected"' : '';
				result+='<option value="'+yearCounter+'" '+selected+'>'+yearCounter+'</option>';
			}
			result+='</select></td>';
		}
		else
		{
			if(this.isShowYearNavigation)
			{
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation"><a class="'+this.cssPrefix+'cpMonthNavigation" href="'+refreshLink+'('+this.index+','+last_month+','+last_month_year+');">&lt;</A></td>';
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation"><span class="'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+'</SPAN></td>';
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation"><a class="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refreshLink+'('+this.index+','+next_month+','+next_month_year+');">&gt;</A></td>';
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation">&nbsp;</td>';
				result+='<td class="'+this.cssPrefix+'cpYearNavigation"><a class="'+this.cssPrefix+'cpYearNavigation" HREF="'+refreshLink+'('+this.index+','+month+','+(year-1)+');">&lt;</A></td>';
				if(this.isShowYearNavigationInput)
				{
					result+='<td class="'+this.cssPrefix+'cpYearNavigation"><input name="cpYear" class="'+this.cssPrefix+'cpYearNavigation" size="4" mxlength="4" value="'+year+'" onblur="'+refresh+'('+this.index+','+month+',this.value-0);"></td>';
				}
				else
				{
					result+='<td class="'+this.cssPrefix+'cpYearNavigation"><span class="'+this.cssPrefix+'cpYearNavigation">'+year+'</span></td>';
				}
				result+='<td class="'+this.cssPrefix+'cpYearNavigation"><a class="'+this.cssPrefix+'cpYearNavigation" href="'+refreshLink+'('+this.index+','+month+','+(year+1)+');">&gt;</a></td>';
			}
			else
			{
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation"><a class="'+this.cssPrefix+'cpMonthNavigation" href="'+refreshLink+'('+this.index+','+last_month+','+last_month_year+');">&lt;&lt;</a></td>\n';
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation"><span class="'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+' '+year+'</span></td>\n';
				result+='<td class="'+this.cssPrefix+'cpMonthNavigation"><a class="'+this.cssPrefix+'cpMonthNavigation" href="'+refreshLink+'('+this.index+','+next_month+','+next_month_year+');">&gt;&gt;</a></td>\n';
			}
		}
		result+='</tr></table>\n';
		result+='<table cellspacing="0" cellpadding="1">\n';
		result+='<TR>\n';
		for (var j=0; j<7; j++)
		{
			result+='<td class="'+this.cssPrefix+'cpDayColumnHeader"><span class="'+this.cssPrefix+'cpDayColumnHeader">'+this.dayHeaders[(this.weekStartDay+j)%7]+'</td>\n';
		}
		result+='</tr>\n';
		for (var row=1; row<=6; row++)
		{
			result+='<tr>\n';
			for (var col=0; col<7; col++)
			{
				var disabled=false;
				if(this.disabledDatesExpression!="")
				{
					var ds=""+display_year+LZ(display_month)+LZ(display_date);
					eval("disabled=("+this.disabledDatesExpression+")");
				}
				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 ( dateClass!="cpOtherMonthDate" )
				{
					if(disabled || this.disabledWeekDays[col-1])
						result+='<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;
						result+='<td class="'+this.cssPrefix+dateClass+'"><a HREF="javascript:'+windowref+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" class="'+this.cssPrefix+dateClass+'">'+display_date+'</A></td>\n';
					}
				}
				else
					result+='<td></td>';
				
				display_date++;
				if(display_date > daysinmonth[display_month])
				{
					display_date=1;
					display_month++;
				}
				if(display_month > 12)
				{
					display_month=1;
					display_year++;
				}
			}
			result+='</tr>';
		}
		var current_weekday=now.getDay() - this.weekStartDay;
		if(current_weekday < 0)
			current_weekday+=7;
		result+='<tr>\n';
		result+='<td colspan="7" class="'+this.cssPrefix+'cpTodayText">\n';
		if(this.disabledDatesExpression!="")
		{
			var ds=""+now.getFullYear()+LZ(now.getMonth()+1)+LZ(now.getDate());
			eval("disabled=("+this.disabledDatesExpression+")");
		}
		if(disabled || this.disabledWeekDays[current_weekday+1])
			result+='<span class="'+this.cssPrefix+'cpTodayTextDisabled">'+this.todayText+'</span>\n';
		else
			result+='<a class="'+this.cssPrefix+'cpTodayText" href="javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CP_hideCalendar(\''+this.index+'\');">'+this.todayText+'</A>\n';
		result+='<br/>\n';
		result+='</td></tr></table></center></td></tr></table>\n';
	}
	return result;
}
function addCalImage(calID, imageSrc)
{
	calSubject = document.getElementById(calID);
	_onclick_ = function () {eval("SB_calendar.select(document.getElementById('"+calID+"'), '"+calID+"', 'dd/MM/yyyy');");return false};
	img = document.createElement('img');
	img.src = imageSrc;
	img.onclick = _onclick_;
	img.onClick = _onclick_;
	img.defer = true;
	
	calHolder = calSubject.parentNode;
	nextElement = getNextElement(calSubject);
	void(calHolder.insertBefore(img, nextElement));
	
	calSubject.onclick = _onclick_;
	calSubject.onClick = _onclick_;
}
function getNextElement(element)
{
	for ( i=1; i<=element.parentNode.childNodes.length; i++ )
	{
		if ( element.parentNode.childNodes[i-1] == element )
			return element.parentNode.childNodes[i];
	}
}
