/* Code and display of "Cat Comparator" - Copyright © 1995, 2003 Telemark Productions.
 * May not be duplicated in whole or in part. All rights reserved.
 *
 * Author: Rishi R. Kinra (rishi@kinra.net)
 *
 * This defines a CatPropertyMap object for the comparator 
*/ 

function CatPropertyMap() {
  //alert("Debug: CatPropertyMap");
}

/********* Innner Class ********/    
function AlphabetEnumerator() { }
AlphabetEnumerator.MIN = 65;
AlphabetEnumerator.MAX = 90;
/*******************************/

/* 
 * @aKey
 * @aPropertyName must be a string 
 *
*/
CatPropertyMap.getCatPropertyValueByKey = function(aKey, aPropertyName) {
  var isDigitRegEx = /\d+/;
  // Converting to a string to do below matching
  aKey = new String(aKey);
  if( (aKey.match(isDigitRegEx)) == null ) {
    aKey = aKey.toUpperCase();
  }   
  if( (aPropertyName.match(isDigitRegEx)) != null ) {
    CatPropertyMap.printNoValidParameterError("CatPropertyMap.getCatPropertyValueByKey: aPropertyName");
  }   
  //alert("aKey:" + aKey);
  aPropertyMap = new Array();
  for(j=0; j<CatForCompare.propertyName.length; j++) {
    if(aPropertyName.toString() == (CatForCompare.propertyName[j]).toString()) {
      //alert((aPropertyName.toString()).toUpperCase());
      // Assign the appropriate CatPropertyMap into local aPropertyMap
      aPropertyMap = eval("CatPropertyMap." + (aPropertyName.toString()).toUpperCase() + ";");
      break;
    }
  }  
  for(i=0;i<aPropertyMap.length;i++) {
    if(aPropertyMap[i] != null) {
      // Do a match to see if we have a number or character
      if( (aKey.match(isDigitRegEx)) == null ) {
        // Get By Alphabetic Enumeration
        for(ii=AlphabetEnumerator.MIN;ii<=AlphabetEnumerator.MAX;ii++) { // Char Code Unicode Number For Characters A-Z
         if(aKey.toString() == (String.fromCharCode(ii))) {
            //alert(ii);
            //alert(String.fromCharCode(ii) + "="+ aPropertyMap[((ii) - 65)] + "=" + ii)
            return aPropertyMap[((ii) - 65)]; // Remember return is here!
          }  
        }
      } else {  
        // If we can't do a matching by Alphnumeric keys then try match by iterator
        //
        
         //alert("Get By Iteration:" + aKey);
        
        // Make an exception for SERVICE PROPERETY since it actually starts with 0!
        // Talk to Ellen about this.
        if((aPropertyName.toString()).toUpperCase() == "_X_") {
            return aPropertyMap[aKey];
        } else {
            return aPropertyMap[(aKey - 1)];
        }
        
      }
    }  
  }
}

CatPropertyMap.printNoValidParameterError = function(s) {
     alert("Error! No valid parameter passed in method:" + s);
}


/* PROPERTY MAPS */
/********************************************************************/
CatPropertyMap.SIZE = new Array();
CatPropertyMap.SIZE[0] = "Small";
CatPropertyMap.SIZE[1] = "Small to medium";
CatPropertyMap.SIZE[2] = "Medium";
CatPropertyMap.SIZE[3] = "Medium to large";
CatPropertyMap.SIZE[4] = "Large";
/********************************************************************/
// This is calculated in the  'CatForCompare' 
CatPropertyMap.COAT = new Array();
CatPropertyMap.COAT[0] = "Short coat";
CatPropertyMap.COAT[1] = "Medium coat";
CatPropertyMap.COAT[2] = "Long coat";
CatPropertyMap.COAT[3] = "Short and medium coat";
CatPropertyMap.COAT[4] = "Short and long coat";
CatPropertyMap.COAT[5] = "Medium and long coat";
/********************************************************************/
// This is calculated in the  'CatForCompare' 
CatPropertyMap.GROOMING = new Array();
CatPropertyMap.GROOMING[0] = "Little grooming needed";
CatPropertyMap.GROOMING[1] = "Every few weeks";
CatPropertyMap.GROOMING[2] = "Once a week";
CatPropertyMap.GROOMING[3] = "Twice a week";
CatPropertyMap.GROOMING[4] = "Daily";

CatPropertyMap.GROOMING[5] = "Little grooming needed / Little grooming needed";
CatPropertyMap.GROOMING[6] = "Little grooming needed / Every few weeks";
CatPropertyMap.GROOMING[7] = "Little grooming needed / Once a week";
CatPropertyMap.GROOMING[8] = "Little grooming needed / Twice a week";
CatPropertyMap.GROOMING[9] = "Little grooming needed / Daily";

CatPropertyMap.GROOMING[10] = "Every few weeks / Little grooming needed";
CatPropertyMap.GROOMING[11] = "Every few weeks / Every few weeks";
CatPropertyMap.GROOMING[12] = "Every few weeks (shorter coat) / Once a week (longer coat)";
CatPropertyMap.GROOMING[13] = "Every few weeks (shorter coat) / Twice a week  (longer coat)";
CatPropertyMap.GROOMING[14] = "Every few weeks / Daily";

CatPropertyMap.GROOMING[15] = "Once a week / Little grooming needed";
CatPropertyMap.GROOMING[16] = "Once a week / Every few weeks";
CatPropertyMap.GROOMING[17] = "Once a week / Once a week";
CatPropertyMap.GROOMING[18] = "Once a week (shorter coat) / Twice a week (longer coat)";
CatPropertyMap.GROOMING[19] = "Once a week / Daily";

CatPropertyMap.GROOMING[20] = "Twice a week / Little grooming needed";
CatPropertyMap.GROOMING[21] = "Twice a week / Every few weeks";
CatPropertyMap.GROOMING[22] = "Twice a week / Once a week";
CatPropertyMap.GROOMING[23] = "Twice a week / Twice a week";
CatPropertyMap.GROOMING[24] = "Twice a week / Daily";

CatPropertyMap.GROOMING[25] = "Daily / Little grooming needed";
CatPropertyMap.GROOMING[26] = "Daily / Every few weeks";
CatPropertyMap.GROOMING[27] = "Daily / Once a week";
CatPropertyMap.GROOMING[28] = "Daily / Twice a week";
CatPropertyMap.GROOMING[29] = "Daily / Daily";
/********************************************************************/
CatPropertyMap.BODY = new Array();
CatPropertyMap.BODY[2] = "Cobby"; //C
CatPropertyMap.BODY[1] = "Semi-Cobby"; //B
CatPropertyMap.BODY[12] = "Moderate"; //M
CatPropertyMap.BODY[18] = "Slender/Fine Boned"; //S
CatPropertyMap.BODY[5] = "Semi-foreign"; //F
CatPropertyMap.BODY[21] = "Svelte"; // V
/********************************************************************/
CatPropertyMap.ACTIVITY = new Array();
CatPropertyMap.ACTIVITY[0] = "Low";
CatPropertyMap.ACTIVITY[1] = "Fairly low"; 
CatPropertyMap.ACTIVITY[2] = "Average"; 
CatPropertyMap.ACTIVITY[3] = "High";
CatPropertyMap.ACTIVITY[4] = "Very high"; 
/********************************************************************/
CatPropertyMap.VOCALITY = new Array();
CatPropertyMap.VOCALITY[0] = "Very quiet";
CatPropertyMap.VOCALITY[1] = "Quiet"; 
CatPropertyMap.VOCALITY[2] = "Average"; 
CatPropertyMap.VOCALITY[3] = "Vocal";
CatPropertyMap.VOCALITY[4] = "Very vocal"; 
/********************************************************************/
//!! mention this..
CatPropertyMap.AFFECTION = new Array();
CatPropertyMap.AFFECTION[2] = "Somewhat affectionate";
CatPropertyMap.AFFECTION[3] = "Affectionate"; 
CatPropertyMap.AFFECTION[4] = "Very affectionate"; 
/********************************************************************/
CatPropertyMap.ATTENTION = new Array();
CatPropertyMap.ATTENTION[0] = "Doesn't need much attention";
CatPropertyMap.ATTENTION[2] = "Average attention needed";
CatPropertyMap.ATTENTION[4] = "Lots of attention needed";
/********************************************************************/
CatPropertyMap.RECOMMENDEDFOR = new Array();
CatPropertyMap.RECOMMENDEDFOR[0] = "Small children (up to 5 yrs.) / Children (6-10) / Older children (11+) / Adults (18-65)";
CatPropertyMap.RECOMMENDEDFOR[1] = "Children (6+) / Adults (18-65)"; 
CatPropertyMap.RECOMMENDEDFOR[2] = "Older children (11+) / Adults (18-65)"; 
CatPropertyMap.RECOMMENDEDFOR[3] = "Everyone";  //"Small children (up to 5 yrs.), Children (6-10), Older children (11+) / Adults (18-65) / Seniors";
CatPropertyMap.RECOMMENDEDFOR[4] = "Children (6+) / Adults (18-65) / Seniors"; 
CatPropertyMap.RECOMMENDEDFOR[5] = "Older children (11+) / Adults (18-65) / Seniors";
/********************************************************************/
CatPropertyMap.TIMEALONE = new Array();
CatPropertyMap.TIMEALONE[0] = "0-4 hrs. per day";
CatPropertyMap.TIMEALONE[2] = "4-8 hrs. per day"; 
CatPropertyMap.TIMEALONE[4] = "8+ hrs. per day"; 
/********************************************************************/
CatPropertyMap.DOCILITY = new Array();
CatPropertyMap.DOCILITY[0] = "Can be a handful";
CatPropertyMap.DOCILITY[2] = "Moderately docile"; 
CatPropertyMap.DOCILITY[4] = "Easy to handle"; 
/********************************************************************/
