$(function() {
    var email = '';
    var username = '';

    $('#user_register #username').blur(function(){
        if ($('#username').val() == ''){
            $('#usernamecheckitvalue').html('');
        }else if (username != $('#username').val()){
            username = $('#username').val();
            $.post('ajax/checklogin', {username: $('#username').val()}, function(data) {
                if (data != 'OK'){
                    $('#usernamecheckitvalue').html('<span class="red bold">No disponible</span>');
                }else{
                    $('#usernamecheckitvalue').html('<span class="green bold">Disponible</span>');
                }
            });
        }
    });

    $('#user_register #email').blur(function(){
        if ($('#email').val() == ''){
            $('#emailcheckitvalue').html('');
        }else if (email != $('#email').val()){
            email = $('#email').val();
            $.post('ajax/checkemail', {email: $('#email').val()}, function(data) {
                if (data != 'OK'){
                    $('#emailcheckitvalue').html('<span class="red bold">No disponible</span>');
                }else{
                    $('#emailcheckitvalue').html('<span class="green bold">Disponible</span>');
                }
            });
        }
    });
    

    $('#user_register').validate({
        rules: {
            username: {required: true},
            email: {required: true,
                    email: true},
            password: {required: true,
                        minlength: 5},
            password2: {required: true,
                        equalTo: "#password"},
            acceptlegal: {required: true}
        },

        messages: {
            username: {required: 'Camp obligatori'},
            email: {required: 'Camp obligatori',
                    email: 'L\'email és incorrecte'},
            password: {required: 'Camp obligatori',
                        minlength: '5 caràcters mínim'},
            password2: {required: 'Camp obligatori',
                        equalTo: 'Les contrasenyes no coincideixen'},
            acceptlegal: {required: 'Camp obligatori'}
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings("span"));
        },
        submitHandler: function (form){
            email = $('#email').val();
            login = $('#username').val();
            password = $('#password').val();
            $.post('/register', {login: login, email: email, password: password}, function(data) {
                if ($.trim(data) != 'OK'){
                    $('#genericform').html('<span class="red bold">Hi ha hagut un error al registrar-te.</span>');
                }else{
                    $('#genericform').html('<span class="green bold">Ja has estat registrat. Rebràs un e-mail al teu correu per confirmar la direcció de correu.</span>');
                }
            });
        }
    })

    $('#commentfrm').validate({
        rules: {
            content: {required: true}
        },

        messages: {
            content: {required: 'Camp obligatori'}
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings("span"));
        },
        submitHandler: function (form){
            comment = $('#comment').val();
            link_id = $('#link_id').val();
            $.post('/send_comment', {comment: comment, link_id: link_id}, function(data) {
                var obj = jQuery.parseJSON(data);
                if (obj.code != 'OK'){
                    $('.genericform').after('<span class="red bold">Hi ha hagut un error a l\'enviar el comentari.</span>');
                    $('.genericform').remove();
                }else{
                    $('.genericform').after(obj.msg);
                    $('.genericform').remove();
                }
            });
        }
    })

    $('#passrenew').validate({
        rules: {
            password: {required: true,
                        minlength: 5},
            password2: {required: true,
                        equalTo: "#password"}
        },

        messages: {
            password: {required: 'Camp obligatori',
                        minlength: '5 caràcters mínim'},
            password2: {required: 'Camp obligatori',
                        equalTo: 'Les contrasenyes no coincideixen'}
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings("span"));
        },
        submitHandler: function (form){
            password     = $('#password').val();
            validateCode = $('#validate').val();
            $.post('/password_renew', {password: password, validate: validateCode}, function(data) {
                if (data != 'OK'){
                    $('#genericform').after('<span class="red bold">Hi ha hagut un error al renovar la contrasenya, l\'administrador ha esta avisat.</span>');
                    $('#genericform').remove();
                }else{
                    $('#genericform').after('<span class="green bold">Contrasenya renovada.</span>');
                    $('#genericform').remove();
                }
            });
        }
    })


    $('#passrecover').validate({
        rules: {
            username: {required: true},
            security_code: {required: true, remote: '/ajax/captcha_validation'}
        },
        messages: {
            username: {required: 'Camp obligatori'},
            security_code: {required: 'Camp obligatori'}
        },
        onkeyup: true,
        submitHandler: function (form){
            username = $('#login').val();
            $.post('/password_recovery', {username: username}, function(data) {
                if (data != 'OK'){
                    $('#genericform').after('<span class="red bold">Hi ha hagut un error al recuperar la contrassenya, l\'administrador ha esta avisat.</span>');
                    $('#genericform').remove();
                }else{
                    $('#genericform').after('<span class="green bold">T\'hem enviat un correu amb l\'enllaç per renovar la contrassenya.</span>');
                    $('#genericform').remove();
                }
            });
        }
    })


    $('#link1frm').validate({
        rules: {
            link: {required: true}
        },
        messages: {
            link: {required: 'Camp obligatori'}
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings("span"));
        },
        submitHandler: function (form){
            $('#response').remove();
            $('.loader').html('<img src="/img/ajax-loader.gif" />');
            link = $('#link').val();
            $.post('/send_link', {link: link}, function(data) {
                $('.loader').html('');
                $('#response').remove();
                var obj = jQuery.parseJSON(data);
                if (obj.code != 'OK'){
                    $('#link').after('<span class="red bold" id="response">&nbsp;&nbsp;'+obj.msg+'</span>');
                }else{
                    $('.firstStep').remove();
                    $('#link_details').show();
                    $('#url').val(link);
                    $('#title').val(obj.title);
                    $('#bodytext').val(obj.description);
                    $('#bodycounter').val($('#bodytext').attr('title') - $('#bodytext').val().length);
                }
            });
        }
    })


    $("#link2frm").validate({
        rules: {
            url: {required: true},
            title: {required: true},
            bodytext: {required: true}
        },
        messages: {
            url: {required: 'Camp obligatori'},
            title: {required: 'Camp obligatori'},
            bodytext: {required: 'Camp obligatori'}
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings(".error"));
        },
        submitHandler: function (form){
            $.post('/send_link', {link: $('#url').val(), title: $('#title').val(), tags: $('#tags').val(), description: $('#bodytext').val()}, function(data) {
                var obj = jQuery.parseJSON(data);
                $('#firstStep').remove();
                $('#lastStep').remove();
                if (obj.code != 'OK'){
                    $('#genericform').html('<span class="red bold" id="response">'+obj.msg+'</span>');
                }else{
                    $('#genericform').html('<span class="green bold" id="response">Notícia enviada correctament, ara només has d\'esperar a que la gent s\'indigni igual que tú.</span>');
                }
            });
        }
    })

    $("#linkupdate").validate({
        rules: {
            title: {required: true},
            bodytext: {required: true}
        },
        messages: {
            title: {required: 'Camp obligatori'},
            bodytext: {required: 'Camp obligatori'}
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings(".error"));
        },
        submitHandler: function (form){
            $.post('/link_edit/'+$('#item').val(), {title: $('#title').val(), tags: $('#tags').val(), description: $('#bodytext').val()}, function(data) {
                var obj = jQuery.parseJSON(data);
                $('#link_details').remove();
                if (obj.code != 'OK'){
                    $('#genericform').html('<span class="red bold" id="response">'+obj.msg+'</span>');
                }else{
                    $('#genericform').html('<span class="green bold" id="response">Notícia actualitzada correctament.</span>');
                }
            });
        }
    })


    $('.countable').keyup(function(){
        if ($(this).val().length >= $(this).attr('title')) $(this).val($(this).val().substring(0, $(this).attr('title')));
        $('#bodycounter').val($(this).attr('title') - $(this).val().length);
    });

    $('.voteLink').click(function(){
        linkId = $(this).attr('rel');
        jQuery.getJSON('/vote_link/?item='+linkId, function (data){
            if (jQuery.trim(data.allowed) == 'NO') {
                if (data.error == 'YET_VOTED'){
                    alert('Ja has votat aquesta notícia');
                }else if (data.error == 'TOO_VOTES'){
                    alert('Massa vots en massa poc temps, espera\'t unes hores');
                }else if (data.error == 'LOW_KARMA'){
                    alert('Has d\'augmentar el karma, espera unes hores');
                }else{
                    alert('Hi ha hagut un error en l\'aplicatiu, l\'admnistrador ha estat avisat');
                }
            }else{
                $('.numvotes-'+linkId).html(data.votes);
            }
        });
        return false;
    });
});

/*$("#testform").serialize()*/
