Renamed main CSS and map JS file due to recent changes.
authorLennard de Rijk <ljvderijk@gmail.com>
Thu, 30 Jul 2009 14:02:23 +0200
changeset 2697 91f495e886f8
parent 2696 c76c9c5916bd
child 2698 5783338b2c8d
Renamed main CSS and map JS file due to recent changes.
app/soc/content/css/soc-090708.css
app/soc/content/css/soc-090730.css
app/soc/content/js/map-090420.js
app/soc/content/js/map-090730.js
app/soc/templates/soc/base.html
app/soc/templates/soc/organization/home.html
app/soc/templates/soc/role/edit.html
--- a/app/soc/content/css/soc-090708.css	Thu Jul 30 14:00:37 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,865 +0,0 @@
-/*
-Copyright 2009 the Melange authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
- */
-
-/*
- * STANDARD HTML TAGS
- */
-@import '/soc/content/css/ui.all.css';
-body {
-  background-color: white;
-  color: black;
-
-  font-family: Arial, sans-serif;
-  font-size: medium;
-
-  margin: 8px;
-  margin-top: 3px;
-}
-
-img {
-  border: 0;
-}
-
-form {
-  margin: 0;
-  padding: 0;
-}
-
-li {
-  margin-bottom: 0.25em;
-}
-
-/* HEADERS */
-h1 {
-  font-size: x-large;
-  margin-top: 0px;
-}
-
-h2 {
-  font-size: large;
-}
-
-h3 {
-  font-size: medium;
-}
-
-h4 {
-  font-size: small;
-}
-
-/* PRE-FORMATTED TEXT */
-pre, code {
-  color: #007000;
-  font-family: "bogus font here", monospace;
-  font-size: 100%;
-}
-
-pre {
-  border: 1px solid silver;
-  background-color: #f5f5f5;
-  padding: 0.5em;
-  overflow: auto;
-  margin: 2em;
-}
-
-pre ins {
-  color: #cc0000;
-  font-weight: bold;
-  text-decoration: none;
-}
-
-/* LINKS AND ANCHORS */
-a:link {
-  color: #0000cc;
-}
-
-a:active {
-  color: #cc0000;
-}
-
-a:visited {
-  color: #551a8b;
-}
-
-a.selected, .selected a, .selected {
-  color: black;
-  font-weight: bold;
-  text-decoration: none;
-}
-
-a.novisit {
-  color: #2a55a3;
-}
-
-a.noul, a.noulv {
-  color: #4182fa; /* #93b7fa; */
-  text-decoration: none;
-}
-
-a:hover.noul {
-  text-decoration: underline;
-}
-
-a:visited.noul {
-  color: #a32a91; /* #2a55a3; */
-}
-
-
-/* Styles used by Django Forms */
-ul.errorlist {
-  color: #FF0000;
-  font-size: small;
-}
-
-
-/* TABLES */
-table {
-  border-collapse: collapse;
-}
-
-th, td {
-  /*padding: 0;*/
-  padding:2px 5px;
-  vertical-align: top;
-  text-align: left;
-}
-
-/* FORM FIELDS */
-td.formfieldrequired {
-  font-style: italic;
-  font-size: small;
-  text-align: center;
-}
-
-td.formfieldhelptext {
-  font-style: italic;
-  font-size: small;
-  padding: 5px;
-}
-
-td.formfielderror {
-  color: #FF0000;
-  font-size: small;
-}
-
-td.formfieldheading {
-  font-weight: bold;
-  font-size: small;
-}
-
-td.formfieldlabel {
-  font-weight: bold;
-  font-size: small;
-  text-align: right;
-}
-
-td.twolineformfieldlabel {
-  font-weight: bold;
-  font-size: small;
-  text-align: left;
-}
-
-td.twolineformfieldlabel {
-  font-weight: bold;
-  font-size: small;
-}
-
-td.twolineformfielderrorlabel {
-  font-weight: bold;
-  color: #FF0000;
-  font-size: small;
-}
-
-td.formfieldvalue {
-  text-align: left;
-}
-
-td.formfieldvalue input {
-  width: 100%;
-}
-
-td.formfieldvalue input[type=checkbox] {
-  width: auto;
-}
-
-td.formfieldvalue input:focus {
-  background-color: #FFFF99;
-  font-weight: bold;
-}
-
-td.formfieldvalue textarea {
-  width: 100%;
-}
-
-/*td.formfieldvalue select {
-  width: 100%;
-}*/
-
-td.formfielderrorlabel, td.warning, span.formfielderrorlabel {
-  font-weight: bold;
-  color: #FF0000;
-  font-size: small;
-  text-align: right;
-}
-
-/* TABLE QUEUES (used with .list) */
-table#queues {
-  border-collapse: collapse;
-  width: 100%;
-}
-
-table#queues tr {
-  border-bottom: thin solid lightgray;
-}
-
-table#queues td {
-  padding: 2px;
-}
-
-/* TOOLTIPS */
-
-#purr-container {
-  position: fixed;
-  bottom: 0;
-  right: 0;
-}
-
-.tooltip {
-  position: relative;
-  width: 300px;
-}
-
-.tooltip .close {
-  position: absolute;
-  top: 12px;
-  right: 12px;
-  display: block;
-  width: 18px;
-  height: 17px;
-  text-indent: -9999px;
-  background: url('/soc/content/images/purrClose.png') no-repeat 0 10px;
-}
-
-.tooltip-body {
-  min-height: 50px;
-  padding: 22px 22px 0 22px;
-  background: url('/soc/content/images/purrTop.png') no-repeat left top;
-  color: #f9f9f9;
-}
-
-.tooltip-body img {
-  width: 50px;
-  margin: 0 10px 0 0;
-  float: left;
-}
-
-.tooltip-body h3 {
-  margin: 0;
-  font-size: 1.1em;
-}
-
-.tooltip-body p {
-  margin: 5px 0 0 60px;
-  font-size: 0.8em;
-  line-height: 1.4em;
-}
-
-.tooltip-bottom {
-  height: 22px;
-  background: url('/soc/content/images/purrBottom.png') no-repeat left top;
-}
-
-/*
- * PAGE ELEMENTS
- */
-
-#title {
-  border-top: 1px solid #3366cc;
-  background-color: #e5ecf9;
-  font-size: large;
-  font-weight: bold;
-  margin: 0;
-  padding: 0;
-  padding-top: 1px;
-  padding-bottom: 1px;
-  margin-top: 5px;
-  margin-left: 200px;
-  padding-left: 3px;
-}
-
-#notice {
-  margin-left: 200px;
-  padding: 3px;
-}
-
-#logo {
-  padding-right: 18px;
-  position: absolute;
-  left: 0;
-  top: -5px;
-}
-
-#login {
-  text-align: right;
-}
-
-#badge {
-  clear: both;
-  margin-top: 3.5em;
-  margin-bottom: 1em;
-  height: 53px;
-  font-style: italic;
-}
-
-#body {
-  border-left: 1px dotted silver;
-  margin-left: 200px;
-  margin-right: 25px;
-  padding-left: 18px;
-  padding-bottom: 25px;
-}
-
-#body .buttons {
-  margin-right: 4px;
-  margin-top: 20px;
-}
-
-#body a.button, input[type^="submit"], input[type^="button"] {
-  margin: 0;
-  padding: 2px 5px 2px 5px;
-  font-family: Arial, Sans-serif;
-  font-size: 12px;
-  text-decoration: none;
-  color: #222;
-  cursor: default;
-  background: #ddd url("/soc/content/images/button-background.gif") repeat-x 0 0;
-  border: 1px solid #aaa;
-}
-
-#body a.button:hover, input[type^="submit"]:hover, input[type^="button"]:hover {
-  border-color: #9cf #69e #69e #7af;
-}
-
-#header {
-  height: 50px;
-  margin-bottom: 11px;
-  position: relative;
-}
-
-#footer {
-  clear: both;
-  text-align: center;
-  margin-top: 3.5em;
-  margin-bottom: 1em;
-  background-image: url("http://www.google.com/images/art.gif");
-  height: 53px;
-  background-repeat: no-repeat;
-  background-position: left center;
-  padding-left: 125px;
-}
-
-#footer .text {
-  padding-top: 20px;
-}
-
-#created {
-  font-size: x-small;
-  color:#C0C0C0;
-  text-align: right;
-}
-
-/* Google Map */
-#role_profile_map {
-  height: 240px;
-  width: 320px;
-}
-
-#org_home_extras {
-  margin:2em 0em 2em;
-  min-height:500px;
-}
-
-/* Organization home gmap */
-#org_home_map {
-  height: 500px;
-  width: 100%;
-}
-
-/* SIDEBAR MENU */
-#side {
-  width: 200px;
-  margin-bottom: 3em;
-  float: left;
-  font-size: small;
-}
-
-#menu ul {
-  margin: 0;
-  padding: 0;
-  list-style-type: none;
-  margin-bottom: 1em;
-  font-size: 95%;
-}
-
-#menu ul ul {
-  margin-left: 10px;
-  margin-bottom: 0;
-}
-
-#menu li {
-  margin-top: 4px;
-  list-style-type: none;
-  list-style-image: none;
-}
-
-#menu img {
-  margin-right: 4px;
-}
-
-#menu li.leaf {
-  padding-left: 14px;
-}
-
-#menu h4 {
-  margin: 0;
-  padding: 0;
-  margin-bottom: 1em;
-}
-
-/*  */
-
-span.unread {
-  font-weight: bold;
-  color: #FF0000;
-}
-
-span.edited {
-  color: #808080;
-}
-
-/* SEARCH FIELD */
-#search {
-  margin-top: 2em;
-}
-
-#search .header {
-  font-weight: bold;
-  font-size: 90%;
-  margin-bottom: 1px;
-}
-
-#search .button {
-  margin-top: 1px;
-}
-
-#search .input input {
-  width: 125px;
-}
-
-/* BLOG FEEDS */
-.blog {
-  border: 10px solid #e5ecf9;
-  border-top: 1px solid #3366cc;
-}
-
-.blog h2 {
-  margin-top: 0.1em;
-  background-color: #e5ecf9;
-}
-
-.blog h2 a {
-  text-decoration: none;
-  color: black;
-}
-
-.blog h2 a:visited {
-  text-decoration: none;
-  color: black;
-}
-
-
-.blog .entry {
-  margin-bottom: 1em;
-}
-
-.blog .title {
-   font-size: medium;
-}
-
-.blog .author {
-  color: gray;
-  margin-bottom: 0.5em;
-}
-
-.blog .snippet {
-  background-color: white;
-}
-
-/* LIST */
-.list {
-  background-color: #E5ECF9;
-  border: 1px solid  #93b7fa;
-  border-bottom: 2px solid #93b7fa;
-  padding: 3px;
-  -moz-border-radius: 5px 5px 0px 0px;
-}
-
-.list .pagination {
-  text-align: right;
-  padding: 3px;
-}
-
-.list table{
-  background-color: white;
-}
-
-.list table th {
-  background-color: #eeeeec;
-  border-right: 1px solid lightgray;
-  border-top: 1px solid lightgray;
-}
-
-.list table tr.on {
-  background-color: #ff9;
-  cursor: hand;
-  cursor: pointer;
-}
-
-.list table tr.off {
-  background-color: #fff;
-}
-
-.list table td.last {
-  border-right: 1px solid lightgray;
-}
-
-.list table .first {
-  border-left: 1px solid lightgray;
-}
-
-.list table td.no_hand {
-  cursor: default;
-}
-
-/*
- * STUDENT PROPOSAL REVIEWS
- */
-.studentproposalreview {
-  font-size: small;
-}
-
-.studentproposalreview .title {
-  background-color: #e5ecf9;
-}
-
-.studentproposalreview .student{
-  background: #d0f5a9;
-}
-
-.studentproposalcomment-public,
-.studentproposalreview-public .other {
-  background: #f5f6ce;
-}
-
-.studentproposalcomment-private,
-.studentproposalreview-private .other {
-  background: #D2EDF6;
-}
-
-/*
- * CUSTOM CLASSES
- */
-
-.assignedslot {
-  background-color: #d0f5a9;
-}
-
-.todo {
-  color: #cc0000;
-  font-size: 80%;
-}
-
-.newmark {
-  color: red;
-  font-size: 80%;
-  vertical-align: top;
-}
-
-.error {
-  color: red;
-}
-
-.notice {
-  background:#fad163;
-  font-size: small;
-  font-weight: bold;
-}
-
-.fieldhelptext {
-  width: 450px;
-  background:#fad163;
-  font-size: small;
-  border: 1px solid black;
-}
-
-.rounded_ul { background: url(/soc/content/images/ul.gif) no-repeat top left; }
-.rounded_ur { background: url(/soc/content/images/ur.gif) no-repeat top right; }
-.rounded_ll { background: url(/soc/content/images/ll.gif) no-repeat bottom left; }
-.rounded_lr { background: url(/soc/content/images/lr.gif) no-repeat bottom right; }
-
-/* Disabled text. */
-.disabled {
-  color: gray;
-}
-
-.plaintext {
-  background:transparent none repeat scroll 0 0;
-  border:0 none;
-  color:black;
-}
-
-/* Surveys */
-
-
-div #survey_widget {
-  margin: 20px;
-  -moz-border-radius: 5px;
-  -webkit-border-radius: 5px;
-  background-color: #FFFEEB;
-  border: 5px solid #F7CA75;
-  padding: 15px;
-  /*max-width: 700px;*/
-}
-
-
-div #survey_widget.survey_admin {
-/* TODO(ajaksu) remove if unnecessary */
-}
-
-div #survey_widget table {
-  width:95%
-}
-
-div #survey_widget th,
-div #survey_widget td {
-  padding-top: 15px;
-}
-
-/* fields */
-
-div #survey_widget textarea.long_answer {
-  padding: 10px;
-}
-
-div #survey_widget textarea.tooltip_entry {
-  padding: 10px;
-  width: 80%;
-}
-
-div #survey_widget textarea {
-  width: 90% !important;
-}
-
-div #survey_widget td.formfieldlabel {
-  font-size: medium;
-}
-
-#survey_widget.view input[disabled="disabled"],
-#survey_widget.view textarea[disabled="disabled"],
-#survey_widget.view select[disabled="disabled"],
-#survey_widget.view option {
-  color: black;
-}
-
-#survey_widget.quant_radio input,
-#survey_widget.quant_radio label {
-  margin: 4px;
-}
-
-/* options */
-
-div #survey_options button {
-  display: block;
-  margin: 10px 0 0;
-}
-
-div #survey_options {
-  margin: 20px 0 0 0;
-}
-
-div #survey_widget a.delete {
-  float:left;
-  margin:-1px 7px;
-}
-
-div #survey_widget th label {
-  /*display: block;*/
-  max-width: 180px;
-}
-
-div #survey_widget tr.role-specific label {
-  color: #666666;
-}
-
-
-span.formfieldlabel {
-  font-weight: bold;
-  font-size: small;
-}
-
-.sortable_li {
-  border: solid 1px !important;
-  padding: 5px !important;
-}
-
-.sortable_li,
-div #survey_widget fieldset {
-  -moz-border-radius: 5px;
-  -webkit-border-radius: 5px;
-}
-
-div #survey_widget select {
-  display: inline;
-}
-
-div #survey_widget td {
-}
-
-div #survey_widget label {
-}
-
-div #survey_widget fieldset select {
-}
-
-div #survey_widget fieldset textarea,
-div #survey_widget fieldset input {
-  margin: 10px;
-}
-
-div #survey_widget textarea.comment{
-  margin-bottom: 30px;
-}
-
-div #survey_widget td > fieldset > label {
-  font-size: 11px;
-}
-
-.ui-dialog-content {
-  padding: 0px !important;
-  margin: 5px !important;
-}
-
-#dialog {
-  font-size: 62.5%;
-}
-
-#dialog input {
-  margin: 5px;
-}
-
-#dialog label, #dialog input {
-  display: block;
-}
-
-#dialog p {
-  text-align: center;
-  padding-left: 0;
-}
-
-#dialog input.text {
-  margin-bottom: 12px;
-  width: 95%;
-  padding: .4em;
-}
-
-#dialog fieldset {
-  padding: 0;
-  border: 0;
-  margin-top: 25px;
-}
-
-#dialog h1 {
-  font-size: 1.2em;
-  margin: .6em 0;
-}
-
-.ui-button {
-  outline: 0;
-  margin: 0;
-  padding: .4em 1em .5em;
-  text-decoration: none;
-  cursor:pointer;
-  position: relative;
-  text-align: center;
-}
-
-.ui-dialog .ui-state-highlight,
-.ui-dialog .ui-state-error {
-  padding: .3em;
-}
-
-.pick_multi input,
-.quant_radio input {
-  display: inline;
-  width: auto !important;
-}
-
-/* NEWS FEED FEEDS */
-.news_feed {
-  border: 10px solid #e5ecf9;
-  border-top: 1px solid #3366cc;
-  float:left;
-}
-
-.news_feed .inner{
-  padding:0 20px;
-}
-
-.news_feed h2 {
-  margin-top: 0.1em;
-  background-color: #e5ecf9;
-}
-
-.news_feed h2 a {
-  text-decoration: none;
-  color: black;
-}
-
-.news_feed h2 a:visited {
-  text-decoration: none;
-  color: black;
-}
-
-.news_feed .entry {
-  margin:1em 0.3em;
-}
-
-.news_feed .title {
-   font-size: medium;
-}
-
-.news_feed .time {
-  color: gray;
-  margin-bottom: 0.5em;
-}
-
-.news_feed .snippet {
-  background-color: white;
-}
-
-a#feed_icon img{
-  margin:-1px 0;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/css/soc-090730.css	Thu Jul 30 14:02:23 2009 +0200
@@ -0,0 +1,865 @@
+/*
+Copyright 2009 the Melange authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+ */
+
+/*
+ * STANDARD HTML TAGS
+ */
+@import '/soc/content/css/ui.all.css';
+body {
+  background-color: white;
+  color: black;
+
+  font-family: Arial, sans-serif;
+  font-size: medium;
+
+  margin: 8px;
+  margin-top: 3px;
+}
+
+img {
+  border: 0;
+}
+
+form {
+  margin: 0;
+  padding: 0;
+}
+
+li {
+  margin-bottom: 0.25em;
+}
+
+/* HEADERS */
+h1 {
+  font-size: x-large;
+  margin-top: 0px;
+}
+
+h2 {
+  font-size: large;
+}
+
+h3 {
+  font-size: medium;
+}
+
+h4 {
+  font-size: small;
+}
+
+/* PRE-FORMATTED TEXT */
+pre, code {
+  color: #007000;
+  font-family: "bogus font here", monospace;
+  font-size: 100%;
+}
+
+pre {
+  border: 1px solid silver;
+  background-color: #f5f5f5;
+  padding: 0.5em;
+  overflow: auto;
+  margin: 2em;
+}
+
+pre ins {
+  color: #cc0000;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+/* LINKS AND ANCHORS */
+a:link {
+  color: #0000cc;
+}
+
+a:active {
+  color: #cc0000;
+}
+
+a:visited {
+  color: #551a8b;
+}
+
+a.selected, .selected a, .selected {
+  color: black;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+a.novisit {
+  color: #2a55a3;
+}
+
+a.noul, a.noulv {
+  color: #4182fa; /* #93b7fa; */
+  text-decoration: none;
+}
+
+a:hover.noul {
+  text-decoration: underline;
+}
+
+a:visited.noul {
+  color: #a32a91; /* #2a55a3; */
+}
+
+
+/* Styles used by Django Forms */
+ul.errorlist {
+  color: #FF0000;
+  font-size: small;
+}
+
+
+/* TABLES */
+table {
+  border-collapse: collapse;
+}
+
+th, td {
+  /*padding: 0;*/
+  padding:2px 5px;
+  vertical-align: top;
+  text-align: left;
+}
+
+/* FORM FIELDS */
+td.formfieldrequired {
+  font-style: italic;
+  font-size: small;
+  text-align: center;
+}
+
+td.formfieldhelptext {
+  font-style: italic;
+  font-size: small;
+  padding: 5px;
+}
+
+td.formfielderror {
+  color: #FF0000;
+  font-size: small;
+}
+
+td.formfieldheading {
+  font-weight: bold;
+  font-size: small;
+}
+
+td.formfieldlabel {
+  font-weight: bold;
+  font-size: small;
+  text-align: right;
+}
+
+td.twolineformfieldlabel {
+  font-weight: bold;
+  font-size: small;
+  text-align: left;
+}
+
+td.twolineformfieldlabel {
+  font-weight: bold;
+  font-size: small;
+}
+
+td.twolineformfielderrorlabel {
+  font-weight: bold;
+  color: #FF0000;
+  font-size: small;
+}
+
+td.formfieldvalue {
+  text-align: left;
+}
+
+td.formfieldvalue input {
+  width: 100%;
+}
+
+td.formfieldvalue input[type=checkbox] {
+  width: auto;
+}
+
+td.formfieldvalue input:focus {
+  background-color: #FFFF99;
+  font-weight: bold;
+}
+
+td.formfieldvalue textarea {
+  width: 100%;
+}
+
+/*td.formfieldvalue select {
+  width: 100%;
+}*/
+
+td.formfielderrorlabel, td.warning, span.formfielderrorlabel {
+  font-weight: bold;
+  color: #FF0000;
+  font-size: small;
+  text-align: right;
+}
+
+/* TABLE QUEUES (used with .list) */
+table#queues {
+  border-collapse: collapse;
+  width: 100%;
+}
+
+table#queues tr {
+  border-bottom: thin solid lightgray;
+}
+
+table#queues td {
+  padding: 2px;
+}
+
+/* TOOLTIPS */
+
+#purr-container {
+  position: fixed;
+  bottom: 0;
+  right: 0;
+}
+
+.tooltip {
+  position: relative;
+  width: 300px;
+}
+
+.tooltip .close {
+  position: absolute;
+  top: 12px;
+  right: 12px;
+  display: block;
+  width: 18px;
+  height: 17px;
+  text-indent: -9999px;
+  background: url('/soc/content/images/purrClose.png') no-repeat 0 10px;
+}
+
+.tooltip-body {
+  min-height: 50px;
+  padding: 22px 22px 0 22px;
+  background: url('/soc/content/images/purrTop.png') no-repeat left top;
+  color: #f9f9f9;
+}
+
+.tooltip-body img {
+  width: 50px;
+  margin: 0 10px 0 0;
+  float: left;
+}
+
+.tooltip-body h3 {
+  margin: 0;
+  font-size: 1.1em;
+}
+
+.tooltip-body p {
+  margin: 5px 0 0 60px;
+  font-size: 0.8em;
+  line-height: 1.4em;
+}
+
+.tooltip-bottom {
+  height: 22px;
+  background: url('/soc/content/images/purrBottom.png') no-repeat left top;
+}
+
+/*
+ * PAGE ELEMENTS
+ */
+
+#title {
+  border-top: 1px solid #3366cc;
+  background-color: #e5ecf9;
+  font-size: large;
+  font-weight: bold;
+  margin: 0;
+  padding: 0;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  margin-top: 5px;
+  margin-left: 200px;
+  padding-left: 3px;
+}
+
+#notice {
+  margin-left: 200px;
+  padding: 3px;
+}
+
+#logo {
+  padding-right: 18px;
+  position: absolute;
+  left: 0;
+  top: -5px;
+}
+
+#login {
+  text-align: right;
+}
+
+#badge {
+  clear: both;
+  margin-top: 3.5em;
+  margin-bottom: 1em;
+  height: 53px;
+  font-style: italic;
+}
+
+#body {
+  border-left: 1px dotted silver;
+  margin-left: 200px;
+  margin-right: 25px;
+  padding-left: 18px;
+  padding-bottom: 25px;
+}
+
+#body .buttons {
+  margin-right: 4px;
+  margin-top: 20px;
+}
+
+#body a.button, input[type^="submit"], input[type^="button"] {
+  margin: 0;
+  padding: 2px 5px 2px 5px;
+  font-family: Arial, Sans-serif;
+  font-size: 12px;
+  text-decoration: none;
+  color: #222;
+  cursor: default;
+  background: #ddd url("/soc/content/images/button-background.gif") repeat-x 0 0;
+  border: 1px solid #aaa;
+}
+
+#body a.button:hover, input[type^="submit"]:hover, input[type^="button"]:hover {
+  border-color: #9cf #69e #69e #7af;
+}
+
+#header {
+  height: 50px;
+  margin-bottom: 11px;
+  position: relative;
+}
+
+#footer {
+  clear: both;
+  text-align: center;
+  margin-top: 3.5em;
+  margin-bottom: 1em;
+  background-image: url("http://www.google.com/images/art.gif");
+  height: 53px;
+  background-repeat: no-repeat;
+  background-position: left center;
+  padding-left: 125px;
+}
+
+#footer .text {
+  padding-top: 20px;
+}
+
+#created {
+  font-size: x-small;
+  color:#C0C0C0;
+  text-align: right;
+}
+
+/* Google Map */
+#role_profile_map {
+  height: 240px;
+  width: 320px;
+}
+
+#org_home_extras {
+  margin:2em 0em 2em;
+  min-height:500px;
+}
+
+/* Organization home gmap */
+#org_home_map {
+  height: 500px;
+  width: 100%;
+}
+
+/* SIDEBAR MENU */
+#side {
+  width: 200px;
+  margin-bottom: 3em;
+  float: left;
+  font-size: small;
+}
+
+#menu ul {
+  margin: 0;
+  padding: 0;
+  list-style-type: none;
+  margin-bottom: 1em;
+  font-size: 95%;
+}
+
+#menu ul ul {
+  margin-left: 10px;
+  margin-bottom: 0;
+}
+
+#menu li {
+  margin-top: 4px;
+  list-style-type: none;
+  list-style-image: none;
+}
+
+#menu img {
+  margin-right: 4px;
+}
+
+#menu li.leaf {
+  padding-left: 14px;
+}
+
+#menu h4 {
+  margin: 0;
+  padding: 0;
+  margin-bottom: 1em;
+}
+
+/*  */
+
+span.unread {
+  font-weight: bold;
+  color: #FF0000;
+}
+
+span.edited {
+  color: #808080;
+}
+
+/* SEARCH FIELD */
+#search {
+  margin-top: 2em;
+}
+
+#search .header {
+  font-weight: bold;
+  font-size: 90%;
+  margin-bottom: 1px;
+}
+
+#search .button {
+  margin-top: 1px;
+}
+
+#search .input input {
+  width: 125px;
+}
+
+/* BLOG FEEDS */
+.blog {
+  border: 10px solid #e5ecf9;
+  border-top: 1px solid #3366cc;
+}
+
+.blog h2 {
+  margin-top: 0.1em;
+  background-color: #e5ecf9;
+}
+
+.blog h2 a {
+  text-decoration: none;
+  color: black;
+}
+
+.blog h2 a:visited {
+  text-decoration: none;
+  color: black;
+}
+
+
+.blog .entry {
+  margin-bottom: 1em;
+}
+
+.blog .title {
+   font-size: medium;
+}
+
+.blog .author {
+  color: gray;
+  margin-bottom: 0.5em;
+}
+
+.blog .snippet {
+  background-color: white;
+}
+
+/* LIST */
+.list {
+  background-color: #E5ECF9;
+  border: 1px solid  #93b7fa;
+  border-bottom: 2px solid #93b7fa;
+  padding: 3px;
+  -moz-border-radius: 5px 5px 0px 0px;
+}
+
+.list .pagination {
+  text-align: right;
+  padding: 3px;
+}
+
+.list table{
+  background-color: white;
+}
+
+.list table th {
+  background-color: #eeeeec;
+  border-right: 1px solid lightgray;
+  border-top: 1px solid lightgray;
+}
+
+.list table tr.on {
+  background-color: #ff9;
+  cursor: hand;
+  cursor: pointer;
+}
+
+.list table tr.off {
+  background-color: #fff;
+}
+
+.list table td.last {
+  border-right: 1px solid lightgray;
+}
+
+.list table .first {
+  border-left: 1px solid lightgray;
+}
+
+.list table td.no_hand {
+  cursor: default;
+}
+
+/*
+ * STUDENT PROPOSAL REVIEWS
+ */
+.studentproposalreview {
+  font-size: small;
+}
+
+.studentproposalreview .title {
+  background-color: #e5ecf9;
+}
+
+.studentproposalreview .student{
+  background: #d0f5a9;
+}
+
+.studentproposalcomment-public,
+.studentproposalreview-public .other {
+  background: #f5f6ce;
+}
+
+.studentproposalcomment-private,
+.studentproposalreview-private .other {
+  background: #D2EDF6;
+}
+
+/*
+ * CUSTOM CLASSES
+ */
+
+.assignedslot {
+  background-color: #d0f5a9;
+}
+
+.todo {
+  color: #cc0000;
+  font-size: 80%;
+}
+
+.newmark {
+  color: red;
+  font-size: 80%;
+  vertical-align: top;
+}
+
+.error {
+  color: red;
+}
+
+.notice {
+  background:#fad163;
+  font-size: small;
+  font-weight: bold;
+}
+
+.fieldhelptext {
+  width: 450px;
+  background:#fad163;
+  font-size: small;
+  border: 1px solid black;
+}
+
+.rounded_ul { background: url(/soc/content/images/ul.gif) no-repeat top left; }
+.rounded_ur { background: url(/soc/content/images/ur.gif) no-repeat top right; }
+.rounded_ll { background: url(/soc/content/images/ll.gif) no-repeat bottom left; }
+.rounded_lr { background: url(/soc/content/images/lr.gif) no-repeat bottom right; }
+
+/* Disabled text. */
+.disabled {
+  color: gray;
+}
+
+.plaintext {
+  background:transparent none repeat scroll 0 0;
+  border:0 none;
+  color:black;
+}
+
+/* Surveys */
+
+
+div #survey_widget {
+  margin: 20px;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  background-color: #FFFEEB;
+  border: 5px solid #F7CA75;
+  padding: 15px;
+  /*max-width: 700px;*/
+}
+
+
+div #survey_widget.survey_admin {
+/* TODO(ajaksu) remove if unnecessary */
+}
+
+div #survey_widget table {
+  width:95%
+}
+
+div #survey_widget th,
+div #survey_widget td {
+  padding-top: 15px;
+}
+
+/* fields */
+
+div #survey_widget textarea.long_answer {
+  padding: 10px;
+}
+
+div #survey_widget textarea.tooltip_entry {
+  padding: 10px;
+  width: 80%;
+}
+
+div #survey_widget textarea {
+  width: 90% !important;
+}
+
+div #survey_widget td.formfieldlabel {
+  font-size: medium;
+}
+
+#survey_widget.view input[disabled="disabled"],
+#survey_widget.view textarea[disabled="disabled"],
+#survey_widget.view select[disabled="disabled"],
+#survey_widget.view option {
+  color: black;
+}
+
+#survey_widget.quant_radio input,
+#survey_widget.quant_radio label {
+  margin: 4px;
+}
+
+/* options */
+
+div #survey_options button {
+  display: block;
+  margin: 10px 0 0;
+}
+
+div #survey_options {
+  margin: 20px 0 0 0;
+}
+
+div #survey_widget a.delete {
+  float:left;
+  margin:-1px 7px;
+}
+
+div #survey_widget th label {
+  /*display: block;*/
+  max-width: 180px;
+}
+
+div #survey_widget tr.role-specific label {
+  color: #666666;
+}
+
+
+span.formfieldlabel {
+  font-weight: bold;
+  font-size: small;
+}
+
+.sortable_li {
+  border: solid 1px !important;
+  padding: 5px !important;
+}
+
+.sortable_li,
+div #survey_widget fieldset {
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+}
+
+div #survey_widget select {
+  display: inline;
+}
+
+div #survey_widget td {
+}
+
+div #survey_widget label {
+}
+
+div #survey_widget fieldset select {
+}
+
+div #survey_widget fieldset textarea,
+div #survey_widget fieldset input {
+  margin: 10px;
+}
+
+div #survey_widget textarea.comment{
+  margin-bottom: 30px;
+}
+
+div #survey_widget td > fieldset > label {
+  font-size: 11px;
+}
+
+.ui-dialog-content {
+  padding: 0px !important;
+  margin: 5px !important;
+}
+
+#dialog {
+  font-size: 62.5%;
+}
+
+#dialog input {
+  margin: 5px;
+}
+
+#dialog label, #dialog input {
+  display: block;
+}
+
+#dialog p {
+  text-align: center;
+  padding-left: 0;
+}
+
+#dialog input.text {
+  margin-bottom: 12px;
+  width: 95%;
+  padding: .4em;
+}
+
+#dialog fieldset {
+  padding: 0;
+  border: 0;
+  margin-top: 25px;
+}
+
+#dialog h1 {
+  font-size: 1.2em;
+  margin: .6em 0;
+}
+
+.ui-button {
+  outline: 0;
+  margin: 0;
+  padding: .4em 1em .5em;
+  text-decoration: none;
+  cursor:pointer;
+  position: relative;
+  text-align: center;
+}
+
+.ui-dialog .ui-state-highlight,
+.ui-dialog .ui-state-error {
+  padding: .3em;
+}
+
+.pick_multi input,
+.quant_radio input {
+  display: inline;
+  width: auto !important;
+}
+
+/* NEWS FEED FEEDS */
+.news_feed {
+  border: 10px solid #e5ecf9;
+  border-top: 1px solid #3366cc;
+  float:left;
+}
+
+.news_feed .inner{
+  padding:0 20px;
+}
+
+.news_feed h2 {
+  margin-top: 0.1em;
+  background-color: #e5ecf9;
+}
+
+.news_feed h2 a {
+  text-decoration: none;
+  color: black;
+}
+
+.news_feed h2 a:visited {
+  text-decoration: none;
+  color: black;
+}
+
+.news_feed .entry {
+  margin:1em 0.3em;
+}
+
+.news_feed .title {
+   font-size: medium;
+}
+
+.news_feed .time {
+  color: gray;
+  margin-bottom: 0.5em;
+}
+
+.news_feed .snippet {
+  background-color: white;
+}
+
+a#feed_icon img{
+  margin:-1px 0;
+}
--- a/app/soc/content/js/map-090420.js	Thu Jul 30 14:00:37 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,312 +0,0 @@
-role_profile_gmap = new function(){
-  // Create global variables
-  var map;
-  var marker;
-  var geocoder;
-
-  // The following strings can be customized to reflect ids in the page. 
-  // You can also add or remove fields used for GMap Geocoding in 
-  // the JSON address object
-
-  var current_lat = 0;
-  var current_lng = 0;
-
-  // Two different levels for zoom: Starting one and an inner that 
-  // is used when showing the map if lat and lon page fields are set
-  var world_zoom = 0;
-  var country_zoom = 4;
-  var state_zoom = 6;
-  var city_zoom = 10;
-  var address_zoom = 13;
-
-  // Do not add a starting # as this JQuery selector seems 
-  // incompatible with GMap API
-  var map_div = "role_profile_map";
-
-  var field_lat = "#id_latitude";
-  var field_lng = "#id_longitude";
-  // Need to save old values to avoid unwanted updating 
-  // of lat and lot if marker dragged and blur another time an address field
-  var address = {
-    street: {
-      id: "#id_res_street",
-      old_value: ""
-    },
-    city: {
-      id: "#id_res_city",
-      old_value: ""
-    },
-    state: {
-      id: "#id_res_state",
-      old_value: ""
-    },
-    country: {
-      id: "#id_res_country",
-      old_value: ""
-    },
-    postalcode: {
-      id: "#id_res_postalcode",
-      old_value: ""
-    }
-  }
-
-  // Save current address fields in the JSON Object
-  function saveOldAddress() {
-    for (var a in address) {
-      address[a].old_value = $(address[a].id).val();
-    }
-  }
-
-  // Return true if the user has edited address fields
-  function isNewAddress() {
-    for (var a in address) {
-      if ($(address[a].id).val() != address[a].old_value) return true;
-    }
-    return false;
-  }
-
-  // Write saved lat and lng values to page fields
-  function setLatLngFields() {
-    $(field_lat).val(current_lat);
-    $(field_lng).val(current_lng);
-  }
-
-  // Read lat and lng fields and store them
-  function readLatLngFields() {
-    current_lat = $(field_lat).val();
-    current_lng = $(field_lng).val();
-  }
-
-  // This function reads address fields, merge them and uses 
-  // GMap API geocoding to find the first hit
-  // Using geocoding http://code.google.com/intl/it-IT/apis/maps/documentation/services.html#Geocoding
-  function calculateAddress() {
-    // If the user has really edited address fields...
-    if (isNewAddress()) {
-      // Merge address fields
-      var address_string = "";
-      for (var a in address) {
-        address_string+=$(address[a].id).val();
-        if (a!=address.length-1) {address_string+=","};
-      }
-
-      // Ask GMap API for geocoding
-      geocoder.getLatLng(
-        address_string,
-        function(point) {
-          // If a point is found
-          if (point) {
-            // Save the current address in the JSON object
-            saveOldAddress();
-            // Set the new zoom, map center and marker coords
-            var zoom_set = world_zoom;
-            if ($(address.street.id).val()!="") zoom_set = address_zoom;
-            else if ($(address.city.id).val()!="") zoom_set = city_zoom;
-            else if ($(address.state.id).val()!="") zoom_set = state_zoom;
-            else if ($(address.country.id).val()!="") zoom_set = country_zoom;
-            map.setCenter(point, zoom_set);
-            marker.setPoint(point);
-            map.clearOverlays();
-            map.addOverlay(marker);
-            // Save point coords in local variables and then update 
-            // the page lat/lng fields
-            current_lat = point.lat();
-            current_lng = point.lng();
-            setLatLngFields();
-          }
-        }
-      );
-    }
-  }
-
-  // Public function to load the map
-  this.map_load = function() {
-    // All can happen only if there is gmap compatible browser.
-    // TODO: Fallback in case the browser is not compatible
-    if (GBrowserIsCompatible()) {
-      // Save the address fields. This is useful if the page is being edited 
-      // to not update blindly the lat/lng fields with GMap geocoding if 
-      // blurring an address field
-      saveOldAddress();
-      var starting_point;
-      var zoom_selected = world_zoom;
-      var show_marker = true;
-
-      // Create the map and add small controls
-      map = new GMap2(document.getElementById(map_div));
-      map.addControl(new GSmallMapControl());
-      map.addControl(new GMapTypeControl());
-
-      // Instantiate a global geocoder for future use
-      geocoder = new GClientGeocoder();
-
-      // If lat and lng fields are not void (the page is being edited) then 
-      // update the starting coords, modify the zoom level and tells following 
-      // code to show the marker
-      if ($(field_lat).val()!="" && $(field_lng).val()!="") {
-        readLatLngFields();
-        zoom_selected = address_zoom;
-        show_marker = true;
-      }
-      
-      // Set map center, marker coords and show it if this is an editing
-      starting_point = new GLatLng(current_lat,current_lng);
-      map.setCenter(starting_point, zoom_selected);
-      marker = new GMarker(starting_point, {draggable:true});
-      if (show_marker) map.addOverlay(marker);
-      
-      // Adds a new event listener to geocode the address when an address 
-      // field is blurred
-      for (var a in address) {
-        $(address[a].id).blur(calculateAddress);
-      }
-      
-      // Adds a new event listener: if the marker has been dragged around...
-      GEvent.addListener(marker, "dragend", function() {
-        // Update internal variables with current marker coords...
-        current_lat = marker.getPoint().lat();
-        current_lng = marker.getPoint().lng();
-        // ...and set page fields accordingly
-        setLatLngFields();
-      });
-    }
-  }
-};
-
-org_home_gmap = new function(){
-  // Global variables
-  var map;
-
-  // HTML div tag where map needs to be inserted
-  var map_div = "org_home_map";
-  
-  // Setup required icons
-  var base_icon = new GIcon();
-  base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
-  base_icon.iconSize = new GSize(20, 34);
-  base_icon.shadowSize = new GSize(37, 34);
-  base_icon.iconAnchor = new GPoint(9, 34);
-  base_icon.infoWindowAnchor = new GPoint(9, 2);
-  base_icon.infoShadowAnchor = new GPoint(18, 25);
-  var student_icon = new GIcon(base_icon);
-  student_icon.image = "http://www.google.com/mapfiles/marker.png";
-  var mentor_icon = new GIcon(base_icon);
-  mentor_icon.image = "/soc/content/images/mentor-marker.png";
-
-  // Map load function
-  this.map_load = function(map_data) {
-
-    if (GBrowserIsCompatible()) {
-      // Create the map and add small controls
-      map = new GMap2(document.getElementById(map_div));
-      map.addControl(new GLargeMapControl());
-      map.addControl(new GMapTypeControl());
-
-      // Set map center and initial zoom level
-      map.setCenter(new GLatLng(0, 0), 1);
-
-      var mentors = {};
-      var students = {};
-      var projects = {};
-      var polylines = [];
-
-      jQuery.each(map_data.people, function(key, person) {
-        if (person.type === "student") {
-          students[key] = {
-            "name": person.name,
-            "lat": person.lat,
-            "long": person.long,
-            "projects": person.projects
-          }
-        }
-        if (person.type === "mentor") {
-          mentors[key] = {
-            "name": person.name,
-            "lat": person.lat,
-            "long": person.long,
-            "projects": person.projects
-          };
-        }
-      });
-
-      // Iterate over projects to draw polylines
-      jQuery.each(map_data.projects, function (key, project) {
-        var current_student = students[project.student_key];
-        var current_mentor = mentors[project.mentor_key];
-        if (current_student !== undefined && 
-            current_mentor !== undefined &&
-            current_student.lat !== null &&
-            current_student.long !== null &&
-            current_mentor.lat !== null &&
-            current_mentor.long !== null) {
-              polylines.push([[current_student.lat,current_student.long],[current_mentor.lat,current_mentor.long]]);
-        }
-      });
-
-      // Iterate over students
-      jQuery.each(students, function(key, person) {
-        var html = "";
-        var marker = null;
-
-        if (person.lat!==null && person.long!==null) {
-          point = new GLatLng(person.lat,
-                              person.long);
-
-          marker = new GMarker(point, student_icon);
-          html = "<strong>" + person.name + "</strong><br />";
-          html += "<span style='font-style:italic;'>Student</span><br />";
-          html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
-          // iterate through projects
-          jQuery.each(person.projects, function () {
-            var current_project = map_data.projects[this];
-            html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
-            html += "Mentor: " + current_project.mentor_name + "<br />";
-          });
-          html+= "</div>";
-          GEvent.addListener(marker, "click", function() {
-            marker.openInfoWindowHtml(html);
-          });
-
-          map.addOverlay(marker);
-        }
-      });
-
-      // Iterate over mentors
-      jQuery.each(mentors, function(key, person) {
-        var html = "";
-        var marker = null;
-
-        if (person.lat!==null && person.long!==null) {
-          point = new GLatLng(person.lat,
-                              person.long);
-
-          marker = new GMarker(point, mentor_icon);
-          html = "<strong>" + person.name + "</strong><br />";
-          html += "<span style='font-style:italic;'>Student</span><br />";
-          html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
-          // iterate through projects
-          jQuery.each(person.projects, function () {
-            var current_project = map_data.projects[this];
-            html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
-            html += "Student: " + current_project.student_name + "<br />";
-          });
-          html+= "</div>";
-
-          GEvent.addListener(marker, "click", function() {
-            marker.openInfoWindowHtml(html);
-          });
-
-          map.addOverlay(marker);
-        }
-      });
-
-      // Draw all polylines
-      jQuery.each(polylines, function() {
-        var from = new GLatLng(this[0][0],this[0][1]);
-        var to = new GLatLng(this[1][0],this[1][1]);
-        var polyline = new GPolyline([from, to], "#ff0000", 3);
-        map.addOverlay(polyline);
-      });
-    }
-  }
-};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/js/map-090730.js	Thu Jul 30 14:02:23 2009 +0200
@@ -0,0 +1,312 @@
+role_profile_gmap = new function(){
+  // Create global variables
+  var map;
+  var marker;
+  var geocoder;
+
+  // The following strings can be customized to reflect ids in the page. 
+  // You can also add or remove fields used for GMap Geocoding in 
+  // the JSON address object
+
+  var current_lat = 0;
+  var current_lng = 0;
+
+  // Two different levels for zoom: Starting one and an inner that 
+  // is used when showing the map if lat and lon page fields are set
+  var world_zoom = 0;
+  var country_zoom = 4;
+  var state_zoom = 6;
+  var city_zoom = 10;
+  var address_zoom = 13;
+
+  // Do not add a starting # as this JQuery selector seems 
+  // incompatible with GMap API
+  var map_div = "role_profile_map";
+
+  var field_lat = "#id_latitude";
+  var field_lng = "#id_longitude";
+  // Need to save old values to avoid unwanted updating 
+  // of lat and lot if marker dragged and blur another time an address field
+  var address = {
+    street: {
+      id: "#id_res_street",
+      old_value: ""
+    },
+    city: {
+      id: "#id_res_city",
+      old_value: ""
+    },
+    state: {
+      id: "#id_res_state",
+      old_value: ""
+    },
+    country: {
+      id: "#id_res_country",
+      old_value: ""
+    },
+    postalcode: {
+      id: "#id_res_postalcode",
+      old_value: ""
+    }
+  }
+
+  // Save current address fields in the JSON Object
+  function saveOldAddress() {
+    for (var a in address) {
+      address[a].old_value = $(address[a].id).val();
+    }
+  }
+
+  // Return true if the user has edited address fields
+  function isNewAddress() {
+    for (var a in address) {
+      if ($(address[a].id).val() != address[a].old_value) return true;
+    }
+    return false;
+  }
+
+  // Write saved lat and lng values to page fields
+  function setLatLngFields() {
+    $(field_lat).val(current_lat);
+    $(field_lng).val(current_lng);
+  }
+
+  // Read lat and lng fields and store them
+  function readLatLngFields() {
+    current_lat = $(field_lat).val();
+    current_lng = $(field_lng).val();
+  }
+
+  // This function reads address fields, merge them and uses 
+  // GMap API geocoding to find the first hit
+  // Using geocoding http://code.google.com/intl/it-IT/apis/maps/documentation/services.html#Geocoding
+  function calculateAddress() {
+    // If the user has really edited address fields...
+    if (isNewAddress()) {
+      // Merge address fields
+      var address_string = "";
+      for (var a in address) {
+        address_string+=$(address[a].id).val();
+        if (a!=address.length-1) {address_string+=","};
+      }
+
+      // Ask GMap API for geocoding
+      geocoder.getLatLng(
+        address_string,
+        function(point) {
+          // If a point is found
+          if (point) {
+            // Save the current address in the JSON object
+            saveOldAddress();
+            // Set the new zoom, map center and marker coords
+            var zoom_set = world_zoom;
+            if ($(address.street.id).val()!="") zoom_set = address_zoom;
+            else if ($(address.city.id).val()!="") zoom_set = city_zoom;
+            else if ($(address.state.id).val()!="") zoom_set = state_zoom;
+            else if ($(address.country.id).val()!="") zoom_set = country_zoom;
+            map.setCenter(point, zoom_set);
+            marker.setPoint(point);
+            map.clearOverlays();
+            map.addOverlay(marker);
+            // Save point coords in local variables and then update 
+            // the page lat/lng fields
+            current_lat = point.lat();
+            current_lng = point.lng();
+            setLatLngFields();
+          }
+        }
+      );
+    }
+  }
+
+  // Public function to load the map
+  this.map_load = function() {
+    // All can happen only if there is gmap compatible browser.
+    // TODO: Fallback in case the browser is not compatible
+    if (GBrowserIsCompatible()) {
+      // Save the address fields. This is useful if the page is being edited 
+      // to not update blindly the lat/lng fields with GMap geocoding if 
+      // blurring an address field
+      saveOldAddress();
+      var starting_point;
+      var zoom_selected = world_zoom;
+      var show_marker = true;
+
+      // Create the map and add small controls
+      map = new GMap2(document.getElementById(map_div));
+      map.addControl(new GSmallMapControl());
+      map.addControl(new GMapTypeControl());
+
+      // Instantiate a global geocoder for future use
+      geocoder = new GClientGeocoder();
+
+      // If lat and lng fields are not void (the page is being edited) then 
+      // update the starting coords, modify the zoom level and tells following 
+      // code to show the marker
+      if ($(field_lat).val()!="" && $(field_lng).val()!="") {
+        readLatLngFields();
+        zoom_selected = address_zoom;
+        show_marker = true;
+      }
+      
+      // Set map center, marker coords and show it if this is an editing
+      starting_point = new GLatLng(current_lat,current_lng);
+      map.setCenter(starting_point, zoom_selected);
+      marker = new GMarker(starting_point, {draggable:true});
+      if (show_marker) map.addOverlay(marker);
+      
+      // Adds a new event listener to geocode the address when an address 
+      // field is blurred
+      for (var a in address) {
+        $(address[a].id).blur(calculateAddress);
+      }
+      
+      // Adds a new event listener: if the marker has been dragged around...
+      GEvent.addListener(marker, "dragend", function() {
+        // Update internal variables with current marker coords...
+        current_lat = marker.getPoint().lat();
+        current_lng = marker.getPoint().lng();
+        // ...and set page fields accordingly
+        setLatLngFields();
+      });
+    }
+  }
+};
+
+org_home_gmap = new function(){
+  // Global variables
+  var map;
+
+  // HTML div tag where map needs to be inserted
+  var map_div = "org_home_map";
+  
+  // Setup required icons
+  var base_icon = new GIcon();
+  base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
+  base_icon.iconSize = new GSize(20, 34);
+  base_icon.shadowSize = new GSize(37, 34);
+  base_icon.iconAnchor = new GPoint(9, 34);
+  base_icon.infoWindowAnchor = new GPoint(9, 2);
+  base_icon.infoShadowAnchor = new GPoint(18, 25);
+  var student_icon = new GIcon(base_icon);
+  student_icon.image = "http://www.google.com/mapfiles/marker.png";
+  var mentor_icon = new GIcon(base_icon);
+  mentor_icon.image = "/soc/content/images/mentor-marker.png";
+
+  // Map load function
+  this.map_load = function(map_data) {
+
+    if (GBrowserIsCompatible()) {
+      // Create the map and add small controls
+      map = new GMap2(document.getElementById(map_div));
+      map.addControl(new GLargeMapControl());
+      map.addControl(new GMapTypeControl());
+
+      // Set map center and initial zoom level
+      map.setCenter(new GLatLng(0, 0), 1);
+
+      var mentors = {};
+      var students = {};
+      var projects = {};
+      var polylines = [];
+
+      jQuery.each(map_data.people, function(key, person) {
+        if (person.type === "student") {
+          students[key] = {
+            "name": person.name,
+            "lat": person.lat,
+            "long": person.long,
+            "projects": person.projects
+          }
+        }
+        if (person.type === "mentor") {
+          mentors[key] = {
+            "name": person.name,
+            "lat": person.lat,
+            "long": person.long,
+            "projects": person.projects
+          };
+        }
+      });
+
+      // Iterate over projects to draw polylines
+      jQuery.each(map_data.projects, function (key, project) {
+        var current_student = students[project.student_key];
+        var current_mentor = mentors[project.mentor_key];
+        if (current_student !== undefined && 
+            current_mentor !== undefined &&
+            current_student.lat !== null &&
+            current_student.long !== null &&
+            current_mentor.lat !== null &&
+            current_mentor.long !== null) {
+              polylines.push([[current_student.lat,current_student.long],[current_mentor.lat,current_mentor.long]]);
+        }
+      });
+
+      // Iterate over students
+      jQuery.each(students, function(key, person) {
+        var html = "";
+        var marker = null;
+
+        if (person.lat!==null && person.long!==null) {
+          point = new GLatLng(person.lat,
+                              person.long);
+
+          marker = new GMarker(point, student_icon);
+          html = "<strong>" + person.name + "</strong><br />";
+          html += "<span style='font-style:italic;'>Student</span><br />";
+          html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
+          // iterate through projects
+          jQuery.each(person.projects, function () {
+            var current_project = map_data.projects[this];
+            html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
+            html += "Mentor: " + current_project.mentor_name + "<br />";
+          });
+          html+= "</div>";
+          GEvent.addListener(marker, "click", function() {
+            marker.openInfoWindowHtml(html);
+          });
+
+          map.addOverlay(marker);
+        }
+      });
+
+      // Iterate over mentors
+      jQuery.each(mentors, function(key, person) {
+        var html = "";
+        var marker = null;
+
+        if (person.lat!==null && person.long!==null) {
+          point = new GLatLng(person.lat,
+                              person.long);
+
+          marker = new GMarker(point, mentor_icon);
+          html = "<strong>" + person.name + "</strong><br />";
+          html += "<span style='font-style:italic;'>Student</span><br />";
+          html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
+          // iterate through projects
+          jQuery.each(person.projects, function () {
+            var current_project = map_data.projects[this];
+            html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
+            html += "Student: " + current_project.student_name + "<br />";
+          });
+          html+= "</div>";
+
+          GEvent.addListener(marker, "click", function() {
+            marker.openInfoWindowHtml(html);
+          });
+
+          map.addOverlay(marker);
+        }
+      });
+
+      // Draw all polylines
+      jQuery.each(polylines, function() {
+        var from = new GLatLng(this[0][0],this[0][1]);
+        var to = new GLatLng(this[1][0],this[1][1]);
+        var polyline = new GPolyline([from, to], "#ff0000", 3);
+        map.addOverlay(polyline);
+      });
+    }
+  }
+};
--- a/app/soc/templates/soc/base.html	Thu Jul 30 14:00:37 2009 +0200
+++ b/app/soc/templates/soc/base.html	Thu Jul 30 14:02:23 2009 +0200
@@ -16,7 +16,7 @@
  <head>
   <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
 	{% block stylesheet %}
-  <link rel="stylesheet" href="/soc/content/css/soc-090708.css" type="text/css"/>
+  <link rel="stylesheet" href="/soc/content/css/soc-090730.css" type="text/css"/>
   <!--[if IE]>
   <link rel="stylesheet" href="/soc/content/css/soc-090708-ie.css" type="text/css"/>
   <![endif]-->
--- a/app/soc/templates/soc/organization/home.html	Thu Jul 30 14:00:37 2009 +0200
+++ b/app/soc/templates/soc/organization/home.html	Thu Jul 30 14:02:23 2009 +0200
@@ -17,7 +17,7 @@
 {{ block.super }}
 {% if gmaps_api_key %}
 	<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={{ gmaps_api_key }}" type="text/javascript"></script>
-	<script type="text/javascript" src="/soc/content/js/map-090420.js"></script>
+	<script type="text/javascript" src="/soc/content/js/map-090730.js"></script>
 {% endif %}
 {% endblock %}
 
--- a/app/soc/templates/soc/role/edit.html	Thu Jul 30 14:00:37 2009 +0200
+++ b/app/soc/templates/soc/role/edit.html	Thu Jul 30 14:02:23 2009 +0200
@@ -18,7 +18,7 @@
 {{ block.super }}
 {% if gmaps_api_key %}
 	<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={{ gmaps_api_key }}" type="text/javascript"></script>
-	<script type="text/javascript" src="/soc/content/js/map-090420.js"></script>
+	<script type="text/javascript" src="/soc/content/js/map-090730.js"></script>
 {% endif %}
 {% endblock %}