// регистрируем flash-объекты
swfobject.registerObject( "menu", "10.0.0", "expressInstall.swf" );
swfobject.registerObject( "logo", "10.0.0", "expressInstall.swf" );
swfobject.registerObject( "clock", "10.0.0", "expressInstall.swf" );

// объект, следующий за мышью
function Follower() {
	this.ptr = ""; // ссылка на обслуживаемый элемент DOM
	this.x0 = 0; // изначальная x-координата
	this.y0 = 0; // изначальная y-координата
	this.x = 0; // текущая x-координата
	this.y = 0; // текущая y-координата
	this.vx = 0; // текущая x-составляющая скорости
	this.vy = 0; // текущая y-составляющая скорости
	this.ax = 0; // текущая x-составляющая ускорения
	this.ay = 0; // текущая y-составляющая ускорения
	this.xf = 0; // x-коодината целевой точки
	this.yf = 0; // y-коодината целевой точки
	this.k = 0; // коэффициент затухания
	this.w = 0; // исходная ширина объекта
	this.h = 0; // исходная высота объекта
	this.ih = null; // хэндл для повторного выполнения
}

$(document).ready(function(){

// фокус и потеря фокуса текстовых полей с подсказками

 $(".autohiding").addClass(
  "pure"
 ).focus(function(){
  if ( $(this).hasClass("pure") )
   $(this).attr( "default", $(this).val() ).val("").removeClass("pure");
 }).blur(function(){
     if ( trim($(this).val()) == "" )
         $(this).val( $(this).attr("default") ).addClass("pure");
 });

	// очищаем формы от подсказок перед отправкой

	$("form").submit(function(){
		$(".pure").val("");
	});

	// запоминаем исходную позицию объекта

	var submit = new Follower();
	submit.ptr = "submit";
	submit.w = $("#submit").width();
	submit.h = $("#submit").height();

	submit.x0 = parseInt( $("#submit").css("left") );
	submit.y0 = parseInt( $("#submit").css("top") );

	submit.xf = submit.x = submit.x0;
	submit.yf = submit.y = submit.y0;

	// проверяем, далеко ли курсор мыши от объекта

	$(".search").mousemove(function(e){

		// получаем координаты мыши
		var mouseX = e.pageX - $(this).position().left,
		    mouseY = e.pageY - $(this).position().top;

		// если попали в чувствительную область, меняем точку назначения
		if ( Math.sqrt( Math.pow( mouseX - 21 - submit.x0, 2 ) + Math.pow( mouseY - 38 - submit.y0, 2 ) ) < 25  ) {
			submit.xf = mouseX - 21;
			submit.yf = mouseY - 38;
			if ( ! submit.k )
				submit.ih = setInterval( function(){ moveFollower(submit) }, 10 );
			submit.k = 1;
		} else {
			submit.xf = submit.x0;
			submit.yf = submit.y0;
		}

	});

	// следование за мышкой ссылок в контенте

	var links = new Array();
	var index = 0;

	$("#print, #it, #design").each(function(){

		// запоминаем исходную позицию объекта

		links[index] = new Follower();

		links[index].ptr = $(this).attr("id");
		links[index].w = $(this).width();
		links[index].h = $(this).height();

		links[index].x0 = parseInt( $(this).css("left") );
		links[index].y0 = parseInt( $(this).css("top") );

		links[index].xf = links[index].x = links[index].x0;
		links[index].yf = links[index].y = links[index].y0;

		index++;
	});

	// проверяем, далеко ли курсор мыши от объекта

	$(".work").mousemove(function(e){

		// получаем координаты мыши
		var mouseX = e.pageX - $(this).position().left,
		    mouseY = e.pageY - $(this).position().top;

		var d = 0;

		for ( var i = 0; i < 3; i++ ) {
			// если попали в чувствительную область, меняем точку назначения
			if ( ( mouseX > links[i].x0 - d ) && ( mouseX < links[i].x0 + links[i].w + d ) &&
			     ( mouseY > links[i].y0 - d ) && ( mouseY < links[i].y0 + 79 + d ) ) {
				links[i].xf = mouseX - links[i].w / 2;
				links[i].yf = mouseY - 40;
				if ( ! links[i].k ) {
					var obj = links[i];
					links[i].ih = setInterval( function(){ moveFollower( obj ) }, 10 );
				}
				links[i].k = 1;
			} else {
				links[i].xf = links[i].x0;
				links[i].yf = links[i].y0;
			}
		}

	});

	// наведение мыши на сабмит формы заявки

	makeHover( ".order a", "hover" );

});


function moveFollower( obj )
{// смешает объект к заданной точке (к мыше)

	with ( obj ) {

		// вычисляем координаты
		x += vx;
		y += vy;

		// вычисляем ускорение
		ax = (xf - x) / 50;
		ay = (yf - y) / 50;

		// вычисляем скорость
		vx = k * (vx + ax);
		vy = k * (vy + ay);

		// затухание
		k *= 0.999;
		if ( k < 0.8  ) {
			k = 0;
			clearInterval(ih);
		}

		// устанавливаем в новое положение
		$("#" + ptr).css(
			"width", ( x + w > $("#" + ptr).parent().width() ? $("#" + ptr).parent().width() - x : w )  + "px"
		).css(
			"height", ( y + h > $("#" + ptr).parent().height() ? $("#" + ptr).parent().height() - y : h )  + "px"
		).css(
			"left", Math.floor(x) + "px"
		).css(
			"top", Math.floor(y) + "px"
		);

	}
}


function makeHover( object, className )
{// добавляет к объекту класс при наведении мыши

	$("" + object).hover(
		function(){
			$(this).addClass(className);
		},
		function(){
			$(this).removeClass(className);
		}
	);
}


function ltrim(s)
{// очищает левую сторону строки от лишних символов

	var ptrn = /\s*((\S+\s*)*)/;
	return s.replace(ptrn, "$1");
}

function rtrim(s)
{// очищает правую сторону строки от лишних символов

	var ptrn = /((\s*\S+)*)\s*/;
	return s.replace(ptrn, "$1");
}

function trim(s)
{// очищает строку от лишних символов

	return ltrim(rtrim(s));
}









