/**
 * @author 		DucthuanX
 * @link		http://www.ducthuan.info
 * @copyright	(c) 2007 Nguyen Duc Thuan <me at ducthuan dot info>
 */
var ajaxRater = {
    imageActive: new Image(),
    imageInactive: new Image(),
    currentStarNum: 0,
    maxStarNum: 5,
    websitePath: '',
    imagesPath: '',
    imageIdPrefix: 'star_',
    canRate: true,
    articleId: 0,
    ratingDesc: ['Not so great', 'Good', 'Quite Good', 'Great!', 'Excellent!'],
    previousText: '',
    
    init: function(websitePath, imagesPath, imageIdPrefix, currentStarNum, maxStarNum){
        this.imageActive.src = imagesPath + '/star2.gif';
        this.imageInactive.src = imagesPath + '/star1.gif';
        this.websitePath = websitePath;
        this.imagesPath = imagesPath;
        this.imageIdPrefix = imageIdPrefix;
        this.currentStarNum = currentStarNum;
        this.maxStarNum = maxStarNum;
        $('rating_section').style.display = '';
    },
    
    set: function(imageNum) {
        this.currentStarNum = imageNum;
        this.display();
    },
    
    display: function() {
        for (var imageCounter = 1; imageCounter <= this.maxStarNum; imageCounter++) {
            if (imageCounter <= this.currentStarNum) {
                $(this.imageIdPrefix + imageCounter).src = this.imageActive.src;
            }
            else {
                $(this.imageIdPrefix + imageCounter).src = this.imageInactive.src;
            }
        }
    },
    
    over: function(imageNum){
        this.previousText = $('rating_desc').innerHTML;
        if (this.canRate) {
            for (var imageCounter = 1; imageCounter <= this.maxStarNum; imageCounter++) {
                if (imageCounter <= imageNum) {
                    $(this.imageIdPrefix + imageCounter).src = this.imageActive.src;
                }
                else {
                    $(this.imageIdPrefix + imageCounter).src = this.imageInactive.src;
                }
            }
            $('rating_desc').innerHTML = this.ratingDesc[imageNum - 1];
        }
    },
    
    out: function(){
        this.display();
        $('rating_desc').innerHTML = this.previousText;
    },
    
    submit: function(imageNum){
        if (this.canRate) {
            var rater = this;
            Ducthuans.Ajax.removeAllHandlers();
            Ducthuans.Ajax.clearHandlers();
            Ducthuans.Ajax.setConfig({url: this.websitePath + '/index.php?app=syn-articles&ctl=article&cmd=rate', isAsync: true, method: 'POST'});
            Ducthuans.Ajax.addParam('points', imageNum);
            Ducthuans.Ajax.addParam('article', this.articleId);
            Ducthuans.Ajax.addHandler('onLoading', function() {
                $('rating_desc').innerHTML = 'Submitting...';
            });
            Ducthuans.Ajax.addHandler('onSucceed', function() {
                var responseParts = Ducthuans.Ajax.responseText.split('|');
                rater.set(Number(responseParts[0]));
                rater.canRate = false;
                
                $('rating_desc').innerHTML = responseParts[1] + ' vote(s)';
                rater.previousText = $('rating_desc').innerHTML;
            });
            Ducthuans.Ajax.send();
        }
    }
};

