var UserSelector = Class.create({
    initialize: function (params) {
        this.objectForUser = params.objectForUser
        this.generalUserContainer = params.allElements; //tutte le pagine
        this.nrOfUserContainer = this.generalUserContainer ? this.generalUserContainer.childElements().length : 0//il numero delle pagine
        this.userSelected = new Hash({"facebook_user": new Hash(),"system_user": new Hash()});
        this.userForSingleContainer = params
        this.btnChallenge = params.btnStartRequestChallenge;
        this.btnChallenge ? this.btnChallenge.onclick = this.btnChallengeClicked.bindAsEventListener(this) : null
        this.callBackAfterRequest = params.callBackAfterRequest
        this.paramsForCallBackAfterRequest = params.paramsForCallBackAfterRequest
        this.requester = null
    },
    bindElements: function(){
        for(var i = 0; i < this.nrOfUserContainer; i++)
            for(var j = 0; j < this.generalUserContainer.childElements()[i].childElements().length; j++){
                element = this.generalUserContainer.childElements()[i].childElements()[j];
                Event.observe(element,'click', this.userSelectedClicked.bindAsEventListener(this, element));
              //Event.observe(element.childElements()[3],'click', this.userSelectedClickedInCheck.bindAsEventListener(this,element));
        }
    },
    unBindElements: function(){
        for(var i = 0; i < this.nrOfUserContainer; i++)
            for(var j = 0; j < this.generalUserContainer.childElements()[i].childElements().length; j++)
              Event.stopObserving(this.generalUserContainer.childElements()[i].childElements()[j]);
    },
    userSelectedClicked: function(window,element){
        var kindOfUser = element.id.split(" ")[0]
        var userId =  element.id.split(" ")[2]
        var name = element.childElements()[2].childElements()[0].innerHTML
        var check = element.childElements()[3]

        if(this.userSelected.get(kindOfUser).get(userId)){ //se è gia presente allora lo svuoti
            this.userSelected.get(kindOfUser).unset(userId)
            check.checked = false;
        }else{
            this.userSelected.get(kindOfUser).set(userId,name);
            check.checked = true;
        }
        if( (this.userSelected.get("facebook_user").size() + this.userSelected.get("system_user").size()) > 3 ){
            this.printFeedback(null,this.createMsgInText("Puoi fare questa attività con solo 3 amici al giorno!"))
            this.userSelected.get(kindOfUser).unset(userId)
            check.checked = false;
        }
    },
    userSelectedClickedInCheck: function(window,element){
        var kindOfUser = element.parentNode.id.split(" ")[0]
        var userId =  element.parentNode.id.split(" ")[2]
        var name = element.parentNode.childElements()[2].childElements()[0].innerHTML
        var check = element.parentNode.childElements()[3]
/*
        if(this.userSelected.get(kindOfUser).get(userId)){ //se è gia presente allora lo svuoti
            this.userSelected.get(kindOfUser).unset(userId)
            //check.checked = false;
        }else{
            this.userSelected.get(kindOfUser).set(userId,name);
            //check.checked = true;
        }*/
        if( (this.userSelected.get("facebook_user").size() + this.userSelected.get("system_user").size()) > 3 ){
            this.printFeedback(null,this.createMsgInText("Puoi fare questa attività con solo 3 amici al giorno!"))
            this.userSelected.get(kindOfUser).unset(userId)
            check.checked = false;
        }
    },
    unCheckAll: function(){
        var kindOfUser = element.className.split(' ')[1];
        var userId =  element.childElements()[0].className
    },
    bindSingleBtnChallenge: function(roomId){
        this.roomId = roomId;
        var allBtns = $$('.room_'+roomId)
        var nrOfBtn = allBtns.size()
        for(var i = 0; i < nrOfBtn; i++)
            Event.observe(allBtns[i].childElements()[4],'click', this.singleBtnChallengeClicked.bindAsEventListener(this, allBtns[i]));

    },
    btnChallengeClicked: function(){
        var i = 0;
        if(Object.keys(this.userSelected._object.facebook_user._object).size() || Object.keys(this.userSelected._object.system_user._object).size()){ //se è vuoto non spedisco nulla!
                this.objectForUser.set('user_receiver_ids',this.userSelected);
                this.requester = new Requester({
                    object: this.objectForUser,
                    callBackAfterRequest: this.callBackAfterRequest,
                    paramsForCallBackAfterRequest: this.userSelected.get('facebook_user'),
                    mustBuildRequest: 1
                })
                this.requester.sendRequest()
                this.requester = null;
                //Event.stopObserving(element);
                //this.changeObservingObjectSelected();
                
        }else{
            this.printFeedback(null,this.createMsgInText("devi selezionare almeno un utente!"));
        }
    },
    singleBtnChallengeClicked: function(window,element){
        var kindOfUser = element.id.split(" ")[0]
        var userId =  element.id.split(" ")[2]
        var name = element.childElements()[3].childElements()[0].innerHTML
        if(this.userSelected.get(kindOfUser).get(userId)) //se è gia presente allora lo svuoti
            this.userSelected.get(kindOfUser).unset(userId)
        else
            this.userSelected.get(kindOfUser).set(userId,name);
        this.btnChallengeClicked();
    },
    printFeedback: function(window,params){
        var msg = new Array();
        msg[0] = params
        this.builderRequest = new BuilderMsg({
                msgToPrint: msg,
                containerMsg: $$('.FeedbackFromNotificationRequest')[0],
                containerFeedback: $$('.containerFeedBack')[0],
                classBtnClicked: "btnCloseAfterRequest",
                forWhat: "generic",
                left:100,
                top:100
            });
            this.builderRequest.build()
    },
    changeObservingObjectSelected: function(){
        var user = 0;
        var element = null
        for(user in this.userSelected._object.facebook_user._object){
            element = $("facebook_user "+this.objectForUser._object.kind_activities+" "+user);
            Event.stopObserving(element);
            Event.observe(element,'click', this.printFeedback.bindAsEventListener(this,this.createMsgInText("hai già mandato un attività a "+this.userSelected._object.facebook_user.get(user))));
            Event.observe(element.childElements()[3].check,'click', this.printFeedback.bindAsEventListener(this,this.createMsgInText("hai già mandato un attività a "+this.userSelected._object.facebook_user.get(user))));
            this.userSelected._object.facebook_user.unset(user)
            element.childElements()[3].checked = false
        }
        for(user in this.userSelected._object.system_user._object){
            element = $("system_user "+this.objectForUser._object.kind_activities+" "+user);
            Event.stopObserving(element);
            Event.observe(element,'click', this.printFeedback.bindAsEventListener(this,this.createMsgInText("hai già mandato un attività a "+this.userSelected._object.system_user.get(user))));
            Event.observe(element.childElements()[3].check,'click', this.printFeedback.bindAsEventListener(this,this.createMsgInText("hai già mandato un attività a "+this.userSelected._object.facebook_user.get(user))));
            this.userSelected._object.system_user.unset(user)
            element.childElements()[3].checked = false
        }
    },
    createMsgInText: function(text){
        var msgForFeedBack = []
        msgForFeedBack[0] = text
        return msgForFeedBack
    }

})
