function Image(id, is_owner, domain, filepath, filetype, width, height){
  this.id=id;
  this.is_owner=is_owner;
  this.domain=domain;
  this.filepath=filepath;
  this.filetype=filetype;
  this.width=width;
  this.height=height;
  this.src='/images/'+this.filepath+'.'+this.filetype;
  this.thumb='/thumbs/'+this.filepath+'.'+this.filetype;
  this.choice=null;
  this.choices=[];
  this.results=[];
  this.poster=null;
  this.voted=false;
}

function image_title(image){
  var title='#'+image.id+': ';
  if(image.domain){
    title+=subdomain_prompts[image.domain];
  }else{
    title+=root_prompt;
  }
  return title;
}

function Result(choice, score){
  this.choice=choice;
  this.score=score;
  this.percent=Math.round(score*100.0);
}

function Result_to_html(result, container){
  var r=document.createElement('div');
  r.appendChild(document.createTextNode(result.choice));
  var pc=document.createElement('div');
  pc.className='progress-box';
  var pb=document.createElement('div');
  pb.className='progress-bar';
  pb.style.width=result.percent+'%';
  pc.appendChild(pb);
  r.appendChild(pc);
  r.title=result.percent+'%';
  container.appendChild(r);
}

function Choices_from_xml(image, image_xml){
  var choices=image_xml.getElementsByTagName('choices').item(0).getElementsByTagName('choice');
  for(var i=0;i<choices.length;i++){
    image.choices.push(innerTextContent(choices.item(i)));
  }
}

function Results_from_xml(image, results){
  results=results.getElementsByTagName('result');
  for(var i=0;i<results.length;i++){
    var r=results.item(i);
    image.results.push(new Result(innerTextContent(r), r.getAttribute('score')));
  }
}

function Image_from_xml(image_xml){
  var sd;
  if(image_xml.getElementsByTagName('domain').length){
    sd=innerTextContent(image_xml.getElementsByTagName('domain').item(0));
  }
  var io;
  if(image_xml.getElementsByTagName('is_owner').length){
    io=innerTextContent(image_xml.getElementsByTagName('is_owner').item(0))==1;
  }
  var image = new Image(image_xml.getAttribute('id'), io, sd,
			innerTextContent(image_xml.getElementsByTagName('filepath').item(0)),
			innerTextContent(image_xml.getElementsByTagName('filetype').item(0)),
			innerTextContent(image_xml.getElementsByTagName('width').item(0)),
			innerTextContent(image_xml.getElementsByTagName('height').item(0))
			);
  if(image_xml.getElementsByTagName('poster').length){
    image.poster=new User(image_xml.getElementsByTagName('poster').item(0));
  }
  if(image_xml.getElementsByTagName('choices').length){
    Choices_from_xml(image, image_xml);
  }
  if(image_xml.getElementsByTagName('results').length){
    Results_from_xml(image, image_xml.getElementsByTagName('results').item(0));
    image.voted=true;
  }
  return image;
}
