var InstanciaNav = null;
function Navega() {
	/// <summary>
	/// Armazena o histórico de páginas navegadas.
	/// <access mode="private"/>
	this.Historico = Array();

	/// <summary>
	/// Índice do array de histórico. Utilizado pelos métodos "Voltar" e "Avançar".
	/// <access mode="private"/>
	/// </summary>
	this.IndiceNav = -1;

	/// <summary>
	/// Alvo onde as páginas devem ser carregadas. Tipicamente um <DIV> ou <SPAN>
	/// <access mode="public"/>
	/// </summary>
	this.Alvo = null;


	/// <summary>
	/// Define se o simulador de decoração está ativo na página
	/// <access mode="public"/>
	/// </summary>
	this.SimuladorAtivo = false;

	/// <summary>
	/// Navega para uma URL.
	/// <access mode="public"/>
	/// <param name="url">Url para navegar</param>
	/// </summary>
	this.Ir = function(url,form) {	
		
	    pag = url;
	
	    /*
	    pag = url;
	    if (url.toLowerCase().indexOf("simulador") < 0) {
	        var DivSimulador = document.getElementById("DivSimulador");
	        if(DivSimulador.style.display == "block") {
				(navigator.appName.indexOf("Microsoft") != -1 ? window["simulador"] : document["simulador"]).saidaSimulador();
				pag = url;
				return;
	        }
	    }
	    */
	    
		for(var i=this.Historico.length-1;i>this.IndiceNav;i--) {
			this.Historico[i] = null;
		}
		var hist = {
			"url" : url,
			"strPost" : ""
		}
		if (form != undefined) {
			var frm = new Form();
			hist.strPost = frm.GerarStrPost(form);
		}
		
		var divLock = document.getElementById("DivLock");
		var pos = this.objPos(document.getElementById("addr"));

		divLock.style.display = "block";
		divLock.style.height = pos[1]+76 +"px";
		
		
		this.CarregarUrl(url,hist.strPost);
		this.Historico[++this.IndiceNav] = hist;
		
		//urchinTracker(url);

	}

	/// <summary>
	/// Volta para a última URL visitada.
	/// <access mode="public"/>
	/// </summary>
	this.Voltar = function() {
		if (this.IndiceNav > 0) {
			this.CarregarUrl(this.Historico[--this.IndiceNav].url,this.Historico[thisIndiceNav].strPost);
		}
	}

	/// <summary>
	/// Avança para a próxima URL do histórico.
	/// <access mode="public"/>
	/// </summary>
	this.Avancar = function() {
		if (this.IndiceNav < this.Historico.length-1)
			this.CarregarUrl(this.Historico[++this.IndiceNav].url,this.Historico[thisIndiceNav].strPost);
	}
	
	this.Indique = function() {
	    alert("Indique.aspx?Caminho="+ this.Historico[this.IndiceNav].url);
	}

	/// <summary>
	/// Carrega a url especificada dentro do "Alvo".
	/// <access mode="private"/>
	/// <param name="url">Url para carregar.</param>
	/// </summary>
	this.CarregarUrl = function(url,form) {
		InstanciaNav = this;
		
		if (url == null)
			return;
		
		if (form == undefined || form == "") {
			var http = this.ObterHttp();
			//document.title = "Suvinil";
			document.title = "Tintas Suvinil - RENOVAR É FÁCIL, É SÓ QUERER. - Renove Você Mesmo, Simulador de Decoração, Feng Shui, SelfColor, Cores e Sensações";
			http.onreadystatechange = function() {
				if (http.readyState == 4) {
					InstanciaNav.Alvo.innerHTML = http.responseText;
					document.getElementById("DivLock").style.display = "none";

					// Adiciona a chamada para os de js externos, que foram ignorados pelo innerHTML
				    var url = InstanciaNav.Historico[InstanciaNav.IndiceNav].url;
				    var pasta = "";
				    if (url.indexOf(".") < 0) {
				        pasta = url;
				    } else {
				        pasta = url.substring(0,url.lastIndexOf("/"));
				    }
				    pasta = pasta.replace(/\?.*/,"");
				    
					var regx = /src *= *\"([^\"]+\.js)/g;
					var i=0;
					while(true) {
						js = regx.exec(http.responseText);
						if (js == null)
							break;
							
						urlJs = pasta + "/"+ js[1];
						urlJs = urlJs.replace(/\/\//g,"/");
						
						tagScript = document.createElement("script");
						tagScript.language = "javascript";
						tagScript.type = "text/javascript";
						tagScript.id = "ScriptNav"+ i;
						tagScript.src = urlJs;
						document.body.appendChild(tagScript);
					}

					if (mnu != null) {
						InstanciaNav.loadMenu(mnu);
					}
					
		            var divCss = document.getElementById("cssFile");
		            if (divCss != null) {
		                var css = document.getElementById("css");
		                if (css == null) {
		                    var css = document.createElement("link");
		                    css.setAttribute("rel","stylesheet");
		                    css.setAttribute("type","text/css");
		                    css.setAttribute("media","all");
		                    css.id = "css";
		                    document.getElementsByTagName("head")[0].appendChild(css);
		                }
                		
		                css.href = divCss.innerHTML;
		            }
		            ////////////////////
		            var divCss2 = document.getElementById("cssFile2");
		            if (divCss2 != null) {
		                var css2 = document.getElementById("css2");
		                if (css2 == null) {
		                    var css2 = document.createElement("link");
		                    css2.setAttribute("rel","stylesheet");
		                    css2.setAttribute("type","text/css");
		                    css2.setAttribute("media","print");
		                    css2.id = "css2";
		                    document.getElementsByTagName("head")[0].appendChild(css2);
		                }
                		
		                css2.href = divCss2.innerHTML;
		            }
		            ////////////////////

					if (url.toLowerCase().indexOf("simulador") < 0)
					MudarVitrine();

					// Carrega Destaques
					if (url.indexOf("/en") < 0 && url.indexOf("/es") < 0) {
					    var divDestaque = document.getElementById("conteudo_bottom");
					    if (divDestaque != null) {
                            var so = new SWFObject("flash/destaques.swf", "destaques", "620", "120", "8", "#FFFFFF");
                            so.addParam("wmode","transparent");
                            so.addParam("scale","noscale");
                            so.addParam("quality","high");
                            so.write("conteudo_bottom");

					    }
					}
					
                    var as = document.getElementsByTagName("a");
                    for(var i=0;i<as.length;i++)
                        if (as[i].onclick != null && as[i].rel != "history")
                            as[i].setAttribute("href","javascript:void(0)");
				}
			}
			http.open("GET",url,true);
			http.send("");
		} else {
			var frm = new Form();
			frm.StrPost = form;
			frm.PostUrl = url;
			frm.callback = function() {
				if (http != undefined && http.readyState == 4) {
					InstanciaNav.Alvo.innerHTML = http.responseText;
				}
			}
			http = frm.DoPost();
		}
	}

	// <summary>
	/// Obtem uma instância do objeto responsável por efetuar as chamadas Ajax.
	/// <access mode="private"/>
	/// </summary>
	this.ObterHttp = function() {
		var http = false;

		try {
		    http = new XMLHttpRequest();
		}
		catch (e) {
			try {
				http = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
			    http = new ActiveXObject("Msxml2.XMLHTTP");
				//http = false;
			}
		}

//		if (!http && typeof XMLHttpRequest!='undefined') {
//			http = new XMLHttpRequest();
//		}

		return http;
	}

    this.loadMenu = function(Secao) {
		var tag = document.getElementById(Secao);
		if (tag == null) {
			return;
		}
	    tag.className = Secao +"_over";
		while(true) {
			tag = tag.parentNode;
			if (tag.tagName != "LI" && tag.tagName != "UL")
				break;
			if (tag.id.indexOf("mnu") == 0)
				AlterarMenu(tag.id,false);
		}
    }
    
    this.objPos = function( oElement ) {
        if( typeof( oElement.offsetParent ) != 'undefined' ) {
            for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
                posX += oElement.offsetLeft;
                posY += oElement.offsetTop;
            }
            return [ posX, posY ];
        } else {
            return [ oElement.x, oElement.y ];
        }
    }

    this.pageload = function(pag, qstr) {
        if (pag == "" && location.href.toString().toLowerCase().indexOf("default_en") >= 0)
            pag = "Home_en.aspx";
        else if (pag == "" && location.href.toString().toLowerCase().indexOf("default_es") >= 0)
            pag = "Home_es.aspx";
        else if (pag == "")
            pag = "Home.aspx";
        
        if (pag.toLowerCase() == "simulador.aspx") {
            this.SimuladorAtivo = true;
            var intervaloSimulador = setInterval(function() { try { exeSimulador(); clearInterval(intervaloSimulador) } catch (e) { } }, 500);
            return;
        } else if (this.SimuladorAtivo) {
            this.SimuladorAtivo = false;
            EsconderSimulador();
        }
        if (qstr != undefined && qstr != "")
            pag += "?" + qstr;
        this.Ir(pag);
    }

	this.initHist = function() {
	    var nav = this;
	    $.historyInit(function(pag, qstr) { nav.pageload.apply(nav, [pag, qstr]); }, "history.html");

	    $("[rel='history']").live("click", function() {
	        var url = new String(this.href);
	        url = url.replace(/^.*#/, '');
	        $.historyLoad(url);
	        return false;
	    });


	}

	this.Navegar = function(url) {
		if (url.substring(0,1) != "#")
			url = "#" + url;
		location.href = url;
		url = url.replace(/^.*#/, '');
		$.historyLoad(url);
		return false;
	}

	this.initHist();
}