$(document).ready(function(){
    $("#kode_img_sign").click(function(){
        resetCaptcha();
    });
    
    $('#loginForm').submit(function() {
        var options = {
            beforeSubmit : checkLogin,
            dataType:"json",
            success: function(data) {
                $("#submit_btn").removeAttr("disabled");                 
                if($.trim(data.msg).indexOf('Error:') == -1){
                    showTips($("#ikode_result"), 'success', data.msg);
                    location.replace(data.referer);
                    setTimeout(function() {
                        hideWaiting();
                    }, 1500);
                }
                else{
                    hideWaiting();
                    resetCaptcha();
                    showTips($("#ikode_result"), 'error', data.msg);
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });

    $('#signUpForm').submit(function() {
        var options = {
            beforeSubmit : checkSignUp,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                if($.trim(responseText).indexOf('Error:') == -1){
                    showTips($("#ikode_result"), 'success', responseText);
                    location.replace("./");
                }
                else{
                    resetCaptcha();
                    showTips($("#ikode_result"), 'error', responseText);
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });
    
    $('#unsubscribeForm').submit(function() {
        var options = {
            target: '#ikode_result',
            beforeSubmit : checkUnsubscribe,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                resetCaptcha();
                if($.trim(responseText).indexOf('Error:')!= 0){
                    showTips($("#ikode_result"), 'success');
                }
                else{
                    showTips($("#ikode_result"), 'error');
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });
    $('#subscribeForm').submit(function() {

        var options = {
            target: '#ikode_result',
            beforeSubmit : checkSubscribe,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                if($.trim(responseText).indexOf('Error:')!= 0){
                    showTips($("#ikode_result"), 'success');
                }
                else{
                    showTips($("#ikode_result"), 'error');
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });
    
    $('#changeEmailForm').submit(function() {
        var options = {
            target: '#ikode_result',
            beforeSubmit : checkChangeEmail,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                resetCaptcha();
                if($.trim(responseText).indexOf('Error:')!= 0){
                    showTips($("#ikode_result"), 'success');
                }
                else{
                    showTips($("#ikode_result"), 'error');
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });
    
    $('#retrievePasswordForm').submit(function() {
        var options = {
            target: '#ikode_result',
            beforeSubmit : checkRetrievePassword,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                resetCaptcha();
                if($.trim(responseText).indexOf('Error:') == -1){
                    showTips($("#ikode_result"), 'success');
                }
                else{
                    showTips($("#ikode_result"), 'error');
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });

    $('#changePasswordForm').submit(function() {
        var options = {
            target: '#ikode_result',
            beforeSubmit : checkChangePassword,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                resetCaptcha();
                if($.trim(responseText).indexOf('Error:') == -1){
                    showTips($("#ikode_result"), 'success');
                }
                else{
                    showTips($("#ikode_result"), 'error');
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });

    $('#forwardForm').submit(function() {
        var options = {
            target: '#ikode_result',
            beforeSubmit : checkForward,
            success: function(responseText) {
                $("#submit_btn").removeAttr("disabled");
                resetCaptcha();
                if($.trim(responseText).indexOf('Error:') == -1){
                    showTips($("#ikode_result"), 'success');
                }
                else{
                    showTips($("#ikode_result"), 'error');
                }
            }
        };
        $(this).ajaxSubmit(options);
        return false;
    });
})

function checkLogin(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();
    if (!form.username.value || !form.password.value || !form.validate_code.value) {
        $("#ikode_result").html('<span class="error">'+field_is_required+'</span>');
    }
                        
    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        popWaiting();
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}

function checkSignUp(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();

    if (!form.username.value) {
        $(form.username).parent().append('<span class="error">'+front_username_required+'</span>');
    }
    if (!form.password.value) {
        $(form.password).parent().append('<span class="error">'+front_password_required+'</span>');
    }
    if (!form.validate_code.value) {
        $(form.validate_code).parent().append('<span class="error">'+validate_code_required+'</span>');
    }
    
    if (!form.first_name.value) {
        $(form.first_name).parent().append('<span class="error">'+user_first_name_required+'</span>');
    }
    if (!form.email.value || !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(form.email).val())) {
        $(form.email).parent().append('<span class="error">'+email_address_incorrect+'</span>');
    }

    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{

        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}

function checkSubscribe(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();

    if (!form.first_name.value) {
        $(form.first_name).parent().append('<br /><span class="error">'+first_name_field_required+'</span>');
    }
    if (!form.email.value || !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(form.email).val()) ){
        $(form.email).parent().append('<br /><span class="error">'+email_address_incorrect+'</span>');
    }
    
    var checkeds = $("input[name='category_id[]']:checked").length;
    if (checkeds == 0) {
        $("#select_category").append('<br /><span class="error">'+choose_at_least_category+'</span>');
    }
    if (!form.validate_code.value) {
        $(form.validate_code).parent().append('<br /><span class="error">'+validate_code_required+'</span>');
    }

    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }

}
function checkUnsubscribe(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();
    if (!form.email.value || !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(form.email).val()) ){
        $(form.email).parent().append('<span class="error">'+email_address_incorrect+'</span>');
    }
    if (!form.validate_code.value) {
        $(form.validate_code).parent().append('<br><span class="error">'+validate_code_required+'</span>');
    }
    var str='';
    $("input[type=checkbox]").each(function(){
        if ($(this).attr("checked"))
            str+= $(this).val()+',';
    })
    if (!str) {
        $(form.category_id).parent().append('<span class="error">'+first_select_category+'</span>');
    }

    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}
function checkChangeEmail(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();
    if (!form.email.value || !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(form.email).val()) ){
        $(form.email).parent().append('<span class="error">'+email_address_incorrect+'</span>');
    }
    if (!form.new_email.value || !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(form.new_email).val()) ){
        $(form.new_email).parent().append('<span class="error">'+email_address_incorrect+'</span>');
    }
    if (!form.rnew_email.value || !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(form.rnew_email).val()) ){
        $(form.rnew_email).parent().append('<span class="error">'+email_address_incorrect+'</span>');
    }
    if (!form.validate_code.value) {
        $(form.validate_code).parent().append('<span class="error">'+validate_code_required+'</span>');
    }

    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}

function checkRetrievePassword(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();
    if (!form.username.value) {
        $(form.username).parent().append('<span class="error">'+front_username_required+'</span>');
    }
    if (!form.validate_code.value) {
        $(form.validate_code).parent().append('<span class="error">'+validate_code_required+'</span>');
    }

    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}
    
function  checkChangePassword(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();
    if (!form.key.value) {
        $(form.key).parent().append('<span class="error">'+front_validate_key_required+'</span>');
    }
    if (!form.password.value) {
        $(form.password).parent().append('<span class="error">'+front_password_required+'</span>');
    }
    if (!form.repeat_password.value) {
        $(form.repeat_password).parent().append('<span class="error">'+front_repassword_required+'</span>');
    }
    if (!form.validate_code.value) {
        $(form.validate_code).parent().append('<span class="error">'+validate_code_required+'</span>');
    }

    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}


function  checkForward(formData, jqForm, options){
    var form = jqForm[0];
    $('.error').remove();
    if (!form.name.value) {
        $(form.name).parent().append('<span class="error">'+font_name_required+'</span>');
    }
    if (!form.email.value) {
        $(form.email).parent().append('<span class="error">'+font_email_required+'</span>');
    }
    
    if($('.error').size()!=0){
        setTimeout(function() {
            $(".error").slideUp("slow");
        }, 4000);
        return false;
    }else{
        $("#submit_btn").attr({
            "disabled":"disabled"
        });
        return true;
    }
}

function showTips( tipobj, status, data ){
    if(status =='success'){
        $(tipobj).addClass('box box-success').slideDown('slow');
    }
    else if(status =='error'){
        $(tipobj).addClass('box box_error').slideDown('slow');
    }
    else{
        $(tipobj).addClass('box box_info').slideDown('slow');
    }

    if(data != ''){
        $(tipobj).html(data);
    }

//    setTimeout( function(){
//        $(tipobj).slideUp('slow');
//    }, ( 5000 ) );

    return false;
}

function popWaiting(){
    $('#screen').css({
        "display": "block",
        opacity: 0.7,
        "width":$(document).width() -40,
        "height":$(document).height() -40
    });
    $('#waiting-box').css({
        "display": "block"
    }).click(function(){
        $(this).css("display", "none");
        $('#screen').css("display", "none")
    });
}

function hideWaiting(){
    $('#waiting-box').css("display", "none");
    $('#screen').css("display", "none")
}

function resetCaptcha(){
    $('#kode_img_sign').attr('src','index.php?c=utility&m=createCaptcha&r=' + Math.round(Math.random() * 10000));
}
