spaceRegExp = new RegExp(/(\s)/);
specialRegExp = /^([\w\.]+)$/;	// W = any non-alphanumeric character
emailReg = /^[\S]{2,}[@]{1}[\S]{2,}[.]{1}[\S]{2,8}$/;  // "\S" = any non-whitespace character

function uNameValidate(myField,whichURL)
{
	myMsg = document.getElementById("uid_msg");
	if (myField.value.length<5) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Your username must be at least 5 characters long.</span>';
	}
	else if (spaceRegExp.test(myField.value)) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Your username cannot contain blank spaces.</span>';
	}
	else if (!specialRegExp.test(myField.value)) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Only letters and numbers are allowed.</span>';
	}
	else {ajaxCheck('Username',myField.value,whichURL);}
}

function uPwdValidate(myField)
{
	myMsg = document.getElementById("pwd_msg");
	if (myField.value.length<5) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Your password must be at least 5 characters long.</span>';
	}
	else if (spaceRegExp.test(myField.value)) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Your password cannot contain blank spaces.</span>';
	}
	else if (!specialRegExp.test(myField.value)) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Only letters and numbers are allowed.</span>';
	}
	else { myMsg.innerHTML = '&nbsp; <span class="green">Password accepted.</span>'; }
}

function uEmailValidate(myField,whichURL)
{
	myMsg = document.getElementById("email_msg");
	if (!emailReg.test(myField.value)) {
		myMsg.innerHTML = '&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> Invalid email address.</span>';
	}
	else {
		ajaxCheck('Email',myField.value,whichURL);
	}
}

function ajaxCheck(myField,myValue,myUrl)
{
	/** ARGUMENTS:
	*	myField	=	'uName' or 'email'
	*	myValue	=	value input by user
	*	myUrl		=	URL to be called by Ajax
	**/

	/** THIS e' l'Input Field **/
	req = null;
	myURL = (myField=='Username') ? myUrl+"?name="+myValue : myUrl+"?email="+myValue;

	//alert("Submit effettuato. Attendo feedback dal server...");

	if (window.XMLHttpRequest) // Mozilla, Safari, ...
	{
		req = new XMLHttpRequest();
		if (req.overrideMimeType) { req.overrideMimeType('text/xml'); }
	}
	else if (window.ActiveXObject) // IE
	{
		try { req = new ActiveXObject("Msxml2.XMLHTTP"); } // Vers. 5.5 o inferiore
		catch (e)
		{
			try { req = new ActiveXObject("Microsoft.XMLHTTP"); } // Vers. 5.5 o superiore
			catch (e) {}
		}
	}

	if (!req) {
	   alert('Giving up :( Cannot create an XMLHTTP instance');
	   return false;
	}
	req.open("POST", myURL, true); // 1) POST or GET;  2) URL of the script to execute;  3) true for asynchronous (false for synchronous).
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	req.send(""); // POSTs data to the server.
	
	result = false;

	req.onreadystatechange = function()
	{
		/** Ora THIS e' questa funzione! **/
		//  alert(req.readyState);
		if (req.readyState == 4) // The 4 state means for the response is ready and sent by the server.
		{
			if (req.status == 200) // This status means "OK", otherwise some error code is returned, 404 for example.
			{
				//alert("Pagina trovata... \nSubmit effettuata!");
				/*** Following are the actions to be performed with the server response ***/
				//alert(req.responseText);
				rispostaServer = req.responseXML;
				manageResponseForUserValidate(myField,rispostaServer); // A "makeSuggArray()" viene passata una pagina XML a tutti gli effetti!
			}
			else
			{
				//alert("The page generating XML has not been found!");
				alert("An error occurred while submitting data to the server!\nCode: " + req.status + " " + req.statusText); // statusText ?una propriet?dell'oggetto XMLHttpRequest che contiene il messaggio di errore.
			}
		}
	}
}

function manageResponseForUserValidate(myField,XMLresponse)
{
	myRoot = (XMLresponse.firstChild.nodeName == "xml") ? XMLresponse.childNodes[1] : XMLresponse.childNodes[0];  //alert("myRoot= "+myRoot.nodeName);
	myMsg = (myField=='Username') ? document.getElementById("uid_msg") : document.getElementById("email_msg");

	if (myRoot.getAttribute("success")==1) { // If DB query was successful...
		myMsg.innerHTML = (myField=='Username') ? '&nbsp; <span class="green">' +myField+ ' accepted.</span>' : '&nbsp; <span class="green">' +myField+ ' accepted. We will send you a verification message!</span>';
	}
	else if(myRoot.getAttribute("success")==0) {
		myMsg.innerHTML ='&nbsp; <span class="red"><img src="../im/cry.gif" class="loginError"/> ' +myField+ ' already in use. Please choose another one.</span>';
	}
	//smile.gif  alert(myRoot.getAttribute("success"));
}
