
if (!document.getElementById) {
    alert('Your browser does not support all of the functionality that this page requires.');
}

function checkEnter(e) { //e is event object passed from function invocation
    var characterCode; // literal character code will be stored in this variable

    if (e && e.which) { //if which property of event object is supported (NN4)
        e = e;
        characterCode = e.which; //character code is contained in NN4's which property
    }
    else {
        e = event;
        characterCode = e.keyCode; //character code is contained in IE's keyCode property
    }

    if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
        authenticateUser();
        return false;
    }
    else {
        return true;
    }
}

function authenticateUser() {
    // roll the area up 	
    setupForRequest();			
}

function setupForRequest() {			
    var downloadablesContentMask = $('downloadablesContentMask');	
    if (downloadablesContentMask) {        
		if (downloadablesContentMask.heightChange) {
			downloadablesContentMask.heightChange.stop();
		}

		// lose the focus - FF was showing it weird
		var documentPassField = $('downloadable_pass');
		documentPassField.blur();

        downloadablesContentMask.heightChange = new Fx.Styles('downloadablesContentMask', {duration: 500, transition: Fx.Transitions.quadOut, onComplete: sendRequest });
        downloadablesContentMask.heightChange.start({
			'height': [downloadablesContentMask.offsetHeight, 0]
		});		
    }
}

function sendRequest() {
    if(window.XMLHttpRequest) {
        try {
            theRequest = new XMLHttpRequest();
        } catch(e) {
            theRequest = false;
        }
    } else if(window.ActiveXObject) {
        try {
            theRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                theRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                theRequest = false;
            }
        }
    }
    
    if(theRequest) {
		// gather up the post data we want to send
		// get the password that was entered
		var documentPassField = $('downloadable_pass');
		if (documentPassField) {
			var documentPass = documentPassField.value;			

			// setup the data we'll need for the Ajax request
			var postData = "&pass="+escape(documentPass);

			theRequest.onreadystatechange = processRequest;
			theRequest.open("POST", 'lib/ajax_downloadables_processor.php', true);
			theRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			theRequest.setRequestHeader("Content-length", postData.length);
			theRequest.setRequestHeader("Connection", "close");
			theRequest.send(postData);
		}
    } 
}

function processRequest() {
    if(theRequest.readyState == 4) {
        if(theRequest.status == 200) {			
			var theResponse = theRequest.responseText.split("|");
			if (theResponse[0] == 'OK') {
				var downloadablesContent = $('downloadablesContent');
				if (downloadablesContent) {
					downloadablesContent.innerHTML = theResponse[1];
				}
			}
			else if (theResponse[0] == 'FL') {

				var downloadablesMessage = $('downloadablesMessage');
				if (downloadablesMessage) {
					downloadablesMessage.innerHTML = theResponse[1];
				}
			}
			else {

				var downloadablesMessage = $('downloadablesMessage');
				if (downloadablesMessage) {
					downloadablesMessage.innerHTML = "Unknown return value - " + theResponse[0];
				}
			}

			// transition the height to show the results
			var downloadablesContentMask = $('downloadablesContentMask');
			if (downloadablesContentMask.heightChange) {
				downloadablesContentMask.heightChange.stop();
			}
	        downloadablesContentMask.heightChange = new Fx.Styles('downloadablesContentMask', {duration: 500, transition: Fx.Transitions.quadOut, onComplete: resetFocus });
			downloadablesContentMask.heightChange.start({
				'height': [downloadablesContentMask.offsetHeight, ($('downloadablesContent').offsetHeight+15)]
			});
			return;

        } else {
            // oh noes, http error
			var downloadablesMessage = document.getElementById('downloadablesMessage');
			if (downloadablesMessage) {
				downloadablesMessage.innerHTML = "HTTP Error!";
			}
			return;
        }
    }
}

function resetFocus() {
	var documentPassField = $('downloadable_pass');
	if (documentPassField) {
		documentPassField.focus();
	}
}
