
/**
 * Users module
 *
 * @copyright Copyright (c) 2011, ecto.lt
 * @author    Benas Valančius <benas@ecto.lt>
 * @package   Framework
 *
 * $Id: users.js 1609 2011-02-06 21:20:20Z noen $
 */

var users = {};

/**
 * Login
 */
users.formLogin = function()
{
    var login    = $('input[name="login"]').val();
    var password = $('input[name="password"]').val();
    var remember = $('input[name="remember"]').val();

    if(login == '' || password == '')
    {
        $('#loginMessage').html(_('Fill all fields.'));
    }
    else
    {
        $.ajax({
            type     : 'POST',
            url      : '/users/login/',
            data     : {login:login,password:password,remember:remember},
            dataType : 'json',
            success  : function(data)
            {
                if(data !== false)
                {
                    if(data == '')
                        window.location.reload();
                    else
                        window.location = data;
                }
                else
                {
                    $('#loginMessage').html(_('Username or/and password error.'));
                    $('input[name="password"]').val('').focus();
                }
            }
        });
    }
};

/**
 * Validate URL
 *
 * @param string selector - jQuery selector
 *
 * @return bool
 */
users.checkUrl = function(selector)
{
    var url = $(selector).val();
    
    if(url == '')
        return true;
    
    return formHandler.helper.validateUrl(url);
};

/**
 * Validate Email
 *
 * @param string selector - jQuery selector
 *
 * @return bool
 */
users.checkEmail = function(selector)
{
    var email = $(selector).val();
    var status   = true;

    $.ajax({
        type     : 'POST',
        url      : '/users/checkEmail',
        data     : {email:email},
        dataType : 'json',
        async    : false,
        success  : function(data)
        {
            status = data;
        }
    });
    return status;
};

/**
 * Validate Email (invert)
 *
 * @param string selector - jQuery selector
 *
 * @return bool
 */
users.checkNotEmail = function(selector)
{
    var email  = $(selector).val();
    var status = true;

    $.ajax({
        type     : 'POST',
        url      : '/users/checkEmail',
        data     : {email:email},
        dataType : 'json',
        async    : false,
        success  : function(data)
        {
            status = !data;
        }
    });
    return status;
};

users.checkLostCode = function(selector)
{
    var code  = $(selector).val();
    var email = $('#lostPasswordForm input[name="email"]').val();
    var status   = true;

    $.ajax({
        type     : 'POST',
        url      : '/users/checkLostCode',
        data     : {code:code,email:email},
        dataType : 'json',
        async    : false,
        success  : function(data)
        {
            status = data;
        }
    });
    return status;
};

users.checkPasswords = function(selector)
{
    var pass1 = $('#lostPasswordForm input[name="password1"]').val();
    var pass2 = $('#lostPasswordForm input[name="password2"]').val();

    if(pass1 === pass2)
        return true;

    return false;
};

/**
 * Start registration
 */
users.activateRegistration = function()
{
    $(document).ready(function()
    {
        $('#signUpForm input[name="login"]').formtip({
            message : _('Your name or nickname.', 'users'),
            handler : '#help1'
        });
        $('#signUpForm input[name="gender"]').formtip({
            message : _('Please indicate your gender.', 'users'),
            handler : '#help2'
        });
        $('#signUpForm input[name="email"]').formtip({
            message : _('Your E-mail address, which will be used to login to the site, password reminder and system messages.', 'users'),
            handler : '#help3'
        });
        $('#signUpRules').dialog({width : '500px'});
    });
};

/**
 * Validate login
 *
 * @param string selector - jQuery selector
 *
 * @return bool
 */
users.checkLogin = function(selector)
{
    var login = $(selector).val();
    var status   = true;

    if(!login.match(/^[a-zA-Z0-9 _-~!@\$%^*()\[\]:,.|]+$/) || login.length > 16 || login.length < 3)
        return 1;

    $.ajax({
        type     : 'POST',
        url      : '/users/checkLogin',
        data     : {login:login},
        dataType : 'json',
        async    : false,
        success  : function(data)
        {
            if(data === true)
                status = true;
            else
                status = 2;
        }
    });
    return status;
};

users.checkDate = function()
{
    var Y = $('#profileForm select[name="birth_year"]').val();
    var M = $('#profileForm select[name="birth_mounth"]').val();
    var D = $('#profileForm select[name="birth_day"]').val();

    return form.checkDate(Y, M, D);
};

users.checkMyEmail = function(selector)
{
    var email  = $(selector).val();
    var status = true;

    $.ajax({
        type     : 'POST',
        url      : '/users/checkMyEmail',
        data     : {email:email},
        dataType : 'json',
        async    : false,
        success  : function(data)
        {
            status = data;
        }
    });
    return status;
};

users.checkCurrentPassword = function(selector)
{
    var password = $(selector).val();
    var status = true;

    $.ajax({
        type     : 'POST',
        url      : '/users/checkCurrentPassword',
        data     : {password:password},
        dataType : 'json',
        async    : false,
        success  : function(data)
        {
            status = data;
        }
    });
    return status;
};

users.checkNewPasswords1 = function(selector)
{
    var pass1 = $('#accountForm input[name="password1"]').val();
    var pass2 = $('#accountForm input[name="password2"]').val();
    
    if(pass2 != '' && pass1 == '')
        return 1;

    if(pass1 != pass2)
        return 2;

    return true;
};
users.checkNewPasswords2 = function(selector)
{
    var pass1 = $('#accountForm input[name="password1"]').val();
    var pass2 = $('#accountForm input[name="password2"]').val();

    if(pass1 != '' && pass2 == '')
        return 1;

    if(pass1 != pass2)
        return 2;

    return true;
};

/**
 * Profile form
 */
users.checkAvatarForm = function(errorOutput)
{
    var fields = [
        {
            selector     : '#avatarForm input[name="avatar"]',
            message      : _('Please select Your avatar image.', 'users') // TODO: tikrinti tipa failo
        },
    ];

    $('#avatarForm .spiner').show();

    var status = formHandler.checkForm(fields, errorOutput);

    if(!status)
        $('#avatarForm .spiner').hide();

    return status;
};
