var Log = {
    elem: false,
    write: function(text){
        if (!this.elem) 
            this.elem = document.getElementById('log');
        this.elem.innerHTML = text;
        this.elem.style.left = (500 - this.elem.offsetWidth / 2) + 'px';
    }
};

function addEvent(obj, type, fn) {
    if (obj.addEventListener) obj.addEventListener(type, fn, false);
    else obj.attachEvent('on' + type, fn);
};


function init(){
    //init data
var json = {children: [
{
children: [{children: [], data: { $area: "2", $pcolor: "blue",members:"John Vere Hobart, Margaret Webster, "}, id :"ccl0_0", name: "Conservative"},{ children: [], data: { $area: "1", $pcolor: "red",members:"Geoff Lumley, "}, id :"ccl0_1", name: "Labour"},{ children: [], data: { $area: "1", $pcolor: "purple",members:"Ian Stephens, "}, id :"ccl0_2", name: "Independent"}], data: {$area: 4}, id: "ccl0", name: "Adult Social Care, Health and Housing Scrutiny Panel"
}, {
children: [{children: [], data: { $area: "1", $pcolor: "darkorange",members:"Reginald Barry, "}, id :"ccl1_0", name: "Liberal-Democrat Group"},{ children: [], data: { $area: "3", $pcolor: "blue",members:"Roger Mazillius, Susan Jane Scoccia, Ian David Ward, "}, id :"ccl1_1", name: "Conservative"},{ children: [], data: { $area: "1", $pcolor: "purple",members:"Ian Stephens, "}, id :"ccl1_2", name: "Independent"}], data: {$area: 5}, id: "ccl1", name: "Audit Committee"
}, {
children: [{children: [], data: { $area: "7", $pcolor: "blue",members:"Barry Abraham, Peter Charles Bingham, George Brown, Dawn Cousins, Edward Stephen Giles, Tim Hunter-Henderson, David Pugh, "}, id :"ccl2_0", name: "Conservative"}], data: {$area: 7}, id: "ccl2", name: "Cabinet"
}, {
children: [{children: [], data: { $area: "3", $pcolor: "blue",members:"George William Cameron, Roger Mazillius, William Wyatt-Millington, "}, id :"ccl3_0", name: "Conservative"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"John Frederick Howe, "}, id :"ccl3_1", name: "Liberal Democrat"},{ children: [], data: { $area: "1", $pcolor: "purple",members:"Chris Welsford, "}, id :"ccl3_2", name: "Independent"}], data: {$area: 5}, id: "ccl3", name: "Children and Young People Scrutiny Panel"
}, {
children: [{children: [], data: { $area: "3", $pcolor: "blue",members:"Roger Graham Dixcey, Julie Marie Jones-Evans, Ian David Ward, "}, id :"ccl5_0", name: "Conservative"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"David Knowles, "}, id :"ccl5_1", name: "Liberal-Democrat Group"},{ children: [], data: { $area: "1", $pcolor: "purple",members:"Wayne Charles Whittle, "}, id :"ccl5_2", name: "Independent"}], data: {$area: 5}, id: "ccl5", name: "Economy, Environment & Transport Scrutiny Panel"
}, {
children: [{children: [], data: { $area: "1", $pcolor: "darkorange",members:"John Frederick Howe, "}, id :"ccl6_0", name: "Liberal Democrat"},{ children: [], data: { $area: "1", $pcolor: "purple",members:"Heather Humby, "}, id :"ccl6_1", name: "Independent"},{ children: [], data: { $area: "2", $pcolor: "blue",members:"Susan Jane Scoccia, David G Williams, "}, id :"ccl6_2", name: "Conservative"}], data: {$area: 4}, id: "ccl6", name: "Ethical Standards Committee"
}, {
children: [{children: [], data: { $area: "1", $pcolor: "purple",members:"Heather Humby, "}, id :"ccl7_0", name: "Independent"},{ children: [], data: { $area: "2", $pcolor: "blue",members:"Jerry White, David G Williams, "}, id :"ccl7_1", name: "Conservative"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"Adrian Whittaker, "}, id :"ccl7_2", name: "Liberal-Democrat Group"}], data: {$area: 4}, id: "ccl7", name: "Fire and Community Safety Scrutiny Panel"
}, {
children: [{children: [], data: { $area: "23", $pcolor: "blue",members:"Barry Abraham, Peter Charles Bingham, George Brown, Ivan Bulwer, George William Cameron, Dawn Cousins, Roger Graham Dixcey, Edward Stephen Giles, John Vere Hobart, Richard Edmunds Hollis, Tim Hunter-Henderson, Julie Marie Jones-Evans, Roger Mazillius, Lora Peacey-Wilcox, David Pugh, Susan Jane Scoccia, Andy Sutton, Albert Taylor, Ian David Ward, Margaret Webster, Jerry White, David G Williams, William Wyatt-Millington, "}, id :"ccl8_0", name: "Conservative"},{ children: [], data: { $area: "10", $pcolor: "purple",members:"Jonathan Francis Bacon, Vanessa Claire Churchman, Rodney David Downer, Stuart Dyer, Paul Fuller, Heather Humby, Patrick Donald Joyce, Ian Stephens, Chris Welsford, Wayne Charles Whittle, "}, id :"ccl8_1", name: "Independent"},{ children: [], data: { $area: "4", $pcolor: "darkorange",members:"Reginald Barry, David Knowles, Colin Richards, Adrian Whittaker, "}, id :"ccl8_2", name: "Liberal-Democrat Group"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"John Frederick Howe, "}, id :"ccl8_3", name: "Liberal Democrat"},{ children: [], data: { $area: "1", $pcolor: "red",members:"Geoff Lumley, "}, id :"ccl8_4", name: "Labour"},{ children: [], data: { $area: "1", $pcolor: "black",members:"David Whittaker, "}, id :"ccl8_5", name: "None"}], data: {$area: 40}, id: "ccl8", name: "Full Council"
}, {
children: [{children: [], data: { $area: "2", $pcolor: "blue",members:"Dawn Cousins, David Pugh, "}, id :"ccl10_0", name: "Conservative"}], data: {$area: 2}, id: "ccl10", name: "Island Strategic Partnership Board (2009/10)"
}, {
children: [{children: [], data: { $area: "3", $pcolor: "purple",members:"Jonathan Francis Bacon, Paul Fuller, Heather Humby, "}, id :"ccl12_0", name: "Independent"},{ children: [], data: { $area: "5", $pcolor: "blue",members:"Ivan Bulwer, Susan Jane Scoccia, Albert Taylor, Jerry White, David G Williams, "}, id :"ccl12_1", name: "Conservative"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"Colin Richards, "}, id :"ccl12_2", name: "Liberal-Democrat Group"}], data: {$area: 9}, id: "ccl12", name: "Licensing and General Purposes Committee"
}, {
children: [{children: [], data: { $area: "3", $pcolor: "purple",members:"Jonathan Francis Bacon, Vanessa Claire Churchman, Chris Welsford, "}, id :"ccl13_0", name: "Independent"},{ children: [], data: { $area: "2", $pcolor: "darkorange",members:"Reginald Barry, Colin Richards, "}, id :"ccl13_1", name: "Liberal-Democrat Group"},{ children: [], data: { $area: "6", $pcolor: "blue",members:"George William Cameron, John Vere Hobart, Julie Marie Jones-Evans, Ian David Ward, Margaret Webster, William Wyatt-Millington, "}, id :"ccl13_2", name: "Conservative"}], data: {$area: 11}, id: "ccl13", name: "Overview and Scrutiny Committee"
}, {
children: [{children: [], data: { $area: "7", $pcolor: "blue",members:"Ivan Bulwer, George William Cameron, Roger Graham Dixcey, John Vere Hobart, Julie Marie Jones-Evans, Susan Jane Scoccia, David G Williams, "}, id :"ccl14_0", name: "Conservative"},{ children: [], data: { $area: "2", $pcolor: "purple",members:"Stuart Dyer, Paul Fuller, "}, id :"ccl14_1", name: "Independent"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"Adrian Whittaker, "}, id :"ccl14_2", name: "Liberal-Democrat Group"}], data: {$area: 10}, id: "ccl14", name: "Planning Committee"
}, {
children: [{children: [], data: { $area: "7", $pcolor: "blue",members:"Ivan Bulwer, George William Cameron, Roger Graham Dixcey, John Vere Hobart, Richard Edmunds Hollis, Julie Marie Jones-Evans, Susan Jane Scoccia, "}, id :"ccl15_0", name: "Conservative"},{ children: [], data: { $area: "2", $pcolor: "purple",members:"Stuart Dyer, Paul Fuller, "}, id :"ccl15_1", name: "Independent"},{ children: [], data: { $area: "1", $pcolor: "darkorange",members:"Adrian Whittaker, "}, id :"ccl15_2", name: "Liberal-Democrat Group"}], data: {$area: 10}, id: "ccl15", name: "Planning Committee Site Visits"
}], data: {$area: 116}, id: "ccl", name: "Council committees"} 
    //end

    var infovis = document.getElementById('infovis');
    var w = infovis.offsetWidth, h = infovis.offsetHeight;
    infovis.style.width = w + 'px';
    infovis.style.height = h + 'px';

//*    
    TM.Squarified.implement({  
   'setColor': function(json) {  
     return json.data.$pcolor;//'red';// json.data.$color;  
   }  
 }); 
  //*/
  
    //init tm
    var tm = new TM.Squarified({
        //Where to inject the treemap.
        rootId: 'infovis',

        //Add click handlers for
        //zooming the Treemap in and out
        addLeftClickHandler: true,
        addRightClickHandler: true,
        
        //When hovering a node highlight the nodes
        //between the root node and the hovered node. This
        //is done by adding the 'in-path' CSS class to each node.
        selectPathOnHover: true,
                
        Color: {
            //Allow coloring
            allow: true,
            //Set min value and max value constraints
            //for the *$color* property value.
            //Default's to -100 and 100.
            minValue: 1,
            maxValue: 50,
            //Set color range. Default's to reddish and greenish.
            //It takes an array of three
            //integers as R, G and B values.
            minColorValue: [0, 100, 255],
            maxColorValue: [255, 50, 0]
        },
        
        //Allow tips
        Tips: {
          allow: true,
          //add positioning offsets
          offsetX: 20,
          offsetY: 20,
          //implement the onShow method to
          //add content to the tooltip when a node
          //is hovered
          onShow: function(tip, node, isLeaf, domElement) {
              tip.innerHTML = "<div class=\"tip-title\">" + node.name + "</div>" + 
                "<div class=\"tip-text\">" + this.makeHTMLFromData(node.data) + "</div>"; 
          },  

          //Build the tooltip inner html by taking each node data property
          makeHTMLFromData: function(data){
              var html = '';
              html += "Members: " + data.$area + '<br />';
              if (data.members)  html +=data.members;
              return html;
          }
        },

        //Remove all element events before destroying it.
        onDestroyElement: function(content, tree, isLeaf, leaf){
            if(leaf.clearAttributes) leaf.clearAttributes();
        }
    });
    
    //load JSON and plot
    tm.loadJSON(json);
    //end

    document.getElementById('out_button').onclick = function(){
        tm.out();
    };
    
}

