var assistanceType = "password";
var assistanceCustomerNumber = "";
var assistanceUserName = "";
var assistanceEmail = "";
var changePasswordUserID = "";
var changePasswordToken = "";
var changePasswordTS = "";
var userPassword = "";

$(document).ready(function() {
	if (typeof($(document).getUrlParam('changePassword')) != 'undefined' && $(document).getUrlParam('changePassword') != null ) {
		$.initLogonAssistance(true);
	}
});

$.initLogonAssistance = function(changePassword) {
	var logonAssistanceDiv = [];
	$.validationEngine.closePrompt('.formError',true);
	logonAssistanceDiv.push(
		'<div class="standard_modal" id="logon_assistance" style="width:600px;">'
			,'<div style="width:600px; padding:3px; min-height:250px; height:auto !important;">'
				,'<div style="width:auto;" class="standard_modal_header">Log-On Assistance</div>'
				,'<div id="logon_assistance_content" stlye="width:auto;"></div>'
			,'</div>'
		,'</div>'
	);
	
	$(logonAssistanceDiv.join('')).appendTo("body");
	
	var api = $('#logon_assistance').overlay({
		top: '2%',
		closeOnClick: false,
	    expose: { 
        	color: '#333', 
	        loadSpeed: 300, 
	        opacity: 0.3 
	    },
		api: true
	});
	
	api.onClose(function(){
		$.validationEngine.closePrompt('.formError',true);
		$('#logon_assistance').remove();
		if ($('#Rotating_Pod_Welcome').length) {
			$('#Rotating_Pod_Welcome').show();
		}
	});
	
	$("#logon_assistance_content").html('<div style="width:600px;"></div>');
	
	api.load();
	$.initCurvePanels();
	
	if (typeof(changePassword) == 'undefined') {
		changePassword = false;
	}
	
	if (changePassword) {
		$.initChangePasswordForm();
	}
	else {
		$.initLogonAssistanceForm();
	}
	if ($('#Rotating_Pod_Welcome').length) {
		$('#Rotating_Pod_Welcome').hide();
	}
}

$.initLogonAssistanceForm = function() {
	var logonAssistanceHTML = [];
	
	logonAssistanceHTML.push(
		'<div id="assistanceErrorDiv" class="errorDiv" style="width:auto; display:none;"></div>'
		,'<table width="100%" cellpadding="0" cellspacing="0">'
			,'<tr>'
				,'<td align="left" valign="top">'
					,'<form id="logonAssistanceForm" method="post" action="index.cfm">'
	    				,'<div style="width:auto; text-align:right;"><span class="required_field">* </span>= Required Field</div>'
						,'<table cellspacing="2" cellpadding="0" border="0" width="600" style="margin:10px 0px;">'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
							,'<tr><td colspan="2"><span class="standard_bold_text">Forgot Username</span></td></tr>'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
	                		,'<tr>'
	                   			,'<td width="5%" align="left" valign="top" style="white-space: nowrap;"><span class="required_field">* </span>Enter your customer number:</td>'
								,'<td width="95%" align="left" valign="top"><input type="text" name="lostUserNameCustomerNumber" id="lostUserNameCustomerNumber" class="validate[required]" style="width:200px;" /></td>'
	                		,'</tr>'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
	               		 	,'<tr>'
	                   			,'<td align="left" valign="top" style="white-space: nowrap;"><span class="required_field">* </span>Enter your E-mail Address:</td>'
								,'<td align="left" valign="top"><input type="text" name="lostUserNameEmail" id="lostUserNameEmail" class="validate[required, custom[email]]" style="width:200px;" /></td>'
	                		,'</tr>'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
	                		,'<tr>'
	                   			,'<td colspan="2">'
									,'<a href="#" onclick="$.findLoginInformation(\'username\'); return false;"><input type="image" src="images/buttons/btn_find_username.gif" /></a>'
								,'</td>'
							,'</tr>'
							,'<tr><td colspan="2" style="height:15px;"></td></tr>'
							,'<tr><td colspan="2"><span class="standard_bold_text">Forgot Password</span></td></tr>'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
	                		,'<tr>'
	                   			,'<td width="5%" align="left" valign="top" style="white-space: nowrap;"><span class="required_field">* </span>Enter your customer number:</td>'
								,'<td width="95%" align="left" valign="top"><input type="text" name="lostPasswordCustomerNumber" id="lostPasswordCustomerNumber" class="validate[required]" style="width:200px;" /></td>'
	                		,'</tr>'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
	               		 	,'<tr>'
	                   			,'<td align="left" valign="top" style="white-space: nowrap;"><span class="required_field">* </span>Enter your Username:</td>'
								,'<td align="left" valign="top"><input type="text" name="lostPasswordUserName" id="lostPasswordUserName" class="validate[required]" style="width:200px;" /></td>'
	                		,'</tr>'
							,'<tr><td colspan="2" style="height:5px;"></td></tr>'
	                		,'<tr>'
	                   			,'<td colspan="2">'
									,'<a href="#" onclick="$.findLoginInformation(\'password\'); return false;"><input type="image" src="images/buttons/btn_find_password.gif" /></a>'
									,'<a style="margin-left:15px;" href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_cancel.gif" /></a>'
								,'</td>'
							,'</tr>'
						,'</table>'
	         		,'</form>'
				,'</td>'
			,'</tr>'
		,'</table>'
	);
	
	$("#logon_assistance_content").html(logonAssistanceHTML.join(''));
	
	$.initCurveInputs();
	$('#logonAssistanceForm').validationEngine();
}

$.findLoginInformation = function(type,hintID,hintAnswer) {
	if (typeof(hintID) == 'undefined') {
		hintID = '';
	}
	if (typeof(hintAnswer) == 'undefined') {
		hintAnswer = '';
	}
	
	var isValid = true;
	
	if (type == 'password') {
		assistanceType = type;
		if ($.validationEngine.loadValidation('#lostPasswordCustomerNumber')) {
			isValid = false;
		}
		if ($.validationEngine.loadValidation('#lostPasswordUserName')) {
			isValid = false;
		}
		assistanceCustomerNumber = $('#lostPasswordCustomerNumber').val();
		assistancUserName = $('#lostPasswordUserName').val();
		assistnaceEmail = "";
	}
	else if (type == 'username') {
		assistanceType = type;
		if ($.validationEngine.loadValidation('#lostUserNameCustomerNumber')) {
			isValid = false;
		}
		if ($.validationEngine.loadValidation('#lostUserNameEmail')) {
			isValid = false;
		}
		assistanceCustomerNumber = $('#lostUserNameCustomerNumber').val();
		assistancUserName = "";
		assistnaceEmail = $('#lostUserNameEmail').val();
	}
	
	if (isValid) {
		$.showAssistanceFormLoading();
		$.postJSON("services/json/UserService.cfc?returnFormat=json&method=findLogonInformation", {
			customerNumber : assistanceCustomerNumber,
			userName : assistancUserName,
			email : assistnaceEmail,
			assistanceType : assistanceType,
			hintAnswer: hintAnswer,
			hintID : hintID
		}, function(json){
			if (checkJsonError(json)) {
				$.handleLoginAssistanceReturn(json);
			}
			else {
				$.hideAssistanceFormLoading();
			}
		});
	}
}

$.handleLoginAssistanceReturn = function(json) {
	var loginInfoFound = json.loginInfoFound;
	var promptHint = json.promptHint;
	var multipleUsers = json.multipleUsers;
	
	if (!loginInfoFound && !promptHint && !multipleUsers) {
		$.buildLoginNotFound(json);
	}
	else if (promptHint) {
		$.buildLoginHintForm(json);
	}
	else if (multipleUsers) {
		$.buildMultipleUsersForm(json);
	}
	else if (loginInfoFound) {
		$.buildUserInfoFound(json);
	}
}

$.buildLoginNotFound = function(json) {
	var notFoundHTML = [];
	var messages = json.messages;
	
	notFoundHTML.push(
		'<div style="width:auto; margin:15px 0px;">There were no matching records in our database for the customer information you provided.</div>'
		,'<div style="width:auto;">' + messages['PleaseCall'] + '</div>'
		,'<div style="width:auto; margin-top:15px;">'
			,'<a href="#" onclick="$.initLogonAssistanceForm(); return false;"><input type="image" src="images/buttons/btn_back.gif" /></a>'
			,'<a style="margin-left:15px;" href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_close.gif" /></a>'
		,'</div>'
	);
	
	$("#logon_assistance_content").html(notFoundHTML.join(''));
	
	$.hideAssistanceFormLoading();
}

$.buildLoginHintForm = function(json) {
	var hintHTML = [];
	
	var instructionText = "reset your Password.";
	if (assistanceType != "password") {
		instructionText = "locate your log-on information.";
	}
	
	if (json.hint.WRONGANSWER) {
		hintHTML.push('<div style="width:auto; margin:10px 0px; color:red; font-weight:bold;">The response that was entered did not match our records. Please try again.</div>');
	}
	
	hintHTML.push(
		'<div style="width:auto; margin:10px 0px;">Your Log-on Hint has been located.<br /><br /><strong>Please complete the answer below to ' + instructionText + '</strong></div>'
		,'<form id="hintForm">'
		,'<input type="hidden" id="hintID" value="' + json.hint.HINTID + '" />'
 		,'<table width="auto" style="margin-left:5px;" cellpadding="0" cellspacing="0">'
			,'<tr><td align="left" valign="top">' + json.hint.QUESTION + '</td></tr>'
			,'<tr><td style="height:5px;"></td></tr>'
			,'<tr><td align="left" valign="top"><input type="text" name="hintAnswer" id="hintAnswer" class="validate[required]" style="width:150px;" /></td></tr>'
			,'<tr><td style="height:15px;"></td></tr>'
	        ,'<tr>'
				,'<td colspan="2">'
						,'<a href="#" onclick="$.checkHintAnswer(\'password\'); return false;"><input type="image" src="images/buttons/btn_submit_answer.gif" /></a>'
					,'<a style="margin-left:15px;" href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_cancel.gif" /></a>'
				,'</td>'
			,'</tr>'
		,'</table>'
		,'</form>'
	);
	
	$("#logon_assistance_content").html(hintHTML.join(''));
	$.initCurveInputs();
	$.hideAssistanceFormLoading();
	$('#hintForm').validationEngine();
}

$.checkHintAnswer = function() {
	var isValid = true;
	
	if ($.validationEngine.loadValidation('#hintAnswer')) {
		isValid = false;
	}
	
	if (isValid) {
		$.findLoginInformation('hint', $('#hintID').val(), $('#hintAnswer').val());
	}
}

$.buildMultipleUsersForm = function(json) {
	var multipleUsersHTML = [];
	
	multipleUsersHTML.push(
		'<div style="width:auto; margin:10px 0px;">There were multiple records found for the criteria entered. <br/><br/> Please select the user\'s information you are looking for.</div>'
 		,'<table width="100% cellpadding="0" cellspacing="0">'
			,'<tr><td align="left" valign="top">'
				,'<td><select id="lstMultipleUsers" style="width:250px;">'
	);
	
	for (var x = 0; x < json.userArray.length; x++) {
		multipleUsersHTML.push('<option value="' + json.userArray[x].userID + '">' + json.userArray[x].firstName + ' ' + json.userArray[x].lastName + '</option>');
	}
	
	multipleUsersHTML.push(
				'</select></td>'
			,'<tr><td style="height:15px;"></td></tr>'
	        ,'<tr>'
				,'<td colspan="2">'
					,'<a href="#" onclick="$.selectMultipleUser(); return false;"><input type="image" src="images/buttons/btn_submit_request.gif" /></a>'
					,'<a style="margin-left:15px;" href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_cancel.gif" /></a>'
				,'</td>'
			,'</tr>'
		,'</table>'
	);
	
	$("#logon_assistance_content").html(multipleUsersHTML.join(''));
	$.hideAssistanceFormLoading();
}

$.selectMultipleUser = function() {
	assistancUserName = $('#lstMultipleUsers').val();
	$.findLoginInformation();
}

$.buildUserInfoFound = function(json) {
	var foundHTML = [];
	
	if (assistanceType == 'password') {
		var message = json.messages['UserLocatedWithNoHint'].replace('{email}',json.userInfo.email);
	
		foundHTML.push(
			'<div style="width:auto; margin:15px 0px;">' + message + '</div>'
			,'<div><a href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_close.gif" /></a></div>'
		);
	}
	else {
		var message = json.messages['Located'].replace('{firstName}',json.userInfo.firstName);
		message = message.replace('{lastName}',json.userInfo.lastName);
		message = message.replace('{email}',json.userInfo.email);
		message = message.replace('{customerNumber}',json.userInfo.customerNumber);
		foundHTML.push(
			'<div style="width:auto; margin:15px 0px;">' + message + '</div>'
			,'<div style="width:auto; margin:15px 0px;">' + json.messages['EnsureValid'] + '</div>'
			,'<div><a href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_close.gif" /></a></div>'
		);
	}

	
	$("#logon_assistance_content").html(foundHTML.join(''));
	
	$.hideAssistanceFormLoading();
}

$.showAssistanceFormLoading = function () {
	$.validationEngine.closePrompt('.formError',true);
	$('#logon_assistance_content').block({ 
		message: '<span class="loadingMessage">Loading...</span><br/><img src="images/rotatingclock-fast.gif" border="0" />',
		css: { 
	        width:          '30%', 
	        border:         '0px solid #aaa', 
	        backgroundColor:'#fff', 
	        cursor:         'wait' 
	    }, 
	    overlayCSS: { 
	        backgroundColor: '#fff', 
	        opacity:         1.0
	    },
		centerX: true,
		centerY: true,
		fadeIn: 500,
		fadeOut: 500
	});		
}

$.hideAssistanceFormLoading = function () {
	$('#logon_assistance_content').unblock();
}


$.closeAssistanceOverlay = function() {
	$('#logon_assistance').overlay().close();
}

$.initChangePasswordForm = function(){
	if (typeof($(document).getUrlParam('id')) != 'undefined' && $(document).getUrlParam('id') != null) {
		changePasswordUserID = $(document).getUrlParam('id');
	}
	if (typeof($(document).getUrlParam('token')) != 'undefined' && $(document).getUrlParam('token') != null) {
		changePasswordToken = $(document).getUrlParam('token');
	}
	if (typeof($(document).getUrlParam('ts')) != 'undefined' && $(document).getUrlParam('ts') != null) {
		changePasswordTS = $(document).getUrlParam('ts');
	}
	
	$.callUserChangePassword('','');
}

$.callUserChangePassword = function(password,confirmPassword) {
	$.showAssistanceFormLoading();
	userPassword = password;
	$.postJSON("services/json/UserService.cfc?returnFormat=json&method=changeUserPassword", {
			userID : changePasswordUserID,
			password : password,
			confirmPassword : confirmPassword,
			token : changePasswordToken,
			ts : changePasswordTS
		}, function(json){
			if (checkJsonError(json)) {
				$.buildChangePasswordForm(json);
			}
	});
}

$.buildChangePasswordForm = function(json) {
	var errors = json.errorArray;
	var changePasswordHTML = [];
	
	var changePasswordHeader = "Change Password";
	if (json.passwordChanged) {
		changePasswordHeader = "Change Password Success";
	}
	changePasswordHTML.push('<div style="width:auto; font-weight:bold; font-size:14px; margin:10px 0px;">' + changePasswordHeader + '</div>');
	
	if (errors.length > 0) {
		changePasswordHTML.push(
			'<div style="font-weight:bold; color:red; margin:10px 0px; font-size:14px;">Error</div>'
			,'<div>'
		);
		
		for (var x = 0; x < errors.length; x++) {
			changePasswordHTML.push(errors[x]);
		}
		
		changePasswordHTML.push('</div>');
		
			
		changePasswordHTML.push(
			'<div style="width:auto; margin:10px 0px;">'
				,'<a href="#" onclick="$.initLogonAssistanceForm(); return false;"><input type="image" src="images/buttons/btn_restart_logon_assistance.gif" /></a>'
				,'<a href="#" onclick="$.closeAssistanceOverlay(); return false;" style="margin-left:15px;"><input type="image" src="images/buttons/btn_close.gif" /></a>'
			,'</div>'
		);
	}
	else {
		if (json.passwordChanged) {
			changePasswordHTML.push(
				json.successMessage
				,'<div style="margin:10px 0px;"><a href="#" onclick="$.handleChangePasswordAutologin(\'' + json.userName + '\'); return false;"><input type="image" src="images/login.gif" /></a></div>'
			);
		}
		else {
			changePasswordHTML.push(
				'<form id="changePasswordForm">'
	 			,'<table width="100% cellpadding="0" cellspacing="0" margi>'
					,'<tr><td align="left" valign="top" colspan="2">To change your password, enter a new password below.</td></tr>'
					,'<tr><td style="height:5px;" colspan="2"></td></tr>'
					,'<tr><td align="left" valign="top" colspan="2"><span class="chestnut_text"><strong>Important: Passwords are case sensitive.</strong></span></td></tr>'
					,'<tr><td style="height:5px;" colspan="2"></td></tr>'
					,'<tr>'
						,'<td width="10%" align="left" valign="top" style="white-space: nowrap;"><span class="required_field">* </span>New Password</td>'
						,'<td width="90%" align="left" valign="top"><input type="text" name="newPassword" id="newPassword" class="validate[required,length[6,20]]" style="width:150px;" /></td>'
					,'</tr>'
					,'<tr><td style="height:5px; colspan="2"></td></tr>'
					,'<tr>'
						,'<td align="left" valign="top" style="white-space: nowrap;"><span class="required_field">* </span>Confirm New Password</td>'
						,'<td align="left" valign="top"><input type="text" name="confirmPassword" id="confirmPassword" class="validate[required,confirm[newPassword]]" style="width:150px;" /></td>'
					,'</tr>'
					,'<tr><td  colspan="2" style="height:15px;"></td></tr>'
		       	 	,'<tr>'
						,'<td colspan="2">'
							,'<a href="#" onclick="$.changeUserPassword(); return false;"><input type="image" src="images/buttons/btn_change_password.gif" /></a>'
							,'<a style="margin-left:15px;" href="#" onclick="$.closeAssistanceOverlay(); return false;"><input type="image" src="images/buttons/btn_cancel.gif" /></a>'
						,'</td>'
					,'</tr>'
				,'</table>'
				,'</form>'
			);
		}
		
	}

	$.hideAssistanceFormLoading();
	$("#logon_assistance_content").html(changePasswordHTML.join(''));
	
	$.initCurveInputs();
	$('#changePasswordForm').validationEngine();
}


$.changeUserPassword = function() {
	var isValid = true;
	
	if ($.validationEngine.loadValidation('#newPassword')) {
		isValid = false;
	}
	if ($.validationEngine.loadValidation('#confirmPassword')) {
		isValid = false;
	}
	
	if (isValid) {
		$.callUserChangePassword($('#newPassword').val(), $('#confirmPassword').val());
	}
}


$.handleChangePasswordAutologin = function(userName) {
	$('input[id=username]').val(userName);
	$('input[id=password]').val(userPassword);
	$.closeAssistanceOverlay();
	$('#loginButton').click();
}
