var lt = String.fromCharCode(60);
var gt = String.fromCharCode(62);

var args = "" + document.location;
var posn = args.indexOf('?');
if ( posn == -1 ) {
  args=""; // No arguments
} else {
  args = args.substring( posn+1, args.length );
  posn = args.indexOf('#');
  if ( posn != -1 ) {
    args = args.substring( 0, posn);
  }
}

// Process an argument
function getArg( argName, defaultValue ) {
  var posn = 0
  while ( true ) {
    posn = args.indexOf(argName+"=", posn);
    if ( posn == -1 ) {
      return defaultValue;
    }
    if ( (posn == 0) || (args.substring( posn-1, posn ) == '&') ) {
        break;
    }
    posn++;
  }

  var argValue = args.substring( posn+argName.length+1, args.length );
  posn = argValue.indexOf('&');
  if ( posn != -1 ) {
    argValue = argValue.substring( 0, posn );
  }

  argValue = substitute(argValue,"+"," ");
  posn=-1;
  while ( (posn = argValue.indexOf('%',posn+1)) != -1 ) {
    if (posn <= argValue.length-3) {
      argValue = argValue.substring(0,posn) + hexToChar(argValue.substring(posn+1,posn+3)) + argValue.substring(posn+3,argValue.length);
    }
  }
  return argValue;
}

function entities(str) {
  str = str.toString();
  return substitute(substitute(substitute(substitute(str,'&','&amp;'),gt,'&gt;'),lt,'&lt;'),'"','&quot;');
}

function substitute(str,find,repl) {
  var posn=-repl.length;
  while ( (posn = str.indexOf(find,posn+repl.length)) != -1 ) {
    str = str.substring(0,posn) + repl + str.substring(posn+find.length,str.length);
  }
  return str;
}

var hexCodes = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
function hexToChar(value) {
  var i;
  var out = 0;
  for (i=0; i<value.length;i++) {
    out = out*16 + hexCodes.indexOf(value.substring(i,i+1));
  }
  return String.fromCharCode(out);
}

function encodeVal(v) {
  var i = new Number(v);
  return hexCodes.substring(i,i+1);
}

function decodeVal(v,n) {
  var i = new Number(n);
  return hexCodes.indexOf(v.substring(i,i+1));
}

function isInList(e,l) {
  if (l != null) {
    for (var i = 0 ; i < l.length ; i++) {
      if (l[i] == e ) {
        return true;
      }
    }
  }
  return false;
}

function randInt( min, max ) {
  return min + Math.floor(Math.random() * (max-min));
}

// Add indefinte article (a or an), with space, before a string
var indArtLetters = "aeiouAEIOU";
function addIndArt(str) {
  if (indArtLetters.indexOf(str.substring(0,1)) != -1) {
    return "an " + str;
  } else {
    return "a " + str;
  }
}

function addPlural(str) {
  return str + "s";
}

function enumSuffix(value) {
  if ((value==11)||(value==12)||(value==13)) {
    return "th";
  } else if (value%10==1) {
    return "st";
  } else if (value%10==2) {
    return "nd";
  } else if (value%10==3) {
    return "rd";
  } else {
    return "th";
  }
}

var monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var objectNames = new Array('Flight feather','Limb bone','Rib','Vertebra','Canine tooth','Molar tooth','Down feather','Mammal fur','Snake skin','Skull','Jaw','Butterfly','Wasp','Dragonfly','Hover fly','Bluebottle','Mosquito','Moth','Grasshopper','Lacewing','Crane-fly','Silverfish','Springtail','Graptolite','Ammonite','Tube worm','Belemnite','Bivalve','Trilobite','Gastropod','Sponge','Brachiopod','Echinoid','Centipede','Woodlouse','Spider','Snail','Maggot','Slug','Millipede','Shrimp','Jewel beetle','Mussel','Earthworm','Haematite','Magnetite','Pyrite','Calcite','Gypsum','Quartz','Galena','Mica','Feldspar','Venus flytrap','Sundew','Pitcher plant','Dandelion fruit','Velvet bean','Vegetable ivory','Sunflower head','Butterwort','Lime seeds','Leuhea pod');
function groupFromObject(objNum) {
if (objNum<=10) { return 0; }
else if (objNum<=22) { return 1; }
else if (objNum<=32) { return 2; }
else if (objNum<=43) { return 3; }
else if (objNum<=52) { return 4; }
else if (objNum<=62) { return 5; }
}
var groupNames = new Array('Animal part','Insect','Fossil','Invertebrate','Mineral','Plant');
var groupLCNames = new Array('animal part','insect','fossil','invertebrate','mineral','plant');
var groupBriefs = new Array("bits and pieces from animals with backbones.","A large group of animals without backbones (invertebrates)","remains of animals/plants alive long ago,<br />now turned to rock.","(other than Insects)","from rocks to jewels, minerals build our planet.","the key to all life, providing food and shelter.");
var groupIcons = new Array('icons/sel_anim_info.gif','icons/sel_ins_info.gif','icons/sel_fos_info.gif','icons/sel_inv_info.gif','icons/sel_min_info.gif','icons/sel_pla_info.gif');
var groupObjImageDirs = new Array('animal','insects','fos','inv','min','plant');
var objectImages = new Array('B-feather.jpg','limb_bone.jpg','rib.jpg','vertebra.jpg','canine_tooth.jpg','molar_tooth.jpg',0,0,0,0,0,'butterfly.jpg','wasp.jpg','dragonfly2.jpg','hoverfly.jpg','bluebottle.jpg','mosquito.jpg',0,0,0,0,0,0,'graptolite.jpg','ammonite.jpg','tubeworm.jpg','belemnite.jpg','bivalve.jpg','trilobite.jpg',0,0,0,0,'centipede.jpg','woodlouse.jpg','spider.jpg','snail.jpg','maggot.jpg','slug.jpg',0,0,0,0,0,'haematite.jpg','magnetite.jpg','pyrite.jpg','calcite.jpg','gypsum.jpg','quartz.jpg',0,0,0,'venus-flytrap.jpg','sundew.jpg','pitcher_plant.jpg','dandilion.jpg','velvet-bean.jpg','vegetable-ivory.jpg','sunflower.jpg',0,0,0);
var objectSmImages = new Array('B-feather_sm.jpg','limb_bone_sm.jpg','rib_sm.jpg','vertebra_sm.jpg','canine_tooth_sm.jpg','molar_tooth_sm.jpg',0,0,0,0,0,'butterfly_sm.jpg','wasp_sm.jpg','dragonfly2_sm.jpg','hoverfly_sm.jpg','bluebottle_sm.jpg','mosquito_sm.jpg',0,0,0,0,0,0,'graptolite_sm.jpg','ammonite_sm.jpg','tubeworm_sm.jpg','belemnite_sm.jpg','bivalve_sm.jpg','trilobite_sm.jpg',0,0,0,0,'centipede_sm.jpg','woodlouse_sm.jpg','spider_sm.jpg','snail_sm.jpg','maggot_sm.jpg','slug_sm.jpg',0,0,0,0,0,'haematite_sm.jpg','magnetite_sm.jpg','pyrite_sm.jpg','calcite_sm.jpg','gypsum_sm.jpg','quartz_sm.jpg',0,0,0,'venus-flytrap_sm.jpg','sundew_sm.jpg','pitcher_plant_sm.jpg','dandilion_sm.jpg','velvet-bean_sm.jpg','vegetable-ivory_sm.jpg','sunflower_sm.jpg',0,0,0);
function objImageArray(n,a) {return 'magnifier/'+groupObjImageDirs[groupFromObject(n)]+'/'+a[n];}
function objImage(n) {return objImageArray(n,objectImages);}
function objSmImage(n) {return objImageArray(n,objectSmImages);}
var terrainNames = new Array("Open sea","Open sea","Open sea","Seashore","Open sea","Woodland","Meadow","Open sea","Rock","Soil");
var terrainLCNames = new Array("open sea","open sea","open sea","seashore","open sea","woodland","meadow","open sea","rock","soil");

