// © Анатоль Латотин | www.latotin.com



// Константы и глобальные переменные
var SCROLL_FACTOR = 9;
var SCROLL_TOTAL = $("scroll").clientHeight*(SCROLL_FACTOR-1);
var TOOLS_SPEED = 0;

var SUN_BEGIN_X = 363;
var MOON_END_X = 230;
var RADIUS = 363;

var SOUL_BEGIN_Y = 240;
var SOUL_END_Y = 65;

var SOUND = 0;

var PLAY_STATUS = 0;
var PLAY_DURATION = 15000; // Миллисекунды



// Установка высоты
$("flash").style.height = screen.height+600;
$("black").style.left = -$("black").clientWidth;
$$("black").style.right = 0;
$$("black").style.right = -($$("black").getElementsByTagName("input")[0].clientWidth/2);
$$("white").style.left = ($$("white").getElementsByTagName("input")[0].clientWidth/2)-$$("white").clientWidth;

var div_big = document.createElement("div");
div_big.style.height = screen.height+750;
div_big.style.top = div_big.style.left = 0;
document.body.appendChild(div_big);



// Инициализация скроллинга
var scroll_inner = document.createElement("div");
scroll_inner.style.height = $("scroll").clientHeight*SCROLL_FACTOR;
$("scroll").appendChild(scroll_inner);

// Инициализация первой души
for(var i=1; i<=11; i++)
{
	var part = document.createElement("div");
	part.style.height = ((i==1)?50:8)+"px";
	part.style.top = ((i==1)?0:(50+8*(i-2)))+"px";
	var op = (60-(6*i-1));
	part.style.opacity = op/100;
	part.style.filter = "alpha(opacity="+op+")";
	part.style.overflow = "hidden";
	
	var part_scroll = document.createElement("div");
	part_scroll.style.height = "300px";
	part_scroll.style.width = "18px";
	part_scroll.style.overflowY = "scroll";
	part_scroll.style.overflowX = "hidden";
	part_scroll.style.top = -((i==1)?0:(50+i));
	
	var part_scroll_inner = document.createElement("div");
	part_scroll_inner.style.height = scroll_inner.style.height;
	
	part_scroll.appendChild(part_scroll_inner);
	part.appendChild(part_scroll);
	$("soul").appendChild(part);
	
	part_scroll.scrollTop = SCROLL_TOTAL;
}

$("scroll").scrollTop = SCROLL_TOTAL;

// Инициализация левой души
for(var i=1; i<=11; i++)
{
	var part = document.createElement("div");
	part.style.height = ((i==1)?50:8)+"px";
	part.style.top = ((i==1)?0:(50+8*(i-2)))+"px";
	var op = (40-(4*i-1));
	part.style.opacity = op/100;
	part.style.filter = "alpha(opacity="+op+")";
	part.style.overflow = "hidden";
	
	var part_scroll = document.createElement("div");
	part_scroll.style.height = "300px";
	part_scroll.style.width = "18px";
	part_scroll.style.overflowY = "scroll";
	part_scroll.style.overflowX = "hidden";
	part_scroll.style.top = -((i==1)?0:(50+i));
	
	var part_scroll_inner = document.createElement("div");
	part_scroll_inner.style.height = scroll_inner.style.height;
	
	part_scroll.appendChild(part_scroll_inner);
	part.appendChild(part_scroll);
	$("soul_left").appendChild(part);
	
	part_scroll.scrollTop = SCROLL_TOTAL;
}

// Инициализация правой души
for(var i=1; i<=11; i++)
{
	var part = document.createElement("div");
	part.style.height = ((i==1)?50:8)+"px";
	part.style.top = ((i==1)?0:(50+8*(i-2)))+"px";
	var op = (40-(4*i-1));
	part.style.opacity = op/100;
	part.style.filter = "alpha(opacity="+op+")";
	part.style.overflow = "hidden";
	
	var part_scroll = document.createElement("div");
	part_scroll.style.height = "300px";
	part_scroll.style.width = "18px";
	part_scroll.style.overflowY = "scroll";
	part_scroll.style.overflowX = "hidden";
	part_scroll.style.top = -((i==1)?0:(50+i));
	
	var part_scroll_inner = document.createElement("div");
	part_scroll_inner.style.height = scroll_inner.style.height;
	
	part_scroll.appendChild(part_scroll_inner);
	part.appendChild(part_scroll);
	$("soul_right").appendChild(part);
	
	part_scroll.scrollTop = SCROLL_TOTAL;
}



// Инициализация солнца и луны
$$("sun").style.left = -SUN_BEGIN_X;
$$("sun").style.top = RADIUS;
$$("sun").style.visibility = "visible";



// Скролирование скролинга
function scrollScroll()
{
	// Преобразование лица
	$$("face").style.left = -100*(10-Math.round($("scroll").scrollTop*100/SCROLL_TOTAL/10)) + "%";
	
	// Перемещение солнца
	var sun_current_x = SUN_BEGIN_X-SUN_BEGIN_X/100*(100-Math.round($("scroll").scrollTop*100/SCROLL_TOTAL));
	var sun_current_y = RADIUS - Math.sqrt( RADIUS*RADIUS - sun_current_x*sun_current_x );
	$$("sun").style.left = -sun_current_x;
	$$("sun").style.top = sun_current_y
	
	// Перемещение луны
	var moon_current_x = MOON_END_X*(100-Math.round($("scroll").scrollTop*100/SCROLL_TOTAL))/100;
	var moon_current_y = 363 - Math.sqrt( RADIUS*RADIUS - moon_current_x*moon_current_x )
	$$("moon").style.left = moon_current_x;
	$$("moon").style.top = moon_current_y;
	
	// Обработка души
	for(var i=1; i<=11; i++)
	{
		$("soul").childNodes[i-1].childNodes[0].scrollTop = $("scroll").scrollTop;
	}
	if($("scroll").scrollTop*100/SCROLL_TOTAL < 30)
	{
		var soul_pos = SOUL_BEGIN_Y - (SOUL_BEGIN_Y-SOUL_END_Y)/30*(30-$("scroll").scrollTop*100/SCROLL_TOTAL);
	}
	else
	{
		var soul_pos = SOUL_BEGIN_Y;
	}
	$("soul").style.top = soul_pos;
	var H = $("soul_left").parentNode.clientHeight/SOUL_BEGIN_Y;
	$("soul_left").style.top = H * soul_pos;
	$("soul_right").style.top = H * soul_pos * 1.3;
	
	// Прокручивание видео
	var video_scroll_total = $$("video").clientWidth-$("video").clientWidth;
	$$("video").style.left = (($("scroll").scrollTop/SCROLL_TOTAL )-1)*video_scroll_total;
	
	// Управление маленькими видео
	var scroll_top = $("scroll").scrollTop*100/SCROLL_TOTAL;
	if(scroll_top > 66)
	{
		$("video1").style.width = "24px"
		$("video1").style.height = "18px";
		$("video1").style.marginTop = "-4px"
		$("video1").style.marginLeft = "-6px";
		
		$("video2").style.width = "12px"
		$("video2").style.height = "9px";
		
		$("video3").style.width = "12px"
		$("video3").style.height = "9px";
	}
	else if(scroll_top > 33)
	{
		$("video2").style.width = "24px"
		$("video2").style.height = "18px";
		$("video2").style.marginTop = "-4px"
		$("video2").style.marginLeft = "-6px";
		
		$("video1").style.width = "12px"
		$("video1").style.height = "9px";
		
		$("video3").style.width = "12px"
		$("video3").style.height = "9px";
	}
	else
	{
		$("video3").style.width = "24px"
		$("video3").style.height = "18px";
		$("video3").style.marginTop = "-4px"
		$("video3").style.marginLeft = "-6px";
		
		$("video2").style.width = "12px"
		$("video2").style.height = "9px";
		
		$("video1").style.width = "12px"
		$("video1").style.height = "9px";
	}
}



// Раскраска звука
$("sound").className = "sound_color_on";

function soundColorHide()
{
	if(rand(1, 1000)>998 && SOUND)
	{
		$$("sound").style.visibility = "hidden";
		setTimeout("soundColorShow()", 250);
	}
	else
	{
		setTimeout("soundColorHide()", 10);
	}
}
soundColorHide();

function soundColorShow()
{
	$$("sound").style.visibility = "visible";
	soundColorHide();
}



// Переключение скорости
function speedChange()
{
	if(document.getElementsByName("speed")[0].checked)
	{
		TOOLS_SPEED = 1;
	}
	else
	{
		TOOLS_SPEED = 0;
	}
	
	$("select").childNodes[TOOLS_SPEED].style.visibility = "visible";
	$("select").childNodes[1-TOOLS_SPEED].style.visibility = "hidden";
}



// Мигание орудий
function toolsShow()
{
	var factor = (TOOLS_SPEED) ? 600 : 950 ;
	
	if(rand(1, 1000)>factor)
	{
		$$("tools").style.left = -(500-100*rand(0, 5)) + "%";
		setTimeout("toolsHide()", 10);
	}
	else
	{
		setTimeout("toolsShow()", 100);
	}
}
toolsShow();

function toolsHide()
{
	$$("tools").style.left = "100%";
	toolsShow();
}



// Управление звуком
var sound_checkbox = $("sound").childNodes[1];
sound_checkbox.checked="checked";

function soundChange()
{
	if(sound_checkbox.checked)
	{
		$("sound").className = "sound_color_on";
		$$("sound").childNodes[0].style.top = 0;
		SOUND = 1;
	}
	else
	{
		$("sound").className = "sound_color_off";
		$$("sound").childNodes[0].style.top = -$$("sound").childNodes[0].clientHeight/2;
		SOUND = 0;
	}
}
soundChange()

function returnSound()
{
	return SOUND;
}



// Автоматическое проигрывание

var date_tmp = new Date();
var play_begin = date_tmp.getTime();

var play_duration_current = PLAY_DURATION;
var scroll_current = SCROLL_TOTAL;

function play()
{
	if($("playback").value==">")
	{
		$("playback").value = "||";
		
		PLAY_STATUS = 1;
		
		date_tmp = new Date();
		play_begin = date_tmp.getTime();
		
		if($("scroll").scrollTop == SCROLL_TOTAL)
		{
			play_duration_current = PLAY_DURATION;
			scroll_current = SCROLL_TOTAL;
		}
		else
		{
			play_duration_current = PLAY_DURATION/100 * $("scroll").scrollTop*100/SCROLL_TOTAL;
			scroll_current = $("scroll").scrollTop;
		}
		
		playAuto();
	}
	else
	{
		pause();
	}
}

function pause()
{
	$("playback").value = ">";	
	PLAY_STATUS = 0;
}

var end = 0;
function playAuto()
{
	var date_tmp = new Date();
	var play_current = date_tmp.getTime();
	
	var delta_t = play_current - play_begin;

	if(PLAY_STATUS)
	{
		if(delta_t < play_duration_current)
		{
			var n = delta_t*100/play_duration_current;
			$("scroll").scrollTop = scroll_current-n*scroll_current/100;
			
			setTimeout("playAuto()", 10);
		}
		else if(end)
		{
			end = 0;
			(document.getElementsByName("speed")[0].checked) ? document.getElementsByName("speed")[1].checked = true : document.getElementsByName("speed")[0].checked = true;
			speedChange();
			
			
			play_duration_current = PLAY_DURATION;
			scroll_current = SCROLL_TOTAL;
			
			date_tmp = new Date();
			play_begin = date_tmp.getTime();
			
			setTimeout("playAuto()", 10);
		}
		else
		{
			end = 1;
			$("scroll").scrollTop = 0;
			setTimeout("playAuto()", 5000);
		}
	}
	
}



// Видео-меню
function moveToStage(num)
{
	pause();
	
	switch(num)
	{
		case 1:
			$("scroll").scrollTop = SCROLL_TOTAL;
			break;
		case 2:
			$("scroll").scrollTop = SCROLL_TOTAL/2;
			break;
		case 3:
			$("scroll").scrollTop = 0;
			break;
	}
}



// Переход в черное и белое
function goTo(color)
{
	document.location.href = color+"/";
}



/*************************************************************************/

// Возвражение элемента по id
function $(id)
{
	return( document.getElementById(id) );
}

// Возвращение первого дочернего элемента у элемента с указанным id
function $$(id)
{
	return( document.getElementById(id).childNodes[0] );
}

function rand(a, b)
{
	return( a+Math.round((b-a)*Math.random()) );
}

function t(html)
{
	$("t").innerHTML = html;
}







$("main").style.visibility = "visible";