/**
 * Login page functions
 *
 * This script contains the functions which control the login page loading panel
 * for registrations and reset password.
 *
 * @author Chris @ Cutpastecreate.com
 * @package ValuationsUK
 * @subpackage Javascript
 *
 */
$(document).ready(function(){
	// set up the container for the response
	var response = "#form-response p";
	
	// hide the div we'll be loading into
	$("div#register-form").css("display", "none")

	Shadowbox.init({
		skipSetup:	true
	});
	/**
	 * Login form validation
	 *
	 * Checks that the email address and password have been provided.
	 *
	 */
	$("#login_form").validate({
		rules: {
			email: {
				required: true,
				email: true
			},
			password: {
				required: true
			}
		},
		errorPlacement: function(error, element) {
		    error.appendTo( element.parent("p") );
		    $(element).parent("p").addClass("error");
		},
		success: function(label) {
			label.parent("p").removeClass('error');
			label.remove();
		},
		onfocusout: false
	});

	/**
	 * Register as instructor button listener
	 *
	 * This listens for clicks on the "Register as an Instructor" button, when found
	 * it loads the instructor registration page into the footer of the login page,
	 * when the load has finished a callback adds validation to the form.
	 *
	 */
	$("a.button.instructor").click(function(e){
		// prevent the links default behaviour
		e.preventDefault();
		
		// load the instructors registration form page into the register-form div
		if ($("div#register-form").hasClass("open"))
		{
			Shadowbox.clearCache();
			$("div#register-form").slideUp(750, loadInstructor);
		}
		else
		{
			loadInstructor();
		}		
	});
	
	$("a.button.surveyor").click(function(e){
		e.preventDefault();
		
		if ($("div#register-form").hasClass("open"))
		{
			Shadowbox.clearCache();
			$("div#register-form").slideUp(750, loadSurveyor);
		}
		else
		{
			loadSurveyor();
		}		
	});
	$("a.forgotten").click(function(e){
		e.preventDefault();
		if ($("div#register-form").hasClass("open"))
		{
			Shadowbox.clearCache();
			$("div#register-form").slideUp(750, loadForgotten);
		}
		else
		{
			loadForgotten();
		}
	});
});

function loadInstructor ()
{
	$("div#register-form").load(base_url+"register/instructor div#content > div", '', function () {
		Shadowbox.setup(null, {
			animSequence: 'sync',
			overlayColor: '#000',
			overlayOpacity: '0.8'
		});
	    $(this).slideDown(750, function() {
	    	$.scrollTo("#register-form", 300);
	    }).addClass("open");
	    $("#instructor_signup").validate({
	    	rules: {
	    		email: {
	    			required: true,
	    			email: true
	    		},
	    		password: {
	    			required: true,
	    			minlength: 5
	    		},
	    		password_confirm: {
	    			required: true,
	    			minlength: 5,
	    			equalTo: "#password"
	    		}
	    	},
	    	errorPlacement: function(error, element) {
	    		$(".status").addClass("fail");
	    		error.appendTo( element.parent("p") );
	    		$(element).parent().addClass("error");
	    	},
	    	success: function(label) {
				label.parent("p").removeClass('error');
				label.removeClass('error');
	    	},
	    	submitHandler: function(form) {
	    		$(form).ajaxSubmit({
	    			target: "#form-response p",
	    			beforeSubmit: function() {
	    					$("#form-response").append('<img class="loading" src="'+base_url+'images/loading.gif" alt="" />');
	    			},
	    			success: function(data) {
	    				$("#form-response img").remove();
	    				if (data.status == 200)
	    				{
	    					$("#register-form").slideUp(1000, function(){
	    						$("#form-response p").html(data.body);
	    					});
	    				}
	    				else if (data.status == 201)
	    				{
	    					$("#email").next("label").text(data.email);
	    					$("#form-response p").html(data.body);
	    				}
	    			},
	    			dataType: 'json'
	    		});
	    	},
	    	onfocusout: false
	    });
	});
}

function loadSurveyor ()
{
	$("div#register-form").load(base_url+"register/surveyor div#content > div", '', function () {
		Shadowbox.setup(null, {
			animSequence: 'sync',
			overlayColor: '#000',
			overlayOpacity: '0.8'
		});
	    $(this).slideDown(750, function() {
	    	$.scrollTo("#register-form", 300);
	    }).addClass("open");
	    
	    $("#surveyor_signup").validate({
	    	rules: {
	    		email: {
	    			required: true,
	    			email: true
	    		},
	    		password: {
	    			required: true,
	    			minlength: 5
	    		},
	    		password_confirm: {
	    			required: true,
	    			minlength: 5,
	    			equalTo: "#password"
	    		},
	    		FirstName: {
	    			required: true
	    		},
	    		LastName: {
	    			required: true
	    		},
	    		SurveyorsName: {
	    			required: true
	    		},
	    		RicsNumber: {
	    			required: true,
	    			minlength: 7
	    		},
	    		SurveyorsAddress: {
	    			required: true
	    		},
	    		SurveyorsTown: {
	    			required: true
	    		},
	    		SurveyorsCounty: {
	    			required: true
	    		},
	    		SurveyorsPostcode: {
	    			required: true
	    		},
	    		accept_terms: {
	    			required: true
	    		}
	    	},
	    	errorPlacement: function(error, element) {
	    		$(".status").addClass("fail");
	    		error.appendTo( element.parent("p") );
	    		$(element).parent().addClass("error");
	    	},
	    	success: function(label) {
				label.parent("p").removeClass('error');
				label.removeClass('error');
	    	},
	    	submitHandler: function(form) {
	    		$(form).ajaxSubmit({
	    			target: "#form-response p",
	    			beforeSubmit: function() {
	    					$("#form-response").append('<img src="'+base_url+'images/loading.gif" alt="" />');
	    			},
	    			success: function(data) {
	    				$("#form-response img").remove();
	    				if (data.status == 200)
	    				{
	    					$("#register-form").slideUp(1000, function(){
	    						$("#form-response p").html(data.body);
	    					});
	    				}
	    				else if (data.status == 201)
	    				{
	    					$("#email").next("label").text(data.email);
	    					$("#SurveyorsPostcode").next("label").text(data.postcode);
	    					$("#form-response p").html(data.body);
	    				}
	    			},
	    			dataType: 'json'
	    		});
	    	},
	    	onfocusout: false
	    });
	});
}

function loadForgotten ()
{
	$("div#register-form").load(base_url+"security/forgotten_password div#content > div", '', function() {
		Shadowbox.setup(null, {
			animSequence: 'sync',
			overlayColor: '#000',
			overlayOpacity: '0.8'
		});
	    $(this).slideDown(750, function() {
	    	$.scrollTo("#register-form", 300);
	    }).addClass("open");
	    $("#forgotten_password").validate({
	    	rules: {
	    		email: {
	    			required: true,
	    			email: true
	    		}
	    	},
	    	errorPlacement: function(error, element) {
	    		$(".status").addClass("fail");
	    		error.appendTo( element.parent("p") );
	    		$(element).parent().addClass("error");
	    	},
	    	success: function(label) {
				label.parent("p").removeClass('error');
				label.removeClass('error');
	    	},
	    	submitHandler: function(form) {
	    		$(form).ajaxSubmit({
	    			target: "#form-response p",
	    			beforeSubmit: function() {
	    					$("#form-response p").append('<img src="'+base_url+'images/loading.gif" alt="" />');
	    			},
	    			success: function(data) {
	    				$("#form-response img").remove();
	    				if (data.status == 200)
	    				{
	    					$("#register-form").slideUp(1000, function(){
	    						$("#form-response p").html(data.body);
	    					});
	    				}
	    				else if (data.status == 201)
	    				{
	    					$("#email").next("label").text(data.email);
	    					$("#form-response p").html(data.body);
	    				}
	    			},
	    			dataType: 'json'
	    		});
	    	},
	    	onfocusout: false
	    });
	});
}