//-------------------------------------------------------------------------------------------------
// Константы

//-------------------------------------------------------------------------------------------------
	__CONTENT_MODE_INDEX__  =  0; // Первая страница
	__CONTENT_MODE_CMS__		=  1; // Контент из Си-Лейк

//-------------------------------------------------------------------------------------------------
	__LANG_RUSSIAN__				= 'ru'; // Русский язык

//-------------------------------------------------------------------------------------------------
	__SUBMENU_IDLE_TIMEOUT__     = 40; // Время открытия меню
	__SUBMENU_WAIT_TIMEOUT__     = 20; // Время ожидания синхронизации: открытие - закрытие
	__SUBMENU_IDLE_STEP__	 			 = 5;  // Шаг изменения

	__SUBMENU_STATE_CLOSE__     = 0;
	__SUBMENU_STATE_OPEN__	    = 1;
	__SUBMENU_STATE_IDLEOPEN__  = 2;
	__SUBMENU_STATE_IDLECLOSE__ = 3;

//-------------------------------------------------------------------------------------------------
// Поддержка Ajax
	is_supported_ajax = function() {
		return (typeof XMLHttpRequest != "undefined" || typeof window.ActiveXObject != "undefined");
	}

//-------------------------------------------------------------------------------------------------
// Ajax-Обработчики
function set_ajax_handlers() {
 	$("#menu > a").click(handlers[__LINK_ITEM_CLICK__]);
 	$("#pagebar > a").click(handlers[__LINK_ITEM_CLICK__]);
}

//-------------------------------------------------------------------------------------------------
// Разбор строки url и формирования хеша параметров
function get_content_params() {
	var params = new Object();
	var href = document.location.href.replace(/#.*$/, '');
	if (href.indexOf("?") != -1) {
		var vars = href.substring(href.indexOf("?") + 1,href.length).split(/\?|&/);
		for (var v in vars) {
				var p = vars[v].split('=');
				params[p[0]] = p[1];
		}
	}
	return params;
}

//-------------------------------------------------------------------------------------------------
// Обработчики событий
handlers = [];

//-------------------------------------------------------------------------------------------------
// Обработчик после загрузки страницы
function event_body_onload() {
  // Параметры контента в одном массиве
	set_html_handlers();
}

//-------------------------------------------------------------------------------------------------
// Обычные обработчики
function set_html_handlers() {
		var menu = new objMenu($(".menu a"), params.aid);
		$("#area").mouseover(function(e){
				if(menu.curi != null) {
					menu.curi = null;
				menu.closeall();
				}
		});
		$("#menubind").mouseover(function(e) {
				$Q.stopBubble(e);
				return true;
		});

		$("#menubind .delimiter").mouseover(function(e) {
				if(menu.curi != null) {
					menu.curi = null;
					menu.closeall();
				}
				$Q.stopBubble(e);
				return true;
		});
		
		$("#right img").fadeIn("fast");	

}

/* Объект меню */
var objMenu = function(items, aid) {
	this.items = items; // Єлементы меню - DOM-єлементы
	this.aid = aid;     // Пункт активный
	this.curi = null;  // Выбранный пункт меню
	/* Инициализация */
	this.init = function() {
		var items = this.items;
		var self = this;
		items.each(function(i){
		  var submid ='#sub'+ $(this).attr('id') ;
		  items[i].submid = ($(submid).size() > 0) ? submid : null;
			items[i].state = __SUBMENU_STATE_CLOSE__;
			items[i].otimer = null;
			items[i].ctimer = null;
			$(items[i]).mouseover(function() {self.curi = i; self.open(i);})
			if(self.aid == $(this).attr('id')) self.open(i);
		})
	};
	/* Открыть подменю - циклический процесс */
	this.open = function(i) {
		var self = this;
		var item = this.items[i];
		/* Закрываем все открытые пункты меню, кроме текущего  */
		this.closeall(i);
		/* Должно быть подменю и подменю необходимо открывать */
		if (item.submid && this.needopen(i)) {
			if(this.canopen(i)) {
				// Открываем
				item.state = __SUBMENU_STATE_IDLEOPEN__;
				if(!this.openEffect($(item.submid))) {
				 	// Необходимо продолжить открывание
					items[i].otimer = setTimeout(function(){
																					self.items[i].otimer = null;
																					self.open(i);
																			 },
															 				 __SUBMENU_IDLE_TIMEOUT__);
				}else {
					item.state = __SUBMENU_STATE_OPEN__;
				}
			}
			// Нельзя открывать - будем ждать
			else{
				items[i].otimer = setTimeout(function(){
																					self.items[i].otimer = null;
																					self.open(i);
																			 },
															 				 __SUBMENU_WAIT_TIMEOUT__);
			}
		}
	};
	/* Закрыть подменю - циклический процесс */
	this.close = function(i) {
		var self = this;
		var item = this.items[i];
		/* Закрываем все открытые пункты меню */
		if (item.submid && this.needclose(i)) {
			if(this.canclose(i)) {
				// Закрываем
				item.state = __SUBMENU_STATE_IDLECLOSE__;
				if(!this.closeEffect($(item.submid))) {
				 	// Необходимо продолжить открывание
				 	var self = this;
					items[i].ctimer = setTimeout(function(){
																					self.items[i].ctimer = null;
																					self.close(i);
																			 },
															 				 __SUBMENU_IDLE_TIMEOUT__);
				}else {
					item.state = __SUBMENU_STATE_CLOSE__;
				}
			}
			else {
				// Нельзя закрывать - будем ждать
				items[i].ctimer = setTimeout(function(){
																					self.items[i].ctimer = null;
																					self.close(i);
																			 },
															 				 __SUBMENU_WAIT_TIMEOUT__);
			}
		}
	};
	/* Проверка - надо открывать подменю или нет: если открыто или открывается - не надо */
	this.needopen = function(i) {
		var item = this.items[i];
		return (item.otimer == null &&
						item.state != __SUBMENU_STATE_OPEN__
						);
	};
	/* Проверка - надо закрывать подменю или нет */
	this.needclose = function(i) {
		var item = this.items[i];
		return (item.ctimer == null &&
						item.state != __SUBMENU_STATE_CLOSE__ &&
						this.aid != $(item).attr('id'));
	};
	/* Проверка - можно открыть подменю или нет */
	this.canopen = function(i) {
		var item = this.items[i];
		return (item.state != __SUBMENU_STATE_IDLECLOSE__);
	};
	/* Проверка - можно закрыть подменю или нет */
	this.canclose = function(i) {
		var item = this.items[i];
		return (item.state != __SUBMENU_STATE_IDLEOPEN__);
	};
	/* Закрыть все пункты, кроме данного */
	this.closeall= function(ni) {
			for(var i=0; i < items.length; i++) {
				if(i!=ni && i!= this.curi) this.close(i);
			}
	};
	/* Еффект открывания */
	this.openEffect= function(e) {
		var height = e.height();
		var maxheight = $(e).children("table").height();

		(height) ? e.css("visibility", "visible") : false;
		height += __SUBMENU_IDLE_STEP__;
		(height >  maxheight) ? height = maxheight : false;
		e.height(height);
		return (height == maxheight);
	}
	/* Еффект закрывания */
	this.closeEffect= function(e) {
		var height = e.height();
		height -= __SUBMENU_IDLE_STEP__;
		(height < 0) ? height = 0 : false;
		e.height(height);
		(!height) ? e.css("visibility", "hidden") : false;
		return (height == 0);
	}

	this.init();
}


//-------------------------------------------------------------------------------------------------
// Функция - закрыть плавно меню второго уровня
function closeSubMenuAll() {
	$(".submenuarea").each(function(){closeSubMenu($(this).attr('id'));});
}

//-------------------------------------------------------------------------------------------------
// Функция - закрыть плавно меню второго уровня
function closeSubMenu(id) {
	var e = $('#' + id);
	if (e && e.size()) {
		var e = $('#' + id);
		if (e && e.size()) {
			if (e.ctimer != null) return false;
			var height = e.height();
			height -= __SUBMENU_IDLE_STEP__;
			(height < 0) ? height = 0 : false;
			e.height(height);
			(!height) ? e.css("visibility", "hidden") : false;
			if(height > 0) {
				e.сtimer = setTimeout(function(){closeSubMenu(id);}, __SUBMENU_IDLE_TIMEOUT__);
			}
			else {
				e.ctimer = null;
			}
		}
	}
	return true;
}