//Includes Required: 
//  jquery-1.3.2.js
//  jquery.pager.js
$.extend(MarketWatch.Community.CommenterGrid, function() {
    var _isInitialized = false;
    var _getCommentersPageUrl = "";
    var _pageCount = 0;
    var _storyUri = "";
    var _currentPageNumber = 1;

    var _initializeCommenterWidget = function(getCommentersPageUrl, storyUri, pageCount) {
        //only allow initialization once
        if (_isInitialized === false) {   
        	_getCommentersPageUrl = getCommentersPageUrl;
        	_storyUri = storyUri;
            _pageCount = pageCount;    
            
            //create the pager
            $("#commenter-pager").pager({ pagenumber: 1, pagecount: _pageCount, buttonClickCallback: _pagerCallback });
            
            //show pager on click
            $('.commenter-sum .more').click(function(e) {
				e.preventDefault();				
				_ShowPager();        	
        	});   
        	   
        	_registerAddComment();
			_registerMemberLinks();

			_isInitialized = true;

			FB.init("7f4942e81bfe2b2b8cf5113064f5c227");
        }
    }
    
    var _registerMemberLinks = function() {
    	//unbind any old events, then bind all
    	$('#commenter-sum a.name').unbind('click');
		$('#commenter-sum a.name').click(function(e) {
			e.preventDefault();
			var name = $(this).attr('mname');
			MarketWatch.Community.FilteredCommentTabs.GetMemberTab(name);
			$.mwScrollTo('#commenter-sum')
		});	    
    }
    
    var _registerAddComment = function() {
    	//hook up "add comment" link
		$('#commenter-sum a.add').click(function(e) {
			e.preventDefault();
			$('#commentBody').focus();
		});	
    }

    var _ShowPager = function() {    	
    	//show and slide pager
    	$('#bottom-half-page').slideDown('slow', function() {	
    		$('#others-count').hide();
			$('#commenter-pager').show();
    	});	    	
    };
    
    var _unhidePageOne = function() {
    	var currentDisplay = $('#maincontent #commenter-sum').css('display');
    	
    	//only un-hide the widget if it's currently hidden (display:none)
    	if(currentDisplay == 'none') {
    		_getCommentersPage(1);
    	
    		$('#maincontent #commenter-sum').show();
    	}
    }
    
    var _pagerCallback = function(pageClickedNumber) {
    	_getCommentersPage(pageClickedNumber);
    		
    };
    
    var _getCommentersPage = function(pageNumber) {
    	_currentPageNumber = pageNumber; //set current page state
    	
		var pageParams = { storyUri: _storyUri, pageNumber: pageNumber, pageCount: _pageCount };
		_getPartialView(_getCommentersPageUrl, pageParams, $('#commenter-page'), _getCommentersPageCallBack); //get the new stuff
	};

	var _getCommentersPageCallBack = function(contentPlaceholder, partialView) {
		contentPlaceholder.html(partialView);

		//update pager values after we've update the page content
    	$("#commenter-pager").pager({ pagenumber: _currentPageNumber, pagecount: _pageCount, buttonClickCallback: _pagerCallback });
    	
    	//register events for new page
    	_registerMemberLinks();
    	_registerAddComment();
	};

	var _getPartialView = function(url, pageParams, contentPlaceholder, callback) {
		//jquery ajax GET request
		$.get(
		url,
		pageParams,
		function(partialView) {
			callback(contentPlaceholder, partialView);
		});
    };

    return {
        InitializeCommenterWidget: _initializeCommenterWidget,
        UnhidePageOne: _unhidePageOne
    }

} ());
