	////////////////////////  --> DMKVALIDATOR <-- ///////////////////////////////
	//																			//
	//          V. 1.5 - Autores: Denis Carneiro denis@agenciadmk.com.br        //
	//					 		  Henrique de Moraes Vieira                     //
	//					 		  Paulo Roberto Augusto de Jesus                //
	//																			//
	//							Criado em 15/06/2006							//
	//																			//
	//////////////////////////////////////////////////////////////////////////////
	//
	//
	////////////////////////////////////  DESCRIÇÃO  ////////////////////////////
	//																		   //
	// Biblioteca para varredura e validação automática de campos de formulá-  //
	// rios.																   //
	// 																		   //
	/////////////////////////////////////////////////////////////////////////////
	
	//////////////////////////// FORMA DE UTILIZAÇÃO ////////////////////////////
	//																		   //
	//	Existem dois tipos de vallidação: a tipagem do campo e a sua           //
	//	obrigatoriedade.													   //
	//	Para validar a tipagem, deve-se colocar no objeto do formulário 	   //
	//	o atributo tipo="", sendo que entre as aspas deve-se colocar a tipagem //
	//	conforme a listagem abaixo:											   //
	//																		   //
	// 1- 	e-mail 		----> valida e-mail.								   //
	// 2- 	inteiro		----> Aceita somente valores inteiros positivos ou 	   //
	//                        negativos.									   //
	// 3- 	decimal 	----> Aceita números decimais, positivos ou 	       //
	//                        negativos, com pelo menos 1 casa decimal.		   //
	// 4- 	moeda 		----> Aceita números decimais, positivos ou 	       //
	//                        negativos, com pelo menos 1 casa decimal.		   //
	// 5- 	cep 		----> valida cep.                                      //
	// 6- 	data 		----> valida data no formato brasileiro                //
	// 7- 	hora 		----> valida hora no formato 12 ou 24 horas 	 	   //
	// 8- 	cpf 		----> valida cpf.									   //
	// 9- 	cnpj 		----> valida cnpj.									   //
	// 10-	url			----> valida url com ou sem o http e o www			   //
	// 11-	telefone	----> valida telefone com todos os tipos de entrada    //
	// 12-	ddg			----> valida números de telefone 0800 				   //
	// 13-	rg			----> valida RG										   //
	// 14-	cartão		----> valida cartão de crédito (amex, visa e master)   //
	//						  												   //
	//						  												   //
	//	Para validar a obrigatoriedae, deve-se colocar no objeto do formulário //
	//	o atributo obrigatorio="", sendo que entre as aspas deve-se colocar    //
	//	a obrigatoriedade conforme a listagem abaixo:						   //
	//																		   //
	// 1- 	naovazio	---->	se não puder ficar vazio.					   //
	// 2-  	depende		---->	utiliza o atributo complemento da sequinte 	   //
	//							forma: copmplemento="campo1,campo2", sendo que //
	//							caso o campo1 ou o campo2 forem selecionados   //
	//							ou checados, ou != de vazio, o campo em questão//
	//							torna-se obrigatório. O complemento deve ser o //
	//							ID do campo e não o nome dele.				   //
	// 3-  	umdos		---->	utiliza o atributo complemento da sequinte 	   //
	//							forma: complemento="campo1,campo2", sendo que  //
	//							só pode ser preenchido um dos campos que 	   //
	//							constam dentro de complemento ou o próprio 	   //
	//							campo em questão. O complemento deve ser o 	   //
	//							ID do campo e não o nome dele.				   //
	// 4-  	iguala		---->	utiliza o atributo complemento da sequinte 	   //
	//							forma: copmplemento="campo1,campo2", sendo que://
	//							se for textfield, senha, textarea ou radio, o  //
	//							o complemento deve ser o texto do valor do 	   //
	//							campo ou o ID do campo que deve ser igual a ele//
	//																		   //
	//							se for checkbox ou select multiplo, deve-se    //
	//							colocar o intervalo de seleção mínima e máxima //
	//							desta forma: complemento="1,4"				   //
	//																		   //
	/////////////////////////////////////////////////////////////////////////////



function AbrePopUp(url, nomedajanela, w, h)
{ 
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2 - 50;
	winprops = 'height=' + h + ', width=' + w + ', top=' + wint + ', left=' + winl + ',status=no, scrollbars=no, resizable=yes, menubar=yes'
	 
	win = window.open (url, nomedajanela, winprops);
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}



function validaForm(qualForm){

	var objeto = "";
	var complemento = "";
	var nomedocampo = "";
	var inicioMensagem = "";
	var mensagemFim = "";
	var numeroElementos = qualForm.elements.length;
	var valor = "";
	var expressao = "";
	var x = 0;
	var i = 0;
	var z = 0;
	var soma = 0;
	var resto = 0;
	var temp = "";
	var temp2 = "";
	var temparr = [];

	for(x=0; x<numeroElementos; x++){
		
		objeto = qualForm.elements[x];
		valor = objeto.value;
		mensagemFim = "";
		
		if(valor.length > 1){
			if(valor.charCodeAt(0) == '32'){
				i = 0;
				while (valor.charCodeAt(0) == '32'){
					valor = valor.substring(i,valor.length);
					i++;
				}
				objeto.value = valor;
			}
			if(valor.charCodeAt(valor.length-1) == "32"){
				while(valor.charCodeAt(valor.length-1) == "32"){
					valor = valor.substring(0,valor.length-1);
				}
				objeto.value = valor;
			}
		}
		
		if(objeto.getAttribute("tipo") != undefined || objeto.getAttribute("obrigatorio") != undefined){
			nomedocampo = objeto.name;
			if(nomedocampo == undefined || nomedocampo == ""){
				alert("Atenção\n\nNão foi possivel resgatar o nome do campo " + x + ".\n\nPor favor, contate o administrador do sistema informando esta mensagem.");
				objeto.focus();
				return false;
			}
			
			inicioMensagem = "Atenção\n\nO campo " + nomedocampo;
			
			if(objeto.disabled == false){
				if((objeto.getAttribute("obrigatorio") != undefined && objeto.getAttribute("obrigatorio") != "") || (objeto.getAttribute("obrigatório") != undefined && objeto.getAttribute("obrigatório") != "")){
					switch (objeto.getAttribute("obrigatorio").toLowerCase()){
						case "naovazio":
						case "nãovazio":
						case "nao vazio":
						case "não vazio":
						case "nao_vazio":
						case "não_vazio":
							if(valor == ""){
								alert(inicioMensagem + " não pode ficar em branco.");
								objeto.focus();
								return false;
							}
						break;
						
						case "depende":
							if(objeto.value == ""){
								if(objeto.getAttribute("complemento") == undefined || objeto.getAttribute("complemento") == ""){
									alert(inicioMensagem + " não possui um complemento de verificação válido.\n\nContate o administrador do sistema.");
									objeto.focus();
									return false;
								}else{
									complemento = objeto.getAttribute("complemento");
									temparr = complemento.split(",");
									for(i = 0; i < temparr.length; i++){
										temp = document.getElementById(temparr[i]);
										if(temp == undefined){
											alert("Atenção\n\nO campo " + nomedocampo + " está vinculado com o campo " + temparr[i] + ", que é inexistente.\n\nContate o administrador do sistema.");
											objeto.focus();
											return false;
										}else{
											if(temp.value != ""){
												switch (temp.type){
													case "checkbox":
														if(temp.checked){
															alert(inicioMensagem + " não pode ficar em branco.");
															objeto.focus();
															return false;
														}
													break;
													case "radio":
														if(temp.checked){
															alert(inicioMensagem + " não pode ficar em branco.");
															objeto.focus();
															return false;
														}
													break;
													case "text":
														alert(inicioMensagem + " não pode ficar em branco.");
														objeto.focus();
														return false;
													break;
													case "password":
														alert(inicioMensagem + " não pode ficar em branco.");
														objeto.focus();
														return false;
													break;
													case "textarea":
														alert(inicioMensagem + " não pode ficar em branco.");
														objeto.focus();
														return false;
													break;
												}
											} 
										}	
									}
								}
							}
						break;
						
						case "umdos":
						case "um dos":
						case "um_dos":
							if(objeto.getAttribute("depende") == undefined || objeto.getAttribute("depende") == ""){
								alert(inicioMensagem + " não possui um complemento de verificação (depende) válido.\n\nContate o administrador do sistema.");
								objeto.focus();
								return false;
							}
							complemento = objeto.getAttribute("depende");
							temparr = complemento.split(",");
							
							if (objeto.value != ""){
								temp2 = 1;
							}
							else{
								temp2 = 0;
							}
							for(i = 0; i < temparr.length; i++){
								temp = document.getElementById(temparr[i]);
								if(temp == undefined){
									alert("Atenção\n\nO campo " + nomedocampo + " está vinculado com o campo " + temparr[i] + ", que é inexistente.\n\nContate o administrador do sistema.");
									objeto.focus();
									return false;
								}else{
									if (temp.value != ""){
										temp2 += 1;
										if (temp2 > 1){
											alert("Você deve preencher apenas um dos campos: "+ objeto.name + ", " + complemento);
											objeto.focus();
											return false;
											break;
										}
									}
								}
							}
							if (temp2 == 0){
								alert("Você deve preencher apenas um dos campos: "+ objeto.name + ", " + complemento);
								objeto.focus();
								return false;
								break;
							}
							
						break;
	
						case "iguala":
						case "igual a":
						case "igual_a":
							if(objeto.getAttribute("complemento") == undefined || objeto.getAttribute("complemento") == ""){
								alert(inicioMensagem + " não possui um complemento de verificação (complemento) válido.\n\nContate o administrador do sistema.");
								objeto.focus();
								return false;
							}else{
								complemento = objeto.getAttribute("complemento");
								switch (objeto.type){
									case "checkbox":
										temp = 0;
										temparr = complemento.split(",");
										for(z=0; z<numeroElementos; z++){
											if(qualForm.elements[z].name == objeto.name && qualForm.elements[z].type == "checkbox"){
												if(qualForm.elements[z].checked == true){
													temp += 1;
													if(temparr[1].value != ""){
														if(temp > temparr[1]){
															alert(inicioMensagem + " não foi devidamente preenchido.\n\nVocê deve selecionar no máximo " + temparr[1] + " opções.");
															objeto.focus();
															return false;
															break;
														}
													}
												}
											}
										}
										if(temp < temparr[0]){
											if(temparr[0] > 1){
												alert(inicioMensagem + " não foi devidamente preenchido.\n\nVocê deve selecionar pelo menos " + temparr[0] + " opções.");
											}else{
												alert(inicioMensagem + " não foi devidamente preenchido.\n\nVocê deve selecionar pelo menos " + temparr[0] + " opção.");
											}
											objeto.focus();
											return false;
											break;
										}
									break;
									case "text":
									case "password":
									case "textarea":
										if(document.getElementById(complemento) != undefined){
											if(document.getElementById(complemento).value != objeto.value){
												alert(inicioMensagem + " deve ser preenchido com o mesmo valor do campo " + document.getElementById(complemento).name + ".");
												objeto.focus();
												return false;
											} 
										}else{
											if(objeto.value != complemento){
												alert(inicioMensagem + " deve ser preenchido com o valor: '" + complemento + "'.");
												objeto.focus();
												return false;
											}
										}
									break;
								}
							}
						break;
					}
				}
				
				
				if(objeto.getAttribute("tipo") != undefined && objeto.getAttribute("tipo") != "" && valor != ""){
					switch (objeto.getAttribute("tipo").toLowerCase()){
						case "e-mail":
						case "email":
							expressao = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "inteiro":
							expressao = /^[+-]?[ ]?\d+$/;
							if(testarExpresao(expressao,valor) == false){
								mensagemFim = "\n\nPreencha-o apenas com números inteiros positivos ou negativos";
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "decimal":
							expressao = /^[+-]?[ ]?\d{1,3}(\.?\d{3})*,\d+$/;
							if(testarExpresao(expressao,valor) == false){
								mensagemFim = "\n\nPreencha-o apenas com números inteiros positivos ou negativos, pontos (para separar milhar) e vírgula (para determinar decimal)";
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "moeda":
							expressao = /^[+-]?[ ]?\d{1,3}(\.?\d{3})*,\d{2}$/;
							if(testarExpresao(expressao,valor) == false){
								mensagemFim = "\n\nPreencha-o apenas com números inteiros positivos ou negativos, pontos (para separar milhar) e vírgula (para determinar decimal), com DOIS números decimais.";
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "cep":
							expressao = /^\d{5}[- .]?\d{3}$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
							if(parseInt(valor.substring(0,5),10) < 1000){
								mensagemFim = "\n\nO CEP digitado não existe.";
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;						
							}
						break;
						
						case "data":
							expressao = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
							var ano = valor.split("/");
							if(ano[0] == 29 && ano[1] == 2){
								if (ano[2]%4 == 0 && !(ano[2]%100 == 0 && ano[2]%400 != 0)){ 
								}else{
									retorna(inicioMensagem,objeto,mensagemFim);
									return false;
								}   
							}
						break;
						
						case "hora":
							expressao = /^(((0?[1-9]|[1][0-2])(([hH] ?|:)| ([hH]|:) )(0?[0-9]|[1-5]\d) ?(([mM]|(min)|(MIN)|(Min)) )?(AM|PM|Am|Pm|am|pm)))|(((0?[0-9])|1[0-9]|2[0-3])(([hH] ?|:)| ([hH]|:) )(0?[0-9]|[1-5]\d) ?([mM]|(min)|(MIN)|(Min))?)$/;
							if(testarExpresao(expressao,valor) == false){
								mensagemFim = "\n\nPreencha-o no formato hh:mm";
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "cpf":
							expressao = /^(\d{3}[. -]?){3}\d{2}$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
							
							i = 0;
							for(i=0;i<valor.length;i++)
							{
								temp = valor.substring(i,i+1);
								if(temp == "." || temp == "-" || temp == " ")
								{
									valor = valor.substring(0,i) + valor.substring(i+1,valor.length);
									objeto.value = valor;
								}
							}
	
							if (valor.length != 11 || valor == "00000000000" || valor == "11111111111" || valor == "22222222222" ||	valor == "33333333333" || valor == "44444444444" || valor == "55555555555" || valor == "66666666666" || valor == "77777777777" || valor == "88888888888" || valor == "99999999999"){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
							soma = 0;
							for (i=0; i < 9; i ++){
								soma += parseInt(valor.charAt(i)) * (10 - i);
							}
							resto = 11 - (soma % 11);
							if (resto == 10 || resto == 11){resto = 0;}
							if (resto != parseInt(valor.charAt(9))){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
							soma = 0;
							for (i = 0; i < 10; i ++){soma += parseInt(valor.charAt(i)) * (11 - i);}
							resto = 11 - (soma % 11);
							if (resto == 10 || resto == 11){resto = 0;}
							if (resto != parseInt(valor.charAt(10))){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "cnpj":
							expressao = /^\d{2}[. -]?\d{3}[. -]?\d{3}[. - \/]?\d{4}[. -]?\d{2}$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
							i = 0;
							for(i=0;i<valor.length;i++){
								temp = valor.substring(i,i+1);
								if(temp == "." || temp == "-" || temp == " " || temp == "/"){
									valor = valor.substring(0,i) + valor.substring(i+1,valor.length);
									objeto.value = valor;
								}
							}
							var numeros, digitos, soma, resultado, pos, tamanho, digitos_iguais;
							digitos_iguais = 1;
							for (i = 0; i < 14; i++){
								if (valor.charAt(i) != valor.charAt(i + 1)){
									digitos_iguais = 0;
									break;
								}
							}
							if (!digitos_iguais){
								tamanho = valor.length - 2;
								numeros = valor.substring(0,tamanho);
								digitos = valor.substring(tamanho);
								soma = 0;
								pos = tamanho - 7;
								for (i = tamanho; i >= 1; i--){
									soma += numeros.charAt(tamanho - i) * pos--;
									if (pos < 2){pos = 9;}
								}
								resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
								if (resultado != digitos.charAt(0)){
									retorna(inicioMensagem,objeto,mensagemFim);
									return false;	
								}
								tamanho = tamanho + 1;
								numeros = valor.substring(0,tamanho);
								soma = 0;
								pos = tamanho - 7;
								for (i = tamanho; i >= 1; i--){
									soma += numeros.charAt(tamanho - i) * pos--;
									if (pos < 2){
										pos = 9;
									}
								}
								resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
								if (resultado != digitos.charAt(1)){
									retorna(inicioMensagem,objeto,mensagemFim);
									return false;
								}
							}else{
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							} 
						break;
						
						case "url":
							expressao = /^(http:\/\/)?(www.)?([_a-zA-Z-\d]{3,}(\.?[_a-zA-Z-\d]+)?)(\.[a-z]{2,3})(\.[a-z]{2})?$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "ddg":
							expressao = /^0800[ -.]?\d{3}[ -.]?\d{4}$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "rg":
							expressao = /^\d{2}[\. -]?\d{3}[\. -]?\d{3}([\. -]?(\d|x|X))?$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
						
						case "telefone":
							//expressao = /^((\(0?(..)?[0-9]{2}\) )|(\+\d{2}[ -])?(0?(..)?[0-9]{2})[- ])?[0-9]{3,4}[- \.]?[0-9]{4}$/;
							if(testarExpresao(expressao,valor) == false){
								retorna(inicioMensagem,objeto,mensagemFim);
								return false;
							}
						break;
	
						case "cartao":
						case "cartão":
							tempMes = objeto.getAttribute("mes");
							tempAno = objeto.getAttribute("ano");
							if(tempMes == undefined || tempMes == ""){
								alert(inicioMensagem + " não possui o campo de mês para verificação.\n\nContate o administrador do sistema.");
								objeto.focus();
								return false;
							}else{
							if(tempAno == undefined || tempAno == ""){
								alert(inicioMensagem + " não possui o campo de ano para verificação.\n\nContate o administrador do sistema.");
								objeto.focus();
								return false;
							}else{
								tempMes = document.getElementById(tempMes).value;
								tempAno = document.getElementById(tempAno).value;
								if(tempMes == undefined || tempMes == ""){
									alert(inicioMensagem + "/Mes não pode ficar em branco.");
									objeto.focus();
									return false;
								}else{
									if(tempAno == undefined || tempAno == ""){
										alert(inicioMensagem + "/Ano não pode ficar em branco.");
										objeto.focus();
										return false;
									}else{
										if (tempAno.length == 2) {
											tempAno = "20" + tempAno;
										}
										if (validateCard(valor, tempMes, tempAno) == false){
											return false;
										}
	
									}
								}
							}}
	
						break;
					}
				}
			}
		}
	}
	return true;
}
function mod10( cardNumber ) {
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;


		for( i = 0; i < cardNumber.length; ++i ) {
			ar[i] = parseInt(cardNumber.charAt(i));
		}
		for( i = ar.length -2; i >= 0; i-=2 ) { 
			ar[i] *= 2;							 
			if( ar[i] > 9 ) ar[i]-=9;			 
		}										


			for( i = 0; i < ar.length; ++i ) {
				sum += ar[i];						 
			}
			return (((sum%10)==0)?true:false);	 	
	}


function expired( month, year ) {
		var now = new Date();							
		var expiresIn = new Date(year,month,0,0,0);		
		expiresIn.setMonth(expiresIn.getMonth()+1);		
		if( now.getTime() < expiresIn.getTime() ) return false;
		return true;									
}


function validateCard(cardNumber,cardMonth,cardYear) {
		if( cardNumber.length == 0 ) {						
			alert("Por Favor, Digite corretamente o número do Cartão de crédito.");
			return false;				
		}
		while ((cardNumber.search(" ") != -1) || (cardNumber.search("-") != -1) || (cardNumber.search("/") != -1))
		{
			cardNumber = cardNumber.replace(" ","");
			cardNumber = cardNumber.replace("-","");
			cardNumber = cardNumber.replace("/","");						
		}

	
		for( var i = 0; i < cardNumber.length; ++i ) {		
			var c = cardNumber.charAt(i);


				if( c < '0' || c > '9' ) {
					alert("Por Favor, digite um número válido de Cartão de Crédito.");
					return false;
				}
			}
			
			var length = cardNumber.length;			

		   cardType = "UNKNOWN";
	
		   if ( length == 15 && cardNumber.substr(0, 1) == '3' )                 	{ cardType = "amex"; }
		   if ( length == 16 && cardNumber.substr(0, 4) == '6011' )              	{ cardType = "discover"; }
		   if ( length == 16 && cardNumber.substr(0, 1) == '5'  )                	{ cardType = "mc"; }
		   if ( (length == 16 || length == 13) && cardNumber.substr(0, 1) == '4' ) { cardType = "visa"; }
	
	
				switch( cardType ) {
					case 'amex':


							if( length != 15 ) {
								alert("Entre o número correto do seu Cartão Amercian Express Card.");
								return;
							}
							var prefix = parseInt( cardNumber.substring(0,2));


								if( prefix != 34 && prefix != 37 ) {
									alert("Entre o número correto do seu Cartão Amercian Express Card.");
									return;
								}
								break;
								
					case 'discover':
					
						
						if( length != 16 ) {
							alert("Entre o número correto do seu Cartão Discover Card.");
							return;
						}
						var prefix = parseInt( cardNumber.substring(0,4));
						
						
						if( prefix != 6011 ) {
							alert("Entre o número correto do seu Cartão Discover Card.");
							return;
						}
						break;
						
					case 'mc':
					
					
						if( length != 16 ) {
							alert("Entre o número correto do seu Cartão MasterCard.");
							return;
						}
						var prefix = parseInt( cardNumber.substring(0,2));
					
					
						if( prefix < 51 || prefix > 55) {
							alert("Entre o número correto do seu Cartão MasterCard.");
							return;
						}
						break;
						
					case 'visa':
					
						if( length != 16 && length != 13 ) {
							alert("Entre o número correto do seu Cartão Visa.");
							return;
						}
						var prefix = parseInt( cardNumber.substring(0,1));
					
					
						if( prefix != 4 ) {
							alert("Entre o número correto do seu Cartão Visa.");
							return;
						}
						break;
					}
					
					if( !mod10( cardNumber ) ) { 		
						alert("Desculpe! Esse não é um número de Cartão de Crédito válido.");
						return false;
					}
					
					if( expired( cardMonth, cardYear ) ) {							
						alert("Desculpe! A data que você digitou torna este Cartão de Crédito inválido.");
						return false;
		}
		return true; 
}	

function testarExpresao(expressao,string){
	if(expressao.test(string) != true){
		return false;
	}else{
		return true;
	}
}
function retorna(inicioMensagem,objeto,mensagemFim){
	alert(inicioMensagem + " não parece estar correto." + mensagemFim);
	objeto.focus();
}

// Esta função serve para dar um focus automático no primeiro campo de texto ou senha do formulário quando a página é carregada. O focus acontece no onload, portanto deve ser setada assim:
// <body onload="focusForm('idDoFormulario');">, sendo que idDoFormulario é realmente o id do form que queremos que dê focus.
function focusForm(qualForm){
	var nomeForm = document.getElementById(qualForm);
	var i = 0;
	for(i=0; i < nomeForm.elements.length; i++){
		if(nomeForm.elements[i].type=="text" || nomeForm.elements[i].type=="password"){
			nomeForm.elements[i].focus();
			break;
		}
	}
}

///////////////////////////////   		HABILITA / DESABILITA CAMPOS /////////////////////
//
// campos separados por , --> acao = true ou false.
function habilita(campos,acao){
	var temparr = [];
	var temp;
	temparr = campos.split(",");
	if(temparr.length == 0){
		alert("Atenção\n\nNão foi informado nenhum campo para habilitar/desabilitar.\n\nContate o administrador do sistema.");
		return false;
	}
	if(acao == true){
		for(i=0;i<temparr.length;i++){
				temp = document.getElementById(temparr[i]);
				if(temp == undefined || temp == ""){
					alert("Atenção\n\nNão foi encontrado o elemento " + temp + ".\n\nContate o administrador do sistema.");
					return false;
				}else{
					temp.disabled = false;
				}
		}
	}else{
		for(i=0;i<temparr.length;i++){
				temp = document.getElementById(temparr[i]);
				if(temp == undefined || temp == ""){
					alert("Atenção\n\nNão foi encontrado o elemento " + temp + ".\n\nContate o administrador do sistema.");
					return false;
				}else{
					temp.disabled = true;
				}
		}
	}
}

///////////////////////////////   		HABILITA / DESABILITA CAMPOS B /////////////////////
//
// campos separados por , --> acao = true ou false.
function habilitaB(campo){
	var campox = document.getElementById(campo);
	if(campox.disabled == true){
		campox.disabled = false;
	}else{
		campox.value = "";
		campox.disabled = true;
	}
}

///////////////////////////////   Muda a cor da linha da tabela ///////////////////////////
// Cor quando o Mouse estiver sobre a linha
// onMouseOver="MouseOver(this,'#000000');"
// onMouseOut="MouseOut(this);"
//
////////////////////////////////////////////////////////////////////////////////////////////

function MouseOver(src) {
	if (!src.contains(event.fromElement)){
			src.style.cursor = 'hand';
			src.bgColor = "#000000";
		}
	}

function MouseOut(src){
	if (!src.contains(event.toElement)){
		src.style.cursor = 'default';
		src.bgColor = "";
	}
}

///////////////////////////////   fim Muda a cor da linha da tabela ////////////////////////

//Abre/fecha quando clicado
function clicado(e){
	var source=getSource(e)
	var li=source.parentNode
	li.className=li.className=="fechado"?"aberto":"fechado"
	return false
}

///////////////////////////////   Seta Status dos Links   /////////////////////////////////


function setMsg(msg) {
	window.status = msg;
	window.statusbar = msg;
	return true;
}

///////////////////////////////   Amplia Imagem   /////////////////////////////////


function jczResetWindow(bmp)
{ 
 self.moveTo(2,2);
 self.resizeTo(bmp.width+5,bmp.height+50);
 if (parseInt(navigator.appVersion) >= 4)
 {
 	window.moveTo((screen.width/2)-((bmp.width+50)/2+10),(screen.height/2)-((bmp.height+50)/2));
 }
}

///////////////////////////////   Abre/Fecha Divs   ////////////////////////////////////////

function mostraDiv(NomeDiv, qntDiv, tipoDiv)
{
	quantItem 	= parseInt(qntDiv);
	Div 		= parseInt(NomeDiv);
	tipo 		= parseInt(tipoDiv);
	
	if(tipo == 0){
		for (cont=0; cont < quantItem; cont++)
		{
			objTemp = document.getElementById("pai" + cont.toString());
			if(Div == cont)
			{
				if(objTemp.className == ""){
					objTemp.className = "escondeitem";
				}else{
					objTemp.className = "";	
				}
			}
			else
			{
				objTemp.className = "escondeitem";
			}
		}
	}else{
		for (cont=0; cont < quantItem; cont++)
		{
			objTemp = document.getElementById("conteudoFilho" + cont.toString());
			if(Div == cont)
			{
				if(objTemp.className == ""){
					objTemp.className = "escondeitem";
				}else{
					objTemp.className = "";	
				}
			}
			else
			{
				objTemp.className = "escondeitem"
			}
		}
	}
	document.getElementById("conteudoScroll").scrollUpdate();
}