    donejs.rotex.poll = new Class({
    initialize:function(){
        var p = $$('.pollPage');
        if(p.length > 0){
            this.dlist = $('polllist');

            if(this.dlist){
                var scroll = new donejs.scroll();
                scroll.use(this.dlist);
                var lis = this.dlist.getElements('li.ans');
                lis.each(function(li){
                    li.setStyle('cursor','pointer');

                    var input = li.retrieve('own:input', li.getElement('input').store('parent', li));
                    input.setStyle('display','none');

                    var cd = input.get('checked') ? 'inputcheck' : 'inputuncheck';
                    var div = li.retrieve('own:div', new Element('div', {
                        'class': cd
                    }));
                    div.injectAfter(input);
                    li.addEvent('click',this.toggle.bindWithEvent(this,li));
                }.bind(this));
                this.ds = $('SaveAnswersButton');
                if(this.ds){
                    this.ds.addEvent('click',this.submit.bindWithEvent(this));
                }
            }


        }
    },

    submit:function(e){
        e.stop();
        if(this.submitCheck()){
            this.send();
        }else{
            donejs.message.error(lang.poll,lang.error);
        }

    },
    submitCheck:function(notSetError){
        var data = {};
        var isOK = true;
        this.dlist.getElements('ul').each(function(ul){
            var is = false;
            ul.getElements('input').each(function(input){
                var name = input.get('name');
                var c = input.get('checked');
                var v = input.get('value');
                if(c){
                    data[name] = v;
                }
                is = is || c;

            });
            if(is){
                ul.getParent().removeClass('error');
            }else{
                isOK = false;
                if(!notSetError)
                    ul.getParent().addClass('error');
            }
        });
        this.answer = data;
        return isOK;
    },
    send:function(data){
        if(!this.isSend){
            this.isSend = true;
        this.ds.set('class','pollSaveButtonLoad');
        var _self = this;
        var jsonRequest = new Request.JSON({
            url: URL + "/?json=PageContentService.setPollAnswer",
            onComplete:function(json){
                _self.response(json);
            }
        }).post({
            json:JSON.encode(this.answer)
            });
        }
    },
    response:function(data){
        if(data){
            if(data.status == 0){
                donejs.message.info(lang.poll,data.msg);
                this.dlist.getElements('input').each(function(i){
                    i.set('checked',false);
                });
                this.dlist.getElements('.inputcheck').each(function(i){
                    i.set('class','inputuncheck');
                });
            }else{
                donejs.message.error(lang.poll,data.msg);
            }
        }
        this.isSend = false;
        this.ds.set('class','pollSaveButton');
    },
    toggle:function(e,li){
        e.stop();
        if (li.retrieve('own:input').get('checked')){
            this.uncheck(li);
        } else {
            this.check(li);
        }
        this.submitCheck(true);
    },
    check:function(li){
        var input = li.retrieve('own:input').set('checked', true);
        if (input.get('type') == 'radio'){
            this.uncheckByName(li, input);
        }
        li.retrieve('own:div').set('class','inputcheck');
    },
    uncheck:function(li,force){
        var input = li.retrieve('own:input');
        if(!force && input.get('type') == 'radio'){
            if(input.get('checked')) return;
        }
        input.set('checked', false);
        li.retrieve('own:div').set('class','inputuncheck');
    },
    uncheckByName:function(li,input){
        $$('input[name='+input.get('name')+']').each(function(i){
            if(i != input) this.uncheck(i.retrieve('parent'),true);
        }.bind(this));
    }

});

window.addEvent('domready', function(){
    new donejs.rotex.poll();
});