/**
 * @fileOverview Переключатель табов для Deadline.ru
 * @author PsychodelEKS
 * @requires jquery.js 1.3+
 */

$(function(){ initTabber(); });

function initTabber()
{
	var $tabs_containers = $('div.tabs, div.block_in, div.tabs_in, div.tabs_in_in');

	$tabs_containers.each(
		function()
		{
			$(this).bind('click', {handler: this}, function(event)
				{
					/*DBG:*/
					/* Измерим время обработки клика */
					var startTime_tabswtch = new Date().getTime();
					/*:DBG*/


					/* Цель клика */
					var $event_target = $(event.target);

    
					/* li родитель цели */
					var $target_li = $event_target.parents('li:first');

					/* ul родитель li родителя цели */
					var $target_ul = $target_li.parent('ul:first');

					if( $target_ul.length && $target_ul.parent().get(0) == event.data.handler )
					{
						/* Предотвратим действие по-умолчанию и всплытие */
					    event.preventDefault();
					    event.stopPropagation();

						/* Если у него не проставлен класс active (т.е. таб не активен) - продолжим обработку события */
						if( $target_li.is(':not(.active)') )
						{
							/* Контейнер табов */
							var $target_container = $target_ul.parent('div');

							/* Деактивируем текущий активный таб */
							$target_ul.children('li.active').removeClass('active');

                            /* Активируем кликнутый таб */
						    $target_li.addClass('active');
 
							if ('go'==$target_li.attr('hact'))
							{
							    document.location = $target_li.children('a').attr('href');
							}												
						
							/* Переключаем вид отображаемых данных в обычном табуляторе */
							else if( $target_container.is('.tabs') )
							{
							
							    // Пример ajax подгрузки данных в таб перед отображением (ajax preloader)
							    // Сначала подгружаются данные потом происходит переключение, использовать если время подгрузки мало (мало заметно на глаз)
								/*
								$('div.'+$target_li.attr('tabid'), $target_container.parent())
									.load('page.php', {example_param:'test'},
										function()
										{
										    // Непосредственно код переключения, вызывается после подгрузки данных
							        		$('div.insert:visible', $target_container.parent()).hide();
							        		$('div.'+$target_li.attr('tabid'), $target_container.parent()).fadeIn('normal');
										});
							    */
							    
							    // Пример ajax подгрузки данных в таб после отображения (ajax loader)
							    // Сначала происходит переключение, потом подгружаются данные, использовать если время подгрузки велико (заметно на глаз)
								/*
                                    // Непосредственно код переключения и загрузки
									$('div.insert:visible', $target_container.parent()).hide();
				        			$('div.'+$target_li.attr('tabid'), $target_container.parent())
				        			    .html('Загрузка...') // Вставляем в блок загрузчик-заглушку
										.load('page.php', {example_param:'test'}) // Асинхронная загрузка содержимого
										.fadeIn('normal'); // Рендерим блок
							    */

							
								// Плавное исчезание, а потом плавное появление
								$('div.insert:visible', $target_container.parent()).fadeOut('normal',
									function()
									{
										$('div.'+$target_li.attr('tabid'), $target_container.parent()).fadeIn('normal');
									});

								// Мгновенное исчезание и плавное появление
						        /*$('div.insert:visible', $target_container.parent()).hide();
						        $('div.'+$target_li.attr('tabid'), $target_container.parent()).fadeIn('normal');*/
							}
							
							/* Переключаем вид отображаемых данных в табуляторе 2го уровня*/
							else if( $target_container.is('.tabs_in') )
							{
                                // Плавное исчезание, а потом плавное появление
                                // Не работает на jquery 1.3.2 (баг в библиотеке)
								/*$('div.insert_in:visible', $target_container.parent()).fadeOut('normal',
									function()
									{
										$('div.'+$target_li.attr('tab_inid'), $target_container.parent()).fadeIn('normal');
         							});*/

								// Мгновенное исчезание и плавное появление
								$('div.insert_in:visible', $target_container.parent()).hide();
								$('div.'+$target_li.attr('tab_inid'), $target_container.parent()).fadeIn('normal');
							}
							
							/* Переключаем вид отображаемых данных в табуляторе 3го уровня*/
							if( $target_container.is('.tabs_in_in') )
							{
                                // Плавное исчезание, а потом плавное появление
                                // Не работает на jquery 1.3.2 (баг в библиотеке)
								/*$('div.insert_in_in:visible', $target_container.parent()).fadeOut('normal',
									function()
									{
										$('div.'+$target_li.attr('tab_in_inid'), $target_container.parent()).fadeIn('normal');
									});*/

								// Мгновенное исчезание и плавное появление
   								$('div.insert_in_in:visible', $target_container.parent()).hide();
								$('div.'+$target_li.attr('tab_in_inid'), $target_container.parent()).fadeIn('normal');
							}
						}
						else
						{
							// просто переходим по ссылке
							if ('go'==$target_li.attr('hact'))
							{
							    document.location = $target_li.children('a').attr('href');
							}
						}
					}

					/*DBG:*/
					var endTime_tabswtch = new Date().getTime();
					if((endTime_tabswtch-startTime_tabswtch) > 50)
						try{ console.log("DEBUG: Tab switching too slow: "+(endTime_tabswtch-startTime_tabswtch)+"ms."); } catch(e){}
					/*:DBG*/
				});
		});
}