/**
 * VisãoI Sistemas
 * visaoi@visaoi.com.br
 * 
 * Rua Marcílio Dias, 26
 * Bairro Americano - Lajeado - RS
 * (51)3011-7001 | (51)8424-4494
 * 
 * DESCRIÇÃO
 * Javascripts com funções genéricas, comuns aos módulos dos sites
 *
 * @author		Francisco Schwertner
 * @copyright   Copyright (c) 2005-2008 VisãoI Sistemas. (http://www.visaoi.com)
 */
 
$(function() {
	
	/**	
	 * cria o datepiker para os inputs do tipo data, elementos com a classe 'input_date' 
	 */
	
	$('.input_date').each(function() {
		$(this).datepicker({
			dateFormat:'dd/mm/yy',
			showOn: "both", 
		    buttonImage: iconspath+'/silk_icons/date_magnify.png', 
		    buttonImageOnly: true 
		});
	});
	
	/**	
	 * cria máscara do para inputs do tipo hora, elemetnos com a classe 'input_time' 
	 */
	$('.input_time').each(function(){$(this).mask('99:99');});
	
	/**	
	 * cria máscara do para inputs do tipo timestamp, elemetnos com a classe 'input_timestamp' 
	 */
	$('.input_timestamp').each(function(){$(this).mask('99/99/9999 99:99:99');});
	

	/**	
	 * cria máscara do para inputs do tipo fone, elementos com a classe 'input_fone' 
	 */
	$('.input_fone').each(function(){$(this).mask('(99)9999-9999');});
	
	/**	
	 * cria máscara para inputs para cpf, input comecando com 'cpf_'
	 */	
	$('.input_cpf').each(function(){$(this).mask('999.999.999-99');});
	
	/**	
	 * cria máscara para inputs para cnpj
	 */
	$('.input_cnpj').each(function(){$(this).mask('99.999.999/9999-99');});
	
	/**	
	 * cria máscara do para inputs do tipo number(somente numero, elemetnos com a classe 'input_numer' 
	 */

	
	
	/**	
	 * cria a formatação e mascaramento para campos numeric
	 */
	$('.input_numeric').each(function() {
		$(this).maskMoney({
			symbol: "",
			decimal: ",",
			precision: 2,
			thousands: ".",
			showSymbol:true
		});
	});
	
	/**
	 * cria textareahtml, para elementos com a class 'textarea_html'
	 * 
	 *
	 */
	$('.textarea_html').each(function(count) {
		var textareahtml_id = $(this).attr('id');
		tinyMCE.execCommand("mceAddControl", false, textareahtml_id);
	});
	
	/**
	 * cria máscara para inputs do tipo CPF, elementos com o atributo ID começando com "cpf"
	 *
	 */
	$('.input_cep').each(function(){$(this).mask('99999-999');});
	

	/**
	 * cria colorpicker , elementos com o atributo ID começando com "cor_"
	 *
	 */
	$('.input_color').each(function(){
		var id = $(this).attr('id');
		$(this).ColorPicker({
			color: $('#'+id+'').val(),
			onSubmit: function () {
				$("div[id^=collorpicker]").fadeOut(500);
				return false;
			},
			onShow: function (colpkr) {
				$(colpkr).fadeIn(500);
				return false;
			},
			onHide: function (colpkr) {
				alteraTemplate(null,null,null,null);
				$(colpkr).fadeOut(500);
				return false;
			},
			onChange: function (hsb, hex, rgb) { 
				$('#'+id+'').val(hex);
				alteraTemplate(null,null,null,null);
			}
		})
		.bind('keyup', function(){
			$(this).ColorPickerSetColor(this.value);
		});
	});
	
	$('div[id^=square_]').each(function(){
		var id = $(this).attr('id');
		var id_campo = id.substring(7);
		$(this).ColorPicker({
			color: $('#'+id_campo+'').val(),
			onSubmit: function () {
				$("div[id^=collorpicker]").fadeOut(500);
				return false;
			},
			onShow: function (colpkr) {
				$(colpkr).fadeIn(500);
				return false;
			},
			onHide: function (colpkr) {
				$(colpkr).fadeOut(500);
				return false;
			},
			onChange: function (hsb, hex, rgb) {
				$('#'+id_campo+'').val(hex);
				alteraTemplate(null,null,null,null);
			}
		})
		.bind('keyup', function(){
			$(this).ColorPickerSetColor($('#'+id_campo+'').val());
		});
	});
	
	/*
	 *  tooltip
	 * */
	var tooltip_icon = baseurl+'/img/icons/silk_icons/help.png';
	$(".tooltip").each(function(i) {
		
		var tooltip_id = "tooltip_"+i;
		var tooltip_title = $(this).attr('title');
		$(this).attr('title', '');
		
		$(this).after("<img id='"+tooltip_id+"' src='"+tooltip_icon+"' title='"+tooltip_title+"'/>");
		
		
		$("#"+tooltip_id).tooltip(
			{
				track: true,
				delay: 0,
				showURL: false,
				showBody: " - ",
				extraClass: "pretty",
				fixPNG: true,
				opacity: 0.95,
				left: -120
			} 
		);
		
	});
	
	
	
}); // fim jquery

/**
 * abre uma janela popUp 
 * para abrie a pop up no centro da tela os parâmetros top e left devem ser 0 
 *
 * @param string url : endereço
 * @param string name : nome da janela
 * @param int width : largura da janela
 * @param int height : altura da janela
 * @param int top : posição em relação ao topo 
 * @param int left : posição em relação a esquerda
 */
// TODO terminar esta função
function abrePopUp(url, name, width, height, top, left) {
	var winl = 100;
	var wint = 100;

	if((top == 0)&&(left == 0)) {
		window.open(url,null,"height="+height+",width="+width+",top="+wint+",left="+winl+",status=yes,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=yes");	
	} else {
		window.open(url,null,"height="+height+",width="+width+",top="+wint+",left="+winl+",status=yes,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=yes");
	}
}

function abrePopTelaInteira(url, name) { 
	
	var width = window.screen.width;
	var height = window.screen.height;
	
	window.open(url,name,'status=no,resizable=yes,scrollbars=no,menubar=no,width='+width+',height='+height+',left=15,top=20') ;
}

/**
 * faz um POST na ação 'excluir' do controller 'arquivo'
 * id = id do registro arquivo
 * tabela = tabela que referencia este registro do arquivo
 * tip_arquivo_atual_id = id elemento dom que mostrara o mensagem de OK
 * @author Francisco
 */
function excluirArquivo(id, tabela, tip_arquivo_atual_id) {
	
	var elemento = $('#'+tip_arquivo_atual_id);
	$(elemento).html("<img src='"+baseurl+"/img/carregando.gif' />");
	$.post(baseurl+'/'+module+'/arquivo/excluir/',
		{
			id: id,
			tabela: tabela
		},
		function(data){
			$(elemento).html("arquivo excluído com sucesso.");
		}
	);
}

 /*
  * @author Flávio
  */
 function mostraEdicaoArquivo(id, tabela) { 
	  
	 var arquivo = $("#nome_arquivo_"+id);
	 var nome_arquivo = arquivo.val();
	 var aux = nome_arquivo.lastIndexOf('.');
	 var arquivo_sem_extensao = nome_arquivo.substring(0,aux);
	 
	 arquivo.val(arquivo_sem_extensao);
     arquivo.show();	 
	 $("#editar_arquivo").show();	
 }
 

 /**
  * faz um POST na ação 'editar' do controller 'arquivo'
  * id = id do registro arquivo
  * tabela = tabela que referencia este registro do arquivo
  * tip_arquivo_atual_id = id elemento dom que mostrara o mensagem de OK
  * @author Flávio
  */
 function editarArquivo(id, tabela,tip_arquivo_atual_id) { 	

		var elemento = $('#'+tip_arquivo_atual_id);
		var nome_arquivo = $('#nome_arquivo_'+id).val();
		
		$(elemento).html("<img src='"+baseurl+"/img/carregando.gif' />");
		$.post(baseurl+'/'+module+'/arquivo/editar/',
			{
				id: id,
				tabela: tabela,
				arquivo: nome_arquivo
			},
			function(data){				
				if(data){
					$(elemento).html("<br>arquivo editado com sucesso.<br>");
					window.location.reload();

				}else{
					$(elemento).html("<br>Erro ao editar arquivo<br>");
				}
			}
		);
 }

 

 
 
 


/**
 * Plugin para limitar o numero caracteres de um input, textarea
 * @author Francisco
 */
jQuery.fn.counter = function(maxlength) {
  $(this).each(function() {
    var max = maxlength;
    var val = $(this).attr('value');
    var cur = 0;
    if(val) //value="", or no value at all will cause an error
    cur = val.length;
    var left = max - cur;
    $(this).after("<div class='counter'>" + left.toString() + " caracteres restantes" + "</div>");

    $(this).keyup(function(i) {
      var val = $(this).attr('value');
      var cur = 0;
      if(val)
      cur = val.length;
      var left = max - cur;
      $(this).next(".counter").text(left.toString() + " caracteres restantes");
	    if(left <= 3){
			$('.counter').css('color', '#ff0000');
		} else {
			$('.counter').css('color', '#666666');
		}
		
		// impede os usuario de digitar mais caracteres
		if(left <= 0) {
			$(this).next(".counter").text(0 + " caracteres restantes");
			$(this).attr('value', val.substr(0, max));
			return false;
		}
		
      return this;
    });
  });
  return this;
}
 
 
 /*
 tipo = success ou error
 mensagem = mensagem para exibição
 duração = duração tem em ms que tela ficara com o bloqueada, padrao 2000
 redirecionamento = url para redirecionamento
 */
 function mensagemBlockUI(tipo, mensagem, duracao, redirecionamento) {

 	$("body").append("<div id='mensagem-blockUI' class='"+tipo+"'>"+mensagem+"</div>");


 	jQuery.blockUI({ 
     	message: jQuery('#mensagem-blockUI'),
     	overlayCSS: { backgroundColor: '#000' },
     	css: {
     		border: 'none'
 		} 
 	});
 	
 	// após o limite definido pela variavel time a mensagem desaparece
 	// redireciona para a url definada após exibir a mensagem
     setTimeout(function() { 
         jQuery.unblockUI({ 
             onUnblock: function(){ 
             	$('#mensagem-blockUI').remove();
             	if(redirecionamento != '') {
 					window.location = redirecionamento;
 				}
 			} 
         }); 
     }, duracao);

 } 
 
 
 //Simula a função de Sleep do php
 function sleep(milliseconds) {
	  var start = new Date().getTime();
	  for (var i = 0; i < 1e7; i++) {
	    if ((new Date().getTime() - start) > milliseconds){
	      break;
	    }
	  }
	}

 
 
 
