var /*HashMap*/ ms_foldingtable_elementsLoaded = new Object();

var /*HashMap*/ ms_foldingtable_maxSize = new Object();
var /*HashMap*/ ms_foldingtable_tdimage = new Object();
var /*HashMap*/ ms_foldingtable_tdclass = new Object();
var /*HashMap*/ ActiveBigID = new Object();
var /*HashMap*/ ActiveID = new Object();

function /*void*/ ms_foldingtable_handleRequest(status, data, param, type, statusmsg) {

	if(status == AJAXConnector.SUCCID_LOAD && type == AJAXConnector.RESPONSE_XML) {
		ms_foldingtable_printEntry(param, data);
	}
}

function /*void*/ ms_foldingtable_toggleTableEntry(/*Event*/ event) {
	// IE saves events within the window object
	if (!event) event = window.event;
	// IE saves the target for this event on different position
	elem = (event.target) ? event.target : event.srcElement;

	// Resolve the correct node, because the user may
	// click on the div, the p, the a or span tag.
	if (elem.nodeName && elem.nodeName.toLowerCase() == "p") {
		elem = elem.parentNode;
	} else if (elem.nodeName && elem.nodeName.toLowerCase() != "div") {
		elem = elem.parentNode.parentNode;
	}

	// Get values
	var /*String[]*/ values = elem.id.split("@");
	var /*String*/ elementId = values[0];
	var /*String*/ handle = values[1];
	ms_foldingtable_loadEntryData(elementId, handle);
	ms_foldingtable_doToggle(elementId);
}

function /*void*/ ms_foldingtable_loadEntryData(/*String*/ elementId, /*String*/ handle) {
	// Return, if no handle was given
	if (!handle || handle == "") {
		return;

	}

	// Process Ajax, if element has not been loaded yet
	if (ms_foldingtable_elementsLoaded[elementId] == undefined) {
		var /*AJAXConnector*/ ajaxConnector = new AJAXConnector( );
		// Send Ajax request
		ajaxConnector.registerDataHandler(ms_foldingtable_handleRequest);
		ajaxConnector.setMaxRequestTime(5000);
		ajaxConnector.sendRequest(handle + ".ajax.xml", "", AJAXConnector.REQUEST_GET, elementId);
	}
}

function /*void*/ ms_foldingtable_printEntry(/*String*/ elementId, /*String*/ data) {

	var /*FoldingtableEntryBean*/ bean = new FoldingtableEntryBean();
	bean.readData(data);

	// Print to Layer
	ms_foldingtable_elementsLoaded[elementId] = "true";
	if (getLayer(elementId) != undefined) {
		// Start building Content
		var content ="";
		content = '<div class="ms-tb3-row-content-2">';
		content +='<div class="ms-component-copyimgsys" >';
		content +='<div class="ms-component-copyimgsys-f-left">';
		if (bean.copytextText != undefined) {
			content +='<div class="ms-text ms-tx1">';
			content +='<p>'+bean.copytextText+'</p>';
			content +='</div>';
		}
		if (bean.bulletitemsitems!= undefined && bean.bulletitemsitems.length > 0) {
			content +='<ul class="ms-en1">';
			for (var i = 0; i < bean.bulletitemsitems.length; i++) {
				content +='<li>'+bean.bulletitemsitems[i]+'</li>';
			}
			content +='</ul>';
		}

		//linklist
		if (bean.links!= undefined &&  bean.links.length > 0) {
			content +='<ul class="ms-linklist-typ-1f" >';
			for (var i = 0; i < bean.links.length; i++) {
				// Append Content
				content += '<li>';
				if (bean.links[i][FoldingtableEntryBean.REFERENCE_TAG + "_href"] != undefined) {
					content += '<a href="'
						+ bean.links[i][FoldingtableEntryBean.REFERENCE_TAG + "_href"]
						+ '"';
					if (bean.links[i][FoldingtableEntryBean.REFERENCE_TAG + "_onclick"] != undefined) {
						content += ' onclick="'
							+ bean.links[i][FoldingtableEntryBean.REFERENCE_TAG + "_onclick"]
							+ '">';
					}

					content += bean.links[i][FoldingtableEntryBean.REFERENCE_TAG + "_text"]
						+ '</a>';
				}

				content += '</li>';
			}
			content +='</ul>';
		}

		//download
		if (bean.downloads!= undefined && bean.downloads.length > 0) {
			content +='<ul class="ms-ll3 ms-link-download">';
			for (var i = 0; i < bean.downloads.length; i++) {
				// Append Content
				content += '<li>';
				if (bean.downloads[i][FoldingtableEntryBean.REFERENCE_TAG + "_href"] != undefined) {
					content += '<a href="'
						+ bean.downloads[i][FoldingtableEntryBean.REFERENCE_TAG + "_href"]
						+ '"';
					if (bean.downloads[i][FoldingtableEntryBean.REFERENCE_TAG + "_onclick"] != undefined) {
						content += ' onclick="'
							+ bean.downloads[i][FoldingtableEntryBean.REFERENCE_TAG + "_onclick"]
							+ '"';
					}

					content += '>';
					content += bean.downloads[i][FoldingtableEntryBean.REFERENCE_TAG + "_text"];
					content += '</a>';
				}

				content += '</li>';
			}
			content +='</ul>';
		}

		content +='</div>'; //Ende Div ms-component-copyimgsys-f-left
		content +='<div class="ms-component-copyimgsys-f-right">';

		if (bean.imageTextBlock != undefined) {
			ms_foldingtable_maxSize[elementId] = bean.imageTextBlock.length;
			if (ms_foldingtable_maxSize[elementId]  > 0) {
				for (var i = 0; i <ms_foldingtable_maxSize[elementId] ; i++) {
					var src="";
					var alt="";
					var title="";
					var hrefBig="";
					var altBig="";
					var textPar="";
					var scaletext="";
					var meintest="";
					//klein Image
					if (bean.imageTextBlock[i][FoldingtableEntryBean.IMAGE_TAG + "_src"] != undefined
							|| bean.imageTextBlock[i][FoldingtableEntryBean.ISFLASH] != undefined) {
						src=bean.imageTextBlock[i][FoldingtableEntryBean.IMAGE_TAG + "_src"];
						if (bean.imageTextBlock[i][FoldingtableEntryBean.IMAGE_TAG + "_alt"] != undefined) {
							alt=bean.imageTextBlock[i][FoldingtableEntryBean.IMAGE_TAG + "_alt"]
						}
						if (bean.imageTextBlock[i][FoldingtableEntryBean.IMAGE_TAG + "_title"] != undefined) {
							title=bean.imageTextBlock[i][FoldingtableEntryBean.IMAGE_TAG + "_title"];
						}

						content +='<p class="ms-image ms-me3" id="medienelementImage'+i+elementId+'" style="' + (i ? "display:none;" : "") +'">';
						if(!bean.imageTextBlock[i][FoldingtableEntryBean.ISFLASH]){
							content +='<img src="'+src+ '" alt="'+alt+'" title="'+title+'"/>';
						}else {
							//use timeout !!!
							var flashParams=bean.imageTextBlock[i]["flashParams"];
							meintest=flashParams;
							content += insertFlash(flashParams["src"], flashParams["width"], flashParams["height"], flashParams["wmode"], flashParams["scale"], flashParams["stop"], flashParams["clsid"], flashParams["codebase"], "", "", "", "", "", true);
						}
						content += '</p>';
					}

					//big Image
					if (bean.imageTextBlock[i][FoldingtableEntryBean.IMAGEBIG_TAG + "_href"] != undefined) {
						hrefBig=bean.imageTextBlock[i][FoldingtableEntryBean.IMAGEBIG_TAG + "_href"];
						if (bean.imageTextBlock[i][FoldingtableEntryBean.IMAGEBIG_TAG + "_alt"] != undefined) {
							altBig=bean.imageTextBlock[i][FoldingtableEntryBean.IMAGEBIG_TAG + "_alt"];
						}
						textPar=bean.imageTextBlock[i][FoldingtableEntryBean.TEXT + "_text"];

						scaletext=bean.imageTextBlock[i][FoldingtableEntryBean.SCALE+ "_scale"];
						var flashParams11 = bean.imageTextBlock[i]["flashParamsbig"];
						if(hrefBig!=""){
							content += '<p class="ms-link-enlarge" id="bigImageIcon'+i+elementId+'" style="' + (i ? "display:none;" : "") +'"><a href="javascript:bigImage(\''+elementId+'\', ActiveID[\''+elementId+'\'],true);">'+scaletext+'</a></p>';
						}
						else if(flashParams11!= undefined){
							content += '<p class="ms-link-enlarge" id="bigImageIcon'+i+elementId+'" style="' + (i ? "display:none;" : "") +'"><a href="javascript:bigImage(\''+elementId+'\', ActiveID[\''+elementId+'\'],true);">'+scaletext+'</a></p>';
						}
						content +='<div class="ms-modallayer" id="medienelementBigImage'+i+elementId+'" style="display: none;">';
							content +='<div class="ms-modallayer-t">';
								content +='<div class="ms-modallayer-t-c">';
									content +='<p class="ms-btn6">';
									content +='<a href="javascript:bigImage(\''+elementId+'\',-2, true);">Close</a>'
									content +='</p>';
								content +='</div>';
							content +='</div>';
							content +='<div class="ms-modallayer-m">';
								content +='<div class="ms-modallayer-m-c">';
								content +='<p id="medienelementBigImage'+i+elementId+'Flash">';
								if(!bean.imageTextBlock[i][FoldingtableEntryBean.ISFLASHBIG]){
									content +='<img src="'+hrefBig+'" alt="'+altBig+'"/>';
								}else{
									//use timeout !!!
									var flashParams = bean.imageTextBlock[i]["flashParamsbig"];
									content += insertFlash(flashParams["src"], flashParams["width"], flashParams["height"], flashParams["wmode"], flashParams["scale"], flashParams["stop"], flashParams["clsid"], flashParams["codebase"], "", "", "", "", "", true);
								}
								content +='</p>';
								content +='</div>';
							content +='</div>';
							content +='<div class="ms-modallayer-b">';
								content +='<div class="ms-modallayer-b-c">';
									content +='<div class="ms-modallayer-b-c-2">';
									content +='<p class="ms-text ms-tx3">';
									if (bean.imageTextBlock[i].paragraphBulletitems!= undefined && bean.imageTextBlock[i].paragraphBulletitems.length > 0) {
									for (var c = 0; c < bean.imageTextBlock[i].paragraphBulletitems.length; c++) {
											if(bean.imageTextBlock[i].paragraphBulletitems[c]!= undefined ){
											content +=bean.imageTextBlock[i].paragraphBulletitems[c]+'<br />';
											}
										}

									}
									content +='</p>';
									if (ms_foldingtable_maxSize[elementId] > 1) {
									//imageChange
										content +='<ul class="ms-agc">';
										content +='<li class="ms-first-li">';
										content +='<a href="javascript:bigImage(\''+elementId+'\', -1);"></a>';
										for (var j = 0; j < bean.imageTextBlock.length; j++) {
											content +='<li><a href="javascript:bigImage(\''+elementId+'\', '+j+', true);"></a></li>';
										}
										content +='<li class="ms-last-li"><a href="javascript:bigImage(\''+elementId+'\', 1);"></a></li>';
										content +='</ul>';
									}
									content +='</div>';
									content +='<div class="ms-clearer"/>';
								content +='</div>';
							content +='</div>';
						content +='</div>';
						content +='</div>';
					}
				}
			}
			//imageChange

			if (ms_foldingtable_maxSize[elementId] > 1) {
				content +='<ul class="ms-agc">';

				content +='<li class="ms-first-li">';
				content +='<a href="javascript:imageChange(\''+elementId+'\',-1)"></a></li>';
				for (var i = 0; i < ms_foldingtable_maxSize[elementId]; i++) {
					var ms_strIconActive = i ? "" : " class=\"ms-active\"";
					content +='<li' + ms_strIconActive + '><a href="javascript:imageChange(\''+elementId+'\', '+i+', true);"></a></li>';
				}
				content +='<li class="ms-last-li"><a href="javascript:imageChange(\''+elementId+'\', 1);"></a></li>';
				content +='</ul>';
			}
		}
		content +='<div class="ms-clearer"></div>';
		content +='</div>';//ms-component-copyimgsys
		content +='</div>';//ms-tb3-row-content-2

		var div = getLayer(elementId);
		div.innerHTML = content;
	}



	ActiveID;
	ActiveBigID;
	//imageChange(elementId, 0);
	//bigImage(elementId , -2, "true");
	isID;
}

function /*void*/ ms_foldingtable_doToggle(/*String*/ elementId) {
	if (getLayer(elementId + "TR")) {
		if (getLayer(elementId).style.display == "none"){
			var trElement = getLayer(elementId + "TR");

			// inner HTML abspeichern
			ms_foldingtable_tdimage[elementId] = trElement.lastChild.innerHTML;

			// Image TD loeschen
			trElement.removeChild(trElement.lastChild);

			// TD auf colspan 2 stellen
			trElement.firstChild.setAttribute("colSpan", "2");
			ms_foldingtable_tdclass[elementId] = trElement.className;
			trElement.className = "ms-tb3-row-active";
		}
		else if (getLayer(elementId).style.display == "block"){
			var trElement=getLayer(elementId + "TR");

			// TD auf colspan 1 stellen
			trElement.firstChild.removeAttribute("colSpan");
			trElement.className = ms_foldingtable_tdclass[elementId];

			// Altes TD wiederherstellen
			var tdElement = document.createElement("td");
			tdElement.innerHTML = ms_foldingtable_tdimage[elementId];

			// Fuege TD dem TR an
			trElement.appendChild(tdElement);
		}
		}

	if (getLayer(elementId)) {
		var /*String*/ style = getLayer(elementId).style;
		if (style.display == "none") {
			style.display = "block";
		} else if (style.display == "block") {
			style.display = "none";
		}
	}
}
var isID;

function imageChange(elementId, step, isID, skipBigImage) {
	if (step == null) {
		step = 0;
	}
	if (!ActiveID[elementId]) {
		ActiveID[elementId] = 0;
	}

	if (!isID) {
		ActiveID[elementId] += step;
	} else {
		ActiveID[elementId] = step;
	}

	for (var i = 0; i < ms_foldingtable_maxSize[elementId]; i++) {
		var currentId = "medienelementImage" + i + elementId;
		if (getLayer(currentId)) {
			getLayer(currentId).style.display = 'none';
		}

		var bigImageId = "bigImageIcon" + i + elementId;
		if (getLayer(bigImageId)) {
			getLayer(bigImageId).style.display = 'none';
		}
	}

	if (ActiveID[elementId] == ms_foldingtable_maxSize[elementId]) {
		ActiveID[elementId] = 0;
	} else if (ActiveID[elementId]== -1) {
	 	ActiveID[elementId] = ms_foldingtable_maxSize[elementId] - 1;
	}

	var currentId = "medienelementImage" + ActiveID[elementId]+elementId;

	if (ms_foldingtable_maxSize[elementId] > 0) {
		var imgLayer = getLayer(currentId);
		if (imgLayer) {
			imgLayer.style.display = 'block';

			var bigImageId = "bigImageIcon" + ActiveID[elementId] + elementId;
			if (getLayer(bigImageId)) {
				getLayer(bigImageId).style.display = 'inline';
			}
			
			var parentUL = getElement("UL", imgLayer, "ms-agc");
			setActiveIcon(parentUL, ActiveID[elementId]);

			if (!skipBigImage) {
				var currentIdBig = "medienelementBigImage" + ActiveID[elementId] + elementId;
				setActiveIcon(getLayer(currentIdBig), ActiveID[elementId]);

			}
		}
	}
	var counter = ActiveID[elementId] + 1;
}


function setActiveIcon(parent, curStep) {
	if(parent != null) {
		var parent = parent.nodeName == "DIV" ? parent.getElementsByTagName("ul")[0] : parent;
		var ulClass = getClassName(parent);
		if(ulClass == "ms-agc") {
			var arrLinks = parent.getElementsByTagName("li");
			for(var i = 0, k  = 0; i < arrLinks.length; i++) {
				var liClass = getClassName(arrLinks[i]);
				if(liClass == "" || liClass == "ms-active") {
					if(k != curStep) {
						removeClass(arrLinks[i]);
					} else {
						setClass(arrLinks[i], "ms-active");
					}
					k++;
				}
			}
		}
	}
}

function bigImage(elementId, step, isID){
	if(ActiveID[elementId] == undefined) {
		ActiveID[elementId] = 1;
	}
	if (step == null) step = 0;
	if(!isID)
		ActiveBigID[elementId] += step;
	else
		ActiveBigID[elementId] = step;
	for (var i = 0; i < ms_foldingtable_maxSize[elementId]; i++) {
		var currentIdBig = "medienelementBigImage" + i + elementId;
		if(getLayer(currentIdBig)){
			getLayer(currentIdBig).style.display = 'none';
		}
	}
	if (ActiveBigID[elementId] == -2) return;
	if (ActiveBigID[elementId] == ms_foldingtable_maxSize[elementId]) ActiveBigID[elementId] = 0;
	if (ActiveBigID[elementId] == -1) ActiveBigID[elementId] = ms_foldingtable_maxSize[elementId] - 1;

	imageChange(elementId, step, isID, true);

	var currentIdBig = "medienelementBigImage" + ActiveBigID[elementId]+elementId;
	var objLayer = getLayer(currentIdBig);
	// Initial value for border
	var width = 4;
	var height = 4;
	
	// Get height of header and footer of the global layer
	var divs = objLayer.getElementsByTagName("div");
	if (divs && divs.length > 0) {
		// Set visible (IE BUG, does not return correct values of hidden elements)
		objLayer.style.display = 'block';
		height += divs[0].offsetHeight;
		objLayer.style.display = 'none';
	}
	if (divs && divs.length > 4) {
		// Set visible (IE BUG, does not return correct values of hidden elements)
		objLayer.style.display = 'block';
		height += divs[5].offsetHeight;
		objLayer.style.display = 'none';
	}
	
	// Check Flash width
	var object = objLayer.getElementsByTagName("object")[0];
	if (object) {
		height += parseInt(object.height);
		width += parseInt(object.width);
	}
	
	// Check Image width
	var image = objLayer.getElementsByTagName("img")[0];
	if (image) {
		// Set visible (IE BUG, does not return correct values of hidden elements)
		objLayer.style.display = 'block';
		height += parseInt(image.height);
		width += parseInt(image.width);
		objLayer.style.display = 'none';
	}
	
	// Calculate position
	var yOffset = (window.pageYOffset) ? window.pageYOffset : document.documentElement.scrollTop;
	var visibleHeight = (window.innerHeight) ? window.innerHeight : document.documentElement.clientHeight;
	if (visibleHeight < height) {
		visibleHeight = height;
	}
	var topPosition = Math.ceil((visibleHeight - height) / 2) + yOffset;
	var leftPosition = Math.ceil((1000 - width) / 2);
	
	// Set position
	objLayer.style.width = width + "px";
	objLayer.style.left = leftPosition + "px";
	objLayer.style.top = topPosition + "px";

	// Check IFrame resource and change size of IFrame
	try {
		var iframe = objLayer.getElementsByTagName("IFRAME")[0];
		iframe.style.height = (height - 4) + "px";
		iframe.style.width = width + "px";
	} catch (/*Exception*/e) {
		// No IFrame available, just ignore...
	}

	// Set visible
	objLayer.style.display = 'block';

	setActiveIcon(objLayer, ActiveBigID[elementId]);
}


function getElement(elemName, element, className) {
	var tag = element.nextSibling;
	while(tag != null && tag.nodeName != elemName) {
		tag = tag.nextSibling;
	}
	var elemClass = getClassName(tag);
	if(elemClass == className || elemClass.indexOf(" " + className)  || elemClass.indexOf(className + " ")) {
		return tag;
	} else {
		return null;
	}
}

