function AddProfileStatusUpdate(Sender, ContainerID)
{
	AddNewsStatusUpdate(Sender, ContainerID, 'personal', function() {GetCurrentStatusUpdate()});
}

function AddNewsStatusUpdate(Sender, ContainerID, NewsTypeVal, Callback)
{
    var MaxLength= 412;
    var MaxUrlLength= 3000;
	var Output = $("#statusupdates");
	var Input = $(".statusupdateinput");
	var Container = $('#'+ContainerID);
	var ResponseContainer = "span#ajaxresponse";
	var DefaultTextVal = $('#defaultstatustext').val();
	var LoadingImage = $("#statusupdateloading");
	
	var LinkForm= $("#share-box-contents");
	var LinkTextbox= $(".share-link");
	var LinkText= $.trim(LinkTextbox.val());
	var LinkCloseWin= $('a#canceler');
	
	var MessageVal = jQuery.trim(Input.eq(1).val());
	var bLinkEntered= (LinkForm.css('display') != 'none' && LinkText.length > 0);
	
	if (MessageVal == DefaultTextVal)
	    MessageVal= '';
	
	if (MessageVal.length > MaxLength)
	{
	    var updateOverflow= MessageVal.length - MaxLength;
	    var overflowMessage= "Your update is "+ updateOverflow +" characters too long. Click OK to truncate, Cancel to edit.";
	    
	    if (!confirm(overflowMessage))
	        return;
	}	
	else if (!bLinkEntered && MessageVal.length == 0)
	{
	    return;
	}
	
	var args= { message: MessageVal, newstype:NewsTypeVal };
	    
	if (bLinkEntered)
	{
	    if (LinkText.length > MaxUrlLength)
	    {
	        alert("The url is longer than the maximum number of characters. Please try again.");
	        return;
	    }
	    
	    args.url= LinkText;
	} 
	    
    $(Sender).hide();
	LoadingImage.show();
	
	$.post("statusupdate_news_add.aspx", args, function(response)
	{            
        if (Callback!=null)
            Callback();
            
        var $response= $(response);
         
        if (!$response.is(ResponseContainer))
            return;
                    
        if ($response.find('span#error-message').length > 0)
        {
            alert($response.find('span#error-message').text());
            OnComplete();
            return;
        }

        var row = "<tr class=\"row-1\"><td class=\"cell-3\" id=\"statusupdate-item\"></td></tr>";
        Output.prepend(row);
        
        var display = $response;
        var plc = Output.find("#statusupdate-item").eq(0);
        
        Output.find('.thumb-block').hide();
        
        display.hide();
        plc.html(display);
        
        Container.show();        
        display.slideDown('slow', OnComplete);        
        
        Output.find('.commentinput').eq(0).growfield({max: 175});     
        Input.eq(1).val(DefaultTextVal);
        Input.growfield('restart');
        
        LinkTextbox.val('');
        LinkForm.hide();
        LinkCloseWin.hide();
        $("div.prevue").html('');
    }); 
    
    function OnComplete()
    {
        LoadingImage.hide();
        $(Sender).show();
    }
}

function GetCurrentStatusUpdate()
{
    var ResponseContainer = "span#ajaxresponse";
    var Output = $("#statusupdate");
    
    $.post("statusupdates/statusupdate_profile_get.aspx",
        {a: 'a' },

        function(response){
            
            response = jQuery.trim(response);
            
            if (response == "" || $(response).is(ResponseContainer))
            {
                var display = $(response).html();
                Output.html(display);
            }
        }
    ); 
}

function RemoveStatusUpdate( Sender, StatusUpdateIDVal )
{
	if (!confirm('Are you sure you want to remove this status update?'))
	    return;
	
	$.post("statusupdates/statusupdate_remove.aspx",
        { statusupdateid:StatusUpdateIDVal} ,
        function(response){
            $(Sender).closest(".row-1").hide();
            GetCurrentStatusUpdate();
        } 
    );
}

function ClearStatusUpdate( ContainerID )
{
	$.post("statusupdates/statusupdate_clear.aspx",
        { },
            function(response){
                 $("#"+ContainerID).hide();
          }
    );	
}

function SetDefaultStatusText()
{
   var DefaultTextVal = $('#defaultstatustext').val();
   $(".statusupdateinput").val(DefaultTextVal);
}

function OnStatusFocus(txt)
{
    if (txt.value == $('#defaultstatustext').val())
        txt.value='';
}

function OnShareClick()
{
    var $form= $('div#share-box-contents');

    $form.toggle(); 
    $('a#canceler').toggle();
    
    if ($form.css('display') != 'none')
        $(".share-link").focus();        
}

$.fn.showLinkPreview= function()
{
    var $this= $(this);   
    var $preview= $("div.prevue");   
    var prevVal='';
    
    //all the events autosuggest handles
    $this.bind('mouseover',function(e) { CheckVal(true); return true; });
    $this.bind('mouseleave', function(e) { CheckVal(true); return true; });
    $this.bind('keyup', function(e) { CheckVal(true); return true; });
    $this.bind('focus', function(e) { CheckVal(true); return true; });
    $this.bind('blur', function(e) { CheckVal(false); return true; });
            
    function CheckVal(comparePrevious)
    {
        var currentVal= $this.val();  
        
        if (currentVal.length == 0 && prevVal.length > 0 && $preview.html().length > 0)
        {
            $preview.html('');
        }
        else if (!comparePrevious || currentVal.length >= (prevVal.length + 2))
        {
            OnSharePaste();
        }        
           
        prevVal=currentVal;
        return true;
    }
    
    function OnSharePaste()
    {
	    var ResponseContainer = "span#ajaxresponse";
        var val= $.trim($(".share-link").val());
        
        if (val.length == 0)
            return;
            
        $.post("statusupdate_preview_get.aspx", { url: val },  function(response)
        {     
            var $response= $(response);
        
            if (!$response.is(ResponseContainer))
                return;
                
            $("div.prevue").html($response.html());
        });
    }
};

$(function() { 
    SetDefaultStatusText();
    $('.statusupdateinput').growfield({max: 175});
    $(".share-link").showLinkPreview();
});
