function getXMLHTTPRequest() {
try {
req = new XMLHttpRequest();
} catch(err1) {
	  try {
	  req = new ActiveXObject("Msxml2.XMLHTTP");
	  } catch (err2) {
	    try {
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (err3) {
	      req = false;
	    } 
	  } 
}
return req;
}

var http = getXMLHTTPRequest();
var introMessage='';

submitOver = new Image;
submitOn = new Image;
submitOff = new Image;
submitOn.src="/images/buttons_silver/submitOn.gif";
submitOver.src="/images/buttons_silver/submitOver.gif";
submitOff.src="/images/buttons_silver/submitOff.gif";

function pushData(fields,indicator,phphandler,introMessage) {

  var theseFields = fields;
  var fieldsArray = fields.split(';');
  var data="";
  var str = "";
  for (x in fieldsArray)
  {
		str=document.forms[0][fieldsArray[x]].value;
		data = data+str.replace("\n","<br />")+"***";
  }
  data=data.replace(/&/g, "__and__");
  data=data.replace(/=/g, "__eq__");
  var button=document.getElementById(indicator).innerHTML;
  document.getElementById(indicator).innerHTML = '<img src="/images/indicator.gif">';
  
  http.open("GET", phphandler+"?data="+data, true);
  http.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
  http.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
  http.setRequestHeader("Pragma", "no-cache"); 
  http.onreadystatechange = function () {
	 if (http.readyState == 4) {
	   if(http.status == 200) { 
		    str=http.responseText;
			document.getElementById(indicator).innerHTML=str;
			fieldsArray = theseFields.split(';');
				for (x in fieldsArray)
				  {
						document.getElementById('error_'+fieldsArray[x]).innerHTML = '';
						document.getElementById('element_'+fieldsArray[x]).style.background='';
				  }
			if(str=='no errors') {
				document.getElementById("submissionFeedback").innerHTML = "<p class=\"feedback\">Thank you, new information was accepted.</p>";
				setTimeout("messageFadeOut('submissionFeedback','"+introMessage+"')",1800);
				
			} else {
				document.getElementById("submissionFeedback").innerHTML = "<p class=\"errors\">Please review the errors below.</p>";
				fieldsArray = str.split("\r\n");
				var errors=new Array();
				str="";
				for (x in fieldsArray) {
					errors=fieldsArray[x].split(' - Error: ');
					if(errors[1].length>0) {
						document.getElementById('error_'+errors[0]).innerHTML = errors[1];
						document.getElementById('element_'+errors[0]).style.background='#FFFFCC';
					} else {
						document.getElementById('element_'+errors[0]).style.background='';
					}
				}
			}
			document.getElementById(indicator).innerHTML = button;
			// document.getElementById(indicator).innerHTML = http.responseText;

	   }
	 } 
  }
  http.send(null);
}

function simpleDataSend(phphandler,container,data) {

  button=document.getElementById(container).innerHTML;
  document.getElementById(container).innerHTML = '<img src="/images/indicator.gif">';
  data=data.replace(/&/g, "__and__");
  http.open("GET", phphandler+"?data="+data, true);
  http.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
  http.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
  http.setRequestHeader("Pragma", "no-cache"); 
  http.onreadystatechange = function () {
	 if (http.readyState == 4) {
	   if(http.status == 200) { 
		    // str=http.responseText;
			document.getElementById(container).innerHTML = button+"<br />"+http.responseText;
		}
	 } 
  }
  http.send(null);
}

function messageFadeOut(messageID,introMessage) {
	fade(messageID);
	setTimeout("messageReturn('"+messageID+"','"+introMessage+"')",1100);
}

function messageReturn(messageID,introMessage) {
	document.getElementById(messageID).innerHTML=introMessage;
	fade(messageID);
	introMessage='';
}

function testPassword(field)
{
		var intScore   = 0
		var strVerdict = "weak"
		var strVerdictHTML = "weak"
		var strLog     = ""
		var passwd='';
		passwd = document.forms[0][field].value;
		
		// PASSWORD LENGTH
		if (passwd.length<5)                         // length 4 or less
		{
			intScore = (intScore+3)
			strLog   = strLog + "3 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
		{
			intScore = (intScore+6)
			strLog   = strLog + "6 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>7 && passwd.length<16)// length between 8 and 15
		{
			intScore = (intScore+12)
			strLog   = strLog + "12 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>15)                    // length 16 or more
		{
			intScore = (intScore+18)
			strLog   = strLog + "18 point for length (" + passwd.length + ")\n"
		}
		
		
		// LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
		if (passwd.match(/[a-z]/))                              // [verified] at least one lower case letter
		{
			intScore = (intScore+1)
			strLog   = strLog + "1 point for at least one lower case char\n"
		}
		
		if (passwd.match(/[A-Z]/))                              // [verified] at least one upper case letter
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one upper case char\n"
		}
		
		// NUMBERS
		if (passwd.match(/\d+/))                                 // [verified] at least one number
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one number\n"
		}
		
		if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/))             // [verified] at least three numbers
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least three numbers\n"
		}
		
		
		// SPECIAL CHAR
		if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one special char\n"
		}
		
									 // [verified] at least two special characters
		if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least two special chars\n"
		}
	
		
		// COMBOS
		if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
		{
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for upper and lower letters\n"
		}

		if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)) // [verified] both letters and numbers
		{
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for letters and numbers\n"
		}
 
									// [verified] letters, numbers, and special characters
		if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
		{
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for letters, numbers and special chars\n"
		}
	
	
		if(intScore < 14)
		{
		   strVerdict = "very weak"
		   strVerdictHTML = "<div class=\"veryWeak\">very weak</div>"
		}
		else if (intScore > 13 && intScore < 20)
		{
		   strVerdict = "weak"
		   strVerdictHTML = "<div class=\"weak\">weak</div>"
		}
		else if (intScore > 19 && intScore < 28)
		{
		   strVerdict = "mediocre"
		   strVerdictHTML = "<div class=\"mediocre\">mediocre</div>"
		}
		else if (intScore > 27 && intScore < 40)
		{
		   strVerdict = "strong"
		   strVerdictHTML = "<div class=\"strong\">strong</div>"
		}
		else
		{
		   strVerdict = "stronger"
		   strVerdictHTML = "<div class=\"veryStrong\">very strong</div>"
		}
	
	//document.forms.passwordForm.score.value = (intScore)
	//document.forms.passwordForm.verdict.value = (strVerdict)
	document.getElementById("passwordStrength").innerHTML = strVerdictHTML;
	//document.forms.passwordForm.matchlog.value = (strLog)
	
}

function userConfig() {

  var name = document.getElementsByName("name");
  name=name[0].value;
  
  var username = document.getElementsByName("username");
  username=username[0].value;
  
  var pwd = document.getElementsByName("password");
  pwd=pwd[0].value;
  
  document.getElementById("loginButtonWrapper").innerHTML = '<img src="/images/indicator.gif">';
  
  http.open("GET", "/go/userSetup.php?username="+username+"&pwd="+pwd+"&name="+name, true);
  http.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
  http.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
  http.setRequestHeader("Pragma", "no-cache"); 
  http.onreadystatechange = function () {
	 if (http.readyState == 4) {
	   if(http.status == 200) { 
		 document.getElementById("testOutput").innerHTML = "done!";
		 document.getElementById("loginButtonWrapper").innerHTML = '<a href="javascript:;" onClick="loginAttempt();"><img name="loginSubmit" src="/images/buttons_silver/submit.gif" border="0" id="loginSubmit" alt="Submit" /></a>';
	   }
	 } 
  }
  http.send(null);
}
