//Ids de elementos 
var headerId = "header";
var sectionContentId = "sectionContent";
var sectionPreloaderId = "sectionPreloader";
var contactButtonId = "contactSendButton";
var contactNameFieldId = "nameField";
var contactCompanyFieldId = "companyField";
var contactPhoneFieldId = "phoneField";
var contactEmailFieldId = "emailField";
var contactCommentsFieldId = "commentsField";
var contactStatusId = "contactStatus";

//Elementos
var headerElement;
var sectionContentElement;
var sectionPreloaderElement;
var contactButtonElement;
var contactNameFieldElement;
var contactCompanyFieldElement;
var contactPhoneFieldElement;
var contactEmailFieldElement;
var contactCommentsFieldElement;
var contactStatusElement;

//Variables
var totalHeaderImages = 0;
var headerImageIndex = -1;
var headerTransitionTime = 8000;
var headerImagesArray;
var commonSeparator = ",";
var currentContent;

//Secciones
var homeHash = "home";
var contactHash = "contact";
var historyHash = "history";
var machineryHash = "machinery";
var servicesHash = "services";
var proyectsHash = "proyects";
var ubicationHash = "ubication";

//Archivos y rutas
var actions = "actions.php";
var homeSection = "home.php";
var contactSection = "contact.php";
var historySection = "history.php";
var machinerySection = "machinery.php";
var servicesSection = "services.php";
var proyectsSection = "proyects.php";
var ubicationSection = "ubication.php";
var adminRoute = "../admin/";
var headerImagesRoute = adminRoute + "uploadedfiles/";

/**
* Metodo inicial
*/
function init() {
  headerElement = document.getElementById(headerId);
  sectionContentElement = document.getElementById(sectionContentId);
  sectionPreloaderElement = document.getElementById(sectionPreloaderId);
  runFile(actions,getHeaderImagesResponse,"action=getHeaderImages&sep="+commonSeparator);
}

/**
* Metodo para monitorear el hash
*/
function startHashMonitor() {
  hashCheck();
  setInterval(hashCheck,50);
}
  
/**
* Metodo para revision de seccion
*/
function hashCheck() {
  if("#" + currentContent != window.location.hash) {
    setSection();
  }
}

/**
* Asignar seccion
*/
function setSection() {
  section = window.location.hash.substr(1);
  if(section == "")
  section = homeHash;  
  
  currentContent = section;
  window.location.hash = section;
  
  if(section == homeHash)
  showHome();
  else if(section == historyHash)
  showHistory();
  else if(section == contactHash)
  showContact();
  else if(section == machineryHash)
  showMachinery();
  else if(section == servicesHash)
  showServices();
  else if(section == proyectsHash)
  showProyects();
  else if(section == ubicationHash)
  showUbication();
}

/**
* Metodo que esconde el preloader de cambio de seccion y muestra el contenido
*/
function hideSectionPreloader() {
  sectionContentElement.style.display = "block";
  sectionPreloaderElement.style.display = "none";
}

/**
* Metodo que muestra el preloader de cambio de seccion y esconde el contenido
*/
function showSectionPreloader() {
  sectionContentElement.style.display = "none";
  sectionPreloaderElement.style.display = "block";
}

/**
* Metodo para recibir nombres de las imagenes de encabezado y guardarlas en arreglo
*/
function getHeaderImagesResponse(response) {
  headerImagesArray = response.split(commonSeparator);
  setNextHeaderImage();
  startHashMonitor();
}

/**
* Obtiene la siguiente imagen de encabezado
*/
function setNextHeaderImage() {
  headerImageIndex = (headerImageIndex + 1 < headerImagesArray.length)? headerImageIndex+1:0;
  headerElement.setImage(headerImagesRoute + headerImagesArray[headerImageIndex]);
}

/**
* Metodo para inicializar el contador para cambiar de imagen
*/
function setChangeHeaderTimer() {
  setTimeout("setNextHeaderImage()",headerTransitionTime);
}

/**
* Mostrar la seccion inicio
*/
function showHome() {
  showSectionPreloader();
  runFile(homeSection,showHomeResponse,"ajax=true");
}

/**
* Cargar contenido de inicio
*/
function showHomeResponse(response) {
  window.location.hash = homeHash;
  currentContent = homeHash;
  document.title = "Teconsa - Inicio";
  sectionContentElement.innerHTML = response;
  headerElement.selectHome();
  hideSectionPreloader();
}

/**
* Mostrar la seccion historia
*/
function showHistory() {
  showSectionPreloader();
  runFile(historySection,showHistoryResponse,"ajax=true");
}

/**
* Cargar contenido de historia
*/
function showHistoryResponse(response) {
  hideSectionPreloader();
  window.location.hash = historyHash;
  currentContent = historyHash;
  document.title = "Teconsa - Historia";
  sectionContentElement.innerHTML = response;
  headerElement.selectHistory();
}

/**
* Mostrar la seccion contacto
*/
function showContact() {
  showSectionPreloader();
  runFile(contactSection,showContactResponse,"ajax=true");
}

/**
* Cargar contenido de contacto
*/
function showContactResponse(response) {
  hideSectionPreloader();
  window.location.hash = contactHash;
  currentContent = contactHash;
  document.title = "Teconsa - Contacto";
  sectionContentElement.innerHTML = response;
  contactButtonElement = document.getElementById(contactButtonId);
  contactNameFieldElement = document.getElementById(contactNameFieldId);
  contactCompanyFieldElement = document.getElementById(contactCompanyFieldId);
  contactPhoneFieldElement = document.getElementById(contactPhoneFieldId);
  contactEmailFieldElement = document.getElementById(contactEmailFieldId);
  contactCommentsFieldElement = document.getElementById(contactCommentsFieldId);
  contactStatusElement = document.getElementById(contactStatusId);
  checkContactForm();
  headerElement.selectContact();
}

/**
* Validar la forma
*/
function checkContactForm() {
  contactButtonElement.disabled = "disabled";
  if(contactNameFieldElement.value == "") {
  contactShowMessage("Escribe tu nombre");
  return;
  }
  if(contactCompanyFieldElement.value == "") {
  contactShowMessage("Escribe el nombre de tu empresa");
  return;
  }
  if(contactPhoneFieldElement.value == "") {
  contactShowMessage("Escribe tu teléfono");
  return;
  }
  if(contactEmailFieldElement.value == "") {
  contactShowMessage("Escribe tu correo electrónico");
  return;
  }
  if(contactCommentsFieldElement.value == "") {
  contactShowMessage("Escribe tu mensaje o comentarios");
  return;
  }
  
  contactShowMessage("Presiona el boton Enviar");
  contactButtonElement.disabled = "";
}

/**
* Mostrar mensaje en el contacto
*/
function contactShowMessage(message) {
  contactStatusElement.innerHTML = message;
}

/**
* Mostrar proceso en el contacto
*/
function contactShowProcess(message) {
  contactStatusElement.innerHTML = "<img class=\"icon\" src=\"../images/processIcon.gif\"/> "+message;
}

/**
* Mostrar error en el contacto
*/
function contactShowError(message) {
  contactStatusElement.innerHTML = "<img class=\"icon\" src=\"../images/errorIcon.gif\"/> "+message;
}

/**
* Enviar datos de contacto
*/
function sendContactData() {
  contactButtonElement.disabled = "disabled";
  contactNameFieldElement.disabled = "disabled";
  contactCompanyFieldElement.disabled = "disabled";
  contactPhoneFieldElement.disabled = "disabled";
  contactEmailFieldElement.disabled = "disabled";
  contactCommentsFieldElement.disabled = "disabled";
  contactShowProcess("Los datos están siendo enviados");
  runFile(actions,sendContactDataResponse,"action=sendContactData&name="+contactNameFieldElement.value+"&company="+contactCompanyFieldElement.value+"&phone="+contactPhoneFieldElement.value+"&email="+contactEmailFieldElement.value+"&comments="+contactCommentsFieldElement.value);
  return false;
}

/**
* Recibir respuesta del envio de contacto
*/
function sendContactDataResponse(response) {
  if(response == "1") {
    contactButtonElement.disabled = "disabled";
    contactNameFieldElement.disabled = "";
    contactCompanyFieldElement.disabled = "";
    contactPhoneFieldElement.disabled = "";
    contactEmailFieldElement.disabled = "";
    contactCommentsFieldElement.disabled = "";
    contactNameFieldElement.value = "";
    contactCompanyFieldElement.value = "";
    contactPhoneFieldElement.value = "";
    contactEmailFieldElement.value = "";
    contactCommentsFieldElement.value = "";
    contactShowMessage("El correo fué enviado exitosamente.");
  } else {
    alert(response);
    contactButtonElement.disabled = "";
    contactShowError("El correo no pudo ser enviado, intenta más tarde");
  }
}

/**
* Mostrar maquinaria
*/
function showMachinery() {
  showSectionPreloader();
  runFile(machinerySection,showMachineryResponse,"ajax=true");
}

/**
* Cargar contenido de la seccion maquinaria
*/
function showMachineryResponse(response) {
  hideSectionPreloader();
  window.location.hash = machineryHash;
  currentContent = machineryHash;
  document.title = "Teconsa - Maquinaria";
  headerElement.selectMachinery();
  sectionContentElement.innerHTML = response;
}

/**
* Mostrar servicios
*/
function showServices() {
  showSectionPreloader();
  runFile(servicesSection,showServicesResponse,"ajax=true");
}

/**
* Cargar contenido de la seccion servicios
*/
function showServicesResponse(response) {
  hideSectionPreloader();
  window.location.hash = servicesHash;
  currentContent = servicesHash;
  document.title = "Teconsa - Servicios";
  headerElement.selectServices();
  sectionContentElement.innerHTML = response;
}

/**
* Mostrar proyectos
*/
function showProyects() {
  showSectionPreloader();
  runFile(proyectsSection,showProyectsResponse,"ajax=true");
}

/**
* Cargar contenido de la seccion servicios
*/
function showProyectsResponse(response) {
  hideSectionPreloader();
  window.location.hash = proyectsHash;
  currentContent = proyectsHash;
  document.title = "Teconsa - Proyectos";
  headerElement.selectProyects();
  sectionContentElement.innerHTML = response;
}

/**
* Mostrar la seccion de ubicacion
*/
function showUbication() {
  showSectionPreloader();
  runFile(ubicationSection,showUbicationResponse,"ajax=true");
}

/**
* Cargar contenido de ubicacion
*/
function showUbicationResponse(response) {
  hideSectionPreloader();
  window.location.hash = ubicationHash;
  currentContent = ubicationHash;
  document.title = "Teconsa - Ubicación";
  headerElement.selectUbication();
  sectionContentElement.innerHTML = response;
}

