/**
 * Прорисовка линий от ссылок на разделы к буквам надписи «Карт Бланш»
 *
 * @copyright Art.Lebedev Studio
 * @author Semen Tokarev
 * @date 11.10.2008
 */

/**
 * Функции вычисления координат линий
 *
 * @upd перенесено в блоки, т.к. есть различия координат в разных языковых версиях
 */
/*
function adv_x_1(width, height) { return $('#advantages').position().left + 50; }
function adv_y_1(width, height) { return $('#advantages').position().top + 18; }
function adv_x_2(width, height) { return $('#header-image img').position().left + 185; }
function adv_y_2(width, height) { return $('#header-image img').position().top + 85; }
function how_x_1(width, height) { return $('#howtoget').position().left + 45; }
function how_y_1(width, height) { return $('#howtoget').position().top + 18; }
function how_x_2(width, height) { return $('#header-image img').position().left + 370; }
function how_y_2(width, height) { return $('#header-image img').position().top + 85; }
function suv_x_1(width, height) { return $('#souvenirs').position().left + 65; }
function suv_y_1(width, height) { return $('#souvenirs').position().top + 0; }
function suv_x_2(width, height) { return $('#header-image img').position().left + 83; }
function suv_y_2(width, height) { return $('#header-image img').position().top + 160; }
*/

/**
 * Интервал для прорисовки линий
 */
var canvas_interval;

/**
 * Инициализация прорисовки линий
 */
var drawLines = function()
{
	new ElasticLine({
		canvasId    : 'section_canvas',
		strokeStyle : 'rgba(255, 255, 255, 0.5)',
		lineType    : 'straight',
		linePoints  :
		[
			{ xFunc : adv_x_1, yFunc : adv_y_1 },
			{ xFunc : adv_x_2, yFunc : adv_y_2 }
		]
	});

	new ElasticLine({
		canvasId    : 'section_canvas',
		strokeStyle : 'rgba(255, 255, 255, 0.5)',
		lineType    : 'straight',
		linePoints  :
		[
			{ xFunc : how_x_1, yFunc : how_y_1 },
			{ xFunc : how_x_2, yFunc : how_y_2 }
		]
	});

	new ElasticLine({
		canvasId    : 'section_canvas',
		strokeStyle : 'rgba(255, 255, 255, 0.5)',
		lineType    : 'straight',
		linePoints  :
		[
			{ xFunc : suv_x_1, yFunc : suv_y_1 },
			{ xFunc : suv_x_2, yFunc : suv_y_2 }
		]
	});

	new ElasticLine({
		canvasId    : 'section_canvas',
		strokeStyle : 'rgba(255, 255, 255, 0.5)',
		lineType    : 'straight',
		linePoints  :
		[
			{ xFunc : lnr_x_1, yFunc : lnr_y_1 },
			{ xFunc : lnr_x_2, yFunc : lnr_y_2 }
		]
	});
	
	// Интервал это нехорошо, но с эксплорером есть проблемы
    // На момент запуска функции прорисовки линий канвас не всегда успевает инициализироваться
    // Поэтому функцию прорисовки сначала по интервалу запускаем
    // А когда канвас готов, интервал отменяется, и линии перерисовываются по событию onresize
	canvas_interval = window.setInterval("canvas_redraw();", 350);
}

/**
 * Функция перерисовки линий
 */
var canvas_redraw = function()
{
	var container = document.getElementById('section_canvas_container');
	var canvas = document.getElementById('section_canvas');

	canvas.setAttribute('width', container.offsetWidth);
	canvas.setAttribute('height', container.offsetHeight);

	if (canvas.getContext)
	{
		var ctx = canvas.getContext('2d');
		ctx.clearRect(0, 0, canvas.offsetWidth, canvas.offsetHeight);

		// если канвас инициализирован, то заменяем прорисовку по интервалу на прорисовку по событию
		if (canvas_interval)
		{
			$(window).resize(canvas_redraw);
			clearInterval(canvas_interval);
			delete canvas_interval;
		}
	}

	ElasticLine.redraw();
}

$(document).ready(function()
{
	if (drawLines) drawLines();
	init_text_anim();

	// Почему-то в FF во время анимации текста ссылка 90% времени не кликабельная
    // Мне это не нравится, но пришлось выкручиваться скриптом
	$('#moto dd a, #car dd a, #ufo a').hover(function() { mover = $(this); }, function() { mover = null; });
	$(document).mousedown(function() { if (mover) top.location.href = mover.attr('href'); });
});

var mover = null;

var link_moto = null;
var link_car  = null;
var link_ufo  = null;
function init_text_anim()
{
	link_moto = $('#moto dd a');
	link_car = $('#car dd a');
	link_ufo = $('#ufo a span');
	link_moto.hover(txt_moto_on, txt_moto_off);
	link_car.hover(txt_car_on, txt_car_off);
	link_ufo.hover(txt_ufo_on, txt_ufo_off);
}

// Анимации 'Гхр-гхр-ррр'
var ani_moto_state = 0;
var int_moto_drag = null;
var int_moto_text = null;

function txt_moto_on()
{
	ani_moto_state = 2;
	int_moto_drag = window.setInterval('ani_moto_drag();', 40);
	int_moto_text = window.setInterval('ani_moto_text();', 70);
}

function txt_moto_off()
{
	ani_moto_state = 0;
	window.clearInterval(int_moto_drag);
	window.clearInterval(int_moto_text);
	link_moto.text('Гхр-гхр-ррр');
	link_moto.css({
		left: 0,
		top: 0
	});
}

function ani_moto_drag()
{
	var top  = Math.round(Math.random() * 2) - 1;
	var left = Math.round(Math.random() * 2) - 1;

	link_moto.css({
		left: left,
		top: top
	});
}

function ani_moto_text()
{
	var link = link_moto;
	var text = link.text();

	var str = [
		'Гхр-гхр-ррр',
		'Гхр-гхр-ррр-гхр',
		'Гхр-гхр-ррр-гхр-гхр '
	];

	if (ani_moto_state == 2 && text.length == str[ani_moto_state].length) {
		ani_moto_state = 1;
		return;
	}

	if (ani_moto_state == 2 && text.length < str[ani_moto_state].length) {
		link.text(str[ani_moto_state].substr(0, text.length + 1));
		return;
	}

	if (ani_moto_state == 1 && text.length == str[ani_moto_state].length) {
		ani_moto_state = 2;
		return;
	}

	if (ani_moto_state == 1 && text.length > str[ani_moto_state].length) {
		link.text(text.substr(0, text.length - 1));
		return;
	}
}


// Анимации 'Ухм-хмм-мм'
var ani_car_state = 0;
var int_car_drag = null;
var int_car_text = null;

function txt_car_on()
{
	ani_car_state = 2;
	int_car_drag = window.setInterval('ani_car_drag();', 10);
	int_car_text = window.setInterval('ani_car_text();', 40);
}

function txt_car_off()
{
	ani_car_state = 0;
	window.clearInterval(int_car_drag);
	window.clearInterval(int_car_text);
	link_car.text('Ухм-хмм-мм');
	link_car.css({
		left: 0,
		top: 0
	});
}

function ani_car_drag()
{
	var top  = Math.round(Math.random() * 1);
	var left = Math.round(Math.random() * 1) == 1 ? 1 : 0;

	link_car.css({
		left: left
		// top: top
	});
}

function ani_car_text()
{
	var link = link_car;
	var text = link.text();

	var str = [
		'Ухм-хмм-мм',
		'Ухм-хмм-мм-мм',
		'Ухм-хмм-мм-мммм'
	];

	if (ani_car_state == 2 && text.length == str[ani_car_state].length) {
		ani_car_state = 1;
		return;
	}

	if (ani_car_state == 2 && text.length < str[ani_car_state].length) {
		link.text(str[ani_car_state].substr(0, text.length + 1));
		return;
	}

	if (ani_car_state == 1 && text.length == str[ani_car_state].length) {
		ani_car_state = 2;
		return;
	}

	if (ani_car_state == 1 && text.length > str[ani_car_state].length) {
		link.text(text.substr(0, text.length - 1));
		return;
	}
}



// Анимации 'иу-ИУ-иу'
var ani_ufo_state = 0;
var int_ufo_text = null;

function txt_ufo_on()
{
	ani_ufo_state = 1;
	int_ufo_text = window.setInterval('ani_ufo_text();', 200);
}

function txt_ufo_off()
{
	ani_ufo_state = 0;
	window.clearInterval(int_ufo_text);
	link_ufo.text('ИУ');
}

function ani_ufo_text()
{
	var link = link_ufo;
	var text = link.text();

	var str = [
		'ИУ',
		'-ИУ-',
		'и-ИУ-и',
		'иу-ИУ-иу',
		'и-ИУ-и'
	];

	if (ani_ufo_state == str.length)
	{
		ani_ufo_state = 1;
	}

	link.text(str[ani_ufo_state]);
	ani_ufo_state++;
	return;
}
