var itpresvallist = [
	{'id':'mccain', 'styles':{ 'text-align':'left' }}, 
	{'id':'obama', 'styles':{ 'text-align':'right' }}
];

var itpresdelay = 60000;
var itpresurl = "/indepth/uselections2008/xml/map.xml";
var itpreslasttxt = "";

var itpresecvotes = 538;
var itpresecvotes_win = 270;

var ratio; // scaling ratio for units -> pixels

window.addEvent( 'domready', function() {
	itpressetupgraph( itpresvallist );
	itpresgetdata();
});

function itpresgetdata() {
  var request = new XHR({
    method: 'get',
    onSuccess: function(txt, xml) {

      if (itpreslasttxt == txt) {
				itpresloaded();
        window.setTimeout("itpresgetdata();", itpresdelay);
        return;
      }
      itpreslasttxt = txt;

      var xmldoc = xml.documentElement;
      var statelist = xmldoc.getElementsByTagName('state');
			var ecvtotal = {'mccain': 0, 'obama': 0};
      for(var i=0; i<statelist.length; i++) {
				var record = {};

				var statenamelist = statelist[i].getElementsByTagName('name');
      	var candidatelist = statelist[i].getElementsByTagName('candidate');

      	for(var j=0; j<candidatelist.length; j++) {
					ecvtotal[ candidatelist[j].getAttribute('name') ] += parseInt( 
						candidatelist[j].getAttribute('collegevote')
					);
				}
      }

			itpresvallist.each( function( item, i ) {
				var el = $( item.id );
				item.count = parseInt( ecvtotal[ item.id ] );
				el.setText( '' );
				new Fx.Style(el, 'width' ).start( 0, item.count * ratio ).chain(
					//function() {el.setText( item.count );}
					function() {$( item.id + "_ecvotes" ).setText( item.count );}
				);
			});

			itpresloaded();
      window.setTimeout("itpresgetdata();", itpresdelay);
    }
  });

	// Fade graph, show loading throbber and request XML	
	$('loading').setStyle( 'display', 'block' );
	new Fx.Style($('bar-chart-bars'), 'opacity' ).start( 0.2 ).chain( function() {
		new Fx.Style($('loading'), 'opacity').start( 1 ).chain( function() {
			request.send( itpresurl + "?ts=" + (new Date()).getTime() );
		});
	});
}

function itpressetupgraph (itpresvallist) {
	var gw = $('bar-chart');
  var gwidth = gw.getStyle( 'width' ).toInt();
  var gheight = gw.getStyle( 'height' ).toInt();

	//ratio = ( gwidth > itpresecvotes ? itpresecvotes / gwidth : gwidth / itpresecvotes );
	ratio = gwidth / itpresecvotes;

  // Draw the line at 270
  $('box270').setStyle( 'left'	, itpresecvotes_win * ratio + 2 );
  $('box270').setOpacity( 1 );

  // Center the loading icon
  var loading = $('loading');
  var lwidth = loading.getStyle( 'width' ).toInt();
  var lheight = loading.getStyle( 'height' ).toInt();

  loading.setStyle( 'top', (gheight/2) - (lheight));
  loading.setStyle( 'left', (gwidth/2) - (lwidth/2));

	itpresvallist.each( function (item, i) { // Add the bars
		new Element('div',
			{ 'id': item.id, 'class': 'bar', 'styles': item.styles }
		).injectInside( $('bar-chart-bars') );
	});
}

function itpresloaded() {
	new Fx.Style($('loading'), 'opacity').start( 0 );
	new Fx.Style($('bar-chart-bars'), 'opacity').start( 1 );
}
