<!--

/**
 * mudanças adicionadas nesta nova versão : 
 * - breadcrumb :
 * * exclusão um a um
 * * exclusão sincronizada com layout de navegadores
 * * mudança no valor usado para caracterizar o id de cada elemento da breadcrumb 
 * 
 * - navegadores :
 * * nova lista de navegadores checados
 * * manter layout de acordo com o estado
 * * novo objeto que carrega a lista de navegadores, usado para fazer o "repaint" dos navegadores
 * * propriedade repaint para navegadores, ativada para o comportamento de mudança de estilo do elemento de navegador
 * dependendo do seu estado sem que esse seja recarregado
 * 
 * 
 * 
 * ********** versões compativeis e testadas do layout, actionlistener e bsc-core
 * * bsc-layout-1.1.js
 * * bsc-core-1.3.2.js | bsc-core-1.3.js + bsc-util-1.1.js
 * * bsc-actionlistener-1.0.js  
 */

BSC.navigatorList = new Array();
BSC.checkedList = new Array();

BSC.navigatorController = {};
BSC.navigatorController.removeFromCheckedList = function(id) {
	newList = new Array();
	for ( var i = 0; i < BSC.checkedList.length; i++) {
		var checkedElement = BSC.checkedList[i];
		if(id != checkedElement) newList.push(checkedElement);
		if(id.indexOf(BSC.subnivel.pai)!=-1)
		if(checkedElement.indexOf(BSC.subnivel.fil)!=-1) newList.pop(checkedElement);    
	}                              
	BSC.checkedList = newList;
}

BSC.isInCheckedList = function(id) {
	for ( var i = 0; i < BSC.checkedList.length; i++) {
		var checkedElement = BSC.checkedList[i];   
		if(id == checkedElement) return true;
	}
	return false;
}

BSC.navigatorController.addToCheckedList = function(el) {
	// regra para adicionar elemento na lista geral
	var arr = el.split(BSC.constants.idSeparator);
	navigatorTitle = arr[0];
	elementName = arr[1];
	newList = new Array();
	for ( var i = 0; i < BSC.checkedList.length; i++) {
		var e = BSC.checkedList[i];
		var ea = e.split(BSC.constants.idSeparator);
		if(ea[0] == navigatorTitle) {
			newList.push(navigatorTitle + BSC.constants.idSeparator + elementName);
		} else {
			newList.push(e);
		}
	}
	if(i == BSC.checkedList.length) {
		newList.push(navigatorTitle + BSC.constants.idSeparator + elementName);    
	}
	BSC.checkedList = newList;      
}

BSC.navigatorList.show = function() {
	for ( var i = 0; i < BSC.navigatorList.length; i++) {
		var navigator = BSC.navigatorList[i];   
		navigator.layout.show();      
	}
}


// cria o filtro do filtro
BSC.layout.flt = function(obj){
  var bsg = obj.layout.data.navigatorElements; 
  cln = new Array();
  hbr = BSC.hbr;
  u=0;
  for(x=0; x<bsg.length; x++){
    for(y=0;y<hbr.length; y++){
      if(bsg[x].name == hbr[y]){
        cln[u] = bsg[x];       
        u++
      }
     }
  }
  obj.layout.data.navigatorElements = cln
  return obj
} ;
BSC.flt = "false"
BSC.navigator = function(json){
	var obj = eval(json); 
	BSC.request.staticFilters.push("navigator="+obj.fastName); 
	if(obj.reload == null)obj.reload = true;
	if(obj.isLoaded == null)obj.isLoaded = false;

	obj.layout.title = obj.viewName;

	obj.layout.stateControl = obj.stateControl || false;

	BSC.request.functionsList.push(
		function(){

			if(!obj.reload && obj.isLoaded) {
				if(obj.repaint) obj.layout.show();
				return null;
			}

			var data = BSC.data.getNavigator(obj.name);  

			if(data == null){
				obj.layout.data = null;
				obj.layout.show(obj.maxElementLimit);
				return false;
			}

			if(!obj.group){
				obj.layout.data = data;   
			}else{
				var nav = new Object();
				nav.modifier = data.modifier;
				nav.navigatorElements = new Array();

				var other = new Object();
				other.count = 0;
				other.name = obj.groupName || "Outros";   
				other.modifier = new Array();

				for(var i=0;i<data.navigatorElements.length;i++){   
					var el = data.navigatorElements[i];
					if(el.count <= obj.groupLimite){
						other.count += (el.count*1);
						other.modifier.push(el.modifier);
					}else{
						nav.navigatorElements.push(el); 
					}
				}

				if(other.count > 0){
					nav.navigatorElements.push(other);             
				}

				obj.layout.data = nav;
			}
      if(BSC.flt=="true") BSC.layout.flt(obj);
			obj.layout.show();
			obj.isLoaded = true;
		}
	);
	     
	BSC.navigatorList.push(obj);
	return obj;    
}

BSC.data = new Object();

BSC.data.getNavigator = function(name){
	var navs = BSC.result.data.navigators;
	for(var i=0; i<navs.length;i++){
		if(navs[i].modifier == name)return navs[i];
	}

	return null;
}



BSC.breadCrumb = new Object();
BSC.breadCrumb.list = new Array();
BSC.breadCrumb.object = null;
BSC.breadCrumb.title = "Filtros ativados:";
BSC.breadCrumb.elementTemplate = " [VALUE] &nbsp;&nbsp; ,";

BSC.breadElement = function(crumbName, viewName, name, filterList, navId){
	this.crumbName = crumbName;
	this.viewName = viewName;
	this.name = name;
	this.filterList = filterList;
	this.navId = navId;
}

BSC.breadCrumb.add = function(filter){
	var list = new Array();

	var added = false;
	for(var i=0; i<BSC.breadCrumb.list.length;i++){
		var bc = BSC.breadCrumb.list[i];

		if(bc.name == filter.name){
			list.push(filter);
			added = true;
		}else{
			list.push(bc);
		}
	}
   
	if(!added)list.push(filter);

	BSC.breadCrumb.list = list; 
	BSC.breadCrumb.applyStatic();       
}

BSC.breadCrumb.create = function(id){
	BSC.breadCrumb.object = document.getElementById(id) || null;

	if(BSC.breadCrumb.object != null){
		BSC.request.functionsList.push(
			function(){
				BSC.breadCrumb.show();
			}
		);
	}
}

BSC.breadCrumb.removeBreadCrumbByNavId = function(navId) {
	var list = new Array();
	for ( var i = 0; i < BSC.breadCrumb.list.length; i++) {
		var bc = BSC.breadCrumb.list[i];
		if(bc.navId != navId) list.push(bc);  
    if(navId.indexOf(BSC.subnivel.pai)!=-1)  
		if(bc.navId.indexOf(BSC.subnivel.fil)!=-1) list.pop(bc);
	}
	BSC.breadCrumb.list = list;  
}

BSC.breadCrumb.show = function(){
	
	if(BSC.breadCrumb.object == null)return false;
	
	if(BSC.breadCrumb.list.length == 0){
		BSC.breadCrumb.object.innerHTML = "";
		return false;
	}
	
	var nameReg = new RegExp("\\[NAME\\]","g");
	var valueReg = new RegExp("\\[VALUE\\]","g");
	
	var title = document.createElement("div");
	$(title).attr("class","bsc_breadcrumb_title");
	
	title.innerHTML = BSC.breadCrumb.title;
	
	var body = document.createElement("div");
	$(body).attr("class","bsc_breadcrumb_body");
	
	for(var i=0;i<BSC.breadCrumb.list.length; i++){
		var c = BSC.breadCrumb.list[i];
		var a = document.createElement("a");

		$(a).attr("bsc_breadcrumb_id",i);
		$(a).attr("bsc_breadcrumb_navId",c.navId);

		if(BSC.userAgent.appName == "Netscape"){      
			a.setAttribute("onclick","BSC.breadCrumb.actionListener(this,event)");
		}else{
			$(a).click(
				function(){                         
					BSC.breadCrumb.actionListener($(this),event);                                                            
				}
			);
		}

		a.innerHTML = BSC.breadCrumb.elementTemplate.replace(nameReg,c.crumbName).replace(valueReg,c.viewName).replace(/NULL/gi,'Outros');
		body.appendChild(a);
	}
	
	var breadCrumb = document.createElement("div");
	$(breadCrumb).attr("class","bsc_breadcrumb");
	
	breadCrumb.appendChild(title);
	breadCrumb.appendChild(body);
	
	BSC.breadCrumb.object.innerHTML = "";
	BSC.breadCrumb.object.appendChild(breadCrumb);   
	
}

BSC.breadCrumb.applyStatic = function(){
	BSC.request.navFilters = new Array();
	for(var i=0; i<BSC.breadCrumb.list.length;i++){
		var el = BSC.breadCrumb.list[i];

		for(var j=0;j<el.filterList.length;j++){
			var f = el.filterList[j]; 
			var filtro = "f_"+el.name+"="+f;
			BSC.request.navFilters.push(filtro);   
		}
	}
	
	BSC.request.changePage(1);   
}

BSC.breadCrumb.actionListener = function(obj, event){
	var navId = $(obj).attr("bsc_breadcrumb_navId");
	BSC.navigatorController.removeFromCheckedList(navId);
	var newList = new Array();
	BSC.breadCrumb.removeBreadCrumbByNavId(navId);	
	BSC.breadCrumb.applyStatic();    
		if(BSC.subnivel.at =="true")
	  $('#'+ BSC.subnivel.alvo).hide();
}

BSC.navigatorListener = function(obj, event){
	var filter = $(obj).attr("bsc_filter_name");
	var value = $(obj).attr("bsc_filter_value")+"";
	var name = $(obj).attr("bsc_element_name")+"";
	var crumbName = $(obj).attr("bsc_crumb_name")+"";
	var type = $(obj).attr("bsc_crumb_type")+"";
	var navId = $(obj).attr("bsc_navElement_id")+"";
	var callType = $(obj).attr("bsc_call_type")+"";
	var stateControl = $(obj).attr("bsc_state_control")+"" == "true";
	if(type == "fastExpression") {
		value = value.split(' ');
	} else {
		value = value.split(',');
	}
		
	if(stateControl) {
		
		if(!callType || callType != BSC.constants.customFormCallType) {
			if(BSC.isInCheckedList(navId)) {
				BSC.navigatorController.removeFromCheckedList(navId);
				BSC.breadCrumb.removeBreadCrumbByNavId(navId);	
				BSC.breadCrumb.applyStatic();        
				BSC.navigatorList.show();
				return;
			} else {
				BSC.navigatorController.addToCheckedList(navId);
			}
		} else {
			BSC.navigatorController.addToCheckedList(navId);
		}     
	}

	var crumb = new BSC.breadElement(crumbName, name,filter,value, navId);
	BSC.breadCrumb.add(crumb);     
}

BSC.actionListener.sisList.push(
	BSC.navigatorListener         
);


BSC.specialFilterNavigator = function(e) {
	e.layout.displayName = e.displayName || "";
	e.layout.filterName = e.filterName || "";
	e.layout.listItems = new Array();
	e.layout.elementClass = e.elementClass || "";
	e.layout.listClass = e.listClass || "";
	e.layout.titleClass = e.titleClass || "";
	e.layout.stateControl = e.stateControl || false;
	
	BSC.request.functionsList.push(function() {
		e.layout.show();      
	});
	
	BSC.navigatorList.push(e);
	return e;         
}

-->