/**
* trim
* Elimina los espacios al inicio o fin de la cadena.
* Es parte del objeto String, se llama con cadena.trim()
*/
String.prototype.trim = function () {
  return this.replace(/^\s+/, "").replace(/\s+$/, "");
}

String.prototype.clean = function () {
  return this.trim();
}

/**
 * noSpace
 * Elimina los espacios dentro de la cadena
 */
function noSpace (cadena) {
  return cadena.replace(/\s/g, "");
}

/**
 * limitText
 * Se usa para limitar la cantidad de caracteres en un textarea
 */
function limitText(textid, limit, infodiv) {
  var text = $('#'+textid).val();
  var textlength = text.length;

  if (textlength > limit) {
    $('#'+textid).val(text.substring(0, limit));
  }
  $('#'+infodiv).html('Quedan ' + (limit - textlength));
  return true;
}

/**
* valida
* Valida la cadena contra la expresión regular dada, regresando true o false
* dependiendo del éxito o fracaso de la evaluación
*
* @param string cadena
* @param string regex
*/
function valida (cadena, regex) {
    var exp_reg = new RegExp(regex);

    return exp_reg.test(cadena);
}

/**
 * validaNoVacio
 * Verifica que la cadena sea no vacia, con expresiones regulares
 *
 * @param string cadena
 */
function validaNoVacio (cadena) {
  regex = '^.+$';

  return valida (cadena, regex);
}

/**
 * validaNumero
 * Verifica que la cadena sea numérica, con expresiones regulares
 *
 * @param string cadena
 */
function validaNumero (cadena) {
  regex = '^\\d+$';

  return valida (cadena, regex);
}

/**
* validaCorreo
* Verifica que la cadena dada sea conforme al esquema del correo
*
* @param string cadena
*/
function validaCorreo (cadena) {
    regex = "^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,4}|museum|travel)$"

    return valida (cadena, regex);
}

function validaSelect (id) {
  if (('#'+id)[('#'+id).selectedIndex].value == '') {
    alert('Por favor, elija ' + $('#'+id).nombre);
    return false;
  }
  return true;
}

function validaPersona () {
  if (!validaNoVacio($('#PersonaNombre').val())) {
    alert('Por favor, escriba ' + $('#PersonaNombre').attr('nombre'));
    return false;
  }
  if (!validaNoVacio($('#PersonaApellidoPaterno').val())) {
    alert('Por favor, escriba ' + $('#PersonaApellidoPaterno').attr('nombre'));
    return false;
  }
  if (!validaNoVacio($('#PersonaApellidoMaterno').val())) {
    alert('Por favor, escriba ' + $('#PersonaApellidoMaterno').attr('nombre'));
    return false;
  }
  //if (('#PersonaIdInstitucion').get(0).selectedIndex == '0') {
  if ($('#PersonaIdInstitucion').find('option:selected')[0].value == '') {
    alert('Por favor, elija ' + $('#PersonaIdInstitucion').attr('nombre'));
    return false;
  }
  if ($('#PersonaIdGrado').find('option:selected')[0].value == '') {
    alert('Por favor, elija ' + $('#PersonaIdGrado').attr('nombre'));
    return false;
  }
  if ($('#PersonaOcupacion').find('option:selected')[0].value == '') {
    alert('Por favor, elija ' + $('#PersonaOcupacion').attr('nombre'));
    return false;
  }
  if ($('#PersonaOcupacion').find('option:selected')[0].value == 'otro') {
    if (!validaNoVacio($('#PersonaOtro').val())) {
      alert('Por favor, escriba ' + $('#PersonaOtro').attr('nombre'));
      return false;
    }
  }
  if ($('#PersonaCurriculum').val() == '') {
    alert('Por favor, escriba ' + $('#PersonaCurriculum').attr('nombre'));
    return false;
  }
  if ($('#PersonaIdPais').find('option:selected')[0].value == '') {
    alert('Por favor, elija ' + $('#PersonaIdPais').attr('nombre'));
    return false;
  }
  if ($('#PersonaIdPais').find('option:selected')[0].value == '157') {
    if ($('#PersonaIdEntidad').find('option:selected')[0].value == '') {
      alert('Por favor, elija ' + $('#PersonaIdEntidad').attr('nombre'));
      return false;
    }
  }
  if (!validaNoVacio($('#PersonaCalle').val())) {
    alert('Por favor, escriba ' + $('#PersonaCalle').attr('nombre'));
    return false;
  }
  if (!validaNoVacio($('#PersonaColonia').val())) {
    alert('Por favor, escriba ' + $('#PersonaColonia').attr('nombre'));
    return false;
  }
  if (!validaNoVacio($('#PersonaDelegacion').val())) {
    alert('Por favor, escriba ' + $('#PersonaDelegacion').attr('nombre'));
    return false;
  }
  if (!validaNoVacio($('#PersonaCp').val())) {
    alert('Por favor, escriba ' + $('#PersonaCp').attr('nombre'));
    return false;
  }
  if (!validaNoVacio($('#PersonaLada').val())) {
    alert('Por favor, escriba ' + $('#PersonaLada').attr('nombre'));
    return false;
  } else if (!validaNumero($('#PersonaLada').val())) {
    alert('Escriba una LADA válida');
    return false;
  }
  if (!validaNoVacio($('#PersonaTelefono').val())) {
    alert('Por favor, escriba ' + $('#PersonaTelefono').attr('nombre'));
    return false;
  } else if (!validaNumero($('#PersonaTelefono').val())) {
    alert('Escriba un teléfono válido');
    return false;
  }
  if ($('#PersonaCorreoElectronico')) {
    if (!validaCorreo($('#PersonaCorreoElectronico').val())) {
      alert('Formato incorrecto para ' + $('#PersonaCorreoElectronico').attr('nombre'));
      return false;
    }
  }

  return true;
}

function validaPonencia () {
  if ($('#PonenciaIdTipo').find('option:selected')[0].value == '') {
    alert('Por favor, elija ' + $('#PonenciaIdTipo').attr('nombre'));
    return false;
  }
  if ($('#PonenciaIdTipo').find('option:selected')[0].value != '1' && $('#PonenciaIdTipo').find('option:selected')[0].value != '7') {
    if ($('#PonenciaIdArea').find('option:selected')[0].value == '') {
      alert('Por favor, elija ' + $('#PonenciaIdArea').attr('nombre'));
      return false;
    }
  }
  if (!validaNoVacio($('#PonenciaTitulo').val())) {
    alert('Por favor, escriba ' + $('#PonenciaTitulo').attr('nombre'));
    return false;
  }
  if ($('#PonenciaResumen').val() == '') {
    alert('Por favor, escriba ' + $('#PonenciaResumen').attr('nombre') + $('#PonenciaResumen').val());
    return false;
  }
  if ($('#PonenciaIdTipo').find('option:selected')[0].value == '9' || $('#PonenciaIdTipo').find('option:selected')[0].value == '10') {
    if ($('#PonenciaTiempo').find('option:selected')[0].value == '') {
      alert('Por favor, elija ' + $('#PonenciaTiempo').attr('nombre'));
      return false;
    }
  }
  if ($('#PonenciaEquiposOtro').is(":checked")) {
    if (!validaNoVacio($('#PonenciaOtro').val())) {
      alert('Por favor, escriba '+ $('#PonenciaOtro').attr('nombre'));
      return false;
    }
  }
  /*if ($('#PonenciaEquipo').find('option:selected')[0].value == '') {
    alert('Por favor, elija ' + $('#PonenciaEquipo').attr('nombre'));
    return false;
  }
  if ($('#PonenciaEquipo').find('option:selected')[0].value == 'otro') {
    if (!validaNoVacio($('#PonenciaOtro').val())) {
      alert('Por favor, escriba ' + $('#PonenciaOtro').attr('nombre'));
      return false;
    }
  }*/

  return true;
}

function otro (clickId, otroId) {
  if ($('#'+clickId).find('option:selected')[0].value == 'otro') {
    //$('#otro').fadeIn();
    $('#'+otroId).show();
  } else {
    //$('#otro').fadeOut();
    $('#'+otroId).hide();
  }
}

function tiempo (id) {
  if ($('#'+id).find('option:selected')[0].value == '9' || $('#'+id).find('option:selected')[0].value == '10') {
    //$('#tiempo').fadeIn();
    $('#tiempo').show();
  } else {
    $('#tiempo').hide();
  }
}

function otroEquipo (id) {
  if ($('#'+id).is(":checked")) {
    if ($('#'+id).val() == 'otro') {
      //$('#otro').fadeIn();
      $('#otro').show();
    }
  } else {
    if ($('#'+id).val() == 'otro') {
      //$('#otro').fadeOut();
      $('#otro').hide();
    }
  }
}
