/**** Form Functions ****/
function FormEffects()
{
	if(window.bjs_debugger_flag != undefined)
		this.debuggr = true;
		
	// Ex: debugger call
	// ob_for_eff.AddDebug("debug message here")

	this.form_name_id = document.getElementById("page_form");
	this.form_inputs = this.form_name_id.getElementsByTagName("INPUT");
	this.form_textareas = this.form_name_id.getElementsByTagName("TEXTAREA");
	this.form_selects = this.form_name_id.getElementsByTagName("SELECT");
	this.form_labels = this.form_name_id.getElementsByTagName("LABEL");

	this.required_field_class = "field_required";
	this.copy_fields_class = "copy_field";
	this.check_fields_class = "brbn_chk_all";
	this.clear_field_class ="field_clear";
	
	this.value_color = "#000000";
	this.required_color = "red";
	this.default_required_color = "#C0C0C0";
	
	this.required_fields = new Array();
	this.required_fields_special = new Array();
	this.submit_buttons = new Array();

	
	this.RequiredFieldsInit = function()
	{
		for(var i=0; i < this.form_inputs.length; i++)
		{
			if(this.form_inputs[i].className.match(this.required_field_class))
			{
				if(this.form_inputs[i].type == "text")
				{
					this.required_fields.push(this.form_inputs[i]);
				}
				else if(this.form_inputs[i].type == "password")
				{
					this.required_fields.push(this.form_inputs[i]);
				}
				else if(this.form_inputs[i].type == "file")
				{
					this.required_fields.push(this.form_inputs[i]);
				}
				else if(this.form_inputs[i].type == "radio")
				{
					// need to check that one of the radio buttons is clicked
					// and if not, maybe border the div they're in
				}
			}
			else if(this.form_inputs[i].type == "submit")
			{
				this.submit_buttons.push(this.form_inputs[i]);
			}
		}
		
		for(var i=0; i < this.form_textareas.length; i++)
		{
			if(this.form_textareas[i].className.match(this.required_field_class))
				this.required_fields.push(this.form_textareas[i]);
		}
	}
	
	
	this.FormSubmitInit = function()
	{
		this.form_name_id.onsubmit = this.FormSubmitValidate;
	}
		this.FormSubmitValidate = function()
		{
			var valid_form = true;
			var current_field_id;
			var focus_field;
			
			for(var i=0; i < ob_for_eff.required_fields.length; i++)
			{
				current_field_id = document.getElementById(ob_for_eff.required_fields[i].id);
				current_field_id.style.borderColor = ob_for_eff.default_required_color;
				
				current_field_id.value = current_field_id.value.replace(/^\s+|\s+$/g, '');
				
				if(current_field_id.value == "" || current_field_id.value == null)
				{
					current_field_id.style.borderColor = ob_for_eff.required_color;
					valid_form = false;
				}
			}
			
			if(valid_form === false)
			{
				document.getElementById("required_field_box").style.color = ob_for_eff.required_color;
				window.location = "#" + "required_field_box";
				return false;
			}
			else
			{
				/* for(var i=0; i < ob_for_eff.submit_buttons.length; i++)
				{
					document.getElementById(ob_for_eff.submit_buttons[i].id).disabled = true;
				} */
			
				return true;
			}
		}
	
	return this;
}


FormEffects.prototype.AddDebug = function(in_line)
{
	if(ob_for_eff.debuggr)
		ob_win_bjs.AddItem(in_line);
}


FormEffects.prototype.CheckAllInit = function()
{
	for(var i=0; i < this.form_inputs.length; i++)
	{
		if(this.form_inputs[i].type == "checkbox")
		{
			if(this.form_inputs[i].className.match(this.check_fields_class))
				this.form_inputs[i].onclick = this.CheckAllBoxes;
		}
	}
	
}
	FormEffects.prototype.CheckAllBoxes = function()
	{
		if(this.checked === true)
			var check_them = true;
		else
			var check_them = false;

		for(var i=0; i < ob_for_eff.form_inputs.length; i++)
		{
			if(ob_for_eff.form_inputs[i].type == "checkbox")
			{
				if(ob_for_eff.form_inputs[i].className.match(this.id) && ob_for_eff.form_inputs[i].disabled == false)
					ob_for_eff.form_inputs[i].checked = check_them;
			}
		}
	}


FormEffects.prototype.ClickFieldsInit = function()
{
	for(var i=0; i < this.form_inputs.length; i++)
	{
		if(this.form_inputs[i].className.match("brbn_click_option")) this.form_inputs[i].onchange = this.ClickFields;
		if(this.form_inputs[i].className.match("brbn_change_option")) this.form_inputs[i].onclick = this.ClickFields;
	}

}
	FormEffects.prototype.ClickFields = function()
	{
		var field_ids = this.alt.split(" ");
		for(var i=0; i < ob_for_eff.form_inputs.length; i++)
		{
			if(ob_for_eff.form_inputs[i].type == "checkbox" || ob_for_eff.form_inputs[i].type == "radio")
			{
				for (var j=0; j<field_ids.length; j++)
				{
					// ob_for_eff.AddDebug(ob_for_eff.form_inputs[i].id + " vs. " + field_ids[j]);
					if(ob_for_eff.form_inputs[i].id == field_ids[j])
						ob_for_eff.form_inputs[i].checked = true;
				}
			}
		}
	}


FormEffects.prototype.CopyFormFieldsInit = function()
{
	for(var i=0; i < this.form_inputs.length; i++)
	{
		if(this.form_inputs[i].className.match(this.copy_fields_class))
			this.form_inputs[i].onclick = this.CopyFormFields;
	}
}
	FormEffects.prototype.CopyFormFields = function()
	{
		var holding_tank = new Array();
		
		var copy_from_split = this.id.split(".");
		var copy_from_dot = "\\." + copy_from_split[1];
		
		var copy_to = this.alt;
		var copy_to_dot = "\\." + this.alt;
		
		current_button_id = document.getElementById(this.id);
	
		if(this.alt != "new")
		{
			for(var i=0; i < ob_for_eff.form_inputs.length; i++)
			{
				if(ob_for_eff.form_inputs[i].id.match(copy_from_dot))
				{
					var field_split = ob_for_eff.form_inputs[i].id.split(".");
					
					if(document.getElementById(field_split[0] + "." + copy_to) != undefined)
					{
						var current_field_id = document.getElementById(field_split[0] + "." + copy_to);
						current_field_id.value = ob_for_eff.form_inputs[i].value;
						current_field_id.style.color = ob_for_eff.value_color;
					}
				}
			}
		}
		else
		{
			for(var i=0; i < ob_for_eff.form_inputs.length; i++)
			{
				if(ob_for_eff.form_inputs[i].id.match(copy_to_dot))
					document.getElementById(ob_for_eff.form_inputs[i].id).style.color = ob_for_eff.value_color;
			}
		}
	}


// Clears form fields with "field_clear" class
// on page loads
// Only works on input=text, selects and textareas
FormEffects.prototype.ClearFormFields = function()
{
	for(var i=0; i < this.form_inputs.length; i++)
	{
		if(this.form_inputs[i].className.match(this.clear_field_class))
			document.getElementById(this.form_inputs[i].id).value = "";
	}

	for(var i=0; i < this.form_textareas.length; i++)
	{
		if(this.form_textareas[i].className.match(this.clear_field_class))
			document.getElementById(this.form_textareas[i].id).value = "";
	}
	
	for(var i=0; i < this.form_selects.length; i++)
	{
		if(this.form_selects[i].className.match(this.clear_field_class))
			document.getElementById(this.form_selects[i].id).selectedIndex = 0;
	}
}


// Clears form fields with "field_clear" class
// when clicked by an anchor with appropriate class -- "clear_and_submit"
// Only works on input=text, selects and textareas
FormEffects.prototype.ClearFormAndSubmitInit = function()
{
	var match_class = "clear_and_submit";
	var kids = document.getElementsByTagName("A");
	
	for(var i=0; i < kids.length; i++)
	{
		if(kids[i].className.match(match_class))
			kids[i].onclick = this.ClearFormAndSubmit;
	}
}
	FormEffects.prototype.ClearFormAndSubmit = function()
	{
		ob_for_eff.ClearFormFields();
		ob_for_eff.form_name_id.submit();
		
		return false;
	}







