/*
* detect the current browser
*/
function detectBrowser() {   
    var BO = new Object();   
    BO["ie"]        = false /*@cc_on || true @*/;   
    BO["ie4"]       = BO["ie"] && (document.getElementById == null);   
    BO["ie5"]       = BO["ie"] && (document.namespaces == null) && (!BO["ie4"]);   
    BO["ie6"]       = BO["ie"] && (document.implementation != null) && (document.implementation.hasFeature != null);   
    BO["ie55"]      = BO["ie"] && (document.namespaces != null) && (!BO["ie6"]);   
    /*@cc_on  
    BO["ie7"]       = @_jscript_version == '5.7';  
    @*/  
    BO["ns4"]       = !BO["ie"] &&  (document.layers != null) &&  (window.confirm != null) && (document.createElement == null);   
    BO["opera"]     = (self.opera != null);   
    BO["gecko"]     = (document.getBoxObjectFor != null);   
    BO["khtml"]     = (navigator.vendor == "KDE");   
    BO["konq"]      = ((navigator.vendor == 'KDE') || (document.childNodes) && (!document.all) && (!navigator.taintEnabled));   
    BO["safari"]    = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (!navigator.accentColorName);   
    BO["safari1.2"] = (parseInt(0).toFixed == null) && (BO["safari"] && (window.XMLHttpRequest != null));   
    BO["safari2.0"] = (parseInt(0).toFixed != null) && BO["safari"] && !BO["safari1.2"];   
    BO["safari1.1"] = BO["safari"] && !BO["safari1.2"] && !BO["safari2.0"];   
    return BO;   
}   
var BO = new detectBrowser(); 

function getAnchorPosition(anchorname)
{
	var useWindow=false;
	var coordinates=new Object();
	var x=0,y=0;
	var o=document.getElementById(anchorname);
	x=AnchorPosition_getPageOffsetLeft(o);
	y=AnchorPosition_getPageOffsetTop(o);
	coordinates.x=x;
	coordinates.y=y;
	return coordinates;
}
function getAnchorWindowPosition(anchorname)
{
	var coordinates=getAnchorPosition(anchorname);
	var x=0;
	var y=0;
	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;
	}
	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=getAnchorPosition(anchorname);
	
	this.x=coordinates.x - 40;
	this.y=coordinates.y + 120;
}
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)
	{
		document.getElementById(this.divName).style.left = parseInt(this.x) + "px";
		document.getElementById(this.divName).style.top = parseInt(this.y) + "px";
		document.getElementById(this.divName).style.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.target;
			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();
			
		if( getDateFromFormat(window.CP_dependency[1].value,window.CP_dateFormat) > dt.getTime() && window.CP_targetInput.id  == window.CP_dependency[0].id )
			return true;	
		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)
		}
		/* 
		* EDIT 05.02.2008 
		* Make a call to the UpdateSelect function
		* this is especially edited for this site
		*/
		try
		{	UpdateSelect(y, m, d, window.CP_targetInput.id);	 }
		catch(e) {}
	}
	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 inspect(obj, maxLevels, level)
{
  var str = '', type, msg;

    // Start Input Validations
    // Don't touch, we start iterating at level zero
    if(level == null)  level = 0;

    // At least you want to show the first level
    if(maxLevels == null) maxLevels = 1;
    if(maxLevels < 1)     
        return '<font color="red">Error: Levels number must be > 0</font>';

    // We start with a non null object
    if(obj == null)
    return '<font color="red">Error: Object <b>NULL</b></font>';
    // End Input Validations

    // Each Iteration must be indented
    str += '<ul>';

    // Start iterations for all objects in obj
    for(property in obj)
    {
      try
      {
          // Show "property" and "type property"
          type =  typeof(obj[property]);
          str += '<li>(' + type + ') ' + property + 
                 ( (obj[property]==null)?(': <b>null</b>'):('')) + '</li>';

          // We keep iterating if this property is an Object, non null
          // and we are inside the required number of levels
          if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))
          str += inspect(obj[property], maxLevels, level+1);
      }
      catch(err)
      {
        // Is there some properties in obj we can't access? Print it red.
        if(typeof(err) == 'string') msg = err;
        else if(err.message)        msg = err.message;
        else if(err.description)    msg = err.description;
        else                        msg = 'Unknown';

        str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';
      }
    }

      // Close indent
      str += '</ul>';

    return str;
}

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">';

			if( BO.gecko == false )
			{	
				result+='<select class="'+this.cssPrefix+'cpMonthNavigation" name="cpMonth" onchange="'+refresh+'('+this.index+',this.options[this.selectedIndex].value-0,'+(year-0)+');">';
			}	
			else		
				result+='<select class="'+this.cssPrefix+'cpMonthNavigation" name="cpMonth">';
			
			for( var monthCounter=1; monthCounter<=12; monthCounter++ )
			{
				var currentTime=new Date(); 
				var selected=(monthCounter==month) ? 'selected="selected"' : '';
				if(monthCounter<(currentTime.getMonth()+1) && year<=currentTime.getFullYear())
				{	
					if( BO.gecko == false )
						result += '<option value="'+monthCounter+'" '+selected+' style="color:#B5B5B5;">'+this.monthNames[monthCounter-1]+'</option>';	
					else
						result += '<option value="'+monthCounter+'" '+selected+' style="color:#B5B5B5;" onClick="'+refresh+'('+this.index+','+(monthCounter-0)+','+(year-0)+');" >'+this.monthNames[monthCounter-1]+'</option>';	
				}	
				else
				{
					if( BO.gecko == false )
						result += '<option value="'+monthCounter+'" '+selected+'>'+this.monthNames[monthCounter-1]+'</option>';
					else
						result += '<option value="'+monthCounter+'" '+selected+' onClick="'+refresh+'('+this.index+','+(monthCounter-0)+','+(year-0)+');">'+this.monthNames[monthCounter-1]+'</option>';

						
				}	
			}
			result+='</select>';
			result+='</td></tr><tr>';
			result+='<td class="'+this.cssPrefix+'cpYearNavigation" colspan="7">';
			
			if( BO.gecko == true )
				result+='<select class="'+this.cssPrefix+'cpYearNavigation" name="cpYear">';
			else
				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"' : '';
				if(yearCounter<currentTime.getFullYear())
				{	
					if( BO.gecko == false )
						result += '<option value="'+yearCounter+'" '+selected+' style="color:#B5B5B5;">'+yearCounter+'</option>';
					else
						result += '<option value="'+yearCounter+'" '+selected+' style="color:#B5B5B5;" onClick="'+refresh+'('+this.index+','+month+','+yearCounter+');">'+yearCounter+'</option>';
				}	
				else
				{
					if( BO.gecko == false )
						result+='<option value="'+yearCounter+'" '+selected+'>'+yearCounter+'</option>';
					else
						result+='<option value="'+yearCounter+'" '+selected+' onClick="'+refresh+'('+this.index+','+month+','+yearCounter+');">'+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];
	}
}
