﻿function getElementsByClass( searchClass, domNode, tagName) {
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) {
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1)
			el[j++] = tags[i];
	}
	return el;
}

function sfHover() {
   var sfEls = document.getElementById("mainlevelmainnav").getElementsByTagName("LI");
   for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onmouseover=function() {
         this.className+=" sfhover";
      }
      sfEls[i].onmouseout=function() {
         this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
      }
   }
}

function modifySitemap(){
	var sitemap = document.getElementById('sitemap');
	/* removes the first LI element in the sitemap, so that the HOME link is not shown */
	var listItems = sitemap.getElementsByTagName("LI");
	var parentItem;
	for(var i = 0; i < listItems.length; i++){
		if (listItems[i].tagName == "LI"){
			parentItem = listItems[i].parentNode;
			parentItem.removeChild(listItems[i]);
			break;
		}
	}
	// get all LI's with class "parent". These will be the headers, to be formatted.
	var allHeaders = getElementsByClass("parent", sitemap, "LI");
	for(var i = 0; i < allHeaders.length; i++){
		var spans = allHeaders[i].getElementsByTagName("SPAN");
		var span;
		if (allHeaders.length > 1) { span = spans[1]; }
		else {span = spans;}
		/*var text = span.innerHTML;
		text = text.substr(0,1) + text.substr(1).toLowerCase();
		span.innerHTML = text;*/
	}
	
}

// hide the breadcrumbs module if there's only the root object there
function hideBreadCrumbsIfRoot(){
	var crumbs = getElementsByClass("pathway", document.getElementById('breadcrumbs'));
	if (crumbs.length <= 1){
		document.getElementById('breadcrumbs').style.display = "none";
	}
}

function showBreadCrumbsIfMoreThanOne(){
	var crumbs = getElementsByClass("pathway", document.getElementById('breadcrumbs'));
	if (crumbs.length > 1){
		document.getElementById('breadcrumbs').style.display = "block";
	}
}

// returns HTTP object depending on browser
function getHTTPObject(){
	if (window.ActiveXObject) 
      return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) 
      return new XMLHttpRequest();
    else {
      alert("Your browser does not support AJAX.");
      return null;
    }
}

// adds image texts based on "alt"
function addImageTexts(){
	// articles in 3col mode
	var content = document.getElementById('content_3cols');
	if ((content != null) && (content.className == 'article')){
		var contentIms = content.getElementsByTagName("IMG");
		for(var i = 0; i < contentIms.length; i++){
			if(contentIms[i].className.indexOf("no_shadow") == "-1") {
				if(contentIms[i].alt.length >= 6){
					addTextToImage(contentIms[i]);
				}
			}
		}
	}
	// articles in 2col mode
	var content = document.getElementById('content_2cols');
	if ((content != null) && (content.className == 'article')){
		var contentIms = content.getElementsByTagName("IMG");
		for(var i = 0; i < contentIms.length; i++){
			if(contentIms[i].className.indexOf("no_shadow") == "-1") {
				if(contentIms[i].alt.length >= 6){
					addTextToImage(contentIms[i]);
				}
			}
		}
	}
}

// see function addImageTexts()
function addTextToImage(image){
	var imageParent = image.parentNode;
	var imageWrapper = document.createElement('div');
	imageWrapper.className = 'image_wrapper';
	var textHolder = document.createElement('p');
	textHolder.className = 'image_text';
	imageParent.replaceChild(imageWrapper, image);
	imageWrapper.appendChild(image);
	textHolder.innerHTML = image.alt;
	imageWrapper.appendChild(textHolder);
}

function highlightSectionNameInNewsflash(section, type){
	// get the headers in the newsflash on the current page.
	// if any contains the section name, wrap the section name in a span to highlight it
	var newsflashItem = document.getElementById('newsflash');
	if (newsflashItem != null){
		var flashHeaders = newsflashItem.getElementsByTagName("H2");
		for(var i = 0; i < flashHeaders.length; i++){
			var headerParts = flashHeaders[i].innerHTML.split(" ");
			for(var j = 0; j < headerParts.length; j++){
				var matchString = section;
				if (matchString != ""){
					if (headerParts[j].match(matchString)){
						headerParts[j] = '<span class="'+type+'_emph">' + headerParts[j] + '</span>';
						flashHeaders[i].innerHTML = headerParts.join(" ");
					}
				}
			}
		}
	}
}


function setSchoolSpecificDetails(section){
	
	/* the first "helper heading" */
	var heading = document.getElementById('helper_heading1');
	if (heading != null){
		heading.innerHTML = "Mer på "+section;
	}
	
	/* the 2nd "helper heading" */
	var heading = document.getElementById('helper_heading2');
	if (heading != null){
		heading.innerHTML = "Om "+section;
	}
}

/* sets a random hello phrase for each span item labelled "hello_phrase" on the page */
function setRandomHelloPhrases(phraseString, separator){
	var spans = getElementsByClass("hello_phrase", document, "SPAN");;
	var phraseArray = phraseString.split(separator);
	for(var i = 0; i < spans.length; i++){
		spans[i].innerHTML = phraseArray[i];
	}
}

// returns absolute X position of object relative to viewport
function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  // returns absolute Y position of object relative to viewport
  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
  
  /* sets a random hello phrase for each span item labelled "hello_phrase" on the page */
function setRandomHelloPhrases(phraseString, separator){
	var spans = getElementsByClass("hello_phrase", document, "SPAN");;
	var phraseArray = phraseString.split(separator);
	for(var i = 0; i < spans.length; i++){
		spans[i].innerHTML = phraseArray[i];
	}
}
