/*
Copyright (c) 2009 Thorsten Muschler GmbH. All rights reserved.
Last modified: 06.03.2009
*/

// Konfiguration
var textTooltipWidth = '570px';
var imagePath = 'http://www.maschinensucher.de/bilderuploads/'; // Mit abschlie?endem Slash.
var tmTextTipDelay = 500; // Verz?gerung f?r Textlupe in Millisekunden.
var tmLanguage = 'de';
var tmLanguageOutput = 'en';

inseratPath = new Array();
inseratPath['de'] = 'http://www.maschinensucher.de/ma2/'; // Mit abschlie?endem Slash.
inseratPath['en'] = 'http://www.machineseeker.com/'; // Mit abschlie?endem Slash.

// Interne Variablen und Objekte

var imagePaneName = 'imagePreviewPane';
var textPaneName = 'textPreviewPane';
var xmlHttpObject = false;
var xmlHttpObjectInit = false;
var tmTextTipTimer;
var tmTextTipCaller;
var tmTextTipId;


document.write('<div id="imagePreviewPane"></div>');
document.write('<div id="textPreviewPane" onmouseout="tmTextClose(event)"></div>');

function tmTip(id, width, height, text) {
	size = getSize();
	scr = getScrollXY();
	width = width + 20;
	var heightPane = height + 20;
	var left = (size[0] - width) / 2;
	left = parseInt(left);
	var top = ( (size[1] - height) / 2 ) + scr[1];
	top = parseInt(top);
	var title = document.createElement('h3');
	title.setAttribute('id','imagePreviewTitle');
	title.innerHTML = text;
	var pane = document.getElementById(imagePaneName);
	pane.appendChild(title);
	pane.style.visibility = 'visible';
	pane.style.left = left + 'px';
	pane.style.top = top + 'px';
	pane.style.width = width + 'px';
	var heightPane = height + title.offsetHeight;
	pane.style.height = heightPane + 'px';
	var image = document.createElement('img');
	image.setAttribute('id','imagePreviewImage');
	image.setAttribute('src',imagePath + id + '.jpg');
	image.setAttribute('width', width);
	image.setAttribute('height', height);
	pane.appendChild(image);
	var clear = document.createElement('div');
	clear.setAttribute('id','imagePreviewClear');
	pane.appendChild(clear);
}

function tmClose() {
	document.getElementById('imagePreviewPane').style.visibility = 'hidden';
	var title = document.getElementById('imagePreviewTitle');
	var image = document.getElementById('imagePreviewImage');
	var pane = document.getElementById('imagePreviewPane');
	var clear = document.getElementById('imagePreviewClear');
	pane.removeChild(title);
	pane.removeChild(image);
	pane.removeChild(clear);
}

function tmTextTip(id, caller) {
	tmTextTipId = id;
	tmTextTipCaller = caller;
	var pane = document.getElementById('textPreviewPane');
	var text = document.getElementById('textPreviewParagraf');
	if (text) pane.removeChild(text);

	size = getSize();
	scr = getScrollXY();
	var websiteWidth = 880;
	var left = ( size[0] / 2 ) - ( websiteWidth / 2 );
	left = parseInt(left) + 105;
	var td = caller.parentNode;
	var top = findPosY(td);
	var text = document.createElement('div');
	text.setAttribute('id','textPreviewParagraf');
	text.setAttribute('onmouseout','event.cancelBubble = true');
	var pane = document.getElementById(textPaneName);
	tmTextTipTimer = setTimeout(function(){pane.style.visibility = 'visible'}, tmTextTipDelay);
	caller.onmouseout=function(){window.clearTimeout(tmTextTipTimer);}
	pane.style.left = left-11 + 'px';
	pane.style.top = top-5 + 'px';
	pane.style.width = textTooltipWidth;
	pane.appendChild(text);
	tmLoadContent(id);
}

function tmTextClose(e) {
  if (e != 'force') {
    // Event Bubbling unterbinden
    if (!e) var e = window.event;
    var tg = (window.event) ? e.srcElement : e.target;
    if (tg.nodeName != 'DIV') return;
    var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
    while (reltg != tg && reltg.nodeName != 'BODY')
      reltg= reltg.parentNode
    if (reltg== tg) return;
	}
	
	var pane = document.getElementById('textPreviewPane');
	var text = document.getElementById('textPreviewParagraf');
	
	pane.style.visibility = 'hidden';
	pane.style.left = '0px';
	pane.style.top = '0px';
	pane.style.width = '1px';
  if (text) pane.removeChild(text);
}

function getSize() {
  var myWidth = 0, myHeight = 0;

	if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //Mozilla and IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  } else if ( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;  
  }
	return [myWidth, myHeight];
}


function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [scrOfX, scrOfY];
}


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;
}

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;
}

function tmInitAjax () {
	xmlHttpObjectInit = true;
	// ?berpr?fen ob XMLHttpRequest-Klasse vorhanden und erzeugen von Objekte f?r IE7, Firefox, etc.
	if (typeof XMLHttpRequest != 'undefined') 
	{
			xmlHttpObject = new XMLHttpRequest();
	}

	// Wenn im oberen Block noch kein Objekt erzeugt, dann versuche XMLHTTP-Objekt zu erzeugen
	// Notwendig f?r IE6 oder IE5
	if (!xmlHttpObject) 
	{
			try 
			{
					xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e) 
			{
					try 
					{
							xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e) 
					{
							xmlHttpObject = null;
					}
			}
	}
}

function tmLoadContent(id) {
	if (xmlHttpObjectInit == false) {
		tmInitAjax();
	}
	xmlHttpObject.open('get','/cgi-bin/ma2/ajaxTechData.cgi?id=' + id + '&lang=' + tmLanguage  + '&langOut=' + tmLanguageOutput);
	
	xmlHttpObject.onreadystatechange = handleContent;
	xmlHttpObject.send(null);
	return false;
}

function handleContent() {
	if (xmlHttpObject.readyState == 4) {
		var pane = document.getElementById('textPreviewParagraf');
		var temp = xmlHttpObject.responseText;
		var currentNode = tmTextTipCaller.parentNode;
		var prevNode = currentNode.previousSibling;
		var prevNode = currentNode.previousSibling;
		while (prevNode.nodeName != 'TD') {
			prevNode = prevNode.previousSibling;
		};
		var prevDiv = prevNode.firstChild;
		var prevA = prevDiv.firstChild;
		var contentNode = '';
		for (var i = 0; i < prevA.childNodes.length; i++) {
			if (prevA.childNodes[i].nodeType == 3) {
				contentNode = contentNode + prevA.childNodes[i].nodeValue;
			} else if (prevA.childNodes[i].firstChild && prevA.childNodes[i].firstChild.nodeType == 3) {
				contentNode = contentNode + prevA.childNodes[i].firstChild.nodeValue;
			}
		}
		pane.innerHTML = temp;
	}
}
