var lsFavourite;

var lsFavouriteClass = new Class({

        Implements: Options,

        options: {
                classes_action: {
                        active:    'active',
                        quest:     'quest'
                },
                classes_element: {
                        favorite:  'favorite'
                }
        },

        typeFavourite: {
                topic: {
                        url: DIR_WEB_ROOT+'/include/ajax/topicFavourite.php',
                        targetName: 'idTopic'
                }
        },

        initialize: function(options){
                this.setOptions(options);
        },

        toggle: function(idTarget,objFavourite,type) {
                if (!this.typeFavourite[type]) {
                        return false;
                }

                this.idTarget=idTarget;
                this.objFavourite=$(objFavourite);
                this.value=value;
                this.type=type;
                thisObj=this;

                var value=1;
                if (this.objFavourite.getParent('.'+this.options.classes_element.favorite).hasClass(this.options.classes_action.active)) {
                	value=0;
                }

                var params = new Hash();
                params['type']=value;
                params[this.typeFavourite[type].targetName]=idTarget;

                JsHttpRequest.query(
                        this.typeFavourite[type].url,
                        params,
                        function(result, errors) {
                                thisObj.onToggle(result, errors, thisObj);
                        },
                        true
                );
        },

        onToggle: function(result, errors, thisObj) {
        	if (!result) {
                msgErrorBox.alert('Error','Please try again later');
        	}
        	if (result.bStateError) {
                msgErrorBox.alert(result.sMsgTitle,result.sMsg);
        	} else {
                msgNoticeBox.alert(result.sMsgTitle,result.sMsg);

                var divFavourite=thisObj.objFavourite.getParent('.'+thisObj.options.classes_element.favorite);
                divFavourite.removeClass(thisObj.options.classes_action.active);
                if (result.bState) {
                	divFavourite.addClass(thisObj.options.classes_action.active);
                }
        	}
        }

});

window.addEvent('domready', function() {
      lsFavourite=new lsFavouriteClass();
});