function nuevoElemento(lista, texto, valor )
{
      lista.length = lista.length+1;                                                 
      lista.options[lista.length-1].value = valor;
      lista.options[lista.length-1].text = texto;
}

function seleccionaPorValor(lista,valor)
{
	var size = lista.length;
	var i;
	var salir = false;
	for (  i = 0; i< size && !salir; i++)
	{
		if ( lista.options[i].value == valor )
		{
			lista.options[i].selected = true;
			salir = true;
		}
	}
	
	return salir;
}

function passAll(data1, data2,initialIndex) 
{
    var tam=data1.length;
    var contador=0;
    for (i=initialIndex;i < tam;i++) {
            data2.length = data2.length+1;    // Se añade un campo en el select donde vamos a añadir la linea //
            data2.options[data2.length-1].value = data1.options[i].value; // Añadimos el valor en la última posición del select//
            data2.options[data2.length-1].text  = data1.options[i].text;  // Añadimos el texto en la última posición del select//
        
            // El siguiente bucle desplaza los elementos que están por debajo, //
            // al que hemos añadido, una posición hacia arriba                 //
    } 
    data1.length = initialIndex; 
}

function passTo(data1, data2) {
    if (data1.selectedIndex == -1) {
        return;
    }
    var tam=data1.length;
    var contador=0;
    for (i=1;i < tam;) {
        if (data1.options[i].value!="" && data1.options[i].selected){                                  // Los campos sin valor ("") no se desplazan //
            data2.length = data2.length+1;                                                  // Se añade un campo en el select donde vamos a añadir la linea //
            data2.options[data2.length-1].value = data1.options[i].value; // Añadimos el valor en la última posición del select//
            data2.options[data2.length-1].text  = data1.options[i].text;  // Añadimos el texto en la última posición del select//
        
            // El siguiente bucle desplaza los elementos que están por debajo, //
            // al que hemos añadido, una posición hacia arriba                 //
        
            for (x=i+1; x<tam; x++){
                data1.options[x-1].value = data1.options[x].value;
                data1.options[x-1].text  = data1.options[x].text;
                data1.options[x-1].selected = data1.options[x].selected;
            }
        
            contador++;
            tam--;
        } else {
            i++;
        } //else [if (data1.options[data1.selectedIndex].value!="")]
    } //for (i=1;i < data1.length;i++)
    data1.length = data1.length-contador; // Finalmente, se resta el campo del select, donde hemos sustraido la linea //
}

var ASCENDENTE=1;
var DESCENDENTE=-1;

function ordena (campo, tipo) {
    quickSort (campo, 1, campo.length-1, tipo);
}

/**
 * Función que da 1 si a > b
 * 0 si a == b
 * -1 si a < b
 */
function compare (a, b) {
    if (a > b) {
        return 1;
    } else if (a < b) {
        return -1;
    }
    return 0;
}

function quickSort(a, lo0, hi0, sentido) {
    var lo = lo0;
    var hi = hi0;
    var mid;

    if (hi0 > lo0) {
        var auxMid=Math.floor((lo0 + hi0)/2);
        
        mid=a.options[auxMid].text.toLowerCase();

        while( lo <= hi ) {
            while ( ( lo < hi0 ) && (compare(a.options[lo].text.toLowerCase(),mid)*sentido < 0)) {
                ++lo;
            }
            while ( ( hi > lo0 ) && (compare(a.options[hi].text.toLowerCase(), mid)*sentido > 0)) {
        	    --hi;
            }

            if( lo <= hi ) {
                swaps(a, lo, hi);
                ++lo;
                --hi;
            }
        }

        if ( lo0 < hi ) {
            quickSort( a, lo0, hi , sentido);
        }
         
        if ( lo < hi0 ) {
            quickSort( a, lo, hi0 , sentido);
        }
    }
}

function swaps (a, i, j) {
   var T;
   T = a.options[i].value;
   a.options[i].value=a.options[j].value;
   a.options[j].value=T;

   T = a.options[i].text;
   a.options[i].text=a.options[j].text;
   a.options[j].text=T;
}


function _seleccionar(varForm, varSelContador, otroJavascript)
{
  vSel = eval( "document." + varForm.name + "." + varSelContador );
  vSelTodos = eval( "document." + varForm.name + "." + varSelContador + "todos");  
 
  if ( !vSel )
	return;
  if ( !vSelTodos )
	return;
			
  var size = vSel.length;
  var i;
  
  if ( vSelTodos.checked ) {
  	if ( !size )
	  vSel.checked = true;
  	else {
      for(i = 0; i < size ;i++)
 	    vSel[i].checked = true;
 	}
  } 
  else {
    if ( !size )
   	  vSel.checked = false;
    else {
      for(i = 0; i < size ;i++)
        vSel[i].checked = false;
    }
  }
 
  if ( otroJavascript )
     eval(otroJavascript);
}


function getValueRadioButton(varCampo) {
	if ( varCampo ) {
	  var size = varCampo.length;
  
	  if ( !size ) {
    	// Solo hay un elemento...
	  	if ( varCampo.checked == true )
	  		return varCampo.value;
	  } else {
	  	// Hay varios elementos
    	 for(i = 0; i < size ;i++)
	 	    if ( varCampo[i].checked == true )
 		    	return varCampo[i].value;
	 	}
	}
	
	return "";
}


function isSelectedRadioButton(varCampo) {
	if ( varCampo ) {
	  var size = varCampo.length;
  
	  if ( !size ) {
    	// Solo hay un elemento...
	  	if ( varCampo.checked == true )
	  		return true;
	  } else {
	  	// Hay varios elementos
    	 for(i = 0; i < size ;i++)
	 	    if ( varCampo[i].checked == true )
 		    	return true;
	 	}
	}
	
	return false;
}


