/*

******************** BIBLIOTECA JAVASCRIPT DA XSETTE
******************** Criado por: Thiago Ferreira de Lucena
******************** Email: thiagoferreira36@gmail.com

*/

var tagAlvo = new Array('span'); //pega todas as tags p//
var tamanhos = new Array( '10px','11px','12px','13px','14px','15px','16px','18px' );
var tamanhoInicial = 4;


$.fn.extend({
// Calls the handler function if the user has clicked outside the object (and not on any of the exceptions)
clickOutside: function(handler, exceptions) {
    var $this = this;

    $("body").bind("click", function(event) {
        if (exceptions && $.inArray(event.target, exceptions) > -1) {
            return;
        } else if ($.contains($this[0], event.target)) {
            return;
        } else {
            handler(event, $this);
        }
    });

    return this;
	}
});


function mudaTamanho(idAlvo,acao) {

  if (!document.getElementById) return

  var selecionados = null,tamanho = tamanhoInicial,i,j,tagsAlvo;

  tamanho += acao;

  if ( tamanho < 0 ) tamanho = 0;
  if ( tamanho > 7 ) tamanho = 7;
  
  tamanhoInicial = tamanho;

  //if ( !( selecionados = document.getElementById( idAlvo ) ) ) selecionados = document.getElementsByTagName( idAlvo )[ 0 ];
  selecionados = document.getElementById( idAlvo );
  selecionados.style.fontSize = tamanhos[ tamanho ];
  
  for ( i = 0; i < tagAlvo.length; i++ ){
    tagsAlvo = selecionados.getElementsByTagName( tagAlvo[ i ] );
    for ( j = 0; j < tagsAlvo.length; j++ ) tagsAlvo[ j ].style.fontSize = tamanhos[ tamanho ];
  }
}

function checkMail(mail){
	var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if(typeof(mail) == "string"){
		if(er.test(mail)){ 
			return true;
		}
	}
	else if(typeof(mail) == "object") {
		if(er.test(mail.value)) { 
			return true; 
		}
	}
	else {
		return false;
	}
}

function Trim(str) {
	return str.replace(/^\s+|\s+$/g,"");
}

function selecionaBusca(elem) {
	elem.value = "";
}
function deselecionaBusca(elem, val) {
	if(Trim(elem.value) == "") {
		elem.value = val;
	}
}
function pad(number, length) {
   
    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }
    return str;

}

function manipulateClasses(rClass, aClass, elem, selector) {
	$("."+rClass).removeClass(aClass);
	if(selector == "parent") $(elem).parent(":first").addClass(aClass);
	if(selector == "children") $(elem).children(":first").addClass(aClass);
}

function changeTab(rClass, aClass, elem, selector, content) {
	manipulateClasses(rClass, aClass, elem, selector);
	$(".conteudo_aba").removeClass("active");
	$(content).addClass("active");
	$(".font").html(">> "+$(elem).html());
	return false;
}

function formatItem(row) {
	return row[0] + " - " + unescape(row[1]);
}

function formatResult(row) {
	return row[0];
}

function callDynamicInputs() {

	$("#busca").blur(function() {
		if(this.value == "") {
			this.value = this.defaultValue;
		}
	});
	
	$("#busca").focus(function() {
		if(this.value == this.defaultValue) {
			this.value = "";
			return false;
		}
	});
	
	$(".site").blur(function() {
		if(this.value == "http://") {
			this.value = "";
		}
	});
	
	$(".site").focus(function() {
		if(this.value == "") {
			this.value = "http://";
			return false;
		}
	});
	
	var cidadeAutocomplete;
	
	$("#cep").bind("blur",function() {
		value = $("#cep").val().replace("-","");
		getEndereco(value);
	});
	data = new Date();
	$("#data_cadastro").val(data.getDate()+"/"+pad(data.getMonth(),2)+"/"+data.getFullYear());
//	$("#estado").autocomplete("actions/searchEstado.php", {
//		width: 260,
//		selectFirst: true,
//		formatItem: formatItem,
//		formatResult: formatResult,
//		selectFirst: true,
//		matchCase: true,
//		delay: 200
//	});
//	cidadeAutocomplete = $("#cidade").autocomplete("actions/searchCidade.php", {
//		width: 260,
//		selectFirst: true,
//		formatItem: formatItem,
//		formatResult: formatResult,
//		selectFirst: true,
//		delay: 200
//	});
//	$("#estado").bind("blur",function() {
//		cidadeAutocomplete.flushCache();
//		cidadeAutocomplete.setOptions({
//			extraParams: {
//				est: this.value	
//			}
//		});
//	});
	
//	$("#rg").bind("keyup", function() {
//		$.validationEngineLanguage.allRules.rgCheck.url="actions/validateField.php?rg="+$("#rg").val()+"&expedidor="+$("#expedidor").val();
//	});
//	$("#expedidor").bind("keyup", function() {
//		$.validationEngineLanguage.allRules.rgCheck.url="actions/validateField.php?rg="+$("#rg").val()+"&expedidor="+$("#expedidor").val();
//	});
	
	$("input").bind("focus",function() {
		return false;	
	})
	
	$("#categoria_pessoa").bind("change", changePersonType);
}
function changePersonType() {
	if($(this).val() == "1") {
		$(".fisica").show();
		$(".juridica").hide();
		
		$(".juridica > input").attr("value","");
		
		$(".nome_razao").html("Nome");
	}
	else if($(this).val() == "2") {
		$(".fisica").hide();
		$(".juridica").show();
		
		$(".fisica > input").attr("value","");
		
		$(".nome_razao").html("Razão social");
	}
	else {
		$(".fisica").hide();
		$(".juridica").hide();
		$(".nome_razao").html("Nome");
	}
	$("#form_contato").validationEngine('hideAll');
}
function getEndereco(cep) {
	$("#ajax_mainloader").show();
	$.ajax({
		type: "GET",
		url: "http://republicavirtual.com.br/web_cep.php",
		data: {
			"cep": cep,
			"formato": "javascript"	
		},
		dataType: "script",
		cache: false,
		success: function(response) {
			if(resultadoCEP.resultado == 1)  {
				$("#endereco").val(unescape(resultadoCEP.tipo_logradouro+" "+resultadoCEP.logradouro));
				$("#bairro").val(unescape(resultadoCEP.bairro));
				$("#estado").val(unescape(resultadoCEP.uf));
				$("#cidade").val(unescape(resultadoCEP.cidade));
			}
		},
		error: function(xhr, txt, error) {
			displayMessage("error","Ocorreu um erro ao tentar consultar o CEP: "+xhr.statusText, 400, 3000);
		},
		complete: function() {
			$("#ajax_mainloader").hide();
		}
	});
}
function telefoneCheck(field, rules, i, options) {
	if(field.attr("id") == 'fone_com' || field.attr("id") == 'fone_cel') {
		if($("#fone_com").val() == "" && $("#fone_cel").val() == "") {
			return options.allrules.telefoneCheck.alertText;
		}
	}
	if(field.attr("id") == 'fone_res' || field.attr("id") == 'fone_cel') {
		if($("#fone_res").val() == "" && $("#fone_cel").val() == "") {
			return options.allrules.telefoneCheck.alertText;
		}
	}
}

function replaceAll(string, token, newtoken) {
	while (string.indexOf(token) != -1) {
 		string = string.replace(token, newtoken);
	}
	return string;
}

function validateCPF(field, rules, i, options) {
	var numeros, digitos, soma, i, resultado, digitos_iguais, cpf;
	digitos_iguais = 1;
	cpf = field.val().replace(/[.-]/g, "");
	
	if (cpf.length != 11) return options.allrules.CPFCheck.alertText;
		for (i = 0; i < cpf.length - 1; i++) {
			if (cpf.charAt(i) != cpf.charAt(i + 1)) {
				digitos_iguais = 0;
				break;
			}
		}
	if (!digitos_iguais) {
		numeros = cpf.substring(0,9);
		digitos = cpf.substring(9);
		soma = 0;
		
		for (i = 10; i > 1; i--) soma += numeros.charAt(10 - i) * i;
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		
		if (resultado != digitos.charAt(0)) return options.allrules.CPFCheck.alertText;
		
		numeros = cpf.substring(0,10);
		soma = 0;
		
		for (i = 11; i > 1; i--) soma += numeros.charAt(11 - i) * i;
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		
		if (resultado != digitos.charAt(1)) return options.allrules.CPFCheck.alertText;
	}
	else return options.allrules.CPFCheck.alertText;
}

function validateCNPJ(field, rules, i, options) {
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais, cnpj;
	digitos_iguais = 1;
	cnpj = field.val().replace(/[\/.-]/g, "");
	
	if (cnpj.length != 14) return options.allrules.CNPJCheck.alertText;
	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 options.allrules.CNPJCheck.alertText;
			
			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 options.allrules.CNPJCheck.alertText;
		}
		else return options.allrules.CNPJCheck.alertText;
	} 
}
$.fn.clearForm = function() {
	$(this).validationEngine('hideAll');
    $(this).find('input:not(:hidden):first').focus();
    return this.each(function() {
        var type = this.type, tag = this.tagName.toLowerCase();
        if (tag == 'form')
            return $(':input',this).clearForm();
        if ((type == 'text' || type == 'password' || type == 'hidden' || tag == 'textarea' || type == 'file') && this.name != "empresa" && this.name != "serie" && this.name != "numero" && this.name != 'tipo')
            this.value = '';
        else if (type == 'checkbox' || type == 'radio')
            this.checked = false;
        else if (tag == 'select')
            this.selectedIndex = 0;
    });
};
