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

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

function addClass(element,value) {
  if (!element.className) {
    element.className = value;
  } else {
    newClassName = element.className;
    newClassName+= " ";
    newClassName+= value;
    element.className = newClassName;
  }
}

/* set up history.back links */
function historyBack() {
    if (! document.getElementsByTagName) return; 
    var links = document.getElementsByTagName("a");
    for (var c=0; c<links.length; c++) { 
        var anchorlink = links[c]; 
        if (anchorlink.getAttribute("rel") == "previous") {           
            anchorlink.onclick = function() {
                                this.href='javascript:history.back()';
                                //return false;
                             }
        }
    }
}

/* 
open external link targets in new (_blank) window
params: pass a specific array of anchor elements (e.g. all within a certain container),
else function defaults to all anchors with rel='external'
*/
function externalLinks(targetAnchors) { 
    if (!document.getElementsByTagName) return; 
    if(! targetAnchors) {
        var anchors = document.getElementsByTagName("a");
        for (var i=0; i<anchors.length; i++) { 
            var anchor = anchors[i];
            if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external" || anchor.parentNode.className=='external')) anchor.target = "_blank"; 
        }         
    } else {
        var anchors = targetAnchors;
        for (var i=0; i<anchors.length; i++) { 
            var anchor = anchors[i];
            anchor.target = "_blank";
        }
    }     
}

/* print */
function printPage() { 
    if (!document.getElementsByTagName) return; 
    var anchors = document.getElementsByTagName("a"); 
    for (var i=0; i<anchors.length; i++) { 
        var anchor = anchors[i]; 
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "print") {
        anchor.onclick = function() {
                                    window.print();
                                    return false;
                                    }
        } 
    } 
}

/* Check that an email address is valid based on RFC 821 (?) */
function isValidEmail(address) {
    if (address != '' && address.search) {
        if (address.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
            return true;
        } else return false;
    } else return true;
}

function isValidPhone(NumStr, String) {
    for(var Idx=0; Idx<NumStr.length; Idx++) { 
        var Char = NumStr.charAt(Idx); 
        var Match = false; 

        for(var Idx1=0; Idx1<String.length; Idx1++) 
        { 
            if(Char == String.charAt (Idx1)) 
                Match = true; 
        } 

        if (!Match) 
            return false; 
    } 
    return true; 
}

