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+=''; 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+=''; $tooltip_output+=''; //$tooltip_output+=''; $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+=''; 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+=''; } $tooltip_output+=''; $tooltip_output+=''; //$tooltip_output+=''; $tooltip_output+=''; }); }else{ $rcp_tooltip_output=''; $rcp_tooltip_output+=''; $rcp_tooltip_output+=''; $rcp_tooltip_output+=''; $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+=''; $rcp_tooltip_output+=''; //if(editable==true){ //$rcp_tooltip_output+=''; //} $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+='
'; $tooltip_output+='

'+region_array[arr[this.id]].name+'

'; $tooltip_output+='
'; $tooltip_output+=region_array[arr[this.id]].delegates+' Delegates'; $tooltip_output+=''; $tooltip_output+=region_array[arr[this.id]].race_date; $tooltip_output+='
'; $tooltip_output+='Click State to Change Status'; $tooltip_output+='
Candidate%VotesDelegatesRCP Avg.
'+val.last_name+''+perc_num+'%'+val.votes+''+val.delegates+' 
CandidateRCP Average
'+val.last_name+' ('+val.affiliation.charAt(0)+')'+val.value+'Click to Change
'; 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 += '
'; html += '
...Sending...
'; html += ''; /*html += ''; html += ''; html += ''; html += ''; html += ''; html += '';*/ html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += '
From Name:
From Email:
Send To:
'; html += '

Message your friend will see:

'; html += '

'+body_text+'

'; 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; }