﻿function renderExtInfo() {
	if(extinfodata.length==0) return;
	var i,k;
	var extinfoids=new Array();
	for(i=0;i<extinfodata.length;i++) {
		var found=false;
		for(k=0;k<extinfoids.length;k++) {
			if(extinfoids[k]==extinfodata[i][2]) {
				found=true;
				break;
			}
		}
		if(!found) extinfoids.push(extinfodata[i][2]);
	}
	for(k=0;k<extinfoids.length;k++) {
		var extinfocontainer=document.getElementById("extinfocontainer"+extinfoids[k]);
		var element_ul=document.createElement("ul");
		for(i=0;i<extinfodata.length;i++) {
			if(extinfodata[i][2]==extinfoids[k]) {
				var element_ul_li=document.createElement("li");
				element_ul_li.appendChild(renderSpecificExtInfo(i, extinfodata[i][0], extinfodata[i][1], extinfodata[i][3], extinfodata[i][4]));
				element_ul.appendChild(element_ul_li);
			}
		}
		extinfocontainer.appendChild(element_ul);
		extinfocontainer.appendChild(document.createElement("br"));
		if(extinfodata.length==1 && extinfodata[0][0]<=2 && extinfodata[0][4].length==1 && extinfodata[0][4][0][4].length>0) {
			displayExtInfoMap(0,0,extinfodata[0][4][0][3]);	
		}
	}
}

function renderSpecificExtInfo(number, type, prefix, params, data) {
	var i;
	var div=document.createElement("div");
	div.appendChild(document.createTextNode(prefix+" "));
	
	if(type==1 || type==2 || type==4) { // Positionen
		for(i=0;i<data.length;i++) {
			var div_a=document.createElement("a");
			if(data[i][4].length>0) {
				div_a.href="javascript:displayExtInfoMap("+number+","+i+", "+((data[i][3]==true)?"true":"false")+",'"+params+"')";
			} else {
				div_a.href="zone?id="+data[i][0];
			}
			var linktext=data[i][1];
			if(data[i][2]>0) linktext=linktext+" - Areal "+data[i][2];
			div_a.appendChild(document.createTextNode(linktext));
			div.appendChild(div_a);
			if(data[i][4].length>0) {
				div.appendChild(document.createTextNode(" ("+data[i][4].length+")"));
			}
			if(i<data.length-1) {
				if(i==data.length-2) {
					div.appendChild(document.createTextNode(" und "));
				} else {
					div.appendChild(document.createTextNode(", "));	
				}
			}
		}
	}
	
	if(type==3) { // PTR-Item
		div.className="bold";
		if(data.length>0) {
			var div_span=document.createElement("a");
			div_span.href=data[0];
			div_span.appendChild(document.createTextNode("["+data[1]+"]"));
			div_span.className="q"+data[2]+((data[2]==1)?"b":"");
			addTooltip(div_span, data[3]);
			div.appendChild(div_span);
		}
	}
	
	if(type==5) { // PTR Achievement
		div.className="bold";
		if(data.length>0) {
			var div_span=document.createElement("a");
			div_span.href=data[0];
			div_span.appendChild(document.createTextNode("["+data[1]+"]"));
			//div_span.className="q"+data[2]+((data[2]==1)?"b":"");
			addTooltip(div_span, data[2]);
			div.appendChild(div_span);
		}
	}
	
	var div_div=document.createElement("div");
	div_div.id="extinfodetailscontainer"+number;
	div.appendChild(div_div);
	
	return div;
}

function displayExtInfoMap(extinfo, subinfo, useFlashMap, params) {
	var windowWidth=(windowAtFullSize()==true)?750:500;
	var windowHeight=(windowAtFullSize()==true)?500:330;
	var data=extinfodata[extinfo][4];
	closeExtInfoMap(extinfo);
	var container=document.getElementById("extinfodetailscontainer"+extinfo);
	
	var flashMapAvailable=useFlashMap;	
	if(useFlashMap==true) {
		if(getCookie("noFlashMap")=="true") {
			useFlashMap=false;
		}
	}
	
	var table=document.createElement("table");
	table.cellPadding=0;
	table.cellSpacing=0;
	table.border=0;
	table.className="extinfomapmenu";
	var tbody=document.createElement("tbody");
	var table_tr=document.createElement("tr");
	var table_td=document.createElement("td");
	table_td.width="60%";
	table_td.className="extinfomapmenubar";
	if(flashMapAvailable) {
		var table_td_a=document.createElement("a");
		if(!useFlashMap) {
			table_td_a.href="javascript:toggleFlashMap(true,"+extinfo+","+subinfo+");";
			table_td_a.appendChild(document.createTextNode("nutze erweiterte, Flash-basierte Karte"));
		} else {
			table_td_a.href="javascript:toggleFlashMap(false,"+extinfo+","+subinfo+");";
			table_td_a.appendChild(document.createTextNode("nutze einfache Karte ohne Flash"));
		}
		table_td.appendChild(table_td_a);
	} else {
		table_td.appendChild(document.createTextNode("keine Flash-basierte Karte für diese Zone verfügbar"));
	}
	table_tr.appendChild(table_td);
	table_td=document.createElement("td");
	table_td.align="right";
	var table_td_a=document.createElement("a");
	table_td.className="extinfomapmenubar";
	table_td_a.href="javascript:closeExtInfoMap("+extinfo+");";
	table_td_a.appendChild(document.createTextNode("Karte schließen"));
	table_td.appendChild(table_td_a);
	table_tr.appendChild(table_td);
	tbody.appendChild(table_tr);
	
	table_tr=document.createElement("tr");
	table_td=document.createElement("td");
	table_td.colSpan=2;
	if(useFlashMap==true) {
		var flashdiv=document.createElement("div");
		flashdiv.id="extinfodetailscontainer"+extinfo+"flashmap";
		flashdiv.className=(windowAtFullSize()==true)?"extinfomap":"extinfomapsmall";
		var action=null;
		if(identifiertype==4) action="npcpositions";
		if(identifiertype==6) action="objectpositions";
		if(identifiertype==1) action="fishingpositions";
		if(identifiertype==5) action="questeventpositions"+params;
		var flashparams="action="+action+"&id="+identifier+"&zoneid="+data[subinfo][0]+"&level="+data[subinfo][2]+"&mode=zone";
		if(!browserIsIE) {
			flashdiv.innerHTML="<embed src=\"mapviewer/SDMapViewer.swf\" FlashVars=\""+flashparams+"\" quality=\"high\" bgcolor=\"#000000\" width=\""+windowWidth+"\" height=\""+windowHeight+"\" wmode=\"opaque\" name=\"SDMapViewer\" id=\"SDMapViewer\" align=\"middle\" play=\"true\" loop=\"false\" quality=\"high\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.adobe.com/go/getflashplayer\"></embed>";
		} else {
			if(browserIsIE) {
				flashdiv.innerHTML="<object type=\"application/x-shockwave-flash\" id=\"SDMapViewer\" width=\""+windowWidth+"\" height=\""+windowHeight+"\" data=\"mapviewer/SDMapViewer.swf\"><param name=\"movie\" value=\"mapviewer/SDMapViewer.swf\" /><param name=\"quality\" value=\"high\" /><param name=\"bgcolor\" value=\"#000000\" /><param name=\"allowScriptAccess\" value=\"sameDomain\" /><param name=\"wmode\" value=\"opaque\"><param name=\"FlashVars\" value=\""+flashparams+"\"></object>";
			} else {
				flashdiv.innerHTML="<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" id=\"SDMapViewer\" width=\""+windowWidth+"\" height=\""+windowHeight+"\"><param name=\"movie\" value=\"mapviewer/SDMapViewer.swf\" /><param name=\"quality\" value=\"high\" /><param name=\"bgcolor\" value=\"#000000\" /><param name=\"allowScriptAccess\" value=\"sameDomain\" /><param name=\"wmode\" value=\"opaque\"><param name=\"FlashVars\" value=\""+flashparams+"\"></object>";
			}
		}
		if(browserIsNetscape) flashdiv.addEventListener('DOMMouseScroll', flashMapWheel, false);
		flashdiv.onmousewheel=flashMapWheel;
		table_td.appendChild(flashdiv);
	} else {
		var mapdiv=document.createElement("div");
		mapdiv.id="extinfodetailscontainer"+extinfo+"map";
		mapdiv.className=(windowAtFullSize()==true)?"extinfomap":"extinfomapsmall";
		var level=data[subinfo][2];
		mapdiv.style.backgroundImage="url('images/wowmaps/"+(windowAtFullSize()?"":"small")+"/"+data[subinfo][0]+(level>0?"_"+level:"")+".jpg')";
		var i;
		for(i=0;i<data[subinfo][4].length;i++) {
			var xcoord=data[subinfo][4][i][0];
			var ycoord=data[subinfo][4][i][1];
			var relevance=data[subinfo][4][i][2];
			var alpha=(Math.round(relevance/10)*5)+50;
			if(alpha<=0) alpha=10;
			if(alpha>100) alpha=100;
			if(xcoord>100) xcoord=100;
			if(xcoord<0) xcoord=0;
			if(ycoord>100) ycoord=100;
			if(ycoord<0) ycoord=0;
			var pxcoord=(windowWidth/101)*xcoord;
			var pycoord=(windowHeight/101)*ycoord;
			var mapdiv_point=document.createElement("div");
			mapdiv_point.className="extinfomappoint";
			mapdiv_point.style.position="absolute";
			mapdiv_point.style.left=pxcoord+"px";
			mapdiv_point.style.top=pycoord+"px";
			if(data[subinfo][3].length<5) alpha="100white";
			mapdiv_point.style.backgroundImage="url('images/mapalpha/"+alpha+".png')";
			mapdiv_point.onmouseover=new Function("displayExtInfoMapCoords("+extinfo+","+xcoord+","+ycoord+");");
			mapdiv_point.onmouseout=new Function("clearExtInfoMapCoords("+extinfo+");");
			mapdiv.appendChild(mapdiv_point);
		}
		/*var closediv=document.createElement("div");
		closediv.className="extinfomapclose";
		var closediv_a=document.createElement("a");
		closediv_a.href="javascript:closeExtInfoMap("+extinfo+");";
		var closediv_a_img=document.createElement("img");
		closediv_a_img.src="images/closebutton.png";
		closediv_a_img.border=0;
		closediv_a.appendChild(closediv_a_img);
		closediv.appendChild(closediv_a);
		mapdiv.appendChild(closediv);*/
		table_td.appendChild(mapdiv);
	}
	table_tr.appendChild(table_td);
	tbody.appendChild(table_tr);
	table.appendChild(tbody);
	container.appendChild(table);
}

function closeExtInfoMap(extinfo) {
	var container=document.getElementById("extinfodetailscontainer"+extinfo);
	removeAllChilds(container);
}

function displayExtInfoMapCoords(extinfo, xcoord, ycoord) {
	clearExtInfoMapCoords(extinfo);
	var div=document.createElement("div");
	div.id="extinfodetailscontainer"+extinfo+"mapcoords";
	div.className="extinfomapcoords";
	div.appendChild(document.createTextNode(xcoord+" / "+ycoord));
	document.getElementById("extinfodetailscontainer"+extinfo+"map").appendChild(div);
}

function clearExtInfoMapCoords(extinfo) {
	var div=document.getElementById("extinfodetailscontainer"+extinfo+"mapcoords");
	if(div!=null) document.getElementById("extinfodetailscontainer"+extinfo+"map").removeChild(div);
}

function toggleFlashMap(useIt, extinfo, subinfo) {
	if(useIt) {
		setPermanentCookie("noFlashMap", "false");
	} else {
		setPermanentCookie("noFlashMap", "true");
	}
	displayExtInfoMap(extinfo, subinfo, ((extinfodata[extinfo][3][subinfo][3]==true)?true:false));
}

function flashMapWheelHandle(delta) {
	var mapviewer;
	if(browserIsIE) mapviewer=window.SDMapViewer;
	else mapviewer=document.getElementById("SDMapViewer");
	if(mapviewer) {
		try {
			mapviewer.externalZoom(delta>0?-1:1);	
		} catch(e) {}
	}
}

function flashMapWheel(event) {
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = -event.wheelDelta/120;
	} else if (event.detail) {
		delta = event.detail;
	}
	if (event.preventDefault) event.preventDefault();
	event.returnValue = false;
	if (delta) flashMapWheelHandle(delta);
}
