function show_hide_reviews() {
    if (document.getElementById("reviews_container_row_id")) {
        if (document.getElementById("reviews_container_row_id").style.display == '') {
            document.getElementById("reviews_container_row_id").style.display = 'none';
            document.getElementById('show_hide_reviews_link').innerHTML = 'Show Other Reviews';
        }
        else {
            document.getElementById("reviews_container_row_id").style.display = '';
            document.getElementById('show_hide_reviews_link').innerHTML = 'Hide Other Reviews';
        }
    }
}


function show_comment_row(comment_row_id, textarea_id) {
    var customer_is_logged_in = check_is_customer_logged_in();
    if (customer_is_logged_in == 1) {
        document.getElementById(comment_row_id).style.display = '';
        document.getElementById(textarea_id).focus();
    }
    else {
        document.getElementById(comment_row_id).style.display = 'none';
        redirect_to_login_section();
    }
}


function hide_comment_row(comment_row_id) {
    document.getElementById(comment_row_id).style.display = 'none';
}


function show_hide_review_all_comments(review_all_comment_row_id) {
    var review_comments_visibility = document.getElementById(review_all_comment_row_id).style.display;
    if (review_comments_visibility == 'none') {
        document.getElementById(review_all_comment_row_id).style.display = '';
    }
    else {
        document.getElementById(review_all_comment_row_id).style.display = 'none';
    }
}


function get_customer_info() {
    var poststr = "essence=" + "GET_CUSTOMER_INFO";
    var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
    var customer_info = ReviewAjaxDataReceiverObj.getData("GET_CUSTOMER_INFO");
    return customer_info;
}


function check_is_customer_logged_in() {
    var poststr = "essence=" + "CHECK_IS_CUSTOMER_LOGGED_IN";
    var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
    var customer_is_logged_in = ReviewAjaxDataReceiverObj.getData("CHECK_IS_CUSTOMER_LOGGED_IN");
    return customer_is_logged_in;
}


function check_is_customer_already_evaluate_review(review_id) {
    var poststr = "essence=" + "CHECK_IS_CUSTOMER_ALREADY_EVALUATE_REVIEW" +
                  "&review_id=" + review_id;
    var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
    var customer_evaluation_check_res_hash = ReviewAjaxDataReceiverObj.getData("CHECK_IS_CUSTOMER_ALREADY_EVALUATE_REVIEW");
    return customer_evaluation_check_res_hash;
}


/*
function open_all_reviews_if_redirected() {
    var url_hash_str = window.location.hash ;
    if (url_hash_str.indexOf("#evaluate_review_") != -1) {
        show_hide_reviews();
    }
}
window.onload = open_all_reviews_if_redirected;
*/


function evaluate_review(review_id, valuation, model_id, model_type) {
    var customer_evaluation_check_res_hash = check_is_customer_already_evaluate_review(review_id);
    if (customer_evaluation_check_res_hash['customer_is_logged_in'] == 1 &&
        customer_evaluation_check_res_hash['customer_evaluated_review'] == 0) {
        var poststr = "essence=" + "EVALUATE_REVIEW" +
                      "&review_id=" + review_id +
                      "&valuation=" + valuation +
                      "&model_id=" + model_id +
                      "&model_type=" + model_type;
        var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
        var valuation_res_hash = ReviewAjaxDataReceiverObj.getData("EVALUATE_REVIEW");

        /* reload displaying of total marks. */
        document.getElementById("mark_description_cell_" + review_id).innerHTML = valuation_res_hash['total_marks'] + ' ratings';

        REVIEWS_COMMENTS_RATING_DATA[review_id]['total_points'] = valuation_res_hash['total_points'];
        REVIEWS_COMMENTS_RATING_DATA[review_id]['total_marks'] = valuation_res_hash['total_marks'];

        document.getElementById("evaluation_login_msg_cell_" + review_id).style.display = 'none';
        document.getElementById("evaluation_exists_msg_add_cell_" + review_id).style.display = 'none';
        document.getElementById("evaluation_thanks_msg_cell_" + review_id).style.display = '';
        document.getElementById("evaluation_msg_row_" + review_id).style.display = '';
        /* reload stars rating after valuation. */
        display_review_stars_rating(review_id);
    }
    else if (customer_evaluation_check_res_hash['customer_is_logged_in'] == 0) {
        document.getElementById("evaluation_login_msg_cell_" + review_id).style.display = '';
        document.getElementById("evaluation_exists_msg_add_cell_" + review_id).style.display = 'none';
        document.getElementById("evaluation_thanks_msg_cell_" + review_id).style.display = 'none';
        document.getElementById("evaluation_msg_row_" + review_id).style.display = '';
    }
    else if (customer_evaluation_check_res_hash['customer_is_logged_in'] == 1 &&
             customer_evaluation_check_res_hash['customer_evaluated_review'] != 0) {
        document.getElementById("evaluation_login_msg_cell_" + review_id).style.display = 'none';
        document.getElementById("evaluation_exists_msg_add_cell_" + review_id).style.display = '';
        document.getElementById("evaluation_thanks_msg_cell_" + review_id).style.display = 'none';
        document.getElementById("evaluation_msg_row_" + review_id).style.display = '';
    }
}


function save_customer_comment(field_id, review_id, model_id, model_type) {
    var entered_text = document.getElementById(field_id).value;
    var empty_reg_exp = new RegExp('^[ \\s]*$');

    if (entered_text.length > 500) {
        alert("Comment can not be more than 500 characters. You entered " + entered_text.length + " characters.");
    }
    else if (empty_reg_exp.test(entered_text)) {
        alert("Please enter comment.");
    }
    else {
        var poststr = "comment_text=" + escape(encodeURI(document.getElementById(field_id).value)) +
                      "&review_id=" + review_id + "&essence=" + "SAVE_COMMENT" +
                      "&model_id=" + model_id + "&model_type=" + model_type;
        var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr, review_id);
        var current_comment_data = ReviewAjaxDataReceiverObj.getData("SAVE_COMMENT");

        var review_current_comments_row_id = "review_" + review_id + "_current_comments_row";
        var review_comments_link_row = "comments_link_row_" + review_id;

        var review_current_comments_cell_id = "review_" + review_id + "_current_comments_cell";
        var comment_box_row_id = "comment_row_" + review_id;
        var review_all_comments_row_id = "review_" + review_id + "_all_comments";

        document.getElementById(review_current_comments_row_id).style.display = '';
        document.getElementById(review_comments_link_row).style.display = '';

        var entered_comment = document.getElementById(field_id).value;
        entered_comment = htmlspecialchars(entered_comment);

        var current_comment_ui_id = parseInt(REVIEWS_COMMENTS_RATING_DATA[review_id]['max_review_comment_id']) + 1;
        REVIEWS_COMMENTS_RATING_DATA[review_id]['max_review_comment_id'] = current_comment_ui_id;

        var current_comment_title_id = "comment_title_" + current_comment_ui_id + "_" + review_id;
        var current_comment_desc_id = "comment_desc_" + current_comment_ui_id + "_" + review_id;
        var current_comment_rating_id = "comment_rating_" + current_comment_ui_id + "_" + review_id;
        var current_comment_evaluation_msg_id = "comment_evaluation_login_msg_" + current_comment_ui_id + "_" + review_id;
        var current_comment_thums_down_id = "comment_thums_down_" + current_comment_ui_id + "_" + review_id;
        var current_comment_thums_up_id = "comment_thums_up_" + current_comment_ui_id + "_" + review_id;

        var remove_comment_html = ' - <u style="color: #0000CC; cursor: pointer;" onClick="remove_review_comment(' + review_id + ', ' + current_comment_data['comment_id'] + ', ' + current_comment_ui_id + ');">Remove comment</u>';

        var entered_comment_html_rows =
            '<div style="border: 0px solid #000000;">' +
			'<div style="position: relative; width: 100%; padding: 0px; height: 20px; margin-top: 0px; border: 0px solid red; vertical-align: bottom;" id="' + current_comment_title_id + '">' +
				'<table border="0" cellpadding="0" cellspacing="0" width="100%">' +
					'<tr valign="middle">' +
						'<td style="width: 50%; height: 20px; vertical-align: bottom;" nowrap>' +
							'<u>By <b>' + current_comment_data['fn'] + '</b> from <b>' + current_comment_data['country'] + '</b> on <b>' + current_comment_data['crt_date'] + '</b></u>' + remove_comment_html +
						'</td>' +

						'<td align="right" id="' + current_comment_rating_id + '" style="width: 7%; font-weight: bold; color: #707070; padding-right: 3px;">0</td>' +
						'<td align="left" style="width: 3%">' +
                            '<img id="' + current_comment_thums_down_id + '"' +
                                  'onMouseOver="document.getElementById(\'' + current_comment_thums_down_id + '\').src=\'/i/thumbs_down_a.gif\'"' +
                                  'onMouseOut="document.getElementById(\'' + current_comment_thums_down_id + '\').src=\'/i/thumbs_down.gif\'"' +
                                  'onClick="evaluate_comment('+ review_id + ', ' + current_comment_data['comment_id'] + ', ' + current_comment_ui_id + ', -1, \'' +model_id + '\', \'' + model_type +'\')"' +
                                  'src="/i/thumbs_down.gif"' +
                                  'title="Poor comment"' +
                                  'style="cursor: pointer; border: 0px solid red;"/></td>' +

						'<td align="left" style="width: 3%">' +
                            '<img id="' + current_comment_thums_up_id + '"' +
                                  'onMouseOver="document.getElementById(\'' + current_comment_thums_up_id + '\').src=\'/i/thumbs_up_a.gif\'"' +
                                  'onMouseOut="document.getElementById(\'' + current_comment_thums_up_id + '\').src=\'/i/thumbs_up.gif\'"' +
                                  'onClick="evaluate_comment('+ review_id + ', ' + current_comment_data['comment_id'] + ', ' + current_comment_ui_id + ', 1, \'' +model_id + '\', \'' + model_type +'\')"' +
                                  'src="/i/thumbs_up.gif"' +
                                  'title="Good comment"' +
                                  'style="cursor: pointer; border: 0px solid red;"/></td>' +

						'<td valign="middle" id="' + current_comment_evaluation_msg_id + '" colspan="2" style="visibility: hidden; align: left; width: 37%; padding: 0px 0px 0px 3px; color: red;" nowrap>' +
							'&nbsp;' +
						'</td>' +
                    '</tr>' +
                '</table>' +
            '</div>' +
            '<div id="' + current_comment_desc_id + '" style="vertical-align: top; border: 0px solid green; position: relative; padding-bottom: 7px;">' + entered_comment + '</div>' +
            '</div>';

        /* Display entered comment. */
        document.getElementById(review_current_comments_cell_id).innerHTML =
            entered_comment_html_rows + document.getElementById(review_current_comments_cell_id).innerHTML;

        if (REVIEWS_COMMENTS_RATING_DATA[review_id]['existent_comments_qty'] == 0) {
            /* there were no comments for this review, so it's necessary to hide "This review hasn't comments." row */
            document.getElementById('review_' + review_id + '_existent_comments_row').style.display = 'none';
        }

        document.getElementById(field_id).value = '';
        document.getElementById(comment_box_row_id).style.display = 'none';
        document.getElementById(review_all_comments_row_id).style.display = '';
    }
}


function htmlspecialchars(text) {
    var chars = Array("&", "<", ">", '"', "'");
    var replacements = Array("&amp;", "&lt;", "&gt;", "&quot;", "'");
    for (var i=0; i<chars.length; i++) {
        var re = new RegExp(chars[i], "gi");
        if(re.test(text)) {
            text = text.replace(re, replacements[i]);
        }
    }
    return text;
}


function redirect_to_login_section() {
    var query_str = window.location.search;
    var current_url_path = window.location.pathname;
    var this_page_url = current_url_path + query_str;

    var cookie_string = "redirect_url=" + escape(this_page_url);
    //set root path
    cookie_string += "; path=" + escape ( "/" );
    document.cookie = cookie_string;

    window.location.href = REVIEWS_COOKIE_PATH + "/account.pl";
}


function describe_review_rating(stars_qty, review_id) {
    if (stars_qty == 1) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_" + review_id).style.display = '';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';

        document.getElementById('mark_description_cell_' + review_id).innerHTML = 'Poor';

    }
    else if (stars_qty == 2) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';

        document.getElementById('mark_description_cell_' + review_id).innerHTML = 'Nothing special';
    }
    else if (stars_qty == 3) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';

        document.getElementById('mark_description_cell_' + review_id).innerHTML = 'Not bad';
    }
    else if (stars_qty == 4) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = '';
        document.getElementById("star_4_0_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';

        document.getElementById('mark_description_cell_' + review_id).innerHTML = 'Pretty cool';
    }
    else if (stars_qty == 5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = '';
        document.getElementById("star_4_0_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = '';
        document.getElementById("star_5_0_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';

        document.getElementById('mark_description_cell_' + review_id).innerHTML = 'Awesome!';
    }
}


function calculate_review_rating(review_id) {
    var review_total_points = REVIEWS_COMMENTS_RATING_DATA[review_id]['total_points'];
    var review_total_marks = REVIEWS_COMMENTS_RATING_DATA[review_id]['total_marks'];
    var review_rating = 0;
    if (review_total_marks != 0) {
        review_rating = review_total_points / review_total_marks;
    }
    return review_rating;
}


function show_review_stars_rating(review_id, review_rating) {
    if (review_rating < 0.5) {
        document.getElementById("star_1_1_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_" + review_id).style.display = '';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_" + review_id).style.display = '';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating > 0.49 && review_rating < 1) {
        document.getElementById("star_1_1_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = '';

        document.getElementById("star_2_1_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_" + review_id).style.display = '';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating >= 1 && review_rating < 1.5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_" + review_id).style.display = '';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating > 0.49 && review_rating < 2) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = '';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating >= 2 && review_rating < 2.5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = '';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating > 2.49 && review_rating < 3) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = '';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating >= 3 && review_rating < 3.5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = '';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating > 3.49 && review_rating < 4) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_5_" + review_id).style.display = '';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating >= 4 && review_rating < 4.5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = '';
        document.getElementById("star_4_0_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = '';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
    else if (review_rating > 4.49 && review_rating < 5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = '';
        document.getElementById("star_4_0_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_5_" + review_id).style.display = '';
    }
    else if (review_rating >= 5) {
        document.getElementById("star_1_1_" + review_id).style.display = '';
        document.getElementById("star_1_0_" + review_id).style.display = 'none';
        document.getElementById("star_1_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_2_1_" + review_id).style.display = '';
        document.getElementById("star_2_0_" + review_id).style.display = 'none';
        document.getElementById("star_2_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_3_1_" + review_id).style.display = '';
        document.getElementById("star_3_0_" + review_id).style.display = 'none';
        document.getElementById("star_3_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_4_1_" + review_id).style.display = '';
        document.getElementById("star_4_0_" + review_id).style.display = 'none';
        document.getElementById("star_4_0_5_" + review_id).style.display = 'none';

        document.getElementById("star_5_1_" + review_id).style.display = '';
        document.getElementById("star_5_0_" + review_id).style.display = 'none';
        document.getElementById("star_5_0_5_" + review_id).style.display = 'none';
    }
}


function display_review_stars_rating(review_id) {
    var review_rating = calculate_review_rating(review_id);
    show_review_stars_rating(review_id, review_rating);
}


function remove_review_rating_describing(review_id) {
        var this_review_total_marks = REVIEWS_COMMENTS_RATING_DATA[review_id]['total_marks'];
        document.getElementById('mark_description_cell_' + review_id).innerHTML = this_review_total_marks + ' ratings';
        display_review_stars_rating(review_id);
}


function remove_review_comment(review_id, comment_id, comment_ui_id) {
    var poststr = "essence=" + "REMOVE_REVIEW_COMMENT" +
                  "&comment_id=" + comment_id +
                  "&review_id=" + review_id;
    var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
    var remove_comment_res_hash = ReviewAjaxDataReceiverObj.getData("REMOVE_REVIEW_COMMENT");

    if (remove_comment_res_hash['delete_comment_res'] == 1) {
        /* It means that comment has been successfully removed from DB. */
        if (comment_ui_id != '') {
            /* It means that customer tries to remove comment which was added during currrent page load session. */
            var removed_comment_title_id = 'comment_title_' + comment_ui_id + '_' + review_id;
            var removed_comment_desc_id = 'comment_desc_' + comment_ui_id + '_' + review_id;
        }
        else {
            removed_comment_title_id = 'comment_title_' + comment_id + '_' + review_id;
            removed_comment_desc_id = 'comment_desc_' + comment_id + '_' + review_id;
        }

        document.getElementById(removed_comment_title_id).style.display = 'none';
        document.getElementById(removed_comment_desc_id).style.display = 'none';

        if (remove_comment_res_hash['max_review_comment_id'] == 0) {
            /* Hide 'Comments' link. */
            document.getElementById('comments_link_row_' + review_id).style.display = 'none';
        }
    }
    else {
        alert('You are not the author of this comment.');
    }
}


function evaluate_comment(review_id, comment_id, current_comment_ui_id, valuation, model_id, model_type) {
    var customer_evaluation_check_res_hash = check_is_customer_already_evaluate_comment(review_id, comment_id);
    if (customer_evaluation_check_res_hash['customer_is_logged_in'] == 1 &&
        customer_evaluation_check_res_hash['customer_evaluated_comment'] == 0) {

        var poststr = "essence=" + "EVALUATE_COMMENT" +
                      "&review_id=" + review_id +
                      "&comment_id=" + comment_id +
                      "&valuation=" + valuation +
                      "&model_id=" + model_id +
                      "&model_type=" + model_type;
        var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
        var valuation_res_hash = ReviewAjaxDataReceiverObj.getData("EVALUATE_COMMENT");

        var comment_total_points = parseInt(valuation_res_hash['total_points']);
        var positive_prefix = '';
        var comment_total_points_color = '#707070';
        if (comment_total_points > 0) {
            positive_prefix = '+';
            comment_total_points_color = 'green';
        }
        else if (comment_total_points < 0) {
            comment_total_points_color = 'red';
        }
        document.getElementById('comment_rating_' + current_comment_ui_id + '_' + review_id).innerHTML = '<span style="color: ' + comment_total_points_color + '">' + positive_prefix + valuation_res_hash['total_points'];

        document.getElementById('comment_evaluation_login_msg_' + current_comment_ui_id + '_' + review_id).innerHTML =
            '<span style="color: green; ">Thanks for rating!</span>';
        document.getElementById('comment_evaluation_login_msg_' + current_comment_ui_id + '_' + review_id).style.visibility = 'visible';
    }
    else if (customer_evaluation_check_res_hash['customer_is_logged_in'] == 0) {
        document.getElementById('comment_evaluation_login_msg_' + current_comment_ui_id + '_' + review_id).innerHTML =
            'Please <span style="color: #0000CC; cursor: pointer;" onClick="redirect_to_login_section();" ><u>sign in</u></span> to evaluate comment';
        document.getElementById('comment_evaluation_login_msg_' + current_comment_ui_id + '_' + review_id).style.visibility = 'visible';

    }
    else if (customer_evaluation_check_res_hash['customer_is_logged_in'] == 1 &&
        customer_evaluation_check_res_hash['customer_evaluated_comment'] != 0) {
        document.getElementById('comment_evaluation_login_msg_' + current_comment_ui_id + '_' + review_id).innerHTML = 'You already evaluated this comment';
        document.getElementById('comment_evaluation_login_msg_' + current_comment_ui_id + '_' + review_id).style.visibility = 'visible';

    }
}


function check_is_customer_already_evaluate_comment(review_id, comment_id) {
    var poststr = "essence=" + "CHECK_IS_CUSTOMER_ALREADY_EVALUATE_COMMENT" +
                  "&review_id=" + review_id +
                  "&comment_id=" + comment_id;
    var ReviewAjaxDataReceiverObj = new ReviewAjaxDataReceiver(REVIEWS_COOKIE_PATH + '/review_ajax_responser.pl', poststr);
    var customer_evaluation_check_res_hash = ReviewAjaxDataReceiverObj.getData("CHECK_IS_CUSTOMER_ALREADY_EVALUATE_COMMENT");
    return customer_evaluation_check_res_hash;
}
