patashala/assets/js/neon-forgotpassword.js

252 lines
6.4 KiB
JavaScript
Raw Permalink Normal View History

/**
* Neon Register Script
*
* Developed by Arlind Nushi - www.laborator.co
*/
var neonForgotPassword = neonForgotPassword || {};
;(function($, window, undefined)
{
"use strict";
$(document).ready(function()
{
neonForgotPassword.$container = $("#form_forgot_password");
neonForgotPassword.$steps = neonForgotPassword.$container.find(".form-steps");
neonForgotPassword.$steps_list = neonForgotPassword.$steps.find(".step");
neonForgotPassword.step = 'step-1'; // current step
neonForgotPassword.$container.validate({
rules: {
email: {
required: true,
email: true
}
},
messages: {
email: {
email: 'Invalid E-mail.'
}
},
highlight: function(element){
$(element).closest('.input-group').addClass('validate-has-error');
},
unhighlight: function(element)
{
$(element).closest('.input-group').removeClass('validate-has-error');
},
submitHandler: function(ev)
{
$(".login-page").addClass('logging-in');
$(".form-login-error").slideUp('fast');
//$(".form-login-error").css("display" , "none");
// We consider its 30% completed form inputs are filled
neonForgotPassword.setPercentage(30, function()
{
// Lets move to 98%, meanwhile ajax data are sending and processing
neonForgotPassword.setPercentage(98, function()
{
// Send data to the server
$.ajax({
url: baseurl + 'index.php?login/ajax_forgot_password',
method: 'POST',
dataType: 'json',
data: {
email: $("input#email").val(),
},
error: function()
{
alert("An error occoured!");
},
success: function(response)
{
// From response you can fetch the data object retured
var email = response.submitted_data.email;
var status= response.status;
// Form is fully completed, we update the percentage
neonForgotPassword.setPercentage(100);
// We will give some time for the animation to finish, then execute the following procedures
setTimeout(function()
{
// Hide the description title
$(".login-page .login-header .description").slideUp();
// Remove loging-in state
$(".login-page").removeClass('logging-in');
if (status == 'true')
{
// Hide the register form (steps)
neonForgotPassword.$steps.slideUp('normal', function()
{
// Now we show the success message
$(".form-forgotpassword-success").slideDown('normal');
// You can use the data returned from response variable
});
}
else if (status == 'false')
{
$(".form-login-error").slideUp('fast');
$(".form-login-error").css("display" , "block");
}
}, 100);
}
});
});
});
}
});
// Steps Handler
neonForgotPassword.$steps.find('[data-step]').on('click', function(ev)
{
ev.preventDefault();
var $current_step = neonForgotPassword.$steps_list.filter('.current'),
next_step = $(this).data('step'),
validator = neonForgotPassword.$container.data('validator'),
errors = 0;
neonForgotPassword.$container.valid();
errors = validator.numberOfInvalids();
if(errors)
{
validator.focusInvalid();
}
else
{
var $next_step = neonForgotPassword.$steps_list.filter('#' + next_step),
$other_steps = neonForgotPassword.$steps_list.not( $next_step ),
current_step_height = $current_step.data('height'),
next_step_height = $next_step.data('height');
TweenMax.set(neonForgotPassword.$steps, {css: {height: current_step_height}});
TweenMax.to(neonForgotPassword.$steps, 0.6, {css: {height: next_step_height}});
TweenMax.to($current_step, .3, {css: {autoAlpha: 0}, onComplete: function()
{
$current_step.attr('style', '').removeClass('current');
var $form_elements = $next_step.find('.form-group');
TweenMax.set($form_elements, {css: {autoAlpha: 0}});
$next_step.addClass('current');
$form_elements.each(function(i, el)
{
var $form_element = $(el);
TweenMax.to($form_element, .2, {css: {autoAlpha: 1}, delay: i * .09});
});
setTimeout(function()
{
$form_elements.add($next_step).add($next_step).attr('style', '');
$form_elements.first().find('input').focus();
}, 1000 * (.5 + ($form_elements.length - 1) * .09));
}});
}
});
neonForgotPassword.$steps_list.each(function(i, el)
{
var $this = $(el),
is_current = $this.hasClass('current'),
margin = 20;
if(is_current)
{
$this.data('height', $this.outerHeight() + margin);
}
else
{
$this.addClass('current').data('height', $this.outerHeight() + margin).removeClass('current');
}
});
// Login Form Setup
neonForgotPassword.$body = $(".login-page");
neonForgotPassword.$login_progressbar_indicator = $(".login-progressbar-indicator h3");
neonForgotPassword.$login_progressbar = neonForgotPassword.$body.find(".login-progressbar div");
neonForgotPassword.$login_progressbar_indicator.html('0%');
if(neonForgotPassword.$body.hasClass('login-form-fall'))
{
var focus_set = false;
setTimeout(function(){
neonForgotPassword.$body.addClass('login-form-fall-init')
setTimeout(function()
{
if( !focus_set)
{
neonForgotPassword.$container.find('input:first').focus();
focus_set = true;
}
}, 550);
}, 0);
}
else
{
neonForgotPassword.$container.find('input:first').focus();
}
// Functions
$.extend(neonForgotPassword, {
setPercentage: function(pct, callback)
{
pct = parseInt(pct / 100 * 100, 10) + '%';
// Normal Login
neonForgotPassword.$login_progressbar_indicator.html(pct);
neonForgotPassword.$login_progressbar.width(pct);
var o = {
pct: parseInt(neonForgotPassword.$login_progressbar.width() / neonForgotPassword.$login_progressbar.parent().width() * 100, 10)
};
TweenMax.to(o, .7, {
pct: parseInt(pct, 10),
roundProps: ["pct"],
ease: Sine.easeOut,
onUpdate: function()
{
neonForgotPassword.$login_progressbar_indicator.html(o.pct + '%');
},
onComplete: callback
});
}
});
});
})(jQuery, window);