//function for triming white spaces wherever required
function trim(s){
    return s.replace(/^\s+|\s+$/, '');
}

function validityCheck(text, pattern){
    if (pattern.test(text)) { //valid
        return true;
    }
    else {
        return false;
    }
}

//func for validating User's Name in Registeration form
function validateName(name){

    var regDoc = document.reg_form;
    if (validityCheck(name, /[^a-zA-Z' -]/)) {
        document.getElementById('name_error').innerHTML = "Only letters please";
        regDoc.reg_name.style.background = "#FFBBBB";
        regDoc.reg_name.focus();
        return false;
    }
    
    regDoc.reg_name.style.background = "";
    document.getElementById('name_error').innerHTML = "";
    return true;
}

//func for validating User's Email in Registration Form 
function validateEmail(str){
    var regDoc = document.reg_form;
    var tstr = trim(str);
    var at = "@";
    var dot = ".";
    var lat = tstr.indexOf(at);
    var lstr = tstr.length;
    var ldot = tstr.indexOf(dot);
    if (tstr.length != 0) {
        if (tstr.indexOf(at) == -1) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
        if (tstr.indexOf(at) == -1 || tstr.indexOf(at) == 0 ||
        tstr.indexOf(at) == lstr) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
        if (tstr.indexOf(dot) == -1 || tstr.indexOf(dot) == 0 ||
        tstr.indexOf(dot) == lstr) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
        if (tstr.indexOf(at, (lat + 1)) != -1) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
        if (tstr.substring(lat - 1, lat) == dot ||
        tstr.substring(lat + 1, lat + 2) == dot) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
        if (tstr.indexOf(dot, (lat + 2)) == -1) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
        if (tstr.indexOf(" ") != -1) {
            regDoc.reg_email.style.background = "#FFBBBB";
            document.getElementById('email_error').innerHTML = "Enter a valid email";
            return false;
        }
    }
    regDoc.reg_email.style.background = 'White';
    document.getElementById('email_error').innerHTML = "";
    return true;
}

//func for validating Username in Login Form 
function validateLoginUsername(uname){

    var logDoc = document.login_form;
    
    if ((uname.length < 3) || (uname.length > 24)) {
        if (uname.length != 0) {
            logDoc.username.style.background = "#FFBBBB";
            document.getElementById('log_name_error').innerHTML = "Too short/long";
            logDoc.username.focus();
            return false;
        }
    }
    
    if (validityCheck(uname, /[^a-zA-Z0-9_']/)) { // allow letters, numbers, and underscores
        logDoc.username.style.background = "#FFBBBB";
        document.getElementById('log_name_error').innerHTML = "Illegal Username";
        logDoc.username.focus();
        return false;
    }
    
    logDoc.username.style.background = 'White';
    document.getElementById('log_name_error').innerHTML = "";
    return true;
}

//func for validating User's Username in Registeration Form 
function validateUsername(uname){

    var regDoc = document.reg_form;
    
    if ((uname.length < 3) || (uname.length > 24)) {
		 if (uname.length == 0) {
            regDoc.reg_username.style.background = "#FFBBBB";
            document.getElementById('username_error').innerHTML = "Enter your username";
            regDoc.reg_username.focus();
            return false;
        }
        if (uname.length != 0) {
            regDoc.reg_username.style.background = "#FFBBBB";
            document.getElementById('username_error').innerHTML = "Too short/long";
            regDoc.reg_username.focus();
            return false;
        }
    }
    
    if (validityCheck(uname, /[^a-zA-Z0-9_']/)) { // allow letters, numbers, and underscores
        regDoc.reg_username.style.background = "#FFBBBB";
        document.getElementById('username_error').innerHTML = "Illegal Username";
        regDoc.reg_username.focus();
        return false;
    }
    
    regDoc.reg_username.style.background = 'White';
    document.getElementById('username_error').innerHTML = "";
    return true;
}


//func to validate User's Password field in registration form
function validatePassword(pass){

    var regDoc = document.reg_form;
    if ((pass.length < 5) || (pass.length > 15)) {
		if (pass.length == 0) {
            regDoc.reg_password.style.background = "#FFBBBB";
            document.getElementById('password_error').innerHTML = "Enter password";
            regDoc.reg_password.value = "";
            regDoc.reg_password.focus();
            return false;
        }
        if (pass.length != 0) {
            regDoc.reg_password.style.background = "#FFBBBB";
            document.getElementById('password_error').innerHTML = "Too short/long (5-15 chars)";
            regDoc.reg_password.value = "";
            regDoc.reg_password.focus();
            return false;
        }
    }
    
    if (validityCheck(pass, /[^a-zA-Z0-9']/)) {
        regDoc.reg_password.style.background = "#FFBBBB";
        document.getElementById('password_error').innerHTML = "Password contains illegal characters";
        regDoc.reg_password.value = "";
        regDoc.reg_password.focus();
        return false;
    }
    
    if (!((pass.search(/(a-z)+/)) && (pass.search(/(0-9)+/)))) {
        regDoc.reg_password.style.background = "#FFBBBB";
        document.getElementById('password_error').innerHTML = "Password must contain at least one numeral";
        regDoc.reg_password.value = "";
        regDoc.reg_password.focus();
        return false;
    }
    
    regDoc.reg_password.style.background = 'White';
    document.getElementById('password_error').innerHTML = "";
    return true;
}

function validateConfPassword(pass){

    var regDoc = document.reg_form;
    var password = document.getElementById('reg_password').value;  
    
    if ((pass.length < 5) || (pass.length > 15)) {
		if (pass.length == 0) {
            regDoc.conf_password.style.background = "#FFBBBB";
            document.getElementById('conf_password_error').innerHTML = "Enter confirm password";
            regDoc.conf_password.value = "";
            regDoc.conf_password.focus();
            return false;
        }
        if (pass.length != 0) {
            regDoc.conf_password.style.background = "#FFBBBB";
            document.getElementById('conf_password_error').innerHTML = "Too short/long (5-15 chars)";
            regDoc.conf_password.value = "";
            regDoc.conf_password.focus();
            return false;
        }
    }
    
    if (validityCheck(pass, /[^a-zA-Z0-9']/)) {
        regDoc.conf_password.style.background = "#FFBBBB";
        document.getElementById('conf_password_error').innerHTML = "Password contains illegal characters";
        regDoc.conf_password.value = "";
        regDoc.conf_password.focus();
        return false;
    }
    
    if (!((pass.search(/(a-z)+/)) && (pass.search(/(0-9)+/)))) {
        regDoc.conf_password.style.background = "#FFBBBB";
        document.getElementById('conf_password_error').innerHTML = "Password must contain at least one numeral";
        regDoc.conf_password.value = "";
        regDoc.conf_password.focus();
        return false;
    }
	
	 if (password != pass) {
        regDoc.conf_password.style.background = "#FFBBBB";
        document.getElementById('conf_password_error').innerHTML = "Confirm password didn't match.";
        regDoc.conf_password.value = "";
        regDoc.conf_password.focus();
        return false;
    }
    
    regDoc.conf_password.style.background = 'White';
    document.getElementById('conf_password_error').innerHTML = "";
    return true;
}

//validations for change_password forms--------------------
function validateChangeUsername(uname){

    var regDoc = document.pass_reset_form;
    if ((uname.length < 3) || (uname.length > 24)) {
		if(uname.length == 0){
			regDoc.login_username.style.background = "#FFBBBB";
            document.getElementById('change_username_error').innerHTML = "Enter some username";
            regDoc.login_username.focus();
            return false;	
		}
        if (uname.length != 0) {
            regDoc.login_username.style.background = "#FFBBBB";
            document.getElementById('change_username_error').innerHTML = "Too short/long";
            regDoc.login_username.focus();
            return false;
        }
    }
    
    if (validityCheck(uname, /[^a-zA-Z0-9_']/)) { // allow letters, numbers, and underscores
        regDoc.login_username.style.background = "#FFBBBB";
        document.getElementById('change_username_error').innerHTML = "Illegal Username";
        regDoc.login_username.focus();
        return false;
    }
    
    regDoc.login_username.style.background = 'White';
    document.getElementById('change_username_error').innerHTML = "";
    return true;
	
}

function validateOldPassword(pass){

    var regDoc = document.pass_reset_form;
    if ((pass.length < 5) || (pass.length > 15)) {
		if(pass.length == 0){
			regDoc.old_password.style.background = "#FFBBBB";
            document.getElementById('old_password_error').innerHTML = "Enter your old password";
            regDoc.old_password.value = "";
            regDoc.old_password.focus();
            return false;
		}
        if (pass.length != 0) {
            regDoc.old_password.style.background = "#FFBBBB";
            document.getElementById('old_password_error').innerHTML = "Too short/long (5-15 chars)";
            regDoc.old_password.value = "";
            regDoc.old_password.focus();
            return false;
        }
    }
    
    if (validityCheck(pass, /[^a-zA-Z0-9']/)) {
        regDoc.old_password.style.background = "#FFBBBB";
        document.getElementById('old_password_error').innerHTML = "Password contains illegal characters";
        regDoc.old_password.value = "";
        regDoc.old_password.focus();
        return false;
    }
    
    if (!((pass.search(/(a-z)+/)) && (pass.search(/(0-9)+/)))) {
        regDoc.old_password.style.background = "#FFBBBB";
        document.getElementById('old_password_error').innerHTML = "Password must contain at least one numeral";
        regDoc.old_password.value = "";
        regDoc.old_password.focus();
        return false;
    }
    
    regDoc.old_password.style.background = 'White';
    document.getElementById('old_password_error').innerHTML = "";
    return true;
}

function validateNewPassword(pass){

    var regDoc = document.pass_reset_form;
    if ((pass.length < 5) || (pass.length > 15)) {
		 if (pass.length == 0) {
            regDoc.new_password.style.background = "#FFBBBB";
            document.getElementById('new_password_error').innerHTML = "Enter your new password";
            regDoc.new_password.value = "";
            regDoc.new_password.focus();
            return false;
        }
        if (pass.length != 0) {
            regDoc.new_password.style.background = "#FFBBBB";
            document.getElementById('new_password_error').innerHTML = "Too short/long (5-15 chars)";
            regDoc.new_password.value = "";
            regDoc.new_password.focus();
            return false;
        }
    }
    
    if (validityCheck(pass, /[^a-zA-Z0-9']/)) {
        regDoc.new_password.style.background = "#FFBBBB";
        document.getElementById('new_password_error').innerHTML = "Password contains illegal characters";
        regDoc.new_password.value = "";
        regDoc.new_password.focus();
        return false;
    }
    
    if (!((pass.search(/(a-z)+/)) && (pass.search(/(0-9)+/)))) {
        regDoc.new_password.style.background = "#FFBBBB";
        document.getElementById('new_password_error').innerHTML = "Password must contain at least one numeral";
        regDoc.new_password.value = "";
        regDoc.new_password.focus();
        return false;
    }
    
    regDoc.new_password.style.background = 'White';
    document.getElementById('new_password_error').innerHTML = "";
    return true;
}

function validateConfNewPassword(pass){

    var regDoc = document.pass_reset_form;
    var password = document.getElementById('new_password').value;  
    
    if ((pass.length < 5) || (pass.length > 15)) {
		if (pass.length == 0) {
            regDoc.conf_new_password.style.background = "#FFBBBB";
            document.getElementById('conf_new_password_error').innerHTML = "Enter confirm password";
            regDoc.conf_new_password.value = "";
            regDoc.conf_new_password.focus();
            return false;
        }
        if (pass.length != 0) {
            regDoc.conf_new_password.style.background = "#FFBBBB";
            document.getElementById('conf_new_password_error').innerHTML = "Too short/long (5-15 chars)";
            regDoc.conf_new_password.value = "";
            regDoc.conf_new_password.focus();
            return false;
        }
    }
    
    if (validityCheck(pass, /[^a-zA-Z0-9']/)) {
        regDoc.conf_new_password.style.background = "#FFBBBB";
        document.getElementById('conf_new_password_error').innerHTML = "Password contains illegal characters";
        regDoc.conf_new_password.value = "";
        regDoc.conf_new_password.focus();
        return false;
    }
    
    if (!((pass.search(/(a-z)+/)) && (pass.search(/(0-9)+/)))) {
        regDoc.conf_new_password.style.background = "#FFBBBB";
        document.getElementById('conf_new_password_error').innerHTML = "Password must contain at least one numeral";
        regDoc.conf_new_password.value = "";
        regDoc.conf_new_password.focus();
        return false;
    }
	
	 if (password != pass) {
        regDoc.conf_new_password.style.background = "#FFBBBB";
        document.getElementById('conf_new_password_error').innerHTML = "Confirm password didn't match.";
        regDoc.conf_new_password.value = "";
        regDoc.conf_new_password.focus();
        return false;
    }
    
    regDoc.conf_new_password.style.background = 'White';
    document.getElementById('conf_new_password_error').innerHTML = "";
    return true;
}
//---------------------------------------------------end validation change_password form

//func to validate Betacode field in registeration form
function validateBetacode(bCode){
    var regDoc = document.reg_form;
    if (bCode.length == 0) {
        regDoc.reg_betacode.style.background = "#FFBBBB";
        document.getElementById('betacode_error').innerHTML = "Enter betacode";
        regDoc.reg_betacode.focus();
        return false;
    }
    regDoc.reg_betacode.style.background = 'White';
    document.getElementById('betacode_error').innerHTML = "";
    return true;
}

//func for validating Login Form 
function validateLoginForm(){

    document.getElementById('log_name_error').innerHTML = "";
    document.getElementById('log_pass_error').innerHTML = "";
    var loginDoc = document.forms['login_form'];
    loginDoc.username.style.background = "#FFFFFF";
    document.getElementById('password').style.background = "#FFFFFF";
    
    if (loginDoc.username.value == "") {
        document.getElementById('log_name_error').innerHTML = "Enter your Username";
        loginDoc.username.style.background = "#FFBBBB";
        loginDoc.username.focus();
        return false;
    }
    else 
        if (document.getElementById('password').value == "") {
            document.getElementById('log_pass_error').innerHTML = "Enter your Password";
            document.getElementById('password').style.background = "#FFBBBB";
            document.getElementById('password').focus();
            return false;
        }else{
        document.getElementById('login_password_hidden').value = MD5(document.getElementById('password').value);
        document.forms['login_form'].submit();
		return true;
    }
	
    //encryptPassword(form);
    return true;
}

//func for validating Registeration Form 
function validateRegisterForm(){
    document.getElementById('username_error').innerHTML = "";
    document.getElementById('password_error').innerHTML = "";
    document.getElementById('email_error').innerHTML = "";
    document.getElementById('name_error').innerHTML = "";
	//document.getElementById('register_button').value = "Submitting";
    
    var regDoc = document.reg_form;
    name = regDoc.reg_name;
    email = regDoc.reg_email;
    newUsername = regDoc.reg_username;
    newPassword = regDoc.reg_password;
    
    if ((name.value == null) || (name.value == "")) {
        name.style.background = "#FFBBBB";
        document.getElementById('name_error').innerHTML = "Enter your Name";
		document.getElementById('register_button').value = "Register";
        name.focus();
        return false;
    }
    if ((email.value == null) || (email.value == "")) {
        email.style.background = "#FFBBBB";
        document.getElementById('email_error').innerHTML = "Enter your Email";
		document.getElementById('register_button').value = "Register";
        email.focus();
        return false;
    }
    if ((newUsername.value == null) || (newUsername.value == "")) {
        newUsername.style.background = "#FFBBBB";
        document.getElementById('username_error').innerHTML = "Enter your Username";
		document.getElementById('register_button').value = "Register";
        newUsername.focus();
        return false;
    }
    if ((newPassword.value == null) || (newPassword.value == "")) {
        newPassword.style.background = "#FFBBBB";
        document.getElementById('password_error').innerHTML = "Enter your Password";
		document.getElementById('register_button').value = "Register";
        newPassword.focus();
        return false;
    }
    if (validateName(name.value) && validateEmail(email.value) &&
    validateUsername(newUsername.value) &&
    validatePassword(newPassword.value)) {
        document.getElementById('reg_password_hidden').value = MD5(newPassword.value);
        return true;
    }
	document.getElementById('register_button').value = "Register";
    return false;
}

function validateBetaRequest (betaform) {
	var betaEmail = document.getElementById('betaemail');
	if(betaEmail.value=='Enter Email' || betaEmail.value==' ') {
			betaEmail.value='Enter Email';
			return false;
	}
}
