var Facebook; 
function facebookApi(cont)
{
	Facebook = this;
	var name = 'facebook';
	var $this = this;
	var $temp = {};
	var $user = {};
	
	$temp.feeditem = api.getTemp('facebook/templates/feeditem.html');
	
	this.initItem = function(data)
	{
		var item = $.tmpl($temp.feeditem,data);
		return $this.initEvents(item, data);
	}
	
	this.setUser = function(user)
	{
		$user = user;
	}
	
	this.initEvents = function(item, data)
	{
	
		if(!$defined(data))
		{
			data = {};
		}
	      
		var $opt = $(item).find('.options');
	      
		// Like
		var lb;
		/*
		    if($defined(data.liked))
		    {
		      lb = $.ele('a',{
			    'class':'unlike'
		      }).html('Unlike').appendTo($opt);
		    } else {
		      lb = $.ele('a',{
			    'class':'like'
		      }).html('Like').appendTo($opt);
		    }
		    */
		$(lb).bind('click',function(event){
			var link = this;
			event.preventDefault();
			data.action = $(this).attr('class');
		    
			$(this).html($this.icon('loading'));
		    
			$this.request('/apis/facebook/get',data,{
				'success':function(){
					var mode = (data.action == 'like') ? 'unlike':'like';
					$(link).removeClass().addClass(mode).html(mode.ucFirst());
			  }
			})
		});
	      
		// Set the reply links
		item.find('.reply').click(function(){
			$(this).pTemp('facebook/templates/reply.html',data,'Facebook.replyBox');
			return false;
		});
	      
		// Set the reply links
		item.find('.comment').click(function(){
			$(this).pTemp('facebook/templates/comment.html',data,'Facebook.commentBox');
			return false;
		});
	      
		var add = $(item).find('.additional');
		var i,h;
	      
		if($defined(data.likes))
		{
			add.css({
				'display':'table'
			});
			var liketxt = (data.likes.count > 1) ? 'People Like':'Person Likes';
			i = this.icon('like');
			h = $.tmpl(' <strong>${likecount}</strong> ${liketxt} This ',{
				'likecount':data.likes.count,
				'liketxt':liketxt
			});
			$.ele('div',{
				'class':'item'
			}).html(h).append(i).appendTo(add);
		}
	      
		if($defined(data.comments))
		{
			var com = data.comments;
			add.css({
				'display':'table'
			});
			data.commentTxt = (com.count > 1) ? 'Comments':'Comment';
			i = this.icon('comment');
			h = $.tmpl(' <strong>${count}</strong> ${commentTxt}',data);
			var com = $.ele('div',{
			  'class':'item comment'
			}).html(h).append(i).appendTo(add);
			$(com).click(function(){
				var par = $(this).parent();
				if($(par).find('.comments').exists())
				{
					$(par).find('.comments').remove();
				}
				else
				{
					var com = $.ele('div',{
						'class':'comments'
					}).html('<img src="/images/elements/progress/facebook.gif" style="margin:5px;" />').appendTo(par);
					data.action = 'comments';
					$this.request('/apis/facebook/get',data,{
						'success':function(r){
							$(com).empty();
							$.tmpl('<div class="commentItem"><img src="${icon}" align="left" /><p><strong>${from.name}:</strong> ${message}</p></div>',r)
							.appendTo(com);
						}
					})
				}
			});
		}
	      
		var media = $(item).find('.media');
		var mi = $.trim($(media).html());
		var md = $.trim($(media).find('.mediaDetails').html());
		if(mi != '' && md != '') $(media).css({
			'display':'table'
		});
	      
		var player = $(item).find('.playSource');
		if($chk(player))
		{
			$(player).click(function(event){
				event.preventDefault();
				var url = $(this).attr('href');
			  
				popUrl(url);
			})
		}
	      
		$(item).find('img').each(function(){
			var s = $(this).attr('src');
			if(s.substr(0,5) == 'http:')
			{
				$(this).attr('src','/images.php?i='+encode64(s));
			}
		});
	      
		return item;
	}
	
	this.parse = function(data)
	{
		if($defined(data.rows))
		{
			var tmp = [];
			$.each(data.rows, function(){
				var doc = this.doc;
				doc.item_type = doc.type;
				doc.type = 'facebook';
				doc.ago = new Date().ago(doc.updated_time);
				tmp.push(doc);
			})
		}
		return tmp;
	}
	this.feed = function(cb){
		$.ajax({
			global: false,
			type:'GET',
			url: '/apis/facebook/feed/json',
			dataType:"json",
			data:{},
			beforeSend: function(xhr) {
				xhr.setRequestHeader("AuthSession", $.cookie('AuthSession'))
			},
			success: cb,
			error: function(){
				alert('There was an error with your search');
			}
		});
	}
	this.icon = function(type)
	{
		if(type == 'loading')
		{
			return $.create('img',{
				'src':'/images/elements/progress/facebook.gif'
			});
		}
		
		return $.ele('div',{
			'class':'fb-icon ' + type
		});
	}
	
	this.request = function(url, data, events)
	{
		$.ajax({
			dataType: 'json',
			async: false,
			global: false,
			type:'POST',
			data: data,
			url: url,
			success:events.success
		});
	}
	
	this.share = function(item)
	{
		data = {};
		data.message = 'Hello';
		return data;
	}
	
	this.replyBox = function(box, link)
	{
		var form = $(box).find('form');
		$(form).attr('action','/apis/facebook/post/reply').withAjax({
			'callback':'Facebook.sent'
		});
	};
	
	this.commentBox = function(box, link)
	{
		var form = $(box).find('form');
		$(form).attr('action','/apis/facebook/post/comment').withAjax({
			'callback':'Facebook.sent'
		});
	};
	
	this.sent = function(resp, form)
	{
		$(form).html('Your message has been sent');
		setTimeout('closeBox()',2000);
	};
}
