// USERS
function submit_user()
{
  if (isWhitespace(document.frmUsers.name.value))
  { alert ("Debe especificar un nombre de usuario para continuar");
    document.frmUsers.name.focus ();
    document.frmUsers.name.select ();
  }
  else if (isWhitespace(document.frmUsers.email.value))
  { alert ("Debe especificar una dirección de correo electrónico");
    document.frmUsers.email.focus ();
    document.frmUsers.email.select ();
  }
  else if (!isEmail(document.frmUsers.email.value))
  { alert ("El formato de la dirección de correo electrónico introducida no parece correcto");
    document.frmUsers.email.focus ();
    document.frmUsers.email.select ();
  }
  else if (isWhitespace(document.frmUsers.login.value))
  { alert ("Debe especificar un login para el usuario");
    document.frmUsers.login.focus ();
    document.frmUsers.login.select ();
  }
  else if (isWhitespace(document.frmUsers.password1.value))
  { alert ("La longitud de la contraseña que elijas debe ser de al menos 6 caracteres");
    document.frmUsers.password1.focus ();
    document.frmUsers.password1.select ();
  }
  else if (!isPassword(document.frmUsers.password1.value, 1, 6))
  { alert ("La contraseña solo debe contener caracteres alfanuméricos (a-z y 0-9)\ny tener una longitud de al menos 6 caracteres");
    document.frmUsers.password1.focus ();
	document.frmUsers.password1.select ();
  }
  else if (isWhitespace(document.frmUsers.password2.value))
  { alert ("La longitud de la contraseña que elijas debe ser de al menos 6 caracteres");
    document.frmUsers.password2.focus ();
    document.frmUsers.password2.select ();
  }
  else if (!isPassword(document.frmUsers.password2.value, 1, 6))
  { alert ("La contraseña solo debe contener caracteres alfanuméricos (a-z y 0-9)\ny tener una longitud de al menos 6 caracteres.");
    document.frmUsers.password2.focus();
	document.frmUsers.password2.select ();
  }
  else if ((document.frmUsers.password1.value)!=(document.frmUsers.password2.value))
  { alert ("Las contraseñas que ha especificado no coinciden.\nInténtelo de nuevo.");
    document.frmUsers.password1.focus ();
    document.frmUsers.password1.select ();
  }
  else
  { document.frmUsers.submit ();
  }
}


// CATEGORIES
function create_category()
{
  if (document.frmCategories.fid.value=='-1')
  { alert ("Es necesario seleccionar una familia para la categoría nueva");
    document.frmCategories.fid.focus ();
    document.frmCategories.fid.select ();
  }
  else if (isWhitespace(document.frmCategories.name.value))
  { alert ("Debe especificar un nombre de categoría para continuar");
    document.frmCategories.name.focus ();
    document.frmCategories.name.select ();
  }
  else if (isWhitespace(document.frmCategories.description.value))
  { alert ("Es necesario introducir una breve descripción de la categoría");
    document.frmCategories.description.focus ();
    document.frmCategories.description.select ();
  }
  else if ((!document.frmCategories.public[0].checked) && (!document.frmCategories.public[1].checked))
  { alert ("Es necesario especificar si la visualización de la categoría es pública o privada");
    document.frmCategories.public[0].focus ();
  }
  else
  { document.frmCategories.submit ();
  }
}

// NEWS
function submit_new()
{
  if (document.frmNews.cid.value=='-1')
  { alert ("Es necesario seleccionar una categoría para la noticia");
    document.frmNews.cid.focus ();
    document.frmNews.cid.select ();
  }
  else if (isWhitespace(document.frmNews.title.value))
  { alert ("Debe especificar un titular para la noticia");
    document.frmNews.title.focus ();
    document.frmNews.title.select ();
  }  
  else if (document.frmNews.body.length==0)
  { alert ("Debe especificar el cuerpo de la noticia");
    document.frmNews.body.focus ();
    document.frmNews.body.select ();
  }
  else
  {	  if ((document.frmNews.mode.value!='edit') && (isWhitespace(document.frmNews.thumb.value)))
	  { answer = confirm ("No ha especificado una imagen para la noticia.\n¿Seguro que desea continuar?"); 
		if (answer == 1)
		{ document.frmNews.submit ();
		}
		else
		{ document.frmNews.thumb.focus ();
	      document.frmNews.thumb.select ();
		}
	  }
	  else
	  { document.frmNews.submit ();
	  }
  }
}

// ADS
function submit_ad()
{
  if (document.frmAds.cid.value=='-1')
  { alert ("Es necesario seleccionar una categoría para el anuncio");
    document.frmAds.cid.focus ();
    document.frmAds.cid.select ();
  }
  else if (isWhitespace(document.frmAds.who.value))
  { alert ("Debe especificar quién emite el aviso, por ejemplo \"Ayuntamiento\"");
    document.frmAds.who.focus ();
    document.frmAds.who.select ();
  } 
  else if (isWhitespace(document.frmAds.title.value))
  { alert ("Debe especificar un título para el aviso");
    document.frmAds.title.focus ();
    document.frmAds.title.select ();
  }  
  else if (isWhitespace(document.frmAds.description.value))
  { alert ("Debe especificar una breve descripción del aviso");
    document.frmAds.description.focus ();
    document.frmAds.description.select ();
  }
  else
  {	document.frmAds.submit ();
  }
}

// RESOURCES
function submit_resource()
{
  var ok = 1;
  if (ok == 1)
  {
	  if (document.frmResources.mode.value!='edit')
	  {
		  if (isWhitespace(document.frmResources.file.value))
		  { alert ("Es necesario especificar un archivo a subir");
			document.frmResources.file.focus ();
			document.frmResources.file.select ();
			ok = 0;
		  }
	  }
  }  
  if (ok == 1)
  {
	  if (document.frmResources.cid.value=='-1')
	  { alert ("Es necesario seleccionar una categoría para el recurso");
		document.frmResources.cid.focus ();
		document.frmResources.cid.select ();
		ok = 0;
	  }
  }
  if (ok == 1)
  {
	  if (isWhitespace(document.frmResources.description.value))
	  { alert ("Es necesario especificar una descripción para el recurso");
		document.frmResources.description.focus ();
		document.frmResources.description.select ();
		ok = 0;
	  }
  }
  if (ok == 1)
  {	document.frmResources.submit ();
  }
}

// EVENTS
function submit_event()
{
  if (document.frmEvents.cid.value=='-1')
  { alert ("Es necesario seleccionar una categoría para el evento");
    document.frmEvents.cid.focus ();
    document.frmEvents.cid.select ();
  }
  else if (isWhitespace(document.frmEvents.title.value))
  { alert ("Es necesario especificar un título para el evento");
    document.frmEvents.title.focus ();
    document.frmEvents.title.select ();
  }
  else if (isWhitespace(document.frmEvents.place.value))
  { alert ("Es necesario especificar un lugar para el evento");
    document.frmEvents.place.focus ();
    document.frmEvents.place.select ();
  }
  else if (isWhitespace(document.frmEvents.start_date.value))
  { alert ("Es necesario especificar una fecha de inicio para el evento, en formato DD/MM/AAAA");
    document.frmEvents.start_date.focus ();
    document.frmEvents.start_date.select ();
  }
  else if (!(valFecha(document.frmEvents.start_date)))
  { alert("La fecha especificada para el inicio no es válida.\nIntroduzca la fecha en formato DD/MM/AAAA, por ejemplo, 04/12/2008");
    document.frmEvents.start_date.focus ();
    document.frmEvents.start_date.select ();
  }
  else if (isWhitespace(document.frmEvents.description.value))
  { alert ("Es necesario especificar una breve descripción del evento");
    document.frmEvents.description.focus ();
    document.frmEvents.description.select ();
  }
  else
  { 
	  if (!isWhitespace(document.frmEvents.end_date.value))
	  { alert("La fecha especificada para el final del evento no es válida.\nIntroduzca la fecha en formato DD/MM/AAAA, por ejemplo, 04/12/2008");
		document.frmEvents.end_date.focus ();
		document.frmEvents.end_date.select ();
	  }
	  else
	  { if (isWhitespace(document.frmEvents.start_time.value)) document.frmEvents.start_time.value = '00:00';
	    if (isWhitespace(document.frmEvents.end_time.value)) document.frmEvents.end_time.value = '00:00';
		//if (isWhitespace(document.frmEvents.end_date.value)) document.frmEvents.end_date.value = document.frmEvents.start_date.value;
		document.frmEvents.submit ();
	  }
  }
}

// LINKS
function submit_link()
{
  if (document.frmLinks.cid.value=='-1')
  { alert ("Es necesario seleccionar una categoría para el enlace");
    document.frmLinks.cid.focus ();
    document.frmLinks.cid.select ();
  }
  else if (isWhitespace(document.frmLinks.title.value))
  { alert ("Es necesario introducir un título para el enlace");
    document.frmLinks.title.focus ();
    document.frmLinks.title.select ();
  }
  else if (isWhitespace(document.frmLinks.url.value))
  { alert ("Es necesario introducir la dirección URL a la que vincular en enlace");
    document.frmLinks.url.focus ();
    document.frmLinks.url.select ();
  }
  else
  { document.frmLinks.submit ();
  }
}

// VIDEOS
function submit_video()
{
  if (document.frmVideos.cid.value=='-1')
  { alert ("Es necesario seleccionar una categoría para el enlace");
    document.frmVideos.cid.focus ();
    document.frmVideos.cid.select ();
  }
  else if (isWhitespace(document.frmVideos.title.value))
  { alert ("Es necesario introducir un título para el vídeo");
    document.frmVideos.title.focus ();
    document.frmVideos.title.select ();
  }
  else if (isWhitespace(document.frmVideos.description.value))
  { alert ("Es necesario introducir una descripción para el vídeo");
    document.frmVideos.description.focus ();
    document.frmVideos.description.select ();
  }
  else if (isWhitespace(document.frmVideos.embed.value))
  { alert ("Es necesario introducir el código HTML que hará la inclusión del vídeo");
    document.frmVideos.embed.focus ();
    document.frmVideos.embed.select ();
  }
  else
  { document.frmVideos.submit ();
  }
}

// SHOP
function submit_shop()
{ 
  if ((document.frmShop.mode.value!='edit')&&(!(document.frmShop.picture.value)))
  { alert ("No ha especificado una foto o imagen del artículo");
    document.frmShop.picture.focus ();
    document.frmShop.picture.select ();
  }
  else if (isWhitespace(document.frmShop.name.value))
  { alert ("Por favor, introduzca un nombre para el artículo o producto");
    document.frmShop.name.focus ();
    document.frmShop.name.select ();
  }
  else if (isWhitespace(document.frmShop.description.value))
  { alert ("Es necesario introducir una muy breve descripción del producto");
    document.frmShop.description.focus ();
    document.frmShop.description.select ();
  }
  else if (isWhitespace(document.frmShop.price.value))
  { alert ("No ha especificado el importe del producto/artículo");
    document.frmShop.price.focus ();
    document.frmShop.price.select ();
  }
  else
  { document.frmShop.submit ();
  }
}

// BANNERS
function submit_banner()
{
  if ((document.frmBanner.mode.value!='edit')&&(!(document.frmBanner.image.value)))
  { alert ("Es necesario seleccionar el archivo de imagen del banner");
    document.frmBanner.image.focus ();
    document.frmBanner.image.select ();
  }
  else if (isWhitespace(document.frmBanner.link.value))
  { alert ("Es necesario seleccionar el enlace del banner");
    document.frmBanner.link.focus ();
    document.frmBanner.link.select ();
  }
  else
  { document.frmBanner.submit ();
  }
}

// HEMEROTECA
function submit_hemeroteca()
{
  if (document.frmHemeroteca.cid.value=='-1')
  { alert ("Es necesario seleccionar una categoría para el recorte de prensa");
    document.frmHemeroteca.cid.focus ();
    document.frmHemeroteca.cid.select ();
  }
  else if (isWhitespace(document.frmHemeroteca.title.value))
  { alert ("Debe especificar el titular del recorte de prensa");
    document.frmHemeroteca.title.focus ();
    document.frmHemeroteca.title.select ();
  } 
  else if (isWhitespace(document.frmHemeroteca.magazine.value))
  { alert ("Debe especificar dónde se ha publicado el recorte de prensa");
    document.frmHemeroteca.magazine.focus ();
    document.frmHemeroteca.magazine.select ();
  }
  else if (isWhitespace(document.frmHemeroteca.date.value))
  { alert ("Debe especificar la fecha en que se publicó el recorte de prensa");
    document.frmHemeroteca.date.focus ();
    document.frmHemeroteca.date.select ();
  }
  else if (!(valFecha(document.frmHemeroteca.date)))
  { alert("La fecha especificada no es válida.\nIntroduzca la fecha en formato DD/MM/AAAA, por ejemplo, 04/12/2008");
    document.frmHemeroteca.date.focus ();
    document.frmHemeroteca.date.select ();
  }  
  // Cuerpo (¡validar!)
  else
  {	document.frmHemeroteca.submit ();
  }	
}

// CONTACT
function submit_contact()
{
  if (isWhitespace(document.frmContact.name.value))
  { alert ("Debe especificar su nombre para continuar");
    document.frmContact.name.focus ();
    document.frmContact.name.select ();
  }
  else if (isWhitespace(document.frmContact.email.value))
  { alert ("Debe especificar una dirección de correo electrónico");
    document.frmContact.email.focus ();
    document.frmContact.email.select ();
  }
  else if (!isEmail(document.frmContact.email.value))
  { alert ("El formato de la dirección de correo electrónico introducida no parece correcto");
    document.frmContact.email.focus ();
    document.frmContact.email.select ();
  }
  else if (isWhitespace(document.frmContact.subject.value))
  { alert ("Establezca una breve descripción en el campo Asunto");
    document.frmContact.subject.focus ();
    document.frmContact.subject.select ();
  }
  else if (isWhitespace(document.frmContact.message.value))
  { alert ("¡El cuerpo del mensaje está vacío!");
    document.frmContact.message.focus ();
    document.frmContact.message.select ();
  }  
  else
  { document.frmContact.submit ();
  }
}

/* DATE VALIDATION */

   function esDigito(sChr){
    var sCod = sChr.charCodeAt(0);
    return ((sCod > 47) && (sCod < 58));
   }

   function valSep(oTxt){
    var bOk = false;
    var sep1 = oTxt.value.charAt(2);
    var sep2 = oTxt.value.charAt(5);
    bOk = bOk || ((sep1 == "-") && (sep2 == "-"));
    bOk = bOk || ((sep1 == "/") && (sep2 == "/"));
    return bOk;
   }

   function finMes(oTxt){
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);
    var nAno = parseInt(oTxt.value.substr(6), 10);
    var nRes = 0;
    switch (nMes){
     case 1: nRes = 31; break;
     case 2: nRes = 28; break;
     case 3: nRes = 31; break;
     case 4: nRes = 30; break;
     case 5: nRes = 31; break;
     case 6: nRes = 30; break;
     case 7: nRes = 31; break;
     case 8: nRes = 31; break;
     case 9: nRes = 30; break;
     case 10: nRes = 31; break;
     case 11: nRes = 30; break;
     case 12: nRes = 31; break;
    }
    return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
   }

   function valDia(oTxt){
    var bOk = false;
    var nDia = parseInt(oTxt.value.substr(0, 2), 10);
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
    return bOk;
   }

   function valMes(oTxt){
    var bOk = false;
    var nMes = parseInt(oTxt.value.substr(3, 2), 10);
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));
    return bOk;
   }

   function valAno(oTxt){
    var bOk = true;
    var nAno = oTxt.value.substr(6);
    bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
    if (bOk){
     for (var i = 0; i < nAno.length; i++){
      bOk = bOk && esDigito(nAno.charAt(i));
     }
    }
    return bOk;
   }

   function valFecha(oTxt){
	if ((valAno(oTxt)) && (valMes(oTxt)) && (valDia(oTxt)) && (valSep(oTxt)))
	{ return true;
	}
	else
	{ return false;
	}
   }

/* END DATE VALIDATION */
