﻿/*
	Version 0.1
	(c) g.dillenberg www.dillenberg.net
*/
onPageLoad = function(){
	tptargeturl = 'http://www.pluendermeister.de/sec/300301/index.cfm?iname=';
	tpcssurl	= 'http://www.pluendermeister.de/sec/themes/global/itempmtp2mmozone.css';
	tploadinggifurl = 'http://www.pluendermeister.de/images/loadingw.gif';
	mBox = null;

	// alle anker auslesen
	theclass = getElementsByClass('*',document,'a');
												 
	//allen ermittelten objecten das event zuweisen
    for (var i = 0; i < theclass.length; i++) {
	 // nur events hinzufügen wenn attribute href vorhanden und (&&) auf pluendermeister verlinkt ist und einen Parameter s1 haben
	  if ( (theclass[i].getAttribute('href') != null) && theclass[i].getAttribute('href').match(/\bhttp:\/\/www.pluendermeister.de\b/gi) 	
		// und es mus s1 in dem anker vorkommen && theclass[i].getAttribute('href').match(/s1/gi)
		){
        addEvent(theclass[i], "mouseover", showTooltip);
        addEvent(theclass[i], "mouseout", hideTooltip);
				theclass[i].href= "http://www.pluendermeister.de/?s1=" + theclass[i].innerHTML;
			//prüfen ob notwendig
			addClass(theclass[i], "pmtpc");
			}
			
	 // nur events hinzufügen wenn attribute href vorhanden und (&&) auf pluendermeister verlinkt ist 
	  if ( (theclass[i].getAttribute('href') != null) && theclass[i].getAttribute('href').match(/\bhttp:\/\/de.wowhead.com\b/gi) && theclass[i].getAttribute('href').match(/item/gi) ){
        addEvent(theclass[i], "mouseover", showTooltip);
        addEvent(theclass[i], "mouseout", hideTooltip);
			//prüfen ob notwendig
			addClass(theclass[i], "pmtpc");
			}
    }
	
	// add item css
		var objBody = window.document.getElementsByTagName("head").item(0);
	  var objCSS 	= document.createElement("link");
		objCSS.setAttribute('href',tpcssurl);
		objCSS.setAttribute('rel','stylesheet');
		objCSS.setAttribute('type','text/css');
		objBody.appendChild(objCSS);
		
	
	// tooltip wir mitbewegt
	document.onmousemove = updatemBox;
	// tp bleibt stehen 
	//document.onmouseover = updatemBox;
}	
		
function addClass(element, value) {
	if (!element.className) {
		element.className = value;
	} else {
		var newClassName = element.className;
		newClassName += " ";
		newClassName += value;
		element.className = newClassName;
	}
}

function addEvent(obj, evType, fn){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    return false;
  }
}


function getEventTarget(e){
	return (e.target) ? e.target : e.srcElement
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

// LOad JS into
var script_element=0,heads=0;

function LoadJavaScript(file_url)
/* Laedt ein JavaScript mit dem spezifizierten Dateinamen
   Achtung: wurde bisher nur in MSIE und Mozilla/Netscape mit Erfolg getestet */
{
/* wenn nicht schon getan:
   Array aller Head-Bereiche geben lassen (normalerweise gibt's nur einen): */
  if (heads==0)
    heads=document.getElementsByTagName("head");

/* wenn schonmal geladen: altes Script-Element wegwerfen */
  if (script_element!=0)
  {
    heads[0].removeChild(script_element);
    delete script_element;
  }

/* neues Script-Element erzeugen: */
  script_element=document.createElement("script");

/* Skript-MimeType auf text/javascript setzen: */
  script_element.type="text/javascript";

/* Quelldatei angeben: */
  script_element.src=file_url;

/* Das Script in den ersten (der nullte ist der erste :-] ) Head-Bereich einbinden
   (veranlasst Ladevorgang und Ausfuehrung): */
  heads[0].appendChild(script_element);
}


showTooltip = function(e){
	var tg = getEventTarget(e);
	//tg.style.border = "1px solid #F00";
	//alert(tg.innerHTML);
	getTooltip(tg.innerHTML);
	}
	
hideTooltip = function(e){
	var tg = getEventTarget(e);
	//tg.style.border = "0px solid #F00";
	//element muss zerstört werden! nicht nur ausblenden!!!
	var uniDivId = createDivIdByIname(tg.innerHTML); 
	//alert(uniDivId);
	if ( mBox != null  )
	mBox.style.display = 'none';
	}

function createDivIdByIname (itemname){
	var uiid = itemname.substr(1,11);
	return uiid;
}

function getTooltip(itemname){
	//Build Tooltip Div Object
		
		var objBody = document.getElementsByTagName("body").item(0);	
		//erzeugen einer uniquen id für das div auf basis des itemnamens 1 buchstabe+itemnamelänge
		var uniDivId = createDivIdByIname(itemname);
		// parameter für den divnamen der mitübergeben werden muss
		var thedivid = '&div='+uniDivId;
		//bei ie 7 kommt es vor das &shy; in den namen eingefüg wird, sicherheitseinstellung?
		itemname = itemname.replace(/&shy;/g,'') ;
		// object noch nicht vorhanden dann füllen
		if ( document.getElementById(uniDivId) == null  ){
			var objTP = document.createElement("div");
			objTP.setAttribute('id',uniDivId);
			objTP.style.display = 'block';
			objTP.style.position = 'absolute';
			//objTP.style.top = x +'px';
			//objTP.style.left = y +'px';
			objTP.style.top = 0;
			objTP.style.left = 0;
			objTP.align = 'left';
			objTP.innerHTML = '<div class=itembox><img src=' +tploadinggifurl+ '></div>';
			objBody.appendChild(objTP);
			// Push JS into Div Obj. 
			LoadJavaScript(tptargeturl+itemname+thedivid);	
	
		}
		// ist das object noch vorhanden wir es wieder sichtbar gemacht
		else {
			document.getElementById(uniDivId).style.display = '';
		}
		
		// korrekturbox für die mouseposition
		mBox = document.getElementById(uniDivId);
}

function updatemBox(e) {
 if (mBox != null) {
		x = (document.all) ? window.event.clientX + document.documentElement.scrollLeft : e.pageX;
		y = (document.all) ? window.event.clientY + document.documentElement.scrollTop : e.pageY;
	mBox.style.left = (x + 20) + "px";
	mBox.style.top = (y + 20) + "px";
}
}


//addOnLoadFunction um mehrere OnPageLoads zu realisieren
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(onPageLoad);


