// JavaScript Document

function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) 
{
  
  // the highlightStartTag and highlightEndTag parameters are optional
  if ((!highlightStartTag) || (!highlightEndTag)) {
    highlightStartTag = "<font style='color:red; background-color:none;'>";
    highlightEndTag = "</font>";
  }
  
  // find all occurences of the search term in the given text,
  // and add some "highlight" tags to them (we're not using a
  // regular expression search, because we want to filter out
  // matches that occur within HTML tags and script blocks, so
  // we have to do a little extra validation)
  var newText = "";
  var i = -1;
  var lcSearchTerm = searchTerm.toLowerCase();
  var lcBodyText = bodyText.toLowerCase();
    
  while (bodyText.length > 0) {
    i = lcBodyText.indexOf(lcSearchTerm, i+1);
    if (i < 0) {
      newText += bodyText;
      bodyText = "";
	} else {
      // skip anything inside an HTML tag
      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
        // skip anything inside a <script> block
        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
          bodyText = bodyText.substr(i + searchTerm.length);
          lcBodyText = bodyText.toLowerCase();
          i = -1;
        }
      }
    }
  }
  
  return newText;
}

function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
  // if the treatAsPhrase parameter is true, then we should search for 
  // the entire phrase that was entered; otherwise, we will split the
  // search string so that each word is searched for and highlighted
  // individually
  if (treatAsPhrase) {
    searchArray = [searchText];
  } else {
    searchArray = searchText.split(" ");
  }
  
  if (!document.body || typeof(document.body.innerHTML) == "undefined") {
    if (warnOnFailure) {
      alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
    }
    return false;
  }
  
  var bodyText = document.body.innerHTML;
  for (var i = 0; i < searchArray.length; i++) {
    bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
  }
  
  document.body.innerHTML = bodyText;
  return true;
}



function count(src, id, limit) {
    var text=src.value + " ";
        var iwhitespace = /^[^A-Za-z0-9]+/gi; // remove initial whitespace
        var left_trimmedStr = text.replace(iwhitespace, "");
        var na = rExp = /[^A-Za-z0-9]+/gi; // non alphanumeric characters
        var cleanedStr = left_trimmedStr.replace(na, " ");
        var splitString = cleanedStr.split(" "); 
        var extract = splitString.length -1;
	var output = "" + extract;
	if (extract > limit) alert(unescape("Bitte beschr%E4nken Sie sich auf die vorgegebene W%F6rterzahl ("+limit+").\nPlease limit yourself to the given number of words ("+limit+")."));
	if((extract > 1) || (extract < 1))   output += " W&ouml;rter";
   else output += " Wort";
   document.getElementById(id).innerHTML = output;

}

function check(src, points, vel) {
	test = '0123456789'; // Nur Zahlen zulassen
	mystr = src.value;
	result = '';
	for(i=0; i<mystr.length; i++) {
		if (test.indexOf(mystr.charAt(i))>=0) {
			result = result + mystr.charAt(i);
		}
	}	
	if (result.length!=mystr.length || result!=mystr) {
		src.value = result;
		alert('Bitte nur Zahlen eingeben.');
	}
	if (vel == 0) { //neither nor
		if ((mystr != points) && (mystr != vel)) {
		alert('Bitte 0 ODER '+points+' Punkte vergeben.');
		src.value = ''; }
	}
	else if (mystr > points) { //limitieren
	alert('Bitte eine Bewertung zwischen 0 und '+points+' eingeben.');
	src.value = ''; 
	}
}

function show(what) {
		target = document.getElementById(what);
		if (target) {
		target.style.display = 'block';
		}
	}
	
function hide(what) {
		target = document.getElementById(what);
		if (target) {
		target.style.display = 'none';
		}
	}


function fade (element, from, to, current) {
  if (typeof current == 'undefined') {
    current = from;
  }
  if (typeof element.style.opacity != 'undefined') {
    element.style.opacity = current;
  }
  else if (typeof element.style.filter != 'undefined') {
    element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (current * 100) + ')';
  }
  if (from > to) {
    current -= 0.1;
    current = Math.round(current * 100) / 100;
    if (current >= to) {
      setTimeout(function () { fade(element, from, to, current); }, 40);
    }
  }
  else {
    current += 0.1;
    current = Math.round(current * 100) / 100;
    if (current <= to) {
      setTimeout(function () { fade(element, from, to, current); }, 40);
    }
  }
}
