var common = {};

common.searchExamples = new Array('ГОСТ Р 34.1980.4-93', 'Нефть', '28906-91', 'охрана труда', 'методика пожар', 'Геоинформационная система', 'Промышленная безопасность');

/**
 * Показывает или скрывает попап с формой логина и регистрации
 */
common.toggleLoginBox = function(show){
	$(".lightbox").toggle(show);
};

/**
 * Переключает на нужную вкладку внутри формы регистрации/логина
 */
common.showTab = function(name){
	$(".tab-content").hide();
	$("#tab-"+name).show();

	$(".tabset a").addClass("active");
	$(".tabset a#show-"+name).removeClass("active");

	if( name == 'register' )
	{
		$("#"+name+"-login").focus();
	}
	else
	{
		$("#"+name+"-email").focus();
	}
	
}

// namespace для дерева категорий и всего, что с ним связано.
common.categories = {};
/**
*	Инициализирует дерево категорий
*/
common.categories.init = function()
{

	// для начала найдем тот ul, который должен быть расскрыт и сделаем его открытым
	common.categories.toggle($("ul.sub-nav li ul li.active").parents("ul.slideable-block"));

	// теперь непосредственно привяжем необходимые события
	$("ul.sub-nav li a.top-level").click(function()
	{
		var $ul = $(this).parents("li").find("ul.slideable-block");
		// посмотрим, не является ли тот блок, который мы хотим расскрывать уже открытым.

		//Категория сама должна быть ссылкой, если у неё нет детей
		if( $ul.length == 0 ) return;

		if(! $ul.is(".opened"))
		{
        	// если нет, то прячем тот блок, что открыт сейчас.
			common.categories.toggle($("ul.sub-nav ul.opened"));
		}

		common.categories.toggle($ul);

		return false; // ссылки верхнего уровня не для того, чтобы по ним переходить. Поэтому будем препятствовать этому.
	});
}

/**
* ScrollUp/ScrollDown в зависимости от того, показана ли подкатегории сейчас.
* @param jQuery $ul объект со списком подкатегорий, с которым мы работаем
*/
common.categories.toggle  = function($ul)
{
	$ul.toggleClass('opened').slideToggle("slow");
}

$(document).ready(function(){

	//ссылки в правом верхнем углу и на самой форме логина
	$("a#do-login, a#show-login").click(function(){
		common.toggleLoginBox(true);
		common.showTab('login');
	});

	//кнопка регистрации тоже имеет id do-register
	$("a#do-register, a#show-register").click(function(){
		common.toggleLoginBox(true);
		common.showTab('register');
		return false;
	});

	//кнопка закрытия окна в окошке логина/регистрации
	$(".btn-close").click(function(){
		common.toggleLoginBox(false);
	});

	$(".add-link").click(function(){
		alert('Чтобы отметить документ, запись в блоге или товар, как избранный, нажмите на звёздочку рядом с заголовком.');
	});

	//заполнение примера поиска
	$(".eg a").text(common.searchExamples[Math.floor(Math.random()*(common.searchExamples.length-1))]);
	//автоматическая подстановка примеров поисковых запросов
	$(".eg a").click(function(){
		$("#sword").val($(this).text());
	});

	//изменение области поиска
	$(".search-nav li a").click(function(){
		$(".search-nav li").removeClass("active");
		$(this).parent().addClass("active");

		scope = $(this).attr('id');
		scope = scope.substr(scope.indexOf("-")+1);
     
		var act = '/search/';
		var sword = 'sword';
		if(scope == 'blogs')
		{
			act = 'http://'+DEF_HOST+'/blogs/search/topics/';
			sword = 'q';
		}
		else
		{
			act = 'http://search.'+SYSTEM_DOMAIN+'/';
			switch( scope )
			{
				case 'docs':
					act += "norms/";
					break;
				case 'market':
					act += scope+"/";
					break;
				case 'all':
				default:
					break;
			}
		};

		$('#sform').attr('action', act);
		$('#sword').attr('name', sword);
		$("#search-scope").attr("value", scope);

		return false;
	});
	$(".search-nav li.active a").click(); // и сразу же кликнем по активному табу

	// инициализируем дерево категорий (если оно, конечно, есть)
	common.categories.init();

	// обрезает длинные заголовки.
	common.cropTitles();
});

/**
* Обрезает длинные заголовки у объектов .title2crop
*/
common.cropTitles = function()
{
	$(".title2crop").each(function()
	{
		common.cropText(this);
	});
}

/**
* Обрезает длинные заголовки у переданного объекта
* @todo сделать настройку — макс. допустимая длина заголовка.
* @param element — DOM element или объект jQuery, который надо обрезать
*/
common.cropText = function(element)
{
    var max_length = 24;

	var $element = $(element);
	var txt = $element.text();
	if(txt.length <= max_length)
	{
		return true;
	}
	else
	{
		txt = txt.substr(0,(max_length-1))+"…";
		$element.text(txt);
		return true;
	}
}

common.send_UnderConstruction = function()
{
	alert("Извините! Данная функция пока недоступна, но появится в ближайшее время.");
}
