//-------------------------------------------------------------------------------------------------------------
// Copyright (c) 2005-2011 Associação de Vela de Caraguatatuba
//-------------------------------------------------------------------------------------------------------------

// Author: José Pires


//-------------------------------------------------------------------------------------------------------------
// Definição de grupos e itens de navegação do menu Left
//-------------------------------------------------------------------------------------------------------------

var aHeadsLeftMenu = new Array (

// Número do grupo
// Situação padrão do grupo (expandido/contraido)
// Nome do grupo (anchor)
// Link do grupo (href)
// Página de destino (target)

"0|show|Grêmio CaraVela|/|",
"1|show|Calendário|/eventos/calendario.htm|",
"2|show|Serviços|/servicos/index.htm|",
"3|hide|Monotipo|/eventos/monotipo/index.htm|",
"4|hide|Oceano|/eventos/oceano/index.htm|",
"5|hide|Classes||",
"6|hide|Links Especiais||"

);

var aToggleLeftMenu = new Array (

// Página base
// Grupo a ser invertido

"/eventos/monotipo|0",
"/eventos/monotipo|3",
"/eventos/oceano|0",
"/eventos/oceano|4",
"/eventos/eventos\.php.tipo.monotipo|0",
"/eventos/eventos\.php.tipo.monotipo|3",
"/eventos/eventos\.php.*evt.CLNVP|0",
"/eventos/eventos\.php.*evt.CLNVP|3",
"/eventos/eventos\.php.tipo.oceano|0",
"/eventos/eventos\.php.tipo.oceano|4",
"/eventos/eventos\.php.*evt.Campeonato-Ubatuba|0",
"/eventos/eventos\.php.*evt.Campeonato-Ubatuba|4",
"/eventos/eventos\.php.*evt.Campeonato-Litoral-Norte|0",
"/eventos/eventos\.php.*evt.Campeonato-Litoral-Norte|4",
"/eventos/eventos\.php.*evt.Circuito-Ilhabela|0",
"/eventos/eventos\.php.*evt.Circuito-Ilhabela|4",
"/eventos/eventos\.php.*evt.Circuito-Litoral-Norte|0",
"/eventos/eventos\.php.*evt.Circuito-Litoral-Norte|4",
"/eventos/galeria/album\.php.bs.monotipo/|0",
"/eventos/galeria/album\.php.bs.monotipo/|3",
"/eventos/galeria/album\.php.bs.oceano/|0",
"/eventos/galeria/album\.php.bs.oceano/|4"

);

var aItemsLeftMenu = new Array (

// Número do grupo ao qual pertence o item
// Nome do item (anchor)
// Link do item (href)
// Página de destino (target)

"0|Calendário de Reuniões|/gremio/informes/reunioes.htm|",
"0|Conselho Gestor|/gremio/gestao.htm|",
"0|Entre em Contato|/contato/index.htm|",
"0|Escola de Vela|/ventoempopa/index.htm|",
"0|Estatutos Sociais|/gremio/estatuto.htm|",
"0|Informes e Notícias|/gremio/informes/index.htm|",
"0|Política de Privacidade|/gremio/privacidade.htm|",
"0|Projetos / Objetivos|/projetos/index.htm|",
"0|Quem Somos / Missão|/gremio/index.htm|",
"0|Regulamento Interno|/gremio/regulamento.htm|",
"0|Seja Nosso Associado|/cadastro/index.htm|",
"0|Uso da Área Náutica|/gremio/area-nautica.htm|",

"1|Calendário Normal|/eventos/index.htm|",
"1|Galeria de Fotos|/eventos/galeria/index.htm|",

"2|Cartas Náuticas|/servicos/cartas.htm|",
"2|Clubes e Entidades|/servicos/entidades.htm|",
"2|Previsão do Tempo|/servicos/previsao.htm|",
"2|Regulamentos da Vela|/servicos/regulamentos/index.htm|",
"2|Siga-nos no Twitter|/servicos/twitter.htm|",
"2|Tábua de Marés|/servicos/mares.htm|",

"3|Aconteceu em 2010|/eventos/monotipo/2010/index.htm|",
"3|Brasileiro Holder 12|/holder12/eventos/brasileiro.htm|_blank",
"3|Circuito Litoral Norte|/eventos/monotipo/clnvp.htm|",
"3|Dia do Marinheiro|/eventos/monotipo/marinheiro.htm|",
"3|Regata Caraguatatuba|/eventos/monotipo/caraguatatuba.htm|",
"3|Regata Ilhabela|/eventos/monotipo/ilhabela.htm|",
"3|Regata Paraibuna|/eventos/monotipo/paraibuna.htm|",
"3|Regata São Sebastião|/eventos/monotipo/saosebastiao.htm|",
"3|Regata Ubatuba|/eventos/monotipo/ubatuba.htm|",

"4|Aconteceu em 2010|/eventos/oceano/2010/index.htm|",
"4|Campeonato Ubatuba|/eventos/oceano/campeonato-ubatuba.htm|",
"4|Circuito Ilhabela|/eventos/oceano/circuito-ilhabela.htm|",
"4|Circuito Litoral Norte|/eventos/oceano/circuito-litoral-norte.htm|",
"4|Dia do Marinheiro|/eventos/oceano/marinheiro.htm|",
"4|Regata Caraguatatuba|/eventos/oceano/caraguatatuba.htm|",
"4|Regata da Amizade|/eventos/oceano/amizade.htm|",
"4|Regata Ele Ela|/eventos/oceano/ele-ela.htm|",

"5|Day Sailer|/gremio/page.php?page=http://www.daysailer.com.br/|_blank",
"5|Dingue|/gremio/page.php?page=http://www.classedingue.com.br/|_blank",
"5|Holder 12|/holder12/|_blank",
"5|Laser|/gremio/page.php?page=http://www.laser.org.br/|_blank",
"5|Oceano (São Paulo)|/gremio/page.php?page=http://br.geocities.com/apvo2003/|_blank",
"5|Optimist|/gremio/page.php?page=http://www.abco.com.br/|_blank",
"5|Ranger 22|/gremio/page.php?page=http://www.ranger22.com.br/|_blank",
"5|RGS|/gremio/page.php?page=http://www.geocities.com/bra_rgs/|_blank",
"5|RGS (São Paulo)|/gremio/page.php?page=http://www.apvrgs.org/|_blank",

"6|America's Cup|/gremio/page.php?page=http://www.americascup.com/|_blank",
"6|CBVM|/gremio/page.php?page=http://www.cbvm.org.br/|_blank",
"6|Extreme 40 Sailing|/gremio/page.php?page=http://www.extreme40.org/|_blank",
"6|FEVESP|/gremio/page.php?page=http://www.fevesp.org.br/|_blank",
"6|ISAF|/gremio/page.php?page=http://www.sailing.org/|_blank",
"6|Sailwave|/gremio/page.php?page=http://www.sailwave.com/|_blank",
"6|SV de Ilhabela|/gremio/page.php?page=http://www.risw.com.br/|_blank",
"6|Volvo Ocean Race|/gremio/page.php?page=http://www.volvooceanrace.org/|_blank"

);


//-------------------------------------------------------------------------------------------------------------
// Definição de banners do menu Top
//-------------------------------------------------------------------------------------------------------------

var aBannerTopMenu = new Array (

// Número de sequencia (não usado)
// Situação do banner (exibir/esconder)
// Descrição do banner (alt)
// Link do banner (href)
// Página de destino (target)
// Arquivo do banner (src)
// Largura do banner (width max 120)
// Altura do banner (height max 60)

"0|show|Projeto Vento em Popa - Caraguatatuba - SP|/ventoempopa/||/images/Logo-VentoEmPopa2.gif|120|60",
"1|show|Caraguá - Viver é aqui|/gremio/page.php?page=http://www.caraguatatuba.sp.gov.br/|_blank|/images/Caragua-Esportes-2.jpg|120|60",
"2|show|Federação de Vela do Estado de São Paulo|/gremio/page.php?page=http://www.fevesp.org.br/|_blank|/images/Logo-Fevesp-flag2.jpg|120|60",
"3|hide|||||120|60",
"4|hide|Celmar Boats|/gremio/page.php?page=http://www.celmarboats.com.br/|_blank|/images/Logo-CelmarBoats3.jpg|120|60",
"5|hide|Caraguá Praia Shopping|/gremio/page.php?page=http://www.praiashoppingcaragua.com.br/|_blank|/images/Logo-Caragua-Praia-Shopping.jpg|120|60"

);


//-------------------------------------------------------------------------------------------------------------
// Definição de banners do menu Left
//-------------------------------------------------------------------------------------------------------------

var aBannerLeftMenu = new Array (

// Número de sequencia (não usado)
// Situação do banner (exibir/esconder)
// Descrição do banner (alt)
// Link do banner (href)
// Página de destino (target)
// Arquivo do banner (src)
// Largura do banner (width max 150)
// Altura do banner (height)

"0|hide|18ª Regata da Amizade de Vela Oceânica - Ubatuba 2010|/eventos/oceano/2010/Ubatuba-Amizade/index.htm||/eventos/oceano/2010/Ubatuba-Amizade/Logo-Regata-Amizade2.jpg|150|150",
"1|show|Siga o Grêmio CaraVela no Twitter|/gremio/page.php?page=http://twitter.com/gcaravela|_blank|/images/Twitter-CaraVela.jpg|150|50"

);


//-------------------------------------------------------------------------------------------------------------
// Definição de parâmetros do menu Bottom
//-------------------------------------------------------------------------------------------------------------

var aParmsBottomMenu = new Array (

// Texto de direitos autorais
// Descrição do contato
// Endereço do contato
// Descrição do link #1
// Endereço do link #1
// Descrição do link #2
// Endereço do link #2

"Copyright © 2005-2011 Associação de Vela de Caraguatatuba",
"contato@gremiocaravela.com.br",
"/contato/index.htm",
"Política de Privacidade",
"/gremio/privacidade.htm",
"Crédito das Fotos",
"/gremio/creditos.htm"

);


//-------------------------------------------------------------------------------------------------------------
// Definição de opções de Menu de Usuário
//-------------------------------------------------------------------------------------------------------------

var aOptionsUserMenu = new Array (

// Número de sequencia (não usado)
// Função de associado (sim/nao)
// Descrição da opção (label)
// Link da opção (href)
// Página de destino (target)

"0|nao|Menu do Usuário|/usuario/login.php|",
"1|nao|Alteração de Cadastro|/usuario/cadastro.php?alterar=1|",
"2|nao|Trocar Minha Senha|/usuario/login.php?changepwd=1|",
"3|nao|Perguntas Freqüentes|/usuario/faq.htm|",
"4|nao|Entre em Contato|/contato/index.htm|",
"5|sim|Funções de Associado|/usuario/associados.php|",
"6|nao|Encerrar a Sessão|/usuario/login.php?logout=1|"

);


//-------------------------------------------------------------------------------------------------------------
// Definição de parâmetros gerais do site
//-------------------------------------------------------------------------------------------------------------

var sBaseSiteURL     = '/';
var sCreateSidePanel = 'sim';


//-------------------------------------------------------------------------------------------------------------
// Funções de controle do menu Top
//-------------------------------------------------------------------------------------------------------------

// Função para desenhar banners do menu Top

function CV_CreateTopBanner() {

	var sDisplay = '<table border="0" cellpadding="0" cellspacing="0" width="100%">';

	for (var j = 0; j <= 1; j++) {
		if (j == 0) {
			sDisplay += '<tr>';
			sDisplay += '<td width="360" height="10" colspan="3" align="center">';
			sDisplay += '<img alt="Apoio" border="0" src="' + sBaseSiteURL + '_borders/img_top_bar.gif" width="360" height="10"></td>';
			sDisplay += '</tr>';
		}
		else {
			sDisplay += '<tr>';
			sDisplay += '<td width="360" height="10" colspan="3" align="center"></td>';
			sDisplay += '</tr>';
		}

		sDisplay += '<tr>';

		for (var i = j*3; i <= j*3+2; i++) {
			aBannerVars = aBannerTopMenu[i].split('|');
			iBannerSeq = aBannerVars[0];
			sBannerStt = aBannerVars[1];
			sBannerLbl = aBannerVars[2];
			sBannerURL = aBannerVars[3];
			sBannerTgt = aBannerVars[4];
			sBannerImg = aBannerVars[5];
			iBannerXpt = aBannerVars[6];
			iBannerYpt = aBannerVars[7];
	
			if (sBannerStt == 'show') {
				if (sBannerTgt != '') { sBannerTgt = ' target="' + sBannerTgt + '"'; }
	
				sDisplay += '<td align="center" width="120" height="60">';
				sDisplay += '<a' + sBannerTgt + ' href="' + sBannerURL + '"><img border="0" src="' + sBannerImg + '" alt="' + sBannerLbl + '" width="' + iBannerXpt + '" height="' + iBannerYpt + '"></a></td>';
			}
			else {
				sDisplay += '<td align="center" width="120" height="60">';
				sDisplay += '<img alt="Vazio" border="0" src="' + sBaseSiteURL + '_borders/img_top_blank.gif" width="120" height="60"></td>';
			}
		}

		sDisplay += '</tr>';
	}

	sDisplay += '</table>';

	document.write(sDisplay);
}


// Função para definir menu de usuário no menu Top

function CV_PrepareUserMenu() {

	// Define área do Menu de Usuário.

	var sDisplay = '<div id="usermenu" onMouseOver="CV_ShowUserMenu()" onMouseOut="CV_HideUserMenu()">';
	sDisplay    += '</div>';

	if (sCreateSidePanel == 'sim') {

		// Define Painel Lateral para uso geral.

		sDisplay += '<div id="sidepanel">';
		sDisplay += '</div>';
	}

	document.write(sDisplay);
}


// Função para criar as opções do menu de usuário no menu Top

function CV_CreateUserMenu() {

	var sDisplay = '<table class="CV-site-color-dark" border="0" width="100%" cellspacing="0" cellpadding="0">';

	for (var i = 0; i < aOptionsUserMenu.length; i++) {
		aUserVars = aOptionsUserMenu[i].split('|');
		iUserNum = aUserVars[0];
		sUserStt = aUserVars[1];
		sUserLbl = aUserVars[2];
		sUserURL = aUserVars[3];
		sUserTgt = aUserVars[4];

		if (sUserStt == 'sim' && document.getElementById('assostt').value != 'Y') { continue; }

		if (sUserTgt != '') { sUserTgt = ' target="' + sUserTgt + '"'; }

		sDisplay += '<tr>';
		sDisplay += '<td height="15" align="left"><a class="CV-topmenu-item"' + sUserTgt + ' href="' + sUserURL + '">' + sUserLbl + '</a></td>';
		sDisplay += '</tr>';
		sDisplay += '<tr>';
		sDisplay += '<td height="4"></td>';
		sDisplay += '</tr>';
	}
	sDisplay    += '</table>';

	top.document.getElementById('usermenu').innerHTML = sDisplay;
}


// Função para exibir opções de usuário no menu Top

function CV_ShowUserMenu() {
	top.document.getElementById('usermenu').style.visibility = 'visible';
}


// Função para esconder opções de usuário no menu Top

function CV_HideUserMenu() {
	top.document.getElementById('usermenu').style.visibility = 'hidden';
}


//-------------------------------------------------------------------------------------------------------------
// Funções de controle do menu Left
//-------------------------------------------------------------------------------------------------------------

// Função para desenhar estrutura do menu Left

function CV_CreateLeftMenu() {

	var sDisplay = '<table border="0" cellpadding="0" cellspacing="0" width="100%">';

	for (var i = 0; i < aHeadsLeftMenu.length; i++) {
		aHeadVars = aHeadsLeftMenu[i].split('|');
		iHeadNum = aHeadVars[0];
		sHeadStt = aHeadVars[1];
		sHeadLbl = aHeadVars[2];
		sHeadURL = aHeadVars[3];
		sHeadTgt = aHeadVars[4];

		if (sHeadURL == '') { sHeadURL = '/" onclick="CV_ToggleLeftMenu(' + iHeadNum + '); return false;'; }
		if (sHeadTgt != '') { sHeadTgt = ' target="' + sHeadTgt + '"'; }

		if (sHeadStt == 'show') {
			sHeadItem = 'table-row';
			sHeadShow = 'none';
			sHeadHide = 'inline';
		}
		else {
			sHeadItem = 'none';
			sHeadShow = 'inline';
			sHeadHide = 'none';
		}

		sDisplay += '<tr>';
		sDisplay += '<td width="15" height="13" align="center"><a href="/" onclick="CV_ToggleLeftMenu(' + iHeadNum + '); return false;"><img id="Show' + iHeadNum + '" style="display:' + sHeadShow + '" border="0" src="' + sBaseSiteURL + '_borders/img_left_plus.gif" width="9" height="9" alt="Mais"><img id="Hide' + iHeadNum + '" style="display:' + sHeadHide + '" border="0" src="' + sBaseSiteURL + '_borders/img_left_minus.gif" width="9" height="9" alt="Menos"></a></td>';
		sDisplay += '<td height="13"><a class="CV-leftmenu-head"' + sHeadTgt + ' href="' + sHeadURL + '">' + sHeadLbl + '</a></td>';
		sDisplay += '</tr>';
		sDisplay += '<tr id="Head' + iHeadNum + '" style="display:' + sHeadItem +'">';
		sDisplay += '<td width="15" align="center"></td>';
		sDisplay += '<td>';
		sDisplay += '<table border="0" cellpadding="0" cellspacing="0" width="100%">';

		for (var j = 0; j < aItemsLeftMenu.length; j++) {
	    	if(aItemsLeftMenu[j].substring(0,1) != iHeadNum) { continue; }
	    	aItemVars = aItemsLeftMenu[j].split('|');
	    	sItemLbl = aItemVars[1];
	    	sItemURL = aItemVars[2];
	    	sItemTgt = aItemVars[3];

			if (sItemTgt != "") { sItemTgt = ' target="' + sItemTgt + '"'; }

			sDisplay += '<tr>';
			sDisplay += '<td height="13"><a class="CV-leftmenu-item"' + sItemTgt + ' href="' + sItemURL + '">' + sItemLbl + '</a></td>';
			sDisplay += '</tr>';
		}

		sDisplay += '</table>';
		sDisplay += '</td>';
		sDisplay += '</tr>';
	}

	sDisplay += '<tr>';
	sDisplay += '<td height="5" colspan="2"></td>';
	sDisplay += '</tr>';
	sDisplay += '</table>';

	document.write(sDisplay);

	CV_AdjustLeftMenu();
}


// Função para expandir e contrair o menu Left

function CV_ToggleLeftMenu(iHeadNum) {

	var item = document.getElementById('Head' + iHeadNum);
	var show = document.getElementById('Show' + iHeadNum);
	var hide = document.getElementById('Hide' + iHeadNum);

	if (item.style.display == 'none') {
		item.style.display = '';
		show.style.display = 'none';
		hide.style.display = 'inline';
	}
	else {
		item.style.display = 'none';
		show.style.display = 'inline';
		hide.style.display = 'none';
	}

	top.controle.focus();
}


// Função para ajustar grupos no Left Menu de acordo com página base

function CV_AdjustLeftMenu() {

	for (var i = 0; i < aToggleLeftMenu.length; i++) {
		aToggleVars = aToggleLeftMenu[i].split('|');
		sBaseURL = aToggleVars[0];
		iHeadNum = aToggleVars[1];

		if (location.href.match(sBaseURL)) {
			CV_ToggleLeftMenu(iHeadNum);
		}
	}
}


// Função para desenhar banners do menu Left

function CV_CreateLeftBanner() {

	var sDisplay = '<table style="background-color: #FFFFFF" border="0" cellpadding="0" cellspacing="0" width="100%">';

	sDisplay += '<tr>';
	sDisplay += '<td height="10"></td>';
	sDisplay += '</tr>';

	for (var i = 0; i < aBannerLeftMenu.length; i++) {
		aBannerVars = aBannerLeftMenu[i].split('|');
		iBannerSeq = aBannerVars[0];
		sBannerStt = aBannerVars[1];
		sBannerLbl = aBannerVars[2];
		sBannerURL = aBannerVars[3];
		sBannerTgt = aBannerVars[4];
		sBannerImg = aBannerVars[5];
		iBannerXpt = aBannerVars[6];
		iBannerYpt = aBannerVars[7];

		if (sBannerStt == 'show') {
			if (sBannerTgt != '') { sBannerTgt = ' target="' + sBannerTgt + '"'; }
	
			sDisplay += '<tr>';
			sDisplay += '<td height="' + iBannerYpt + '" align="center">';
			sDisplay += '<a' + sBannerTgt + ' href="' + sBannerURL + '"><img border="0" src="' + sBannerImg + '" width="' + iBannerXpt + '" height="' + iBannerYpt + '" alt="' + sBannerLbl + '"></a></td>';
			sDisplay += '</tr>';

			if (i < aBannerLeftMenu.length - 1) {
				sDisplay += '<tr>';
				sDisplay += '<td height="10"></td>';
				sDisplay += '</tr>';
			}
			else {
				sDisplay += '<tr>';
				sDisplay += '<td height="20"></td>';
				sDisplay += '</tr>';
			}
		}
	}

	sDisplay += '</table>';

	document.write(sDisplay);
}


//-------------------------------------------------------------------------------------------------------------
// Funções de controle do menu Bottom
//-------------------------------------------------------------------------------------------------------------

// Função para desenhar estrutura do menu Bottom

function CV_CreateBottomMenu() {

	var iLastModified = new Date(document.lastModified);

	var iDia = iLastModified.getDate();
	var iMes = eval(iLastModified.getMonth() + 1);
	var iAno = iLastModified.getFullYear();

	var sLastModified = iDia + '/' + iMes + '/' + iAno;

    var sDisplay = '<table border="0" cellpadding="0" cellspacing="0" width="100%">';

	sDisplay += '<tr>';

	sDisplay += '<td nowrap valign="top"><p class="CV-small">Fale conosco:<br>';
	sDisplay += '<a href="' + aParmsBottomMenu[2] + '">' + aParmsBottomMenu[1] + '</a></p></td>';

	sDisplay += '<td align="center" nowrap valign="top"><p class="CV-small">' + aParmsBottomMenu[0] + '<br>';
	sDisplay += '<a href="' + aParmsBottomMenu[4] + '">' + aParmsBottomMenu[3] + '</a> | ';
	sDisplay += '<a href="' + aParmsBottomMenu[6] + '">' + aParmsBottomMenu[5] + '</a></p></td>';

	sDisplay += '<td align="right" nowrap valign="top"><p class="CV-small">Última atualização: ' + sLastModified + '</p></td>';

	sDisplay += '</tr>';
	sDisplay += '</table>';

	document.write(sDisplay);
}


//-------------------------------------------------------------------------------------------------------------
// Funções de controle do Painel Lateral
//-------------------------------------------------------------------------------------------------------------

// Função para enviar formulário de pesquisa rápida

function CV_SubmitPoolForm(theForm) {
	if (CV_CheckPoolForm(theForm)) {
		theForm.Send.value = "Continuar >>";
		theForm.target = "controle";
		theForm.submit();
		alert ("Obrigado por responder nossa pesquisa rápida de opinião. Click no botão \"OK\" e veja ao lado o resultado parcial até este momento. Somente um voto é permitido para cada usuário ou visitante do site.");
		return (true);
	}
	return (false);
}


// Função para validar formulário de pesquisa rápida

function CV_CheckPoolForm(theForm) {

	if (theForm.TestEnv.value != "OK") {
		alert ("A pesquisa rápida não pode ser respondida pois o seu navegador não está configurado para aceitar \"cookies\" do Grêmio CaraVela. Por favor, verifique a página de \"Ajuda\" para corrigir a configuração do seu navegador.");
		return (false);
	}

	var radioOptions = false;
	for (i = 0;  i < theForm.Options.length;  i++) {
		if (theForm.Options[i].checked) {
			radioOptions = true;
		}
	}
	if (!radioOptions) {
		alert ("Selecione uma das opções da pesquisa rápida.");
		return (false);
	}
	return (true);
}


//-------------------------------------------------------------------------------------------------------------
// Funções auxiliares de controle de janelas
//-------------------------------------------------------------------------------------------------------------

// Função para retornar a página anterior

function CV_HistoryBack() {
	history.back();
}


// Função para direcionar a uma outra página

function CV_LoadPage(sPage) {
	location.href = sPage;
}


// Função para colocar foco em um elemento

function CV_MoveFocus(sElem) {
	var oElem = document.getElementById(sElem);
	oElem.focus();
}


// Função para abrir janela de informativo mensal

function CV_PopupInforme(sPage) {
	Controls = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,top=0,left=0,';
	WinPopup = window.open(sPage, 'PopupInforme', Controls + 'width=680,height=680');
	WinPopup.focus();
}


//-------------------------------------------------------------------------------------------------------------
// Fim
//-------------------------------------------------------------------------------------------------------------
