//var suggestionHeaderContent = "<div class='floatLeft'><strong>Here are some suggestions...</strong><div>";
//var suggestionCloseButton = "<div class='floatRight smallFont'>close</div>";
var scrNameSuggestion;

function validateScreenName(elementValue)
{	
	
	$("#span-UserName").addClass("hidden-settings");
	var iChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.-";
	//var iChars = "!@#$%^&*()+=[]\\\';,/{}|\":<>?_ ";
	var boolReturn = false;
	
	//if there is no value of course
	if(elementValue.length<=0)
	{
		$("#span-UserName").removeClass("hidden-settings");
		//$("#span-UserName").css("color", "#E5D779");
		$("#span-UserName").addClass("redBG");
		$("#span-UserName").html("* Please type in your desired screen name / Choose an alternative from the list when it's already taken");
		return false;
	}
	
	//if the username has spaces 
	if($("#txtScreenName").val().indexOf(" ") != -1)
	{
		$("#span-UserName").removeClass("hidden-settings");
		//$("#span-UserName").css("color", "#E5D779");
		$("#span-UserName").addClass("redBG");
		$("#span-UserName").html("* Screen name cannot contain spaces.");
		return false;
	}
	
	if(elementValue.length < 6)
	{
		$("#span-UserName").removeClass("hidden-settings");
		//$("#span-UserName").css("color", "#E5D779");
		$("#span-UserName").addClass("redBG");
		$("#span-UserName").html("* Your screen name must be at least six characters long.");
		return false;
	}
	
	if(elementValue.length > 50)
	{
		$("#span-UserName").removeClass("hidden-settings");
		//$("#span-UserName").css("color", "#E5D779");
		$("#span-UserName").addClass("redBG");
		$("#span-UserName").html("* Your screen name must be less than 50 characters long.");
		return false;
	}
	
	for(var i=0; i<elementValue.length; i++)
	{
		//if(iChars.indexOf(elementValue.charAt(i)) != -1)
		if(iChars.indexOf(elementValue.charAt(i)) == -1)
		{
			$("#span-UserName").removeClass("hidden-settings");
			//$("#span-UserName").css("color", "#E5D779");
			//$("#span-UserName").html("Only letters, hyphens and dots(.) are allowed.");
			$("#span-UserName").addClass("redBG");
			$("#span-UserName").html("* Only letters, hyphens and dots(.) are allowed. Support for other character sets are in the works. Hyphens or dots cannot appear on either ends.");
			return false;
		}
	}
	
	//extended validations; first character should not have a certain record.
	if(elementValue.substr(0,1) == "-" || elementValue.substr(0,1) == ".")
	{	
		$("#span-UserName").removeClass("hidden-settings");
		//$("#span-UserName").css("color", "#E5D779");
		$("#span-UserName").addClass("redBG");
		$("#span-UserName").html("* Only letters, hyphens and dots(.) are allowed. Support for other character sets are in the works. Hyphens or dots cannot appear on either ends.");
		return false;
	}
	
	if(elementValue.substr(elementValue.length-1,1) == "-" || elementValue.substr(elementValue.length-1,1) == ".")
	{
		$("#span-UserName").removeClass("hidden-settings");
		//$("#span-UserName").css("color", "#E5D779");
		$("#span-UserName").addClass("redBG");
		
		$("#span-UserName").html("* Only letters, hyphens and dots(.) are allowed. Support for other character sets are in the works. Hyphens or dots cannot appear on either ends.");
		return false;
	}
	
	//check to the db if the same screen name exists
	$("#span-preloader-screenName").html("<img src='images/preloader.gif' />");
	
	jQuery.ajax({
		url: "validate.php",
		type: "post",
		async: false,
		data: "form_name=UserName&data="+elementValue,
		dataType: "json",
		success: function (data) {
			$("#span-preloader-screenName").html("");
		
			if(data.num_rows != 0) // no duplicate user
			{
				$("#span-UserName").removeClass("hidden-settings");
				//$("#span-UserName").css("color", "#E5D779");
				$("#span-UserName").addClass("redBG");
		
				$("#span-UserName").html("* Screen name is taken");
				
				boolReturn = false;
			}
			else //there's a duplicate item
			{
				boolReturn = true;
			}
		} 
	});
	
	//assuming that all validations passed; we will also clear the error problems
	//$("#span-UserName").addClass("hidden-settings");
	
	return boolReturn;
}

//suggestion functions start
function suggestDisplayName()
{	
	//firstly, split the full name into fname and last names
	var arrNames = $("#txtFName").val().toLowerCase().split(" ");
	
	var fname = arrNames[0];
	
	if(arrNames.length > 0)
		var lname = arrNames[arrNames.length-1];
	else
		var lname = $('#txtFName').val();
		
	//var fname = $("#txtFName").val().toLowerCase();
	//var lname = $("#txtLName").val().toLowerCase();
	
	fname=fname.replace(/^\s+|\s+$/g, '');
	fname=fname.replace(/\s+/g,' ');
	
	lname=lname.replace(/^\s+|\s+$/g, '');
	lname=lname.replace(/\s+/g,' ');
	
	if($("#txtEmail").val() != "")
	{
		var email = $("#txtEmail").val().split("@");
	}

	
	//if(fname != "" && lname != "" && emailValidated == true) //performs checking only if all the records were validated.
	if(!invalidFNameFlag && !invalidLNameFlag && emailValidated == true) //performs checking only if all the records were validated.
	{
		$("#span-preloader-screenName").html("<img src='images/preloader.gif' />");
		//combination of names will only be performed if the fname and lname is present
		if(fname != "" && lname != "")
		{							 
			//convert the double names to dot(.)
			
			//LNAMEFNAME; - ; .
			scrNameSuggestion[0] = lname.replace(/\s+/g, ".") + fname.replace(/\s+/g, ".");
			scrNameSuggestion[1] = lname.replace(/\s+/g, ".") + "." + fname.replace(/\s+/g, ".");
			scrNameSuggestion[2] = lname.replace(/\s+/g, "-") + "-" + fname.replace(/\s+/g, "-");
			
			//FNAMELNAME; - ; .
			scrNameSuggestion[3] = fname.replace(/\s+/g, ".") + lname.replace(/\s+/g, ".");
			scrNameSuggestion[4] = fname.replace(/\s+/g, ".") + "." + lname.replace(/\s+/g, ".");
			scrNameSuggestion[5] = fname.replace(/\s+/g, "-") + "-" + lname.replace(/\s+/g, "-");
			
			//FLNAME; - ; .
			scrNameSuggestion[6] = fname.substring(0,1) + lname.replace(/\s+/g, ".");
			scrNameSuggestion[7] = fname.substring(0,1) + "." + lname.replace(/\s+/g, ".");
			scrNameSuggestion[8] = fname.substring(0,1) + "-" + lname.replace(/\s+/g, "-");
			
			//FNAMEL; - ; .
			scrNameSuggestion[9] =  fname.replace(/\s+/g, ".") + lname.substring(0,1);
			scrNameSuggestion[10] = fname.replace(/\s+/g, ".") + "." + lname.substring(0,1);
			scrNameSuggestion[11] = fname.replace(/\s+/g, "-") + "-" + lname.substring(0,1);
			
			//LNAMEF; - ; .
			scrNameSuggestion[12] = lname.replace(/\s+/g, ".") + fname.substring(0,1);
			scrNameSuggestion[13] = lname.replace(/\s+/g, ".") + "." + fname.substring(0,1);
			scrNameSuggestion[14] = lname.replace(/\s+/g, "-") + "-" + fname.substring(0,1);
			
			//LFNAME; - ; .
			scrNameSuggestion[15] = lname.substring(0,1) + fname.replace(/\s+/g, ".");
			scrNameSuggestion[16] = lname.substring(0,1) + "." + fname.replace(/\s+/g, ".");
			scrNameSuggestion[17] = lname.substring(0,1) + "-" + fname.replace(/\s+/g, "-");
			
			//EMAIL
			scrNameSuggestion[18] = email[0] + email[1];
			
			//pad number if the combination does not contain 6 characters
			for(i=0; i< scrNameSuggestion.length; i++)
			{
				if(scrNameSuggestion[i].length < 6)
				{
					while(scrNameSuggestion[i].length < 6)
					{
						scrNameSuggestion[i] = scrNameSuggestion[i] + "0" + i;
					}
				}
			}
			
			//AFTER FORMULATING THE SUGGESTION COMBINATION, CHECK IT TO THE DATABASE
			jQuery.ajax({
				url: "validate.php",
				type: "post",
				dataType: "json",
				data: "method=validate_suggest&data=" + scrNameSuggestion,
				success: function(data)	{
					
					if(data.UserName != "undefined")
					{
						for(i=0;i<data.UserName.length;i++)
						{
							for(j=0;j<scrNameSuggestion.length;j++)
							{								
								if(data.UserName[i].toLowerCase() == scrNameSuggestion[j])
								{
									//remove the match
									scrNameSuggestion.splice(j,1);
								}
							}
						}
					}
					
					//sort the array
					scrNameSuggestion.sort(function() {return 0.5 - Math.random()})
					
					resetCounterFlag = true; //reset the current list suggestion
					generateSuggestionList();
				}
			});
		}
	}
}
//suggestion functions end

function generateSuggestionList()
{
	//load image
	var counter = 0;
	if(resetCounterFlag)
	{
		batch = 1;
		counter = 0;
		resetCounterFlag = false;
	}
	
	var limit = 4 * batch; //batch is 1 by default
	
	if(batch > 1 && limit < scrNameSuggestion.length)
	{
		counter = limit - 4;
		resetCounterFlag = false;
	}
	else if(limit > scrNameSuggestion.length)
	{
		limit = scrNameSuggestion.length;
		counter = (4 * (batch - 1));
		resetCounterFlag = true;
	}
	
	suggestionList = ""; //clear the suggestion list
	
	for(i=counter;i<limit; i++)
	{
		suggestionList += "<a href='#' class='link_suggestion'>"+ scrNameSuggestion[i]+"</a><br />";
				
		suggestionHeaderContents = '<table width="100%" class="smallerFont"><tr><td><strong>Here are some suggestions...</td><td align="right"><a href="#" id="suggestionClose">close</a></td></tr></table>'; 
		$("#validate-div").html(suggestionHeaderContents + suggestionList);
		$("#validate-div").append("<div id='div-more-results'><a id='lnk-more' href='#'>more suggestions...</a></div>");
	}
	
	$("#span-preloader-screenName").html("");
	
	$("#validate-div").removeClass("hidden-settings");
	$("#validate-div").addClass("visible-settings");
}
