﻿google.setOnLoadCallback(function() {
    $(document).ready(function() {
        initUserReview();
    });
});

starSelected = false;
starWidth = 23;
userRating = 5;
currentPage = 0;
itemsPerPage = 3;
reviewCount = $(".userReview").length - itemsPerPage;


function initUserReview() {
    rigSendReview();
    setRatings();
    rigPagination();
}

function rigSendReview() {
    $(".userReviewSubmit a").click(function() {
        sendReview();
        return false;
    });

    rigUserRating();
    rigFormNames();
}

function rigFormNames() {
    $("#userReviewForm input").each(function() {
        $(this).attr("name", "userReview" + $(this).attr("name"));
        $(this).attr("id", $(this).attr("name"));
    });

    $("#userReviewForm textarea").each(function() {
        $(this).attr("name", "userReview" + $(this).attr("name"));
        $(this).attr("id", $(this).attr("name"));
    });
}

function sendReview() {
    var trike = $("#userReviewTrike").val();
    var userReviewUrl = "/" + trike + "/userreview";
    var rating = userRating;
    var name = $("#userReviewName").val();
    var location = $("#userReviewLocation").val();
    var email = $("#userReviewEmail").val();
    var edition = $("#userReviewEditionId").val();
    var heading = $("#userReviewHeading").val();
    var review = $("#userReviewReview").val();
    var goodpoints = $("#userReviewGoodPoints").val();
    var badpoints = $("#userReviewBadPoints").val();
    var howyouride = $("#userReviewHowYouRide").val();

    var optionData = { Rating: rating, Name: name, Location: location, Email: email, Edition: edition, Heading: heading, Review: review, GoodPoints: goodpoints, BadPoints: badpoints, HowYouRide: howyouride };
    $.post(userReviewUrl, optionData, function(data) { updateUserReviewForm(data); rigSendReview(); });
}

function updateUserReviewForm(html) {
    $("#userReviewForm").replaceWith(html);
}

function setRatings() {
    $(".userReview").each(function() {
        rating = $(this).children(".userRating").val();
        $(".rating", this).width(starWidth * rating);
    });
}

function rigUserRating() {
    $("#userReviewForm .formElements .stars .rating").width(starWidth * userRating);

    $("#userReviewForm .formElements .stars .starHolder .star").hover(
        function() {
            if (!starSelected) {
                var rating = $(this).prevAll('.star').size() + 1;
                $("#userReviewForm .formElements .stars .rating").width(starWidth * rating);
                userRating = rating;
            }
        },
        function() {
        }
    );

        $("#userReviewForm .formElements .stars .starHolder .star").click(function() {
        var rating = $(this).prevAll('.star').size() + 1;
        $("#userReviewForm .formElements .stars .rating").width(starWidth * rating);
        userRating = rating;
        starSelected = true;
    });

}

function rigPagination() {
    $("#userReviewPagination").show();
    paginate();
    $("#userReviewNext").click(function() {
        currentPage = currentPage + itemsPerPage;
        paginate();
    });

    $("#userReviewBack").click(function() {
        currentPage = currentPage - itemsPerPage;
        paginate();
    });
}

function paginate() {
    $(".userReview").hide();

    if (currentPage == 0) {
        $("#userReviewBackBtn").hide();
    }
    else {
        $("#userReviewBackBtn").show();
    }

    if (currentPage >= reviewCount) {
        $("#userReviewNextBtn").hide();
    }
    else {
        $("#userReviewNextBtn").show();
    }
    
    $(".userReview").slice(currentPage, currentPage + itemsPerPage).show();
}


