// ==UserScript== // @name googleplusplus_default_circle // @author Micah Wittman // @namespace http://wittman.org/projects/googleplusplus_default_circle // @include *plus.google.com* // @description Redirects from Stream view to a default circle // @version 0.2.7 // ==/UserScript== function defaultCircle(){ var logging = false; function log(txt) { if(logging) { console.log(txt); } } function re_map(mappings){ if(mappings == null) return false; //Scripts without a default (bundled) mapping resource var m = mappings; SEL = { 'post' : "[id^='update-']", //"[id^='update-']" 'posts' : m['XVDd7kiawTA9Z68I'], //".tn" 'comments_wrap' : m['nqBp6N6dKqueig2R'], //".Ij" 'comment_editor_cancel' : "[id*='.cancel']", //[id*='.cancel'] 'plust1_and_comments_link_wrap' : m['YAnwDHrlMoy67el9'], //".Bl" 'old_comment_count_span' : m['9Iug6cv5o3NgTEEv'], //".Gw" 'recent_comments_wrap' : m['CgYb1dbCZGVfpUAj'], //'.mf' 'circle_links_wrap' : '#content ' + m['tZ7bxNTZEoVrcPyj'] + ' + div', //"#content .a-ud-B + div" 'circle_links' : "#content " + m['NCQTv2BvLd3MFT9q'].replace(':hover','') + " a[href*='stream/']", //"#content .a-ob-j-X a[href*='stream/']" 'stream_link' : "#content " + m['XLINtDfuUFUIgeVl'] + " + a[href='/stream']:first", //"#content .a-ob-Fd a[href='/stream']:first" 'stream_link_active' : "#content " + m['XLINtDfuUFUIgeVl'] + " + a[href='/stream']" + m['oL8HuLz0SCCVwtPK'] + ":first", //"#content .a-f-ob-B a[href='/stream'].a-ob-j-ia:first" 'user_link' : m['tuVm7xq63YKbjl9u'] + ' a:first', //'.Nw a:first' 'share_link' : m['xG7OYDQoYoP4QS0R'] + ' a:first', //'.gx a:first' 'permalink_wrap' : m['tuVm7xq63YKbjl9u'], //'.Nw', 'img_divs' : "#content " + m['rWCWLOSJ4yQRU41j'] + "[data-content-url]", //#contentPane .F-y-Ia[data-content-url] 'search_input_classes' : m['ikY6QG1yVApfM0ib'].replace('.','') + ' ' + m['9WbMI68ODRm5sxgV'].replace('.','') + ' ' + m['QvnLjkPdyzwsVmEq'].replace('.',''), //'a-pu-z a-x-z Ka-z-Ka' '___' : '' }; } function set_selector_mappings(){ /*** Scripts without a default (bundled) mapping resource ***/ var default_selector_map = { 'mapping date right' : '0000-00-00.000', 'mappings' : null }; /***********************************************************/ var mappings = {}; try{ //console.log(SEL); /*stor_del('GPlus CSS Map'); stor_del('Last Got GPlus CSS Map Date'); stor_del('GPlus CSS Map Date'); return;*/ //var now = new Date("August 25, 2011 22:27:00"); //new Date(); var now = new Date(); var stored_mappings; var stored_last_check_for_map_update; var stored_map_date; //Check for resume flag var uncheckable_dom_litmus_location = false; var path = window.location.pathname; if( path != '/' && path.indexOf('/stream/') == -1 && path.indexOf('/posts') == -1 ){ uncheckable_dom_litmus_location = true; } //Set mappings if first time upon page load if( !SET_SELECTOR_MAPPINGS_DONE_ONCE ){ stored_mappings = $.parseJSON(stor_get('GPlus CSS Map', null)); stored_last_check_for_map_update = stor_get('Last Got GPlus CSS Map Date', 0); stored_map_date = stor_get('GPlus CSS Map Date', ''); //User stored mapping if newer than default mappings if((stored_last_check_for_map_update != 0) && (stored_mappings) && (stored_map_date > default_selector_map['mapping date right'])){ mappings = stored_mappings; //local storage copy of map default_selector_map['mapping date right'] = stored_map_date; //Scripts without a default (bundled) mapping resource }else{ mappings = default_selector_map.mappings; //included default map file } //console.log('mappings_before_remap:'); //console.log(default_selector_map.mappings); re_map(mappings); //console.log(SEL); }else{ SET_SELECTOR_MAPPINGS_DONE_ONCE = true; //done once, set flag } //Check if resume mode is needed if(uncheckable_dom_litmus_location){ RESUME_MAP_CHECK_UPON_ROOT_PATH = true; //flag to re-run when at root URL return; } RESUME_MAP_CHECK_UPON_ROOT_PATH = false; //unset flag //Check remote mappings in case of update var timediff = now.getTime() - stored_last_check_for_map_update; //console.log('timediff:'); //console.log(timediff/60*1000*60); //console.log('stored_last:'); //console.log(stored_last_check_for_map_update); //console.log('stored_map:'); //console.log(stored_map_date + ' and ' + stored_map_date); //console.log('stored_last:' + stored_last_check_for_map_update); console.log('timediff:' + (timediff > 30*60*1000)); console.log('force:' + SET_SELECTOR_MAPPINGS_FORCED); if((default_selector_map.mappings == null) || (stored_last_check_for_map_update == 0) || (timediff > 30*60*1000) || (SET_SELECTOR_MAPPINGS_FORCED)){ /* 30*60*1000 = 0.5 hour interval*/ SET_SELECTOR_MAPPINGS_FORCED = false; //unset flag //console.log('past interval'); $.get('http://goldenview.wittman.org/map/current_gplus_mappings_timestamp.txt', function(data){ //console.log(data); var remote_date = data; if((remote_date.length > 8 && remote_date.length < 16 && remote_date[0] == 2) && (remote_date > default_selector_map['mapping date right'])){ //2010-01-01.123 $.getJSON('http://goldenview.wittman.org/map/current_gplus_mappings.json', function(data){ //console.log('ajax map pull:'); console.log(data); var date_right = typeof data['mapping date right'] == 'undefined' ? default_selector_map['mapping date right'] : data['mapping date right']; var mappings_length = Object.keys(data.mappings).length; //console.log('date_right, default_date'); //console.log(date_right); console.log(default_selector_map['mapping date right']); if(date_right > default_selector_map['mapping date right'] && mappings_length > 999 && (!$(SEL.stream_link).length || !$(SEL.posts).length || !$(SEL.comments_wrap).length || !$(SEL.circle_links).length)){ mappings = data.mappings; re_map(mappings); stor_set('GPlus CSS Map', JSON.stringify(mappings)); stor_set('GPlus CSS Map Date', date_right); //console.log('update local from remote'); //console.log(mappings); } }); } }); stor_set('Last Got GPlus CSS Map Date', now.getTime()); //console.log('stored:'+now.getTime()); } //console.log(mappings); }catch(e){ SET_SELECTOR_MAPPINGS_DONE_ONCE = true; //done once, set flag ////mappings = default_selector_map.mappings; //If all else fails, use included default map file ////re_map(mappings); //console.log('exception caught, using default'); //console.log('Remote map not pulled yet.') //console.log(e.message); //console.log(mappings); } } function setItem(key, value) { try{ log("Inside setItem: " + key + ":" + value); window.localStorage.removeItem(key); window.localStorage.setItem(key, value); }catch(e){ log("Error inside setItem"); log(e); } log("Return from setItem" + key + ":" + value); } function getItem(key){ var v; log('Get Item: ' + key); try{ v = window.localStorage.getItem(key); }catch(e){ log("Error inside getItem() for key: " + key); log(e); v = null; } log("Returning value: " + v); return v; } function removeItem(key) { try{ log("Inside removetItem: " + key); window.localStorage.removeItem(key); }catch(e){ log("Error inside removeItem"); log(e); } log("Return from removeItem" + key); } function clearStorage(){ log('about to clear local storage'); window.localStorage.clear(); log('cleared'); } function GM_removeItem(name){ removeItem(name); } function GM_setValue(name, value){ setItem(name, value); } function GM_getValue(name, oDefault){ var v = getItem(name); if(v == null){ return oDefault; }else{ return v; } } function set_item(key, value) { try{ window.localStorage.removeItem(key); window.localStorage.setItem(key, value); }catch(e){ log(e); } } function get_item(key){ var v; try{ v = window.localStorage.getItem(key); }catch(e){ log(e); v = null; } return v; } function del_item(key) { try{ window.localStorage.removeItem(key); }catch(e){ log(e); } log("Return from removeItem" + key); } function stor_clear(){ log('about to clear local storage'); window.localStorage.clear(); log('cleared'); } function stor_del(name){ del_item(name); } function stor_set(name, value){ set_item(name, value); } function stor_get(name, dfault){ var v = get_item(name); if(v == null){ return dfault; }else{ return v; } } var SEL = {}; var RESUME_MAP_CHECK_UPON_ROOT_PATH = false; var SET_SELECTOR_MAPPINGS_DONE_ONCE = false; var SET_SELECTOR_MAPPINGS_FORCED = false; var SET_SELECTOR_MAPPINGS_FORCED_ONCE = false; set_selector_mappings(); function empty_star_inserts(that){ var t = $(that); var circle_link = t; if(t.parent().find('.gpp__default_circle').length == 0){ t.prepend(' ' + STAR_OUTLINE + ''); //-14 > -12 var set_button = t.parent().find('.gpp__default_circle:first'); set_button.click(function(){ var t = $(this); circle_link_url = circle_link.attr('href'); GM_setValue('gpp__default_circle_url', circle_link.attr('href')); allow_stream = false; window.location.href = circle_link_url; return false; }) .hover( function(){ $(this).empty().append('SET ' + STAR_HOVER_SOLID).css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-50px'}); }, function(){ $(this).empty().append(STAR_OUTLINE).css({'fontSize':'9px','color':'#36C','marginLeft':'-12px'}); //-32 > -12 } ); } } function img_star(base64){ return '*'; } function add_css(){ $('head').append('' ); } function process_circles(t, default_circle_url, circle_link){ //Process Circles if( default_circle_url == circle_link.attr('href') && t.find('.gpp__default_circle').length == 0 ){ t.prepend(' ' + STAR_SOLID + ''); //-14 > -12 var set_button = t.parent().find('.gpp__default_circle:first'); set_button.click(function(){ var t = $(this); circle_link_url = circle_link.attr('href'); GM_removeItem('gpp__default_circle_url'); window.location.href = './'; return false; }) .hover( function(){ $(this).empty().append('UN-SET ' + STAR_HOVER_OUTLINE).css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-77px'}); //-97 > -77 }, function(){ $(this).empty().append(STAR_SOLID).css({'fontSize':'9px','color':'#36C','marginLeft':'-12px'}); //-32 > -12 } ); }else{ empty_star_inserts(t); } } function main_loop(){ //var circle_links_container = $("#content .a-b-la-A :first"); OLD //var circle_links_container = $("#content .a-b-sb-z:first"); //OLD //var circle_links_container = $("#content .a-c-mb-S:first"); //OLD //var circle_links_container = $("#content .a-e-nb-B:first"); //OLD var circle_links_container = $(SEL.circle_links_wrap); //NEW //var circle_links = $("#content .a-b-sb-z a[href*='stream/']"); //OLD //var circle_links = $("#content .a-mb-k-da a[href*='stream/']"); //OLD //var circle_links = $("#content .a-nb-j-T a[href*='stream/']"); //OLD var circle_links = $(SEL.circle_links); //NEW var default_circle_url = GM_getValue('gpp__default_circle_url', ''); circle_links_container.css('margin-left','8px'); //OFF Stream //ON Stream //Always add star to Stream //var stream = $("#content .a-c-mb-S a[href='/stream']:first"); //OLD //var stream = $("#content .a-e-nb-B a[href='/stream']:first"); //OLD var stream = $(SEL.stream_link); //NEW stream.click(function(){ GM_setValue('gpp__default_circle_url', '/stream'); }); //console.log(stream); if(default_circle_url == '/stream'){ if(stream.parent().find('.gpp__default_circle').length == 0){ stream.before(' ' + STAR_SOLID + ''); //-4 > -2 var set_button = stream.parent().find('.gpp__default_circle:first'); set_button.click(function(){ GM_removeItem('gpp__default_circle_url'); window.location.href = '/stream'; return false; }) .hover( function(){ $(this).empty().append('UN-SET ' + STAR_HOVER_OUTLINE).css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-66px','paddingTop':'3px'}); //-66 > -46 }, function(){ $(this).empty().append(STAR_SOLID).css({'fontSize':'9px','color':'#36C','marginLeft':'-2px','paddingTop':'6px'}); } ); } }else{ if(stream.parent().find('.gpp__default_circle').length == 0){ stream.before(' ' + STAR_OUTLINE + ''); // -4 > -2 var set_button = stream.parent().find('.gpp__default_circle:first'); set_button.click(function(){ GM_setValue('gpp__default_circle_url', '/stream'); window.location.href = '/stream'; return false; }) .hover( function(){ //$(this).empty().append('SET ' + STAR_HOVER_SOLID).css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-40px','paddingTop':'2px'}); $(this).empty().append('SET ' + STAR_HOVER_SOLID).css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-38px','paddingTop':'3px'}); }, function(){ $(this).empty().append(STAR_OUTLINE).css({'fontSize':'9px','color':'#36C','marginLeft':'-2px','paddingTop':'6px'}); } ); stream.click(function(){ allow_stream = true; }); } } //var stream_active = $("#content .a-b-la-A a[href='/stream'].a-la-h-Pa:first"); OLD //var stream_active = $("#content .a-b-sb-z a[href='/stream'].a-sb-k-Ea:first"); //OLD //var stream_active = $("#content .a-c-mb-C a[href='/stream'].a-mb-k-ua:first"); //OLD //var stream_active = $("#content .a-e-nb-B a[href='/stream'].a-nb-j-ma:first"); //OLD var stream_active = $(SEL.stream_link_active); //NEW if( stream_active.length > 0 ){ //Stream is current view if( circle_links.find('.gpp__default_circle').length == 0 ){ circle_links.each(function(){ var t = $(this); var circle_link = t; if(allow_stream){ process_circles(t, default_circle_url, circle_link); }else{ empty_star_inserts(this); } }); //console.log('default_circle_url:' + default_circle_url); if( default_circle_url != '' && default_circle_url != '/stream'){ if( !allow_stream ){ //console.log('!allow_stream'); window.location.href = default_circle_url; }else{ //console.log('allow_stream'); allow_stream = false; } } } }else{ //Circle is current view circle_links.each(function(){ var t = $(this); var circle_link = t; //Process Stream if(stream.parent().find('.gpp__default_circle').length == 0){ stream.before(' ' + STAR_OUTLINE + ''); var set_button = stream.parent().find('.gpp__default_circle:first'); set_button.click(function(){ GM_setValue('gpp__default_circle_url', '/stream'); window.location.href = '/stream'; return false; }) .hover( function(){ //$(this).empty().append('SET ★').css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-136px','paddingTop':'2px'}); $(this).empty().append('SET ' + STAR_HOVER_SOLID).css({'fontSize':'15px','color':'#DD4B39','marginLeft':'-136px','paddingTop':'2px'}); }, function(){ //$(this).empty().append('☆').css({'fontSize':'9px','color':'#36C','marginLeft':'-2px','paddingTop':'6px'}); $(this).empty().append(STAR_OUTLINE).css({'fontSize':'9px','color':'#36C','marginLeft':'-2px','paddingTop':'6px'}); } ); } //Process Circles process_circles(t, default_circle_url, circle_link); //console.log('non-active-stream default_circle_url:' + default_circle_url); var path = window.location.pathname; //console.log(path); console.log(default_circle_url); if((path == '/' || path == '/u/0/') && path != '/stream' && default_circle_url != '' && default_circle_url != '/stream'){ window.location.href = default_circle_url; } }); } } var allow_stream = false; var STAR_SOLID = img_star('iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHFJREFUeNpiYEADDnkn56OLMaIpUABS94FY8cAk8wcwcSY0TQFoNMQkqPEJDLjBAkaoNSBF87EoSARau4ARyT0NQKoeSUEjUEEDupv80UzxR3E41FcGIPuBukGmLwDxoeJwkwKg9ieCOFA6EeZLgAADAL1nIQU/3xDFAAAAAElFTkSuQmCC'); var STAR_OUTLINE = img_star('iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAI1JREFUeNpiYEADDnkn56OLMaIpUABS94FY8cAk8wcwcSY0TQFAfABKI0yCGu8AxBuA+CMQLwDiBCDmh9IbmIDGJgIZjTCFUGsWQPmFIHlGJPc0AKkHUOtAChSAChrQ3eQPkoA6XB/KRzgc6isDIJYHYkEgFgDxoeIMLFDFCVD7J0D5iUAFB6HiDQABBgDbKimYpe8i7gAAAABJRU5ErkJggg=='); var STAR_HOVER_SOLID = img_star('iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl SUQ9InhtcC5paWQ6M0E0QTAxMjlBRUI3MTFFMEE0N0REQTQ5Qzc5NjMxNjEiIHhtcE1NOkRvY3Vt ZW50SUQ9InhtcC5kaWQ6M0E0QTAxMkFBRUI3MTFFMEE0N0REQTQ5Qzc5NjMxNjEiPiA8eG1wTU06 RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGRjBDNjMzRUFFQjIxMUUwQTQ3 RERBNDlDNzk2MzE2MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQTRBMDEyOEFFQjcxMUUw QTQ3RERBNDlDNzk2MzE2MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqDC6ZsAAAGUSURBVHjalJNLSAJRFIb/O5QmWkZgZWZB 6zYtpE37Fm3cBe2ixyJ6LIQ2Ua0KgoJ2QYto1TKoXRG5ShC0MlolSGC+ylFnfGCannRmfBBO4IE7 M9xzvvv/98y9ICKoDT4Ypv/yHNSCovSxf4KkKJJaiSpcCHpQ5J3IRYtoGxbcd5Ung+j1twmX48Tf P0mf+Qc3UirWW8I/sUfkEtV6qqxzi9xXa+vs/WiO4u4UuL5uUD4DpjOA+DBkKUWQ9YDr1ct5LQOl 0uiwbYAR5Sl8sYvIletvu6U9N96N0M1sw2KfrMLy6pmXS/LvHaNcU1PAapoxBWYDMDkOMGIbkybq sNSnjJ/edpaQDZVl7UpO5hi4oWkMb67CZDaylg3jDFZ0ahsW64oVB0xnhUbP1LtdSvggBEqK3ea/ w1AKXCOXJHVY9DpRJrlBXVMOjB6ewTBhUcQ/kX4NqcHflHDeSFZNa+cYX7dDY+yHeeUUgwuzUkXW 6YHQfGBqN6Qkesm3uEVCvEC1EAShPviAi57nlykWEeo37VeAAQDHjvlsiBkeUwAAAABJRU5ErkJg gg=='); var STAR_HOVER_OUTLINE = img_star('iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl SUQ9InhtcC5paWQ6M0E0QTAxMkRBRUI3MTFFMEE0N0REQTQ5Qzc5NjMxNjEiIHhtcE1NOkRvY3Vt ZW50SUQ9InhtcC5kaWQ6M0E0QTAxMkVBRUI3MTFFMEE0N0REQTQ5Qzc5NjMxNjEiPiA8eG1wTU06 RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQTRBMDEyQkFFQjcxMUUwQTQ3 RERBNDlDNzk2MzE2MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQTRBMDEyQ0FFQjcxMUUw QTQ3RERBNDlDNzk2MzE2MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiFjuWsAAAHHSURBVHjalJJfSFNhGMafs5lTC6ZJFF5I dNFVd3qVKREDkSDv8sIpQXXlhREoWN4aESjeikg3u1CKLmQwEvGqP4pTmW1YoLTNcG5ubTub5+g5 Z3s6O8nqiEfYBy/fn+f9fd/7PnwCSVgNJZtntfOSYKXbLEnGuT06CUVfVQwrv1YhxT9C3FNRMZxd XjTm1MqPCmGmmPDto2lwAIcflqBZlH4mrMW+4khpwdXbXXCo75GxKL0qMtHL5MouSq7bLjpBSdTf IWq6xmEXnMLlzmaGn91DWD+163pRyhqg485IKU/mnmeQ/oft3PFtUJVlHmcy1FSWBqge6fs0NTnH uPeVkfd99jOLhngS+dA813QhOLPAAk/AcuQZnXpKf899xoKJsob/k4pSmKFHHQx6Nkzw/ls3/e43 lA7Nl5oME2qv4UItUN9609hL0Zhxf31bJ4SGRjjqznG7kPYjJ7pw5YaCn6+7uTXUg8DYO9ivu+A4 0D9MitZwbtULaiFs9T2AaHfj1swcnDYPAv0vcFyMIbm5e+o/lHuQuf38ruFm5MuOqbf0p2njfH14 zmRmOaEgrjHw5CWzSeWU039D+x3gt8cDFPP/4D8CDADOgV5B+CQR3QAAAABJRU5ErkJggg=='); /****** Execute before main_loop ******/ add_css(); /****** Start main_loop ******/ setInterval(main_loop, 2000); } /****** Load jQuery then callback upon load function ******/ function addJQuery(callback){ var script = document.createElement("script"); script.setAttribute("src", protocol + "ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"); script.addEventListener('load', function() { var script = document.createElement("script"); script.textContent = "(" + callback.toString() + ")();"; document.body.appendChild(script); }, false); document.body.appendChild(script); } /****** Call Load jQuery + callback function ******/ var protocol = window.location.protocol + '//'; addJQuery(defaultCircle);