/****************************************************************
loadXMLDoc('file_name.xml');
****************************************************************/

// global flag
var isIE = false;
//alert('loadXML01');
// global request and XML document objects
var req;
var target;

// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
//alert('loadXML02');
    var result = "";
    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
        return "n/a";
    }
}

// clear the library content
function clearXMLContent() {
//alert('loadXML03');
    var content_01 = document.getElementById('map_large');
	var content_02 = document.getElementById('ship_content');
	var content_03 = document.getElementById('map_positions');
    //clear content divs
    while(content_01.hasChildNodes()){
        content_01.removeChild(content_01.childNodes[0]);
    }   
    while(content_02.hasChildNodes()){
        content_02.removeChild(content_02.childNodes[0]);
    }
    while(content_03.hasChildNodes()){
        content_03.removeChild(content_03.childNodes[0]);
    }
}

// reset the lightbox
function resetLightbox() {
//alert('loadXML04');
	var n = 0;
	var l = document.getElementById(target).getElementsByTagName('img');
	var imgArray = [];
	// build imgArray
	for (var i=0; i<l.length; i+=1) {
		imgArray[i] = new Image();
		imgArray[i].src = l[i].src;
	}
	// check if image is loaded
	for (var i=0; i<imgArray.length; i+=1) {
		if (imgArray[i].complete === true) {
			//alert('image:\t' + imgArray[i].src + '\nwidth:\t' + imgArray[i].width + '\nheight:\t' + imgArray[i].height);
			n+=1;
		}
	}
	if (n < l.length) {
		setTimeout("resetLightbox()",250);
	} else {
		initLightbox();
		if (target == 'ship_content') {
			if(document.getElementById('ship_content').style.display == 'none') {
				new Effect.Appear('ship_content');
			}
			if((document.getElementById('ship_content').style.marginLeft != '0px') && (document.getElementById('ship_content').style.marginLeft != '-0px')) {
				document.getElementById('ship_content').style.marginLeft = '-440px';
				slideSideward('ship_content', 'right', '440', 'empty');
			}
			if((Element.getStyle('menu_slider', 'margin-left') == '0px') || (Element.getStyle('menu_slider', 'margin-left') == '-0px')) {
				slideMenu();
			}
			if((Element.getStyle('menu', 'margin-left') == '0px') || (Element.getStyle('menu', 'margin-left') == '-0px')) {
				slideLogo();
			}
		} else {
			document.getElementById('ship_content').style.display = 'none';
			document.getElementById('ship_content').style.marginLeft = '-440px';
		}
	}
}

// build the new library content
function buildXMLContent() {
//alert('loadXML05');
	// check IE
	var ua = navigator.userAgent.toLowerCase();
	var iebrowser = ua.indexOf("msie");
	
    var content = document.getElementById(target);
	var ships = req.responseXML.getElementsByTagName("ship");
	var headquater = req.responseXML.getElementsByTagName("headquater");
	var reference = req.responseXML.getElementsByTagName("reference");
	var ship_details = req.responseXML.getElementsByTagName("ship_details");
	var bonus = req.responseXML.getElementsByTagName("bonus");
	
	// create new start node for map content
	if(ships.length >= 1 || headquater.length >= 1 || reference.length >= 1) {
		var nodeDL = document.createElement("dl");
		nodeDL.setAttribute('class','map_content');
		if (iebrowser > -1) {
			nodeDL.style.setAttribute('position','absolute');
			nodeDL.style.setAttribute('width','3200px');
			nodeDL.style.setAttribute('height','1480px');
			nodeDL.style.setAttribute('background','url(../images/empty.gif) repeat');
			nodeDL.style.setAttribute('textAlign','left');
			nodeDL.style.setAttribute('margin','0px');
			nodeDL.style.setAttribute('padding','0px');
		}
		content.appendChild(nodeDL);
	}
	
	// loop through <headquater> elements, and add each nested element
    for (var i=0; i<headquater.length; i+=1){
		// get position
		if (getElementTextNS("", "mapMode", headquater[i], 0) == 'coordinates') {
			var pixel = calculatePosition(getElementTextNS("", "latitude", headquater[i], 0), getElementTextNS("", "longitude", headquater[i], 0));
			var posX = pixel[0];
			var posY = pixel[1];
			posX = posX - 11;
			posY = posY - 11;
		} else {
			var posX = getElementTextNS("", "mapX", headquater[i], 0);
			var posY = getElementTextNS("", "mapY", headquater[i], 0);
		}
		var overviewLeft = Math.round(posY / (parseInt(Element.getStyle('map_large', 'width')) / parseInt(Element.getStyle('map_small', 'width'))) - 3);
		var overviewTop = Math.round(posX / (parseInt(Element.getStyle('map_large', 'height')) / parseInt(Element.getStyle('map_small', 'height'))) - 3);
		
		// create overview elements
		var overviewImage = document.createElement("img");
		overviewImage.setAttribute("src", "images/icon_overview_headquater.gif");
		overviewImage.setAttribute("width", "6");
		overviewImage.setAttribute("height", "6");
		overviewImage.setAttribute("alt", "");
		if (iebrowser > -1) {
			overviewImage.style.setAttribute("position", "absolute");
			overviewImage.style.setAttribute("width", "6px");
			overviewImage.style.setAttribute("height", "6px");
			overviewImage.style.setAttribute("border", "none 0");
			overviewImage.style.setAttribute("top", overviewTop + "px");
			overviewImage.style.setAttribute("left", overviewLeft + "px");
		} else {
			overviewImage.style.top = overviewTop + 'px';
			overviewImage.style.left = overviewLeft + 'px';
		}
		
		var overviewMap = document.getElementById('map_positions');
		overviewMap.appendChild(overviewImage);
	
		// create parent nodes
		var nodeDT = document.createElement("dt");
		
		var nodeDD = document.createElement("dd");
		if (iebrowser > -1) {
			nodeDD.style.setAttribute("position", "absolute");
			nodeDD.style.setAttribute("left", "-9999px");
			nodeDD.style.setAttribute("width", "330px");
			nodeDD.style.setAttribute("padding", "4px");
			nodeDD.style.setAttribute("paddingTop", "25px");
			nodeDD.style.setAttribute("color", "#fff");
			nodeDD.style.setAttribute("backgroundRepeat", "repeat");
			nodeDD.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/bg_tooltip.png',sizingMethod='crop')");
			nodeDD.style.setAttribute("zIndex", "11");
		}
		
		var nodeParagraph_01 = document.createElement("p");
		if (iebrowser > -1) {
			nodeParagraph_01.style.setAttribute("position", "relative");
			nodeParagraph_01.style.setAttribute("float", "left");
			nodeParagraph_01.style.setAttribute("width", "300px");
			nodeParagraph_01.style.setAttribute("border", "none 0");
			nodeParagraph_01.style.setAttribute("margin", "5px");
		}
		
		var nodeParagraph_02 = document.createElement("p");
		if (iebrowser > -1) {
			nodeParagraph_02.style.setAttribute("position", "relative");
			nodeParagraph_02.style.setAttribute("float", "left");
			nodeParagraph_02.style.setAttribute("width", "300px");
			nodeParagraph_02.style.setAttribute("border", "none 0");
			nodeParagraph_02.style.setAttribute("margin", "5px");
		}
		
		var nodeParagraph_03 = document.createElement("p");
		var nodeParagraph_04 = document.createElement("p");	
		var nodeParagraph_05 = document.createElement("p");	
		var nodeParagraph_06 = document.createElement("p");
		
		var elementH1_01 = document.createElement("h1");
		if (iebrowser > -1) {
			elementH1_01.style.setAttribute("position", "relative");
			elementH1_01.style.setAttribute("float", "left");
			elementH1_01.style.setAttribute("width", "300px");
			elementH1_01.style.setAttribute("margin", "0px 5px 0px 5px");
		}
		
		// create content elements
		var visitAddress = document.createTextNode("Visiting Address:");
		var postAddress = document.createTextNode("Postal Address:");
		var textStreet = document.createTextNode(getElementTextNS("", "street", headquater[i], 0));
		var textCity = document.createTextNode(getElementTextNS("", "city", headquater[i], 0));
		var textCountry = document.createTextNode(getElementTextNS("", "country", headquater[i], 0));
		var textPostStreet = document.createTextNode(getElementTextNS("", "post_street", headquater[i], 0));
		var textPostCity = document.createTextNode(getElementTextNS("", "post_city", headquater[i], 0));
		var textPostCountry = document.createTextNode(getElementTextNS("", "post_country", headquater[i], 0));
		var textPhoneLabel = document.createTextNode("Phone: ");
		var textFaxLabel = document.createTextNode("Fax: ");
		var textPhone = document.createTextNode(getElementTextNS("", "phone", headquater[i], 0));
		var textFax = document.createTextNode(getElementTextNS("", "fax", headquater[i], 0));
		
		var textEmployee_title = document.createTextNode("employees");
		var textEmployee_01 = document.createTextNode(getElementTextNS("", "employee01", headquater[i], 0));
		var textEmployee_02 = document.createTextNode(getElementTextNS("", "employee02", headquater[i], 0));
		var textEmployee_03 = document.createTextNode(getElementTextNS("", "employee03", headquater[i], 0));
		var textEmployee_04 = document.createTextNode(getElementTextNS("", "employee04", headquater[i], 0));
		var textEmployee_05 = document.createTextNode(getElementTextNS("", "employee05", headquater[i], 0));
		
		var nodeDT_link = document.createElement("a");
		nodeDT_link.setAttribute("href", "#");
		nodeDT_link.onmouseover = new Function("showTooltip(this);");
		nodeDT_link.onmouseout = new Function("hideTooltip(this);");
		nodeDT_link.onmousedown = new Function("switchMenu('menu_main_02'); openContent('content_company_bg');");
		nodeDT_link.onfocus = new Function("if(this.blur()){this.blur();}");
		nodeDT_link.setAttribute("class", "location");
		nodeDT_link.setAttribute("id", "location" + getElementTextNS("", "id", headquater[i], 0));
		if (iebrowser > -1) {
			nodeDT_link.style.setAttribute("display", "block");
			nodeDT_link.style.setAttribute("position", "absolute");
			nodeDT_link.style.setAttribute("paddingLeft", "25px");
			nodeDT_link.style.setAttribute("paddingTop", "10px");
			nodeDT_link.style.setAttribute("textAlign", "left");
			nodeDT_link.style.setAttribute("color", "#333");
			nodeDT_link.style.setAttribute("cursor", "pointer");
			nodeDT_link.style.setAttribute("zIndex", "10");
			nodeDT_link.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/icon_home.png',sizingMethod='crop')");
			// position of icon
			nodeDT_link.style.setAttribute("top", posX + 'px');
			nodeDT_link.style.setAttribute("left", posY + 'px');
		} else {
			nodeDT_link.style.top = posX + 'px';
			nodeDT_link.style.left = posY + 'px';
		}
		
		
		var nodeDT_link_text = document.createTextNode("Based in Bremen, Germany");
		
		var nodeDD_image = document.createElement("img");
		nodeDD_image.setAttribute("src", getElementTextNS("", "logo", headquater[i], 0));
		nodeDD_image.setAttribute("width", getElementTextNS("", "logo_width", headquater[i], 0));
		nodeDD_image.setAttribute("height", getElementTextNS("", "logo_height", headquater[i], 0));
		nodeDD_image.setAttribute("alt", "Logo of the " + getElementTextNS("", "name", headquater[i], 0));
		if (iebrowser > -1) {
			nodeDD_image.style.setAttribute("position", "relative");
			nodeDD_image.style.setAttribute("float", "left");
			nodeDD_image.style.setAttribute("border", "none 0");
			nodeDD_image.style.setAttribute("margin", "5px");
		}
		
		// create other elements
		var elementBR_01 = document.createElement("br");
		var elementBR_02 = document.createElement("br");
		var elementBR_03 = document.createElement("br");
		var elementBR_04 = document.createElement("br");
		var elementBR_05 = document.createElement("br");
		var elementBR_06 = document.createElement("br");
		var elementBR_07 = document.createElement("br");
		var elementBR_08 = document.createElement("br");
		var elementBR_09 = document.createElement("br");
		var elementBR_10 = document.createElement("br");
		var elementBR_11 = document.createElement("br");
		var elementBR_12 = document.createElement("br");
		var elementBR_13 = document.createElement("br");
		var elementBR_14 = document.createElement("br");
		var elementBR_15 = document.createElement("br");
		var elementBR_16 = document.createElement("br");
		var elementBR_17 = document.createElement("br");
		
		var elementHR_01 = document.createElement("hr");
		if (iebrowser > -1) {
			elementHR_01.style.setAttribute("position", "relative");
			elementHR_01.style.setAttribute("float", "left");
			elementHR_01.style.setAttribute("width", "300px");
			elementHR_01.style.setAttribute("margin", "10px");
			elementHR_01.style.setAttribute("border", "none 0");
			elementHR_01.style.setAttribute("borderTop", "1px dashed #fff");
			elementHR_01.style.setAttribute("height", "1px");
		}
		
		var elementHR_02 = document.createElement("hr");
		if (iebrowser > -1) {
			elementHR_02.style.setAttribute("position", "relative");
			elementHR_02.style.setAttribute("float", "left");
			elementHR_02.style.setAttribute("width", "300px");
			elementHR_02.style.setAttribute("margin", "10px");
			elementHR_02.style.setAttribute("border", "none 0");
			elementHR_02.style.setAttribute("borderTop", "1px dashed #fff");
			elementHR_02.style.setAttribute("height", "1px");
		}
		
		var nodeBold_01 = document.createElement("b");
		var nodeBold_02 = document.createElement("b");
		var nodeBold_03 = document.createElement("b");
		var nodeBold_04 = document.createElement("b");
		
		var nodeTable = document.createElement("table");
		nodeTable.setAttribute("class", "address");
		if (iebrowser > -1) {
			nodeTable.style.setAttribute("position", "relative");
			nodeTable.style.setAttribute("float", "left");
			nodeTable.style.setAttribute("tableLayout", "fixed");
			nodeTable.style.setAttribute("width", "300px");
			nodeTable.style.setAttribute("border", "none 0");
			nodeTable.style.setAttribute("margin", "0px");
		}
		
		var nodeTableBody = document.createElement("tbody");
		
		var nodeTableTR = document.createElement("tr");
		
		var nodeTableTD_01 = document.createElement("td");
		if (iebrowser > -1) {
			nodeTableTD_01.style.setAttribute("verticalAlign", "top");
			nodeTableTD_01.style.setAttribute("width", "150px");
		}
		
		var nodeTableTD_02 = document.createElement("td");
		if (iebrowser > -1) {
			nodeTableTD_02.style.setAttribute("verticalAlign", "top");
			nodeTableTD_02.style.setAttribute("width", "150px");
		}
		
		// render <headquater> content
	
		// render link
		nodeDL.appendChild(nodeDT);
		
			// render link content
			nodeDT.appendChild(nodeDT_link);
			nodeDT_link.appendChild(nodeDT_link_text);
		
		// render content
		nodeDL.appendChild(nodeDD);
		
			// render image
			nodeDD.appendChild(nodeDD_image);
		
			// render line
			nodeDD.appendChild(elementHR_01);
		
			// render first paragraph
			nodeDD.appendChild(nodeParagraph_01);
			
				// render table
				nodeParagraph_01.appendChild(nodeTable);
				nodeTable.appendChild(nodeTableBody);
					nodeTableBody.appendChild(nodeTableTR);
						nodeTableTR.appendChild(nodeTableTD_01);
							nodeTableTD_01.appendChild(nodeBold_01);
								nodeBold_01.appendChild(visitAddress);
							nodeTableTD_01.appendChild(elementBR_12);
							nodeTableTD_01.appendChild(elementBR_13);
							nodeTableTD_01.appendChild(textStreet);
							nodeTableTD_01.appendChild(elementBR_01);
							nodeTableTD_01.appendChild(textCity);
							nodeTableTD_01.appendChild(elementBR_02);
							nodeTableTD_01.appendChild(textCountry);
							nodeTableTD_01.appendChild(elementBR_03);
							nodeTableTD_01.appendChild(elementBR_16);
						nodeTableTR.appendChild(nodeTableTD_02);
							nodeTableTD_02.appendChild(nodeBold_02);
								nodeBold_02.appendChild(postAddress);
							nodeTableTD_02.appendChild(elementBR_14);
							nodeTableTD_02.appendChild(elementBR_15);
							nodeTableTD_02.appendChild(textPostStreet);
							nodeTableTD_02.appendChild(elementBR_09);
							nodeTableTD_02.appendChild(textPostCity);
							nodeTableTD_02.appendChild(elementBR_10);
							nodeTableTD_02.appendChild(textPostCountry);
							nodeTableTD_02.appendChild(elementBR_11);
							nodeTableTD_02.appendChild(elementBR_17);
		
				// render first paragraph content
				nodeParagraph_01.appendChild(nodeBold_03);
				nodeBold_03.appendChild(textPhoneLabel);
				nodeParagraph_01.appendChild(textPhone);
				nodeParagraph_01.appendChild(elementBR_04);
				nodeParagraph_01.appendChild(nodeBold_04);
				nodeBold_04.appendChild(textFaxLabel);
				nodeParagraph_01.appendChild(textFax);
		
			// render line	
			nodeDD.appendChild(elementHR_02);
		
			// render headline
			nodeDD.appendChild(elementH1_01);
			elementH1_01.appendChild(textEmployee_title);
		
			// render second paragraph
			nodeDD.appendChild(nodeParagraph_02);
		
				// render second paragraph content
				nodeParagraph_02.appendChild(textEmployee_01);
				nodeParagraph_02.appendChild(elementBR_05);
				nodeParagraph_02.appendChild(textEmployee_02);
				nodeParagraph_02.appendChild(elementBR_06);
				nodeParagraph_02.appendChild(textEmployee_03);
				nodeParagraph_02.appendChild(elementBR_07);
				nodeParagraph_02.appendChild(textEmployee_04);
				nodeParagraph_02.appendChild(elementBR_08);
				nodeParagraph_02.appendChild(textEmployee_05);
	}
	
    // loop through <ship> elements, and add each nested element
    for (var ii=0; ii<ships.length; ii+=1){
		// get position
		if (getElementTextNS("", "mapMode", ships[ii], 0) == 'coordinates') {
			var pixel = calculatePosition(getElementTextNS("", "latitude", ships[ii], 0), getElementTextNS("", "longitude", ships[ii], 0));
			var posX = pixel[0];
			var posY = pixel[1];
			posX = posX - 11;
			posY = posY - 11;
		} else {
			var posX = getElementTextNS("", "mapX", ships[ii], 0);
			var posY = getElementTextNS("", "mapY", ships[ii], 0);
		}
		var overviewLeft = Math.round(posY / (parseInt(Element.getStyle('map_large', 'width')) / parseInt(Element.getStyle('map_small', 'width'))) - 3);
		var overviewTop = Math.round(posX / (parseInt(Element.getStyle('map_large', 'height')) / parseInt(Element.getStyle('map_small', 'height'))) - 3);
		
		// create overview elements
		var overviewImage = document.createElement("img");
		overviewImage.setAttribute("src", "images/icon_overview_ship.gif");
		overviewImage.setAttribute("width", "6");
		overviewImage.setAttribute("height", "6");
		overviewImage.setAttribute("alt", "");
		if (iebrowser > -1) {
			overviewImage.style.setAttribute("position", "absolute");
			overviewImage.style.setAttribute("width", "6px");
			overviewImage.style.setAttribute("height", "6px");
			overviewImage.style.setAttribute("border", "none 0");
			overviewImage.style.setAttribute("top", overviewTop + "px");
			overviewImage.style.setAttribute("left", overviewLeft + "px");
		} else {
			overviewImage.style.top = overviewTop + 'px';
			overviewImage.style.left = overviewLeft + 'px';
		}
		
		var overviewMap = document.getElementById('map_positions');
		overviewMap.appendChild(overviewImage);
	
		// create parent nodes
		var nodeDT = document.createElement("dt");
		
		var nodeDD = document.createElement("dd");
		nodeDD.setAttribute('class','ship');
		if (iebrowser > -1) {
			nodeDD.style.setAttribute("position", "absolute");
			nodeDD.style.setAttribute("left", "-9999px");
			nodeDD.style.setAttribute("width", "330px");
			nodeDD.style.setAttribute("padding", "4px");
			nodeDD.style.setAttribute("paddingTop", "25px");
			nodeDD.style.setAttribute("color", "#fff");
			nodeDD.style.setAttribute("backgroundRepeat", "repeat");
			nodeDD.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/bg_tooltip.png',sizingMethod='crop')");
			nodeDD.style.setAttribute("zIndex", "11");
		}
		
		// create content elements
		var elementDTLink = document.createElement("a");
		elementDTLink.setAttribute("href", "javascript:historyManager('ship_" + getElementTextNS("", "id", ships[ii], 0) + "', '" + getElementTextNS("", "name", ships[ii], 0) + "');");
		elementDTLink.onmouseover = new Function("showTooltip(this);");
		elementDTLink.onmouseout = new Function("hideTooltip(this);");
		elementDTLink.onfocus = new Function("if(this.blur()){this.blur();}");
		elementDTLink.setAttribute("class", "location_ship");
		elementDTLink.setAttribute("id", "location" + getElementTextNS("", "id", ships[ii], 0));
		if (iebrowser > -1) {
			elementDTLink.style.setAttribute("display", "block");
			elementDTLink.style.setAttribute("position", "absolute");
			elementDTLink.style.setAttribute("paddingLeft", "25px");
			elementDTLink.style.setAttribute("paddingTop", "10px");
			elementDTLink.style.setAttribute("textAlign", "left");
			elementDTLink.style.setAttribute("color", "#333");
			elementDTLink.style.setAttribute("cursor", "pointer");
			elementDTLink.style.setAttribute("zIndex", "10");
			elementDTLink.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/icon_ship.png',sizingMethod='crop')");
			// position of icon
			elementDTLink.style.setAttribute("top", posX + 'px');
			elementDTLink.style.setAttribute("left", posY + 'px');
		} else {
			elementDTLink.style.top = posX + 'px';
			elementDTLink.style.left = posY + 'px';
		}
		
		var elementDDImage = document.createElement("img");
		elementDDImage.setAttribute("src", getElementTextNS("", "photo", ships[ii], 0));
		elementDDImage.setAttribute("width", getElementTextNS("", "photo_width", ships[ii], 0));
		elementDDImage.setAttribute("height", getElementTextNS("", "photo_height", ships[ii], 0));
		elementDDImage.setAttribute("alt", "Photograph of the container ship " + getElementTextNS("", "name", ships[ii], 0));
		if (iebrowser > -1) {
			elementDDImage.style.setAttribute("position", "relative");
			elementDDImage.style.setAttribute("float", "left");
			elementDDImage.style.setAttribute("border", "none 0");
			elementDDImage.style.setAttribute("margin", "5px");
			elementDDImage.style.setAttribute("border", "1px solid #fff");
		} else {
			elementDDImage.style.border = "1px solid #fff";
		}
		
		var elementDDHeadline = document.createElement("h1");
		if (iebrowser > -1) {
			elementDDHeadline.style.setAttribute("position", "relative");
			elementDDHeadline.style.setAttribute("float", "left");
			elementDDHeadline.style.setAttribute("width", "300px");
			elementDDHeadline.style.setAttribute("margin", "0px 5px 0px 5px");
		}
		
		// create text elements
		var textHeadline = document.createTextNode(getElementTextNS("", "name", ships[ii], 0));
		var textName = document.createTextNode(getElementTextNS("", "name", ships[ii], 0));
		var textClass = document.createTextNode(getElementTextNS("", "class", ships[ii], 0));
		var textConstruction = document.createTextNode(getElementTextNS("", "construction", ships[ii], 0));
		var textBuild = document.createTextNode(getElementTextNS("", "build", ships[ii], 0));
		var textLength = document.createTextNode(getElementTextNS("", "length", ships[ii], 0));
		var textBreadth = document.createTextNode(getElementTextNS("", "breadth", ships[ii], 0));
		var textDepth = document.createTextNode(getElementTextNS("", "depth", ships[ii], 0));
		var textTonnage = document.createTextNode(getElementTextNS("", "tonnage", ships[ii], 0));
		var textSpeed = document.createTextNode(getElementTextNS("", "speed", ships[ii], 0));
		
		// create label elements
		var labelClass = document.createTextNode("class: ");
		var labelConstruction = document.createTextNode("construction: ");
		var labelBuild = document.createTextNode("build: ");
		var labelLength = document.createTextNode("length overall: ");
		var labelBreadth = document.createTextNode("breadth (mid.): ");
		var labelDepth = document.createTextNode("depth (mid.): ");
		var labelTonnage = document.createTextNode("tonnage: ");
		var labelSpeed = document.createTextNode("speed: ");
		
		// create table elements
		var elementTable = document.createElement("table");
		if (iebrowser > -1) {
			elementTable.style.setAttribute("position", "relative");
			elementTable.style.setAttribute("float", "left");
			elementTable.style.setAttribute("tableLayout", "fixed");
			elementTable.style.setAttribute("width", "300px");
			elementTable.style.setAttribute("border", "none 0");
			elementTable.style.setAttribute("margin", "5px");
		}
		
		var elementTableBody = document.createElement("tbody");
		
		var elementTR_01 = document.createElement("tr");
		var elementTR_02 = document.createElement("tr");
		var elementTR_03 = document.createElement("tr");
		var elementTR_04 = document.createElement("tr");
		var elementTR_05 = document.createElement("tr");
		var elementTR_06 = document.createElement("tr");
		var elementTR_07 = document.createElement("tr");
		var elementTR_08 = document.createElement("tr");

		var elementTD_01a = document.createElement("td");
		elementTD_01a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_01a.style.setAttribute("verticalAlign", "top");
			elementTD_01a.style.setAttribute("paddingBottom", "5px");
			elementTD_01a.style.setAttribute("width", "100px");
			elementTD_01a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_02a = document.createElement("td");
		elementTD_02a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_02a.style.setAttribute("verticalAlign", "top");
			elementTD_02a.style.setAttribute("paddingBottom", "5px");
			elementTD_02a.style.setAttribute("width", "100px");
			elementTD_02a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_03a = document.createElement("td");
		elementTD_03a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_03a.style.setAttribute("verticalAlign", "top");
			elementTD_03a.style.setAttribute("paddingBottom", "5px");
			elementTD_03a.style.setAttribute("width", "100px");
			elementTD_03a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_04a = document.createElement("td");
		elementTD_04a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_04a.style.setAttribute("verticalAlign", "top");
			elementTD_04a.style.setAttribute("paddingBottom", "5px");
			elementTD_04a.style.setAttribute("width", "100px");
			elementTD_04a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_05a = document.createElement("td");
		elementTD_05a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_05a.style.setAttribute("verticalAlign", "top");
			elementTD_05a.style.setAttribute("paddingBottom", "5px");
			elementTD_05a.style.setAttribute("width", "100px");
			elementTD_05a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_06a = document.createElement("td");
		elementTD_06a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_06a.style.setAttribute("verticalAlign", "top");
			elementTD_06a.style.setAttribute("paddingBottom", "5px");
			elementTD_06a.style.setAttribute("width", "100px");
			elementTD_06a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_07a = document.createElement("td");
		elementTD_07a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_07a.style.setAttribute("verticalAlign", "top");
			elementTD_07a.style.setAttribute("paddingBottom", "5px");
			elementTD_07a.style.setAttribute("width", "100px");
			elementTD_07a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_08a = document.createElement("td");
		elementTD_08a.setAttribute("class", "label");
		if (iebrowser > -1) {
			elementTD_08a.style.setAttribute("verticalAlign", "top");
			elementTD_08a.style.setAttribute("paddingBottom", "5px");
			elementTD_08a.style.setAttribute("width", "100px");
			elementTD_08a.style.setAttribute("fontWeight", "bold");
		}
		
		var elementTD_01b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_01b.style.setAttribute("verticalAlign", "top");
			elementTD_01b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_02b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_02b.style.setAttribute("verticalAlign", "top");
			elementTD_02b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_03b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_03b.style.setAttribute("verticalAlign", "top");
			elementTD_03b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_04b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_04b.style.setAttribute("verticalAlign", "top");
			elementTD_04b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_05b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_05b.style.setAttribute("verticalAlign", "top");
			elementTD_05b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_06b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_06b.style.setAttribute("verticalAlign", "top");
			elementTD_06b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_07b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_07b.style.setAttribute("verticalAlign", "top");
			elementTD_07b.style.setAttribute("paddingBottom", "5px");
		}
		
		var elementTD_08b = document.createElement("td");
		if (iebrowser > -1) {
			elementTD_08b.style.setAttribute("verticalAlign", "top");
			elementTD_08b.style.setAttribute("paddingBottom", "5px");
		}
		
	
		// render <ships> content
		
		nodeDL.appendChild(nodeDT);
			nodeDT.appendChild(elementDTLink);
				elementDTLink.appendChild(textName);
		
		nodeDL.appendChild(nodeDD);
			nodeDD.appendChild(elementDDImage);
			nodeDD.appendChild(elementDDHeadline);
				elementDDHeadline.appendChild(textHeadline);
		
			// render table
			nodeDD.appendChild(elementTable);
			elementTable.appendChild(elementTableBody);
		
			// render line 1
			elementTableBody.appendChild(elementTR_01);
				// render coloumn 1
				elementTR_01.appendChild(elementTD_01a);
				elementTD_01a.appendChild(labelClass);
				// render coloumn 2
				elementTR_01.appendChild(elementTD_01b);
				elementTD_01b.appendChild(textClass);
		
			// render line 2
			elementTableBody.appendChild(elementTR_02);
				// render coloumn 1
				elementTR_02.appendChild(elementTD_02a);
				elementTD_02a.appendChild(labelConstruction);
				// render coloumn 2
				elementTR_02.appendChild(elementTD_02b);
				elementTD_02b.appendChild(textConstruction);
		
			// render line 3
			elementTableBody.appendChild(elementTR_03);
				// render coloumn 1
				elementTR_03.appendChild(elementTD_03a);
				elementTD_03a.appendChild(labelBuild);
				// render coloumn 2
				elementTR_03.appendChild(elementTD_03b);
				elementTD_03b.appendChild(textBuild);
		
			// render line 4
			elementTableBody.appendChild(elementTR_04);
				// render coloumn 1
				elementTR_04.appendChild(elementTD_04a);
				elementTD_04a.appendChild(labelLength);
				// render coloumn 2
				elementTR_04.appendChild(elementTD_04b);
				elementTD_04b.appendChild(textLength);
		
			// render line 5
			elementTableBody.appendChild(elementTR_05);
				// render coloumn 1
				elementTR_05.appendChild(elementTD_05a);
				elementTD_05a.appendChild(labelBreadth);
				// render coloumn 2
				elementTR_05.appendChild(elementTD_05b);
				elementTD_05b.appendChild(textBreadth);
		
			// render line 6
			elementTableBody.appendChild(elementTR_06);
				// render coloumn 1
				elementTR_06.appendChild(elementTD_06a);
				elementTD_06a.appendChild(labelDepth);
				// render coloumn 2
				elementTR_06.appendChild(elementTD_06b);
				elementTD_06b.appendChild(textDepth);
		
			// render line 7
			elementTableBody.appendChild(elementTR_07);
				// render coloumn 1
				elementTR_07.appendChild(elementTD_07a);
				elementTD_07a.appendChild(labelTonnage);
				// render coloumn 2
				elementTR_07.appendChild(elementTD_07b);
				elementTD_07b.appendChild(textTonnage);
		
			// render line 8
			elementTableBody.appendChild(elementTR_08);
				// render coloumn 1
				elementTR_08.appendChild(elementTD_08a);
				elementTD_08a.appendChild(labelSpeed);
				// render coloumn 2
				elementTR_08.appendChild(elementTD_08b);
				elementTD_08b.appendChild(textSpeed);
	}
	
	// loop through <ship_details> elements, and add each nested element
	for (var iii=0; iii<ship_details.length; iii+=1){
		// create parent node
		var nodeBackground = document.createElement("div");
		nodeBackground.setAttribute("id", "ship_content_bg");
		
		var nodeDIVimages = document.createElement("div");
		nodeDIVimages.setAttribute("id", "ship_images");
		
		var nodeDIVtext = document.createElement("div");
		nodeDIVtext.setAttribute("id", "ship_text");
		
		var nodeDIVhandle = document.createElement("div");
		nodeDIVhandle.setAttribute("id", "ship_handle");
		
		// create handle elements
		var nodeLink_00 = document.createElement("a");
		nodeLink_00.setAttribute("href", "#");
		nodeLink_00.onmousedown = new Function("slideShipDetails();");
		nodeLink_00.onfocus = new Function("if(this.blur()){this.blur();}");
		
		var nodeImg_00 = document.createElement("img");
		nodeImg_00.setAttribute("src", "images/empty.gif");
		nodeImg_00.setAttribute("width", "20");
		nodeImg_00.setAttribute("height", "370");
		nodeImg_00.setAttribute("alt", "switch details view");
		
		// create image elements
		var thumb01 = getElementTextNS("", "thumb01", ship_details[iii], 0);
		var thumb02 = getElementTextNS("", "thumb02", ship_details[iii], 0);
		var thumb03 = getElementTextNS("", "thumb03", ship_details[iii], 0);
		var thumb04 = getElementTextNS("", "thumb04", ship_details[iii], 0);
		
		if (thumb01 != 'none') {
			var nodeLink_01 = document.createElement("a");
			nodeLink_01.setAttribute("href", getElementTextNS("", "image01", ship_details[iii], 0));
			nodeLink_01.setAttribute("rel", "lightbox[" + getElementTextNS("", "id", ship_details[iii], 0) + "]");
			nodeLink_01.setAttribute("title", getElementTextNS("", "name", ship_details[iii], 0));
			nodeLink_01.onfocus = new Function("if(this.blur()){this.blur();}");
		
			var nodeImg_01 = document.createElement("img");
			nodeImg_01.setAttribute("src", thumb01);
			nodeImg_01.setAttribute("class", "ship_img");
		}
		
		if (thumb02 != 'none') {
			var nodeLink_02 = document.createElement("a");
			nodeLink_02.setAttribute("href", getElementTextNS("", "image02", ship_details[iii], 0));
			nodeLink_02.setAttribute("rel", "lightbox[" + getElementTextNS("", "id", ship_details[iii], 0) + "]");
			nodeLink_02.setAttribute("title", getElementTextNS("", "name", ship_details[iii], 0));
			nodeLink_02.onfocus = new Function("if(this.blur()){this.blur();}");
		
			var nodeImg_02 = document.createElement("img");
			nodeImg_02.setAttribute("src", thumb02);
			nodeImg_02.setAttribute("class", "ship_img");
		}
		
		if (thumb03 != 'none') {
			var nodeLink_03 = document.createElement("a");
			nodeLink_03.setAttribute("href", getElementTextNS("", "image03", ship_details[iii], 0));
			nodeLink_03.setAttribute("rel", "lightbox[" + getElementTextNS("", "id", ship_details[iii], 0) + "]");
			nodeLink_03.setAttribute("title", getElementTextNS("", "name", ship_details[iii], 0));
			nodeLink_03.onfocus = new Function("if(this.blur()){this.blur();}");
		
			var nodeImg_03 = document.createElement("img");
			nodeImg_03.setAttribute("src", thumb03);
			nodeImg_03.setAttribute("class", "ship_img");
		}
		
		if (thumb04 != 'none') {
			var nodeLink_04 = document.createElement("a");
			nodeLink_04.setAttribute("href", getElementTextNS("", "image04", ship_details[iii], 0));
			nodeLink_04.setAttribute("rel", "lightbox[" + getElementTextNS("", "id", ship_details[iii], 0) + "]");
			nodeLink_04.setAttribute("title", getElementTextNS("", "name", ship_details[iii], 0));
			nodeLink_04.onfocus = new Function("if(this.blur()){this.blur();}");
		
			var nodeImg_04 = document.createElement("img");
			nodeImg_04.setAttribute("src", thumb04);
			nodeImg_04.setAttribute("class", "ship_img");
		}
		
		// create downloads elements
		var nodeParagraph_01 = document.createElement("p");
		if (iebrowser > -1) {
			nodeParagraph_01.style.setAttribute("position", "relative");
			nodeParagraph_01.style.setAttribute("float", "left");
			nodeParagraph_01.style.setAttribute("width", "300px");
			nodeParagraph_01.style.setAttribute("border", "none 0");
			nodeParagraph_01.style.setAttribute("margin", "10px");
			nodeParagraph_01.style.setAttribute("lineHeight", "30px");
		}
		
		var nodeBR_01 = document.createElement("br");
		
		var nodeDownload_01 = document.createElement("a");
		nodeDownload_01.setAttribute("href", "download.php?file=" + getElementTextNS("", "file", ship_details[iii], 0));
		nodeDownload_01.setAttribute("title", "ship detail: " + getElementTextNS("", "name", ship_details[iii], 0));
		nodeDownload_01.onfocus = new Function("if(this.blur()){this.blur();}");
		
		var nodeDownload_02 = document.createElement("a");
		nodeDownload_02.setAttribute("href", "download.php?file=" + getElementTextNS("", "pdf", ship_details[iii], 0));
		nodeDownload_02.setAttribute("title", "ship plan: " + getElementTextNS("", "name", ship_details[iii], 0));
		nodeDownload_02.onfocus = new Function("if(this.blur()){this.blur();}");
		
		var nodeImg_05 = document.createElement("img");
		nodeImg_05.setAttribute("src", "images/icon_pdf.png");
		if (iebrowser > -1) {
			nodeImg_05.style.setAttribute("marginRight", "5px");
			nodeImg_05.style.setAttribute("border", "none 0");
		}
		
		var nodeImg_06 = document.createElement("img");
		nodeImg_06.setAttribute("src", "images/icon_pdf.png");
		if (iebrowser > -1) {
			nodeImg_06.style.setAttribute("marginRight", "5px");
			nodeImg_06.style.setAttribute("border", "none 0");
		}
		
		// create text elements
		var textName = document.createTextNode(getElementTextNS("", "name", ship_details[iii], 0));
		var textClass = document.createTextNode(getElementTextNS("", "class", ship_details[iii], 0));
		var textConstruction = document.createTextNode(getElementTextNS("", "construction", ship_details[iii], 0));
		var textBuild = document.createTextNode(getElementTextNS("", "build", ship_details[iii], 0));
		var textLength = document.createTextNode(getElementTextNS("", "length", ship_details[iii], 0));
		var textBreadth = document.createTextNode(getElementTextNS("", "breadth", ship_details[iii], 0));
		var textDepth = document.createTextNode(getElementTextNS("", "depth", ship_details[iii], 0));
		var textTonnage = document.createTextNode(getElementTextNS("", "tonnage", ship_details[iii], 0));
		var textSpeed = document.createTextNode(getElementTextNS("", "speed", ship_details[iii], 0));
		var textHeadline_02 = document.createTextNode("PDF-Downloads");
		var textDownload_01 = document.createTextNode(" in-depth ship information");
		var textDownload_02 = document.createTextNode(" detailed design drawing of the ship");
		
		// create label elements
		var labelClass = document.createTextNode("class: ");
		var labelConstruction = document.createTextNode("construction: ");
		var labelBuild = document.createTextNode("build: ");
		var labelLength = document.createTextNode("length overall: ");
		var labelBreadth = document.createTextNode("breadth (mid.): ");
		var labelDepth = document.createTextNode("depth (mid.): ");
		var labelTonnage = document.createTextNode("tonnage: ");
		var labelSpeed = document.createTextNode("speed: ");
		
		// create table elements
		var elementTable = document.createElement("table");
		var elementTableBody = document.createElement("tbody");
		
		var elementTR_01 = document.createElement("tr");
		var elementTR_02 = document.createElement("tr");
		var elementTR_03 = document.createElement("tr");
		var elementTR_04 = document.createElement("tr");
		var elementTR_05 = document.createElement("tr");
		var elementTR_06 = document.createElement("tr");
		var elementTR_07 = document.createElement("tr");
		var elementTR_08 = document.createElement("tr");

		var elementTD_01a = document.createElement("td");
		elementTD_01a.setAttribute("class", "label");
		
		var elementTD_02a = document.createElement("td");
		elementTD_02a.setAttribute("class", "label");
		
		var elementTD_03a = document.createElement("td");
		elementTD_03a.setAttribute("class", "label");
		
		var elementTD_04a = document.createElement("td");
		elementTD_04a.setAttribute("class", "label");
		
		var elementTD_05a = document.createElement("td");
		elementTD_05a.setAttribute("class", "label");
		
		var elementTD_06a = document.createElement("td");
		elementTD_06a.setAttribute("class", "label");
		
		var elementTD_07a = document.createElement("td");
		elementTD_07a.setAttribute("class", "label");
		
		var elementTD_08a = document.createElement("td");
		elementTD_08a.setAttribute("class", "label");
		
		var elementTD_01b = document.createElement("td");
		var elementTD_02b = document.createElement("td");
		var elementTD_03b = document.createElement("td");
		var elementTD_04b = document.createElement("td");
		var elementTD_05b = document.createElement("td");
		var elementTD_06b = document.createElement("td");
		var elementTD_07b = document.createElement("td");
		var elementTD_08b = document.createElement("td");
		
		// create headline elements
		var elementH1 = document.createElement("h1");
		var elementH1_02 = document.createElement("h1");
		
		// create other elements
		var elementHR_01 = document.createElement("hr");
		if (iebrowser > -1) {
			elementHR_01.style.setAttribute("position", "relative");
			elementHR_01.style.setAttribute("float", "left");
			elementHR_01.style.setAttribute("width", "300px");
			elementHR_01.style.setAttribute("margin", "10px");
			elementHR_01.style.setAttribute("border", "none 0");
			elementHR_01.style.setAttribute("borderTop", "1px dashed #fff");
			elementHR_01.style.setAttribute("height", "1px");
		}
		
		// render <ship_details> content
		
		// render background div
		content.appendChild(nodeBackground);
		
		// render image div
		nodeBackground.appendChild(nodeDIVimages);
		
			// render image content
			if (thumb01 != 'none') {
				nodeDIVimages.appendChild(nodeLink_01);
				nodeLink_01.appendChild(nodeImg_01);
			}
			if (thumb02 != 'none') {
				nodeDIVimages.appendChild(nodeLink_02);
				nodeLink_02.appendChild(nodeImg_02);
			}
			if (thumb03 != 'none') {
				nodeDIVimages.appendChild(nodeLink_03);
				nodeLink_03.appendChild(nodeImg_03);
			}
			if (thumb04 != 'none') {
				nodeDIVimages.appendChild(nodeLink_04);
				nodeLink_04.appendChild(nodeImg_04);
			}
		
		// render text div
		nodeBackground.appendChild(nodeDIVtext);
		
			// render text content
			nodeDIVtext.appendChild(elementH1);
			elementH1.appendChild(textName);
			
			// render table
			nodeDIVtext.appendChild(elementTable);
			elementTable.appendChild(elementTableBody);
			
			// render line 1
			elementTableBody.appendChild(elementTR_01);
				// render coloumn 1
				elementTR_01.appendChild(elementTD_01a);
				elementTD_01a.appendChild(labelClass);
				// render coloumn 2
				elementTR_01.appendChild(elementTD_01b);
				elementTD_01b.appendChild(textClass);
			
			// render line 2
			elementTableBody.appendChild(elementTR_02);
				// render coloumn 1
				elementTR_02.appendChild(elementTD_02a);
				elementTD_02a.appendChild(labelConstruction);
				// render coloumn 2
				elementTR_02.appendChild(elementTD_02b);
				elementTD_02b.appendChild(textConstruction);
			
			// render line 3
			elementTableBody.appendChild(elementTR_03);
				// render coloumn 1
				elementTR_03.appendChild(elementTD_03a);
				elementTD_03a.appendChild(labelBuild);
				// render coloumn 2
				elementTR_03.appendChild(elementTD_03b);
				elementTD_03b.appendChild(textBuild);
			
			// render line 4
			elementTableBody.appendChild(elementTR_04);
				// render coloumn 1
				elementTR_04.appendChild(elementTD_04a);
				elementTD_04a.appendChild(labelLength);
				// render coloumn 2
				elementTR_04.appendChild(elementTD_04b);
				elementTD_04b.appendChild(textLength);
			
			// render line 5
			elementTableBody.appendChild(elementTR_05);
				// render coloumn 1
				elementTR_05.appendChild(elementTD_05a);
				elementTD_05a.appendChild(labelBreadth);
				// render coloumn 2
				elementTR_05.appendChild(elementTD_05b);
				elementTD_05b.appendChild(textBreadth);
			
			// render line 6
			elementTableBody.appendChild(elementTR_06);
				// render coloumn 1
				elementTR_06.appendChild(elementTD_06a);
				elementTD_06a.appendChild(labelDepth);
				// render coloumn 2
				elementTR_06.appendChild(elementTD_06b);
				elementTD_06b.appendChild(textDepth);
			
			// render line 7
			elementTableBody.appendChild(elementTR_07);
				// render coloumn 1
				elementTR_07.appendChild(elementTD_07a);
				elementTD_07a.appendChild(labelTonnage);
				// render coloumn 2
				elementTR_07.appendChild(elementTD_07b);
				elementTD_07b.appendChild(textTonnage);
			
			// render line 8
			elementTableBody.appendChild(elementTR_08);
				// render coloumn 1
				elementTR_08.appendChild(elementTD_08a);
				elementTD_08a.appendChild(labelSpeed);
				// render coloumn 2
				elementTR_08.appendChild(elementTD_08b);
				elementTD_08b.appendChild(textSpeed);
				
			// render handle div
			nodeBackground.appendChild(nodeDIVhandle);
				//render link
				nodeDIVhandle.appendChild(nodeLink_00);
				nodeLink_00.appendChild(nodeImg_00);
				
		// render download content
		nodeDIVtext.appendChild(elementHR_01);
		
		nodeDIVtext.appendChild(elementH1_02);
			elementH1_02.appendChild(textHeadline_02);
			
		nodeDIVtext.appendChild(nodeParagraph_01);
		
			nodeParagraph_01.appendChild(nodeImg_05);
			nodeParagraph_01.appendChild(nodeDownload_01);
				nodeDownload_01.appendChild(textDownload_01);
			
			nodeParagraph_01.appendChild(nodeBR_01);
			
			nodeParagraph_01.appendChild(nodeImg_06);
			nodeParagraph_01.appendChild(nodeDownload_02);
				nodeDownload_02.appendChild(textDownload_02);
	}
	
	
	// loop through <reference> elements, and add each nested element
	for (var iiii=0; iiii<reference.length; iiii+=1){
		// get position
		if (getElementTextNS("", "mapMode", reference[iiii], 0) == 'coordinates') {
			var pixel = calculatePosition(getElementTextNS("", "latitude", reference[iiii], 0), getElementTextNS("", "longitude", reference[iiii], 0));
			var posX = pixel[0];
			var posY = pixel[1];
			posX = posX - 5;
			posY = posY - 5;
		} else {
			var posX = getElementTextNS("", "mapX", reference[iiii], 0);
			var posY = getElementTextNS("", "mapY", reference[iiii], 0);
		}
		var overviewLeft = Math.round(posY / (parseInt(Element.getStyle('map_large', 'width')) / parseInt(Element.getStyle('map_small', 'width'))) - 1);
		var overviewTop = Math.round(posX / (parseInt(Element.getStyle('map_large', 'height')) / parseInt(Element.getStyle('map_small', 'height'))) - 1);
		
		// create overview elements
		var overviewImage = document.createElement("img");
		overviewImage.setAttribute("src", "images/icon_overview_headquater.gif");
		overviewImage.setAttribute("width", "2");
		overviewImage.setAttribute("height", "2");
		overviewImage.setAttribute("alt", "");
		if (iebrowser > -1) {
			overviewImage.style.setAttribute("position", "absolute");
			overviewImage.style.setAttribute("width", "2px");
			overviewImage.style.setAttribute("height", "2px");
			overviewImage.style.setAttribute("border", "none 0");
			overviewImage.style.setAttribute("top", overviewTop + "px");
			overviewImage.style.setAttribute("left", overviewLeft + "px");
		} else {
			overviewImage.style.top = overviewTop + 'px';
			overviewImage.style.left = overviewLeft + 'px';
		}
		
		var overviewMap = document.getElementById('map_positions');
		overviewMap.appendChild(overviewImage);
		
		// create parent nodes
		var nodeDT = document.createElement("dt");

		var nodeDD = document.createElement("dd");
		if (iebrowser > -1) {
			nodeDD.style.setAttribute("position", "absolute");
			nodeDD.style.setAttribute("left", "-9999px");
			nodeDD.style.setAttribute("width", "330px");
			nodeDD.style.setAttribute("padding", "4px");
			nodeDD.style.setAttribute("paddingTop", "25px");
			nodeDD.style.setAttribute("color", "#fff");
			nodeDD.style.setAttribute("backgroundRepeat", "repeat");
			nodeDD.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/bg_tooltip.png',sizingMethod='crop')");
			nodeDD.style.setAttribute("zIndex", "11");
		}

		var nodeParagraph = document.createElement("p");
		if (iebrowser > -1) {
			nodeParagraph.style.setAttribute("position", "relative");
			nodeParagraph.style.setAttribute("float", "left");
			nodeParagraph.style.setAttribute("width", "300px");
			nodeParagraph.style.setAttribute("border", "none 0");
			nodeParagraph.style.setAttribute("margin", "5px");
		}

		var elementH1 = document.createElement("h1");
		if (iebrowser > -1) {
			elementH1.style.setAttribute("position", "relative");
			elementH1.style.setAttribute("float", "left");
			elementH1.style.setAttribute("width", "300px");
			elementH1.style.setAttribute("margin", "0px 5px 0px 5px");
		}
		
		var elementBR_01 = document.createElement("br");
		var elementBR_02 = document.createElement("br");
		
		var elementB = document.createElement("b");

		// create content elements
		var textTitle = document.createTextNode("reference customer: ");
		var textName = document.createTextNode(getElementTextNS("", "name", reference[iiii], 0));
		var textCity = document.createTextNode(getElementTextNS("", "city", reference[iiii], 0));
		var textCountry = document.createTextNode(" (" + getElementTextNS("", "country", reference[iiii], 0) + ")");

		var nodeDT_link = document.createElement("a");
		nodeDT_link.setAttribute("href", "http://www.nippondesign.co.jp/");
		nodeDT_link.setAttribute("target", "_blank");
//		nodeDT_link.onmouseover = new Function("showTooltip(this);");
//		nodeDT_link.onmouseout = new Function("hideTooltip(this);");
//		nodeDT_link.onmousedown = new Function("switchMenu('menu_main_04'); openContent('content_references_bg');");
		nodeDT_link.onfocus = new Function("if(this.blur()){this.blur();}");
		nodeDT_link.setAttribute("class", "location_reference");
		nodeDT_link.setAttribute("id", "location" + getElementTextNS("", "id", reference[iiii], 0));
		if (iebrowser > -1) {
			nodeDT_link.style.setAttribute("display", "block");
			nodeDT_link.style.setAttribute("position", "absolute");
			nodeDT_link.style.setAttribute("textIndent", "-9999px");
			nodeDT_link.style.setAttribute("width", "280px");
			nodeDT_link.style.setAttribute("height", "72px");
			nodeDT_link.style.setAttribute("color", "#333");
			nodeDT_link.style.setAttribute("cursor", "pointer");
			nodeDT_link.style.setAttribute("zIndex", "10");
			nodeDT_link.style.setAttribute("textDecoration", "none");
			nodeDT_link.style.setAttribute("outline", "none");
			nodeDT_link.style.setAttribute("zIndex", "10");
			nodeDT_link.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/icon_reference.png',sizingMethod='crop')");
			// position of icon
			nodeDT_link.style.setAttribute("top", posX + 'px');
			nodeDT_link.style.setAttribute("left", posY + 'px');
		} else {
			nodeDT_link.style.top = posX + 'px';
			nodeDT_link.style.left = posY + 'px';
		}


		var nodeDT_link_text = document.createTextNode(getElementTextNS("", "name", reference[iiii], 0));

		// create other elements
		var elementHR = document.createElement("hr");
		if (iebrowser > -1) {
			elementHR.style.setAttribute("position", "relative");
			elementHR.style.setAttribute("float", "left");
			elementHR.style.setAttribute("width", "290px");
			elementHR.style.setAttribute("margin", "10px");
			elementHR.style.setAttribute("border", "none 0");
			elementHR.style.setAttribute("borderTop", "1px dashed #fff");
			elementHR.style.setAttribute("height", "1px");
		}

		// render <reference> content

		// render link
		nodeDL.appendChild(nodeDT);

			// render link content
			nodeDT.appendChild(nodeDT_link);
			nodeDT_link.appendChild(nodeDT_link_text);

		// render content
		nodeDL.appendChild(nodeDD);
		
			// render headline
			nodeDD.appendChild(elementH1);
			elementH1.appendChild(textTitle);

			// render first paragraph
			nodeDD.appendChild(nodeParagraph);

				// render first paragraph content
				nodeParagraph.appendChild(elementB);
					elementB.appendChild(textName);
					
				nodeParagraph.appendChild(elementBR_01);
				nodeParagraph.appendChild(textCity);
				nodeParagraph.appendChild(textCountry);
				
			// render line
			nodeDD.appendChild(elementHR);
	}
	
	// loop through <bonus> elements, and add each nested element
	for (var iiiii=0; iiiii<bonus.length; iiiii+=1){
		// get position
		if (getElementTextNS("", "mapMode", bonus[iiiii], 0) == 'coordinates') {
			var pixel = calculatePosition(getElementTextNS("", "latitude", bonus[iiiii], 0), getElementTextNS("", "longitude", bonus[iiiii], 0));
			var posX = pixel[0];
			var posY = pixel[1];
			posX = posX - 11;
			posY = posY - 11;
		} else {
			var posX = getElementTextNS("", "mapX", bonus[iiiii], 0);
			var posY = getElementTextNS("", "mapY", bonus[iiiii], 0);
		}

		// create parent nodes
		var nodeDT = document.createElement("dt");

		var nodeDD = document.createElement("dd");
		if (iebrowser > -1) {
			nodeDD.style.setAttribute("position", "absolute");
			nodeDD.style.setAttribute("left", "-9999px");
			nodeDD.style.setAttribute("width", "330px");
			nodeDD.style.setAttribute("padding", "4px");
			nodeDD.style.setAttribute("paddingTop", "25px");
			nodeDD.style.setAttribute("color", "#fff");
			nodeDD.style.setAttribute("backgroundRepeat", "repeat");
			nodeDD.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/bg_tooltip.png',sizingMethod='crop')");
			nodeDD.style.setAttribute("zIndex", "11");
		}

		var elementH1_01 = document.createElement("h1");
		if (iebrowser > -1) {
			elementH1_01.style.setAttribute("position", "relative");
			elementH1_01.style.setAttribute("float", "left");
			elementH1_01.style.setAttribute("width", "300px");
			elementH1_01.style.setAttribute("margin", "0px 5px 0px 5px");
		}

		// create content elements
		var textHeadline = document.createTextNode(getElementTextNS("", "headline", bonus[iiiii], 0));
		var textText =  document.createTextNode(getElementTextNS("", "text", bonus[iiiii], 0));

		var nodeDT_link = document.createElement("a");
		nodeDT_link.setAttribute("href", "javascript:historyManager('bonus', 'Easter Egg');");
		nodeDT_link.onmouseover = new Function("showTooltip(this);");
		nodeDT_link.onmouseout = new Function("hideTooltip(this);");
		nodeDT_link.onfocus = new Function("if(this.blur()){this.blur();}");
		nodeDT_link.setAttribute("class", "location_bonus");
		nodeDT_link.setAttribute("id", "location_bonus_" + getElementTextNS("", "id", bonus[iiiii], 0));
		if (iebrowser > -1) {
			nodeDT_link.style.setAttribute("display", "block");
			nodeDT_link.style.setAttribute("position", "absolute");
			nodeDT_link.style.setAttribute("textIndent", "-9999px");
			nodeDT_link.style.setAttribute("width", "22px");
			nodeDT_link.style.setAttribute("height", "22px");
			nodeDT_link.style.setAttribute("color", "#333");
			nodeDT_link.style.setAttribute("cursor", "pointer");
			nodeDT_link.style.setAttribute("zIndex", "10");
			nodeDT_link.style.setAttribute("textDecoration", "none");
			nodeDT_link.style.setAttribute("outline", "none");
			nodeDT_link.style.setAttribute("zIndex", "10");
			nodeDT_link.style.setAttribute("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/icon_monster.png',sizingMethod='crop')");
			// position of icon
			nodeDT_link.style.setAttribute("top", posX + 'px');
			nodeDT_link.style.setAttribute("left", posY + 'px');
		} else {
			nodeDT_link.style.top = posX + 'px';
			nodeDT_link.style.left = posY + 'px';
		}

		var nodeDT_link_text = document.createTextNode("Hidden Map");

		var nodeParagraph_01 = document.createElement("p");
		if (iebrowser > -1) {
			nodeParagraph_01.style.setAttribute("position", "relative");
			nodeParagraph_01.style.setAttribute("float", "left");
			nodeParagraph_01.style.setAttribute("width", "300px");
			nodeParagraph_01.style.setAttribute("border", "none 0");
			nodeParagraph_01.style.setAttribute("margin", "5px");
		}

		// create other elements
		var elementHR_01 = document.createElement("hr");
		if (iebrowser > -1) {
			elementHR_01.style.setAttribute("position", "relative");
			elementHR_01.style.setAttribute("float", "left");
			elementHR_01.style.setAttribute("width", "300px");
			elementHR_01.style.setAttribute("margin", "10px");
			elementHR_01.style.setAttribute("border", "none 0");
			elementHR_01.style.setAttribute("borderTop", "1px dashed #fff");
			elementHR_01.style.setAttribute("height", "1px");
		}

		// render <bonus> content

		// render link
		nodeDL.appendChild(nodeDT);

			// render link content
			nodeDT.appendChild(nodeDT_link);
			nodeDT_link.appendChild(nodeDT_link_text);

		// render content
		nodeDL.appendChild(nodeDD);

			// render headline
			nodeDD.appendChild(elementH1_01);

				// render headline content
				elementH1_01.appendChild(textHeadline);

			// render first paragraph
			nodeDD.appendChild(nodeParagraph_01);

				// render first paragraph content
				nodeParagraph_01.appendChild(textText);

			// render line
			nodeDD.appendChild(elementHR_01);
	}
}

// retrieve XML document
function loadXMLDoc(url, targetID) {
//alert('loadXML06'+url);
	// set global var
	target = targetID;
			
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
//alert('loadXML06_01');
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
//alert('loadXML06_02');
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
//alert('loadXML06_03');
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
//alert('loadXML06_04');
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
//alert('loadXML06_05');
        }
//alert('loadXML06_06');
    }
}

// handle onreadystatechange event of req object
function processReqChange() {
//alert('loadXML07');
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            clearXMLContent();
            buildXMLContent();
			resetLightbox();
         } else {
            //alert("There was a problem retrieving the XML data:\n" + req.statusText);
         }
    }
}