function netscapeKeyPress(e) {
    if (e.which == 13)
        Calculate_Form();
}

function microsoftKeyPress() {
    if (window.event.keyCode == 13)
        Calculate_Form();
}

if (navigator.appName == 'Netscape') {
    window.captureEvents(Event.KEYPRESS);
    window.onKeyPress = netscapeKeyPress;
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }
var weekday = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

function Reset_Result() {
  document.Form_Day_Week_Number.day_result.value = "";
  document.Form_Day_Week_Number.week_result.value = "";
  document.Form_Day_Week_Number.weekday_result.value = "";
}

function Calculate_Form() {
  var date_format = "%m/%d/%y";
  var theDate;
  with (document.Form_Day_Week_Number) {
    theDate = buildDate(the_date.value,date_format);
  }

  if (!(typeof theDate == "object")) {
    alert("The Date entered is not in a valid format!!");
    return;
  }

	// This code calculates the day number
function makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

var accumulate    = new makeArray(  0, 31, 59, 90,120,151,181,212,243,273,304,334);
var accumulateLY  = new makeArray(  0, 31, 60, 91,121,152,182,213,244,274,305,335);

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function getJulian(day,month,year) {
    if (LeapYear(year))
        return (day + accumulateLY[month]);
    else
        return (day + accumulate[month]);
}
	// End code to calculate the day Number

	// Code to calculate week number
function getWeek(day,month,year) {
	//year = y2k(year);
    var when = new Date(year,month,day);
    var newYear = new Date(year,0,1);
    var offset = 7 + 1 - newYear.getDay();
    if (offset == 8) offset = 1;
    var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0) - Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1;
    var weeknum = Math.floor((daynum-offset+7)/7);
    if (weeknum == 0) {
        year--;
        var prevNewYear = new Date(year,0,1);
        var prevOffset = 7 + 1 - prevNewYear.getDay();
        if (prevOffset == 2 || prevOffset == 8) weeknum = 53; else weeknum = 52;
    }
    return weeknum;
}
	// End code to calculate week number

// Code to calculate Eur weeknumber
function getWeekEUR(day,month,year) {
    var when = new Date(year,month,day);
    var newYear = new Date(year,0,1);
    var modDay = newYear.getDay();
    if (modDay == 0) modDay=6; else modDay--;

    var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0) -
                 Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1;

    if (modDay < 4 ) {
        var weeknum = Math.floor((daynum+modDay-1)/7)+1;
    }
    else {
        var weeknum = Math.floor((daynum+modDay-1)/7);
        if (weeknum == 0) {
            year--;
            var prevNewYear = new Date(year,0,1);
            var prevmodDay = prevNewYear.getDay();
            if (prevmodDay == 0) prevmodDay = 6; else prevmodDay--;
            if (prevmodDay < 4) weeknum = 53; else weeknum = 52;
        }
    }

    return + weeknum;
}
// End Eur weeknumber


  document.Form_Day_Week_Number.day_result.value = getJulian(theDate.getDate(),theDate.getMonth()+1,theDate.getYear());
  document.Form_Day_Week_Number.week_result.value = getWeek(theDate.getDate(),theDate.getMonth(),theDate.getYear());
  document.Form_Day_Week_Number.week_result_eur.value = getWeekEUR(theDate.getDate(),theDate.getMonth(),theDate.getYear());
  document.Form_Day_Week_Number.weekday_result.value = weekday[theDate.getDay()];
}
