function validaForm(frm, excecoes, validados)
{
	printConfig(frm)
	
	Array.prototype.busca = function busca(txt)
	{
		var i
		for(i = 0; i < this.length; i++)
		{
			if(this[i] == txt)
				return true
		}
		return false
	}
	
	if(excecoes)
		excecoes = excecoes.split(',')
	else
		excecoes = new Array()
		
	if(validados)
		validados = validados.split(',')
	else
		validados = new Array()
	
	for(i = 0; i < frm.length; i++)
	{
		obj = frm.elements[i]
		
		if(excecoes.length > 0)
		{
			if(!excecoes.busca(obj.name))
			{
				if(!tagName(obj))
					return false
			}
		}
		else if(validados.length > 0)
		{
			if(validados.busca(obj.name))
			{
				if(!tagName(obj))
					return false
			}
		}
		else
		{
			if(!tagName(obj))
				return false
		}
	}
	return true
}

function tagName(obj)
{
	if(obj.name.toLowerCase().indexOf('email') > -1)
	{
		if(!validaEmail(obj))
		{
			return false
		}
	}
	else if(obj.name.substr(0,8).toLowerCase() == 'telefone')
	{
		if(!validaTelefone(obj))
		{
			return false
		}
	}
	else if(obj.name.substr(0,4).toLowerCase() == 'data')
	{
		if(!validaData(obj))
		{
			alert('O campo ' + obj.name + ' está incorreto.')
			obj.focus()
			return false
		}
	}
	
	switch(obj.tagName)
	{
		case 'SELECT':
			if(obj.value == '')
			{
				obj.focus()
				alert('Selecione o campo ' + obj.name)
				return false
			}
			return true
			break
		case 'TEXTAREA':
			if(obj.value == '') 
			{
				obj.focus()
				alert('Preencha o campo ' + obj.name)
				return false
			}
			return true
			break
		case 'INPUT':
			return Input(obj)
			break
	}
}

function Input(obj)
{
	switch(obj.type)
	{
		case "hidden":
		case "image":
		case "button":
			return true
			break
		case "file":
			if(obj.value == '')
			{
				obj.focus()
				alert('Selecione um arquivo ' + obj.name)
				return false
			}
			return true
			break
		case "text":
			if((obj.value == '')|| (obj.value =='seu nome') || (obj.value == obj.name))
			{
				obj.focus()
				alert('Preencha o campo ' + obj.name)
				return false
			}
			return true
			break
		case "checkbox":
			var checkbox = document.getElementsByName(obj.name)
			var i, checked = 0
			for(i = 0; i < checkbox.length; i++)
			{
				if(checkbox[i].checked)
					checked = 1
			}
			if(checked == 0)
			{
				obj.focus()
				alert('Selecione o campo ' + obj.name)
				return false
			}
			else
				return true
			break
		case "radio":
			var radio = document.getElementsByName(obj.name)
			var i, checked = 0
			for(i = 0; i < radio.length; i++)
			{
				if(radio[i].checked)
					checked = 1
			}
			if(checked == 0)
			{
				obj.focus()
				alert('Selecione o campo ' + obj.name)
				return false
			}
			else
				return true
			break
		default:
			return true
			break
	}
}

function printConfig(frm)
{
	Array.prototype.busca = function busca(txt)
	{
		var i
		for(i = 0; i < this.length; i++)
		{
			if(this[i] == txt)
				return true
		}
		return false
	}
	var printConfig = Array()
	if(frm.print_config)
	{
		for(i = 0; i < frm.length; i++)
		{
			if(frm.elements[i].tagName == 'INPUT')
			{
				if(frm.elements[i].type != 'hidden')
				{
					if(!printConfig.busca(frm.elements[i].name))
					{
						printConfig.push(frm.elements[i].name)
					}
				}
			}
			else
			{
				if(!printConfig.busca(frm.elements[i].name))
				{
					printConfig.push(frm.elements[i].name)
				}
			}
		}
		frm.print_config.value = printConfig.toString()
	}
}

function validaEmail(campo)
{   
	if (!ConsisteEmail(campo.value)  && campo.value != '')
	{
		alert("Favor Digitar o Email Corretamente.");
		campo.focus();
		return false
	}
	return true
}

function ConsisteEmail(valor) 
{
	var reg = /\w{1,}[@]\w{1,}[.]\w{1,}/
	return reg.test(valor);
}

function validaTelefone(campo)
{
	var reg = /[(]\d{2}[)]\s{1}\d{4}[-]\d{4}/
	
	if (!reg.test(campo.value)  && campo.value != '')
	{
		alert("O campo " + campo.name + " está em um formato incorreto.");
		campo.focus();
		return false
	}
	return true
}

function validaData(campo)
{
	var reg = /\d{2}[\/]\d{2}[\/]\d{4}/
	
	if(!reg.test(campo.value) && campo.value != '')
		return false
	
	
	dia = parseInt(campo.value.substr(0,2))
	mes = parseInt(campo.value.substr(3,2))
	ano = parseInt(campo.value.substr(6,4))
	
	data = new Date()
	dias = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
	if(data.getFullYear() % 4 == 0)
		dias[1] = 29
				
	if(mes < 1 || mes > 12)
		return false
		
	if(dia < 1 || dia > dias[mes - 1])
		return false
		
	return true
}




function formatar(src,mask,validador,somenteNumero,e)
{
	var tecla = (e.keyCode) ? e.keyCode : e.charCode
	if(tecla != 8)
	{
		string = src.value
		aux = ''
		
		if(string == '') return
		
		if(somenteNumero == 's')
		{
			string = string.replace(/\D/gi,'')
		}
		
		val = mask.replace(validador,'')
		for(i = 0; i < val.length; i++)
		{
			string = string.replace(val.charAt(i),'')
		}
		
		mask = mask.split('')
		string = string.split('')
		
		v = Array(mask.length)
		pV = 0
		pString = 0
		
		for (pMask = 0; pMask < mask.length; pMask++)
		{
			if(mask[pMask] != validador)
			{
				v[pV] = mask[pMask]
				pV++
			}
			else
			{
				v[pV] = string[pString]
				pV++
				pString++
			}
			
			if(pString > string.length)
				break
		}
	
		src.value = v.join('')
	}
}

function real(src,e)
{
	string = src.value.replace(/[,.]/gi,'')
	string = string.replace(/^0*/,'')
	validador = '#'
	tamanho = string.length
	switch(tamanho)
	{
		case 0: tamanho = 3
						string = '000'
						break
		case 1: tamanho = 3
						string = '00' + string
						break
		case 2: tamanho = 3
						string = '0' + string
						break
	}
	mask = ''
	for(i = 1; i <= tamanho; i++)
	{
		if(i == 2)
			mask = ',#' + mask
		else if((i - 2) % 3 == 0)
			mask = '.#' + mask
		else
			mask = '#' + mask
	}
	
	var tecla = (e.keyCode) ? e.keyCode : e.charCode
	
	aux = ''
	
	if(string == '') return
	
	string = string.replace(/\D/gi,'')
	
	val = mask.replace(validador,'')
	for(i = 0; i < val.length; i++)
	{
		string = string.replace(val.charAt(i),'')
	}
	
	mask = mask.split('')
	string = string.split('')
	
	v = Array(mask.length)
	pV = 0
	pString = 0
	
	for (pMask = 0; pMask < mask.length; pMask++)
	{
		if(mask[pMask] != validador)
		{
			v[pV] = mask[pMask]
			pV++
		}
		else
		{
			v[pV] = string[pString]
			pV++
			pString++
		}
		
		if(pString > string.length)
			break
	}
	
	src.value = v.join('').replace(/^[.,]/, "")
}

function somenteNumero(e)
{
	var tecla = (e.keyCode) ? e.keyCode : e.charCode
	if((tecla > 47 && tecla < 58) || tecla == 13 || tecla == 0)
		return true
	else
	{
		if (tecla != 8) return false;
		else return true;
	}
}

//###### FUNÇÃO QUE VALIDA E-MAIL
function validaEmail(campo)
{   
	if (!ConsisteEmail(campo.value)  && campo.value != '')
	{
		alert("Favor Digitar o Email Corretamente.");
		campo.focus();
		return false
	}
	return true
}

function ConsisteEmail(valor) 
{
	var reg = /\w{1,}[@]\w{1,}[.]\w{1,}/
	return reg.test(valor);
}

function validaBusca(frm)
{
	if (frm.busca.value == "")
	{
		alert("Digite palavra chave!")
		frm.busca.focus()
		return false
	}
	return true 
}

// GET POSITION, SHOW AND HIDE DIVS
//-----------------------------------------------------------//

function GetElementPosition(element)
	{
		if (typeof(element) == 'string')
			element = document.getElementById(element);
		
		var result = new Object();
		result.x = 0;
		result.y = 0;
		result.width = 0;
		result.height = 0;
		if (element.offsetParent) {
				result.x = element.offsetLeft;
				result.y = element.offsetTop;
				var parent = element.offsetParent;
				while (parent) {
						result.x += parent.offsetLeft;
						result.y += parent.offsetTop;
						var parentTagName = parent.tagName.toLowerCase();
						if (parentTagName != "table" &&
								parentTagName != "body" && 
								parentTagName != "html" && 
								parentTagName != "div" && 
								parent.clientTop && 
								parent.clientLeft) {
								result.x += parent.clientLeft;
								result.y += parent.clientTop;
						}
						parent = parent.offsetParent;
				}
		}
		else if (element.left && element.top) {
				result.x = element.left;
				result.y = element.top;
		}
		else {
				if (element.x) {
						result.x = element.x;
				}
				if (element.y) {
						result.y = element.y;
				}
		}
		if (element.offsetWidth && element.offsetHeight) {
				result.width = element.offsetWidth;
				result.height = element.offsetHeight;
		}
		else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
				result.width = element.style.pixelWidth;
				result.height = element.style.pixelHeight;
		}
		return result;
	}
	
	function showMenu(Div, element){
		clearTimeout(timer);
		xi = document.getElementById(Div);
		xi.style.display = "block";
		
		xi.style.left = (GetElementPosition(element).x) + "px";
		xi.style.top = (GetElementPosition(element).y) + "px";
		
		
	}
	
	var timer
	function hideMenu(Div){
		timer = setTimeout("document.getElementById('"+ Div +"').style.display = 'none';", 50);
		
	}
function newsletter(txt)
{
	if(txt != '')
	{
		alert('Email cadastrado com sucesso.')
		document.getElementById('email').value = 'seu e-mail';
		document.getElementById('nome').value = 'seu nome';
	}
	else
	{
		alert('ERRO:\nOcorreu um erro durante sua solicitação.\nTente novamente mais tarde.')
	}
}

function httpRequest(strUrl, strFnc)
{
	if (window.XMLHttpRequest) {
		objReq = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		objReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	objReq.open("GET", strUrl, true);
	objReq.send(null);
	if (strFnc != "") {
		objReq.onreadystatechange = function() 
		{
			if (objReq.readyState == 4 && (objReq.status == 200 || objReq.status == 304 || objReq.status == 500))
			{
				eval(strFnc + '(objReq.responseText)');
			}
		};
	}
}