(function () {
    'use strict';

    var React = require('react');

    module.exports = React.createClass({
        propTypes: {
            value: React.PropTypes.number,
            onChange: React.PropTypes.func
        },

        getDefaultProps: function () {
            return {value: 0};
        },

        getInitialState: function () {
            return {prospectiveValue: 0};
        },

        render: function () {
            return React.DOM.div(
                {className: 'star-rating-input'},
                [this.clearingItem()].concat(this.starItems())
            );
        },

        clearingItem: function () {
            var that = this;

            return React.DOM.div(
                {className: 'star-rating-clear-container', key: 0},

                React.DOM.a({
                    className: 'star-rating-clear',
                    title: 'Reset value to no stars',
                    href: '',
                    ref: 's0',

                    onClick: function (e) {
                        e.preventDefault();
                        that.setState({prospectiveValue: 0});
                        that.props.onChange({value: 0});
                    }
                }, 'Clear')
            );
        },

        starItems: function () {
            var that = this;

            return [1, 2, 3, 4, 5].map(function (value) {
                return that.starItem(value, that.anchorMode(value));
            });
        },

        starItem: function (value, mode) {
            var that = this;

            return React.DOM.div(
                {className: 'star-rating-star-container', key: value},

                React.DOM.a({
                    className: 'star-rating-star ' + mode,
                    title: value,
                    href: '',
                    ref: 's' + value,

                    onMouseEnter: function () {
                        that.setState({prospectiveValue: value});
                    },

                    onMouseLeave: function () {
                        that.setState({prospectiveValue: 0});
                    },

                    onClick: function (e) {
                        e.preventDefault();
                        that.setState({prospectiveValue: 0});
                        that.props.onChange({value: value});
                    }
                }, value)
            );
        },

        anchorMode: function (value) {
            if (this.state.prospectiveValue > 0) {
                return (value <= this.state.prospectiveValue ? 'suggested' : 'off');
            }

            return (value <= this.props.value ? 'on' : 'off');
        }
    });
}());

@@ -641,38 +641,8 @@
 ) %7B%0A
-            var that = this;%0A%0A
     
@@ -1044,34 +1044,34 @@
               th
-at
+is
 .setState(%7Bprosp
@@ -1106,34 +1106,34 @@
               th
-at
+is
 .props.onChange(
@@ -1158,32 +1158,43 @@
                %7D
+.bind(this)
 %0A               
@@ -1270,38 +1270,8 @@
 ) %7B%0A
-            var that = this;%0A%0A
     
@@ -1349,18 +1349,18 @@
 eturn th
-at
+is
 .starIte
@@ -1370,18 +1370,18 @@
 alue, th
-at
+is
 .anchorM
@@ -1406,16 +1406,27 @@
        %7D
+.bind(this)
 );%0A     
@@ -1479,38 +1479,8 @@
 ) %7B%0A
-            var that = this;%0A%0A
     
@@ -1839,34 +1839,34 @@
               th
-at
+is
 .setState(%7Bprosp
@@ -1900,32 +1900,43 @@
                %7D
+.bind(this)
 ,%0A%0A             
@@ -1988,34 +1988,34 @@
               th
-at
+is
 .setState(%7Bprosp
@@ -2045,32 +2045,43 @@
                %7D
+.bind(this)
 ,%0A%0A             
@@ -2181,18 +2181,18 @@
       th
-at
+is
 .setStat
@@ -2243,18 +2243,18 @@
       th
-at
+is
 .props.o
@@ -2295,24 +2295,35 @@
            %7D
+.bind(this)
 %0A           

Replace "var that = this" with bind(this)