/* 	 ********************************************************************************
	 *
	 *	Type:			Javascript
	 *	Author:		Martin Hedvall
	 *	Created:		2008-10-17
	 *	Last change: 	2008-10-19
	 *
	 *	Functions:		checkUserName
	 *				validateUserpass1
	 *				validateUserpass2
	 *				validateUseremail
	 *				validateYearOfBirth
	 *				validatePayday
	 *
	 *	Description:	Reads information from input text field, writes status to the corresponding
	 *				table column. See XML tag definitions below.
	 * 	id for input boxes = 	
	 *				reg_username	
	 *				reg_userpass1
	 * 				reg_userpass2
	 *				reg_useremail
	 *				reg_userbirth
	 *				reg_genre1
	 *				reg_genre2
	 *				reg_userpayday
	 * 	id for corresponding table columns = 
	 * 				regtext_username
	 *				regtext_userpass1
	 *				regtext_userpass2
	 *				regtext_useremail
	 *				regtext_userbirth
	 *				regtext_genre
	 *				regtext_userpayday
	 *
	 **********************************************************************************
	*/

// Define standard messages
var okMessage = "<img src=\"/images/layout/register/register_success.png\" alt=\"godkänt\" />";
var failMessage = "<img src=\"/images/layout/register/register_fail.png\" alt=\"ej godkänt\" />";


function checkUserName() {
	//get written name
	fieldInfo = document.getElementById('reg_username');
	var userName = fieldInfo.value;
	httpObject = getHTTPObject();
	var message = "";
	var ajaxsuccess = false;
	
	//Something must have been written in text field
	if(userName != "") {
		if (httpObject != null) {
			if((userName.toLowerCase() == "admin") || (userName.toLowerCase() == "administrator") || (userName.toLowerCase() == "webmaster")) {
				//Automatically failure
				message = failMessage;
			}
			else if((userName.length > 0) && (userName.length < 50)) {
				//Possible failure
				httpObject.onreadystatechange = function() {
					if(httpObject.readyState == 4){
						 Temp = document.getElementById('regtext_username').innerHTML = httpObject.responseText;
					}
				}
				httpObject.open("GET", "/include/checkUserName.php?user="+userName, true);
				httpObject.send(null);
				ajaxsuccess = true;
			}
			else {
				//Automatically failure
				message = failMessage;
			}
		}
	}
	//message
	if(!ajaxsuccess) {
		document.getElementById('regtext_username').innerHTML = message;
	}
}

function validateUserpass1() {
	//get written password
	fieldInfo = document.getElementById('reg_userpass1');
	var userPass1 = fieldInfo.value;
	
	if(userPass1.length != 0) {
		//Script disabled if nothing has been written
		var message = "";
		if((userPass1.length >= 8) && (userPass1.length <= 50)) {
			message = okMessage;
			
			/*
				Validate safety level of password
					
					* not secure 	<=> 	only lowercase OR uppercase letters
					* average 		<=>	mix of lowercase and uppercase letters and/or mix of letters and numbers OR longer then 12 chars
					* secure		<=>	mixed letters, lowercase and uppercase and numbers and longer then 10 characters
			*/
			var passwordLength = userPass1.length;
			var mixedLetters = false;
			var mixedLetterDigit = mixedWithNumbers(userPass1);
			
			if((userPass1.toLowerCase() != userPass1) && (userPass1.toUpperCase() != userPass1)) {
				mixedLetters = true;
			}
			//Judge the password according to definitions above
			if(mixedLetterDigit && mixedLetters && (passwordLength > 10)) {
				message = message + "<img src=\"/images/layout/register/register_passgood.png\" alt=\"säkert\" /><br /> (säkert)";
			}
			else if(mixedLetterDigit || mixedLetters || (passwordLength > 12)) {
				message = message + "<img src=\"/images/layout/register/register_passok.png\" alt=\"medel\" /><br /> (medel)";
			}
			else {
				message = message + "<img src=\"/images/layout/register/register_passbad.png\" alt=\"osäkert\" /><br /> (osäkert)";
			}
		}
		else {
			message = failMessage;
		}
		
		document.getElementById('regtext_userpass1').innerHTML = message;
	}
	else {
		document.getElementById('regtext_userpass1').innerHTML = "";
	}
}

function validateUserpass2() {
	//get written password
	fieldInfo = document.getElementById('reg_userpass1');
	var userPass1 = fieldInfo.value;
	fieldInfo = document.getElementById('reg_userpass2');
	var userPass2 = fieldInfo.value;
	
	if(userPass2.length != 0) {
		//Script disabled if nothing has been written
		var message = "";
		if(userPass1 == userPass2) {
			message = okMessage;
		}
		else {
			message = failMessage;
		}
		
		document.getElementById('regtext_userpass2').innerHTML = message;
	}
	else {
		document.getElementById('regtext_userpass2').innerHTML = "";
	}
}

function validateUseremail() {
	//get written email adress
	fieldInfo = document.getElementById('reg_useremail');
	var userEmail = fieldInfo.value;
	
	if(userEmail.length != 0) {
		//Script disabled if nothing has been written - assume not ok first
		var message = failMessage;
		
		//Validate email adress. It must contain one @ and at least one dot
		
		if((userEmail.indexOf("@") == userEmail.lastIndexOf("@")) && (userEmail.indexOf("@") >= 1)) {
			//Only one @ exist and it is not the first letter - check dots
			if(userEmail.indexOf(".") != -1) {
				//At least one dot exist - assume valid email adress
				message = okMessage;
			}
		}
		document.getElementById('regtext_useremail').innerHTML = message;
	}
	else {
		document.getElementById('regtext_useremail').innerHTML = "";
	}
}

function validateYearOfBirth() {
	//get written year of birth
	fieldInfo = document.getElementById('reg_userbirth');
	var userBirth = fieldInfo.value;
	
	if(userBirth.length != 0) {
		//Script disabled if nothing has been written - assume not ok first
		var message = failMessage;
		
		if(userBirth.length == 4) {
			//Ok so far
			if(IsNumeric(userBirth)) {
				//Numeric - check reasonable date. Accept 19xx and 20xx
				if((userBirth >= 1900) && (userBirth < 2100)) {
					message = okMessage;
				}
			}
		
		}
		document.getElementById('regtext_userbirth').innerHTML = message;
	}
	else {
		document.getElementById('regtext_userbirth').innerHTML = "";
	}
}

function validatePayday() {
	//get written Payday
	fieldInfo = document.getElementById('reg_userpayday');
	var userPayday = fieldInfo.value;
	
	if(userPayday.length != 0) {
		//Script disabled if nothing has been written - assume not ok first
		var message = failMessage;
		
		if(userPayday.length == 2) {
			//Ok so far
			if(IsNumeric(userPayday)) {
				//Numeric,  check number. Accept 1 to 31
				if((userPayday >= 1) && (userPayday <= 31)) {
					message = okMessage;
				}
				
			}
		
		}
		document.getElementById('regtext_userpayday').innerHTML = message;
	}
	else {
		document.getElementById('regtext_userpayday').innerHTML = "";
	}
}

function validatePersons() {
	//get written Payday
	fieldInfo = document.getElementById('reg_userpersons');
	var userPersons = fieldInfo.value;
	
	if(userPersons.length != 0) {
		//Script disabled if nothing has been written - assume not ok first
		var message = failMessage;
		
		if(userPersons.length <= 2) {
			//Ok so far
			if(IsNumeric(userPersons)) {
				//Numeric,  check number. Accept 1 to 99
				if((userPersons >= 1) && (userPersons <= 99)) {
					message = okMessage;
				}
				
			}
		
		}
		document.getElementById('regtext_userpersons').innerHTML = message;
	}
	else {
		document.getElementById('regtext_userpersons').innerHTML = "";
	}
}

function validateChildrens() {
	//get written Payday
	fieldInfo = document.getElementById('reg_userchildrens');
	var userChildrens = fieldInfo.value;
	
	if(userChildrens.length != 0) {
		//Script disabled if nothing has been written - assume not ok first
		var message = failMessage;
		
		if(userChildrens.length <= 2) {
			//Ok so far
			if(IsNumeric(userChildrens)) {
				//Numeric,  check number. Accept 0 to 99
				if((userChildrens >= 0) && (userChildrens <= 99)) {
					message = okMessage;
				}
				
			}
		
		}
		document.getElementById('regtext_userchildrens').innerHTML = message;
	}
	else {
		document.getElementById('regtext_userchildrens').innerHTML = "";
	}
}

function validateGenre() {
	//clicked = ok
	document.getElementById('regtext_genre').innerHTML = okMessage;
}

validateGenre

/* Other functions */

function IsNumeric(sText) {
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function mixedWithNumbers(sText) {
   var ValidChars = "0123456789";
   var hasNumber = false;
   var hasLetter = false;
   var isMixed = false;
   var Char;
 
   for (i = 0; i < sText.length && isMixed == false; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         //not a number
		 hasLetter = true;
      }
	  else {
		//number
		hasNumber = true;
	  }
	  if(hasLetter && hasNumber) {
		isMixed = true;
	  }
   }
   return isMixed;
}

/* AJAX functionality */

function getHTTPObject() {
	var xmlHttp;
	
	try {
	  // Firefox, Opera 8.0+, Safari
	  xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
	  // Internet Explorer
	  try {
	    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	  }
	  catch (e) {
		try {
	      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	    }
	    catch (e) {
			alert("Your browser does not support AJAX!");
			return false;
	    }
	  }
	}
	return xmlHttp;
}

