MMU.Facebook = function() {

};

MMU.Facebook.AccessToken = '124037487649064|71c5a955db5571c212475fde-100001546495559|4DG8cbC87y-Nza4AvxZzWyN4WtY.';

/*MMU.Facebook.getElementWithText(element, text) {
	var children = element.getChildren();
	if (children == null || children.length == 0) {
		var matches children.get('text').match(text);
		if (matches.length == 2) {
			return matches;
		}
		return null;
	}
	else {
		children.forEach(function(item)) {
			var matches = MMU.Facebook.getElementWithText(item, text);
			if (matches != null) {
				return matches;
			}
		}
		return null;
	}
	}
}*/

var group_id = 0;

MMU.Facebook.CreatePost = function(value) {
	if (value == null || value == '') {
		return;
	}
	window.fbAsyncInit = function() {
		FB.init({
		 appId  : '124037487649064',
		 status : true, // check login status
		 cookie : true // enable cookies to allow the server to access the session
	    });


		FB.login(function(response) {
		  if (response.session) {
			if (response.perms) {
			  FB.api('/' + group_id + '/feed', 'post', { message: value }, function(response) {
				  if (!response || response.error) {
					alert('Error occured');
				  } else {
					MMU.Facebook.LoadMessages.delay(1000);
				  }
				});

			} else {
			  alert('Please grant the MMUnion website permissions to post on your behalf');
			}
		  } else {
			alert('Cannot post to facebook wall');
		  }
		}, {perms:'read_stream,publish_stream'});

	};
	
	(function() {
	var e = document.createElement('script'); e.async = true;
	e.src = document.location.protocol +
	  '//connect.facebook.net/en_US/all.js';
	var fbroot = new Element('div', {id: 'fb-root'})
	fbroot.inject($(document.body), 'top');
	document.getElementById('fb-root').appendChild(e);
	}());
	
}

MMU.Facebook.RequestWall = function() {
	
	if (document.location.pathname.lastIndexOf('/edit/') != -1) {
		return;
	}
	
	var regexp = /{\s*facebook\s+id\s*=\s*"([^"]+)"\s*}/i;
	
	
	
	
	
	//var matches = MMu.Facebook.getElementWithText(document.body, regexp);
	
	var matches = $('content').get('html').match(regexp);
	if (matches != null && matches.length == 2) {
		group_id = matches[1];
		var new_html = $('content').get('html').replace(regexp, '<div id="fb"></div>');
		$('content').set('html', new_html);
	}
	else {
		return;
	}
	MMU.Facebook.LoadMessages();
}

MMU.Facebook.LoadMessages = function() {	
	$('fb').empty();
	
	var postHolder = new Element('div', {'class': 'post-holder'});
	var searchControls = new Element('div', {'class': 'search-controls'});
	new Element('div', {'class': 'search-left'}).inject(searchControls);
	var searchMain = new Element('div', {'class': 'search-main'});
	var textbox = new Element('input', {id: 'txtFacebookMessage'}).inject(searchMain);
	searchMain.inject(searchControls);
	var link = new Element('a', {id: 'aFacebookMessage', 'href': '#'}).inject(searchControls);
	
	searchControls.inject(postHolder);
	postHolder.inject('fb');
	
	new Element('div', {id: 'fb-posts'}).inject('fb');
	//$('fb').spin();
	link.addEvent('click', function(event) {
		event.stop();
		MMU.Facebook.CreatePost(textbox.value);
	});
	
	
	var url = "https://graph.facebook.com/" + group_id + "/feed";
	var jsonRequest = new Request.JSONP({'url': url,  
		onSuccess: function(data){
			//alert(data.data);
			data.data.forEach(function(item, index) {
				var parent = MMU.Facebook.DisplayMessage(item, 'fb-posts');
				if (item.comments != null && item.comments.data != null) {
					item.comments.data.forEach(function(subItem) {
						MMU.Facebook.DisplayMessage(subItem, parent);
					});
				}
				parent.reveal();
			});
			
			},
		onComplete: function() {
			//$('fb').unspin();
			$('fb-posts').setStyle('display', 'block');
		}});

	jsonRequest.send({data: {'access_token': MMU.Facebook.AccessToken, 'limit': 5}});
}

MMU.Facebook.ProfilePic = function(id) {
	return 'https://graph.facebook.com/' + id + '/picture?access_token=' + MMU.Facebook.AccessToken; 
}

function nl2br(str){
	if (str == null) {
			return "";
	}
	return str = str.replace(/\n/g, '<br />');
}

MMU.Facebook.DisplayMessage =  function(data, parent) {
	var msgHolder = new Element('div', {'class': 'fb-holder'});
	var profilePic = new Element('img', {'class': 'fb-pic', 'src': MMU.Facebook.ProfilePic(data.from.id)});
	profilePic.inject(msgHolder);
	var msgDiv = new Element('div', {'class': 'fb-message'});
	var name = new Element('a', {'class': 'fb-message-name', 'target': '_blank'});
	name.set('text', data.from.name);
	name.set('href', 'http://www.facebook.com/profile.php?id=' + data.from.id);
	name.inject(msgDiv);
	var textDiv = new Element('div', {'class': 'fb-message-text'});
	textDiv.set('html', nl2br(MMU.linkify(data.message)));
	textDiv.inject(msgDiv);
	
	//check if link
	if(data.name != null && data.name != '') {
		var msgInfo = new Element('div', {'class': 'fb-message-info'});
		var msgImgLink = new Element('a', {'href': data.link, 'target': '_blank'});
		var msgImg = new Element('img', {'src': data.picture});
		msgImg.inject(msgImgLink);
		msgImgLink.inject(msgInfo);
		
		var msgTextHolder = new Element('div', {'class': 'fb-message-info-text'});
		var msgTextName = new Element('a', {'class': 'fb-message-info-title', 'target': '_blank', 'href': data.link, 'text': data.name});
		msgTextName.inject(msgTextHolder);
		var msgTextDesc = new Element('div', {'class': 'fb-message-info-desc', 'html':  nl2br(MMU.linkify(data.description))});
		msgTextDesc.inject(msgTextHolder);
		
		msgTextHolder.inject(msgInfo);
		msgInfo.inject(msgDiv);
	}
	
	
	
	var dateDiv = new Element('div', {'class': 'fb-message-date'});
	var date = new Date();
	date.parse(data.created_time);
	dateDiv.set('text', date.timeDiffInWords());
	dateDiv.inject(msgDiv);
	msgDiv.inject(msgHolder);
	msgHolder.setStyle('display', 'none');
	msgHolder.inject(parent);
	
	return msgHolder;
	
}

MMU.first = MMU.Facebook.RequestWall;
