var blogTitleDivId;
var blogDateDivId;
var blogContentDivId;

var currentTemplateId;
var currentContentId;
var blogPostURI;

var commentBoxFocus = false;

var userLoggedIn;
var needSetScreenName;

var answeringCaptcha;

var lastCommentTimestamp;

function loadBlogTemplate(templateId, contentId) {        
    
    currentTemplateId = templateId;
    currentContentId = contentId; 
    
    blogTitleDivId = "blog_title_" + templateId + "_" + contentId;
    blogDateDivId = "blog_date_" + templateId + "_" + contentId;
    blogContentDivId = "blog_content_" + templateId + "_" + contentId;    
    
    url = '/jsp/intrade/misc/blog/templates/' + templateId + '.jsp';
    
    //set the location hash
    location.hash = "#" + templateId + "_" + contentId;
    
    ajaxReq = new Ajax.Request(url,
    {
        method: 'get',
        onSuccess: showBlogTemplate
    });
}

function loadInitialBlogTemplate() {
    var hashString = location.hash;
    var initialBlogId = null;
    
    if ( hashString.length < 2 ) {
        return;
    } else {
        initialBlogId = hashString.substring(1);
    }
    
    var delimeter = initialBlogId.indexOf("_");
    var templateId = initialBlogId.substring(0, delimeter);
    var contentId = initialBlogId.substring(delimeter + 1);
    
    loadBlogTemplate(templateId, contentId);
}

function showBlogTemplate(response) {
    $('blogContainer').innerHTML = response.responseText;
    $('blog_title').innerHTML = $(blogTitleDivId).innerHTML;
    $('blog_date').innerHTML = $(blogDateDivId).innerHTML;
    $('blog_text').innerHTML = $(blogContentDivId).innerHTML;
    
    /* scroll window to top of blog */
    scroll(0, 0);
    
    loadComments();
}

//this function is currently only used on intrade tv page
function loadNewComments() {
    
    url = '/jsp/intrade/intradeTV/loadCommentsFromTime.jsp';        
    
    ajaxReq = new Ajax.Request(url,
    {
        parameters: {lastCommentTimestamp : lastCommentTimestamp},
        method: 'get',
        onSuccess: showNewBlogComments
    });
}
    
function showNewBlogComments(response) {
    $("commentStream").innerHTML = response.responseText + $("commentStream").innerHTML; 

    //find the latest timestamp
    if($(lastCommentTimestamp + '_newTimestamp')) {
        lastCommentTimestamp = $(lastCommentTimestamp + '_newTimestamp').value;
    }
}

function loadComments(intradeTVPage) {
    
    blogPostURI = getCurrentBlogPostURI();
    
    var url;
    
    if(intradeTVPage) {
        url = '/jsp/intrade/intradeTV/loadAllComments.jsp';
    } else {
        url = '/jsp/intrade/misc/blog/loadComments.jsp';
    }
    ajaxReq = new Ajax.Request(url,
    {
        parameters: {blogPostURI : blogPostURI},
        method: 'get',
        onSuccess: showBlogComments
    });
}

function getCurrentBlogPostURI() {
    blogPostURIDivId = "blog_post_uri_" + currentTemplateId + "_" + currentContentId;
    
    if($(blogPostURIDivId) == null) {
        return "";
    }

    return escape($(blogPostURIDivId).innerHTML);    
}

function showBlogComments(response) {
    $("blogComments").innerHTML = response.responseText;
    commentBoxFocus = false;
    
    //find the latest timestamp
    if($('firstTimestamp')) {
        lastCommentTimestamp = $('firstTimestamp').value;        
    }
}

function postComment() {                
    
    $('postButton').disabled = true;    
    
    var userHandleText = null;
    var commentText = null;
    
    if (!userLoggedIn) {
    
        userHandleText = $("userHandle").value;
    
        if(userHandleText.length == 0) {
            alert("Please enter a user handle in the box provided.");
            $('postButton').disabled = false;
            $("userHandle").focus();
            return;
        }        
    }

    commentText = $("comment").value;
    
    if(!commentBoxFocus || commentText.length == 0) {
        alert("Please enter a comment in the box provided.");
        $('postButton').disabled = false;
        $("comment").focus();
        return;
    }        
    
    blogPostURI = getCurrentBlogPostURI();
    
    url = '/jsp/intrade/misc/blog/postComment.jsp';        
    
    var captchaAnswer = null;
    var captchaToken = null;
    
    if (answeringCaptcha) {
        captchaAnswer = $('captchaAnswer').value;
        
        if(captchaAnswer.length == 0) {
            alert("Please Fill in the captcha.");
            $('postButton').disabled = false;
            $('captchaAnswer').focus();
            return;
        }
        
        captchaToken = $('captchaToken').value;
    }
    
    $('pleaseWaitDiv').innerHTML = "Please Wait...";
    
    ajaxReq = new Ajax.Request(url,
    {
        parameters: {userHandle : userHandleText, comment : commentText, blogPostURI : blogPostURI,
            answeringCaptcha : answeringCaptcha, captchaAnswer : captchaAnswer, captchaToken : captchaToken},
        method: 'post',
        onSuccess: postCommentResponse,
        onFailure: postCommentFailure
    });
}

function postCommentResponse(response) {
    var responseJSON = eval('(' + response.responseText + ')');
    
    $('pleaseWaitDiv').innerHTML = "";
    
    if (responseJSON.success) {
        if ( answeringCaptcha ) {
            answeringCaptcha = false;
        }
        
        $('postCommentDiv').hide();
        $('postCommentSuccessDiv').show();                
    } else if (!responseJSON.success  && responseJSON.captchaURL) {
        if ( answeringCaptcha ) {
            alert("Captcha Failed. Please Try Again!");
        }
        
        answeringCaptcha = true;
        
        var captchaImgLoc = responseJSON.captchaURL;
        var captchaToken = responseJSON.captchaToken;
                
        $('captchaImg').src = captchaImgLoc;
        $('captchaToken').value = captchaToken;
        $('captchaAnswer').value = "";
        $('captchaDiv').show();
        
        $('postButton').disabled = false;
        
    } else {
        postCommentFailure();
    }
}

function postCommentFailure() {
    $('postCommentDiv').hide();
    $('postCommentFailureDiv').show();
}

function commentBoxClicked() {
    if(!commentBoxFocus) {
        $('comment').value = '';
        commentBoxFocus = true;        
    }
}

function doSetScreenName() {    
    var winSrc = '/jsp/intrade/accounts/user/setScreenName?for=blogComments';
    var winParam = 'width=500,height=390,menubar=no, status=no, toolbar=no, dependent=yes, resizable=yes, scrollbars=auto';
    var win = window.open(winSrc,'setScreenName', winParam); 
    win.focus();
}

function screenNameSet() {
    location.reload(true);
}

function okClicked() {
    showPostCommentForm();
}

function showPostCommentForm() {
    $('captchaDiv').hide();    
    $('postButton').disabled = false;
    
    if($("userHandle")) {
        $("userHandle").value = "";
    }
    
    commentBoxFocus = false;
    
    $("comment").value = "";
    $('pleaseWaitDiv').innerHTML = "";
    $('postCommentDiv').show();
}