var problemArray = new Array("userfield", "passfield", "passfield2", "forumnamefield", "forumpassfield", "genderoption", "acceptrules"); //to store the fields in error state

/* placeholder */
function force(fname,fid,fevent)
{
	return true;
}

/*validate the password. return true if it's safe*/
function safepass(passtxt) {
	var numero = 0;
	for (var i = 0; i<passtxt.length; i++)
	{
		if (!isNaN(passtxt.charAt(i)))
		{
			numero++;
		}
	}

	if (numero < 2) //not enough numbers
		return false;
	if ((passtxt.length - numero) < 2) //not enough letters/symbols
		return false;
	return true;
}

/* Validates the form before submitting */
function dispSubmit(field,action)
{
	if(problemArray.length != 0)
	{
		for(var i = 0; i < problemArray.length; i++)
		{
			if(problemArray[i] == field)
			{
				place = i;
				break;
			} else
				place = -12;
		}
	} else
		place = -50;
	if(action == "add" && place < 0)
		problemArray.splice(problemArray.length,0,field);
	else if(action == "remove" && place >= 0)
		problemArray.splice(place,1);
	//<!--DISPLAY ERROR OR SUBMIT BUTTION-->
	if(problemArray.length != 0)
		document.getElementById('submitholder').innerHTML = "You need to fill in all the fields before registering";
	else
		document.getElementById('submitholder').innerHTML = '';
}

//<!--TRIM ALL LEADING AND FOLLOWING WHITESPACE IN A STRING-->
function trimString(str)
{
	return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

//<!--AJAX-->
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function setFormLoading(txtfield, loadmesg)
{
	document.getElementById(txtfield+'_div2').parentNode.className = 'loading';
//	document.getElementById(txtfield+'_div').innerHTML = "<img src='/themes/modern/img/modern/loading.gif' alt='Checking...' />";
	document.getElementById(txtfield+'_div').innerHTML = "<span>Checking...</span>";
	document.getElementById(txtfield+'_div').className = 'loadingcell';
	document.getElementById(txtfield+'_div2').innerHTML = loadmesg;
}

function setFormError(txtfield, errmesg)
{
	document.getElementById(txtfield+'_div2').parentNode.className = 'error';
//	document.getElementById(txtfield+'_div').innerHTML = "<img src='/themes/modern/img/modern/red.png' alt='Error' />";
	document.getElementById(txtfield+'_div').innerHTML = "<span>Error</span>";
	document.getElementById(txtfield+'_div').className = 'errorcell';
	document.getElementById(txtfield+'_div2').innerHTML = errmesg;
	dispSubmit(txtfield,'add');
}

function setFormOk(txtfield, mesg)
{
	document.getElementById(txtfield+'_div2').parentNode.className = 'noclass';
//	document.getElementById(txtfield+'_div').innerHTML = "<img src='/themes/modern/img/modern/green.png' alt='ok' />";
	document.getElementById(txtfield+'_div').innerHTML = "<span>ok</span>";
	document.getElementById(txtfield+'_div').className = 'okcell';
	document.getElementById(txtfield+'_div2').innerHTML = mesg;
	dispSubmit(txtfield,'remove');
}

function validateForm(txtfield){
	var url = '/validate/validate_sql.php?field=';
	var fieldval = trimString(document.getElementById(txtfield).value);
	if( fieldval == "" )
		setFormError(txtfield, "Required Field");
	else
	{
		if( txtfield == "register_username" )
		{
			if(fieldval.length < 4 || fieldval.length > 23)
				setFormError(txtfield, "Username has to be between 4 and 23 characters.");
			else
			{
				url += txtfield + unescape("%26value=") + fieldval;
				setFormLoading(txtfield, "Checking Name Availability...");
				http.open('get', url);
				http.onreadystatechange = handleResponse;
				http.send(null);
			}
		}
		else if( txtfield == "register_password" || txtfield == "register_confirm_password" )
		{
			if(txtfield == "register_password")
				var txtfield2 = "register_confirm_password";
			else
				var txtfield2 = "register_password";
			var fieldval2 = trimString(document.getElementById(txtfield2).value);
			if(fieldval2!=fieldval)
			{
				setFormError("register_password", "");
				setFormError("register_confirm_password", "Passwords are not identical!");
			}
			else if(fieldval.length < 4 || fieldval.length > 23)
			{
				setFormError("register_password", "");
				setFormError("register_confirm_password", "Password has to be between 4 and 23 characters.");
			}
			else if(!safepass(fieldval))
			{
				setFormError("register_password", '');
				setFormError("register_confirm_password", 'Password is not safe enough.<br />Size >=6 and at least 2 letters and 2 numbers!');
			}
			else if(fieldval == document.getElementById("register_username").value)
			{
				setFormError("register_password", "");
				setFormError("register_confirm_password", "Password cannot be the same as the username");
			}
			else
			{
				setFormOk("register_password", "");
				setFormOk("register_confirm_password", "Password ok");
			}
		}
		else if(txtfield=="emailfield")
		{
			if (fieldval.length < 7 || fieldval.indexOf("@")<0)
				setFormError(txtfield, "Email required");
			else 
				setFormOk(txtfield, "Note: requires an existing Email-Address<br />Verification-Mail will be sent to it.");
		}
		else if(txtfield=="register_forumname")
		{
			if(fieldval.length < 2)
				setFormError(txtfield, "Invalid Master account.");
			else {
				url += txtfield + unescape("%26value=") + fieldval;
				setFormLoading(txtfield, "Checking Master account...");
				http.open('get', url);
				http.onreadystatechange = handleResponse;
				http.send(null);
			}
		}
		else if(txtfield=="register_forumpassword")
		{
			if(fieldval.length < 4)
				setFormError(txtfield, "Insert your forum password");
			else
				setFormOk(txtfield, "-");
		}
		else if(txtfield=="acceptrules")
		{
			if(!document.getElementById(txtfield).checked)
				setFormError(txtfield, "You need to read and accept the server rules");
			else 
				setFormOk(txtfield, "");
		}
		else setFormOk(txtfield, "");
	}
}

function handleResponse()
{
	if(http.readyState == 4)
	{
		var response = http.responseText;
		var UPDATE = new Array();
		<!--LOOP THROUGH THE RESPONSES-->
		if(response.indexOf('|') != -1)
		{
			UPDATE = response.split('|');
			if((UPDATE[1].indexOf('!error'))!=0) //there's an error
				setFormError(UPDATE[0],UPDATE[1]);
			else //the value is ok
				setFormOk(UPDATE[0], "Ok");
		}
	}
}
//<!--END AJAX-->

