/***************************************************************************
# File: lib_window_effects.js - JavaScript Window Effects
# Version: 1.2.1
***************************************************************************/

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

	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();
	
	return this;
}


// Method -- Should we debug?
FormEffects.prototype.AddDebug = function(in_line)
{
	if(ob_for_eff.debuggr)
		ob_win_bjs.AddItem(in_line);
}


// Method -- Init required fields
FormEffects.prototype.RequiredFieldsInit = function()
{
	for(var i=0; i < ob_for_eff.form_inputs.length; i++)
	{
		if(ob_for_eff.form_inputs[i].className.match(ob_for_eff.required_field_class))
		{
			if(ob_for_eff.form_inputs[i].type == "text")
			{
				ob_for_eff.required_fields.push(ob_for_eff.form_inputs[i]);
			}
			else if(ob_for_eff.form_inputs[i].type == "password")
			{
				ob_for_eff.required_fields.push(ob_for_eff.form_inputs[i]);
			}
			else if(ob_for_eff.form_inputs[i].type == "file")
			{
				ob_for_eff.required_fields.push(ob_for_eff.form_inputs[i]);
			}
			else if(ob_for_eff.form_inputs[i].type == "radio")
			{
				// need to check that one of the radio buttons is clicked
				// and if not, maybe border the container they're in
			}
		}
		else if(ob_for_eff.form_inputs[i].type == "submit")
		{
			ob_for_eff.submit_buttons.push(ob_for_eff.form_inputs[i]);
		}
	}
	
	for(var i=0; i < ob_for_eff.form_textareas.length; i++)
	{
		if(ob_for_eff.form_textareas[i].className.match(ob_for_eff.required_field_class))
			ob_for_eff.required_fields.push(ob_for_eff.form_textareas[i]);
	}
}


// Method -- Init form submits for required fields
FormEffects.prototype.FormSubmitInit = function()
{
	ob_for_eff.form_name_id.onsubmit = ob_for_eff.FormSubmitValidate;
}
	// Method -- Validate form submits for required fields
	FormEffects.prototype.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;
		}
	}


// Method -- Init the check alls
FormEffects.prototype.CheckAllInit = function()
{
	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(ob_for_eff.check_fields_class))
				ob_for_eff.form_inputs[i].onclick = ob_for_eff.CheckAllBoxes;
		}
	}
	
}
	// Method -- Check all the boxes
	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;
			}
		}
	}


// Method -- Init the click fields
FormEffects.prototype.ClickFieldsInit = function()
{
	for(var i=0; i < ob_for_eff.form_inputs.length; i++)
	{
		if(ob_for_eff.form_inputs[i].className.match("brbn_click_option"))
			ob_for_eff.form_inputs[i].onchange = ob_for_eff.ClickFields;

		if(ob_for_eff.form_inputs[i].className.match("brbn_change_option"))
			ob_for_eff.form_inputs[i].onclick = ob_for_eff.ClickFields;
	}

}
	// Method -- Click the fields
	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;
				}
			}
		}
	}


// Method -- Init the copy form fields
FormEffects.prototype.CopyFormFieldsInit = function()
{
	for(var i=0; i < ob_for_eff.form_inputs.length; i++)
	{
		if(ob_for_eff.form_inputs[i].className.match(ob_for_eff.copy_fields_class))
			ob_for_eff.form_inputs[i].onclick = ob_for_eff.CopyFormFields;
	}
}
	// Method -- Copy the form fields from one to another
	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;
			}
		}
	}


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

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


// Method -- Clears the form fields and then submits the form
FormEffects.prototype.ClearFormAndSubmitInit = function()
{
	// 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

	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 = ob_for_eff.ClearFormAndSubmit;
	}
}
	FormEffects.prototype.ClearFormAndSubmit = function()
	{
		ob_for_eff.ClearFormFields();
		ob_for_eff.form_name_id.submit();
		
		return false;
	}
