function getElementsByClassName(classname, node) {
  if(!node) node = document.getElementsByTagName('BODY')[0];
  var a = [];
  var re = new RegExp('\\b' + classname + '\\b');
  var els = node.all || node.getElementsByTagName("*");
  for(var i=0,j=els.length; i<j; i++) if(re.test(els[i].className))a.push(els[i]);
  return a;
}

function attachExternals() {
  if (document.getElementsByTagName('a')) {
    as = document.getElementsByTagName('a');
    for (var i=0; i<as.length; i++) {
      if (as[i].className.indexOf('external') >= 0) {
        as[i].target = '_blank';
      }
    }
  }
}

function evenColumns(columns) {
  if (document.getElementById(columns)) {
    var column = columns.substring(0,(columns.length-1));
    maxheight = 0;
    thecolumns = getElementsByClassName(column);
    for (var i=0; i<thecolumns.length; i++) {
      thepanel = thecolumns[i].getElementsByTagName('div')[1];
      thepanel.style.minHeight = '0';
      if (maxheight < thepanel.offsetHeight) {
        maxheight = thepanel.offsetHeight;
      }
    }
    for (var i=0; i<thecolumns.length; i++) {
      thepanel = thecolumns[i].getElementsByTagName('div')[1];
      thepanel.style.minHeight = (maxheight - 14) + 'px';
    }
  }
}


function evenClumnsUseful(classname) {
	if (getElementsByClassName(classname)) {
		var maxheight = 0;
		thecolumns = getElementsByClassName(classname);
		for (var i=0; i<thecolumns.length; i++) {
			if(thecolumns[i].offsetHeight > maxheight) {
				maxheight = thecolumns[i].offsetHeight;
			}	
		}
		thecolumnss = getElementsByClassName(classname);
		for (var x=0; x<thecolumnss.length; x++) {
			thepanel = thecolumnss[x];
			thepanel.style.height = maxheight + 'px';
		}
	}
}

function levelUsefulLink() {
	if (getElementsByClassName('UsefulLinkRow')) {
		theRows = getElementsByClassName('UsefulLinkRow');
		for (var i=0; i<theRows.length; i++) {
			theCols = theRows[i].getElementsByTagName("div");
			maxheight = 0;
			for (var j=0; j<theCols.length; j++) {
				if(theCols[j].offsetHeight > maxheight) {
					maxheight = theCols[j].offsetHeight;
				}				
			}
			for (var k=0; k<theCols.length; k++) {
				thepanel = theCols[k];
				thepanel.style.height = maxheight + 'px';
			}
		}
	}	
}



//was working then not for some reason
function evenColumnsUsefulLinks(columns) {
  if (getElementsByClassName(columns)) {
    var column = columns.substring(0,(columns.length-2));
    maxheight = 0;
    thecolumns = getElementsByClassName(column);
    for (var i=0; i<thecolumns.length; i++) {
      if (thecolumns[i].parentNode.className == columns) {
      thepanel = thecolumns[i];
      thepanel.style.minHeight = '0';
      if (maxheight < thepanel.offsetHeight) {
        maxheight = thepanel.offsetHeight;
        }
      }
    }
    
    for (var i=0; i<thecolumns.length; i++) {
      if (thecolumns[i].parentNode.className == columns) {
      thepanel = thecolumns[i];
      thepanel.style.minHeight = maxheight + 'px';
      }
    }
  }
}

//this causes an error on pages other than home page
//because it tries to run. Needs a homepage targetter to resolve.
function findPos(obj) {
  var curtop = 0;
  if(obj) {
  if (obj.offsetParent) {
  do {
	curtop += obj.offsetTop;
	}
    while (obj = obj.offsetParent);
  return [curtop];
 }
 }
}
//clunky - relies on creating a div on the homepage in all 3 bottom boxes and also
//requires bottom padding to be the same on those boxes. Can it be improved?
function evenColumnsHome() {
  if (document.getElementById('colsize1')&&document.getElementById('colsize2')&&document.getElementById('colsize3')) {
    col = new Array(3);
    for (var i=0; i<col.length; i++) {
      col[i] = findPos(document.getElementById('colsize'+(i+1)));
    }
    if ((col[1]!=col[2])&&(col[1]!=col[3])) {
      var max = 0;
      for (var i=0; i<col.length; i++) {
        if (col[i] > max) {
          max=col[i];
        }
      }
      for (var i=0; i<col.length; i++) {
        if (max > col[i]) {
          var diff = max-col[i];
          document.getElementById('colsize'+(i+1)).style.height = diff+'px';
        }
      }
    }
  }
}

function startList(nav) {
  if (document.all&&document.getElementById(nav)) {
    navRoot = document.getElementById(nav);
    for (var i=0; i<navRoot.childNodes.length; i++) {
      node = navRoot.childNodes[i];
      if (node.nodeName=="LI") {
        node.onmouseover=function() {
          this.className+=" over";
          this.style.zIndex=200;
        }
        node.onmouseout=function() {
          this.className=this.className.replace(" over", "");
          this.style.zIndex=0;
        }
      }
    }
  }
}


function getSlide() {
  var photo = getElementsByClassName('photo')[0];
  var number = 0;
  for (var i=0; i<photopaths.length; i++) {
    if (photo.src.indexOf(photopaths[i])>=0) {
      number = i;
    }
  }
  return number;
}
function setSlide(number) {
  var slideshow = getElementsByClassName('slideshow')[0];
  var photo = getElementsByClassName('photo',slideshow)[0];
  photo.src = photopaths[number];
  photo.alt = slidecaptions[number];
  photo.onclick = function() {
    window.open(largepaths[number]);
  }
  if (getElementsByClassName('slidecaption',slideshow)[0]) {
    getElementsByClassName('slidecaption',slideshow)[0].getElementsByTagName('div')[0].innerHTML = slidecaptions[number];
  }
  if (document.getElementById('slideinfo')) {
    document.getElementById('slideinfo').innerHTML = slideinfo[number];
  }
  document.getElementById('prevslide').style.display = 'inline';
  document.getElementById('nextslide').style.display = 'inline';
  if (number==0) {
    document.getElementById('prevslide').style.display = 'none';
  } else if ((number+1)==photopaths.length) {
    document.getElementById('nextslide').style.display = 'none';
  }
  var thumbs = getElementsByClassName('thumb',slideshow);
  for (var i=0; i<thumbs.length; i++) {
    thumbs[i].className = thumbs[i].className.replace(' selected','');
  }
  thumbs[number].className += ' selected';
}
function prevSlide() {
  number = getSlide();
  if (number>=1) {
    setSlide(number-1);
  }
  return false;
}
function nextSlide() {
  number = getSlide();
  if ((number+1)<photopaths.length) {
    setSlide(number+1);
  }
  return false;
}
function thumbsUp() {
  var thumbs = getElementsByClassName('thumbs')[0];
  thumbs.scrollTop = thumbs.scrollTop - 3;
  scrolldelay = setTimeout('thumbsUp()',10)
  return false;
}
function thumbsDown() {
  var thumbs = getElementsByClassName('thumbs')[0];
  thumbs.scrollTop = thumbs.scrollTop + 3;
  scrolldelay = setTimeout('thumbsDown()',10)
  return false;
}
function clearDelay() {
  clearTimeout(scrolldelay);
}
function attachSlideBehaviour(thumb,slideshow,number) {
  thumb.onclick = function() {
    setSlide(number);
    return false;
  };
}
function attachSlideshow(slidename) {
  slideshow = document.getElementById(slidename);
  var photo = getElementsByClassName('photo',slideshow)[0];
  slide = document.createElement('div');
  slide.className = 'slide';
  slide.innerHTML = '<a href="#" id="nextslide" onclick="nextSlide();"><img src="/_images/icon-next.gif" width="19" height="19" alt="Next slide" /></a><a href="#" id="prevslide" onclick="prevSlide();"><img src="/_images/icon-prev.gif" width="19" height="19" alt="Previous slide" /></a>';
  slideshow.appendChild(slide);
  thumbs = document.createElement('div');
  thumbs.className = 'thumbs';
  for (var i=0; i<thumbpaths.length; i++) {
    var thumb = document.createElement('a');
    thumb.href = '#';
    thumb.className = 'thumb';
    if ((i+1) % 5 == 0) {
      thumb.className += ' break';
    }
    attachSlideBehaviour(thumb,slideshow,i);
    thumb.innerHTML = '<img src="'+thumbpaths[i]+'" title="'+slidecaptions[i]+'" width="95" height="65" alt="" />';
    thumbs.appendChild(thumb);
  }
  slideshow.appendChild(thumbs);
  if (thumbpaths.length>10) {
    thumbs.style.height = '140px';
    pagination = document.createElement('div');
    pagination.className = 'pagination';
    pagination.innerHTML = '<a href="#" onclick="return false;" onmousedown="thumbsDown();" onmouseout="clearDelay();" onmouseup="clearDelay();"><img src="/_images/icon-down.gif" width="19" height="19" alt="Scroll down" /></a><a href="#" onclick="return false;" onmousedown="thumbsUp();" onmouseout="clearDelay();" onmouseup="clearDelay();"><img src="/_images/icon-up.gif" width="19" height="19" alt="Scroll up" /></a>';
    slideshow.appendChild(pagination);
  }
  setSlide(0);
}

function showFAQ(question,answer) {
  answer.style.display = 'block';
  question.className = 'expanded';
}
function hideFAQ(question,answer) {
  answer.style.display = 'none';
  question.className = 'contracted';
}
function attachFAQBehaviour(question,answer) {
  question.onclick = function() {
    var questions = getElementsByClassName('faqs')[0].getElementsByTagName('h2');
    var answers = getElementsByClassName('faqs')[0].getElementsByTagName('p');
    for (var i=0;i<questions.length;i++) {
      hideFAQ(questions[i],answers[i]);
    }
    showFAQ(question,answer);
  };
}
function attachFAQs() {
  if (getElementsByClassName('faqs')[0]) {
    var questions = getElementsByClassName('faqs')[0].getElementsByTagName('h2');
    var answers = getElementsByClassName('faqs')[0].getElementsByTagName('p');
    for (var i=0;i<questions.length;i++) {
      hideFAQ(questions[i],answers[i]);
      attachFAQBehaviour(questions[i],answers[i]);
    }
    showFAQ(questions[0],answers[0]);
  }
}

function init() {
	if (getElementsByClassName('UsefulLink')[0]) {
	/*window.onload = function() { evenClumnsUseful('UsefulLink');};*/
	window.onload = function() { levelUsefulLink();};
	}
	if (getElementsByClassName('newsbox')[0]) {
	window.onload = function() { 	evenClumnsUseful('newsbox');};
	}
	if (getElementsByClassName('finalist')[0]) {
	window.onload = function() { 	evenClumnsUseful('finalist');};
	}
  
  
  
  
	
	startList('navbar');
  evenColumns('finalists');
  attachExternals();
  attachFAQs();
  evenColumnsHome();
  //the following needs to be turned into a loop if going to be used
//  evenColumnsUsefulLinks('row1');
//  evenColumnsUsefulLinks('row2');
//  evenColumnsUsefulLinks('row3')
}

window.onresize = function() {
  evenColumns('finalists');
  evenColumnsHome();
}

/*window.onresize = init;*/
