/*
 * frmcontactus.js
 *
 * This handles the contact us form that occurs on the HDSBL page.
 * It has been re-written as a class, and now executes itself
 * rather than being executed by the hdsblhandler.js.
 * This resolves the problem of the out of stack and out of memory
 * error messages being experienced in the IE browsers.
 *
 ******************************************************************************
 * Version Control
 *
 * Version 2.0 - Rewritten in the form of a class, improvements are :
 *               No longer initiated from the hdsblhandler.js
 *               Improved error handling of failed messages to the SMTP
 *               Valid Attachments Types are now dictated from the server cgi
 *               Valid Attachments types are now shown on the form.
 *               - RES 19.12.2009
 ******************************************************************************
*/


var hdsblcontactus = Class.create({
  
 
   initialize: function() {
   
      hdsblcontactus._strMessageTicket = '';
      hdsblcontactus._boolValidEmailAddress = false;
      hdsblcontactus._upload_number = 0;
      hdsblcontactus._checkStatusTime = 0;
      hdsblcontactus._isCheckStatusOn = false;
      hdsblcontactus._isSubjectFreeFormOk = true;
      hdsblcontactus._validfiletypes = '';
      
      hdsblcontactus._eventSendButton = {}; 
      hdsblcontactus._lastErrorMessage = '';
     
      
      this.openInfoDialog('Please Wait...');
      this.getmessageticket(); 
      // Event.observe('frm_sendbutton','submit', this.submit.bindAsEventListener(this),false);
      $('formheader').setStyle({display: 'block'});
   },

   openInfoDialog: function (strMessage) {
      
      // Dialog.info(strMessage,{className:"hdsblglass", top:30, parent:contentParent, showProgress: true});
      Dialog.info(strMessage,{className:"hdsblglass",parent:$('container'), showProgress: true});
     
      // timeout=5;
      // setTimeout(Dialog.info(),5000);
      
   
   },

   timer: function () {
      timeout--;
      if (timeout > 0) { setTimeout(Frmcontactus.timer,1000); }
   },
   
   infoDialog: function (strMessage) { 
      Dialog.setInfoMessage(strMessage); 
   },

   closeDialog: function () { setTimeout("Dialog.closeInfo();",1250) },
   
   getLastErrorMessage: function () { return hdsblcontactus._lastErrorMessage; },

   getmessageticket: function() {

       new Ajax.Request("cgi-bin/hdsbl_contactus_form.cgi", {
         method: 'post',
         asynchronous: false,
         parameters: 'action=getmessageticket',
         on500: function(transport){
            hdsblcontactus.prototype.closeDialog();
            Dialog.alert("Error Retrieving Ticket!",{className:"hdsblglass", top:50, parent:$('content')});
         },
         onSuccess: function(transport){
            hdsblcontactus.prototype.jsonConnector(transport.responseJSON.hdsbl_contact);
            hdsblcontactus.prototype.closeDialog();
         },
         onFailure: function(transport){
            hdsblcontactus.prototype.infoDialog("Error Retrieving Ticket");
            
         }
      });
   
   },

   jsonConnector: function( p_response ) {
   

      var headerCount = (typeof( p_response.header ) !== 'undefined' ? p_response.header.length : 0);
      var sendToCount = (typeof( p_response.sendToData ) !== 'undefined' ? p_response.sendToData[0].length : 0);
      var subjectCount = (typeof(p_response.subjectData) !== 'undefined' ? p_response.subjectData.length : 0);
      var htmlConstruct = '';
      
      var i;
      for(i=0; i<headerCount; i++) {
         if ( typeof (p_response.header[i].messageTicket) !== 'undefined' ) { 
            strMessageTicket = p_response.header[i].messageTicket;
            $('messageTicket').value = strMessageTicket;
         }
      }
      if ( sendToCount > 0 ) {
      
         for(i=0; i<sendToCount; i++) {
            htmlConstruct = htmlConstruct + '<option value="' + p_response.sendToData[0][i].Addr_Recipient_Code + '" title="' + p_response.sendToData[0][i].Addr_Desc_2 + '">' + p_response.sendToData[0][i].Addr_Desc_1 + '</option>';   
         }
         // $('sendToCombo').innerHTML = '<select id="sendTo" class="inputboxwidth" name="sendTo" onchange="hdsblcontactus.prototype.sendToChanged();">' + 
         $('sendToCombo').innerHTML = '<select id="sendTo" class="inputboxwidth" name="sendTo">' + 
                                         '<option value="select" title="Select the appropriate entry below" style="color:#aaaaaa;font-style:italic">Select Contact</option>' +
                                         htmlConstruct + '</select>';
         $('sendToDescription').innerHTML = 'Select Appropriate Contact';
         hdsblcontactus._eventSendTo = this.sendToChanged.bindAsEventListener(this);
         Event.observe('sendTo','change', hdsblcontactus._eventSendTo,false);
      }         
      if (subjectCount > 0 ) {
         htmlConstruct ='';
         for(i=0; i<subjectCount; i++) {
            htmlConstruct = htmlConstruct + '<option value="' + p_response.subjectData[i].Subject_Code + '">' + p_response.subjectData[i].Subject_Desc + '</option>';  
         }
         if ( $('sendersEmail1').innerHTML == '' )           
            $('sendersEmail1').innerHTML = '<input id="inputSendersEmail1" name="inputSendersEmail1" onblur="return hdsblcontactus.prototype.validate(this,\'isValidEmail\')" ' +
                                           'onkeyup="hdsblcontactus.prototype.emailContentChanged(\'inputSendersEmail1\');" size="40" style="width:278px;" />';
         if ( $('sendersEmail2').innerHTML == '' ) 
            $('sendersEmail2').innerHTML = '<input id="inputSendersEmail2" name="inputSendersEmail2" onblur="return hdsblcontactus.prototype.validate(this,\'isValidEmail\')" ' +
                                           'onkeyup="hdsblcontactus.prototype.emailContentChanged(\'inputSendersEmail2\');" size="40" style="width:278px;" />';
         $('subjectCombo').innerHTML = '<select id="subjectField" class="inputboxwidth" name="subjectField" onChange="hdsblcontactus.prototype.subjectChanged();"> ' +
                                       '<option value="select" title="Select a subject" style="color:#aaaaaa;font-style:italic">Select a subject</option>' +
                                       htmlConstruct + '</select>';
         if ( $('messageText').innerHTML == '' ) {
//            $('messageText').innerHTML = '<textarea id="messageTextContentId" style="width:595px;font-family: Tahoma,Arial,Verdana;font-size:14px;" rows="15" onkeyup="Frmcontactus.messageTextContentChanged();"></textarea>';
            $('messageText').innerHTML = '<textarea id="messageTextContentId" class="mceEditor" style="width:600px;height:305px;font-family: Tahoma,Arial,Verdana;font-size:14px;"></textarea>';
         }
         
         $('emailAdvisoryMessage').setStyle({display: 'block'});
         $('sendersEmail1Label').setStyle({display: 'block'});
         $('sendersEmail1').setStyle({display: 'block'});
         $('sendersEmail2Label').setStyle({display: 'block'});
         $('sendersEmail2').setStyle({display: 'block'});
         $('subjectComboLabel').setStyle({display: 'block'});
         $('subjectCombo').setStyle({display: 'block'});
         $('messageText').setStyle({display: 'block'});
         
         $('fileattachments').setStyle({display: 'block'});
         $('sendMessage').setStyle({display: 'block'});
  

         tinyMCE.init({ 
                        mode : "specific_textareas",
                        editor_selector : "mceEditor",
                        content_css : "hdsbl_tinymce.css",
                        theme : "advanced",
                        plugins : "safari",
                        theme_advanced_buttons1 : "bold,italic,underline,fontselect,fontsizeselect,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,numlist,bullist,outdent,indent,hr,|,removeformat",
                        theme_advanced_buttons2 : "",
                        theme_advanced_buttons3 : "",
                        theme_advanced_toolbar_location : "top",
                        theme_advanced_toolbar_align : "left",
                        setup : function(ed) {
                              ed.onKeyUp.add(function(ed, e) {
                                 // console.debug('Key up event: ' + e.keyCode);
                                 hdsblcontactus.prototype.messageTextContentChanged();    
                              });
                        }

         });

         this.emailContentChanged('inputSendersEmail1');
         this.emailContentChanged('inputSendersEmail2');
         this.messageTextContentChanged();
         this.sendbuttonStatusCheck();
         this.subjectChanged();
         this.closeDialog();
         hdsblcontactus._eventSendButton = this.submit.bindAsEventListener(this);
         Event.observe('button_send','click',hdsblcontactus._eventSendButton,false);
         
      }
      if ( typeof(p_response.sendmessage) !== 'undefined') {
         $('content').innerHTML='&nbsp;';
         $('content').style.height = "100%";
         $('content').style.width = "100%";
         hdsblcontactus.prototype.closeDialog();

         if ( p_response.sendmessage.status == 'ok' ) {
            setTimeout("Dialog.alert(\"Message successfully sent.\",{className:\"hdsblglass\", top:50, parent:$('content'), ok:function() {window.location.reload(); }});",3000);
         } else {
            hdsblcontactus._lastErrorMessage = p_response.sendmessage.statusmessage;
            setTimeout("Dialog.alert(\"Failed To Send Message.<br> <br> Very sorry your message has not been send, the following error message was generated : <br> <br>\" + hdsblcontactus.prototype.getLastErrorMessage(),{className:\"hdsblglass\", top:50, parent:$('content'), ok:function() {window.location.reload(); }});",3000);
         }
      }
   },

   
   validate: function(p_element, p_validationType) {
   
      var validated = false;
      var message = 'Error';

      
      if ( p_validationType == 'isValidEmail' && $F(p_element.id) ) {
         message = "Invalid Email Address.";
         // Check that the email fields equal one another - if not then place
         // the error message against the one that does not. Do not go anwhere else.
         // If the other email field contains data
         
         if ( $F('inputSendersEmail1') && $F('inputSendersEmail2') ) {
            if ( $F('inputSendersEmail1') !== $F('inputSendersEmail2') ) {
               message = "Email Address Mismatch! Check that both email fields are equal.";
            } else {
               validated = Frmvalidate.isValidEmail(p_element);
               if (validated) {
                  this.validationSuccess('inputSendersEmail1');
                  this.validationSuccess('inputSendersEmail2');
               }                  
            }
         } else {
            validated = Frmvalidate.isValidEmail(p_element);
         }
      }
      
      if ( $F(p_element.id) ) {
         if (validated) {
        
            new Ajax.Request("cgi-bin/hdsbl_contactus_check.cgi", {
               method: 'post',
               parameters: {
                  action: p_validationType,
                  type: $F(p_element),
                  messagetoken: strMessageTicket},
               onSuccess: function(transport) {
                  if (transport.responseText == 'OK' ) {
                     // Ajax call to validate
                     hdsblcontactus.prototype.validationSuccess(p_element.id);
                     hdsblcontactus._boolValidEmailAddress = true;
                     hdsblcontactus.prototype.sendbuttonStatusCheck();
                  } else {
                     Dialog.alert(message, {className:"hdsblglass",  parent:$('container')});
                     hdsblcontactus.prototype.validationError(p_element.id,p_validationType, message);
                     hdsblcontactus._boolValidEmailAddress = false;
                     hdsblcontactus.prototype.sendbuttonStatusCheck();
                     // $(p_element.id).focus();
                  }
               }
            });
         } else {
            Dialog.alert(message, {className:"hdsblglass",  parent:$('container')});
            // Dialog.alert("Invalid Email Address.", {className:"hdsblglass", top:50, parent:$('content')});
            this.validationError(p_element.id,p_validationType,message);
            this._boolValidEmailAddress = false;
            this.sendbuttonStatusCheck();
            // $(p_element.id).focus();
         }
     }
   
   
   
   },
   
   validationError: function (p_id, p_validationType, p_message, p_classname) {
      
      var elem = $(p_id);
      if ( !p_classname) p_classname='validationError';
      
      if ( ! elem.nextSibling ) {
            var span = document.createElement('span');
            var oImg = document.createElement('img');
            oImg.setAttribute('src','./images/error.png');
            oImg.setAttribute('alt','Error:');
            oImg.align="top";
            oImg.height="20";
            oImg.width="20";
            oImg.style.paddingRight = "5px";
            oImg.style.marginLeft = "5px";
            span.appendChild(oImg);
            span.appendChild(document.createTextNode(p_message));
            span.id = 'span' + p_id;
            Element.addClassName(span, p_classname);
            $(p_id).parentNode.appendChild(span);
         
      } else {
            elem.nextSibling.innerHTML = '<img src="./images/error.png" alt="Error" align="top" width="20" height="20" style="padding-right:5px" />'+p_message;
      }
      
   
   },
   
   validationSuccess: function (p_id, p_classname) {
      var elem = $(p_id);
      if ( !p_classname ) p_classname='validationError';
      if ( elem.nextSibling ) 
         if (elem.nextSibling.nodeName == 'SPAN' &&
            Element.hasClassName(elem.nextSibling, p_classname) )
            $(p_id).parentNode.removeChild(elem.nextSibling);
   },
   
   
   sendToChanged: function() {
   
      $('sendToDescription').innerHTML = $('sendTo')[$('sendTo').selectedIndex].title;
      $('subjectCombo').innerHTML = '';
      $('subjectTextField').innerHTML = '';
      $('button_send').disabled = true;
      if ( $('sendTo').value !== 'select' ) {
         this.validationSuccess($('sendTo'),'','');
         // If this changes it will influence the subject field
         this.openInfoDialog("Retrieving Subject Fields for " + $('sendTo')[$('sendTo').selectedIndex].text);
         // Need to post that information up to the server
         new Ajax.Request("cgi-bin/hdsbl_contactus_form.cgi", {
            method: 'post',
            parameters: 'action=setsendto&messagetoken='+strMessageTicket+'&sendto='+$('sendTo').value,
            onSuccess: function(transport) {
               var response = transport.responseJSON;
               hdsblcontactus.prototype.jsonConnector(transport.responseJSON);      
            },
            onFailure: function(transport){
               hdsblcontactus.prototype.closeDialog();
               Dialog.alert("Error Sending Send To Field!",{className:"hdsblglass", top:50, parent:$('content')});

            }
         });
       } else {
         this.validationError($('sendTo'),'','');
         $('sendToDescription').innerHTML = 'Select Appropriate Contact';
       }
   },
   
   
   subjectChanged: function () {
      
      if ( $('subjectField').value == '95' ) {
         $('subjectTextField').innerHTML = '<input id="subjectFreeForm" type="text" size="80" onkeyup="hdsblcontactus.prototype.subjectFreeFormChanged()" style="width:595px;" />';
         $('subjectTextFieldLabel').setStyle({display: 'block'});
         $('subjectTextField').setStyle({display: 'block'});
         this.subjectFreeFormChanged();
      } else {
         $('subjectTextField').innerHTML = '';
         $('subjectTextFieldLabel').setStyle({display: 'none'});
         $('subjectTextField').setStyle({display: 'none'});
         hdsblcontactus._isSubjectFreeFormOk = true;
      }
      
      if ( $('subjectField').value !== 'select' ) {
         hdsblcontactus.prototype.validationSuccess($('subjectField'),'','');
         new Ajax.Request("cgi-bin/hdsbl_contactus_form.cgi", {
            method: 'post',
            parameters: 'action=setsubject&messagetoken='+strMessageTicket+'&subjectcode='+$('subjectField').value,
            OnSuccess: function(transport) {
               var response = transport.responseText;
               if ( response !== 'OK' ) {
                  Dialog.alert("Error Sending Subject Code!",{className:"hdsblglass", top:50, parent:$('content')});
               }
            }
         });
      } else {
         this.validationError($('subjectField'),'','');
      }
      this.sendbuttonStatusCheck();
   },
   
   subjectFreeFormChanged: function(event) {
      if ( $('subjectField').value == '95' ) {
         if ( $F('subjectFreeForm') == '' ) {
            hdsblcontactus._isSubjectFreeFormOk = false;
            this.validationError($('subjectFreeForm'),'','','validationErrorSubjectText'); 
         } else { 
            hdsblcontactus._isSubjectFreeFormOk = true;
            this.validationSuccess($('subjectFreeForm'),'validationErrorSubjectText');
         }
      }
      this.sendbuttonStatusCheck();
   },
   
   emailContentChanged: function(p_elementid) {
      if ( $F(p_elementid) == '' ) {
         this.validationError($(p_elementid),'','Please enter a valid email address.');
      } else {
         this.validationSuccess($(p_elementid),'');
      }
   
   },
   
   messageTextContentChanged: function(event) {

      var tinyMCEMessageContent;
      try {
         tinyMCEMessageContent = tinyMCE.get('messageTextContentId').getContent();
         if ( Frmvalidate.stripHTML(tinyMCEMessageContent) == '' ) { 
            $('messageTextError').innerHTML = '<span class="validationErrorMessageText"><img src="./images/error.png" alt="Error" /></span>';
         } else {
            $('messageTextError').innerHTML = '<span class="validationErrorMessageText">&nbsp;</span>';
         }
         this.sendbuttonStatusCheck();
      } catch (e) {
          $('messageTextError').innerHTML = '<span class="validationErrorMessageText"><img src="./images/error.png" alt="Error" /></span>';
         this.sendbuttonStatusCheck();
      }
   },


   sendbuttonStatusCheck: function() {
      
      // This function determines whether all the fields are valid and whether the send button should
      // be enable or disabled.
      
      // The criteria for a valid send are as follows :
      
      // Should be a valid SendTo :
      // Email Address Field
      // Something in the messageText box
      if ( $('sendTo').value !== 'select' && 
           $('inputSendersEmail1').value !=='' && 
           $('inputSendersEmail2').value !== '' &&
           $('subjectField').value !== 'select' &&
           // Frmvalidate.stripHTML($F('messageTextContentId') ) !== '' &&
           Frmvalidate.stripHTML(tinyMCE.get('messageTextContentId').getContent()) !== '' &&
           hdsblcontactus._isCheckStatusOn == false &&
           hdsblcontactus._boolValidEmailAddress == true &&
           hdsblcontactus._isSubjectFreeFormOk == true) {
         $('button_send').disabled = false;
      } else {
         $('button_send').disabled = true;
      }
   
  
   },
 
/*

When user clicks to add a file, an ajax call is fired off to obtain a unique
token that is placed into the form as a hidden field.
The server will generate an entry for the user - in the filetable
When the form is submitted the token is sent as well.

This token along with the CGI session ID is sent to the server for status updates
on the status of the file.

This can be done with the setInterval pulsing every 10 seconds. 
Using this will then determine whether the file has been delivered to the server.




*/
   
   addFileInputNew: function() {

      new Ajax.Request("cgi-bin/hdsbl_contactus_form.cgi", {
         method: 'post',
         parameters: 'action=getfiletoken&messagetoken='+strMessageTicket,
         onSuccess: function(transport){
            // var response = array(); 
            // var fileToken = transport.responseText;
            var response = transport.responseJSON.hdsbl_contact;
            var fileToken = response.filetoken;
            hdsblcontactus._validfiletypes = response.validfiletypes;
            var currentHTML = $('moreUploads').innerHTML;
            var appendHTML = '<div id="divFileUpload_'+fileToken+'">'+
                             '<form id="form_upload_'+fileToken+'" action="cgi-bin/hdsbl_contactus_fileattach.cgi" '+
                             'target="upload_iframe_'+fileToken+'" method="post" enctype="multipart/form-data">'+
                             '<div class="row"><span id="uploaderlabel" class="label">Select File To Upload :</span><span class="attachments">'+
                             '<input id="action" name="action" type="hidden" value="fileupload" /> '+
                             '<input id="messagetoken" name="messagetoken" type="hidden" value="'+strMessageTicket+'" />'+
                             '<input id="filetoken" name="filetoken" type="hidden" value="'+fileToken+'" /> '+
                             '<input id="filename_'+fileToken+'" name="filename" type="file" size="42" onchange="hdsblcontactus.prototype.uploadfile(this,\''+fileToken+'\');" />'+
                             '<img id="imgUpload_'+fileToken+'" src="./ajax-loader.gif" style="display:none" />'+
                             '<span id="validfiletypes" style="font-size:12px">&nbsp;(Valid Types :' + hdsblcontactus._validfiletypes.replace(/\./g,", ").substring(2) + ')</span>' +
                             '</span></div></form>'+
                             '<iframe id="upload_iframe_'+fileToken+'" name="upload_iframe_'+fileToken+'" style="display:none;"></iframe>'+
                             '</div>';

            $('moreUploads').innerHTML = currentHTML+appendHTML;
            $('UploadsLink').setStyle({display: 'none'});
            $('moreUploadsLink').setStyle({display: 'none'});
            
            hdsblcontactus.prototype.closeDialog(); 
         }
      });
      this.openInfoDialog("Please Wait...");
   
   },
   

   uploadfile: function(upload_field, passedFileToken) {
      
      if ( this.isfilenamevalid(upload_field.value) ) {
         $('uploaderlabel').innerHTML = "Preparing To Upload :";
         $('validfiletypes').hide();
         $('filename_'+passedFileToken).setStyle({display:'none'});
         $('imgUpload_'+passedFileToken).setStyle({display: 'inline'});
         $('button_send').disabled = true;
         
         new Ajax.Request("cgi-bin/hdsbl_contactus_fileattach.cgi",{
            method: 'post',
            parameters: 'action=primeupload&messagetoken='+strMessageTicket+'&filetoken='+passedFileToken,
            onSuccess: function(transport){
               var response = transport.responseText;
               if (response == 'OK') {
                  if ( hdsblcontactus._isCheckStatusOn == false ) { 
                     hdsblcontactus._checkStatusTimer = setInterval('hdsblcontactus.prototype.checkuploadstatus()', 5000); 
                     hdsblcontactus._isCheckStatusOn = true;
         
                  }
                  // setTimeout(Frmcontactus.checkuploadstatus, 5000);
                  upload_field.form.submit();   
                  upload_field.disabled = true;
                  // $('uploaderlabel').innerHTML = "Preparing To Upload :";
                  // $('moreUploadsLink').setStyle({display: 'block'});
                  // $('imgUpload_'+passedFileToken).setStyle({display: 'inline'});
                  this.sendbuttonStatusCheck();
     
                  return true;
                  // Frmcontactus.closeDialog();
               // $('filename_1').disabled = 'true'
               } else {
                  return false;
         //         Frmcontactus.closeDialog();
               }
            },
            onFailure: function(transport) {
               return false;
         //      Frmcontactus.closeDialog();
            }
         });
         // Frmcontactus.openInfoDialog("Please Wait...");
      } else {
         // reset browse box
         return false;
      }
   
   },
   
   isfilenamevalid: function(filename) {
      
      // Will return true if valid or false if not valid.
      // var validextensions='.txt.rtf.pdf.doc.docx.xls.xlsx.xlsxm.jpg.gif.tif.png';
      if ( hdsblcontactus._validfiletypes.indexOf(filename.substr(filename.length-4,4).toLowerCase()) !== -1 ) {
         return true;
      } else {
         hdsblcontactus._lastErrorMessage = "Valid File Types are : " + hdsblcontactus._validfiletypes.replace(/\./g,", .").substring(2); 
         Dialog.alert("Invalid file extension. <br> <br> " + hdsblcontactus.prototype.getLastErrorMessage(), {className:"hdsblglass",  parent:$('container')});
         return false;
      }
   
   
   },
   
   selectfile: function(pstrFileToken) {
   
      var strAjaxConstruct;
      strAjaxConstruct = ( $('input_upload_complete_'+pstrFileToken).checked == true ? 'action=selectfile' : 'action=deselectfile' );
      new Ajax.Request("cgi-bin/hdsbl_contactus_fileattach.cgi", {
         method: 'post',
         parameters: strAjaxConstruct+'&messagetoken='+strMessageTicket+'&filetoken='+pstrFileToken,
         onSuccess: function(transport) {
            var response = transport.responseText;
            // remove_field.checked = false;
         }
      });
   
   
   },
   
   checkuploadstatus: function() {
   
         
         new Ajax.Request("cgi-bin/hdsbl_contactus_check.cgi", {
            method: 'post',
            parameters: 'action=checkupload&messagetoken='+strMessageTicket,
            onSuccess: function(transport){
               // var response = array(); 
               var response = transport.responseJSON;
               var uploadStatusCount = (typeof(response.uploadDataStatus) !== 'undefined' ? response.uploadDataStatus.length : 0);
               var i, is_toMonitor, is_toShowUploadLink;
               is_toMonitor = false;
               is_toShowUploadLink = true;
               var strFileToken, strAttachmentFilename, strEnctype, htmlConstruct
               for(i=0; i<uploadStatusCount; i++) {
                  strFileToken = response.uploadDataStatus[i].filetoken;
                  strAttachmentFilename = response.uploadDataStatus[i].attachmentfilename;
                  strEnctype = response.uploadDataStatus[i].enctype;
                  strUploadStatus = response.uploadDataStatus[i].status;
                  strUploadStatusMessage = response.uploadDataStatus[i].StatusMessage;
                  intCurrentTime = response.uploadDataStatus[i].CurrentTime;
                  
                  if ( strUploadStatus == 'UPLOADED' ) {
                     $('divFileUpload_'+strFileToken).innerHTML = '<form id="upload_complete_'+strFileToken+'" action="" method="post">'+
                                                                  '<div class="row"><span class="label">&nbsp;</span><span class="attachments"><input id="input_upload_complete_'+strFileToken+'" type="checkbox" name="chkbox_upload" value="chkbox_upload_'+strFileToken+'" '+
                                                                  'onclick="hdsblcontactus.prototype.selectfile(\''+strFileToken+'\');" checked="true">'+strAttachmentFilename+'</span><span class="enctype">'+strEnctype+'</span>'+
                                                                  '</div></form>';
                     // $('moreUploadsLink').setStyle({display: 'block'});   
                     
                  }
                  
                  if ( strUploadStatus == 'UPLOADING' ) {
                     // $('divFileUpload_'+strFileToken).innerHTML = '<p>Uploading : '+strAttachmentFilename+'&nbsp;<img id="imgUpload_'+strFileToken+'" src="./ajax-loader.gif" /></p>';
                     $('divFileUpload_'+strFileToken).innerHTML = '<div class="row"><span class="label">Uploading :</span><span class="attachments">'+strAttachmentFilename+'&nbsp;<img id="imgUpload_'+strFileToken+'" src="./ajax-loader.gif" /></span><span class="enctype">'+(strUploadStatusMessage == '' ? '0' : strUploadStatusMessage)+'%</span></div>';
                     // $('moreUploadsLink').setStyle({display: 'block'});
                     is_toMonitor = true;
                     
                  }
                  
                  if ( strUploadStatus == 'FAILED' ) { 
                     // alert ('The file upload failed need to code something here');
                     $('divFileUpload_'+strFileToken).innerHTML = '<div class="row"><span class="label">&nbsp;</span><span class="attachments">'+response.uploadDataStatus[i].StatusMessage+'</span></div>';
                     // $('moreUploadsLink').setStyle({display: 'block'});
                  }
                  // Might need to comment awaiting out and remove the currentTime passing as this is now done at the 
                  // server side.
                  if (strUploadStatus == 'AWAITING' ) { 
                     // $('divFileUpload_'+strFileToken).innerHTML = htmlConstruct; 
                     is_toMonitor = true;
                     if ( (intCurrentTime - strUploadStatusMessage) > '30' ) {
                        // Something is wrong this has timeout trying to upload the file.  Probably due to some
                        // company firewall restriction or has failed to post the data from the client side.
                        Dialog.alert("Upload Failed!  The connection has timed out.<p align=\"left\">This can be a result of upload restrictions imposed by a firewall, proxy, or problems with the internet connection.</p>", {className:"hdsblglass",  parent:$('container')});
                        $('uploaderlabel').innerHTML = "Select File To Upload :";
                        // $('moreUploadsLink').setStyle({display: 'none'});
                        is_toShowUploadLink = false;
                        $('imgUpload_'+strFileToken).setStyle({display: 'none'});
                        $('filename_'+strFileToken).setStyle({display:'block'});
                        $('filename_'+strFileToken).enable();
                        is_toMonitor = false;
                     }
                  }
                  if (strUploadStatus == 'PRIMED' ) { is_toMonitor = true; }
                  if ( strUploadStatus == 'ERROR') {
                     // need to determine error type
                     if ( strUploadStatusMessage.substr(0,3) == '413' ) {
                        // File Upload Too Large
                        Dialog.alert("File Too Large.  Maximum File Size is 10 Megabytes!", {className:"hdsblglass",  parent:$('container')});
                        // $('divFileUpload_'+strFileToken).innerHTML = '<div class="row"><span class="label">&nbsp;</span><span class="attachments">'+response.uploadDataStatus[i].StatusMessage+'</span></div>';
                     } else if ( strUploadStatusMessage.substr(0,7) == 'TIMEOUT' ) {
                        Dialog.alert("Upload Failed!  The connection has timed out.<p align=\"left\">This can be a result of upload restrictions imposed by a firewall, proxy, or problems with the internet connection.</p>", {className:"hdsblglass",  parent:$('container')});
                     } else {
                        Dialog.alert("Unknown Error", {className:"hdsblglass",  parent:$('container')});
                     }
                     $('uploaderlabel').innerHTML = "Select File To Upload :";
                     // $('moreUploadsLink').setStyle({display: 'none'});
                     is_toShowUploadLink = false;
                     $('imgUpload_'+strFileToken).setStyle({display: 'none'});
                     $('filename_'+strFileToken).setStyle({display:'block'});
                     $('filename_'+strFileToken).enable();

                                             
                  } 
               }
               if (is_toMonitor == false ) { 
                  clearInterval(hdsblcontactus._checkStatusTimer);
                  hdsblcontactus._isCheckStatusOn = false;
                  (is_toShowUploadLink == false ? $('moreUploadsLink').setStyle({display: 'none'}) : $('moreUploadsLink').setStyle({display: 'block'}) );
                  hdsblcontactus.prototype.sendbuttonStatusCheck();
               }
               
                     
            }
         });

   
   
   
   
   },
   
   

   
   submit: function (event) {
   
      Event.stopObserving('button_send','click',hdsblcontactus._eventSendButton);
      Event.stopObserving('sendTo','change',hdsblcontactus._eventSendTo);

      tinyMCE.get('messageTextContentId').getContent();  // Will tidy up the content
      // tinyMCE.get('messageTextContentId').save();        // will save the content to the textarea
      
      new Ajax.Request("cgi-bin/hdsbl_contactus_send.cgi", {
         method: 'post',
//          parameters: 'action=send&messagetoken='+strMessageTicket+"&subjectuserdef="+( $('subjectField').value == '95' ? $F('subjectFreeForm') : '')+"&message="+$F('messageTextContentId'),
//          parameters: 'action=send&messagetoken='+strMessageTicket+"&subjectuserdef="+( $('subjectField').value == '95' ? $F('subjectFreeForm') : '')+"&message="+tinyMCE.get('messageTextContentId').getContent(),
            parameters: { action : 'send', messagetoken: strMessageTicket, subjectuserdef: ( $('subjectField').value == '95' ? $F('subjectFreeForm') : ''),
                          message : tinyMCE.get('messageTextContentId').getContent()},
               onSuccess: function(transport){
                  hdsblcontactus.prototype.jsonConnector(transport.responseJSON);
              },
               onFailure: function(transport){
                  hdsblcontactus.prototype.jsonConnector(transport.responseJSON);
               },
               on500: function(transport) {
                  var response = Frmvalidate.stripHTML(transport.responseText);
                  hdsblcontactus._lastErrorMessage = response;
                  $('content').innerHTML='&nbsp;';
                  $('content').style.height = "100%";
                  $('content').style.width = "100%";
                  hdsblcontactus.prototype.closeDialog();
                  setTimeout("Dialog.alert(\"Server Error 500.<br> <br> Very sorry you message has not been send due to a server failure, the following error message was generated: <br> <br> \" + hdsblcontactus.prototype.getLastErrorMessage(),{className:\"hdsblglass\", top:50, parent:$('content'), ok:function() {window.location.reload(); }});",3000);
               }
       });
      this.openInfoDialog('Sending Message...');
      // tinyMCE.destroy();
   
   
   },
   
    
   reset: function () {
   
   
   
   
   
   }
});

Frmvalidate = {

   isValidEmail: function (p_id) {
   
      try {
         return (/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3} \])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test($F(p_id)));
      } catch (ex) {
         return (false);
      }
   },
   
   stripHTML: function (htmlCode) {
   
      if ( htmlCode.length > 0 ) {
         var reTag = /<(?:.|\s)*?>/g;
         return htmlCode.replace( reTag, "" );
      } else {
         return "";
      }
   }
};




Event.observe(window,"load",function() {
   contactus = new hdsblcontactus('');
   

});