merge conference registration from drzb2011 branch
[angular-mojolicious.git] / templates / conference / Registration.html.ep
index bd71c05..cc639a1 100644 (file)
-<script>
-
-if (typeof (console) === 'undefined') console = { debug: function() {} }; // mock console.debug
-
-function Registration($resource){
-       this.master = {
-               person: {
-                       name: '', surname: '', inst: '', email: '',
-               },
-               type: '', // just attending
-               work: {
-                       title: '',
-                       abstract: '',
-                       authors:[ { name:'', surname:'', inst:'', email:'' } ],
-               },
-               symposium: { organizers: [ {name:'', surname:'', inst:'', email:'' } ], work_nr: 1, },
-       };
-       this.last_saved = {};
-       this.Registration = $resource( '/data/conference/Registration/:id', { id:'' } );
-       this.Symposium = $resource( '/data/conference/Symposium/:id', { id:'' } );
-       this.reset();
-       this.$watch('$location.hashPath', this.hash_change);
-}
-Registration.$inject=['$resource'];
-
-Registration.prototype = {
-       hash_change: function() {
-               var id = this.$location.hashPath;
-console.debug( 'hash_change', id, this.registration.$id );
-               if ( id != this.registration.$id ) {
-                       if (id) {
-                               var self = this;
-                               this.registration = this.Registration.get({ id: id }, function(registration) {
-                                       self.last_saved = angular.copy(registration);
-                                       if ( registration.type == 'symposium' ) {
-                                               var s_id = registration.symposium.$id || registration.$id;
-                                               // first registration doesn't have symposium.$id, but we used same $id
-console.debug( 'load symposium ', s_id );
-                                               self.symposium = self.Symposium.get({ id: s_id });
-                                       }
-                               });
+       <script>
+
+       if (typeof (console) === 'undefined') console = { debug: function() {} }; // mock console.debug
+
+       function Registration($resource){
+               this.master = {
+                       person: {
+                               name: '', surname: '', inst: '', email: ''
+                       },
+                       type: 'participant',
+                       work: {
+                               title: '',
+                               abstract: '',
+                               authors:[ { name:'', surname:'', inst:'', email:'' } ],
+                               organizers: []
+                       },
+                       symposium: { 
+                               //organizers: [ {name:'', surname:'', inst:'', email:'' } ], 
+                               organizers: [],
+                               work_nr: 1
                        }
-                       else this.reset();
-               }
-       },
-       reset: function() {
-               console.debug( this.Registration );
-               var current_symposium = null;
-               var current_person = null;
-               if ( this.registration && this.registration.type == 'symposium' ) {
-                       current_symposium = this.registration.symposium;
-                       current_person = this.registration.person;
-                       if ( this.registration.$id ) current_symposium.work_nr++; // only if saved
-console.debug( 'current_symposium', current_symposium, this.registration )
-               }
-               this.registration = new this.Registration( this.master );
-               if ( current_symposium ) {
-                       this.registration.symposium = current_symposium;
-                       this.registration.type = 'symposium';
-                       this.registration.person = current_person;
-               }
-               this.last_saved = {};
-console.debug( 'reset', current_symposium, this.registration, this.$location.hashPath );
-       },
-       save: function(){
-               var self = this;
-               this.registration.$save(function(registration){
-                       self.$location.hashPath = registration.$id;
-
-                       // save symposium to separate resource
-                       if ( registration.type == 'symposium' ) {
-                               if ( ! self.symposium.works ) { 
-                                       self.registration.symposium.$id = registration.$id; // reuse $id of first work for symposium
-                                       self.symposium = new self.Symposium( registration.symposium );
-                                       self.symposium.works = [];
+               };
+               this.Registration = $resource( '/data/conference/Registration/:id', { id:'' } );
+               this.Symposium = $resource( '/data/conference/Symposium/:id', { id:'' } );
+               this.reset();
+               this.$watch('$location.hashPath', this.hash_change);
+       }
+       Registration.$inject=['$resource'];
+
+       Registration.prototype = {
+               hash_change: function() {
+                       var id = this.$location.hashPath;
+       console.debug( 'hash_change', id, this.registration.$id );
+                       if ( id != this.registration.$id ) {
+                               if (id) {
+                                       var self = this;
+                                       this.registration = this.Registration.get({ id: id }, function(registration) {
+                                               self.last_saved = angular.copy(registration);
+                                               if ( registration.type == 'symposium' ) {
+                                                       var s_id = registration.symposium.$id || registration.$id;
+                                                       // first registration doesn't have symposium.$id, but we used same $id
+       console.debug( 'load symposium ', s_id );
+                                                       self.symposium = self.Symposium.get({ id: s_id });
+                                               }
+                                       });
                                }
-                               self.symposium.works[ registration.symposium.work_nr - 1 ] = registration.work;
-console.debug('save_symposium', self.symposium );
-                               self.symposium.$save();
+                               else this.reset();
                        }
+               },
+               reset: function() {
+                       console.debug( this.Registration );
+                       var last = this.registration;
+                       if ( last && last.type == 'symposium' ) {
+                               if ( last.$id ) last.symposium.work_nr++; // only if saved
+                       }
+                       this.registration = new this.Registration( this.master );
+                       if ( last ) {
+                               this.registration.type      = last.type;
+                               this.registration.person    = last.person;
 
-                       self.last_saved = angular.copy(registration);
-               });
-       },
-};
-
-
-</script>
-
+                               if ( last.type == 'symposium' )
+                               this.registration.symposium = last.symposium;
+                       }
+                       this.last_saved = angular.copy( this.registration ); // FIXME was: {};
+       console.debug( 'reset', this.registration, this.$location.hashPath, last );
+               },
+               save: function(){
+                       var self = this;
+                       this.registration.$save(function(registration){
+                               self.$location.hashPath = registration.$id;
+
+                               // save symposium to separate resource
+                               if ( registration.type == 'symposium' ) {
+                                       if ( ! self.symposium ) { 
+                                               self.registration.symposium.$id = registration.$id; // reuse $id of first work for symposium
+                                               self.symposium = new self.Symposium( registration.symposium );
+                                               self.symposium.works = [];
+                                       }
+                                       registration.work.$id = registration.$id; // preserve $id
+                                       self.symposium.works[ registration.symposium.work_nr - 1 ] = registration.work;
+       console.debug('save_symposium', self.symposium );
+                                       self.symposium.$save();
+                               }
 
-<style type="text/css">
+                               self.last_saved = angular.copy(registration);
+                       });
+               }
+       };
 
-body {
-       background: #F6F6F6;
-       margin: 40px;
-       font-family: Arial;
-       color: #374E5A;
-       font-size: 14px;
-       line-height: 16px;
-}
-label, h2 {
-       display: block;
-       color: #D74F25;
-       color: #374E5A;
-       color: #afafaf;
-       margin-top: 10px;
+       angular.validator.max_length = function(input, len) {
+               var ok = input.length <= len;
+       console.debug( 'max_length', ok, input.length, len );
+               return ok ? '' : 'must be shorter than '+len+' characters';
+       }
+
+       </script>
+
+
+       <style type="text/css">
+
+       body {
+               background: #F6F6F6;
+               margin: 40px;
+               font-family: Arial;
+               color: #374E5A;
+               font-size: 14px;
+               line-height: 16px;
+       }
+
+
+       label {
+               display: block;
+               color: #D74F25;
+               color: #374E5A;
+               color: #afafaf;
+               margin-top: 10px;
+               font-size: 14px;
+               font-family: Arial;
+       }
+       h1 {
+       /*      margin-bottom: 6px;     */
+               padding-left: 20px;
+               font: 18px arial;
+               color: #0c1426;
+               text-decoration: none;
+               display: block;
+               background: url(http://mjesec.ffzg.hr/drzb2011/images/kvadrat.gif) no-repeat left;
+               border-bottom: 1px solid #CCC;
+       }
+h2, h3 {
+       margin-top: 60px;
        font-size: 14px;
-       font-family: Arial;
-       font-weight: normal;
+       padding: 2px 0;
+       border-bottom: 2px solid #D74F25;
+       border-bottom: 1px solid #46d0fe;
 }
 
-h2 {
-       margin-top: 40px;
-       color: #374E5A;
-       color: #D74F25;
+h3 {
+       margin-top: 20px;
 }
 
 a {
        color: #D74F25;
-       font-size: 80%;
-}
-
-.symposium, .work {
-       width: 615px;
 }
 
 label {
        color: #374E5A;
 }
 
-.authors-label .name, .authors-label .surname, .authors-label .inst, .authors-label .email {
+.input, .inputOrg {
        color: #afafaf;
        float: left;
        margin: 2px;
        padding: 0 6px;
 }
 
-.name, .surname, .email {
-       width: 18%;
+.inputOrg {
+       color:  #374E5A;
 }
 
-.inst {
-       width: 30%;
+.input1 {
+       width: 40.8em;
 }
 
-.title, .summary {
-       width: 93%;
+.input2 {
+       width: 8em;
 }
 
-.authors {
-       clear: both;
-       margin-bottom: 6px;
+.input3 {
+       width: 13em;
+}
+.input4 {
+       width: 10em;
+}
+
+.input5 {
+       width: 21.4em;
+}
+.input6 {
+       width: 6.3em;
 }
 
-.authors-label {
-       clear: right;
+.clear {
+       clear: both;
 }
 
 
+.authors {
+       clear: both;
+       margin-bottom: 6px;
+}
 
-.addNew {
-       padding-right: 30px;
+.addPerson {
+       color: #D74F25;
+       color: #EDC8BC;
+       color: #EAB3A2;
+       font-size: 90%;
 }
 
-input, textarea
-{
+input, textarea {
        font: 14px arial;
        color: #000000;
        border: solid 1px #dedede;
@@ -177,30 +211,35 @@ input:focus, textarea:focus
        background: #ffffff;
        font-family: arial;
        color: #000000;
-       border: 1px solid #46d0fe;
+/*     border: 1px solid #46d0fe; */
 }
 
-input.ng-validation-error {
-       border: 1px solid #D74F25;
+.ng-validation-error {
        border: 1px solid #FF6666;
-       border: 1px solid #FF9966;
        border: 1px solid #EDC8BC;
+       border: 1px solid #FF9966;
+       border: 1px solid #EAB3A2;
+       border: 1px solid #D74F25;
+       border: 1px solid #DC6844;
+       border: 1px solid #DE7F61;
 }
 
-.warrning {
-       color: #FF6666;
+.ng-exception {
+       border: 0;
 }
 
-.sworks {
-       margin-top: 20px;
+
+#work, #submission {
+       margin-bottom: 20px;
 }
 
-.save {
-       margin-top: 10px;
+.button {
+       margin-top: 20px;
+       width: 40.8em;
 }
 
-.save input 
-{
+.button input {
+       margin-bottom: 10px;
        float: left;
        color: #ffffff;
        display: block;
@@ -208,122 +247,429 @@ input.ng-validation-error {
        background: #d74f25;
 }
 
-.save input:hover
-{
-       background: #dc6844;
+.button input:hover, .gohome:hover {
+       /* background: #dc6844; */
+}
+
+.button2 input {
+       background: #F6F6F6;
+       color: #374E5A;
+       border: 1px solid #d74f25;
+       display: inline;
+}
+
+
+.gohome  {
+       float: left;
+       color: #374E5A;
+       border: 1px solid #d74f25;
+       text-decoration: none;
+       background: #f6f6f6;
+       padding: 7px;
+       margin-top: 20px;
+       font: 14px arial;
+       border: solid 1px #dedede;
+       border: solid 1px #f6f6f6;
+}
+
+.gohome a {
+}
+
+.gohome a:hover {
+       text-decoration: none;
 }
 
+.list {
+       margin-top: 20px;
+       font-weight: bold;
+}
+
+.warrning {
+       color: #FF6666;
+}
+
+.sworks {
+       margin-top: 20px;
+}
+
+
 .newWork {
        clear: left;
        margin-top: 50px;
 }
+.saved {
+       margin-bottom: 20px;
+       margin-top: 20px;
+}
+.saved2 {
+       color: #374E5A;
+       color: #d74f25;
+       font-weight: bold;
+       font-style: italic;
+       display: block;
+}
+.saved3 {
+       color: #374E5A;
+       font-weight: normal;
+       margin-top: 20px;
+}
+.footer {
+       height: 10px;
+}
+hr {
+       border: 1px solid #ccc;
+}
 </style>
 
 
 
 <h1>Registration and Proposal Submission</h1>
 
-<div ng:controller="Registration" ng:init="$window.$root = this;">
 
-<div id="registration">
 
-<input class="name" name="registration.person.name" ng:required>
-<input class="name" name="registration.person.surname" ng:required>
 
-<input name="registration.person.inst">
-<input name="registration.person.email" ng:validate="email">
+<div class="root" ng:controller="Registration" ng:init="$window.$root = this;">
 
-</div>
 
-<div id="submission">
+<div ng:show="! registration.$id && ! symposium.$id">
+<p>
+All participants (presenters, coauthors and visitors) have to register via on-line register system.
+</p>
 
-<h2>Type of conference submission:</h2>
+<p>
+Abstract of oral presentation/poster has to be submitted only by first author or by presenting coauthor. Other coauthors do not have to submit the abstract, only register.
+</p>
 
-<input type="radio" name="registration.type" value="">Just attending conference<br/>
-<input type="radio" name="registration.type" value="symposium">Symposia<br/>
-<input type="radio" name="registration.type" value="lecture">Oral presentation<br/>
-<input type="radio" name="registration.type" value="poster">Poster presentation<br/>
-<input type="radio" name="registration.type" value="round">Round table discussion<br/>
+<p>
+The organizers of symposia have to submit not only the symposium’s abstract, but the abstracts of every single paper within it (it has to be four of them). Authors of papers within symposium DO NOT submit their abstracts on their own, but register as symposium participants.
+</p>
 
-<div id="submit_work" ng:show="registration.type">
+<p>
+The organizers of round tables have to submit only abstract of the round table, while its participants have to register as round table participants.
+</p>
+
+<p>
+The abstracts length should be between 1800 and 2000 characters (space included). 
+</p>
+
+<p>
+One person can be author of maximum three papers, only one of them as first/presenting/single author.
+</p>
 
-<div ng:show="registration.type == 'symposium'" style="background:#f0f0f0">
 
-<label>Topic of symposium: <input name="registration.symposium.title" size="60" ng:required></label><br/>
-   
-<label>Summary: <br/>
-<textarea name="registration.symposium.abstract" cols="50" rows="5"></textarea>
-</label>
-<br/>
 
-Organizer:
-<div ng:repeat="organizer in registration.symposium.organizers">
-[<a href="" ng:click="registration.symposium.organizers.$remove(author)">X</a>]
-<input name="organizer.name" ng:required>
-<input name="organizer.surname" ng:required>
-<input name="organizer.inst" >
-<input name="organizer.email" ng:required>
 </div>
-[<a href="" ng:click="registration.symposium.organizers.$add()">Add another organizer</a>]
 
+<!--
+<a name="{{$location.hash}}" >bla</a>
+-->
+
+<div style="margin-bottom: 40px" ng:show="registration.$id && last_saved.$equals(registration)">
+
+
+</div>
+<div ng:show="registration.$id || symposium">
+       <h2>{{registration.person.name}} {{registration.person.surname}}</h2>
+       <!--
+       <label>Institution: {{registration.person.inst}}</label>
+       <label>Address: {{registration.person.address1}}, {{registration.person.city}}, {{registration.person.zip}}, {{registration.person.country}}</label>
+       -->
+       <label ng:show="registration.type == 'participant'">Registration type: Registration only</label>
+       <label ng:show="registration.type == 'accomp'">Registration type: Accompanying person</label>
+       <label ng:show="registration.type == 'student'">Registration type: Student</label>
+       <label ng:show="registration.type == 'sparticipant'">Registration type: Symposium participant<span ng:show="registration.student == true">, student</span></label>
+       <label ng:show="registration.type == 'round'">Registration type: Round table organizer<span ng:show="registration.student == true">, student</span><p><b>Round table topic:</b> {{registration.work.title}}</label>
+       <label ng:show="registration.type == 'lecture'">Registration type: Oral presentation<span ng:show="registration.student == true">, student</span></label>
+       <label ng:show="registration.type == 'poster'">Registration type: Poster presentation<span ng:show="registration.student == true">, student</span></label>
+       <label ng:show="registration.type == 'poster' || registration.type == 'lecture'"><b>Title: </b>{{registration.work.title}}</label>
+       <div ng:show="registration.type == 'symposium'">
+               <p>Symposium organizer</p>
+               <label><b>Symposium topic: </b><i>{{registration.symposium.title}}</i></label>
+               <!--
+               <label>Summary:</label> {{registration.symposium.abstract}}
+               <br><br>
+               -->
+               <blockquote>
+               <label>Submitted papers:</label>
+               <ol>
+               <li ng:repeat="w in symposium.works">
+               <!--
+               <a ng:show="registration.$id != w.$id" href="#{{w.$id}}" >{{w.title}}</a>
+               -->
+               <span ng:show="registration.$id != w.$id">{{w.title}}</span>
+               <b ng:show="registration.$id == w.$id">{{w.title}}</b>
+               </li>
+               </ol>
+               </blockquote>
+       </div>
+</div>
+<!--
+<div ng:show="registration.$id || symposium">
+       <h2>Contact Information</h2>
+       <label>{{registration.person.name}} {{registration.person.surname}}</label>
+       <label>{{registration.person.inst}}</label>
+       <label>{{registration.person.address1}}</label>
+       <label>{{registration.person.city}}, {{registration.person.zip}}, {{registration.person.country}}</label>
+       <label ng:show="registration.type == 'participant'"><h3>Registration type</h3> no paper</label>
+       <div ng:show="registration.type == 'symposium'">
+               <p>Symposium organizer</p>
+               <h3>Symposium</h3>
+               <label>Topic:</label><i>{{registration.symposium.title}}</i>
+               <label>Summary:</label> {{registration.symposium.abstract}}
+               <br><br>
+               <label>Submitted papers for this symposium:</label>
+               <ol>
+               <li ng:repeat="w in symposium.works">
+               <a ng:show="registration.$id != w.$id" href="#{{w.$id}}" >{{w.title}}</a>
+               <span ng:show="registration.$id != w.$id">{{w.title}}</span>
+               <b ng:show="registration.$id == w.$id">{{w.title}}</b>
+               </li>
+               </ol>
+       </div>
+</div>
+-->
+
+
+<div id="submission" ng:show="! registration.$id && ! symposium.$id">
+       <div>
+               <h2>Registration Type</h2>
+               <label><input type="radio" name="registration.type" value="participant" ng:required>Registration only</label>
+               <label><input type="radio" name="registration.type" value="sparticipant" ng:required>Symposium/round table participant</label>
+               <label><input type="radio" name="registration.type" value="symposium" ng:required>Symposium organizer</label>
+               <label><input type="radio" name="registration.type" value="round" ng:required>Round table organizer</label>
+               <label><input type="radio" name="registration.type" value="lecture" ng:required>Oral presentation</label>
+               <label><input type="radio" name="registration.type" value="poster" ng:required>Poster presentation</label>
+       </div>
+               <label><input type="radio" name="registration.type" value="student" ng:required ng:change="registration.dinner = 'no'">Student registration only</label>
+               <label><input type="radio" name="registration.type" value="accomp" ng:required>Accompanying person</label>
 </div>
-<hr>
 
-<div ng:show="symposium">
-Works which are part of this symposium:
-<ol>
-<li ng:repeat="w in symposium.works"><a href="#{{w.$id}}">{{w.title}}</a></li>
-</ol>
+<div id="participant" ng:show="! registration.$id && ! symposium.$id">
 
+       
+       <h2>Contact Information</h2>
+       <div class="labelTop">
+               <div class="input input4">First name</div>
+               <div class="input input4">Surname</div>
+       </div>
+       <div style="clear: both">
+               <input class="input4" name="registration.person.name" ng:required>
+               <input class="input4" name="registration.person.surname" ng:required>
+       </div>
+       <div class="labelTop">
+               <div class="input input5">Institution</div>
+       </div>  
+       <div style="clear: both">
+               <input class="input5" name="registration.person.inst">
+       </div>
+       <div class="labelTop">
+               <div class="input input5">Address</div>
+       </div>  
+       <div style="clear: both">
+               <input class="input5" name="registration.person.address1" ng:required>
+       </div>
+       <div class="labelTop">
+               <div class="input input6">City</div>
+               <div class="input input6">ZIP</div>
+               <div class="input input6">Country</div>
+       </div>
+       <div style="clear: both">
+               <input class="input6" name="registration.person.city" ng:required>
+               <input class="input6" name="registration.person.zip">
+               <input class="input6" name="registration.person.country">
+       </div>
+       <div class="labelTop">
+               <div class="input input4">E-mail</div>
+               <div class="input input4">Phone number</div>
+       </div>
+       <div style="clear: both">
+               <input class="input4" name="registration.person.email" ng:validate="email" ng:required>
+               <input class="input4" name="registration.person.phone">
+       </div>
+       <div ng:show="registration.type == 'lecture' || registration.type == 'poster' || registration.type == 'sparticipant' || registration.type == 'symposium' || registration.type == 'round'">
+               <br><input type="checkbox" name="registration.student">Check this box if you are student.
+       </div>
+       <div style="clear: both; margin-top: 20px;">
+               Will you join us for the welcome reception on Thursday at 20 hrs?<br/>
+               <input type="radio" name="registration.reception" value="yes">Yes
+               <input type="radio" name="registration.reception" value="no">No
+       </div>
+       <div ng:show="registration.type != 'student'" style="clear: both; margin-top: 20px;">
+               Will you join us for the conference dinner on Friday at 20 hrs? (Dinner is included in the regostration fee.)<br/>
+               <input type="radio" name="registration.dinner" value="yes">Yes
+               <input type="radio" name="registration.dinner" value="no">No
+       </div>
+       
 </div>
 
-<h2>Autors<span ng:show="registration.type == 'symposium'"> of {{registration.symposium.work_nr}}. work </span></h2>
 
-<div ng:repeat="author in registration.work.authors">
-[<a href="" ng:click="registration.work.authors.$remove(author)">X</a>]
-<input name="author.name" ng:required>
-<input name="author.surname" ng:required>
-<input name="author.inst" >
-<input name="author.email" ng:required>
+       
+       <div ng:show="registration.type == 'sparticipant' && ! last_saved.$id">
+               <h2>Symposium/round table topic</h2>
+               <input class="input1" name="registration.sympattend" ng:required>
+       </div>
+
+
+<div id="work" ng:show="registration.type != 'participant' && registration.type != 'sparticipant' && registration.type != 'student' && registration.type != 'accomp'">
+<div ng:show="registration.type == 'symposium' && registration.symposium.work_nr < 4 && ! symposium.$id">
+
+       <h2>Symposium</h2>
+       <label for="registration.symposium.title">Topic:</label>
+               <input class="input1" name="registration.symposium.title" ng:required>
+       <label>Organizer:</label>
+               <!--
+               <div class="input input2">First name</div><div class="input input2">Surname</div><div class="input input3">Institution</div><div class="input input2">E-mail</div>
+               -->
+               <div class="inputOrg"><span ng:show="registration.person.name">{{registration.person.name}} {{registration.person.surname}}</span><span ng:show="registration.person.inst">, {{registration.person.inst}}</span><span ng:show="registration.person.email">, {{registration.person.email}}</span></div>
+               <div class="clear" ng:repeat="organizer in registration.symposium.organizers">
+               <input class="input2" name="organizer.name" ng:required>
+               <input class="input2" name="organizer.surname" ng:required>
+               <input class="input3" name="organizer.inst" >
+               <input class="input2" name="organizer.email" ng:required ng:validate="email">
+               <a href="" ng:click="registration.symposium.organizers.$remove(organizer)">X</a>
+               </div>
+               <div class="clear"><a class="addPerson" href="" ng:click="registration.symposium.organizers.$add()">Add another organizer</a></div>
+       <label>Summary (2000 characters max.)</label>
+               <textarea class="input1" name="registration.symposium.abstract" rows="10" ng:validate="max_length:2000" ng:required></textarea>
+               
+               <div ng:show="symposium">
+                       <b>Symposium:</b> {{registration.symposium.title}}
+                       <blockquote>
+                       <label>Submitted papers for this symposium:</label>
+                       <ol>
+                       <li ng:repeat="w in symposium.works">
+                       <!--
+                       <a ng:show="registration.$id != w.$id" href="#{{w.$id}}" >{{w.title}}</a>
+                       -->
+                       <span ng:show="registration.$id != w.$id">{{w.title}}</span>
+                       <b ng:show="registration.$id == w.$id">{{w.title}}</b>
+                       </li>
+                       </ol>
+                       </blockquote>
+               </div>
 </div>
-[<a href="" ng:click="registration.work.authors.$add()">Add another author</a>]
 
-<hr>    
+<div ng:show="registration.type && ! last_saved.$id">
+
+<!--
+               <div ng:show="symposium">
+                       <b>Symposium:</b> {{registration.symposium.title}}
+                       <blockquote>
+                       <label>Submitted papers for this symposium:</label>
+                       <ol>
+                       <li ng:repeat="w in symposium.works">
+                       <a ng:show="registration.$id != w.$id" href="#{{w.$id}}" >{{w.title}}</a>
+                       <b ng:show="registration.$id == w.$id">{{w.title}}</b>
+                       </li>
+                       </ol>
+                       </blockquote>
+               </div>
+-->
+<h3 ng:show="registration.type == 'symposium'">Add Symposium Paper ({{registration.symposium.work_nr}})</h3>
+<h2 ng:show="registration.type == 'lecture'">Oral Presentation Sumbission</h2>
+<h2 ng:show="registration.type == 'poster'">Poster Presentation Sumbission</h2>
+<h2 ng:show="registration.type == 'round'">Round Table Disscussion Sumbission</h2>
+
+
+<label>Title:</label>
+       <input class="input1" name="registration.work.title" ng:required>
+<div ng:show="registration.type != 'round'">
+<label>Authors</label>
+       <div>
+               <div class="input input2">First name</div><div class="input input2">Surname</div><div class="input input3">Institution</div><div class="input input2">E-mail</div>
+       </div>
+       <div class="clear" ng:repeat="author in registration.work.authors">
+               <input class="input2" name="author.name" ng:required>
+               <input class="input2" name="author.surname" ng:required>
+               <input class="input3" name="author.inst" >
+               <input class="input2" name="author.email" ng:required ng:validate="email">
+               <a href="" ng:click="registration.work.authors.$remove(author)">X</a>
+       </div>
+       <a class="addPerson" href="" ng:click="registration.work.authors.$add()">Add another author</a>
+</div>
+<div ng:show="registration.type == 'round'">
+<label>Organizer:</label>
+       <!--
+       <div class="input input2">First name</div><div class="input input2">Surname</div><div class="input input3">Institution</div><div class="input input2">E-mail</div>
+       -->
+               <div class="inputOrg"><span ng:show="registration.person.name">{{registration.person.name}} {{registration.person.surname}}</span><span ng:show="registration.person.inst">, {{registration.person.inst}}</span><span ng:show="registration.person.email">, {{registration.person.email}}</span></div>
+       <div class="clear" ng:repeat="organizer in registration.work.organizers">
+               <input class="input2" name="organizer.name" ng:required>
+               <input class="input2" name="organizer.surname" ng:required>
+               <input class="input3" name="organizer.inst" >
+               <input class="input2" name="organizer.email" ng:required ng:validate="email">
+               <a href="" ng:click="registration.work.organizers.$remove(organizer)">X</a>
+       </div>
+       <div class="clear"><a class="addPerson" href="" ng:click="registration.work.organizers.$add()">Add another organizer</a></div>
+</div>
 
-<label>Title: <input name="registration.work.title" size="60" ng:required></label><br/>
+<label>Abstract (2000 characters max.):</label>
+       <textarea class="input1" name="registration.work.abstract" rows="10" ng:validate="max_length:2000" ng:required></textarea>
 
-<label>Summary:<br>
-<textarea name="registration.work.abstract" cols="50" rows="5"></textarea>
-</label>
-<br/>
 
+</div> <!-- ng:show="registration.type" -->
 </div>
 
-<div id="buttons">
-
-<span ng:show="$invalidWidgets.visible() == 0">
-<input type="submit" value="Save" ng:click="save();" ng:show="! last_saved.$equals(registration)">
-<input type="reset" value="Add another work" ng:click="reset()" ng:show="registration && registration.$id">
-</span>
+<div class="button" ng:show="! last_saved.$equals(registration) && $invalidWidgets.visible() == 0 && (symposium.$id || (registration.reception != null && registration.dinner != null))">
+<input type="submit" value="Save" ng:click="save();" ng:show="! last_saved.$equals(registration) && $invalidWidgets.visible() == 0" >
+</div>
 
-<b ng:show="$invalidWidgets.visible() &gt; 0" style="color:#800">{{$invalidWidgets.visible()}} errors to fix in submission form</b>
+<div ng:show="$invalidWidgets.visible() &gt; 0 || (! symposium.$id && (registration.dinner == null || registration.reception == null))" style="color:red; margin-top: 20px">Please fill all required fields correctly. 
+<span ng:show="$invalidWidgets.visible() &gt; 0">Fields with orange border call for your attention. <!-- - {{$invalidWidgets.visible()}} left. --></span>
+<span ng:show="(registration.reception == null || registration.dinner == null) && ! symposium.$id && registration.type != 'student'">
+Decide about going to welcome reception and dinner.</span>
+<span ng:show="(registration.reception == null || registration.dinner == null) && ! symposium.$id && registration.type == 'student'">
+Decide about going to welcome reception.</span>
 </div>
 
 
+<div style="margin-bottom: 40px" ng:show="registration.$id && last_saved.$equals(registration)">
+
+       <div class="saved" ng:show="registration.type == 'participant' || registration.type == 'sparticipant' || registration.type == 'student' || registration.type == 'accomp' && ! symposium">
+               <span class="saved2">Thank you! Your registration has been submitted successfully!</span>
+               <div class="gohome"><a href="http://psihologija.ffzg.hr/drzb2011-eng/registration/fee">Please read registration fee payment instructions</a></div>
+               <div class="gohome" ng:show="registration.type == 'student' || registration.student == true">
+                       You must provide a proof of your student status by e-mail sent to <a href="mailto:drzb@ffzg.hr">drzb@ffzg.hr</a>
+               </div>
+               <br><br>
+       </div>
+       <div class="saved" ng:show="registration.type != 'participant' && registration.type != 'sparticipant' && registration.type != 'student' && registration.type != 'accomp' && registration.symposium.work_nr == 4 && last_saved.$id">
+               <span class="saved2">Thank you. Your proposal has been submitted successfully! <br></span>
+               <span class="gohome"><a href="http://psihologija.ffzg.hr/drzb2011-eng/registration/fee">Please read conference fee payment instructions</a></span>
+               
+       </div>
+       <div class="button button2" ng:show="registration.type != 'participant' && registration.type != 'sparticipant' && registration.type != 'student' && registration.type != 'accomp' && last_saved.$id && ! symposium">
+               <span class="saved2">Thank you. Your proposal has been submitted successfully! <br></span>
+               <div class="gohome"><a href="http://psihologija.ffzg.hr/drzb2011-eng/registration/fee">Please read registration fee payment instructions</a></div>
+               <div class="gohome" ng:show="registration.type == 'student' || registration.student == true">
+                       You must provide a proof of your student status by e-mail sent to <a href="mailto:drzb@ffzg.hr">drzb@ffzg.hr</a>
+               <br>
+       </div>
+       
+</div>
+       <div class="button button2" ng:show="last_saved.$id && symposium.$id && registration.symposium.work_nr < 4">
+               <input type="reset" value="Submit another paper" ng:click="reset()"> 
+       </div>
+<!--
+<div class="button2" ng:show="registration.$id && registration.type != 'participant' && registration.type != 'sparticipant' && last_saved.$equals(registration)">
+       <input type="reset" value="Submit another paper" ng:click="reset()">
+       <div class="gohome"><a href="http://psihologija.ffzg.hr/drzb2011/">Go to conference home page</a></div>
+</div>
+-->
+
+</div>
+<!--
 <div ng:show="registration.$id">
 Permalink to <a href="#{{registration.$id}}">DRZB2011 registration</a> which you can bookmark
 </div>
+-->
+<input type=checkbox name=debug style="float: right; clear: both">
+<pre ng:show="debug">
 
-</div><!-- registration.type == just attending -->
+dirty={{! last_saved.$equals(registration)}} invalid={{$invalidWidgets.visible()}}
 
-<hr>
-Debug Information:
-{{$window.location.href}}
-<pre>
 registration = {{registration}}
 
-dirty={{! last_saved.$equals(registration)}}
-
 last_saved = {{last_saved}}
 
 master = {{master}}
@@ -333,5 +679,3 @@ symposium = {{symposium}}
 $id={{$id}}
 registration.$id={{registration.$id}}
 </pre>
-
-</div>