﻿var LoginForm = {
	data: null,

	$loginform: null,
	$passwordLink: null,
	$registerLink: null,

	config: {
		constant: {
			url: '/fpxml.aspx?timer=false'
		},
		selector: {
			loginform: 'form#login',
			passwordLink: '#passwordforgot a',
			registerLink: '#notregister a'
		}
	},
	
	initialize: function () {
		this.cacheSelectors();
		this.attachEvents();
	},
	
	cacheSelectors: function () {
		this.$loginform = $(this.config.selector.loginform);
		this.$passwordLink = $(this.config.selector.passwordLink, this.$loginform);
		this.$registerLink = $(this.config.selector.registerLink, this.$loginform);
	},
	
	attachEvents: function () {
		var _self = this;
		
		this.$passwordLink.click(function (e) {
			e.preventDefault();
			_self.open($(this), '#forgotpassword_content', function(){ForgotPasswordForm.initialize();});
		});
		
		this.$registerLink.click(function (e) {
			e.preventDefault();
			$('li#cl-reg a').click();
		});
		
		$('#SubmitBut', this.$loginform).click(function (e) {
			e.preventDefault();
			_self.checkLogin(this.$loginform);
		});
	},
	
	checkLogin: function ($obj) {
		var _self = this;
		var $form = this.$loginform;
	
		var data = '<request st="' + $('input#st',$form).val() + '" e="ajax' + $('input#e',$form).val() + '">' +
					'<parameters><parameter name="username">' + $('input#username-field',$form).val() + '</parameter>' +
					'<parameter name="password">' + $('input#password-field',$form).val() + '</parameter></parameters></request>';
			  
		$.ajax({
			url: this.config.constant.url,
			type: 'POST',			
			data: data,
			dataType: "xml",
			cache: false,
			success: function (data) {
				 var $xml = $(data); 
				if ($xml.find('status').text() == 'success' && $xml.find('primitiveValue').text() == 'no') {
					$('#errormsg').html('<em>Username and password do not match.</em>');
				}
				else {
					$('#errormsg').html('<div class="success">Login success! Loading data, please wait.</div>');
					window.location.href = '/fp.aspx?st=9228&e=checklist';
				}
			}
		});
	},
	
	open: function ($obj, targetDiv, fn) {
		var options = {content: {	type: 'html',
									src: $obj.attr('href'),
									div: targetDiv
								}};		
		LightBox.initialize(options, fn);
	}
};

var SignupForm = {
	data: null,
	$signupform: null,

	config: {
		constant: {
			url: '/fpxml.aspx?'
		},
		selector: {
			signupform: 'form#signup'
		}
	},
	
	initialize: function () {
		this.cacheSelectors();
		this.attachEvents();
	},
	
	cacheSelectors: function () {
		this.$signupform = $(this.config.selector.signupform);
	},
	
	attachEvents: function () {
		var _self = this;
	
		$('#SubmitBut', this.$signupform).click(function (e) {
			e.preventDefault();
			_self.goSignup(this.$signupform);
		});
	},
	
	goSignup: function ($obj) {
		var _self = this;
		var $form = this.$loginform;
	
		var data = '<request st="' + $('input#st',$form).val() + '" e="ajax' + $('input#e',$form).val() + '">' +
					'<parameters><parameter name="username">' + $('input#username-field',$form).val() + '</parameter>' +
					'<parameter name="password">' + $('input#password-field',$form).val() + '</parameter></parameters></request>';
			  
		$.ajax({
			url: this.config.constant.url,
			type: 'POST',			
			data: data,
			dataType: "xml",
			cache: false,
			success: function (data) {
				var $xml = $(data);
				if ($xml.find('status').text() == 'success' && $xml.find("errors").attr("count")!=null) {
					// display error messages
					$('#errormsg').empty();
					var errmsg_list = [], i=0;
					$xml.find('error').each(function(){
						var formField = $(this).attr('formField');
						if(formField == "username" || formField == "password") {
							errmsg_list[i++] = '<em>'+$(this).text() + '</em><br/>';
						}
					});
					$('#errormsg').append(errmsg_list.join(''));
				}
				else {
					$('#errormsg').html('<div class="success">Signup successful.</div>');
					window.location.href = '/fp.aspx?st=9228&e=checklist';
				}
			}
		});
	}
};

var ForgotPasswordForm = {
	data: null,
	$passwordform: null,

	config: {
		constant: {
			url: '/fpxml.aspx?'
		},		
		selector: {
			passwordform: 'form#forgotpassword'
		}
	},
	
	initialize: function () {
		this.cacheSelectors();
		this.attachEvents();
	},
	
	cacheSelectors: function () {
		this.$passwordform = $(this.config.selector.passwordform);
	},
	
	attachEvents: function () {
		var _self = this;
	
		$('#SubmitBut', this.$passwordform).click(function (e) {
			e.preventDefault();
			_self.sendPassword(this.$passwordform);
		});
	},
	
	sendPassword: function ($obj) {
		var _self = this;
		var $form = this.$passwordform;
	
		var data = '<request st="' + $('input#st',$form).val() + '" e="ajax' + $('input#e',$form).val() + '">' +
					'<parameters><parameter name="username">' + $('input#username-field', $form).val() + '</parameter>' +
					'<parameter name="from">' + $('input#from',$form).val() + '</parameter>' +
					'<parameter name="emailTemplate">' + $('input#emailTemplate',$form).val() + '</parameter></parameters></request>';
			  
		$.ajax({
			url: this.config.constant.url,
			type: 'POST',			
			data: data,
			dataType: "xml",
			cache: false,
			success: function (data) {
				var $xml = $(data);
				if ($xml.find('status').text() == 'success' && $xml.find("errors").attr("count")!=null) {
					// display error messages
					$('#errormsg').empty();
					var errmsg_list = [], i=0;
					$xml.find('error').each(function(){
						errmsg_list[i++] = '<em>'+$(this).text() + '</em><br/>';
					});
					$('#errormsg').append(errmsg_list.join(''));
				} else {
					// display success messages
					$('#errormsg').html('<div class="success">Your password has been sent.</div>');
				}
			}
		});
	}
};
(function ($) {
	$(function () {
		//LoginForm.initialize();
	});
}) (jQuery);
