// See these pages - where the addEvent function came from
//http://www.scottandrew.com/weblog/articles/cbs-events
//http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
// Sitepoint's book DHTML Utopia, Ch3 pg 54 (available in sample chapters)
// http://www.sitepoint.com/blog-post-view.php?id=171578
function addEvent(obj, evType, fn, useCapture){
  if (!obj) { alert(fn); return false; }
  if (obj.addEventListener) { 
    obj.addEventListener(evType, fn, useCapture); 
    return true; 
  }
  else if (obj.attachEvent) { 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
  }
  else { 
    var oldevent = elm['on' + evType];
    if (typeof elm['on' + evType] != 'function') {
      elm['on' + evType] = fn;
    }
    else {
      elm['on' + evType] = function() {
        oldevent();
        fn();
      }
    }
  } 
}


// taken from http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
  //alert(func);
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    };
  }
}
function checkEmail(emailad) {

  findat = (emailad.indexOf("@") > 0);
  finddot = (emailad.indexOf(".", findat + 1) >= 0);
  return ((findat) && (finddot));

}

function checkForm(form) {

//  form.elements["date"].value = new Date();

  if ((form.elements["name"].value) && 
      (checkEmail(form.elements["email"].value))) {
    return true;
  }
  else {
    alert('You must specify your Name and a valid email address.');
    return false;
  }

}

function checkEmail(emailad) {

  findat = (emailad.indexOf("@") > 0);
  finddot = (emailad.indexOf(".", findat + 1) >= 0);
  findnospace = (emailad.indexOf(" ") < 0);
  return ((findat) && (finddot) && (findnospace));

}

function checkContactsForm(form) {

  if ((form.elements["fname"].value) && 
      (form.elements["sname"].value) && 
      (checkEmail(form.elements["email"].value)) && 
      (form.elements["address"].value)) {
    return true;
  }
  else {
    alert('You must specify your First Name, Surname, a valid email address, and your postal address.');
    return false;
  }

}

function extlink(linkobj) {
  if (linkobj.href) {
    window.open(linkobj.href,'extphysio');
  }
  return false;
}
function emaillink(aft,bef,ltext,attrs) {
  if (ltext == '') {
    ltext = bef + '@' + aft;
  }
  document.write('<a href="mailto:' + bef + '@' + aft + '" title="Send an email to ' + ltext + '"' + attrs + '>'+ ltext + '</a>');
}

function fadeexit (i,linkobj) {
  document.getElementById('mosaic').style.opacity = i;
  if (i>0) {
    window.setTimeout(function () {fadeexit(i-0.1, linkobj)}, 100)
  }
  else {
    extlink(linkobj);
  };
}

function hideObj(objid) {
  var objElem = null;
  if (objid && document.getElementById) {
    if (objElem = document.getElementById(objid)) {
      objElem.style.display = 'none';
    }
  }
}

function showObj(objid) { // optional 2nd argument is display, so either inline, block or something else
  var objElem = null;
  var objDisplay = 'block';
  if (arguments.length > 1) {
    objDisplay = arguments[1];
  }
  if (objid && document.getElementById) {
    if (objElem = document.getElementById(objid)) {
      objElem.style.display = objDisplay;
    }
  }
}

// inArray Prototype Array object by EmbiMedia
// http://www.embimedia.com/resources/labs/js-inarray.html
// Returns true if the passed value is found in the
// array.  Returns false if it is not.
// Modified to return index, or -1 if not found
Array.prototype.inArray = function (value) {
  var i;
  var len = this.length;
  for (i=0; i < len; i++) {
    // Matches identical (===), not just similar (==).
    if (this[i] === value) {
        return i;
    }
  }
  return -1;
};

function hasClass (elem,classtofind) {
  var classarr = new Array();
  if (elem && classtofind) {
    if (elem.className) {
      classarr = elem.className.split(" ");
      return (classarr.inArray(classtofind)>=0);
    }
  }
  return false;
}

function addClass (elem,classtoadd) {
  var classarr = new Array();
  if (elem && classtoadd) {
    if (elem.className) {
      classarr = elem.className.split(" ");
      if (classarr.inArray(classtoadd)<0) {
        classarr.push(classtoadd);
        elem.className = classarr.join(" ");
      }
    }
    else {
      elem.className = classtoadd;
    }
    return true;
  }
  return false;
}

function remClass (elem,classtorem) {
  var classarr = new Array();
  var ind = 0;
  if (elem && classtorem) {
    if (elem.className) {
      classarr = elem.className.split(" ");
      if ((ind = classarr.inArray(classtorem))>=0) {
        classarr.splice(ind,1);
        elem.className = classarr.join(" ");
      }
    }
    else {
      elem.className = '';
    }
    return true;
  }
  return false;
}


function wrapPhotoCaptions(strDivClass, strCaptionClass) {
  var arrDivs = document.getElementsByTagName('div');
  var arrImgs = [];
  var arrCaptions = [];
  var d = 0;
  var i = 0;
  var c = 0;
  var intWidth = 0;
  for (d = 0; d < arrDivs.length; d++) {
    if (hasClass(arrDivs[d], strDivClass)) {
      arrImgs = arrDivs[d].getElementsByTagName('img');
      intWidth = 0;
      for (i = 0; i < arrImgs.length; i++) {
        intWidth = Math.max(intWidth, arrImgs[i].width);
      }
      arrCaptions = arrDivs[d].getElementsByTagName('p');
      for (c = 0; c < arrCaptions.length; c++) {
        if (!hasClass(arrCaptions[c], strCaptionClass)) {
          addClass(arrCaptions[c], strCaptionClass);
        }
        arrCaptions[c].style.width = intWidth + 'px';
      }
    }
  }
}
addEvent(window, 'load', function () { wrapPhotoCaptions('photo','caption'); },false);

