var fb = {

	user:null,
	
	loader_url:"facebook/ajax.php",
	
	
	init:function () {
		fb.getWall();
		fb.update();	
	},
	
	
	
	
	getUser: function () {
		if (fb.user) {
			return fb.user;
		}else{
			return false;
		}
	},
	
	
	
	
	
	checkLogin: function (cb) {
	
		var user = fb.getUser();
		if ( user == false ) {
			fb.doRequest('get.user',function (data) {
				if (data.status == true && data.data != false) {
					fb.user = data.data;
					cb(fb.user);
				}else{
					cb(false);
				}
			});			
			
		}else{
			cb(user);	
		}
		
	},
	
	
	update:function () {
		$('#fb-login-layer-inner')
			.addClass('loader')
			.load('facebook/display_user.php',function () {
				$(this).removeClass('loader');	
			});
			
		fb.doRequest('get.user',function (data) {
			if (data.status == true && data.data != false) {
				fb.user = data.data;
			}else{
				fb.user = null;
			}
		});
		
	},
	
	
	
	getWall: function () {
		
		fb.doRequest('get.wall',function (data) {
			
			if (data.status == true) {
				
				$('#start-fb-stream-container').removeClass('loader');
				
				$.each(data.data, function (i, elem) {
					fb.fbWallTypeParser.parseType(elem);	
				});
				
				$('#start-fb-stream-container')
					.find('.commtent-tooltip')
					.tooltip({
						width:250,
						onData: fb.fbTooltip.onCommentOver
					});


				$('#start-fb-stream-container')
					.find('.like-tooltip')
					.tooltip({
						width:200,
						onData: fb.fbTooltip.onLikeOver
					});
					
					
					
					
					
				fb.fbWallHandel.init();
				$('#fb-stream-up-down')
					.fadeTo(0,0)
					.css('display','block')
					.fadeTo(200,1);
				
			}else{
				$('#start-fb-stream-container')
					.removeClass('loader')
					.addClass('fb-error');
			}
			
		},{limit:'5'});
	},
	
	
	
	getEventAttending: function (eid) {
			
		
		fb.doRequest('get.event.attening', 
			
			function (data) {
				
				$('#event-detail-atending-list').removeClass('loader');
				
				var userAttending = false;
				
				$list = $('<ul>');
				
				$.each(data.data, function (i, elem) {
					
						$item 
							= $( '<li>' )
								.append( 
									$('<div>')
										.addClass('fb-user-icon')
										.css('background-image','url(https://graph.facebook.com/'+elem.id+'/picture)')
										.append ( $('<img>').attr('src','images/fb_attenting_overlay.png') 
									),
									
									$('<div>')
										.addClass('fb-user-name')
										.append(
											$( '<a>' ).attr({
												'href':'https://www.facebook.com/profile.php?id='+elem.id,
												'target':'_blank'
												}).html(elem.name)
									),
									
									$('<div>').addClass('clear')
								).appendTo($list);
						
						if (fb.user != null && elem.id.toString() == fb.user.id)
							userAttending = true;
						
					});
				
				
				$list.appendTo('#event-detail-atending-list');
				
				$('#event-detail-facebook')
					.children('h1')
					.html('<span class="text-w"> TEILNEHMER: </span> <span class="text-p"><strong>'+data.data.length+'</strong> </span>');
				
				
				
					
				if (userAttending) {
					$('#event-detail-facebook')
						.children('.fb-status')
						.removeClass('loader')
						.html ('<img src="images/facebook-like-button.png"> Du nimmst teil!');
				}else{
					$('#event-detail-facebook')
						.children('.fb-status')
						.removeClass('loader')
						.html ('<a href="javascript:fb.rsvp_event();" class="fu_button fu_button_medium"><span class="fu_button_text"> Jetzt teilnehmen </span></a>');
				}
				
			},
		{eid:eid});
	},
	
	
	
	
	rsvp_event: function () {
		
		fb.checkLogin(function (result) {
			if (result) {
				
				$('#event-detail-facebook')
					.children('.fb-status')
					.html('')
					.addClass('loader');
				
				fb.doRequest('event.attending', function (data) {
					
					if (data.status == true && data.data == true) {
						
						$('#event-detail-atending-list')
							.html('')
							.addClass('loader');
						
						fb.getEventAttending(events.fbID);
					}else{
					}
					
				},
				{eid:events.fbID});
				
			}else{	
						
				 FB.login(function(response) {
				   if (response.authResponse) {
					   fb.rsvp_event();
				   } else {
				   }
				 }, {scope: 'rsvp_event,status_update,publish_stream,user_photos'});				
				
										
			}
		});
	},
	
	
	
	
	/** log out the current user from facebook and destory server session **/
	logout: function () {
		fb.doRequest('destory.session',function () {
			FB.logout();
		});
	},
	
	
	
	
	
	doRequest: function (method, cb, data, rm) {
		
		data = (data == null) ? {} : data;
		rm = (rm == null) ? 'GET' : rm;
		
		var data = $.extend(data,{method:method});

		$.ajax({
		 	url: fb.loader_url,
		  	type: rm,
		  	data: data,
		  	dataType: "json",
		  	success: cb
		});
		
	},
	


	createFbLikeIcon: function (count) {
		$createt = $('<div>')
						.attr('class','fb-likecount')
						.append( $('<h1>').html(count));	
		
		return $createt;
	},
	
	
	createFbCommentsIcon: function (count) {
		$createt = $('<div>')
						.attr('class','fb-commentcount')
						.append( $('<h1>').html(count));		
		return $createt;
	},
	
	
	
	fbWallHandel: {
		
		pos:0,
		length:null,
		
		init:function () {
			
			
			/*
			fb.fbWallHandel.length = $('#start-fb-stream-container').children('.fb-wallpost').length;
			$('#start-fb-stream-container').scrollTop(0);
			
			
			$('#start-fb-stream-container').hover (function () {
					slider.isActiv = false;
					
				}, function () {
					slider.isActiv = true;
				}).click(function () {return false;});
				
			*/
			
		},
		
		
		
		showNext:function () {
			
			if (fb.fbWallHandel.pos < fb.fbWallHandel.length){
				
				fb.fbWallHandel.pos ++;

				var offset = $('#start-fb-stream-container').scrollTop();
				var elem = $('#start-fb-stream-container').children('.fb-wallpost');
					elem = $(elem[fb.fbWallHandel.pos]);
					
				$('#start-fb-stream-container')
					.stop()
					.animate({scrollTop:offset + elem.innerHeight() },250);
					
			}else{
				$('#start-fb-stream-container')
					.stop()
					.animate({scrollTop:20000 },250);				
			}
			
		},
		
		
		showPrev:function () {

			if (fb.fbWallHandel.pos > 0){
				
				fb.fbWallHandel.pos --;
				
				var offset = $('#start-fb-stream-container').scrollTop();
				
				var elem = $('#start-fb-stream-container').children('.fb-wallpost');
					elem = $(elem[fb.fbWallHandel.pos]);
						
				
				$('#start-fb-stream-container')
					.stop()
					.animate({scrollTop:offset - elem.innerHeight() },250);
				
				
			}else{
				$('#start-fb-stream-container')
					.stop()
					.animate({scrollTop:0 },250);				
			}
		}
			
		
		
	},

	
	fbWallTypeParser: {
	
		
		parseType: function (elem) {
			
			switch (elem.type) {
				
				case 'status':
					fb.fbWallTypeParser.parseStatus(elem);
					break;
				
				case 'photo':
					fb.fbWallTypeParser.parsePhoto(elem);
					break;
					
				case 'video':
					fb.fbWallTypeParser.parseVideo(elem);
					break;
					
				case 'link':
					fb.fbWallTypeParser.parseLink(elem);
					break;
			}
		},
		
		
		
		parseStatus: function (elem) {
			
			$elem = fb.fbWallTypeParser.createElemt(elem);
			$elem.appendTo('#start-fb-stream-container')	
						
		},
		
		
		
		parsePhoto: function (elem) {
									
			$elem = fb.fbWallTypeParser.createElemt(elem);
			$elem
				.find('.fb-wallpost-content')
				.append( $('<div>')
							.attr('class','fb-wallimage')
							.append( 
								$('<a>')
									.attr({href:elem.link,target:'_blank', rel:"iframelink"})
									.append($('<img>').attr({'src':'https://graph.facebook.com/'+elem.object_id+'/picture','width':'170px'}))
								)
						)
						
			$elem.appendTo('#start-fb-stream-container')
				
		},
		
		
		
		
		parseVideo: function (elem) {
			
			$elem = fb.fbWallTypeParser.createElemt(elem);
			
			$elem
				.find('.fb-wallpost-content')
				.append( $('<div>')
							.attr('class','fb-wallimage')
							.append( 
								$('<a>')
									.attr({href:elem.link,target:'_blank', rel:'fb_video'})
									.append($('<img>').attr('src','images/video.png'))
									.data('videoID',elem.source)
								)
						)
						
						
			$elem.appendTo('#start-fb-stream-container');			
	
		},
		
		
		
		
		
		parseLink: function (elem) {
			
			$elem = fb.fbWallTypeParser.createElemt(elem);
			
			$elem
				.find('.fb-wallpost-content')
				.append (
					$('<div>').append (
						$('<a>')
							.attr({href:elem.link,target:'_blank', rel:"iframelink"})
							.html(elem.caption)
						)	
				);
			
			
			
			if (elem.picture) {
				$elem
					.find('.fb-wallpost-content')
					.append( $('<div>')
								.attr('class','fb-wallimage')
								.append( 
									$('<a>')
										.attr({href:elem.link,target:'_blank', rel:"iframelink"})
										.append($('<img>').attr({'src':elem.picture}))
									)
							)				
			}
			
									
			$elem.appendTo('#start-fb-stream-container');	
			
		},
		
		
		createElemt: function (elem) {
			
			$created = 
				$('<div>')
					.attr({id: elem.id})
					.addClass('fb-wallpost')
					.append(
						$('<div>')
							.attr('class','fb-icon')
							.append( $('<img>').attr({'src':'https://graph.facebook.com/'+elem.from.id+'/picture', width:'50px'}) )
						)
					.append(
						$('<div>')
							.attr('class','fb-wallpost-content')
							.append(
								$('<h1>')
									.append( $('<a>').attr({'href':'https://www.facebook.com/profile.php?id='+elem.from.id, target:'_blank'}).html(elem.from.name))
							)
							.append($('<h2>').html(fb.fbWallTypeParser.getTimeString(elem.created_time)))
							.append($('<p>').html(elem.message))
							
						)
					.append( $('<div>').addClass('clear') )
					.append( $('<div>')
								.attr('class', 'fb-wall-like')
							)
											
								
				if (elem.likes)
					$created
						.find('.fb-wall-like')
						.append( fb.createFbLikeIcon( elem.likes.count ).addClass('like-tooltip').data('likes',elem.likes) )


				if (elem.comments && elem.comments.count > 0)
					$created
						.find('.fb-wall-like')
						.append( fb.createFbCommentsIcon( elem.comments.count ).addClass('commtent-tooltip').data('comments',elem.comments))	
						
						
				return $created;	
						
			},
		
		
		getTimeString: function (json_time) {
			
			var jear = json_time.substring(0,4)
			var mon  = json_time.substring(5,7);	
			var day	 = json_time.substring(8,10);
			
			var h 	 = json_time.substring(11,13)
			var m	 = json_time.substring(14,16);
			
			return day+'//'+mon+'//'+jear+' '+h+':'+m+' uhr';			
		}
		
		
	},
	
	
	
	fbTooltip: {
		
		onCommentOver: function (target) {
							
				$comments = $(target).data('comments');
					if ($comments.data.length < $comments.count) {
						$.tooltip
							.$content
								.append ( 
										$('<div>')
											.html('letzten '+$comments.data.length+' kommentare von '+$comments.count) 
									);
								}
								
					$.each($comments.data, function (i, elem) {
									
						$('<div>')
							.attr('class','fb-comment')
							.append( 
								$('<div>')
									.attr('class','fb-icon')
									.append( $('<img>').attr({'src':'https://graph.facebook.com/'+elem.from.id+'/picture', width:'50px'}) )
							)
							.append(
								$('<div>')
									.attr('class','fb-comment-content')
									.append(
										$('<h1>').html(elem.from.name)
									)
									.append(
										$('<h2>').html(fb.fbWallTypeParser.getTimeString(elem.created_time))
									)
									.append(
										$('<p>').html(elem.message)
									)
								)
								.appendTo($.tooltip.$content);

						});
							
		},
		
		
		onLikeOver: function (target) {
		
			$likes = $(target).data('likes');
			var text = "";
			if ($likes.count > 1) 
				text = ' Personen gef&auml;llt das';
			else	
				text = ' Person gef&auml;llt das';
				
			$.tooltip
				.$content
				.append('<p>')
					.html($likes.count + text )	
				
			
		}
		
			
	}
	
	
	
}
