﻿/*
 *	Russia Today Timer manager
 */

var currentDate;
var currentDateLon;
var currentDateNY;
var monthList = new Array(
	'January',
	'February',
	'March',
	'April',
	'May',
	'June',
	'July',
	'August',
	'September',
	'October',
	'November',
	'December'
);

function RT_TimeInit() {
	if (currentDate) return;

	currentDate = {
		divState: false
	};
	currentDateLon = {
		divState: false
	};
	currentDateNY= {
		divState: false
	};
		
	currentDate.value = new Date(document.getElementById('rt-datetime').innerHTML);
	currentDateLon.value = new Date(document.getElementById('rt-datetimeLon').innerHTML);
	var dt_gmt=currentDateLon.value;
	var Moscow_London_Shift=3;
	if (document.getElementById('rt-MosLonShift')!=null){
		Moscow_London_Shift=document.getElementById('rt-MosLonShift').innerHTML;
	}
	var NY_GMT_Shift=4;
	if (document.getElementById('rt-NYGMTShift')!=null){
		NY_GMT_Shift=document.getElementById('rt-NYGMTShift').innerHTML;
	}
	/* Britich summer time GMT+1*/
	currentDateLon.value = new Date(currentDate.value.getFullYear(),currentDate.value.getMonth(),currentDate.value.getDate(),
				       currentDate.value.getHours() - Moscow_London_Shift,// + 1, if use GMT and in Summer time
				       currentDate.value.getMinutes(),
				       currentDate.value.getSeconds());
	
	//new Date(yr_num, mo_num, day_num,hr_num, min_num, sec_num)
	currentDateNY.value = new Date(dt_gmt.getFullYear(),dt_gmt.getMonth(),dt_gmt.getDate(),
				       dt_gmt.getHours()- NY_GMT_Shift,
				       dt_gmt.getMinutes(),
				       dt_gmt.getSeconds());
	nowDate = new Date();
	currentDate.delta = currentDate.value.getTime() - nowDate.getTime();//стартовый отсчет
	currentDateLon.delta = currentDateLon.value.getTime() - nowDate.getTime();//стартовый отсчет
	currentDateNY.delta = currentDateNY.value.getTime() - nowDate.getTime();//стартовый отсчет
	RT_Time();
}

function get_am_pm(hour){
	return (hour < 12) ? 'am' : 'pm';
}
function get_12_format(hour){
	if (hour > 12) hour -= 12;
	if (hour == 0) hour = 12;
	return hour;
}

function get_main_date(msk,lon,ny){
	if (msk == lon || msk == ny){
		return msk;
	}else{
		return ny;
	}
}

function get_other_date(msk, lon, ny){
	if (msk == lon && msk != ny){
		return ' ('+ny+' in NYC)';
	}
	if (lon == ny && lon != msk){
		return ' ('+msk+' in MOW)';
	}
	return '';
}

function RT_Time() {
	if (!currentDate) return;
	nowDate = new Date();
	currentDate.value.setTime(currentDate.delta + nowDate.getTime());
	currentDateLon.value.setTime(currentDateLon.delta + nowDate.getTime());
	currentDateNY.value.setTime(currentDateNY.delta + nowDate.getTime());

	var date = currentDate.value;
	var hours = date.getHours();
	var minutes = date.getMinutes();
	var seconds = date.getSeconds();
	var dn = get_am_pm(hours);
	hours = get_12_format(hours);

	var dateLon = currentDateLon.value;
	var hoursLon = dateLon.getHours();
	var dnLon = get_am_pm(hoursLon);
	hoursLon = get_12_format(hoursLon);
	
	var dateNY = currentDateNY.value;
	var hoursNY = dateNY.getHours();
	var dnNY = get_am_pm(hoursNY);
	hoursNY =get_12_format(hoursNY);
	
	var main_date = ''+get_main_date(date.getDate(), dateLon.getDate(), dateNY.getDate());

	var other_date = ''+get_other_date(date.getDate(), dateLon.getDate(), dateNY.getDate());
	
	document.getElementById('rt-hour').innerHTML = hours;
	document.getElementById('rt-minutes').innerHTML = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes() + ' ' + dn;
	document.getElementById('rt-date').innerHTML = monthList[date.getMonth()] + ' '+main_date + other_date + ', ' + date.getFullYear();

	document.getElementById('rt-dev').style.visibility = document.getElementById('rt-dev2').style.visibility = document.getElementById('rt-dev3').style.visibility = currentDate.divState ? 'visible' : 'hidden';
	currentDate.divState = !currentDate.divState;
	
	document.getElementById('rt-hour2').innerHTML = hoursLon;
	document.getElementById('rt-minutes2').innerHTML = (dateLon.getMinutes() < 10 ? '0' : '') + dateLon.getMinutes() + ' ' + dnLon;
	
	document.getElementById('rt-hour3').innerHTML = hoursNY;
	document.getElementById('rt-minutes3').innerHTML = (dateNY.getMinutes() < 10 ? '0' : '') + dateNY.getMinutes() + ' ' + dnNY;
	
	window.setTimeout("RT_Time()", currentDate.divState ? 400 : 600); 
}
