/*
	http://metro.deeptext.ru/
	(c) DeepText
	mail@deeptext.ru
	January 12, 2008
*/

var stations = [
	[[19791230, 666, 404, 8, 'Aviamotornaya']],
	[[19430101, 550, 596, 2, 'Zavod imeni Stalina'], [19560705, 550, 596, 2, 'Avtozavodskaya']],
	[[19621013, 211, 612, 6, 'Akademicheskaya']],
	[[19350515, 274, 426, 1, 'Komintern'], [19380313, 274, 426, 3, 'Komintern'], [19461224, 274, 426, 3, 'Kalininskaya'], [19530405, 274, 426, 4, 'Kalininskaya', 'closed'], [19580101, 274, 426, 4, 'Kalininskaya'], [19901105, 274, 426, 4, 'Aleksandrovskij sad']],
	[[19580501, 470, 109, 6, 'Mir'], [19660620, 470, 109, 6, 'Csherbakovskaya'], [19901105, 470, 109, 6, 'Alekseevskaya']],
	[[19940715, 345, 0, 9, 'Altufyevo']],
	[[20011212, 362, 730, 9, 'Annino']],
	[[19530405, 274, 436, 3, 'Arbatskaya']],
	[[19350515, 247, 400, 1, 'Arbatskaya'], [19380313, 247, 400, 3, 'Arbatskaya'], [19530405, 247, 400, 4, 'Arbatskaya', 'closed'], [19580101, 247, 400, 4, 'Arbatskaya']],
	[[19380911, 242, 109, 2, 'Aehroport']],
	[[19780929, 470, 45, 6, 'Babushkinskaya']],
	[[19611013, 30, 304, 4, 'Bagrationovskaya']],
	[[19721230, 182, 255, 7, 'Barrikadnaya']],
	[[19440118, 610, 320, 3, 'Baumanskaya']],
	[[19721230, 125, 184, 7, 'Begovaya']],
	[[19380911, 242, 193, 2, 'Belorusskaya']],
	[[19520130, 242, 183, 5, 'Belorusskaya']],
	[[19740812, 211, 678, 6, 'Belyaevo']],
	[[19921231, 345, 16, 9, 'Bibirevo']],
	[[19350515, 274, 446, 1, 'Biblioteka imeni Lenina']],
	[[19900117, 211, 742, 6, 'Bittsevskij park']],
	[[19860123, 274, 416, 9, 'Borovitskaya']],
	[[19780929, 470, 77, 6, 'Botanicheskij sad']],
	[[19961225, 685, 708, 10, 'Bratislavskaya']],
	[[20021226, 362, 746, 9, 'Boulevard Dmitriya Donskogo']],
	[[19580501, 470, 93, 6, 'VSHV'], [19591212, 470, 93, 6, 'VDNH']],
	[[19690811, 472, 639, 2, 'Varshavskaya'], [19951120, 472, 639, 11, 'Varshavskaya']],
	[[19910301, 345, 48, 9, 'Vladykino']],
	[[19641231, 242, 61, 2, 'Vodnyj stadion']],
	[[19641231, 242, 77, 2, 'Vojkovskaya']],
	[[19661231, 634, 541, 7, 'Volgogradskij prospekt']],
	[[19951228, 685, 676, 10, 'Volzhskaya']],
	[[19590112, 61, 671, 1, 'Leninskie gory'], [19831020, 61, 671, 1, 'Leninskie gory', 'closed'], [19990512, 61, 671, 1, 'Vorobyevy gory', 'closed'], [20021214, 61, 671, 1, 'Vorobyevy gory']],
	[[19661231, 698, 605, 7, 'ZHdanovskaya'], [19890113, 698, 605, 7, 'Vyhino']],
	[[20050910, 136, 304, 4, 'Delovoj tsentr']],
	[[19380911, 242, 125, 2, 'Dinamo']],
	[[19910301, 345, 109, 9, 'Dmitrovskaya']],
	[[19500101, 362, 559, 5, 'Dobryninskaya']],
	[[19850907, 550, 692, 2, 'Domodedovskaya']],
	[[19991211, 685, 626, 10, 'Dubrovka']],
	[[19541105, 672, 257, 3, 'Pervomajskaya (in depot)'], [19611021, 674, 256, 3, 'Izmajlovskij park'], [19630820, 674, 256, 3, 'Izmajlovskaya']],
	[[19640415, 211, 662, 6, 'Kaluzhskaya (in depot)'], [19740812, 211, 662, 6, 'Kaluzhskaya']],
	[[19841230, 550, 644, 2, 'Kantemirovskaya'], [19841231, 550, 644, 2, 'Kantemirovskaya', 'closed'], [19850209, 550, 644, 2, 'Kantemirovskaya']],
	[[19690811, 462, 650, 2, 'Kahovskaya'], [19831108, 462, 650, 2, 'Kahovskaya'], [19951120, 462, 650, 11, 'Kahovskaya']],
	[[19690811, 550, 628, 2, 'Kashirskaya']],
	[[19841231, 482, 628, 2, 'Kashirskaya'], [19951120, 482, 628, 11, 'Kashirskaya']],
	[[19530405, 157, 403, 3, 'Kievskaya']],
	[[19540314, 157, 393, 5, 'Kievskaya']],
	[[19370320, 157, 383, 1, 'Kievskaya'], [19380313, 157, 383, 3, 'Kievskaya'], [19530405, 157, 383, 4, 'Kievskaya', 'closed'], [19580101, 157, 383, 4, 'Kievskaya']],
	[[19710105, 486, 383, 6, 'Plocshad Nogina', 'half'], [19751217, 486, 383, 6, 'Plocshad Nogina'], [19901105, 486, 383, 6, 'Kitaj-gorod']],
	[[19710105, 486, 393, 7, 'Plocshad Nogina', 'half'], [19751217, 486, 393, 7, 'Plocshad Nogina'], [19901105, 486, 393, 7, 'Kitaj-gorod']],
	[[19951228, 685, 642, 10, 'Kozhuhovskaya']],
	[[19690811, 550, 612, 2, 'Kolomenskaya']],
	[[19350515, 545, 255, 1, 'Komsomolskaya']],
	[[19520130, 545, 265, 5, 'Komsomolskaya']],
	[[19871106, 211, 694, 6, 'Konkovo']],
	[[19850907, 550, 708, 2, 'Krasnogvardejskaya']],
	[[19540314, 182, 245, 5, 'Krasnopresnenskaya']],
	[[19350515, 619, 181, 1, 'Krasnoselskaya']],
	[[19350515, 515, 285, 1, 'Krasnye vorota'], [19620529, 515, 285, 1, 'Lermontovskaya'], [19860825, 515, 285, 1, 'Krasnye vorota']],
	[[19951228, 618, 515, 10, 'Krestyanskaya zastava']],
	[[19350515, 225, 463, 1, 'Dvorets Sovetov'], [19571008, 225, 463, 1, 'Kropotkinskaya']],
	[[19891231, 14, 224, 4, 'Krylatskoe'], [20080108, 14, 224, 3, 'Krylatskoe']],
	[[19751217, 393, 360, 7, 'Kuznetskij most']],
	[[19661231, 666, 573, 7, 'Kuzminki']],
	[[19650705, 14, 256, 4, 'Kuntsevskaya', 'closed'], [19650831, 14, 256, 4, 'Kuntsevskaya'], [20080108, 14, 256, 3, 'Kuntsevskaya']],
	[[19380313, 564, 350, 3, 'Kurskaya']],
	[[19500101, 564, 360, 5, 'Kurskaya']],
	[[19581107, 30, 336, 4, 'Kutuzovskaya']],
	[[19621013, 211, 596, 6, 'Leninskij prospekt']],
	[[19350515, 393, 370, 1, 'Dzerzhinskaya'], [19901105, 393, 370, 1, 'Lubyanka']],
	[[19961225, 685, 692, 10, 'Lyublino']],
	[[19791230, 544, 461, 8, 'Marksistskaya']],
	[[19961225, 685, 725, 10, 'Maryino']],
	[[19380911, 316, 268, 2, 'Mayakovskaya']],
	[[19780929, 470, 29, 6, 'Medvedkovo']],
	[[20060830, 136, 288, 4, 'Mezhdunarodnaya']],
	[[19881231, 345, 158, 9, 'Mendeleevskaya']],
	[[19650705, 14, 240, 4, 'Molodezhnaya'], [20080108, 14, 240, 3, 'Molodezhnaya']],
	[[19831108, 362, 596, 9, 'Nagatinskaya']],
	[[19831108, 362, 612, 9, 'Nagornaya']],
	[[19831108, 362, 628, 9, 'Nahimovskij<br />prospekt']],
	[[19791230, 713, 356, 8, 'Novogireevo']],
	[[19430101, 430, 447, 2, 'Novo-kuznetskaya'], [19431120, 430, 447, 2, 'Novokuznetskaya']],
	[[19520130, 345, 147, 5, 'Novoslobodskaya']],
	[[19621013, 211, 645, 6, 'Novye CHeremushki']],
	[[19621013, 265, 528, 6, 'Oktyabrskaya']],
	[[19500101, 265, 538, 5, 'Kaluzhskaya'], [19610606, 265, 538, 5, 'Oktyabrskaya']],
	[[19721230, 125, 152, 7, 'Oktyabrskoe pole']],
	[[19841230, 550, 676, 2, 'Orehovo'], [19841231, 550, 676, 2, 'Orehovo', 'closed'], [19850209, 550, 676, 2, 'Orehovo']],
	[[19910301, 345, 32, 9, 'Otradnoe']],
	[[19350515, 370, 392, 1, 'Ohotnyj ryad'], [19380313, 370, 392, 1, 'Ohotnyj ryad'], [19551125, 370, 392, 1, 'Imeni L. M. Kaganovicha'], [19570901, 370, 392, 1, 'Ohotnyj ryad'], [19611130, 370, 392, 1, 'Prospekt Marksa'], [19901105, 370, 392, 1, 'Ohotnyj ryad']],
	[[19430101, 503, 509, 2, 'Paveletskaya', 'closed'], [19431120, 503, 509, 2, 'Paveletskaya']],
	[[19500101, 503, 499, 5, 'Paveletskaya']],
	[[19350515, 206, 482, 1, 'Park kultury']],
	[[19500101, 206, 492, 5, 'Park kultury']],
	[[20030506, 30, 403, 3, 'Park Pobedy']],
	[[19440118, 658, 272, 3, 'Izmajlovskaya'], [19630820, 658, 272, 3, 'Izmajlovskij park'], [20050503, 658, 272, 3, 'Partizanskaya']],
	[[19611021, 690, 240, 3, 'Pervomajskaya']],
	[[19791230, 698, 372, 8, 'Perovo']],
	[[19910301, 345, 68, 9, 'Petrovsko-<br />Razumovskaya']],
	[[19951228, 685, 658, 10, 'Pechatniki']],
	[[19611013, 30, 272, 4, 'Pionerskaya'], [20080108, 30, 272, 4, 'Pionerskaya']],
	[[19751230, 125, 88, 7, 'Planernaya']],
	[[19791230, 618, 451, 8, 'Plocshad Ilyicha']],
	[[19380313, 370, 402, 3, 'Plocshad Revolyutsii']],
	[[19721230, 125, 168, 7, 'Polezhaevskaya']],
	[[19860123, 362, 502, 9, 'Polyanka']],
	[[19851106, 362, 698, 9, 'Prazhskaya']],
	[[19651231, 619, 149, 1, 'Preobrazhenskaya plocshad']],
	[[19661231, 618, 525, 7, 'Proletarskaya']],
	[[19631230, 61, 703, 1, 'Prospekt Vernadskogo']],
	[[19580501, 470, 168, 6, 'Botanicheskij sad'], [19660620, 470, 168, 6, 'Prospekt Mira']],
	[[19520130, 470, 178, 5, 'Botanicheskij sad'], [19660620, 470, 178, 5, 'Prospekt Mira']],
	[[19621013, 211, 628, 6, 'Profsoyuznaya']],
	[[19751217, 316, 343, 7, 'Pushkinskaya']],
	[[19641231, 242, 45, 2, 'Rechnoj vokzal']],
	[[19580501, 470, 125, 6, 'Rizhskaya']],
	[[19951228, 618, 441, 10, 'Rimskaya']],
	[[19661231, 682, 589, 7, 'Ryazanskij prospekt']],
	[[19881231, 345, 125, 9, 'Savelovskaya']],
	[[19780929, 470, 61, 6, 'Sviblovo']],
	[[19831108, 362, 650, 9, 'Sevastopolskaya']],
	[[19440118, 642, 288, 3, 'Stalinskaya'], [19611130, 642, 288, 3, 'Semenovskaya'], [20050515, 642, 288, 3, 'Semenovskaya', 'closed'], [20060428, 642, 288, 3, 'Semenovskaya']],
	[[19831108, 362, 549, 9, 'Serpuhovskaya']],
	[[19530405, 179, 425, 3, 'Smolenskaya']],
	[[19350515, 230, 383, 1, 'Smolenskaya'], [19380313, 230, 383, 3, 'Smolenskaya'], [19530405, 230, 383, 4, 'Smolenskaya', 'closed'], [19580101, 230, 383, 4, 'Smolenskaya']],
	[[19380911, 242, 93, 2, 'Sokol']],
	[[19350515, 619, 165, 1, 'Sokolniki']],
	[[19570501, 61, 655, 1, 'Sportivnaya']],
	[[20071229, 470, 319, 10, 'Sretenskij Boulevard']],
	[[20080107, 14, 209, 4, 'Strogino'], [20080108, 14, 209, 3, 'Strogino']],
	[[19581107, 30, 352, 4, 'Studencheskaya']],
	[[19711231, 470, 220, 6, 'Kolhoznaya'], [19901105, 470, 220, 6, 'Suharevskaya']],
	[[19751230, 125, 104, 7, 'Shodnenskaya']],
	[[19661231, 544, 451, 7, 'Taganskaya']],
	[[19500101, 544, 441, 5, 'Taganskaya']],
	[[19790720, 316, 333, 2, 'Gorkovskaya'], [19901105, 316, 333, 2, 'Tverskaya']],
	[[19380911, 370, 412, 2, 'Plocshad Sverdlova'], [19901105, 370, 412, 2, 'Teatralnaya']],
	[[19661231, 650, 557, 7, 'Tekstilcshiki']],
	[[19871106, 211, 710, 6, 'Teplyj Stan']],
	[[19910301, 345, 93, 9, 'Timiryazevskaya']],
	[[19710105, 430, 437, 6, 'Novokuznetskaya'], [19831104, 430, 437, 6, 'Tretyakovskaya']],
	[[19860125, 430, 457, 8, 'Tretyakovskaya']],
	[[20070830, 345, 194, 10, 'Trubnaya']],
	[[19831108, 362, 580, 9, 'Tulskaya']],
	[[19711231, 470, 339, 6, 'Turgenevskaya']],
	[[19751230, 125, 120, 7, 'Tushinskaya']],
	[[19721230, 125, 200, 7, 'Ulitsa 1905 goda']],
	[[19900801, 619, 117, 1, 'Ulitsa Podbelskogo']],
	[[20000831, 362, 714, 9, 'Ulitsa akademika Yangelya']],
	[[19590112, 61, 686, 1, 'Universitet']],
	[[19611013, 30, 288, 4, 'Filevskij park']],
	[[19591107, 30, 320, 4, 'Fili']],
	[[19570501, 61, 639, 1, 'Frunzenskaya']],
	[[19841230, 550, 660, 2, 'Lenino'], [19841231, 550, 660, 2, 'Lenino', 'closed'], [19850209, 550, 660, 2, 'Lenino'], [19901105, 550, 660, 2, 'TSaritsyno']],
	[[19881231, 345, 184, 9, 'Tsvetnoj boulevard']],
	[[19900801, 619, 133, 1, 'Cherkizovskaya']],
	[[19831108, 362, 666, 9, 'Chertanovskaya']],
	[[19871231, 316, 323, 9, 'Chehovskaya']],
	[[19350515, 470, 329, 1, 'Kirovskaya'], [19901105, 470, 329, 1, 'Chistye prudy']],
	[[19951228, 564, 370, 10, 'Chkalovskaya']],
	[[19801105, 211, 580, 6, 'Shabolovskaya']],
	[[19791230, 682, 388, 8, 'Shosse Ehntuziastov']],
	[[19630722, 706, 224, 3, 'Cshelkovskaya']],
	[[19751230, 125, 136, 7, 'Cshukinskaya']],
	[[19440515, 626, 304, 3, 'Elektrozavodskaya'], [20070519, 626, 304, 3, 'Elektrozavodskaya', 'closed'], [20081128, 626, 304, 3, 'Elektrozavodskaya']],
	[[19631230, 61, 719, 1, 'Yugo-zapadnaya']],
	[[19831108, 362, 682, 9, 'Yuzhnaya']],
	[[19900117, 211, 726, 6, 'Yasenevo']],
	[[20031227, 362, 756, 12, 'Ulitsa Starokachalovskaya']],
	[[20031227, 362, 770, 12, 'Ulitsa Skobelevskaya']],
	[[20031227, 362, 786, 12, 'Boulevard admirala Ushakova']],
	[[20031227, 362, 802, 12, 'Ulitsa Gorchakova']],
	[[20031227, 362, 818, 12, 'Buninskaya alleya']]
];

var sliderHeight = 810;
var calendar = {start: 19350515};
var line_drawings = new Array();
var slider;
var month_name = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

function BuildMap(when) {
	var stations_area = document.getElementById('metro-stations');
	var lines_area = document.getElementById('metro-lines');
	if (!stations_area || !lines_area) return;

	if (!when) {
		when = document.location.hash ? document.location.hash.substr(1) : calendar.today;
	}
	if (when.length != 8) return;

	var lines = new Array();
	var html = '';
	
	for (var c = 0; c != stations.length; c++) {
		var station_html = '';
		var station_history = stations[c];
		for (var t = station_history.length - 1; t >= 0; t--) {
			var station = station_history[t];

			var station_date = station[0];
			var station_left = station[1];
			var station_top  = station[2];
			var station_line = station[3];
			var station_name = station[4];

			if (station_date <= when) {
				var is_renamed_or_modified = 
					   (t && station_name   != station_history[t - 1][4]  )
					|| (t && station.length != station_history[t-1].length);

				if (
						    !lines[station_line] 
						|| (!is_renamed_or_modified && lines[station_line] < station_date)
					) {

					lines[station_line] = station_date;
				}

				if (!station_html) {
					if (station.length > 5)
						station_name = '<span class="' + station[5] + '">' + station_name + '</span>';
					station_html 
						= '<div style="left:' + station_left + ';top:' + station_top + '">' + station_name + '</div>\n'
						+  '<div class="ln' + station_line + '" style="left:' + (station_left - 11) + ';top:' + station_top + '">&nbsp;</div>';
				}
			}		
		}
		html += station_html;
	}
	stations_area.innerHTML = html;

	if (!line_drawings.length) createLineBoxes(lines.length);
	line_drawings[5].style.backgroundImage = lines[5] ? 'url(\'img/ln5-' + lines[5] + '.gif\')' : 'none';
	for (var c = 1; c < line_drawings.length; c++) {
		if (c != 5) line_drawings[c].style.backgroundImage = lines[c] ? 'url(\'img/ln' + c + '-' + lines[c] + '.gif\')' : 'none';
	}
}

function createLineBoxes (count) {
	var lines_area = document.getElementById('metro-lines');
	if (!lines_area) return;

	var lines_html = '';
	for (var c = 1; c != count; c++) {
		lines_html += '<div class="line" id="ld' + c + '" />';
	}
	lines_area.innerHTML = lines_html;

	for (var c = 1; c != count; c++) {
		line_drawings[c] = document.getElementById('ld' + c);
	}
}

function sliderInit() {
	slider = YAHOO.widget.Slider.getHorizSlider("sliderbg", "sliderthumb", 0, sliderHeight);

	var now = new Date();
	calendar.today
		= now.getFullYear() + ''
		+ (now.getMonth() < 9 ? '0' + (now.getMonth() + 1) : now.getMonth() + 1)
		+ (now.getDate() < 10 ? '0' + now.getDate() : now.getDate());
	calendar.today = '20081128';
	calendar.startyear = +(calendar.start + '').substr(0, 4); 
	calendar.startmonth = +(calendar.start + '').substr(4, 2) - 1; 
	calendar.coef = (12 * (now.getFullYear() - calendar.startyear) + now.getMonth() - calendar.startmonth) / sliderHeight;
	calendar.current = calendar.today;
	calendar.whatthedate = document.getElementById('whatthedate');

	slider.subscribe("change", updateSliderAndMap);

	slider.setValue(sliderHeight); // TODO: depends on today from hash
}

function updateSliderAndMap (offset) {
	var months = offset * calendar.coef;
	var year = parseInt ((months / 12) + calendar.startyear);
	var month = parseInt (months - 12 * (year - calendar.startyear)) + calendar.startmonth;
	if (month >= 12) {
		month = 0;
		year++;
	}

	if (calendar.whatthedate) {
		calendar.whatthedate.innerHTML = month_name[month] + ' ' + year;
		calendar.whatthedate.style.left = offset - 12;
	}

	var position = '' + year + (month < 9 ? '0' + (month + 1): month + 1)+ '15'; // sucks
	if (position != calendar.current) {
		if (offset == sliderHeight) position = calendar.today;
		BuildMap(position);
		calendar.current = position;
	}
}
