    
    /* //-> INCLUDE CRYPTO SHA256 */
    document.write('<scr' + 'ipt src="/library/js/components/encrypt/sha2.js" type="text/javascript"><\/scr' + 'ipt>');
    
    var login = {
    
        connectionService:"/webservices/Authentification.aspx",
        destination:[ "/Dashboard.aspx", "/SelectSocieties.aspx" ],
        initialize:function()
        {
            this.formFields = {
                login:$("login"),
                password:$("password")
            };
            
            this.messagePanel = $("messagePanel");
            
            if(!this.formFields.login || !this.formFields.password || !$("messagePanel"))
            {
                alert("Missing authentification DOM elements !");
                return;
            }
        
            
            this.setupLoginProcess();
            this.formFields.login.focus();
            
        },
        
        setupLoginProcess:function()
        {
        
            var browserSupport = true;
            if(Prototype.Browser.IE && (parseFloat(navigator.appVersion.split("MSIE")[1]) <= 6.0)) browserSupport = false;
            
            var browserSupportMessage = '';
            browserSupportMessage += 'Le navigateur utilis&eacute; n\'est pas pris en charge par votre Extranet SDEZ.<br />Pour des performances et un confort d\'utilisation optimale, Vous pouvez mettre &agrave; jour votre navigateur avec la derni&egrave;re version d\'Internet explorer ou optez pour un autre des navigateurs propos&eacute;s dans la liste ci-dessous :<br /><br />';
            browserSupportMessage += '<ul>';
                browserSupportMessage += '<li>&middot; <a href="http://www.microsoft.com/france/windows/products/winfamily/ie/ie8/default.aspx" target="_blank" style="color:#111; text-decoration:none;">Microsoft Internet Explorer 7.0 ou sup&eacute;rieur</a></li>';
                browserSupportMessage += '<li>&middot; <a href="http://www.mozilla-europe.org/fr/firefox/" target="_blank" style="color:#111; text-decoration:none;">Firefox 3.0.7 (Win)</a></li>';
                browserSupportMessage += '<li>&middot; <a href="http://www.google.com/chrome/index.html?hl=fr" target="_blank" style="color:#111; text-decoration:none;">Google Chrome 1.0 (Win)</a></li>';
                browserSupportMessage += '<li>&middot; <a href="http://www.apple.com/fr/safari/download/" target="_blank" style="color:#111; text-decoration:none;">Safari 3.1.1 (Win)</a></li>';
                browserSupportMessage += '<li>&middot; <a href="http://www.opera.com/" target="_blank" style="color:#111; text-decoration:none;">Opera 9.64 (Win)</a></li>';
            browserSupportMessage += '</ul>';
            
            if(!browserSupport)
            {
                Application.modalBox.confirm.open({
                    message:browserSupportMessage,
                    buttons:[
                        // OK BUTTON
                        {codeName:"ok", label:"Ok", action:Prototype.emptyFunction}
                    ]
                });
                
                return;
            }
        
        
        
            if($("enter"))
            {
                this.enterButton = new ActionButton("enter");
                this.enterButton.addListener("logIn", "click", function(e){this.connect(e)}.bindAsEventListener(this));
                this.enterButton.enable();
                
            }
            else
            {
                alert("MISSING ENTER DOM BUTTON ELEMENT !");
                return;
            }
            
            this.stopFormSubmit();
            
            //-> SETUP ID FIELD
            if(this.formFields.login)
            {
                this.formFields.login.observe("focus", this.installEnterKeyListener.bindAsEventListener(this));
                this.formFields.login.observe("blur", this.unInstallEnterKeyListener.bindAsEventListener(this));
            }
            //-> SETUP PASSWORD FIELD
            if(this.formFields.password)
            {
                this.formFields.password.observe("focus", this.installEnterKeyListener.bindAsEventListener(this));
                this.formFields.password.observe("blur", this.unInstallEnterKeyListener.bindAsEventListener(this));
            }
        
            this.bindKeyPressListener = this.keyPressListener.bindAsEventListener(this);                
            
        },
        
        keyPressListener:function(e)
	    {
            if(e.keyCode == 13)
            {
                this.connect();
            }
            else
            {
                return;
            }
	        
	    },
	    
	    installEnterKeyListener:function()
	    {
	        this.formFields.login.observe("keypress", this.bindKeyPressListener);
	        this.formFields.password.observe("keypress", this.bindKeyPressListener);
	    },
	    
	    unInstallEnterKeyListener:function()
	    {
	        this.formFields.login.stopObserving("keypress", this.bindKeyPressListener);
	        this.formFields.password.stopObserving("keypress", this.bindKeyPressListener);
	    },
	    
        stopFormSubmit:function()
        {
            if(!this.inPlaceEditionFormSubmitBlock)
            {
                if(document.forms.length > 0)
                {
                    //-> STOP ASP.NET FORM SUBMIT ON PRESS ENTER KEY
                    $(document.forms[0].id).observe("keypress", function(e){
	                    if(e.keyCode && e.keyCode == 13)
	                    {
	                        //alert("Press enter key")
	                        Event.stop(e);
	                    }
                    });
                }
                
                this.inPlaceEditionFormSubmitBlock = true;
            }
        },
	           
        getFormValues:function()
        {
            if(this.formFields.login.value == "" || this.formFields.password.value == "")
            {
                this.messagePanel.update(Application.errorsManager("AUTHENTIFICATION__MISSING_LOGIN_AND_PASS", true).message);
                return null;
            }
        
            return {
                login:this.formFields.login.value,
                password:hex_sha256(this.formFields.password.value)
            };
        
        },
        
        connect:function(e)
        {
            var values = this.getFormValues();
            if(values == null) return;
            
            var postPackage = {};
            postPackage["action"] = "logIn";
            postPackage["login"] = encodeURIComponent(values.login);
            postPackage["password"] = values.password;

            //-> DISABLE TEXTBOXES
            this.toogleTextBoxes(false);
            //-> START LOADING
            this.enterButton.disable();
            this.messagePanel.update(Application.messages.LOADING);
            
            this.connectRequest = Utils.Ajax.webServiceCaller({
                url:this.connectionService,
                method:"post",
                parameters:postPackage,
                onLoading:Prototype.emptyFunction,
                onComplete:function(transport, json){
                			                                            
                    var response = null;
                    
                    //-> LOGIN SUCCESS
                    try
                    {
                        response = eval(transport.responseText);
                        
                        this.messagePanel.update(Application.messages.AUTHENTIFICATION__LOGIN_SUCCESS);
                        this.openAccess.bind(this, response.multipleAccounts).delay(.50);
                    }
                    catch(error)
                    {
                        this.messagePanel.update(Application.errorsManager(transport.responseText, true).message);
                    }
                     
                    //-> ENABLE TEXTBOXES
                    this.toogleTextBoxes(true);
                    this.enterButton.enable();

                }.bind(this)
				
            });                
        },
        
        openAccess:function(multipleAccounts)
        {
            //-> ENABLE TEXTBOXES
            this.toogleTextBoxes(true);
            this.enterButton.enable();
            location.href = this.destination[multipleAccounts];
        
        },
        
        toogleTextBoxes:function(status)
        {            
            for(property in this.formFields)
            {
                eval("this.formFields[property]." + (!status?"disable":"enable") + "()");
            }
        }
    }
    
	Event.onDOMReady(function(){login.initialize()});
