var df = 1; //date format mm/dd/yyyy
var GREGORIAN = 0;
var JULIAN = 1;
var year = 0;
var month = 0;
var day = 0;
var julianday = 0.0;
var modifiedjulianday = 0.0;
function ipart(r){ return Math.round(r - 0.5) }
function getJulianDay(){ return this.julianday }
function getModifiedJulianDay(){ return this.modifiedjulianday }
function CustomDate(yr, mo, da, type){
  year = yr * 1.0;  //convert string to float
  if (year < -4713 || year > 3268){
    alert("Year out of range");
	document.datainput.dateerr.value="??"
    return;
  }
  month = mo * 1.0;
  day = da * 1.0;
  if (year == 1582 && month == 10 && day > 4 && day < 15){
    alert("Invalid date: 15 Oct immediately followed 4 Oct in the year 1582")
	document.datainput.dateerr.value="??"
    return;
  }
  if (year < 0) year = year + 1; //B.C. date correction
  var a = ipart((14 - month) / 12);
  var y = year + 4800 -a;
  var m = month + 12 * a - 3;
  if (type == GREGORIAN){
    julianday = day + ipart((153*m + 2)/5) + y*365 + ipart(y/4) - ipart(y/100) + ipart(y/400) - 32045;
 }
  if (type == JULIAN){
    julianday = day + ipart((153*m + 2)/5) + y*365 + ipart(y/4) - 32083;
  }
  modifiedjulianday = julianday - 2400000.5; //Zero at 17 Nov 1858 00:00:00 UTC
  this.getJulianDay = getJulianDay();
  this.getModifiedJulianDay = getModifiedJulianDay();
}
function fix2DigitDate(dateval){
  var date = dateval + "" //dateval must be a string
  if (date.length < 3){
    date = 1900 + date * 1.0
	date = date + ""  //to string
  }
  return date
}
function parseDate(dateval,eraval){
	//split is a Javascript 1.2 function
	var dary=dateval.split("/")
    var era;
	eraval > 0 ? era = -1: era = 1
	var y = fix2DigitDate(dary[2]) * era
	switch (df){
	  case 1: { m = dary[0]; d = dary[1] } // mm/dd/yyyy
	  break;
	  case 2: { m = dary[1]; d = dary[0] } // dd/mm/yyyy
	  break;
	  default: { m = dary[0]; d = dary[1] }
	}
	var calendar
	if (y > 1582) calendar = GREGORIAN
	  else if (y < 1582) calendar = JULIAN
	     else if (m < 10 | (m == 10 && d < 15)) calendar = JULIAN
	        else calendar = GREGORIAN
	i=new CustomDate(y,m,d,calendar)
	return i
	}//dateval
function calcDBD(){
    var err
	var era1 = 2
	var era2 = 2
	var date1 = thefirstdate
	var date2 = theseconddate
	firstdate=parseDate(date1,era1)
	seconddate=parseDate(date2,era2)
	dbd = seconddate.getJulianDay-firstdate.getJulianDay
	}//calcDBD
function dateFormat(f){
   df = f;
   }//dateFormat
function checkdate(date,era) {
    var err = 0
	var valid = "0123456789/"
	//var ok = "yes"
	var temp;
	if (date == null || date.length < 1) err = 1 //is there a date?
	//check for invalid characters
	for (var i=0; i< date.length; i++) {
	  temp = "" + date.substring(i, i+1)
	  if (valid.indexOf(temp) == "-1") err = 1
	  }
	//split is Javascript 1.2
	dary=date.split("/")
	if (df == 1){
	  b=dary[0] //month
	  d=dary[1] //day
    }
	if (df == 2){
	  b=dary[1] //month
	  d=dary[0] //day
	}
	f=dary[2] //year
    if (err != 1 && f.length < 3) { //one or two digit date
	  f = fix2DigitDate(f) //20th century
	  if (era != null && era == 1) {
	    err = 1;  //BC years must be 4 digits
		date = date + " B.C." }
	  }
	if (b<1 || b>12) err = 1
	if (d<1 || d>31) err = 1
	if (f<0 || f>9999) err = 1
	if (b==4 || b==6 || b==9 || b==11){
	  if (d==31) err=1
	  }
	if (b==2){  //leap year checking
	  var g=parseInt(f/4)
	  if (isNaN(g)) err=1
	  if (d>29) err=1
	  if (d==29){
	    //leap years are always divisible by 4
	    if ( (f/4)!= parseInt(f/4)) err = 1
		//in the Gregorian calendar century years are not leap years unless divisible by 400
        if (f > 1582) {
		  if (((f/100) == parseInt(f/100)) && (f/400 != parseInt(f/400))) err = 1
		  }
	    }
	  }
	if (err==1) {
	  alert('Is this date ('+date+') correct?');
	  document.datainput.dateerr.value="??"
	  }
	else {
	  //alert('Valid date!');
	  document.datainput.dateerr.value=""
  	  }
	return err
	}//checkdate
function doit(){
	df=2
	var today=""
	var time=new Date()
	var month=time.getMonth() + 1
	var date=time.getDate()
	var year=time.getYear()
	// Y2K Fix by Isaac Powell
	// http://onyx.idbsu.edu/~ipowell
	if ((navigator.appName == "Microsoft Internet Explorer") && (year < 2000))
	  year="19" + year
	if (navigator.appName == "Netscape")
	  year=1900 + year
	if (date<10) {date="0"+date}
	if (month<10) {month="0"+month}
	//select American or European date format
	today=date+"/"+month+"/"+year
	thefirstdate=today
	theseconddate="20/07/2007"
	}
function writeen(){
	doit()
	calcDBD()
	document.write(dbd+" Days to go!<br />");
	}
function writenl(){
	doit()
	calcDBD()
	document.write("Nog ");
	document.write(dbd+" dagen!<br />");
	}
function writeid(){
	doit()
	calcDBD()
	document.write("Masih ada ");
	document.write(dbd+" hari!<br />");
	}

