
var Blog = {};

Blog.BindEvents = function(){
	$('#comment_submitter').click( Blog.SendComment );
	$('#ajax_login_submit').click( Blog.Login );
	$('.popular_toggler span').click( Blog.SwitchPopularTabs );
	$('.sobaka_rating_full').mousemove( Blog.RatingSlide ).click( Blog.RatingRate );
	
	$('.popular_toggler span:first').trigger('click');
	
	$(window).resize(Blog.onResize);
	Blog.onResize();
}

Blog.onResize = function(){
	// Resize images
	var max = $(window).width() - 450;
	if ( max < 650 ) max = 650;
	$('.sobaka_Tcontent .image_container img').css('max-width',max+'px');
}

Blog.IWindow = function( type, caption, message ){
	$('.sobaka_information_window b').text(caption);
	$('.sobaka_information_window i').text(message);
	
	$('.sobaka_information_window').removeClass('infow_warning').removeClass('infow_success').addClass('infow_'+type).slideDown('fast').delay(2000).fadeOut('slow');
}

Blog.JSError = function( text ){
	Blog.IWindow('warning','Ошибка',text);
	//alert( text );
}

Blog.AjaxAnswer = function( answer ){
	var data;
	try{
		data = eval("("+answer+")");
	}catch (e) {
		Blog.JSError( 'Ошибка передачи данных от сервера' );
		return false;
	}
	
	if ( !data.answer || data.answer == 'error' ){
		Blog.JSError( data.data );
		return false;
	}	
	
	return data;
}

Blog.SelfRedirect = function( suffix ){
	// Да и вообще перегружаем страницу
	var loc = (""+document.location).split('#');
	document.location = loc[0] +"?r="+ Math.random() +suffix;	
}




Blog.Login = function( e ){
	// Getting login and password
	var login = $('#ajax_login_field').attr('value');
	var password = $('#ajax_password_field').attr('value');
	var remember = ( $('#ajax_remember').is(':checked') ? 'yes' : 'no' );
	
	if ( !login || login.length < 2 ){
		Blog.JSError( 'Укажите логин' );
		return;
	}
	
	if ( !password ){
		Blog.JSError( 'Укажите пароль' );
		return;
	}
	
	// Отправляем данные
	$.post('/a/login/', { "login": login, "password": password, "remember": remember }, Blog.LoginEvent );
	
	e.StopPropagation();
	return false;
}

Blog.LoginEvent = function( answer ){
	var data = Blog.AjaxAnswer( answer );
	if ( data == false ) return;
	
	Blog.SelfRedirect( "" );
}

Blog.SendComment = function(){
	// Getting text of comment
	var comment_text = $('#comment_text').attr('value');

	if ( !comment_text || comment_text.length < 5 ) {
		Blog.JSError( 'Комментарий слишком короткий' );
		return;
	}

	if ( !Entry || !Entry.id ) {
		Blog.JSError( 'Отсутствуют данные по записи. Пожалуйста обновите страницу.' );
		return;
	}
	
	// Отправляем данные
	$.post('/a/addcomment/',{ "text": comment_text, "entry": Entry.id }, Blog.CommentEvent );
}

Blog.CommentEvent = function( answer ){
	var data = Blog.AjaxAnswer( answer );
	if ( data == false ) return;
	
	// Очищаем поле ввода
	$('#comment_text').attr('value','');

	Blog.SelfRedirect( "#com"+data.data );
}

Blog.RatingSlide = function( e ){
	var cy = e.pageY;
	var o = $(this);
	var oy = o.offset().top;
	var y = Math.round(cy - oy);
	
	o.children('.sobaka_rating_select').css('height', ''+y+'px');
}

Blog.RatingRate = function(){
	var id = $(this).attr('rel');
	
	// Определяем множитель
	var multiplier = (5-Math.round(parseInt($(this).children('.sobaka_rating_select').css('height')) / parseInt($(this).css('height')) * 10))/5;
	
	// Отправляем данные
	$.post('/a/ratepost/', { "entry": id, "multiplier": multiplier }, Blog.RatingEvent );
}

Blog.RatingEvent = function(answer){
	var data = Blog.AjaxAnswer( answer );
	if ( data == false ) return;
	
	Blog.RatingMarkRated( data.data.entry, data.data.percent );
	Blog.IWindow('success','Ваш голос учтён!','Рейтинг записи теперь составляет '+data.data.value);
}

Blog.RatingMarkRated = function( id, value ){
	$('#rating_cont_'+id).addClass('sobaka_rating_rated').removeClass('sobaka_rating_full').attr('title','Вы уже голосовали').children('.sobaka_rating_select').remove();
	if ( value && value != 'no_change' ){
		$('#rating_cont_'+id).children('.sobaka_rating_empty').css('height', ((100-value)/100*103)+'px');
	}
}

Blog.SwitchPopularTabs = function(){
	var o = $(this);
	$('.popular_toggler span').removeClass('selected');
	$('.popular_block').hide();
	
	o.addClass('selected');
	$('#PopularBlock'+o.attr('act')).css('display','block');
}

Blog.ToggleImagePreview = function( o ){
	o = $(o);
	var id = o.attr('poolId');
	var url = o.attr('poolUrl');
	
	var c = $('#imgPoolCont'+id);
	var pool = window['imgPool'+id];
	console.log(o);
	console.log(id);
	console.log(url);
	console.log(pool);
	o.hide();
	for ( i=0; i < pool.length; i++ ){
		$('<a href="'+url+'#Image'+pool[i].id+'"><img class="StdImgThumbCrop" src="'+pool[i].url+'" /></a>').css('padding','2px').appendTo( c );
	}
}

$( Blog.BindEvents );
