var InstanciaNav = null;
function NavegaConcurso() {
	/// <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;
	
	this.Primeiro = true;

	/// <summary>
	/// Alvo onde as páginas devem ser carregadas. Tipicamente um <DIV> ou <SPAN>
	/// <access mode="public"/>
	/// </summary>
	this.Alvo = null;

	/// <summary>
	/// Navega para uma URL.
	/// <access mode="public"/>
	/// <param name="url">Url para navegar</param>
	/// </summary>
	this.Ir = function(url,form) {

		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);
		}
		if (!this.Primeiro)
		    this.MudarMenu(url);
		else
		    this.Primeiro = false;
		
		var divLock = document.getElementById("DivLock");
		var pos = this.objPos(document.getElementById("guiaLock"));

		divLock.style.display = "block";
		divLock.style.height = pos[1] +"px";
		
		this.CarregarUrl(url,hist.strPost);
		this.Historico[++this.IndiceNav] = hist;
		
		urchinTracker(url);
	}
	
	this.MudarMenu = function(url) {
	    var itens = Array("mnuHome","mnuParticipe","mnuVejaProjetos","mnuRegulamento","mnuContato","mnuIndique");
	    var estilos = Array("menu_home","menu_cliqueeparticipe","menu_vejaosprojetos","menu_regulamento","menu_contato","menu_indique");
	    
	    itemAtivo = "";
	    if (url.toLowerCase().indexOf("home.aspx") >= 0)
	        itemAtivo = "mnuHome";
	    else if (url.toLowerCase().indexOf("participe.aspx") >= 0)
	        itemAtivo = "mnuParticipe";
	    else if (url.toLowerCase().indexOf("vejaprojetos.aspx") >= 0 || url.toLowerCase().indexOf("detalheprojeto.aspx") >= 0 )
	        itemAtivo = "mnuVejaProjetos";
	    else if (url.toLowerCase().indexOf("regulamento.aspx") >= 0)
	        itemAtivo = "mnuRegulamento";
	    else if (url.toLowerCase().indexOf("contato.aspx") >= 0)
	        itemAtivo = "mnuContato";
	    else if (url.toLowerCase().indexOf("indique.aspx") >= 0)
	        itemAtivo = "mnuIndique";
	        
	    for(var i=0;i<itens.length;i++) {
	        if (itemAtivo == itens[i] || url.toLowerCase().indexOf("home.aspx") >= 0) {
	            document.getElementById(itens[i]).className = estilos[i];
	        } else {
	            document.getElementById(itens[i]).className = estilos[i] +"_inativo";
	        }
	    }
	}


	/// <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[this.IndiceNav].strPost);
	}

	/// <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 = "Concurso Cores";
			http.onreadystatechange = function() {
				if (http.readyState == 4) {
					InstanciaNav.Alvo.innerHTML = http.responseText;
					document.getElementById("DivLock").style.display = "none";
					scrollTo(0,425);

					// 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(/\?.*/,"");
				    if (pasta != "")
				        pasta += "/";
				    
					var regx = /src *= *\"([^\"]+\.js)/g;
					var i=0;
					while(true) {
						js = regx.exec(http.responseText);
						if (js == null)
							break;
							
						urlJs = pasta + js[1];
						
						tagScript = document.createElement("script");
						tagScript.language = "javascript";
						tagScript.type = "text/javascript";
						tagScript.id = "ScriptNav"+ i;
						tagScript.src = urlJs;
						document.body.appendChild(tagScript);
					}

		            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","screen");
		                    css.id = "css";
		                    document.getElementsByTagName("head")[0].appendChild(css);
		                }
                		
		                css.href = divCss.innerHTML;
		            }


					// Carrega Destaques
					var divDestaque = document.getElementById("conteudo_bottom");
					if (divDestaque != null) {
					    if (navigator.appName.indexOf("Microsoft") != -1) {
					        /*var fls = document.createElement("object");
					        fls.setAttribute("width","620");
                            fls.setAttribute("height","120");
                            fls.setAttribute("align","top");
                            fls.setAttribute("classid","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000");
                            fls.setAttribute("name","destaques");
                            fls.setAttribute("id","destaques");
                            
                            var par = document.createElement("param");
                            par.setAttribute("name","movie");
                            par.setAttribute("value","flash/destaques.swf");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","quality");
                            par.setAttribute("value","high");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","play");
                            par.setAttribute("value","true");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","loop");
                            par.setAttribute("value","true");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","scale");
                            par.setAttribute("value","noscale");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","wmode");
                            par.setAttribute("value","transparent");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","devicefont");
                            par.setAttribute("value","false");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","bgcolor");
                            par.setAttribute("value","#FFFFFF");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","menu");
                            par.setAttribute("value","true");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","allowFullScreen");
                            par.setAttribute("value","false");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","allowScriptAccess");
                            par.setAttribute("value","sameDomain");
                            fls.appendChild(par);
                            
                            par = document.createElement("param");
                            par.setAttribute("name","salign");
                            par.setAttribute("value","t");
                            fls.appendChild(par);*/
                            
                            divDestaque.innerHTML = '<OBJECT height="120" width="620" align="top" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"><PARAM value="flash/destaques.swf" name="movie" /><PARAM value="high" name="quality" /><PARAM value="true" name="play" /><PARAM value="true" name="loop" /><PARAM value="noscale" name="scale" /><PARAM value="transparent" name="wmode" /><PARAM value="false" name="devicefont" /><PARAM value="#FFFFFF" name="bgcolor" /><PARAM value="true" name="menu" /><PARAM value="false" name="allowFullScreen" /><PARAM value="sameDomain" name="allowScriptAccess" /><PARAM value="t" name="salign" />';
                            
					    } else {
					        var fls = document.createElement("embed");
                            fls.setAttribute("width","620");
                            fls.setAttribute("height","120");
                            fls.setAttribute("align","top");
                            fls.setAttribute("type","application/x-shockwave-flash");
                            fls.setAttribute("salign","t");
                            fls.setAttribute("allowscriptaccess","sameDomain");
                            fls.setAttribute("allowfullscreen","false");
                            fls.setAttribute("menu","true");
                            fls.setAttribute("name","destaques");
                            fls.setAttribute("bgcolor","#ffffff");
                            fls.setAttribute("devicefont","false");
                            fls.setAttribute("wmode","transparent");
                            fls.setAttribute("scale","noscale");
                            fls.setAttribute("loop","true");
                            fls.setAttribute("play","true");
                            fls.setAttribute("pluginspage","http://www.macromedia.com/go/getflashplayer");
                            fls.setAttribute("quality","high");
                            fls.setAttribute("src","flash/destaques.swf");
                            divDestaque.appendChild(fls);
                        }
					}

				}
			}
			http.open("GET",url,true);
			http.send(null);
		} 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 ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				http = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
				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;
		}
    }
    
    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 ];
        }
    }
}


