/* main.js */

/* Author: Sascha Meier \*/
/* LastChangedDate: 2007-06-15 \*/
/* LastChangedBy: SM \*/

// importing other libs

var _GLOBAL		= new Object();

function onLoadFunctions() {
// add function calls here
	_log('onLoadFunctions()');
	navHover();
	findTextNodes();
	initSliderContainer("volumeItem");
	initFadingContainer("stageItem");
	setElementClass("A", "cntMetaLnk hidden", "cntMetaLnk");
}

ARITHNEAJSObject.addOnLoadStaceTrack(onLoadFunctions);

/*if (window.addEventListener) {
	window.addEventListener("load", onLoadFunctions, true);
} else if (window.attachEvent) {
	window.attachEvent("onload", onLoadFunctions);
}*/


/* change or set class */
function setElementClass(elementTagName, currentClass, newClass) {
	for (var k = 0; k < document.getElementsByTagName(elementTagName).length; k++) {
		if(document.getElementsByTagName(elementTagName)[k].className == currentClass) {
			document.getElementsByTagName(elementTagName)[k].className = newClass;
		}
	}
}

/* show navi items (ie 6) */
navHover = function() {
	var nav = document.getElementById("navmenu");
	if (nav) {
		var lis = document.getElementById("navmenu").getElementsByTagName("LI");
		for (var i=0; i<lis.length; i++) {

			/* find Submenuitems for all browsers except ie */
			if (navigator.appName != "Microsoft Internet Explorer") {
				if (lis[i].firstChild.parentNode.lastChild.tagName != "A") {
					lis[i].firstChild.className+=" hasSub";
					//ARITHNEAJSObject.jQuery.addClass("hasSub");
					//lis[i].addClass("hasSub");
				}
			}
			/* find Submenuitems for ie */
			if (lis[i].lastChild.tagName == "UL") {
				if (lis[i].firstChild.tagName == "A") {
					lis[i].firstChild.className+=" hasSub";
					//ARITHNEAJSObject.jQuery.addClass("hasSub");
					//lis[i].addClass("hasSub");
				}
			}
			if(typeof(lis[i]) != 'undefined'){
				lis[i].onmouseover=function() {
					//currentClass = this.className;
					//this.className+=" iehover";
					//ARITHNEAJSObject.jQuery.addClass("iehover");
					  ARITHNEAJSObject.jQuery(this).addClass("iehover");
				}
				lis[i].onmouseout=function() {
					//var currentClass='';
					//this.className=currentClass;
					//ARITHNEAJSObject.jQuery.removeClass("iehover");
					ARITHNEAJSObject.jQuery(this).removeClass("iehover");
				}
				lis[i].onfocus=function() {
					//currentClass = this.className;
					//this.className=" iehover";
					//ARITHNEAJSObject.jQuery.addClass("iehover");
					ARITHNEAJSObject.jQuery(this).addClass("iehover");
				}
				lis[i].onblur=function() {
					//var currentClass='';
					//this.className=currentClass;
					//ARITHNEAJSObject.jQuery.removeClass("iehover");
				 ARITHNEAJSObject.jQuery(this).removeClass("iehover");
			}
			}// /if(typeof(lis[i]) != 'undefined')
		}
	
		_GLOBAL['navHoverLoaded']	= true;
	}
	_log('navHover()');
}



// correct typografical mistakes
var standardLanguage = "de";

// quotes for different languages (de,en)
var openingQuotes = new Object();
var closingQuotes = new Object();
openingQuotes['de'] = "\u201E";
closingQuotes['de'] = "\u201C";
openingQuotes['en'] = "\u201C";
closingQuotes['en'] = "\u201D";

var openingSingleQuotes = new Object();
var closingSingleQuotes = new Object();
openingSingleQuotes['de'] = "\u201A";
closingSingleQuotes['de'] = "\u2018";
openingSingleQuotes['en'] = "\u2018";
closingSingleQuotes['en'] = "\u2019";


function findTextNodes() {

  // get language or set default
  var lang = standardLanguage, masterlang = standardLanguage;
  var html_element = document.documentElement;
  if (html_element.getAttribute("xml:lang")) {
    lang = masterlang = html_element.getAttribute("xml:lang").substring(0, 2);
  } else if (html_element.getAttribute("lang")) {
    lang = masterlang = html_element.getAttribute("lang").substring(0, 2);
  }
  if (!openingQuotes[lang]) {
    lang = masterlang = "en";
  }

  // create list of nodes
  var elementliste = document.body.getElementsByTagName("*");

  var i, thisNode, tagName, className;
  for (i = 0; i < elementliste.length; i++) {

    thisNode  = elementliste[i];
    tagName   = thisNode.tagName.toLowerCase();
    className = thisNode.className.toLowerCase();

        // get next node if class noqoutes is defined or tag is not containing text
    if (/noquotes/.test(className) ||
          tagName == "script" || tagName == "code" || tagName == "kbd" || tagName == "pre" || tagName == "img" || tagName == "object") {
      continue;
    }

        // get language of node
    if (thisNode.lang) {
      lang = thisNode.lang.substring(0, 2);
    }

    if (thisNode.hasChildNodes()) {
      textNode = thisNode.firstChild;
      do {
        // if current is no text node get next
        if (textNode.nodeType != 3) {
          continue;
        }
        // change text of current node
        textNode.nodeValue = changeTextNode(textNode.nodeValue, lang);

      } while (textNode = textNode.nextSibling);
    }
        // set recent language back
    lang = masterlang;
  }
}


// change nodes with regular expressions
function changeTextNode(string, lang) {

  // abort if text node contains only a whitestring
  if (/^\s+$/.test(string)) {
    return string;
  }
  
  // replace quotes
  string = string.replace(/(^|\s|[\("\-])'([^']*)'($|[\.,;:!?\/"\)\-]|\s)/g, "$1" +
    openingSingleQuotes[lang] + "$2" + closingSingleQuotes[lang] + "$3");
  string = string.replace(/(^|\s|\(|\-)'$/g, "$1" + openingSingleQuotes[lang]);
  string = string.replace(/^'([\.,;:!?\/\)\-]|\s)/g, closingSingleQuotes[lang] + "$1");
  // Apostroph (de)
  string = string.replace(/([xs])'($|[\.,;:!?\/\)\-]|\s)/g, "$1" +
    closingSingleQuotes["en"] + "$2");
  // Apostroph (en)
  string = string.replace(/([a-z])'s/g, "$1" + closingSingleQuotes["en"] + "s");

  // replace double quotes
  string = string.replace(/(^|\s|\(|\-)"([^"]*)"($|[\.,;:!?\/\)\-]|\s)/g,
    "$1" + openingQuotes[lang] + "$2" + closingQuotes[lang] + "$3");
  // important for "<span>text</span>"
  string = string.replace(/(^|\s|\(|\-)"(\s*)$/g, "$1" + openingQuotes[lang] + "$2");
  string = string.replace(/^(\s*)"([\.,;:!?\/\)\-]|\s)/g, "$1" +
    closingQuotes[lang] + "$2");

  // replace ... with ellipse
  string = string.replace(/[\.]{3}/g, "\u2026");

  // replace -
  string = string.replace(" - ", " \u2013 ");

  return string;
}


/* jsHandler.js */
function importjs(filename) {
var headDom = document.getElementsByTagName('HEAD').item(0);
script = document.createElement('script');
script.src = filename;
script.type = 'text/javascript';
headDom.appendChild(script)
}

function _log(t){
		ARITHNEAJSObject.LOG.log(t);
	return true;
}

