﻿/*
	CrossBrowser - Atualize Seu Navegador
	@author ZONAInternet - http://www.zonainternet.com
	@responsavel Jadson Moreira
	@since 17/02/2011
*/

function crossBrowser() {
		
		//lista dos navegadores, padrão -> (Nome Do Navegador/versao) separados por virgula
		var navegadorLista = {
			//navegadores que devem ser exibido o alerta de browser antigo
			alerta: ["Firefox/3.0","Safari/4","Internet Explorer/6","Chrome/8","Internet Explorer/7"],
			//navegador(es) que devem ser bloqueado o acesso
			semAcesso: [""]
		}
				
		//pegando o nome do navegador;
		var browserName = navigator.appName;
		//declarando variaveis
		var navegador, imagem, titulo, versao;
		//configurando o nome do navegador, imagem, e url para download
		var browser = {
			//navegadores
			name : ["Internet Explorer","Firefox","Chrome","Safari","Opera"],
			//icone dos navegadores
			image : ["ie","firefox","chrome","safari","opera"],
			//url para qual o usuário é redirecionado para baixar o navegador
			url : ["http://windows.microsoft.com/pt-BR/internet-explorer/products/ie/home","http://br.mozdev.org/download/","http://www.google.com/chrome/?hl=pt-BR","http://www.apple.com/br/safari/download/","http://www.opera.com/download/"]
		}
		
		switch(browserName) {
		//passando o nome do navegador para o navegador zero da lista, setando o icone que será usado; versao capturada através de split no atibuto appVersion presente no objeto navigator
		case "Microsoft Internet Explorer": navegador = browser.name[0]; imagem = browser.image[0]; var versao = navigator.appVersion; versao = versao.split("("); versao = versao [1].split(";"); versao = versao[1]; versao = versao.split(" "); versao = versao[2]; versao = versao.split("."); versao = versao[0]; break;
		//passando o nome do navegador para o navegador quatro da lista, setando o icone que será usado; versao capturada através de split no atibuto appVersion presente no objeto navigator
		case "Opera": navegador = browser.name[4]; imagem = browser.image[4]; var versao = navigator.appVersion; versao = versao.split("."); versao = versao[0]; break;
		//continuar daqui dando um loop for pegando o nome do navegador 9 para firefox  11 para chrome e 12 para safari
		case "Netscape": var navegador = (navigator.userAgent); var navegadorSplit = navegador.split(" "); for (i=0;i<=navegadorSplit.length-1; i++)
		{var navegadorSplit2 = navegadorSplit[i].split("/"); 
		switch (navegadorSplit2[0]) {
		//google chrome usa a mesma engine do safari por isso foi preciso fazer o if dentro do case para distinguir os dois navegadores :D
		case "Safari": var chrome = navegadorSplit[i-1]; chrome = chrome.split("/");
		if (chrome[0] == "Chrome") {navegador = browser.name[2]; imagem = browser.image[2]; var versao = chrome[1].split("."); versao = versao[0];}
  		else {navegador = browser.name[3]; imagem = browser.image[3]; var versao = navegadorSplit2[1]; versao.split("."); versao = versao[0];} break;
		case "Firefox": navegador = browser.name[1]; imagem = browser.image[1]; var versao = navegadorSplit2[1]; /*versao = versao.substr(0,versao.length-3);*/ break; 	 	
		default: break;}
	}; break;
	default: navegador = "navegador"; break;
}
		//convertendo a versão para float
		versao = parseFloat(versao);
		
		//configurando caminho das imagens e frases
		var path = "/shp/img/sna/crossbrowser/"; //caminho das imagens
		
		//listando os icones dos navegadores com os links
		function listandoNavegadores() {
			for (i=0;i<browser.name.length;i++) {
			//se o browser.name é diferente do navegador do usuário é listado no box crossBrowserInstall
			if (browser.name[i] != navegador) {
			$(".crossBrowserInstall").append($('<a/>').attr({"target":"blank","href":browser.url[i]}).append($('<img/>').addClass("crossBrowserIco").attr({"src":path+browser.image[i]+".gif","alt":"icone","title":"Atualizar o "+navegador}).css({"border":"none","width":"49px","height":"49px","margin":"auto 10px"})));
			}
			//se o browser.name é igual ao navegador do usuário é listado no box crossBrowserUpdate
			else {
				$(".crossBrowserUpdate").append($('<a/>').attr({"target":"blank","href":browser.url[i]}).append($('<img/>').addClass("crossBrowserIco").attr({"src":path+browser.image[i]+".gif","alt":"icone","title":"Atualizar o "+navegador}).css({"border":"none","width":"49px","height":"49px"})));
			}
		}				
		
		}
		
		//html do box que exibe o alerta ao usuário
		function alertaBrowserAntigo() {
		
		$("body").children().first().before('<div class="crossBrowserBar" style="width:100%; display:none; visibility:hidden; position:relative; border-bottom:5px #fff solid; height:73px; background:#e0e0e0; font-family:Arial;"><img style="margin-top:18px; margin-left:27px; float:left; width:50px; height:47px;" title="alerta" alt="exclamacao" src="'+path+'ico_alerta_crossbrowser.gif" /><p style="width:315px; height:50px; float:left; margin:15px 10px auto 10px; font-weight:bold;"><span style="font-size:14px;">Seu '+navegador+' '+versao+' está DESATUALIZADO</span><br /><span style="font-size:10px">Para uma melhor visualização do site atualize-o<br />ou escolha outro navegador.</span></p><div style="width:127px; height:50px; margin-top:15px; margin-right:20px; float:left;"><strong style="color:#e30d3e; float:left; margin-right:10px; margin-top:18px;">Atualizar</strong><div class="crossBrowserUpdate" style="float:right;"></div></div><div style="float:left; width:385px;"><strong style="font-size:12px; margin-top:25px; color:#666; margin-right:10px; text-align:right; float:left;">Instalar um<br />outro navegador</strong><div class="crossBrowserInstall" style="margin-top:13px;"></div></div><img style="position:absolute; cursor:pointer; top:10px; right:10px; width:13px; height:13px;" class="crossBrowserClose crossBrowserIco" title="Fechar" alt="fechar" src="'+path+'ico_fechar.gif"></div><!--crossBrowserBar-->');
		
		listandoNavegadores();
		
		//abre o alerta com efeito slideDown
		$(".crossBrowserBar").css({visibility: "visible", dipslay: "block"}).slideDown("slow");
		
		//efeito nos icones dos browser e no botao fechar
		$('.crossBrowserIco').mouseover(function() {
			$(this).fadeTo("fast", 0.80);
		 });
		$('.crossBrowserIco').mouseout(function() {
			$(this).fadeTo("fast", 100);
		});
		
		//fecha o alerta com efeito slideUp e remove o código após 1.5 segundos
		$(".crossBrowserClose").click(function() {
			$(".crossBrowserBar").slideUp("slow");
			setTimeout(function() {$(".crossBrowserBar").remove();}, 1500);			
		});
		
		}//fim alertaBrowserAntigo()
		
		//html do box que exibe o alerta bloqueando o acesso do usuário
		function semAcessoBrowserAntigo() {
			$("body").children().first().before('<div class="crossBrowserContainerSemAcesso" style="width:100%; position:absolute; z-index:9999;"><div class="crossBrowserOpacity" style="background:#000; filter:alpha(opacity=60); -moz-opacity: 0.60; opacity: 0.60; position:absolute; z-index:9999; width:100%;"></div><!--crossBrowserOpacity--><div class="crossBrowserAlertaSemAcesso" style="position:relative; z-index:9999; font-family:Arial; width:600px; height:255px; padding:5px; background:#fff;"><div><h5 class="crossBrowserAlertaSemAcessoTitulo" style="height:33px; padding-top:20px; background:#e30d3e; font-size:16px; color:#fff; text-align:center;">Seu '+navegador+' '+versao+' está DESATUALIZADO</h5><p class="crossBrowserAlertaSemAcessoMsg" style="height:84px; text-align:center; color:#333; font-size:14px; padding:23px 30px 0 30px; font-weight:bold; margin-top:5px; background:#e0e0e0;">Assim alguns recursos de navegação do site podem ser prejudicados ou estarem inacessíveis em algum momento. Para uma melhor navegação atualize seu navegador ou instale um outro.</p><div class="crossBrowserAlertaSemAcessoIcones" style="height:80px; padding-left:23px; padding-top:20px;"><div style="width:132px; margin-right:44px; float:left;"><span style="width:70px; color:#e30d3e; font-size:16px; font-weight:bold; float:left; padding-top:20px; clear:none;">Atualizar</span><div class="crossBrowserUpdate" style="width:50px; float:right; clear:none;"></div></div><div style="width:400px; float:left;"><span style="width:110px; padding-top:12px; font-size:12px; float:left; font-weight:bold; color:#666; text-align:right;">Instalar um<br />outro navegador</span><div class="crossBrowserInstall" style="padding-left:10px; float:left;"></div></div></div></div></div></div><!--crossBrowserContainerSemAcesso-->');
			
		//chamando a função para listar os navegadores
		listandoNavegadores();
		
		//efeito opacidade para dar aparencia de lightbox ao div crossBrowserOpacity
		$(".crossBrowserOpacity").css("height",document.documentElement.clientHeight);
		//overflow hidden para corrigir um bug em um dos navegadores
		$("body").css("overflow","hidden");
		
		//centralizando horizontalmente e verticalmente o box que exibe a mensagem de alerta para o bloqueio
		var crossBrowserAlertaMgTopo = (document.documentElement.clientHeight - $('.crossBrowserAlertaSemAcesso').height()) / 2;
		var crossBrowserAlertaMgLeft = (document.documentElement.clientWidth - $('.crossBrowserAlertaSemAcesso').width()) / 2;
		$(".crossBrowserAlertaSemAcesso").css("top",crossBrowserAlertaMgTopo);
		$(".crossBrowserAlertaSemAcesso").css("left",crossBrowserAlertaMgLeft);
					
		}//fim semAcessoBrowserAntigo()
		
		//executa um loop com os navegadores
		for (k=0;k<navegadorLista.semAcesso.length;k++) {
		//usando o padrão com barra para dar um split e assim ter apenas a versão do navegador e ser comparado
		var navegadorVersao = navegadorLista.semAcesso[k].split("/");
		//converte a versão para float tendo assim um padrão para comparação
		parseFloat(navegadorVersao[1]);
		//se o navegador presente na lista for igual ao navegador do usuário e a versão do navegador presente na lista for igual a versão do navegador do usuário
		if (navegadorVersao[0] == navegador && versao <= navegadorVersao[1]) {
			semAcessoBrowserAntigo();	
			return false; //interrompe a execução após executar a função semAcessoBrowserAntigo
		}//fecha if
		}//fecha for
		
		//executa um loop com os navegadores
		for (k=0;k<navegadorLista.alerta.length;k++) {
		//usando o padrão com barra para dar um split e assim ter apenas a versão do navegador e ser comparado
		var navegadorVersao = navegadorLista.alerta[k].split("/");
		//converte a versão para float tendo assim um padrão para comparação
		parseFloat(navegadorVersao[1]);
		//se o navegador presente na lista for igual ao navegador do usuário e a versão do navegador presente na lista for igual a versão do navegador do usuário
		if (navegadorVersao[0] == navegador && versao <= navegadorVersao[1]) {
			alertaBrowserAntigo();	
			return false; //interrompe a execução após executar a função alertaBrowserAntigo
		}//fecha if
		}//fecha for
		
}
