preencherModelosByMarca(typeof(window[jsonurl]) == 'undefined')
    var jsonurl = "/Icarros/JSON-RPC";
if(typeof(window[jsonrpc]) == 'undefined')
    var jsonrpc=null;
if(typeof(window[jsonflag]) == 'undefined')
    var jsonflag=false;
if(typeof(window[jsonsupport]) == 'undefined')
    var jsonsupport=true;
var actionAfterLogin="";

function initjsonadmin()
{
    if(!jsonsupport || (jsonrpc!=null && jsonrpc.JsRPCAdmin))
        return;
		if(jsonflag) {
			while(jsonflag());
			if(jsonrpc!=null)
				return;
		}

		var jsonflag=true;
    try {
                if(jsonrpc==null) {
                    jsonrpc = new JSONRpcClient(jsonurl+(jsessionid!=null ? ";jsessionid="+jsessionid : ""));
                }
                jsonrpc._addMethods(["JsRPCAdmin.ensureAutenticado","JsRPCAdmin.setTipoAnuncio","JsRPCAdmin.setLeadStatus","JsRPCAdmin.salvarAnuncio","JsRPCAdmin.removerAnuncioSalvo","JsRPCAdmin.getDadosPainel","JsRPCAdmin.setReviewOfensiva"]);
    } catch(e) {
        jsonrpc=null;
	    jsonsupport=false;
    }
		jsonflag=false;
}

//TODO: Chamada Sincrona - Trocar para assicrona
function setTipoAnuncio(anunciante_id,anuncio_id,tipoatual,campo,divanuncio) {
    initjsonadmin();
    initjson();
    var retorno = jsonrpc.JsRPCAdmin.setTipoAnuncio(anunciante_id,anuncio_id,campo.value)
    if(retorno == 'OK') {
        tiponovo=campo.value;
        var novafuncao="setTipoAnuncio("+anunciante_id+","+anuncio_id+","+tiponovo+",this,'"+divanuncio+"');upPainel();";
        campo.onchange=function () {eval(novafuncao)};
        if(divanuncio) {
            object=MM_findObj(divanuncio);
            object.innerHTML=jsonrpc.JsRPC.getHtmlLista(anuncio_id);
        }
    } else {
		for(i=0;i<campo.options.length;i++) {
			if(campo.options[i].value==tipoatual)
				campo.options[i].selected=true;
			else
				campo.options[i].selected=false;
		}
        if(retorno == 'ERR_TIPOANUNCIO'){
            alert('Não foi possível alterar o anúncio selecionado. Você já atingiu o limite disponível no seu contrato para este tipo de anúncio.');
        }else if (retorno == 'ERR_QUANTIDADE'){
            alert("Não foi possível alterar para esse tipo de anúncio. Você já atingiu o limite disponível para seu contrato");
        }else if (retorno == 'ERR_PERMISSAO'){
            alert("Você não possui permissão para alterar este anúncio.");
        }else{
            alert('Ocorreu um erro desconhecido em nosso sistema. Tente novamente mais tarde. ' + retorno);
        }
    }
}

//TODO: Chamada Sincrona - Trocar para assicrona
function setLeadStatus(anunciante_id,lead_id,statusatual,campo) {
    initjsonadmin();
    initjson();
    var retorno = jsonrpc.JsRPCAdmin.setLeadStatus(anunciante_id,lead_id,campo.value)
    if(retorno == 'OK') {
        statusnovo=campo.value;
        var novafuncao="setLeadStatus("+anunciante_id+","+lead_id+","+statusnovo+",this);";
        campo.onchange=function () {eval(novafuncao)};
    } else {
		for(i=0;i<campo.options.length;i++) {
			if(campo.options[i].value==statusatual)
				campo.options[i].selected=true;
			else
				campo.options[i].selected=false;
		}
        if (retorno == 'ERR_PERMISSAO'){
            alert("Você não possui permissão para alterar esta lead.");
        }else{
            alert('Ocorreu um erro desconhecido em nosso sistema. Tente novamente mais tarde. ' + retorno);
        }
    }
}

//TODO: Chamada Sincrona - Trocar para assicrona
function salvarAnuncio(anuncio_id) {
    try {
        initjsonadmin();
        return jsonrpc.JsRPCAdmin.salvarAnuncio(anuncio_id);
    } catch(e) {
        return false;
    }
}

//TODO: Chamada Sincrona - Trocar para assicrona
function removerAnuncioSalvo(anuncio_id) {
    try {
        initjsonadmin();
        return jsonrpc.JsRPCAdmin.removerAnuncioSalvo(anuncio_id);
    } catch(e) {
        return false;
    }
}

function atualizarPainel(anuncianteId,zeroKm){
    initjsonadmin();
    if(jsonsupport) jsonrpc.JsRPCAdmin.getDadosPainel(preencherPainel,anuncianteId,zeroKm);
    else jsrsExecute("/comum/rsserver.jsp", preencherPainel, "getDadosPainelStr", anuncianteId,zeroKm);
}
function preencherPainel( returnstring, exception){
	if(returnstring=='ERR_NOTFOUND') {
		alert("Não foi encontrado nenhum dado de acordo com sua seleção");
		return;
	}
    var tablebody = '<table cellpadding="0" cellspacing="0" ><thead><tr><th class="titulo">An&uacute;ncios</th><th>Total</th><th>Publicados</th><th>Livres</th></tr></thead><tbody>';
    var totalDisp = 0;
    var totalPub = 0;
    modarray=returnstring.split('||');
	for(i=0;i<modarray.length;i+=3) {
        var disp = parseInt(modarray[i+1]);
        var pub = parseInt(modarray[i+2]);
        tablebody += '<tr><th>' + modarray[i] + '</th><td>' + disp + '</td><td>' + pub + '</td><td>' + (disp - pub) + '</td></tr>';
        totalDisp += disp;
        totalPub += pub;
    }
    tablebody += '</tbody><tfooter><tr><th><strong>Total</strong></th><td>' + totalDisp + '</td><td>' + totalPub + '</td><td>' + (totalDisp - totalPub) + '</td></tr></tfooter></table>';
    var tdiv = MM_findObj('tabelatipoanuncios');
    tdiv.innerHTML = tablebody;
}



function ensureLoggedReview(action,reviewId){
	if(ensureAutenticado("ensureLoggedReview('"+action+"', " + reviewId + ")","votaUtil_" + reviewId)){
		location.href = action;
	}
}

function ensureLoggedNewReview(marca, modelo) {
	if(ensureAutenticado("ensureLoggedNewReview("+marca+","+modelo+")","newReview")){
		location.href = '/opiniao-carros/review.jsf?marca='+marca+'&modelo='+modelo;
	}
}

function ensureLoggedNewReviewAnoModelo(marca, modelo, anomodelo) {
	if(ensureAutenticado("ensureLoggedNewReviewAnoModelo("+marca+","+modelo+","+anomodelo+")","newReview")){
		location.href = '/opiniao-carros/review.jsf?marca='+marca+'&modelo='+modelo+"&ano="+anomodelo;
	}
}

function ensureLoggedNewReviewVersao(marca, modelo, anofabricacao, anomodelo, versao) {
	if(ensureAutenticado("ensureLoggedNewReviewVersao("+marca+","+modelo+","+anofabricacao+","+anomodelo+","+versao+")","newReview")){
		location.href = '/opiniao-carros/review.jsf?marca='+marca+'&modelo='+modelo+'&ano='+anofabricacao+'&anomodelo='+anomodelo+'&versao='+versao;
	}
}

function ensureLoggedVerTelefone(anuncioId) {
    if(!logged && !identified) {
		f_dialogOpen("/autenticacao/vertelefonepopup.jsf?anuncio_id=" + anuncioId, 'verTelefone', 'width=550,height=550');
		return false;
    }
    return true;
}


function salvarBusca(buscaId,restful,alerta) {
    if(ensureAutenticado("salvarBusca("+buscaId+",'"+restful+"',"+alerta+")","salvarbusca_" + buscaId)) {
        f_dialogOpen("/myicarros/salvarbusca.jsf;jsessionid="+jsessionid+"?buscaId=" + buscaId +"&restful=" + restful + "&alerta=" + alerta, 'salvarbusca', 'width=700,height=330');
    }
}

function setReviewOfensiva(reviewId){
    try {
        initjsonadmin();
        return jsonrpc.JsRPCAdmin.setReviewOfensiva(reviewId);
    } catch(e) {
        return false;
    }
}

function setReviewUtil(reviewId){
    try {
        initjsonadmin();
        return jsonrpc.JsRPCAdmin.setReviewUtil(reviewId);
    } catch(e) {
        return false;
    }
}

function setReviewNaoUtil(reviewId){
    try {
        initjsonadmin();
        return jsonrpc.JsRPCAdmin.setReviewNaoUtil(reviewId);
    } catch(e) {
        return false;
    }
}

//TODO: Chamada Sincrona - Trocar para assicrona
function ensureAutenticado(action,from) {
	if(logged) {
        try {
			initjsonadmin();
			if(jsonsupport) logged=jsonrpc.JsRPCAdmin.ensureAutenticado();
            else logged=jsrsExecute("/comum/rsserver.jsp", preencherPainel, "ensureAutenticado");
        } catch(e) {
            logged=false;
        }
    }
    if(!logged) {
		actionAfterLogin=action;
		f_dialogOpen("/autenticacao/inlinelogon.jsf?from=" + from, 'gravarbusca', 'width=650,height=300');
		return false;
    }
    return true;
}



