// DIV-Scrolling
var SCROLLING_WIDTH = 10;
var SCROLLING_DELAY = 50;

function BetterInnerHTML(o,p,q){function r(a){var b;if(typeof DOMParser!="undefined")b=(new DOMParser()).parseFromString(a,"application/xml");else{var c=["MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(var i=0;i<c.length&&!b;i++){try{b=new ActiveXObject(c[i]);b.loadXML(a)}catch(e){}}}return b}function s(a,b,c){a[b]=function(){return eval(c)}}function t(b,c,d){if(typeof d=="undefined")d=1;if(d>1){if(c.nodeType==1){var e=document.createElement(c.nodeName);var f={};for(var a=0,g=c.attributes.length;a<g;a++){var h=c.attributes[a].name,k=c.attributes[a].value,l=(h.substr(0,2)=="on");if(l)f[h]=k;else{switch(h){case"class":e.className=k;break;case"for":e.htmlFor=k;break;default:e.setAttribute(h,k)}}}b=b.appendChild(e);for(l in f)s(b,l,f[l])}else if(c.nodeType==3){var m=(c.nodeValue?c.nodeValue:"");var n=m.replace(/^\s*|\s*$/g,"");if(n.length<7||(n.indexOf("<!--")!=0&&n.indexOf("-->")!=(n.length-3)))b.appendChild(document.createTextNode(m))}}for(var i=0,j=c.childNodes.length;i<j;i++)t(b,c.childNodes[i],d+1)}p="<root>"+p+"</root>";var u=r(p);if(o&&u){if(q!=false)while(o.lastChild)o.removeChild(o.lastChild);t(o,u.documentElement)}}


function initPage(scrollablesAmount, tooltipsAmount) {
	overlayBg = document.getElementById("overlay");
    overlayContent = document.getElementById("overlay_content");
	
    mouseOver = false;
    isScrolling = false;

    scrollableDiv = new Array(scrollablesAmount);
    tooltipDiv = new Array(tooltipsAmount);

    for (var i = 1; i <= scrollablesAmount; i++) {
    	scrollableDiv[i] = new Array(2);
    	// Kategorie-Menü für folgendes Dokumenten-Fenster
    	scrollableDiv[i][0] = document.getElementById("document_window_menu_" + i);
    	                
    	// eigentliche Dokumenten-Fenster
    	scrollableDiv[i][1] = document.getElementById("document_window_" + i);
    }

    for (var i = 1; i <= tooltipsAmount; i++) {
        tooltipDiv[i] = document.getElementById("tooltip_" + i);
    }
};

function scroll2Left(divId, evt) {
	if ( evt )
		isScrolling = true;

	if ( isScrolling ) {
		if ( scrollableDiv[divId][1].scrollLeft > 0 )	{
			scrollableDiv[divId][1].scrollLeft -= SCROLLING_WIDTH;
			window.setTimeout( "scroll2Left(" + divId + ")", SCROLLING_DELAY );
		};
	};
};

function scroll2Right(divId, evt) {
		if ( evt )
			isScrolling = true;

		if ( isScrolling ) {
			scrollableDiv[divId][1].scrollLeft += SCROLLING_WIDTH;
			window.setTimeout( "scroll2Right(" + divId + ")", SCROLLING_DELAY );
		};

};

function stopScrolling() {
	isScrolling = false;
}

//Rating MouseClick (Article Detail)
function showRatingImages(count)
{
	var diff = 5 - count;
	for(var i=1; i <= count; i++)
	{
		var img = document.getElementById("r" + i);
		img.src = '/images/template/icons/rating_positive.gif';
		
	}
	for(var j=(5-diff+1); j <= 5; j++)
	{
		var img_n = document.getElementById("r" + j);
		img_n.src = '/images/template/icons/rating_negative.gif';
	}
	
	var rating = document.getElementById("rating_value");
	rating.value=count;
	
}

//Show Article Boxes
function articlesShow(catId,subCatId,windowId)
{
	
	//subCatShow(catId,subCatId,windowId);
	
	hideDropdown(windowId);
	
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	///////////////////////////////////////////////////
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/articles.jsp?id=' + subCatId + '&window='+windowId+'&time=' + timestamp, true);

    resObjekt.onreadystatechange = function ()
    {
    	handleArticles(windowId, resObjekt);
    }; 
    resObjekt.send(null);
}

function handleArticles(windowId,resObjekt)
{
	if(resObjekt.readyState == 4) {
        document.getElementById("document_window_" + windowId).innerHTML = resObjekt.responseText;
    }
}

//Show Subcategories
function subCatShow(catId,subCatId,windowId)
{
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	///////////////////////////////////////////////////
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/categories.jsp?id=' + subCatId + '&window='+windowId+'&time=' + timestamp, true);

    resObjekt.onreadystatechange = function ()
    {
    	handleSubcat(windowId, resObjekt);
    }; 
    resObjekt.send(null);
}

function handleSubcat(windowId,resObjekt)
{
	if(resObjekt.readyState == 4) {
        document.getElementById("document_window_menu_" + windowId).innerHTML = resObjekt.responseText;
    }
}

// Overlay DIV-Display
function overlayShow(id, tId) {
	
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/article_detail.jsp?id=' + id + '&tid=' + tId + '&time=' + timestamp, true);
    resObjekt.onreadystatechange = function ()
    {
    	handleThread(resObjekt);
    }; 
    resObjekt.send(null);
    
}

function infoOverlayShow() {
	
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/info.jsp?time=' + timestamp, true);
    resObjekt.onreadystatechange = function ()
    {
    	handleThread(resObjekt);
    }; 
    resObjekt.send(null);
    
}

function handleThread(resObjekt) {
    if(resObjekt.readyState == 4) {
    	
    	//BetterInnerHTML(document.getElementById("overlay_content"), resObjekt.responseText);
    	
        document.getElementById("overlay_content").innerHTML = resObjekt.responseText;
        
        overlayBg = document.getElementById("overlay");
        overlayContent = document.getElementById("overlay_content");
        
        overlayBg.style.display = "block";
        overlayContent.style.display = "block";
    }
    
}

function disclaimerShow()
{
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/disclaimer1.jsp?time=' + timestamp, true);
    resObjekt.onreadystatechange = function ()
    {
    	handleThread(resObjekt);
    }; 
    resObjekt.send(null);
}

function disclaimerShow2()
{
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/disclaimer2.jsp?time=' + timestamp, true);
    resObjekt.onreadystatechange = function ()
    {
    	handleThread(resObjekt);
    }; 
    resObjekt.send(null);
}

function disclaimerShow3()
{
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/disclaimer3.jsp?time=' + timestamp, true);
    resObjekt.onreadystatechange = function ()
    {
    	handleThread(resObjekt);
    }; 
    resObjekt.send(null);
}

function gameShow() {
	
	var resObjekt;
	if(navigator.appName.search("Microsoft") > -1) {
	    resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
	} else {
	    resObjekt = new XMLHttpRequest();
	}
	
	var timestamp = new Date().getTime();
    resObjekt.open('get', '/ajax/bi_game.jsp?time=' + timestamp, true);
    resObjekt.onreadystatechange = function ()
    {
    	handleThread(resObjekt);
    }; 
    resObjekt.send(null);
    
}

function overlayHide() {
	document.getElementById("overlay_content").innerHTML = "";
    overlayBg.style.display = "none";
    overlayContent.style.display = "none";
    
    //Hack: reinitialisieren der Drag und Drop Funktionen
    document.onmousemove = drag;
    document.onmouseup = dragstop;
}

//Tooltip-DIV für MouseOver bei Dokumenten-Vorschaubildern ein- und ausblenden
var xOffset = 15;   // Verschiebung des Tooltip-Fensters zur Spitze des Mauszeigers (verhindert Überdeckung durch Cursor und ungewolltes onmouseout von Element mit Tooltip-Anzeige)
var yOffset = 5;

function tooltipWindowShow(divId, evt) {
    if (evt)
        mouseOver = true;
        
    tooltipWindowRefresh(divId, evt);
    tooltipDiv[divId].style.display = "block";
}

function tooltipWindowRefresh(divId, evt) {
    var x,y;

    if (mouseOver) {
        x = evt.clientX + xOffset;
        y = evt.clientY + yOffset;

        tooltipDiv[divId].style.top = y + "px";
        tooltipDiv[divId].style.left = x + "px";
    }
}

function tooltipWindowHide(divId) {
    mouseOver = false;
    tooltipDiv[divId].style.display = "none";
}

function redirectDownloadPage() {
	 window.location = "/finished.faces";
}

function mouse_pos(e) {
	

	return {
		top: document.all ? window.event.clientY : e.pageY,
		left: document.all ? window.event.clientX : e.pageX
	};

	
	/*
	var ne;
	if(!e) ne = window.event||window.Event;
	if(e) ne = e;

	
	if(ne)
	{
		var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? 
		window.document.documentElement : window.document.body;
		return {
			// Position im Dokument
			top: ne.pageY ? ne.pageY : ne.clientY + body.scrollTop - body.clientTop,
			left: ne.pageX ? ne.pageX : ne.clientX + body.scrollLeft  - body.clientLeft
		};
	}*/
}

var selectedDiv;
function showHoverPic(divElem, imageElem) {
	selectedDiv = divElem;

	imgElem = document.getElementById('zoomThumbImage');
	imgElem.src = imageElem;
	
	var p = mouse_pos();

	if(p)
	{
		window.document.onmousemove = movePictureWithMouse;
		divElem.style.left = p['left']+15;
		divElem.style.top = p['top'] - ((divElem.offsetHeight/2)*0);
	}
	divElem.style.visibility='visible';
}


function hideHoverPic(divElem) {
	divElem.style.visibility='hidden';
	window.document.onmousemove = null;
}

function movePictureWithMouse(e) {

	var p = mouse_pos(e);
	selectedDiv.style.left = p['left']+15;
	selectedDiv.style.top = p['top'] - ((selectedDiv.offsetHeight/2)*0);
}

function scroll2LeftMenu(divId, evt) {
	if ( evt )
		isScrolling = true;

	if ( isScrolling ) {
		if ( scrollableDiv[divId][0].scrollLeft > 0 )	{
			scrollableDiv[divId][0].scrollLeft -= SCROLLING_WIDTH;
			window.setTimeout( "scroll2LeftMenu(" + divId + ")", SCROLLING_DELAY );
		}
	}
}

function scroll2RightMenu(divId, evt) {
	if ( evt )
		isScrolling = true;

	if ( isScrolling ) {
		scrollableDiv[divId][0].scrollLeft += SCROLLING_WIDTH;
		window.setTimeout( "scroll2RightMenu(" + divId + ")", SCROLLING_DELAY );
	}
}

//Dropdown-Menüs anzeigen/verstecken
function showDropdown(dropdownId, containerElement) {
    var dropdown = document.getElementById("document_window_dropdown_" + dropdownId);
    dropdown.style.display = "block";
    
    containerElement.getElementsByTagName("div")[0].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_left_open.gif)";
    containerElement.getElementsByTagName("div")[1].getElementsByTagName("img")[0].src = "/images/template/icons/dropdown_arrow_down.gif";
    containerElement.getElementsByTagName("div")[2].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_right.gif)";
	
	document.getElementById("dropdownBackgroundOverlay").style.display = "block";
}

function hideDropdown(dropdownId, containerElement) {
    var dropdown = document.getElementById("document_window_dropdown_" + dropdownId);
    dropdown.style.display = "none";
    
    containerElement.getElementsByTagName("div")[0].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_left.gif)";
    containerElement.getElementsByTagName("div")[1].getElementsByTagName("img")[0].src = "/images/template/icons/dropdown_arrow_down.gif";
    containerElement.getElementsByTagName("div")[2].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_right.gif)";
	
	document.getElementById("dropdownBackgroundOverlay").style.display = "none";
}

function showDropdown(dropdownId) {
    var dropdown = document.getElementById("document_window_dropdown_" + dropdownId);
    dropdown.style.display = "block";
    
    containerElement = document.getElementById("document_window_heading_" + dropdownId);
    
    containerElement.getElementsByTagName("div")[0].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_left_open.gif)";
    containerElement.getElementsByTagName("div")[1].getElementsByTagName("img")[0].src = "/images/template/icons/dropdown_arrow_down.gif";
    containerElement.getElementsByTagName("div")[2].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_right.gif)";
	
	document.getElementById("dropdownBackgroundOverlay").style.display = "block";
}

function hideDropdown(dropdownId) {
    var dropdown = document.getElementById("document_window_dropdown_" + dropdownId);
    dropdown.style.display = "none";
    
    containerElement = document.getElementById("document_window_heading_" + dropdownId);
    
    containerElement.getElementsByTagName("div")[0].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_left.gif)";
    containerElement.getElementsByTagName("div")[1].getElementsByTagName("img")[0].src = "/images/template/icons/dropdown_arrow_down.gif";
    containerElement.getElementsByTagName("div")[2].style.backgroundImage = "url(/images/template/main_chapter_button_shadow_right.gif)";
	
	document.getElementById("dropdownBackgroundOverlay").style.display = "none";
}

//Add to Cart Redirect
function addToCart(artId)
{
	window.location = '/controller/add_to_cart.jsp?id=' + artId;
}


//Drag and Drop
//Das Objekt, das gerade bewegt wird.
var dragobjekt = null;

// Position, an der das Objekt angeklickt wurde.
var dragx = -10;
var dragy = 20;

// Mausposition
var posx = 0;
var posy = 0;

//wieviel pixel wurde das objekt bewegt
var moved = 0;

document.onmousemove = drag;
document.onmouseup = dragstop;


function dragstart(element) {
   //Wird aufgerufen, wenn ein Objekt bewegt werden soll.
  
  dragobjekt = element;
  dragobjekt.style.zIndex = 999;
  //dragobjekt.style.position = "absolute";
  //dragobjekt.style.left = (posx - dragx) + "px";
  //dragobjekt.style.top = (posy - dragy) + "px";
  
  //Markierungen im IE verhindern
  document.body.focus();
  document.onselectstart = function() { return false; };

  //dragx = posx - dragobjekt.offsetLeft;
  //dragy = posy - dragobjekt.offsetTop;

}


function dragstop() {
  //Wird aufgerufen, wenn ein Objekt nicht mehr bewegt werden soll.
	
  if(dragobjekt != null) {
	  var dropContainer = document.getElementById("main_right_content");
	  
	  var dropX = getX(dropContainer);
	  var dropY = getY(dropContainer);
	  var dropXEnd = dropX + dropContainer.offsetWidth;
	  var dropYEnd = dropY + dropContainer.offsetHeight;
	  
	  if(posx >= dropX && posx <= dropXEnd && posy >= dropY && posy <= dropYEnd)
	  {
		  var mySplitResult = dragobjekt.id.split("_");
      	  addToCart(mySplitResult[1]); 
	  }
  }
	
  dragobjekt.style.position = "";
  dragobjekt.style.left = "";
  dragobjekt.style.top = "";
  dragobjekt.style.zIndex = "";
  dragobjekt.style.opacity = 1;
  dragobjekt.style.filter = "alpha(opacity=100)";
  document.body.style.cursor = "auto";
  moved = 0;
  dragobjekt=null;
  
  document.onselectstart = function() { return true; };
}


function drag(ereignis) {
  //Wird aufgerufen, wenn die Maus bewegt wird und bewegt bei Bedarf das Objekt.

  posx = document.all ? window.event.clientX : ereignis.pageX;
  posy = document.all ? window.event.clientY : ereignis.pageY;
  
	/*
	var posx;
	if (ereignis.pageX) 
	{
		posx = ereignis.pageX;
	}
	else if (ereignis.clientX)
	{
		posx = ereignis.clientX + (document.documentElement.scrollLeft ?
	   document.documentElement.scrollLeft :
	   document.body.scrollLeft);
	}
	var posy;
	if (ereignis.pageY) 
	{
		posy = ereignis.pageY;
	}
	else if (ereignis.clientY)
	{
		posy = ereignis.clientY + (document.documentElement.scrollTop ?
	   document.documentElement.scrollTop :
	   document.body.scrollTop);
	}
	*/
	
  if(dragobjekt != null) {
	//Marikierungen im FF verhindern
	if(window.getSelection) {
	    var sel = window.getSelection();
	    sel.removeAllRanges();
	}
	if(moved > 3)
	{
		
		document.body.style.cursor = "move";
		dragobjekt.style.opacity = .8;
		dragobjekt.style.filter = "alpha(opacity=80)";
		dragobjekt.style.position = "absolute";
	    dragobjekt.style.left = (posx - dragx) + "px";
	    dragobjekt.style.top = (posy - dragy) + "px";
	}
	else
	{
		moved++;
	}
    
  }
}

function getX(el) {
	x = el.offsetLeft;
	if (!el.offsetParent) return x;
	else return (x+getX(el.offsetParent));
}

function getY(el) {
	y = el.offsetTop;
	if (!el.offsetParent) return y;
	else return (y+getY(el.offsetParent));
}


