/**
 * Funcion para abrir una ventana emergente del explorador
 * @param {Object} documento
 * @param {Object} ancho
 * @param {Object} alto
 */
function abrirVentana(documento, ancho, alto)
{
	window.open(documento, "_blank", "scrollbars=1,titlebar=0,toolbar=0,menubar=0,status=0,width="+ancho+",height="+alto);
}
/**
 * Funcion que añade un error a la caja de errores y elimina el anterior
 * @param {Object} msg
 */
function addError(msg)
{
   var nLabel = document.createElement("label");
   var texto = document.createTextNode(msg);
   nLabel.appendChild(texto);
   var obj = document.getElementById("errorBox");
   obj.removeChild(obj.lastChild);
   obj.appendChild(nLabel);
   obj.style.display="block";
}
/**
 * Cambia el mensaje de la barra de estado
 * @param {Object} msgStr
 */
function statusMsg(msgStr) 
{
	status='Espi & Le Barbier - ' + msgStr;
//	document.MM_returnValue = true;
}
/**
 * Borra el mensaje de la barra de estado
 * @param {Object} msgStr
 */
function delStatusMsg(msgStr) 
{
	status='';
//	document.MM_returnValue = true;
}
/**
 * Variable para controlar el banner a mostrar
 */
var banner = 1;
/**
 * Cambia los banners de forma dinámica difuminandolos
 * @param {Object} inicial
 */
function changeBanners(inicial)
{
	if (banner == 1)        {	b3Fade.start();	}
   else if (banner == 2)	{	b1Fade.start();	}
   else                    {	b2Fade.start();   }
	var banners_size = aBanners.length;
	if (inicial)	mostrar();
	else	         setTimeout ( "mostrar()", 1000 );
	banner++;
	if (banner > banners_size)	banner = 1;
}
/**
 * Metodo para mostrar el nuevo banner en el cambio
 */
function mostrar()
{
	var banners_size = aBanners.length;
	for(var i=0; i<banners_size; i++)	{
	   document.getElementById(aBanners[i]).style.display = "none";
	}
	if (banner == 1)       {   b1Fade.start();   }
   else if (banner == 2)  {	b2Fade.start();   }
   else                   {	b3Fade.start();	}
   // Le ponemos un timeout para que le de tiempo a ocultarlo
	setTimeout ( "mostrarCapa()", 100 );
}
/**
 * Cambia el display de la capa, para que sea visible
 */
function mostrarCapa()
{
	var name = "b" + banner;
	document.getElementById(name).style.display="block";
}
/**
 * Variables para controlar la imagen a mostrar en cada uno
 * de las iteraciones del intervalo
 */
var panel1 = 2;
var panel2 = 2;
var panel3 = 2;
/**
 * Cambia la imagen de los paneles, difuminando la carga y la 
 * descarga de cada una de las imagenes
 * @param {Object} id
 */
function changePanels(id)
{
	if (id == 1) {
	   var sUrlF = img1 + panel1 + ".jpg";
	   p1Fade.start();
	   document.getElementById("panel1").src = sUrlF;
	   p1Fade.start();
	   panel1++;
	   if (panel1 > 3) panel1 = 1;
	} else if (id == 2) {
	   var sUrlI = img2 + panel2 + ".jpg";
	   p2Fade.start();
	   document.getElementById("panel2").src = sUrlI;
	   p2Fade.start();
	   panel2++;
	   if (panel2 > 3) panel2 = 1;
	}else {
	   var sUrlS = img3 + panel3 + ".jpg";
	   p3Fade.start();
	   document.getElementById("panel3").src = sUrlS;
	   p3Fade.start();
	   panel3++;
	   if (panel3 > 3) panel3 = 1;
	}
}
/**
 * Validacion de los datos de entrada en el formulario de
 * grabacion de usuarios
 */
function validaUsuario()
{
	var myForm = document.regForm;
   normalizaRegistro();
	// Campos requeridos todos
	if (myForm.email.value == "") { addError(error_1); return false; }
	if (myForm.paswd.value == "") { addError(error_2); return false; }
	if (myForm.nombr.value == "") { addError(error_3); return false; }
	if (myForm.telef.value == "") { addError(error_4); return false; }
	if (myForm.cargo.value == "") { addError(error_5); return false; }
	if (myForm.nucif.value == "") { addError(error_6); return false; }
	if (myForm.empre.value == "") { addError(error_7); return false; }
	// Validacion del email
   if (!esEmail(myForm.email)){ addError(error_8); return false; }
	// Validacion de CIF
//   if (!esCIF(myForm.nucif)){ alert(error_9); return false; }
	// Validacion del telefono
   if (!esNumero(myForm.telef.value)){ addError(error_10); return false; }
   // Llamada AJAX para comprobar si el email esta ya dado de alta
   emailUnico();
	// Si no hay error...
	return true;
}
/**
 * Quita los espacios sobrantes de cada valor,
 * Convierte a mayusculas todos los datos menos el email
 * Convierte a minusculas el email
 */
function normalizaRegistro()
{
   var myForm = document.regForm;
  	// Quitamos los espacios sobrantes
	myForm.email.value = Trim(myForm.email.value);
	myForm.paswd.value = Trim(myForm.paswd.value);
	myForm.nombr.value = Trim(myForm.nombr.value);
	myForm.telef.value = Trim(myForm.telef.value);
	myForm.cargo.value = Trim(myForm.cargo.value);
	myForm.nucif.value = Trim(myForm.nucif.value);
	myForm.empre.value = Trim(myForm.empre.value);
	// Convertimos a minusculas
	myForm.email.value = myForm.email.value.toLowerCase();
  	// Convertimos a mayusculas
	myForm.paswd.value = myForm.paswd.value.toUpperCase();
	myForm.nombr.value = myForm.nombr.value.toUpperCase();
	myForm.telef.value = myForm.telef.value.toUpperCase();
	myForm.cargo.value = myForm.cargo.value.toUpperCase();
	myForm.nucif.value = myForm.nucif.value.toUpperCase();
	myForm.empre.value = myForm.empre.value.toUpperCase();
}
/**
 * Comprueba si el dato introducido es un email válido
 * @param {Object} variable
 */
function esEmail(variable) {
   var strAux = Trim(variable.value);
   var posArr = strAux.indexOf("@");
	if ((posArr == -1) || (posArr == 0) || (posArr == (strAux.length-1))) {
	   return false;
	}
	var textoTroceado = strAux.split ("@");
	if (textoTroceado.length > 2) { return false; }
	return true;
}
/**
 * Comprueba si el dato introducido en un CIF válido
 * @param {Object} CIF
 */
function esCIF(CIF)
{
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	var temp = 0;
	var temp1;
	// pasar a mayúsculas
	var temp2 = CIF.value.toUpperCase();
	// Son 9 dígitos?
	if (!/^[A-Za-z0-9]{9}$/.test(temp2))
	   return false;
   // Es una letra de las admitidas ?
	else if (!/^[ABCDEFGHKLMNPQS]/.test(temp2))
	   return false;
	for( i = 2; i <= 6; i += 2 ){
	   temp = temp + v1[ parseInt(CIF.value.substr(i-1,1)) ];
	   temp = temp + parseInt(CIF.value.substr(i,1));
	};
   temp = temp + v1[ parseInt(CIF.value.substr(7,1)) ];
	temp = (10 - ( temp % 10));
   var ultima = CIF.value.substr(8,1);
   if( temp == 10 ){
	   if((ultima == "J")||(ultima == "0"))return true;
	   else return false;
	}else{
  	   if(ultima == temp){
	      return true;
	   }else {
	      if (ultima == String.fromCharCode(temp + 64)){
	         return true;
	      }else return false;
      }
	}
}
/**
 * Verifica si la cadena introducida está formada
 * unicamente por digitos numericos
 * @param {Object} variable
 */
function esNumero(variable) {
	var patron = /^\d+$/;
	return patron.test(variable);
}
/**
 * Quita los espacios a la derecha y a la izquierda
 * de una cadena de texto
 * @param {Object} str
 */
function Trim(str) {
	var resultStr = '';
	resultStr = TrimLeft(str);
	resultStr = TrimRight(resultStr);
	return resultStr;
}
/**
 * Quita los espacios a la izquierda
 * @param {Object} str
 */
function TrimLeft(str) {
	var resultStr = '';
	var i =  0;
	var len = 0 ;
	if (str+'' == 'undefined' || str == null){return null;}
	str += '';
	if (str.length == 0){
	   resultStr = '';
	}else{
	   len = str.length;
	   while ((i <= len) && (str.charAt(i) == " ")){i++;}
	   resultStr = str.substring(i, len);
	}
	return resultStr;
}
/**
 * Quita los espacios a la derecha
 * @param {Object} str
 */
function TrimRight(str) {
	var resultStr='';
	var i=0;
	if (str+'' == 'undefined' || str == null){return null;}
	str += '';
	if (str.length == 0){	resultStr = '';	}
   else   {
	   i = str.length - 1;
	   while ((i >= 0) && (str.charAt(i) == ' ')){i--;}
	   resultStr = str.substring(0, i + 1);
	}
	return resultStr;
}

/**
 * Validacion de los datos de entrada en el formulario de
 * grabacion de usuarios
 */
function validaLogin()
{
	var myForm = document.regForm;
	// Campos requeridos todos
	if (myForm.email.value == "") { addError(error_1); return false; }
	if (myForm.paswd.value == "") { addError(error_2); return false; }
   login();
	// Si no hay error...
	return true;
}

/**
 * Validacion de los datos de entrada en el formulario de
 * grabacion de usuarios
 */
function validaReset()
{
	var myForm = document.regForm;
	// Campos requeridos todos
	if (myForm.email.value == "") { addError(error_1); return false; }
   reset();
	// Si no hay error...
	return true;
}

/**
 * Validacion de los datos de entrada en el formulario de
 * envio de CV
 */
function validaCV()
{
	var myForm = document.cvForm;
   normalizaCV();
	// Campos requeridos todos
	if (myForm.nombr.value == "") { addError(error_1); return false; }
	if (myForm.apel1.value == "") { addError(error_2); return false; }
   if (myForm.apel2.value == "") { addError(error_3); return false; }
   if (myForm.email.value == "") { addError(error_4); return false; }
   if (!esEmail(myForm.email))   { addError(error_8); return false; }
   if (myForm.telef.value == "") { addError(error_5); return false; }
 	if (!esNumero(myForm.telef.value)) { addError(error_9); return false;}
   if (myForm.inter.value == "") { addError(error_6); return false; }
   if (myForm.cv.value == "")    { addError(error_7); return false; }
   myForm.submit();
	// Si no hay error...
	return true;
}
/**
 * Quita los espacios sobrantes de cada valor,
 * Convierte a mayusculas todos los datos menos el email
 * Convierte a minusculas el email
 */
function normalizaCV()
{
   var myForm = document.cvForm;
  	// Quitamos los espacios sobrantes
	myForm.email.value = Trim(myForm.email.value);
	myForm.nombr.value = Trim(myForm.nombr.value);
	myForm.apel1.value = Trim(myForm.apel1.value);
	myForm.apel2.value = Trim(myForm.apel2.value);
	myForm.telef.value = Trim(myForm.telef.value);
	myForm.inter.value = Trim(myForm.inter.value);
	// Convertimos a minusculas
	myForm.email.value = myForm.email.value.toLowerCase();
  	// Convertimos a mayusculas
	myForm.nombr.value = myForm.nombr.value.toUpperCase();
	myForm.apel1.value = myForm.apel1.value.toUpperCase();
	myForm.apel2.value = myForm.apel2.value.toUpperCase();
	myForm.telef.value = myForm.telef.value.toUpperCase();
	myForm.inter.value = myForm.inter.value.toUpperCase();
}
