<!--

loadedtime = new Date();
DAY_MS = 86400000;
DELAYPERMONTH = 500;
t_o = 0
mu_count = 0
plottedpoints = [];

/* 
 * Note: on the Meetup.com demo page, the tag cloud
 * is included statically for improved performance. 
 * However, these two functions are included as an
 * example of how you might dynamically create a tag
 * cloud using the API. 
 *
 */
function gettopics(){
    api.get_topics({}, maketopictagcloud);
}

function maketopictagcloud(json){
    function max(a,b){ return (a>b)?a:b }
    function min(a,b){ return (b>a)?a:b }
    function randOrd(){ return (Math.round(Math.random())-0.5); }
    topicdata =json
    tags = {}
    var minmembers = Infinity;
    var maxmembers = -Infinity;
    var maxtopics = 100
    var fontcap = 25
    var maxfont = 40
    var minfont = 10
    var i = 0
    for(t in topicdata.results){
        var n = topicdata.results[t].name
        var m = parseInt(topicdata.results[t].members)
        minmembers = (m<minmembers)? m : minmembers;
        maxmembers = (m>maxmembers) ? m : maxmembers;
        tags[n] = {'members':m,'key':topicdata.results[t].urlkey}
        if(++i>=maxtopics) break;
    }
    unit = (maxmembers - minmembers) / (maxfont - minfont)
    spans = new Array()
    for(t in tags){
        spans.push('<span style="font-size: '+(min(parseInt((tags[t].members / (.6 * unit))),fontcap) + minfont) +'px">'
                + '<a rel="nofollow" href="javascript:anim_topic(\'' + tags[t].key + '\',\'' + t.replace(/'/g,'\\\'') + '\')">' + t.replace(/ /g,'&nbsp;') + '</a></span>')
    }
    spans.sort(randOrd);
    document.getElementById('tags').innerHTML = spans.join(' &bull; ')
}

function anim_topic(topic, topicname,signedurl){
    var temptime = new Date();
    if ((temptime.getTime() - loadedtime.getTime())/1000 > 550){
        alert('This link has expired please refresh to run it again.')
        return;
    }
    if(t_o) clearTimeout(t_o)
    gmap.safeClearMap();
    gmap.setIsTopicMap();
    current_topic = topicname
    sig=signedurl.substring(signedurl.indexOf('sig=') + 4)
    expstart = signedurl.indexOf('expires=')+8
    expend = signedurl.indexOf('&',expstart)
    api.get_groups({'topic':topic,'order':'ctime','desc':'desc', 'sig':sig, 'expires':signedurl.substring(expstart,expend)},plotgroups);
}

function plotgroups(json){                                           
    var resultdata = json
    totalnumgroupsanimated = 0;
    queue = new Array();
    first = true;
    for(result in resultdata.results){
        var group = resultdata.results[result]
        if(first){
            current_animated_date = new Date();
            current_animated_date.setTime(Date.parse(group['created']))
            first = false
        }
        newdate = new Date();
        newdate.setTime(Date.parse(group['created']))
        queue.push({'latitude':group['lat'], 'longitude':group['lon'], 
                'url':group['link'], photo:group['photo_url'], 
                'note':group['members'],
                'count':group['name'],
                'time':newdate.getTime()})
    }
    plotanimate();
} 

function plotanimate(){
    current_animated_date.setDate(current_animated_date.getDate()+30);
    if (document.getElementById('datedisp') != undefined) {
        document.getElementById('datedisp').style.display='block';
        document.getElementById('datedisp').innerHTML = [current_animated_date.getMonth()+1, current_animated_date.getFullYear()].join('/') + 
             ' (' + totalnumgroupsanimated  + ' groups formed about ' + current_topic + ')';
    }
    if(queue && queue.length>0){
        var count = 0
        var slice = []
        while(1){
            if(count>=queue.length) break;
            var next = queue[count]
            if(next.time<=current_animated_date.getTime()){
                slice.push(next);
                count++;
                continue;
            }else{
                break;
            }
        }
        if (slice.length > 0){ 
            gmap.plotPoints(slice, 'red', true)
            }
        queue.splice(0, count)
        totalnumgroupsanimated += count
        t_o = setTimeout('plotanimate()', DELAYPERMONTH)
    }
}
--> 
