	//based on rubbishknitter date formatter
function convertDate(date) {
   var dateBits = date.split('-');
   return dateBits ;
}
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;
}

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, 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 = '#C11675';
	  if (!options.container) options.container = 'myGallery';
	  
	  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);
	  }
	  
	  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);
		  }
		}
	  }
	  
	  selectedProjects.sort(myDateComparison);

	  
	  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.medium, className: 'full'};
		  photol = {tag: 'a', className: 'open', href: project.thumbnail.flickrUrl, title: 'Abrir en Flickr'};
		}
		
		var title = null;
		if (options.title != false) {
		  title = { tag: 'h3', children: [{tag: 'a', className: 'rav_title', href: project.url, title: 'Ver detalles', children: [project.name]}]};
		}
		
		var favs = null;
		  if (project.favorited > 0) {
				favs = 	{ tag: 'a', href: project.url + '/comments', title: "Marcado como favorito en 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: "Comentado en 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: ["Hecho para: "]}, project.madeFor]};
		}
		
		function formatDate(myDate) {
			var dateBits = myDate.split('-');
            var ret = dateBits[1] + "/" + dateBits[0]
			return ret;
		}
		var started = null;
		started = {tag: 'span', children: [{tag: 'em', children: ["Comenzado: "]}, 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: ["Patr\363n: "]}, {tag: 'a', href: pattURL, title: 'Ver detalles', children:[pattern]}, " por ", designer]};
		}
		
		var yarn = null;
		if (project.yarns[0]) {
			 yarn = { tag: 'span', children: [{tag: 'em', children: ["Estambre: "]},
				{ tag: 'a', href: project.yarns[0].url, title: 'Ver detalles', children: [project.yarns[0].brand, ' ', project.yarns[0].name] }
				]
			};
		}
		
		
		if (project.status == "finished" && project.thumbnail != null) {
		 
		 var completed = null;
		 completed = {tag: 'span', children: [{tag: 'em', children: ["Terminado: "]}, formatDate(project.completed)]};
		 
		 container.appendChild($E({
			tag: 'div',
			className: className,
			children: [ title, 
			  { tag: 'p', children: [{ tag: 'span', className: 'leftItems', children: [
				 started, completed , 
				 {tag: 'span', children: [favs, comms]}
				 ]},
				 { tag: 'span', className: 'rightItems', children: [
				 madeFor, patternInfo, yarn
				 ]}
			  ]}, 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, 
			 	{tag: 'span', children: [favs, comms]}
			   ]},
				 { tag: 'span', className: 'rightItems', children: [
				 	madeFor, patternInfo, yarn
				 ]}
			 ]}, photol, photof, photot
		   ]
		 }));
		}
	  }
	}
  }
}();

