window.VBC = function(){
    var doc = document;
    var groupElement;
    var groupsUrl = "http://spreadsheets.google.com/feeds/list/t1oA__z0yxekPCsCq6xCcZw/od6/public/basic?alt=json-in-script&callback=?";
    
    function createObject(objStr){
        var obj = {};
        var splitter = objStr.split(/\:\s|,\s/);
        for(var i = 0, len = splitter.length; i < len; i++){
            obj[splitter[i]] = splitter[++i];
        };
        return obj;
    }
    
    function createGroupUI(group){
        var div = doc.createElement("div");
        div.className = "vbc-group";
        div.style.borderLeft = "4px solid gray";
        div.style.padding = "5px";
        div.style.margin = "5px";
        div.style.MozBorderRadius = "5px";
        div.style.WebkitBorderRadius = "5px";
        div.innerHTML = [
            "<b>"+group.groupname+"</b><br><br>",
            group.groupdescription || "",
            group.grouplocation ? "Location: " + group.grouplocation : "",
            group.addresstogroup ? " (<a href='http://maps.google.com/maps?q=" + group.addresstogroup + "' target='_blank'>" + group.addresstogroup + "</a>)" : "",
            group.groupleaders ? "<br>Leaders: " + group.groupleaders : "",
            group.grouptime ? "<br>Time: " + group.grouptime : "",
            group.groupstatus ? "<br>Status: " + group.groupstatus : ""
            
        ].join("");
        return div;
    };
    
    function generateUI(groups){
        var frag = doc.createDocumentFragment();
        
        for(var i = 0, len = groups.length; i < len; i++){
            frag.appendChild(createGroupUI(groups[i]));
        }
        
        groupElement.appendChild(frag);
    }
    
    function handleGroupData(data){
        var groups = [];
        var feedEntries = data.feed.entry
        
        for(var i = 0, len = feedEntries.length; i < len; i++){
            var entry = feedEntries[i];
            var group = createObject(entry.content.$t);
            group.groupname = entry.title.$t;
            groups.push(group);
        }
        
        generateUI(groups);
    };
    
    return {
        generateGroupsData: function(element){
            groupElement = doc.getElementById(element);
            jQuery.getJSON(groupsUrl,handleGroupData);
        }
    }
}();
