<?php

include_once('include/common.inc.php');

function displayValue($key, $value, $mode)
{
    global $db, $schemas;
    $ignoreKeys = Array("metadata", "metaTags", "statistics", "rtkURLs", "rtkDescriptions");
    if ($mode == "view") {
        if (strpos($key, "_") === 0 || in_array($key, $ignoreKeys))
            return;
        echo "<tr>";

        echo "<td class='$key'>";
        if (isset($schemas['agency']["properties"][$key])) {
            echo $schemas['agency']["properties"][$key]['x-title'] . "<br><small>" . $schemas['agency']["properties"][$key]['description'] . "</small>";
        }
        echo "</td><td>";
        if (is_array($value)) {
            echo "<ol>";
            foreach ($value as $subkey => $subvalue) {

                echo "<li ";
                if (isset($schemas['agency']["properties"][$key]['x-property'])) {
                    echo ' property="' . $schemas['agency']["properties"][$key]['x-property'] . '" ';
                }
                if (isset($schemas['agency']["properties"][$key]['x-itemprop'])) {
                    echo ' itemprop="' . $schemas['agency']["properties"][$key]['x-itemprop'] . '" ';
                }
                echo " >";

                echo "$subvalue</li>";
            }
            echo "</ol></td></tr>";
        } else {
            if (isset($schemas['agency']["properties"][$key]['x-property'])) {
                echo '<span property="' . $schemas['agency']["properties"][$key]['x-property'] . '">';
            } else {
                echo "<span>";
            }

            if ((strpos($key, "URL") > 0 || $key == 'website') && $value != "") {
                echo "<a " . ($key == 'website' ? 'itemprop="url"' : '') . " href='$value'>$value</a>";
            } else if ($key == 'abn') {
                echo "<a href='http://www.abr.business.gov.au/SearchByAbn.aspx?SearchText=$value'>$value</a>";
            } else {
                echo "$value";
            }
            echo "</span>";
        }
        echo "</td></tr>";
    }
    if ($mode == "edit") {
        if (is_array($value)) {
            echo '<div class="row">
						<div class="seven columns">
							<fieldset>
								<h5>' . $key . '</h5>';
            foreach ($value as $subkey => $subvalue) {
                echo "<label>$subkey</label><input  class='input-text' type='text' id='$key$subkey' name='$key" . '[' . $subkey . "]' value='$subvalue'/></tr>";
            }
            echo "</fieldset>
						</div>
					</div>";
        } else {
            if (strpos($key, "_") === 0) {
                echo "<input type='hidden' id='$key' name='$key' value='$value'/>";
            } else if ($key == "parentOrg") {
                echo "<label for='$key'>$key</label><select  id='$key' name='$key'><option value=''> Select... </option>";
                $rows = $db->get_view("app", "byDeptStateName")->rows;
//print_r($rows);
                foreach ($rows as $row) {
                    echo "<option value='{$row->value}'" . (($row->value == $value) ? "SELECTED" : "") . " >" . str_replace("Department of ", "", $row->key) . "</option>";
                }
                echo " </select>";
            } else {
                echo "<label>$key</label><input  class='input-text' type='text' id='$key' name='$key' value='$value'/>";
                if ((strpos($key, "URL") > 0 || $key == 'website') && $value != "") {
                    echo "<a " . ($key == 'website' ? 'itemprop="url"' : '') . " href='$value'>view</a>";
                }
                if ($key == 'abn') {
                    echo "<a href='http://www.abr.business.gov.au/SearchByAbn.aspx?SearchText=$value'>view abn</a>";
                }
            }
        }
    }
// 
}

function addDefaultFields($row)
{
    global $schemas;
    $defaultFields = array_keys($schemas['agency']['properties']);
    foreach ($defaultFields as $defaultField) {
        if (!isset($row[$defaultField])) {
            if ($schemas['agency']['properties'][$defaultField]['type'] == "string") {
                $row[$defaultField] = "";
            }
            if ($schemas['agency']['properties'][$defaultField]['type'] == "array") {
                $row[$defaultField] = Array("");
            }
        } else if ($schemas['agency']['properties'][$defaultField]['type'] == "array") {
            if (is_array($row[$defaultField])) {
                $row[$defaultField][] = "";
                $row[$defaultField][] = "";
                $row[$defaultField][] = "";
            } else {
                $value = $row[$defaultField];
                $row[$defaultField] = Array($value);
                $row[$defaultField][] = "";
                $row[$defaultField][] = "";
            }
        }
    }
    return $row;
}

$db = $server->get_db('disclosr-agencies');

if (isset($_REQUEST['id'])) {
//get an agency record as json/html, search by name/abn/id
// by name = startkey="Ham"&endkey="Ham\ufff0"
// edit?

$obj = $db->get($_REQUEST['id']);
include_header(isset($obj->name) ? $obj->name : "");
//print_r($row);
if (sizeof($_POST) > 0) {
//print_r($_POST);
    foreach ($_POST as $postkey => $postvalue) {
        if ($postvalue == "") {
            unset($_POST[$postkey]);
        }
        if (is_array($postvalue)) {
            if (count($postvalue) == 1 && $postvalue[0] == "") {
                unset($_POST[$postkey]);
            } else {
                foreach ($_POST[$postkey] as $key => &$value) {
                    if ($value == "") {
                        unset($_POST[$postkey][$key]);
                    }
                }
            }
        }
    }
    if (isset($_POST['_id']) && $db->get_rev($_POST['_id']) == $_POST['_rev']) {
        echo "Edited version was latest version, continue saving";
        $newdoc = $_POST;
        $newdoc['metadata']['lastModified'] = time();
        $obj = $db->save($newdoc);
    } else {
        echo "ALERT doc revised by someone else while editing. Document not saved.";
    }
}

$mode = "view";
$rowArray = object_to_array($obj);
ksort($rowArray);
if ($mode == "edit") {
    $row = addDefaultFields($rowArray);
} else {
    $row = $rowArray;
}

if ($mode == "view") {
    echo ' <div class="container-fluid">
      <div class="row-fluid">
        <div class="span3">
          <div class="well sidebar-nav">
            <ul class="nav nav-list">
              <li class="nav-header">Statistics</li>';

    if (isset($row['statistics']['employees'])) {
        echo '<div><i class="icon-user" style="float:left"></i><p style="margin-left:16px;">';
        $keys = array_keys($row['statistics']['employees']);
        $lastkey = $keys[count($keys) - 1];
        echo $row['statistics']['employees'][$lastkey]['value'] . ' employees <small>(' . $lastkey . ')</small>';
        echo '</div>';
    }
    if (isset($row['statistics']['budget'])) {
        echo '<div><i class="icon-shopping-cart" style="float:left"></i><p style="margin-left:16px;">';
        $keys = array_keys($row['statistics']['budget']);
        $lastkey = $keys[count($keys) - 1];
        echo "$" . number_format(floatval($row['statistics']['budget'][$lastkey]['value'])) . ' <small>(' . $lastkey . ' budget)</small>';
        echo '</div>';
    }
    echo '  </ul>
          </div><!--/.well -->
        </div><!--/span-->
        <div class="span9">';
    echo '<div itemscope itemtype="http://schema.org/GovernmentOrganization" typeof="schema:GovernmentOrganization org:Organization" about="#' . $row['_id'] . '">';
    echo '<div class="hero-unit">
            <h1 itemprop="name">' . $row['name'] . '</h1>';
    if (isset($row['description'])) {
        echo '<p>' . $row['description'] . '</p>';
    }
    echo '</div><table width="100%">';
    echo "<tr><th>Field Name</th><th>Field Value</th></tr>";
}
if ($mode == "edit") {
?>
<input id="addfield" type="button" value="Add Field"/>
<script>
    window.onload = function () {
        $(document).ready(function () {
            // put all your jQuery goodness in here.
            // http://charlie.griefer.com/blog/2009/09/17/jquery-dynamically-adding-form-elements/
            $('#addfield').click(function () {
                var field_name = window.prompt("fieldname?", "");
                if (field_name != "") {
                    $('#submitbutton').before($('<span></span>')
                        .append("<label>" + field_name + "</label>")
                        .append("<input  class='input-text' type='text' id='" + field_name + "' name='" + field_name + "'/>")
                    );
                }
            });
        });
    };
</script>
<form id="editform" class="nice" method="post">
    <?php

    }
    foreach ($row as $key => $value) {
        echo displayValue($key, $value, $mode);
    }
    if ($mode == "view") {
        echo "</table></div>";
        echo '         </div><!--/span-->
          </div><!--/row-->
        </div><!--/span-->
      </div><!--/row-->';
    }
    if ($mode == "edit") {
        echo '<input id="submitbutton" type="submit"/></form>';
    }
    } else {
// show all list
        include_header('Agencies');
        echo ' <div class="container-fluid">
      <div class="row-fluid">
        <div class="span3">
          <div class="well sidebar-nav">
            <ul class="nav nav-list">
              <li class="nav-header">Sidebar</li>';
        echo '  </ul>
          </div><!--/.well -->
        </div><!--/span-->
        <div class="span9">
          <div class="hero-unit">
            <h1>Australian Government Agencies</h1>
            <p>Explore collected information about Australian Government Agencies below.</p>

          </div>
          <div class="row-fluid">
            <div class="span4">';
        try {
            $rows = $db->get_view("app", "byCanonicalName")->rows;
            //print_r($rows);
            $rowCount = count($rows);
            foreach ($rows as $i => $row) {
                if ($i % ($rowCount / 3) == 0 && $i != 0 && $i != $rowCount - 2) echo '</div><div class="span4">';
                //   print_r($row);
                echo '<span itemscope itemtype="http://schema.org/GovernmentOrganization" typeof="schema:GovernmentOrganization foaf:Organization" about="getAgency.php?id=' . $row->value->_id . '">
<a href="getAgency.php?id=' . $row->value->_id . '" rel="schema:url foaf:page" property="schema:name foaf:name" itemprop="url"><span itemprop="name">' .
                    (isset($row->value->name) ? $row->value->name : "ERROR NAME MISSING")
                    . '</span></a></span><br><br>';
            }

        } catch (SetteeRestClientException $e) {
            setteErrorHandler($e);
        }
        echo '         </div><!--/span-->
          </div><!--/row-->
        </div><!--/span-->
      </div><!--/row-->';
    }

    include_footer();
    ?>

