﻿// JScript File
var emergencyContactList;
var emergencyRowNumber=0;
var emergencyEdit = false;
emergencyContactList = new emergencyContactListContainer();

//Sets the columns for onchange event
function setupEmergencyContactList(){
    emergencyContactList.setupContacts();
}

// Main function used for Emergency Contacts
function emergencyContactListContainer() {
var selectedRow;
var templateRow;
var removedRow;

//Sets emergency contact columns for onchange event
this.setupContacts = function() {
for(var i=0;i<document.forms[0].elements.length;i++) {
var setupColumn = document.forms[0].elements[i];
if ((setupColumn.id.indexOf("ContactFirstNameTextBox") > -1) || 
    (setupColumn.id.indexOf("ContactLastNameTextBox") > -1) ||
    (setupColumn.id.indexOf("RelationTypeDropDownList") > -1) ||
    (setupColumn.id.indexOf("ContactMiddleNameTextBox") > -1) ||
    (setupColumn.id.indexOf("ContactPrefixSctDropDownList") > -1) ||
    (setupColumn.id.indexOf("ContactSuffixSctDropDownList") > -1) ||
    (setupColumn.id.indexOf("ContactPhoneNumberTextBox") > -1)
    )
    setupColumn.onchange=this.updateSelectedRow;
  }
}

//function used for updating the selected row in the panel
this.updateSelectedRow = function() {
    var rows = document.getElementById('emergencyTable').rows;
    if (rows.length == 0) emergencyContactList.addNewRow();
    emergencyEdit = true;
    emergencyContactList.updatePanelRow();
}

//function used for selecting the row in the panel
this.selectRow = function(row) {
    if (row == removedRow) return;
    if (selectedRow) {selectedRow.className = null;
    } 
     row.className='selectedrow';
     selectedRow = row;
     var rows = document.getElementById('emergencyTable').rows;
     if ((rows.length >= 1) && (emergencyEdit == false))  emergencyContactList.updateFormFields();
}
//function used for deleting the row in the panel
this.removeRow = function(row) {
    row.parentNode.removeChild(row);
    removedRow = row;
    emergencyRowNumber--;
    if (emergencyRowNumber == 1 ){// there is only one row in the table
      emergencyEdit = false;
      this.selectRow(document.getElementById('emergencyTable').rows[0]);
      }
    if (emergencyRowNumber == 0) {
    selectedRow = null;
    emergencyContactList.updateFormFields();
    }
    if (emergencyRowNumber <=1 ){
    var link = document.getElementById('addContactLink');
    link.style.display ="block";
    }
        
 }     
//function used for adding a row in the panel using add contact link
this.addEmergencyRow = function() {
 //Check for the no of emergency contacts entered. If more than two return - 
     
   if (!templateRow) return;
   
   if (Page_ClientValidate("NewApplicationEmergencyContact")){
    var newRow = templateRow.cloneNode(true);
   newRow.onclick= function(){emergencyEdit = false; emergencyContactList.selectRow(this);}
   var removeContactLink = newRow.getElementsByTagName('a');
   removeContactLink[0].setAttribute('href','javascript:void(0);');   
   removeContactLink[0].onclick = function(){emergencyContactList.removeRow(this.parentNode.parentNode);}
   
   document.getElementById('emergencyTable').appendChild(newRow);
   emergencyEdit = false;
   this.selectRow(newRow);
   emergencyRowNumber++;
   if (emergencyRowNumber >=2 ){
    var link = document.getElementById('addContactLink');
    link.style.display ="none";
    }
   }
 }

//Function used for saving the emergency table
 this.saveEmergencyTable = function() {
     var contactPrefixHiddenField, contactFirstNameHiddenField, contactMiddleNameHiddenField, contactLastNameHiddenField;
     var contactSuffixHiddenField, contactRelationHiddenField, contactPhoneHiddenField;

     for (var i = 0; i < document.forms[0].elements.length; i++) {
         var element = document.forms[0].elements[i];
         if (element.id.indexOf("ContactPrefixHiddenField") > -1)
             contactPrefixHiddenField = document.getElementById(element.id);

         if (element.id.indexOf("ContactFirstNameHiddenField") > -1)
             contactFirstNameHiddenField = document.getElementById(element.id);

         if (element.id.indexOf("ContactMiddleNameHiddenField") > -1)
             contactMiddleNameHiddenField = document.getElementById(element.id);

         if (element.id.indexOf("ContactLastNameHiddenField") > -1)
             contactLastNameHiddenField = document.getElementById(element.id);

         if (element.id.indexOf("ContactSuffixHiddenField") > -1)
             contactSuffixHiddenField = document.getElementById(element.id);

         if (element.id.indexOf("ContactRelationHiddenField") > -1)
             contactRelationHiddenField = document.getElementById(element.id);

         if (element.id.indexOf("ContactPhoneHiddenField") > -1)
             contactPhoneHiddenField = document.getElementById(element.id);

     }
     //Initialize the hidden field's value
     if (contactPrefixHiddenField) contactPrefixHiddenField.value = "";
     if (contactFirstNameHiddenField) contactFirstNameHiddenField.value = "";
     if (contactMiddleNameHiddenField) contactMiddleNameHiddenField.value = "";
     if (contactLastNameHiddenField) contactLastNameHiddenField.value = "";
     if (contactSuffixHiddenField) contactSuffixHiddenField.value = "";
     if (contactRelationHiddenField) contactRelationHiddenField.value = "";
     if (contactPhoneHiddenField) contactPhoneHiddenField.value = "";

     var table = document.getElementById('emergencyTable');
     var concatChar = '';

     if (!table) return;
     for (var i = 0; i < table.rows.length; i++) {
         var spans = table.rows[i].getElementsByTagName("span");
         if (i > 0) concatChar = '|';

         contactPrefixHiddenField.value = contactPrefixHiddenField.value + concatChar + spans[0].innerHTML;
         contactFirstNameHiddenField.value = contactFirstNameHiddenField.value + concatChar + spans[1].innerHTML;
         contactMiddleNameHiddenField.value = contactMiddleNameHiddenField.value + concatChar + spans[2].innerHTML;
         contactLastNameHiddenField.value = contactLastNameHiddenField.value + concatChar + spans[3].innerHTML;
         contactSuffixHiddenField.value = contactSuffixHiddenField.value + concatChar + spans[4].innerHTML;
         contactRelationHiddenField.value = contactRelationHiddenField.value + concatChar + spans[5].innerHTML;
         contactPhoneHiddenField.value = contactPhoneHiddenField.value + concatChar + spans[7].innerHTML;
     }
 }
//function used for template row                
this.addNewRow = function(){
      var tableId = document.getElementById("emergencyTable");
      var newContactRow = document.getElementById(tableId.id).insertRow(-1);
      newContactRow.id = "newContactRow" + emergencyRowNumber;
      newContactRow.onclick= function(){emergencyEdit = false; emergencyContactList.selectRow(this);}
      var newContactCel = newContactRow.insertCell(0);  
      newContactCel.innerHTML = newContactCel.innerHTML + "<td style='width: 100%'>" + "<span id = 'ContactPrefixSpan" + 	eval(emergencyRowNumber)   +  "'  style='display:none'></span>";
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactFirstNameSpan" + 	eval(emergencyRowNumber)   +  "'  class = 'boldText'></span>";
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactMiddleNameSpan" + 	eval(emergencyRowNumber)   +  "'  style='display:none' ></span>";
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactLastNameSpan" + 	eval(emergencyRowNumber)   +  "'  class = 'boldText'></span>";
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactSuffixSpan" + 	eval(emergencyRowNumber)   +  "'  style='display:none' ></span>";               
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactRelationTypeSpan" + 	eval(emergencyRowNumber)   +  "'  style='display:none' class = 'boldText'></span></br>";
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactPhoneNumberDisplaySpan" + 	eval(emergencyRowNumber)   +  "'   class = 'boldText'></span>";
      newContactCel.innerHTML = newContactCel.innerHTML + "<span id = 'ContactPhoneNumberSpan" + 	eval(emergencyRowNumber)   +  "' style='display:none' ></span></td>";
      newContactCel = newContactRow.insertCell(1);                
      var removeContactImg = document.createElement('img');
      removeContactImg.src = ResourceManager.GetString("JsDeleteContactImageResource");
      removeContactImg.alt = ResourceManager.GetString("JsDeleteContactImageAlternateTextResource");
      removeContactImg.border=0;        
      var removeContactLink = document.createElement('a');                
      removeContactLink.setAttribute('href','javascript:void(0);');
      removeContactLink.onclick = function(){emergencyContactList.removeRow(this.parentNode.parentNode);}
      removeContactLink.appendChild(removeContactImg);                                         
      newContactCel.appendChild(removeContactLink);
      templateRow = newContactRow.cloneNode(true);
      emergencyRowNumber++;  
      emergencyEdit = true;
      this.selectRow(newContactRow);
      if (emergencyRowNumber >=2 ){
        var link = document.getElementById('addContactLink');
        link.style.display ="none";
    }
 }
 
 //Function used for updating the panel row
 this.updatePanelRow = function(){
    var spans = selectedRow.getElementsByTagName("span");
    var contactPrefixDropDown,contactSuffixDropDown,contactFirstNameTextBox,contactMiddleNameTextBox,contactLastNameTextBox;
    var relationTypeDropDown, contactPhoneNumberTextBox;
    // get all the values entered 
    for(var i=0;i<document.forms[0].elements.length;i++)  {	       
    var contactColumn = document.forms[0].elements[i];
    if (contactColumn.id.indexOf("ContactPrefixSctDropDownList") > -1)
        contactPrefixDropDown = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactSuffixSctDropDownList") > -1)
        contactSuffixDropDown = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactFirstNameTextBox") > -1)
        contactFirstNameTextBox = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactMiddleNameTextBox") > -1)
        contactMiddleNameTextBox = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactLastNameTextBox") > -1)
        contactLastNameTextBox = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("RelationTypeDropDownList") > -1)
        relationTypeDropDown = document.getElementById(contactColumn.id);
    if (contactColumn.id.indexOf("ContactPhoneNumberTextBox") > -1)
        contactPhoneNumberTextBox = document.getElementById(contactColumn.id);  
    }    
    for(var i=0;i<spans.length;i++) {
        var contactSpan = spans[i];
        if (contactSpan.id.indexOf("ContactPrefixSpan") > -1)
            { if((contactPrefixDropDown == undefined)? false:(contactPrefixDropDown.value != null))
                contactSpan.innerHTML =contactPrefixDropDown.value;
            }     
          if (contactSpan.id.indexOf("ContactSuffixSpan") > -1)
            { if((contactSuffixDropDown == undefined)? false:(contactSuffixDropDown.value != null))
                contactSpan.innerHTML =contactSuffixDropDown.value;
            }     
          if (contactSpan.id.indexOf("ContactFirstNameSpan") > -1)
            { if((contactFirstNameTextBox == undefined)? false:(contactFirstNameTextBox.value != null))
                contactSpan.innerHTML =contactFirstNameTextBox.value + " ";
            }
          if (contactSpan.id.indexOf("ContactMiddleNameSpan") > -1)
            { if((contactMiddleNameTextBox == undefined)? false:(contactMiddleNameTextBox.value != null))
                contactSpan.innerHTML =contactMiddleNameTextBox.value;
            }            
          if (contactSpan.id.indexOf("ContactLastNameSpan") > -1)
            { if((contactLastNameTextBox == undefined)? false:(contactLastNameTextBox.value != null))
                contactSpan.innerHTML =contactLastNameTextBox.value;
            }  
          if (contactSpan.id.indexOf("ContactRelationTypeSpan") > -1)
            { if((relationTypeDropDown == undefined)? false:(relationTypeDropDown.value != null))
                contactSpan.innerHTML =relationTypeDropDown.value;
            }  
            if (contactSpan.id.indexOf("ContactPhoneNumberSpan") > -1)
            { if((contactPhoneNumberTextBox == undefined)? false:(contactPhoneNumberTextBox.value != null))
                contactSpan.innerHTML =contactPhoneNumberTextBox.value;
            }  
            
            if (contactSpan.id.indexOf("ContactPhoneNumberDisplaySpan") > -1)
            { if((contactPhoneNumberTextBox == undefined)? false:(contactPhoneNumberTextBox.value != null)){
                if(contactPhoneNumberTextBox.value != "")
                    contactSpan.innerHTML = emergencyContactList.formatPhoneNumber(contactPhoneNumberTextBox.value);
                }
            }
    }
 }

//Update the form fields when the row selected on the panel
this.updateFormFields = function(){
    var contactPrefixDropDown,contactSuffixDropDown,contactFirstNameTextBox,contactMiddleNameTextBox,contactLastNameTextBox;
    var relationTypeDropDown, contactPhoneNumberTextBox;
    
    for(var i=0;i<document.forms[0].elements.length;i++)  {	       
    var contactColumn = document.forms[0].elements[i];
    if (contactColumn.id.indexOf("ContactPrefixSctDropDownList") > -1)
        contactPrefixDropDown = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactSuffixSctDropDownList") > -1)
        contactSuffixDropDown = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactFirstNameTextBox") > -1)
        contactFirstNameTextBox = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactMiddleNameTextBox") > -1)
        contactMiddleNameTextBox = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("ContactLastNameTextBox") > -1)
        contactLastNameTextBox = document.getElementById(contactColumn.id);  
    if (contactColumn.id.indexOf("RelationTypeDropDownList") > -1)
        relationTypeDropDown = document.getElementById(contactColumn.id);
    if (contactColumn.id.indexOf("ContactPhoneNumberTextBox") > -1)
        contactPhoneNumberTextBox = document.getElementById(contactColumn.id);  
    }
    if (!selectedRow)
    {
            if (contactPrefixDropDown)contactPrefixDropDown.value = "";
            if (contactSuffixDropDown)contactSuffixDropDown.value = "";
            if (contactFirstNameTextBox)contactFirstNameTextBox.value = "";
            if (contactMiddleNameTextBox)contactMiddleNameTextBox.value = "";
            if (contactLastNameTextBox)  contactLastNameTextBox.value = "";
            if (relationTypeDropDown)   relationTypeDropDown.value = "";
            if (contactPhoneNumberTextBox) contactPhoneNumberTextBox.value ="";
     }
    else
    {
        var spans = selectedRow.getElementsByTagName("span");    
        for(var i=0;i<spans.length;i++) {
            var contactSpan = spans[i];
            if (contactSpan.id.indexOf("ContactPrefixSpan") > -1)
            { if((contactPrefixDropDown == undefined)? false:(contactPrefixDropDown.value != null))
                contactPrefixDropDown.value = contactSpan.innerHTML;
            }     
          if (contactSpan.id.indexOf("ContactSuffixSpan") > -1)
            { if((contactSuffixDropDown == undefined)? false:(contactSuffixDropDown.value != null))
                contactSuffixDropDown.value = contactSpan.innerHTML;
            }     
          if (contactSpan.id.indexOf("ContactFirstNameSpan") > -1)
            { if((contactFirstNameTextBox == undefined)? false:(contactFirstNameTextBox.value != null))
                contactFirstNameTextBox.value = contactSpan.innerHTML;
            }
          if (contactSpan.id.indexOf("ContactMiddleNameSpan") > -1)
            { if((contactMiddleNameTextBox == undefined)? false:(contactMiddleNameTextBox.value != null))
                contactMiddleNameTextBox.value = contactSpan.innerHTML;
            }            
          if (contactSpan.id.indexOf("ContactLastNameSpan") > -1)
            { if((contactLastNameTextBox == undefined)? false:(contactLastNameTextBox.value != null))
                contactLastNameTextBox.value = contactSpan.innerHTML;
            }  
          if (contactSpan.id.indexOf("ContactRelationTypeSpan") > -1)
            { if((relationTypeDropDown == undefined)? false:(relationTypeDropDown.value != null))
                relationTypeDropDown.value = contactSpan.innerHTML;
            }  
            if (contactSpan.id.indexOf("ContactPhoneNumberSpan") > -1)
            { if((contactPhoneNumberTextBox == undefined)? false:(contactPhoneNumberTextBox.value != null))
                 contactPhoneNumberTextBox.value = contactSpan.innerHTML;
            }
           }  
         }
    }
   
   //Function used to fill the application emergency contacts panel for saved appl
   this.fillEmergencyPanel = function(){
     var contactPrefixHiddenField,contactFirstNameHiddenField,contactMiddleNameHiddenField,contactLastNameHiddenField;
     var contactSuffixHiddenField,contactRelationHiddenField,contactPhoneHiddenField;
     for(var i=0;i<document.forms[0].elements.length;i++){
        var element = document.forms[0].elements[i];
        if (element.id.indexOf("ContactPrefixHiddenField") > -1)
        contactPrefixHiddenField = document.getElementById(element.id);
        
        if (element.id.indexOf("ContactFirstNameHiddenField") > -1)
        contactFirstNameHiddenField = document.getElementById(element.id);
        
        if (element.id.indexOf("ContactMiddleNameHiddenField") > -1)
        contactMiddleNameHiddenField = document.getElementById(element.id);
        
        if (element.id.indexOf("ContactLastNameHiddenField") > -1)
        contactLastNameHiddenField = document.getElementById(element.id);
                
        if (element.id.indexOf("ContactSuffixHiddenField") > -1)
        contactSuffixHiddenField = document.getElementById(element.id);
        
        if (element.id.indexOf("ContactRelationHiddenField") > -1)
        contactRelationHiddenField = document.getElementById(element.id);
        
        if (element.id.indexOf("ContactPhoneHiddenField") > -1)
        contactPhoneHiddenField = document.getElementById(element.id);
        }
        if ((!contactPrefixHiddenField)|| (!contactFirstNameHiddenField) ||
            (!contactMiddleNameHiddenField)|| (!contactLastNameHiddenField) ||
            (!contactRelationHiddenField)|| (!contactSuffixHiddenField) ||
            (!contactPhoneHiddenField)) return;
            
            var prefix, suffix, firstName,middleName,lastName,phone,relationType;
                //Get the prefix, suffix and other columns from the hidden field.
                if (contactPrefixHiddenField.value != null)
		        prefix = contactPrefixHiddenField.value.split('|');
	            if (contactFirstNameHiddenField.value != null)
		        firstName = contactFirstNameHiddenField.value.split('|');
	            if (contactMiddleNameHiddenField.value != null)
		        middleName = contactMiddleNameHiddenField.value.split('|');
	            if (contactLastNameHiddenField.value != null)
		        lastName = contactLastNameHiddenField.value.split('|');
		        if (contactSuffixHiddenField.value != null)
		        suffix = contactSuffixHiddenField.value.split('|');
		        if (contactRelationHiddenField.value != null)
		        relationType = contactRelationHiddenField.value.split('|');
	            if (contactPhoneHiddenField.value != null)
		        phone = contactPhoneHiddenField.value.split('|');
		        
		        if (contactFirstNameHiddenField.value == "") return;
		        for(var i = 0 ; i < prefix.length; i++) {
	                this.addNewRow();
	                var spans = selectedRow.getElementsByTagName("span");		
	                spans[0].innerHTML =prefix[i];
	                spans[1].innerHTML = firstName[i]; 
	                spans[2].innerHTML = middleName[i];
	                spans[3].innerHTML = lastName[i];
	                spans[4].innerHTML = suffix[i];
	                spans[5].innerHTML = relationType[i];
	                spans[6].innerHTML = emergencyContactList.formatPhoneNumber(phone[i]);
	                spans[7].innerHTML =phone[i];
	            }
	            if (document.getElementById('emergencyTable').rows.length > 0){
	            emergencyEdit = false;
	            emergencyContactList.selectRow(document.getElementById('emergencyTable').rows[0]);
	            }
      }
   
   this.formatPhoneNumber = function(phoneNumber){
        phoneNumber = ('(' + phoneNumber.substr(0, 3) + ") " + phoneNumber.substr(3, 3) + '-' + phoneNumber.substr(6, 4));
        return phoneNumber;
        }
                 
} //main list function