/*
* E-Games Form Validity Checker
*
* web & multimedia
* Date: 2009-11-25 15:45 +8 GMT
* Revision: 5
*/

/*************************************************
* Global Helper
*************************************************/
function DO(domId) {
    return window.document.getElementById(domId);
}


/*************************************************
* Input checking
*************************************************/

function onUserNameFocus() {
    if ($('#ctl00_cphContent_txtUsername').value == "") {
        DO('validate-username').className = "flag";
    }
}

function onUserNameBlur() {
    window.setTimeout(checkUserNameOnBlur, 150);
    checkFields();
}

function validateEmailField(isError) {
    window.setTimeout("isUserEmailAvailable(" + isError + ")", 100);
    checkFields();
}

function validateEmailField() {
    window.setTimeout("isUserEmailAvailable()", 100);
    checkFields();
}

function validateConfirmField(fieldId, confirmFieldId, isError, fieldIdFlag, confirmFieldIdFlag) {
    window.setTimeout("checkConfirmField('" + fieldId + "','" + confirmFieldId + "'," + isError + ",'" + fieldIdFlag + "','" + confirmFieldIdFlag + "' )", 100);
    checkFields();
}


function validatePasswordConfirmField(fieldId, isError) {
    window.setTimeout("checkPasswordConfirmField('" + fieldId + "'," + isError + ")", 100);
    checkFields();
}


function validatePasswordField(isError) {
    window.setTimeout("checkPasswordField(" + isError + ")", 100);
    checkFields();
}


function checkUserNameOnBlur() {
    if (DO('ctl00_cphContent_txtUsername').value == "") {
        DO('validate-username').addClass = "flag error";
        // DO('validate-username').innerHTML = "error";
    } else {
        formUserName();
    }
    checkFields();
}

var userNameEdited = false;
function onUserNameChange(event) {
    window.setTimeout(formUserName, 100);
    var keyCode;
    if (window.event) {
        keyCode = window.event.keyCode;
    }
    else if (event) {
        keyCode = event.which;
    } else { return };

    if (!userNameEdited && (keyCode == 9 || keyCode == 95 || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (keyCode >= 48 && keyCode <= 57))) {
        userNameEdited = true;
    }
    checkFields();
}

function formUserName() {
    var sourceme = DO('ctl00_cphContent_txtUsername');
    var shortName = sourceme.value.replace(/\W/g, "").toLowerCase();
    if (shortName.length > 40) {
        shortName = shortName.substring(0, 40);
    }
    DO('ctl00_cphContent_txtUsername').value = shortName;
    ValidateUserName(shortName);
    checkFields();
}


var previousUName = null;
function isUserNameAvailable() {
    var source = DO('ctl00_cphContent_txtUsername');
    var userName = source.value;
    previousUName = userName;
    DO('validate-username').className = "flag loading";
    $('#check-user-availability').load('Validate.aspx?LoginID=' + userName,
		function() {
		    checkUserAvailability(userName);
		})
		checkFields();
}
var previousEmail = null;
function isUserEmailAvailable() {
    var source = DO('ctl00_cphContent_txtEmail');
    var userEmail = source.value;
    previousEmail = userEmail;
    DO('validate-useremail').className = "flag loading";
    $('#check-useremail-availability').load('Validate.aspx?Email=' + userEmail,
		function() {
		    checkEmailAvailability(userEmail);
		})
		checkFields();
}


function checkUserAvailability(userName) {
    if (DO('check-user-availability') == null || $('#ctl00_cphContent_txtUsername') == null) {
        return;
    }
    var response = DO('check-user-availability').innerHTML;
    var strResponse = $.trim(response);
    if (strResponse == "0") {
        DO('validate-username').className = "flag check";
    }
    else {
        DO('validate-username').className = "flag error";
    }
    checkFields();
}

function checkEmailAvailability(userEmail) {
    if (DO('check-useremail-availability') == null || $('#ctl00_cphContent_txtEmail') == null) {
        return;
    }
    var response = DO('check-useremail-availability').innerHTML;
    var strResponse = $.trim(response);
    if (strResponse == "0") {
        //DO('validate-useremail').className = "flag check";
        checkEmailField(true);
    } else {
        DO('validate-useremail').className = "flag error";
    }
    checkFields();
}


function checkEmailField(isError) {
    var emailStatus = validateEmail(DO('ctl00_cphContent_txtEmail').value);
    if (emailStatus == 0) {
        DO('validate-useremail').className = "flag check";
    } else if (emailStatus == -1) {
        DO('validate-useremail').className = "flag " + (isError ? "error" : "required");
    } else {
        DO('validate-useremail').className = "flag error";
    }
    checkFields();
}


function checkConfirmField(fieldId, confirmFieldId, isError, fieldIdFlag, confirmFieldIdFlag) {

    //alert(DO(fieldId).className);
    if (DO(fieldIdFlag).className == "flag error") {
        DO(confirmFieldIdFlag).className = "flag error";
        return;
    }
    var confirmValue = DO(confirmFieldId).value;
    //alert(confirmValue);
    if (confirmValue == "") {
        DO(confirmFieldIdFlag).className = ("flag " + (isError ? "error" : "required"));
    } else {
        DO(confirmFieldIdFlag).className = confirmValue != DO(fieldId).value ? "flag error" : "flag check";
    }
    checkFields();
    //checkSignupButtons();
}




function checkPasswordConfirmField(fieldId, isError) {
    if (DO('validate-userpassword').className == "flag error") {
        DO('validate-userpassword_confirmation').className = "flag error";
        return;
    }
    var confirmValue = DO('ctl00_cphContent_txtPasswordConfirm').value;
    if (confirmValue == "") {
        DO('validate-userpassword_confirmation').className = ("flag " + (isError ? "error" : "required"));
    } else {
    DO('validate-userpassword_confirmation').className = confirmValue != DO('ctl00_cphContent_txtPassword').value ? "flag error" : "flag check";
    }
    //checkSignupButtons();
    checkFields();
}



function checkPasswordField(isError) {
    var pwStatus = validatePassword(DO('ctl00_cphContent_txtPassword').value);
    if (pwStatus == 0) {
        DO('validate-userpassword').className = "flag check";
    }
    else if (pwStatus == -1) {
        DO('validate-userpassword').className = "flag " + (isError ? "error" : "required");
    } else {
        DO('validate-userpassword').className = "flag error";
    }
}

/******************************************************************************
* Validations
*****************************************************************************/


function ValidateUserName(shortName) {
    if (shortName == "") {
        DO('validate-username').className = "flag required";
    } else if (shortName.match(/\W/g) || shortName.length > 14 || shortName.length < 6) {
        DO('validate-username').className = "flag error";
    } else {
        if (shortName != previousUName) {
            DO('validate-username').className = "flag";
            isUserNameAvailable();
        }
    }
}

function validateEmail(email) {
    if (email == "") {
        DO('validate-useremail').className = "flag required";
        return -1;
    }
    var emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,6})$/;
    var regex = new RegExp(emailReg);
    return regex.test(email) ? 0 : -2;
    checkFields();
}
function validatePassword(password) {
    if (password == "" || password.replace(/^\s+|\s+$/g, '') == "")
        return -1;
    DO('validate-userpassword').className = "flag required";
    if (password.length < 6 || password.length > 14)
        return -2;
    return 0;
    checkFields();
}

function setLaunchAccountButtonState(isEnabled) {
    if ($('#user-agreement').is(':checked')) {
//        DO('ctl00_cphContent_btnContinue').className = "btn-big-blue btn-big-enabled";
//        $('#ctl00_cphContent_btnContinue').removeAttr("disabled");
        checkFields();
    } else {
        $('#ctl00_cphContent_btnContinue').attr("disabled", "disabled");
        DO('ctl00_cphContent_btnContinue').className = "btn-big-blue btn-big-disabled";
        $('#user-agreement').attr('checked', false);
    }
    checkFields();
    
}
$('#ctl00_cphContent_btnContinue').attr("disabled", "disabled");
$('#user-agreement').attr('checked', false);




function goto(strURL) {
    location.href = strURL;
}


function checkFields(){
    if(DO('validate-username').className == "flag check" &&
        DO('validate-useremail').className == "flag check"  &&
        DO('validate-email_confirmation').className == "flag check" &&
        DO('validate-userpassword').className == "flag check" &&
        DO('validate-userpassword_confirmation').className == "flag check"){
            $('#ctl00_cphContent_btnContinue').removeAttr("disabled");
        }
        else {
            $('#ctl00_cphContent_btnContinue').attr("disabled", "disabled");
        }
        
}
