// Intro management after registration.
var Intro = {
	
	block:null,
	content:null,
	bottom:null,
	
	close:function(){
		this.block.remove();
	},
	
	show1:function()
	{
		var pos=$("#addNewColIcon").offset();
		var posX=pos.left+5;
		var posY=pos.top+35;
	
		this.block=$("<div id='intro'>"+
						"<div class='top'><img onclick='Intro.close();' src='/img/icons/close_16.png' /></div>"+
						"<div class='center'>Click this 'Add Column' button to add or remove new columns to your main page! Choose from variety of options, and change the order of the columns. You can also add your own twitter search columns.</div>"+
						"<div class='bottom'><a href='#' class='grayButton' onclick='Intro.show2();return false;'>Next »</a></div>"+
						"</div>");
		this.block.css({top:posY,left:posX});
		
		this.content=$(this.block.find(".center")[0]);
		this.bottom=$(this.block.find(".bottom")[0]);
		
		$("body").append(this.block);
	},
	
	show2:function()
	{
		var pos=$("#publishMessageIcon").offset();
		var posX=pos.left+5;
		var posY=pos.top+40;
		
		this.bottom.html("<a href='#' class='grayButton' onclick='Intro.close();return false;'>Finish</a>");
		this.content.html("Click here to publish your message to Facebook and Twitter. You can upload multiple images and share your location by putting a pin to your current location. You are able to choose a specific platform to post.");
		this.block.css({top:posY,left:posX});
	},
	
	show3:function()
	{
		
	},
	
	show4:function()
	{
		var pos=$("#archiveIcon").offset();
		var posX=pos.left+15;
		var posY=pos.top+25;
		
		this.bottom.html("<a href='#' class='grayButton' onclick='Intro.close();return false;'>Close</a>");
		this.content.html("Click here to access your archive. You can archive a feed by simply hovering your mouse on a feed and clicking the appearing 'archive' icon.");
		this.block.css({top:posY,left:posX});
	}
};

// At main page, manage the column's status and order.
var Col = {
	
	colPage:"",
	
	newsSource:null,
	
	show:function()
	{
		Col.general();
	},
	
	general:function()
	{
		Pop.show("Add Columns",null,false);
		Pop.loading();
		$.post("/ajax/Col/general",function(data) {
			Pop.insert(data);
		});
	},
	
	addColumn:function(type)
	{
		showLoading();
		$.post("/ajax/Col/addColumn",{type:type},function(data) {
			if(data==1)
			{
				Pop.close();
				window.location.reload();
			}
			else {
				removeLoading();
				alert("An error has occured!");
			}
		});
	},
	
	setNewsSource:function(url)
	{
		Col.newsSource = url;
	},
	
	addNewsColumn:function(step)
	{
		if(step==0)
		{
			Pop.show("Select a new source");
			Pop.loading();
			$.post("/ajax/Col/newsForm",function(data) {
				Pop.insert(data);
			});
		}
		else if(step==1)
		{
			var keyword = $("#newsColumnKeywordInput").val();
			Pop.loading();
			google.feeds.findFeeds(keyword, Col.newsSourceSearchDone);
		}
		else if(step==2)
		{
			showLoading();
			$.post("/ajax/Col/addNewsColumn",{source:Col.newsSource},function(data) {
				removeLoading();
				if(data==1)
				{
					Pop.close();
					window.location.reload();
				}
				else
					alert("An error has occured!");
			});
		}
	},
	
	newsSourceSearchDone:function(result){
		if (!result.error) {
			var html = "<div style='margin:20px 20px;'>";
			html += '<h4>Select one of the resources:</h4>';

			for (var i = 0; i < result.entries.length; i++) {
				var entry = result.entries[i];
				var urlInput = '<input type="hidden" name="entry" value="'+entry.url+'" />';
				html += '<div class="searchListItem grayButton" onclick="Col.setNewsSource(\''+entry.url+'\');Col.addNewsColumn(2);">'+urlInput+entry.title + '</div>';
			}
	    
			html+="</div>";
			Pop.insert(html);
		}
			 
	},
	
	addTwitterSearchColumn:function(isFinished){
		if(!isFinished)
		{
			var c = "<div class='center' style='padding:20px 0;'><label>Enter a keyword:</label> <input style='width:200px' type='text' class='textInput' id='searchColumnKeywordInput'/></div>";
			c+="<div class='center'><button class='grayButton' onclick='Col.addTwitterSearchColumn(true);' type='button'>Save</button></div>";
			Pop.insert(c);
		}
		else {
			var keyword = $("#searchColumnKeywordInput").val();
			showLoading();
			$.post("/ajax/Col/addTwitterSearchColumn",{keyword:keyword},function(data) {
				removeLoading();
				if(data==1)
				{
					Pop.close();
					window.location.reload();
				}
				else
					alert("An error has occured!");
			});
		}
	},
	
	save:function()
	{
		var arr=new Array();
		var isOn;
		$("#pageItems li").each(function(){
			var img=$(this).find("img")[0];
			if($(img).attr("src")=="/img/icons/green_24.png")
				isOn=true;
			else
				isOn=false;
			
			var span=$(this).find(".val")[0];
			var val=$(span).html();
			if(isOn)
				arr.push(val+":"+"on");
			else
				arr.push(val+":"+"off");
		});
		
		$("#colButtons").css("background","url('/img/ajax1.gif') 9px center no-repeat");
		
		$.post("/ajax/Col/save",{colPage:this.colPage,str:arr.toString()},function(data) {
			if(data==1)
			{
				Pop.close();
				window.location.reload();
			}
			else
				alert("An error has occured!");
		});
	},
	
	searchColInput:function()
	{
		if($("#searchColInputP").is(":hidden"))
		{
			$("#searchColInputP").show();
		}
		else
			$("#searchColInputP").hide();
	},
	
	removeColumn:function(id)
	{
		$("#column-"+id).remove();
		Utility.updateContainerWidth();
		$.post("/ajax/Col/removeColumn",{id:id},function(data) {
			if(data!=1)
			{
				alert("An error has occured!");
			}
		});
	},
	
	saveCurrentOrder:function(){
		var str="";
		$(".column").each(function(){
			var columnId = $(this).find(".columnId").html();
			str+=columnId+"-";
		});
		str = str.substring(0, str.length-1);
		
		$.post("/ajax/Col/saveCurrentOrder",{str:str},function(data) {
			if(data!=1)
			{
				alert("An error has occured!");
			}
		});
	},
	
	cancel:function()
	{
		Pop.close();
	}
};


// Class that manages the main publisihing to Facebook and Twitter.
var Publish = {
	
	publishToFacebook:1,
	publishToTwitter:1,
	
	replyTo:0,
	
	images:new Array(),
	
	open:function(text){
		text = text || "";
		Pop.show("Publish");
		$("#publisherContainer").show().appendTo(".popContent");
		$("#feedContent").val(text).focus();
	},
	
	addImage: function(imageId)
	{
		this.images.push(imageId);
	},
	
	reply:function(obj){
		$stream = $(obj).parents(".stream");
		var feedId = $stream.find(".feedId").html();
		var screenName = $stream.find(".screenName").html();
		this.replyTo = feedId;
		this.open("@"+screenName+" ");
	},
	
	change: function(obj)
	{
		var url="http://www.feedmount.com";
		
		if(obj.src==url+'/img/icons/facebook_32.png')
		{
			this.publishToFacebook=0;
			obj.src=url+'/img/icons/facebook_32_alpha.png';
		}
		else if(obj.src==url+'/img/icons/facebook_32_alpha.png')
		{
			this.publishToFacebook=1;
			obj.src=url+'/img/icons/facebook_32.png';
		}
		else if(obj.src==url+'/img/icons/twitter_32.png')
		{
			this.publishToTwitter=0;
			obj.src=url+'/img/icons/twitter_32_alpha.png';
		}
		else if(obj.src==url+'/img/icons/twitter_32_alpha.png')
		{
			this.publishToTwitter=1;
			obj.src=url+'/img/icons/twitter_32.png';
		}
	},
	
	post:function()
	{
		var replyTo = this.replyTo;
		var publishToFacebook = this.publishToFacebook;
		var publishToTwitter = this.publishToTwitter;
		
		var publishLat = $("#publishTargets .publishLat").val();
		var publishLng = $("#publishTargets .publishLng").val();
	
		if(publishToFacebook==0 && publishToTwitter==0)
		{
			iBox=new InfoBox($("#feedContent"),2);
			iBox.show("Select at least one portal to post.",-165,-3);
			return;
		}
		
		var text=$("#publisherContainer textarea").val();
		if(text.length==0)
		{
			iBox=new InfoBox($("#feedContent"),2);
			iBox.show("Please enter something to post.",-165,-3);
			return;
		}
		
		$("#publisherContainer textarea").attr("disabled", "disabled").addClass("bgGray");
		
		var url="/ajax/post/post/";
		showLoading();
		
		var imagesStr=this.images.toString();
		text=encodeURI(text);
		
		$.post(url,{text:text,replyTo:replyTo,images:imagesStr,publishToFacebook:publishToFacebook,publishToTwitter:publishToTwitter,lat:publishLat,lng:publishLng},function(data) {
			//alert(data);
			$("#feedContent").val("").removeAttr("disabled").removeClass("bgGray");
			$("#charCounter").html("140");
			
			removeLoading();
			
			if(data.error==0)
			{
				Pop.close();
				Message.show("Your feed is posted successfully.");
				Update.general();
				$("#publishItems").slideUp(400,function(){
					$("#publishItems").html("");
				});
			}
			else {
				Message.show("Error: "+data.error+" - "+data.errorMessage);
			}
		},'json');
	}
};

// Misc. things.
var Utility = {
	
	updateContainerWidth:function(){
		var width = 0;
		$(".column").each(function(){
			width += $(this).width()+15;
		});
		
		var insideWidth = $("#inside").width();
		
		if(width<insideWidth)
			width=insideWidth;
		
		$("#columns").width(width);
	}
};

// Manage the feedback popup.
var Feedback = {
		
	open:function()
	{
		Pop.show('We want to hear from you!',450);
		Pop.insert( "<form id='feedbackForm' action='/' method='post' onsubmit='Feedback.saveMessage();return false;'>"+
					"<p class='feedbackP'>"+
						"Hello! Please do communicate with us about anything including any error notification, suggestions and also about translations."+
					"</p>"+
					"<p class='feedbackP'>"+
						"<input type='text' value='name...' class='textInput preText' id='feedbackName' name='feedbackName' />"+
					"</p>"+
					"<p class='feedbackP'>"+
						"<input type='text' value='email...' class='textInput preText' id='feedbackEmail' name='feedbackEmail' />"+
					"</p>"+
					"<p class='feedbackP'>"+
						"<textarea class='preText' id='feedbackTextarea'>message...</textarea>"+
					"</p>"+
					"<p class='feedbackP center'><button type='submit' class='grayButton' onclick=''>Send</button></p>"+
					"</form>"
					);
	},
	
	saveMessage:function()
	{		
		var name=$("#feedbackName").val();
		var email=$("#feedbackEmail").val();
		var message=$("#feedbackTextarea").val();
		
		if(name=="" || email=="" || message=="" || name=="name..." || email=="email..." || message=="message...")
		{
			alert("Fill all the blanks!");
			return;
		}
		
		$("#feedbackForm p:last").css("background","url('/img/ajax1.gif') 9px center no-repeat");
		
		$.post("/ajax/Utility/feedback/",{name:name,email:email,message:message},function(data) {
			$("#feedbackForm p").remove();
			if(data.error==0)
			{
				$("#feedbackForm").append("<div class='success'>Your feedback has been saved. Thanks!</div>");
			}
			else {
				alert(data.errorMessage);
			}
		},'json');
	},
	
	close:function()
	{
		Pop.close();
	}
};


var map;
var Location = {
	map:null,
	
	close: function(){
		$("#mapContainer").remove();
	},
	
	save: function(){
		var latlng=marker.getLatLng();
		var lat=latlng.lat();
		var lng=latlng.lng();
		
		$("#publishTargets .publishLat").val(lat);
		$("#publishTargets .publishLng").val(lng);
		
		var img="<img src='http://maps.google.com/maps/api/staticmap?zoom=9&size=90x90&maptype=roadmap"+
					"&markers=color:blue|"+lat+","+lng+"&sensor=false' />";
		
		var img2="<img src='http://maps.google.com/maps/api/staticmap?&zoom=10&size=160x110&maptype=roadmap"+
		"&markers=color:blue|"+lat+","+lng+"&sensor=false' />";
		
		$("#publishItems").append($(img2));
		//$("#publishItems").append($(img));
		
		$("#feedContent").val($("#feedContent").val()+" I am at "+$("#mapContainer .address span").html());
		$("#feedContent").trigger("keyup");
		$("#publishItems").slideDown();
		
		Location.close();
	},
	
	show:function(){
		
		if($("#mapContainer").length>0)
		{
			Location.close();
			return;
		}
		var pos=$("#locationIcon").offset();
		var posX=pos.left-46;
		var posY=pos.top+35;
		
		var lat=google.loader.ClientLocation.latitude;
		var lon=google.loader.ClientLocation.longitude;
		
		var mapHtml="<div id='mapContainer'>"+
						"<div class='address'>"+
							"<span></span>"+
							"<button class='grayButtonSmall' onclick='Location.save();'>Save</button>"+
						"</div>"+
						"<div class='box'>"+
						"<form method='post' action='/' onsubmit='Location.search();return false;'>"+
							"<input type='text' id='mapSearchInput'/>"+
							"<button onclick='Location.search();return false;'><img src='/img/icons/search_24.png' alt='Search'/></button>"+
						"</form>"+
						"</div>"+
						"<img src='/img/close2.png' onclick='Location.close()' class='close' />"+
						"<div id='map'></div>"+
					"</div>";
		$("body").append($(mapHtml));
		$("#mapContainer").css({"top":posY,"left":posX});
	    
		if (GBrowserIsCompatible()) {
	         map = new GMap2(document.getElementById("map"));
	         
	         map.setCenter(new GLatLng(lat, lon), 10);
	         map.setUIToDefault();
	         map.enableRotation();
	         
	         $("#mapContainer .box input").focus();
	        
	        var isMarker=false;
	 	    GEvent.addListener(map, "click", function(overlay, latlng) {
	 	    	
	 	    	Location.getAddress(latlng);
	 	    	if(isMarker)
		    	{
		    		marker.setLatLng(latlng);
		    		return;
		    	}
	 	    	
		    	isMarker=true;
	 	    	if (latlng) {
		            marker = new GMarker(latlng, {draggable:true});
		            GEvent.addListener(marker, "click", function() {
		            	//var html="hello baby!";
		            	//marker.openInfoWindow(html);
		            });
		            map.addOverlay(marker);
		          }
		        });
	    	}
	},
		
	getAddress:function(latlng) {
			geocoder = new GClientGeocoder();
			if (latlng != null) {
				geocoder.getLocations(latlng, Location.showAddress);
			}
	},
		 
	showAddress:function(response) {
	      if (!response || response.Status.code != 200) {
	        alert("Status Code:" + response.Status.code);
	      } else {
	        place = response.Placemark[0];
	        $("#mapContainer .address span").html(place.address);
	        $("#mapContainer .address").slideDown();
	      }
	},
	
	search:function() {
		var address=$("#mapSearchInput").val();
		geocoder = new GClientGeocoder();
		if (geocoder) {
			geocoder.getLatLng(address,function(point) {
		      if (!point) {
		        alert(address + " not found");
		      } else {
		        map.setCenter(point, 13);
		        var marker2 = new GMarker(point);
		        map.addOverlay(marker2);
		        //marker.openInfoWindowHtml(address);
		      }
		    });
		}
	}
	
};

var Archive = {
		
	remove:function(obj){
		var button=obj;
		var feed=$(button).parents(".stream");
		
		var arr=feed.attr("id").split("-");
		var id=arr[1];
		
		var type="";
		if(feed.hasClass("fb_feed"))
			type="fb_feed";
		else if(feed.hasClass("twitter_feed"))
			type="twitter_feed";
		else
			return;
		showFeedAjaxLoader(id);
		$.post("/ajax/archive/remove/"+id+"/"+type,function(data) {
			removeFeedAjaxLoader(id);
			if(data.error==0)
			{
				feed.slideUp(400,function(){
					$(this).remove();
					if($("#inside .stream").length==0)
					{
						$("<div class='info'>Your archive is empty. You can add feeds to your archive by hovering your mouse on a feed, then clicking the button 'Archive'.</div>").insertAfter(".feedLine");
					}
				});
			}
			else
				alert("Error: "+data.errorMessage);
			
		},'json');
	},
	
	save : function(obj){
		var button=obj;
		var feed=$(button).parents(".stream");
		
		var arr=feed.attr("id").split("-");
		var id=arr[1];
		
		if(feed.hasClass("fb_feed"))
			Archive.saveFbFeed(feed,button,id);
		else if(feed.hasClass("twitter_feed"))
			Archive.saveTwitterFeed(feed,button,id);
		else
			return;
	},

	saveFbFeed:function(feed,button,id) {
		showFeedAjaxLoader(id);
		$.post("/ajax/archive/save_fb_feed/"+id,function(data) {
			removeFeedAjaxLoader(id);
			if(data.error==0)
			{
				$(button).remove();
				iBox=new InfoBox(feed,3);
				iBox.show("Archived.",$(feed).width()-155,4);
				var isArchived = $(feed).find(".isArchived")[0];
				$(isArchived).val(1);
			}
			else if(data.error==-1)
			{
				$(button).remove();
				iBox=new InfoBox(feed,3);
				iBox.show("Feed already exists in your archive.",$(feed).width()-155,4);
			}
			else
				alert("An error has occured!");
		},'json');
	},
	
	saveTwitterFeed:function(feed,button,id) {
		var message=		feed.find(".rawMessage").html();
		var name=			feed.find(".name").html();
		var screenName=		feed.find(".screenName").html();
		var picSquare=		feed.find(".picSquare").html();
		var createdTime=	feed.find(".createdTime").html();
		
		//alert(message+" - "+picSquare);
		//alert(name+" - "+screenName+" - "+createdTime);
		showFeedAjaxLoader(id);
		$.post("/ajax/archive/save_twitter_feed/"+id,{message:message,name:name,screen_name:screenName,pic_square:picSquare,created_time:createdTime},function(data) {
			removeFeedAjaxLoader(id);
			if(data.error==0)
			{
				$(button).remove();
				feed.unbind('mouseenter mouseleave');
				iBox=new InfoBox(feed,3);
				iBox.show("Archived.",$(feed).width()-155,4);
				var isArchived = $(feed).find(".isArchived")[0];
				$(isArchived).val(1);
			}
			else if(data.error==-1)
			{
				$(button).remove();
				feed.unbind('mouseenter mouseleave');
				iBox=new InfoBox(feed,3);
				iBox.show("Feed already exists in your archive.",$(feed).width()-155,4);
			}
			else
				alert("An error has occured!");
		},'json');
	}
};

var More = {
	
	twitter: function(obj)
	{
		var columnId = $(obj).parents(".column").find(".columnId").html();
		
		var id=$("#column-"+columnId+" .twitter_feed:last").attr("id");
		var arr=id.split("-");
		var maxId=arr[1];
		
		$("#column-"+columnId+" .more .loading").show();
		
		$.post('/ajax/Update/twitter/'+maxId+'/'+columnId+'/after', function(data) {
			if(data!=0)
			{
				$("#column-"+columnId+" .endLine:last").css({"border-top":"2px solid #9EC9D6","margin-top":"10px"});
				$(data).insertAfter("#column-"+columnId+" .endLine:last");
				$("#column-"+columnId+" .twitter_feed:hidden").show();
				$("#column-"+columnId+" .more .loading").hide();
			}
			else
				$("#column-"+columnId+" .more .loading").hide();
		});
	},
		
	facebook: function(obj)
	{
		var columnId = $(obj).parents(".column").find(".columnId").html();
		
		var time=$("#column-"+columnId+" .fb_feed:last .createdTime").html();
		$("#column-"+columnId+" .more .loading").show();
		$.post('/ajax/Update/facebook/'+time+'/'+columnId+'/until', function(data) {
			if(data!=0)
			{
				$("#column-"+columnId+" .endLine:last").css({"border-top":"2px solid #9EC9D6","margin-top":"10px"});
				$(data).insertAfter("#column-"+columnId+" .endLine:last");
				$("#column-"+columnId+" .fb_feed:hidden").show();
				$("#column-"+columnId+" .more .loading").hide();
			}
			else {
				$("#column-"+columnId+" .more .loading").hide();
				Message.show("There is no feed to show!");
			}
		});
	},
	
	merged: function()
	{
		var id=$(".twitter_feed:last").attr("id");
		var arr=id.split("-");
		var maxId=arr[1];
		
		var time=$(".fb_feed:last .createdTime").html();
		
		$(".streamContainer .more .loading").show();
		$.post('/ajax/Update/merged/'+time+'/'+maxId, function(data) {
			if(data!=0)
			{
				$(".streamContainer .endLine:last").css("border-top","2px solid #9EC9D6");
				$(data).insertAfter(".streamContainer .endLine:last");
			}
			else
				$(".col_"+col+" .more .loading").hide();
		});
	}
};

var Update = {
		
	first:function(){
		$(".column").each(function(){	
			var columnId = $(this).find(".columnId").html();
			var columnType = $(this).find(".columnType").html();
			var columnSource = $(this).find(".columnSource").html();
			
			if(columnType=="news")
			{
				var $block = $("#column-"+columnId).find(".block");
				var feed = new google.feeds.Feed(columnSource);
				feed.setNumEntries(14);
				feed.load(function(result) {
					if (!result.error)
					{
						$("#column-"+columnId).find("h3").find("span").html(result.feed.title);
						$block.html("");
						$block.hide();
						for (var i = 0; i < result.feed.entries.length; i++) {
							var entry = result.feed.entries[i];	
							
							var re = /(src)=("[^"]*")/i;
							var content = entry.content;
							var img = re.exec(content)[0].toString();
							img = img.substring(5, img.length-1);
							
							var imgTag = "<img src='"+img+"' class='thumb' alt='Thumb' />";
							
							var title="<p class='title'><a target='_blank' href='"+entry.link+"'>"+entry.title+"</a></p>";
							var desc="<p class='desc'>"+imgTag+entry.contentSnippet+"<br class='clear'/></p>";
							var f=$("<div class='rssFeed'>"+title+desc+"</div>");
							
							$block.append(f);
						}
						$block.fadeIn();
					}
					else {
						alert(result.error.code);
						$block.html("<div class='failure'>An error has occured. Check your URL.</div>");
					}
				});
			}
			else {
				$.post('/ajax/Update/load/'+columnId, function(data) {
					var $block = $("#column-"+columnId).find(".block");
					$block.hide();
					$block.html(data);
					$block.fadeIn();
				});
			}
		});
	},
	
	general: function()
	{
		$(".column").each(function(){
			
			var columnId = $(this).find(".columnId").html();
			var columnType = $(this).find(".columnType").html();
			var columnSource = $(this).find(".columnSource").html();
			
			if(columnType == "facebook-home")
			{
				Update.facebook(columnId);
			}
			else if(columnType == "twitter-home" || columnType == "twitter-mentions" || columnType == "twitter-search") {
				Update.twitter(columnId);
			}
		});
	},
	
	twitter: function(columnId)
	{
		if($("#column-"+columnId+" .twitter_feed:first").length==0)
			return;
		
		var id = $("#column-"+columnId+" .twitter_feed:first").attr("id");
		var arr = id.split("-");
		var sinceId = arr[1];
		
		$.post('/ajax/Update/twitter/'+sinceId+'/'+columnId, function(data) {
			if(data!=0)
			{
				$(data).insertAfter("#column-"+columnId+" .feedLine");
				$("#column-"+columnId+" .twitter_feed:hidden").fadeIn();
				playBeep();
			}
		});
	},
	
	facebook: function(columnId)
	{
		if($("#column-"+columnId+" .fb_feed:first .createdTime").length==0)
			return;
		
		var sinceTime = $("#column-"+columnId+" .fb_feed:first .createdTime").html();
		
		$.post('/ajax/Update/facebook/'+sinceTime+'/'+columnId+'/since', function(data) {
			if(data!=0)
			{
				$(data).insertAfter("#column-"+columnId+" .feedLine");
				$("#column-"+columnId+" .fb_feed:hidden").fadeIn();
				playBeep();
			}
		});
	}
};

function resetPublishTextarea(e)
{
	var area=$("#publisherContainer textarea");
	
	var char="";
	if(e.keyCode==13)
		char="<br/>";
	else
		char=String.fromCharCode(e.keyCode);
	
	var val=area.val()+char+"i";
	
	val=val.replace(/\n/g, "<br />");
	$("#publishContentHidden").html(val);
	var h=$("#publishContentHidden").height()+2;
	
	if(h>150)
	{
		area.css("overflow-y","visible");
		return;
	}
	if(h>31)
	{
		area.css("overflow-y","hidden");
		area.css("height",h);
	}
	else {
		area.css("overflow-y","hidden");
		area.css("height",31);
	}
}

function textareaControl(e)
{
	var val=$(this).val();
	var l=val.length+1;
	
	var def=$(this).width()/(8.5);
	
	if(l>def*6)
		$(this).css("height","10.5em");
	else if(l>def*5)
		$(this).css("height","9em");
	else if(l>def*4)
		$(this).css("height","7.5em");
	else if(l>def*3)
		$(this).css("height","6em");
	else if(l>def*2)
		$(this).css("height","4.5em");
	else
		$(this).css("height","3em");
}

var Like = {
	add: function(obj)
	{
		var $stream = $(obj).parents(".fb_feed");
		var postId = $stream.find(".postId").val();
		
		showFeedAjaxLoader(postId);
		
		var feed=$("#feed-"+postId);
		var url="";
		if(feed.hasClass("fb_feed"))
			url='/ajax/Facebook/add_like/'+postId;
		else {
			alert("Unknown feed type!");
			return false;
		}
		
		$.get(url,function(data) {
			removeFeedAjaxLoader(postId);
			if(data==1)
			{
				Message.show("Liked!",0);
			}
			else {
				alert("Can't like this post because there is an error related with Facebook.");
			}
		});
	},
	
	show:function(obj)
	{
		var $stream = $(obj).parents(".fb_feed");
		var postId = $stream.find(".postId").val();
		
		var likeCount = $stream.find(".likeCount").html();
		likeCount = parseInt(likeCount);
		
		if(likeCount==0)
		{
			Message.show("No likes!",0);
		}
		else if(likeCount > 20)
		{
			var likeLink = $stream.find(".actionLikeLink").html();
			window.open(likeLink,'_newtab');
		}
		else {
			Pop.show("Likes");
			Pop.loading();
			$.get("/ajax/Facebook/get_likes/"+postId,function(data) {
				Pop.insert(data);
			});
		}
	},
	
	remove: function(postId)
	{
		showFeedAjaxLoader(postId);
		
		var feed=$("#feed-"+postId);
		var url="";
		if(feed.hasClass("fb_feed"))
			url='/ajax/Facebook/remove_like/'+postId;
		else {
			alert("Unknown feed type!");
			return false;
		}
		
		$.get(url,function(data) {
			alert(data);
			if(data.error==0)
			{
				$("#feed-"+postId+" .likeLink").unbind("click").click(function(){ Like.add(postId); return false;}).html(data.text.link);
				if($("#feed-"+postId+" .likeGeneralContainer .likeContainer a").length==1)
					$("#feed-"+postId+" .likeGeneralContainer").html("");
				else
					$("#feed-"+postId+" .userLike").html("");
			}
			removeFeedAjaxLoader(postId);
		});
	}
};

var Comment = {

	input: function (obj) {
		var stream = $(obj).parents(".fb_feed");
		var postId = stream.find(".postId").val();
		
		if($("#feed-"+postId+" .rightSide .commentInput").length > 0)
		{
			Comment.cancel(postId);
			return false;
		}
		var t=$("<textarea></textarea>").attr("name","commentInput").keypress(textareaControl).click(textareaControl);
		
		var c=$("<div class='commentInput'></div>").append(t);
		
		var sendButton=$("<button class='grayButton' type='button'>Send</button>").click(function(){
			Comment.send(postId);
		});
		
		var cancelButton=$("<button class='grayButton red' type='button'>Cancel</button>").bind('click', function(){
			Comment.cancel(postId);
		});
		
		$(c).append(sendButton).append(cancelButton);
		
		$("#feed-"+postId+" .rightSide").append($(c));
		t.focus();
	},
	
	show:function(obj){
		var $stream = $(obj).parents(".fb_feed");
		var postId = $stream.find(".postId").val();
		var commentCount = parseInt( $stream.find(".commentCount").html() );
		var commentCountLoaded = parseInt( $stream.find(".commentCountLoaded").html() );
		
		if(commentCount  == 0)
		{
			Message.show("No comments found!",0);
			return;
		}
		
		if(commentCount > commentCountLoaded)
		{
			if(commentCount < 20)
			{
				Comment.get(postId);
			}
			else {
				var commentLink = $stream.find(".actionCommentLink").html();
				window.open(commentLink,'_newtab');
			}
		}
		else
			$stream.find(".comments").slideDown();
	},
	
	cancel: function(postId) {
		$("#feed-"+postId+" .commentInput").remove();
	},
	
	send: function(postId) {
		showFeedAjaxLoader(postId);
		var feed=$("#feed-"+postId);
		var comment=$("#feed-"+postId+" .commentInput textarea").val();
		
		var url="";
		if(feed.hasClass("fb_feed"))
			url="/ajax/Facebook/add_comment/"+postId;
		else {
			alert("Unknown feed type!");
			return false;
		}

		$.post(url, {comment:encodeURI(comment)}, function(data) {
			if(data==1)
			{
				Comment.cancel(postId);
				Comment.get(postId);
			}
			else {
				alert("An error has occured!");
			}
		});
	},
	
	get: function(postId) {
		
		var $feed=$("#feed-"+postId);
		var url="";
		if($feed.hasClass("fb_feed"))
			url='/ajax/Facebook/get_comments/'+postId;
		else {
			alert("Unknown feed type!");
			return false;
		}
		
		showFeedAjaxLoader(postId);
		$.get(url, function(data) {
			removeFeedAjaxLoader(postId);
			if(data == 0)
			{
				Message.show("No comments found!",0);
				return;
			}
			var $comments = $feed.find(".comments");
			$comments.html(data);
			if($comments.is(":hidden"))
				$comments.slideDown();
		});
	}
};
