Type.registerNamespace('Devy.UI');

Devy.UI.SiteSearch = function() {
    Devy.UI.SiteSearch.initializeBase(this);

    //Miembros
    this._Container = null;

    this._SearchPageUrl = "";

    this._DefaultSearchText = "";
    this._CurrentSearchText = "";
    
    this._cmdSearch = null;
    this._txtSearch = null;
}

Devy.UI.SiteSearch.prototype = {
    //*********************************************************************
    //Publicos
    set_Container: function(value) { this._Container = value; },
    get_Container: function() { return this._Container; },

    set_SearchPageUrl: function(value) { this._SearchPageUrl = value; },
    get_SearchPageUrl: function() { return this._SearchPageUrl; },

    set_CurrentSearchText: function(value) { this._CurrentSearchText = value; },
    get_CurrentSearchText: function() { return this._CurrentSearchText; },

    set_DefaultSearchText: function(value) { this._DefaultSearchText = value; },
    get_DefaultSearchText: function() { return this._DefaultSearchText; },

    initialize: function() {
        Devy.UI.SiteSearch.callBaseMethod(this, 'initialize');

        this._initInterface();

        this._atachEvents();
    },

    dispose: function() {
        this._detachEvents();

        Devy.UI.SiteSearch.callBaseMethod(this, 'dispose');
    },

    _atachEvents: function() {
        var contexto = this;

        if (this._cmdSearch) {
            $addHandler(this._cmdSearch, "click", function(evt) {
                evt.preventDefault();
                contexto._Search();
            });
        }

        if (this._txtSearch) {
            $addHandler(this._txtSearch, "keydown", function(evt) {
                if (evt.keyCode == 13) {
                    evt.preventDefault();
                    contexto._Search();
                }
            });

            $addHandler(this._txtSearch, "focus", function(evt) {
                if (this.value == contexto._DefaultSearchText)
                    this.value = "";
            });
        }
    },

    _detachEvents: function() {
        if (this._cmdSearch)
            $clearHandlers(this._cmdSearch);

        if (this._txtSearch)
            $clearHandlers(this._txtSearch);
    },

    _initInterface: function() {
        var containerJQ = $(this._Container);

        this._txtSearch = $('<input type="text" id="SearchCtrlFrm_txtSearch" class="Textbox Search"></input>')[0];

        if (this._CurrentSearchText)
            this._txtSearch.value = this._CurrentSearchText;
        else
            this._txtSearch.value = this._DefaultSearchText;

        containerJQ.append(this._txtSearch);

        this._cmdSearch = $('<a title="Buscar" class="Command Search" href="#"><span>Buscar</span></a>')[0];
        containerJQ.append(this._cmdSearch);
    },

    _Search: function() {
        var texto = this._txtSearch.value;

        //Validamos
        if (!texto || texto == this._DefaultSearchText) {
            Devy.Notifications.ShowError("Error", "Debe ingresar el texto a buscar");
            $(this._txtSearch).focus();
            return;
        }

        window.location = this._SearchPageUrl + "?texto=" + texto;
    }
}


Devy.UI.SiteSearch.registerClass('Devy.UI.SiteSearch', Sys.Component);

