var Login = function () { var runLoginButtons = function () { $('.forgot').bind('click', function () { $('.box-login').hide(); $('.box-forgot').show(); }); $('.register').bind('click', function () { $('.box-login').hide(); //$('.box-register').show(); }); $('.go-back').click(function () { $('.box-login').show(); $('.box-forgot').hide(); //$('.box-register').hide(); }); }; var runSetDefaultValidation = function () { $.validator.setDefaults({ errorElement: "span", // contain the error msg in a small tag errorClass: 'help-block', errorPlacement: function (error, element) { // render error placement for each input type if (element.attr("type") == "radio" || element.attr("type") == "checkbox") { // for chosen elements, need to insert the error after the chosen container error.insertAfter($(element).closest('.form-group').children('div').children().last()); } else if (element.attr("name") == "card_expiry_mm" || element.attr("name") == "card_expiry_yyyy") { error.appendTo($(element).closest('.form-group').children('div')); } else { error.insertAfter(element); // for other inputs, just perform default behavior } }, ignore: ':hidden', highlight: function (element) { $(element).closest('.help-block').removeClass('valid'); // display OK icon $(element).closest('.form-group').removeClass('has-success').addClass('has-error').find('.symbol').removeClass('ok').addClass('required'); // add the Bootstrap error class to the control group }, unhighlight: function (element) { // revert the change done by hightlight $(element).closest('.form-group').removeClass('has-error'); // set error class to the control group }, success: function (label, element) { label.addClass('help-block valid'); // mark the current input as valid and display OK icon $(element).closest('.form-group').removeClass('has-error'); }, highlight: function (element) { $(element).closest('.help-block').removeClass('valid'); // display OK icon $(element).closest('.form-group').addClass('has-error'); // add the Bootstrap error class to the control group }, unhighlight: function (element) { // revert the change done by hightlight $(element).closest('.form-group').removeClass('has-error'); // set error class to the control group } }); }; var runLoginValidator = function () { var form = $('.form-login'); var errorHandler = $('.errorHandler', form); form.validate({ rules: { username: { minlength: 2, required: true }, password: { minlength: 4, required: true } }, messages:{ username :{ minlength:"Karakter minimal {0} Karakter", required:"Silakan masukkan username anda" }, password:{ minlength:"Karakter minimal {0} Karakter", required:"Silakan masukkan password anda" } }, submitHandler: function (form) { errorHandler.hide(); var submitButton = $('.form-login button[type="submit"]'); submitButton.prop('disabled', true); $('#loading').show(); $.ajax({ url:'act.auth.php', data:$('.form-login').serialize(), type:'post', dataType:'json', success:function(json){ if (json.result){ location.href='dashboard.php'; }else{ //alert(json.msg); errorHandler.html(json.msg || 'Gagal Login.'); errorHandler.show(); submitButton.prop('disabled', false); $('#loading').hide(); } }, error:function(xhr){ var msg = 'Login gagal diproses. Silakan coba lagi.'; if (xhr.responseText) { msg += '
' + xhr.responseText.substring(0, 300) + ''; } errorHandler.html(msg); errorHandler.show(); submitButton.prop('disabled', false); $('#loading').hide(); } }); return false; }, invalidHandler: function (event, validator) { //display error alert on form submit errorHandler.show(); } }); }; var runForgotValidator = function () { var form2 = $('.form-forgot'); var errorHandler2 = $('.errorHandler', form2); form2.validate({ rules: { email: { required: true } }, messages:{ email: "Silakan masukkan alamat email anda" }, submitHandler: function (form) { errorHandler2.hide(); $.ajax({ url:'act.auth.php', data:$('.form-forgot').serialize(), type:'post', dataType:'json', /*beforeSend:function(){ $("#statusLogin").html("Silakan Tunggu.."); },*/ success:function(json){ if (json.result){ alert(json.msg); //location.href='./' }else{ errorHandler2.html(json.msg); errorHandler2.show(); } } }); return false; }, invalidHandler: function (event, validator) { //display error alert on form submit errorHandler2.show(); } }); }; /*var runRegisterValidator = function () { var form3 = $('.form-register'); var errorHandler3 = $('.errorHandler', form3); form3.validate({ rules: { full_name: { minlength: 2, required: true }, address: { minlength: 2, required: true }, city: { minlength: 2, required: true }, gender: { required: true }, email: { required: true }, password: { minlength: 6, required: true }, password_again: { required: true, minlength: 5, equalTo: "#password" }, agree: { minlength: 1, required: true } }, submitHandler: function (form) { errorHandler3.hide(); }, invalidHandler: function (event, validator) { //display error alert on form submit errorHandler3.show(); } }); };*/ return { //main function to initiate template pages init: function () { runLoginButtons(); runSetDefaultValidation(); runLoginValidator(); runForgotValidator(); // runRegisterValidator(); } }; }();