
function makeArray() 
{
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}


var sun=1,mon=2,tue=3,wed=4,thu=5,fri=6,sat=7;
var jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12;
var first=1,second=2,third=3,fourth=4,fifth=5,last=-1;

var daysofmonth    = new makeArray( 31, 28, 31, 30, 31, 30,
                                    31, 31, 30, 31, 30, 31);

var daysofmonthLY  = new makeArray( 31, 29, 31, 30, 31, 30,
                                    31, 31, 30, 31, 30, 31);

function DayOfWeek(day,month,year) 
{
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d+1;
}


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 NthDay(nth,weekday,month,year) 
{
    if (nth > 0) return (nth-1)*7 + 1 + (7 + weekday - DayOfWeek((nth-1)*7 + 1,month,year))%7;
    if (LeapYear(year)) var days = daysofmonthLY[month];
    else                var days = daysofmonth[month];
    return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
}


function y2k(number) 
{ 
    return (number < 1000) ? number + 1900 : number; 
}


// Daylight Savings Time begins - Sunday 9th March
// Daylight Savings Time ends - Sunday 2nd November
function isdst() 
{
    var mynow  = new Date();
    var myYear = y2k( mynow.getYear() );

    var dstBegins = new Date( myYear, 2, NthDay(second,sun,mar,myYear) );
    var dstEnds   = new Date( myYear, 10, NthDay(first,sun,nov,myYear) );

    var millisecsNow    = mynow.getTime();
    var millisecsBegins = dstBegins.getTime();
    var millisecsEnds   = dstEnds.getTime();

    if( (millisecsNow > millisecsBegins) && (millisecsNow < millisecsEnds) ) 
    {
        return(true);
    }
    else
    {
        return(false);
    }
}


function padout(number) 
{ 
    return (number < 10) ? '0' + number : number; 
}


function ampm(time) 
{
    var hours = time.getHours(), minutes = padout(time.getMinutes());

    if ( document.timebox.lang.value == 'en' )
    {
        var adjhours = (hours == 0) ? 12 : ((hours < 13) ? hours : hours-12);
        return ((adjhours < 10) ? ' ' : '') + adjhours + ':' + minutes + ((hours < 12) ? ' AM' : ' PM');
    }
    else
    {
        return ( hours + 'h' + minutes );
    }
}


if ((navigator.appVersion.indexOf('MSIE 3') == -1))
{
    var fiddle = 1;
}
else
{
    var fiddle = -1;
}



function updateForm() 
{
    var time = new Date();
    var TimezoneOffset = time.getTimezoneOffset();
    var gmtX = -5 - 0;
    var dst = 0;

    if( isdst() )
    {
        dst = 60*60*1000;
    }

    time.setTime( time.getTime() + TimezoneOffset*fiddle*60*1000 + gmtX*60*60*1000 + dst );
    document.timebox.theirtime.value = ampm(time);
    setTimeout("updateForm()",500);
}


