/**
**  $Id: region_language_switch.js 111 2009-04-14 17:46:55Z manfred $
**  This file should be loaded on all pages.
**  It has the functions to make the right column as long as necessary
*/
/**
*	Displays Region Language Choice DIV
*/
function showHiddenTag(oEvent, page, parameters){
	var leftOffset = -50, topOffset = 10;
	var parent = document.getElementsByTagName("body")[0]; //get body tag
	var posX = Event.pointerX(oEvent) + leftOffset;
	var posY = Event.pointerY(oEvent) + topOffset;
	var url = "/ajax_driven.php?action=getRegionLanguageSwitcher&actualPage=" + page + parameters;
	new Ajax.Request(url,{
			method: 'get',
			onSuccess: function(transport){
				var newNode = document.createElement("div");
				newNode.innerHTML = transport.responseText;
				//alert(transport.responseText);
				Element.extend(newNode);	//so we have all prototype methods in newNode
				//position it a little bit down and more to left
				newNode.setStyle({
					position: "absolute",
					top: posY +"px",
					left:posX +"px"
				});
				newNode.setAttribute("id", "newNode4RegionLanguageSwitcher");
				parent.appendChild(newNode);
			}
		});
	
}

/**
*** show Product menu 
*/
var showProductMenu = function(oEvent, tag){
	var oDiv = $(tag);
	var parentNode = Event.element(oEvent).up(0);
	var visible = oDiv.style.display == "block";
	var leftOffset = 0, topOffset = 0;
	var browserSwitch = browserWeiche();
	switch(browserSwitch){
		case 'firefox':
			topOffset = 10;
			break;
		case 'ie':
			topOffset = -10;
			leftOffset = -20;
			break;
	}
	if (!visible ){
		oDiv.style.display = "block";
		var left =   Event.pointerX(oEvent) + leftOffset;
		var topPos = Event.pointerY(oEvent) + topOffset; 
		if(oDiv.firstChild.getAttribute("id") != "catList_productMenu"){
			var html = new String("<div id=\"catList_productMenu\" style=\"position:absolute; top:" + topPos + "px; left:" + left + "px;\">");
			html += oDiv.innerHTML + " </div>";
			oDiv.innerHTML = html;
		}
		
		//$("footer").innerHTML = html;
	}

}
/* erzeugt ein Submenu unter dem Produktknoten 
*  mit <div><ul class="menuLeft"><li... </li></ul></div>
*/
var getCategoryMenu = function(oEvent, menuId, level){
	var parentNode = Event.element(oEvent).up(0);
	if(parentNode.childNodes.length > 1){
		parentNode.removeChild(parentNode.lastChild);
	}
	var url = "/ajax_driven.php?action=categoryMenu&parent=" + menuId +"&level=" + level;
	new Ajax.Request(url,{
			method: 'get',
			onSuccess: function(transport){
				var subtree = transport.responseText;
				var divNode = document.createElement("div");
				divNode.innerHTML = transport.responseText;
				Element.extend(divNode);
				//var lastListNode = divNode.lastChild.lastChild;
				//var attrib = lastListNode.getAttribute("class");
				//lastListNode.setAttribute("class", attrib + " lastListNode");
				parentNode.appendChild(divNode);
				
			}
		});
}

/**
 * eine allgemeinere Form von getCategoryMenu. Submenu eines Menuepunktes anzeigen
 * @param event
 * @param parentMenuId
 * @param treeId
 * @return
 */
var showSubMenuFor = function(event, parentMenuId, treeId){
	var parentNode;
	var leftOffset = 0, topOffset = 0;
	var browserSwitch = browserWeiche();
	//ausser IE kann damit jeder umgehen
	var left =   Event.pointerX(event) + leftOffset;
	var topPos = Event.pointerY(event) + topOffset; 
	if(jQuery.support.noCloneEvent){
		//'firefox':
			topOffset = 10;
			parentNode = event.target;
	}else{
		// IE
			parentNode = event.srcElement;
			topOffset = -10;
			leftOffset = -20;
			left = window.event.clientX;
			topPos = window.event.clientY;
	}
	
	var url = "/ajax_driven.php?action=submenuFor&menuId=" + parentMenuId +"&treeId=" + treeId;
	
	new Ajax.Request(url,{
		method: 'get',
		onSuccess: function(transport){
		
			var subtree = transport.responseText;
			var div = "<div class=\"submenuListWrapper\" style=\"position:absolute; top:" + topPos + "px; left:" + left + "px;\">";
			//einfach hinten bei body einhaengen
			$j("body").append(div + subtree + '</div>');
			$j("div.submenuListWrapper ul").addClass('catList');
			$j("div.submenuListWrapper ul li").css('display', 'block');
			setTimeout("$j(\"div.submenuListWrapper\").remove()", 3000);
		}
	});
}


/**
 * insert a text in Tooltip div
 * you can use it for different tags
 */
function showToolTip(oEvent, tag, text){
	var oDiv = getElem("id", tag);
	oDiv.innerHTML = text;
	showHiddenTag(oEvent, tag);
}


/**
 * Counterpart of showHiddenTag. I hide the parent div
 * and put the content back into the parent div
 */
function hideHiddenTag(tag){
	var oDiv = $("newNode4RegionLanguageSwitcher"); //new created node
	if(oDiv){
		var bodyTag = document.getElementsByTagName("body")[0]; //get body tag
		bodyTag.removeChild(oDiv);
	}
}		

function changeLanguage(){
	hideHiddenTag("regionLanguageSwitcher");
	var formNode = document.forms["fm_regionLanguageSwitcher"];
	var index = RadioBoxUtil.getSelectedIndex(formNode.elements["language"]);
	var language = encodeURIComponent(formNode.elements["language"][index].value);
	index = RadioBoxUtil.getSelectedIndex(formNode.elements["currency"]);
	alert("Index: " + index);
	var currency = encodeURIComponent(formNode.elements["currency"][index].value);
	
	var url = formNode.action + "&language=" + language + "&currency=" + currency;
	alert("URL: " + url);
	document.location.href=	url;
}

/**
*** show all on one view menu
*** selection of manufacturer or category

*** @param tag	is tag of submenu to display
*** @param oEvent is used for getting parent node where I append tag 
*/
var showOneViewMenu = function(oEvent, tag){
	var oDiv = $(tag);
	var parentNode = Event.element(oEvent).up(0);
	var visible = oDiv.style.display == "block";
	var leftOffset = 0, topOffset = 0;
	var browserSwitch = browserWeiche();
	switch(browserSwitch){
		case 'firefox':
			topOffset = 5;
			leftOffset = -20;
			break;
		case 'ie':
			topOffset = -10;
			leftOffset = -20;
			break;
	}
	if (!visible ){
		oDiv.style.display = "block";
		var left =   Event.pointerX(oEvent) + leftOffset;
		var topPos = Event.pointerY(oEvent) + topOffset; 
		if(oDiv.firstChild.getAttribute("id") != "oneViewSubmenu"){
			var html = new String("<div id=\"oneViewSubmenu\" style=\"position:absolute; top:" + topPos + "px; left:" + left + "px;\">");
			html += oDiv.innerHTML + " </div>";
			oDiv.innerHTML = html;
		}
		//$("footer").innerHTML = html;
	}

}


/* Hilfsfunktionen */

var RadioBoxUtil = new Object();
RadioBoxUtil.getSelectedIndex = function(oRadioBox){
	var index = 0;
	for(var i=0; i < oRadioBox.length; i++){
		if(oRadioBox[i].checked){
			index =i;
			break;
		}
	}
	return index;
};

var EventUtil = new Object;
EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.addEventListener) {
        oTarget.addEventListener(sEventType, fnHandler, false);
    } else if (oTarget.attachEvent) {
        oTarget.attachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = fnHandler;
    }
};
        
EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
        oTarget.detachEvent("on" + sEventType, fnHandler);
    } else { 
        oTarget["on" + sEventType] = null;
    }
};

EventUtil.formatEvent = function (oEvent) {
    if (isIE && isWin) {
        oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
        oEvent.eventPhase = 2;
        oEvent.isChar = (oEvent.charCode > 0);
        oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
        oEvent.pageY = oEvent.clientY + document.body.scrollTop;
        oEvent.preventDefault = function () {
            this.returnValue = false;
        };

        if (oEvent.type == "mouseout") {
            oEvent.relatedTarget = oEvent.toElement;
        } else if (oEvent.type == "mouseover") {
            oEvent.relatedTarget = oEvent.fromElement;
        }

        oEvent.stopPropagation = function () {
            this.cancelBubble = true;
        };

        oEvent.target = oEvent.srcElement;
        oEvent.time = (new Date).getTime();
    }
    return oEvent;
};

EventUtil.getEvent = function() {
    if (window.event) {
        return this.formatEvent(window.event);
    } else {
        return EventUtil.getEvent.caller.arguments[0];
    }
};

EventUtil.getMouseCoordinates = function(oEvent){
	var coordinates = new Array();
 	if (browserWeiche() == "ie"){ 
 		coordinates.push(oEvent.clientX);
 		coordinates.push(oEvent.clientY);
 	}else{
 		coordinates.push(oEvent.pageX);
 		coordinates.push(oEvent.pageY);
 	}
	return coordinates;
}

function toggleDisplay(tag){
	var oDiv = $(tag);
	oDiv.style.display = (oDiv.style.display == "block" ? "none" : "block");
}

var browserWeiche = function(){
	var browser = '';
	if (navigator.userAgent.indexOf("Firefox") != -1){
    	browser = "firefox";
	}else if (navigator.userAgent.indexOf("Opera") != -1){
    	browser = "opera";
	}else if (navigator.userAgent.indexOf("Explorer") != -1){
    	browser = "ie";
	}else if (navigator.userAgent.indexOf("Netscape") != -1){
    	browser = "netscape";
	}else{
    	browser = "firefox";
    }
    return browser;
}