function formEnviar(obj, linkURL) {
	obj.target = "_self";
	obj.action = linkURL;
	obj.submit();
}

function formEnviarConfirmacao(obj, linkURL, msg) {
	if (confirm(msg)) {
		formEnviar(obj, linkURL);
	}

}
function formEnviarNovaJanela(obj, linkURL, nomeJanela) {
	var newWindow;
	obj.target = nomeJanela;
	newWindow = window
			.open(
					linkURL,
					nomeJanela,
					'resizable=yes,scrollbars=no,width=800,height=600,toolbar=yes,location=no,status=no,directories=no,menubar=no,copyhistory=no');
	obj.action = linkURL;
	obj.submit();
}

function formEnviarCompletarCampo(obj, lnkUrl, obj2, obj2value) {
	obj2.value = obj2value;
	formEnviar(obj, lnkUrl);
}

function formEnviarConfirmacaoCompletarCampo(obj, lnkUrl, obj2, obj2value, msg) {
	obj2.value = obj2value;
	formEnviarConfirmacao(obj, lnkUrl, msg);
}

function marcarDesmarcarTodos(objCk) {
	var i;
	if (objCk.length) {
		novoValor = !objCk[0].checked;
		for (i = 0; i < objCk.length; i++) {
			if (objCk[i].disabled == false) {
				objCk[i].checked = novoValor;
			}
		}
	} else {
		objCk.checked = !objCk.checked;
	}
	return true;
}

function AbreJanelaCentro(url, name, height, width, resize) {
	str = "height=" + height + ",innerHeight=" + height;
	str += ",width=" + width + ",innerWidth=" + width;
	if (resize)
		url += "&Resize=true";
	else
		str += ",scrollbars=yes";
	if (window.screen) {
		ah = screen.availHeight - 30;
		aw = screen.availWidth - 10;
		xc = (aw - width) / 2;
		yc = (ah - height) / 2;
		str += ",left=" + xc + ",screenX=" + xc;
		str += ",top=" + yc + ",screenY=" + yc;
	}
	window.open(url, name, str);
}

function loadCatalogo(catalogoParam, combo, url, selectedValue) {
	var json = {
		url : url,
		handleAs : "json",
		preventCache : true,
		content : {
			catalog : catalogoParam
		},
		load : function(catalogo) {
			for (var i = 0; i < catalogo.itens.length; i++) {
				var optionTmp = new Option();
				combo.appendChild(optionTmp);
				optionTmp.text = catalogo.itens[i].nome;
				optionTmp.value = catalogo.itens[i].valor;
				if (selectedValue != ""
						&& selectedValue == catalogo.itens[i].valor) {
					optionTmp.selected = true;
				}
			}
		},
		error : function(error) {
			alert(error);
		}
	}
	dojo.xhrPost(json);
}

function validateEmail(email) {
	var emailPattern = /^[\w._-]+@[\w.-]+\.[a-zA-Z\.]{2,4}$/;
	return emailPattern.test(email);
}

function trim(value) {
	return value.replace(/^\s+|\s+$/g, '');
}

function verificaCpf(numcpf) {
	x = 0;
	soma = 0;
	dig1 = 0;
	dig2 = 0;
	texto = "";
	numcpf1 = "";
	len = numcpf.length;
	x = len - 1;
	if (numcpf == 11111111111 || numcpf == 22222222222 || numcpf == 33333333333
			|| numcpf == 44444444444 || numcpf == 55555555555
			|| numcpf == 66666666666 || numcpf == 77777777777
			|| numcpf == 88888888888 || numcpf == 99999999999
			|| numcpf == 00000000000) {
		return false;
	}

	for (var i = 0; i <= len - 3; i++) {
		y = numcpf.substring(i, i + 1);
		soma = soma + (y * x);
		x = x - 1;
		texto = texto + y;
	}
	dig1 = 11 - (soma % 11);
	if (dig1 == 10)
		dig1 = 0;
	if (dig1 == 11)
		dig1 = 0;
	numcpf1 = numcpf.substring(0, len - 2) + dig1;
	x = 11;
	soma = 0;
	for (var i = 0; i <= len - 2; i++) {
		soma = soma + (numcpf1.substring(i, i + 1) * x);
		x = x - 1;
	}
	dig2 = 11 - (soma % 11);
	if (dig2 == 10)
		dig2 = 0;
	if (dig2 == 11)
		dig2 = 0;
	if ((dig1 + "" + dig2) == numcpf.substring(len, len - 2)) {
		return true;
	}
	return false;
}

function isNumberKey(evt) {
	var charCode = (evt.which) ? evt.which : event.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
	return true;
}

// Declaring valid date character, minimum year and maximum year
var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;

function isInteger(s) {
	var i;
	for (i = 0; i < s.length; i++) {
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9")))
			return false;
	}
	// All characters are numbers.
	return true;
}

function stripCharsInBag(s, bag) {
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1)
			returnString += c;
	}
	return returnString;
}

function daysInFebruary(year) {
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0)))
			? 29
			: 28);
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i == 4 || i == 6 || i == 9 || i == 11) {
			this[i] = 30
		}
		if (i == 2) {
			this[i] = 29
		}
	}
	return this
}

function isDate(dtStr) {
	var daysInMonth = DaysArray(12)
	var pos1 = dtStr.indexOf(dtCh)
	var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
	var strDay = dtStr.substring(0, pos1)
	var strMonth = dtStr.substring(pos1 + 1, pos2)
	var strYear = dtStr.substring(pos2 + 1)
	strYr = strYear
	if (strDay.charAt(0) == "0" && strDay.length > 1)
		strDay = strDay.substring(1)
	if (strMonth.charAt(0) == "0" && strMonth.length > 1)
		strMonth = strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0) == "0" && strYr.length > 1)
			strYr = strYr.substring(1)
	}
	month = parseInt(strMonth)
	day = parseInt(strDay)
	year = parseInt(strYr)
	if (pos1 == -1 || pos2 == -1) {
		return false
	}
	if (strMonth.length < 1 || month < 1 || month > 12) {
		return false
	}
	if (strDay.length < 1 || day < 1 || day > 31
			|| (month == 2 && day > daysInFebruary(year))
			|| day > daysInMonth[month]) {
		return false
	}
	if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
		return false
	}
	if (dtStr.indexOf(dtCh, pos2 + 1) != -1
			|| isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
		return false
	}
	return true
}

function toUpperCase(field) {
	field.target.value = field.target.value.toUpperCase();
}