var calendar = null; // remember the calendar object so that we reuse it and
                     // avoid creation other calendars.
                     
function checkCalendar(ev) {
	var el = is_ie ? getElement(ev) : getTargetElement(ev);
	for (; el != null; el = el.parentNode)
	// FIXME: allow end-user to click some link without closing the
	// calendar.  Good to see real-time stylesheet change :)
	if (el == calendar.element || el.tagName == "A") break;
		if (el == null) {
		// calls closeHandler which should hide the calendar.
		calendar.callCloseHandler();
		stopEvent(ev);
	}
}
	
function selected(cal, date) {
	cal.sel.value = date; // just update the date in the input field.
}

function closeHandler(cal) {
	cal.hide();                        // hide the calendar

	// don't check mousedown on document anymore (used to be able to hide the
	// calendar when someone clicks outside it, see the showCalendar function).
	removeEvent(document, "mousedown", checkCalendar);
}

function showCalendar(id, format, x, y) {
			
		
		  var el = document.getElementById(id);
		  var datDate = el.value
			if (!IsDate(datDate)){
				datDate = ''
		  } else {
			  var yearpart = String(datDate);
			  var firstdatepart = yearpart.substring(0,yearpart.lastIndexOf("/")+1)
			
			  yearpart = yearpart.substring(yearpart.lastIndexOf("/")+1)
			
			  if (yearpart.length == 2) {
				  yearpart = parseInt(yearpart, 10);
				  if (yearpart<70){
					yearpart += 2000
				  }
				  else {
					yearpart += 1900
				  }
				  datDate = firstdatepart + yearpart
			  }
		  }
		  if (calendar != null) {
		    // we already have some calendar created
		    calendar.hide();                 // so we hide it first.
		  } else {
		    // first-time call, create the calendar.
		    var cal = new Calendar(true, null, selected, closeHandler);
		    
		    calendar = cal;                  // remember it in the global var
		    cal.setRange(1900, 2070);        // min/max year allowed.
		  }
		  calendar.setDateFormat(format);    // set the specified date format
		  calendar.parseDate(datDate);      // try to parse the text in field
		  calendar.sel = el;                 // inform it what input field we use
		  calendar.showAtElement(el, x, y);        // show the calendar below it

		  // catch "mousedown" on document
		  addEvent(document, "mousedown", checkCalendar);
		  return false;
		}



function IsDate(val) {
	
	// pass date as dd/mm/yyyy and as a string. eg isDate('23/03/2001')
	// returns true if the string passed is a valid date.
	var sep2 = parseInt(val.indexOf("/"));
				
	var sep1 = parseInt(val.indexOf("/",sep2+1));
	var len = parseInt(val.length);
	var dd = parseInt(val.substr(0,sep1));
	var mm = parseInt(val.substr(sep2+1,sep1-sep2-1));
	var yy = parseInt(val.substr(sep1+1,len-sep1-1));
	if (yy<1910) yy+=2000;
	
	var leap = ((yy == (parseInt(yy/4) * 4)) && !(yy == (parseInt(yy/100) * 100)));
	if (!((mm >= 1) && (mm <= 12))) return false;
	if ((mm == 2) && (leap)) dom = 29;
	if ((mm == 2) && !(leap)) dom = 28;
	if ((mm == 1) || (mm == 3) || (mm == 5) || (mm == 7) || (mm == 8) || (mm == 10) || (mm == 12)) dom = 31;
	if ((mm == 4) || (mm == 6) || (mm == 9) || (mm == 11)) dom = 30;
	if (dd > dom) return false;
	return true;
}