function SelectFunctions(){

	this.changeSelectLabel = changeSelectLabel;
	this.setUnsetAll       = setUnsetAll;
	this.updateSelect      = updateSelect;
	this.setPerfil         = setPerfil;
	this.updateSelectCidade=updateSelectCidade;
	this.reset = reset;
	this.addItem = addItem;
	this.cleanList = cleanList;
	this.setText = setText;
	this.addItemArray = addItemArray;

	var globalPerfil = 1;

	function changeSelectLabel( chave, valor, nameOpt, flagCheck ){
		var listCheck  = eval("document.getElementsByName('"+nameOpt+"[]')");
		var textSelect = eval("document.getElementById('textSelect"+nameOpt+"')");
		var buttonSel  = eval("document.getElementById('"+nameOpt+"setUnsetButton')");
		counterChecked = 0;
		var listOpt = new Array();

		/*
		for( var i=0; i < listCheck.length; i++ ){
			if( listCheck[i].checked == true ){
				counterChecked++;
				var contentSpan = eval("document.getElementById('"+nameOpt+"optLabel_"+listCheck[i].value+"')");
				listOpt[listCheck[i].value] = contentSpan.innerHTML;
			}
		}*/

		if(flagCheck){
			var ipt = document.getElementById(nameOpt+"_"+chave);
			var chk = ipt.checked;

			ipt.click();
			return;
		}

		var sels = 	$('#list'+nameOpt+'Table input[type=checkbox]:checked');


		if(sels.length > 0){


			if(sels.length == 1){
				if( isNaN($(sels[0]).val()) ){
					var labelOption =  $(sels[0]).val();
				}
				else{
					var labelOption = $('#'+nameOpt+'optLabel_'+$(sels[0]).val()).html();
				}
				var selectedText = labelOption;

			}else{

				if( nameOpt == 'cidade_id' || nameOpt == 'areapId' || nameOpt == 'nivelhId' || nameOpt == 'subareap' ){
					var selectedText = sels.length+" selecionadas";
				}
				else{
					var selectedText = sels.length+" laboratórios selecionados";
				}

			}

			var btnText = 'Desmarcar todos';

		}else{

			var selectedText = "Todos";
			var btnText = '';

		}


		textSelect.innerHTML = selectedText;
		buttonSel.innerHTML = btnText;

/*



		if( nameOpt == 'cidade_id' || nameOpt == 'areapId' || nameOpt == 'nivelhId' || nameOpt == 'subareap' ){
			var selectedText = "selecionadas";
		}
		else{
			var selectedText = "selecionados";
		}

		var actualOpt = eval("document.getElementById('"+nameOpt+"_"+chave+"')");
		if( actualOpt.checked == true ){
			buttonSel.innerHTML = 'Desmarcar todos';
			if( flagCheck == true ){
				actualOpt.checked = false;
				if( counterChecked == 1 ){
					textSelect.innerHTML = "Indiferente";
					buttonSel.innerHTML = '';
				}
				else if( counterChecked > 2 ){
					textSelect.innerHTML = Number(counterChecked)-1+ " "+selectedText;
				}
				else if( counterChecked == 2 ){
					for( var j in listOpt ){
						if( j != chave ){
							textSelect.innerHTML = listOpt[j];
						}
					}
				}
			}
			else{
				if( counterChecked == 0 ){
					textSelect.innerHTML = "Indiferente";
					buttonSel.innerHTML  = '';
				},false
				else if( counterChecked > 1 ){
					textSelect.innerHTML = Number(counterChecked)+ " "+selectedText;
				}
				else if( counterChecked == 1 ){
					for( var j in listOpt ){
						textSelect.innerHTML = listOpt[j];
					}
				}
			}
		}
		else{
			buttonSel.innerHTML = 'Desmarcar todos';
			if( flagCheck == true ){
				actualOpt.checked = true;
				if( counterChecked == 0 ){
					textSelect.innerHTML = globalFunc.url_decode(valor);
				}
				else if( counterChecked > 0 ){
					textSelect.innerHTML = Number(counterChecked)+1 + " "+selectedText;
				}
			}
			else{
				if( counterChecked == 0 ){
					textSelect.innerHTML = "Indiferente";
					buttonSel.innerHTML = '';
				}
				else if( counterChecked > 1 ){
					textSelect.innerHTML = Number(counterChecked)+" "+selectedText;
				}
				else{
					for( var j in listOpt ){
						textSelect.innerHTML = listOpt[j];
					}
				}
			}
		}*/
	}



	function setText(nameOpt,text){
		var textSelect = eval("document.getElementById('textSelect"+nameOpt+"')");
		textSelect.innerHTML = globalFunc.url_decode(text);
	}


	function setUnsetAll(nameOpt){

		try{
		var listCheck  = eval("document.getElementsByName('"+nameOpt+"[]')");
		var textSelect = eval("document.getElementById('textSelect"+nameOpt+"')");
		var buttonSel  = eval("document.getElementById('"+nameOpt+"setUnsetButton')");

		//buttonSel.innerHTML  = '';

		$('#list'+nameOpt+'Table input[type=checkbox]:checked').attr('checked',false);

		textSelect.innerHTML = "Indiferente";
		buttonSel.innerHTML = '';
		}catch(e){

		}

	//	var counterChecked = 0;
	//	var counterCheckedTotal = 0;
	/*	for( var i=0; i < listCheck.length; i++ ){
			if( listCheck[i].checked == true ){
				counterChecked++;
			}
			counterCheckedTotal++;
		}   */

//		if( counterChecked > 0 ){

//			buttonSel.innerHTML = 'Marcar todos';
//		}
//		else{

//			var controle = true;
//			textSelect.innerHTML = counterCheckedTotal + " Selecionados";

//}
		/*controle = false;
		for( var i=0; i < listCheck.length; i++ ){
			listCheck[i].checked = controle;
		}*/
	}

	function updateSelectCidade(action, ctrlValue){
		document.getElementById('cidade_idBox').style.display = '';
		document.getElementById('zonaBox').style.display = 'none';
		cleanList('zona');
		smobj.appendText("cidade_id","Carregando...");
		if( action == "regiao" ){
                        var estado_id = document.getElementById('estado_id').value;
			var regiao_id = ctrlValue;
			if( regiao_id == 14 ){
				document.getElementById('zonaBox').style.display = '';
				document.getElementById('dvMainSelectOptzona').style.display = 'none';
				document.getElementById('zonaBoxDisable').style.display = '';
			}
			else{
				document.getElementById('zonaBox').style.display = 'none';
			}
                }
		else{
			updateSelect('estado', ctrlValue);
			var estado_id = ctrlValue;
			if( estado_id == '-1' ){
				document.getElementById('cidade_idBox').style.display='none';
			}
			else{
				document.getElementById('cidade_idBox').style.display='';
			}
		}
		var xmlhttp = globalFunc.ajax();
		xmlhttp.open("GET","index.php?State=getSelectCidade&regiao_id[]="+regiao_id+"&estado_id[]="+estado_id,false);
		xmlhttp.send(null);
		var selectCidades = xmlhttp.responseText;
		document.getElementById('cidadeSelectBox').innerHTML = selectCidades;
		smobj.register("cidade_id");
		addEventCity();
		if( estado_id == 25 ){
			$("#cidade_id li").click(function(){
				var arraySelected = smobj.getSelecteds('cidade_id');
				if( Number(arraySelected.length) == 1 ){
					for( var ind in arraySelected ){
						if( Number(arraySelected[ind].value) > 0 && arraySelected[ind].value != "undefined" && ( arraySelected[ind].value== 783 || arraySelected[ind].value== '0783' ) ){
							selectFunc.updateSelect('cidade',783);
							document.getElementById('dvMainSelectOptzona').style.display = '';
							document.getElementById('zonaBoxDisable').style.display = 'none';
						}
					}
				}
				else if(  Number(arraySelected.length) == 2 ){
					var cidadesZona = 1;
					for( var ind in arraySelected ){
						if( arraySelected[ind].value != 783 && arraySelected[ind].value != '0783' && !isNaN(arraySelected[ind].value) ){
							cidadesZona = 0;
						}
					}
					if( cidadesZona == 1 ){
						selectFunc.updateSelect('cidade',783);
						document.getElementById('zonaBox').style.display = '';
						document.getElementById('dvMainSelectOptzona').style.display = '';
						document.getElementById('zonaBoxDisable').style.display = 'none';
					}
					else if( document.getElementById('regiaoId').value == 14 ){
						document.getElementById('zonaBox').style.display = '';
						document.getElementById('dvMainSelectOptzona').style.display = 'none';
						document.getElementById('zonaBoxDisable').style.display = '';
					}
					else{
						document.getElementById('zonaBox').style.display = 'none';
						selectFunc.cleanList('zona');
					}
				}
				else if( document.getElementById('regiaoId').value == 14 ){
					document.getElementById('zonaBox').style.display = '';
					selectFunc.cleanList('zona');
					document.getElementById('dvMainSelectOptzona').style.display = 'none';
					document.getElementById('zonaBoxDisable').style.display = '';
				}
				else{
					document.getElementById('zonaBox').style.display = 'none';
					selectFunc.cleanList('zona');
				}
			}
			);
		}
		}

	function updateSelect(action, ctrlValue){
		var xmlhttp = globalFunc.ajax();
		if( action == "perfil" ){
			if( ctrlValue == 9 ){
				document.getElementById('areapIdBox').style.display = "";
				document.getElementById('areaPaiIdBox').style.display = "none";
				document.getElementById('subareapBox').style.display = "none";
				document.getElementById('nivelhIdBox').style.display = "none";
			}
			document.getElementById('textSelectareapId').innerHTML = 'Carregando...';
			document.getElementById('textSelectsubareap').innerHTML = 'Carregando...';
			document.getElementById('textSelectnivelhId').innerHTML = 'Carregando...';
			setPerfil(ctrlValue);
		}
		else if(  action == "estado" || action == 'regiao' ){
			document.getElementById('cidade_idBox').style.display = '';
			document.getElementById('zonaBox').style.display = 'none';
                        cleanList('zona');
			document.getElementById('textSelectzona').innerHTML = 'Carregando...';
		}
		else if( action == 'pais' ){
			document.getElementById('cidade_idBox').style.display = 'none';
			document.getElementById('zonaBox').style.display = 'none';
                        cleanList('zona');
		}
		if( action == "regiao" ){
			document.getElementById('zonaBox').style.display = '';
			cleanList('zona');
			var estado_id = document.getElementById('estado_id').value;
		}
		xmlhttp.open("GET","funcoesLocais.php?action="+action+"&id="+ctrlValue+"&perfil="+globalPerfil+"&estado_idExt="+estado_id,false);
		xmlhttp.send(null);
		var conteudo = globalFunc.url_decode(xmlhttp.responseText);
		if( conteudo.indexOf("|||") > 0 ){
			var fields = conteudo.split('|||');
			for( var j=0; j< fields.length; j++  ){
				var lines = fields[j].split("||");
				var selectId   = lines[0];
				var selectType = lines[1];
				if( selectType == 'dropFake' ){
					cleanList(selectId);
				}
				else if( selectType == 'simple' ){
					var selectField = document.getElementById(selectId);
					globalFunc.setLocaleNull(selectField);
				}
				if( selectId == "estado_id" ){
					document.getElementById('estado_idBox').style.display='none';
					document.getElementById('regiaoIdBox').style.display='none';
					document.getElementById('cidade_idBox').style.display='none';
					document.getElementById('zonaBox').style.display='none';
					cleanList('regiaoId');
					cleanList('cidade_id');
					cleanList('zona');
				}
				if( selectId == 'areapId' || selectId == 'areaPaiId' ){
					var fieldMultiple = document.getElementById('areapIdBox');
					var fieldSimple   = document.getElementById('areaPaiIdBox');
					if( selectType == 'simple' ){
						fieldMultiple.style.display = 'none';
						fieldSimple.style.display = '';
						cleanList('areapId');
					}
					else{
						fieldMultiple.style.display = '';
						fieldSimple.style.display = 'none';
					}
					if( selectId == 'areapId' ){
						cleanList('subareap');
						document.getElementById('subareapBox').style.display='none';
					}
				}
				var ctrl = 0;
				if( lines[2] == "0::0" ){
					var fieldToHidde = eval("document.getElementById('"+selectId+"Box')");
					fieldToHidde.style.display = 'none';
				}
				else{
					var fieldToHidde = eval("document.getElementById('"+selectId+"Box')");

					fieldToHidde.style.display = '';
					if( selectType == 'dropFake' ){
						var arrayItens = new Array();
						for( var k=(lines.length-1); k >1 ; k=(k-1) ){
							var cols = lines[k].split("::");
//							addItem(cols[1],cols[0],selectId,false);
							arrayItens[cols[0]] = cols[1];
						}
						if( arrayItens.length > 0 ){
							addItemArray(arrayItens,selectId);
						}
					}
					else if( selectType == 'simple' ){
						for( var k=2; k < lines.length ; k++ ){
							var cols = lines[k].split("::");
							selectField.options[ctrl] = new Option(cols[1],cols[0],0,0);
							ctrl++;
						}
					}
				}
			}
		}
		else if( conteudo.indexOf("||") > 0 ){
			var lines = conteudo.split("||");
			var selectId = lines[0];
			var selectType = lines[1];
			if( selectId == "estado_id" ){
				document.getElementById('estado_idBox').style.display='none';
				document.getElementById('regiaoIdBox').style.display='none';
				document.getElementById('cidade_idBox').style.display='none';
				document.getElementById('zonaBox').style.display='none';
			}
			if( selectType == 'dropFake' ){
				cleanList(selectId);
			}
			else if( selectType == 'simple' ){
				var selectField = document.getElementById(selectId);
				globalFunc.setLocaleNull(selectField);
			}
			var ctrl=0;
			if( lines[2] == "0::0" ){
				var fieldToHidde = eval("document.getElementById('"+selectId+"Box')");
				fieldToHidde.style.display = 'none';
			}
			else{
				var fieldToHidde = eval("document.getElementById('"+selectId+"Box')");
				fieldToHidde.style.display = '';
				if( selectType == 'dropFake' ){
					var arrayItens = new Array();
					for( var i=(lines.length-1); i >1 ; i=(i-1) ){
						cols = lines[i].split("::");
						if( selectId == "zona" ){
							addItem(cols[1],cols[0],selectId,false);
						}
						else{
							arrayItens[cols[0]] = cols[1];
						}
					}
					if( arrayItens.length > 0 ){
						addItemArray(arrayItens,selectId);
					}
				}
				else if( selectType == 'simple' ){
					for( var i=2; i < lines.length ; i++ ){
						cols = lines[i].split("::");
						selectField.options[ctrl] = new Option(cols[1],cols[0],0,0);
						ctrl++;
					}
				}
			}
		}
		else if( conteudo.indexOf("::") > 0 ){
			cols = conteudo.split("::");
			addItem(cols[1],cols[0],nameObj,false);
		}
	}


	function cleanList( nameObj ){
		var table = eval("document.getElementById('list"+nameObj+"Table')");
		var trs = table.getElementsByTagName("tr");
		var total = trs.length;
		for( var i=0; i < total; i++ ){
			table.deleteRow(0);
		}
		var textSelect = eval("document.getElementById('textSelect"+nameObj+"')");
		textSelect.innerHTML = "Indiferente";
	}

	function addItem(label,value,nameObj,checkFlag){
		var table = eval("document.getElementById('list"+nameObj+"Table')");
		var tr = table.insertRow(table.rows.length);
		tr.id='list'+nameObj+'Tr'+value;
//		tr.onclick="selectFunc.changeSelectLabel(\""+value+"\",\""+globalFunc.url_encode(label)+"\",\""+nameObj+"\",false)";
		var td = tr.insertCell(0);
		td.id=nameObj+'Line_'+value;
		td.innerHTML = "<input class='checkSelect' type='checkbox' value='"+value+"' name='"+nameObj+"[]' id='"+nameObj+"_"+value+"' onClick='selectFunc.changeSelectLabel(\""+value+"\",\""+globalFunc.url_encode(label)+"\",\""+nameObj+"\",false);'> <span class='spnSelectOpt' onClick='selectFunc.changeSelectLabel(\""+value+"\",\""+globalFunc.url_encode(label)+"\",\""+nameObj+"\",true);' id='"+nameObj+"optLabel_"+value+"'>"+label+"</span>";

		globalFunc.setObjClass(nameObj+'Line_'+value,'textSelectOpt');
		td.onmouseout = "globalFunc.setObjClass('"+nameObj+"Line_"+value+"','textSelectOpt')";
		td.onmouseover = "globalFunc.setObjClass('"+nameObj+"Line_"+value+"','textSelectOptHover')";

		/***/
	}

	function addItemArray(items,nameObj){

		var table = document.getElementById('list'+nameObj+'Table');

		table.style.display = 'none';

		var x;
		var label;
		var value;
		var trs = new String();

		for(value in items){

			label = items[value];
			value = value;

//			trs+= new String("<tr id='list"+nameObj+"Tr"+value+"' onmouseover=\"globalFunc.setObjClass('"+nameObj+"Line_"+value+"','textSelectOptHover');\" onmouseout=\"globalFunc.setObjClass('"+nameObj+"Line_"+value+"','textSelectOpt')\" onClick='selectFunc.changeSelectLabel(\""+value+"\",\""+globalFunc.url_encode(label)+"\",\""+nameObj+"\",true);' >");
			trs+= new String("<tr id='list"+nameObj+"Tr"+value+"' onmouseover=\"globalFunc.setObjClass('list"+nameObj+"Tr"+value+"','textSelectOptHover');\" onmouseout=\"globalFunc.setObjClass('list"+nameObj+"Tr"+value+"','textSelectOpt')\">");
			trs+= new String("	<td width=15 id='"+nameObj+"Line_"+value+"' >");
			trs+= new String("		<input type='checkbox' value='"+value+"' name='"+nameObj+"[]' id='"+nameObj+"_"+value+"' onClick='selectFunc.changeSelectLabel(\""+value+"\",\""+label+"\",\""+nameObj+"\",false);'>");
			trs+= new String("	</td>");
			trs+= new String("	<td onClick='selectFunc.changeSelectLabel(\""+value+"\",\""+label+"\",\""+nameObj+"\",true);'>");
			trs+= new String("		<span class='spnSelectOpt'  id='"+nameObj+"optLabel_"+value+"'>"+label+"</span>");
			trs+= new String("	</td>");
			trs+= new String("</tr>");

		}
		try{
			$(table).html(trs);

		}catch(e){
			//alert(e.message);
		}

		table.style.display = '';
		/***/
	}


	function reset ( nameOpt ){
		var textSelect = eval("document.getElementById('textSelect"+nameOpt+"')");
		this.cleanList(nameOpt);
		textSelect.innerHTML = 'Indiferente';
	}

	function setPerfil( id ){
		globalPerfil = id;
		if( document.getElementById('habInf') ){
			if( id == 4 ){
				document.getElementById('habInf').style.display = "";
			}
			else{
				document.getElementById('habInf').style.display = "none";
			}
		}
	}
}


$(document).ready(function(){
		$(document).bind('mousedown',function(e){checkHide(e)});
	}
);


function checkHide(e){

	e=e||window.event;

	var tgt = e.scrElement||e.target;


	if(g_visible_options!=false){

		if($(tgt).parents('#dvMainSelectOpt'+g_visible_options).length == 0){

				hideOptions(g_visible_options);

		}
	}
}

var g_visible_options = false;

function showHideOptions(name){

	globalFunc.MM_showHideLayers(name+'selectOpt','','show');
	globalFunc.MM_showHideLayers(name+'selectOptButton','','show');

	if($('#'+name+'selectOptButton').css('display')=='none'){
		hideOptions(name,true);

	}else{
		g_visible_options = name;
		$('#ifrSelect'+name).show();
	}

}

function hideOptions(name,noexec){

	if(typeof noexec == 'undefined' || noexec == false){
		globalFunc.MM_showHideLayers(name+'selectOpt','','hide');
		globalFunc.MM_showHideLayers(name+'selectOptButton','','hide');
	}

	$('#ifrSelect'+name).hide();
	g_visible_options = false;

}

/***** não estava reconhecendo dentro do objeto *****************/



