﻿var Rate = {

    //gets rating input name from the star image name
    ParseFieldName: function(name) {
        var regex = new RegExp("[0-9]__([a-zA-Z0-9_]+)");
        var matches = name.match(regex);
        return matches[1];
    },

    //gets rating value from the star image name
    ParseStarsCount: function(name) {
        var regex = new RegExp("([0-9])__[a-zA-Z0-9_]+");
        var matches = name.match(regex);
        return parseInt(matches[1]);
    },

    //fill rating stars according to the selected rating
    Over: function(source) {
        var starsFieldName = source.getAttribute("id");
        var fieldName = Rate.ParseFieldName(starsFieldName);
        var starsCount = Rate.ParseStarsCount(starsFieldName);

        Rate.FillStars(fieldName, starsCount);
    },

    //set rating stars according to the setted rating
    Refresh: function(source) {
        var starsFieldName = source.getAttribute("id");
        var fieldName = Rate.ParseFieldName(starsFieldName);

        //get value
        var xpath = "input[@name='" + fieldName + "']";
        var inputs = Ext.DomQuery.select(xpath);

        var starsCount = 0;
        for (var i = 0; i < inputs.length; i++) {
            //var inputRadio =  new Ext.form.Radio(inputs[i]);
            if (inputs[i].checked) {
                starsCount = i + 1;
            }
        }

        Rate.FillStars(fieldName, starsCount);
    },
    
    FillStars: function(fieldName, starsCount) {
        var xpath = "img[@id$='" + fieldName + "']";
        var images = Ext.DomQuery.select(xpath);

        for (var i = 0; i < images.length; i++) {
            var path = images[i].getAttribute("src");
            path = path.replace(/\/[^/]*$/,'/');
            if ((starsCount - 1) >= i)
            { images[i].setAttribute("src", path + "PlusRating.GIF"); }
            else
            { images[i].setAttribute("src", path + "MinusRating.GIF"); }
        }
    
    },

    //sets rating
    Click: function(source) {
        var starsFieldName = source.getAttribute("id");
        var fieldName = Rate.ParseFieldName(starsFieldName);
        var starsCount = Rate.ParseStarsCount(starsFieldName);

        //set value
        var xpath = "input[@name='" + fieldName + "']";
        var inputs = Ext.DomQuery.select(xpath);
        for (var i = 0; i < inputs.length; i++) {
            inputs[i].checked = false;
        }
        for (var i = 0; i < inputs.length; i++) {
            if ((starsCount - 1) == i) {
                inputs[i].checked = true;
            }

        }

    }
}

