/*
 *	Data: 23/09/2007
 *	Por: Marcos Pereira
 *	Powered by: Gestum LTDA
 *	Descrição: Esse script é de propriedade da Gestum LDTA, e deve ser utilizado somente pela mesma.
 *  Esse recurso deve ser utilizado simulando uma classe singleton, ou seja, deve ser criado e mantido de forma única 
 *  dentro de alguma área na estrutura utilizada.
*/

function AGBreadCrumbs()
{	
	var accessLinksAndNames = new Array();	
	var formatBreadCrumbs = "";
	var separatorBreadCrumbs = "";
	var homeLink = "";
	var homeName = "";
	
	/* Deve ser informado o link correspondente ao name passado.
	 * Pode ser utilizado duas strings para identificar que deve ser limpo o caminho
	 * de pão, ou que o mesmo não deve ser lincado.
	 * [CLEAR] = Identifica que será limpo o caminho de pão
	 * [NOT_LINK] - Identifica que não deve ser lincado.
	 * [HOME] - Identifica a página principal do portal
	 */
	this.addLocationAccess = function (link, name)
	{		
		var access = new Array();
		var isFirst = false;
	
		if(!this.exist(link, name))
		{
			if(name.indexOf("[CLEAR]") != -1)
			{
				name = name.replace("[CLEAR]","");
				this.clear();
			}

			if(name.indexOf("[HOME]") != -1)
			{
				homeName = name.replace("[HOME]","");
				homeLink = link;
				isFirst = true;
			}
			else
				isFirst = false;

			if(homeLink != "" && accessLinksAndNames.length<1)
			{				
				access[access.length] = homeLink;
				access[access.length] = homeName;
			}

			if(!isFirst)
			{ 
				access[access.length] = link;
				access[access.length] = name;	
			}	
			accessLinksAndNames[accessLinksAndNames.length] = access;	
		}	
	
	}
	
	/* Setar a forma como deve aparecer o caminho de pão.
	 * Deve ser utilizado duas strings para identificar a substituição do link e do nome da mesma.
	 * [HREF] = Link
	 * [NAME] = Nome
	 */
	this.setFormatBreadCrumbs = function (format)
	{
		if(formatBreadCrumbs == "")
			formatBreadCrumbs = format;
	}
	
	/* Recebe o separador para ser utilizado no caminho de pão.
	 * O mesmo pode ser qualquer estrutura HTML.
	 */
	this.setSeparatorBreadCrumbs = function (separator)
	{
		if(separatorBreadCrumbs == "")
			separatorBreadCrumbs = separator;
	}	
	
	/* Retorna o caminho de pão para ser exibido na tela. */
	this.getBreadCrumbs = function ()
	{
		var txtReturn = "";		
		for(var rx = 0; rx < accessLinksAndNames.length; rx++)
		{
			var txt = "";
			if(accessLinksAndNames[rx][1].indexOf("[NOT_LINK]") != -1)
				txt = accessLinksAndNames[rx][1].replace("[NOT_LINK]","");
			else
			{
				if(accessLinksAndNames[rx].length>2)
					txt = formatBreadCrumbs.replace("[HREF]",accessLinksAndNames[rx][0]).replace("[TITLE]", accessLinksAndNames[rx][1])+separatorBreadCrumbs+formatBreadCrumbs.replace("[HREF]",accessLinksAndNames[rx][2]).replace("[TITLE]", accessLinksAndNames[rx][3]);
				else
					txt = formatBreadCrumbs.replace("[HREF]",accessLinksAndNames[rx][0]).replace("[TITLE]", accessLinksAndNames[rx][1]);
			}
			txtReturn += separatorBreadCrumbs + txt;
		}

	//	if(txtReturn.length > 0)
	//		txtReturn = txtReturn.substring(separatorBreadCrumbs.length);
			
		return txtReturn;
	}
	
	/* Zera o caminho de pão*/
	this.clear = function()
	{
		accessLinksAndNames = null;
		accessLinksAndNames = new Array()
	}
	
	/*Verifica se o link e o nome correspondente já existem detro da estrutura.*/
	this.exist = function (link,name)
	{
		var r = false;
		for(var rx = 0; rx < accessLinksAndNames.length; rx++)
		{
			if (accessLinksAndNames[rx][0] == link && accessLinksAndNames[rx][1] == name)
			{
				r = true;
				break;
			}	
		}
		
		return r;
	}	
}
