/////////////////////////////////////////
//
// Misc
//
/////////////////////////////////////////
var progressImage;
function onLoad() {
// adjust page based on where we are being executed
iPhoneTest();
// connect to server in 0.5 seconds
setTimeout( function() {
listener.start( );
}, 500);
// username was saved?
var userNameToUse = getCookie( "username" );
if ( userNameToUse !== null) {
$("loginUsername").value = userNameToUse;
}
progressImage = new Image();
progressImage.src = "img/animation_in_progress.gif";
}
/////////////////////////////
//
function displayInProgress(baseId) {
$(baseId + "ResultDiv").className = "sectionContent spinningProgress";
$(baseId + "ResultHeader").style.display = "none";
$(baseId + "ResultMessage").style.display = "none";
$(baseId + "ResultButton").style.display = "none";
displayResultDiv(baseId);
}
/////////////////////////////
//
function setupResultDivAsMessage(baseId, success, message) {
$(baseId + "ResultDiv").className = "sectionContent resultAsMessage";
$(baseId + "ResultHeader").style.display = "block";
$(baseId + "ResultMessage").style.display = "block";
$(baseId + "ResultButton").style.display = "block";
var header = $(baseId + "ResultHeader");
if ( success ) {
header.className = "resultSuccess";
header.innerHTML = "Success!";
}
else {
header.className = "resultError";
header.innerHTML = "Oops, something didn't work...";
}
$(baseId + "ResultMessage").innerHTML = message;
}
/////////////////////////////
//
function displayResultDiv(baseId) {
var resultDiv = $(baseId + "ResultDiv");
var sectionContent = $(baseId + "SectionContent");
// make it same height
if ( sectionContent.style.display != "none" ) {
resultDiv.style.minHeight = (sectionContent.offsetHeight - 6) + "px";
}
// hide content section
sectionContent.style.display = "none";
// display message div
resultDiv.style.display = "block";
}
/////////////////////////////
//
function hideResultDiv(baseId) {
// hide result div
$(baseId + "ResultDiv").style.display = "none";
// show content section
$(baseId + "SectionContent").style.display = "block";
}
/////////////////////////////
//
function proceedToLobby() {
window.document.location = "lobby/lobby.do";
}
/////////////////////////////////////////
//
// common
//
/////////////////////////////////////////
var userName;
/////////////////////////////////////////
//
// REGISTRATION stuff
//
/////////////////////////////////////////
function submitRegistration() {
// check stuff
var email = $("formRegEmail").value;
userName = $("formRegUsername").value;
var password = $("formRegPassword").value;
var password2 = $("formRegPassword2").value;
// all there?
if ( !email || !userName || !password || !password2 ) {
displayRegistrationMessage(false, "Please fill in all fields." );
return;
}
// passwords?
if ( password != password2 ) {
displayRegistrationMessage(false, "'Password' and 'Confirm password' values do not match." );
return;
}
// email ok?
var emailCheck = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // http://www.webreference.com/js/column5/form.html
if ( !emailCheck.test(email)) {
displayRegistrationMessage(false, "Email address appears to be invalid." );
return;
}
// long enough?
if ( userName.length < 3 || userName.length > 11 || password.length < 3 || password.length > 11 ) {
displayRegistrationMessage(false, "Username and password should be
between 3 and 11 characters long.");
return;
}
// working on it
displayInProgress("registration");
// submit stuff
setTimeout( function() {
new ServerProxy( "http://web1.scramboni.com/Byteclub/login.op" ).send( {
operation: "login",
action: "register",
userName: userName,
password: password,
emailAddress: email,
inviteCode: "apple"
} );
}, 100 );
}
/////////////////////////////
//
function register_Result( args ) {
// lucky day?
if ( args.errorMessage ) {
displayRegistrationMessage(false, args.errorMessage);
return;
}
setCookie( "username", userName, new Date ( 2012, 21, 12 ), "/" );
// ask user to click OK
displayRegistrationMessage(true, "Your registration has succeeded.
Press OK to login to ByteClub.");
// OK button should launch a login sequence
$("registrationResultButton").onclick = completeRegistrationSequence;
}
/////////////////////////////
//
function completeRegistrationSequence() {
var password = $("formRegPassword").value;
// working on it
displayInProgress("registration");
// submit stuff
setTimeout( function() {
new ServerProxy( "http://web1.scramboni.com/Byteclub/login.op" ).send( {
operation: "login",
action: "login",
userName: userName,
password: password
} );
}, 100 );
}
/////////////////////////////
//
function displayRegistrationMessage(success, message) {
if ( success ) {
$("registrationResultButton").onclick = proceedToLobby;
}
else {
$("registrationResultButton").onclick = hideRegistrationResultDiv;
}
setupResultDivAsMessage("registration", success, message);
displayResultDiv("registration");
}
/////////////////////////////
//
function hideRegistrationResultDiv() {
hideResultDiv("registration");
}
/////////////////////////////////////////
//
// LOGIN stuff
//
/////////////////////////////////////////
function submitLogin() {
// verify login info
userName = $("loginUsername").value;
var password = $("loginPassword").value;
// there?
if ( !userName || !password ) {
displayLoginError( "Username and password are required." );
return;
}
// long enough?
if ( userName.length < 3 || userName.length > 11 || password.length < 3 || password.length > 11 ) {
displayLoginError("Username and password should be
between 3 and 11 characters long.");
return;
}
// working on it
displayInProgress("login");
// submit stuff
setTimeout( function() {
new ServerProxy( "http://web1.scramboni.com/Byteclub/login.op" ).send( {
operation: "login",
action: "login",
userName: userName,
password: password
} );
}, 100 );
}
/////////////////////////////
//
function login_Result( args ) {
if ( ! args.errorMessage ) {
// move along
setCookie( "username", userName, new Date ( 2012, 21, 12 ), "/" );
setTimeout( proceedToLobby, 100 );
return;
}
// something went wrong
displayLoginError( args.errorMessage );
}
/////////////////////////////
//
function displayLoginError(message) {
setupResultDivAsMessage("login", false, message);
displayResultDiv("login");
}