// Common JavaScript for ARK web pages

// Global variables
var isIEMac = (navigator.userAgent.indexOf('MSIE') !== -1 &&
	       navigator.userAgent.indexOf('Mac') !== -1) ? true : false;
var isSafari = (navigator.userAgent.indexOf('AppleWebKit') !== -1) ? true : false;
var DHTML = (document.getElementById || document.all);

function getObj(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
		if (this.obj) {
			this.style = document.getElementById(name).style;
		}
	} else if (document.all) {
		this.obj = document.all[name];
		if (this.obj) {
			this.style = document.all[name].style;
		}
	}
}

function getElementsByClassName(classstr, tagstr, container) {
  // classstr:
  //   string containing the class(es) that you are searching for
  // tagstr (optional, defaults to '*'):
  //   an optional tag name to narrow the search to specific tags;
  //   e.g., 'a' for links
  // container (optional, defaults to document):
  //   An optional object container to search inside, useful for narrowing
  //   the scope of the search

  tagstr = tagstr || "*";
  container = container || document;
  var objs = (tagstr === '*' && document.all) ? document.all
    : container.getElementsByTagName(tagstr);
  var delim = classstr.indexOf('|') !== -1  ? '|' : ' ';
  var found = [];
  var classes = classstr.split(delim);
  for (var i = 0, j = objs.length; i < j; i++) {
    var objclasses = objs[i].className.split(' ');
    if (delim === ' ' && classes.length > objclasses.length) continue;
    var c = 0;
    comparisonloop:
    for (var k = 0, l = objclasses.length; k < l; k++) {
      for (var m = 0, n = classes.length; m < n; m++) {
        if (classes[m] === objclasses[k]) c++;
        if ((delim === '|' && c === 1) ||
            (delim === ' ' && c === classes.length)) {
          found.push(objs[i]);
          break comparisonloop;
        }
      }
    }
  }
  return found;
}

// Fix IE 5.0's lack of push method
if (typeof Array.prototype.push !== "function") {
  Array.prototype.push = function(value) {
    this[this.length] = value;
  };
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload !== 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    };
  }
}

// Credit: Brian Adkins at http://www.easy-reader.net/archives/2007/08/27/
var createElementWithName = (function() {
  try {
    // this should only work in IE
    var el = document.createElement('<div name="foo">');
    if (el.tagName !== 'DIV' || el.name !== 'foo') {
      throw 'createElement failed';
    }
    return function(tag, name) {
      return document.createElement('<' + tag + ' name="' + name + '"></' + tag + '>');
    };
  } catch (e) {
    return function(tag, name) {
      var el = document.createElement(tag);
      el.setAttribute('name',name);
      return el;
    };
  }
}());

function verifyRegexp(object, pattern) {
	if (!object || !object.value) return;
	var reg = new RegExp(pattern);
	return reg.exec(object.value);
}
