/* formComponents
*****************
Object literal containing a vocabulary of input types.
*/
var formComponents = {
   makeHeading: function(heading, size) {
      var tagH2 = document.createElement(size);
      tagH2.appendChild(document.createTextNode(heading));
      
      return tagH2;
   },
   
   makeForm: function() {
      var tagFORM = document.createElement('form');
      tagFORM.setAttribute('id', 'form_submit');

      return tagFORM;
   },

   makeHidden: function(elementName) {
      var tagINPUT = document.createElement('input');
      tagINPUT.setAttribute('name', elementName);
      tagINPUT.setAttribute('type', 'hidden');      
      
      return tagINPUT;
   },
   
   makeTextBox: function(elementName) {
      var tagINPUT = document.createElement('input');
      tagINPUT.setAttribute('name', elementName);
      
      return tagINPUT;
   },
   
   makeTextArea: function(elementName) {
      var tagINPUT = document.createElement('textarea');
      tagINPUT.setAttribute('name', elementName);
      
      return tagINPUT;
   },
   
   makeSelect: function(elementName, keys, values) {
      var tagSELECT = document.createElement('select');
      tagSELECT.name = elementName;
   
      for (i=0; i<keys.length; i++) {
         var tagOPTION = document.createElement('option');
         tagOPTION.value = values[i];
         tagOPTION.appendChild(document.createTextNode(keys[i]));
         tagSELECT.appendChild(tagOPTION);   
      }
   
      return tagSELECT;
   },
   
   makeFormRowMultiple: function(label, tagArray) {
      var i;
      
      var tagFIELDROW = document.createElement('div');
      tagFIELDROW.setAttribute('class','fieldrow');
      tagFIELDROW.className = 'fieldrow'
   
      var tagFIELDNAME = document.createElement('div');
      tagFIELDNAME.setAttribute('class','fieldname');
      tagFIELDNAME.className = 'fieldname';
      tagFIELDNAME.appendChild(document.createTextNode(label));
   
      var tagFIELDINPUT = document.createElement('div');
      tagFIELDINPUT.setAttribute('class','fieldinput');
      tagFIELDINPUT.className = 'fieldinput';
   
      for (i=0; i<tagArray.length; i++) {
         tagFIELDINPUT.appendChild(tagArray[i]);
      }
         
      tagFIELDROW.appendChild(tagFIELDNAME);
      tagFIELDROW.appendChild(tagFIELDINPUT);
      
      return tagFIELDROW;
   },

   makeFormRow: function(label,tagINPUT) {
      var tagFIELDROW = document.createElement('div');
      tagFIELDROW.setAttribute('class','fieldrow');
      tagFIELDROW.className = 'fieldrow'
   
      var tagFIELDNAME = document.createElement('div');
      tagFIELDNAME.setAttribute('class','fieldname');
      tagFIELDNAME.className = 'fieldname';
      tagFIELDNAME.appendChild(document.createTextNode(label));
   
      var tagFIELDINPUT = document.createElement('div');
      tagFIELDINPUT.setAttribute('class','fieldinput');
      tagFIELDINPUT.className = 'fieldinput';
   
      tagFIELDINPUT.appendChild(tagINPUT);
      tagFIELDROW.appendChild(tagFIELDNAME);
      tagFIELDROW.appendChild(tagFIELDINPUT);
      
      return tagFIELDROW;
   },

   makeSubmit: function(formType) {
      return formComponents.makeFormRow('Done?', formComponents.makePlainSubmit(formType));   
   },
   
   makePlainSubmit: function(formType) {
      var tagA = document.createElement('a');
      tagA.appendChild(document.createTextNode('Submit'));
      
      tagA.onclick = new Function("do_submitForm('form_submit','"+formType+"')");
      tagA.setAttribute('onClick',"do_submitForm('form_submit','"+formType+"')");

      return tagA;
   },

   makeUpdate: function(formType, id) {
      var tagA = document.createElement('a');
      tagA.appendChild(document.createTextNode('Update'));
      
      tagA.onclick = new Function("do_updateForm('form_submit','"+formType+"','"+id+"')");
      tagA.setAttribute('onClick',"do_updateForm('form_submit','"+formType+"','"+id+"')");
      
      return formComponents.makeFormRow('Done?',tagA)   
   },
   
   makeDateSelect: function() {
      var dayKeys = formComponents.listDays();
      
      var monthKeys = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
      var monthValues = new Array('01', '02', '03' ,'04' ,'05', '06', '07' ,'08', '09', '10', '11', '12');
      
      // Get the current year using the javascript date object.
      
      var dateObject = new Date();
      var currentYear = dateObject.getFullYear();
     
      var yearKeys = formComponents.listYears(currentYear, currentYear+1);
   
      var dayTag = formComponents.makeSelect('tripDay', dayKeys, dayKeys);
      var monthTag = formComponents.makeSelect('tripMonth', monthKeys, monthValues);
      var yearTag = formComponents.makeSelect('tripYear', yearKeys, yearKeys);
      
      return new Array(dayTag, monthTag, yearTag);
   },
   
   listDays: function() {
      var MAX_DAYS = 32;
      var days = new Array();
      var index;
      var i;
   
         
      for (i=1; i<MAX_DAYS; i++) {
         if (i<10) var index = '0'+i;
         else var index = i;
         
         days[i-1] = index;
      }
   
      return days;
   },
   
   listYears: function(start, end) {
      var years = new Array();
      var i;
      var j;
      
      for (i=0, j=start; j<=end; i++, j++) {
         years[i] = j;
      }
      
      return years;
   }
   
}

/* responseScreens()
********************
Set up the completion screen.
*/
function responseScreens(data) {
   var done = '';
   
   done += "<div class='processingDone'>";
   done += data;
   done += '</div>';
   
   return done;
}