$j = _$ = jQuery.noConflict();


var _langs = {
	_please_select : 'Необходимо выбрать заготовку.',
	_create_tree : 'Создать развлетление на этом шаге?',
	_delete_chain : 'Удалить текущий ход и следующую за ним цепочку?',
	_delete_comment : 'Удалить комментарий к текущему ходу?',
	_realtime_send : 'Внимание, вы хотите войти в режим трансляции реального времени. Продолжить?',
	_tree_exists : 'Ветка с таким ходом уже существует.',
	_pattern_select_admin : 'Подождите пока гроссмейстер выберет заготовку.',
	_connection_lost : 'Связь с сервером opencess.by потеряна. Проверьте подключение к интернету и обновите страницу.',
	_save_changes_pattern : 'Внимание! Сохраниение будет произведено в текущую позицию, продолжить?'
}


_$(document).ready(function () {
	
	
	_$('#auth_form_show').click(function () {
		
		_$('#auth_form').fadeIn();
		
		return false;
	});
	
	if (_$('#calendar-content').length) {
		index.calendar();
		index.scroll_events();
	}
	
	index.init_ekrans();
	index.news_hover();
	index.init_menu();
	index.init_board();
	
	
	if (_$.fn.flash) {
		
		var sound = _$('.on_line_player').html();
		
		if (sound) {
			_$('.on_line_player').flash(
		        { 
					src: __root + 'public/flash/player.swf',
					width: 26,
					height: 19,
					flashvars: { playState : false, soundFile : sound },
					wmode : 'transparent'
		        },
		        { version: 8 }
		    );
		    
		    _$('.on_line_player').show();
		}
		
	}
	
});

/**
	Реализация функционала слежение за цчителем
*/
$j(document).ready(function () {
	
	var top = 0;
	var left = 0;
	var allWith = 0;
	
	$j('#slezhenie').click(function () {
			__log.disable_tracking = !this.checked;
	});
	
	$j('.alt_hover').hover(function () {
		
		var alt = $j('.alt', $j(this).parents('.test'));
		
		top = $j(this).offset().top;
		left = $j(this).offset().left;
		allWith = $j('body').width() - 20;
		
		alt.show();
		
	}, function () {
		$j('.alt', $j(this).parents('.test')).hide();
	});
	
	$j('.alt_hover').mousemove(function (e) {
		
		var alt = $j('.alt', $j(this).parents('.test'));
		var leftAlt = e.pageX - (left - 10);
		
		alt.css('top', e.pageY - (top - 15));
		alt.css('left', ((e.pageX + alt.width()) > allWith ?  (leftAlt - alt.width() - 20) : leftAlt));

	});
	
});

var index = {

	/* скролл на событиях */
	scroll_events : function () {
		return;
		_$('#ekran2 .scroll-pane').jScrollPane( {scrollbarWidth : 4});
	},

	/* Инициализация доски (дополнительная) */
	init_board : function () {
		
		if (null != window['__board']) {
			
			$j('#figures').removeClass('vzatie');
			__board.VZATIE = 0;
			__board.DELETE_FIGURE = 0;
			
			_$('#start_white').attr('checked', 'checked');
			
			_$('#start_white').click(function () {
				if (this.checked == true) {
					__board.game.turn = 'white';
				}
				else {
					__board.game.turn = 'black';
				}
			});

		}
	},
	
	/* Инициализация выпадающих экранов */
	init_ekrans : function() {

		var speed = 500;
		
		_$('.ekran').each(function () {
			
			
			var diff = _$(this).height() + _$(this).position().top;
			if (diff > 35 && _$(this).is('.opened') == false) {
				_$(this).css('top', -(_$(this).height() - 31));
			}
			
			var top = -_$('.metka', this).position().top;
			var top_real = _$(this).css('top');
			
			_$(this).attr('top', top);
			_$(this).attr('top_real', top_real);
			_$(this).attr('visible_height', _$(this).height() + parseInt(top_real));
		});
		
		_$('.ekran').click(
			function (e) {
				
				var eObject = jQuery.Event(e);
				eObject.stopPropagation();
				
				var _this = _$(this);
				
				if (!_$(_this).is('.opened')) {

					_$(_this).animate({top: _$(_this).attr('top')}, speed, 'swing', function () {
						
						_$(_this).addClass('opened');
						
						_$('BODY').one('click', function () {

							_$('.ekran').each(function () {
								
								_this = this;
								var visible = parseInt(_$(_this).attr('visible_height'));

								_$(_this).animate({top: -(_$(_this).height() - visible)}, speed, 'swing', function () {
									_$('.ekran').removeClass('opened');
								});
								
								_$('a.events', _this).animate({'left': 0}, speed);
								
							});
							
							return false;

						});
						
						
					});

					_$('a.events', _this).animate({'left': 50}, speed);
	
				}
				
			}

		);
		
		
		_$('a.events, .register a').click(function () {
							
			if (_$(this).parents('.ekran').is('.opened') == false) {
				_$(this).parents('.ekran').click();
			}
			else {
				_$('BODY').click();
			}
			
			return false;

		});
		
		return false;
			
	},

	/* Hover для плашек новостей (IE) */
	news_hover : function () {
		
		if (_$.browser.msie) {
			_$('.inside .news-item').hover(
				function () {
					_$(this).addClass('news-item-over');
				}, 
				function () {
					_$(this).removeClass('news-item-over');
				}
			);
		}
		
	},

	/* Корректируем тень в выпадающем меню */
	init_menu : function () {
		
		_$('#menu .item .dropdown').each(function () {
			
			_$('.bgr', this).css('height', _$(this).height() + 12);
			_$('.bgr', this).css('width', _$(this).width());
			
		});
		
		if (_$.browser.msie) {
			_$('#menu .item').hover(
				function () {
					_$(this).addClass('over');
				}, 
				function () {
					_$(this).removeClass('over');
				}
			);
		}
	
	},

	/* Инициализируем календарь */
	calendar : function () {
		
		var numString = 0;
		var dataPreviewMonth = {};
		
		var renderCallback = function($td, thisDate, month, year) {

			/* Раскрашиваем календарь */
			var prev_is_first = $td.prev().is('.first');
			var prev_is_second = $td.prev().is('.second');

			if (numString % 2 == 0) {
				$td.addClass(prev_is_first ? 'second' : 'first');
			}
			else {
				$td.addClass(prev_is_second ? 'first' : 'second');
			}

			if (thisDate.getDay() == 0) {
				numString++;
			}

			/* Назначаем обработчики */

			$td.click(function () {
				
				if (_$(this).is('.selected')) {

					var requestData = {
		 				ajax : '1',
		 				day : thisDate.getDate(),
		 				month : month + 1,
		 				year : year
		 			};
		 			
		 			_$.get(_link_event, requestData, function (data) {
		 				_$('#ekran2 .scroll-pane').html(data);
		 				index.scroll_events();
		 			});
					
				}
				
			});
			
			$td.mouseover(function () {
				
				if (_$(this).is('.current-month')) {

					for(var i in dataPreviewMonth) {

						with(dataPreviewMonth[i]) {

							var s_date_js = new Date(s_date);
							var e_date_js = new Date(e_date);
							
							if (thisDate >= s_date_js && thisDate <=e_date_js) {
								
								if (_$('.category_' + category_id).length) {
									continue;	// в списке должны быть только одно события из одного типа
								}
								
								_$('<div>')
									.addClass('category_' + category_id)
									.html(event_name)
									.appendTo('#events-brief');
								
								

							} // endif

						} // endwith

					} // endfor

				} // endif

			});
			
			
			$td.mouseout(function () {
				_$('#events-brief').html('');
			})

 		 }

 		 /**
 		  * Триггер для переключения месяцев
 		  * получаем JSON данные заголовков событий
 		  */
 		_$('#calendar-content').bind('dpMonthChanged', function (event, displayedMonth, displayedYear) {

 			var requestData = {
 				ajax : '1',
 				action : 'month_title',
 				month : displayedMonth+1,
 				year : displayedYear
 			};
 			
 			_$.getJSON(_link_event, requestData, function (data) {
 				dataPreviewMonth = data;
 			});
 			
 		});
 		 
		_$('#calendar-content').datePicker({
			startDate: _event_start, 
			endDate: _event_end, 
			inline: true, 
			renderCallback: renderCallback
		});
		
		_$('#calendar-content').trigger('dpMonthChanged', [(new Date()).getMonth(), (new Date()).getFullYear()]);

	}
	
};


/* Дампим всю строку логгера */
var Dump_Log = function (no_reset) {

	if (!no_reset) {
		$j('#lev-root DIV.current').removeClass('current');
	}
	
	var setRelObj = function () {
		$j(this).attr('rel', serialize(this.self));
	}
	$j('#lev-root DIV.white').each(setRelObj);
	$j('#lev-root DIV.black').each(setRelObj);
	
	
	var log = $j('#lev-root').html();
	//log = log.replace(/&quot;/g, '\'');
	//log = log.replace(/&/g, '%26');
	log = encodeURIComponent(log);

	return log;
}


var disconnected = function () {

	if ($j('#disconnected').length) {
		
		$j('#disconnected').css('opacity', 0.7);
		$j('#disconnected').height($j(document).height());

		$j('#disconnected').show();

	}
	else {
		alert(_langs._connection_lost);
	}
	
}
