// JavaScript Document
// calendar code
 
var targetDate = new Date();
var calName;
var formName;

function setCalendar(event, f, name) {
	var el, tableEl, rowEl, cellEl, linkEl;
	var tmpDate, tmpDate2;
	var i, j;

	if (f == null) { f=1; }

	el = document.getElementById("calendarHeader_" + name).firstChild;
	el.nodeValue = targetDate.getMonthName() + "\u00a0" + targetDate.getFullYear();

	tmpDate = new Date(Date.parse(targetDate));
	tmpDate.setDate(1);

	while (tmpDate.getDay() != 0) { tmpDate.addDays(-1); }

	tableEl = document.getElementById('calendar_' + name);

	for (i = 0; i <= 5; i++) {
    rowEl = tableEl.rows[i];

    tmpDate2 = new Date(Date.parse(tmpDate));
    tmpDate2.addDays(6);
    if (tmpDate.getMonth()  != targetDate.getMonth() &&
        tmpDate2.getMonth() != targetDate.getMonth()) {
      rowEl.style.visibility = "hidden";
      if (document.all)
        for (j = 0; j < rowEl.cells.length; j++)
          rowEl.cells[j].style.borderStyle = "none";
    }
    else {
		rowEl.style.visibility = "";
		if (document.all)
			for (j = 0; j < rowEl.cells.length; j++)
				rowEl.cells[j].style.borderStyle = "";
    }

    for (j = 0; j < rowEl.cells.length; j++) {
      cellEl = rowEl.cells[j];
      linkEl = cellEl.firstChild;

      if (tmpDate.getMonth() == targetDate.getMonth()) {
        linkEl.date = new Date(Date.parse(tmpDate));
        s = tmpDate.toString().split(" ");
        linkEl.title = s[0] + " " + s[1] + " " + s[2] + ", " + s[s.length - 1];
        linkEl.firstChild.nodeValue = tmpDate.getDate();
        linkEl.style.visibility = "";
      } else {
        linkEl.style.visibility = "hidden";
	 }

      if (cellEl.oldClass == null)
        cellEl.oldClass = cellEl.className;

//      if ((Date.parse(tmpDate) == Date.parse(targetDate)) && (f == 1))
//	      cellEl.className = cellEl.oldClass; //  + " kalactive"
//      else
		cellEl.className = cellEl.oldClass;

		tmpDate.addDays(1);
    }
  }
}

function addMonths(event, n, name) {
	targetDate.addMonths(n);
	setCalendar(event, 0, name);
}

function addYears(event, n) {
	targetDate.addYears(n);
	setCalendar(event, 0);
}

function setTargetDate(event, link) {
	if (link.date != null) {
		targetDate = new Date(Date.parse(link.date));
		setCalendar(event, 1, this.formName);

		mm = String(targetDate.getMonth() + 1);
		dd = String(targetDate.getDate());
		yy = String(targetDate.getFullYear());

		if (dd.length == 1) dd = '0' + dd;
		if (mm.length == 1) mm = '0' + mm;

		if (this.formName != null && this.formName != ''){
			var dd = document.getElementById(this.formName + '_day').value = dd;;
			var dm = document.getElementById(this.formName + '_month').value = mm;
			var dy = document.getElementById(this.formName + '_year').value = yy;
		}

		hideCalendar(this.formName);
	}
}

function displayDate(event) {
	var gsss;

	gsss = formatDate(targetDate);
	asss = gsss.split("/");

	window.opener.document.mainform.month.value = Math.abs(asss[0]);
	window.opener.document.mainform.date.value = Math.abs(asss[1]);
	window.opener.document.mainform.year.value = Math.abs(asss[2]);
}

function formatDate() {
	var mm, dd, yyyy;
	mm = String(targetDate.getMonth() + 1);

	while (mm.length < 2)
		mm = "0" + mm;
	dd = String(targetDate.getDate());

	while (dd.length < 2)
	dd = "0" + dd;

	yyyy = String(targetDate.getFullYear());

	while (yyyy.length < 4)
		yyyy = "0" + yyyy;

	return mm + "/" + dd + "/" + yyyy;
}

Date.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
Date.prototype.savedDate  = null;
Date.prototype.getMonthName = dateGetMonthName;
Date.prototype.getDays      = dateGetDays;
Date.prototype.addDays      = dateAddDays;
Date.prototype.addMonths    = dateAddMonths;
Date.prototype.addYears     = dateAddYears;

function dateGetMonthName() {
	return this.monthNames[this.getMonth()];
}

function dateGetDays() {
	var tmpDate, d, m;

	tmpDate = new Date(Date.parse(this));
	m = tmpDate.getMonth();
	d = 28;
	do {
		d++;
		tmpDate.setDate(d);
	} while (tmpDate.getMonth() == m);

	return d - 1;
}

function dateAddDays(n) {
	this.setDate(this.getDate() + n);
	this.savedDate = this.getDate();
}

function dateAddMonths(n) {
	if (this.savedDate == null)
		this.savedDate = this.getDate();

	this.setDate(1);
	this.setMonth(this.getMonth() + n);
	this.setDate(Math.min(this.savedDate, this.getDays()));
}

function dateAddYears(n) {
	if (this.savedDate == null)
		this.savedDate = this.getDate();

	this.setDate(1);
	this.setFullYear(this.getFullYear() + n);
	this.setDate(Math.min(this.savedDate, this.getDays()));
}

function showCalendar(name, pev) {

	//if (this.calName != null)
	//	this.calName.style.visibility = 'hidden';

	var e = document.getElementById('cal_' + name);
	this.calName = e;
	this.formName = name;	
	
	clx = pev.clientX
	ofx = pev.offsetX
	cly = pev.clientY
	ofy = pev.offsetY
	
	var extra_left = 0
	var extra_top = 16
	
	if (typeof pev.offsetX == 'undefined') {
	   var evtOffsets = getOffsets(pev);
	   ofx=evtOffsets.offsetX;
	   extra_left = 0
	}
	
	if (typeof pev.offsetY == 'undefined') {
	   var evtOffsets = getOffsets(pev);
	   ofy=evtOffsets.offsetY;
	   extra_top = 18;
	}
	
	var left_ps = document.body.scrollLeft + clx - ofx - extra_left;
	var Top_ps = document.body.scrollTop + cly - ofy + extra_top;
	
	e.style.top = Top_ps+"px";
	e.style.left = left_ps+"px";
	
	/*if (name == "date"){
	   document.getElementById('cal_date1').style.visibility = 'hidden';
	}
	
	if (name == "date1"){
	   document.getElementById('cal_date').style.visibility = 'hidden';
	}*/

	if (e.style.visibility == 'visible')
		e.style.visibility = 'hidden';
	else
		e.style.visibility = 'visible';
}

function hideCalendar(name) {
	var e = document.getElementById('cal_' + name);
	e.style.visibility = 'hidden';
}

var targetDate = new Date();
var calName;
var formName;

function setCalendar(event, f, name) {
	var el, tableEl, rowEl, cellEl, linkEl;
	var tmpDate, tmpDate2;
	var i, j;

	if (f == null) { f=1; }

	el = document.getElementById("calendarHeader_" + name).firstChild;
	el.nodeValue = targetDate.getMonthName() + "\u00a0" + targetDate.getFullYear();

	tmpDate = new Date(Date.parse(targetDate));
	tmpDate.setDate(1);

	while (tmpDate.getDay() != 0) { tmpDate.addDays(-1); }

	tableEl = document.getElementById('calendar_' + name);

	for (i = 0; i <= 5; i++) {
    rowEl = tableEl.rows[i];

    tmpDate2 = new Date(Date.parse(tmpDate));
    tmpDate2.addDays(6);
    if (tmpDate.getMonth()  != targetDate.getMonth() &&
        tmpDate2.getMonth() != targetDate.getMonth()) {
      rowEl.style.visibility = "hidden";
      if (document.all)
        for (j = 0; j < rowEl.cells.length; j++)
          rowEl.cells[j].style.borderStyle = "none";
    }
    else {
		rowEl.style.visibility = "";
		if (document.all)
			for (j = 0; j < rowEl.cells.length; j++)
				rowEl.cells[j].style.borderStyle = "";
    }

    for (j = 0; j < rowEl.cells.length; j++) {
      cellEl = rowEl.cells[j];
      linkEl = cellEl.firstChild;

      if (tmpDate.getMonth() == targetDate.getMonth()) {
        linkEl.date = new Date(Date.parse(tmpDate));
        s = tmpDate.toString().split(" ");
        linkEl.title = s[0] + " " + s[1] + " " + s[2] + ", " + s[s.length - 1];
        linkEl.firstChild.nodeValue = tmpDate.getDate();
        linkEl.style.visibility = "";
      } else {
        linkEl.style.visibility = "hidden";
	 }

      if (cellEl.oldClass == null)
        cellEl.oldClass = cellEl.className;

//      if ((Date.parse(tmpDate) == Date.parse(targetDate)) && (f == 1))
//	      cellEl.className = cellEl.oldClass; //  + " kalactive"
//      else
		cellEl.className = cellEl.oldClass;

		tmpDate.addDays(1);
    }
  }
}

function addMonths(event, n, name) {
	targetDate.addMonths(n);
	setCalendar(event, 0, name);
}

function addYears(event, n) {
	targetDate.addYears(n);
	setCalendar(event, 0);
}

function setTargetDate(event, link) {
	if (link.date != null) {
		targetDate = new Date(Date.parse(link.date));
		setCalendar(event, 1, this.formName);

		mm = String(targetDate.getMonth() + 1);
		dd = String(targetDate.getDate());
		yy = String(targetDate.getFullYear());

		if (dd.length == 1) dd = '0' + dd;
		if (mm.length == 1) mm = '0' + mm;

		if (this.formName != null && this.formName != ''){
			var dd = document.getElementById(this.formName + '_day').value = dd;;
			var dm = document.getElementById(this.formName + '_month').value = mm;
			var dy = document.getElementById(this.formName + '_year').value = yy;
		}

		hideCalendar(this.formName);
	}
}

function displayDate(event) {
	var gsss;

	gsss = formatDate(targetDate);
	asss = gsss.split("/");

	window.opener.document.mainform.month.value = Math.abs(asss[0]);
	window.opener.document.mainform.date.value = Math.abs(asss[1]);
	window.opener.document.mainform.year.value = Math.abs(asss[2]);
}

function formatDate() {
	var mm, dd, yyyy;
	mm = String(targetDate.getMonth() + 1);

	while (mm.length < 2)
		mm = "0" + mm;
	dd = String(targetDate.getDate());

	while (dd.length < 2)
	dd = "0" + dd;

	yyyy = String(targetDate.getFullYear());

	while (yyyy.length < 4)
		yyyy = "0" + yyyy;

	return mm + "/" + dd + "/" + yyyy;
}

Date.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
Date.prototype.savedDate  = null;
Date.prototype.getMonthName = dateGetMonthName;
Date.prototype.getDays      = dateGetDays;
Date.prototype.addDays      = dateAddDays;
Date.prototype.addMonths    = dateAddMonths;
Date.prototype.addYears     = dateAddYears;

function dateGetMonthName() {
	return this.monthNames[this.getMonth()];
}

function dateGetDays() {
	var tmpDate, d, m;

	tmpDate = new Date(Date.parse(this));
	m = tmpDate.getMonth();
	d = 28;
	do {
		d++;
		tmpDate.setDate(d);
	} while (tmpDate.getMonth() == m);

	return d - 1;
}

function dateAddDays(n) {
	this.setDate(this.getDate() + n);
	this.savedDate = this.getDate();
}

function dateAddMonths(n) {
	if (this.savedDate == null)
		this.savedDate = this.getDate();

	this.setDate(1);
	this.setMonth(this.getMonth() + n);
	this.setDate(Math.min(this.savedDate, this.getDays()));
}

function dateAddYears(n) {
	if (this.savedDate == null)
		this.savedDate = this.getDate();

	this.setDate(1);
	this.setFullYear(this.getFullYear() + n);
	this.setDate(Math.min(this.savedDate, this.getDays()));
}

function showCalendar(name, pev) {

	//if (this.calName != null)
	//	this.calName.style.visibility = 'hidden';

	var e = document.getElementById('cal_' + name);
	this.calName = e;
	this.formName = name;	
	
	clx = pev.clientX
	ofx = pev.offsetX
	cly = pev.clientY
	ofy = pev.offsetY
	
	var extra_left = 0
	var extra_top = 16
	
	if (typeof pev.offsetX == 'undefined') {
	   var evtOffsets = getOffsets(pev);
	   ofx=evtOffsets.offsetX;
	   extra_left = 0
	}
	
	if (typeof pev.offsetY == 'undefined') {
	   var evtOffsets = getOffsets(pev);
	   ofy=evtOffsets.offsetY;
	   extra_top = 18;
	}
	
	var left_ps = document.body.scrollLeft + clx - ofx - extra_left;
	var Top_ps = document.body.scrollTop + cly - ofy + extra_top;
	
	//e.style.top = Top_ps+"px";
	e.style.left = left_ps+"px";
	
   /*if (name == "date"){
	   document.getElementById('cal_date1').style.visibility = 'hidden';
	}
	
	if (name == "date1"){
	   document.getElementById('cal_date').style.visibility = 'hidden';
	}*/

	if (e.style.visibility == 'visible')
		e.style.visibility = 'hidden';
	else
		e.style.visibility = 'visible';
}

function hideCalendar(name) {
	var e = document.getElementById('cal_' + name);
	e.style.visibility = 'hidden';
}
