function trim(text){
	return (text || "").replace( /^\s+|\s+$/g, "" );
}

function hasKnownTopDomain(strInput){
	var topDom = g_wellKnownTopDomains.split(',');
	for (var i = 0; i < topDom.length; i++) {
		var regexp = new RegExp("\."+topDom[i]+"$", "i");
		if (strInput.search(regexp) != -1) {
			return true;
		}
	}
	return false;
}

function isEmailVal(str) {
	if(str.search(/^([0-9a-zA-Z]+[-._ ])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])[a-zA-Z]{2,6}$/)!= -1)
		return true;
	else 
		return false;
}
function isDomainVal(str) {
	if(str.search(/^[-0-9a-zA-Z]+[.][a-zA-Z]{2,6}$/)!= -1)
		return true;
	else 
		return false;
}
function isUserNameVal(str) {
	if (str.search(/^([0-9a-zA-Z]+[-._ ])*[0-9a-zA-Z]+$/) != -1)
		return true;
	else 
		return false;
}

function isNameLenGreaterMin(str) {
	var name = str;
	var atInd = str.indexOf('@');
	if (atInd != -1) {
		name = str.substr(0,atInd)
	}
	return name.length >= g_min_name_len;
}
function isNameLenLessMax(str) {
	var name = str;
	var atInd = str.indexOf('@');
	if (atInd != -1) {
		name = str.substr(0,atInd)
	}
	return name.length <= g_max_name_len;
}

function hasGoodInput(str){	
	if (str.indexOf('@') != -1 && isEmailVal(str) ) {
		return true;
	}
	if (isDomainVal(str) && hasKnownTopDomain(str) ){
		return true;
	}
	if (isUserNameVal(str)) {
		return true;	
	}
	
	return false;
}

function hasErrors(str, offsetX, offsetY) {
	if (str.length > g_max_input_len) {	
		showErrors(3, offsetX, offsetY, str);
		return true;
	}
	
	if (!hasGoodInput(str)) {	
		showErrors(0, offsetX, offsetY, str);
		return true;
	}
	
	if (!isNameLenGreaterMin(str)) {	
		showErrors(1, offsetX, offsetY, str);
		return true;
	}
	if (!isNameLenLessMax(str)) {	
		showErrors(2, offsetX, offsetY, str);
		return true;
	}
	
	return false;
}

function showErrors(num, offsetX, offsetY, str) {
	var elem = document.getElementById('errorPaneId');
	
	msgs = [
	js_txt_err1A+"<div>"+js_txt_err1B+"</div><div>"+js_txt_err1C+"</div>",
	js_txt_err2.replace("@min_name_len@", g_min_name_len),
	js_txt_err3.replace("@max_name_len@", g_max_name_len),
	js_txt_err4.replace("@max_input_len@", g_max_input_len)
	];

	msg = msgs[num];	
	elem.style.display = "block";
	elem.style.top =  offsetY  + "px";
	elem.style.left = offsetX + "px";
	var elem = document.getElementById('errorContent');
	elem.innerHTML = msg;
	
	var elem = document.getElementById('banner'); // dumb fix for z-index items in children of sibling that are  pos relative
	if (elem) elem.style.zIndex = 1700;

}

function clossErrorPane() {
	var elem = document.getElementById('errorPaneId');
	elem.style.display = "none";
	var elem = document.getElementById('banner');
	if (elem) elem.style.zIndex = 700;
}
