// JavaScript Document

//Inicio declaraciones
var pagina_actual; //Alamacena la página actual
var idioma_actual; //Alamacena el idiomia actual, cadena vacia significa el idioma principal, es decir, español.
var ancho_pag_min = 1000; //Establece el ancho mínimo de página
var mensaje_traduccion = '<br />Traduciendo p&aacute;gina...<br/><img src="images/loading.gif" alt="Traduciendo p&aacute;gina..."/>';
var mensaje_traduccion_en = '<br />Translating page...<br/><img src="images/loading.gif" alt="Traslating page..."/>';
var mensaje_carga_pag = '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Cargando...<br/><div align="center"><img src="images/loading.gif" width="220" height="19" alt="Cargando..." /></div>';
var mensaje_carga_pag_en = '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Loading...<br/><div align="center"><img src="images/loading.gif" width="220" height="19" alt="Loading..." /></div>';
var mensaje_envia_form = '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Enviando formulario...<br/><div align="center"><img src="images/loading.gif" width="220" height="19" alt="Enviando..." /></div>';
var mensaje_envia_form_en = '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Sending form...<br/><div align="center"><img src="images/loading.gif" width="220" height="19" alt="Sending..." /></div>';
//Fin declaraciones


function inicializa(url_inicial) //acciones que se ejecutan nada más cargar la página inicial
	{
	idioma_actual = '';
	pagina_actual = url_inicial;
	MM_preloadImages('images/boton_sobre_compania.jpg','images/boton_sobre_contactar.jpg','images/boton_sobre_lineas_de_actividad.jpg','images/boton_sobre_productos_y_servicios.jpg','images/boton_sobre_tecnologias.jpg','images/boton_sobre_empleo.jpg','images/boton_activo_compania.jpg','images/boton_activo_contactar.jpg','images/boton_activo_lineas_de_actividad.jpg','images/boton_activo_productos_y_servicios.jpg','images/boton_activo_tecnologias.jpg','images/boton_activo_empleo.jpg','images/boton_compania.jpg','images/boton_contactar.jpg','images/boton_lineas_de_actividad.jpg','images/boton_productos_y_servicios.jpg','images/boton_tecnologias.jpg','images/boton_empleo.jpg','images/loaging.gif');
	}


function calcula_posicion() //Función para colocar la tapa en función del tamaño de la ventana
	{
	var arrayPageSize = getPageSize();
	if(arrayPageSize[0]>=ancho_pag_min)
		{
		$('tapa_idioma').style.left = ((arrayPageSize[0]/2)-480)+'px';
		$('mensaje_idioma').style.left = ((arrayPageSize[0]/2)-120)+'px';
		}
	else
		{
		$('tapa_idioma').style.left = '0px';
		$('mensaje_idioma').style.left = '375px';
		}
	}
	

function getPageSize() //Función de calculo del tamaño de la ventana
	{
	var xScroll, yScroll, windowWidth, windowHeight;
	
	if (window.innerHeight && window.scrollMaxY) 
		{	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
		}
	else if (document.body.scrollHeight > document.body.offsetHeight)
			{ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
			} 
		else 
			{ // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
			}
	if (self.innerHeight) 
		{	// all except Explorer
		if(document.documentElement.clientWidth)
			{
			windowWidth = document.documentElement.clientWidth; 
			} 
		else 
			{
			windowWidth = self.innerWidth;
			}
		windowHeight = self.innerHeight;
		} 
	else if (document.documentElement && document.documentElement.clientHeight) 
			{ // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
			} 
		else if (document.body) 
				{ // other Explorers
				windowWidth = document.body.clientWidth;
				windowHeight = document.body.clientHeight;
				}	
	if(yScroll < windowHeight)
		{
		pageHeight = windowHeight;
		} 
	else 
		{
		pageHeight = yScroll;
		}
	if(xScroll < windowWidth){	
		pageWidth = xScroll;} 
	else 
		{
		pageWidth = windowWidth;
		}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
	}


function detectBrowser() //Función para detectar el navegador del cliente
	{
    var ie = document.all != undefined;
    var opera = window.opera != undefined;
    
    if (opera) return "opera";
    if (ie) return "ie";
    if ((window)&&(window.netscape)&&(window.netscape.security)) {
      if (window.XML) 
	  	{
        return "firefox";
		}
      else return "firefox";
	  }
    return "ie"; 
	}


function cambia_menu(elemento,url) //Gestión del menu, cambio de imagenes
	{
	var arr_elem_menu = document.getElementsByClassName('elemento_menu');
	var tam_elem_menu = (document.getElementsByClassName('elemento_menu').length - 1);
	if(url!=pagina_actual)
		{
		for (i=0;i<=tam_elem_menu;i=i+1) 
			{
			if(arr_elem_menu[i].id != $(elemento).id)
				{
				arr_elem_menu[i].update('<a href="' + arr_elem_menu[i].id + '.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage(\'' + arr_elem_menu[i].id + '_img\',\'\',\'images/boton_sobre_' + arr_elem_menu[i].id + idioma_actual + '.jpg\',1)"><img src="images/boton_' + arr_elem_menu[i].id + idioma_actual + '.jpg" alt="Ir a ' + arr_elem_menu[i].id.replace(/_/g," ") + '" name="' + arr_elem_menu[i].id + '_img" border="0" id="' + arr_elem_menu[i].id + '_img" /></a>');
				}
			else
				{
				$(elemento).update('<img src="images/boton_activo_' + $(elemento).id + idioma_actual + '.jpg" alt="Ir a ' + $(elemento).id.replace(/_/g," ") + '_img" border="0"/>');
				}
			}
		carga_contenidos(url);
		}
	pagina_actual = url;
	}


function carga_contenidos(url) //Carga los contenidos desde la url marcada a la div central
	{
	var aleatorio=Math.random(); 
	var txt_izquierda;
	var txt_central;
	var direccion_final;
	var arr_url = url.split(".");
	
	direccion_final = arr_url[0] + idioma_actual + "." + arr_url[1];
	Element.update("contenidos_barra", '');
	new Effect.Opacity("contenidos_barra", {duration:0.6, from:0.0, to:1.0});
	Element.update("carga_pag", eval('mensaje_carga_pag' + idioma_actual));
	new Effect.Opacity("carga_pag", {duration:0.6, from:0.0, to:1.0});
	new Ajax.Request(direccion_final+'?nocache='+aleatorio, 
					{
					asynchronous:true,
					evalScripts:true,
					method: 'get', 
					onSuccess: function(transport) 
					 	{
						txt_izquierda = transport.responseText.split("<!-- ## -->");
						Element.update("contenidos_barra", txt_izquierda[1]);
						txt_central = transport.responseText.split("<!-- ### -->");
						Element.update("carga_pag", txt_central[1]);
						},
					onFailure: function(failure)
					 	{
						Element.update("carga_pag", 'error_'+failure.status);
						}
					});
	}
	

function carga_contenidos_capa(url,capa) //Carga los contenidos desde la url marcada a la div marcada
	{
	var aleatorio=Math.random(); 
	var direccion_final;
	
	direccion_final = url;
	Element.update(capa, eval('mensaje_carga_pag' + idioma_actual));
	new Effect.Opacity(capa, {duration:0.6, from:0.0, to:1.0});
	new Ajax.Request(direccion_final+'?nocache='+aleatorio, 
					{
					asynchronous:true,
					evalScripts:true,
					method: 'get', 
					onSuccess: function(transport) 
					 	{
						Element.update(capa, transport.responseText);
						},
					onFailure: function(failure)
					 	{
						Element.update(capa, 'error_'+failure.status);
						}
					});
	}
	
	
function cambia_idioma(idioma) //Gestión de los idiomas, cambio de idiomas
	{
	var direccion_final;
	var arr_url = pagina_actual.split(".");
	
	
	if (idioma=='')
		{direccion_final = pagina_actual;}
	else
		{direccion_final = arr_url[0] + idioma + "." + arr_url[1];}
	idioma_actual = idioma;
	calcula_posicion();
	Element.update('mensaje_idioma', eval('mensaje_traduccion' + idioma_actual));
	Effect.Appear('tapa_idioma', { duration: 0.3, from: 0.0, to: 0.8 });
	Effect.Appear('mensaje_idioma', { duration: 0.3, from: 0.0, to: 1.0 });
	carga_idioma('contenidos_pagina',direccion_final);
	}

	
function carga_idioma(destino,url) //Carga los contenidos desde la url marcada a la div marcada
	{
	var aleatorio=Math.random(); 
	var txt_final;
	
	new Ajax.Request(url+'?nocache='+aleatorio, 
					{
					method: 'get', 
					onSuccess: function(transport) 
					 	{
						txt_final = transport.responseText.split("<!-- # -->");
						Element.update(destino, txt_final[1]);
						Effect.Fade('tapa_idioma', { duration: 0.3, from: 0.8, to: 0.0 });
						Effect.Fade('mensaje_idioma', { duration: 0.2, from: 1.0, to: 0.0 });
						},
					onFailure: function(failure)
					 	{
						Element.update(destino, 'error_'+failure.status);
						}
					});
	}

function envia_formulario(formulario) //envia un formulario
	{
	var aleatorio=Math.random(); 
	var direccion_final;
	var parametros;
	
	direccion_final = $(formulario).action + '?nocache=' + aleatorio;
	parametros = $(formulario).serialize();
	Element.update("carga_pag", eval('mensaje_envia_form' + idioma_actual));
	new Ajax.Request(direccion_final,
					{
					method: 'post', 
					parameters:parametros,
					onSuccess: function(transport) 
					 	{
						Element.update("carga_pag", transport.responseText);
						},
					onFailure: function(failure)
					 	{
//						Element.update("carga_pag", 'error_'+failure.status);
						Element.update("carga_pag", failure.responseText);
						}
					});
	return false;
	}
	
	
function envia_formulario_clientes(formulario) //envia un formulario
	{
	var aleatorio=Math.random(); 
	var direccion_final;
	var parametros;
	
		direccion_final = $(formulario).action + '&nocache=' + aleatorio;
		parametros = $(formulario).serialize();
		Element.update("contenido_clientes", eval('mensaje_envia_form' + idioma_actual));
		new Ajax.Request(direccion_final,
						{
						method: 'post', 
						parameters:parametros,
						onSuccess: function(transport) 
							{
							Element.update("contenido_clientes", transport.responseText);
							},
						onFailure: function(failure)
							{
	//						Element.update("carga_pag", 'error_'+failure.status);
							Element.update("contenido_clientes", failure.responseText);
							}
						});
	return false;
	}

function validarEmail(valor)
	{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))
		{
		return (true);
		}
	else 
		{
		return (false);
		}
	}

	
function validar_contacto(formulario) //Valida el formulario de envío de contacto
	{
	if (formulario == "form_contacto")
		{
		if (($(formulario).persona.value == "") || ($(formulario).persona.value == "nombre*"))
			{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - El nombre de contacto no puede estar vacio, es un campo obligatorio</div>');
			new Effect.Highlight('persona', {startcolor : '#C00000'});
			return false;
			}
		else{
			if (($(formulario).email.value == "") || ($(formulario).email.value == "correo electronico*") || (validarEmail($(formulario).email.value) == false))
				{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - Debe introducir un email correcto, es un campo obligatorio</div>');
				new Effect.Highlight('email', {startcolor : '#C00000'});
				return false;
				}
			else
				{
				if (($(formulario).telefono.value == "") || ($(formulario).telefono.value == "telefono*"))
				{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - El telefono de contacto no puede estar vacio, es un campo obligatorio</div>');
				new Effect.Highlight('telefono', {startcolor : '#C00000'});
				return false;
					}
				else
					{
					if (($(formulario).consulta.value == "") || ($(formulario).consulta.value == "mensaje*"))
						{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - El campo de mensaje nos indica por que contacta con nosotros, es un campo obligatorio</div>');
						new Effect.Highlight('consulta', {startcolor : '#C00000'});
						return false;
						}
					else
						{return true}	
					}
				}	
			}
		}
	if (formulario == "form_contacto_eng")
		{
		if (($(formulario).persona.value == "") || ($(formulario).persona.value == "name*"))
			{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - Contact name can not be empty</div>');
			new Effect.Highlight('persona', {startcolor : '#C00000'});
			return false;
			}
		else{
			if (($(formulario).email.value == "") || ($(formulario).email.value == "email*") || (validarEmail($(formulario).email.value) == false))
				{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - Email can not be empty</div>');
				new Effect.Highlight('email', {startcolor : '#C00000'});
				return false;
				}
			else
				{
				if (($(formulario).telefono.value == "") || ($(formulario).telefono.value == "telephone*"))
				{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - Telephone can not be empty</div>');
				new Effect.Highlight('telefono', {startcolor : '#C00000'});
				return false;
					}
				else
					{
					if (($(formulario).consulta.value == "") || ($(formulario).consulta.value == "text*"))
						{Element.update('form_contact', '<div style="width:100%; background-color:#C30; color:#FFF; font-size:14px; font-weight:bolder; text-align:center">Error - Text can not be empty</div>');
						new Effect.Highlight('consulta', {startcolor : '#C00000'});
						return false;
						}
					else
						{return true}	
					}
				}	
			}
		}
	}


function envia_contacto(formulario) //envia un formulario de contacto
	{
	var aleatorio=Math.random(); 
	var direccion_final;
	var parametros;
	
	Element.update('form_contact', '<img src="images/loading.gif" width="220" height="19" alt="Validando formulario" />');
	if (validar_contacto(formulario))
		{
		direccion_final = $(formulario).action + '?nocache=' + aleatorio;
		parametros = $(formulario).serialize();
		//Element.update('columna_derch' + idioma_actual, eval('mensaje_carga_pag' + idioma_actual));
		new Ajax.Request(direccion_final,
						{
						method: 'post', 
						parameters:parametros,
						onSuccess: function(transport) 
							{
							Element.update('form_contact', transport.responseText);
							},
						onFailure: function(failure)
							{
							//Element.update('columna_derch' + idioma_actual, failure.responseText);
							}
						});
		}
	return false;
	}
	
function acordeon(elemento)//Expande las listas
	{
	var elementodiv = "div_"+elemento;
	var elementoimg = "img_"+elemento;

	element = document.getElementById(elementodiv).style;
	if (element.display == 'none')
		{
		Effect.BlindDown(elementodiv,{duration:1});
		$(elementoimg).src='images/simbolo_expandir.gif';
		}
	else
		{
		Effect.BlindUp(elementodiv);
		$(elementoimg).src='images/simbolo_contraer.gif';
		}
	}

function carga_mapa() {//Carga el mapa de GoogleMaps
      if (GBrowserIsCompatible()) {
       
		var map = new GMap2(document.getElementById("map")); 
   map.addControl(new GSmallMapControl()); 
   map.addControl(new GMapTypeControl()); 
   map.setCenter(new GLatLng(40.42987, -3.714012), 15);
   		var point = new GPoint (-3.714012, 40.42987);
      	var marker = new GMarker(point);
   map.addOverlay(marker);
   }
   }
	
//Cambio de imagenes en el menú y precarga de las mismas-------------------------------
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//Fin cambio de imagenes--

//Inicio Captcha
function RefreshImage(valImageId) {
	var objImage = document.images[valImageId];
	if (objImage == undefined) {
		return;
	}
	var now = new Date();
	objImage.src = objImage.src.split('?')[0] + '?x=' + now.toUTCString();
}
//Fin Captcha
