/**
 * Copyright (c)2005-2007 Matt Kruse (javascripttoolbox.com)
 * 
 * Dual licensed under the MIT and GPL licenses. 
 * This basically means you can use this code however you want for
 * free, but don't claim to have written it yourself!
 * Donations always accepted: http://www.JavascriptToolbox.com/donate/
 * 
 * Please do not link to the .js files on javascripttoolbox.com from
 * your site. Copy the files locally to your server instead.
 * 
 */
var Selectbox = new Object();
Selectbox.$VERSION = 1.0;

Selectbox.hasOptions = function(obj) {
	return (obj!=null && typeof(obj.options)!="undefined" && obj.options!=null);
};

Selectbox.selectUnselectMatchingOptions = function(obj,regex,which,only) {
	if (window.RegExp) {
		if (!this.hasOptions(obj)) { return false; }
		if (typeof(only)=="undefined" || only==null) { var only = false; }
		var re = new RegExp(regex);
		for (var i=0; i<obj.options.length; i++) {
			if (re.test(obj.options[i].text)) {
				obj.options[i].selected = (which=="select");
			}
			else if (only) {
				obj.options[i].selected = (which=="unselect");
			}
		}
		return true;
	}
	return false;
};

Selectbox.selectOptions = function(obj,regex) {
	return this.selectUnselectMatchingOptions(obj,regex,"select",false);
};

Selectbox.selectOnlyOptions = function(obj,regex) {
	return this.selectUnselectMatchingOptions(obj,regex,"select",true);
};

Selectbox.unselectOptions = function(obj,regex) {
	return this.selectUnselectMatchingOptions(obj,regex,"unselect",false);
};

Selectbox.sort = function(obj) {
	var o = new Array();
	if (!this.hasOptions(obj)) { return false; }
	for (var i=0; i<obj.options.length; i++) {
		o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
	}
	if (o.length==0) { return true; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
		} 
	);

	for (var i=0; i<o.length; i++) {
		obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	}
	return true;
};

Selectbox.selectAllOptions = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	for (var i=0; i<obj.options.length; i++) {
		obj.options[i].selected = true;
	}
	return true;
};

//Para filtrar que no coja los calores 1 y 6 de los procesos
Selectbox.selectAllOptionsProcesos = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	for (var i=0; i<obj.options.length; i++) {
		if (obj.options[i].value!=1){
				if (obj.options[i].value!=14){	
					obj.options[i].selected = true;
				}
		}
	}
	return true;
};

Selectbox.moveSelectedOptions = function(from,to) {
	if (!this.hasOptions(from)) { return false; }
	// Unselect matching options, if required
	if (arguments.length>3) {
		var regex = arguments[3];
		if (regex != "") {
			if (!this.unselectOptions(from,regex)) {
				return false;
			}
		}
	}
	// Move them over
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			if (!this.hasOptions(to)) { 
				var index = 0; 
			} 
			else { 
				var index=to.options.length; 
			}
			to.options[index] = new Option(o.text, o.value, false, false);
		}
	}
	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
		var o = from.options[i];
		if (o.selected) {
			from.options[i] = null;
		}
	}
	if ((arguments.length<3) || (arguments[2])) {
		this.sort(from);
		this.sort(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;

	return true;
};

//Para filtrar que no coja los calores 1 y 6 de los procesos
Selectbox.moveSelectedOptionsProcesos = function(from,to) {
	if (!this.hasOptions(from)) { return false; }
	// Unselect matching options, if required
	if (arguments.length>3) {
		var regex = arguments[3];
		if (regex != "") {
			if (!this.unselectOptions(from,regex)) {
				return false;
			}
		}
	}
	// Move them over
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			//alert(o.value)
			if (o.value!=1){
				if (o.value!=15){		
					if (!this.hasOptions(to)) { 
						var index = 0; 
					} 
					else { 
						var index=to.options.length; 
					}
				}
			}
			to.options[index] = new Option(o.text, o.value, false, false);
		}
	}
	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
		var o = from.options[i];
		if (o.selected) {
			if (o.value!=1){
				if (o.value!=14){
					from.options[i] = null;
				}
			}
		}
	}
	if ((arguments.length<3) || (arguments[2])) {
		this.sort(from);
		this.sort(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;

	return true;
};

Selectbox.copySelectedOptions = function(from,to) {
	if (!this.hasOptions(from)) { return false; }
	var options = new Object();
	if (this.hasOptions(to)) {
		for (var i=0; i<to.options.length; i++) {
			options[to.options[i].value] = to.options[i].text;
		}
	}
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			if (typeof(options[o.value])=="undefined" || options[o.value]==null || options[o.value]!=o.text) {
				if (!this.hasOptions(to)) { 
					var index = 0; 
				} 
				else { 
					var index=to.options.length; 
				}
				to.options[index] = new Option( o.text, o.value, false, false);
			}
		}
	}
	if ((arguments.length<3) || (arguments[2]==true)) {
		this.sort(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;

	return true;
};

Selectbox.moveAllOptions = function(from,to) {
	this.selectAllOptions(from);
	if (arguments.length==2) {
		this.moveSelectedOptions(from,to);
	}
	else if (arguments.length==3) {
		this.moveSelectedOptions(from,to,arguments[2]);
		}
	else if (arguments.length==4) {
		this.moveSelectedOptions(from,to,arguments[2],arguments[3]);
	}
};

//Para filtrar que no coja los calores 1 y 6 de los procesos
Selectbox.moveAllOptionsProcesos = function(from,to) {
	this.selectAllOptionsProcesos(from);
	if (arguments.length==2) {
		this.moveSelectedOptions(from,to);
	}
	else if (arguments.length==3) {
		this.moveSelectedOptions(from,to,arguments[2]);
		}
	else if (arguments.length==4) {
		this.moveSelectedOptions(from,to,arguments[2],arguments[3]);
	}
};

Selectbox.copyAllOptions = function(from,to) {
	this.selectAllOptions(from);
	if (arguments.length==2) {
		this.copySelectedOptions(from,to);
	}
	else if (arguments.length==3) {
		this.copySelectedOptions(from,to,arguments[2]);
	}
};

Selectbox.swapOptions = function(obj,i,j) {
	if (!this.hasOptions(obj)) { return false; }
	var o = obj.options;
	if (i<0 || i>=o.length || j<0 || j>=o.length) { return false; }
	var i_selected = o[i].selected;
	var j_selected = o[j].selected;
	var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
	o[i] = temp2;
	o[j] = temp;
	o[i].selected = j_selected;
	o[j].selected = i_selected;
	return true;
};

Selectbox.moveOptionUp = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected) {
			if (i>0 && !obj.options[i-1].selected) {
				this.swapOptions(obj,i,i-1);
				obj.options[i-1].selected = true;
			}
		}
	}
	return true;
};

Selectbox.moveOptionDown = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	for (i=obj.options.length-1; i>=0; i--) {
		if (obj.options[i].selected) {
			if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
				this.swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
			}
		}
	}
	return true;
};

Selectbox.removeSelectedOptions = function(from) { 
	if (!this.hasOptions(from)) { return false; }
	if (from.type=="select-one" && from.selectedIndex>=0) {
		from.options[from.selectedIndex] = null;
	}
	else {
		for (var i=(from.options.length-1); i>=0; i--) { 
			var o=from.options[i]; 
			if (o.selected) { 
				from.options[i] = null; 
			} 
		}
	}
	from.selectedIndex = -1; 
};

Selectbox.removeAllOptions = function(from) { 
	if (!this.hasOptions(from)) { return false; }
	for (var i=(from.options.length-1); i>=0; i--) { 
		from.options[i] = null; 
	} 
	from.selectedIndex = -1; 
	return true;
};

Selectbox.addOption = function(obj,text,value,selected) {
	if (obj!=null && obj.options!=null) {
		obj.options[obj.options.length] = new Option(text, value, false, selected);
	}
};

var multiformDatos = new Array ();
	function multiformEnviar(){
		for(i=0;i<multiformDatos.length;i++){
			for ( i2=0; i2<document.getElementById(multiformDatos[i]).length ; i2++){
				document.getElementById(multiformDatos[i]).options[i2].selected=true
			}
		}
		return true;
	}
	function multiformAgregar(id){
		multiformDatos.push(id);
	}
	function multifomMoverSeleccionado(id,accion){
		if(accion)  Selectbox.moveSelectedOptions(document.getElementById(id),document.getElementById('pre_'+id),1)	
		else Selectbox.moveSelectedOptions(document.getElementById('pre_'+id),document.getElementById(id),1)		
	}
	function multifomMoverTodo(id,accion){
		if(accion)  Selectbox.moveAllOptions(document.getElementById(id),document.getElementById('pre_'+id),1)	
		else Selectbox.moveAllOptions(document.getElementById('pre_'+id),document.getElementById(id),1)
	}
	
	function enviaraltaarex(){
		dato=document.getElementById("CIF").value
		ok=true
		mensaje=""
		switch (document.getElementById("TipoCIF").value){
	       case '1':
	          if (!NIF(dato))
	          {
	            mensaje = mensaje + "   - NIF incorrecto" + "\n";
	           ok=false;
	          }
              break;
              
	       case '0':
	          if (CompruebaDatosCIF(dato)){
	             if (!ValidaCIF(dato)){
	                 mensaje = mensaje + "   - CIF incorrecto" + "\n";
	                ok=false;
	            	}
	          }else{
	            mensaje = mensaje + "   - CIF incorrecto" + "\n";
	            ok=false;
	          }
	        break;
	     }		

		if(ok) return multiformEnviar()
		else {
			alert(mensaje)
			return false			
		}
	}
	
	
	function enviaraltaforos(){
		if(CompruebaDatosCIF(document.getElementById("cif").value)){ return true}
		return multiformEnviar()
	}

function NIF(strNif)
{
	var arrLetra = new Array('T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E');

	if (strNif.length < 9) return false;
	
	
	var n = strNif.substring(1, 9);
	if (isNaN(Number(n))) return false;
		 
	var l = strNif.substring(0, 1);
	l = l.toUpperCase();
	var letra = l.charCodeAt(0);
	if (!(letra >= 65 && letra <= 90)) return false;
	var position =Number(n)%23;
	if (arrLetra[position] != l) return false;
	
	return true;
}

	
function CompruebaDatosCIF(elCIF) 
{
 var resul = false;
  var temp = elCIF.toUpperCase(); // pasar a mayúsculas

  if (!/^[A-Za-z0-9]{9}$/.test(temp))  // Son 9 dígitos? 

     alert ("Longitud incorrecta, un CIF consta de 9 dígitos");

  else if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) // Es una letra de las admitidas ?

     alert("El primer dígito es incorrecto, debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S ");

  else 

     resul = true;

  return resul;
}

function ValidaCIF(F)
{
 //comprobamos el CIF
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
	var temp = 0; 
	var temp1;

    for( i = 2; i <= 6; i += 2 ) 
    {
	temp = temp + v1[ parseInt(F.substr(i-1,1)) ];
	temp = temp + parseInt(F.substr(i,1));
    }

	temp = temp + v1[ parseInt(F.substr(7,1)) ];

	temp = (10 - ( temp % 10));
    if( temp == 10 )
    {
		if ((F.substr(8,1)=="J") || (F.substr(8,1)=="0"))	
		{
		  return true;
		}
		else
		{
		   return false;
		}   
		
    }
    else
    {
		if (F.substr(8,1)==+temp)
		{
			return true;
		}
		else
		{
		   return false;
		}   
	}

  //  return true;
}  
	
