/**
 * Submit & draw polls
 * Requirements: jQuery 1.3.2 and /cgi-bin/polls.pl script.
 * @author: politov@gmail.com
 * @date: 18.11.2009
 */

/* Draw poll results */
function drawPoll(form, data) {
    $(form).hide();
    //.after('<div style="margin:30px">Спасибо за участие в опросе. Данные будут опубликованы позже.</div>');
    var total = 0, max = 0;
    var len = data.results.length;
    for (var i=0; i<len; i++) {
        var x = parseInt(data.results[i]);
        total += x;
        max = max < x ? x : max;
    }
    var str = '<dl class="poll-results">';
    for (var i=0; i<len; i++) {
        var percent = Math.round(parseInt(data.results[i])*100/total);
        str += '<dt>'+data.names[i]+'</dt>';
        str += '<dd><span>'+percent+'%</span><div style="width:'+(percent+1)*1.5+'px" class="'+(data.results[i]==max?'leader':'')+'">&nbsp;</div></dd>';
    }
    str += '</dl>';
    str += '<div style="clear:left"></div>';
    $(form).after(str);
}

/* Draw form and process request ajax style */
function polls(form) {
    var cookieoptions = {path: '/', expires: 3}; //3 days
    var id = $('input[name=id]',form).attr('value');
    var itype = $('input[name=type]', form).attr('value');
    itype = (itype) ? parseInt(itype) : 0;
    var url = $(form).attr('action');
    var options = {id: ''+id};
    if ($.cookie && $.cookie('poll'+id)) {
        options.c = $.cookie('poll'+id);
    }
    $.get(url, options, function(data){
        if (data.results) {
            $(form).before('<p class="poll-warning">Вы уже участвовали в голосовании и можете ознакомиться только с его результатами</p>');
            drawPoll(form, data);
            return;
        }
        var str = '<fieldset>\n';
        for (var i=0; i<data.names.length; i++) {
            if (itype == 1) {
                str += '<input type="checkbox" name="q" value="'+i+'">&nbsp;'+data.names[i]+'</input><br/><br/>\n';
            } else {
                str += '<input type="radio" name="q" value="'+i+'">&nbsp;'+data.names[i]+'</input><br/><br/>\n';
            }
        }
        str += '</fieldset>';
        $(form).append(str);
        $('<a href="javascript:;">Отправить</a>').appendTo(form).click(function(){
            var vv = [];
            $('input:checked',form).each(function(){
                vv.push($(this).val());
            });
            if (vv.length == 0) { return; }
            $.get(url, { id: ''+id, q: vv.join(',') }, function(data){
                if ($.cookie) { $.cookie('poll'+id, (new Date()).getTime(), cookieoptions); }
                $(form).before('<p class="poll-grats">Благодарим за участие в опросе. Ваш голос учтён.</p>');
                drawPoll(form, data);
            }, 'json');
        });
    }, 'json');
}

$(document).ready(function(){
    $('form.poll').each(function(){
        polls(this);
    });
});