/**
 * utils_forms.js
 * @author José Carlos Cruz Parra AKA internia
 * josecarlos@programadorphpfreelance.com
 * http://www.programadorphpfreelance.com
 * 2008-2009
 * This code is released under the GNU General Public License.
 */
function OnPressEnter(evt, code)
{
	var key = (window.Event ? evt.which : evt.keyCode);
	if(key == 13)
	{
		eval(code);
	}
}
function select_Mover(selectFrom, selectTo, reordenar, cual)
{
	if(selectFrom.toString().substring(0,7) != "[object")
	{
		selectFrom = gebi(selectFrom);
	}
	if(selectTo.toString().substring(0,7) != "[object")
	{
		selectTo = gebi(selectTo);
	}
	if(cual != null)
	{
		selectFrom.value = cual;
	}

	var optionsFrom = selectFrom.options;
	var optionsTo = selectTo.options;
	for(var c=0; c<optionsFrom.length; c++)
	{
		if(optionsFrom[c].selected)
		{
			optionsTo[optionsTo.length] = new Option(optionsFrom[c].text, optionsFrom[c].value);
			optionsFrom[c] = null;
		}
	}

	if(reordenar || reordenar == null)
	{
		select_Order(selectTo);
	}
}
function select_SelectAll(select)
{
	if(select.toString().substring(0,7) != "[object")
	{
		select = gebi(select);
	}
	select.multiple = true;
	var options = select.options;
	for(var c=0; c<options.length; c++)
	{
		options[c].selected = true;
	}
}
function select_MoverAll(selectFrom, selectTo, reordenar)
{
	if(selectFrom.toString().substring(0,7) != "[object")
	{
		selectFrom = gebi(selectFrom);
	}
	if(selectTo.toString().substring(0,7) != "[object")
	{
		selectTo = gebi(selectTo);
	}

	var options = selectFrom.options;
	for(var c=options.length-1; c>=0; c--)
	{
		options[c].selected = true;
		select_Mover(selectFrom, selectTo, c == 0);
	}
}
function select_Order(select)
{
	if(select.toString().substring(0,7) != "[object")
	{
		select = gebi(select);
	}
	items = select.options;
	opciones = new Array();
	for(var c=0; c<items.length; c++)
	{
		opciones[c] = new Array(items[c].text, items[c].value);
	}
	opciones.sort();
	for(var c=0; c<items.length; c++)
	{
		items[c].text = opciones[c][0];
		items[c].value = opciones[c][1];
	}
}
function select_Empty(select)
{
	if(select.toString().substring(0,7) != "[object")
	{
		select = gebi(select);
	}

	select.options.length = 0;
}
function select_AddOption(select,text,value,selected,reordenar)
{
	if(select.toString().substring(0,7) != "[object")
	{
		select = gebi(select);
	}

	var option = document.createElement('option');
	option.text = text;
	option.value = value;
	option.selected = selected ? true : false;
	try{
		select.add(option, null); // standards compliant; doesn't work in IE
	}
	catch(ex){
		select.add(option); // IE only
	}

	if(reordenar)
	{
		select_Order(select);
	}
}
function form_clean(form_id)
{
	var form = document.getElementById(form_id);
	var elements = form.elements;
	for(var c=0; c<elements.length; c++)
	{
		if(elements[c].type != "button" && elements[c].type != "submit")
		{
			if(elements[c].type == "checkbox" || elements[c].type == "radio")
			{
				elements[c].checked = false;
			}
			else
			{
				elements[c].value = "";
			}
		}
	}
}
function limitChars(objeto,limite,destino)
{
	actuales = objeto.value.length;
	if(actuales > limite)
	{
		objeto.value = objeto.value.substring(0,limite);
		objeto.blur();
		actuales = limite;
	}
	destino.innerHTML = actuales;
}
function mensajeOnSubmit(id_contenedor,mensaje)
{
	gebi(id_contenedor).innerHTML='<div class=\'message\'><span class=\'espera\'>'+mensaje+'</span></div>';
}
function Form2Array(form_id,tagName,type)
{
	var form = gebi(form_id);
	var elements = tagName == null ? form.elements : form.getElementsByTagName(tagName);
	var r = new Array();
	for(var c=0,k=0; c<elements.length; c++)
	{
		if(type == null || elements[c].type == type)
		{
			r[k] = new Array(2);
			r[k][0] = elements[c].name;
			r[k][1] = elements[c].value;
			k++;
		}
	}
	return r;
}
function Form2QueryURL(form_id,tagName,type)
{
	var form = gebi(form_id);
	var elements = tagName == null ? form.elements : form.getElementsByTagName(tagName);
	var str = '';
	for(var c=0,k=0; c<elements.length; c++)
	{
		if(type == null || elements[c].type == type)
		{
			if(k > 0)
			{
				str += '&';
			}
			str += elements[c].name+'='+elements[c].value;
			k++;
		}
	}
	return str;
}
function FillLeft(len,chr,obj)
{
	while(obj.value.length < len)
	{
		obj.value = chr + obj.value;
	}
}
function checkbox_CheckAll(formId,valor,name)
{
	if(name == null) name = "";
	var elements = gebi(formId).elements;
	for(var c=0; c<elements.length; c++)
	{
		if(elements[c].type == "checkbox" && elements[c].name.indexOf(name) > -1)
		{
			elements[c].checked = valor;
		}
	}
}
function radio_GetValue(name, obj)
{
	if(obj == null)
	{
		obj = document;
	}

	var elements = obj.getElementsByTagName('input');
	for(var c=0; c<elements.length; c++)
	{
		if(elements[c].type == "radio" && elements[c].name.indexOf(name) > -1 && elements[c].checked)
		{
			return elements[c].value;
		}
	}

	return null;
}
function text_ToUpper(obj)
{
	obj.value = obj.value.toUpperCase();
}