﻿jQuery(document).ready(function() {
    // function to swap values in a watermarkbox
    swapValues = []; jQuery(".watermarkbox").each(function (i) { swapValues[i] = jQuery(this).val(); jQuery(this).focus(function () { if (jQuery(this).val() == swapValues[i]) { jQuery(this).val("") } }).blur(function () { if (jQuery.trim(jQuery(this).val()) == "") { jQuery(this).val(swapValues[i]) } }) })
    // Comments functions
    jQuery(".comment-link").click(function () {
        jQuery(".comment2").css("background", "#ffffff");
        jQuery(".comment-container").slideToggle("slow",
            function () {
                if (jQuery(".comment2").css("background") == "#f6f3ef") {
                    jQuery(".comment2").css("background", "#ffffff");
                } else {
                    jQuery(".comment2").css("background", "#f6f3ef");
                }
            }
        );
        jQuery(".navImages").toggle();
    });

});

// Star rating system
(function(jQuery) {
    var buildRating = function(obj) {
        var rating = averageRating(obj),
            obj = buildInterface(obj),
            stars = jQuery("div.star", obj),
            cancel = jQuery("div.cancel", obj);

        var fill = function() {
            drain();
            jQuery("a", stars).css("width", "100%");
            stars.slice(0, stars.index(this) + 1).addClass("hover");
        },
            drain = function() {
                stars.removeClass("on").removeClass("hover");
            },
            reset = function() {
                drain();
                stars.slice(0, rating[0]).addClass("on");
                if (percent = rating[1] ? rating[1] * 10 : null) {
                    stars.eq(rating[0]).addClass("on").children("a").css("width", percent + "%");
                }
            },
            cancelOn = function() {
                drain();
                jQuery(this).addClass("on");
            },
            cancelOff = function() {
                reset();
                jQuery(this).removeClass("on");
            };
        stars
            .hover(fill, reset).focus(fill).blur(reset)
            .click(function() {
                rating = [stars.index(this) + 1, 0];
                jQuery.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "http://" + window.location.hostname + "/Services/comments/Comment.asmx/RatePage",
                        data: "{'inRating': '" + rating + "','pageID': '" + obj.pageid + "'}",
                        dataType: "json",
                        success: function(msg) {
                            //jAlert("Din stemme er nu registreret", "Information");
                            jQuery(obj.summaryElement).html(msg.d[0]);
                            rating = msg.d[1].split(",");
                            reset(); stars.unbind().addClass("done");
                        },
                        error: function(msg) { alert(msg.status + '\n' + msg.statusText); }
                    });
                jQuery(this).css("cursor", "default");
                setPageIdCookie(obj.pageid);
                return false;
            });
        reset();
        if (hasVoted(obj.pageid)) { stars.unbind().addClass("done"); }
        return obj;
    };

    var buildInterface = function(divContainer) {
        var container = jQuery("<div></div>").attr({ "title": "Gennemsnit: " + divContainer.title, "class": divContainer.className });
        jQuery.extend(container, { pageid: jQuery(".divGuid", divContainer).text() });
        jQuery.extend(container, { summaryElement: jQuery("#divSummary") });
        var optGroup = jQuery("option", jQuery(divContainer));
        var size = optGroup.length;
        optGroup.each(function() {
            container.append(jQuery('<div class="star"><a href="#' + this.value + '" title="Giv ' + this.value + '/' + size + '">' + this.value + '</a></div>'));
        });
        jQuery(divContainer).after(container).remove();
        return container;
    };

    var averageRating = function(el) { return el.title.split(","); };
    jQuery.fn.rating = function() { return jQuery(jQuery.map(this, function(i) { return buildRating(i)[0]; })); };
    if (jQuery.browser.msie) try { document.execCommand("BackgroundImageCache", false, true); } catch(e) { }
})(jQuery);

/* Cookie handler for rating system */
function hasVoted(pageId) {
    var cookieValue = readPageIdCookie();
    if (cookieValue) {
        if (cookieValue.indexOf(pageId) > -1)
            return true;
        return false;
    }
    return false;
}
function setPageIdCookie(pageId) {
    if (!hasVoted(pageId)) {
        document.cookie = "rating=" + readPageIdCookie() + pageId + "; path=/";
    }
}
function readPageIdCookie() {
    var nameEQ = "rating=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

