﻿mt.thinkshare = {
    mode: null,
    trades: new Array(),
    streams: new Array(),
    newIdeasCount: 0,
    newTradesCount: 0,
    tradesUpdater: null,
    ideasUpdater: null,
    ideasRepo: new mt.repository(),
    tradesRepo: new mt.repository(),
    streamUpdateInt: 240000,
    tradeUpdateInt: 180000,
    commentUpdateInt: 210000,
    maxResultsCount: 25,
    searchTerm: "",
    ideaPageCount: 0,
    tradePageCount: 0,
    tradesList: null,
    ideasList: null,
    searchDefaultText: 'Search for keywords or tickers.',
    ideaDefaultText: 'What are you thinking?',
    start: function(){
        if(!this.tradesUpdater && !this.ideasUpdater){
            this.tradesUpdater = new mt.updater(mt.thinkshare.getNewTradesCount, mt.thinkshare.tradeUpdateInt);
            this.tradesUpdater.start();
            this.ideasUpdater = new mt.updater(mt.thinkshare.getNewIdeasCount, mt.thinkshare.streamUpdateInt);
            this.ideasUpdater.start();
            this.commentUpdater = new mt.updater(mt.thinkshare.getCommentCounts, mt.thinkshare.commentUpdateInt);
            this.commentUpdater.start();
        }
    },
    stop: function(){
        if(this.tradesUpdater){
            this.tradesUpdater.stop();
            delete this.tradesUpdater;
        }
        if(this.ideasUpdater){
            this.ideasUpdater.stop();
            delete this.ideasUpdater;
        }
    },
    turnOffWelcome: function(e){
        var check = $(e).attr('checked');
        var data = '{turnOff:' + check + '}';

        mt.ajax(
            'users.asmx/SetShowWelcome',
            data
        );
    },
    initialize: function(){
        mt.thinkshare.tradesList = $('div#TradesList');
        mt.thinkshare.ideasList = $('div#IdeasList');
        mt.thinkshare.ideasPageOneLink = $('a#IdeasPageOneLink');
        mt.thinkshare.tradesPageOneLink = $('a#TradesPageOneLink');
        mt.thinkshare.ideasPageLabel = $('span#IdeasPageLabel');
        mt.thinkshare.tradesPageLabel = $('span#TradesPageLabel');

        var searchInput=$('input#InputSearch');
        mt.events.defaultText(searchInput, this.searchDefaultText);

        if(mt.thinkshare.searchTerm){
            searchInput.focus();
            searchInput.val(mt.thinkshare.searchTerm);
        }

        var tradeInput=$('textarea#TradeInput');
        mt.events.defaultText(tradeInput, this.ideaDefaultText);
        mt.events.characterCount(tradeInput, $('div#IdeaCharCount'), 140);

        var check = mt.util.parseBool(mt.thinkshare.welcomeOff);
        var showTwitterExport = mt.util.parseBool(mt.thinkshare.isExportingToTwitter);
        if (showTwitterExport) {
            mt.thinkshare.twitterExport();
        }
        if (!check && !mt.session.isGuest) {
            var shadowBox = new mt.ui.shadowBox('mytrade', 'destroy', 550);
            shadowBox.initialize();

            var content = $(
                '<div class="TextBlock"><h1>Welcome to mytrade real trade sharing</h1><br /><br />' +
                '<p><a href="http://mytrade.tumblr.com/post/92244893/sharetrades" target="_blank" style="font-weight:bold;">Show me how this works</a></p><br /><br />' +
                '<div><input type="checkbox" onclick="mt.thinkshare.turnOffWelcome(this)" /> Don\'t show me this message again.</div>' +
                '</div>'
            );

            shadowBox.addContent(content);
            shadowBox.show();
        }

        var radio = $('input[name="RadioFilter"]');
        radio.click(function(){
            var mode = $(this).val();
            mt.thinkshare.setMode(mode, false);
        });

        mt.thinkshare.setMode(mt.thinkshare.mode, true);
    },
    getSearchTerm: function(){
        var term = $('input#InputSearch').val();
        if(term == this.searchDefaultText)
            return "";
        else
            return term;
    },
    getIdea: function(){
        var idea = $('textarea#TradeInput').val();
        if(idea == this.ideaDefaultText)
            return "";
        else
            return idea;
    },
    getFilter: function(){
        return $("input[@name='RadioFilter']:checked").val();
    }
};

mt.thinkshare.error = function(msg){};

mt.thinkshare.setMode = function(mode, isLoad){
    var filter = mode;
    var data = null;
    if(!filter)
        filter = mt.thinkshare.getFilter();

    if(filter == "Everyone"){
        $('input#RadioEveryone').attr('checked', 'checked');
        mt.thinkshare.everyone.initialize();
        data = '{mode:"' + filter + '"}';
    }
    else if(filter == "IFollow"){
        if (mt.session.isGuest){
            alert("You aren't following anyone because you are not logged in. Please log in and try again.");
            $('input#RadioEveryone').attr('checked', 'checked');

        }
        else{
            $('input#RadioIFollow').attr('checked', 'checked');
            data = '{mode:"' + filter + '"}';
            mt.thinkshare.follow.initialize();
        }
    }
    if(!isLoad && !mt.session.isGuest){
        mt.ajax(
            'users.asmx/SetThinkShareMode',
            data,
            null,
            mt.thinkshare.error
        );
    }
};

mt.thinkshare.everyone={
    getStream:'streams.asmx/GetStreams',
    getStreamOld:'streams.asmx/GetPrevious',
    getStreamNext:'streams.asmx/GetNext',
    getStreamNew:'streams.asmx/GetUpdates',
    getStreamNewCount:'streams.asmx/GetUpdatesCount',
    getTrade:'trades.asmx/GetTrades',
    getTradeOld:'trades.asmx/GetPrevious',
    getTradeNext:'trades.asmx/GetNext',
    getTradeNew:'trades.asmx/GetUpdates',
    getTradeNewCount:'trades.asmx/GetUpdatesCount',
    initialize:function(){
        if(mt.thinkshare.mode)
            mt.thinkshare.stop();

        mt.thinkshare.mode=this;
        mt.thinkshare.initializeTradesList();
        mt.thinkshare.initializeIdeasList();
        mt.thinkshare.start();
    }
};

mt.thinkshare.follow={
    getStream:'followingstreams.asmx/GetStreams',
    getStreamOld:'followingstreams.asmx/GetPrevious',
    getStreamNext:'followingstreams.asmx/GetNext',
    getStreamNew:'followingstream.asmx/GetUpdates',
    getStreamNewCount:'followingstreams.asmx/GetUpdatesCount',
    getTrade:'followingtrades.asmx/GetTrades',
    getTradeOld:'followingtrades.asmx/GetPrevious',
    getTradeNext:'followingtrades.asmx/GetNext',
    getTradeNew:'followingtrades.asmx/GetUpdates',
    getTradeNewCount:'followingtrades.asmx/GetUpdatesCount',
    initialize:function(){
        if(mt.thinkshare.mode)
            mt.thinkshare.stop();

        mt.thinkshare.mode=this;
        mt.thinkshare.initializeTradesList();
        mt.thinkshare.initializeIdeasList();
        mt.thinkshare.start();
    }
};

mt.thinkshare.showHelp = function(id){
    $('div#'+id).hide(0);
    var shadowBox = new mt.ui.shadowBox('<h3>Why aren\'t my shared trades in the Trades panel?</h3>', 'destroy', 600);
    shadowBox.initialize();

    var content=$(
        '<div class="TextBlock"><p>ThinkShare only displays trades and ideas of users with completed profiles... ' +
        'click the <a href="../' + mt.session.slashname + '">my page</a> tab to see your trades and ideas, and ' +
        '<a href="../' + mt.session.slashname + '/?settings=true">setup your profile now</a>.</p></div>'
    );

    shadowBox.addContent(content);
    shadowBox.show();
};

mt.thinkshare.twitterExport = function() {
    var inputPanel = $('div.InputBoxRight');
    var exportPanel = $('div#TwitterExportPanel');
    var notFired = true;

    var showExport = function() {
        if (notFired)
            exportPanel.slideDown(150);
    };

    var hideExport = function() {
        exportPanel.slideUp(150);
        $('input#IdeaExportTwitter').attr('checked', false);
        notFired = true;
    };

    inputPanel.bind('change keyup', showExport);
    $('input#SubmitButton').click(hideExport);
};

mt.thinkshare.showImagePopup = function(title, url, comment) {
    var shadowBox = new mt.ui.shadowBox(unescape(title), 'destroy', 600);
    shadowBox.initialize();

    var content = $('<img class="ImagePopupImage"/>')
        .attr('src', unescape(url));

    shadowBox.addContent(content);

    if (comment) {
        var text = $('<p class="ImagePopupText"></p>')
        .html('"' + comment + '"');
        shadowBox.addContent(text);
    }

    shadowBox.show();
};

mt.thinkshare.createNewStream = function(stream) {
    stream.DatePublished = mt.util.parseEpochDate(stream.DatePublished);
    var postUrl = '../' + stream.User.SlashName + '/?postid=' + stream.StreamID;
    var userUrl = '../' + stream.User.SlashName;
    var userImage = mt.imageUploads + stream.User.Photo;

    var s = $('<div class="IdeaItem"></div>');
    s.append($('<a href="' + userUrl + '"><img class="IdeaItemImage" src="' + userImage + '" /></a>'));

    if (stream.SourceID == 1) {
        var link = $('<a></a>')
        link.attr('href', postUrl);
        link.html(unescape(stream.Title));

        var title = $('<div class="IdeaItemTitle"></div>')
        //title.html(unescape(stream.Title));
        title.append(link);
        s.append(title);
        stream.Body = '';
    }
    else if (stream.SourceID == 5) {
        var link = $('<a target="_blank"></a>')
        link.attr('href', stream.Url);
        link.html(unescape(stream.Title));

        var title = $('<div class="IdeaItemTitle"></div>')
        title.append(link);
        s.append(title);
        stream.Body = '';
    }
    else if (stream.SourceID == 20) {
        var link = $('<a></a>')
        link.attr('href', postUrl);
        //link.html('Chart on ' + unescape(stream.Tags) + ': ' + unescape(stream.Title));
        link.html(unescape(stream.Title));

        var title = $('<div class="IdeaItemTitle"></div>')
        title.append(link);
        s.append(title);

        var streamBody = stream.Body;
        stream.Body = mt.util.truncateText(stream.Body, 70);

        var actionLink = $('<a href="javascript:">View Chart</a>')
            .click(function() {
                mt.thinkshare.showImagePopup('Chart on ' + stream.Tags, stream.Url, streamBody);
            });
    }

    var message = unescape(stream.Body);
    //message = mt.util.replaceLinks(message);

    var searchTerm = mt.thinkshare.searchTerm;
    if (searchTerm) {
        message = mt.events.boldKeywords(message, searchTerm);
    }

    var text = $('<div class="IdeaItemBody"></div>').html(message);
    //text.find('a').attr('target', '_blank');
    s.append(text);

    if (actionLink) {
        text.append('&nbsp;');
        text.append(actionLink);
    }

    s.append(mt.ui.clear());

    var count = (stream.CommentCount > 0 ? stream.CommentCount : 'No');

    var meta = $('<span class="MetaText"></span>');
    meta.html(
        '<a href="' + postUrl + '" class="Right"><span id="CommentCount' + stream.StreamID + '">'
        + count + ' Comment' + (count == 1 ? '' : 's') + '</span></a>'
        + '<a href="' + userUrl + '">' + stream.User.DisplayName + '</a>'
        + '&nbsp;|&nbsp;<span>' + mt.date.shortFormat(stream.DatePublished) + '</span>'
    );

    //var comments = '<a href="' + postUrl + '" class="Right"><span id="CommentCount' + stream.StreamID + '">'
    //    + count + ' Comment' + (count == 1 ? '' : 's') + '</span></a>';

    //s.append(comments);
    s.append(meta);

    return s;
};

mt.thinkshare.createNewTrade = function(trade) {
    trade.DatePublished = mt.util.parseEpochDate(trade.DatePublished);
    var tradeUrl='../t/?t='+trade.TradeID;
    var postUrl = '../' + trade.User.SlashName + '/?postid=' + trade.StreamID;
    var userUrl = '../' + trade.User.SlashName;
    var userImage = mt.imageUploads + trade.User.Photo;

    var t = $('<div class="TradeItem"></div>');
    var imgLink = $('<a></a>');
    imgLink.attr('href', userUrl);

    var img = $('<img />');
    if (trade.User.Photo)
        img.attr('src', userImage);
    else
        img.attr('src', '../images/person.png');
    imgLink.append(img);
    t.append(imgLink);

    imgLink.append(img);
    t.append(imgLink);

    var textDiv = $('<div class="TradeText"></div>');

//    var isStub=/BUY|SELL|FOREX|FUTURE/i
//    if(isStub.test(trade.Title)){
//        t.addClass('Stub');
//        t.click(function(){
//            var _this=$(this);
//            if(_this.hasClass('Stub'))
//                _this.removeClass('Stub');
//            else 
//                _this.addClass('Stub');
//            
//        });

//        var stubName = $('<span class="StubName"></span>');
//        stubName.html('<a href="'+userUrl+'">'+trade.User.DisplayName+'</a>'+'&nbsp;:&nbsp;');
//        textDiv.append(stubName);
//    }

    var text = $('<span></span>');
    text.html(unescape(trade.Title) + ' ');
    textDiv.append(text);

    //if(trade.Body){
        var more = $('<a class="DetailsLink">See trade details...</a>');
        more.attr('href',tradeUrl);
        textDiv.append('<br />');
        textDiv.append(more);
    //}

    t.append(textDiv);

    var copy = mt.util.createCopyIcon(trade.TradeID, trade.TosTrade);
    copy.addClass('CopyIcon').addClass('Right');
    t.append(copy);

    t.append(mt.ui.clear());

    //    var favorite=$('<a href="javascript:" class="Right">Favorite</a>');
    //    favorite.click(function(){
    //        $(this).hide();
    //        var data='{tradeStreamID:'+trade.TradeID+'}';
    //        mt.ajax(
    //            'tradestream.asmx/AddFavoriteTrade',
    //            data
    //        );
    //    });

    var count = (trade.CommentCount > 0 ? trade.CommentCount : 'No');

    var meta = $('<span class="MetaText"></span>');
    meta.html(
        '<a href="' + postUrl + '" class="CommentLink Right"><span id="CommentCount' + trade.StreamID + '">'
        + count + ' Comment' + (count == 1 ? '' : 's') + '</span></a>'
        + '<a href="' + userUrl + '">'+trade.User.DisplayName+'</a>'
        + '&nbsp;|&nbsp;<a class="MetaDate" href="'+postUrl+'">'+mt.date.shortFormat(trade.DatePublished)+'</a>'
        //+'&nbsp;|&nbsp;<a href="'+postUrl+'">'+count+' Comment'+(count == 1 ? '' : 's')+'</a>'
    );
    
    //meta.append(favorite);
    t.append(meta);
    return t;
};

mt.thinkshare.populateStreams = function(response) {
    var response = mt.util.eval(response)
    mt.thinkshare.ideasRepo.load(response.Data);
    $('div#IdeasNewResults').html('').fadeOut('fast')
    mt.thinkshare.ideasList.empty();

    var streams = mt.thinkshare.ideasRepo.current();
    if (streams.length == 0) {
        var noresults = $('<p class="NoResultsFound">No ideas were found matching your criteria.</p>');
        $('a#paginateNextIdeas').css({ visibility: 'hidden' });
        mt.thinkshare.ideasList.append(noresults);
        return;
    }
    if (streams.length < mt.thinkshare.maxResultsCount) {
        $('a#paginateNextIdeas').css({ visibility: 'hidden' });
    }
    else {
        $('a#paginateNextIdeas').css({ visibility: 'visible' });
    }

    for (var i = 0; i < streams.length; i++) {
        var stream = streams[i];
        var s = mt.thinkshare.createNewStream(stream);
        mt.thinkshare.ideasList.append(s);
        $.extend(s, stream);
        mt.thinkshare.streams.push(s);
    }

    mt.thinkshare.start();
    mt.thinkshare.toggleIdeasPageDetail();
    mt.thinkshare.ideasLoader.stop();
};

mt.thinkshare.populateTrades = function(response) {
    response = mt.util.eval(response);
    mt.thinkshare.tradesRepo.load(response.Data);
    $('div#TradesNewResults').html('').fadeOut('fast');

    mt.thinkshare.tradesList.empty();

    var trades = mt.thinkshare.tradesRepo.current();
    if (trades.length == 0) {
        var noresults = $('<p class="NoResultsFound">No trades were found matching your criteria.</p>');
        $('a#paginateNextTrades').css({ visibility: 'hidden' });
        mt.thinkshare.tradesList.append(noresults);
        return;
    }

    if (trades.length < mt.thinkshare.maxResultsCount) {
        $('a#paginateNextTrades').css({ visibility: 'hidden' });
    }
    else {
        $('a#paginateNextTrades').css({ visibility: 'visible' });
    }

    for (var i = 0; i < trades.length; i++) {
        var trade = trades[i];
        var t = mt.thinkshare.createNewTrade(trade);
        mt.thinkshare.tradesList.append(t);
        $.extend(t, trade);
        mt.thinkshare.trades.push(t);
    }

    mt.thinkshare.start();
    mt.thinkshare.toggleTradesPageDetail();
    mt.thinkshare.tradesLoader.stop();
};

mt.thinkshare.updateStreams = function(response) {
    if (mt.thinkshare.ideaPageCount > 1) {
        mt.thinkshare.initializeIdeasList();
    }
    else {
        response = mt.util.eval(response);
        var streams = ((response.Data instanceof Array) ? response.Data : [response.Data]);
        for (var i = streams.length; i > 0; i--) {
            var stream = streams[i-1];

            var s = mt.thinkshare.createNewStream(stream);
            s.hide(0);
            mt.thinkshare.ideasList.prepend(s);
            s.fadeIn('normal');
            $.extend(s, stream);
            mt.thinkshare.streams.pop();
            mt.thinkshare.streams.unshift(s);
        }

        mt.thinkshare.start();
        mt.thinkshare.ideasList.scrollTop(0);
    }
};

mt.thinkshare.updateTrades = function(response) {
    var newTrades;
    if (response) {
        response = mt.util.eval(response);
        newTrades = ((response.Data instanceof Array) ? response.Data : [response.Data]);
    }
    else
        newTrades = [response];

    for (var i = newTrades.length; i > 0; i--) {
        var trade = newTrades[i-1];

        var t = mt.thinkshare.createNewTrade(trade);
        t.hide(0);
        mt.thinkshare.tradesList.prepend(t);
        t.fadeIn('normal');
        $.extend(t, trade);
        mt.thinkshare.trades.pop();
        mt.thinkshare.trades.unshift(t);
    }

    mt.thinkshare.start();
    mt.thinkshare.tradesList.scrollTop(0);
};

mt.thinkshare.getNewIdeasCount = function() {
    var lastID = mt.thinkshare.streams[0].StreamID;

    if (lastID > 0) {
        var data = '{searchTerm:"' + mt.thinkshare.searchTerm + '",streamID:' + lastID + '}';

        var updateNewIdeasCount = function(response) {
            mt.thinkshare.newIdeasCount = 0;
            response = mt.util.eval(response);
            mt.thinkshare.newIdeasCount += response.Data;
            if (mt.thinkshare.newIdeasCount > 0) {
                $('div#IdeasNewResults').html(mt.thinkshare.newIdeasCount + ' New Ideas. <a href=\"javascript:\">Refresh</a>');
                $('div#IdeasNewResults').slideDown('normal');
            }
        };

        mt.ajax(
            mt.thinkshare.mode.getStreamNewCount,
            data,
            updateNewIdeasCount,
            mt.thinkshare.error
        );
    }
};

mt.thinkshare.getNewTradesCount = function() {
    var lastID = mt.thinkshare.trades[0].StreamID;

    if (lastID > 0) {
        var data = '{searchTerm:"' + mt.thinkshare.searchTerm + '",streamID:' + lastID + '}';

        var updateNewTradesCount = function(response) {
            mt.thinkshare.newTradesCount = 0;
            response = mt.util.eval(response);
            mt.thinkshare.newTradesCount += response.Data;
            if (mt.thinkshare.newTradesCount > 0) {
                $('div#TradesNewResults').html(mt.thinkshare.newTradesCount + ' New Trades. <a href=\"javascript:\">Refresh</a>');
                $('div#TradesNewResults').slideDown('normal');
            }
        };

        mt.ajax(
            mt.thinkshare.mode.getTradeNewCount,
            data,
            updateNewTradesCount,
            mt.thinkshare.error
        );
    }
};

mt.thinkshare.getCommentCounts = function() {
    if(mt.thinkshare.streams.length == 0 && mt.thinkshare.trades.length == 0){
        return;
    }

    var lastID = 0;
    var data = '{streamIDs:[';

    for (var i = 0; i < mt.thinkshare.streams.length; i++) {
        data += mt.thinkshare.streams[i].StreamID + ',';
    }

    for (var j = 0; j < mt.thinkshare.trades.length; j++) {
        //if(mt.thinkshare.trades[j].StreamID)
        data += mt.thinkshare.trades[j].StreamID + ',';
    }

    data = data.substr(0, data.length - 1);
    data += ']}';

    var updateCommentCounts = function(response) {
        response = mt.util.eval(response);
        var array = response.Data;
        for (var k = 0; k < array.length; k++) {
            var item = array[k];
            var text = item.CommentCount + ' Comment' + (item.CommentCount == 1 ? '' : 's');
            if (parseInt(item.CommentCount) > 0) {
                var span = $('span#CommentCount' + item.StreamID);
                if (span.text() != text)
                    span.text(text);
            }
        }
    };

    mt.ajax(
        'streams.asmx/GetCommentCounts',
        data,
        updateCommentCounts,
        mt.thinkshare.error
    );
};

mt.thinkshare.getNewIdeas = function() {
    mt.thinkshare.stop();

    var streamID = mt.thinkshare.streams[0].StreamID;

    if (streamID > 0) {
        var data = '{searchTerm:"' + mt.thinkshare.searchTerm + '",streamID:' + streamID + ',count:' + mt.thinkshare.newIdeasCount + '}';

        mt.ajax(
            mt.thinkshare.mode.getStreamNew,
            data,
            mt.thinkshare.updateStreams,
            mt.thinkshare.error
        );
    }
};

mt.thinkshare.getNewTrades = function() {
    mt.thinkshare.stop();

    var streamID = mt.thinkshare.trades[0].StreamID;

    if (streamID > 0) {

        var data = '{searchTerm:"' + mt.thinkshare.searchTerm + '",streamID:' + streamID + ',count:' + mt.thinkshare.newTradesCount + '}';

        mt.ajax(
            mt.thinkshare.mode.getTradeNew,
            data,
            mt.thinkshare.updateTrades,
            mt.thinkshare.error
        );
    }
};

mt.thinkshare.initializeIdeasList = function() {
    mt.thinkshare.ideasList.empty();
    mt.thinkshare.ideasLoader = new mt.ui.loader(mt.thinkshare.ideasList, null, 0);

    $('div#paginateNextIdeas').show();
    $('div#paginatePrevIdeas').hide();
    mt.thinkshare.ideaPageCount = 1;
    mt.thinkshare.streams.length = 0;
    var data = '{userID:' + mt.session.userID + ',searchTerm:"' + mt.thinkshare.searchTerm + '"}';

    mt.ajax(
        mt.thinkshare.mode.getStream,
        data,
        mt.thinkshare.populateStreams,
        mt.thinkshare.error
    );
};

mt.thinkshare.initializeTradesList = function() {
    mt.thinkshare.tradesList.empty();
    mt.thinkshare.tradesLoader = new mt.ui.loader(mt.thinkshare.tradesList, null, 0);

    $('div#paginateNextTrades').show();
    $('div#paginatePrevTrades').hide();
    mt.thinkshare.tradePageCount = 1;
    mt.thinkshare.trades.length = 0;
    var data = '{userID:' + mt.session.userID + ',count:' + mt.thinkshare.maxResultsCount + ',searchTerm:"' + mt.thinkshare.searchTerm + '"}';

    mt.ajax(
        mt.thinkshare.mode.getTrade,
        data,
        mt.thinkshare.populateTrades,
        mt.thinkshare.error
    );
};

mt.thinkshare.updateIdeasResultsClick = function() {
    if (mt.thinkshare.newIdeasCount < mt.thinkshare.maxResultsCount) {
        mt.thinkshare.getNewIdeas();
    }
    else {
        mt.thinkshare.streams.length = 0;
        mt.thinkshare.initializeIdeasList();
    }
    $('div#IdeasNewResults').html('').fadeOut('fase');
};

mt.thinkshare.updateTradesResultsClick = function() {
    if (mt.thinkshare.newTradesCount < mt.thinkshare.maxResultsCount) {
        mt.thinkshare.getNewTrades();
    }
    else {
        mt.thinkshare.trades.length = 0;
        mt.thinkshare.initializeTradesList();
    }
    $('div#TradesNewResults').html('').fadeOut('fast');
};

mt.thinkshare.newIdeas = function() {
    if (mt.session.isGuest) {
        alert('Sorry, but you need to log in before you can make posts.');
        return;
    }

    mt.thinkshare.stop();

    var message = mt.thinkshare.getIdea();

    if (message.length < 1) {
        alert('Please enter an idea before posting.');
        return;
    }
    else
        if (message.length > 140) {
        alert('Notes are limited to 140 characters. To write a longer post, visit the my page tab and click "blog".');
        return;
    }

    var isTrade = mt.util.isTrade(message);
    message = escape(message);

    if (isTrade) {
        alert('Sharing a trade through thinkShare is temporarily disabled. Please use the thinkorswim app instead to share trades.');
    }
    else {
        var twitterExport = false;
        var showTwitterExport = mt.util.parseBool(mt.thinkshare.isExportingToTwitter);
        if (showTwitterExport) {
            twitterExport = $('input#IdeaExportTwitter').attr('checked');
        }
        var data = '{text:"' + message + '",exportToTwitter:' + twitterExport + ',rootStreamID:0}';
        mt.ajax(
           'streams.asmx/AddNote',
            data,
            mt.thinkshare.updateStreams,
            mt.thinkshare.error
        );
    }

    $('textarea#TradeInput').val('').change();
};

mt.thinkshare.filterResults = function() {
    mt.thinkshare.searchTerm = mt.thinkshare.getSearchTerm();
    //    if(mt.thinkshare.searchTerm == mt.thinkshare.searchDefaultText || mt.thinkshare.searchTerm == ""){
    //        alert('You must enter a keyword or ticker to search.');
    //        return;
    //    }
    //    if(!mt.validate.spaces(mt.thinkshare.searchTerm)){
    //        alert("You must search by a keyword or ticker symbol, so don\'t use any spaces.");
    //        return;
    //    }

    mt.thinkshare.stop();
    mt.thinkshare.initializeIdeasList();
    mt.thinkshare.initializeTradesList();
    $('input#ClearResults').fadeIn('normal');
};

mt.thinkshare.clearFilterResults = function() {
    mt.events.defaultText($('input#InputSearch'), mt.thinkshare.searchDefaultText);
    mt.thinkshare.searchTerm = "";
    $('input#ClearResults').fadeOut('normal');
    mt.thinkshare.initializeIdeasList();
    mt.thinkshare.initializeTradesList();
};

mt.thinkshare.toggleIdeasPageDetail = function() {
    mt.thinkshare.ideasPageLabel.text('Page ' + mt.thinkshare.ideaPageCount);

    if (mt.thinkshare.ideaPageCount > 1) {
        $('a#paginatePrevIdeas').show();
        if (mt.thinkshare.ideaPageCount > 2) {
            mt.thinkshare.ideasPageOneLink.show();
        }
    }
    else {
        $('a#paginatePrevIdeas').hide();
        mt.thinkshare.ideasPageOneLink.hide();
    }
};
//here
mt.thinkshare.paginateNextIdeas = function() {
    mt.thinkshare.stop();

    if (mt.thinkshare.ideasRepo.hasMoreForward()) {
        var streams = mt.thinkshare.ideasRepo.forward();
        mt.thinkshare.ideaPageCount++;
    }
    else {
        $('div#paginateNextIdeas').hide();
        alert('There are no more results to display.');
        return;
    }

    mt.thinkshare.streams.length = 0;
    mt.thinkshare.ideasList.empty();

    for (var i = 0; i < streams.length; i++) {
        var stream = streams[i];

        var s = mt.thinkshare.createNewStream(stream);
        mt.thinkshare.ideasList.append(s);
        $.extend(s, stream);
        mt.thinkshare.streams.push(s);
    }

    mt.thinkshare.toggleIdeasPageDetail();
    mt.thinkshare.ideasList.scrollTop(0);
};

mt.thinkshare.paginatePrevIdeas = function() {
    mt.thinkshare.stop();

    if (mt.thinkshare.ideasRepo.hasMoreBackward()) {
        var streams = mt.thinkshare.ideasRepo.backward();
        mt.thinkshare.ideaPageCount--;
    }
    else {
        alert('There are no more results to display.');
        return;
    }

    mt.thinkshare.streams.length = 0;
    mt.thinkshare.ideasList.empty();

    for (var i = 0; i < streams.length; i++) {
        var stream = streams[i];

        var s = mt.thinkshare.createNewStream(stream);
        mt.thinkshare.ideasList.append(s);
        $.extend(s, stream);
        mt.thinkshare.streams.push(s);
    }

    $('div#paginateNextIdeas').show();
    mt.thinkshare.toggleIdeasPageDetail();

    if (mt.thinkshare.ideaPageCount < 2) {
        mt.thinkshare.start();
    }

    mt.thinkshare.ideasList.scrollTop(0);
};

mt.thinkshare.toggleTradesPageDetail = function() {
    mt.thinkshare.tradesPageLabel.text('Page ' + mt.thinkshare.tradePageCount);

    if (mt.thinkshare.tradePageCount > 1) {
        $('a#paginatePrevTrades').show();
        if (mt.thinkshare.tradePageCount > 2) {
            mt.thinkshare.tradesPageOneLink.show();
        }
    }
    else {
        $('a#paginatePrevTrades').hide();
        mt.thinkshare.tradesPageOneLink.hide();
    }
};
//next
mt.thinkshare.paginateNextTrades = function() {
    mt.thinkshare.stop();
    if (mt.thinkshare.tradesRepo.hasMoreForward()) {
        var trades = mt.thinkshare.tradesRepo.forward();
    } else {
        alert('There are no more results to display.');
        return;
    }
    mt.thinkshare.trades.length = 0;
    mt.thinkshare.tradesList.empty();
    for (var i = 0; i < trades.length; i++) {
        var trade = trades[i];
        var t = mt.thinkshare.createNewTrade(trade);
        mt.thinkshare.tradesList.append(t);
        $.extend(t, trade);
        mt.thinkshare.trades.push(t);
    };
    mt.thinkshare.tradePageCount++;
    mt.thinkshare.toggleTradesPageDetail();
    mt.thinkshare.tradesList.scrollTop(0);

};

mt.thinkshare.paginatePrevTrades = function() {
    mt.thinkshare.stop();

    if (mt.thinkshare.tradesRepo.hasMoreBackward()) {
        var trades = mt.thinkshare.tradesRepo.backward();
        mt.thinkshare.trades.length = 0;
        mt.thinkshare.tradesList.empty();
    }
    else {
        alert('There are no more results to display.');
        return;
    }

    for (var i = 0; i < trades.length; i++) {
        var trade = trades[i];
        var t = mt.thinkshare.createNewTrade(trade);
        mt.thinkshare.tradesList.append(t);
        $.extend(t, trade);
        mt.thinkshare.trades.push(t);
    }

    mt.thinkshare.tradePageCount--;
    mt.thinkshare.toggleTradesPageDetail();

    if (mt.thinkshare.tradePageCount < 2) {
        mt.thinkshare.start();
    }

    mt.thinkshare.tradesList.scrollTop(0);
};
