if(!ComCore.Controls){ComCore.Controls={}}ComCore.Controls.Favorites=Class.create({initialize:function(A,B){this.control=$(A);this.controlID=A;this.type=this.control.getClassData("type");this.itemID=parseInt(this.control.getClassData("itemID"),10);this.favorite=this.control.getClassData("favorite")==="yes";this.isLoading(false);this.options={setFavoriteSuccessMessageID:"setFavoriteSuccess",setFavoriteErrorMessageID:"setFavoriteError",deleteFavoriteSuccessMessageID:"deleteFavoriteSuccess",deleteFavoriteErrorMessageID:"deleteFavoriteError"};Object.extend(this.options,B||{});this.control.observe("click",this._onControlClicked.bindAsEventListener(this))},isLoading:function(A){if(undefined===A){return this.loading}this.loading=(A===true?true:false);this.control[this.loading?"addClassName":"removeClassName"]("loading")},_onControlClicked:function(A){A.stop();if(!this.isLoading()){if(this.isFavorite()){this.deleteFavorite()}else{this.setFavorite()}}},isFavorite:function(){return this.favorite},setFavorite:function(){this._processFavorite("set")},deleteFavorite:function(){this._processFavorite("delete")},_processFavorite:function(A){this.isLoading(true);ComCore.LoadingIndicator.show();var C=this._onFavoriteProcessed.bind(this);var B=new Ajax.Request(ComCore.Page.buildAjaxURL("favorites",A==="set"?"setFavorite":"deleteFavorite",true),{method:"post",parameters:{itemID:this.itemID,type:this.type,uniqueID:this.controlID},onSuccess:function(E,D){ComCore.AjaxResponse.loginIsRequired(E,D);C(D)}})},_onFavoriteProcessed:function(A){ComCore.Message.hideAll();if(A.success){this.showMessage(A.action+"FavoriteSuccess");this.control.replace(A.html);this.favorite=!this.favorite;this.notify("onChange",A.userID,this.itemID,this.favorite)}else{this.showMessage(A.reason==="DUPLICATE"?A.action+"FavoriteDuplicate":A.action+"FavoriteError")}ComCore.LoadingIndicator.hide();this.isLoading(false)},showMessage:function(A){},_eoo:true});ComCore.Events.extend(ComCore.Controls.Favorites);