﻿var Sawbuck = window.Sawbuck || {}; Sawbuck.RatingManager = (function() {
    var eventHandlers = []; var lockedIds = []; function raise(args) { for (var i = 0; i < eventHandlers.length; i++) { eventHandlers[i](args); } }
    function findId(id) {
        for (var i = 0; i < lockedIds.length; i++) { if (lockedIds[i] == id) { return i; } }
        return -1;
    }
    return { timer: null, addHandler: function(eventHandler) { eventHandlers.push(eventHandler); }, rateListing: function(id, rating) { $j.ajax({ type: "POST", url: "/service/WebService.asmx/RateListing", data: Sawbuck.Utilities.toJson({ Rating: rating, ListingID: id }), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function(response) { Sawbuck.Reporting.trackEvent("Rating", "From Search Page", "Value", rating); return false; }, error: function() { } }); raise({ id: id, rating: rating }); }, lockId: function(id) { lockedIds.push(id); }, unLockId: function(id) { var index = findId(id); if (index > -1) lockedIds.splice(index, 1); }, isLocked: function(id) {
        for (var i = 0; i < lockedIds.length; i++) { if (lockedIds[i] == id) { return true; } }
        return false;
    } }
    })(); jQuery(function($) { jQuery('.star-rating li a').live("click", function(e) { var re = new RegExp(/\d+$/); var $this = jQuery(this); var id = $this.parent().parent().attr('id').match(re)[0]; var rating = $this.text(); var percent = (rating * 25); $this.parent().siblings('.current-rating').css('width', percent + '%'); Sawbuck.RatingManager.timer = setTimeout(function() { if (!Sawbuck.RatingManager.isLocked(id)) { Sawbuck.RatingManager.rateListing(id, rating); } }, 500); return false; }); jQuery('.star-rating li a').live("dblclick", function(e) { var re = new RegExp(/\d+$/); var $this = jQuery(this); var id = $this.parent().parent().attr('id').match(re)[0]; Sawbuck.RatingManager.lockId(id); clearTimeout(Sawbuck.RatingManager.timer); var rating = 0; Sawbuck.RatingManager.rateListing(id, rating); var percent = (rating * 25); $this.parent().siblings('.current-rating').css('width', percent + '%'); setTimeout(function() { Sawbuck.RatingManager.unLockId(id); }, 1000); return false; }); });