/**
 * Functions for password recovery dialog box
 */

// wrapper object <=> namespace for related funcs
var PasswordRecovery = {};

PasswordRecovery.X_AJAX_INFO = 'users_password_recovery';
PasswordRecovery.addedTrigger = false;
PasswordRecovery.initialize = function() {
	if($('a.password_recovery_link').length == 0)
	{
		return;
	}
	PasswordRecovery.box = $('#password_recovery_box');

	PasswordRecovery.boxContent = $('.content', PasswordRecovery.box);
	
	var frmOpen = function(hash) {
		hideBox();
		var ajax_url = $('a.password_recovery_link').attr('href'); // 'password-recovery.html';
		
		$.get(ajax_url, function(response_data) { // , {ts: (new Date()).getTime()}
//			alert(response_data);
			;
			PasswordRecovery.boxContent.html(response_data);
//			(PasswordRecovery.boxContent).get(0).innerHTML = response_data;
			hash.w.show();
			$(PasswordRecovery.box).center();
//			hash.w.css('opacity', 1).show();
			PasswordRecovery.parseForms(PasswordRecovery.box, PasswordRecovery.boxContent);
			
			//*/
		});
	};
	if(PasswordRecovery.addedTrigger == false)
	{
		PasswordRecovery.box.jqm({trigger: 'a.password_recovery_link',  overlay: 0, onShow: frmOpen});
		PasswordRecovery.addedTrigger = true;
	}
	else{
		PasswordRecovery.box.jqmAddTrigger('a.password_recovery_link'); 
	}
	PasswordRecovery.frmOpen = frmOpen;
}

PasswordRecovery.renderObj = function(o, is_recursion) {
	var s = '';
	var c = is_recursion ? "\t" : '';
	var nl = "\n" + c;
	for(var p in o) {
		if(typeof o[p] == 'object') {
			s += c + p + ' = ' + "\n\t" + PasswordRecovery.renderObj(o[p], true);
		} else {
			s += c + p + ' = ' + o[p];
		}
		c = nl;
	}
	return s;
}

PasswordRecovery.parseForms = function( box, boxContent) {
	box.jqmAddClose($('#passwordCloseButton', box));
		
		$('#passRecFrm', box).submit(function(){
				var passOptions = {
						url			: location.href,
						data		: { X_AJAX_INFO : PasswordRecovery.X_AJAX_INFO,
										ts			: (new Date()).getTime(),
										'action'    : 'request'
									  },
						success		: PasswordRecovery.handleRequestResponse,
						dataType	: 'json'
				};
				$('#passRecFrm', box).ajaxSubmit(passOptions);
				return false;
		});
		$('#passRecBtn', box).click(function(e){			
				$('#passRecFrm', box).submit();
				e.preventDefault();
				return false;
			}
		);	
	
}
PasswordRecovery.handleRequestResponse = function(data, status, form) {
//	alert(PasswordRecovery.renderObj(data));return;

	if(data.status == 'success') {
		alert('An email has been sent to your email address.\nPlease check your inbox and follow the directions inside.');
		//window.location.reload();
		$('#passwordCloseButton').trigger('click');
	} else {
		// show error message or alert
		if(data.status == 'fail_alert') {
			// failure alert, just show it
			alert(data.errors[0]);
		} else {
			// failure because of error
			alert('Please correct the following errors:\n' + PasswordRecovery.renderValidationErrors(data.errors, '-'));
		}
	}
	return false;
}

PasswordRecovery.renderValidationErrors = function(err_obj, start_char) {
	var e = '';
	var nl = '';
	for(var i in err_obj) {
		e += nl + start_char + ' ' + err_obj[i];
		nl = "\n";
	}
	return e;
}

PasswordRecovery.loadScript = function(src_url) {
   var e = document.createElement("script");
   e.src = src_url;
   e.type = "text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}

PasswordRecovery.setResetButtonAction = function() {
	$('#sendPassBtn').click(function() {
		var passOptions = {
				url			: location.href,
				data		: { X_AJAX_INFO : PasswordRecovery.X_AJAX_INFO,
								ts			: (new Date()).getTime(),
								'action'    : 'confirm'
							  },
				success		: PasswordRecovery.handleResetResponse,
				dataType	: 'json'
		};
		$('#passResetFrm').ajaxSubmit(passOptions);
		return false;
	});
}

PasswordRecovery.handleResetResponse = function(data, status, form) {
	if(data.status == 'success') {
		alert('An email with your new password has been sent to your email address.\nPlease check your inbox soon.');
		window.location = 'http://' + location.hostname;
	} else {
		// show error message
		alert(data.message);
	}
	return false;
}

$(document).ready(function() {
	PasswordRecovery.initialize(); 
});
