/* 
 * system.tools.elements.js 
 * version 1.2.0
 * Copyright (C) Jason Mingl (Ratheous)
*/

if(typeof system != "object")
	var system = new Object;
if(typeof system.tools != "object")
	system.tools = new Object;
	
system.tools.elements = new Object;

system.tools.elements.set = function(element, value, trigger_event)
{
	var name = element;
	if(typeof element != "object")
	{
		element = document.getElementById(element);
	}
	if(!element)
	{
		return false;
	}
	element.value = value;
	if(trigger_event)
		eval("element.onchange()");
	return element;
};

system.tools.elements.set_by_name = function(name, value)
{
	var elements = document.getElementsByName(name);
	if(!elements)
		return false;
	for(var i = 0; i < elements.length; i++)
		elements[i].value = value;
};

system.tools.elements.get_value = function(element)
{
	var name = element;
	if(typeof element != "object")
	{
		element = document.getElementById(element);
	}
	if(!element)
	{
		return undefined;
	}
	return element.value;
};

system.tools.elements.set_class = function(element, class_name)
{
	if(typeof element != "object")
	{
		element = document.getElementById(element);
	}
	if(!element)
	{
		return false;
	}
	element.className = class_name;
	return element;
};

system.tools.elements.set_property = function(element, property, value)
{
	if(typeof element != "object")
	{
		element = document.getElementById(element);
	}
	if(!element)
	{
		return false;
	}
	eval("element." + property + " = value;");
	return element;
};

system.tools.elements.set_properties_by_name = function (name, property, value)
{
	var elements = document.getElementsByName(name);
	if(!elements)
		return false;
	for(var i = 0; i < elements.length; i++)
		eval("elements[" + i + "]." + property + " = value;");
};

system.tools.elements.eval = function(element, action)
{
	if(typeof element != "object")
	{
		element = document.getElementById(element);
	}
	if(!element)
	{
		return false;
	}
	eval("element." + action);
};

system.tools.elements.hide = function(element, hide)
{
	element = system.tools.get_var_object(element);
	if(!element)
		return false;
	if(!hide)
	{
		element.style.visibility = '';
		element.style.display = '';
	}
	else
	{
		element.style.visibility = 'hidden';
		element.style.display = 'none';
	}
};

system.tools.elements.hide_by_name = function (name, hide)
{
	var elements = document.getElementsByName(name);
	if(!elements)
		return false;
	for(var i = 0; i < elements.length; i++)
		hide_element(elements[i], hide);
};

system.tools.elements.enable = function(element, enable)
{
	if(typeof element != "object")
		element = document.getElementById(element);
	element.disabled = enable ? "" : "disabled";
};

system.tools.elements.enable_by_name = function(name, enable)
{
	var elements = document.getElementsByName(name);
	if(!elements)
		return false;
	for(var i = 0; i < elements.length; i++)
		enable_element(elements[i], enable);
};

system.tools.elements.set_select = function(element, value)
{
	if(typeof element != "object")
	{
		element = document.getElementById(element);
	}
	if(!element)
	{
		return false;
	}
	for(var i = 0; i < element.length; i++)
	{
		if(element.options[i].value == value)
		{
			element.selectedIndex = i;
		}
	}
	return element;
};

system.tools.elements.update_select_options = function(select, options_array, default_selected, replace)
{
		if(typeof options_array != "object")
			return;
		var object_list;

		select_obj = system.tools.get_var_object(select);
		if(typeof select_obj != "object")
			return false;
		
		if(replace)
			select_obj.length = 0; // remove all current options
		for(j in options_array)
		{
			var default_value = (typeof(default_selected) == "string" ? (j == default_selected | options_array[j] == default_selected ? true : false) : (j == default_selected ? true : false));
			opt = new Option(options_array[j], j, default_value, default_value);
			select_obj.options[select_obj.options.length] = opt;
		}
		if(typeof(default_selected) == "string" && default_selected != "")
			select_obj.value = default_selected;
		
		return object_list;
};

system.tools.elements.select_range = function(select, start, end, default_selected, step, format) 
{ 
	var opts = new Array;
	for(var i = (end > start ? start : end); (end > start ? i<=end : i>=start); i = (end > start ? i+step : i-step))  
		opts.push([i, (format ? format.replace('%d', i) : i)]); 
	system.tools.elements.update_select_options(select, opts, 0, 1, default_selected);
};

system.tools.elements.swap_selected_items = function(first_select_id, second_select_id)
{
	var opts_one = document.getElementById(first_select_id).options;
	var opts_two = document.getElementById(second_select_id).options;

	for(var i = 0; i < opts_one.length; i++)
	{
		if(opts_one[i].selected)
		{
			opts_two[opts_two.length] = new Option(opts_one[i].text, opts_one[i].value);
			opts_one[i] = null;
			i--;
		}
	}
	for(var i = 0; i < opts_two.length; i++)
	{
		if(opts_two[i].selected)
		{
			opts_one[opts_one.length] = new Option(opts_two[i].text, opts_two[i].value);
			opts_two[i] = null;
			i--;
		}
	}
};

system.tools.elements.expand_select_values = function(elem_id, form_id, select_id)
{
	var form = document.getElementById(form_id);
	var field_tag = document.getElementById(elem_id);
	var select_obj = document.getElementById(select_id);
	if(field_tag) form.removeChild(field_tag);
	elem = document.createElement('input');
	elem.type = "hidden";
	elem.id = elem_id;
	elem.name = elem_id;
	var temp_val = "";
	for(var i = 0; i < select_obj.length; i++)
	{
		if(i != 0)
			temp_val += ";";
		temp_val += select_obj.options[i].value;
	}
	elem.value = temp_val;
	form.appendChild(elem);
};