//by: Miha Plesnik (miha.plesnik@logos.si)
function Validate_Date(field)
{
	var DateField = field;
	var seperator = '.';
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	   err = 0;
	   DateValue = DateField.value;
		day = xGetDay(DateValue);
		month = xGetMonth(DateValue);
		year = xGetYear(DateValue);
	if (day=='' || month=='' ||year=='') return false;
	   /* Always change date to 8 digits - string*/
	   /* if year is entered as 2-digit / always assume 20xx */
	   if (year.length == 2) year = '20' + year;
	   /* year is wrong if year = 0000 */
	   //year = DateValue.substr(4,4);
	   if (year == 0) {
		  err = 20;
	   }
	   /* Validation of month*/
	   //month = DateValue.substr(2,2);
	   if ((month < 1) || (month > 12)) {
		  err = 21;
	   }
	   /* Validation of day*/
	   //day = DateValue.substr(0,2);
	   if (day < 1) {
		 err = 22;
	   }
	   /* Validation leap-year / february / day */
	   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
		  leap = 1;
	   }
	   if ((month == 2) && (leap == 1) && (day > 29)) {
		  err = 23;
	   }
	   if ((month == 2) && (leap != 1) && (day > 28)) {
		  err = 24;
	   }
	   /* Validation of other months */
	   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
		  err = 25;
	   }
	   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
		  err = 26;
	   }
	   /* if 00 ist entered, no error, deleting the entry */
	   if ((day == 0) && (month == 0) && (year == 00)) {
		  err = 0; day = ""; month = ""; year = ""; seperator = "";
	   }
	   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	   if (err == 0) {
		  DateField.value = day + seperator + month + seperator + year;
		  return true;
	   }
	   /* Error-message if err != 0 */
	   else {
		  return false;
	   }
}

//extract year from strig 
//if not a valid date returns ""
function xGetYear(dat)
{
	return xDMY(dat,'y');
}
//extract month from strig 
//if not a valid date returns ""
function xGetMonth(dat)
{
	return xDMY(dat,'m');
}
//extract day from strig 
//if not a valid date returns ""
function xGetDay(dat)
{
	return xDMY(dat,'d');
}

//returns day or month or year from string
//d - day
//m - month
//y - year
function xDMY(dat, opt)
{
	var checkstr = '0123456789';
	var DateTemp = '';
	var i = 0;
	var j = 0;
	   for (i = 0; i < dat.length; i++)
	   {
		  if (checkstr.indexOf(dat.substr(i,1)) >= 0)
		  {
			 DateTemp +=  dat.substr(i,1);
		  }
		  else
		  {
			  if (opt =='d' && j==0) return DateTemp;
			  if (opt =='m' && j==1) return DateTemp;
			  if (j==2) return '';
			  j++;
			  DateTemp=''
		  }
	   }
   if (opt =='y') return DateTemp;	  
	return '';
}

function Date_Smaller(dat1, dat2)
{
	var ret = false;
		if (dat1.valueOf() > dat2.valueOf())
		{
			ret = true;
		}
	return ret;
}
function Date_Biger(dat1, dat2)
{
	var ret = false;
		if (dat1.valueOf() < dat2.valueOf())
		{
			ret = true;
		}
	return ret;
}

