var posts = 15;
var load_after = posts;
var locked = false;

function isScrollBottom() {
	var documentHeight = $(document).height();
	var scrollPosition = $(window).height() + $(window).scrollTop();
	return (documentHeight == scrollPosition);
}

function showLoad(){
	locked = true;
	$('#loader').show();
}

function hideLoad(){
	$('#loader').hide();
	locked = false;
}

var message;

function ajaxForm(container, values, action){
	showLoad();
	container.load(action, values, function(data){
		if(container.find('div.msg_info').length){
			hideLoad();
			message = container.find('div.msg_info:first');
			container.html('');
			message.append('<hr><button type="button" class="close_dialog ui-state-default ui-corner-all">Ok</button>');
			message.dialog({
				close: function(){ showLoad(); window.location.reload(); },
				modal: true
			});
		} else {
			container.find('form').each(function(){
				$(this).submit(function(e){
					e.preventDefault();
					values = $(this).serializeArray();
					action = $(this).attr('action');
					ajaxForm(container, values, action);
				});
			});
			container.slideDown();
			hideLoad();
		}
	});
}

function moar(callback){
	if(!locked){
		showLoad();
		$.get(URI + '/ajax/home/frontpage/' + load_after, function(data){
			$('ul#posts').append(data);
			load_after += posts;
			hideLoad();
			if(callback) callback();
		});
	}
}

$(function(){
	
	$('.close_dialog').live('click', function(){
		showLoad();
		window.location.reload();
	});
	
	$('a.load').live('click', function(e){
		e.preventDefault();
		var href = $(this).attr('href').replace(URI, URI + '/ajax');
		var href = href.replace('/ajax/ajax', '/ajax');
		$('#load_here').slideUp(function(){
			ajaxForm($('#load_here'), null, href);
		});
	});
	
	$('a.load_moar').click(function(e){
		e.preventDefault();
		$(this).addClass('loading');
		moar(function(){ $('a.load_moar').removeClass('loading'); });
	});
	
	$('a.image').live('click', function(e){
		e.preventDefault();
		if($(this).hasClass('open')){
			$(this).removeClass('open');
			$(this).next('div').remove();
		} else {
			$(this).addClass('open');
			$(this).after('<div><img class="external_image" src="'+ $(this).attr('href') +'" /></div>');
		}
	});

	$('a.youtube').live('click', function(e){
		e.preventDefault();
		if($(this).hasClass('open')){
			$(this).removeClass('open');
			$(this).next('div').remove();
		} else {
			$(this).addClass('open');
			$(this).after('<div><object width="100%" height="320"><param name="movie" value="http://www.youtube-nocookie.com/v/'+ $(this).attr('rel') +'&fs=1&color1=0xC60000&color2=0x7F0000"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/'+ $(this).attr('rel') +'&fs=1&color1=0xC60000&color2=0x7F0000" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="100%" height="320"></embed></object>');
		}
	});
	
	$('a.reply').live('click', function(e){
		e.preventDefault();
		$(this).parent().parent().find('form:first').slideToggle();
	});
	
	$('a.load_comments').live('click', function(e){
		e.preventDefault();
		var me = $(this);
		if(me.parent().next('div.comments').length){
			me.parent().next('div.comments').slideUp(function(){
				$(this).remove();
			});
		} else {
			var id = me.attr('rel');
			var comments_container = new jQuery('<div class="comments" />').hide();
			ajaxForm(comments_container, null, URI + '/ajax/comments/show/' + id);
			me.parent().after(comments_container);
		}
	});

	$('.post_body > a, .comment_body > a, .comment_child_body > a').live('mouseenter', function(){
		var me = $(this);
		if(!me.hasClass('headers_checked') && !me.hasClass('headers_loading') && !me.hasClass('action')){
			me.addClass('headers_loading');
			var uri = me.attr('href');
			$.post(URI + '/json/home/headers/', { uri : encodeURI(uri)}, function(data){
				if(data['Content-Type'].search(/image/g) >= 0){
					me.after('<a href="'+uri+'" class="action image"><span>bild ansehen</span></a>');
				} else if(data.host.search(/youtube.com/g) >= 0){
					me.after('<a href="'+uri+'" rel="'+data.parsed_query.v+'" class="action video youtube"><span>video ansehen</span></a>');
				}
				me.addClass('headers_checked');
				me.removeClass('headers_loading');
			}, 'json');
		}
	});
});