﻿mt.mypage = {
    userID: null,
    slashname: '',
    editMode: null,
    following: null,
    blocking: null
};

mt.mypage.profile = {
    DisplayName: null,
    Company: null,
    Location: null,
    AboutMe: null,
    Photo: null,
    MyBlog: null,
    Twitter: null,
    Facebook: null,
    LinkedIn: null,
    MySpace: null,
    Flickr: null,
    CustomBlog: null,
    MySite1: null,
    MySite2: null,
    isBioEmpty: function() {
        if (this.Company || this.Location || this.AboutMe) {
            return false;
        }
        return true;
    },
    isLinksEmpty: function() {
        if (this.MyBlog || this.Twitter || this.Facebook || this.LinkedIn ||
            this.MySpace || this.Flickr || this.CustomBlog || this.MySite1 || this.MySite2) {
            return false;
        }
        return true;
    }
};

mt.mypage.error = function() {
};

/*
mt.mypage.exportRss = function() {
    //var url = mt.appPath + mt.mypage.slashname + '.rss';

    var input = $('<input type="text" readonly="readonly" style="width:100%;margin:20px 0px;" />');
    mt.events.highlight(input);
    input.val(url);

    var shadowBox = new mt.ui.shadowBox(mt.mypage.profile.DisplayName + '\'s RSS Feed', "destroy", 400);
    shadowBox.initialize();
    shadowBox.addContent(input);
    shadowBox.show();

    input.focus();
};
*/
mt.mypage.toggleFollow = function() {
    var followButton = $('#FollowButton');

    var callback = function(response) {
        response = mt.util.eval(response);
        if (response.HasErrors === false) {
        }
    };

    var data = '{followID:' + mt.mypage.userID + '}';

    if (mt.mypage.following) {
        mt.mypage.following = false;
        mt.ajax(
           'users.asmx/UnfollowUser',
            data,
            callback,
            mt.mypage.error
        );

        followButton.text('Follow');
    }
    else {
        mt.mypage.following = true;
        mt.ajax(
           'users.asmx/FollowUser',
            data,
            callback,
            mt.mypage.error
        );

        followButton.text('Leave');
    }
};

mt.mypage.toggleBlock = function() {
    var blockButton = $('#BlockButton');

    var callback = function(response) {
        response = mt.util.eval(response);
        if (response.HasErrors === false) {
        }
    };

    var data = '{blockID:' + mt.mypage.userID + '}';

    if (mt.mypage.blocking) {
        mt.mypage.blocking = false;

        mt.ajax(
           'users.asmx/UnblockUser',
            data,
            callback,
            mt.mypage.error
        );

        blockButton.text('Block');
    }
    else {
        mt.mypage.blocking = true;

        mt.ajax(
           'users.asmx/BlockUser',
            data,
            callback,
            mt.mypage.error
        );

        blockButton.text('Unblock');
    }
};

mt.mypage.adminBlock = function() {
    var callback = function(response) {
        var button = $('.AdminBlockButton');
        if (mt.util.parseBool(response)) {
            button.text("Remove Admin Block");
        }
        else {
            button.text("Admin Block");
        }
    };

    var data = '{userID:' + mt.mypage.userID + '}';
    mt.ajax(
        'users.asmx/ToggleAdminBlock',
        data,
        callback
    );
};

mt.mypage.uploadUserImage = function() {
    Radactive.WebControls.ILoad.AddImage(mt.mypage.iLoad);
};

mt.mypage.removeUserImage = function() {
    if(!confirm('Are you sure you want to remove your profile picture?')){
        return;
    }

    var onError=function(response){
        alert('There was a problem removing your profile picture. If the problem persists, contact support@mytrade.com');
    };

    mt.ajax(
            'users.asmx/SetUserPhoto',
            '{photo:null}',
            function(response) {
                if (!response.HasErrors) {
                    $('img#UserImage').attr('src', '/images/blank.gif');
                    $('img#UserImageThumb').attr('src', '/images/blank.gif');
                    alert('Your profile picture has been removed.');
                }
                else{
                    onError();
                }
            },
            onError
    );
};

mt.mypage.changeUserImage = function(controlID, webImage) {
    if (webImage) {
        var resize = webImage.SelectedImage();
        var imageName = resize.FileName();
        var imagePath = mt.imageUploads + imageName;

        var data = '{photo:"' + imageName + '"}';

        var onError = function(response) {
            alert('There was a problem saving your new profile picture. Please refresh the page and try again.');
        };

        mt.ajax(
            'users.asmx/SetUserPhoto',
            data,
            function(response) {
                if (!response.HasErrors) {
                    $('img#UserImage').attr('src', imagePath);
                    $('img#UserImageThumb').attr('src', imagePath);
                }
                else {
                    onError(response);
                }
            },
            onError
        );
    }
    else {
        alert('You have not selected any Image.');
    }
};

mt.mypage.createNote = function() {
    var shadowBox = new mt.ui.shadowBox('Create a Note', 'destroy', 500);
    shadowBox.initialize(true);

    var onSubmit = function(text, exportToTwitter) {
        var data = '{text:"' + escape(text) + '",exportToTwitter:' + exportToTwitter + ',rootStreamID:0}';
        mt.ajax(
            'streams.asmx/AddNote',
            data,
            function(response){
                shadowBox.close();
                window.location = mt.appPath + mt.mypage.slashname;
            },
            function(response){
                alert('There was a problem saving your note. You might want to copy it, because if you click "Cancel" it will be lost.');
            }
        );
    };

    var note = new mt.note(shadowBox.pod.content, onSubmit, shadowBox.close);
    shadowBox.show();
    note.input.focus();
};

mt.mypage.editNote = function(streamID, bodyClass, isUnlimited) {
    var shadowBox = new mt.ui.shadowBox('Edit Note', 'destroy', 500);
    shadowBox.initialize(true);

    var streamItemText = $('div#StreamItem' + streamID).find('div.' + bodyClass);

    var onSubmit = function(text) {
        var data = '{streamID:' + streamID + ',text:"' + escape(text) + '"}';
        mt.ajax(
            'streams.asmx/EditNote',
            data,
            function(response) {
                response = mt.util.eval(response);
                if (response.HasErrors) {
                    alert('There was a problem saving your changes, please try again.');
                    return;
                }
                shadowBox.close();
                streamItemText.html(response.Data.Body);
            },
            function() {
                alert('There was a problem updating your note. You might want to copy it, because if you click "Cancel" it will be lost.');
            }
        );
    };

    var note = new mt.note(shadowBox.pod.content, onSubmit, shadowBox.close, streamItemText.html(), isUnlimited);
    shadowBox.show();
    note.input.focus();
};

mt.mypage.createBlog = function(streamID) {
    if (streamID) {
        var streamItem = $('div#StreamItem' + streamID);
        var streamTitle = streamItem.find('div.StreamBlogTitle');
        var streamBody = streamItem.find('div.StreamItemText');

        var stream = {
            StreamID: streamID,
            Title: streamTitle.html(),
            Body: streamBody.html()
        }

        mt.editor.initialize(function(response, title, body) {
            streamTitle.html(title);
            streamBody.html(body);
        },
        stream
        );
    }
    else {
        mt.editor.initialize(function(response, title, body) {
            window.location = mt.appPath + mt.mypage.slashname;
        });
    }
};

mt.mypage.menu = {
    edit: function(menu) {
        menu.find('p.MenuHead > a.MenuEdit').hide();
        menu.find('div.MenuBody > div.MenuEmpty').hide();

        var items = menu.find('div.MenuBody > div.MenuItem');
        items.show();

        items.find('input').show();
        items.find('textarea').show();
        items.find('span').hide();
        items.find('a').hide();

        menu.find('div.MenuBody > .MenuButton').css({ display: 'inline-block' });
    },
    cancel: function(menu, callback) {
        this.close(menu);
        if (callback) {
            callback();
        }
    },
    close: function(menu) {
        menu.find('p.MenuHead > a.MenuEdit').show();

        var items = menu.find('div.MenuBody > div.MenuItem');
        items.hide();

        items.find('input').hide();
        items.find('textarea').hide();
        items.find('span').show();
        items.find('a').show();

        menu.find('div.MenuBody > .MenuButton').css({ display: 'none' });
    }
};

mt.mypage.webLinks = {
    initialize: function() {
        mt.mypage.webLinks.loadValues();
        mt.mypage.webLinks.populate();
    },
    edit: function() {
        mt.mypage.menu.edit($('div#WebLinksMenu'));
    },
    cancel: function() {
        mt.mypage.menu.cancel($('div#WebLinksMenu'), mt.mypage.webLinks.populate);
    },
    loadValues: function() {
        mt.mypage.profile.MyBlog = $('input#InputMyBlog').val();
        mt.mypage.profile.Twitter = $('input#InputTwitter').val();
        mt.mypage.profile.Facebook = $('input#InputFacebook').val();
        mt.mypage.profile.LinkedIn = $('input#InputLinkedIn').val();
        mt.mypage.profile.MySpace = $('input#InputMySpace').val();
        mt.mypage.profile.Flickr = $('input#InputFlickr').val();
        mt.mypage.profile.CustomBlog = $('input#InputCustomBlog').val();
        mt.mypage.profile.MySite1 = $('input#InputMySite1').val();
        mt.mypage.profile.MySite2 = $('input#InputMySite2').val();
    },
    save: function() {
        mt.mypage.webLinks.loadValues();

        var callback = function(response) {
            mt.mypage.menu.cancel($('div#WebLinksMenu'), mt.mypage.webLinks.populate);
        };

        var twitterIndex = mt.mypage.profile.Twitter.indexOf("twitter.com/", 0);
        if (twitterIndex > -1) {
            var urlSections = mt.mypage.profile.Twitter.split(/\//);
            var twitterUsername = urlSections[urlSections.length - 1];
            if (twitterUsername.length < 2) {
                twitterUsername = urlSections[urlSections.length - 2];
            }
            if (!confirm('Your twitter username is "' + twitterUsername + '" right?')) {
                alert('Enter either your twitter username or the url to your twitter page and try again.');
                return;
            }
            else {
                mt.mypage.profile.Twitter = twitterUsername;
            }
        }

        var data =
            '{myBlog:"' + mt.mypage.profile.MyBlog +
            '",twitter:"' + mt.mypage.profile.Twitter +
            '",facebook:"' + mt.mypage.profile.Facebook +
            '",linkedIn:"' + mt.mypage.profile.LinkedIn +
            '",mySpace:"' + mt.mypage.profile.MySpace +
            '",flickr:"' + mt.mypage.profile.Flickr +
            '",customBlog:"' + mt.mypage.profile.CustomBlog +
            '",mySite1:"' + mt.mypage.profile.MySite1 +
            '",mySite2:"' + mt.mypage.profile.MySite2 + '"}';

        mt.ajax(
            'users.asmx/UpdateUserWebLinks',
            data,
            callback,
            mt.mypage.error
        );
    },
    populate: function() {
        var link;

        if (mt.mypage.profile.isLinksEmpty() && mt.mypage.editMode) {
            var empty = $('div#WebLinksEmpty');
            empty.text('Click edit to add links to your pages around the web.');
            empty.show();
            return;
        }
        if (mt.mypage.profile.MyBlog) {
            var myBlog = $('div#LinkMyBlog');
            link = myBlog.find('a');
            mt.mypage.profile.MyBlog = mt.util.addHttpToLink(mt.mypage.profile.MyBlog);
            link.attr("href", mt.mypage.profile.MyBlog);
            link.attr("target", "_blank");
            var blogUrl = mt.util.stripDomainName(mt.mypage.profile.MyBlog);
            link.text(blogUrl);
            myBlog.show();
            myBlog.find('input').val(mt.mypage.profile.MyBlog);
        }
        if (mt.mypage.profile.Twitter) {
            var twitterUrl = 'http://twitter.com/' + mt.mypage.profile.Twitter;
            var twitter = $('div#LinkTwitter');
            link = twitter.find('a');
            //mt.mypage.profile.Twitter = mt.util.addHttpToLink(mt.mypage.profile.Twitter);
            link.attr("href", twitterUrl);
            link.attr("target", "_blank");
            link.text(mt.mypage.profile.Twitter);
            twitter.show();
            twitter.find('input').val(mt.mypage.profile.Twitter);
        }
        if (mt.mypage.profile.Facebook) {
            var facebook = $('div#LinkFacebook');
            link = facebook.find('a');
            mt.mypage.profile.Facebook = mt.util.addHttpToLink(mt.mypage.profile.Facebook);
            link.attr("href", mt.mypage.profile.Facebook);
            link.attr("target", "_blank");
            link.text('facebook.com');
            facebook.show();
            facebook.find('input').val(mt.mypage.profile.Facebook);
        }
        if (mt.mypage.profile.LinkedIn) {
            var linkedIn = $('div#LinkLinkedIn');
            link = linkedIn.find('a');
            mt.mypage.profile.LinkedIn = mt.util.addHttpToLink(mt.mypage.profile.LinkedIn);
            link.attr("href", mt.mypage.profile.LinkedIn);
            link.attr("target", "_blank");
            link.text('www.linkedin.com');
            linkedIn.show();
            linkedIn.find('input').val(mt.mypage.profile.LinkedIn);
        }
        if (mt.mypage.profile.MySpace) {
            var mySpace = $('div#LinkMySpace');
            link = mySpace.find('a');
            mt.mypage.profile.MySpace = mt.util.addHttpToLink(mt.mypage.profile.MySpace);
            link.attr("href", mt.mypage.profile.MySpace);
            link.attr("target", "_blank");
            link.text('www.myspace.com');
            mySpace.show();
            mySpace.find('input').val(mt.mypage.profile.MySpace);
        }
        if (mt.mypage.profile.Flickr) {
            var flickr = $('div#LinkFlickr');
            link = flickr.find('a');
            mt.mypage.profile.Flickr = mt.util.addHttpToLink(mt.mypage.profile.Flickr);
            link.attr("href", mt.mypage.profile.Flickr);
            link.attr("target", "_blank");
            link.text('www.flickr.com');
            flickr.show();
            flickr.find('input').val(mt.mypage.profile.Flickr);
        }
        if (mt.mypage.profile.CustomBlog) {
            var customBlog = $('div#LinkCustomBlog');
            link = customBlog.find('a');
            mt.mypage.profile.CustomBlog = mt.util.addHttpToLink(mt.mypage.profile.CustomBlog);
            link.attr("href", mt.mypage.profile.CustomBlog);
            link.attr("target", "_blank");
            var customBlogUrl = mt.util.stripDomainName(mt.mypage.profile.CustomBlog);
            link.text(customBlogUrl);
            customBlog.show();
            customBlog.find('input').val(mt.mypage.profile.CustomBlog);
        }
        if (mt.mypage.profile.MySite1) {
            var mySite1 = $('div#LinkMySite1');
            link = mySite1.find('a');
            mt.mypage.profile.MySite1 = mt.util.addHttpToLink(mt.mypage.profile.MySite1);
            link.attr("href", mt.mypage.profile.MySite1);
            link.attr("target", "_blank");
            var mySite1Url = mt.util.stripDomainName(mt.mypage.profile.MySite1);
            link.text(mySite1Url);
            mySite1.show();
            mySite1.find('input').val(mt.mypage.profile.MySite1);
        }
        if (mt.mypage.profile.MySite2) {
            var mySite2 = $('div#LinkMySite2');
            link = mySite2.find('a');
            mt.mypage.profile.MySite2 = mt.util.addHttpToLink(mt.mypage.profile.MySite2);
            link.attr("href", mt.mypage.profile.MySite2);
            link.attr("target", "_blank");
            var mySite2Url = mt.util.stripDomainName(mt.mypage.profile.MySite2);
            link.text(mySite2Url);
            mySite2.show();
            mySite2.find('input').val(mt.mypage.profile.MySite2);
        }
    }
};

mt.mypage.bio = {
    initialize: function() {
        mt.mypage.bio.loadValues();
        mt.mypage.bio.populate();
    },
    edit: function() {
        mt.mypage.menu.edit($('div#BioMenu'));
    },
    cancel: function() {
        mt.mypage.menu.cancel($('div#BioMenu'), mt.mypage.bio.populate);
    },
    loadValues: function() {
        mt.mypage.profile.Location = $('input#InputBioLocation').val();
        mt.mypage.profile.Company = $('input#InputBioCompany').val();
        mt.mypage.profile.AboutMe = $('textarea#InputBioAboutMe').val();
    },
    save: function() {
        mt.mypage.bio.loadValues();

        var callback = function(response) {
            mt.mypage.menu.cancel($('div#BioMenu'), mt.mypage.bio.populate);
        };

        if (mt.mypage.profile.AboutMe.length > 500) {
            alert('Your About Me is a bit long, please keep it under 500 characters.');
            return;
        }

        var data = '{location:"' + escape(mt.mypage.profile.Location) + '",company:"' + escape(mt.mypage.profile.Company) + '",aboutMe:"' + escape(mt.mypage.profile.AboutMe) + '"}';

        mt.ajax(
            'users.asmx/UpdateUserBio',
            data,
            callback,
            mt.mypage.error
        );
    },
    populate: function() {
        if (mt.mypage.profile.isBioEmpty() && mt.mypage.editMode) {
            var empty = $('div#BioEmpty');
            empty.text('Click edit to add information about yourself.');
            empty.show();
            return;
        }

        if (mt.mypage.profile.Company) {
            var company = $('#BioCompany');
            company.find('span').text(mt.mypage.profile.Company);
            company.show();
            company.find('input').val(mt.mypage.profile.Company);
        }

        if (mt.mypage.profile.Location) {
            var location = $('#BioLocation');
            location.find('span').text(mt.mypage.profile.Location);
            location.show();
            location.find('input').val(mt.mypage.profile.Location);
        }

        if (mt.mypage.profile.AboutMe) {
            var aboutMe = $('#BioAboutMe');
            aboutMe.find('span').text(mt.mypage.profile.AboutMe);
            aboutMe.show();
            aboutMe.find('textarea').val(mt.mypage.profile.AboutMe);
        }
    }
};

mt.mypage.initializeTooltips = function() {
    $('input#InputFirstName').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
    $('input#InputMiddleName').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
    $('input#InputLastName').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
    $('input#InputEmail').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
    $('input#InputDisplayName').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
    $('input#InputSlashName').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
    $('input#InputEmailNotification').tooltip({
        track: true,
        delay: 0,
        showURL: false,
        showBody: " - ",
        extraClass: "pretty",
        fixPNG: true,
        opacity: 0.95,
        left: -120
    });
};

mt.mypage.deleteStream = function(streamID, rootStreamID){
    var streamItem = $('div#StreamItem'+streamID);

    var onError = function(){
        alert('There was an error deleting your post.');
        streamItem.slideDown();
    };

    if (!confirm('Are you sure you want to delete this post?')) {
        return;
    }

    streamItem.slideUp();

    mt.ajax(
        'streams.asmx/Delete',
        '{streamID:' + streamID + '}',
        function(response) {
            response = mt.util.eval(response);
            if (!response.HasErrors) {
                $('div#StreamItem'+streamID).slideUp();
                if(rootStreamID){
                    mt.mypage.decCommentCount(rootStreamID);
                }
            }
            else { onError(); }
        },
        onError
    );
};

mt.mypage.createNewComment = function(stream){
    stream.DatePublished = mt.util.parseEpochDate(stream.DatePublished);

    var userLink = mt.appPath+stream.User.SlashName;
    var comment = $(
        '<div id="StreamItem'+stream.StreamID+'" class="StreamItem">'+
            '<a href="'+userLink+'"><img src="http://images.mytrade.com/uploads/images/'+stream.User.Photo+'" class="StreamItemImage"></a>'+
            '<div class="StreamItemIcons"></div>'+
            '<div class="StreamItemText">'+stream.Body+'</div>'+
            '<div class="Clear"></div>'+
            '<span class="MetaText Left">'+
                '<a href="'+userLink+'">'+stream.User.DisplayName+'</a>&nbsp;|&nbsp;<span>'+mt.date.shortFormat(stream.DatePublished)+'</span>'+
            '</span>'+
            '<div class="Clear"></div>'+
        '</div>'
    );

    if(stream.User.UserID == mt.session.userID || mt.session.isAdmin){
        comment.find('div.StreamItemIcons').append(
        '<div class="EditIcon" onclick="mt.mypage.editNote('+stream.StreamID+', \'StreamItemText\', true);"></div>'+
        '<div class="DeleteIcon" onclick="mt.mypage.deleteStream('+stream.StreamID+','+stream.RootStreamID+');"></div>');
    }

    return comment;
};

mt.mypage.incCommentCount = function(streamID){
    var streamItem = $('div#StreamItem'+streamID);
    var c = streamItem.find('span.CommentCount');
    c.text(parseInt(c.text(), 10) + 1);
};

mt.mypage.decCommentCount = function(streamID){
    var streamItem = $('div#StreamItem'+streamID);
    var c = streamItem.find('span.CommentCount');
    c.text(parseInt(c.text(), 10) - 1);
};

mt.mypage.openComments = function(streamID, commentCount){
    var streamItem = $('div#StreamItem'+streamID);
    var commentSection = streamItem.find('div.StreamCommentSection');

    if(commentSection.length === 0){
        commentSection = $('<div class="StreamCommentSection"></div>');
        comments = $('<div class="StreamComments"></div>');
        commentSection.append(comments);
    }
    else{
        commentSection.toggle();
        return;
    }

    var onSubmit = function(text, exportToTwitter) {
        if (mt.session.isGuest) {
            alert('You must log in before making comments.');
            return;
        }

        var data = '{text:"' + escape(text) + '",exportToTwitter:false,rootStreamID:' + streamID + '}';

        mt.ajax(
            'streams.asmx/AddComment',
            data,
            function(response) {
                var stream = mt.util.eval(response).Data;
                var c = mt.mypage.createNewComment(stream);
                c.hide(0);
                comments.append(c);
                c.fadeIn('normal');
                mt.mypage.incCommentCount(streamID);
                note.reset();
            },
            function(response) {
                alert('There was a problem saving your comment.');
            }
        );
    };

    if (commentCount > 0) {
        var data = '{streamID:"' + streamID + '"}';
        mt.ajax(
            'streams.asmx/FindThreadById',
            data,
            function(response) {
                var streams = mt.util.eval(response).Data;
                //streams = ($.isArray(streams) ? streams : [streams]);

                for(var i = 0; i < streams.length; i++){
                    var stream = streams[i];
                    var c = mt.mypage.createNewComment(stream);
                    c.hide(0);
                    comments.prepend(c);
                    c.fadeIn('normal');
                }
            },
            function() {
                alert('There was a problem loading the comments for this post.');
            }
        );
    }

    if(!mt.session.isGuest){
        var addComment = $('<div class="StreamAddComment"><h3>Add a comment</h3></div>');
        var note = new mt.note(addComment, onSubmit, null, '', true);
        addComment.css({ 'text-align': 'left' });
        commentSection.append(addComment);
    }
    streamItem.append(commentSection);
};
/*
mt.mypage.createNewStream = function(stream, rootStream) {
    stream.DatePublished = mt.util.parseEpochDate(stream.DatePublished);
    var postUrl = mt.appPath + stream.User.SlashName + '/?postid=' + stream.StreamID;
    var userUrl = mt.appPath + stream.User.SlashName;
    var userImage = mt.imageUploads + stream.User.Photo;

    var s = $('<div class="StreamItem"></div>');
    $.extend(s, stream);
    s.append($('<a href="' + userUrl + '"><img class="StreamItemImage" src="' + userImage + '" /></a>'));

    var deleteTarget = 'streams.asmx/Delete';
    var deleteParams = '{streamID:' + stream.StreamID + '}';
    var deleteConfirm = 'Are you sure you want to delete this post?';
    var deleteError = 'There was an error deleting your post.';

    var icons = $('<div class="StreamItemIcons"></div>');
    var title = $('<div class="StreamBlogTitle"></div>');
    var text = $('<div class="StreamItemText"></div>');

    var chart, body, tradeLink;

    if (stream.SourceID == 1) {
        title.append(unescape(stream.Title));
        text.html(unescape(stream.Body));
        text.find('a').attr('target', '_blank');
        text.find('font').removeAttr('color').removeAttr('style');
        //var images = text.find('img').css({width:'300px', height:'auto', cursor:'pointer'});
        //mt.util.expandImage(images);
        stream.titleDiv = title;
    }
    else if (stream.SourceID == 5) {
        var link = $('<a target="_blank">' + unescape(stream.Title) + '</a>');
        link.attr('href', stream.Url);
        title.append(link);
        stream.titleDiv = title;
    }
    else if (stream.SourceID == 17) {
        deleteTarget = 'trades.asmx/Delete';
        deleteParams = '{tradeID:' + stream.TradeID + '}';
        deleteConfirm = 'Are you sure you want to delete this trade?';
        deleteError = 'There was an error deleting your trade.';

        var tradeUrl = '../t/?t=' + stream.TradeID;

        var copy = mt.util.createCopyIcon(stream.TradeID, stream.TosTrade, stream.IsCopied).addClass('Left');
        icons.append(copy);

        var trade = $('<div class="StreamItemTrade"></div>').html(unescape(stream.Title));
        text.append(trade);

        if (stream.Body) {
            //text.append($('<br />'));
            var note = $('<div class="StreamItemNote"></div>');
            note.html(unescape(stream.Body));
            text.append(note);
        }

        tradeLink = $('<a class="DetailsLink">See trade details</a>');
        tradeLink.attr('href', tradeUrl);

        text.append(mt.ui.clear());
    }
    else if (stream.SourceID == 3) {
        body = $('<img style="width:100%;" />').attr('src', mt.imageUploads + stream.Body);
        text.append(body);
    }
    else if (stream.SourceID == 20) {
        //title.append('<p>' + unescape('Chart on ' + unescape(stream.Tags) + ': ' + unescape(stream.Title)) + '</p>');
        title.append('<p>' + unescape(stream.Title) + '</p>');

        chart = $('<div class="StreamItemChart"></div>');

        var img = $('<img class="Chart" alt="chart" style="width:300px;height:auto;"/>')
            .attr('src', unescape(stream.Url))
            .attr('title', 'Click to expand');
        chart.append(img);

        var expandLink = $('<a href="javascript:" style="font-size:10px;">[click chart to expand]</a>')
            .click(function() { img.click(); });
        chart.append('<br />');
        chart.append(expandLink);

        text.html('"' + unescape(stream.Body) + '"');
        text.find('a').attr('target', '_blank');
        stream.titleDiv = title;

        mt.util.expandImage(img);
    }
    else {
        body = mt.util.replaceLinks(unescape(stream.Body));
        text.append(body);
        text.find('img').addClass('Left');
        text.find('a').attr('target', '_blank');
    }

    //mt.mypage.editMode && 
    if (stream.User.UserID == mt.session.userID) {
        var editIcon = $('<div class="EditIcon"></div>');

        if (stream.SourceID == 1 || stream.SourceID == 5) {
            editIcon.click(function() { mt.mypage.createBlog(stream); });
        }
        else if (stream.SourceID == 20) {
            editIcon.click(function() { mt.mypage.editNote(stream, true); });
        }
        else {
            editIcon.click(function() { mt.mypage.editNote(stream); });
        }

        icons.append(editIcon);
    }

    //(mt.mypage.editMode && stream.UserID == mt.session.userID) ||
    if (stream.User.UserID == mt.session.userID) {
        var deleteIcon = $('<div class="DeleteIcon"></div>');
        deleteIcon.click(function() {
            if (!confirm(deleteConfirm)) {
                return;
            }
            mt.ajax(
                deleteTarget,
                deleteParams,
                function(response) {
                    response = mt.util.eval(response);
                    if (!response.HasErrors) {
                        s.remove();
                        if (rootStream) {
                            rootStream.decCommentCount();
                        }
                    }
                    else { alert(deleteError); }
                },
                function() { alert(deleteError); }
            );
        });
        icons.append(deleteIcon);
    }

    s.append(icons);
    if (stream.titleDiv) {
        s.append(title);
    }
    if (chart) {
        s.append(chart);
    }
    s.append(text);
    s.append(mt.ui.clear());

    stream.bodyDiv = text;

    var meta = $('<span class="MetaText Left"></span>');
    meta.html('<a href="' + userUrl + '">' + stream.User.DisplayName + '</a>&nbsp;|&nbsp;');

    var date;
    if (rootStream && rootStream.StreamID > 0) {
        date = $('<span>' + mt.date.shortFormat(stream.DatePublished) + '</span>');
    }
    else {
        date = $('<a href="' + postUrl + '">' + mt.date.shortFormat(stream.DatePublished) + '</a>');
    }
    meta.append(date);

    s.openComments = function() {
        if (s.isOpen) {
            s.commentSection.remove();
            s.isOpen = false;
            return;
        }

        var commentSection = $('<div class="StreamCommentSection"></div>');
        var comments = $('<div class="StreamComments"></div>');
        commentSection.append(comments);

        var onSubmit = function(text, exportToTwitter) {
            if (mt.session.isGuest) {
                alert('You must log in before making comments.');
                return;
            }

            var data = '{text:"' + escape(text) + '",exportToTwitter:' + exportToTwitter + ',rootStreamID:' + stream.StreamID + '}';

            mt.ajax(
                'streams.asmx/AddComment',
                data,
                function(response) {
                    var item = mt.util.eval(response).Data;
                    var newStream = mt.mypage.createNewStream(item, s);
                    newStream.hide(0);
                    comments.append(newStream);
                    newStream.fadeIn('normal');
                    $.extend(newStream, item);
                    s.incCommentCount();
                    note.reset();
                },
                function(response) {
                    alert('There was a problem saving your comment.');
                    note.reset();
                }
            );
        };

        if (stream.CommentCount > 0) {
            var data = '{streamID:"' + stream.StreamID + '"}';
            mt.ajax(
                'streams.asmx/FindThreadById',
                data,
                function(response) {
                    mt.mypage.updateStreams(response, comments, s);
                },
                function() {
                    alert('There was a problem loading the comments for this post.');
                }
            );
        }

        var addComment = $('<div class="StreamAddComment"><h3>Add a comment</h3></div>');
        var note = new mt.note(addComment, onSubmit, null);
        addComment.css({ 'text-align': 'left' });
        commentSection.append(addComment);

        s.commentSection = commentSection;
        s.isOpen = true;
        s.append(commentSection);
    };

    if (stream.RootStreamID > 0 && (rootStream && stream.RootStreamID != rootStream.StreamID)) {
        var originalPost = $('<a href="javascript:" class="Right">View Original Post</a>');
        originalPost.click(function() {
            var data = '{streamID:' + stream.RootStreamID + '}';
            mt.ajax(
                'streams.asmx/GetThreadUrlByStreamID',
                data,
                function(response) {
                    response = mt.util.eval(response);
                    if (response.HasErrors) {
                        alert('There was a problem redirecting to the original post.');
                        return;
                    }
                    window.location = response.Data;
                },
                function() {
                    alert('There was a problem redirecting to the original post.');
                }
            );
        });
        s.append(originalPost);
    }
    else if (!stream.RootStreamID) {
        var count = (stream.CommentCount > 0 ? stream.CommentCount : 'No');
        var showComments = $('<a href="javascript:" class=""><span class="Count">' + count + '</span> Comment' + (count == 1 ? '' : 's') + '</a>');
        showComments.click(s.openComments);
        meta.append($('<span>&nbsp;|&nbsp;</span>'));
        meta.append(showComments);
    }

    s.incCommentCount = function() {
        this.CommentCount = parseInt(this.CommentCount, 10) + 1;
        var c = this.find('span.Count');
        c.text(this.CommentCount);
    };

    s.decCommentCount = function() {
        this.CommentCount = parseInt(this.CommentCount, 10) - 1;
        var c = this.find('span.Count');
        c.text(this.CommentCount);
    };

    if (tradeLink) {
        meta.append('&nbsp;|&nbsp;');
        meta.append(tradeLink);
    }
    s.append(meta);
    s.append(mt.ui.clear());

    return s;
};
*/
/*
mt.mypage.populateStreams = function(response) {
    for (var i = 0; i < newStreams.length; i++) {
        var stream = newStreams[i];
        var s = mt.mypage.createNewStream(stream);
        mt.mypage.streamsList.append(s);
        $.extend(s, stream);
        mt.mypage.streams.push(s);

        if (stream.StreamID == mt.mypage.postID && !stream.RootStreamID) {
            s.openComments();
        }
    }
};
*/
/*
mt.mypage.updateStreams = function(response, container, rootStream) {
    if(mt.mypage.pageCount > 0){
        mt.mypage.initializeStreamsList();
    }
    else{
        var streams = mt.util.eval(response).Data;
        streams = ($.isArray(streams) ? streams : [streams]);

        for(var i = 0; i < streams.length; i++){
            var stream = streams[i];
            var s = mt.mypage.createNewStream(stream, rootStream);
            s.hide(0);
            container.prepend(s);
            s.fadeIn('normal');
            $.extend(s, stream);
        }
        //$('div#DialogMessage').hide(0);
    }
    window.scrollTo(0,0);
};
*/
mt.mypage.unlinkTwitter = function() {
    var callback = function(response) {
        response = mt.util.eval(response);

        if (response.HasErrors === true) {
            alert(response.Errors[0]);
        } else {
            window.location = window.location;
        }
    };

    mt.ajax(
       'users.asmx/UnlinkTwitter',
        null,
        callback,
        mt.mypage.error
    );
};

mt.mypage.updateMyInfo = function() {
    mt.mypage.settingsLoader = new mt.ui.loader($('div.MyPageBody'));
    //mt.mypage.settingsLoader.start();
    var firstName = $('input#InputFirstName').val();
    var lastName = $('input#InputLastName').val();
    var email = $('input#InputEmail').val();
    var displayName = $('input#InputDisplayName').val();
    var slashName = $('input#InputSlashname').val();
    var emailNotification = $('input#InputEmailNotification').attr('checked');
    var importMessages = $('input#InputTwitterImport').attr('checked');
    var exportTrades = $('input#InputTwitterExport').attr('checked');
    var feedUrl = $('input#InputBlogRssFeedUrl').val();

    if (!importMessages)
        importMessages = false;
    if (!exportTrades)
        exportTrades = false;

    var callback = function(response) {
        response = mt.util.eval(response);

        if (response.HasErrors === true) {
            alert(response.Errors[0]);
            //return false;
        } else {
            window.location = window.location;
            //window.location = mt.appPath + slashName;
        }

        mt.mypage.settingsLoader.stop();
    };

    var slashnameRegex = /[\w]/ig;

    if (!slashnameRegex.test(slashName)) {
        alert('The slashname can only contain letters, numbers and underscores.');
        mt.mypage.settingsLoader.stop();
    }

    if (!mt.validate.email(email, true)) {
        alert('The email address must be valid.');
        mt.mypage.settingsLoader.stop();
    }

    var data = '{firstName:"' + escape(firstName) + '",lastName:"' + escape(lastName) + '",email:"' + escape(email) + '",displayName:"' + escape(displayName) + '",slashName:"' + escape(slashName) + '",emailNotification:' + emailNotification + ',twitterExport:' + exportTrades + ',twitterImport:' + importMessages + ',feedUrl:"' + feedUrl + '"}';
    mt.ajax(
       'users.asmx/UpdateUser',
        data,
        callback,
        mt.mypage.error
    );
};
