﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("OS.Web");

OS.Web.RecommendEntity = function(element) {
    OS.Web.RecommendEntity.initializeBase(this, [element]);

    this._container = element;
    this._isActive = false;
    this._entityId = "";
    this._entityTypeId = "";
    this._activeCssCalss = "";
    this._inactiveCssClass = "";
}

OS.Web.RecommendEntity.prototype = {
    initialize: function() {
        OS.Web.RecommendEntity.callBaseMethod(this, 'initialize');
        if (this._isTemplate) {
            return;
        }

        $addHandler(this._container, "click", Function.createDelegate(this, this.Recommend));
    },

    dispose: function() {
        //Add custom dispose actions here
        OS.Web.RecommendEntity.callBaseMethod(this, 'dispose');
    },

    Recommend: function() {
        if (this._isActive)
            return;
        this._isActive = true;
        
        var serviceProxy = new OS.TC.Portal.WebSite.Modules.Core.WebServices.Core();

        serviceProxy.set_defaultSucceededCallback(Function.createDelegate(this, this.SucceededCallback));
        serviceProxy.set_defaultFailedCallback(Function.createDelegate(this, this.FailedCallback));

        serviceProxy.RecommendEntity(this._entityTypeId, this._entityId);
    },

    SucceededCallback: function(result) {
        this.removeCssClass(this._inactiveCssCalss);
        this.addCssClass(this._activeCssCalss);
    },

    FailedCallback: function(error) {
        alert(error.get_message());
    },

    get_IsActive: function() {
        return this._isActive;
    },
    set_IsActive: function(value) {
        this._isActive = value;
    },

    get_EntityId: function() {
        return this._entityId;
    },
    set_EntityId: function(value) {
        this._entityId = value;
    },

    get_EntityTypeId: function() {
        return this._entityTypeId;
    },
    set_EntityTypeId: function(value) {
        this._entityTypeId = value;
    },

    get_ActiveCssClass: function() {
        return this._activeCssCalss;
    },
    set_ActiveCssClass: function(value) {
        this._activeCssCalss = value;
    },

    get_InactiveCssClass: function() {
        return this._inactiveCssCalss;
    },
    set_InactiveCssClass: function(value) {
        this._inactiveCssCalss = value;
    }
}

OS.Web.RecommendEntity.registerClass('OS.Web.RecommendEntity', Sys.UI.Control);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();





