2011-06-24 16:11:32 +00:00
// var R;
2011-06-27 19:18:53 +00:00
function supportsSvg ( ) {
2011-06-27 19:50:39 +00:00
return ! ! document . createElementNS && ! ! document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) . createSVGRect ;
2011-06-27 19:18:53 +00:00
}
2011-06-24 15:45:19 +00:00
2011-06-27 13:53:03 +00:00
function getNode ( nodeKey ) {
var ret = false ;
$ ( 'text' ) . each ( function ( ) {
var $this = $ ( this ) ;
if ( typeof ( $ ( this ) . data ( "key" ) ) != 'undefined' ) {
if ( $this . data ( "key" ) == nodeKey ) {
ret = $this ;
}
}
} ) ;
return ret ;
}
2011-06-24 16:08:29 +00:00
2011-06-24 15:45:19 +00:00
$ ( function ( ) {
2011-06-27 19:18:53 +00:00
if ( ! supportsSvg ) {
$ ( 'body' ) . text ( "Sorry, your browser does not support Scalable Vector Graphics (SVG), which were used to make this page. Please use Firefox 4.0+ or Google Chrome if you wish to see this page. Thanks! Sorry for the trouble..." ) ;
return ;
}
2011-06-24 20:17:05 +00:00
$ ( window ) . resize ( function ( ) {
var svgAspect = 1220 / 560 ;
var windowWidth = $ ( window ) . width ( ) ;
var svgWidth = windowWidth - 20 ;
var svgHeight = parseInt ( svgWidth / svgAspect ) ;
$ ( 'svg' ) . attr ( "width" , svgWidth ) ;
$ ( 'svg' ) . attr ( "height" , svgHeight ) ;
} ) ;
$ ( window ) . resize ( ) ;
2011-06-24 15:45:19 +00:00
$ . getJSON ( "radia.json" , { } , function ( data ) {
2011-06-27 13:53:03 +00:00
var highlightCSS = {
2011-06-27 14:53:56 +00:00
'opacity' : "1.0"
// 'fontWeight': 'bold',
// 'backgroundColor': '#ffff00'
2011-06-27 13:53:03 +00:00
}
var unhighlightCSS = {
2011-06-27 17:17:39 +00:00
'opacity' : "0.7"
2011-06-27 14:53:56 +00:00
// 'fontWeight': 'normal',
// 'backgroundColor': '#ffffff'
2011-06-27 13:53:03 +00:00
}
2011-06-24 16:11:32 +00:00
var R = data ;
2011-06-24 16:08:29 +00:00
var $texts = [ ] ;
2011-06-25 21:19:04 +00:00
$ ( 'g' ) . each ( function ( ) {
// console.log("hi");
if ( typeof ( $ ( this ) . attr ( "id" ) ) === 'undefined' ) {
return ;
}
2011-06-27 13:53:03 +00:00
2011-06-25 21:19:04 +00:00
$ ( this ) . click ( function ( ) {
2011-06-26 22:25:16 +00:00
// console.log($(this).attr("id"));
2011-06-25 21:19:04 +00:00
} ) ;
2011-06-27 13:53:03 +00:00
$ ( this ) . hover ( function ( ) {
// console.log("hovered " + $(this).attr("id"));
var $this = $ ( this ) ;
var id = $this . attr ( "id" ) ;
if ( id . indexOf ( "box" ) != - 1 ) {
return ; //FIXME: handle box hovers
}
if ( RIDS . hasOwnProperty ( id ) ) {
$this . highlightLine ( ) ;
// console.log(id);
if ( LINES . hasOwnProperty ( id ) ) {
var nodes = LINES [ id ] ;
// console.log(nodes);
for ( var i = 0 ; i < nodes . length ; i ++ ) {
2011-06-27 19:18:53 +00:00
// console.log(nodes[i]);
2011-06-27 13:53:03 +00:00
var $node = getNode ( nodes [ i ] ) ;
2011-06-27 17:17:39 +00:00
$node . highlightNode ( ) ;
2011-06-27 13:53:03 +00:00
}
}
}
2011-06-26 22:25:16 +00:00
// console.log($(this).attr("id"));
2011-06-27 13:53:03 +00:00
} , function ( ) {
var $this = $ ( this ) ;
var id = $this . attr ( "id" ) ;
if ( id . indexOf ( "box" ) != - 1 ) {
return ; //FIXME: handle box hovers
}
if ( RIDS . hasOwnProperty ( id ) ) {
$this . unhighlightLine ( ) ;
// console.log(id);
if ( LINES . hasOwnProperty ( id ) ) {
var nodes = LINES [ id ] ;
// console.log(nodes);
for ( var i = 0 ; i < nodes . length ; i ++ ) {
2011-06-27 19:18:53 +00:00
// console.log(nodes[i]);
2011-06-27 13:53:03 +00:00
var $node = getNode ( nodes [ i ] ) ;
2011-06-27 17:17:39 +00:00
$node . unhighlightNode ( ) ;
2011-06-27 13:53:03 +00:00
}
}
}
2011-06-25 21:19:04 +00:00
} ) ;
} ) ;
2011-06-26 02:26:54 +00:00
$ ( '#heartpng' ) . hover ( function ( ) {
// console.log("HEART damnit");
// $('#rajakani').find('line').css({'stroke': '#ff00ff'});
$ ( '#loveline' ) . css ( { 'stroke' : '#ff00ff' } ) ;
2011-06-25 23:14:43 +00:00
} , function ( ) {
2011-06-27 13:53:03 +00:00
$ ( '#loveline' ) . css ( { 'stroke' : '#666666' } ) ;
2011-06-25 23:14:43 +00:00
} ) ;
2011-06-26 02:26:54 +00:00
// $('#heartpng').click(function() { alert("foo") });
2011-06-25 23:14:43 +00:00
2011-06-24 15:45:19 +00:00
$ ( 'text' ) . each ( function ( ) {
2011-06-25 20:13:33 +00:00
$ ( this ) . css ( { 'cursor' : 'pointer' } ) ;
2011-06-24 15:45:19 +00:00
var $tspan = $ ( this ) . children ( 'tspan' ) . eq ( 0 ) ;
var key = $ . trim ( $tspan . text ( ) ) ;
if ( R . hasOwnProperty ( key ) ) {
thisData = R [ key ] ;
var $this = $ ( this ) ;
2011-06-26 22:25:16 +00:00
if ( key == 'Journalists' ) {
J = $this ;
}
2011-06-24 15:45:19 +00:00
// $this.data("r", thisData);
2011-06-26 03:20:09 +00:00
$this . data ( "key" , key ) ;
2011-06-24 15:45:19 +00:00
$this . data ( "name" , thisData . name ) ;
$this . data ( "type" , thisData . type ) ;
$this . data ( "link" , thisData . link ) ;
2011-06-27 14:11:30 +00:00
if ( thisData . hasOwnProperty ( "lines" ) ) {
$this . data ( "lines" , thisData . lines . split ( ", " ) ) ;
} else {
$this . data ( "lines" , [ ] ) ;
}
2011-06-26 02:26:54 +00:00
// $this.addClass(thisData.type);
2011-06-26 22:25:16 +00:00
// console.log($this.data("key"));
// console.log($this.hasTooltip());
2011-06-26 22:32:07 +00:00
if ( ! $this . isLegend ( ) ) {
2011-06-26 22:25:16 +00:00
$this . tooltip ( {
'delay' : 0 ,
'showURL' : false ,
'bodyHandler' : function ( ) {
var html = "<div class='ttWrapper'>" ;
html += "<div class='tooltipName'>" + $ ( this ) . data ( "name" ) + "</div>" ;
html += "<div class='padmaPosters'>" + getPostersHTML ( PADMA [ $ ( this ) . data ( "key" ) ] ) + "</div>" ;
html += "</div>" ;
return html ;
}
} ) ;
} else {
// console.log(key);
}
2011-06-24 16:08:29 +00:00
$texts . push ( $this ) ;
2011-06-27 13:53:03 +00:00
// var highlightShadow = '2px 2px 1px #666';
2011-06-24 15:45:19 +00:00
$this . mouseover ( function ( e ) {
2011-06-24 16:08:29 +00:00
var typ = $ ( this ) . data ( "type" ) ;
2011-06-26 22:25:16 +00:00
if ( typ === "" ) { return }
2011-06-24 16:08:29 +00:00
for ( var i = 0 ; i < $texts . length ; i ++ ) {
var $t = $texts [ i ] ;
if ( $t . data ( "type" ) == typ ) {
2011-06-27 17:17:39 +00:00
$t . highlightNode ( ) ;
2011-06-24 16:08:29 +00:00
}
}
2011-06-27 13:53:03 +00:00
var lines = $ ( this ) . data ( "lines" ) ;
if ( lines . length > 0 ) {
for ( var i = 0 ; i < lines . length ; i ++ ) {
var thisLine = lines [ i ] ;
var $line = $ ( '#' + thisLine ) ;
$line . highlightLine ( ) ;
}
}
2011-06-24 16:08:29 +00:00
// $('.' + cls).addClass("highlighted");
// console.log($('.' + cls).length);
2011-06-24 15:45:19 +00:00
} ) ;
$this . mouseout ( function ( e ) {
2011-06-24 16:08:29 +00:00
var typ = $ ( this ) . data ( "type" ) ;
2011-06-26 22:25:16 +00:00
if ( typ === '' ) { return ; }
2011-06-24 16:08:29 +00:00
for ( var i = 0 ; i < $texts . length ; i ++ ) {
var $t = $texts [ i ] ;
if ( $t . data ( "type" ) == typ ) {
2011-06-27 17:17:39 +00:00
$t . unhighlightNode ( ) ;
2011-06-24 16:08:29 +00:00
}
}
2011-06-27 13:53:03 +00:00
var lines = $ ( this ) . data ( "lines" ) ;
if ( lines . length > 0 ) {
for ( var i = 0 ; i < lines . length ; i ++ ) {
var thisLine = lines [ i ] ;
var $line = $ ( '#' + thisLine ) ;
$line . unhighlightLine ( ) ;
}
}
2011-06-24 16:08:29 +00:00
// $('.' + cls).removeClass("highlighted");
2011-06-24 15:45:19 +00:00
} ) ;
2011-06-24 16:08:29 +00:00
2011-06-24 15:45:19 +00:00
$this . click ( function ( ) {
2011-06-26 22:32:07 +00:00
if ( $this . isLegend ( ) ) {
2011-06-26 22:29:43 +00:00
return ;
}
2011-06-25 20:07:37 +00:00
window . open ( $ ( this ) . data ( "link" ) ) ;
// console.log($(this).data("link"));
2011-06-24 15:45:19 +00:00
} ) ;
}
} ) ;
} ) ;
} ) ;
2011-06-24 16:08:29 +00:00
2011-06-26 03:20:09 +00:00
function getPostersHTML ( padma _ids ) {
2011-06-26 19:53:44 +00:00
if ( typeof ( padma _ids ) === 'undefined' ) {
return '' ;
}
2011-06-26 16:52:47 +00:00
var limit = 0 ; //limit is the no of posters to show minus one
2011-06-26 03:20:09 +00:00
var html = '' ;
for ( var i = 0 ; i < padma _ids . length ; i ++ ) {
if ( i > limit ) { break ; }
2011-06-27 19:50:39 +00:00
var posterLink = "http://pad.ma/" + padma _ids [ i ] + "/poster.320.png" ;
2011-06-26 03:20:09 +00:00
html += "<img src='" + posterLink + "' />" ;
}
return html ;
}
2011-06-26 22:25:16 +00:00
2011-06-26 22:32:07 +00:00
jQuery . fn . isLegend = function ( ) {
2011-06-26 22:25:16 +00:00
if ( typeof ( this . data ( "key" ) ) == 'undefined' ) {
2011-06-26 22:32:07 +00:00
return true ;
2011-06-26 22:25:16 +00:00
}
// console.log(parseInt(this.attr("x")));
if ( parseInt ( this . attr ( "x" ) ) > 1200 ) {
if ( $ . inArray ( this . data ( "key" ) , [ "Journalists" , "Corporates" , "Vaishnavi" , "Politicians" , "Issues" , "Mention of," ] ) != - 1 ) {
return true ;
2011-06-26 22:32:07 +00:00
} else {
return false ;
2011-06-26 22:25:16 +00:00
}
}
2011-06-26 22:32:07 +00:00
return false ;
2011-06-26 22:25:16 +00:00
}
2011-06-27 13:53:03 +00:00
jQuery . fn . highlightLine = function ( ) {
this . find ( 'line, polyline, path' ) . css ( { 'stroke' : '#000000' } ) ;
2011-06-27 14:39:02 +00:00
this . find ( 'path' ) . css ( { 'strokeDasharray' : '0' } ) ;
2011-06-27 13:53:03 +00:00
}
jQuery . fn . unhighlightLine = function ( ) {
this . find ( 'line, polyline, path' ) . css ( { 'stroke' : '#666666' } ) ;
2011-06-27 14:39:02 +00:00
this . find ( "path" ) . css ( { 'strokeDasharray' : '4' } ) ;
2011-06-27 13:53:03 +00:00
}
2011-06-27 17:17:39 +00:00
jQuery . fn . highlightNode = function ( ) {
this . css ( { 'opacity' : '1.0' } ) ;
if ( this . data ( "type" ) == 'rivalgroup' ) {
this . css ( { 'fontWeight' : 'bold' } ) ;
} else {
var prev = this . prev ( ) ;
if ( prev . is ( 'rect' ) ) {
this . prev ( ) . css ( { 'fill' : '#FAFF3E' } ) ;
}
}
}
jQuery . fn . unhighlightNode = function ( ) {
this . css ( { 'opacity' : '0.7' } ) ;
if ( this . data ( "type" ) == 'rivalgroup' ) {
this . css ( { 'fontWeight' : 'normal' } ) ;
} else {
var prev = this . prev ( ) ;
if ( prev . is ( 'rect' ) ) {
this . prev ( ) . css ( { 'fill' : '#ffffff' } ) ;
}
}
}