/**
 * Internet Explorer 6.0, Mozilla 1.6 
 */


//window.cjf = self.parent; // depende de "scripts/jframework.js"

/**
 *    <<< ResizebleMoveable >>>
 */

cjf.GAP = 10;

cjf.minMensagemWidth  = 232;
cjf.minMensagemHeight = 195;

cjf.getResizeCursor = function(table, x, y, border){
	var resize = '';
	var width  = table.offsetWidth;
	var height = table.offsetHeight;
	if(x<=border){
		resize = (y<=this.GAP?'n':'')  + (y>=height-this.GAP?'s':'') + 'w';
	}else
	if(y<=border){
		resize = 'n' + (x<=this.GAP?'w':'') + (x>=width-this.GAP?'e':'');
	}else 
	if(x>=width-border){
		resize = (y<=this.GAP?'n':'')  + (y>=height-this.GAP?'s':'') + 'e';
	}else 
	if(y>=height-border){
		resize = 's' + (x<=this.GAP?'w':'') + (x>=width-this.GAP?'e':'');
	} 
	return resize+'-resize'; 
}

cjf.setResizebleMoveable = function(frame, tableId, trId){
	if(!this.IE){
		return;
	}
	var table = this.getElement(frame, tableId);
	table.win=frame;
	table.cjf=this;
    table.onmousedown=function(event){
    	var win = this.win;
    	event=event?event:win.event;
		if(event.srcElement==this && 
				(win.resizeCursor = this.cjf.getResizeCursor(this, event.clientX, event.clientY, this.border?this.border:this.style.borderWidth)) ){
			this.setCapture();
	        win.resizing = true;
    	    win.lastX=event.screenX; 
        	win.lastY=event.screenY;
        	win.sourceEvent = this;
		}
	}
	table.onmousemove=function(event){
		var win = this.win;
    	event=event?event:win.event;
       	if(event.srcElement==this){
       		var resizeCursor = this.cjf.getResizeCursor(this, event.clientX, event.clientY, this.border?this.border:this.style.borderWidth);
       		this.style.cursor=resizeCursor;
       	}
    } 
    table.onmouseout=function(){
    	this.style.cursor='default';
    }

	var tr = this.getElement(frame, trId);
	tr.win=frame;
	tr.cjf=this;
    tr.onmousedown=function(event){
    	var win = this.win;
   		event=event?event:win.event;
		if(event.srcElement==this || event.srcElement.parentElement==this){
	    	this.setCapture();
	        win.moving = true;
    	    win.lastX=event.screenX; 
        	win.lastY=event.screenY;
        	win.sourceEvent = this;
        }
	}
	frame.document.win=frame;
	frame.document.cjf=this;
    frame.document.onmousemove = function(event){
    	var win = this.win;
   		event = event?event:win.event;
		var iframe = cjf.getElement(win.parent, win.name);
    	if(win.resizing){
        	var cursor = win.resizeCursor.substring(0, win.resizeCursor.length-'-resize'.length);
        	var dx = cursor.indexOf('e')!=-1
        				?event.screenX-win.lastX
        				:cursor.indexOf('w')!=-1
        					?win.lastX-event.screenX
        					:0;
        	var dy = cursor.indexOf('s')!=-1
        				?event.screenY-win.lastY
        					:cursor.indexOf('n')!=-1
        	 					?win.lastY-event.screenY:0;
			var bounds = this.cjf.getBounds(iframe);
			
			if(bounds.width+dx<250 || bounds.height+dy<100){
				this.onmouseup();
				return;
			}
        	this.cjf.resizeElementBy(iframe, dx, dy);
	        dx = cursor.indexOf('w')!=-1?event.screenX-win.lastX:0;
	        dy = cursor.indexOf('n')!=-1?event.screenY-win.lastY:0
       	 	this.cjf.moveElementBy(iframe, dx, dy);
        	win.lastX=event.screenX; 
        	win.lastY=event.screenY;
        }
        if(win.moving){
			this.cjf.moveElementBy(iframe, event.screenX-win.lastX, event.screenY-win.lastY);
   			win.lastX=event.screenX; 
	   		win.lastY=event.screenY;
	   	}
	}
    frame.document.onmouseup = function(event){
    	var win = this.win;
    	if(win.resizing){
	        win.resizing = false;
    	   	win.sourceEvent.releaseCapture();
	    	win.sourceEvent.style.cursor='default';
	    }
	    if(win.moving){
	   		win.moving = false;
			win.sourceEvent.releaseCapture();
		}
    }
}

/**
 *    <<< Calendar >>>
 */

cjf.calendarYearDisabled = true;

cjf.calendarSetYear = function(year){
	var today = new Date();
	cjf.calendarToday  = new Date(year, today.getMonth(), today.getDate());
	cjf.calendarFieldDate = cjf.calendarToday;
	cjf.calendarCurrentYear = cjf.calendarToday.getFullYear();
	cjf.calendarCurrentMonth = cjf.calendarToday.getMonth();
} 

cjf.calendarSetYear(new Date().getFullYear());

cjf.calendarEnds   = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
cjf.calendarHolidays = [[1,1],[21,4],[1,5],[7,9],[12,10],[2,11],[15,11],[25,12]];

cjf.initCalendar = function(){
	if(!cjf.calendarFullWeeks){
		cjf.calendarMonths = [this.getI18NMessage('janeiro'),this.getI18NMessage('fevereiro'),this.getI18NMessage('marco'),this.getI18NMessage('abril'),this.getI18NMessage('maio'),this.getI18NMessage('junho'),this.getI18NMessage('julho'),this.getI18NMessage('agosto'),this.getI18NMessage('setembro'),this.getI18NMessage('outubro'),this.getI18NMessage('novembro'),this.getI18NMessage('dezembro')];
		cjf.calendarFullWeeks = [this.getI18NMessage('domingo'),this.getI18NMessage('segunda'),this.getI18NMessage('terca'),this.getI18NMessage('quarta'),this.getI18NMessage('quinta'),this.getI18NMessage('sexta'),this.getI18NMessage('sabado')]; 
	}
}
cjf.setTimeout('cjf.initCalendar()',10000);


cjf.calendarGetEnd = function(date){
	var year = date.getFullYear();
	if(date.getMonth()==1 && (year%4==0 && (year%400==0 || year%100!=0)) ){//Fevereiro
		return 29;
	}
	return this.calendarEnds[date.getMonth()];
}
cjf.calendarIsHoliday = function (day, month){
	for(var i=0; i<this.calendarHolidays.length; i++){
		if(day==this.calendarHolidays[i][0] && month+1==this.calendarHolidays[i][1]){
			return true;
		}
	}
	return false;
} 

cjf.calendarSetYearDisabled = function(frame, bool){
	var frameMensagem = frame.parent.frames['cjfMensagem'];
	var cjfCalendarPreviousYear = this.getElement(frameMensagem, 'cjfCalendarPreviousYear');
	this.setVisibility(cjfCalendarPreviousYear, !bool);
	var cjfCalendarNextYear = this.getElement(frameMensagem, 'cjfCalendarNextYear');
	this.setVisibility(cjfCalendarNextYear, !bool);
	this.calendarYearDisabled = bool;
}

cjf.calendarRoll = function(frame, type){
	
	if(typeof(type)!='string'){
		frame.calendarField = type;
		if(!this.isBlank(frame.calendarField, true) &&  this.isValideDate(frame.calendarField, true)){ // frame.calendarField.value && frame.calendarField.value.indexOf('/')!=-1){//TODO data valida!!!
			this.calendarFieldDate = new Date(frame.calendarField.value.substring(6), frame.calendarField.value.substring(3,5)-1, frame.calendarField.value.substring(0,2));
			this.calendarCurrentMonth = this.calendarFieldDate.getMonth();
			this.calendarCurrentYear  = this.calendarFieldDate.getFullYear();
		}
	}else
	if(type=='previousMonth'){
		if(this.calendarCurrentMonth==0 && this.calendarYearDisabled){
			return 
		}
		if(--this.calendarCurrentMonth < 0){
			this.calendarCurrentMonth = 11;
			this.calendarCurrentYear--;
		}
	}else
	if(type=='nextMonth'){
		if(this.calendarCurrentMonth==11 && this.calendarYearDisabled){
			return 
		}
		if(++this.calendarCurrentMonth > 11){
			this.calendarCurrentMonth = 0;
			this.calendarCurrentYear++;
		}
	}else
	if(type=='previousYear'){
		this.calendarCurrentYear--;
	}else
	if(type=='nextYear'){
		this.calendarCurrentYear++;
	}
	var cjfCalendarFooter = frame.document.getElementById('cjfCalendarFooter');
	//(this.calendarFieldDate.getTime()==this.calendarToday.getTime()?'Hoje é ':'')+
	cjfCalendarFooter.innerHTML = '<b>'+this.calendarFullWeeks[this.calendarFieldDate.getDay()]+', '+(this.calendarFieldDate.getDate()<10?'0':'')+this.calendarFieldDate.getDate()+' de '+this.calendarMonths[this.calendarFieldDate.getMonth()]+' de '+this.calendarFieldDate.getFullYear();
	var date = new Date(this.calendarCurrentYear, this.calendarCurrentMonth, 1);
	var cjfCalendar = frame.document.getElementById('cjfCalendar');
	var cjfCalendarMonth = frame.document.getElementById('cjfCalendarMonth');
	cjfCalendarMonth.innerHTML = this.calendarMonths[date.getMonth()];
	var cjfCalendarYear = frame.document.getElementById('cjfCalendarYear');
	cjfCalendarYear.innerHTML = date.getFullYear();
	var start = date.getDay();
	var end = start+calendarGetEnd(date);
	var rows = cjfCalendar.rows;
	for(var i=1; i<rows.length; i++){
		var cells = rows[i].cells;
		for(var j=0; j<cells.length; j++){
			var k = (i-1)*7+j+1;
			var cell = cells[j];
			cell.style.fontWeight = 'normal';
			cell.style.color = 'black';
			cell.style.backgroundColor = 'white';
			cell.style.textDecoration = 'none';
			cell.cjf = this;
			cell.frame = frame;
			if(k<=start || k>end){
				cell.innerHTML='&nbsp;';
				cell.onclick=null;
				cell.onmouseover=null;
				cell.onmouseout=null;
			}else{
				var day = k-start;
				cell.cjfDay = day;
				if(this.calendarIsHoliday(day, date.getMonth())){
					cell.style.color = 'red';
					cell.style.fontWeight = 'bold';
				}
				if(day==this.calendarToday.getDate() && date.getMonth()==this.calendarToday.getMonth() && date.getFullYear()==this.calendarToday.getFullYear()){
					cell.style.color = 'blue';
				}else
				if(k%7==0 || k%7==1){
					cell.style.color = '#909090';
				}
				var border = day==this.calendarFieldDate.getDate() && date.getMonth()==this.calendarFieldDate.getMonth() && date.getFullYear()==this.calendarFieldDate.getFullYear();
				cell.innerHTML=(border?'<font style="border:1px solid #a0a0a0">':'')+'&nbsp;'+day+'&nbsp;'+(border?'</font>':'');
				cell.onclick=this.calendarClick;
				cell.onmouseover=this.calendarMouseover;
				cell.onmouseout=this.calendarMouseout;
			}
		}
	}
}
cjf.calendarClick = function(){
	this.frame.calendarField.value=(this.cjfDay<10?'0':'')+this.cjfDay+'/'+
	                        (this.cjf.calendarCurrentMonth<9?'0':'')+(this.cjf.calendarCurrentMonth+1)+'/'+
	                    	 this.cjf.calendarCurrentYear;
	this.frame.calendarFieldDate=new Date(this.cjf.calendarCurrentYear, this.cjf.calendarCurrentMonth, this.cjfDay);
	this.cjf.hideMessage(this.frame);
	this.onmouseout();		                    
}
cjf.calendarMouseover = function(){
	this.style.backgroundColor='#88aaff';
	this.lastTextDecoration = this.style.textDecoration;
	this.style.textDecoration='underline';
	this.style.cursor = 'hand';
}
cjf.calendarMouseout = function(){
	this.style.backgroundColor='white';
	this.style.textDecoration=this.lastTextDecoration;
	this.style.cursor = 'default';
}


/**
 *    <<< sub-cadastros >>>
 */

cjf.subCadastrosValidacoesAdd = function(frame, parent, index, fieldsName, validacoes){
    if(!frame.cjfSubCadastrosValidacoes){
	    frame.cjfSubCadastrosValidacoes = [];
    }
    var form = this.getForm(frame);
    frame.cjfSubCadastrosValidacoes[parent] = [];
    var subForm = frame.cjfSubCadastrosValidacoes[parent][index] = new Object();
    for(var i=0; i<fieldsName.length; i++){
	    eval('subForm.'+fieldsName[i]+'=form.elements["'+parent+'['+index+'].'+fieldsName[i]+'"]');
    }
    subForm.validacoes = validacoes;
}

cjf.subCadastrosAdicionar = function(frame, id, name){
	var tr = this.getElement(frame,'cjfSubCadastrosTemplate_'+name);
	var tabela = this.getElement(frame,'cjfSubCadastros_'+name);
	var row = tabela.insertRow(-1);
	row.tabela = tabela;
	row.cjf = this;
	row.frame = frame;
	row.tableName = name;
	row.onclick = function(){
		this.cjf.subCadastrosClick(this.frame, this, this.tableName, this.cjfSubCadastrosIndex);
	};
	var cell0 = row.insertCell(0);
	cell0.vAlign ='top';
	var cell1 = row.insertCell(1);
	cell1.vAlign ='top';
	
	var count = frame.subCadastrosNumbers[name].counter++;
	cell0.innerHTML = tr.cells[0].innerHTML.replace(/\$count/g, count);
	var currentId = frame.subCadastrosNumbers[name].currentId++;
	cell1.innerHTML = tr.cells[1].innerHTML.replace(new RegExp('\\$'+id+'','g'), currentId);
	row.cjfSubCadastrosIndex = currentId;
	this.subCadastrosClick(frame, row, name, currentId);
	this.subCadastrosSetReadOnly(row, false);
	tabela.cjfSubCadastrosOperacao = 'adicionar';
	this.subCadastrosExibirBotoes(frame, name, 'finalizacao');
	this.subCadastrosCopyValidacao(frame, id, '$'+id, currentId);
	tabela.parentNode.scrollTop = tabela.parentNode.scrollHeight-tabela.parentNode.clientHeight;
	if(!frame.subCadastrosAbertos){
		frame.subCadastrosAbertos = [];
	}
	frame.subCadastrosAbertos[name] = tabela;
}

cjf.subCadastrosExcluir = function(frame, name){
	var tabela = this.getElement(frame,'cjfSubCadastros_'+name);
	if(!tabela.lastSelectedRow){
		this.showMessage(this.getI18NMessage('selecioneUmItem')+'!', frame);
		return;
	}
	if(this.showConfirm(this.getI18NMessage('desejaRealmenteExcluirEsteItem')+'?')){
		tabela.lastSelectedRow.cells[0].innerHTML = '';
		tabela.lastSelectedRow.cells[1].innerHTML = '';
		tabela.lastSelectedRow.display = 'none';
	}
}

cjf.subCadastrosEditar = function(frame, name){
	var tabela = this.getElement(frame,'cjfSubCadastros_'+name);
	if(!tabela.lastSelectedRow){
		this.showMessage(this.getI18NMessage('selecioneUmItem')+'!', frame);
		return;
	}
	this.subCadastrosSetReadOnly(tabela.lastSelectedRow, false);
	this.subCadastrosExibirBotoes(frame, name, 'finalizacao');
	tabela.cjfSubCadastrosOperacao = 'editar';
	var properties = tabela.lastSelectedRow.cjfSubCadastrosProperties = [];
	this.subCadastrosSaveFieldValues(tabela.lastSelectedRow, properties);
	if(!frame.subCadastrosAbertos){
		frame.subCadastrosAbertos = []
	}
	frame.subCadastrosAbertos[name] = tabela;
}

cjf.subCadastrosClick = function(frame, tr, tableName, index){
	tr.cjfSubCadastrosIndex = index;
	var tabela = this.getElement(frame,'cjfSubCadastros_'+tableName);
	if(!tabela.cjfSubCadastrosOperacao){
		this.subCadastrosSetBackgroundColor(tr, 'LightSteelBlue');
		if(tabela.lastSelectedRow && tabela.lastSelectedRow!=tr){
			this.subCadastrosSetBackgroundColor(tabela.lastSelectedRow, '#e6e6e6');
		}
		tabela.lastSelectedRow = tr;
	}else
	if(tabela.lastSelectedRow!=tr){
		this.showMessage(this.getI18NMessage('clickEmConfirmarOuCancelar')+'!', frame);
	}
}

cjf.subCadastrosConfirmar = function(frame, parent, name){
	var tabela = this.getElement(frame,'cjfSubCadastros_'+name);
	if(tabela.lastSelectedRow){
		if(!this.subCadastrosValidate(frame, parent, tabela.lastSelectedRow.cjfSubCadastrosIndex)){
			return false;
		}
		this.subCadastrosSetReadOnly(tabela.lastSelectedRow, true);
	}
	tabela.cjfSubCadastrosOperacao = '';
	this.subCadastrosExibirBotoes(frame, name, 'operacao');
	if(frame.subCadastrosAbertos){
		frame.subCadastrosAbertos[name] = null;
	}
	return true; 
}

cjf.subCadastrosCancelar = function(frame, name){
	var tabela = this.getElement(frame,'cjfSubCadastros_'+name);
	if(tabela.cjfSubCadastrosOperacao=='adicionar'){
		tabela.deleteRow(-1);
		tabela.lastSelectedRow = null;
		frame.subCadastrosNumbers[name].counter--;
	}else
	if(tabela.lastSelectedRow){
		if(tabela.cjfSubCadastrosOperacao=='editar'){
			this.subCadastrosRestoreFieldValues(tabela.lastSelectedRow, tabela.lastSelectedRow.cjfSubCadastrosProperties);
		}
		this.subCadastrosSetReadOnly(tabela.lastSelectedRow, true);
	}
	tabela.cjfSubCadastrosOperacao = '';
	this.subCadastrosExibirBotoes(frame, name, 'operacao');
	if(frame.subCadastrosAbertos){
		frame.subCadastrosAbertos[name] = null;
	} 
}

cjf.subCadastrosSetReadOnly = function(object, readOnly){
	for(var i=0; i<object.childNodes.length; i++){
		var child = object.childNodes[i];
		if(child.className && child.className.indexOf('cssInput')==0){
			//child.className = 'cssInput'+(readOnly?'ReadOnly':'');
			//child.readOnly = readOnly;
			child.disabled = readOnly;//false;
			if(child.form){
				//child.style.backgroundColor = !readOnly?'white':'LightSteelBlue';
				//child.style.color = !readOnly?'black':'gray';
			}
			if(child.nextSibling && child.nextSibling.id &&  child.nextSibling.id.indexOf('cjfPopupLink_')==0){
				child.nextSibling.disabled = readOnly;
				child.nextSibling.className = readOnly?'cssLinkDesabilidado':'cssLink';
			}
		}
		this.subCadastrosSetReadOnly(child, readOnly);
	}
}

cjf.subCadastrosSetBackgroundColor = function(object, color){
	for(var i=0; i<object.childNodes.length; i++){
		var child = object.childNodes[i];
		if(child.style){
			if(!child.form){
				child.style.backgroundColor = color;
			}
			//if(child.form){
			//	child.style.borderColor = color;//color=='#e6e6e6'?'white':'LightSteelBlue';
			//}
		}
		this.subCadastrosSetBackgroundColor(child, color);
	}
}

cjf.subCadastrosExibirBotoes = function(frame, name, botoes){
	var botaoCancelar = this.getElement(frame, 'cjfSubCadastroBotaoCancelar_'+name);
	var botaoConfirmar = this.getElement(frame, 'cjfSubCadastroBotaoConfirmar_'+name);
	var botaoExcluir = this.getElement(frame, 'cjfSubCadastroBotaoExcluir_'+name);
	var botaoEditar = this.getElement(frame, 'cjfSubCadastroBotaoEditar_'+name);
	var botaoAdicionar = this.getElement(frame, 'cjfSubCadastroBotaoAdicionar_'+name);
	
	botaoCancelar.style.display  = (botoes=='finalizacao')?'':'none';
	botaoConfirmar.style.display = (botoes=='finalizacao')?'':'none';
	try {
		botaoExcluir.style.display   = (botoes=='finalizacao')?'none':'';
	} catch (e) {}
	botaoEditar.style.display    = (botoes=='finalizacao')?'none':'';
	botaoAdicionar.style.display = (botoes=='finalizacao')?'none':'';
}

cjf.subCadastrosAddFieldValidacao = function(frame, parent, index, fieldName, validacao){
	    if(!frame.cjfSubCadastrosValidacoes){
    		frame.cjfSubCadastrosValidacoes = [];
	    }
	    if(!frame.cjfSubCadastrosValidacoes[parent]){
	    	frame.cjfSubCadastrosValidacoes[parent] = [];
	    }
    	var subForm = frame.cjfSubCadastrosValidacoes[parent][index];
    	if(!subForm){
	    	subForm = frame.cjfSubCadastrosValidacoes[parent][index] = new Object();
	    	subForm.validacoes = '';
    	}
	    var form = this.getForm(frame);
   		eval('subForm.'+fieldName+'=form.elements["'+parent+'['+index+'].'+fieldName+'"]');
	    subForm.validacoes += (subForm.validacoes?' && ':'') + validacao;
}

cjf.subCadastrosCopyValidacao = function(frame, parent, source, target){
   	var sourceForm = frame.cjfSubCadastrosValidacoes[parent][source];
	var targetForm = frame.cjfSubCadastrosValidacoes[parent][target];
    if(!targetForm){
	   	targetForm = frame.cjfSubCadastrosValidacoes[parent][target] = new Object();
	   	targetForm.validacoes = '';
    }
    var form = this.getForm(frame);
    for(var name in sourceForm){
    	var field = sourceForm[name];
    	if(field && (field.form || (field.length && field.length!=0 && typeof(field[0])=='object' && field[0].form))){
			field = eval('form.elements["'+parent+'['+target+'].'+name+'"]');
    	}
	    eval('targetForm.'+name+'=field');
    }
}

cjf.subCadastrosSaveFieldValues = function(source, properties){
	for(var i=0; i<source.childNodes.length; i++){
		var child = source.childNodes[i];
		var display;
		if(child.form 
			&& (this.canHaveFocus(child) 
				|| (display=(child.nextSibling && child.nextSibling.id && child.nextSibling.id.indexOf('cjfPopupLink_')==0)))){
	
			var childName = child.form[child.name].length && !child.form[child.name].options?(child.name+'_'+child.value):child.name;
			var property = properties[childName] = new Object();
			property.value = child.value?child.value:'';
			property.checked = child.checked?child.checked:false;
			property.selectedIndex = child.selectedIndex?child.selectedIndex:0;
			if(display){
				property.display = child.nextSibling.innerHTML;
			}
		}
		this.subCadastrosSaveFieldValues(child, properties);
	}
}

cjf.subCadastrosRestoreFieldValues = function(source, properties){
	for(var i=0; i<source.childNodes.length; i++){
		var child = source.childNodes[i];
		if(child.form &&  child.form[child.name]){
			var childName = child.form[child.name].length && !child.form[child.name].options?(child.name+'_'+child.value):child.name;
			var property;
			if((property = properties[childName])){
				child.value = property.value;
				child.checked = property.checked;
				child.selectedIndex = property.selectedIndex;
				if(property.display){
					child.nextSibling.innerHTML = property.display;
				}
			}
		}
		this.subCadastrosRestoreFieldValues(child, properties);
	}
}

cjf.subCadastrosValidate = function(frame, parent, index){
    var form = this.getForm(frame);
    var subForm = frame.cjfSubCadastrosValidacoes[parent][index];
	return this.validateExpressao(frame, form, subForm, subForm.validacoes);
}

cjf.subCadastrosSetNumbers = function(frame, name, counter, currentId){
	if(!frame.subCadastrosNumbers){
		frame.subCadastrosNumbers = [];
	}
	var numbers = frame.subCadastrosNumbers[name] = new Object();
	numbers.counter = counter;
	numbers.currentId = currentId;
}

cjf.subCadastrosHasOpeneds = function(frame, silent, rotulo){
	if(frame.subCadastrosAbertos){
		for(var name in frame.subCadastrosAbertos){
			var table = frame.subCadastrosAbertos[name];
			if(name && table){
				if(!silent){
					var td = this.findParentTag(table, 'TD');
					rotulo = rotulo?rotulo:this.findRotulo(td);
					this.showMessage(this.getI18NMessage('campo')+' "'+(rotulo)+'" '+this.getI18NMessage('deveSerConfirmadoOuCancelado')+'!', null, null); 
					
				}
				var botaoConfirmar = cjf.getElement(frame, 'cjfSubCadastroBotaoConfirmar_'+name);
				if(botaoConfirmar){
					if(botaoConfirmar.click){
						botaoConfirmar.click(); //dispara evento onclick;
					}else{
						botaoConfirmar.onclick();
					}
				}
				return frame.subCadastrosAbertos[name]!=null;
				//return true;
			}
		}
	} 
	return false;
}

cjf.subCadastrosVazio = function(frame, name, silent, rotulo){
	var tabela = this.getElement(frame,'cjfSubCadastros_'+name);
	var result = tabela.rows.length==1;
	if(!result){
		result = true;
		for(var i=1; i<tabela.rows.length; i++){
			if(tabela.rows[i].cells[0].innerHTML != ''){
				result = false;
				break;
			}
		}
	}
	if(result){
		if(!silent){
			var td = this.findParentTag(tabela, 'TD');
			rotulo = rotulo?rotulo:this.findRotulo(td);
			this.showMessage(this.getI18NMessage('campo')+' "'+(rotulo)+'" '+this.getI18NMessage('naoPodeSerVazio')+'!', null, null);
		}
	}
	return result;
}

/**
 *    <<< ajuda editável >>>
 */

cjf.ajudaEditavelInstalarF1 = function(frame){
	if(!frame.document.onhelp){
		frame.document.cjfFrame = frame;
		frame.document.cjf = this;
	 	frame.document.onhelp = function(){
			this.cjfFrame.event.cancelBubble = true;
			this.cjf.ajudaEditavelExibir(this.cjfFrame);
			return false;
		};
	}
}

cjf.ajudaEditavelCarregar = function(frame){
	if(this.ajudaEditavelConteudos){
		this.ajudaEditavelStopAlerta();
		var cjfAjudaEditavel = frame.parent.frames['cjfAjudaEditavel'];
		if(!cjfAjudaEditavel){//parent é popup
			return;
		}
		var displayConteudo = cjf.getElement(cjfAjudaEditavel, 'displayConteudo');
		if(displayConteudo){
			var form = frame.document.CJF_FORM;
			var chave = form?form.action:frame.location.href;
			var index1 = chave.lastIndexOf('/')+1;
			var index2 = chave.indexOf('?',index1);
			chave = (index2!=-1?chave.substring(index1, index2):chave.substring(index1)).toLowerCase();
			var conteudo = this.ajudaEditavelConteudos[chave];
			if(!conteudo){
				conteudo = '';
			}
			displayConteudo.innerHTML = conteudo.replace(/\r\n/g,'<br>').replace(/\n/g,'<br>');
			var ajudaForm = this.getForm(cjfAjudaEditavel);
			ajudaForm.chave.value = chave;
			ajudaForm.conteudo.value = conteudo;
			if(this.ajudaEditavelNaoLidos[chave]){
				this.ajudaEditavelChave = chave;
				this.ajudaEditavelInterval = this.setInterval("cjf.ajudaEditavelAlerta()",500);
				if(cjf.getElement(this, 'cjfAjudaEditavel').style.visibility=='visible'){
					this.ajudaEditavelStopAlerta();
					this.ajudaEditavelLido();
				}
			}
		}
		this.ajudaEditavelInstalarF1(frame);
 	}
}

cjf.ajudaEditavelExibir = function(frame){
	this.ajudaEditavelStopAlerta();
	this.ajudaEditavelLido();
	var ajudaEditavel = cjf.getElement(this, 'cjfAjudaEditavel');
	ajudaEditavel.style.visibility='visible';
	this.cookieDelete('ajudaEditavel.fechado');
	if(this.IE){
		ajudaEditavel.lastScrollX = ajudaEditavel.style.pixelLeft-frame.event.clientX+56; 
		ajudaEditavel.lastScrollY = ajudaEditavel.style.pixelTop -frame.event.clientY+8;
	}
} 

cjf.ajudaEditavelFechar = function(){
        var iframe = cjf.getElement(this, 'cjfAjudaEditavel');
        cjf.setVisibility(iframe, false);
        cjf.cookieSet('ajudaEditavel.fechado', 'true');
        iframe.style.filter='alpha(opacity=0)';
        iframe.opacity=0;
}

cjf.ajudaEditavelAlerta = function(){
	var ajudaEditavelLink = this.getElement(this, 'cjfAjudaEditavelLink');
	if(ajudaEditavelLink){
		ajudaEditavelLink.style.color=ajudaEditavelLink.flipFlop?'White':'Red'; //#DAA520
		ajudaEditavelLink.flipFlop = ajudaEditavelLink.flipFlop?false:true;
		ajudaEditavelLink.title = this.getI18NMessage('ajudaAlteradaCliqueAqui');
	}else{
		if(this.ajudaEditavelInterval){
			this.clearInterval(this.ajudaEditavelInterval);
		}
	}
}

cjf.ajudaEditavelLido = function(){
	if(this.ajudaEditavelChave && this.ajudaEditavelNaoLidos[this.ajudaEditavelChave]){
		this.ajudaEditavelNaoLidos[this.ajudaEditavelChave] = false;
		var channel = new Image();
		channel.src='ajudaEditavel.do?CJF_OPERACAO=LIDO&chave='+escape(this.ajudaEditavelChave);
		//alert(this.ajudaEditavelChave);
	}
}

cjf.ajudaEditavelStopAlerta = function(){
	if(this.ajudaEditavelInterval){
		this.clearInterval(this.ajudaEditavelInterval);
		this.ajudaEditavelInterval=false;
		var ajudaEditavelLink = this.getElement(this, 'cjfAjudaEditavelLink');
		ajudaEditavelLink.style.color='White';
		ajudaEditavelLink.title = "Ajuda";
	}
}


/**
 *    <<< outros >>>
 */

cjf.checkOperacao = function(frame, checkbox, subcadastro){
	if(frame && subcadastro && frame.event && frame.event.ctrlKey){
		var elements = checkbox.form.elements;
		for(var i=0; i<elements.length; i++){
			var field = elements[i];
			if(field && field.value==checkbox.value &&  field.checked!=checkbox.checked && field.name && field.name.indexOf('operacao')!=-1){
				field.checked = checkbox.checked;
				cjf.checkOperacao(null, field, subcadastro);
			}
		}
	}
	var name = 'operacao';
	if(subcadastro){
		var index = checkbox.name.indexOf('[');
		var id = checkbox.name.substring(index+1, checkbox.name.indexOf(']',index));
		name = 'permissao['+id+'].operacao';
	}
	var form = checkbox.form;
	var checkeboxes = eval('form.elements["'+name+'"]');
	var normal = checkeboxes.length==2;
	if(!checkbox.checked){
		if(checkbox==checkeboxes[normal?1:3]){
			checkeboxes[0].checked = false;
			if(!normal){
				checkeboxes[1].checked = checkeboxes[2].checked = false;
			}
		}
	}else{
		checkeboxes[normal?1:3].checked = true;
	}
}

cjf.callbackAutorizacao = function(field, id, display){
	var elements = field.form.elements;
	for(var i=0; i<elements.length; i++){
		var fd = elements[i];
		if(fd!=field && fd.value==id && fd.name.indexOf('].autorizacao')!=-1){
			cjf.showMessage('Já existe uma permissão com "'+display+'"!', self);
			var index = field.name.indexOf('[')+1;
			var id = field.name.substring(index, field.name.indexOf('].autorizacao', index));
			var cjfDisplay = field.nextSibling.firstChild;
			cjfDisplay.innerText = this.getI18NMessage('pesquisar')+'...';
			field.value = '';
		}
	}
}

