function infoboxRoll(id) {
	var content = $(id).down('#infobox_content');
	if (content.visible()) {
		Effect.BlindUp('infobox_content');
  	} else {
		Effect.BlindDown('infobox_content');
	}
}

function infoboxClose(id) {
	var box = $(id);
	Effect.BlindUp(id)

	var expiration_date = new Date("January 1, 3000");
	expiration_date = expiration_date.toGMTString();
	document.cookie = "infobox:"+id+"=closed;  expires="+expiration_date+"; path=/";
}

// Unchecking radio buttons in the same matrix column
// Adding rating matrix feature
function rating(radio) {
	var el = $(radio).up('.entry').select('input');
	for (var i=0; el.length > i; i++) {
		if ((el[i] !== null) && (el[i].type == "radio") && (el[i].value == radio.value) && (el[i] != radio)) {
			el[i].checked = false;
		}
	}
}

// Making possible to uncheck radio button
// Use in onClick event
var radio_prev_value = new Array();
function uncheck_radio(radio) {
	if (radio_prev_value[radio.name] == radio.value) {
		radio.checked = false;
		radio_prev_value[radio.name] = null;
	}
	else {
		radio_prev_value[radio.name] = radio.value;
	} 
	return true;
}

var PollMill = {}

PollMill.AnswersMap = Class.create({
	initialize: function(options) {
		this.options  = options;
		this.map      = new google.visualization.GeoMap($(options.container));
		this.codes    = [];
		
    google.visualization.events.addListener(this.map, 'regionClick', this.regionClickListener.bind(this)); 
		google.visualization.events.addListener(this.map, 'zoomOut', this.drawWorldMap.bind(this));

		this.drawWorldMap();
	},
	
	drawWorldMap: function() {
		var $this = this;
		
    new Ajax.Request(this.options.data, {
			method:      'get',
			onComplete:  function(t) {
		    $this.codes = [];
        var json    = t.responseText.evalJSON();

        if (!json.length)
				  return;

				var data = new google.visualization.DataTable();
        
        data.addRows(json.length);	
				data.addColumn('string', 'Country');
        data.addColumn('number', $this.options.answers_label);
        data.addColumn('string', 'HOVER');
				
				for (var i=0; i<json.length; i++) {
					$this.codes.push(json[i][0]);
					data.setValue(i, 0, json[i][0]);
					data.setValue(i, 1, json[i][1]);
					data.setValue(i, 2, json[i][2]);
				}
				
				$this.map.draw(data);
			}
		});    
	},
	
	regionClickListener: function(e) {
		if (!$A(this.codes).include(e['region']))
		  return;
			
		var $this = this;
    
    new Ajax.Request(this.options.data, {
			parameters:  { country: e['region'] },
      method:      'get',
      onComplete:  function(t) {
        var json    = t.responseText.evalJSON();

        if (!json.length)
          return;

        var data = new google.visualization.DataTable();
        
        data.addRows(json.length);  
        data.addColumn('number', 'LATITUDE');
        data.addColumn('number', 'LONGITUDE');
        data.addColumn('number', $this.options.answers_label);
        data.addColumn('string', 'HOVER');
        
        for (var i=0; i<json.length; i++) {
          data.setValue(i, 0, json[i][2]);
          data.setValue(i, 1, json[i][3]);
          data.setValue(i, 2, json[i][1]);
          data.setValue(i, 3, json[i][0]);
        }
				
				var options = {
					region:        e['region'],
					dataMode:      'markers',
					showZoomOut:   true,
					zoomOutLabel:  $this.options.zoom_out_label
				}
        
        $this.map.draw(data, options);
      }
    });
	}
});
