var Login = function()
{
    var config = {
        regexes: {            
            password: /^[\w!%&/=?_#*,;.:<>@€]{4,30}$/,
            email: /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/
        }
    };
    var priv = {
        CheckEmail: function (str)
        {
            var regex = config.regexes.email;
            return regex.test(str);
        },
        CheckPassword: function (str)
        {
            var regex = config.regexes.password;
            return regex.test(str);
        }
    };
    
    return{
        LoginOnClick: function()
        {
            $('.loader-login').attr('src','../images/general/spinner.gif');
            $('.loader-login').show();
            $('#lblError').html('');
            $('#lblError').hide();
            var rememberEmail = $('.RememberMe:checked').length == 1 ? "true" : "false";

            $('.spanvalidator').hide();
            
            var email = $('#txtEmail').val();
            var password = $('#txtPassword').val();            
            var valid = true;      
            //password
            if (!priv.CheckPassword(password))
            {
                $('#valPassword').show();
                var message = messages.PASSWORD_FIELD_NOT_PROPER_ERROR;
                //message.replace("[field_name]",messages.PASSWORD);
                $('.lblError').html(message);
                valid = false;
            }
            
            //email
            if (!priv.CheckEmail(email))
            {
                $('#valEmail').show();
                var message = messages.EMAIL_FIELD_NOT_PROPER_ERROR;
                //message.replace("[field_name]",messages.EMAIL);
                $('.lblError').html(message);
                valid = false;
            }
            
            if (!valid)
            {
                $('.lblError').show();
                $('.loader-login').attr('src','');
                $('.loader-login').hide();
                return;
            }
            
            $.ajax({
                //job 3 is login
                type: "POST",
                url: "../Handlers/Subscription.ashx",
                data: "job=3"                    
                    +"&email=" + email
                    +"&password=" + password
                    +"&rememberEmail=" + rememberEmail
                    ,
                success: function(data){          
                    if(data == undefined)                                
                        return;
                        // -1 no participant
                        // -2 not activated
                        // -3 not valid field
                        // 0 success                        
                    if(data.HTML == 0)
                    {
                        tb_remove();
                        window.location.replace(messages.path_prefix+"/Home.aspx");
                    }
                    else if (data.HTML == -1)
                    {   
                        $('#lblError').html(messages.LOGIN_WRONG_CREDENTIAL);
                        $('#lblError').show();
                    }                    
                    $('.loader-login').attr('src','');
                    $('.loader-login').hide();
                },
                error: function(data){  
                    $('.loader-login').attr('src','../images/general/notavailable.gif');
                    $('.loader-login').show();              
                },dataType:"json"
           });
        },
        
        RequestPassword: function()
        {
            var email = $('#txtEmail').val();
            var valid = true;   
            
            $('.spanvalidator').hide();   
            
            if (!priv.CheckEmail(email))
            {
                $('#valEmail').show();
                var message = messages.EMAIL_FIELD_NOT_PROPER_ERROR;
                //message.replace("[field_name]",messages.EMAIL);
                $('.lblError').html(message);
                valid = false;
            }
            if (!valid)
                return;
            $.ajax({
                //job 5 is request password
                type: "POST",
                url: "../Handlers/Subscription.ashx",
                data: "job=5"                    
                    +"&email=" + email
                    ,
                success: function(data){          
                    if(data == undefined)                                
                        return;
                    if(data.HTML == 0)
                    {
                        $('.lblError').html(messages.PASSWORD_SEND_MESSAGE);
                        $('.lblError').show();
                    }
                    else
                    {   
                        $('.lblError').html(messages.EMAIL_NOT_FOUND);
                        $('.lblError').show();
                    }       
                },
                error: function(data){                
                },dataType:"json"
           });
        },
        
        CheckEnter : function(e){
            
            if (!e)
               e = window.event;
            if(e.keyCode == 13)
            {
                Login.LoginOnClick();
            }
            else
            {
                true;
            }
        },
        
        RegisterTelesportOnClick: function()
        {
            tb_remove();
            window.location.replace(messages.path_prefix+"/UserSystem/Register.aspx");
        },
        
        LoginHyvesOnClick: function()
        {
            tb_remove();
            window.location.replace(messages.path_prefix+"/UserSystem/LoginHyves.aspx");
        }
    };
}();


