var Expandable = Class.create({
    initialize: function (params) {
        this.scrollableObject = params.scrollableObject;
        this.elementToExpand = params.elementToExpands;
        this.heightForExpande = params.heightForExpande || 380;
        this.heightForReduce = params.heightForReduce || 175;
        this.btnForStart = params.btnForStart;
        this.elementForOffSetTop = params.elementForOffSetTop;
        this.linkToRoom = params.linkToRoom
    },
    bindObject: function(){
          Event.observe(this.btnForStart,'click', this.checkMethodToCall.bindAsEventListener(this));
          /*if(this.linkToRoom)
              this.scrollableObject.anchor(null,this.linkToRoom,0)*/
    },
    checkMethodToCall: function(){
        if(!this.alreadyExpanded){
            this.btnForStart.innerHTML = "NASCONDI"
            this.effectExpande();
        }else{
            this.btnForStart.innerHTML = "VEDI TUTTI"
            this.effectReduce();
        }
    },
    effectExpande: function(){
        var that = this;
        for(var j = 0; j < this.elementToExpand.size();j++){
            var element = this.elementToExpand[j]
            if(element){
                element.morph('height: '+that.heightForExpande+"px",{
                            duration: 0.2,
                            delay: 0.2,
                            afterFinish: function(element){
                                //that.afterExpande(this,that.internalElement)
                                that.scrollableObject ?
                                    that.scrollableObject.externalScrollRequest(this,that.elementForOffSetTop.offsetTop ,undefined) :
                                    null
                                }
                        }
                );
            }
        }
        this.alreadyExpanded = true;
    },
    effectReduce: function(){
        var that = this;
        for(var i = 0; i < this.elementToExpand.size();i++){
            if(this.elementToExpand[i]){
            this.elementToExpand[i].morph('height:'+that.heightForReduce+"px",{
                    duration: 0.2,
                    delay: 0.2,
                    afterFinish: function(){
                        that.afterReduce(this,that.internalElement);
                        that.scrollableObject ?
                            that.scrollableObject.externalScrollRequest(this,that.elementForOffSetTop.offsetTop -250 ,undefined) :
                            null
                        that.alreadyExpanded = false;
                    }
                }
            );}
        }
    },
    afterExpande: function(window,element){
        this.alreadyExpanded = true;
        that = this;
        for(var i = 0; i < element.size();i++){
            var internalElement = element[i].childElements();
            for(var j = 0; j < internalElement.size();j++){
                if(j>2){
                    internalElement[j].style.display = ""
                    internalElement[j].fade({
                            duration: (0.1 + j/2) ,
                            from: 0,
                            to: 1,
                            afterFinish: function(){
                                that.callBackAfterEffect ? that.callBackAfterEffect() : null;
                            }
                    });
                }
            }
        }        
    },
    afterReduce: function(window,element){
        this.alreadyExpanded = false;
        for(var i = 0; i < element.size();i++){
            var internalElement = element[i].childElements();
            for(var j = 0; j < internalElement.size();j++){
                if(j>2){
                    internalElement[j].style.opacity = 0/*
                    internalElement[j].fade({
                        duration: (0.1 + j/2) ,
                        from: 1,
                        to: 0,
                        afterFinish: function(){}
                    });*/
                    }
               }
            }
    }
})

