var abcalpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numalpha = "0123456789";

var kappaR = .0385, kappaP = 0.0667;

//var debug = window.open();

function replace ( string, substring, start, end ) {
// replace the substring of 'string' from start to end-1 with 'substring',
//  returning the new string

  return string.substring(0,start)+substring+
         string.substring(end,string.length);

}

function pad ( text, length ) {
  var padding = "";
  for ( var i = text.length ; i < length ; i++ ) { padding += " "; }
  return padding+text;
}

function selectalpha ( type ) {
// return the appropriate alphabet for 'type' (allowed values: letter, number)

  if ( type == "letter" ) { return abcalpha; }
  else if ( type == "number" ) { return numalpha; }
  else { return abcalpha; }   // assume letters as a default
}

function strip ( text, alphabet ) {
// returns 'text', minus any characters not present in 'alphabet'
// use this to strip out spaces, punctuation, etc
// 'text' must be in all caps

  var stripped = "";

  for ( var i = 0 ; i < text.length ; i++ ) {
    var ch = text.charAt(i);
    if ( alphabet.indexOf(ch) != -1 ) { stripped += ch; }
  }

  return stripped;

}

function factor ( number ) {
// return array of all numbers which divide 'number', including itself but 
//  excluding 1

  var factors = new Array();
  var numfact = 0;

  for ( var i = 2 ; i <= number ; i++ ) {
    if ( number % i == 0 ) {
      factors[numfact] = i;
      numfact++;
    }
  }

  return factors;
}

function space ( text, n ) {
// return text with spaces inserted every n characters

  var spaced = "";
  for ( var i = 0 ; i < text.length ; i++ ) {
    if ( ( i % n ) == 0 && i != 0 ) { spaced += " "+text.charAt(i); }
    else { spaced += text.charAt(i); }
  }

  return spaced;
}

function sort ( values1, values2 ) {
// sort 'values1' in increasing order, making the same changes in 'values2'

  for ( var i = 0 ; i < values1.length ; i++ ) {
    for ( var j = 0 ; j < values2.length-1 ; j++ ) {
      if ( values1[j] > values1[j+1] ) {
        var temp = values1[j];
        values1[j] = values1[j+1];
        values1[j+1] = temp;
        var temp2 = values2[j];
        values2[j] = values2[j+1];
        values2[j+1] = temp2;
      }
    }
  }

}

function revsort ( values1, values2 ) {
// sort 'values1' in decreasing order, making the same changes in 'values2'

  for ( var i = 0 ; i < values1.length ; i++ ) {
    for ( var j = 0 ; j < values2.length-1 ; j++ ) {
      if ( values1[j] < values1[j+1] ) {
        var temp = values1[j];
        values1[j] = values1[j+1];
        values1[j+1] = temp;
        var temp2 = values2[j];
        values2[j] = values2[j+1];
        values2[j+1] = temp2;
      }
    }
  }

}

