function findPosX(obj) {
  var curleft = 0;
  if (obj.offsetParent) {
    while(1) {
      curleft += obj.offsetLeft;
      if(!obj.offsetParent) break;
        obj = obj.offsetParent;
    }
  }
  else if(obj.x)
    curleft += obj.x;
  return curleft;
}

function findPosY(obj) {
  var curtop = 0;
  if(obj.offsetParent) {
    while(1) {
      curtop += obj.offsetTop;
      if(!obj.offsetParent) break;
      obj = obj.offsetParent;
    }
  }
  else if(obj.y)
    curtop += obj.y;
  return curtop;
}

function validaEmail(email) {
	
	var expresionEmail = "^[a-zA-Z0-9_\\.-]+@[a-zA-Z0-9_\\.-]+(\\.[a-zA-Z0-9]{2,4})+$";
	
	if (email.search(expresionEmail) == -1) {
		return false;
	} else {
		return true;
	}
	
}

function isNumber(cadena) {
	
	var numeroOLetra = parseInt(cadena);

	if(isNaN(numeroOLetra)) {
	
		return false;
		
	} else {
	
		return true;
	
	}

}

/**
 * Método que devuelve true o false dependiendo de si se ha excedido del número máximo de caracteres
 * que puede contener un textarea determinado.
 * @param textAreaField objeto con el campo textarea
 * @param maxLength logintud máxima permitida para el campo textarea
 */
function validaTextAreaLength(textAreaField, maxLength) {
	
	if (textAreaField) {
	
		// Bucle para contabilizar el número de saltos de línea que tiene
		// el campo textarea ya que Java lo contabiliza como 2 caracteres
	  var contadorSaltosLinea = 0;
	  for(var i = 0; i < textAreaField.value.length; i++) {
	  	
			if (textAreaField.value.charAt(i) == '\n') {
	      	
	    	contadorSaltosLinea++;
	          
			}
	      
	  }
	
	  if (textAreaField.value.length > (maxLength - contadorSaltosLinea)) {
	  	
			return false;
	      
	  } else {
	  	
			return true;
	  	
	  }
	  
	} else {
		
		return false;
		
	}
	
}

/**
 * Método que devuelve las siglas de un estado de Brasil dado
 * un identificador de región.
 */
function getSiglaEstadoBrasil(regionId) {
	
    if (!regionId) return "";
    if(regionId == 200) return "AC";
    else if(regionId == 201) return "AL";
    else if(regionId == 202) return "AP";
    else if(regionId == 203) return "AM";
    else if(regionId == 204) return "BA";
    else if(regionId == 205) return "CE";
    else if(regionId == 206) return "DF";
    else if(regionId == 207) return "ES";
    else if(regionId == 208) return "GO";
    else if(regionId == 209) return "MA";
    else if(regionId == 210) return "MT";
    else if(regionId == 211) return "MS";
    else if(regionId == 212) return "MG";
    else if(regionId == 213) return "PA";
    else if(regionId == 214) return "PB";
    else if(regionId == 215) return "PR";
    else if(regionId == 216) return "PE";
    else if(regionId == 217) return "PI";
    else if(regionId == 218) return "RJ";
    else if(regionId == 219) return "RN";
    else if(regionId == 220) return "RS";
    else if(regionId == 221) return "RO";
    else if(regionId == 222) return "RR";
    else if(regionId == 223) return "SC";
    else if(regionId == 224) return "SP";
    else if(regionId == 225) return "SE";
    else if(regionId == 226) return "TO";
  	else return "";
  	
}

/**
 * Método que oculta diversas partes del formulario irrelevantes cuando se anote
 * un origen o destino que tenga como país Brasil.
 */
function changeCountry(countrySelectId, provinceLabelId, provinceId, zipLabelId, zipId, ambitId) {

    var countrySelect = document.getElementById(countrySelectId);
    var provinceLabel = document.getElementById(provinceLabelId);
    var provinceSelect = document.getElementById(provinceId);
    var zipLabel = document.getElementById(zipLabelId);
    var zipText = document.getElementById(zipId);
    var ambitSameProvinceOption = document.getElementById(ambitId);

    if (countrySelect && provinceLabel && provinceSelect) {

        var countrySelectValue = countrySelect.value;

        if (countrySelectValue == 55) {

            provinceLabel.style.display = 'none';
            provinceSelect.style.display = 'none';
            zipLabel.style.display = 'none';
            zipText.style.display = 'none';

            if (ambitSameProvinceOption) {

                ambitSameProvinceOption.style.display = 'none';

            }

        } else {

            provinceLabel.style.display = 'block';
            provinceSelect.style.display = 'block';
            zipLabel.style.display = 'block';
            zipText.style.display = 'block';

            if (ambitSameProvinceOption) {

                ambitSameProvinceOption.style.display = 'block';

            }

        }

    }

}

function mostrarDiv (imagen, flotante) {
    var capaImagen = document.getElementById(imagen);
    var capaInfo = document.getElementById(flotante);

    var x = findPosX(capaImagen);
    var y = findPosY(capaImagen);

    capaInfo.style.top = (y + 10) + "px";
    capaInfo.style.left = (x + 10) + "px";
    capaInfo.style.display = 'block';
}

function ocultarDiv(flotante) {
    var capaInfo = document.getElementById(flotante);
    capaInfo.style.display = 'none';
}
