var region_array = new Array();
var current_region_array = new Array();
var region_info = new Array();
var current_state_object;
//var scale = .6;
//var scale = 1;
var label_scale=scale*1.8333;
var state_count = new Array(0,0,0,0,0,0,0,0);
var map_state=new Array();
var obj_array = new Array();
var is_2008 = false;
var is_onload = false;
var r ='';
var poll_id;
var dem_star = '';
var gop_star = '';
var ntu = false;
var use_holding = false;
// If host is same as phantom, keep it that way
var map_full_host = 'https://www.realclearpolitics.com';
if(location.hostname == 'www1.realclearpolitics.com') {
map_full_host = 'http://www1.realclearpolitics.com';
}
function region_object(abbrev){
this.abbr = abbrev;
}
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=500,height=300,left = 340,top = 200');");
}
$(document).ready(function() {
poll_id = $('#poll_id').val();
if(poll_id == '25_map') // 2014 Senate
{
ntu = true;
map_gop_not_up += 2;
dem_star = '*';
}
if(poll_id = '31_map') { // 2016 Senate
ntu = false;
dem_star = '*';
}
if(poll_id = '35_map') { // 2018 Senate
ntu = false;
dem_star = '*';
}
/*if(poll_id == '33_map') // 2016 Governor
{
ntu = true;
}*/
if(poll_id == '26_map') // 2014 Governor
{
ntu = true;
}
if(poll_id == '21_map') // 2012 President
{
ntu = true;
}
//only init if exists
if($('#map_container').length>0){
if(ntu) {
load_current_data(default_file); // init_map called once it's loaded
} else {
init_map();
}
}
$('#map_tool_tip').hover(function(){
$(this).hide();
});
$('#map_splits .state a').click(function(){
var state_object = region_info['ME'].this_object;
var state = region_array['ME'];
//state.attr({ fill: '#000000' });
fill_map_options(0,0,state,state_object);
});
if($('#mymap').hasClass('cyom') /*&& !getQuerystring('map')*/) {
ntu = true;
/*if(!getQuerystring('map')) {
load_data(default_file);
} else {
load_current_data(default_file);
}*/
load_current_data(default_file);
load_data_after_current = true;
}
});
var load_data_after_current = false;
function load_current_data(file) {
console.log('load_current_data');
$.ajax({
url: file+'?callback=?',
dataType: 'jsonp',
jsonpCallback: 'return_map',
cache: false,
success: function(d) {
console.log('success???');
json_2_map_current(d);
if(load_data_after_current) {
load_data(default_file);
load_data_after_current = false;
}
}
});
}
function load_data(file) {
console.log('load_data');
$.ajax({
url: file+'?callback=?',
dataType: 'jsonp',
jsonpCallback: 'return_map',
cache: false,
success: function(d) {
json_2_map(d);
}
});
}
function json_2_map_current(d){
$.each(d.election.race, function(key,val){
if(!(val.region_key in current_region_array)) {
this_key = val.region_key;
if(this_key == 'MECD1') {
this_key = 'ME1';
}else if(this_key == 'MECD2') {
this_key = 'ME2';
}else if(this_key == 'NECD1') {
this_key = 'NE1';
}else if(this_key == 'NECD2') {
this_key = 'NE2';
}else if(this_key == 'NECD3') {
this_key = 'NE3';
}
current_region_array[this_key]=val;
}
});
console.log('json_2_map_current');
console.log(current_region_array);
init_map();
}
function json_2_map(d){
//console.log('d');
//console.log(d);
region_array = new Array();
$.each(d.election.race, function(key,val){
if(!(val.region_key in region_array)) {
this_key = val.region_key;
if(this_key == 'MECD1') {
this_key = 'ME1';
}else if(this_key == 'MECD2') {
this_key = 'ME2';
}else if(this_key == 'NECD1') {
this_key = 'NE1';
}else if(this_key == 'NECD2') {
this_key = 'NE2';
}else if(this_key == 'NECD3') {
this_key = 'NE3';
}
region_array[this_key]=val;
}
/*if(d.election.module_info.year==2012){
current_region_array[val.region_key]=val;
}
if(d.election.module_info.year==2014){
current_region_array[val.region_key]=val;
}*/
});
//console.log('json_2_map');
console.log(region_array);
build_map();
}
function build_map(){
for (var region in paths){
region_info[region]=new region_object(region);
if(map_type!=4){
region_info[region].multiplier = 1;
}
}
//region_info['ME1'] = region_info['ME'];
//region_info['NE1'] = region_info['NE'];
if(map_type!=3){
load_label_coords(label_scale);
}
if(map_type==4){
load_multiplier();
}
if(r!=''){
r.remove();
}
r = Raphael('map_canvas', '100%', '100%'),
attributes = {
fill: '#ddd',
stroke: '#fff',
'stroke-width': 1,
'stroke-linejoin': 'round'
},
arr = new Array();
var i=0;
obj_array = [];
var text_obj_array = new Array();
// Make map responsive
svg_width = 588;
svg_height = 445;
if(svg_width >= svg_height) {
var percent_width = 100;
var percent_height = (svg_height / svg_width) * percent_width;
} else {
var percent_height = 100;
var percent_width = (svg_width / svg_height) * percent_height;
}
r.setViewBox(0, 0, svg_width, svg_height);
r.canvas.setAttribute('preserveAspectRatio', 'xMidYMid meet');
r.canvas.setAttribute('style', '');
r.canvas.setAttribute('class', 'map_svg');
// END responsive
//console.log('region_info');
//console.log(region_info);
for (var region in paths) {
var obj = r.path(paths[region].path).toBack();
region_info[region].this_object=obj;
region_info[region].full_name=paths[region].name;
obj_array[obj.id] = obj;
obj.attr(attributes);
if(typeof region_array[region] !== 'undefined'){
if(use_holding) {
region_info[region].level_id=2;
region_info[region].affiliation_id=parseInt(region_array[region].holding_affiliation_id);
} else {
region_info[region].level_id=parseInt(region_array[region].level_id);
region_info[region].affiliation_id=parseInt(region_array[region].affiliation_id);
}
var info = level_info(parseInt(region_info[region].level_id), parseInt(region_info[region].affiliation_id));
var region_color=info.color;
//console.log('---'+region_info[region].full_name+'---');
//console.log('region_info[region].level_id');
//console.log(region_info[region].level_id);
//console.log('region_info[region].affiliation_id');
//console.log(region_info[region].affiliation_id);
//console.log('region_color1: '+region_color);
if(region_array[region].region_color!=undefined){
region_color=region_array[region].region_color;
}
//console.log('region_color2: '+region_color);
if(region_array[region].pick_up==1 && map_type!=4){
obj.attr({ fill: 'url('+map_full_host+'/images/bg_pickup_'+region_info[region].affiliation_id+'_'+region_info[region].level_id+'.png)', cursor: 'pointer' });
}else{
obj.attr({ fill: region_color, cursor: 'pointer' });
}
if(show_labels==true){
var text_display=region;
/*if(text_display == 'MECD1') {
text_display = 'ME1';
}else if(text_display == 'MECD2') {
text_display = 'ME2';
}else if(text_display == 'NECD1') {
text_display = 'NE1';
}else if(text_display == 'NECD2') {
text_display = 'NE2';
}else if(text_display == 'NECD3') {
text_display = 'NE3';
}*/
if(text_display == 'MN_SENATE_1') {
text_display = 'MN 1';
}else if(text_display == 'MN_SENATE_2') {
text_display = 'MN 2';
}else if(text_display == 'MS_SENATE_1') {
text_display = 'MS 1';
}else if(text_display == 'MS_SENATE_2') {
text_display = 'MS 2';
}
if(show_multiplier==true){
text_display=text_display+'\n'+region_info[region].multiplier;
}
var text_obj = r.text(region_info[region].center_x, region_info[region].center_y, text_display);
text_obj_array[obj.id] = text_obj;
text_obj_array[text_obj.id] = text_obj;
if(region=='ME1' || region=='NE1' || region=='ME2' || region=='NE2' || region=='NE3'){
text_obj.attr({'font-size': '8', 'font-weight': 'bold', fill: '#fff', cursor: 'pointer'});
}else{
text_obj.attr({'font-weight': 'bold', fill: '#fff', cursor: 'pointer'});
}
text_obj.toFront();
}
}
obj.scale(scale,scale, 0, 0);
arr[obj.id] = region;
if(show_labels==true && region_array[region]!=undefined){
arr[text_obj.id] = region;
obj_array[text_obj.id] = obj;
}
var my_group=r.set();
my_group.push(obj);
if(map_type!=3){
my_group.push(text_obj);
}
my_group
.hover(function(event){
var $tooltip_output='';
var $rcp_tooltip_output='';
if(region_array[arr[this.id]]!=undefined){
$tooltip_output+='
';
$tooltip_output+='';
$tooltip_output+='';
$tooltip_output+='
';
if(region_array[arr[this.id]].delegates!=undefined){
$tooltip_output+='';
$tooltip_output+='';
$tooltip_output+='';
$tooltip_output+='
';
}
if(editable==true){
$tooltip_output+='';
$tooltip_output+='';
$tooltip_output+='
';
}
if(region_array[arr[this.id]].status=='held'){
var do_percentages = false;
var vote_total = 0;
$tooltip_output+='';
$tooltip_output+='Candidate | ';
if(region_array[arr[this.id]].do_percentages!=undefined && region_array[arr[this.id]].do_percentages==1){
do_percentages = true;
vote_total = parseInt(region_array[arr[this.id]].vote_total);
$tooltip_output+='% | ';
}
$tooltip_output+='Votes | ';
$tooltip_output+='Delegates | ';
//$tooltip_output+='RCP Avg. | ';
$tooltip_output+='
';
var t_ob=region_array[arr[this.id]].candidate;
t_ob.sort(function(a, b){
return parseInt(b.votes.replace(/,/g,""))-parseInt(a.votes.replace(/,/g,""));
})
//$.each(region_array[arr[this.id]].candidate, function(key,val){
$.each(t_ob, function(key,val){
$tooltip_output+='';
$tooltip_output+=''+val.last_name+' | ';
if(do_percentages){
var vote_num = parseInt(val.votes.replace(/,/g, ""));
var perc_num = 0;
if(vote_num > 0) {
perc_num = Math.round((vote_num / vote_total) * 1000) / 10;
}
$tooltip_output+=''+perc_num+'% | ';
}
$tooltip_output+=''+val.votes+' | ';
$tooltip_output+=''+val.delegates+' | ';
//$tooltip_output+=' | ';
$tooltip_output+='
';
});
}else{
$rcp_tooltip_output='';
$rcp_tooltip_output+='';
$rcp_tooltip_output+='Candidate | ';
$rcp_tooltip_output+='RCP Average | ';
$rcp_tooltip_output+='
';
var t_ob=region_array[arr[this.id]].candidate;
t_ob.sort(function(a, b){
return parseInt(b.rcp_avg)-parseInt(a.rcp_avg);
})
var $test_avg=null;
$.each(t_ob, function(key,val){
$rcp_tooltip_output+='';
$rcp_tooltip_output+=''+val.last_name+' ('+val.affiliation.charAt(0)+') | ';
$rcp_tooltip_output+=''+val.value+' | ';
//if(editable==true){
//$rcp_tooltip_output+='Click to Change | ';
//}
$rcp_tooltip_output+='
';
$test_avg=val.value;
if(map_type==4){
$test_avg='';
}
});
if($test_avg!=null && $test_avg!=''){
$tooltip_output+=$rcp_tooltip_output;
}
}
$tooltip_output+='
';
if(tooltip==true){
$('#map_tool_tip').html($tooltip_output);
$('#map_tool_tip').show();
}
}
this.mousemove(function(e){
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
$('#map_tool_tip').css('top', (posy));
$('#map_tool_tip').css('left', (posx)+20);
});
}, function(){
$('#map_tool_tip').html('');
$('#map_tool_tip').hide();
})
.click(function(){
//obj_array[this.id].attr({ fill: '#000' });
//alert(paths[obj_array[this.id]].name);
//alert(paths[arr[this.id]]);
var point = obj_array[this.id].getBBox(0);
//alert(region_array[arr[this.id]]);
//state_clicked(point.x,point.y,paths[arr[this.id]]);
state_clicked(point.x,point.y,region_array[arr[this.id]],obj_array[this.id]);
//alert(obj_array[0].attr('title'));
//alert(paths[arr[this.attr('title')]].name);
/*document.location.hash = arr[this.id];
var point = this.getBBox(0);
$('#map').next('.point').remove();
$('#map').after($('').addClass('point'));
$('.point')
.html(paths[arr[this.id]].name)
.prepend($('').attr('href', '#').addClass('close').text('Close'))
.prepend($('
').attr('src', 'flags/'+arr[this.id]+'.png'))
.css({
left: point.x+(point.width/2)-80,
top: point.y+(point.height/2)-20
})
.fadeIn();
*/
});
i++;
}
use_holding = false;
figure_count();
$('#map_loading').hide();
//});
}
function fill_map_options(x,y,state,state_object){
var this_key = state.region_key;
if(this_key == 'MECD1') {
this_key = 'ME1';
}else if(this_key == 'MECD2') {
this_key = 'ME2';
}else if(this_key == 'NECD1') {
this_key = 'NE1';
}else if(this_key == 'NECD2') {
this_key = 'NE2';
}else if(this_key == 'NECD3') {
this_key = 'NE3';
}
var region_url=region_array[this_key].url;
$('#map_options').show();
if(region_url!=undefined){
$('#map_options h3').html(''+region_info[this_key].full_name+'Polls »');
}else{
$('#map_options h3').html(region_info[this_key].full_name);
}
$('#map_option_area').val(this_key);
//region_info[this_key].my_object=state_object;
$('#map_options').css('top',(y-100));
$('#map_options').css('left',(x+20));
current_state_object=state_object;
edit_map();
}
function state_clicked(x,y,state,state_object)
{
if(state!=undefined){
var this_key = state.region_key;
if(this_key == 'MECD1') {
this_key = 'ME1';
}else if(this_key == 'MECD2') {
this_key = 'ME2';
}else if(this_key == 'NECD1') {
this_key = 'NE1';
}else if(this_key == 'NECD2') {
this_key = 'NE2';
}else if(this_key == 'NECD3') {
this_key = 'NE3';
}
var region_url=region_array[this_key].url;
if(state.name!=undefined && editable){
fill_map_options(x,y,state,state_object,0,0);
}
else if(region_url!=undefined){
location.href=region_url;
}
}
}
function edit_map(){
var color='';
var area=$('#map_option_area').val();
var state = region_info[area].this_object;
$('#map_options a.option').unbind();
$('#map_options a.option').click(function(){
//state.attr( {fill: '#000'} );
//$(this).addClass('loading');
$('#map_options').hide();
$('.map_tools a').removeClass('on');
$('.map_tools a.your_map').addClass('on');
$('#year_preload').val('');
var key=$(this).attr('rel');
var levels = key_2_level(parseInt(key));
var info = level_info(parseInt(levels.level_id), parseInt(levels.affiliation_id));
var color = info.color;
region_info[area].affiliation_id = parseInt(levels.affiliation_id);
region_info[area].level_id = parseInt(levels.level_id);
state_count[info.level_key]+=region_info[area].multiplier;
//update_color(state, color);
figure_count();
//state.attrs.fill=color;
//state.attr( {fill: color} );
if(!ntu && region_array[area].holding_affiliation_id!=null && region_array[area].holding_affiliation_id!=parseInt(levels.affiliation_id) && parseInt(levels.affiliation_id)!=3 && map_type!=4 ){
state.attr({ fill: 'url('+map_full_host+'/images/bg_pickup_'+region_info[area].affiliation_id+'_'+region_info[area].level_id+'.png)', cursor: 'pointer' });
}else{
state.attr({ fill: color });
}
//alert(state.attr.fill);
//map_renderLoop();
});
}
function init_map()
{
is_onload=true;
//console.log('map_data');
if(typeof state_overrides !== 'undefined' && state_overrides != '') {
var state_overrides_arr = [];
var split_1 = state_overrides.split('-');
for(var i = 0; i < split_1.length; i++) {
var split_2 = split_1[i].split('_');
state_overrides_arr.push({
'region_id' : split_2[0],
'affiliation_id' : split_2[1],
'level_id' : split_2[2]
});
}
//console.log('state_overrides_arr');
//console.log(state_overrides_arr);
for(var i = 0; i < state_overrides_arr.length; i++) {
for(var j = 0; j < map_data['election']['race'].length; j++) {
var obj = map_data['election']['race'][j];
if(map_data['election']['race'][j]['region_id'] == state_overrides_arr[i]['region_id']) {
map_data['election']['race'][j]['affiliation_id'] = state_overrides_arr[i]['affiliation_id'];
map_data['election']['race'][j]['level_id'] = state_overrides_arr[i]['level_id'];
}
}
}
}
/*console.log(map_data);
console.log(state_overrides);*/
json_2_map(map_data);
$('#map_options_close').unbind();
$('.map_tools a').unbind();
$('#year_preload').unbind();
$('#map_facebook').unbind();
$('#map_twitter').unbind();
$('#map_email').unbind();
$('#map_load').unbind();
$('#map_save').unbind();
$('#map_options_close').click(function(){
$('#map_options').hide();
});
$('.map_tools a').click(function(){
$('#map_options').hide();
$('.map_tools a').removeClass('on');
$('#map_loading').show();
$('#year_preload').val('');
if($(this).hasClass('rcp_average')){
$(this).addClass('on');
ntu = true;
load_data(default_file);
figure_count();
}else if($(this).hasClass('no_toss_ups')){
$(this).addClass('on');
ntu = true;
load_data(no_toss_up_file);
figure_count();
}else if($(this).hasClass('currently_held_ntu')){
$(this).addClass('on');
use_holding = true;
ntu = true;
region_array = current_region_array;
//load_current_data(default_file);
load_data(default_file);
figure_count();
//build_map();
}else if($(this).hasClass('your_map')){
your_map();
figure_count();
}else if($(this).hasClass('year_2008')){
load_data(map_full_host+'/epolls/json/2008_final_map.js');
$(this).addClass('on');
is_2008=true;
}else if($(this).hasClass('year_2004')){
load_data(map_full_host+'/epolls/json/2004_final_map.js');
$(this).addClass('on');
}
});
$('#year_preload').change(function(){
$('#map_options').hide();
$('.map_tools a').removeClass('on');
$('#map_loading').show();
var file = $(this).val();
if(file==2008){
is_2008=true;
}
if(file=='current'){
file=default_file;
}else if(file!=''){
$('.map_tools a').removeClass('on');
file=map_full_host+'/epolls/json/'+file+'_final_map.js';
}else{
file=default_file;
$('.map_tools a').removeClass('on');
$('.map_tools a.rcp_average').addClass('on');
}
load_data(file);
});
$('#map_facebook').click(function(){
var url = [location.protocol, '//', location.host, location.pathname].join('');
popUp('http://www.facebook.com/sharer.php?u='+url+'?map='+map_2_string()+'&src=sp');
});
$('#map_twitter').click(function(){
var url = [location.protocol, '//', location.host, location.pathname].join('');
var teaser_text = $("meta[name='title']").attr('content');
popUp('http://twitter.com/share?url='+escape(url+'?map='+map_2_string())+'&text='+escape(teaser_text)+'');
});
$('#map_email').click(function(){
var url = [location.protocol, '//', location.host, location.pathname].join('');
var meta_title = $("meta[name='title']").attr('content');
//window.open('http://dyn.realclearpolitics.com/sendpage/friend.php?id='+url+'?map='+map_2_string()+'&js=on','','width=520,height=475,scrollbars=no');
var body_text = meta_title+':
'+url+'?map='+map_2_string();
var html = '';
html += '';
html += '';
// Initialize functionality of form after facebox appears
$(document).unbind('reveal.facebox');
$(document).bind('reveal.facebox', function() {
$('#facebox .cyom_send_form .send_to_friend').unbind('click');
$('#facebox .cyom_send_form .send_to_friend').click(function(ev) {
ev.preventDefault();
$('#facebox .cyom_send_form table').hide();
$('#facebox .cyom_send_form .info_display').html('...Sending...');
$('#facebox .cyom_send_form .info_display').show();
var body_text = encodeURIComponent($("meta[name='title']").attr('content')+':')+'%0D%0A%0D%0A'+encodeURIComponent($(this).attr('data-url'));
var subject_text = encodeURIComponent($("meta[name='title']").attr('content'));
//var from_email = $('#facebox .cyom_send_form #from_email').val();
//var base_url = [location.protocol, '//', location.host, location.pathname].join('');
window.location.href = "mailto:"+$('#facebox .cyom_send_form #send_to_email').val()+"?subject="+subject_text+"&body="+body_text;
/*$.getJSON("http://util.realclearpolitics.com/email/app/sendemail.php?jsoncallback=?",{
name:$('#facebox .cyom_send_form #from_name').val(),
sEmail:$('#facebox .cyom_send_form #from_email').val(),
recEmail:from_email,
msg:$(this).attr('data-title')+': '+$(this).attr('data-url')+'',
siteName:'politics',
pageLink:$(this).attr('data-url'),
emailArray:from_email,
title:$(this).attr('data-title')
}, function(data) {
$.each(data, function(key,val){
if(key == "response"){
if(val == 1){ // SUCCESS
$('#facebox .cyom_send_form .info_display').html("Your email has been sent! You can now close this popup.");
}else if(val == 2){ // PLEASE WAIT
$('#facebox .cyom_send_form .info_display').html("Please wait one minute before sending another email to a friend");
$('#facebox .cyom_send_form table').show();
}else if(val == 3){ // ERROR
$('#facebox .cyom_send_form .info_display').html("Error: Email did not send. Please Contact Us for support.");
}else{ // ERROR
//alert('Error: Please try again');
$('#facebox .cyom_send_form .info_display').html("Error: Please try again");
$('#facebox .cyom_send_form table').show();
}
}
});
});*/
});
});
jQuery.facebox('Send your Custom Map to a Friend
'+html+'
');
});
$('#map_load').click(function(){
$('#map_options').hide();
$('.map_tools a').removeClass('on');
$('#map_loading').show();
$('#year_preload').val('');
your_map();
jQuery.facebox('Map Loaded!
Your map has been loaded! Remember to save again after making changes.
');
});
if(getQuerystring('map')){
string_2_map(getQuerystring('map'));
}
$('#map_save').click(function(){
createCookie('realclear_map'+poll_id,map_2_string(),365,'.realclearpolitics.com');
$('#map_save span').html('Saved!');
setTimeout("reset_language($('#map_save span'),'Save')",3000);
jQuery.facebox('Map Saved!
Thanks for saving your map! To load your map when you return, click on "Load" button near the bottom of the map.
');
$('#map_load').show();
});
if(readCookie('realclear_map'+poll_id)){
$('#map_load').show();
}
}
function figure_count(){
state_count = new Array(0,0,0,0,0,0,0,0,0);
for ( var i in region_info )
{
var state = region_info[i];
var info = level_info(parseInt(state.level_id), parseInt(state.affiliation_id));
state_count[info.level_key]+=state.multiplier;
}
if(is_2008==true){
state_count[1]=359;
state_count[5]=179;
is_2008=false;
}
display_count();
net_change();
}
function display_count(){
if(editable){
var ribbon='';
ribbon+='';
if(state_count[1]>0 && ntu){
ribbon+=''+(state_count[1])+' | ';
} else if(state_count[1]>0) {
ribbon+=''+(state_count[1]+map_dem_not_up)+' | ';
}
if(state_count[2]>0 && ntu){
ribbon+=''+(state_count[2]+map_dem_not_up)+' Dem'+dem_star+' | ';
} else if(state_count[2]>0){
ribbon+=''+state_count[2]+' | ';
}
if(state_count[3]>0){
ribbon+=''+state_count[3]+' | ';
}
if(state_count[4]>0){
ribbon+=''+state_count[4]+' | ';
}
if(state_count[8]>0){
ribbon+=''+state_count[8]+' | ';
}
if(state_count[7]>0){
ribbon+=''+state_count[7]+' | ';
}
if(state_count[6]>0 && ntu){
ribbon+=''+(state_count[6]+map_gop_not_up)+' GOP'+gop_star+' | ';
} else if(state_count[6]>0){
ribbon+=''+state_count[6]+' | ';
}
if(state_count[5]>0 && ntu){
ribbon+=''+state_count[5]+' | ';
} else if(state_count[5]>0){
ribbon+=''+(state_count[5]+map_gop_not_up)+' | ';
}
ribbon+='
';
$('.ribbon table').html(ribbon);
if(ntu) {
$('.dem_safe').css('width',''+count_percentage(state_count[1])+'');
} else {
$('.dem_safe').css('width',''+count_percentage(state_count[1]+map_dem_not_up)+'');
}
if(ntu) {
$('.dem_likely').css('width',''+count_percentage(state_count[2]+map_dem_not_up)+'');
} else {
$('.dem_likely').css('width',''+count_percentage(state_count[2])+'');
}
$('.dem_lean').css('width',''+count_percentage(state_count[3])+'');
$('.toss_up').css('width',''+count_percentage(state_count[4])+'');
$('.gop_lean').css('width',''+count_percentage(state_count[7])+'');
if(ntu) {
$('.gop_likely').css('width',''+count_percentage(state_count[6]+map_gop_not_up)+'');
} else {
$('.gop_likely').css('width',''+count_percentage(state_count[6])+'');
}
if(ntu) {
$('.gop_safe').css('width',''+count_percentage(state_count[5])+'');
} else {
$('.gop_safe').css('width',''+count_percentage(state_count[5]+map_gop_not_up)+'');
}
$('.ind').css('width',''+count_percentage(state_count[8])+'');
var dem = state_count[1]+state_count[2]+state_count[3]+map_dem_not_up;
var ind = state_count[8];
var toss_up = state_count[4];
var gop = state_count[5]+state_count[6]+state_count[7]+map_gop_not_up;
$('#map-scorecard .dem .seats').html(dem);
$('#map-scorecard .ind .seats').html(ind);
$('#map-scorecard .tossup .seats').html(toss_up);
$('#map-scorecard .gop .seats').html(gop);
}
}
function net_change()
{
if(ntu)
{
var dem_loss = 0;
var gop_loss = 0;
var dem_gain = 0;
var gop_gain = 0;
console.log('current_region_array');
console.log(current_region_array);
for(var x in current_region_array)
{
var state_abbr = x;
var new_aff = region_info[state_abbr].affiliation_id;
var old_aff = current_region_array[x].holding_affiliation_id;
console.log('x: '+x+', old_aff: '+old_aff+', new_aff: '+new_aff);
if(new_aff != old_aff)
{
if(new_aff == 1) { // Dem
if(old_aff == 2) {
gop_loss++;
}
if(old_aff != 1) {
dem_gain++;
}
}
else if(new_aff == 2) { // GOP
if(old_aff == 1) {
dem_loss++;
}
if(old_aff != 2) {
gop_gain++;
}
}
else if(new_aff == 3) { // Tossup
// Don't record any loss or gain yet
}
else { // Any other affiliation (like Independent)
if(old_aff == 1) {
dem_loss++;
}else if(old_aff == 2) {
gop_loss++;
}
}
}
}
var pickup_spread_ntu = (dem_gain - dem_loss) - (gop_gain - gop_loss);
console.log(x+', '+pickup_spread_ntu+', '+dem_gain+', '+dem_loss+', '+gop_gain+', '+gop_loss);
pickup_spread_ntu = pickup_spread_ntu / 2;
if(pickup_spread_ntu < 0) {
if(gop_loss > gop_gain || gop_loss <= dem_gain)
{
pickup_spread_ntu = Math.ceil(Math.abs(pickup_spread_ntu));
if(pickup_spread_ntu == '0') {
pickup_spread_ntu = 'EVEN';
} else {
pickup_spread_ntu = 'GOP +' + pickup_spread_ntu;
}
}
else
{
pickup_spread_ntu = Math.floor(Math.abs(pickup_spread_ntu));
if(pickup_spread_ntu == '0')
{
pickup_spread_ntu = 'EVEN';
} else {
pickup_spread_ntu = 'GOP +' + pickup_spread_ntu;
}
}
} else if(pickup_spread_ntu > 0) {
if(dem_loss > dem_gain || dem_loss <= gop_gain)
{
pickup_spread_ntu = Math.ceil(pickup_spread_ntu);
if(pickup_spread_ntu == '0') {
pickup_spread_ntu = 'EVEN';
} else {
pickup_spread_ntu = 'DEM +' + pickup_spread_ntu;
}
}
else
{
pickup_spread_ntu = Math.floor(pickup_spread_ntu);
if(pickup_spread_ntu == '0') {
pickup_spread_ntu = 'EVEN';
} else {
pickup_spread_ntu = 'DEM +' + pickup_spread_ntu;
}
}
} else {
pickup_spread_ntu = 'EVEN';
}
var class_spread_color = '';
if( pickup_spread_ntu.charAt(0) == 'G') {
class_spread_color = 'rep';
} else if( pickup_spread_ntu.charAt(0) == 'D') {
class_spread_color = 'dem';
}
var html = 'Net Change
';
html += '';
html += pickup_spread_ntu;
html += '';
$('#map-scorecard .current').html(html);
console.log('===== current: =====');
console.log(html);
}
}
function count_percentage(c){
var p='';
if(c==0){
p=0;
}else{
p=(c/map_total)*100+'%';
}
return p;
}
//based on the level and affilation we return info
function level_info(level, aff){
var level_key='';
var next_level='';
var next_affiliation='';
var color='#cccccc';
//console.log(level+' : '+aff);
//dems
if(aff==1){
switch(level){
case 1:
color='#000066';
next_level=2;
next_affiliation=1;
level_key=1;
break;
case 2:
color='#3333cc';
next_level=3;
next_affiliation=1;
level_key=2;
break;
case 3:
color='#9999ff';
next_level=1;
next_affiliation=3;
level_key=3;
break;
case 4:
color='#606060';
next_level=1;
next_affiliation=2;
level_key=4;
break;
}
//gop
}else if(aff==2){
switch(level){
case 1:
color='#990000';
next_level=2;
next_affiliation=2;
level_key=5;
break;
case 2:
color='#cc3333';
next_level=3;
next_affiliation=2;
level_key=6;
break;
case 3:
color='#ff9999';
next_level=1;
next_affiliation=1;
level_key=7;
break;
case 4:
color='#606060';
next_level=1;
next_affiliation=1;
level_key=4;
break;
}
//toss-up
}else if(aff==3){
color='#606060';
next_level=1;
next_affiliation=2;
level_key=4;
//independent
}else if(aff==6){
color='#9933cc';
next_level=1;
next_affiliation=2;
level_key=8;
}
return {
color: color,
next_level: next_level,
next_affiliation: next_affiliation,
level_key: level_key
}
}
function key_2_level(key){
var level_id='';
var affiliation_id='';
switch(key){
case 1:
level_id=1;
affiliation_id=1;
break;
case 2:
level_id=2;
affiliation_id=1;
break;
case 3:
level_id=3;
affiliation_id=1;
break;
case 4:
level_id=1;
affiliation_id=3;
break;
case 5:
level_id=1;
affiliation_id=2;
break;
case 6:
level_id=2;
affiliation_id=2;
break;
case 7:
level_id=3;
affiliation_id=2;
break;
case 8:
level_id=1;
affiliation_id=6;
break;
}
return {
level_id: level_id,
affiliation_id: affiliation_id
}
}
function load_label_coords(i){
region_info['AK'].center_x = (60*i);
region_info['AK'].center_y = (270*i);
region_info['AL'].center_x = (355*i);
region_info['AL'].center_y = (220*i);
region_info['AR'].center_x = (300*i);
region_info['AR'].center_y = (205*i);
region_info['AZ'].center_x = (110*i);
region_info['AZ'].center_y = (200*i);
region_info['CA'].center_x = (42*i);
region_info['CA'].center_y = (160*i);
region_info['CO'].center_x = (175*i);
region_info['CO'].center_y = (150*i);
region_info['CT'].center_x = (515*i);
region_info['CT'].center_y = (162*i);
region_info['DE'].center_x = (515*i);
region_info['DE'].center_y = (228*i);
region_info['FL'].center_x = (420*i);
region_info['FL'].center_y = (273*i);
region_info['GA'].center_x = (390*i);
region_info['GA'].center_y = (220*i);
region_info['HI'].center_x = (216*i);
region_info['HI'].center_y = (329*i);
region_info['IA'].center_x = (285*i);
region_info['IA'].center_y = (119*i);
region_info['ID'].center_x = (105*i);
region_info['ID'].center_y = (85*i);
region_info['IL'].center_x = (325*i);
region_info['IL'].center_y = (138*i);
region_info['IN'].center_x = (352*i);
region_info['IN'].center_y = (138*i);
region_info['KS'].center_x = (245*i);
region_info['KS'].center_y = (162*i);
region_info['KY'].center_x = (372*i);
region_info['KY'].center_y = (162*i);
region_info['LA'].center_x = (300*i);
region_info['LA'].center_y = (245*i);
region_info['MA'].center_x = (515*i);
region_info['MA'].center_y = (97*i);
region_info['MD'].center_x = (515*i);
region_info['MD'].center_y = (261*i);
region_info['ME'].center_x = (485*i);
region_info['ME'].center_y = (45*i);
if(region_info['ME1']!=undefined){
region_info['ME1'].center_x = (507*i);
region_info['ME1'].center_y = (69*i);
}
if(region_info['ME2']!=undefined){
region_info['ME2'].center_x = (507*i);
region_info['ME2'].center_y = (29*i);
}
region_info['MI'].center_x = (358*i);
region_info['MI'].center_y = (100*i);
region_info['MN'].center_x = (275*i);
region_info['MN'].center_y = (65*i);
if(region_info['MN_SENATE_1']!=undefined){
region_info['MN_SENATE_1'].center_x = (274*i);
region_info['MN_SENATE_1'].center_y = (52*i);
}
if(region_info['MN_SENATE_2']!=undefined){
region_info['MN_SENATE_2'].center_x = (276*i);
region_info['MN_SENATE_2'].center_y = (86*i);
}
region_info['MO'].center_x = (300*i);
region_info['MO'].center_y = (165*i);
region_info['MS'].center_x = (330*i);
region_info['MS'].center_y = (225*i);
if(region_info['MS_SENATE_1']!=undefined){
region_info['MS_SENATE_1'].center_x = (330*i);
region_info['MS_SENATE_1'].center_y = (210*i);
}
if(region_info['MS_SENATE_2']!=undefined){
region_info['MS_SENATE_2'].center_x = (330*i);
region_info['MS_SENATE_2'].center_y = (237*i);
}
region_info['MT'].center_x = (155*i);
region_info['MT'].center_y = (48*i);
region_info['NC'].center_x = (435*i);
region_info['NC'].center_y = (180*i);
region_info['ND'].center_x = (229*i);
region_info['ND'].center_y = (52*i);
region_info['NE'].center_x = (229*i);
region_info['NE'].center_y = (125*i);
if(region_info['NE1']!=undefined){
region_info['NE1'].center_x = (366*i); // Change this when CD1 goes live
region_info['NE1'].center_y = (36*i);
}
if(region_info['NE2']!=undefined){
region_info['NE2'].center_x = (366*i);
region_info['NE2'].center_y = (36*i);
}
if(region_info['NE3']!=undefined){
region_info['NE3'].center_x = (366*i); // Change this when CD3 goes live
region_info['NE3'].center_y = (36*i);
}
region_info['NH'].center_x = (428*i);
region_info['NH'].center_y = (36*i);
region_info['NJ'].center_x = (515*i);
region_info['NJ'].center_y = (193*i);
region_info['NM'].center_x = (165*i);
region_info['NM'].center_y = (203*i);
region_info['NV'].center_x = (76*i);
region_info['NV'].center_y = (125*i);
region_info['NY'].center_x = (445*i);
region_info['NY'].center_y = (85*i);
region_info['OH'].center_x = (385*i);
region_info['OH'].center_y = (130*i);
region_info['OK'].center_x = (255*i);
region_info['OK'].center_y = (200*i);
region_info['OR'].center_x = (54*i);
region_info['OR'].center_y = (72*i);
region_info['PA'].center_x = (425*i);
region_info['PA'].center_y = (114*i);
region_info['DC'].center_x = (515*i);
region_info['DC'].center_y = (292*i);
region_info['RI'].center_x = (515*i);
region_info['RI'].center_y = (128*i);
region_info['SC'].center_x = (415*i);
region_info['SC'].center_y = (202*i);
region_info['SD'].center_x = (229*i);
region_info['SD'].center_y = (90*i);
region_info['TN'].center_x = (364*i);
region_info['TN'].center_y = (185*i);
region_info['TX'].center_x = (238*i);
region_info['TX'].center_y = (250*i);
region_info['UT'].center_x = (120*i);
region_info['UT'].center_y = (143*i);
region_info['VA'].center_x = (430*i);
region_info['VA'].center_y = (155*i);
region_info['VT'].center_x = (395*i);
region_info['VT'].center_y = (36*i);
region_info['WA'].center_x = (70*i);
region_info['WA'].center_y = (30*i);
region_info['WI'].center_x = (318*i);
region_info['WI'].center_y = (90*i);
region_info['WV'].center_x = (409*i);
region_info['WV'].center_y = (147*i);
region_info['WY'].center_x = (164*i);
region_info['WY'].center_y = (101*i);
}
function load_multiplier()
{
region_info["AL"].multiplier = 9;
region_info["AK"].multiplier = 3;
region_info["AZ"].multiplier = 11;
region_info["AR"].multiplier = 6;
region_info["CA"].multiplier = 55;
region_info["CO"].multiplier = 9;
region_info["CT"].multiplier = 7;
region_info["DE"].multiplier = 3;
region_info["DC"].multiplier = 3;
region_info["FL"].multiplier = 29;
region_info["GA"].multiplier = 16;
region_info["HI"].multiplier = 4;
region_info["ID"].multiplier = 4;
region_info["IL"].multiplier = 20;
region_info["IA"].multiplier = 6;
region_info["IN"].multiplier = 11;
region_info["KS"].multiplier = 6;
region_info["KY"].multiplier = 8;
region_info["LA"].multiplier = 8;
if(region_info['ME1']==undefined && region_info['ME2']==undefined){
region_info["ME"].multiplier = 4;
}else if(region_info['ME1']==undefined || region_info['ME2']==undefined){
region_info["ME"].multiplier = 3;
}else{
region_info["ME"].multiplier = 2;
}
region_info["MD"].multiplier = 10;
region_info["MA"].multiplier = 11;
region_info["MI"].multiplier = 16;
region_info["MN"].multiplier = 10;
region_info["MS"].multiplier = 6;
region_info["MO"].multiplier = 10;
region_info["MT"].multiplier = 3;
if(region_info['NE1']==undefined && region_info['NE2']==undefined && region_info['NE3']==undefined){
region_info["NE"].multiplier = 5;
}else if( (region_info['NE1']==undefined && region_info['NE2']==undefined) || (region_info['NE2']==undefined && region_info['NE3']==undefined) || (region_info['NE3']==undefined && region_info['NE1']==undefined)){
region_info["NE"].multiplier = 4;
}else if(region_info['NE1']==undefined || region_info['NE2']==undefined || region_info['NE3']==undefined){
region_info["NE"].multiplier = 3;
}else{
region_info["NE"].multiplier = 2;
}
region_info["NV"].multiplier = 6;
region_info["NH"].multiplier = 4;
region_info["NJ"].multiplier = 14;
region_info["NM"].multiplier = 5;
region_info["NY"].multiplier = 29;
region_info["NC"].multiplier = 15;
region_info["ND"].multiplier = 3;
region_info["OH"].multiplier = 18;
region_info["OK"].multiplier = 7;
region_info["OR"].multiplier = 7;
region_info["PA"].multiplier = 20;
region_info["RI"].multiplier = 4;
region_info["SC"].multiplier = 9;
region_info["SD"].multiplier = 3;
region_info["TN"].multiplier = 11;
region_info["TX"].multiplier = 38;
region_info["UT"].multiplier = 6;
region_info["VT"].multiplier = 3;
region_info["VA"].multiplier = 13;
region_info["WA"].multiplier = 12;
region_info["WV"].multiplier = 5;
region_info["WI"].multiplier = 10;
region_info["WY"].multiplier = 3;
if(region_info['ME1']!=undefined){
region_info["ME1"].multiplier = 1;
}
if(region_info['ME2']!=undefined){
region_info["ME2"].multiplier = 1;
}
if(region_info['NE1']!=undefined){
region_info["NE1"].multiplier = 1;
}
if(region_info['NE2']!=undefined){
region_info["NE2"].multiplier = 1;
}
if(region_info['NE3']!=undefined){
region_info["NE3"].multiplier = 1;
}
}
function getQuerystring(key, default_)
{
if (default_==null) default_="";
key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regex = new RegExp("[\\?&]"+key+"=([^]*)");
var qs = regex.exec(window.location.href);
if(qs == null)
return default_;
else
return qs[1];
}
function your_map(){
if(readCookie('realclear_map'+poll_id)){
string_2_map(readCookie('realclear_map'+poll_id));
}
$('.map_tools a.your_map').addClass('on');
$('#map_loading').hide();
}
function reset_language(obj, val){
obj.html(val);
return;
}
function string_2_map(map){
if(map!=undefined){
state_count = new Array(0,0,0,0,0,0,0,0);
map=unescape(map);
map=map.split(',');
$.each(map, function(key, val) {
//var vars = val.split('_');
// Now that we can have split states with longer names, like "MN_SENATE_1" instead of "MN",
// we must specifically split at the last occurance of '_'
var last_index = val.lastIndexOf('_');
var area = val.substr(0, last_index);
var state = region_info[area].this_object;
var levels = key_2_level(parseInt(val.substr(last_index + 1)));
var info = level_info(parseInt(levels.level_id), parseInt(levels.affiliation_id));
//var color = hex2rgb(info.color);
var color = info.color;
region_info[area].affiliation_id = parseInt(levels.affiliation_id);
region_info[area].level_id = parseInt(levels.level_id);
state_count[info.level_key]+=region_info[area].multiplier;
//update_color(state, color);
//state.attrs.fill=color;
state.attr( {fill: color} );
});
$('.map_tools a').removeClass('on');
figure_count();
//display_count();
//map_renderLoop();
}
}
function map_2_string(){
var string='';
for ( var i in region_info)
{
var state = region_info[i];
var info = level_info(parseInt(state.level_id), parseInt(state.affiliation_id));
string+=i+'_'+info.level_key+',';
}
var length=string.length;
length--;
string=string.substr(0, length);
return string;
}