// BEGIN CODE
	// General code

	if (navigator.userAgent.indexOf("Mozilla/3.0") != -1) browserVersion = 3;

	else if (navigator.userAgent.indexOf("Mozilla/4.0") !=-1) browserVersion = 3;

	else if (navigator.userAgent.indexOf("Mozilla/2.0") != -1) browserVersion = 2;

	else if (navigator.userAgent.indexOf("MSIE") != -1) browserVersion = 2;

	else browserVersion = 0;

	if (navigator.userAgent.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Mac") != -1) browserVersion = 1;
// END CODE



function getTime(ZoneData) {
CheckDST();
	currentQuery = ZoneData;
	qHandler (ZoneData); //done;
	return formatTime ( qReport[0] );

}


function qReply (ZoneData) {
	currentQuery = ZoneData;
	qHandler (ZoneData);
	document.forms[3].elements[0].value =
		"Place Time = " + formatTime ( qReport[0] )
		+ newline + "Different with lokal time = "+ qReport[1]
		+ newline + "Different with UTC = "+ qReport[2]
		+ newline + "Sumertime in use? = " + qReport[3];
	}




//Globals
	dstZones = new Array ();
	qReport = new Array ();
	TableTimes = new Array();
	currentQuery = null;
	var NAV4 = (navigator.appVersion.substring(0,3) == "4.0" && navigator.appName=="Netscape") ? true : false;
	var timerID = null;
	var timerRunning = false;
	var Local = new Date();
	var GMToffset = Local.getTimezoneOffset();


	if (GMToffset < 0) {GMToffset = Math.abs(GMToffset)}
	else {GMToffset = GMToffset - (Math.abs(GMToffset) *2)};


	var newline= (navigator.appVersion.lastIndexOf('Win') != -1) ? "\r\n" : "\n";

function Into24hrs (time) {
	if ( time > 1440)
		{ time -= 1440}
	else
		{ if ( time <0) { time = 1440 + time } };
	return time;
	} // --- Into24hrs

function GMTnow (GMT) {
	var time = new Date();
	hrs = time.getHours();
	mins = time.getMinutes();
	GMT = (hrs*60 + mins) - GMToffset;
	GMT = Into24hrs(GMT);
	return GMT;
	}

function formatRelative (time) {
	var Report = null;
	var Direction  = (time > 0) ? "before" : "behind";
	time = Math.abs (time);
	var Hours = Math.floor (time/60);
	var Mins = (time - Hours * 60);
	Report = Hours + " hours ";
	if (Mins != 0) {Report=Report+Mins + " min. "};
	Report = Report+ Direction;
	if (time== 0) {Report="same time"};
	return Report;
	};

function formatTime (time) {
	var fHours = Math.floor (time/60) ;
	if (fHours <= 9) {fHours = "0" + fHours};
	var fMins = time - (fHours * 60);
	if (fMins <= 9) {fMins = "0" + fMins};
	var fTime = fHours + ":" + fMins;
	return fTime;
	};

function CheckDST () {
	var uNow = new Date();
	var uYear = uNow.getYear();
	var leap = ((uYear % 4 == 0 && uYear % 100 != 0) || uYear % 400 == 0 )? true : false;
	MonthDays = new Array (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
	var TodayNum = MonthDays [uNow.getMonth()] + uNow.getDate();
	if (leap && TodayNum > 59) {TodayNum += 1};
//FirstSun8Feb, FirstSun15Mar, LastSunMar, FirstSunApr, LastSunSep, FirstSunOct, FirstSun15Oct,LastSunOct,
	ChangeDays = new Array (43, 78, 85, 92, 274, 281, 295, 302);
	var NumChangeDays = ChangeDays.length;
	if (leap) { for (var idx = 0; idx <= 6; idx++) {ChangeDays [idx] += 1} };
	DSTdays = new Array ();
	LastJan1 = new Date("Jan 1, " + uYear);
	DayJan1 = LastJan1.getDay ();
	for (var idx2 = 0; idx2 < NumChangeDays; idx2++) {
		DSTdays [idx2] = ( TodayNum >= ChangeDays [idx2] - DayJan1 ) ? true : false;
		};
	dstZones[0] = null;
	dstZones[1] = null;
	dstZones[2] =  ( DSTdays[3] && !DSTdays[7] ) ? true : false;//usa/canada
	dstZones[3] =  ( DSTdays[2] && !DSTdays[7] ) ? true : false;//uk/europe
	dstZones[4] =  ( DSTdays[7] || !DSTdays[2] ) ? true : false;//aus
	dstZones[5] =  ( DSTdays[5] || !DSTdays[2] ) ? true : false;//aus-tasmania
	dstZones[6] =  ( DSTdays[5] || !DSTdays[1] ) ? true : false;//nz
	dstZones[7] =  ( DSTdays[2] && !DSTdays[4] ) ? true : false;//russia
                         }

function qHandler(ZoneData) {
	qReport[0] = ""; qReport[1] = ""; qReport[2] = ""; qReport[3] = "";

	var qGMTparse = parseFloat(ZoneData);
	var qGMToffset_hrs = parseInt(qGMTparse, 10) ;
	var qGMToffset_min= parseInt ( Math.round((qGMTparse-qGMToffset_hrs) * 100), 10);
	var qDSTperiod = ZoneData.charAt (ZoneData.length - 1);
	var qGMTperiod = 1440/60;
	if ( (qGMToffset_hrs > 12) || (qGMToffset_hrs <-11) ) {qReport[0] = "BAD DATA"; return};
	if (qDSTperiod > dstZones.length) {qReport[3] = "BAD DATA"};
	var relGMT = (qGMToffset_hrs * 60) + qGMToffset_min;
	if (qDSTperiod>1 && dstZones [qDSTperiod]) {relGMT += 60; qReport[3] = "yes (+1 hour)"} else {qReport[3] = "no"};
	if (qDSTperiod == 0) {qReport[3] = "unknown"};
	if (qDSTperiod == 1) {qReport[3] = "not sure"};
	var qPlaceTotMins = GMTnow (qPlaceTotMins);
	qPlaceTotMins += relGMT;
	qPlaceTotMins = Into24hrs (qPlaceTotMins);
	qReport[0] = qPlaceTotMins;
	qReport[2] = formatRelative (relGMT);
	var relLoc = relGMT - GMToffset;
	qReport[1] = formatRelative (relLoc);
	}
