
function ratingCalcTotal() {
    var iQuality = parseInt(document.comment_form.quality.value);
    var iPlump   = parseInt(document.comment_form.plump.value);
    var iSauce   = parseInt(document.comment_form.sauce.value);
    var iService = parseInt(document.comment_form.service.value);

    var obSpan = document.getById("usr_total_rating");

    if (!obSpan)
        return;

    if (iQuality != 0 && iPlump != 0 && iSauce != 0 && iService != 0) {
        var iTotal = (iQuality + iPlump + iSauce + iService) / 4;
        obSpan.innerHTML = iTotal + "/5";
    }
    else {
        obSpan.innerHTML = "(NA)";
    }
}

function ratingClicked(strNamePre, iRateIndex) {
    var obForm = document.comment_form[strNamePre];
    obForm.value = iRateIndex;
    ratingCalcTotal();
}

function ratingControlMouseOver(strNamePre, iRateIndex) {
    for (var i = 0; i < 5; ++i) {
        var imgName = strNamePre + '_' + (i + 1);
        var obImg = document.images[imgName];
        var obTxt = document.getById(strNamePre + "_rate");
        var strImg = (i < iRateIndex) ? "wing_color_pad.gif" : "wing_black_pad.gif";
        if (obImg)
            obImg.src = SGL_JS_IMAGESDIR + "/" + strImg;
        if (obTxt && iRateIndex > 0)
            obTxt.innerHTML = iRateIndex;
        else
            obTxt.innerHTML = "NA";
    }
}

function ratingControlMouseOut(strNamePre) {

    var obForm = document.comment_form[strNamePre];
    var curValue = parseInt(obForm.value);

    var obTxt = document.getById(strNamePre + "_rate");
    if (obTxt && curValue > 0)
        obTxt.innerHTML = curValue;
    else if (obTxt)
        obTxt.innerHTML = "NA";

    for (var i = 0; i < 5; ++i) {
        var imgName = strNamePre + '_' + (i + 1);
        var obImg = document.images[imgName];
        var strImg = (i < curValue) ? "wing_color_pad.gif" : "wing_black_pad.gif";
        if (obImg)
            obImg.src = SGL_JS_IMAGESDIR + "/" + strImg;
    }
}

function showHideCommentArea() {
    var obCommentArea = document.getById("comment_area");
    if (obCommentArea.style.display == "block")
        obCommentArea.style.display = "none";
    else
        obCommentArea.style.display = "block";
}

function loadNewCapImage() {
    var obCapImg  = document.images['img_cap'];
    var obRepImg  = document.images['reprt_img_cap'];

    var nSrc = SGL_JS_WEBROOT + "/" + SGL_JS_FRONT_CONTROLLER + "/captcha/rand_load_id/" + Math.floor(Math.random() * 5000 + 1) + "/frmForm/";

    if (obCapImg)
        obCapImg.src = nSrc + "comment/";
    if (obRepImg)
        obRepImg.src = nSrc + "report/";
}

function getRatingImages(iRating) {
    var strWings = '';
    var rounded = Math.round(iRating * 2) / 2;       //get nearest "half"
    var floored = Math.floor(iRating);
    var rem = rounded;

    for (var i = 0; i < 5; ++i) {
        if (i < floored)
            strWings += "<img src=\"" + SGL_JS_IMAGESDIR + "/wing_color.gif\" alt=\"\" width=\"10\" height=\"12\" />";
        else if (rem > 0)
            strWings += "<img src=\"" + SGL_JS_IMAGESDIR + "/wing_half_color.gif\" alt=\"\" width=\"10\" height=\"12\" />";
        else
            strWings += "<img src=\"" + SGL_JS_IMAGESDIR + "/wing_black.gif\" alt=\"\" width=\"10\" height=\"12\" />";

        rem -= 1;
    }
    return strWings;
}

//used in add review page
function getAvailableCities(obForm) {
    var obProvId  = obForm.frmProvinceID;
    var obCityId  = obForm.frmCityID;
    var obEstabId = obForm.establishment_id;

    var strProvId = obProvId.options[obProvId.selectedIndex].value;

    obCityId.options.length = 0;
    obEstabId.options.length = 0;

    obCityId.options[0] = new Option("Select a City", "0");
    obEstabId.options[0] = new Option("Select a City", "0");

    if (strProvId != "0" && !isNaN(strProvId)) {
        var obEstab = new Establishment();
        var obCities = obEstab.getEstablishmentCities(strProvId);
        var arrCities = obCities.cities;

        if (!arrCities) {
            alert(obCities.message);
            return;
        }

        for (var i = 0; i < arrCities.length; ++i) {
            obCityId.options[obCityId.options.length] = new Option(arrCities[i].safe_name, arrCities[i].cities_id);
        }
    }
    else {
        obCityId.options[0] = new Option("Select a Region", "0");
    }
}

//used in add review page
function getAvailableEstablishments(obForm) {

    var obCityId  = obForm.frmCityID;
    var obEstabId = obForm.establishment_id;

    var strCityId = obCityId.options[obCityId.selectedIndex].value;

    obEstabId.options.length = 0;
    obEstabId.options[0] = new Option("Select an Establishment", "0");

    if (strCityId != "0" && !isNaN(strCityId)) {
        var obEstab = new Establishment();
        var obEstabs = obEstab.getAllEstablishmentsFor(strCityId);
        var arrEstabs = obEstabs.establishments;

        if (!arrEstabs) {
            alert(obEstabs.message);
            return;
        }

        for (var i = 0; i < arrEstabs.length; ++i) {
            obEstabId.options[obEstabId.options.length] = new Option(arrEstabs[i].safe_name, arrEstabs[i].establishment_id);
        }
    }
    else {
        obEstabId.options[0] = new Option("Select an Establishment", "0");
    }
}

function recalcAvgRating(iRating) {
    document.getById("avg_user_rating").innerHTML = iRating;
    var strStars = '';
    var rounded = Math.round(iRating * 2) / 2;
    var floored = Math.floor(rounded);
    var rem = rounded;

    for (var i = 0; i < 5; ++i) {
        if (i < floored)
            strStars += "<img src=\"" + SGL_JS_IMAGESDIR + "/star.gif\" alt=\"\" width=\"25\" height=\"24\" />";
        else if (rem > 0)
            strStars += "<img src=\"" + SGL_JS_IMAGESDIR + "/star_half.gif\" alt=\"\" width=\"25\" height=\"24\" />";
        else
            strStars += "<img src=\"" + SGL_JS_IMAGESDIR + "/star_off.gif\" alt=\"\" width=\"25\" height=\"24\" />";
        rem -= 1;
    }

    var obStarPlace = document.getById("star_rating");
    if (obStarPlace)
        obStarPlace.innerHTML = strStars;
}

function clearCommentForm(obForm) {

    var obNameErr  = document.getById("nameError");
    var obEmailErr = document.getById("emailError");
    var obCommErr  = document.getById("commentError");
    var obCapErr   = document.getById("capError");
    var obCommMsg  = document.getById("comment_msg");

    if (obForm.quality) {

        obForm.quality.value = 0;
        obForm.plump.value = 0;
        obForm.sauce.value = 0;
        obForm.service.value = 0;
    }

    if (obForm.isLoggedIn.value.length == 0) {
        obForm.email.value = "";
        obForm.username.value = "";
        obForm.captcha.value = "";
    }

    obForm.comment.value = "";

    if (obForm.quality) {

        ratingControlMouseOut("quality");
        ratingControlMouseOut("plump");
        ratingControlMouseOut("sauce");
        ratingControlMouseOut("service");
        ratingCalcTotal();
    }

    if (obForm.isLoggedIn.value.length == 0) {
        obNameErr.innerHTML = "";
        obEmailErr.innerHTML = "";
        obCapErr.innerHTML = "";
    }

    obCommErr.innerHTML = "";
    obCommMsg.innerHTML = "";

    if (obForm.isLoggedIn.value.length == 0) {
        obNameErr.style.display = "none";
        obEmailErr.style.display = "none";
        obCapErr.style.display = "none";
    }

    obCommErr.style.display = "none";
    obCommMsg.style.display = "none";

    showHideCommentArea();
}

var __g_bIsPostingComment = false;

function postCommentError(errorObj) {

    var obNameErr  = document.getById("nameError");
    var obEmailErr = document.getById("emailError");
    var obCommErr  = document.getById("commentError");
    var obCapErr   = document.getById("capError");
    var obImgErr   = document.getById("imageError");
    var obCommMsg  = document.getById("comment_msg");

    if (errorObj.username) {
        obNameErr.innerHTML = errorObj.username;
        obNameErr.style.display = "block";
    }
    if (errorObj.email) {
        obEmailErr.innerHTML = errorObj.email;
        obEmailErr.style.display = "block";
    }
    if (errorObj.comment) {
        obCommErr.innerHTML = errorObj.comment;
        obCommErr.style.display = "block";
    }
    if (errorObj.captcha) {
        obCapErr.innerHTML = errorObj.captcha;
        obCapErr.style.display = "block";
    }
    if (errorObj.image) {
        obImgErr.innerHTML = errorObj.image;
        obImgErr.style.display = "block";
    }
    obCommMsg.innerHTML = errorObj.message;
    obCommMsg.style.color = "#aa0000";
    obCommMsg.style.display = "block";
    loadNewCapImage();

    __g_bIsPostingComment = false;

    return false;
}

function commentPosted(avgUserRating, bShowGuestMsg) {

    //update total user rating
    if (avgUserRating) {
        recalcAvgRating(avgUserRating);
    }

    loadNewCapImage();
    clearCommentForm(document.comment_form);
    openCommentsPage(1);

    if (bShowGuestMsg) {
        document.getById("review_rating_area").innerHTML = "A Guest rating has already been posted for this establishment " +
            "from your computer or IP address. You can leave a comment without a rating, or <a href=\"{globalUrl}/user/login/\">Login</a> " +
            "or <a href=\"{globalUrl}/user/register/\">Sign Up</a> for a HotWings.ca account.";
    }

    __g_bIsPostingComment = false;
    return false;
}

function postComment(obForm) {

    var iEstabId = 0;
    var bIsNews = false;
    if (obForm.establishment_id) {
        iEstabId = obForm.establishment_id.value;
    }
    else {
        iEstabId = obForm.news_id.value;
        bIsNews = true;
    }
    var iQuality = 0, iPlump = 0, iSauce = 0, iService = 0;

    if (__g_bIsPostingComment) {
        return false;
    }
    __g_bIsPostingComment = true;

    if (obForm.quality) {

        var iQuality = obForm.quality.value;
        var iPlump = obForm.plump.value;
        var iSauce = obForm.sauce.value;
        var iService = obForm.service.value;
    }

    var strName  = "";
    var strCap   = "";
    var strEmail = "";
    var strIsLoggedIn = obForm.isLoggedIn.value;

    if (strIsLoggedIn.length == 0) {
        strName  = obForm.username.value.trim();
        strCap   = obForm.captcha.value.trim();
        strEmail = obForm.email.value.trim();
    }

    var strComm  = obForm.comment.value.trim();

    var bHasErrs = false;
    var strErrMsg = "Please fill in the indicated fields and try again";

    var obNameErr  = document.getById("nameError");
    var obEmailErr = document.getById("emailError");
    var obCommErr  = document.getById("commentError");
    var obCapErr   = document.getById("capError");
    var obCommMsg  = document.getById("comment_msg");

    if (obForm.isLoggedIn.value.length == 0) {
        obNameErr.style.display  = "none";
        obEmailErr.style.display = "none";
        obCapErr.style.display   = "none";
    }

    obCommErr.style.display  = "none";

    if (strIsLoggedIn.length == 0 && strName.length == 0) {
        obNameErr.innerHTML = "You must provide your name";
        obNameErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && window.RegExp && !(/^[ 0-9a-z\._\-&]+$/i.test(strName))) {
        obNameErr.innerHTML = "Only letters, numbers, dashes, underscores and dots are permitted in your name";
        obNameErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && strEmail.length == 0) {
        obEmailErr.innerHTML = "You must provide your email address";
        obEmailErr.style.display = "block";
        bHasErrs = true;
    }
    else if ((strIsLoggedIn.length == 0) && (strEmail.indexOf('@') == -1 || strEmail.indexOf('.') == -1)) {
        obEmailErr.innerHTML = "Your email is not correctly formatted";
        obEmailErr.style.display = "block";
        bHasErrs = true;
    }
    if (strComm.length == 0) {
        obCommErr.innerHTML = "You must provide a comment";
        obCommErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && strCap.length == 0) {
        obCapErr.innerHTML = "You must enter the code provided";
        obCapErr.style.display = "block";
        bHasErrs = true;
    }
    if (iEstabId.length == 0 || isNaN(iEstabId)) {
        if (bHasErrs)
            strErrMsg += "<br />The establishment ID is empty or not a number";
        else
            strErrMsg = "The establishment ID is empty or not a number";
        bHasErrs = true;
    }

    if (bHasErrs) {
        obCommMsg.innerHTML = strErrMsg;
        obCommMsg.style.color = "#aa0000";
        obCommMsg.style.display = "block";
        return false;
    }

    obForm.target = "comment_post_iframe";
    obForm.is_iframe.value = "true";
    return true;
}

function commentVote(iCommentId, bIsUp) {

    var obEstab = new Establishment();
    var obRetVal = obEstab.commentVote(iCommentId, bIsUp);
    if (obRetVal.is_error) {
        if (obRetVal.invalidParams) {
            alert("We were unable to post your vote.");
        }
        else if (obRetVal.notLoggedIn) {
            alert("You must be logged in to vote on comments");
        }
        else if (obRetVal.alreadyVoted) {
            alert("You have already voted on this comment");
        }
        return;
    }
    if (obRetVal.avg_user_rating) {
        document.getById("avg_user_rating").innerHTML = obRetVal.avg_user_rating;
    }
    if (obRetVal.weight) {
        var strWeight = obRetVal.weight;
        if (strWeight.charAt(0) != '-')
            strWeight = '+' + strWeight;
        document.getById("comm_weight_" + iCommentId).innerHTML = strWeight;
    }
}

function commentPageLoaded() {
    var obComm = document.getById("user_comments");
    var commentFrame = document.getById("comment_iframe");
    var strContent = commentFrame.contentWindow.document.getElementById("comments").innerHTML;
    var strLinks = commentFrame.contentWindow.document.getElementById("links").innerHTML;
    var obPagerPlace = document.getById("pager_place");
    if (obPagerPlace) {
        obPagerPlace.innerHTML = strLinks;
    }
    obComm.innerHTML = strContent;
    if (Shadowbox && window.__g_shadowBoxInited) {
        Shadowbox.clearCache();
        Shadowbox.setup();
    }
}

var SGL_ESTAB_CUR_PAGE = 1;

function openCommentsPage(iPageId) {

    SGL_ESTAB_CUR_PAGE = iPageId;

    var iEstabId = 0;
    var bIsNews = false;
    if (document.comment_form.establishment_id) {
        iEstabId = document.comment_form.establishment_id.value;
    }
    else {
        iEstabId = document.comment_form.news_id.value;
        bIsNews = true;
    }

    var commentFrame = document.getById("comment_iframe");
    commentFrame.src = SGL_JS_GLOBALURL + "/establishment/establishmentview/action/get_comments/frmEstablishmentID/" + iEstabId + "/pageID/" + iPageId + "/";
}

function oldPostComment(obForm) {

    var iEstabId = 0;
    var bIsNews = false;
    if (obForm.establishment_id) {
        iEstabId = obForm.establishment_id.value;
    }
    else {
        iEstabId = obForm.news_id.value;
        bIsNews = true;
    }
    var iQuality = 0, iPlump = 0, iSauce = 0, iService = 0;

    if (obForm.quality) {

        var iQuality = obForm.quality.value;
        var iPlump = obForm.plump.value;
        var iSauce = obForm.sauce.value;
        var iService = obForm.service.value;
    }

    var strName  = "";
    var strCap   = "";
    var strEmail = "";
    var strIsLoggedIn = obForm.isLoggedIn.value;

    if (strIsLoggedIn.length == 0) {
        strName  = obForm.username.value.trim();
        strCap   = obForm.captcha.value.trim();
        strEmail = obForm.email.value.trim();
    }

    var strComm  = obForm.comment.value.trim();

    var bHasErrs = false;
    var strErrMsg = "Please fill in the indicated fields and try again";

    var obNameErr  = document.getById("nameError");
    var obEmailErr = document.getById("emailError");
    var obCommErr  = document.getById("commentError");
    var obCapErr   = document.getById("capError");
    var obCommMsg  = document.getById("comment_msg");

    if (obForm.isLoggedIn.value.length == 0) {
        obNameErr.style.display  = "none";
        obEmailErr.style.display = "none";
        obCapErr.style.display   = "none";
    }

    obCommErr.style.display  = "none";

    if (strIsLoggedIn.length == 0 && strName.length == 0) {
        obNameErr.innerHTML = "You must provide your name";
        obNameErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && window.RegExp && !(/^[ 0-9a-z\._\-&]+$/i.test(strName))) {
        obNameErr.innerHTML = "Only letters, numbers, dashes, underscores and dots are permitted in your name";
        obNameErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && strEmail.length == 0) {
        obEmailErr.innerHTML = "You must provide your email address";
        obEmailErr.style.display = "block";
        bHasErrs = true;
    }
    else if ((strIsLoggedIn.length == 0) && (strEmail.indexOf('@') == -1 || strEmail.indexOf('.') == -1)) {
        obEmailErr.innerHTML = "Your email is not correctly formatted";
        obEmailErr.style.display = "block";
        bHasErrs = true;
    }
    if (strComm.length == 0) {
        obCommErr.innerHTML = "You must provide a comment";
        obCommErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && strCap.length == 0) {
        obCapErr.innerHTML = "You must enter the code provided";
        obCapErr.style.display = "block";
        bHasErrs = true;
    }
    if (iEstabId.length == 0 || isNaN(iEstabId)) {
        if (bHasErrs)
            strErrMsg += "<br />The establishment ID is empty or not a number";
        else
            strErrMsg = "The establishment ID is empty or not a number";
        bHasErrs = true;
    }

    if (bHasErrs) {
        obCommMsg.innerHTML = strErrMsg;
        obCommMsg.style.color = "#aa0000";
        obCommMsg.style.display = "block";
        return false;
    }

    var obEstab = new Establishment();
    var obRetVal = obEstab.postComment(iEstabId, iQuality, iPlump, iSauce, iService, strName, strEmail, strComm, strCap, strIsLoggedIn, (bIsNews) ? 'news' : 'establishment');

    if (obRetVal.is_error) {
        if (obRetVal.notLoggedIn) {
            location.href = SGL_JS_WEBROOT + "/user/login/redir/" + escape(location.href) + "/";
        }
        if (obRetVal.username) {
            obNameErr.innerHTML = obRetVal.username;
            obNameErr.style.display = "block";
        }
        if (obRetVal.email) {
            obEmailErr.innerHTML = obRetVal.email;
            obEmailErr.style.display = "block";
        }
        if (obRetVal.comment) {
            obCommErr.innerHTML = obRetVal.comment;
            obCommErr.style.display = "block";
        }
        if (obRetVal.captcha) {
            obCapErr.innerHTML = obRetVal.captcha;
            obCapErr.style.display = "block";
        }
        obCommMsg.innerHTML = obRetVal.message;
        obCommMsg.style.color = "#aa0000";
        obCommMsg.style.display = "block";
        loadNewCapImage();
        return false;
    }

    //update total user rating
    if (obRetVal.avg_user_rating) {
        recalcAvgRating(obRetVal.avg_user_rating);
    }

    loadNewCapImage();
    clearCommentForm(obForm);
    oldOpenCommentsPage(1);

    if (strIsLoggedIn.length == 0 && (iQuality != 0 && iPlump != 0 && iSauce != 0 && iService != 0)) {
        document.getById("review_rating_area").innerHTML = "A Guest rating has already been posted for this establishment " +
            "from your computer or IP address. You can leave a comment without a rating, or <a href=\"{globalUrl}/user/login/\">Login</a> " +
            "or <a href=\"{globalUrl}/user/register/\">Sign Up</a> for a HotWings.caÂ account.";
    }

    return false;
}

function writeComment(obComment, iDepth, bIsNews) {

    var obCurCom = obComment;
    var strCommentId = obCurCom.comments_id;
    var strName   = (obCurCom.username) ? htmlEscape(obCurCom.username) : "";
    var strImage  = SGL_JS_IMAGESDIR + "/profiles/16x16_clucker.gif";
    var strId     = obCurCom.user_id;
    var strDate   = obCurCom.num_days + " days ago";
    var strWeight = obCurCom.weight;

    if (strWeight.charAt(0) != '-') {
        strWeight = '+' + strWeight;
    }

    if (obCurCom.num_days > 30) {
        strDate = "on " + obCurCom.time_posted;
    }
    else if (obCurCom.num_days == 0) {
        strDate = "Today";
    }
    else if (obCurCom.num_days == 1) {
        strDate = "Yesterday";
    }

    var strRating = "Not Rated";
    if (obCurCom.total_rating != 0) {
        strRating = getRatingImages(obCurCom.total_rating) + "<br />" + obCurCom.total_rating + "/5";
    }

    if (strId != 0) {
        strName = obCurCom.usr_name;
        strImage = SGL_JS_IMAGESROOT + "/user/media/name/" + strName + "/size/mini/";
        if (strId == SGL_SESSION_UID)
            strName = "<a href=\"" + SGL_JS_WEBROOT + "/user/profile/name/" + strName + "/\" style=\"color: #ff0000;\">You</a>";
        else
            strName = "<a href=\"" + SGL_JS_WEBROOT + "/user/profile/name/" + strName + "/\">" + strName + "</a>";
    }
    else {
        strName = '(Guest) ' + strName;
    }

    var rgbColor = new Array(0xeb, 0xeb, 0x99);
    var replyLine = '';
    var commentStyle = '';

    if (iDepth != 0) {
        //its a reply...
        var strRating = "";
        rgbColor[0] = 0xee;
        rgbColor[1] = 0xee;
        rgbColor[2] = 0xee;

        var replyId = obCurCom.reply_comment;
        var replyTo = '(Guest) ' + obCurCom.reply_name;
        if (obCurCom.reply_user_id != 0) {
            replyTo = obCurCom.reply_user;
        }
        replyLine = "<div style=\"padding-bottom:10px;font-size:11px;\"><img src=\"" + SGL_JS_IMAGESDIR +
            "/reply.gif\" alt=\"\" width=\"9\" height=\"12\" style=\"padding-right:5px;\" />" +
            "<a href=\"#" + replyId + "\">Replying to " + replyTo + "</a></div>";
        commentStyle = "padding-left:13px;";
    }
    var leftPad = iDepth * 20;
    if (iDepth > 4) {
        leftPad = 4 * 20;
    }

    var bgColor = rgbColor[0].toString(16) + rgbColor[1].toString(16) + rgbColor[2].toString(16);

    var strText = nl2br(htmlEscape(obCurCom.comment));
    var imgThumbup = SGL_JS_IMAGESDIR + "/thumb_up.gif";
    var imgThumbdown = SGL_JS_IMAGESDIR + "/thumb_down.gif";

    var strCommHtml = "<div style=\"padding-left:" + leftPad + "px;\"><a name=\"" + strCommentId + "\"></a><div style=\"height: 20px;\">&nbsp;</div><div style=\"background-color: #" + bgColor + ";\"><table style=\"width: 100%;\"><tr><td style=\"width: 16px;\"><img src=\"" + strImage + "\" width=\"16\" height=\"16\" alt=\"\" /></td><td>&nbsp;by " + strName + " " + strDate +
        ((!bIsNews) ? " - <a href=\"javascript:void(0);\" style=\"font-size: 11px;\" onclick=\"showHideReport(" + strCommentId + "); return false;\">Report Abuse</a>" : "") + "</td>" +
        "<td align=\"right\" id=\"comm_weight_" + strCommentId + "\" style=\"font-size: 15px;\">" + strWeight + "</td><td align=\"right\" valign=\"middle\" style=\"width: 40px; height: 19px;\"><div style=\"height: 19px;\"><a href=\"javascript:void(0);\" onclick=\"commentVote(" + strCommentId + ", true); return false;\"><img src=\"" + imgThumbup + "\" alt=\"Up\" width=\"16\" height=\"19\" border=\"0\" title=\"Agree\" /></a> <a href=\"javascript:void(0);\" onclick=\"commentVote(" + strCommentId + ", false); return false;\"><img src=\"" + imgThumbdown + "\" alt=\"Down\" width=\"16\" height=\"19\" border=\"0\" title=\"Disagree\" /></a></div></td></tr></table></div>";
    if (bIsNews) {
        strCommHtml += "<div>" + strText + "</div>";
    }
    else {
        strCommHtml += "<table style=\"width: 100%;\"><tr><td>" + replyLine + "<div style=\"" + commentStyle + "\">" + strText + "</div></td><td valign=\"top\" align=\"center\" style=\"width: 60px; font-weight: bold; font-size: 12px;\">" + strRating + "</td></tr></table>";
    }
    strCommHtml += "<div align=\"right\"><a href=\"javascript:void(0);\" onclick=\"showHideReply(" + strCommentId + "); return false;\">Reply</a></div>";
    strCommHtml += "<div id=\"report_" + strCommentId + "\"></div><div id=\"reply_" + strCommentId + "\"></div></div>";
    return strCommHtml;
}

function oldOpenCommentsPage(iPageId) {

    SGL_ESTAB_CUR_PAGE = iPageId;

    var iEstabId = 0;
    var bIsNews = false;
    if (document.comment_form.establishment_id) {
        iEstabId = document.comment_form.establishment_id.value;
    }
    else {
        iEstabId = document.comment_form.news_id.value;
        bIsNews = true;
    }

    var obEstab = new Establishment();
    var obRetVal = obEstab.getCommentsPage(iEstabId, iPageId, (bIsNews) ? 'news' : 'establishment');

    if (obRetVal.pager) {
        var obPagerPlace = document.getById("pager_place");
        obPagerPlace.innerHTML = obRetVal.links;
    }

    var obComm = document.getById("user_comments");
    obComm.innerHTML = "";

    for (var i = 0; i < obRetVal.comments.length; ++i) {

        var obCurCom = obRetVal.comments[i];
        obComm.innerHTML += writeComment(obCurCom, 0, bIsNews);
        if (obRetVal.replies && obRetVal.replies[obCurCom.comments_id]) {
            for (var j = 0; j < obRetVal.replies[obCurCom.comments_id].length; ++j) {
                var obCurReply = obRetVal.replies[obCurCom.comments_id][j];
                obComm.innerHTML += writeComment(obCurReply, obCurReply.depth, bIsNews);
            }
        }
    }
}

var __g_currentReport = 0;

function showHideReport(commentsId) {
    var currentReport = __g_currentReport;
    if (__g_currentReport != 0)
        closeAbuseReport();
    if (commentsId != currentReport)
        openAbuseReport(commentsId);
}

function openAbuseReport(commentsId) {

    var obReport = document.getById("report_abuse");
    var obCommentAbuse = document.getById("report_" + commentsId);
    var strReport = obReport.innerHTML;

    obReport.innerHTML = "";
    obCommentAbuse.innerHTML = strReport;

    var obForm = document.abuse_report;
    obForm.comments_id.value = commentsId;

    __g_currentReport = commentsId;
}

function closeAbuseReport(bShowSuccess) {

    if (__g_currentReport == 0)
        return;

    var obReport = document.getById("report_abuse");
    var obCommentAbuse = document.getById("report_" + __g_currentReport);
    var strReport = obCommentAbuse.innerHTML;

    obCommentAbuse.innerHTML = "";
    obReport.innerHTML = strReport;

    if (bShowSuccess) {
        obCommentAbuse.innerHTML = "<span style=\"color: #ff0000; padding-left: 20px;\">Your report has been submitted successfully!</span>";
    }

    var obForm = document.abuse_report;
    obForm.comments_id.value = 0;

    if (obForm.isLoggedIn.value.length == 0) {
        obForm.name.value = "";
        obForm.email.value = "";
        obForm.captcha.value = "";
    }

    obForm.reason.value = "";

    var obRepMsg    = document.getById("report_msg");
    var obNameErr   = document.getById("repNameError");
    var obEmailErr  = document.getById("repEmailError");
    var obReasErr   = document.getById("repReasonError");
    var obCapErr    = document.getById("repCapError");

    if (obForm.isLoggedIn.value.length == 0) {
        obNameErr.style.display = "none";
        obEmailErr.style.display = "none";
        obCapErr.style.display = "none";
    }
    obRepMsg.style.display = "none";
    obReasErr.style.display = "none";


    __g_currentReport = 0;
}

function reportAbuse(obForm) {

    var iCommentsId = __g_currentReport;

    var strName    = "";
    var strEmail   = "";
    var strCaptcha = "";
    var strIsLoggedIn = obForm.isLoggedIn.value;

    if (strIsLoggedIn.length == 0) {
        strName     = obForm.name.value.trim();
        strEmail    = obForm.email.value.trim();
        strCaptcha  = obForm.captcha.value.trim();
    }

    var strReason   = obForm.reason.value.trim();

    var obRepMsg    = document.getById("report_msg");
    var obNameErr   = document.getById("repNameError");
    var obEmailErr  = document.getById("repEmailError");
    var obReasErr   = document.getById("repReasonError");
    var obCapErr    = document.getById("repCapError");

    if (obForm.isLoggedIn.value.length == 0) {
        obNameErr.style.display = "none";
        obEmailErr.style.display = "none";
        obCapErr.style.display = "none";
    }
    obReasErr.style.display = "none";
    obRepMsg.style.display = "none";

    var strErrMsg = "Please fill in the indicated fields and try again";
    var bHasErrs  = false;

    if (strIsLoggedIn.length == 0 && strName.length == 0) {
        obNameErr.innerHTML = "You must provide your name";
        obNameErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && strEmail.length == 0) {
        obEmailErr.innerHTML = "You must provide your email address";
        obEmailErr.style.display = "block";
        bHasErrs = true;
    }
    if (strReason.length == 0) {
        obReasErr.innerHTML = "You must provide a reason";
        obReasErr.style.display = "block";
        bHasErrs = true;
    }
    if (strIsLoggedIn.length == 0 && strCaptcha.length == 0) {
        obCapErr.innerHTML = "You must enter the code provided";
        obCapErr.style.display = "block";
        bHasErrs = true;
    }
    if (iCommentsId == 0 || isNaN(iCommentsId)) {
        if (bHasErrs)
            strErrMsg += "<br />The comment ID is empty or not a number";
        else
            strErrMsg = "The comment ID is empty or not a number";
        bHasErrs = true;
    }

    if (bHasErrs) {
        obRepMsg.innerHTML = strErrMsg;
        obRepMsg.style.display = "block";
        return false;
    }

    var obEstab = new Establishment();
    var obRetVal = obEstab.reportAbuse(iCommentsId, strName, strEmail, strReason, strCaptcha, strIsLoggedIn);

    if (obRetVal.is_error) {
        if (obRetVal.notLoggedIn) {
            location.href = SGL_JS_WEBROOT + "/user/login/redir/" + escape(location.href) + "/";
        }
        if (obRetVal.name) {
            obNameErr.innerHTML = obRetVal.name;
            obNameErr.style.display = "block";
        }
        if (obRetVal.email) {
            obEmailErr.innerHTML = obRetVal.email;
            obEmailErr.style.display = "block";
        }
        if (obRetVal.reason) {
            obReasErr.innerHTML = obRetVal.reason;
            obReasErr.style.display = "block";
        }
        if (obRetVal.captcha) {
            obCapErr.innerHTML = obRetVal.captcha;
            obCapErr.style.display = "block";
        }
        obRepMsg.innerHTML = obRetVal.message;
        obRepMsg.style.display = "block";
        loadNewCapImage();
        return;
    }

    loadNewCapImage();
    closeAbuseReport(true);
}

var __g_currentReply = 0;

function showHideReply(commentsId) {
    var currentReply = __g_currentReply;
    if (__g_currentReply != 0) {
        if (document.comment_reply.comment.value.trim() != '') {
            document.comment_reply.comment.focus();
            return;
        }
        closeReply();
    }
    if (commentsId != __g_currentReply)
        openReply(commentsId);
}

function openReply(commentsId) {

    if (document.comment_form.isLoggedIn.value.length == 0) {
        location.href = SGL_JS_GLOBALURL + "/user/login/redir/" + escape(location.href).replace(/\//g, '%252F') + "/";
    }
    else {
        var obReply = document.getById("reply_form");
        var obCommentReply = document.getById("reply_" + commentsId);
        var strReply = obReply.innerHTML;

        obCommentReply.innerHTML = strReply;
        obReply.innerHTML = "";

        var obForm = document.comment_reply;
        obForm.comments_id.value = commentsId;
        obForm.comment.focus();

        __g_currentReply = commentsId;
    }
}

function closeReply(bShowSuccess) {

    if (__g_currentReply == 0)
        return;

    var obReply = document.getById("reply_form");
    var obCommentReply = document.getById("reply_" + __g_currentReply);
    var strReply = obCommentReply.innerHTML;

    var obComErr = document.getById("replyCommentError");
    var obImgErr = document.getById("replyImageError");
    var obErrMsg = document.getById("reply_msg");

    if (obComErr && obImgErr && obErrMsg) {
        obComErr.innerHTML = obImgErr.innerHTML = obErrMsg.innerHTML = "";
        obComErr.style.display = "none";
        obImgErr.style.display = "none";
        obErrMsg.style.display = "none";
    }

    obCommentReply.innerHTML = "";
    obReply.innerHTML = strReply;

    var obForm = document.comment_reply;
    obForm.comments_id.value = 0;
    obForm.comment.value = "";
    showTextareaLimit(obForm.comment, document.getById('replyNumChars'), 500);

    __g_currentReply = 0;
}

var __g_isPostingReply = false;

function postReplyError(obError) {
    __g_isPostingReply = false;

    var obComErr = document.getById("replyCommentError");
    var obImgErr = document.getById("replyImageError");
    var obErrMsg = document.getById("reply_msg");

    if (obError.comment) {
        obComErr.innerHTML = obError.comment;
        obComErr.style.display = "block";
    }
    if (obError.image) {
        obImgErr.innerHTML = obError.image;
        obImgErr.style.display = "block";
    }
    obErrMsg.innerHTML = obError.message;
    obErrMsg.style.display = "block";
}

function replyPosted(iCommentId) {

    __g_isPostingReply = false;
    closeReply();
    openCommentsPage(SGL_ESTAB_CUR_PAGE);
}

function postReply(obForm) {

    var iParentId = obForm.comments_id.value;
    var strComment = obForm.comment.value;

    var obComErr = document.getById("replyCommentError");
    var obImgErr = document.getById("replyImageError");
    var obErrMsg = document.getById("reply_msg");

    obComErr.innerHTML = obImgErr.innerHTML = obErrMsg.innerHTML = "";
    obComErr.style.display = "none";
    obImgErr.style.display = "none";
    obErrMsg.style.display = "none";

    if (strComment.trim().length == 0) {
        obErrMsg.innerHTML = "Please fill in the indicated fields and try again.";
        obErrMsg.style.display = "block";
        obComErr.innerHTML = "You must provide a comment";
        obComErr.style.display = "block";
        obForm.comment.focus();
        return false;
    }
    if (__g_isPostingReply)
        return false;
    __g_isPostingReply = true;
    return true;
}

function oldPostReply(obForm) {
    var iParentId = obForm.comments_id.value;
    var strComment = obForm.comment.value;

    var obEstab = new Establishment();
    var obRetVal = obEstab.postReply(iParentId, strComment);

    closeReply();

    oldOpenCommentsPage(SGL_ESTAB_CUR_PAGE);

    if (obRetVal.comments_id) {
        location.href = "#" + obRetVal.comments_id;
    }
}


function showTextareaLimit(obTextArea, obLimitPlace, iNumLimit) {

    var nCurChars = obTextArea.value.trim().length;
    obLimitPlace.innerHTML = nCurChars;

    if (nCurChars > iNumLimit) {
        obLimitPlace.style.color = "#ff0000";
        obLimitPlace.style.fontWeight = "bold";
    }
    else {
        obLimitPlace.style.color = '';
        obLimitPlace.style.fontWeight = "";
    }
}

function addToFavourites(estabId) {

    var obEstab = new Establishment();
    var retVal = obEstab.addToFavourites(estabId);

    if (retVal.notLoggedIn) {
        location.href = SGL_JS_GLOBALURL + "/user/login/redir/" + escape(location.href) + "/";
    }

    var obFavMsg = document.getById("fav_msg");
    var obFavArea = document.getById("fav_area");
    if (!obFavMsg || !obFavArea)
        return;

    obFavMsg.innerHTML = "";;
    obFavMsg.style.display = "none";

    if (retVal.is_error) {
        obFavMsg.innerHTML = retVal.message;
        obFavMsg.style.display = "block";
    }

    obFavArea.innerHTML = "<a href=\"javascript:void(0);\" onclick=\"removeFromFavourites(" + estabId + ");return false;\">Remove this from my favourites</a>";
}

function removeFromFavourites(estabId) {

    var obEstab = new Establishment();
    var retVal = obEstab.removeFromFavourites(estabId);

    if (retVal.notLoggedIn) {
        location.href = SGL_JS_GLOBALURL + "/user/login/redir/" + escape(location.href) + "/";
    }

    var obFavMsg = document.getById("fav_msg");
    var obFavArea = document.getById("fav_area");
    if (!obFavMsg || !obFavArea)
        return;

    obFavMsg.innerHTML = "";;
    obFavMsg.style.display = "none";

    if (retVal.is_error) {
        obFavMsg.innerHTML = retVal.message;
        obFavMsg.style.display = "block";
    }

    obFavArea.innerHTML = "<a href=\"javascript:void(0);\" onclick=\"addToFavourites(" + estabId + ");return false;\">Become a Fan</a>";
}
