
var calendar = new CalendarPopup('calendar-div');
var elementCalendar;
var hide = false;


function findPosX(elem) {
	var curleft = 0;
  var obj = document.getElementById(elem);
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}
function findPosY(elem) {
	var curtop = 0;
  var obj = document.getElementById(elem);
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

var DAY_NAMES=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 isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
}

function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	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"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[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_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
}

function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
}
	
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	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_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(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 (token=="MMM"||token=="NNN"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					if (token=="MMM"||(token=="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 (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="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+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	if (i_val != val.length) { return 0; }
	if (month==2) {
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			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=getDateFromFormat(val,l[j]);
			if (d!=0) { return new Date(d); }
			}
		}
	return null;
}

function PopupWindow_hidePopup() {
  //document.onmouseup = '';
	document.getElementById('calendar-div').style.visibility = 'hidden';
  if (document.all) {
    document.getElementById('ifr-calendar').style.visibility = 'hidden';
    document.getElementById('ifr-calendar').style.display = 'none';
    document.getElementById('cpMonth').style.display = 'none';
    document.getElementById('cpYear').style.display = 'none';
  }
  document.getElementById('img-off-' + elementCalendar).style.display = 'none';
  document.getElementById('img-on-' + elementCalendar).style.display = 'inline';
}
// Pass an event and return whether or not it was the popup DIV that was clicked
function PopupWindow_isClicked(e) {

	if (document.all) {
		var t = window.event.srcElement;
		while (t.parentElement != null) {
			if (t.id == 'calendar-div')
				return;
			t = t.parentElement;
		}
	}
	else if (e) {
    var t = e.originalTarget;
    if(t.id != ('img-off-' + elementCalendar)) {
      while (t.parentNode != null) {
        if (t.id == 'calendar-div')
          return;
        t = t.parentNode;
      }
    }
	}
  PopupWindow_hidePopup();
}

function CalendarPopup() {
	var c;
  
	c = new Object();
	c.offsetX = -152;
	c.offsetY = 25;
	// Calendar-specific properties
	c.monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	c.returnFunction = "CP_tmpReturnFunction";
	c.returnMonthFunction = "CP_tmpReturnMonthFunction";
	c.returnQuarterFunction = "CP_tmpReturnQuarterFunction";
	c.returnYearFunction = "CP_tmpReturnYearFunction";
	c.weekStartDay = 1;
	c.isShowYearNavigation = false;
	c.displayType = "date";
	c.disabledWeekDays = new Object();
	c.disabledDatesExpression = "";
	c.yearSelectStartOffset = 5;
	c.currentDate = null;
	c.cssPrefix="";
	c.isShowYearNavigationInput=false;
	window.CP_calendarObject = null;
	window.CP_targetInput = null;
	window.CP_dateFormat = "dd/MM/yyyy";

	c.setReturnFunction = CP_setReturnFunction;
	c.setReturnMonthFunction = CP_setReturnMonthFunction;
	c.setReturnQuarterFunction = CP_setReturnQuarterFunction;
	c.setReturnYearFunction = CP_setReturnYearFunction;
	c.setMonthAbbreviations = CP_setMonthAbbreviations;
	c.setWeekStartDay = CP_setWeekStartDay;
	c.setDisplayType = CP_setDisplayType;
	c.setDisabledWeekDays = CP_setDisabledWeekDays;
	c.addDisabledDates = CP_addDisabledDates;
	c.showYearNavigation = CP_showYearNavigation;
	c.showCalendar = CP_showCalendar;
	c.refreshCalendar = CP_refreshCalendar;
	c.getCalendar = CP_getCalendar;
	c.select = CP_select;
	c.showYearNavigationInput = CP_showYearNavigationInput;
  c.autoHideEnabled = true;

	return c;
}

function CP_tmpReturnFunction(y,m,d) { 
	if (window.CP_targetInput!=null) {
    if (window.CP_dateFormat == 'dd/MM/yyyy')
      var dt = new Date(y,m-1,d,0,0,0);
    else {
      var h = document.getElementById('cpHour');
      var mi = document.getElementById('cpMinute');
      var dt = new Date(y,m-1,d,h.options[h.selectedIndex].value,mi.options[mi.selectedIndex].value,0);
    }
		window.CP_targetInput.value = formatDate(dt,window.CP_dateFormat);
		}
	else {
		alert('Use setReturnFunction() to define which function will get the clicked results!'); 
		}
    PopupWindow_hidePopup();
	}
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_setMonthAbbreviations() {
	for (var i=0; i<arguments.length; i++)
    this.monthAbbreviations[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"&&type!="week-end"&&type!="month"&&type!="quarter"&&type!="year") { alert("Invalid display type! Must be one of: date,week-end,month,quarter,year"); 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_showYearNavigationInput() { this.isShowYearNavigationInput = (arguments.length>0)?arguments[0]:true; }

function CP_refreshCalendar() {
	if (arguments.length>1)
    document.getElementById('calendar-div').innerHTML = calendar.getCalendar(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]);
	else
    document.getElementById('calendar-div').innerHTML = calendar.getCalendar();
}

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]));
			}
		}
  document.getElementById('calendar-div').innerHTML = this.getCalendar();

  var x = findPosX(anchorname) + 1;
	var y = findPosY(anchorname) + 21;
  if (document.all) {
    var ifr = document.getElementById('ifr-calendar').style;
    ifr.visibility = 'visible';
    ifr.top = y + 'px';
    ifr.left = x + 'px';
    
    ifr.zIndex = 1000;
    ifr.display = 'block';
    document.getElementById('cpMonth').style.display = 'block';
    document.getElementById('cpYear').style.display = 'block';
  }
  var div = document.getElementById('calendar-div').style;
	div.left = x + 'px';
	div.top = y + 'px';
	div.visibility = 'visible';

	}

function CP_select(inputobj, format) {
	var selectedDate=(arguments.length>3)?arguments[3]:null;

	window.CP_targetInput = document.getElementById(inputobj);
  var obj = document.getElementById(inputobj);
	window.CP_calendarObject = this;
	this.currentDate=null;
	var time=0;
	if (selectedDate != null)
		time = getDateFromFormat(selectedDate, format)
	else if (obj.value != '')
		time = getDateFromFormat(obj.value, format);
	if (selectedDate != null || obj.value != '') {
		if (time == 0)
      this.currentDate=null;
    else
      this.currentDate=new Date(time);
	}
	window.CP_dateFormat = format;
	this.showCalendar(inputobj);
  elementCalendar = inputobj;
  document.getElementById('img-off-' + inputobj).style.display = 'inline';
  document.getElementById('img-on-' + inputobj).style.display = 'none';
  document.onmouseup = PopupWindow_isClicked;
}
function CP_nextMonth() {
  var cmonth = 0; cyear = 0;
  var m = document.getElementById('cpMonth');
  var y = document.getElementById('cpYear');
  var mn = m.options[m.selectedIndex].value;
  var yn = y.options[y.selectedIndex].value;

  if (mn == 12) {
    cmonth = 1;
    cyear = (yn-0) + 1;
  }
  else {
    cmonth = (mn-0) + 1;
    cyear = (yn-0);
  }
  CP_refreshCalendar(cmonth, cyear);
}
function CP_nextYear() {
  var cmonth = 0; cyear = 0;
  var m = document.getElementById('cpMonth');
  var y = document.getElementById('cpYear');
  var mn = m.options[m.selectedIndex].value;
  var yn = y.options[y.selectedIndex].value;

  cmonth = mn;
  cyear = (yn-0) + 1;
  CP_refreshCalendar(cmonth, cyear);
}
function CP_prevYear() {
  var cmonth = 0; cyear = 0;
  var m = document.getElementById('cpMonth');
  var y = document.getElementById('cpYear');
  var mn = m.options[m.selectedIndex].value;
  var yn = y.options[y.selectedIndex].value;

  cmonth = mn;
  cyear = (yn-0) - 1;
  CP_refreshCalendar(cmonth, cyear);
}

function CP_nextHour() {
  var chour = 0;
  var h = document.getElementById('cpHour');
  var hn = h.options[h.selectedIndex].value;

  if (hn == 23)
    chour = 0;
  else
    chour = parseInt(hn) + 1;
  h.selectedIndex = chour;
}
function CP_prevHour() {
  var chour = 0;
  var h = document.getElementById('cpHour');
  var hn = h.options[h.selectedIndex].value;

  if (hn == 0)
    chour = 23;
  else
    chour = parseInt(hn) - 1;
  h.selectedIndex = chour;
}
function CP_nextMin() {
  var chour = 0;
  var h = document.getElementById('cpMinute');
  var hn = h.options[h.selectedIndex].value;

  if (hn == 59)
    chour = 0;
  else
    chour = parseInt(hn) + 1;
  h.selectedIndex = chour;
}
function CP_prevMin() {
  var chour = 0;
  var h = document.getElementById('cpMinute');
  var hn = h.options[h.selectedIndex].value;

  if (hn == 0)
    chour = 59;
  else
    chour = parseInt(hn) - 1;
  h.selectedIndex = chour;
}
function CP_nextSec() {
  var chour = 0;
  var h = document.getElementById('cpSecond');
  var hn = h.options[h.selectedIndex].value;

  if (hn == 60)
    chour = 1;
  else
    chour = parseInt(hn) + 1;
  h.selectedIndex = chour - 1;
}
function CP_prevSec() {
  var chour = 0;
  var h = document.getElementById('cpSecond');
  var hn = h.options[h.selectedIndex].value;

  if (hn == 1)
    chour = 60;
  else
    chour = parseInt(hn) - 1;
  h.selectedIndex = chour - 1;
}
function CP_prevMonth() {
  var cmonth = 0; cyear = 0;
  var m = document.getElementById('cpMonth');
  var y = document.getElementById('cpYear');
  var mn = m.options[m.selectedIndex].value;
  var yn = y.options[y.selectedIndex].value;

  if (mn == 1) {
    cmonth = 12;
    cyear = (yn-0) - 1;
  }
  else {
    cmonth = (mn-0) - 1;
    cyear = (yn-0);
  }
  CP_refreshCalendar(cmonth, cyear);
}

function CP_getCalendar() {
	var now = new Date();
	var result = "";
  var i;
  
	result += '<table id="cpCalendarTable">\n';
	result += '<tr><td align="center">\n';
	result += '<CENTER>\n';

	if (this.displayType=="date" || this.displayType=="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.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 id="cpNavigationTable">';
		result += '<TR>\n';
		var refresh = 'CP_refreshCalendar';
		var refreshLink = 'javascript:' + refresh;

			result += '<td align="left" width="1%"><select name="cpMonth" id="cpMonth" onChange="'+refresh+'(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+'>'+MONTH_NAMES[monthCounter-1]+'</option>';
				}
			result += '</select></TD>';
			result += '<td><table width="100%" height="100%"><tr><td><img src="/arxeion-xml/res/themes/oracle/images/cal-up.gif" onclick="CP_nextMonth();"></td></tr><tr><td><img style="margin-top: 1px;" src="/arxeion-xml/res/themes/oracle/images/cal-down.gif" onclick="CP_prevMonth();"></td></tr></table></td>';

			result += '<td width="1%" align="right"><select name="cpYear" id="cpYear" onChange="'+refresh+'('+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>';

			result += '<td><table width="100%" height="100%"><tr><td><img src="/arxeion-xml/res/themes/oracle/images/cal-up.gif" onclick="CP_nextYear();"></td></tr><tr><td><img style="margin-top: 1px;" src="/arxeion-xml/res/themes/oracle/images/cal-down.gif" onclick="CP_prevYear();"></td></tr></table></td>';

		result += '</TR></TABLE>\n';
		result += '<table id="cal_dates">\n';
		result += '<tr>\n';
		for (var j=0; j<7; j++)
			result += '<td class="cpDayColumnHeader">'+ARX_DAY_HEADERS[(this.weekStartDay+j)%7]+'</td>\n';
		result += '</tr>\n<tr><td colspan="7" class="cpSeperator"></td></tr>';
		for (var row=1; row<=6; row++) {
			result += '<tr>\n';
			for (var col=1; col<=7; col++) {
				var disabled=false;
				if (this.disabledDatesExpression!="") {
					var ds=""+display_year+LZ(display_month)+LZ(display_date);
					eval("disabled=("+this.disabledDatesExpression+")");
					}

				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;


     				if ((display_month == month) && (display_month == now.getMonth()+1) && (display_date==now.getDate()) && (display_year==now.getFullYear()))
              result += '<td class="cpTodayMonthDate"><a href="javascript:'+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');" class="cpCurrentDate">'+display_date+'</a>';              
     				else if ((display_month == month) && (display_month == this.currentDate.getMonth()+1) && (display_date==this.currentDate.getDate()) && (display_year==this.currentDate.getFullYear()))
                result += '<td class="cpCurrentDate"><a href="javascript:'+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');" class="cpCurrentDate">'+display_date+'</a>';             
            
            
            else if (display_month == month)
              result += '<td class="cpCurrentMonthDate"><a href="javascript:'+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');">'+display_date+'</a>';
            else            
              result += '<td class="cpCurrentMonthDate"></td>\n';
					}
				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><td colspan="7"><table id="cpTodayTable"><tr>\n';

    result += '	<td ><a href="javascript:' + refresh +'(' + (now.getMonth() + 1) + ',' + now.getFullYear() + ')' +';"><img src="/arxeion-xml/res/themes/oracle/images/cal-cur.gif" width="18"></a></td>\n';
		result += '	<td class="cpTodayText" width="100%">\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">'+ARX_MSG_CALENDAR_TODAY+'</SPAN>\n';
			}
		else {
			result += '		<A CLASS="'+this.cssPrefix+'cpTodayText" HREF="javascript:'+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');">&nbsp;&nbsp;'+ARX_MSG_CALENDAR_TODAY+ ' : ' + now.getDate() + '/' + (now.getMonth() + 1) + '/' + now.getFullYear() + '</A>\n';
			}
		result += '		<BR>\n';
		result += '	</TD></tr></table></td></TR></TABLE></CENTER></TD></TR></TABLE>\n';
    if (window.CP_dateFormat == 'dd/MM/yyyy HH:mm') {
    result += '<table width="100%"><tr><td colspan="5" class="time-seperator"></td</tr>';
    result += '<tr><td class="time-label">' + ARX_MSG_CALENDAR_TIME + ' : </td><td><table><tr><td><select name="cpHour" id="cpHour" class="time-select">';
    for (i = 0; i < 24; i++) {
      result += '<option value="' + i + '" ';
      if (parseInt(this.currentDate.getHours()) == i)
        result += 'selected="selected"';
      result += '>';
      if (i < 10) 
         result += '0' + i;
      else
        result += i;
      result += '</option>';
    }
    result += '</select></td>';
    result += '<td><table width="100%" height="100%"><tr><td><img src="/arxeion-xml/res/themes/oracle/images/cal-up.gif" onclick="CP_nextHour();"></td></tr><tr><td><img style="margin-top: 1px;" src="/arxeion-xml/res/themes/oracle/images/cal-down.gif" onclick="CP_prevHour();"></td></tr></table></td>';
    result += '</tr></table></td><td> : </td>';

    result += '<td align="center"><table><tr><td><select name="cpMinute" id="cpMinute" class="time-select">';
    for (i = 0; i < 60; i++) {
      result += '<option value="' + i + '" ';
      if (parseInt(this.currentDate.getMinutes()) == i)
        result += 'selected="selected"';
      result += '>';
      if (i < 10) 
         result += '0' + i;
      else
        result += i;
      result += '</option>';
    }
    result += '</select></td>';    
    result += '<td><table width="100%" height="100%"><tr><td><img src="/arxeion-xml/res/themes/oracle/images/cal-up.gif" onclick="CP_nextMin();"></td></tr><tr><td><img style="margin-top: 1px;" src="/arxeion-xml/res/themes/oracle/images/cal-down.gif" onclick="CP_prevMin();"></td></tr></table></td>';
    result += '</tr></table></td><td>' + ARX_MSG_CALENDAR_TIME_FORMAT + '</td>';

    result += '</tr></table>';
    }
	}
	return(result);
}
