 // Static Global Variables
var requestURL = "/app/interface/userlookup.p";
var pNewUserName = "newusername";
var usernamevalid = false; 
var wasBlurred = false;
var pUsername = formfieldroot + "username_value"; // username field id used for username suggestion tool



function checkUsername(pBlur){

	if (typeof(pBlur) != "undefined") {
		wasBlurred = true;
	}
	
	if (usernamevalid == true && wasBlurred == false) {
		wasBlurred = false; // reset blur
		usernamevalid = false; // reset check
		document.forms[0].submit();
		return true;
	}
	
	if (usernamevalid == true && wasBlurred == true) {
		wasBlurred = false; // reset blur
		usernamevalid = false; // reset check
		return false;
	}
	 
	//var valUsername = new RegExp("[^[@a-zA-Z0-9_.-]{1,}");
	/* this is postponed until better understanding of consequences
	var valUsername = /[^0-9a-zA-Z.-_@\u00C1\u00E1\u00D1\u00F1\u00C9\u00E9\u00CD\u00ED\u00D3\u00F3\u00DA\u00FA\u00DC\u00FC]+/g;		
	*/
	var valUsername = /[^0-9a-z.-_@]+/gi;
	//	alert('result= '+ document.getElementById(pUsername).value.match(valUsername));
	
	if (document.getElementById(pUsername).value.match(valUsername) != null) {
		alert("Please only use letters, numbers, periods, underscores and hyphens for your username.");
		document.getElementById(pUsername).focus();
		return false;
	}
	if (wasBlurred == false) {
		if (document.getElementById(pUsername).value == "") {
      if (typeof(getLang) == 'function') {
        alert(getLang('Please enter a username before continuing'));
      } else {
        alert('Please enter a username before continuing');
      }
			document.getElementById(pUsername).focus();
			return false;
		}
		
		if (typeof(pModifierLabel) != "undefined") {
			if (document.getElementById(pModifierId).value == "") {
				alert("Please enter a " + pModifierLabel + " before continuing");
				document.getElementById(pModifierId).focus();
				return false;
			}
		}
	}
	
	//See if the user check a radio button suggestion;
	if (get_radio_value() != -1 && document.getElementById("overlay").style.display == "block") {
		//alert("check radio buttons")
		var rVal = get_radio_value();
		switch (rVal) {
			case "1":
				document.getElementById(pUsername).value = document.getElementById("pA").innerHTML;
				break;
			case "2":
				document.getElementById(pUsername).value = document.getElementById("pB").innerHTML;
				break;
			case "3":
				document.getElementById(pUsername).value = document.getElementById("pC").innerHTML;
				break;
			case "4":
				document.getElementById(pUsername).value = document.getElementById("pD").innerHTML;
				break;
			default:
				break;
		}

		hideBox();
		checkUsername();
	}
	else 
	{
		//alert("attempt XML call")
		var urlCity = "";
		if (typeof(pModifierId) != "undefined"){
			urlCity = encodeURI(String(document.getElementById(pModifierId).value));
		}
		
		var urlUsername = encodeURI(String(document.getElementById(pUsername).value));
		var urlNewUsername = encodeURI(String(document.getElementById(pNewUserName).value));
		
		if (document.getElementById(pNewUserName).value == "") {
			pURL = requestURL + "?username=" + urlUsername + "&city=" + urlCity;
		}
		else {
			pURL = requestURL + "?username=" + urlNewUsername + "&city=" + urlCity;
			document.getElementById(pUsername).value = document.getElementById(pNewUserName).value;
		}
		document.getElementById(pNewUserName).value = "";
		
		if (document.getElementById(pUsername).value != "") {
			setTimeout("ajaxpage(pURL)", 500);
		}
	
	}
	return false;
}

function ajaxpage(pURL){
	var page_request = false
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
		try{
			page_request = new ActiveXObject("Microsoft.XMLHTTP")
		}
		catch (e){}
		}
	}
	else
		return false
	
	page_request.onreadystatechange=function(){
		loadpage(page_request)
	}

	page_request.open('GET', pURL, true)
	page_request.send(null)
}

function loadpage(page_request){
	if (page_request.readyState == 4 && (page_request.status == 200 || window.location.href.indexOf("http") == -1)) {
	//alert(page_request.responseText);
		if (eval(page_request.responseText) == true) {
			usernamevalid = true; // Response in that username is valid
			checkUsername();
		}
	}
}
	
function validateUsername(pA,pB,pC,pD) {
	
	//alert("returned the following: " + pA + " - " + pB + " - " + pC + " - " + pD)
	switch(pA)
	{
	case "good":
		//		alert("good")
		document.getElementById('textWarning').style.display = "none";
		hideBox();
		return true;
	  break;    
	case "bad":
	//	alert("bad")
	  	showBox();
		document.getElementById('nameinuse').style.display = "none"; 
		document.getElementById('badname').style.display = "block"; 
		document.getElementById('textWarningContent').innerHTML = "Please enter a valid username.";
		document.getElementById('textWarning').style.visibility = "visible";
		return false;
	  break;
	default:
	  	if (pA != "" && pB != "" && pC != "" && pD != "") 
			//			alert("fill results")
			if (document.getElementById("box").style.display == "block") { // show that custom name is in use
			document.getElementById('textWarning').style.display = "block";
				document.getElementById('textWarningContent').innerHTML = "Username is already in use.  Please try another username.";
			}
			showBox();
			document.getElementById('nameinuse').style.display = "block"; 
			document.getElementById('badname').style.display = "none"; 
			$('.rowNormal td').css('display', '');
			if (pA) document.getElementById("pA").innerHTML = String(pA);
			else $('#highlight td').css('display','none');
			if (pB) document.getElementById("pB").innerHTML = String(pB);
			else $('#highlight2 td').css('display','none');
			if (pC) document.getElementById("pC").innerHTML = String(pC);
			else $('#highlight3 td').css('display','none');
			if (pD) document.getElementById("pD").innerHTML = String(pD);
			else $('#highlight4 td').css('display','none');
			return false;
	  break;
	}
}

function get_radio_value()
{
rad_val = -1;
for (var i=0; i < document.getElementById("usernameform").selectName.length; i++)
   {
   if (document.getElementById("usernameform").selectName[i].checked)
      {
      var rad_val = document.getElementById("usernameform").selectName[i].value;
      }
   }
   
   return rad_val;
}

function showBox(){
    document.getElementById("overlay").style.display = "block";
    center('box');
	document.getElementById("newusername").focus();
    return false;
}

function hideBox(){
    document.getElementById("box").style.display = "none";
    document.getElementById("overlay").style.display = "none";
    return false;
}

function center(element){
    try{
        element = document.getElementById(element);
    }catch(e){
        return;
    }

    var my_width  = 0;
    var my_height = 0;

    if ( typeof( window.innerWidth ) == 'number' ){
        my_width  = window.innerWidth;
        my_height = window.innerHeight;
    }else if ( document.documentElement && 
             ( document.documentElement.clientWidth ||
               document.documentElement.clientHeight ) ){
        my_width  = document.documentElement.clientWidth;
        my_height = document.documentElement.clientHeight;
    }
    else if ( document.body && 
            ( document.body.clientWidth || document.body.clientHeight ) ){
        my_width  = document.body.clientWidth;
        my_height = document.body.clientHeight;
    }

    element.style.position = 'absolute';
    element.style.zIndex   = 99;

    var scrollY = 0;

    if ( document.documentElement && document.documentElement.scrollTop ){
        scrollY = document.documentElement.scrollTop;
    }else if ( document.body && document.body.scrollTop ){
        scrollY = document.body.scrollTop;
    }else if ( window.pageYOffset ){
        scrollY = window.pageYOffset;
    }else if ( window.scrollY ){
        scrollY = window.scrollY;
    }

	element.style.visibility  = 'hidden';
	element.style.display  = 'block';

    var setX = ( my_width  - element.offsetWidth  ) / 2;
    var setY = ( my_height - element.offsetHeight ) / 2 + scrollY;
	
	element.style.display  = 'none';
	element.style.visibility  = 'visible';

    setX = ( setX < 0 ) ? 0 : setX;
    setY = ( setY < 0 ) ? 0 : setY;

    element.style.left = setX + "px";
    element.style.top  = setY + "px";

    element.style.display  = 'block';
}

function checkCustom()
{
  $('#' + pUsername).focus();
  checkUsername();
}

$(document).ready(function () {
  $('.rowNormal').hover(
    function() {
      $(this).css('background-image', 'url(https://static.ashleymadison.com/site/images/public/modal/bg_usernames_highlight.jpg)');
      $(this).find('.checkmark').css('display','block');
    },
    function () {
      $(this).css('background-image', '');
      $(this).find('.checkmark').css('display','none');
    })
  .click(
    function () {
      $(this).find('input[type=radio]').attr('selected', 'selected');
      $('#newusername').val($(this).find('.suggestedName').text());
      $('#' + pUsername).val($(this).find('.suggestedName').text()).focus();
      checkUsername();
    });
});
