// ======================================================================== AvQuest Functions //
var NSv6 = document.getElementById && !document.all;
var NSv4 = document.layers;
var IEv4 = document.all && document.getElementById;
var mthsOfYr = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July',
                         'August', 'September', 'October', 'November', 'December');
var daysOfWk = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');

function aside(info) {window.status = info;}
window.onmouseout = function() {window.status="Avatar Quest Site";};

function render(id, str) {
  if (!document.getElementById && !document.layers && !document.all) return;
  if (document.getElementById)
    document.getElementById(id).innerHTML = str;
  else if (document.layers) {
    document.layers[id].document.open();
    document.layers[id].document.write(str);
    document.layers[id].document.close(); }
  else document.all[id].innerHTML = str; }

function reportLth(fld, total, opfld) {
  var charleft = (total - fld.length - 1);
  var message = charleft + " chars remaining";
  if (charleft < 0)
    message = '<span style="color: #FF0000">' + (charleft * -1) + ' chars <b>over limit</b></span>';
  render(opfld, message); }

function sendMail(usr, dotcom) {
  location.href = 'mailto:'+usr+'@'+dotcom; return true; }

function writeMail(usr, dotcom) {
  document.write('<a href="mailto:'+usr+'&#64;'+dotcom+'">'+usr+' at '+dotcom+'</a>'); }

function chkData(form, fld1, fld2) {
  if (form.elements[fld1].value !== form.elements[fld2].value) {
    alert('Your passwords do not match.  Please reenter your passwords.');
    return false; }
  form.submit(); }

function chkEntry() {
  if (event.keyCode < 45 || event.keyCode > 58) return false; }

function changeBox(chkbox) {
  var box = eval(chkbox);
  box.checked = !box.checked; }

function clear(field) {
  field.value = '';
  return true; }

function trim(str) {
  var brope = str.indexOf('[');
  var brclo = str.indexOf(']');
  if (brope >= 0)
    str = str.substring(brope+1,brclo);
  return str.replace(/^\s+|\s+$/g,''); }

function testFor(qvar, qarray) {
  var tested = false;
  for (q in qarray)
    if (qarray[q] == qvar) tested = true;
  return tested; }

function numberorder(a, b) {
  return a - b; }

function bubbleSort(arr, elem) {
  var lth = arr.length;
  for (var i = 0; i < lth - 1; i++)
    for (var j = i + 1; j < lth; j++)
      if (arr[j][elem] < arr[i][elem]) {
        var seed = arr[i];
        arr[i] = arr[j];
        arr[j] = seed; }
  return arr; }

var newWindow;
function openNew(url) {
  newWindow = window.open(url,'new'); }

function limitInput(maxlth, e, tracker) {
  if (window.event && event.srcElement.value.length >= maxlth) return false;
  else if (e.target && e.target == eval(tracker) && e.target.value.length >= maxlth) {
    var pressedkey = /[a-zA-Z0-9\.\,\/]/;
    if (pressedkey.test(String.fromCharCode(e.which))) e.stopPropagation(); } }

function limitCnt(maxlth, e, tracker) {
  var theFld = eval(tracker);
  var lthleft = maxlth - theFld.value.length;
  if (window.event || e.target && e.target == eval(tracker)) {
    if (lthleft < 0) theFld.value = theFld.value.substring(0,maxlth);
    render(tracker,lthleft); } }

function showLimit(theFld, theLimit) {
  var limit_txt = '<div style="font-size:12px">(<b><span id="' + theFld.toString() + '">';
  limit_txt += theLimit + '</span></b> characters remaining.)</div>';
  document.write(limit_txt);
  if (document.getElementById) {
    eval(theFld).onkeypress = function(){return limitInput(theLimit,event,theFld)};
    eval(theFld).onkeyup = function(){limitCnt(theLimit,event,theFld)}; }
  else if (document.layers) {
    document.body.addEventListener('keypress', function(event) {limitInput(theLimit,event,theFld)}, true);
    document.body.addEventListener('keyup', function(event) {limitCnt(theLimit,event,theFld)}, true); } }

function getWkday(datestr) {
  var yr = new Number(datestr.substring(0,4));
  var mt = new Number(datestr.substring(datestr.indexOf('-') + 1, datestr.lastIndexOf('-'))) - 1;
  var dt = new Number(datestr.substring(datestr.lastIndexOf('-') + 1));
  var newdate = new Date(yr, mt, dt);
  return daysOfWk[newdate.getDay()] + ', ' + mthsOfYr[newdate.getMonth()] + ' ' + dt; }