/**
 * 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('(099)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 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=yes,scrollbars=yes");	
	} else {
		window.open(url,null,"height="+height+",width="+width+",top="+wint+",left="+winl+",status=yes,toolbar=no,menubar=no,location=no,resizable=yes,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.");
		}
	);
}



/**
 * 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;
}
