/*
1 - Validação
2 - Formatação
3 - Data
4 - Texto
5 - Arquivos
6 - E-mail
7 - Outras
*/

// ------------------------------- 1 - Validação v
	
	isDate = function(dateStr) {
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
		var matchArray = dateStr.match(datePat);
		if (matchArray == null) {
			//alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
			return false;
		}
		month = matchArray[1];
		day = matchArray[3];
		year = matchArray[5];
		if (month < 1 || month > 12) {
			//alert("Month must be between 1 and 12.");
			return false;
		}
		if (day < 1 || day > 31) {
			//alert("Day must be between 1 and 31.");
			return false;
		}
		if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
			//alert("Month " + month + " doesn't have 31 days!")
			return false;
		}
		if (month == 2) {
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day > 29 || (day == 29 && !isleap)) {
				//alert("February " + year + " doesn't have " + day + " days!");
				return false;
			}
		}
		return true;
	}
	
	validaUrl = function(pUrl) {
		var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
		return regexp.test(pUrl);
	}
	
	validaEditor = function(pEditor) {
		return !( pEditor.getData().replace(/<[^>]*>/g, '').replace(/\n/,'').trim() == '' );
	}
	
	validaEmail = function (email) {
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		return reg.test(email);
	}
	
	validaCNPJ = function(pcnpj) {
		//Declaração as variáveis
		var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais, cnpj;
		cnpj = pcnpj;
		//Verificando se o campo é nulo
		if (cnpj.length == 0) {
			return false;
		}
	
		//Filtrar o campo para verificar se está com máscara
		var filtro = /\d{2,3}.\d{3}.\d{3}\/\d{4}-\d{2}/;
		if (!filtro.test(cnpj)) {
			//window.alert("CNPJ inválido. Tente novamente.");
			return false;
		}
		//Ultilização expressão regular para retirar o que não for número
		cnpj = cnpj.replace(/\D+/g, '');
		digitos_iguais = 1;
	
		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)) {
				//alert('CNPJ inválido');
				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)) {
				//alert('CNPJ inválido');
				return false;
			}
			return true;
		}
		else {
			//alert('CNPJ inválido');
			return false;
		}
	}
	
	validaCPF = function(st){	
		st = st.replace(".","");
		st = st.replace(".","");
		st = st.replace("-","");
		if (st == ""){
			return (false);
		}
		l = st.length;
	
		//aleterado para se usuário não digitar os zeros na frente do CPF, completar sozinho
		if ((l == 9) || (l == 8)){
			for (i = l ; i < 10; i++){
				st = '0' + st;
			}
		}
		l = st.length;
		st2 = "";
		for (i = 0; i < l; i++) {
			caracter = st.substring(i,i+1);
			if ((caracter >= '0') && (caracter <= '9'));
			st2 = st2 + caracter;
		}
		if ((st2.length > 11) || (st2.length < 10)){
			return false;
		}
		if (st2.length==10)
			st2 = '0' + st2;
		digito1 = st2.substring(9,10);
		digito2 = st2.substring(10,11);
		digito1 = parseInt(digito1,10);
		digito2 = parseInt(digito2,10);
		sum = 0; mul = 10;
		for (i = 0; i < 9 ; i++) {
			digit = st2.substring(i,i+1);
			tproduct = parseInt(digit ,10) * mul;
			sum += tproduct;
			mul--;
		}
		dig1 = ( sum % 11 );
		if ( dig1==0 || dig1==1 )
			dig1=0;
		else
			dig1 = 11 - dig1;
		if (dig1!=digito1){
			return false;
		}
		sum = 0;
		mul = 11;
		for (i = 0; i < 10 ; i++) {
			digit = st2.substring(i,i+1);
			tproduct = parseInt(digit ,10)*mul;
			sum += tproduct;
			mul--;
		}
		dig2 = (sum % 11);
		if ( dig2==0 || dig2==1 )
			dig2=0;
		else
			dig2 = 11 - dig2;
		if (dig2 != digito2){
			return false;
		}
		return true;
	}
	
// ------------------------------- 1 - Validação ^


// ------------------------------- 4 - Texto v
	
	/* trim */
	String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, ''); }
	String.prototype.ltrim = function () {  return this.replace(/^\s+/, ''); }
	String.prototype.rtrim = function () {  return this.replace(/\s+$/, ''); }

	/* Remover Acentos */
	String.prototype.accnt = function () {
		var cnt = 0;
		var acnt = this;
		acnt = acnt.split('');
		acntlen = acnt.length;
		var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
		var rep = ['A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'e', 'C', 'c', 'D', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'N', 'n', 'S', 's', 'Y', 'y', 'y', 'Z', 'z'];
		for (var y = 0; y < acntlen; y++) {
			if (sec.indexOf(acnt[y]) != -1) cnt++;
		}
		return cnt;
	}
	String.prototype.renlacc = function () {
		var torem = this;
		torem = torem.split('');
		toremout = new Array();
		toremlen = torem.length;
		var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
		var rep = ['A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'e', 'C', 'c', 'D', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'N', 'n', 'S', 's', 'Y', 'y', 'y', 'Z', 'z'];
		for (var y = 0; y < toremlen; y++) {
			if (sec.indexOf(torem[y]) != -1) {
				toremout[y] = rep[sec.indexOf(torem[y])];
			} else toremout[y] = torem[y];
		}
		toascout = toremout.join('');
		return toascout;
	}
	
	String.prototype.removeAcentos = function () {
		pText = this;
		var countarr = new Array();
		var c = '';
		var text = pText;
		var textout = new Array();
		text = text.replace(/\r/g, '');
		text = text.split('\n');
		var linecnt = text.length;
		for (var x = 0; x < linecnt; x++) {
			countarr[x] = Math.abs(text[x].accnt());
			textout[x] = text[x].renlacc();
		}
		textout = textout.join('\n');
		return textout;
	}
	
	retornaExtensao = function (nome_arquivo) {
		if (nome_arquivo.length > 0) {
			var array_nome = nome_arquivo.split('.');
			if (array_nome.length > 1) {
				var ext = array_nome[array_nome.length - 1];
				return ext;
			}
			else {
				return "";
			}
		}
		else {
			return "";
		}
	}
	
	limpa = function (valor) {
		msg = valor;
	
		if (msg != '') {
			msg = msg.replace(/[\n]/g, 'chr13');
			msg = msg.replace(/[?]/g, 'chr63');
			msg = msg.replace(/[&]/g, 'chr38');
		}
	
		return msg;
	}

// ------------------------------- 4 - Texto ^


function paginacao( _url , _pag , _start , _querystring ) {
	var _pars = 'pag=' + _pag + '&start=' + _start + '' + _querystring;
	self.location = _url + '?' + _pars;
	//alert(_url + '?' + _pars);
}

function excluir(form, campo) {
	var campo= eval('document.'+form+'.'+campo);
	var form = eval('document.'+form);
	
	if(checou(campo)) {
		if(confirm("Deseja realmente excluir?")) {
			form.submit();
		}
	}
	else {
		alert('Selecione pelo menos um item a ser excluído');
	}
}

function paginaPai() {
	try {
		w = window.parent;
	}
	catch (ex) {
		w = top.window;
	}
	return w;
}

function verificaCamposObrigatorios(f) {
/*
Função que varre o form, checando se os campos obrigatórios foram preenchidos.

Para os campos do tipo 'input', a propriedade usada para determinar a obrigatoriedade é 'alt'. Para que ocorra a obrigatoriedade, é necessário adicionar um valor à propriedade.

Para os campos com tag própria (textarea, select), a propriedade usada é lang. Para que ocorra a obrigatoriedade, é necessário adicionar um valor à propriedade. (POG)

OBS.: Essa função não checa campos check e radio

Essa função retorna true or false
*/
	var i;

	for (i = 0; i < f.length; i++) {
		if ((f.elements[i].type == 'text') || (f.elements[i].type == 'file') || (f.elements[i].type == 'password')) {
			if ((f.elements[i].disabled == false) && (f.elements[i].value == '') && (f.elements[i].alt != '')) {
				alert('O campo ' + f.elements[i].title + ' não foi preenchido.');
				f.elements[i].focus();
				return false;
				break;
			}
		}

		if (f.elements[i].type == 'textarea') {
			if ((f.elements[i].disabled == false) && (f.elements[i].value == '') && (f.elements[i].lang != '')) {
				alert('O campo ' + f.elements[i].title + ' não foi preenchido.');
				f.elements[i].focus();
				return false;
				break;
			}
		}

		if (f.elements[i].type == 'select-one') {
			if ((f.elements[i].disabled == false) && (f.elements[i].value == '') && (f.elements[i].title != '')) {
				alert('O campo ' + f.elements[i].title + ' não foi preenchido.');
				f.elements[i].focus();
				return false;
				break;
			}
		}
	}
	return true;
}

function enviaDadosGeral(f) {
	if (verificaCamposObrigatorios(f) == true) {
		f.submit();
	}
}

/*	Chamada: onKeyPress="javascript: return campoEmail(event);" */

function campoEmail(e) {
	var key = window.event ? e.keyCode : e.which;

	if (key < 32) {
		return true;
	}
	else {
		if ((key == 45) || (key == 46) || (key == 64) || (key == 95) || (key == 127)) {
			return true;
		}
		else {
			if (((key > 47) && (key < 58)) || ((key > 96) && (key < 123))) {
				return true;
			}
			else {
				return false;
			}
		}
	}
}

function campoLogin(e) {
	var key = window.event ? e.keyCode : e.which;
	
	if (key < 32) {
		return true;
	}
	else {
		if ((key == 45) || (key == 46) || (key == 95) || (key == 127)) {
			return true;
		}
		else {
			if (((key > 47) && (key < 58)) || ((key > 96) && (key < 123))) {
				return true;
			}
			else {
				return false;
			}
		}
	}
}

/*	Chamada: onKeyPress="javascript: return campoAlfanumerico(event);" */

function campoAlfanumerico(e) {
	var key = window.event ? e.keyCode : e.which;

	if (key < 32) {
		return true;
	}
	else {
		if (key == 127) {
			return true;
		}
		else {
			if (((key > 47) && (key < 58)) || ((key > 64) && (key < 91)) || ((key > 96) && (key < 123))) {
				return true;
			}
			else {
				return false;
			}
		}
	}
}

/*	Chamada: onKeyPress="return campoNumerico(event);" */

function campoNumerico(e) {
	var key = window.event ? e.keyCode : e.which;

	if (key < 32) {
		return true;
	}
	else {
		if (key == 127) {
			return true;
		}
		else {
			if ((key > 47) && (key < 58)) {
				return true;
			}
			else {
				return false;
			}
		}
	}
}

/* Chamada: onKeyPress="return campoAlfabetico(event);" */

function campoAlfabetico(e) {
	var key = window.event ? e.keyCode : e.which;

	if (key < 32) {
		return true;
	}
	else {
		if (key == 127) {
			return true;
		}
		else {
			if (((key > 64) && (key < 91)) || ((key > 96) && (key < 123))) {
				return true;
			}
			else {
				return false;
			}
		}
	}
}

/* Selecionar option de select */
function setSelected(combo, value_desejado) {
	for (i = 0; i < combo.options.length; i++) {
		if (combo.options[i].value == value_desejado) {
			combo.options[i].selected = true;
		}
	}
}

function removeOptionSelect(pIdCombo, pValue) {
	var objCombo = document.getElementById(pIdCombo);
	var i;
	for (i = 0; i < objCombo.length; i++) {
		if (objCombo.options[i].value == pValue) {
			objCombo.remove(i);
		}
	}
}

function checou(campo) {
	if (campo) {
		if (campo.length) {
			for (var i = 0; i < campo.length; i++) {
				if (campo[i].checked) return true;
			}
			return false;
		}
		else {
			if (campo.checked) return true;
			return false;
		}
	}
	else {
		return false;
	}
}

VoltarInicio = function(pSelector) {
	paginaPai().$( pSelector ).focus();
	paginaPai().Shadowbox.close();
}

		Array.prototype.unique = function () {
			var r = new Array();
			o:for(var i = 0, n = this.length; i < n; i++) {
				for(var x = 0, y = r.length; x < y; x++)
				{ if(r[x]==this[i]) { continue o; } }
				r[r.length] = this[i]; }
			return r;
		}
		
		if (!Array.prototype.filter)
		{
		  Array.prototype.filter = function(fun /*, thisp*/)
		  {
			var len = this.length;
			if (typeof fun != "function")
			  throw new TypeError();
		
			var res = new Array();
			var thisp = arguments[1];
			for (var i = 0; i < len; i++)
			{
			  if (i in this)
			  {
				var val = this[i]; // in case fun mutates this
				if (fun.call(thisp, val, i, this))
				  res.push(val);
			  }
			}
			return res;
		  };
		}

/*
-----------------------------------
*/

function createXMLHTTP()
 {
  var ajax;
  try
  {
   ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch(e)
  {
   try
   {
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
    alert(ajax);
   }
   catch(ex)
   {
    try
    {
     ajax = new XMLHttpRequest();
    }
    catch(exc)
    {
      alert("Esse browser não tem recursos para uso do Ajax");
      ajax = null;
    }
   }
   return ajax;
  }
 
 
     var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
           "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
           "Microsoft.XMLHTTP"];
     for (var i=0; i < arrSignatures.length; i++)
     {
    try
    {
     var oRequest = new ActiveXObject(arrSignatures[i]);
     return oRequest;
    }
    catch (oError)
    {
       }
     }
 
      throw new Error("MSXML is not installed on your system.");
 }// JavaScript Document
 
 function enviaAjax_form(obj, pagina, indice,pos) {
	 var valor = obj.value;
	 if (indice == 1)
	 {var id_obj = "noticias";}
	 else
	 {var id_obj = "artigos";}
	 
	 var oHTTPRequest = createXMLHTTP();
     oHTTPRequest.open("get", pagina + '?vl=' + valor + '&id=' + indice + "&pos=" + pos , true); //enviamos para a página que faz o select do que foi digitado e traz a lista preenchida.
	// alert(valor_objATUAL);
     oHTTPRequest.onreadystatechange=function(){
     // o valor 4 significa que o objeto ja completou a solicitacao
     if (oHTTPRequest.readyState==4){// abaixo o texto gerado no arquivo executa.asp e colocado no div
     	//alert(oHTTPRequest.responseText);
		//alert(pagina + '?vl=' + valor + '&id=' + indice + "&pos=" + pos)
		if (oHTTPRequest.responseText != 'ok')
		{	
			alert("O item não pôde ser colocado em destaque!");
			setSelected(obj,0);	
		}
		else
		{
			alert("Item definido como destaque!");	
			listaAjax_form(id_obj, 'ajax-lista.asp', indice)			
		}}}
	 
	 oHTTPRequest.send();			
}

function listaAjax_form(obj, pagina, id) {
	 var oHTTPRequest = createXMLHTTP();
	 document.getElementById(obj).innerHTML = '<img src="../ajax-load01.gif" />';
     oHTTPRequest.open("get", pagina + '?id=' + id , true); //enviamos para a página que faz o select do que foi digitado e traz a lista preenchida.
	// alert(valor_objATUAL);
     oHTTPRequest.onreadystatechange=function(){
     // o valor 4 significa que o objeto ja completou a solicitacao
    if (oHTTPRequest.readyState==4){// abaixo o texto gerado no arquivo executa.asp e colocado no div
     document.getElementById(obj).innerHTML = oHTTPRequest.responseText;}}
	 
	 oHTTPRequest.send();			
}
