var errorFieldList = new Array();
var defaultColor = "#ffffff";
var inAuth = false;

function validateRegForm(form, action, callback)
{
	document.body.style.cursor = 'wait';
	var formValues = "";

	for (var i=0;i<form.elements.length;i++)
  {
		if (form.elements[i].name)
		{
			if (form.elements[i].type != 'checkbox' || (form.elements[i].type == 'checkbox' && form.elements[i].checked))
			{
				var value = "&" + form.elements[i].name + "=" + escape(form.elements[i].value).replace('\+', '%2B');
				formValues += value;
			}
		}
  }

	new Ajax.Request("" + "/registration/ajax.do", {
		asynchronous: true,
		method: "get",
		parameters: "method=ajax-validate&page=" + action + formValues,
		onSuccess: function(request)
		{
			var doc = request.responseXML.documentElement;
			if(doc.hasChildNodes())
			{
				//Get all filtered elements
				var errors = doc.getElementsByTagName("error");
				var errorList = "";

				//Reset any labels that were in error on previous call back to default color
				for (i=0; i<errorFieldList.length; i++)
				{
					errorFieldList[i].style.color = defaultColor;
					errorFieldList[i].className = '';
				}

				errorFieldList = new Array();

				//Loop through each error
				for (i=0; i<=errors.length-1; i++)
				{
					var error = errors[i];
					for (j=0; j<error.childNodes.length; j++)
					{

						var errorElement = error.childNodes[j];
						var errorField;

						if (errorElement.nodeName == "field")
						{
							errorField = errorElement.childNodes[0].nodeValue;
						}

						else if (errorElement.nodeName == "message")
						{
							errorList += errorElement.childNodes[0].nodeValue + "\n";
						}
					}

					if (document.getElementById(errorField + "Lbl") != null)
					{
						defaultColor = document.getElementById(errorField + "Lbl").style.color;
						document.getElementById(errorField + "Lbl").className = 'errorLbl';
						errorFieldList.push(document.getElementById(errorField + "Lbl"));
					}
				}

				alert(errorList);
				return false;
			}

			if (callback == null)
				form.submit();
			else
			{
				authenticate(form, callback);
			}
		},
		onFailure: function(request)
		{
				//Something bad happened, let server side validation take over
				return true;
		},
		onComplete: function(request)
		{
				if (!inAuth)
					document.body.style.cursor = 'default'
		}

	});

	return false;
}

function ajaxLogin(form, callback)
{
	var email = "";
	var password = "";

	for (var i=0;i<form.elements.length;i++)
  {
		if (form.elements[i].name && (form.elements[i].name == 'email' || form.elements[i].name == 'popupEmail'))
		{
			 email = form.elements[i].value;
		}

		else if (form.elements[i].name && (form.elements[i].name == 'password' || form.elements[i].name == 'popupPassword'))
		{
			 password = form.elements[i].value;
		}

  }

		var myForm = document.createElement("form");
			myForm.method="post" ;
			myForm.action = "/mdmLogin/login.do" ;
			var _email = document.createElement("input") ;
			_email.setAttribute("name", "email") ;
			_email.setAttribute("id","email");
			_email.setAttribute("value", email);
			var _password = document.createElement("input") ;
			_password.setAttribute("name", "password") ;
			_password.setAttribute("id","password");
			_password.setAttribute("value", password);
			myForm.appendChild(_email);
			myForm.appendChild(_password);
			document.body.appendChild(myForm) ;

	validateRegForm(myForm, "authenticate", callback);
	return false;
}


function authenticate (form, callback)
{
	inAuth = true;
	document.body.style.cursor = 'wait';
	var email = "";
	var password = "";

	for (var i=0;i<form.elements.length;i++)
  {
		if (form.elements[i].name && (form.elements[i].name == 'email' || form.elements[i].name == 'popupEmail'))
		{
			 email = form.elements[i].value;
		}

		else if (form.elements[i].name && (form.elements[i].name == 'password' || form.elements[i].name == 'popupPassword'))
		{
			 password = form.elements[i].value;
		}

  }

	new Ajax.Request("" + "/registration/ajax.do", {
		asynchronous: true,
		method: "get",
		parameters: "method=&page=ajax-login&email=" + email + "&password=" + password,
		onSuccess: function(request)
		{
			var doc = request.responseXML.documentElement;
			if(doc.hasChildNodes())
			{
				var incomplete = doc.getElementsByTagName("incomplete");
				if (incomplete != null && incomplete.length > 0)
				{
						var myForm = document.createElement("form");
							myForm.method="post" ;
							myForm.action = "/profile/authenticate.do" ;
							var _email = document.createElement("input") ;
							_email.setAttribute("name", "email") ;
							_email.setAttribute("id","email");
							_email.setAttribute("value", email);
							var _password = document.createElement("input") ;
							_password.setAttribute("name", "password") ;
							_password.setAttribute("id","password");
							_password.setAttribute("value", password);
							myForm.appendChild(_email);
							myForm.appendChild(_password);
							document.body.appendChild(myForm) ;

							myForm.submit() ;

							return false;
				}

				//Get all filtered elements
				var errors = doc.getElementsByTagName("error");
				var errorList = "";

				//Loop through each error
				for (i=0; i<=errors.length-1; i++)
				{
					var error = errors[i];
					for (j=0; j<error.childNodes.length; j++)
					{

						var errorElement = error.childNodes[j];
						var errorField;

						if (errorElement.nodeName == "field")
						{
							errorField = errorElement.childNodes[0].nodeValue;
						}

						else if (errorElement.nodeName == "message")
						{
							errorList += errorElement.childNodes[0].nodeValue + "\n";
						}
					}
				}

				if (errorList != '')
					alert(errorList);
				else
					eval(callback);

				return false;
			}

			form.submit();
		},
		onFailure: function(request)
		{
				//Something bad happened, let server side validation take over
				return false;
		},
		onComplete: function(request)
		{
				inAuth=false;
				document.body.style.cursor = 'default'
		}

	});
}
function showImage(imgSrc)
{
	var lrgImg = document.getElementById('lrgImg');
	if(lrgImg != undefined)
	{
		lrgImg.src=imgSrc;
		scroll(0,0);
		lrgImg.style.display='inline';
	}
}

function hideImage()
{
	var lrgImg = document.getElementById('lrgImg');
	if(lrgImg != undefined)
	{
		lrgImg.src='/images/spacer.gif';
		lrgImg.style.display='none';
	}
}