<?php
  function retval($inv) {
    if (strpos($inv, "E-") !== false) return "0";
    return $inv;
  }
?>
<!doctype html><html>
  <head> <script type="text/javascript" src="http://www.rjmprogramming.com.au/gchartgen.js"></script>
    <title>Sankey Diagram - RJM Programming - http://www.rjmprogramming.com.au (Copyright &copy; 2014 rjmprogramming.com.au all rights reserved.)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=0.5, maximum-scale=4, user-scalable=yes" />
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>


    <script type="text/javascript">
<?php 
      $GETtitle = "Multilevel Sankeys";
      $GETlabel = "From,To";
      $GETvalue = "Weight";
      $GETdata = "[ 'Brazil', 'Portugal', 5 ],
       [ 'Brazil', 'France', 1 ],
       [ 'Brazil', 'Spain', 1 ],
       [ 'Brazil', 'England', 1 ],
       [ 'Canada', 'Portugal', 1 ],
       [ 'Canada', 'France', 5 ],
       [ 'Canada', 'England', 1 ],
       [ 'Mexico', 'Portugal', 1 ],
       [ 'Mexico', 'France', 1 ],
       [ 'Mexico', 'Spain', 5 ],
       [ 'Mexico', 'England', 1 ],
       [ 'USA', 'Portugal', 1 ],
       [ 'USA', 'France', 1 ],
       [ 'USA', 'Spain', 1 ],
       [ 'USA', 'England', 5 ],
       [ 'Portugal', 'Angola', 2 ],
       [ 'Portugal', 'Senegal', 1 ],
       [ 'Portugal', 'Morocco', 1 ],
       [ 'Portugal', 'South Africa', 3 ],
       [ 'France', 'Angola', 1 ],
       [ 'France', 'Senegal', 3 ],
       [ 'France', 'Mali', 3 ],
       [ 'France', 'Morocco', 3 ],
       [ 'France', 'South Africa', 1 ],
       [ 'Spain', 'Senegal', 1 ],
       [ 'Spain', 'Morocco', 3 ],
       [ 'Spain', 'South Africa', 1 ],
       [ 'England', 'Angola', 1 ],
       [ 'England', 'Senegal', 1 ],
       [ 'England', 'Morocco', 2 ],
       [ 'England', 'South Africa', 7 ],
       [ 'South Africa', 'China', 5 ],
       [ 'South Africa', 'India', 1 ],
       [ 'South Africa', 'Japan', 3 ],
       [ 'Angola', 'China', 5 ],
       [ 'Angola', 'India', 1 ],
       [ 'Angola', 'Japan', 3 ],
       [ 'Senegal', 'China', 5 ],
       [ 'Senegal', 'India', 1 ],
       [ 'Senegal', 'Japan', 3 ],
       [ 'Mali', 'China', 5 ],
       [ 'Mali', 'India', 1 ],
       [ 'Mali', 'Japan', 3 ],
       [ 'Morocco', 'China', 5 ],
       [ 'Morocco', 'India', 1 ],
       [ 'Morocco', 'Japan', 3 ]";
      
      
      if (isset($_GET['value'])) {
       $GETtitle = $_GET['title'];
       $GETlabel = $_GET['label'];
       if (strpos($GETlabel, ",") === false) $GETlabel .= ",";
       $GETvalue = $_GET['value'];
       $GETdata = $_GET['data'];
      }
      
      echo " google.load('visualization', '1', {packages:['corechart']}); " . "\n";
      echo ' google.setOnLoadCallback(drawChart); ' . "\n";
      echo ' function drawChart() { ' . "\n";
      echo ' var data = new google.visualization.DataTable(); ' . "\n";
      echo "     data.addColumn('string', '" . str_replace(",","",substr($GETlabel,0,strpos($GETlabel,","))) . "'); " . "\n";
      echo "     data.addColumn('string', '" . str_replace(",","",substr($GETlabel,strpos($GETlabel,","))) . "'); " . "\n";
      echo "     data.addColumn('number', '" . $GETvalue . "'); " . "\n";
      echo "     data.addRows([ " . "\n";
      //echo " ['" . $GETlabel . "','" . str_replace(",", "','", str_replace("'", "", $GETvalue)) . "'] \n";
      echo str_replace("~,", "',", str_replace("[~", "['", str_replace(",]", ",0]", str_replace(",,", ",0,", str_replace(",]", ",0]", str_replace(substr('\\',0,1),'',$GETdata))))));
      echo "        ]);\n";
      
      echo "        var options = { ";
      echo "          width: 700, ";
      echo "          height: 400, ";
      echo "           sankey: { ";
      echo "              link: { color: { fill: 'white', stroke: 'teal', strokeWidth: 2,  fillOpacity: 0.4  } }, ";
      echo "                 node: { color: { fill: '#a61d4c' }, label: { color: '#871b47' } }, ";
      echo "            } ";
      echo "          }; \n";


      echo " var chart = new google.visualization.Sankey(document.getElementById('chart_div')); \n";
      echo " chart.draw(data, options); \n } \n";
      
      echo " </script> \n";
      echo " </head> \n";
      echo " <body onload='setTimeout(later, 2 * 1000);' style='background-color: silver;'> \n";
  echo "<script type='text/javascript' src=\"https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['sankey']}]}\"></script>" . "\n";
      echo " <h1>" . $GETtitle . " Sankey Diagram</h1> \n";

      echo '<div id="chart_div" style="width: 900px; height: 300px;"></div>' . " \n";
      echo '<br><br><br><br><br><br><br><a title="Another Sankey Diagram" href="./sankey_diagram.php">Another Sankey Diagram?</a>' . " \n";
      if (!isset($_GET['value'])) {
      
        echo '<' . 'script' . '>' . "\n " . " function later() { \n" . ' var datalineprefix = " "; ' . "\n";
        echo ' var datalinesuffix = ""; ' . "\n";
        echo ' var extra = ""; ' . "\n";
        echo ' var  comma=""; ' . "\n";
        echo ' var thisline = 1; ' . "\n";
        echo ' var ii = 0; ' . "\n";
        echo ' var thisdef = "0"; ' . "\n";
        echo ' var totalleft = 100.0; ' . "\n";
        echo ' var title = prompt("Enter Sankey Diagram Title", "' . $GETtitle . '"); ' . "\n";
        echo ' if (title != null) { ' . "\n";
        echo ' var label = prompt("Enter Sankey Diagram From,To Concepts (separated by ,)", "' . $GETlabel . '"); ' . "\n";
        echo ' var value = prompt("Enter Sankey Diagram " + label + " Value Concept", "' . $GETvalue . '"); ' . "\n";
        echo ' if (value.indexOf(",") != (0 - 1)) { ' . "\n";
        echo '  for (ii=0; ii<value.length; ii++) { if (value.substring(ii,(ii+1)) == ",") thisdef = thisdef + ",0"; } ' . "\n";
        echo ' } ' . "\n";
        echo ' var datac = ""; ' . "\n";
        echo ' var sq = "' . "'" . '"; ' . "\n";
        echo ' datalineprefix = prompt("Enter " + label + " " + thisline, ""); ' . "\n";
        echo ' while (datalineprefix.length != 0 && (value.indexOf("ercent") == (0 - 1) || value.indexOf("  ercent ") != (0 - 1) || (value.indexOf("ercent") != (0 - 1) && totalleft > 0))) { ' . "\n";
        echo ' if (datalinesuffix.length != 0) datalineprefix = prompt("Enter " + label + " " + thisline + " (for no more hit Cancel button)", ""); ' . "\n";
        echo ' if (datalineprefix == null) { ' . "\n";
        echo '     datalineprefix = ""; ' . "\n";
        echo '     totalleft = 0; ' . "\n";
        echo ' } else if (datalineprefix.length != 0) { ' . "\n";
        echo '     extra = "";  ' . "\n";
        echo '     if (value.indexOf("ercent") != (0 - 1) && value.indexOf("  ercent ") == (0 - 1)) extra = " (for " + totalleft + " enter nothing or hit Cancel button)";  ' . "\n";
        echo '     datalinesuffix = prompt("Enter " + datalineprefix + " " + value.replace("  ercent ", "") + " " + thisline + extra, thisdef); ' . "\n";
        echo '     datalineprefix = datalineprefix.replace(\'"\',"\'"); ' . "\n";
        echo '     if (datalineprefix.indexOf(",") != -1 && datalineprefix.indexOf("\'") == -1) datalineprefix = datalineprefix.replace(",","\',\'"); ' . "\n";
        //echo '     datalineprefix = datalineprefix.replace(String.fromCharCode(92),""); ' . "\n";
        echo '     if (datalinesuffix == null && value.indexOf("ercent") != (0 - 1) && value.indexOf("  ercent ") == (0 - 1)) datalinesuffix = totalleft; ' . "\n";
        echo '     if (datalinesuffix == null) datalinesuffix = "0"; ' . "\n";
        echo '     if (datalinesuffix.length == 0) { ' . "\n";
        echo '       datalinesuffix = eval(totalleft); ' . "\n";
        echo '       totalleft = 0; ' . "\n";
        echo '     } else if (eval(totalleft) == eval(datalinesuffix) && value.indexOf("ercent") != (0 - 1) && value.indexOf("  ercent ") == (0 - 1)) { ' . "\n";
        echo '       totalleft = 0; ' . "\n";
        echo '     } else if (eval(datalinesuffix) > eval(totalleft) && value.indexOf("ercent") != (0 - 1) && value.indexOf("  ercent ") == (0 - 1)) { ' . "\n";
        echo '       datalinesuffix = eval(totalleft); ' . "\n";
        echo '       totalleft = 0; ' . "\n";
        echo '     } else if (eval(datalinesuffix) > eval(totalleft) && value.indexOf("ercent") == (0 - 1) && value.indexOf("  ercent ") == (0 - 1)) { ' . "\n";
        echo '       value = value + "  ercent "; ' . "\n";
        echo '     } else { ' . "\n";
        echo '       totalleft = eval(totalleft) - eval(datalinesuffix); ' . "\n";
        echo '     } ' . "\n";
        echo '     datac = datac + comma + " [~" + datalineprefix + "~," + datalinesuffix + "] "; ' . "\n";
        echo '     comma=","; ' . "\n";
        echo '     thisline++; ' . "\n";
        echo '   } ' . "\n";
        echo ' } ' . "\n";
        echo ' window.location = "./sankey_diagram.php?title=" + title + "&label=" + label + "&value=" + value.replace("  ercent ", "") + "&data=" + datac; ' . "\n";
        echo "} \n" . "} \n" . '</' . 'script' . '>' . "\n";
      } 
    ?>
  </body>
</html>
