// Strip leading and trailing white-space
String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/g, "");
}

// Replace repeated spaces, newlines and tabs with a single space
String.prototype.normalize_space = function() {
	return this.replace(/^\s*|\s(?=\s)|\s*$/g, "");
}


// Valida se o número é inteiro
function isInt(x) {
    var y=parseInt(x);
	if (isNaN(y)) return false;
	return x==y && x.toString()==y.toString();
}

// Valida se variável é valida ex: isset('myvar')
function isset(variable_name){
	try{
		if (typeof(eval(variable_name)) != 'undefined')
		if (eval(variable_name) != null)
		return true;
	}catch(e){ }
	return false;
}

// Valida se variável esta definida ex: isdefined('myvar')
function isdefined(o){
	return (o != undefined && o != null);
};

// Returns true if the passed in value/Object is defined, that means it is not null or undefined.
// http://mattsnider.com/core/type-detection-revisited/
function varType(o){
	if (! isdefined(o)) {return null;}
	if (o.htmlElement) {return 'element';}
	
	var type = typeof o;
	
	if (type == 'object' && o.nodeName) {
		switch (o.nodeType) {
			case 1: return 'element';
			case 3: return (/\S/).test(o.nodeValue) ? 'textnode' : 'whitespace';
		}
	}
	
	if (type == 'object' || type == 'function') {
		switch (o.constructor) {
			case Array: return 'array';
			case RegExp: return 'regexp';
			//case Class: return 'class';
			case Date: return 'date';
			// add additional Object types that you care about here
		}
		
		if (typeof o.length == 'number') {
			if (o.item) {return 'collection';}
			if (o.callee) {return 'arguments';}
		}
	}
	
	return type;
};
// Returns true if the Object has the same type as supplied.
function isType(o, type) {
	return type == varType(o);
}


// Retorna numero float
function strToFloat(num){
	num = ''+num;	
	if(num.indexOf(',')!=-1){
		num = num.replace(/[.]/g,'').replace(/[,]/g,'.');
	}
	num = parseFloat(num);
	return isNaN(num) ? 0 : num;	
}

// Retorna numero inteiro
function strToInt(num){
	num = ''+num;
	if(num.indexOf(',')!=-1){
		num = num.replace(/[.]/g,'').replace(/[,]/g,'.');
	}
	num = parseInt(num);
	return isNaN(num) ? 0 : num;
}

function Mid(str, start, len){
// Make sure start and len are within proper bounds
    if (start < 0 || len < 0) return "";
    var iEnd, iLen = String(str).length;
    if (start + len > iLen)
          iEnd = iLen;
    else
          iEnd = start + len;
    return String(str).substring(start,iEnd);
}
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}



/**************************************************************************
Função para simular um Tab quando for pressionado a tecla Enter
Exemplo: onKeyDown="TABEnter()"
Funciona em TEXT BOX,RADIO BUTTON, CHECK BOX e menu DROP-DOWN
**************************************************************************/
function TABEnter(oEvent){
  var oEvent = (oEvent)? oEvent : event;
  var oTarget =(oEvent.target)? oEvent.target : oEvent.srcElement;
  if(oEvent.keyCode==13)
    oEvent.keyCode = 9;
  if(oTarget.type=="text" && oEvent.keyCode==13)
    //return false;
    oEvent.keyCode = 9;
  if (oTarget.type=="radio" && oEvent.keyCode==13)
    oEvent.keyCode = 9;
}

// Avisa antes de sair de um cadastro aberto
function confirma(tipo,url){
	var del  = 'Tem certeza de que deseja EXCLUIR este ítem?\n\nPS: Não pode-se reverter o processo!';
	var add  = 'Deseja SAIR deste cadastro atual e iniciar um novo?\n\nPS: Os dados não salvos serão perdidos!';
	var fin  = 'Tem certeza de que deseja FINALIZAR este ítem?\n\nPS: Não pode-se reverter o processo!';
	var reab = 'Tem certeza de que deseja REABRIR este ítem?\n\nPS: Não pode-se reverter o processo!';
	var exec = 'Tem certeza de que deseja EXECUTAR este procedimento?\n\nPS: Não pode-se reverter o processo!';
	if(tipo && window.confirm(eval(tipo))){
		if(url!=''){
			location.href = url;
		}else{
			return true;
		};
	}else{
		return false;
	}
}

function ModalAjax(url, width, height){
	if(url.indexOf('?')==-1) url =  url + '?';
	if(url.indexOf('http://')==-1) url = base_url + url;
	if(url.indexOf('&modo')==-1) url = url + '&modo=ajax';	
	$.fn.nyroModalManual({url: url, width: width, height: height });
}
function ModalIframe(url, width, height){
	if(url.indexOf('?')==-1) url =  url + '?';
	if(url.indexOf('http://')==-1) url = base_url + url;
	if(url.indexOf('&modo')==-1) url = url + '&modo=single';
	$.fn.nyroModalManual({content: '<iframe frameborder="0" hspace="0" vspace="0" src="'+url+'" style="width: 100%; height: 100%" name="nyroModalIframe"></iframe>', width: width, height: height });
}

function BuscaCep(){
	//tb_show('Busca de CEP por Logradouro',sistema_url + "busca_cep.htm?TB_iframe=true&"+(jQuery.browser.msie ? "width=330&height=350" : "width=300&height=300"))
	ModalAjax(sistema_url+'busca_cep.htm', 250, 320);
}

function FreteDetalhes(tipo){
	//tb_show('Detalhes da forma de entrega / Frete',sistema_url + "pop_fretedetalhes.php?tipo="+ tipo +"&width=450&height=350")
	//$.fn.nyroModalManual({url: sistema_url+'pop_fretedetalhes.php?tipo='+tipo, width: 330, height: 350 });
	ModalAjax(sistema_url+'pop_fretedetalhes.php?tipo='+tipo, 330, 350);
}

function indicar(tipo,id){
	//tb_show('Recomendar / Indicar para um amigo(a)',base_url+'?m=indicar&modo=ajax&tipo='+tipo+'&id='+id+'&width=350&height='+(tipo=='prod' ? 400 : 300));
	//$.fn.nyroModalManual({url: base_url+'?m=indicar&modo=ajax&tipo='+tipo+'&id='+id, width: 350, height: (tipo=='prod' ? 400 : 300) });
	ModalAjax('?m=indicar&tipo='+tipo+'&id='+id, 350, (tipo=='prod'?430:300));
}

function comentar(tipo,id){
	//tb_show('Comentar / Deixar um comentário',base_url+'?m=comentar&modo=ajax&tipo='+tipo+'&id='+id+'&width=350&height='+(tipo=='prod' ? 450 : 350));
	//$.fn.nyroModalManual({url: base_url+'?m=comentar&modo=ajax&tipo='+tipo+'&id='+id, width: 350, height: (tipo=='prod' ? 470 : 370) });
	ModalAjax('?m=comentar&tipo='+tipo+'&id='+id, 350, (tipo=='prod'?470:370));
}

function perguntar(tipo,id){
	//$.fn.nyroModalManual({url: base_url+'?m=perguntar&modo=ajax&tipo='+tipo+'&id='+id, width: 350, height: (tipo=='prod' ? 450 : 350) });
	ModalAjax('?m=perguntar&tipo='+tipo+'&id='+id, 350, (tipo=='prod'?450:350));
}

function comprar(url,id,derivadas){
	if(derivadas > 0){
		id = $('#comprar #derivacao input:checked').val();
		if(!isset(id) || !isInt(id)){
			F_CaixaMensagem('body','atencao','<b>Atenção!!<br />Selecione uma das Opções antes de prosseguir.</b>','ok',"$('#comprar #derivacao').focus().select();");		
			id = 0;
		}
	}
	if(id > 0) Go(url.replace('X0', id));
}

function derivacao_escolha(){
	jQuery(function($){
		$("#comprar #derivacao tr:has(td)")
			.mouseover(function(){ MouseOver(this); })
			.mouseout(function(){
				if(! $(this).find("input").attr("checked")) MouseOut(this);
			})
			.click(function(){
				$(this).find("input").attr("checked",true);
				$('#comprar #derivacao tr').removeClass("focus");
				$(this).attr('className','focus');
			});
		});
}

function orcamento(id){
	$.fn.nyroModalManual({url: base_url+'?m=orcamento&modo=ajax&id='+id, width: 350, height: 470});
}

function VerImagem(campo,img) { 
    document.getElementById(img).src = campo.value;
}

function AjUrl(url){
	return url.replace(/&amp;/gi,'&');
}

function Go(url){
	if(url.indexOf('http://')==-1) url = base_url + url;
	location.href = AjUrl(url);
}

function GoTop(achor){
	achor = achor!=undefined ? achor : '';
	if (location.href.indexOf('#')!=-1){
		location.href = location.href.split("#")[0]+'#'+achor;		
	}else{
		location.href = location.href+'#'+achor;
	}
}

function addFav(title,url){
    if (window.sidebar) window.sidebar.addPanel(title, url,"");
    else if(window.opera && window.print){
        var mbm = document.createElement('a');
        mbm.setAttribute('rel','sidebar');
        mbm.setAttribute('href',url);
        mbm.setAttribute('title',title);
        mbm.click();
    }
    else if(document.all){window.external.AddFavorite(url, title);}
}

function zoom(imagem,path){
	path = (path) ? path : ''; 
	if(imagem){
		abre(base_url+'?m=zoom&tipo=single&imagem='+ path + imagem, 'zoom', 300, 300, 0, 0);
	}
}

function pagamento(url){
	if(url==''){
		url = 'about:blank';
	}else if(url.indexOf('http://')==-1){
		url = base_url + url;
	}
	var janela = abre(url,'janela_pagar', 790, 550, 1, 1, 1, 1);
	janela.opener.name="janela_site_" + randomNumber(1000);
	if(url=='about:blank'){
		janela.opener.focus();
	}else{
		janela.focus();
		window.setTimeout(function(){janela.focus()},300);
	}
}

function videomp(video){
	abre(base_url+'pop_video.php?video='+video+'&tipo=mp','videomp', 320, 300, 0, 0)
}



function ProdMudaImg(id){
	id = id-1;
	$("#prod_det #imgs #big li").hide();	
	$("#prod_det #imgs #big li:eq("+id+")").show();	
	//
	$("#prod_det #imgs #peq a.active").removeClass("active");
	$("#prod_det #imgs #peq a:eq("+id+")").addClass("active");
}

function Refresh(){
	window.location.reload();
}

function Refresh_Frame(frame){
	$('#'+frame).attr("src", $('#'+frame).attr("src") );
}

function MouseOver(src){
	$(src).addClass("focus");
}
function MouseOut(src){
	$(src).removeClass("focus");
}

function randomNumber(limit){
  return Math.floor(Math.random()*limit)+1;
}

// Adiciona eventos
function addEvent(obj, evType, fn){
    if (obj.addEventListener){
       obj.addEventListener(evType, fn, false);
       return true;
    }else if (obj.attachEvent){
       var r = obj.attachEvent("on"+evType, fn);
       return r;
    }else{
		 return false;
    }
}


function abre(url, janela, width, height, Scroll, stat, menu, retorno, maximize){
	var left   = (screen.availWidth/2) - width/2;
	var top    = ((screen.availHeight/2) - height/2)-20;
	var janela = window.open(AjUrl(url),'Icert'+janela, 'top='+top+',left='+left+',width='+width+',height='+height+',toolbar=no,location=no,resizable=yes,fullscreen=0,status='+stat+',menubar='+menu+',scrollbars='+Scroll+'');
	if(!janela){
		alert("Desative o bloqueador de Janelas Pop-Up antes de prosseguir!");
	}else{
		if(maximize){
			janela.moveTo(-4, -4);
			janela.resizeTo(screen.availWidth+8, screen.availHeight+8);		
		}
		janela.focus();
		if(retorno){
			return janela;
		}
	}
}

function abreFrame(url, janela){
	parent['Icert'+janela].location.href= AjUrl(url);
}

function maximizeWin() {
	if (window.screen) {
		var	width 	= screen.availWidth;
		var height	= screen.availHeight;
		window.moveTo(0, 0);
		window.resizeTo(width, height);
	}
}

function MudaFoco(e){
	var keynum = (window.Event) ? e.which : e.keyCode;
	if (keynum == 13){window.event.keyCode = 9;} 
}


function printf(valor,casas,pont,duvida) {
	if(duvida==true && strToFloat(valor) <= 0){
		valor = '?.??';
	}
	var toStr=valor.toString()+'00';
	if(toStr.indexOf(".") == -1) {
		return valor+pont+'00';
	}else {
	    var div=toStr.split(".");
	    var fcent=div[1].substring(0,casas);
	    return div[0]+pont+fcent;
	}
}

function validaemail(email){
	if (email.length == 0){	return true}
	if (window.RegExp) {
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		if (!reg1.test(email) && reg2.test(email)){	return true  }
											  else{ return false }
	} else {
		if(str.indexOf("@") >= 0) return true;
		return false;
	} 		 
}

// Valida CEP com mascara 99.999-999
function validacep(cep){
	if (cep.length == 0){return true};
	if (window.RegExp) {
		var reg1str = "^[0-9]{2}[.][0-9]{3}[-][0-9]{3}$";
		var reg1 = new RegExp(reg1str);
		if (reg1.test(cep)){ return true  }
		               else{ return false }		 
	} else {
		if(str.indexOf("-") >= 0 && cep.length >= 10) return true;
		return false;
	} 
}

function validaCNPJ(cnpj){
	// Retira Formatação
	cnpj = cnpj.replace(/[^0-9]/gi,'');
	// Inicializa verificação
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
	digitos_iguais = 1;
	for (var 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 (var 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;
	}
}

function validaCPF(CPF){
	var CPF = CPF.replace(/[^0-9]/gi,''); // Recebe o valor digitado no campo
	// Valida se CPF inválido
	if (CPF == '00000000000' || CPF == 12345678909 || CPF == 11111111111 || CPF == 22222222222 || CPF == 33333333333 || CPF == 44444444444 || CPF == 55555555555 || CPF == 66666666666 || CPF == 77777777777 || CPF == 88888888888 || CPF == 99999999999) {
		return false;
	}
	var posicao, i, soma, dv, dv_informado;
	var digito = new Array(10); //Cria uma array de 11 posições para armazenar o CPF
	dv_informado = CPF.substr(9, 2); // Armazena os dois últimos dígito do CPF
	for (i=0; i<=8; i++) { // Desmembra o número do CPF na array digito
		digito[i] = CPF.substr( i, 1);
	}
	// Calcula o valor do 10° dígito da verificação
	posicao = 10;
	soma = 0;
	for (i=0; i<=8; i++) {
		soma = soma + digito[i] * posicao;
		posicao = posicao - 1;
	}
	digito[9] = soma % 11;
	if (digito[9] < 2) {
		digito[9] = 0;
	}else{
		digito[9] = 11 - digito[9];
	}
	// Calcula o valor do 11° dígito da verificação
	posicao = 11;
	soma = 0;
	for (i=0; i<=9; i++) {
		soma = soma + digito[i] * posicao;
		posicao = posicao - 1;
	}
	digito[10] = soma % 11;
	if (digito[10] < 2) {
		digito[10] = 0;
	}else {
		digito[10] = 11 - digito[10];
	}
	//Verifica se os dígitos verificadores conferem
	dv = digito[9] * 10 + digito[10];
	return (dv == dv_informado);
}	

function Valida_Busca(form){
	var field = form.busca;
	value = field.value.replace(/[^\s a-zA-Z0-9çÇ]/gi,' ').trim().normalize_space();
	form.busca.value = value;
	if (value.length < 2 || value=='Pesquisar...'){
		alert('Preencha com no mínimo de 2 letras na palavra de busca.');
     	field.focus();	field.select();
		return false;
	}else{
		return true;
	}
}

function Valida_CadNews(form){
	var field=form.CLI_EMAIL;
	if (!validaemail(field.value)){
		alert('Preencha com um e-mail válido.');
     	field.focus();	field.select();
		return false;
	}else{
		return true;
	}
}

function Valida_CadIndisp(form){
	if (F_ValidaCampo('#NOME','leng < 5','Seu "Nome Completo" deve ser preenchido')
	 && F_ValidaCampo('#EMAIL','leng < 5 || !validaemail(valor)','Seu "E-mail" deve ser informado corretamente')
	 ){
		return true;
	}else{
		return false;
	}
}

today = new Date()
ano_atual =today.getFullYear();
window.defaultStatus = document.title + " -  by Icert Informática"
var sorry =  document.title + '\nCopyright © '+ano_atual+' - Todos os direitos Reservados.\nDesign e Tecnologia Icert Informática.';

function OnDocumentLoad(func){
	func = function(){ setTimeout(func,0); }
	if (document.addEventListener) { // Firefox
		 document.addEventListener("DOMContentLoaded",func, false);
	}else{ // IE
		document.onload = func;	
	}
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	 var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	 if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function setCookie(c_name,value,expiredays){
	expiredays = (expiredays==null) ? 3650 : expiredays;
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie = c_name +"="+ escape(value) +";expires="+ exdate.toGMTString() +";path=/";
}

function getCookie(c_name){
	if (document.cookie.length>0){
	  c_start=document.cookie.indexOf(c_name + "=")
	  if (c_start!=-1){ 
		 c_start=c_start + c_name.length+1 
		 c_end=document.cookie.indexOf(";",c_start)
		 if (c_end==-1) c_end=document.cookie.length
		 return unescape(document.cookie.substring(c_start,c_end))
		} 
	}
	return ""
}


var segundo, minuto, hora,timeout;
function Cronometro(destino){
	segundo = 0;
	minuto = 0;
	hora = 0;
	clearTimeout(timeout);
	CronometroExec(destino);
}
function CronometroExec(destino){
    if (segundo <= 58)
        ++segundo;
    else if (segundo == 59 && minuto <= 58) {
        segundo = 0;
        ++minuto;
    } else if (minuto == 59){
        segundo = 0;
        minuto = 0;
        ++hora;
    }
	f_minuto = minuto   < 10 ? '0'+minuto  : minuto;
	f_segundo = segundo < 10 ? '0'+segundo : segundo;
	$(destino).val(hora +':'+ f_minuto +':'+ f_segundo);
	timeout = window.setTimeout("CronometroExec('"+destino+"')",1000);
}

function scrollPage(sID){
	var objElement = document.getElementById(sID);
	if (objElement != null){
		objElement.scrollIntoView();
	}
}

function pageScroll() {
    	window.scrollBy(0,100); // horizontal and vertical scroll increments
    	scrolldelay = setTimeout('pageScroll()',100); // scrolls every 100 milliseconds
}

function stopScroll() {
    	clearTimeout(scrolldelay);
}


/* -------------------------------------------------- *
 * ToggleVal Plugin for jQuery                        *
 * Version 1.0                                        *
 * -------------------------------------------------- *
$(document).ready(function() {
  $("#search").toggleVal();
  $("#username, #password").toggleVal("active");
});

*/
jQuery.fn.toggleVal = function(defaultValue,focusClass) {
	this.each(function() {
		if(this.defaultValue == ''){this.defaultValue = defaultValue};

		$(this).focus(function() {
			// clear value if current value is the default
			if($(this).val() == defaultValue) { $(this).val(""); }else{ $(this).get(0).select(); }
			// if focusClass is set, add the class
			if(focusClass) { $(this).addClass(focusClass); }
		}).blur(function() {
			// restore to the default value if current value is empty
			if($(this).val() == "") { $(this).val(this.defaultValue); }
			// if focusClass is set, remove class
			if(focusClass) { $(this).removeClass(focusClass); }
		});
	});
}

function EfeitoCampos(destino){
	// Testa se o destino foi informao
	destino = isset(destino) ? destino+' ' : '';
	// Remove borda de campos image, radio e checkbox
	$(destino+':image, '+destino+':radio, '+destino+':checkbox')
		.css('border','none');
	// Adiciona Efeito para fazer mudar de cor ao entrar / sair de um campo de formulário
	$(destino+':input').not($.browser.msie?'select':'xx')
		.focus(function(){ MouseOver(this); $(this).select(); })
		.blur(function(){ MouseOut(this); });
}

function F_ValidaCampo(id_campo,validacao,mensagem,modo){
	campo = $(id_campo);
	valor = campo.val();
	valor = (valor) ? valor : '';
	leng  = (valor) ? valor.length : '';
	//alert(id_campo+' |val: '+valor+' |leng: '+leng+' |if: '+validacao+' |result: '+ eval(validacao));
	if( eval(validacao) ){
		if(modo==0){
			alert(mensagem);
			campo.focus().select();
		}else{
			// Mostra mensagem
			F_CaixaMensagem('body','atencao',mensagem,'ok',"$('"+id_campo+"').focus().select();");
		}
		return false;
	}else{
		return true;		
	}
}

// Conta Quantos Radio/Checkbox estão marcados
function countChecked(destino) {
	return $(destino +" input:checked").length;
}

function F_CaixaMensagem(destino,icone,mensagem,clique,funcao){
	// Remove mensagem se existir
	$(destino+' #CaixaMensagem').remove();
	// Se nao for apenas para fechar Caixa
	if(icone!='xclose'){
		// Cria html base
		$(destino).prepend('<div id="CaixaMensagem"><iframe id="HideSelect"></iframe><div id="fundo">&nbsp;</div><div id="msg" align="center"></div></div>');
		// Esconde Caixa p/ configurar
		$(destino+' #CaixaMensagem div').hide();
		// Inicia HTML colocando icone e mensagem 
		$(destino+' #CaixaMensagem #msg').html('<img src="imagens/ico_'+ icone +'.gif" />&nbsp;'+ mensagem +'&nbsp;');
		// Deixa o texto em vermelho for um erro
		if(icone=='erro'){	$(destino+' #CaixaMensagem  #msg').css('color','red');}
		// adiciona botão OK e ação para fechar caixa ao clicar
		if(clique!=undefined){
			// Insere botão OK
			$(destino+" #CaixaMensagem #msg").append('<br/><img src="imagens/bt_ok.gif" />');		
			// Muda cursor e adiciona hint
			$(destino+" #CaixaMensagem")
				.css("cursor","pointer")
				.attr("title","Clique aqui para fechar esta mensagem continuar.")
				.click(function(){
					// fecha janela de mensahem
					F_CaixaMensagem(destino,'xclose');
					// Remove atalhos
					$.hotkeys.remove('esc'); 
					$.hotkeys.remove('space'); 
					$.hotkeys.remove('return');
					// Executa função ao clicar (se definida)
					if(funcao!='undefined'){eval(funcao);
				}
			});
			// Coloca atalho ao pressionar Enter, Esc ou Barra de espaços
			$.hotkeys.add('esc'   ,function(){ $(destino+" #CaixaMensagem").click() });
			$.hotkeys.add('space' ,function(){ $(destino+" #CaixaMensagem").click() });
			$.hotkeys.add('return',function(){ $(destino+" #CaixaMensagem").click() });
		} // fim clique = ok
		// Adiciona efeto para mostrar caixa
		$(destino+' #CaixaMensagem #fundo').css('opacity',0).show().fadeTo(500, 0.50);
		$(destino+' #CaixaMensagem #msg').css('opacity',0).show().fadeTo(250, 1);
	}// fim icone != xclose
}
// Mostra Mensagem Ajax carregando 
function ajaxAguarde(destino){
	// Mostra carregando
	F_CaixaMensagem(destino,"loading","Aguarde, processando...");
	// Mostra quando der erro
	$(destino).ajaxError( function(){
		F_CaixaMensagem(destino,"erro","<b>A requisição falhou.</b><br/>Se problema persistir, contate o administrador do sistema","ok");
	});
}
// Carrega conteudo da url e dados passado para o destino definido
function ajaxCarrega(destino,url,data) {
	url = url=='?' ? "index.php" : url;
	// Chama a requisição AJAX
	$.ajax({ 
	  type: "GET", 
	  url: url, 
	  data: data,
	  cache: false,
 	  //contentType : "application/x-www-form-urlencoded",
	  beforeSend: function(){
		ajaxAguarde(destino);
	  },
	  success: function(data){
			$(destino).html(data);
			ajaxConverte(destino);
		}
	});
	return true;
};

// Converte links normais e formulários p/ Ajax
// os links DEVEM TER rel='ajax' e NÃO PRECISAM estar dentro de "destino"
// os forms PRECISAM estar dentro de"destino"
function ajaxConverte(destino) {
	// Converte Links p/ Ajax
	/*$("a[@target!=_blank]").each(function(i){
		if( $(this).attr('target') != 'ajax' && $(this).attr('href').indexOf('javascript:')==-1){
			$(this).attr('target','ajax').click(function(){
				ajaxCarrega(destino,this.href,'modo=ajax');
				return false;
			});
		}
	});
	// Converte Forms p/ Ajax
	$(destino +" form").each(function(i){
		if( $(this).attr('target') != 'ajax'){
			$(this).attr('target','ajax').attr("action", $(this).attr("action")+'&modo=ajax' );
		}
	});	
	// Configura e Ativa
	ajaxFormDef(destino);
	//Adiciona Efeitos*/
	EfeitoCampos(destino);
}
// Configura e Ativa Formulários no modo Ajax
function ajaxFormDef(destino) {
	// Configurações do envio e retorno
	var options = { 
		target: destino,
		cache: false,
		//contentType : "application/x-www-form-urlencoded",
		beforeSubmit: function(formData, jqForm){
				ajaxAguarde(destino);
				return true; 
			},
		success: function(responseText, statusText){
				ajaxConverte(destino);
				F_CaixaMensagem(destino,"ok","Os dados foram salvos.","ok");				
			} 
	}; 
	// Ativa Formulários no modo Ajax
	$(destino +" form").ajaxForm(options);
}

// Função p/ carregar script com callback
function F_LoadScript(file,callbackFunc){
	jQuery(function($){
		$.ajax({ cache: true, dataType: "script",
				url: sistema_url+'js/'+file+'.js',
				success: callbackFunc
		});
	});	
}

// Chama ao inicializar o site
jQuery(function($){
	// Resolve probleba com links com ancoras causado porque usa-se BaseUrl
	$("a[@href^=#]").each(function(i){	this.href = document.location.href.split("#")[0] + this.hash; })

	//Adiciona Efeitos
	EfeitoCampos();
	
	// Mostra/Esconde texto padrão nos campos
	$("#vl_busca").toggleVal('Pesquisar...');
	$("#vl_cadnews").toggleVal('digite seu email aqui...');

	// Coloca atalho ao pressionar tecla
	// Verifica se esta no admin ou no site
	if(!isset('editar_site')){
		// Mostra site
		$.hotkeys.add('F2' ,function(){ Go(ver_site) });
	}else{
		$.hotkeys.add('F2' ,function(){ Go(base_url+'adm/?'+editar_site); });
		// Link print
		$.hotkeys.add('Ctrl+F4' ,function(){ if( prompt('Link para envio de newsletter. Copie e cole no sistema de envio.\nPressione [ok] para testar o link.',base_url +'index.php?modo=print&'+ link_print))
											Go(base_url +'index.php?modo=print&'+link_print); });
		// Limpa Cache
		$.hotkeys.add('Ctrl+F8' ,function(){ if( window.confirm('Tem certeza que deseja executar este procedimento?\n\n'+sorry)) 
											Go(base_url+'index.php?m=home&_cache=clear'); });
		// Acessa Web Mail
		$.hotkeys.add('Ctrl+F12',function(){ if( window.confirm('Deseja acessar o WebMail?\n\n'+sorry))
											Go(base_url+'email'); });
	}
});	
