/**
 * Get usernames when user types entry in username field. 
 * Username is unique and must therefore be checked in database so two users won't end up with the same.
 *
 * @entry: String of text typed in by user.
 * @rand: Random number to avoid cache in browser.
 * @url: URL to use in callback function.
 * @callback: Name of the callback function.
 */

function hent_brugere(entry) {
	if (entry.length == 0) {  //if user deletes entry again.
		document.getElementById("bn_info").innerHTML = "";
	}
	else { 
		rand = Math.floor(Math.random()*1000000);
		url = "php_scripts/hent_brugere.php?indtastning2="+entry+"&random="+rand;
    callback = vis_brugere;
		useXMLHttpRequest(url, callback, "GET", null);
	}
}

/**
 * Show text according to the preoccupation of username - if available: dye green, if not: dye red.
 * When call to server is done, readyState equals 4.
 * When call not done (rs = 1-3), do nothing.
 * If call is ok, request status equals 200.
 *
 * @request: XHR object.
 */
 
function vis_brugere() {
	if (request.readyState == 4) {
		if (request.status == 200) {
			brugere = request.responseText;
			if (brugere == "") { //if username available
        document.getElementById("bn").style.color = 'green';
        document.getElementById("bn").innerHTML = "Brugernavnet er ledigt.";
			}
			
			else {  //if username occupied
        document.getElementById("bn").style.color = 'red';
				document.getElementById("bn").innerHTML = "Brugernavnet \"" + brugere + "\" er taget. Vælg venligst et andet.";
			}
		}

		else {
			document.getElementById("brugere").innerHTML = "Fejl i valg af brugernavn. Opdatér venligst din browser. Ved vedvarende fejl kontakt snaps@simonkvamm.dk.";
		}
	}

	else {
	}

}

/**
 * Check username for unwanted symbols.
 * 
 * @bn: Username
 * @ok: Array of wanted letters and symbols.
 * @bool: A boolean variable for check in the end. If false, username is not ok.
 * @ch: A char in username. 
 *  
 */

function tjek_brugernavn(bn2) {
	var bn = bn2.value.toLowerCase();  //no difference between capital and none-capital letters.
  //reset different div-elements with info for the user:
	document.getElementById("bn_info").innerHTML = "";  //reset error text
	document.getElementById("brugernavn").style.backgroundColor = "white";  //reset background color
	document.getElementById("bn").innerHTML = ""; //reset info on available/not available username

	var ok = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","_");  

	var bool = true;  //initiate boolean
	
	if (bn == "") {  //if username is empty
		bool = false;
	}
	else {  //if not, check it
		for (i = 0; i < bn.length; i++) {  //for every char

		  ch = bn.substring(i, i+1); //one char at a time

			//indexOf is not working in IE - this makes IE accept it. 
      //Script taken from http://www.pearweb.com/javascript/array-index-of.html
			if(!Array.indexOf){
			  Array.prototype.indexOf = function(obj){
			   for(var i=0; i<this.length; i++){
			    if(this[i]==obj){
			     return i;
			    }
			   }
			   return -1;
			  }
			}

		  if(ok.indexOf(ch) == -1) {  //if current char does not exist in ok array, indexOf returns -1
				bool = false; //and boolean-variable is set to false
			}
		}
	}

  //when all chars have been checked, check boolean variable - 
  //if false, username not allowed
  //and show warning
	if (bool == false) {  
		document.getElementById("bn_info").innerHTML = "<div style='color:red'>Brugernavnet kan bestå af bogstaverne a-z, tal fra 0-9 og underscore: \"_\"</div>";
		return false;
	}

  //otherwise, check for doubles in database.	
	else {
		hent_brugere(bn);
		return true;
	}


}

/**
 * Check that users two passwords are alike
 */ 
function tjek_password() {
	document.getElementById("pw_info").innerHTML = "";
	p = document.getElementById("password").value;
	p2 = document.getElementById("password_repeat").value;
	if (p != p2) {
	  document.getElementById("pw_info").innerHTML = "<div style='color:red'>De to passwords skal være ens.</div>";
		return false;
	}
	else {
	  document.getElementById("pw_info").innerHTML = "<div style='color:green'>De to passwords er ens.</div>";
		return true;
	}
}

/**
 * Check user inputs for user errors on submit.
 */ 
function tjek_opret_bruger() {
	//tjek om der er indtastet brugernavn
	var bruger = document.getElementById("brugernavn");
	if (!tjek_brugernavn(bruger)) {
		bruger.style.backgroundColor = "yellow";
		bruger.focus();
		return false;
	}

	//tjek om der er indtastet password
	else if (document.getElementById("password").value == "") {
		alert("Du mangler password");
		return false;
	}

	//tjek om passwords er ens
	else if (!tjek_password()) {
		alert("De to passwords er ikke ens");
	  document.getElementById("password").value = "";
	  document.getElementById("password_repeat").value = "";
		document.getElementById("password").style.backgroundColor = "yellow";
	  document.getElementById("password").focus();
		return false;
	}
	//tjek om der er indtastet email
	else if (document.getElementById("email").value == "") {
		alert("Du mangler email");
		return false;
	}

	else
		return true;
}

/**
 * Show information regarding simonkvamm.dk-email.
 */  
function info_skemail() {
	document.getElementById("info_skemail").innerHTML = "Din simonkvamm.dk-email bliver <i>dit-brugernavn</i>@simonkvamm.dk. Emailadressen bruges kun til videresendelse - du får altså ingen mailbox/inbox, men får derimod alle emails som er sendt til simonkvamm.dk-adressen, videresendt til din ovenfor indtastede emailadresse. Emails sendt til simonkvamm.dk-adressen, gemmes <i>ingen steder</i> på simonkvamm.dk, og læses eller bruges <i>ikke</i> af hverken aktører på simonkvamm.dk eller af tredje parter. Simonkvamm.dk-emailen bliver oprettet manuelt, og der kan derfor gå lidt tid inden den virker. Vent på emailbekræftelse inden du tager adressen i brug. Snup En Snaps kan til hver en tid slette en oprettet simonkvamm.dk-emailadresse hvis der er mistanke om misbrug.";
	document.getElementById("info_skemail").style.visibility = 'visible';
}

