//<SCRIPT>

function getHTTP(){
	var xmlhttp=false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	 try {
	  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
	  try {
	   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (E) {
	   xmlhttp = false;
	  }
	 }
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) {
		try {
			xmlhttp = window.createRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	return xmlhttp;
}

//This was nescessary because IE was not firing the onchange event if you selected a value from the prompted/previously used list.
var gsUsername;

function setUsername(oSender){
	gsUsername = oSender.value;
	//window.status = gsUsername;
	return true;
}

function checkChangeUsername(oSender){
	var sOriginalUsername = document.getElementById('originalUsername').value;
	//window.status = 'checking for change.' + (oSender.value != gsUsername).toString();
	if(oSender.value != gsUsername){ return checkUsername(oSender);}else{return true;}
}


function checkUsername(oSender){
	try{
		var sOriginalUsername = document.getElementById('originalUsername').value;
		
		if((oSender.value == null || oSender.value.replace(' ','') == '') || oSender.value == sOriginalUsername){
			//alert('is empty or original.');
			oSender.style.backgroundColor = '#FFFFFF';
			document.getElementById('IsUsernameOk').value = 'true';
			return;
		}
		var sResp = '';
		var sCommand = 'CheckUsername.asp?name=' + oSender.value;
		var oPoster = null;
		oPoster = getHTTP();
		if(oPoster){
			//alert('Sending by HTTP');
			if(oPoster['async'] != null) oPoster.async = false;
			oPoster.open("GET", sCommand,false);
			/*oPoster.onreadystatechange=function() {
				 if (oPoster.readyState==4) {
					alert('Email Reminder Preference Has Been Changed.');
					//document.getElementById('debug').value = oPoster.responseText;
				 }
			}*/
			oPoster.send(null);
			var i = 0;
			while(oPoster.readyState!=4){
				window.status = 'waiting...' + i;
				i++;
				if(i > 10000){
					window.status = 'username check failed';
					sResp = "{{FALSE}}";
					break;
				}
			}
			sResp = oPoster.responseText;
			//alert(sResp);
		}else{
			//alert('Wacky.');
			//async hack for really old browsers
			//we really can't do this when we need a return value (well, we could, but it would be horrifying).
			var oWin = window.open(sCommand
				, 'CheckUsername', 'width=10,height=10,screenX=0,left=200,screenY=0,top=100,channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=0,status=0,toolbar=0,scroll=0');
			var i = 0;
			while(oWin.readyState != 4){
				window.status = 'waiting...' + i;
				i++;
				if(i > 10000){
					window.status = 'username check failed';
					sResp = "{{FALSE}}";
					break;
				}
			}
			sResp = oWin.document.body.innerHTML.replace(' ','');
				
		}
		//alert(sResp + ":" + sResp.indexOf("{{TRUE}}"));
		var bOk = (sResp.indexOf("{{TRUE}}") != -1);
		if(bOk){
			oSender.style.backgroundColor = '#FFFFFF';
		}else{
			oSender.style.backgroundColor = '#FF0000';
		}
		var flagOk = document.getElementById('IsUsernameOk');
		flagOk.value = bOk.toString();
		if(!bOk){
			alert("That username has been taken, please try another.");
			oSender.focus();
			oSender.select();
		}
		//alert(flagOk.value);
	/*	if(oSender.value && oSender.value == 'remove'){
			oSender.value = 'add';
		}else if(oSender.value && oSender.value == 'add'){
			oSender.value = 'remove';
		}*/
		return bOk;
	}catch(e){
		alert('error checking for username uniqueness: ' + e.description);
	}
}
//</SCRIPT>

