       	  //based on rubbishknitter date formatter
       	  function convertDate(date) {
         	 var dateBits = date.split('-');
             return dateBits ;
          }
         
          RavelryThing = 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) {
                  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. 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 = '#1c1100';
                if (!options.container) options.container = 'rav_progress_bars';
                
                var container = $(options.container);
                if (!container) {
                  document.write("<div id='" + options.container + "'></div>");
                  container = $(options.container);
                }
                
                var selectedProjects = progressData.projects;
                if (options.projects) {
                  // user has selected individual 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);
                    }
                  }
                }
                
               //Divide into finished and in-progress
                var finished = new Array();
                var inProgress = new Array();
                for (var i=0; i <selectedProjects.length; i++){
                  	if (selectedProjects[i].status == "finished") {
                  		 finished.push(selectedProjects[i]);
                    } else if(selectedProjects[i].status == "in-progress") {
                  		 inProgress.push(selectedProjects[i]);
                 	}
                 }
                 
				function myDateComparison(a,b){ // for dates
					var na = convertDate(a.started);
					var nb = convertDate(b.started);
					var aF = new Date(na[0], na[1], na[2]);
					var bF = new Date(nb[0], nb[1], nb[2]);
					var ret;
					if (aF >= bF) {
						ret = -1;
					} else {
						ret = 1;
					}
					return ret;
				}
				function myFavComparison(a,b) { // for favorites
					var aF = a.favorited;
					var bF = b.favorited;
					var ret = aF-bF;
					if (ret == 0) {
						ret = myDateComparison(a,b);
						ret *= -1;
					}
					return ret;
				}
				
                selectedProjects.sort(myDateComparison);
               
                 options.container = 'myGallery';
                 var container = $(options.container);
                if (!container) {
                  document.write("<div id='" + options.container + "'></div>");
                  container = $(options.container);
                }
                
                    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 = 'imageElement'; //name changed to match JD Gallery
						
						var photot = null;
						var photof = null;
						var photol = null;
						if (options.photos && project.thumbnail) {
						  photot = {tag: 'img', src: project.thumbnail.src, className: 'thumbnail'};
						  photof = {tag: 'img', src: project.thumbnail.src, className: 'full'};
						  photol = {tag: 'a', className: 'open', href: project.thumbnail.flickrUrl, title: 'Open in Flickr'};
						}
						
						var title = null;
						if (options.title != false) {
						  var myTitle = project.name.substring(0,14);
						  title = { tag: 'h3', children: [{tag: 'a', className: 'rav_title', href: project.url, title: 'View details', children: [myTitle+"..."]}]};
						}
						
						var favs = null;
						  if (project.favorited > 0) {
								favs = 	{ tag: 'a', href: project.url + '/comments', title: "Favorited in Ravelry", children: [
								{ tag: 'img', src: '/ravgallery/css/img/fav.gif' 
								 }, ' ' + project.favorited + " "]
								};
						   }
						   
						var comms = null;
						  if (project.comments > 0) {
								comms = { tag: 'a', href: project.url + '/comments', title: "Commented in Ravelry", children: [
								{ tag: 'img', src: '/ravgallery/css/img/comm.gif' 
								 }, ' ' + project.comments]
								};
						   }
						   
						var madeFor = null;
						if (project.madeFor != "") {
							madeFor =  {tag: 'span', children: [{tag: 'em', children: ["Made For: "]}, project.madeFor]};
						}
						
						function formatDate(myDate) {
							var dateBits = myDate.split('-');
							var ret = dateBits[1] + "/" + dateBits[0]
							return ret;
						}
						var started = null;
						started = {tag: 'span', children: ["Start: ", formatDate(project.started)]};
						
						var pattern = null;
						var designer = null;
						var pattURL = null;
						var patternInfo = null;
						if (project.pattern != null) {
							pattern = project.pattern.name;
							designer = project.pattern.designer.name;
							pattURL = project.pattern.url;
							if (pattURL == null) pattURL = project.url;
							patternInfo = {tag: 'span', children: [{tag: 'em', children: ["Pattern: "]}, {tag: 'a', href: pattURL, title: 'View details', children:[pattern]}, " by ", designer]};
						}
						
						var yarn = null;
						if (project.yarns[0]) {
							 yarn = { tag: 'span', children: [{tag: 'em', children: ["Yarn: "]},
								{ tag: 'a', href: project.yarns[0].url, title: 'View details', children: [project.yarns[0].brand, ' ', project.yarns[0].name] }
								]
							};
						}
						
						
						if (project.status == "finished" && project.thumbnail != null) {
						 
						 var completed = null;
						 completed = {tag: 'span', children: ["Finish: ", formatDate(project.completed)]};
						 
						 container.appendChild($E({
							tag: 'div',
							className: className,
							children: [ title, 
							  { tag: 'p', children: [{ tag: 'span', className: 'leftItems', children: [
								 started, completed
								 ]}
							  ]}, photol, photof, photot
							]
						  }));
						
						} else if(project.thumbnail != null){
						
						 container.appendChild($E({
						   tag: 'div',
						   className: className,
						   children: [ title, 
							 { tag: 'p', children: [{tag:'span', className: 'leftItems', children: [
								{ tag: 'span', className: 'rav_progress_bar_wrapper', style: barStyle, children: [
									{ tag: 'span', className: 'rav_progress_bar', style: barStyle, children: [
										{tag: 'span', className: 'rav_progress_filled', style: filledStyle},
										{tag: 'span', className: 'rav_progress_text', style: barStyle, children: [ project.progress + '%' ]}
									]}
								 ]},
								started
							   ]}
							 ]}, photol, photof, photot
						   ]
						 }));
						}
				  }
              }
            }
          }();
        
