﻿/* ----------------------------------------------------------
	2007©
	@CRIADO E DESENVOLVIDO POR: IGOR CARVALHO ESCOBAR
	@E-Mail: titiolinkin@gmail.com
	@http://igorescobar.webtutoriais.com/
	@ClickNow Labs 2007 http://www.clicknow.com.br/
---------------------------------------------------------- */
function $( id ) {
	return document.getElementById(id);
}
var idForm = '';
var FormDetectado = false;
var ObjDiv;
var Focus = false;
var fAux = {
	TamanhoArray: function(oArray){
		return oArray.length;
	}
}
var Plugins = {
	FlyDiv: function(startX, startY){
		var verticalpos="frombottom"
			var ns = (navigator.appName.indexOf("Netscape") != -1);
			var d = document;
			function ml(id)
			{
				var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
				if(d.layers)el.style=el;
				el.sP=function(x,y){this.style.left=x;this.style.top=y;};
				el.x = startX;
				if (verticalpos=="fromtop")
				el.y = startY;
				else{
				el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
				el.y -= startY;
				}
				return el;
			}
			window.stayTopLeft=function()
			{
				if (verticalpos=="fromtop")
				{
					var pY = ns ? pageYOffset : document.body.scrollTop;
					ftlObj.y += (pY + startY - ftlObj.y)/10;
				} else {
					var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
					ftlObj.y += (pY - startY - ftlObj.y)/10;
				}
				ftlObj.sP(ftlObj.x, ftlObj.y);
				setTimeout("stayTopLeft()", 10);
			}
			ftlObj = ml("ErrosForm");
			stayTopLeft();
		},
		EscondeElemento: function(elemento){
			$(elemento).style.display = "none";
		}
}
var Security = {
	Padrao: function(Valor){
		return Valor.search(/^[ ]*$/)==-1 ? true : false;
	},
	Email: function(Valor){
		var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
		var check=/@[\w\-]+\./;
		var checkend=/\.[a-zA-Z]{2,3}$/;
		if(((Valor.search(exclude) != -1)||(Valor.search(check)) == -1)||(Valor.search(checkend) == -1))
			return false;
		 else
			return true;
	},
	CPF: function(numcpf){
		x = 0;
		soma = 0;
		dig1 = 0;
		dig2 = 0;
		texto = "";
		numcpf1="";
		len = numcpf.length; x = len -1;
		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;
	},
	CNPJ: function(cnpj){
      var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
      digitos_iguais = 1;
      if (cnpj.length < 14 && cnpj.length < 15)
            return false;
      for (i = 0; i < cnpj.length - 1; i++)
            if (cnpj.charAt(i) != cnpj.charAt(i + 1))
                  {
                  digitos_iguais = 0;
                  break;
                  }
      if (!digitos_iguais)
            {
            tamanho = cnpj.length - 2
            numeros = cnpj.substring(0,tamanho);
            digitos = cnpj.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))
                  return false;
            tamanho = tamanho + 1;
            numeros = cnpj.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))
                  return false;
            return true;
            }
      else
            return false;
    },
	Numero: function(numstr) 
	{
		var nRet = true;
		var strValidNumber="1234567890.,";
		if(numstr == "" || numstr == " ")
			return false;
			
		for (nCount=0; nCount < numstr.length; nCount++)
		{
			strTempChar=numstr.substring(nCount,nCount+1);
			if ( strValidNumber.indexOf(strTempChar,0)==-1)
			{
				return false;
			}
		}
		return(nRet);
	},
	Url: function(strUrl){
		return strUrl.search(/http(s)?:\/\/(www.)?([\w.]+)(\.\w{2,4})+/)==-1 ? false : true;
	}
}
function addObjecto(ob){
		var objBody = document.getElementsByTagName("body").item(0);
			if($('ErrosForm'))
				$('ErrosForm').innerHTML = ob.innerHTML;
			else
			objBody.appendChild(ob);
}
var CriaElementos = {
	addDiv: function (obj,conteudo,id,visibilidade,classe)
	{
		if($('ErrosForm'))
			$('ErrosForm').innerHTML = "";
			
	  	ObjDiv = obj;
		var obj = document.createElement("div");
		
		if(id != null)
			obj.setAttribute('id',id);
			
		if(classe != null){
			obj.setAttribute('class', classe);
			}
			
		obj.style.display = visibilidade;	
		obj.innerHTML = conteudo;
		addObjecto(obj);
	},
	CriaSpan: function(idCampo,idDoSpan,Mensagem,opcao,idForm)
	{	
		var HtmlTemplateIni = '<br/><font color="#F50707">'; 
		var HtmlTemplateEnd = '</font>'; 
		if(!$(idDoSpan)){
			var sp1 = document.createElement("span");
			sp1.setAttribute("id", idDoSpan);
			sp1.innerHTML = HtmlTemplateIni+Mensagem+HtmlTemplateEnd;
		}
		if($(idDoSpan)){
			if(opcao == false)
				$(idDoSpan).innerHTML = '';
			else
				$(idDoSpan).innerHTML = HtmlTemplateIni+Mensagem+HtmlTemplateEnd;
		}
		if(!$(idDoSpan)){
			var sp2 = $(idCampo);
			var parentDiv = sp2.parentNode;
			parentDiv.insertBefore(sp1, sp2.nextSibling);
		}
		if(opcao == false)
			$(idForm).removeChild($(idDoSpan));
	}
}
var Validacao = {
	BloqueiaForm: function(MyForm, Campos, mPlugins){
	// idCampo (String)
	// MensagemErro (String)
	// TipoDeValidacao (Padrao, Numero, Email, CPF, Url)
		if($(MyForm)){ 
			$(MyForm).onsubmit = function()
			{ 
				AccumulaMsg = "<ol>";
				StopForm = false;
				Focus = false;
				for(i=0;i<=fAux.TamanhoArray(Campos.CamposDoFormulario)-1;i++)
				{
					var ObjCampos = Campos.CamposDoFormulario[i];
					var oTipoValidacao = ObjCampos.TipoDeValidacao;
						  
					if(oTipoValidacao == "Padrao")
					{
						if(Security.Padrao($(ObjCampos.idCampo).value)==false)
						{
							if(Focus == false) { $(ObjCampos.idCampo).focus(); Focus = true; }
							if(mPlugins == null){
								CriaElementos.CriaSpan(ObjCampos.idCampo,"newSpan"+ObjCampos.idCampo,ObjCampos.MensagemErro,true,MyForm);								 
							} 
														 
							AccumulaMsg += "<li>"+ObjCampos.MensagemErro+"</li>";
							StopForm = true;
						}  else {
							if($("newSpan"+ObjCampos.idCampo)) $("newSpan"+ObjCampos.idCampo).innerHTML = '';
						}
					} 
					if(oTipoValidacao == "Email")
					{
						if(Security.Email($(ObjCampos.idCampo).value)==false)
						{					
							if(Focus == false) { $(ObjCampos.idCampo).focus(); Focus = true; }
							if(mPlugins == null){
								CriaElementos.CriaSpan(ObjCampos.idCampo,"newSpan"+ObjCampos.idCampo,ObjCampos.MensagemErro,true,MyForm);								 
							} 
							AccumulaMsg += "<li>"+ObjCampos.MensagemErro+"</li>";
							StopForm = true;
						} else {
							if($("newSpan"+ObjCampos.idCampo)) $("newSpan"+ObjCampos.idCampo).innerHTML = '';
						}
					} 
					if(oTipoValidacao == "CPF")
					{
						if(Security.CPF($(ObjCampos.idCampo).value)==false)
						{
							if(Focus == false) { $(ObjCampos.idCampo).focus(); Focus = true; }
							if(mPlugins == null){
								CriaElementos.CriaSpan(ObjCampos.idCampo,"newSpan"+ObjCampos.idCampo,ObjCampos.MensagemErro,true,MyForm);								 
							} 
							AccumulaMsg += "<li>"+ObjCampos.MensagemErro+"</li>";
							StopForm = true;
						} else {
							if($("newSpan"+ObjCampos.idCampo)) $("newSpan"+ObjCampos.idCampo).innerHTML = '';
						}
					}
					if(oTipoValidacao == "CNPJ")
					{
						if(Security.CNPJ($(ObjCampos.idCampo).value)==false)
						{
							if(Focus == false) { $(ObjCampos.idCampo).focus(); Focus = true; }
							if(mPlugins == null){
								CriaElementos.CriaSpan(ObjCampos.idCampo,"newSpan"+ObjCampos.idCampo,ObjCampos.MensagemErro,true,MyForm);								 
							} 
							AccumulaMsg += "<li>"+ObjCampos.MensagemErro+"</li>";
							StopForm = true;
						} else {
							if($("newSpan"+ObjCampos.idCampo)) $("newSpan"+ObjCampos.idCampo).innerHTML = '';
						}
					}
					if(oTipoValidacao == "Numero")
					{
						if(Security.Numero($(ObjCampos.idCampo).value)==false)
						{
							if(Focus == false) { $(ObjCampos.idCampo).focus(); Focus = true; }
							if(mPlugins == null){
								CriaElementos.CriaSpan(ObjCampos.idCampo,"newSpan"+ObjCampos.idCampo,ObjCampos.MensagemErro,true,MyForm);								 
							} 
							AccumulaMsg += "<li>"+ObjCampos.MensagemErro+"</li>";
							StopForm = true;
						} else {
							if($("newSpan"+ObjCampos.idCampo)) $("newSpan"+ObjCampos.idCampo).innerHTML = '';
						}
					}
					if(oTipoValidacao == "Url")
					{
						if(Security.Url($(ObjCampos.idCampo).value)==false)
						{
							if(Focus == false) { $(ObjCampos.idCampo).focus(); Focus = true; }
							if(mPlugins == null){
								CriaElementos.CriaSpan(ObjCampos.idCampo,"newSpan"+ObjCampos.idCampo,ObjCampos.MensagemErro,true,MyForm);								 
							} 
							AccumulaMsg += "<li>"+ObjCampos.MensagemErro+"</li>";
							StopForm = true;
						} else {
							if($("newSpan"+ObjCampos.idCampo)) $("newSpan"+ObjCampos.idCampo).innerHTML = '';
						}
					}
				}
				AccumulaMsg += "<ol>";
				if(StopForm == true){
					var ObjAlert;
					
					if(mPlugins != null){
						if(Plugins.FlyDiv){
							CriaElementos.addDiv(ObjAlert,AccumulaMsg,'ErrosForm','','');
							Plugins.FlyDiv(mPlugins.FlyDiv[0], mPlugins.FlyDiv[1]);
						}
					}
					if($('ErrosForm')){
						$('ErrosForm').style.display = "";
						window.setTimeout('Plugins.EscondeElemento(\'ErrosForm\')', 3000);
					}
					return false;
				}
				idForm = MyForm;
				FormDetectado = true;
			 } 
		} else { 
			FormDetectado = false;
			return false;
		}
	}
}