function CleanData(data) {
    for (var i=0;i<data.length;i++) {
        e=data[i]
        if ('time_start' in e) {
            pm=false;
            if (e['time_start'][0]>=12) {        
                pm=true;
            }        
            t=''
            if (e['time_start'][0]>12) {
                t+=e['time_start'][0]-12;
            } else {
                t+=e['time_start'][0];
            }
            t+=':'
            if (e['time_start'][1]<10) {
                t+='0'+e['time_start'][1]
            } else {
                t+=+e['time_start'][1]            
            }
            if (pm) {
                t+=' pm'
            } else {
                t+=' am'
            }
            t+=' - ';
            pm=false;
            if (e['time_end'][0]>=12) {        
                pm=true;
            }        
            if (e['time_end'][0]>12) {
                t+=e['time_end'][0]-12;
            } else {
                t+=e['time_end'][0];
            }
            t+=':';
            if (e['time_end'][1]<10) {
                t+='0'+e['time_end'][1]
            } else {
                t+=+e['time_end'][1]            
            }
            if (pm) {
                t+=' pm'
            } else {
                t+=' am'
            }
            e['time_string']=t;
        } else {
            e['time_string']='';
        }
    }
    return data;
}

U=$('upcoming');

function Draw(ev,parity) {
    V.insert('<div class="'+parity+' uPARENT '+ev['event_type']+'" id="u'+ID+'"></div>')
    E=$('u'+ID)
    E.insert('<div class="uDATE">'+ev['date']+'</div>')
    if (ev['time_string']!='') {
        E.insert('<div class="uTIME">'+ev['time_string']+'</div>')
    }
    E.insert('<div class="uLOCATION">'+ev['location']+'</div>')
    if (ev['link']) {
        E.insert('<div class="uEVENT"><a href="'+ev['link']+'">'+ev['event']+'</a></div>')
    } else {
        E.insert('<div class="uEVENT">'+ev['event']+'</div>')
    }
    if (d['comments'].strip()!='') {
        E.insert('<div class="uCOMMENT">'+ev['comments']+'</div>')
    }            
    ID++;
}
var ID=0;
var D=null;
var V=null;
function Upcoming(response) {
    ID=0;
    D=CleanData(response.responseJSON);
    if (D.length==0) {
       U.update('<div class="CENTER">There are currently no upcoming events.</div>')                                        
       return;
    }
    if (UPCOMING=='ALL') {
        s='<div class="KEYS"><div class="LGkey"><input type="checkbox" name="view" id="checkLG" checked=True value="LG">Large Group</div>'
        s+='<div class="SGkey"><input type="checkbox" name="view" id="checkSG" value="SG">Small Group</div>'
        s+='<div class="SPECIALkey"><input type="checkbox" name="view" id="checkSP" checked=True value="SP">Special Event</div></div>'
        U.update(s)
        $('checkLG').observe('click',Update)
        $('checkSG').observe('click',Update)
        $('checkSP').observe('click',Update)
        U.insert('<div id="upcomingView"></div>')
        V=$('upcomingView')
        Update(null);
    } else {
        U.update('<div id="upcomingView"></div>')        
        V=$('upcomingView')
        SimpleUpdate(null);        
    }
    
    Resize(null);
}

function SimpleUpdate(event) {
    V.update('')
    N=0;
    for (var i=0;i<D.length;i++) {
        d=D[i]
        if (d['event_type']!=UPCOMING) {
            continue;
        }
        if (N%2) {
            tr_class="uODD"
        } else {
            tr_class="uEVEN"                    
        }
        Draw(d,tr_class);
        N++;
    }
    if (N==0) {
        if (UPCOMING=='LG') {
            s='Large Group'
        }
        if (UPCOMING=='SG') {
            s='Small Group'
        }
        if (UPCOMING=='special') {
            s='special'
        }   
        s_final='There are currently no upcoming '+s+' events.'
        V.update('<div class="CENTER">'+s_final+' </div>')
    }
    Resize(null);
    return;    
}

function Update(event) {
    V.update('')
    search=[]
    if ($('checkLG').checked) {
        search.push('LG')
    }
    if ($('checkSG').checked) {
        search.push('SG')
    }
    if ($('checkSP').checked) {
        search.push('special')
    }
    N=0;
    for (var i=0;i<D.length;i++) {
        d=D[i]
        if (search.indexOf(d['event_type'])==-1) {
            continue;
        }
        if (N%2) {
            tr_class="uODD"
        } else {
            tr_class="uEVEN"                    
        }
        Draw(d,tr_class);
        N++;
    }
    if (N==0) {
        s=[]
        if ($('checkLG').checked) {
            s.push('Large Group')
        }
        if ($('checkSG').checked) {
            s.push('Small Group')
        }
        if ($('checkSP').checked) {
            s.push('Special')
        }   
        if (s.length==0) {
            V.update('<div class="CENTER" style="margin-top:10px;">Plase choose an event type.</div>')        
        } else {
            s_final='There are currently no upcoming '
            var first=true;
            for (var i=0;i<s.length;i++) {
                if (first==true) {
                    s_final+=s[i];
                    first=false;
                } else {
                    if (i==s.length-1) {
                        s_final+=' or '+s[i];
                    } else {
                        s_final+=', '+s[i];
                    }
                }
            }
            s_final+=' events.'
            V.update('<div class="CENTER">'+s_final+' </div>')        
        }
    }
    Resize(null);
    return;    
}
test=new Ajax.Request(PATH+'cgi-bin/calendarPublic.cgi/getUpcoming',{onSuccess:Upcoming,parameters:{'JSON':Object.toJSON(null)}})