(function($){

    $.fn.extend({
        marker: function(params,step) {
            var $marker =  this;
            if(!step){
              step = 1;
            }
            $marker.bind("mousemove",function(e){ 
                var formula = (e.clientX - (this.clientWidth + $position(this).x));
                star_width = Math.floor(formula/step)*step;
                if(Math.abs(formula/step)<1){
                  star_width = 0;
                }
                $marker.css("background-position",+star_width+"px 0px");
            });

            $marker.bind("click",function(e){
                params['mark'] = Math.floor((((Math.floor( (e.clientX - $position(this).x)/step)*step)/this.clientWidth)*100*100)/100);
                var self = this;
                if(params['mark']>100){params['mark'] = 100};
                if(params['mark']<0){params['mark'] = 0};
                $.post('/xData/',params,function(data){ showAnswer(data,self) },"xml");
            });

            showAnswer = function(xml,el){
                var mark = xml.getElementsByTagName('mark')[0];
                if(mark){
                  $marker.unbind();
                  var value = parseFloat(mark.getAttribute('value'));
                  $marker.css("background-position",parseInt((value/100)*el.clientWidth)-el.clientWidth+"px 0px");
                  alert('Ваш голос принят!');
                }
            };

            $point = function(x, y) { this.x = x; this.y = y; };
            $position = function(node, toNode) {
                var el = node;
                var x = 0; var y = 0;
                while ((el)&&(el!=toNode)) {
                    if (el.offsetLeft) { x += el.offsetLeft; }
                    if (el.offsetTop) { y += el.offsetTop; }
                    el = el.offsetParent;
                }
                return new $point(x, y);
            };
        }
    });

})(jQuery)

