﻿(function(a){a.fn.extend({watermark:function(b){var c={txt:"Text Here",cssclass:"watermark"};b=a.extend(c,b);return this.each(function(){var c=a(this);c.addClass(b.cssclass).val(b.txt);c.focus(function(){c.val()==b.txt&&SetCaratAtEnd(c.removeClass(b.cssclass).val("@")[0])});c.blur(function(){c.val()==""&&c.addClass(b.cssclass).val(b.txt)})})}})})(jQuery);function SetCaratAtEnd(a){var b=a.value.length;if(document.selection){a.focus();var c=document.selection.createRange();c.moveStart("character",-b);c.moveStart("character",b);c.moveEnd("character",0);c.select()}else if(a.selectionStart||a.selectionStart=="0"){a.selectionStart=b;a.selectionEnd=b;a.focus()}}var geocoder=new google.maps.Geocoder,twits,twitsLength,twitIndex=0,totalProcessed=0,totalFollowers=0,map,nextCursor=-1,currentUser,cachedPrevPageUser=null,processingUser=null,running=false,watermarkTxt="Enter Twitter username here!";$(function(){reloadmap();$("#username").watermark({txt:watermarkTxt});var a=$("#twithandle").val();if($.trim(a)){$("#username").removeClass("watermark").val("@"+a);running=true;initTwit(a)}$("#twituser form").submit(function(b){b.preventDefault();var a=$.trim($("#username").val());if(UsernameExists(a)&&!running){$("#alert").slideUp(200);$("#totalProcessed").empty();reloadmap();running=true;initTwit(a)}})});function UsernameExists(a){return a!=""&&a!=watermarkTxt}function initTwit(a){var b=$.ajax({url:"http://api.twitter.com/1/account/rate_limit_status.json",dataType:"jsonp",timeout:6e3});b.success(function(d){if(d.remaining_hits>0){var c="http://api.twitter.com/1/users/profile_image/"+a+"?size=normal",e=$("<a/>").attr({href:"http://www.twitter.com/"+a,target:"_blank"});$("#load").show();$("#user").attr("src",c).load(function(){$(this).wrap(e).show()});var b=$.ajax({url:"http://api.twitter.com/1/statuses/friends/"+a+".json?cursor="+nextCursor+"",dataType:"jsonp",timeout:6e3});b.success(function(b){if(nextCursor===-1){var d={username:a};$.ajax({type:"POST",data:d,url:"/Log/TwitterUser",dataType:"json"});var e=$.ajax({url:"http://api.twitter.com/1/users/show/"+a+".json",dataType:"jsonp",timeout:6e3});e.success(function(a){totalFollowers=a.friends_count});currentUser=a}else if(b.users.length){var c=b.users[0].screen_name;cachedPrevPageUser==c&&b.users.splice(0,1)}nextCursor=b.next_cursor;twits=b.users;twitsLength=b.users.length;processtwits()});b.error(function(){haltTwitPlot("Invalid Twitter handle")})}else haltTwitPlot("Twitter rate limit reached")});b.error(function(){haltTwitPlot("Error contacting Twitter")})}function haltTwitPlot(a){twitIndex=0;totalProcessed=0;nextCursor=-1;cachedPrevPageUser=null;processingUser=null;$("#load").hide();$("#latest").empty();running=false;a&&$("#alert").text(a).slideDown(500)}function reloadmap(){var c=39,d=0,a=new google.maps.LatLng(c,d),b={zoom:2,center:a,mapTypeId:google.maps.MapTypeId.ROADMAP,mapTypeControl:false,navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}};map=new google.maps.Map(document.getElementById("map"),b)}function processtwits(){if(twitIndex<twitsLength){updateTotalProcessed();setTimeout(function(){var b=twits[twitIndex],c=b.location;processingUser=b.screen_name;var d='<a href="http://twitter.com/'+b.screen_name+'" target="_blank">'+b.screen_name+"</a>";if(c)d+=" @ "+c;$("#latest").html(d).prepend('<img src="http://api.twitter.com/1/users/profile_image/'+b.screen_name+'?size=mini"/>');if(c){var e=/-?\d+(\.\d+)?/g,a=c.match(e);if(a&&a.length===2){plot(b.screen_name,a[0],a[1],d);twitIndex++;processtwits()}else{c=locationOverride(c);geocoder.geocode({address:c},function(c,e){if(e==google.maps.GeocoderStatus.OK)if(c.length==1){a=c[0].geometry.location;plot(b.screen_name,a.lat(),a.lng(),d)}twitIndex++;processtwits()})}}else{twitIndex++;processtwits()}},1600)}else{twitIndex=0;if(nextCursor>0){cachedPrevPageUser=processingUser;initTwit(currentUser)}else haltTwitPlot()}}function locationOverride(a){if(a==="Indy")a="Indianapolis";return a}function updateTotalProcessed(){totalProcessed++;var a=totalProcessed;if(totalFollowers>0)a+=" / "+totalFollowers;$("#totalProcessed").html(a)}function plot(a,b,c,f){var d=Math.floor(Math.random()*100+1);rand_dec=d/5e3;rand_dec=d>50?rand_dec*-1:rand_dec;b=parseFloat(b)+rand_dec;c=parseFloat(c)+rand_dec;var j=new google.maps.LatLng(b,c),k=new google.maps.MarkerImage("http://api.twitter.com/1/users/profile_image/"+a+"?size=mini",new google.maps.Size(24,24)),e=new google.maps.Marker({icon:k,position:j,map:map,animation:google.maps.Animation.DROP}),i="http://api.twitter.com/1/users/profile_image/"+a+"?size=bigger",h='<div class="display"><img src="'+i+'" alt="'+a+'"/>'+f+"</div>",g=new google.maps.InfoWindow({content:h});google.maps.event.addListener(e,"click",function(){g.open(map,e)})}function trace(a){try{console.log(a)}catch(b){}}
