// 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, "");
}
// Retorna valor de variável vinda de querystring
function F_getQueryVar(variable,query) {
	var query = query!=undefined ? query : window.location.search; 
	if(query.indexOf('?')==-1) query =  '?' + query;
	var query = query.split("?");  
	var vars = query[1].split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) return pair[1];
	}
} 
                                    
// Testa expressão regular em string
//RegexTest(this.href,'(#)|(^javascript\:)|(download)|../gestortotal.tempsite.ws/.%28zip|rar)$','gi')
function RegexTest(str,reg,mod){
	var reg = new RegExp(reg,mod);
	return reg.test(str)
}

// 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(myVar){
	try{
		if (typeof(eval(myVar)) != 'undefined')
		if (eval(myVar) != null)
		return true;
	}catch(e){ }
	return false;
}

// Valida se variável esta definida ex: isdefined(myvar)
function isdefined(myVar){
	return (myVar != undefined && myVar != null);
};

// Retorna o valor default, caso a variavel passada não esteja definida ex: F_DefVal('myVar', defaultVal)
function F_DefVal(myVar, defaultVal){
	return isdefined(myVar) ? myVar : defaultVal;
}

// 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+'';
	// Retira caracteres não numéricos, ponto, virgula, espaço	
	num = num.replace(/[^0-9.,\s]/g,'');
	// Retira virgula se tiver
	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+''; 
	// Retira caracteres não numéricos, ponto, virgula, espaço
	num = num.replace(/[^0-9.,\s]/g,'');
	// Retira virgula se tiver
	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 dupl = 'Tem certeza de que deseja DUPLICAR este ítem?\n\nPS: Não pode-se reverter o processo!';	
	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(){
	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=.htm"+ 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=.htm'+tipo, 330, 350);
}

function indicar(tipo,id){
	//tb_show('Recomendar / Indicar para um amigo(a)',base_url+'@m=indicar&modo=ajax&tipo=.htm'+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=.htm'+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=.htm'+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=.htm'+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=.htm'+tipo+'&id='+id, 350, (tipo=='prod'?450:350));
}

function atendOnline(id_site){
	abre(sistema_url+'aux_atendonline.php@id_site=.htm'+id_site,'atendonline_'+id_site,450,340);
}

function imprimir(){
	window.print();
}

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){
	// Ajusta ancora se não for um caminho jquery
	if(!RegexTest(achor,'[#\., ]')) achor = '#' + achor;
	// Verifica se anchor existe
	if($(achor).length <= 0) return false;    
    // Scroll to view       
    $(achor).parent().animate({scrollTop: $(achor).eq(0).offset().top-100},500);   	
}

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 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=.htm'+video+'&tipo=mp','videomp', 320, 300, 0, 0)
}

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, toolbar, location){
	var width  = F_DefVal(width,screen.availWidth);
	var height = F_DefVal(height,screen.availHeight);	
	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='+F_DefVal(toolbar,0)+',location='+F_DefVal(location,0)+',status='+F_DefVal(stat,0)+',menubar='+F_DefVal(menu,0)+',scrollbars='+F_DefVal(scroll,0)+',resizable=yes,fullscreen=0');
	if(!janela){
		alert("Atenção!!\nDesative 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;
	}
}

/*Classe que formata de desformata valores monetários em float e formata valores de float em moeda.
 * @author anselmo @version 1.0
 * @example: moeda.formatar(1000) >> retornar 1.000,00  /  moeda.desformatar(1.000,00) >> retornar 1000*/
var moeda = {
	//Remove a formatação de uma string de moeda e retorna um float
	 desformatar: function(num){
	   num = num.replace(".","");
	   num = num.replace(",",".");
	   return parseFloat(num);
	},
	// Deixar um valor float no formato monetário
	formatar: function(num,duvida){
		if(duvida==true && num <= 0){
			return '?,??';
		}
		x = 0;
	
	   if(num<0){
	      num = Math.abs(num);
	      x = 1;
	   }
	   if(isNaN(num)) num = "0";
	      cents = Math.floor((num*100+0.5)%100);

		num = Math.floor((num*100+0.5)/100).toString();
	
	   if(cents < 10) cents = "0" + cents;
	      for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	         num = num.substring(0,num.length-(4*i+3))+'.'
	               +num.substring(num.length-(4*i+3));
	
	   ret = num + ',' + cents;
	
	   if (x == 1) ret = ' - ' + ret;return ret;
	},

	// Arredonda um valor quebrado para duas casas decimais.
	arredondar: function(num){
		return Math.round(num*Math.pow(10,2))/Math.pow(10,2);
	}
 }


// Função p/ calcular parcelas com juros
function F_calculaParcela(valor, taxajuros, parcelas){
	taxajuros = taxajuros / 100;
	return taxajuros / ( 1 - Math.pow(1 + taxajuros,- parcelas )) * valor
}


function validaemail(email){
	if (email.length == 0){	return true}
	if (window.RegExp) {
		var reg1str = "(_40._2A_40)|(\\.\\.)|(@\\.)|(/_40)|(^\\.)";
		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_id){
	if (F_ValidaCampo('form#'+ form_id +' #vl_busca','leng < 2 || valor == "Pesquisar..."','Preencha com no mínimo de 2 letras na palavra de busca.')
	 ){
		return true;
	}else{
		return false;
	}
}

function Valida_CadNews(form_id){
	if (F_ValidaCampo('form#'+ form_id +' #vl_cadnews','leng < 5 || !validaemail(valor)','Seu "E-mail" deve ser informado corretamente')
	 ){
		return true;
	}else{
		return false;
	}
}

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];}}
}

// Retorna Objeto do Flash
function getFlashMovieObject(movieName){
  if (window.document[movieName]){
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1){
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  }else /*if (navigator.appName.indexOf("Microsoft Internet")!=-1)*/{
    return document.getElementById(movieName);
  }
}


function deleteCookie(c_name){
 	var tmp = getCookie(c_name);
	if(tmp) setCookie(c_name,tmp,-9999);
}

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(szName){
 	var szValue =	  null;
	if(document.cookie){
       	var arr =  document.cookie.split((escape(szName) + '=')); 
       	if(2 <= arr.length){
           	var arr2 = 	   arr[1].split(';');
       		szValue  = 	   unescape(arr2[0]);
       	}
	}
	return szValue;
	/*
	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){
	GoTop(achor);
	/*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); }
		}).blur();
	});
}

function EfeitoCampos(destino){   
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'body')

	// Verifica se tem algum campo
	if($(destino +' :input').length <= 0) return false;	
	
	// 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); if(this.type=='text') this.select(); })
		.blur(function(){ MouseOut(this); });
	
	// Campos Moeda
	F_CamposMoeda(destino);	
	/*$(destino+'[title]').tooltip({
		fade: 250,
		track: true, 
		showURL: false
	});*/
}

// Coloca efeito ao mouseOver na linha da tabela
function F_TabelaMouseOver(destino){
	$(destino + " tbody tr").hover(function(){
		MouseOver(this)
	}
	,function(){
		MouseOut(this)
	});
}

function F_ValidaCampo(id_campo,validacao,mensagem,modo){
	campo = $(id_campo);
	valor = campo.val();
	valor = (valor) ? valor : '';
	leng  = (valor) ? valor.normalize_space().length : -1;
	//alert(id_campo+' |val: '+valor+' |leng: '+leng+' |if: '+validacao+' |result: '+ eval(validacao));
	if( eval(validacao) ){
		if(modo==0){
			alert(mensagem);
			campo.focus();
		}else{
			// Mostra mensagem
			F_CaixaMensagem('body','atencao',mensagem,'ok',"$('"+id_campo+"').focus();");
		}
		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){
	//jQuery(function($){
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'body');	

	// Remove mensagem se existir
	$(destino+' #CaixaMensagem').remove();
	
	// Se nao for apenas para fechar Caixa
	if(icone!='xclose'){
		function fechar(){
			$(destino+" #CaixaMensagem").click();
			return false;
		}
		// 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
					$(document).unbind('keydown','esc'  ); 
					$(document).unbind('keydown','space'); 
					$(destino).unbind('keydown','return');
					// Executa função ao clicar (se definida)
					if(funcao!='undefined'){eval(funcao);
				}
			});

		} // fim clique = ok
		
		// Adiciona efeito para mostrar caixa
		$(destino+' #CaixaMensagem #fundo').css('opacity',0).show().fadeTo(500, 0.50);
		$(destino+' #CaixaMensagem #msg').css('opacity',0).show().fadeTo(250, 1, function(){
			// Coloca atalho ao pressionar Enter, Esc ou Barra de espaços
			$(document).bind('keydown','esc'   ,fechar);
			$(document).bind('keydown','space' ,fechar);
			$(destino).bind('keydown','return',fechar);																						  
		});
	}// fim icone != xclose
	
	//}); //jQuery
}

var ajaxSucess = false; 
// Mostra Mensagem Ajax carregando 
function ajaxAguarde(destino,tipo){
	icone = "loading";
	mensagem =  "Aguarde, processando...";

	// Mostra carregando	
	if(tipo=='int'){
		ajaxSucess = false; 
		// Cria html base
		$(destino +' *').hide('slow',function(){
			if(ajaxSucess==false){
				$(destino).html('<div id="CaixaMensagem_int"><div id="msg" align="center"></div></div>');
				// Inicia HTML colocando icone e mensagem 
				$(destino+' #CaixaMensagem_int #msg').html('<img src="imagens/ico_'+ icone +'.gif" />&nbsp;'+ mensagem +'&nbsp;');			
			}
		});
	}else{
		F_CaixaMensagem(destino,icone,mensagem);
	}

	// 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,cache,aguardeTipo,callbackFunc){
	// Ajusta URL
	if(url=="/" || url=="" || url==undefined) return false; 
	if(url=="?") url = "index.php.htm";
	if(url.indexOf('http://')==-1) url = base_url + url;
	// Chama a requisição AJAX
	$.ajax({
	  type: "GET", url: url, data: data,
	  cache: (cache==undefined ? false : cache), //defalut = false
 	  //contentType : "application/x-www-form-urlencoded",
	  beforeSend: function(){
  			ajaxAguarde(destino,aguardeTipo);
	  },
	  success: function(data){
	  		ajaxSucess = true; 
	  		// Substitui dados recebidos ao destino;
			$(destino).html(data).scrollTop(0);
			// Scroll to view
			$('html,body').animate({scrollTop: 0/*$(destino).eq(0).offset().top-100*/},500);
			// Converte e ajusta Resultado
			if(isType(callbackFunc,'function')){ callbackFunc(destino); }
			ajaxConverte(destino,destino,callbackFunc);
	  }
	});
	return true;
};
  
function ajaxAtivar(ajax_alvo,concluidoFunc){
	// Carrega script (modo simples)
	F_LoadScript('swfaddress',false,'single');
	// Aguarda Jqyery estrar pronto
	jQuery(function($){ 
		// Converte links e forms
		ajaxConverte("body",ajax_alvo,concluidoFunc);
		// Chama a função que será chamada sempre ao ternimar de processar
		if(isType(concluidoFunc,'function')){ concluidoFunc(ajax_alvo); }
		// Adiciona listener chamado ao mudar de página ajax
		SWFAddress.addEventListener(SWFAddressEvent.CHANGE,function(event){
			// Testa se é evento valido (deve iniciar com barra)
			if(event.value!='' && event.value != '../gestortotal.tempsite.ws/'+link && RegexTest(event.value,'^/')){
				// Remove barra 
				event.value = event.value.substr(1);
				// Carreha Ajax
				ajaxCarrega(ajax_alvo,event.value,'modo=ajax',true,'int',concluidoFunc);
			}
		});
	});
}

// Converte links normais e formulários p/ Ajax
function ajaxConverte(destino,alvo,callbackFunc) {
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'');
	// Resolve problema com links com ancoras causado porque usa-se BaseUrl 
	$(destino +" a[@href*=#]").click(function(){
		GoTop(this.hash); return false;
	});
	// Converte Links p/ Ajax
	$(destino +" a[@target!=_blank][@target!=ajax]:not([_40class_2A=nyroModal])").each(function(i){
		if(!RegexTest($(this).attr('href'),'(^[?]$)|(#)|(^mailto\:)|(^javascript\:)|(download)|../gestortotal.tempsite.ws/.%28zip|rar)$','gi') ){
			this.href =  '@..htm#/'+ this.href.replace(base_url,'');
		}
	});
	// Configura e Ativa
	ajaxFormDef(destino,alvo,callbackFunc); 
    // Janela NyroModal  
	AtivaNyroModal(destino);
	// Dicas ao passar o mouse  
	AtivaToolTip(destino);	
	//Adiciona Efeitos
	EfeitoCampos(destino); 
}


// Configura e Ativa Formulários no modo Ajax
function ajaxFormDef(destino,alvo,callbackFunc) {
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'body');
	alvo = F_DefVal(alvo,destino);	
	
	// Verifica se tem algum form
	if($(destino +" form[@target!=ajax]").length <= 0) return false;
		
    // Carrega plugin
	F_LoadScript('jquery.form.htm',function(){
		// Configurações do envio e retorno
		var options = { 
			target: alvo, cache: false,
			//contentType : "application/x-www-form-urlencoded",
			beforeSubmit: function(formData, jqForm){
				// força execução da função onsubmmit
				if(jqForm.attr('onsubmit')==undefined || eval(jqForm.attr('onsubmit').replace(/return /,'')) ){
					ajaxAguarde(alvo); 
					return true;
				}else{
					return false;
				}
			},
			success: function(responseText, statusText){
				ajaxSucess = true;	
				// Mostra mensagem OK
				F_CaixaMensagem(destino,"ok","Os dados foram salvos.","ok");
	  			// Substitui dados recebidos ao destino;
				$(alvo).scrollTop(0);
				// Scroll to view
				$('html,body').animate({scrollTop: 0/*$(alvo).eq(0).offset().top-100*/},500);
				// Converte e ajusta Resultado
				if(isType(callbackFunc,'function')){ callbackFunc(alvo); }
				ajaxConverte(alvo,alvo,callbackFunc);
			} 
		};
		// Converte e Ativa method=POST action  p/ Ajax
		$(destino +" form[@target!=ajax][method]").each(function(i){
			$(this).attr("target","ajax").attr("action", $(this).attr("action") + ($(this).attr("action").indexOf('?')==-1 ? "?" : "&") + "modo=ajax");
		}).ajaxForm(options);
		
		// Converte method=GET action  p/ Ajax
		//$(destino +" form[@target!=ajax]:not([method])").attr("target","ajax").prepend('<input type="hidden" name="modo" value="ajax" />');		
	});
}

// Função p/ carregar script com callback
function F_LoadScript(file,callbackFunc,modo){
	url = sistema_url +'js/'+ file +'.js'
	if(modo=='single'){
		document.write('<script type="text/javascript" src="'+ url.replace(base_url,'') +'"></script>');
	}else{
		jQuery(function($){
			$.ajax({cache: true, dataType: "script", url: url, success: callbackFunc});
		});
	}	
}

function F_CamposMoeda(destino){
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'');	

	// Verifica se tem alguma dica, dai nem processa por nada
	if($(destino +" input.moedaformat, "+ destino +" input.moedaformat5d, "+ destino +" input.reaisformat").length <= 0) return false;	
	
	// Carrega Scripts para formatar valores
	F_LoadScript('jquery.price_format',function(){
		// 0,00	
		$(destino+' input.moedaformat').css('text-align','right')
			.priceFormat({prefix: '', centsSeparator: ',', thousandsSeparator: '.'}); 
		// 0,00000
		$(destino+' input.moedaformat5d').css('text-align','right')
			.priceFormat({prefix: '', centsSeparator: ',', thousandsSeparator: '.', centsLimit: 5}); 
		// R$ 0,00
		$(destino+' input.reaisformat').css('text-align','right')
			.priceFormat({prefix: 'R$ ', centsSeparator: ',', thousandsSeparator: '.'});
	});
}

// Dicas ao passar o mouse 
function AtivaToolTip(destino){ 
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'');	
	
	// Verifica se tem alguma dica, dai nem processa por nada
	if($(destino +"%20.tip,.htm "+ destino +" .tipimg").length <= 0) return false;	
	
	// Dicas ao passar o mouse  
	F_LoadScript('jquery.tooltip',function(){
		// Dicas ao passar o mouse
		$(destino+'%20.tip.htm').tooltip({	track: true, delay: 300, showURL: false, showBody: " - ", left: -20 }).find("*:not%28.tip%29.htm").removeAttr('title').removeAttr('alt');
		// Dicas como imagem
		$(destino+' .tipimg').tooltip({ track: true, delay: 300,	showURL: false, opacity: 1.0,bodyHandler:function(){ return $("<img/>").attr("src", this.lowsrc); } });
	});
} 
 
// Ativa NyroModal 
function AtivaNyroModal(destino){ 
	// Testa se o destino foi informado
	destino = F_DefVal(destino,'');	
	
    // Verifica se tem alguma dica, dai nem processa por nada 
	if($(destino +" .nyroModal").length <= 0) return false;
	 
    // Carrega NyroModal                                      	
	F_LoadScript('jquery.nyroModal'); 
}
  
// Chama ao inicializar o site
jQuery(function($){
	//Adiciona Efeitos campos
	EfeitoCampos();
	
	// Mostra/Esconde texto padrão nos campos
	$("#vl_busca").toggleVal('Pesquisar...');
	$("#vl_cadnews").toggleVal('digite seu email aqui...');

	// Verifica se esta no admin ou no site
	if(isset('ver_site')){
		// Mostra site

	}else{
		// Resolve problema com links com ancoras causado porque usa-se BaseUrl
		$("a[@href*=#]").each(function(i){	this.href = document.location.href.split("#")[0] + this.hash; })
	
		// Janela NyroModal  
		AtivaNyroModal();
		
		// Dicas ao passar o mouse  
		AtivaToolTip()
	}
	
});	
