/*
	-Please do not remove this header-
	
	Created By: 	Danny Tucker
	Date Started: 	11/24/06
	Last Update:	11/25/2006
	Version:		.1
	
	Copyright:		2006
	License:		General Public License (GPL)
*/


/*
____________________________________________________________________________________________________________________
												Internal Functions
____________________________________________________________________________________________________________________
*/
var javascript_errors 	= new Array();
var form_errors 		= new Array();

function setJavascriptError(e_function, e_message)
{
	javascript_errors[javascript_errors.length] = "\nFunction: " + e_function + "\n" + e_message;
}

function showJavascriptErrors()
{
	var error_message = '';
	var error_length = javascript_errors.length;
	
	for(var x = 0; x < error_length; x++)
	{
		error_message += javascript_errors[x];
	}
	
	if(error_message != "")
	{
		alert("Javascript Error Messages:\n" + error_message);
	}
}

function setFormError(name, msg)
{
	if(form_errors[name])
	{
		var new_index = form_errors[name].length;
	} else
	{
		form_errors[name] = new Array();
		var new_index = 0;
	}

	form_errors[name]['name'] = name;
	form_errors[name][new_index] = msg;
	
}
/*
____________________________________________________________________________________________________________________
												Reset / Clear Previous Errors
____________________________________________________________________________________________________________________
*/
// Clear out old error messages
function clearPreviousErrors()
{
	var error_block_data;
	if(error_block.length > 0)
	{
		for(var error_block_index in error_block)
		{
			error_block_data = document.getElementById(error_block[error_block_index] + "_form_error");
			if(error_block_data && error_block_data.innerHTML != "")
			{
				error_block_data.innerHTML = '';
			}
		}
	}
}

// Reset error data
function resetValidation()
{
	javascript_errors 	= new Array();
	form_errors 		= new Array();
	pass 				= new Array();
}



/*
____________________________________________________________________________________________________________________
												Check Validation Returns
____________________________________________________________________________________________________________________
*/
function checkPass()
{
	
	// Check to see if they passed all validation
	for(var x = 0; x < pass.length; x++)
	{
		// Show all errors if they failed at least one validation check
		if(!pass[x])
		{
			
			if(javascript_error_display_popup)
			{
				showAllErrors();
			}
			
			if(javascript_error_display_inline)
			{
				inlineError();
			}
			
			if(javascript_debug)
			{
				showJavascriptErrors();
			}
			
			resetValidation();
			
			return false;
		}
	}
	
	if(javascript_debug)
	{
		showJavascriptErrors();
	}
	
	resetValidation();
	
	return true;
}


/*
____________________________________________________________________________________________________________________
												Error Presentation Functions
____________________________________________________________________________________________________________________
*/

function showAllErrors()
{
	var error_message = '';
	for(var form_error_key in form_errors)
	{
		for(var i = 0; i < form_errors[form_error_key].length; i++)
		{
			//error_message += "\n"+form_errors[form_error_key]['name']+"\n"+form_errors[form_error_key][i];
			error_message += "\n"+form_errors[form_error_key][i];
		}
	}
	alert(error_message.replace(/\&nbsp;/ig,' '));
}

function inlineError()
{
	var error_message = '';
	for(var form_error_key in form_errors)
	{
		error_message = '';
		
		var error_block = document.getElementById(form_error_key + "_form_error");
		
		for(var i = 0; i < form_errors[form_error_key].length; i++)
		{
			//error_message += "\n"+form_errors[form_error_key]['name']+"\n"+form_errors[form_error_key][i];
			error_message += "\n\t\t<div>"+form_errors[form_error_key][i]+"</div>";	
		}
		
		if(error_block)
		{
			error_block.innerHTML = "<"+javascript_wrap_error+" class=\"javascript_error\">" + error_message + "</"+javascript_wrap_error+">";
		} else
		{
			setJavascriptError("inlineError","Error wrapper not found : '"+form_errors[form_error_key]['name']+"'");
		}
	}
}

/*
____________________________________________________________________________________________________________________
												Validation Functions
____________________________________________________________________________________________________________________
*/

function formRequire(id, name, msg)
{
	
	var elements = document.getElementsByName(name);
	if(name && elements)
	{
		for(var x = 0; x < elements.length; x++)
		{
			// Radio Input
			if(elements[x].type == 'radio')
			{
				// preform test
				if(elements[x].checked)
				{
					return true;
				}
			} else
			{
				// preform test
				if(elements[x].value != "")
				{
					return true;
				}
			}
		}
	} else
	{
		setJavascriptError("form_require","Name not found : '"+name+"'");
	}
	
	setFormError(name, msg);
	return false;
}


function formCharLength(id, name, req_length, operator, msg)
{

	var elements = document.getElementsByName(name);
	if(name && elements)
	{
		for(var x = 0; x < elements.length; x++)
		{
			if(elements[x].value != "")
			{
				// Preform test
				if(eval(elements[x].value.length+" "+operator+" "+req_length))
				{
					return true;
				}
			} else
			{
			setFormError(name, msg);	
			return false;	
			}
		}
	} else
	{
		setJavascriptError("formCharLength","Name not found : '"+name+"'");
	}
	
	
	setFormError(name, msg);
	return false;
}


function formMatch(id, name, name2, msg)
{

	var elements = document.getElementsByName(name);
	var elements2 = document.getElementsByName(name2);
	
	if(name && name2 && elements && elements2)
	{
		var element2 = elements2[0];

		for(var x = 0; x < elements.length; x++)
		{
			// Preform test
			if(elements[x].value == element2.value)
			{
				return true;
			}
		}
	} else
	{
		setJavascriptError("formMatch","Name or Match Name not found : '["+name+"]["+name2+"]'");
	}
	
	
	setFormError(name, msg);
	return false;
}


function formRegex(id, name, pattern, case_sensitive, msg)
{
	var elements = document.getElementsByName(name);

	if(name && elements)
	{
		case_sensitive = (case_sensitive == "i") ? "i" : "";
	 	
		// Create the regex pattern
		var re_pattern = eval("/"+pattern+"/"+case_sensitive);
		//alert(re_pattern);
		for(var x = 0; x < elements.length; x++)
		{
			if(elements[x].value != "")
			{
				// Do regular expression test
				if(re_pattern.test(elements[x].value))
				{
					return true;
				}
			} else
			{
				return true;	
			}
		}
	} else
	{
		setJavascriptError("formRegex","Name not found : '"+name+"'");
	}
	
	
	setFormError(name, msg);
	return false;
}