function Trim(valor)
{
///
/// Remove espaços a direita e a esquerda da string.
///
return valor.replace(/^\s+|\s+$/g, '');
}
function RemoverMascaraControle(controle, regex)
{
///
/// Remove uma regex de um componente.
///
if(regex)
controle.value = RemoverMascaraValor(controle.value, regex);
controle.select();
}
function ValidarAutomatico(args)
{
///
/// Dispara validadores do componente.
///
if(args.Validadores != undefined) {
window.setTimeout(function () {
for (var i = 0; i < args.Validadores.length; i++) {
var validator = $get(args.Validadores[i]);
if (validator != null) {
ValidatorValidate(validator);
}
}
}, 275, args);
}
}
function DoPostBack(controle, args)
{
///
/// Dispara validadores da pagina antes de um postback.
///
for (i = 0; i < args.Validadores.length; i++) {
if ($get(args.Validadores[i]) == null)
continue;
if(!$get(args.Validadores[i]).isvalid)
return;
}
__doPostBack(controle.id,controle.id);
}
function ClientFunction(controle, func, args)
{
///
/// Dispara validadores e chama função de Callback.
///
for(i=0; i < args.Validadores.length; i++)
{
if(!$get(args.Validadores[i]).isvalid)
return;
}
if (func)
func(args);
}
function RemoverMascaraValor(valor, regex)
{
///
/// Remove mascara de valores.
///
if(valor.match(regex))
return valor.replace(/[\. -\/]/g, '');
else
return valor;
}
function ExibirDescricao(controle, idDescricao, idGrid){
///
/// Atualiza valores da descrição da lista de seleção.
///
var odesc = $get(idDescricao);
var table = $get(idGrid);
// remove o texto antigo
if (odesc && odesc.childNodes[0]) {
odesc.removeChild(odesc.childNodes[0]);
}
if(table != null && table.childNodes.length > 0) {
var tbody;
for (var i = 0; i < table.childNodes.length; i++) {
// desconsidera nodes q não sao elementos
if (table.childNodes[i].nodeType == 1) {
tbody = table.childNodes[i];
break;
}
}
for (var j = 0; j < tbody.childNodes.length; j++) {
var tr = tbody.childNodes[j];
if (tr != null && tr.childNodes.length > 0) {
if (tr.cells.length >= 2) {
var codigo = tr.cells[0].childNodes[0].nodeValue;
var descricao = tr.cells[1].childNodes[0].nodeValue;
if (codigo == controle.value) {
odesc.appendChild(document.createTextNode(descricao));
break;
}
}
}
}
}
}
function ExibirComponente(controle, id, show, posicao)
{
///
/// Mostra a lista de sugestão ancorada a baixo do elemento em foco.
///
var elem = document.getElementById(id);
if (elem)
{
if (show)
{
elem.style.display = 'block';
if (posicao)
{
//var sPath = window.location.pathname;
//var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
//if (sPage != "FuncaoContratoCadastro.aspx")
if (controle.id.toLowerCase().indexOf("ucsolicitacaocadastrofuncao") < 0)
elem.style.position = 'absolute';
pos = getPosition(controle);
x = pos.x;
y = pos.y;
switch(posicao)
{
case 1:
y += GetSize(controle).height;
break;
case 2:
y -= GetSize(elem).height;
break;
case 3:
x += GetSize(controle).width;
break;
case 4:
x -= GetSize(elem).width;
break;
}
elem.style.left = x + 'px';
elem.style.top = y + 'px';
pos = getPosition(elem);
if(pos.x != x)
{
x -= (pos.x - x);
elem.style.left = x + 'px';
}
if(pos.y != y)
{
y -= (pos.y - y);
elem.style.top = y + 'px';
}
}
}
else
{
elem.style.display = 'none';
}
}
}
function ExibirComponenteInLine(controle, id, show, posicao)
{
///
/// Mostra a lista de sugestão (inline) ancorada ao lado do elemento em foco.
///
var elem = document.getElementById(id);
if (elem)
{
if (show)
{
elem.style.display = 'inline';
if (posicao)
{
//var sPath = window.location.pathname;
//var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
//if (sPage != "FuncaoContratoCadastro.aspx")
if (controle.id.toLowerCase().indexOf("ucsolicitacaocadastrofuncao") < 0)
elem.style.position = 'absolute';
pos = getPosition(controle);
x = pos.x;
y = pos.y;
switch(posicao)
{
case 1:
y += GetSize(controle).height;
break;
case 2:
y -= GetSize(elem).height;
break;
case 3:
x += GetSize(controle).width;
break;
case 4:
x -= GetSize(elem).width;
break;
}
elem.style.left = x + 'px';
elem.style.top = y + 'px';
pos = getPosition(elem);
if(pos.x != x)
{
x -= (pos.x - x);
elem.style.left = x + 'px';
}
if(pos.y != y)
{
y -= (pos.y - y);
elem.style.top = y + 'px';
}
}
}
else
{
elem.style.display = 'none';
}
}
}
// POSICAO
function getPosition(e){
///
/// Retorna a posição do elemento.
///
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
function GetSize(e)
{
///
/// Retorna a largura e altura do elemento.
///
return {width:e.offsetWidth, height:e.offsetHeight};
}
function getScroll(e)
{
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.scrollLeft;
top += e.scrollTop;
e = e.offsetParent;
}
left += e.scrollLeft;
top += e.scrollTop;
return {x:left, y:top};
}
function findPaste(controle)
{
///
/// Fitral o CTRL PASTE e força um blur no elemento.
///
if ("which" in event) // NN4 & FF & Opera
tecla=event.which;
else if ("keyCode" in event) // Safari & IE4+
tecla=event.keyCode;
else if ("keyCode" in window.event) // IE4+
tecla=window.event.keyCode;
else if ("which" in window.event)
tecla=event.which;
// intercepta o V + ctrl
if (tecla == 86 && event.ctrlKey && controle.value.length == 11)
controle.blur();
else if (tecla == 17 && controle.value.length == 11) // intercepta apenas o CTRL caso a tecla tenha sido solta antes do V
controle.blur();
}
function ApenasNumeros(controle, event, tam){
///
/// Retorna somente nros ou backspace/delete/return.
///
var tecla = employer.event.getKey(event);
if (employer.key.isCtrlV(event)) {
return true;
}
//verifica se é uma tecla especial
if (employer.key.isSpecial(tecla[0])) return true;
var selecionado = false;
var userSelection;
if (controle.value.length == tam && component_isTextNotSelected(controle)) { return false; }
// 48='0', 57='9'
if (employer.key.isSpecial(tecla[0])) return true; // firefox bug backspace
if (tecla[1] >= 48 && tecla[1] <= 57) {
return true;
} else {
return false;
}
}
function moveToNextElement(element, event, size) {
///
/// Força foco para o proximo campo caso ultrapasse o tamanho do campo.
///
var tecla = employer.event.getKey(event);
// alterado validação para todas as teclas especiais
if (element.value.length >= size && !employer.key.isSpecial(tecla[0]) && component_isTextNotSelected(element)) {
// caso seja o único elemento ativo da pagina: tira o foco dele (para executar comportamentos do onblur) e retorna o foco ao elemento
element.blur();
// caso preencheu o tamanho segue para prox elemento
window.setTimeout(function () {
employer.form.next(element);
}, 200);
} else {
return true;
}
}
function ProxControle(element){
///
/// metodo traz foco para o proximo elemento ativo do formulario
///
employer.form.next(element);
}
function checkComponentValidatorFocusOnError(element) {
///
/// verifica se os validadores do componente permite a ida para o proximo campo
/// retorna TRUE caso possa ir
/// retorna FALSE caso não possa ir
///
// validadores do elemento
var validator = element.getAttribute("Validators");
var pattern = /(\d|[a-z]|[A-Z]|[_])+(([_][r][e])|([_][c][v])|([_][r][v]))(\d|[A-Z]|[a-z])+$/;
if (typeof(validator) == 'object' && validator) {
for (var i = 0; i < validator.length; i++) {
if (pattern.exec(validator[i].id)) {
var focusOnError = validator[i].getAttribute("focusOnError");
var isValid = validator[i].getAttribute("isValid");
if ((typeof(isValid) == "boolean" && isValid == false) && (typeof(focusOnError) == "string" && focusOnError === "t")) {
return false;
}
}
}
}
return true;
}
function component_getEventKey(event) {
///
/// Retorna a tecla digitada do evento. X-browser compliance.
///
var e = (!event) ? window.event : event;
var keycode = (e.keyCode) ? e.keyCode : e.which;
return keycode;
}
function component_isEnabled(element) {
///
/// metodo verifica se o campo é ativo
/// 1st param : elemento DOM atual
///
///
/// elemento de referencia
///
if (!element.disabled &&
element.type != "hidden" &&
element.style.display != "none") {
// navega os pais para saber se ele esta dentro de um modal escondida.
var eparent = element.parentNode;
//eparent && eparent.id && (eparent.id != "conteudo" || eparent.id != "topo") &&
while (eparent.style.display != "none" && (eparent.id != "conteudo" && eparent.id != "topo")) {
eparent = eparent.parentNode;
}
if ( eparent.style.display != "none" ) { return true; }
else { return false; }
} else {
return false;
}
}
function component_isTextNotSelected(element) {
///
/// Verifica se usuário não selecionou parte do text ou textarea. X-browser compliance.
///
var value = false;
if (document.selection) {
//IE support
element.focus();
sel = document.selection.createRange();
if (sel.text == "") { value = true; }
} else if (typeof element.selectionStart == 'number') {
// selectionStart == 0 é false então é melhor verificar a tipagem da propriedade
//MOZILLA/NETSCAPE support
var startPos = element.selectionStart;
var endPos = element.selectionEnd;
if (startPos == endPos) { value = true; }
}
return value;
}
function component_getSelectionStart(element) {
///
/// Retorna a posição inicial de seleção do texto em um DOM element.
///
if (document.selection) {
var textRange = document.selection.createRange();
var isCollapsed = textRange.compareEndPoints("StartToEnd", textRange) == 0;
if (!isCollapsed) { textRange.collapse(true); }
var bookmark = textRange.getBookmark();
var ret = bookmark.charCodeAt(2) - 2;
if (navigator.userAgent.toLowerCase().indexOf('nt 5') > -1) {
ret--;
}
return ret;
} else if (typeof element.selectionStart == 'number') {
// selectionStart == 0 é false então é melhor verificar a tipagem da propriedade
return element.selectionStart;
}
}
function component_getSelectionEnd(element) {
///
/// Retorna a posição final de seleção do texto em um DOM element.
///
if (document.selection) {
var textRange = document.selection.createRange();
var isCollapsed = textRange.compareEndPoints("StartToEnd", textRange) == 0;
if (!isCollapsed) { textRange.collapse(false); }
var ret = bookmark.charCodeAt(2) - 2;
if (navigator.userAgent.toLowerCase().indexOf('nt 5') > -1) {
ret--;
}
return ret;
} else if (typeof element.selectionEnd == 'number') {
// selectionStart == 0 é false então é melhor verificar a tipagem da propriedade
return element.selectionEnd;
}
}
function component_getSizeTextSelected(element) {
///
/// Retorna o tamanho da seleção do texto em um DOM element.
///
if (document.selection) {
var textRange = document.selection.createRange();
return textRange.text.length;
} else if (typeof element.selectionStart == 'number') {
// selectionStart == 0 é false então é melhor verificar a tipagem da propriedade
return element.selectionEnd - element.selectionStart;
}
}
function component_isSpecialKey(event) {
///
/// Verifica se uma tecla é especial. X-browser compliance.
/// 0 keycode = non char
/// 1 charcode = chars
///
//var key = component_getEventKey(event);
var key = employer.event.getKey(event);
if (event.type == 'keypress') {
switch (key[0]) {
case 8 : // BACKSPACE
case 9 : // TAB
case 13 : // ENTER
case 16 : // SHIFT CTRL ALT 16-18
case 17 :
case 18 :
case 20 : // CAPS LOCK
case 27 : // ESCAPE
case 33 : // PAGE UP DOWN
case 34 :
case 35 : // HOME END
case 36 :
case 37 : // ARROWS
case 38 :
case 39 :
case 40 :
case 45 : // INSERT DELETE
case 46 :
case 112 : // F1
case 113 : // F2
case 114 : // F3
case 115 : // F4
case 116 : // F5
case 117 : // F6
case 118 : // F7
case 119 : // F8
case 120 : // F9
case 121 : // F10
case 122 : // F11
case 123 : // F12
return true;
break;
default :
return false;
break;
}
}
}
function component_getFormElements(element){
///
/// Retorna umas lista com todos os elementos intut select textarea.
/// Dependencia: JQuery.
///
var parent;
// verifica se o elemento não é container máximo do form
if (element.id == "conteudo" || element.id == "topo") { tabParent = element }
else { parent = element.parentNode; }
if (parent && typeof parent == 'object') {
while (parent.id != "conteudo" && parent.id != "topo") {
var pclassName = parent.className.toLowerCase();
var ptagName = parent.tagName.toLowerCase();
// caso seja uma modal
if (ptagName == "div" && (pclassName.match("painel_resultado_padrao") || pclassName == "uc_cep")) { break; }
parent = parent.parentNode;
}
}
var container;
if (typeof parent.id == 'string' && parent.id ) {
container = "#"+parent.id;
} else {
container = "#conteudo";
}
return $(container).find(":input:visible:enabled:not(:image)");
}
function component_isFocusable(element) {
///
/// verifica se é um elemento válido para foco
///
var tagname = element.tagName.toLowerCase();
var type = element.type.toLowerCase();
if (typeof tagname != "undefined") {
if (component_isValidFormElement(element)) { return true; }
else { return false; }
} else { return false; }
}
function component_isValidFormElement(element) {
// nodeName (input textarea select)
// type (button text textarea select-one)
// input, textarea, select and button
var node = element.nodeName.toLowerCase();
if (element && (node == 'input' || node == 'textarea' || node == 'select')) {
return true;
} else {
return false;
}
}
function ArmazenarUltimoFocoComponente(campo)
{
///
/// Grava o ultimo foco em um hidden field.
///
if(campo != null)
{
var campoUltimoFoco = $get('ctl00_hfUltimoFoco');
if(campoUltimoFoco != undefined)
campoUltimoFoco.value = campo.id;
}
}
// TODO: acertar para funcionar no navegador chrome. Usar DOM3
// http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-KeyboardEvent-initKeyboardEvent
// http://developer.mozilla.org/en/DOM/document.createEvent
function component_keyEvtToCase(event, c) {
///
/// Sobreescreve o evento KEYPRESS forçando um toCase(upper/lower).
/// event: o evento keypress que está sendo verificado
/// toCase: upper - força toUpperCase no evento keypress
/// lower - força toLowerCase no evento keypress
/// normal - qualquer outra
///
var charcode = event.which ? event.which : event.keyCode;
var toCase = typeof c != "undefined" ? c : "normal";
var type = event.type;
if (type == 'keypress') {
if ( toCase == "upper" && (charcode >= 97 && charcode <= 122) || (charcode >= 224 && charcode <= 255) ) {
// converte de acordo com o valor decimal da tecla na tabela ascii
charcode = charcode - 32;
component_createNewEventKeypress(event, charcode);
} else if ( toCase == "lower" && (charcode >= 65 && charcode <= 90) || (charcode >= 192 && charcode <= 223) ) {
// converte de acordo com o valor decimal da tecla na tabela ascii
charcode = charcode + 32;
component_createNewEventKeypress(event, charcode);
}
}
}
function component_createNewEventKeypress(oldEvent, newkey) {
// firefox e outros que usam o Gecko
if (oldEvent.which) {
var newEvent = document.createEvent("KeyboardEvent");
newEvent.initKeyEvent("keypress", true, true, document.defaultView,
oldEvent.ctrlKey, oldEvent.altKey, oldEvent.shiftKey,
oldEvent.metaKey, 0, newkey);
oldEvent.preventDefault();
oldEvent.target.dispatchEvent(newEvent);
// IE
} else {
oldEvent.keyCode = newkey;
}
}
function component_getEventTarget(event) {
///
/// Retorna o elemento que iniciou o evento. X-browser compliance.
///
var e = (!event) ? window.event : event;
var target = (e.target) ? e.target : e.srcElement;
if (target.nodeType == 3) {
// Safari bug
target = targ.parentNode;
}
return target;
}
function componentIsValid(id) {
var vals = [];
var rfFone = employer.util.findControl(id + "_rfFone")[0];
var reFone = employer.util.findControl(id + "_reFone")[0];
var rfDDD = employer.util.findControl(id + "_rfDDD")[0];
var reDDD = employer.util.findControl(id + "_reDDD")[0];
var rfDDI = employer.util.findControl(id + "_rfDDI")[0];
var reDDI = employer.util.findControl(id + "_reDDI")[0];
var rfValor = employer.util.findControl(id + "_rfValor")[0];
var reValor = employer.util.findControl(id + "_reValor")[0];
var cvValor = employer.util.findControl(id + "_cvValor")[0];
if (rfFone != null)
vals.push(rfFone);
if (reFone != null)
vals.push(reFone);
if (rfDDD != null)
vals.push(rfDDD);
if (reDDD != null)
vals.push(reDDD);
if (rfDDI != null)
vals.push(rfDDI);
if (reDDI != null)
vals.push(rfDDI);
if (rfValor != null)
vals.push(rfValor);
if (reValor != null)
vals.push(rfValor);
if (cvValor != null)
vals.push(cvValor);
for (var i = 0; i < vals.length; i++) {
ValidatorValidate(vals[i]);
if (!vals[i].isvalid)
return false;
}
return true;
}