
/**
 * É tentado pegar o value do campo usando o document.getElementById caso nao
 * consiga é usado document.forms[pos].idDoCampo
 * 
 * @param ids os ids dos inputs separados por virgula. Ex= formPreco:Preco,formEmail:Email
 *    
 * @param stopOnFirstError boolean que informa se é para parar no primeiro erro
 * 
 * @param posForm é a posicao do formulario que está se tentando validar.
 */
function validaEmptyFields(ids,stopOnFirstError,posForm){
	var vetor = parserStringToArray(ids,",");	
	var result = "";
	var contErros = 0;
	for(i=0;i<vetor.length;i++){
		idField = vetor[i].split(":")[0];
		valor = "";	
		try{
			valor = $(idField).value;
		}	
		catch(e){
			criaLog("Não foi possivel usar document.getElementById para o campo "+idField+"<br>");
			try{
				valor = eval("document.forms["+posForm+"]."+idField+".value");
			}
			catch(e2){
			criarLog("Não foi possivel usar document.forms["+posForm+"] para o campo "+idField+"<br>");				
			}
		}
		msg = vetor[i].split(":")[1];
		msg = trim(msg,0).length==0?idField:msg;
		msg = msg +" não pode ficar em branco";
		if(trim(valor,0).length==0){
			if(stopOnFirstError){
				result = msg;							
				break;
			}
			else{
               result+=msg+"\n";			   			
			}
			try{
				/*
				 * O lugar onde chama pode definir um metodo 
				 * que escreve a mensagem que vai ser mostrada para o usuario.  
				 */
				eval("pointMessage(idField)");
				
			}
			catch(e){}
			 
		}
	}
	
	if(trim(result,0).length>0){
		try{
			var resultado = eval("showMessage(result)");			
			if(resultado===undefined){
				alert(result);		
			}
		}
		//caso nao tenha showMessage
		catch(e2){alert(result);}
		
	}
		
	validado = trim(result,0).length==0?true:false;
	return trim(result,0).length==0?true:false;			
}

function isCPF(id){	
    var c = document.getElementById(id).value;	
    if((c = c.replace(/[^\d]/g,"").split("")).length != 11) return false;
    if(new RegExp("^" + c[0] + "{11}$").test(c.join(""))) return false;
    for(var s = 10, n = 0, i = 0; s >= 2; n += c[i++] * s--);
    if(c[9] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    for(var s = 11, n = 0, i = 0; s >= 2; n += c[i++] * s--);
    if(c[10] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    return true;
}

function isCNPJ(id){
    var b = [6,5,4,3,2,9,8,7,6,5,4,3,2], c = document.getElementById(id).value;
    if((c = c.replace(/[^\d]/g,"").split("")).length != 14) return false;
    for(var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
    if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    for(var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
    if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    return true;
}



/**
 * 
 * @param {Object} idForm id do form a ser submetido.
 * @param {Object} nomeFuncaoValidacao Nome da funcao de validacao do formulario.
 * @param {Object} usingAjax informa se é para usar a ajax para postar o formulario.
 */
function submitForm(idForm,nomeFuncaoValidacao,usingAjax){
	
	    var resultado = false;
		try{
			try{
				resultado = eval(nomeFuncaoValidacao);
				if(resultado===undefined){
					criaLog("Não existe validacao configurada para este formulario "+idForm);
					resultado = true;
				}
			}
			catch(e2){
				resultado = true;
			}
			if(resultado){
				if(!usingAjax){
					$(idForm).submit();
				}
				else{
					ajaxPost(idForm,'Salvando...');
				}
			}
		}
		catch(e){
			criaLog(e);
		}
	
	
}


function validateEmail(email)
{
	if(trim(email,0).length>0){
		var regex = /^[\w]+(\.[\w]+)*@([\w\-]+\.)+[a-zA-Z]{2,7}$/ ;
		if(!regex.test(email))
		{				
			return false;
		}
	}
	return true;
}


function criaLog(log){
	if(!$("logValidacao")){
		document.write("<input type='hidden' name='logValidacao' id='logValidacao' value='"+log+"'>");
	}	
	else{
		$("logValidacao").value =$("logValidacao").value+";"+log; 
	}
	
}