document.getElementsByTagName("html")[0].className = "js-enabled";

var planeHint = new Object;
planeHint.loaded = false;


planeHint.init = function(){
	if (planeHint.loaded) return true;
	planeHint.planes = new Array();
	
	defaultPlane = document.getElementById("js-hint-default");
	if (defaultPlane){
		defaultPlane.offset = 100;
		planeHint.planes.push(defaultPlane);
		planeHint.appear(defaultPlane);
	}

	planeHint.carrier = document.getElementById("js-hint-carrier");
	if (!planeHint.carrier) return false;
	planeHint.loaded = true;
	return true;
};

planeHint.appear = function(obj){
	if (!obj){
		obj = this;
	};
	
	obj.offset -= (obj.offset/5 + 1);
	
	if (obj.offset > 0){
		obj.style.left = parseInt(obj.offset) + "%";
		setTimeout(function(){ planeHint.appear.call(obj) }, 40)
	} else {
		obj.offset = 0;
		obj.style.left = "0%";
	}
}

planeHint.disappear = function(obj){
	if (!obj){
		obj = this;
	};
	
	obj.alreadyDisappearing = true;
	
	obj.offset -= (-(obj.offset/5) + 10);
	
	if (obj.offset > -100){
		obj.style.left = parseInt(obj.offset) + "%";
		setTimeout(function(){ planeHint.disappear.call(obj) }, 40)
	} else {
		for (var i=0; i<planeHint.planes.length; i++){
			if (planeHint.planes[i] == obj){
				planeHint.planes.splice(i, 1); // remove from array
				obj.parentNode.removeChild(obj); // remove from DOM
				delete obj; // remove from memory
				break;
			} 
		}
	}
}


planeHint.create = function(str){
	if (!planeHint.init()) return false;
	
	var newPlane = document.createElement("div");
	newPlane.className = "tpl-hint";
	var newPlaneInner = document.createElement("div");
	newPlaneInner.className = "tpl-hint-inner";
	var newPlaneCopy = document.createElement("div");
	newPlaneCopy.className = "tpl-hint-copy";
	newPlaneCopy.innerHTML = str;
	newPlaneInner.appendChild(newPlaneCopy);
	newPlane.appendChild(newPlaneInner);
	planeHint.carrier.insertBefore(newPlane, planeHint.carrier.childNodes[0]);
	newPlane.style.left = "100%";
	newPlane.offset = 100;
	planeHint.planes.push(newPlane);
	
	return newPlane;
};


planeHint.trigger = function(id){
	if (!planeHint.init()) return false;
	
	var hints = [
		"",
		"Продажа авиатехники компании Cessna осуществляется в&nbsp;г. Ростове-на-Дону.<br />Заказ самолетов по&nbsp;телефону (863) 294-42-37&nbsp;или по&nbsp;электронной почте: <a href=\"mailto:info@cessna-rostov.ru\">info@cessna-rostov.ru</a>",
		"Мы предлагаем Вам одномоторные поршневые самолеты Cessna: <strong>172 Skyhawk</strong>, <strong>182 Skylane</strong>, <strong>206 Stationair</strong>,<br /><strong>208 Grand Caravan</strong>, сочетающие в&nbsp;себе все лучшее для комфортного и&nbsp;безопасного полета.",
		"Сервисное обслуживание самолетов Cessna производится в&nbsp;соответствии с&nbsp;регламентом завода-производителя<br />с&nbsp;применением специального оборудования, оригинальных запасных частей и&nbsp;комплектующих.",
		"C&nbsp;1946&nbsp;г по&nbsp;настоящее время было выпущено более 60&nbsp;000&nbsp;самолетов, которые соответствуют самым высоким<br />мировым стандартам, просты в&nbsp;пилотировании, комфортабельны и&nbsp;безопасны.",
		"Мы&nbsp;выполняем полеты по&nbsp;любым маршрутам на&nbsp;территории Южного округа с&nbsp;учетом всех ваших пожеланий.<br />В&nbsp;полете вам предоставляется возможность самостоятельно управления самолетом.",
		"Вы&nbsp;можете подарить полет другу, любимому и&nbsp;близкому человек, сотруднику или шефу. Полет&nbsp;&mdash; это действительно<br />незабываемо! Это уникальная возможность своими глазами из&nbsp;кабины самолета увидеть что земля все-таки круглая!",
		"С&nbsp;высоты птичьего полета вы&nbsp;можете оценить всю красоту Донского края и&nbsp;насладиться видом столицы Южного<br />округа&nbsp;&mdash; Ростова-на-Дону. Поверьте, ради этого стоит оторваться от&nbsp;земли!",
		"Демонстрационные полёты проводятся с будущими владельцами воздушных судов.",
		"Предоставляем возможность самостоятельного управления самолётом при выполнении тест-полёта.<br />Разработаем маршрут полёта в&nbsp;ЮФО по&nbsp;Вашему желанию."
	];
	
	var hint = hints[id];
	if (!hint){
		hint = "Что-то сломалось&hellip;";
	}

	if (planeHint.active && id == planeHint.active) return false;
	planeHint.active = id;
	
	var newPlane = planeHint.create(hint);
	for (var i=0; i<planeHint.planes.length; i++){
		if (planeHint.planes[i]  == newPlane || planeHint.planes[i].alreadyDisappearing) continue;
		planeHint.disappear(planeHint.planes[i]);	
	}
	planeHint.appear(newPlane);
	return false;
}

planeHint.clickDispatcher = function(e){
	var trigger = (e.srcElement||e.target);
	var triggerPreg = "";
	if (triggerPreg = /(^|\s)+js-hint-trigger-([^\s$]+)(\s|$)/.exec(trigger.className)){
		planeHint.trigger(triggerPreg[2]);
		
		var prevActive = document.getElementById("js-hint-active");
		if (prevActive) {
			prevActive.id = "";
		};
		
		trigger.id = "js-hint-active";
		
		scrollToView();
		
		if (e.stopPropagation) e.stopPropagation();
		if (e.preventDefault) e.preventDefault();
		return false;
	};
}


if (document.addEventListener){
	window.addEventListener('load', planeHint.init, false);
	document.addEventListener('click', planeHint.clickDispatcher, false);
} else {
	window.attachEvent('onload', planeHint.init);
	document.attachEvent('onclick', planeHint.clickDispatcher);
};


function getAbsoluteOffset(obj){
	var offsetX = 0;
	var offsetY = 0;
	var o = obj;
	while(o != document.body.offsetParent){
		offsetX += o.offsetLeft;
		offsetY += o.offsetTop;
		o = o.offsetParent;
	}
	return [offsetX, offsetY];
};

function scrollToView(){
	var wt = $(window).scrollTop();
	var wh = $(window).height();
	var dh = $(document).height();
	var eh = 76;
	var ea = getAbsoluteOffset(document.getElementById("js-hint-carrier"));
	et = ea[1];
	if (wh + wt >= eh + et && wt <= eh + et){
		return true; // nothing to do
	};
	
	$(document).scrollTo( {top: (eh + et - wh) + "px", left: '55%'}, 300);
}
