
    var Cyear=(new Date()).getFullYear();
    var Cmonth=(new Date()).getMonth();
    var seldate=0;
    var selcell="";
    var events=new Array();
    var locations=new Array();
    var loc=0;
    var tags=new Array();
    var tag=0;
    var brands=new Array();
    var isloaded=0;
    var months=["January","February","March","April","May","June","July","August","September","October","November","December"];


    function makeEventDiv(e) {
        var repeats={0:'None',1:'daily',2:'weekly',3:'monthly'};
        var ev=events[e.slice(5)];
        ediv=Element('div',{'id':'evdiv','class':'tmpdiv'});
        ediv.appendChild(Element('h2').update(ev['title']));
        ediv.appendChild(Element('h3').update(ev['date']));
        if (ev['description']!='') {
            //ediv.appendChild(Element('p').appendChild(Element('pre').update(ev['description'])));
            ediv.appendChild(Element('p').update(ev['description']));
        }
	if (ev['starttime']!=null && ev['starttime']!="") {
	    ediv.appendChild(Element('p').update('Starts: '+ev['starttime']));
	}
	if (ev['endtime']!=null && ev['endtime']!="") {
	    ediv.appendChild(Element('p').update('Ends: '+ev['endtime']));
	}
        if (ev['image']!="") {
            fname=ev['image'].slice(ev['image'].lastIndexOf("/"));
            fname="media/"+fname;
            ediv.appendChild(Element('img', {src:fname, width:300, height:200}));
        }
        if (ev['link']!='') {
            ediv.appendChild(Element('p').update('Click <a target="_blank" href="'+ev['link']+'">here</a> for more information'));
        }
        /*if (ev['locations'].length>0) {
            if (ev['locations'].length==1) {
                locs="<table><tr><th>Location:<th><td>";
            } else {
                locs="<table><tr><th>Locations:</th><td>";
            }
            ev['locations'].each(function(item) {
                    loc=locations[item];
                    if (loc['link']!='') {
                    locs+='<a target="_blank" href="'+loc['link']+'">'+loc['name']+'</a><br>';
                        } else {
                        locs+=loc['name']+'<br>';
                        }});
            locs+="</td></tr></table>"
            ediv.appendChild(Element('p').update(locs));
        }*/
        if (ev['repeat']!=0) {
            ediv.appendChild(Element('p').update('Repeats '+repeats[ev['repeat']]));
        }
        //ediv.appendChild(Element('p').update(Object.inspect(Object.keys(ev))));
        //ediv.appendChild(Element('p').update(Object.inspect(Object.values(ev))));
        cb=Element('input',{'type':'button','value':'Close'});
        cb.observe('click',lb.end.bind(lb));
        ediv.appendChild(cb);
        return ediv;
    }



    function drawCal(events, year, month, tabbod) {
        if (!year) year=Cyear;
        if (!month) month=Cmonth;
        var d=new Date(year, month);
	var today=new Date();
	$('calmonth').update(months[month].toUpperCase());
	$('calyear').update(year);

        if (!events) events=Object();
        var evnum=0;
        if (!tabbod) tabbod=$('calbody');
        var rows=tabbod.select('tr.calrow');
        for (var i=0; i<rows.length; i++) {
            rows[i].remove();
        }
        var row=Element('tr',{'class':'calrow'});
	row.appendChild(Element('td',{"class":"spacercell"}).update("&nbsp;"));
        var rownum=0;
        var day=0;
        for (var weekday=0 ; weekday<d.getDay();weekday++) {
            row.appendChild(Element('td',{'id':'cell0.'+weekday,'class':'emptycell calcell'}));
            day++;
        }

        for (var monthday = 1 ; monthday < 32 ; monthday++) {
            d=new Date(year, month, monthday);
            if (d.getMonth()!=month) {
                break;
            }
            dstring=year+"-";
            if (month<9) {
                dstring+="0"+(month+1)+"-";
            } else {
                dstring+=(month+1)+"-";
            }
            if (monthday<10) {
                dstring+="0"+monthday;
            } else {
                dstring+=""+monthday;
            }
            newcell=Element('td',{'id':'cell'+rownum+'.'+day,'class':'calcell datecell unselectedcell'});
            //newcell.observe('click',selectcell.curry('cell'+rownum+'.'+day,monthday));
	    if (d.getMonth()==today.getMonth() && d.getDate()==today.getDate() && d.getYear()==today.getYear()) {
	        newcell.addClassName('todaycell');
            }
            datebox=Element('div',{'class':'date'}).update(monthday);
	    newcell.appendChild(datebox);
            celldiv=Element('div',{'class':'celldiv'});
            while (evnum<events.length && events[evnum]['date']==dstring) {
		evtt="<b>"+events[evnum]['title']+"</b>";
		if (events[evnum]['description']!="") {
		    evtt+="<div>"+events[evnum]['description']+"</div>";
	        }
		evtt=evtt.replace("'","\\'");
		evtt=evtt.replace(/\r\n/g,"<br>");
		evtt=evtt.replace(/\n/g,"<br>");
		evtt=evtt.replace(/\r/g,"<br>");
                evp=Element('p',{'class':'eventp','id':'event'+evnum }).update(events[evnum]['title']);
		//evp.observe('click',showEvent.bindAsEventListener(evp));
		evp.observe('mouseover',ddrivetip.bindAsEventListener("",evtt,'white',300));
		evp.observe('mouseout',hideddrivetip);
		celldiv.appendChild(evp);
                evnum++;
            }
            newcell.appendChild(celldiv);
	    //newcell.makePositioned();
	    newcell.appendChild(Element('div',{'class':'clear'}));
            row.appendChild(newcell);
            day++;
            if (day==7) {
                day=0;
		row.appendChild(Element('td',{"class":"spacercell"}).update("&nbsp;"));
                tabbod.appendChild(row);
                rownum++;
                row=Element('tr',{"class":"calrow"});
		row.appendChild(Element('td',{"class":"spacercell"}).update("&nbsp;"));
            }
        }
        if (day>0) {
            while (day<7) {
                row.appendChild(Element('td',{'id':'cell'+rownum+'.'+day,'class':'emptycell calcell'}));
                day++;
            }
	    row.appendChild(Element('td',{"class":"spacercell"}).update("&nbsp;"));
	    row.addClassName('bottomrow');
	    
            tabbod.appendChild(row);
        }
        Lightbox.updateEventList();
    };

    function loadedMonth(transport) {
        events=[];
        for (var i=0;i<transport.responseJSON.length;i++) {
            events[i]=transport.responseJSON[i]['fields'];
            events[i]['id']=transport.responseJSON[i]['pk'];
        }

        seldate=0;
        selcell="";
        drawCal(events);
    }

    function loadMonth() {
    	var url='/index.php/getevents?year='+Cyear+'&month='+(Cmonth+1)+'&location='+loc+'&tag='+tag;
        new Ajax.Request(url,{
            method: 'get',
            onSuccess: loadedMonth
            });
    }

    function setTag(newtag) {
    	tag=newtag;
	loadMonth();
    }

    function setLocation(newloc) {
    	loc=newloc;
      b=brands[locations[loc]['brand']];
      //$('logo').writeAttribute('src','/cal/media/'+b['logo']);
      $('sponsortext').update(locations[loc]['sponsortext']);
      //$('sponsorlink').writeAttribute('href',locations[loc]['sponsorlink']);
      //fname=locations[loc]['sponsorimage'].slice(locations[loc]['sponsorimage'].lastIndexOf("/"));
      //$('sponsorimage').writeAttribute('src','/cal/media/'+fname);
	loadMonth();
    }

    function prevMonth() {
        Cmonth--;
        if (Cmonth<0) {
            Cmonth=11;
            Cyear--;
        }
        loadMonth();
    }

    function nextMonth() {
        Cmonth++;
        if (Cmonth>11) {
            Cmonth=0;
            Cyear++;
        }
        loadMonth();
    }

    function loadTags() {
        new Ajax.Request('/index.php/gettags',
                {method: 'get',
                  onSuccess: function(transport) {
                    tags=[];
                    for (var i=0;i<transport.responseJSON.length;i++) {
                        newtag=transport.responseJSON[i];
                        tags[newtag['pk']]=newtag['fields'];
                        o=Element('option',{'value':newtag['pk']}).update(newtag['fields']['tag']);
                        $('id_tagsel').appendChild(o);
                    }
                  }
                });
    }
    function loadLocations() {
        new Ajax.Request('/index.php/getlocations',
                {method: 'get',
                onSuccess: function(transport) {
                    locations=[];
                    for (var i=0;i<transport.responseJSON.length;i++) {
                        locat=transport.responseJSON[i];
                        locations[locat['pk']]=locat['fields'];
                    }
                    isloaded++;
                    if (isloaded==2) {
                      setLocation(loc);
                    }
                    }
                    });
    }

    function loadBrands() {
        new Ajax.Request('/index.php/getbrands',
                {method: 'get',
                onSuccess: function(transport) {
                    brands=[];
                    for (var i=0;i<transport.responseJSON.length;i++) {
                        b=transport.responseJSON[i];
                        brands[b['pk']]=b['fields'];
                    }
                    isloaded++;
                    if (isloaded==2) {
                      setLocation(loc);
                    }
                    }
                    });
    }

    function loadStuff() {
        loadTags();
        loadLocations();
        loadBrands();
    }

document.observe("dom:loaded", function() {
loadStuff();
});
