var IngredientSelector = Class.create({
    initialize: function (params) {
        this.objectForIngredient = params.objectForIngredient
        this.generalIngredientContainer = params.allElements; //tutte le pagine
        this.nrOfIngredientContainer = this.generalIngredientContainer.childElements().length //il numero delle pagine
        this.callBackAfterRequest = params.callBackAfterRequest
        this.paramsForCallBackAfterRequest = params.paramsForCallBackAfterRequest
        this.textRequesterObject = params.textRequesterObject
        this.userIdReceiver = params.objectForIngredient._object.user_id_receiver
        this.userIdReceiverFacebook  = params.objectForIngredient._object.user_id_receiver_facebook
        this.userNameReceiver  = params.objectForIngredient._object.user_name_receiver
        this.userSelected = new Hash({"facebook_user": new Hash(),"system_user": new Hash()});
        this.requester = null
    },
    bindElements: function(){
        for(var i = 0; i < this.nrOfIngredientContainer; i++)
            if(this.generalIngredientContainer.childElements()[i].id != "0")
                Event.observe(this.generalIngredientContainer.childElements()[i],'click', this.ingredientClicked.bindAsEventListener(this, this.generalIngredientContainer.childElements()[i]));
    },
    checkResponse: function(request,element){
         if(!request.serverObject){
             if(!request.msg){
                this.decrementNrIngredient(element)
                this.changeText(request,element)
                Event.stopObserving(element);
                Event.observe(element,'click', this.printFeedback.bindAsEventListener(this,this.createMsgInText("Hai già preso questo ingrediente!")));
            }
         }
    },
    ingredientClicked: function(window,element){
        var ingredientId = element.id;
        this.startRequest(element,ingredientId);
    },
    startRequest: function(element,id_ingredient){
            this.objectForIngredient.set('duplicated_id',id_ingredient);
            if(this.userIdReceiverFacebook)
                this.userSelected.get("facebook_user").set(this.userIdReceiver,this.userNameReceiver);
            else
                this.userSelected.get("system_user").set(this.userIdReceiver,this.userNameReceiver);
            this.objectForIngredient.set('user_receiver_ids',this.userSelected);
            this.requester = new Requester({
                object: this.objectForIngredient,
                callBackAfterRequest: this.callBackAfterRequest,
                secondCallBackAfterRequest: this.checkResponse.bindAsEventListener(this,element),
                thirdCallBackAfterRequest:  this.textRequesterObject.callBackAfterActivityRequest.bindAsEventListener(this.textRequesterObject),
                mustBuildRequest: 1/*,
                paramsForCallBackAfterRequest: this.ingredientClicked.get('facebook_user')*/
            })
            this.requester.sendRequest()
            this.requester = null;
    },
    decrementNrIngredient: function(element){
        element.childElements().first().childElements().first().innerHTML = parseInt(element.childElements().first().childElements().first().innerHTML)-1
    },
    changeText: function(request,element){
        if($$('.3.msg1')[0])
            $$('.3.msg1')[0].hide()
        $$('.3.msg2')[0].show()
    },
    createMsgInText: function(text){
        var msgForFeedBack = []
        msgForFeedBack[0] = text
        return msgForFeedBack
    },
    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()
    }

})
