/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("Pythagoras.NewsTools");

Pythagoras.NewsTools.NewsToolsClinet = function() {
    Pythagoras.NewsTools.NewsToolsClinet.initializeBase(this);        
}

Pythagoras.NewsTools.NewsToolsClinet.prototype = {    
    
    _submitButton: null,
    _messageLine: null,
    _messageContainer: null,
    _inputField: null,
    _clsNameInError:null,
    _titleCode:null,
    _clientCall:null,
    _charset:null,
    _onSubmitButtonHandler: null,    
    
    
    onInit: function(e) {        
        // bind controls
        var fcn = window["Pythagoras$NewsTools$BindPageElements"];
        if(!fcn || typeof(fcn) !== "function") {
            var err = Error.invalidOperation("Page needs to implement Pythagoras$NewsTools$BindPageElements handler");
            throw err;
        }
        
        var fcnDelegate = Function.createDelegate(this, fcn);
        fcnDelegate();
        
        if(!this._submitButton || !this._inputField || !this._titleCode) {
           var err = Error.invalidOperation("Pythagoras$NewsTools$BindPageElements handler have to set SubmitButton, InputField and TitleCode");
            throw err;
        }                
        
        this._onSubmitButtonHandler = Function.createDelegate(this, this.onSubmitButton);
        $addHandler(this._submitButton, "click", this._onSubmitButtonHandler);
               
    },
    
    set_SubmitButton : function(val) { this._submitButton = val; },
    get_SubmitButton : function() { return this._submitButton; },
    set_InputField : function(val) { this._inputField = val; },
    get_InputField : function() { return this._inputField; },
    set_MessageLine : function(val) { this._messageLine = val; },
    get_MessageLine : function() { return this._messageLine; },
    set_MessageContainer : function(val) { this._messageContainer = val; },
    get_MessageContainer : function() { return this._messageContainer; },
    set_ClsNameInError : function(val) { this._clsNameInError = val; },
    get_ClsNameInError : function() { return this._clsNameInError; },
    set_TitleCode : function(val) { this._titleCode = val; },
    get_TitleCode : function() { return this._titleCode; },
    set_ClientCall : function(val) { this._clientCall = val; },
    get_ClientCall : function() { return this._clientCall; },
    set_Charset : function(val) { this._charset = val; },
    get_Charset : function() { return this._charset; },
    
    onSubmitButton : function(e) {
        
        var eml = this._inputField.value;
        
        var urlClientCall = this._clientCall + "?eml=" + encodeURIComponent(eml) + "&ttl=" + encodeURIComponent(this._titleCode);
        if(this._charset) {
            urlClientCall += "&charset=" + encodeURIComponent(this._charset);
        }
        
        var headElement = document.getElementsByTagName("head")[0];
        if(!headElement) {
            var err = Error.invalidOperation("Page have no HEAD element");
            throw err;
        }
        
        var elementScript = document.createElement("SCRIPT");
        elementScript.type = "text/javascript";
        elementScript.language = "javascript";
        elementScript.src = urlClientCall;
        headElement.appendChild(elementScript);
        
    },
    
    showMessage : function(strMessage, bInError) {
        
        if(this._messageLine) {
        
            // clear content        
            while(this._messageLine.hasChildNodes && this._messageLine.firstChild) {
                this._messageLine.removeChild(this._messageLine.firstChild);
            }
            
            if(this._clsNameInError) {
                if(bInError) {
                    Sys.UI.DomElement.addCssClass(this._messageLine, this._clsNameInError);
                    if(this._messageContainer) {
                        Sys.UI.DomElement.addCssClass(this._messageContainer, this._clsNameInError);
                    }
                } else {
                    Sys.UI.DomElement.removeCssClass(this._messageLine, this._clsNameInError);
                    if(this._messageContainer) {
                        Sys.UI.DomElement.removeCssClass(this._messageContainer, this._clsNameInError);
                    }
                }
            }
            
            var txt = document.createTextNode(strMessage);
            this._messageLine.appendChild(txt);
            if(this._messageContainer && this._messageContainer.style.display.toLowerCase() === "none") {
                this._messageContainer.style.display = "";
            }
        } else {
            alert(strMessage);
        }
    },
    
    serverCallback: function(resp) 
    {
        this.showMessage(resp.strMessage, !resp.bSuccess);        
        
        if(resp.bSuccess) {
            this._inputField.value = '';
        }
    },
            
    dispose: function() {                        
        $removeHandler(this._submitButton, "click", this._onSubmitButtonHandler);
        Pythagoras.NewsTools.NewsToolsClinet.callBaseMethod(this, 'dispose');
    }
}

Pythagoras.NewsTools.NewsToolsClinet.registerClass('Pythagoras.NewsTools.NewsToolsClinet', Sys.Component);



            Pythagoras.NewsTools.NewsToolsClinet._instance = $create(Pythagoras.NewsTools.NewsToolsClinet, { ClientCall: 'http://www2.ces.cz/NewsToolsAtemi/ClientCall.ashx' }, null, null, null);
            Sys.Application.add_init(Function.createDelegate(Pythagoras.NewsTools.NewsToolsClinet._instance, Pythagoras.NewsTools.NewsToolsClinet._instance.onInit));
            if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();        
        if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
