var xmlhttp;
var fila 	= [];
var ifila 	= 0;

try{
	xmlhttp = new XMLHttpRequest();
}catch(ee){
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(E){
			xmlhttp = false;	
		}
	}
}


function addFila( type ,  id , method , url , texto , dt )
{
	switch( type )
	{
		case 'select':
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
		case 'busca':
			dt = ElementosForm( document.getElementById( dt ) );
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
		case 'pop-detalhe2':
			dt = ElementosForm( document.getElementById( dt ) );
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
		case 'pop-detalhe':
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
		case 'principal-select':
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
		case 'form':
			dt = ElementosForm( document.getElementById( dt ) );
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
		default:
			fila[fila.length] = [ type , id , method , url , texto , dt ];
			break;
	}
	if( ( ifila + 1 ) == fila.length ) ajaxRun();
	
	return false;
}

function ajaxRun()
{
	xmlhttp.open( fila[ifila][2] , fila[ifila][3]  , true );
	
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", fila[ifila][5].length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	xmlhttp.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
	xmlhttp.setRequestHeader("Pragma", "no-cache");

	xmlhttp.onreadystatechange = ajaxState;
	xmlhttp.send( fila[ifila][5] );
}

function ajaxState()
{
	switch( xmlhttp.readyState	)
	{
		case 1: case 2: case 3:
				switch( fila[ifila][0] )
				{
					case 'select':
						var objSelect = document.getElementById( fila[ifila][1] );
						
						objSelect.disabled=true;
						
						zSelect( objSelect );
						addSelect( objSelect , 0 , fila[ifila][4] , '' );
						break;
					case 'busca':
						msg = '<img src="imgs/carregando.gif" align="absmiddle" /> <b>'+fila[ifila][4]+'</b>';
						mostraMSG( true , msg );
						break;
					case 'pop-detalhe':
						msg = '<img src="imgs/carregando.gif" align="absmiddle" /> <b>'+fila[ifila][4]+'</b>';
						mostraMSG( true , msg );
						break;
					case 'pop-detalhe2':
						msg = '<img src="imgs/carregando.gif" align="absmiddle" /> <b>'+fila[ifila][4]+'</b>';
						mostraMSG( true , msg );
						break;
					case 'principal-select':
						var objSelect = document.getElementById( fila[ifila][1] );
						
						if(fila[ifila][4] != ''){
							msg = '<img src="imgs/carregando.gif" align="absmiddle" /> <b>'+fila[ifila][4]+'</b>';
							mostraMSG( true , msg );
						}else{ mostraMSG( false , '' ); }
						
						objSelect.disabled=true;
						
						zSelect( objSelect );
						addSelect( objSelect , 0 , fila[ifila][4] , '' );
						break;
					case 'form':
						msg = '<img src="imgs/carregando.gif" align="absmiddle" /> <b>'+fila[ifila][4]+'</b>';
						mostraMSG( true , msg );
						break;
					default:
						if(fila[ifila][4] != ''){
							msg = '<img src="imgs/carregando.gif" align="absmiddle" /> <b>'+fila[ifila][4]+'</b>';
							mostraMSG( true , msg );
						}else{ mostraMSG( false , '' ); }
						break;
						
				}
				centro();
			break;
		case 4:
				texto = unescape(xmlhttp.responseText.replace(/\+/g," "));
				switch( xmlhttp.status )
				{
					case 200:
							switch( fila[ifila][0] )
							{
								case 'select':
										var objSelect = document.getElementById( fila[ifila][1] ); 
										criaSelect( objSelect , texto );
										
										objSelect.disabled=false;
									break;
								case 'busca':
										var objPage = document.getElementById( fila[ifila][1] );
										objPage.innerHTML = texto;
										
										zeraSelect();
									break;
								case 'principal-select':
										var objSelect = document.getElementById( fila[ifila][1] ); 
										criaSelect( objSelect , texto );
										
										objSelect.disabled=false;
									break;
								case 'pop-detalhe':
										var objPage = document.getElementById( fila[ifila][1] );
										objPage.innerHTML = texto;
									break;
								case 'pop-detalhe2':
										var objPage = document.getElementById( fila[ifila][1] );
										objPage.innerHTML = texto;
										zeraSelect();
									break;
								case 'form':
										var objPage = document.getElementById( fila[ifila][1] );
										objPage.innerHTML = texto;
										
										break;
								default:
										var objPage = document.getElementById( fila[ifila][1] );
										objPage.innerHTML = texto;
							}
							document.getElementsByTagName("body")[0].focus();
						break;
					default:
						var obj = document.getElementById( fila[ifila][1] );
						obj.innerHTML = 'Error: ' + xmlhttp.status;
						mostraMSG( false , '' );
				}
				
				Script( texto );
				if( fila[ifila][0] == 'form' || fila[ifila][0] == 'busca' || fila[ifila][0] == 'principal-select' || fila[ifila][0] == '') mostraMSG( false , '' );
				ifila++;
				if(ifila < fila.length) setTimeout("ajaxRun()",20);
				centro();
			break;
	}
}
//----------------[ Select ]-----------------------------------------------------------------------------//
function addSelect( objSelect , p , texto , valor )
{
	objSelect.options[ p ] 	= new Option( texto , valor );
}
	
function zSelect( objSelect )
{
	objSelect.options.length = 0;
}
	
function criaSelect( objSelect , texto )
{
	var str 	= texto.split("<->");
	var tm		= str.length;
	var vselect = "";
	
	zSelect( objSelect );
	
	for( i = 0 ; i < tm ; i++ )
	{
		vSelect = str[i].split( "|" );
		addSelect( objSelect , i , vSelect[0] , vSelect[1] );
	}
}

function zeraSelect()
{
	var objSelect = document.getElementsByTagName( 'select' );
	for( i=0; i < objSelect.length ; i++ )
	{
		objSelect[i].options[0].selected = true;
		switch(objSelect[i].id)
		{
			case 'top_valormax': case 'top_marca': case 'top_modelo':
				objSelect[i].disabled = true;
				break;
		}
	}
}
//------------------------------------------------------------------------------------------------------//
/**************************************************************************
 * Funcao para executar javascript
 **************************************************************************/
 
function Script( texto ){
    var ini, pos_src, fim, codigo, texto_pesquisa;
    var objScript = null;
    texto_pesquisa = texto.toLowerCase()
    ini = texto_pesquisa.indexOf('<script', 0)
    while (ini!=-1){
        var objScript = document.createElement("script");
        pos_src = texto_pesquisa.indexOf(' src', ini)
        ini = texto_pesquisa.indexOf('>', ini) + 1;

        if (pos_src < ini && pos_src >=0){
            ini = pos_src + 4;
            fim = texto_pesquisa.indexOf('.', ini)+4;
            codigo = texto.substring(ini,fim);
            codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");
            objScript.src = codigo;
        }else{
            fim = texto_pesquisa.indexOf('</script>', ini);
            codigo = texto.substring(ini,fim);
            objScript.text = codigo;
        }

        document.body.appendChild(objScript);
        ini = texto.indexOf('<script', fim);
        objScript = null;
    }
}
/**************************************************************************
 * Funcao para pegar variaveis de um formulario metodh get
 **************************************************************************/
function ElementosForm(objForm) {
    var elementosFormulario = objForm.elements;
    var qtdElementos = elementosFormulario.length;
    var queryString = "";
    var elemento;

    this.ConcatenaElemento = function(nome,valor) { 
                                if (queryString.length>0) { 
                                    queryString += "&";
                                }
                                queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);
                             };

    for (var i=0; i<qtdElementos; i++) {
        elemento = elementosFormulario[i];
        if (!elemento.disabled) {
            switch(elemento.type) {
                case 'text': case 'password': case 'hidden': case 'textarea': case 'file':
                    this.ConcatenaElemento(elemento.name,elemento.value);
                    break;
                case 'select-one':
                    if (elemento.selectedIndex>=0) {
                        this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);
                    }
                    break;
                case 'select-multiple':
                    for (var j=0; j<elemento.options.length; j++) {
                        if (elemento.options[j].selected) {
                            this.ConcatenaElemento(elemento.name,elemento.options[j].value);
                        }
                    }
                    break;
                case 'checkbox': case 'radio':
                    if (elemento.checked) {
                        this.ConcatenaElemento(elemento.name,elemento.value);
                    }
                    break;
            }
        }
    }
    return queryString;
}

function mostraMSG( flag , msg )
{
	var corpo  = document.getElementsByTagName('body')[0];
	var DivRef = document.getElementById('corpo');
	var IfrRef = document.getElementById('DivShim');
	var DivPop = document.getElementById('PopupDiv');
	var DivMsg = document.getElementById('pop-msg');
	if( DivRef != null && IfrRef != null && DivPop != null && DivMsg != null )
	{
		if( flag )
		{
			desableSelect( true );
			DivMsg.innerHTML = msg;
			IfrRef.style.width = '100%';
			IfrRef.style.height = corpo.offsetHeight + 'px';
			IfrRef.style.top = 0;
			IfrRef.style.left = 0;
			IfrRef.style.zIndex = 99;
			IfrRef.style.display = "block";
			DivMsg.style.display = "block";
			DivPop.style.display = "block";
			DivPop.style.height = corpo.offsetHeight + 'px';
			centro();
		}
		else
		{
			desableSelect( false );
			IfrRef.style.display = "none";
			DivMsg.style.display = "none";
			DivPop.style.display = "none";
		}
	}
}
function centro(){
	var DivPop 	= document.getElementById( 'pop-msg' );
	var iPop 	= document.getElementById( 'iframe-pop' );
	if( DivPop != null && iPop != null )
	{
		iPop.style.zIndex	= 199;
		iPop.style.left 	= '50%';
		iPop.style.top 		= '50%'; 
		iPop.style.marginLeft =  ( ( DivPop.offsetWidth / 2 ) * -1 ) + 'px';
		iPop.style.marginTop =  ( ( DivPop.offsetHeight / 2 ) * -1 ) + 'px';
		
		DivPop.style.zIndex	= 200;
		DivPop.style.left 	= '50%';
		DivPop.style.top 	= '50%'; 
		DivPop.style.marginLeft =  ( ( DivPop.offsetWidth / 2 ) * -1 ) + 'px';
		DivPop.style.marginTop =  ( ( DivPop.offsetHeight / 2 ) * -1 ) + 'px';
	}
}

function desableSelect( flag )
{
	var tagSelect = document.getElementsByTagName( 'select' );
	if( flag )
		for( i=0; i < tagSelect.length ; i++ )
			tagSelect[i].style.visibility = 'hidden';
	else
		for( i=0; i < tagSelect.length ; i++ )
			tagSelect[i].style.visibility = 'visible';
}









