// cool behavior and effects for form fields

//var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
//var emailPattern = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/;
var emailPattern = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
var passwordPattern = /^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/;
var helpDivID = "loginFloat";
var helptextOpacity = 0;
var helptextInterval = null;

var focusfield = "";
var tabbed = 0;
var lastusername ="";

/* enter keys */ 
function HandleEnterKey(e,script)
{	
	//alert("handle");
    var event = e || window.event;	
	
    if ((event.keycode || event.which)  == 13)
	{	
		//alert("enter");
        eval(script);
		return false;
	}
} 


function hideHelpbox(elementID)
{
	help = $(elementID);
	help.style.display = "none";
}

function hideHelptext()
{
	help = $(helpDivID);
	if(help)
		help.style.display = "none";
}

function showHelpbox(left,top,helptext,elementID)
{		
	//debug
	//alert(helptext);

	makeTransparent(elementID);
	help = $(elementID);
	help.style.left = left + "px";
	help.style.top = top + "px";
	help.style.display = "block";
	//help.style.visibility = "visible";
	help.innerHTML = helptext;
	
	helptextOpacity = 0;
	helptextInterval = setInterval("setOpacity('"+elementID+"');",1);
		
	//alert("here?");
		
	return false;
}

function showHelptext(left,top,helptext)
{		
	//debug
	//alert(helptext);

	makeTransparent(helpDivID);
	help = $(helpDivID);
	help.style.left = left + "px";
	help.style.top = top + "px";
	help.style.display = "block";
	//help.style.visibility = "visible";
	help.innerHTML = helptext;
	
	helptextOpacity = 0;
	helptextInterval = setInterval("setOpacity('"+helpDivID+"');",1);
		
	//alert("here?");
		
	return false;
}

//generic event handlers
function fieldfocus(e,script,helptext)
{
	focusfield = e.id;

	var p = $(e.id).parentNode;
	if(p.className =="FormField")	
		p.className="FormFieldFocus";
		
	e.style.background = "#eeeebb";
		
	makeTransparent(helpDivID);
	help = $(helpDivID);
	help.style.display = "block";
	//help.style.visibility = "visible";
	help.innerHTML = helptext;
	
	helptextOpacity = 0;
	helptextInterval = setInterval("setOpacity('"+helpDivID+"');",1);
		
	return false;
}

function fieldblur(e,script)
{	
	var p = $(e.id).parentNode;
	if(p.className =="FormFieldFocus")	
		p.className="FormField";
		
	e.style.background = "#c7c7c7";
		
	help = $(helpDivID);
	help.style.display = "none";
	//help.style.visibility = "hidden";
		
	return false;
}

function fieldkeypress(e,script)
{
	var classname = "";	
	eval("classname = "+script);
	var p = $(e.id).parentNode;	
	p.className=classname;	
	return false;
}

function FieldKeyUp(e,script,compareElementID)
{				
	if(tabbed ==1)
		return;
		
	var p = $(e.id).parentNode;	
		
	if(!e.value || e.value.length <1)
		p.className ="FormFieldFocus";
	else
	{
		//alert(script+"('"+e.id+"','"+compareElementID+"');");
		if(compareElementID)
			p.className = eval(script+"('"+e.id+"','"+compareElementID+"');");
		else
			p.className = eval(script+"('"+e.id+"');");
	}
}

function ValidateEmail(input,compareElementID)
{		
	var len =0;
	var e = $(input);				
	
	if(e.value != null)
		len = e.value.length;
	
	if(len == 0)
		return "FormFieldFocus";
	
	if(emailPattern.test(e.value))
	{
		if(compareElementID)
		{
			if(e.value.toLowerCase() != $(compareElementID).value.toLowerCase())
			{
				setFormValidMessage('Emails do not match.','red');
				return "FormFieldBad";
			}
			else
			{
				setFormValidMessage('Emails Match','green');
				return "FormFieldGood";
			}
		}
		else
		{
			setFormValidMessage('Email Valid','green');
			return "FormFieldGood";
		}
	}
	else
	{		
		setFormValidMessage('Email Invalid','red');
		return "FormFieldBad";
	}
}

function ValidatePreferredUsername(input)
{
	// fire username validation
	var e = $(input);			
	var invalid = 0;
	
	if(!e.value)
	{
		invalid = 1;			
	}
	else
	{		
		if(e.value == lastusername)
			return $('preferredusernamefield').className;
			
		lastusername = e.value;
	
		if(e.value.trim().length < 4 || e.value.trim().length > 20 )			
			invalid = 1;						
		else if(stringContains(e.value.trim(),"!@#$%^&*()+=[]\\\';,/{}|\":<>?"))		
			invalid =1;		
	}
	
	var emailfield = $("txtEmail");
	if(!emailfield.value)
	{
		setFormValidMessage('Please complete your Email first.','red');
		return "FormFieldBad";
	}
	
	if(invalid == 1)		
	{
		setFormValidMessage('Username Invalid.','red');
		return "FormFieldBad";
	}
	else
	{
		setFormValidMessage('Checking Username...','green');
		
		var postData = new Array();	
		postData["DesiredUsername"] = e.value.trim();
		postData["Email"] = emailfield.value.trim();
				
		doCallbackPost("../ajaxphp/main_ajax.php","CheckUsernameAvailabilitySignup",postData,"");
		return "FormFieldBad";
	}
}

function ValidatePassword(input,compareElementID)
{	
	var len =0;
	var e = $(input);				
	
	if(e.value != null)
		len = e.value.length;
	
	if(len == 0)
		return "FormFieldFocus";
	
	if(e.value.length >= 5 && e.value.length <= 25)
	{
		if(compareElementID)
		{
			if(e.value != $(compareElementID).value)
			{
				setFormValidMessage('Passwords do not match.','red');
				return "FormFieldBad";
			}
			else
			{
				setFormValidMessage('Passwords Match','green');
				return "FormFieldGood";
			}
		}
		else
		{
			setFormValidMessage('Password Valid','green');
			return "FormFieldGood";
		}
	}
	else
	{
		setFormValidMessage('Password Invalid','red');
		return "FormFieldBad";
	}
}

function setHelpboxValidMessage(message,color,elementID)
{
	//alert("set message");
	e = $(elementID);
	//alert(e + " " + message);
	if(e)
	{
		e.innerHTML = message;
		e.style.color = color;
	}
}

function setFormValidMessage(message,color)
{
	//alert("set message");
	e = $("formValidMessage");
	//alert(e + " " + message);
	e.innerHTML = message;
	e.style.color = color;
}

function setOpacity(id)
{
	e = $(id);
	if(helptextOpacity <= 10)
	{
		e.style.opacity = helptextOpacity/10;
		//if(e.style.filter)
		//{
		e.style.filter = 'alpha(opacity=' + helptextOpacity*10 + ')';
		//}
		
		helptextOpacity = helptextOpacity +1;
	}
	else
	{
		window.clearInterval(helptextInterval);
	}
}

function makeTransparent(id)
{
	e = $(id);
	e.style.opacity = 0;
	if(e.style.filter)
	{
		e.style.filter = 'alpha(opacity=' + 0 + ')';
	}
}



