/**
 * 
 * @version $Id: XLForm.js,v 1.1 2007/09/26 14:51:13 Andrew Exp $
 */

/**
 * Групповые действия с чекбоксами
 */ 
function chbx_action(form_name, action, mask) {
	var f = document.getElementsByName(form_name);
	var forma = f[0];
	var e = forma.elements;
	var chx;
	var chbx = 0;
	for (i = 0; i < e.length; i ++) {
		chx = e[i];
		if (chx.type != 'checkbox') {
			continue;
		}
		name_chbx = chx.name		
		if (name_chbx != mask) {
			continue;
		}
		chbx ++;
		if (action == 'invert') {
			chx.checked = !chx.checked;
		} else if (action == 'check') {
			chx.checked = true;
		} else if (action == 'uncheck') {
			chx.checked = false;	
		} 	
	}
}

/**
 * builds a query string from the elements of a form object
 * @param id of the form
 * @param (optional) Если True, сабитятся также disable элементы
 * @param (optional) С каким префиксом элементы учитывать только
 */
function getFormValues(frm){
	var objForm;
	var submitDisabledElements = false;
	if (arguments.length > 1 && arguments[1] == true)
		submitDisabledElements = true;
	var prefix="";
	if(arguments.length > 2)
		prefix = arguments[2];	
	if (typeof(frm) == "string")
		objForm = document.getElementById(frm);
	else
		objForm = frm;
	var sXml = '';
	if (objForm && objForm.tagName == 'FORM')	{
		var formElements = objForm.elements;
		for( var i=0; i < formElements.length; i++)		{
			if (!formElements[i].name)
				continue;
			if (formElements[i].name.substring(0, prefix.length) != prefix)
				continue;
			if (formElements[i].type && (formElements[i].type == 'radio' || formElements[i].type == 'checkbox') && formElements[i].checked == false)
				continue;
			if (formElements[i].disabled && formElements[i].disabled == true && submitDisabledElements == false)
				continue;
			var name = formElements[i].name;
			if (name)	{
				if (sXml != '')
					sXml += '&';
				if(formElements[i].type=='select-multiple'){
					for (var j = 0; j < formElements[i].length; j++){
						if (formElements[i].options[j].selected == true)
							sXml += name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";
					}
				} else {
					sXml += name+"="+encodeURIComponent(formElements[i].value);
				}
			} 
		}
	}
	return sXml;
}
