// script by Josh Fraser (http://www.onlineaspect.com)
// modified by Austin.

var tz = new Array();

tz['-12:00,0'] = '(-12:00) International Date Line West';
tz['-11:00,0'] = '(-11:00) Midway Island, Samoa';
tz['-10:00,0'] = '(-10:00) Hawaii';
tz['-09:00,1'] = '(-09:00) Alaska';
tz['-08:00,1'] = '(-08:00) Pacific Time (US & Canada)';
tz['-07:00,0'] = '(-07:00) Arizona';
tz['-07:00,1'] = '(-07:00) Mountain Time (US & Canada)';
tz['-06:00,0'] = '(-06:00) Central America, Saskatchewan';
tz['-06:00,1'] = '(-06:00) Central Time (US & Canada), Guadalajara, Mexico city';
tz['-05:00,0'] = '(-05:00) Indiana, Bogota, Lima, Quito, Rio Branco';
tz['-05:00,1'] = '(-05:00) Eastern time (US & Canada)';
tz['-04:00,1'] = '(-04:00) Atlantic time (Canada), Manaus, Santiago';
tz['-04:00,0'] = '(-04:00) Caracas, La Paz';
tz['-03:30,1'] = '(-03:30) Newfoundland';
tz['-03:00,1'] = '(-03:00) Greenland, Brasilia, Montevideo';
tz['-03:00,0'] = '(-03:00) Buenos Aires, Georgetown';
tz['-02:00,1'] = '(-02:00) Mid-Atlantic';
tz['-01:00,1'] = '(-01:00) Azores';
tz['-01:00,0'] = '(-01:00) Cape Verde Is.';
tz['00:00,0'] = '(00:00) Casablanca, Monrovia, Reykjavik';
tz['00:00,1'] = '(00:00) Dublin, Edinburgh, Lisbon, London';
tz['+01:00,1'] = '(+01:00) Amsterdam, Berlin, Rome, Vienna, Prague, Brussels';
tz['+01:00,0'] = '(+01:00) West Central Africa';
tz['+02:00,1'] = '(+02:00) Amman, Athens, Istanbul, Beirut, Cairo, Jerusalem';
tz['+02:00,0'] = '(+02:00) Harare, Pretoria';
tz['+03:00,1'] = '(+03:00) Baghdad, Moscow, St. Petersburg, Volgograd';
tz['+03:00,0'] = '(+03:00) Kuwait, Riyadh, Nairobi, Tbilisi';
tz['+03:30,0'] = '(+03:30) Tehran';
tz['+04:00,0'] = '(+04:00) Abu Dhadi, Muscat';
tz['+04:00,1'] = '(+04:00) Baku, Yerevan';
tz['+04:30,0'] = '(+04:30) Kabul';
tz['+05:00,1'] = '(+05:00) Ekaterinburg';
tz['+05:00,0'] = '(+05:00) Islamabad, Karachi, Tashkent';
tz['+05:30,0'] = '(+05:30) Chennai, Kolkata, Mumbai, New Delhi, Sri Jayawardenepura';
tz['+05:45,0'] = '(+05:45) Kathmandu';
tz['+06:00,0'] = '(+06:00) Astana, Dhaka';
tz['+06:00,1'] = '(+06:00) Almaty, Nonosibirsk';
tz['+06:30,0'] = '(+06:30) Yangon (Rangoon)';
tz['+07:00,1'] = '(+07:00) Krasnoyarsk';
tz['+07:00,0'] = '(+07:00) Bangkok, Hanoi, Jakarta';
tz['+08:00,0'] = '(+08:00) Beijing, Hong Kong, Singapore, Taipei';
tz['+08:00,1'] = '(+08:00) Irkutsk, Ulaan Bataar, Perth';
tz['+09:00,1'] = '(+09:00) Yakutsk';
tz['+09:00,0'] = '(+09:00) Seoul, Osaka, Sapporo, Tokyo';
tz['+09:30,0'] = '(+09:30) Darwin';
tz['+09:30,1'] = '(+09:30) Adelaide';
tz['+10:00,0'] = '(+10:00) Brisbane, Guam, Port Moresby';
tz['+10:00,1'] = '(+10:00) Canberra, Melbourne, Sydney, Hobart, Vladivostok';
tz['+11:00,0'] = '(+11:00) Magadan, Solomon Is., New Caledonia';
tz['+12:00,1'] = '(+12:00) Auckland, Wellington';
tz['+12:00,0'] = '(+12:00) Fiji, Kamchatka, Marshall Is.';
tz['+13:00,0'] = '(+13:00) Nuku \'alofa';

var rightNow = new Date();
var userTime = 0;
var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
var temp = jan1.toGMTString();
var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
temp = june1.toGMTString();
var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
var dst;
if (std_time_offset == daylight_time_offset) {
    dst = "0"; // daylight savings time is NOT observed
} else {
    // positive is southern, negative is northern hemisphere
    var hemisphere = std_time_offset - daylight_time_offset;
    if (hemisphere >= 0)
    std_time_offset = daylight_time_offset;
    dst = "1"; // daylight savings time is observed
}

var cookie = GetCookie('tz');

if (cookie == '') {
    cookie = convert(std_time_offset)+","+dst;
    SetCookie('tz', cookie, 365);
}

function print_time_zone() {
    document.write(tz[cookie]);
}

function print_time() {
    document.write('<span id=\'localTime\'>' + realTimeConvert(rightNow) + '</span>');
    var blah = window.setInterval('print_time_update()', 10000);
}

function print_time2(d) {
    userTime = d + 10;
    document.write('<span id=\'localTime\'>' + localTime2(d) + '</span>');
    var blah = window.setInterval('print_time_update2()', 10000);
}

function print_time_update() {
    if (document.getElementById('localTime')) {
        var myDate = new Date();
        document.getElementById('localTime').innerHTML = realTimeConvert(myDate);
    }
}

function print_time_update2() {
    if (document.getElementById('localTime')) {
        document.getElementById('localTime').innerHTML = localTime2(userTime);
        userTime += 10;
    }
}

function realTimeConvert(t) {
    var sec = t.getSeconds();
    var min = t.getMinutes();
    var hrs = t.getHours();
    var day = t.getDay();
    var dte = t.getDate();
    var mon = t.getMonth();
    var yrs = t.getFullYear();
    
    var dayext = 'th';
    
    if (dte == 1 || dte == 21 || dte == 31) dayext = 'st';
    if (dte == 2 || dte == 22) dayext = 'nd';
    if (dte == 3 || dte == 23) dayext = 'rd';
    
    if (day == 0) day = 'Sunday';
    if (day == 1) day = 'Monday';
    if (day == 2) day = 'Tuesday';
    if (day == 3) day = 'Wednesday';
    if (day == 4) day = 'Thursday';
    if (day == 5) day = 'Friday';
    if (day == 6) day = 'Saturday';
    if (mon == 0) mon = 'January';
    if (mon == 1) mon = 'February';
    if (mon == 2) mon = 'March';
    if (mon == 3) mon = 'April';
    if (mon == 4) mon = 'May';
    if (mon == 5) mon = 'June';
    if (mon == 6) mon = 'July';
    if (mon == 7) mon = 'August';
    if (mon == 8) mon = 'September';
    if (mon == 9) mon = 'October';
    if (mon == 10) mon = 'November';
    if (mon == 11) mon = 'December';

    if (min < 10) {
        min = min.toString();
        min = '0' + min;
    }
    
    if (sec < 10) {
        sec = sec.toString();
        sec = '0' + sec;
    }
    
    var ampm = 'am';
    if (hrs > 12) {
        hrs = hrs - 12;
        ampm = 'pm';
    }
    
    var formattedTime = day + ', ' + mon + ' ' + dte + dayext + ', ' + yrs + ' - ' + hrs + ':' + min + ' ' + ampm;
    return formattedTime;
}

function calculate_time_zone() {
    if (document.getElementById('timezone')) {
        if (cookie == '') {
            var i;
            for (i = 0; i < document.getElementById('timezone').options.length; i++) {
                if (document.getElementById('timezone').options[i].value == convert(std_time_offset)+","+dst) {
                    document.getElementById('timezone').selectedIndex = i;
                    SetCookie('tz', document.getElementById('timezone').options[i].value, 365);
                    break;
                }
            }
        } else {
            var i;
            for (i = 0; i < document.getElementById('timezone').options.length; i++) {
                if (document.getElementById('timezone').options[i].value == cookie) {
					document.getElementById('timezone').selectedIndex = i;
                    SetCookie('tz', document.getElementById('timezone').options[i].value, 365);
                    break;
                }
            }
        }
    }
}

function convert(value) {
	var hours = parseInt(value,10);
   	value -= parseInt(value,10);
	value *= 60;
	var mins = parseInt(value,10);
   	value -= parseInt(value,10);
	value *= 60;
	var secs = parseInt(value,10);
	var display_hours = hours;
	display_hours = (hours < 10 && hours > 0) ? "+0"+hours : "+"+hours; // positive
	display_hours = (hours == 0) ? "0"+hours : display_hours; // handle GMT case (00:00)
	display_hours = (hours < 0 && hours > -10) ? "-0"+Math.abs(hours) : display_hours; // neg
    mins = (mins < 10) ? "0"+mins : mins;
	return display_hours+":"+mins;
}

function localTime(value, dateType) {
    var cookie2 = cookie;
    
    if (cookie2 == '00:00,0' || cookie2 == '00:00,1' || cookie2 == '00:00,-1') {
        cookie2 = '+' + cookie2;
    }
    
    if (cookie2 == '') {
        var theDate = new Date(value * 1000);
    } else {
        var offset = parseInt(cookie2.substring(0,3),10);
        var nDate = new Date();
        var gmto = std_time_offset * -60;
        offset = offset + (parseInt(cookie2.substring(4,6),10) / 60);
        value = value + (((gmto / 60) + offset) * 3600);
        var theDate = new Date(value * 1000)
    }
    
    var dayname = theDate.getDay();
    var day = theDate.getDate();
    var month = theDate.getMonth();
    var year = theDate.getFullYear();
    var hour = theDate.getHours();
    var min = theDate.getMinutes();
    var dayext = 'th';
    
    if (day == 1 || day == 21 || day == 31) dayext = 'st';
    if (day == 2 || day == 22) dayext = 'nd';
    if (day == 3 || day == 23) dayext = 'rd';
    
    if (dayname == 0) dayname = 'Sunday';
    if (dayname == 1) dayname = 'Monday';
    if (dayname == 2) dayname = 'Tuesday';
    if (dayname == 3) dayname = 'Wednesday';
    if (dayname == 4) dayname = 'Thursday';
    if (dayname == 5) dayname = 'Friday';
    if (dayname == 6) dayname = 'Saturday';
    if (month == 0) month = 'January';
    if (month == 1) month = 'February';
    if (month == 2) month = 'March';
    if (month == 3) month = 'April';
    if (month == 4) month = 'May';
    if (month == 5) month = 'June';
    if (month == 6) month = 'July';
    if (month == 7) month = 'August';
    if (month == 8) month = 'September';
    if (month == 9) month = 'October';
    if (month == 10) month = 'November';
    if (month == 11) month = 'December';

    if (min < 10) {
        min = min.toString();
        min = '0' + min;
    }
    
    var ampm = 'am';
    if (hour >= 12) {
		if (hour>12)
		{
        hour = hour - 12;
		}
        ampm = 'pm';
    }
    
    if (dateType == 1) {
        document.write(dayname + ', ' + month + ' ' + day + dayext + ', ' + year);
    } else {
        document.write(hour + ':' + min + ' ' + ampm);
    }
}

function localTime2(value) {
    var cookie2 = cookie;
    
    if (cookie2 == '00:00,0' || cookie2 == '00:00,1' || cookie2 == '00:00,-1') {
        cookie2 = '+' + cookie2;
    }
    
    if (cookie2 == '') {
        var theDate = new Date(value * 1000);
    } else {
        var offset = parseInt(cookie2.substring(0,3),10);
        var nDate = new Date();
        var gmto = std_time_offset * -60;
        offset = offset + (parseInt(cookie2.substring(4,6),10) / 60);
        value = value + (((gmto / 60) + offset) * 3600);
        var theDate = new Date(value * 1000)
    }
    
    var dayname = theDate.getDay();
    var day = theDate.getDate();
    var month = theDate.getMonth();
    var year = theDate.getFullYear();
    var hour = theDate.getHours();
    var min = theDate.getMinutes();
    var dayext = 'th';
    
    if (day == 1 || day == 21 || day == 31) dayext = 'st';
    if (day == 2 || day == 22) dayext = 'nd';
    if (day == 3 || day == 23) dayext = 'rd';
    
    if (dayname == 0) dayname = 'Sunday';
    if (dayname == 1) dayname = 'Monday';
    if (dayname == 2) dayname = 'Tuesday';
    if (dayname == 3) dayname = 'Wednesday';
    if (dayname == 4) dayname = 'Thursday';
    if (dayname == 5) dayname = 'Friday';
    if (dayname == 6) dayname = 'Saturday';
    if (month == 0) month = 'January';
    if (month == 1) month = 'February';
    if (month == 2) month = 'March';
    if (month == 3) month = 'April';
    if (month == 4) month = 'May';
    if (month == 5) month = 'June';
    if (month == 6) month = 'July';
    if (month == 7) month = 'August';
    if (month == 8) month = 'September';
    if (month == 9) month = 'October';
    if (month == 10) month = 'November';
    if (month == 11) month = 'December';

    if (min < 10) {
        min = min.toString();
        min = '0' + min;
    }
    
    var ampm = 'am';
    if (hour > 12) {
        hour = hour - 12;
        ampm = 'pm';
    }
    
    return dayname + ', ' + month + ' ' + day + dayext + ', ' + year + ' ' + hour + ':' + min + ' ' + ampm;
}

function SetCookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

function GetCookie(cookiename) {
 var cookiestring=""+document.cookie;
 var index1=cookiestring.indexOf(cookiename);
 if (index1==-1 || cookiename=="") return ""; 
 var index2=cookiestring.indexOf(';',index1);
 if (index2==-1) index2=cookiestring.length; 
 return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
}