function LTRIM(text, remChar) {if(text == null) {return null;}var i, cnt = 0;var c = (remChar == null ? " " : remChar);var len = text.length;for(i = 0; i < len && c.indexOf(text.substr(i, 1)) != -1; ++i, ++cnt);	return text.substring(cnt, len);}
function RTRIM(text, remChar) {if(text == null) {return null;}var i, cnt = 0;var c = (remChar == null ? " " : remChar);var len = text.length;for(i = len-1; i >= 0 && c.indexOf(text.substr(i, 1)) != -1; --i, ++cnt);return text.substring(0, len-cnt);}
function LPAD(text, size, fillWith) {if(text == null || size <= 0) {return null;}if(text.length >= size) {return text.substr(0, size);}var s = "";var fill = (fillWith == null ? " " : fillWith);var loop = Math.floor((size - text.length) / fill.length);	for(; loop > 0; --loop){s += fill;}	loop = (size - text.length) % fill.length;if(loop > 0){s += fill.substr(0, loop);}	return s + text;}
function RPAD(text, size, fillWith) {if(text == null || size <= 0) {return null;}if(text.length >= size) {return text.substr(0, size);}var s = "";var fill = (fillWith == null ? " " : fillWith);var loop = Math.floor((size - text.length) / fill.length);for(; loop > 0; --loop) {s += fill;}	loop = (size - text.length) % fill.length;if(loop > 0) {s += fill.substr(0, loop);}	return text + s;}
function format(text, formatMask) {var flen = (formatMask == null ? 0 : formatMask.length);var tlen = (text == null ? 0 : text.length);if(tlen == 0 || flen == 0) {return null;}var c = '';var xx = flen-1;var clen = tlen;var textOut = "";var st = ""; for (; xx >= 0; --xx) {c = formatMask.substr(xx, 1);if (c == '9' || c == 'A' || c == 'a') {--clen;if(clen < 0) {break;}st = text.substr(clen, 1);if(c == '9') {textOut = st + textOut;} else	    if(c == 'A') {textOut += st.toUpperCase();} else	    if(c == 'a') {textOut += st.toLowerCase();}} else {textOut = c + textOut; if(c == text.substr(clen-1, 1)) {if(--clen < 0) {break;}}}}return textOut;}
function translate(s, f, r) {var n = -1;var ret = "";var c;var l = r.length-1;var xx = 0; if(s == null || s.length == 0 || f.length == 0) {return "";}for(xx=0; xx < s.length; ++xx) {c = s.charAt(xx);n = f.indexOf(c);if(n != -1) {if(n <= l) {ret += r.charAt(n);}} else {ret += c;}}return ret;}
function checkCPF(text) {var cpf = LPAD(translate(text, 'x/.- ', 'x'), 11, '0');if(cpf == null || cpf.length != 11) {return null;}var dig1 = 0;var dig2 = 0;var mult = 12;var n = 0;var xx;	for(xx = 0; xx < 9; ++xx) {n = parseInt(cpf.substr(xx, 1));dig2 += n * --mult;dig1 += n * (mult-1);}dig2 += parseInt(cpf.substr(xx, 1)) * --mult;if((dig1 = (dig1 * 10) % 11) >= 10) {dig1 = 0;}if((dig2 = (dig2 * 10) % 11) >= 10) {dig2 = 0;}if(dig1 + "" + dig2 == cpf.substr(9, 2)) {return format(cpf, '999.999.999-99');} else {return null;}}

function checkPisPasep(codigo) {
	var pis = codigo.replace(/[^0-9]/g, "");
	var n = 0;
	var resto = 0;

	if(pis == "" || pis.length < 11) {
		return 0;
	}
	n = 0;
	for(x = 0; x < 10; ++x) {
		n = n + parseInt(pis.substr(x, 1)) * parseInt("3298765432".substr(x, 1));
	}
	if((resto = n % 11) != 0) {
		resto = 11 - resto;
	}
	if(resto == parseInt(pis.substr(11, 1))) {
		return 0;
	}
	return 1;
} // checkPisPasep

function checkCNPJ(text) {var cnpj = LPAD(translate(text, 'x/.- ', 'x'), 14, '0');
  if(cnpj == null || cnpj.length != 14) {return null;}
  var peso1 = '543298765432';
	var peso2 = '6543298765432';
	var dig1 = 0;
	var dig2 = 0;
	var n = 0;
	var xx;

	for(xx = 0; xx < 12; ++xx) {
	  n = parseInt(cnpj.substr(xx, 1));
		dig1 += n * parseInt(peso1.substr(xx, 1));
		dig2 += n * parseInt(peso2.substr(xx, 1));
	}
	dig2 += parseInt(cnpj.substr(xx, 1)) * parseInt(peso2.substr(xx, 1));
	
	dig1 -= Math.floor(dig1 / 11) * 11;
	dig1 = (dig1 <= 1 ? 0 : 11 - dig1);
	
	dig2 -= Math.floor(dig2 / 11) * 11;
	dig2 = (dig2 <= 1 ? 0 : 11 - dig2);

	if(dig1 + "" + dig2 == cnpj.substr(12, 2)) {
		return format(cnpj, '99.999.999/9999-99');
	} else {
		return null;
	}
}

function onfocusMask(item, f) {
	nHandler = 0;
	if(f == null || f == "") {nHandler = -1; return;}

	var len = f.length;
	arrMask = new Array(len);
	if(item.value.length == f.length) {
		nHandler = 1;
	};
	
	for(var xx = 0; xx < len; ++xx) {
	  arrMask[xx] = f.substr(xx, 1);
	}
	item.maxLength = len;
}

function onkeydownMask(event, item) {
	var ec = event.keyCode;

  if (nHandler == 1 && ((ec >= 96 && ec <= 105 && (ec-=48)) || (ec >= 48 && ec <= 57))) {
	  nHandler = 0;
	  item.value = "";
	}

	var len = item.value.length;
  var c = arrMask[len];
  
	if(c == '9' && ((ec >= 96 && ec <= 105 && (ec-=48)) || (ec >= 48 && ec <= 57))) {
	  if(len < arrMask.length && " :/.-".indexOf(arrMask[len+1]) != -1) {
  		item.value += String.fromCharCode(ec) + arrMask[len+1];
	  	event.returnValue = false;
	  }
		return;
	} else {
	  switch(ec) {
	  	case 8: if(len > 1 && " :/.-".indexOf(arrMask[len-1]) != -1) {
	  	          item.value = item.value.substr(0, len-2);
	  	          event.returnValue = false;
	  	        }
	  	        nHandler = 0;
	  	        return;
	  	case 27: item.value = "";
	  	case 9: return;
	  }
	}
	event.returnValue = false;
	
}

function onblurMask(item) {
  if(nHandler != -1 && item.value.length != arrMask.length) {
  	item.value = "";
  	arrMask = null;
	}
}

function parseMask(f) {
  if(f == null) {return null;}
  var len = f.length;
  if(len == 0) {return null;}

  var a = new Array();
  var ii = 0;
  var x = "x";
  var ix = 0;
  
  for(ii = 0; ii < len; ++ii) {
    c = f.substr(ii, 1);
	if("dMmyHhs".indexOf(c) != -1) {
	  if(c != x) {
	    x = a[++ix] = c;
	  } else {
	  	a[ix] += c;
	  }
	} else if(" /:.-".indexOf(c) != -1) {
	  x = "x";
	  a[++ix] = c;
	} else {alert('?' + c + '? n?o ? um formato v?lido.'); return null;}
  }
  return a;
}

function toDate(str, fmt) {
  var a = parseMask(fmt);
  if (a == null || str == "") {return NaN;}
  var d = new Date('01/01/0000');
  var ix = 0;
  var s = "";
  var dia = 0;
  for(ii in a) {
  	c = a[ii].substr(0, 1);
	s = str.substr(ix, a[ii].length);
	if(c == 'd') {dia = s;} else
	if(c == 'M') {d.setMonth(s - 1);} else
	if(c == 'y') {d.setYear(s);} else
	if(c == 'h' || c == 'H') {d.setHours(s);} else
	if(c == 'm') {d.setMinutes(s);} else
	if(c == 's') {d.setSeconds(s);} else
	if(" /:.-".indexOf(c) != -1 && " /:.-".indexOf(s) == -1) {
	  continue;
    }
	ix += a[ii].length;
  }
  if(dia > 0) {d.setDate(dia);}

  return d;
}

function toChar(d, fmt) {
  var a = parseMask(fmt);
  if (a == null) {return null;}
  var ix = 0;
  var s = "";
  var l = 0;
  var ss = "";

  for(ii in a) {
  	c = a[ii].substr(0, 1);
	if(c == 'd') {n = d.getDate(); s += (n <= 9 ? "0" : "") + n;} else
	if(c == 'M') {n = d.getMonth() + 1; s += (n <= 9 ? "0" : "") + n;} else
	if(c == 'y') {
	  ss = d.getYear().toString();
	  l = 4 - ss.length;
	  for(n = 1; n <= l; ++n) {
	  	ss = "0" + ss;
	  }
	  s += ss.substr(3-a[ii].length, a[ii].length);
	} else
	if(c == 'h' || c == 'H') {n = d.getHours(); s += (n <= 9 ? "0"+n : n);} else
	if(c == 'm') {n = d.getMinutes(); s += (n <= 9 ? "0" : "") + n;} else
	if(c == 's') {n = d.getSeconds(); s += (n <= 9 ? "0" : "") + n;} 
	else {s += fmt.substr(ix, a[ii].length);}
	ix += a[ii].length;
  }
  return s;
}

function compareDateTime(date1, date2, fmt) {
	var d1, d2;

	if(typeof(date1) == "string") {
	  if(isNaN(d1 = toDate(date1, fmt))) {return null;}
	} else if (typeof(date1) == "object") {
	  if(isNaN(d1 = toDate(date1.value, fmt))) {return null;}
	} else {
	  d1 = date1;
	}
	
	if(typeof(date2) == "string") {
	  if(isNaN(d2 = toDate(date2, fmt))) {return null;}
	} else if (typeof(date2) == "object") {
	  if(isNaN(d2 = toDate(date2.value, fmt))) {return null;}
	} else {
	  d2 = date2;
	}
	
	return(d2.getTime() - d1.getTime());
}

function checkDate(field){
	if(isEmpty(field)){
		return false;	
	}
	field.value = field.value.replace(/[\.\-]/g, '\/');
	if(field.value.length==8){
		day   = field.value.substring(0, 2);
		month = field.value.substring(2, 4);
		year  = field.value.substring(4, 8);
		field.value = day+'/'+month+'/'+year;
	}
	aux = field.value.split('\/');
	d = new Date(aux[2], aux[1]-1, aux[0]);
	if(d.getDate()==aux[0] && 
	   d.getMonth()==aux[1]-1 &&
	   d.getFullYear()>1900 && d.getFullYear()<2100){
		return true;
	}else{
		alert('Data inválida. Formato experado DD/MM/AAAA');
		field.select();
		field.focus();
		return false;
	}	
}

function checkDateTime(field){
	if(isEmpty(field)){
		return false;	
	}

	aux = field.value; 
	
	if(aux.length==8 || aux.length==12){
		field.value = aux.substring(0, 2);
		field.value += '/';
		field.value += aux.substring(2, 4);
		field.value += '/';
		field.value += aux.substring(4, 8);
		if(aux.length==12){
			field.value += ' ';
			field.value += aux.substring( 8, 10);
			field.value += ':';
			field.value += aux.substring(10, 12);
		}else{
			field.value += ' 00:00';		
		}
	}
	
	date = field.value.substring(0, 10).replace(/[\.\-]/g, '\/');	
	time = field.value.substring(11, 16).replace(/[\.\-]/g, '\:');
	dAux = date.split('\/');
	tAux = time.split('\:');
	field.value = date + ' ' + time;
	d = new Date(dAux[2], dAux[1]-1, dAux[0], tAux[0], tAux[1], 0);

	if(d.getDate()    == dAux[0]   && 
	   d.getMonth()   == dAux[1]-1 &&
	   d.getFullYear() > 1900      && 
	   d.getFullYear() < 2100      &&
	   d.getHours()   == tAux[0]   &&
	   d.getMinutes() == tAux[1]){
		return true;
	}else{
		alert('Data e hora inv?lidas. Formato experado DD/MM/AAAA HH:MI ');
		field.select();
		field.focus();
		return false;
	}	
}

function isADate(theElement) {
	return checkDate(theElement);
}

function isANumber(element){
	aux = element.value;
	if(isNaN(aux*1)){
	    alert("O valor digitado n?o ? um n?mero!");	
	    return false;
	}
	return true;
}

function isAnIntegerNumber(element){
	element.value = parseInt(element.value);
	return isANumber(element);
}



function validDate(fItem){
	return checkDateTime(fItem);
}

function isEmpty(field){
	field.value = field.value.replace(/^[\s]+/gi, '')
	field.value = field.value.replace(/[\s]+$/gi, '');
	return field.value.length==0;
}