var SECOND = 1000;
var MINUTE = 60 * SECOND;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;

function makeArray()    {
	this[0] = makeArray.arguments.length;
	for (i=0; i<makeArray.arguments.length; i++) { this[i+1] = makeArray.arguments[i]; }
}

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 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 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 y2k(number) {
	return (number < 1000) ? number + 1900 : number;
}

var today      = new Date();
var year       = y2k(today.getYear());
var DSTstart   = new Date(year,4-1,NthDay(1,1,4,year),2,0,0);
var DSTend     = new Date(year,10-1,NthDay(-1,1,10,year),2,0,0);
var DSTstartMS = getMS(DSTstart);
var DSTendMS   = getMS(DSTend);
var todayMS    = getMS(today);

function getMS(date) {
    	return Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds());
}

function getDaylightSaving() {
	var daylightTime;
	daylightTime = todayMS > DSTstartMS && todayMS < DSTendMS;
	return daylightTime;
}

var LJUBLJANA_OFFSET = (getDaylightSaving() ? 2 : 1) * HOUR;

function generateClock() {
	var now = new Date();
	var tz = now.getTimezoneOffset() * MINUTE;
	var now = new Date(now.getTime() + tz + LJUBLJANA_OFFSET);
	var result = '';

	var sec = now.getSeconds();
	var min = now.getMinutes();
	var hour = now.getHours();
	var day = now.getDate();
	var month = now.getMonth();
	var year = now.getFullYear()
	result += '&nbsp;Datum: ';
	result += day + '.';
	if(++month<10) { month = '0' + month; }
	result += month + '.';
	if(year<10) { year = '0' + year; }
	result +=  year + '&nbsp;';
	result += '<br>&nbsp;Ura: ';
	result += hour;
	result += ':';
	if(min<10) { min = '0' + min; }
	result += min;
	if(sec<10) { sec = '0' + sec; }
	result += ':' + sec;
	
	return(result);
}

function writeECMAClock() {
	document.getElementById("clock").innerHTML = generateClock();
	setTimeout("writeECMAClock()", 1000);
}

function writeNNClock() {
	clockpos = document.clockPos;
	clockpos.visibility = "show";
	liveclock = clockpos.document.liveClock;
	liveclock.document.open();
	liveclock.document.write('<font class="ura">' + generateClock() + '</font>');
	liveclock.document.close();
	setTimeout("writeNNClock()", 1000);
}

if (document.getElementById) {
	document.write('<div class=clock title="Internetna ura" name="clock" id="clock">' + generateClock() + '</div>');
	setTimeout("writeECMAClock()", 1000);

} else if (document.layers) {
	document.write('<ilayer id="clockPos"><layer id="liveClock">' + generateClock() + '</layer></ilayer>');
	setTimeout("writeNNClock()", 1000);
} else {
	document.writeln( generateClock() );
}
