//////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// utils_form.js //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                  //
// checkSelected(objCheck):          Obtiene cuántos checkboxes están seleccionados.                //
// radioSelected(objRad):            Obtiene el valor del radio button seleccionado.                //
// getChecksSelected(objCheck, Sep): Obtiene todos los valores seleccionados, separados por el      //
//                                   separador.                                                     //
// selectToText(nameForm,objSel,objTxt): Coje el selected y setea un campo de texto con ese valor.  //
// toUpperString(obj):                   Transforma MAYÚSCULAS el valor de obj.                     //
// CMBgetValueSelected(objCmb):          Obté el valor seleccionat en un COMBO BOX.                 //
// addField(objForm, fieldType, fieldName, fieldValue): Añade un campo de tipo fieldType,           //
//                                                      nombre fieldName y valor fieldValue al      //
//                                                      formulario objForm.                         //
// addHiddenField(objForm, fieldName, fieldValue): Añade un campo de tipo fieldType,     //      //
//                                                      nombre fieldName y valor fieldValue al      //
//                                                      formulario objForm.                         //
// getField(objForm, fieldName): Esta función consulta el campo de nombre fieldName del             //
//                               formulario objForm. En caso de existir, devuelve el objeto que le  //
//                               corresponde, y en caso de no existir devuelve null.                //
// makeOption(txt, value, form, select): Crea un nuevo OPTION en el formulario especificado por     //
//                                       NOMBRE o ÍNDICE.                                           //
// changeFocusToFieldNotReadOnly(objForm, fieldName): mueve el foco al siguiente campo que no sea   //
//                                                    readonly, que sea visible y NO tenga valor.   //
// changeFocusToFirstField(): mueve el foco al primer campo que no sea oculto.                      //
// copy(objFrom,objTo): Copia el valor del campo objFrom al campo objTo                             //
// textToSelect(objTxt,objSel):  Agafa el valor d'un camp de texto i el busca en un select per a fer//
//                               SELECTED.                                                          //  
//////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////
//checkSelected(objCheck): Obtiene cuántos checkboxes están seleccionados                            //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function checkSelected(objCheck) {
	var value;
	var k;
	var undef;

	// Inicialización
	value = 0;

	if (objCheck.length == undef) {
		if (objCheck.checked) {
			value = objCheck.value;
		}
	} else {
		k = 0;
		while (k < objCheck.length) {
			if (objCheck[k].checked) {
				value++;
			}
			k++;
		}
	}

	return value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
//radioSelected(objRad): Obtiene el valor del radio button seleccionado                              //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function radioSelected(objRad) {
	var value;
	var search;
	var k;
	var undef;

	// Inicialización
	value = null;
	search = true;

	if (objRad.length === undef) {
		if (objRad.checked) {
			value = objRad.value;
		}
	} else {
		k = 0;
		while (search && k < objRad.length) {
			if (objRad[k].checked) {
				value = objRad[k].value;
				search = false;
			}
			k++;
		}
	}

	return value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
//getChecksSelected(objCheck, Sep): Obtiene todos los valores seleccionados, separados por el        //
//                                  separador.                                                       //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function getChecksSelected(objCheck, Sep) {
	var value;
	var k;
	var undef;

	// Inicialización
	buscar = true;
	value = "";

	if (objCheck.length === undef) {
		if (objCheck.checked) {
			value = objCheck.value;
		}
	} else {
		k = 0;
		while (k < objCheck.length) {
			if (objCheck[k].checked) {
				value+= objCheck[k].value + Sep;
			}
			k++;
		}
	}
	return value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// selectToText(nameForm,objSel,objTxt): Coje el selected y setea un campo de texto con ese valor.   //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function selectToText(nameForm,objSel,objTxt){
	var ok=false;
	var selected="";
	var Elements=document.forms[nameForm];

	for(var s=0;s<Elements.length;s++){
		if((""+objSel.name)==(""+Elements.elements[s].name)){
			selected=objSel.options[objSel.selectedIndex].value;
			if(objSel.selectedIndex==0) {
				ok=false;

			} else {
				ok=true;
			}
			objTxt.value = objSel.options[objSel.selectedIndex].value;
		}
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// toUpperString(obj): Transforma MAYÚSCULAS el valor de obj.                                        //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function toUpperString(obj){
var value=obj.value;

	value=value.toUpperCase();
	obj.value=value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// CMBgetValueSelected(objCmb): Obté el valor seleccionat en un COMBO BOX.                           //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function CMBgetValueSelected(objCmb) {
	var value;

	if (objCmb.selectedIndex >= 0 ) {
		value = objCmb.options[objCmb.selectedIndex].value;
	} else {
		value = null;
	}
	return value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// addField (objForm, fieldType, fieldName, fieldValue): Añade un campo de tipo fieldType,           //
//                                                       nombre fieldName y valor fieldValue al      //
//                                                       formulario objForm.                         //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function addField(objForm, fieldType, fieldName, fieldValue){
	if (document.getElementById) {
		var input = document.createElement("input");
		if (document.all) { // what follows should work with NN6 but doesn't in M14
			input.type = fieldType;
			input.name = fieldName;
    	    input.value = fieldValue;

		} else if (document.getElementById) { // so here is the NN6 workaround
			input.setAttribute('type', fieldType);
			input.setAttribute('name', fieldName);
			input.setAttribute('value', fieldValue);
		}
		objForm.appendChild(input);
	}
}


///////////////////////////////////////////////////////////////////////////////////////////////////////
// addHiddenField (objForm, fieldName, fieldValue): Añade un campo de tipo hidden,           //
//                                                       nombre fieldName y valor fieldValue al      //
//                                                       formulario objForm.                         //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function addHiddenField(objForm, fieldName, fieldValue){
		var input = document.createElement("<input type=\"hidden\" name=\""+fieldName+"\" value=\""+fieldValue+"\" >");

		objForm.appendChild(input);
}



///////////////////////////////////////////////////////////////////////////////////////////////////////
// getField(objForm, fieldName): Esta función consulta el campo de nombre fieldName del              //
//                               formulario objForm. En caso de existir, devuelve el objeto que le   //
//                               corresponde, y en caso de no existir devuelve null.                 //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function getField (objForm, fieldName) {
	if (!document.all){
		return objForm[fieldName];
	}
	else{  // IE has a bug not adding dynamically created field
        // as named properties so we loop through the elements array
		for (var e = 0; e < objForm.elements.length; e++){
			if (objForm.elements[e].name == fieldName){
				return objForm.elements[e];
			}
		}
	}
	return null;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// makeOption(txt, value, form, select): Crea un nuevo OPTION en el formulario especificado por      //
//                                       NOMBRE o ÍNDICE.                                            //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function makeOption(txt, value, form, select){
	var objOption;
	var Elements="";

	if(isNaN(form)){
		Elements=eval("document.forms['"+form+"']."+select);
	} else {
		Elements=eval("document.forms[form]."+select);
	}

	if(ns){
		var objOption=new Option(txt, value, false, true);
		Elements.options[Elements.options.length]=objOption;
	}
	if(ie){
		objOption=document.createElement('option');
		objOption.value=value;
		objOption.text=txt;
		Elements.add(objOption, 0);
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// changeFocusToFieldNotReadOnly(objForm, fieldName): mueve el foco al siguiente campo que no sea    //
//                                                    readonly, que sea visible y NO tenga valor.    //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function changeFocusToFieldNotReadOnly(objForm, fieldName){
	for(var i=0;i<objForm.length;i++){
		if(objForm.elements[i].name==fieldName){
			if((i+1)==objForm.length){
				for(var ii=0;ii<objForm.length;ii++){
					window.focus();
				}
			} else {
				if((objForm.elements[i+1].type!="hidden") && (objForm.elements[i+1].value == "")) {
					objForm.elements[i+1].focus();
				}
			}
		}
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// changeFocusToFirstField(): mueve el foco al primer campo que no sea oculto, ni sea un botón.      //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function changeFocusToFirstField(){
	var objForm=document.forms[0];

	for(var i=0;i<objForm.length;i++){
		if((objForm.elements[i+1].type!="hidden") && (objForm.elements[i+1].type!="button")) {
			objForm.elements[i+1].focus();
			break;
		}
	}
}


///////////////////////////////////////////////////////////////////////////////////////////////////////
// copy(objFrom,objTo): Copia el valor del campo objFrom al campo objTo.                             //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function copy(objFrom,objTo){
	objTo.value=objFrom.value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// textToSelect(objTxt,objSel): Agafa el valor d'un camp de texto i el busca en un select per a fer  //
//                              SELECTED.                                                            //  
///////////////////////////////////////////////////////////////////////////////////////////////////////
function textToSelect(objTxt,objSel){
	var txtValue=""+objTxt.value;
	var c=0;
	var selValue;
	var ok=false;
	
	if(objSel.options.length>1){
		while(c<objSel.options.length){
			selValue=""+objSel.options[c].value;	
			if(selValue.toUpperCase()==txtValue.toUpperCase()){
				objSel.options[c].selected=true;
				if(objSel.selectedIndex==0) {
					ok=false;
				} else {
					ok=true;
				}
			}
			c++;
		}
	} else {
		ok=true;
	}
	
	if(!ok) {
		objSel.options[0].selected=true;
	}
}	

