function ErrorManager() {
  var errMsgs=new HashMap();
  // Step 1
  errMsgs.set('existingService.required', 'Please indicate whether you currently have TELUS internet service');
  errMsgs.set('existingCustomer.required', 'Please indicate whether you currently have a TELUS phone');

  errMsgs.set('searchType.require','Search Type is required');
  errMsgs.set('searchType.invalid','Search Type is invalid');

  errMsgs.set('houseNumber.require','House number is required');
  errMsgs.set('street.require','Street name is required');
  errMsgs.set('city.require','City is required');
  errMsgs.set('province.require','Province is required');

  errMsgs.set('telephone.require','Telephone number is required');
  errMsgs.set('telephone.invalid','The telephone number you entered has not been recognised');

  errMsgs.set('apartment.like','The suite number you entered has not been recognised. Please select one from the list below or enter another.');
  errMsgs.set('houseNumber.like','The house number you entered has not been recognised. Please select one from the list below or enter another.');
  errMsgs.set('street.like','The street name you entered has not been recognised. Please select one from the list below or enter another.');

  errMsgs.set('no.data','The address below could not be qualified. Please check your address and try again.');

  // Step 2 
  errMsgs.set('agreement.required','Please select a service agreement');

  // Step 3 
  errMsgs.set('contactFirstName.required','First name is required');
  errMsgs.set('contactLastName.required','Last name is required');

  errMsgs.set('contactEmail.required','Email address is required');
  errMsgs.set('contactEmail.invalid','Email address is invalid');

  errMsgs.set('contactPhone1.required','Phone number is required');
  errMsgs.set('contactPhone1.invalid','Phone number is invalid');

  errMsgs.set('contactPhone2.invalid','Alternate contact number is invalid');

  errMsgs.set('billAddressStreetNumber.required', 'Street no. is required');
  errMsgs.set('billAddressStreet.required', 'Street name is required');
  errMsgs.set('billAddressCity.required','City is required');
  errMsgs.set('billAddressProv.required', 'Province is required');
  errMsgs.set('billAddressPostal.required', 'Postal code is required');
  errMsgs.set('billAddressPostal.invalid', 'Postal code is invalid');

  errMsgs.set('creditInfo.required', 'Please complete at least 2 fields');

  var errFields=new Array();

  this.clear=function(){
    var container=document.getElementById(currentKey+'.errorMsg');
    while(container.hasChildNodes())container.removeChild(container.firstChild);
    container.parentNode.style.display='none';
    for(var i=0;i<errFields.length;i++){
      clearErr(errFields[i]);
    }
    errFields=new Array();
  }
  function clearErr(formNode){
    if(formNode.tagName!=null){
      clearStyle(formNode);
    }else{
      if(formNode.length>0){
        var elms=new Array();
        for(var i=0;i<formNode.length;i++)elms.push(formNode.item(i));
        for(var i=0;i<elms.length;i++)clearStyle(elms[i]);
      }
    }
  }
  function clearStyle(elm){
    if(elm.tagName=='INPUT'){
      if(elm.type.search(/text/i)==0){
        elm.className='txt';
      }else if(elm.type.search(/radio|checkbox/i)==0){
        var span=elm.parentNode;
        if(span.tagName=='SPAN'&&span.className=='err'){
          var checked=elm.checked;
          span.parentNode.insertBefore(elm,span);
          span.parentNode.removeChild(span);
          elm.checked=checked;
        }
      }
    } else if(elm.tagName=='SELECT'){
      elm.className='txt';
    }
  }
  this.showMsg=function(key){
    var container=document.getElementById(currentKey+'.errorMsg');
    container.parentNode.style.display='block';
    var li=document.createElement('li');
    li.appendChild(document.createTextNode(errMsgs.get(key)));
    container.appendChild(li);
  }
  this.showErr=function(formNode){
    if(formNode.tagName!=null)
    {
      setStyle(formNode);
    } 
    else
    {
      if(formNode.length>0){
        var elms=new Array();
        for(var i=0;i<formNode.length;i++)elms.push(formNode.item(i));
        for(var i=0;i<elms.length;i++)setStyle(elms[i]);
      }
    }
    function setStyle(elm){
      errFields.push(elm);
      if(elm.tagName=='INPUT'){
        if(elm.type.search(/text/i)==0){
          elm.className='err';
        }else if(elm.type.search(/radio|checkbox/i)==0){
          var checked=elm.checked;
          var span=document.createElement('span');
          elm.parentNode.insertBefore(span,elm);
          span.appendChild(elm);
          elm.checked=checked;
          span.className='err';
        }
      } else if(elm.tagName=='SELECT'){
        elm.className='err';
      }
    }
  }
}
