//Funções para requisitar páginas

var carregar;

function ObjAjax(){
  try{return new XMLHttpRequest()}
  catch(e){try{return new ActiveXObject("Msxml2.XMLHTTP")}
  catch(e){return new ActiveXObject("Microsoft.XMLHTTP")}}
  return null;
}

function navegar(page, divs){
  ajax = new ObjAjax();
  var div = document.getElementById(divs);

  ajax.onreadystatechange = function(){
    if(ajax.readyState == 4){div.innerHTML=ajax.responseText;}

  }
  ajax.open("GET",page,true);
  ajax.send(null);
}

//Função para visualizar div
function mostra(id)
{
	var cmd = document.getElementById(id);       
	if(cmd.style.visibility=="hidden") {        
		cmd.style.visibility = "visible";       
	} else {         
		cmd.style.visibility = "hidden";    
	} 
}

//Função para expandir e esconder div solucoes
function mostrar(id)
{
	var cmd = document.getElementById(id);       
	 if(cmd.style.display=="none"){
            cmd.style.display="block";
        }
        else{
            cmd.style.display="none";
        }   
}

//Função para saber qual empresa deve ser visualizada
function verificaEmpresa(empresas)
{
	selecionado = document.getElementById(empresas);
	valor = selecionado.options[selecionado.selectedIndex].value;
	
	if(valor != "Selecione")
	{
		navegar("http://www.worldtech.com.br/newsite/" + valor + ".htm", "empresa");
	}
}


   
//Função para carregar mapa
function load() {
    if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map"));
    var worldtech = new GLatLng(-23.608355, -46.665153);
    //var marcador = criarMarcador(worldtech,"WorldTech");
    //map.addOverlay(marcador);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(worldtech, 17);
    
     // Cria um novo marcador que sera exibido no ponto p solicitado
    marcador = new GMarker(worldtech);

    // Adiciona o marcador ao mapa
    map.addOverlay(marcador);

    // Exibe uma caixa de informação com o texto informado
    // Note que esse método aceita qualquer string com uma
    // formatação html arbitrária
    marcador.openInfoWindowHtml("<b>WorldTech</b>&nbsp;<img src=imagens/cpm.gif>");

    }
}


// Todas as variáveis utilizadas no sistema

// Referência para a instância de GMap2
var mapaobj;

// Referência para a instância de GClientGeocoder
var geocoder; 

// Array para mapear níveis de Zoom com a precisão do resultado
// Sinta-se livre para realizar o mapeamento achar mais conveniente.
// Note que quanto maior o número, maior o nível de zoom.
var nivelZoom = [];
    nivelZoom[0] = 2;
    nivelZoom[1] = 8;
    nivelZoom[2] = 9;
    nivelZoom[3] = 10;
    nivelZoom[4] = 12;
    nivelZoom[5] = 13;
    nivelZoom[6] = 14;
    nivelZoom[7] = 15;
    nivelZoom[8] = 16;

// Função chamada ao carregar a página HTML
function inicializa() {

    geocoder = new google.maps.Geocoder();     
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions =
    {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        streetViewControl: true
    }
    try {
        map = new google.maps.Map(document.getElementById("mapa"), myOptions);
        realizaConsulta();
        mostra("mapas");
    }
    catch (err) {
    }
}

// Função chamada quando o usuário envia a consulta
function realizaConsulta() {
    // Recebe o endereço digitado no campo 'consulta' do form
    var endereco = "Rua Juquis, 273";
    if (geocoder) {
        geocoder.geocode(
    { 'address': endereco },
    function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            map.setCenter(results[0].geometry.location);
            var wtMarkerImage = new google.maps.MarkerImage('http://www.worldtech.com.br/newsite2010/images/wtMarker.gif');
            var wtMarker = new google.maps.Marker({ position: results[0].geometry.location, map: map, icon: wtMarkerImage, title: 'WorldTech' }); 
        }
        else {
            alert("Nâo foi possível localizar o endereço solicitado porque: " + status);
        }
    });
    }
}

// Callback para tratar o retorno de uma chamada ao método
// getLocations() do objeto geocoder. O parâmetro resposta será
// usado para acessar os dados retornados. resolverEnderecos também faz 
// uso da função listarLocais que será explicada adiante.
function resolverEnderecos(resposta) {

    // Retira todos os marcadores existentes no mapa.
    mapaobj.clearOverlays(); 
        
    // Verifica o status da resposta
    if (!resposta || resposta.Status.code != G_GEO_SUCCESS) {

        // Caso a resposta seja inválida, exibe o motivo.
        alert("Nao foi possivel localizar o endereco solicitado");
        // Os códigos de erro são úteis para procurer o motivo
        // exato da falha na consulta de endereços na documentação
        // do GoogleMaps API
        alert("Código de erro: " +  resposta.Status.code);

    } else {

        // Caso o status da resposta seja G_GEO_SUCCESS,
        // iremos navegar em todos os resultados retornados,
        // que podem ser vários em caso de uma consulta ambígüa

        // Extrai o número de resultados retornados. O atributo
        // Placemark matém toda a informação de que precisamos
        // acerca das localidades encontradas.
       

          // Caso haja um único resultado, 

          // Obtém uma referência ao endereço retornado
          var local = resposta.Placemark[0];

          // Extrai o um objeto GLatLng representando as coordenadas
          // do endereço solicitado
          var ponto = local.Point.coordinates;

          // Extrai a precisão do endereço. Accuracy é um número que
          // indica se o endereço retornado corresponde a um país, 
          // provincial, estado, cidade, bairro, rua, etc. Depende da
          // consulta que foi realizada. Com essa informação em mãos,
          // podemos decidir qual o nível de zoom mais adequado
          var acc = resposta.Placemark[0].AddressDetails.Accuracy;

          // Chama a função centralizaMapa passando como argumento
          // as coordenadas do ponto (posição 1 para latitude, 0 para
          // longitude); O endereço completo do ponto encontrado; a 
          // precisão do endereço para controlar o nível de zoom
          centralizaMapa(ponto[1],ponto[0],resposta.Placemark[0].address, acc);
    }
}

// Função lista as localizações encontradas na consulta.
// Os parâmetros são: alvo --> a referência DOM da div que receberá os 
// endereços; placemark --> referência a um array de objetos representando as
// localidades encontradas
function listarLocais(alvo, placemark) {

    //Começa a escrita na div informando a quantidade de resultados
    // encontrados. O máximo retornado pelo geocoder são seis endereços
    alvo.innerHTML = "<p> A pesquisa retornou " +
                         placemark.length + " resultado(s): </p>";

    // Loop para escrever informações de cada endereço
    for (var i=0; i<placemark.length; ++i) {

        // Obtém a informação da Unidade Federativa, no caso de um 
        // endereço no Brasil
        var uf = placemark[i].AddressDetails.Country
                            .AdministrativeArea.AdministrativeAreaName;	

        // Obtém a informação sobre a precisão do endereço  
	var acc = placemark[i].AddressDetails.Accuracy;

        // Obtém um ponto GLatLng com as coordenadas da localidade i
        var p = placemark[i].Point.coordinates;
	  
        // Obtém o endereço textual completo
        var info = placemark[i].address;
	
        // Começa a escrita de um link para a função centralizaMapa do
        // endereço i encontrado
        alvo.innerHTML +="<a href='javascript:centralizaMapa(" + p[1] + 
                         "," + p[0] + ",\"" + info + "\", " + acc +
                         ")'>" + placemark[i].address +"</a><br />";
      }
  } 

// Função para centralizar o mapa no ponto solicitado
// Parâmetros: x à latitude; y à longitude; info à Um texto que será
// exibido em um quadro informativo que aponta para o endereço;
// acc à a precisão do endereço para utilizar o zoom adequado
function centralizaMapa(x, y, info, acc) {
   
    // Cria um ponto GLatLng
    var p = new GLatLng(x,y);
    
    // Obtém o nível de zoom conforme a precisão do endereço
    var zoom = nivelZoom[acc];

    // Define o novo centro do mapa e o seu novo nível de zoom
    mapaobj.setCenter(new GLatLng(x + 0.002,y + 0.001),zoom);

    // Cria um novo marcador que sera exibido no ponto p solicitado
    marcador = new GMarker(p);

    // Adiciona o marcador ao mapa
    mapaobj.addOverlay(marcador);

    // Exibe uma caixa de informação com o texto informado
    // Note que esse método aceita qualquer string com uma
    // formatação html arbitrária
    marcador.openInfoWindowHtml("<img src=imagens/logowtc.gif height=70 width=215>");

  }
  
  function mapaNormal()
  {
	mapaobj.setMapType(G_NORMAL_MAP);
  }
  function mapaSatelite()
  {
	mapaobj.setMapType(G_SATELLITE_TYPE);
  }
  
function validaForm(){
	//validar nome
	nome = document.getElementById("nome");
	if (nome.value == ""){
		alert("O campo " + nome.name + " deve ser preenchido!");
		nome.focus();
		return false;
	}
	//validar empresa
	empresa = document.getElementById("empresa");
	if (empresa.value == ""){
		alert("O campo " + empresa.name + " deve ser preenchido!");
		empresa.focus();
		return false;
	}
	//validar endereco
	endereco = document.getElementById("endereco");
	if (endereco.value == ""){
		alert("O campo " + endereco.name + " deve ser preenchido!");
		endereco.focus();
		return false;
	}
	//validar email
	email = document.getElementById("email");
	if (email.value == ""){
		alert("O campo " + email.name + " deve ser preenchido!");
		email.focus();
		return false;
	}
	//validar email(verificao de endereco eletronico)
	parte1 = email.value.indexOf("@");
	parte2 = email.value.indexOf(".");
	parte3 = email.value.length;
	if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
		alert("O campo " + email.name + " deve ser conter um endereco eletronico!");
		email.focus();
		return false;
	}
	//validar telefone
	telefone = document.getElementById("telefone");
	if (telefone.value == ""){
		alert("O campo " + telefone.name + " deve ser preenchido!");
		telefone.focus();
		return false;
	}
	return true;
}

function Validar(v)
{
	var keynum;
	var keychar;
	var numcheck;
	
	if(window.event) // IE
	{
	  keynum = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
	  keynum = e.which;
	}
	keychar = String.fromCharCode(keynum);
	numcheck = /\d/;
	return v.replace(/\D/g,"");
}

function validaTel(keypress, objeto)
{
	campo = document.getElementById(objeto);
	
	//possibilita o uso no IE e no Netscape/Firefox/Opera
	(window.event)?keypress = event.keyCode : keypress = keypress.which;
	

	separador1 = '(';
	separador2 = ') ';
	separador3 = '-';
	conjunto1 = 1;
	conjunto2 = 3;
	conjunto3 = 9;
	if (campo.value.length == conjunto1)
	{
	  campo.value = separador1 + campo.value;
	}
	if (campo.value.length == conjunto2)
	{
	  campo.value = campo.value + separador2;
	}
	if (campo.value.length == conjunto3)
	{
	  campo.value = campo.value + separador3;
	}
}

function abrir_DataCenter()
{
	window.open("Form_DataCenter.htm");
}

var brw = Browser();
 
 function Browser()
 {
  if (navigator.appName == 'Microsoft Internet Explorer')
    return 'E';
  else
    return 'N';
 }

function isNumeric(campo, e)
 {
  //campo = document.getElementById(objeto);
  txtsel = (brw == 'E') ? document.selection.createRange().text : document.getSelection();
  
  if (txtsel != 'undefined')
     if (txtsel == campo.value)
        campo.value = '';

  evento = (brw == 'E') ? event.keyCode : e.which;
  
  if (evento == 8)
    {
     if (brw =='E') event.returnValue = true;
     return true;
    }
  else if (evento < 48 || evento > 57)
    {
     (brw == 'E') ? event.returnValue = false : e.preventDefault();
     return false;
    }
  else
    {
     if (brw =='E') event.returnValue = true;
     return true;
    }
 }

 function ValidNum(campo, e)
 {
  if (isNumeric(campo, e)==true)
    {
     evento = (brw == 'E') ? event.keyCode : e.which;
     
     conteudo = campo.value;
	 //validaTel(campo);
	num = conteudo.replace(/(\.)/gi,'');

    if (num.length > 2)
       {
        qtdPonto = parseInt(num.length / 3);
        digIni = num.length % 3;
        
        if (digIni == 0)
          {
           qtdPonto--;
           digIni = 3;
          }

        resultado = num.substring(0,digIni);

        for (ct=0; ct < qtdPonto; ct++)
           {
            resultado += '.'+num.substring(digIni+(ct*3),digIni+(ct*3)+3);
           }

        campo.value = resultado;
       }
    }
 }
 
function mascara(o){
v_obj=o
setTimeout("execmascara(v_obj)",1)
}

function execmascara(v_obj)
{
	v_obj.value = telefone(v_obj.value);
}
 
function telefone(v){
v=v.replace(/\D/g,"") //Remove tudo o que não é dígito
v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca hífen entre o quarto e o quinto dígitos
return v
}

function viewChat(chat) {
    var divChat = document.getElementById(chat);
    divChat.style.display = divChat.style.display == "none" || divChat.style.display == "" ? "block" : "none";
}

