//<!--
function MM_setTextOfLayer(objName,x,newText) { //v3.0
  if ((obj=$(objName))!=null) with (obj) {
    if (typeof(innerHTML) == 'undefined') { 
      document.write(unescape(newText)); document.close();
    } else innerHTML = unescape(newText);
  }
};

var today     = new Date();
var thisDay   = today.getDate();
var thisMonth = today.getMonth();
var thisYear  = y2k(today.getYear());
var xmldb_calendar_class = [];

function calendarPopup(format, index, name) {
	if (name) openCalendar(format, 30, name);
	else openCalendar(format, index, index+2);
}

function openCalendar(format, row, element) {
	var top, left;
	if (format == "") {
		form = document.forms['XMLDB_SEARCH_FORM'];
		prop = PropertiesOf(form.elements[row].options[form.elements[row].selectedIndex].value);
		format = prop[pFORMAT];
	}
	if (IE) { top = screen.height/10 + 7*row; left = screen.width*0.65; }
	else { top = screen.height/8 + 8*row; left = screen.width*0.65; }

	var url = 'common/calendar.html?&format='+format+'&element=' + element;
	var setings = "width=300,height=200,top="+ top + ",left="+ left;
	window.open(url,'mywindow', setings);
}

function showCalendar(format, element, id) {
	var url = 'common/calendar.html?&format='+format+'&element=' + element+'&id=' + id;
	var div = document.getElementById(id);
	if (div) {
		div.innerHTML='<iframe src="'+url+'" frameborder="no" border="0" style="width:205px; height:225px"></iframe>';
		with (div.style) {
			if (display == 'none') {
				display = 'block';
				visibility = 'visible';
			} else {
				display = 'none';
				visibility = 'hidden';
			}
		}
	}
}

function hideCalendar(id) {
	var div = document.getElementById(id);
	if (div) {
		with (div.style) {
			display = 'none';
			visibility = 'hidden';
		}
	}
}

function inlineCalendar(calendarID, onload) {
var	calendarA = calendarID+'_position';
	if (document.anchors[calendarA]){
	  if ((obj=$(calendarID))!=null) {
	  	obj.left = document.anchors[calendarA].x;
	  	obj.top = document.anchors[calendarA].y;
	  }
	}
	MM_setTextOfLayer(calendarID, '', getCalendar(onload, calendarID));
}

function prevMonth(calendarID, preload) {
 var 	calendarA = calendarID+'_position';
 var	objYear  = $(calendarID+'_year');
 var	objMonth = $(calendarID+'_month');

	if (objYear == null || objMonth == null) return;
	
	var m = Number(objMonth.value)-1;
	
	objMonth.value = m < 0 ? objMonth.value = 11 : m;
	if (m < 0) objYear.value = Number(objYear.value)-1;
	
	MM_setTextOfLayer(calendarID+'_month_label', '', months[objMonth.value]+' '+objYear.value);
	if (preload) {
		preload(calendarID);
	} else {
		inlineCalendar(calendarID, false);
	}
}

function nextMonth(calendarID, preload) {
 var 	calendarA = calendarID+'_position';
 var	objYear  = $(calendarID+'_year');
 var	objMonth = $(calendarID+'_month');
	
	if (objYear == null || objMonth == null) return;
	
	var m = Number(objMonth.value)+1;
	
	objMonth.value = m > 11 ? objMonth.value = 0 : m;
	if (m > 11) objYear.value = Number(objYear.value)+1;
	
	MM_setTextOfLayer(calendarID+'_month_label', '', months[objMonth.value]+' '+objYear.value);
	if (preload) {
		preload(calendarID);
	} else {
		inlineCalendar(calendarID, false);
	}
}


function y2k(number) { return (number < 1000) ? number + 1900 : number; };

function updateParent(format, day, month, year, element) {
	var date = formatDate(format, day, month, year, 0, 0);
	if (typeof(opener)=='undefined' || parent) opener=parent;
	opener.document.forms[0].elements[element].value=date[0];
	opener.document.forms[0].elements[element].defaultValue=date[0];
	
	if (opener.document.forms[0].elements[element].onchange)
	  opener.document.forms[0].elements[element].onchange();
	if (parent) {
		with (parent.document.getElementById(urlParameters['id']).style) {
			display = 'none';
			visibility = 'hidden';
		}
	} else window.close();
}

function getCalendar(onload, calendarID) {
var chosenDate, chosenDay, chosenMonth, chosenYear, initialDate;
var inline = false;
	element = urlParameters['element'];
	format = urlParameters['format'];
	if (!isNaN(element)) element = Number(element);

	objYear  = $((calendarID ? calendarID+'_' : '') + 'year');
	objMonth = $((calendarID ? calendarID+'_' : '') + 'month');

	chosenMonth = thisMonth;
	chosenYear  = thisYear;

	if (typeof(element)=='undefined') {
		inline = true;
		format = $(calendarID+'_format').value;
		initialDate = $(calendarID+'_date').value;
	} else {
		if (typeof(opener)=='undefined' || parent) opener=parent;
		initialDate = opener.document.forms[0].elements[element].value;
	}
	
	if (chosenDate = isDate(format, initialDate)) {
		thisDay     = chosenDate[1];
		chosenMonth = chosenDate[2]-1;
		chosenYear  = chosenDate[3];
		if (inline && onload) {
			objYear.value = chosenYear;
			objMonth.value = chosenMonth;
		}
	}

	if (onload) {
		Year = Number(chosenYear);
		thisMonth = chosenMonth;
		thisYear  = chosenYear;
		if (inline) {
			MM_setTextOfLayer(calendarID+'_month_label', '', months[chosenMonth]+' '+chosenYear);
		} else {
			objMonth.selectedIndex = chosenMonth;
		}
	} else {
		Year = inline ? Number(objYear.value) : Number(objYear.options[objYear.selectedIndex].value);
	}

	if (inline) {
		chosenYear  = Number(objYear.value);
		chosenMonth = Number(objMonth.value);
	} else {
		for (i = 0, y = (Year - 5); y < (Year + 6); y++)
			objYear.options[i].text = objYear.options[i++].value = y;
		objYear.selectedIndex = 5;
	
	
		chosenMonth = objMonth.options[objMonth.selectedIndex].value;
		chosenYear  = objYear.options[objYear.selectedIndex].value;
	}

	var output='';
	var firstDay = new Date(chosenYear,chosenMonth,1);
    var startDay = firstDay.getDay();
		startDay = (startDay == 0 ? 7 : startDay)-1;
	
	
	output += '<table border="0" cellspacing="3" cellpadding="3"><tr>';
    for (i=0; i<7; i++) {
		output += '<th>' + dow[i] + '<\/th>';
	}
    output += '<\/tr><tr align="center" valign="middle">';
    if(((chosenYear % 4 == 0) && (chosenYear % 100 != 0)) || (chosenYear % 400 == 0))
		days[1] = 29;
    else
        days[1] = 28;
    var column = 0;
    var lastMonth = chosenMonth - 1;
    if(lastMonth == -1) lastMonth = 11;
    for(i=0; i<startDay; i++){
    	output += '<td><\/td>';
        column++;
      }
    var currentMonth = chosenMonth ;
    currentMonth++ ;
    for(i=1; i<=days[chosenMonth]; i++) {
		var date = chosenYear+'-'+pad((Number(chosenMonth)+1).toString(),2)+'-'+pad(i.toString(),2);
		var href = inline ?
			setURLVariable(document.location.search, 'date', date)
			:
			"javascript:updateParent('"+format+"',"+i+",'"+(Number(chosenMonth)+1)+"','"+chosenYear+"','"+element+"')";
		
		var add_class = '';
		if (xmldb_calendar_class[date]) {
			add_class = ' '+xmldb_calendar_class[date];
		}
		
		if((i == thisDay) && (chosenMonth == thisMonth) && (chosenYear == thisYear)) {
        	output += '<td class="calendar-today'+add_class+'" onclick="mouseClick(this)">' ;
			output += '<a href="'+href+'">'+i+"</a><\/td>";
	   		}
        else {
        	output += '<td class="calendar'+add_class+'" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" onclick="mouseClick(this)">' ;
			output += '<a href="'+href+'">'+i+"</a><\/td>";
	   		}
        column++;
        if(column == 7) {
        	output += '<\/tr><tr align="center" valign="middle">';
            column = 0;
        	}
      	}
    if(column > 0)
    	for (i=1; column<7; i++) {
      		output += '<td><\/td>';
          	column++;
       		}
    output += "<\/tr></table>";
    return output;
};

//-->
