	function convertDate(date)
	{
		var dateBits = date.split('-');
		var monthname = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

		
		var startDate = monthname[parseInt(dateBits[1],10)-1] + " " + dateBits[2] + ", " + dateBits[0];

		// var startDate = dateBits[1] + "/" + dateBits[0];
		return startDate;
	}




          RavelryFO = function() {
            var progressData = null;
            
            // Dollar and Dollar E convenience
            var $ = function(id) { return document.getElementById(id); };
        
            var $E = function(data) {
                var el;


                if ('string' == typeof data)
		{
			// if we find HTML...
			if ( data.match("\u003C") )
			{
				//document.write(data);

				el = document.createElement('div');
				el.className = 'rav_notes';
				el.innerHTML = data;

				//document.write("done");

			}
			else
			{	
				el = document.createTextNode(data);
			}
                } else {
                  el = document.createElement(data.tag);
                  delete(data.tag);
                  if ('undefined' != typeof data.children) {
                    for (var i=0, child=null; 'undefined' != typeof (child=data.children[i]); i++) { if (child) { el.appendChild($E(child)); } }
                    delete(data.children);
                  }
                  for (attr in data) { 
                    if (attr == 'style') {
                      for (s in data[attr]) {
                        el.style[s] =  data[attr][s];
                      } 
                    } else if (data[attr]) {
                      el[attr]=data[attr]; 
                    }
                  }
                }
                return el;
            };
            
            return {
              progressReceived: function(data) {
                progressData = data;
              },
        
              /*
                Allowed options are: color, width, height, photos (true/false), 
                projects (list of permalinks for specific projects). For example:
                drawProgressBars({color: 'red', width: 200, height: 20});
              */
              drawProgressBars: function(options) {
                if (!progressData) return;
                
                if (!options) options = {};
                if ('number' == typeof options.height) options.height += 'px';
                if (!options.height) options.height = '1.3em';
                if (!options.width) options.width = 100;
                if (!options.color) options.color = 'lightgreen';
                if (!options.container) options.container = 'rav_progress_bars';
                
                var container = $(options.container);
                if (!container) {
                  // using unicode so that Blogger doesn't get cranky 
                  document.write("\u003cdiv id='" + options.container + "'\u003e\u003c/div\u003e");
                  container = $(options.container);
                }


		/* this bit from Casey here: http://www.frecklegirl.com/blog/ravelry-project-gallery/ */

  		var projectsByDate = {};
                var projectDates = [];
                for (var i=0; i < progressData.projects.length; i++) {
                  var project = progressData.projects[i];
                  var date = project.completed;
                  if (!date) date = "";

		  // drop projects that were not completed in the specified year
		  if (options.year)
		  {
			if (project.completed && (project.completed.indexOf(options.year) != 0) )
			{
				continue;
			}
		  }


                  if (!projectsByDate[date]) {
                    projectsByDate[date] = new Array();
                    projectDates.push(date);
                  } 
                  projectsByDate[date].push(project);
                }

                projectDates.sort().reverse();
                var selectedProjects = [];
                for (var i=0; i < projectDates.length; i++) {
                  var currentDate = projectsByDate[projectDates[i]];
                  for (var j=0; j < currentDate.length; j++) {
                    selectedProjects.push(currentDate[j]);
                  }
                } 

                /* var selectedProjects = progressData.projects;
                if (options.projects) {
                  var projectsById = new Object();
                  for (var i=0; i < selectedProjects.length; i++) {
                    projectsById[selectedProjects[i].permalink] = selectedProjects[i];
                  }
                  selectedProjects = new Array();
                  for (var i=0; i < options.projects.length; i++) {
                    var project = projectsById[options.projects[i]];
                    if (project) {
                      selectedProjects.push(project);
                    }
                  }
                } */
                
                for (var i=0; i < selectedProjects.length; i++) {
                  var project = selectedProjects[i];

                  var filledStyle = { width: Math.round((project.progress/100) * options.width) + 'px', height: options.height, backgroundColor: options.color};
                  var barStyle = { width: (options.width) + 'px', height: options.height};
                  var className = 'rav_project_fo';

                  var photo = null;
                  if (options.photos && project.thumbnail) {
                    className += ' rav_project_with_photos';
                    photo = { tag: 'a', className: 'rav_photo_link', href: project.url, title: project.name, children: [
                        {tag: 'img', src: project.thumbnail.src }
                      ]
                    };
                  }


                  var title = null;
                  if (options.title != false) {
                    // title = { tag: 'a', className: 'rav_title', href: project.url, children: [ project.name] };
                       title = { tag: 'div', className: 'rav_pattern_details', children: [ 'Project: ',
			{ tag: 'a', href: project.url, children: [project.name] }
                          ]
                      };
                  }

		var pattern = null;
                if (project.pattern && project.pattern.designer) {
                       pattern = { tag: 'div', className: 'rav_pattern_details', children: [ 'Pattern: ',
                          { tag: 'a', href: project.pattern.url, children: [project.pattern.name], title: 'Add ' + project.pattern.name + ' to Queue'}, ' by ',
			{ tag: 'a', href: project.pattern.designer.url, children: [project.pattern.designer.name] }
                          ]
                      };
                  }
		else { pattern = { tag: 'div', className: 'rav_pattern_details', children: ['Pattern: ---']}; }

		var started = null;
		if (project.started)
		{
			//convert date to mm/yyyy
                        var formattedStartDate = convertDate(project.started);
			started = { tag: 'div', className: 'rav_started', children: ['Started: ' + formattedStartDate] };
		}

		var completed = null;
		if (project.completed)
		{
			//convert date to mm/yyyy
                        var formattedCompleteDate = convertDate(project.completed);
			completed = { tag: 'div', className: 'rav_completed', children: ['Completed: ' + formattedCompleteDate] };
		}

		var madefor = null;
                if (project.madeFor) {
                       madefor = { tag: 'div', className: 'rav_pattern_details', children: [ 'Made for: ' + project.madeFor] };
                  }
		/* else { pattern = { tag: 'div', className: 'rav_pattern_details', children: ['Pattern: ---']}; } */

		var size = null;
                if (project.size) {
                       size = { tag: 'div', className: 'rav_pattern_details', children: [ 'Size: ' + project.size] };
                  }
		/* else { pattern = { tag: 'div', className: 'rav_pattern_details', children: ['Pattern: ---']}; } */


		 var yarn = null;
                 if (project.yarns[0]) {
                       yarn = { tag: 'div', className: 'rav_pattern_details', children: [ 'Yarn: ',
                          { tag: 'a', href: project.yarns[0].url, children: [project.yarns[0].brand, ' ', project.yarns[0].name] }
                          ]
                      };
                  }

		var favs = null;
                  if (project.favorited > 0)
                  {
                   favs = { tag: 'div', className: 'rav_favs', children: [
                    { tag: 'a', href: project.url + '/comments', children: [
                        { tag: 'img', src: '/images/ravelry-heart.png', title: project.favorited + ' fave(s)' }] 
                        }, ' ' + project.favorited]
                    };
                  }

		var comments = null;
                  if (project.comments > 0)
                  {
                   comments = { tag: 'div', className: 'rav_comments', children: [
                    { tag: 'a', href: project.url + '/comments', children: [
                        { tag: 'img', src: '/images/ravelry-comments.png', title: project.comments + ' comment(s)' }] 
                        }, ' ' + project.comments]
                    };
                  }

		var notes = null;
                  if (project.notes)
                  {

                   //notes = { tag: 'div', className: 'rav_pattern_details', children: [ 'Notes: ' + project.notes] };
                   notes = "<b>Notes:</b>" + project.notes;
                  }


		/* container.appendChild($E({
                tag: 'div',
                className: className,
                children: [ title,
                { tag: 'div', className: 'rav_progress_bar_wrapper', style: barStyle, children: [
                  { tag: 'div', className: 'rav_progress_bar', style: barStyle, children: [
                    {tag: 'div', className: 'rav_progress_filled', style: filledStyle},
                      {tag: 'div', className: 'rav_progress_text', style: barStyle, 
                        children: [ project.progress + '%' ]}
                    ]}
                  ]}, photo, started, favs, comments, pattern, yarn
                ]
                })); */

		container.appendChild($E({
                tag: 'div',
                className: className,
                children: [ photo, favs, comments, title, pattern, yarn, started, completed, madefor, size, notes]
                }));
                    
		//document.write(project.notes);

                }
              }
            }
          }();
        
