wrsProvide("citation_logon");
wrsRequire("citation",  SCRIPT_DIR, "citation_logon");

// Original design only allows alphanumerics, blank, @, underscore, period, backslash and dash:
//var g_regExpInvalidLogonChars = /[^a-zA-Z0-9 @_\.\\\-]+/;

// Change requested by defect S0456107.
var g_regExpInvalidLogonChars = /[!(^\"\(\)<>)]+/g;

// Note: life of value for this global is very short, only for 0-length timeout duration:
var g_wrsLogonPastedField = null;	// Temp store for input field

// Call-back function that runs after a paste event on the text field is completed.
function wrsLogonAfterPaste() {
	wrsLogonCleanTextField(g_wrsLogonPastedField);
	g_wrsLogonPastedField = null;
}

// Removes illegal characters from the given input text field
function wrsLogonCleanTextField(textField) {
	if (textField) {
		var theText = textField.value;
		theText = theText.replace(g_regExpInvalidLogonChars,"");
		textField.value = theText;
	}
}

// Note: We cannot depend on this being called in Firefox, because there is no paste event.
// It will come here on Ctrl+V in Firefox however.
function onWrsLogonPaste(event) {
	var curField = (event.target) ? event.target: event.srcElement;
	g_wrsLogonPastedField = curField;
	setTimeout("wrsLogonAfterPaste();", 0);
	return true;
}

// Handle keypress in username or password field
// If there is some text in both username and password, then Enter key submits the form;
// otherwise it moves the focus to the other field.
function onWrsLogonKeypress(event) {
	var keyCode = ( event.which != null ) ? event.which : event.keyCode;
	if (keyCode && 0 != keyCode ) {
		var curField = (event.target) ? event.target: event.srcElement;
		if (curField && curField.id) {
			if (keyCode && 13 == keyCode) {	// enter key?
				var otherFieldId = ("password" == curField.id) ? "username" : "password";
				var otherField = document.getElementById(otherFieldId);
				if (curField && curField.value && curField.value.length > 0
							&& otherField && otherField.value && otherField.value.length > 0) {
					//both fields have something in them
		            onWrsLogonPageSubmit();
					return WRSEventUtil.terminateEventProcessing(event);    //S0361990
				}
				else {
					otherField.focus();
				}
				return cwAbsorbEvent(event);
			}
			else if (isPasteEvent(event)) {
				return onWrsLogonPaste(event);	// Ctrl+V?
			}
			else if (8 != keyCode) {	// not backspace?
				var strChar = String.fromCharCode(keyCode);
				if (strChar.search(g_regExpInvalidLogonChars ) >= 0) {
					return cwAbsorbEvent(event);	// Discard invalid character
				}
			}
		}
	}
	return true;
}

function onWrsLogonLoad() {
	dojo.event.connect(dojo.byId("username"), "onkeypress", onWrsLogonKeypress);
	dojo.event.connect(dojo.byId("password"), "onkeypress", onWrsLogonKeypress);

	// IE only (no onpaste event in Firefox):
	dojo.event.connect(dojo.byId("username"), "onpaste", onWrsLogonPaste);
	dojo.event.connect(dojo.byId("password"), "onpaste", onWrsLogonPaste);
}


// --------------------

// ================================================================================
// Logon Progress Indication...
//
// Logon takes some time so it is a special case where the progress should be shown.
// ================================================================================
var g_logon = new Object();
g_logon.progressWaitingText = "";
g_logon.progressRetrieveText = "";

function onWrsLogonPageSubmit()
{
	// Clean both fields again because Firefox paste may have put junk in
	var textField = dojo.byId("username");
	wrsLogonCleanTextField(textField);
	textField = dojo.byId("password");
	wrsLogonCleanTextField(textField);

	var progress = findDOM('progressIndicator');
	if (progress != null)
	{
	    var html =
		    '<table class="layoutTable" style="width:100%;height:100%" summary="" >'
		      + '<tr>' + '<td style="height:100px">&nbsp;</td>' + '</tr>'
		      + '<tr>'
		        + '<td style="text-align:center; vertical-align:top">'
		          + '<table class="layoutTable" width="100%" summary="" >'
		            + '<tr><td class="lineSpacer">&nbsp;</td></tr>'
		            + '<tr>'
		              + '<td style="text-align:center; vertical-align:top" class="progress">'
		                + '<span id="progressMessage">'
		                + g_logon.progressWaitingText
		                + '<br />'
		                + g_logon.progressRetrieveText
		              + '</span>'
		              + '</td>'
		            + '</tr>'
		            + '<tr><td class="lineSpacer">&nbsp;</td></tr>'
		          + '</table>'
		        + '</td>'
		      + '</tr>'
		    + '</table>';
    	progress.innerHTML = html;
    }
    progressIndicatorStart();
	document.forms['logonForm'].submit();
}




