var g_currenttabArray = new Array (1,1);		// Initialize array of active tabs (2 tables)/*	---- variant for only one tabbed table:var g_currenttabArray = new Array(1);g_currenttabArray[0] = 1;*//** * Switch the table tabs to the target tab number specified. * @param (Integer) number of the tabbed table used * @param {Integer} target Number of tab to switch to. * @author Hans-Peter Kuessner, SP Integration GmbH, www.sp-integration.de */function spiSwitchTab(tablenumber, target){	var elm_currencontent = $("tabcontent"+tablenumber+"_"+g_currenttabArray[tablenumber-1]);	var elm_targetcontent = $("tabcontent"+tablenumber+"_"+target);	var elm_currenttab = $("tab"+tablenumber+"_"+g_currenttabArray[tablenumber-1]);	var elm_targettab = $("tab"+tablenumber+"_"+target);	if (elm_currencontent && elm_targetcontent && elm_currenttab && elm_targettab)	{		elm_currencontent.style.display = "none";		elm_targetcontent.style.display = "block";		elm_currenttab.className = "inactive";		elm_targettab.className = "active";		elm_currenttab.blur();		g_currenttabArray[tablenumber-1] = target;				fetchTabContent (tablenumber, target);	}}function fetchTabContent (tablenumber, tabnumber) {	var strSetTabParameters = "var tablenumber = " + tablenumber + "; var tabnumber =" + tabnumber;	var arrayName = "Tab" + tablenumber + "URLs";	var URLarray = eval (arrayName);	var dateNow = new Date();	new Ajax.Request(		URLarray[tabnumber-1]+"&time=" + dateNow.getTime(),				// add unique element to URL to prevent caching   		{     method:'get',			requestHeaders:['cache-control','no-cache', 'Pragma','no-cache'],     			onSuccess: 				function(transport){   					try {    						eval (strSetTabParameters);			// set tablenumber and tabnumber, to know about the target for this AJAX response						var response = transport.responseText || "no response text";						if (response.blank()) {		// no response contents = no feed contents at all							strHTML = "(nothing found)";						} else {									     		var objView= transport.responseXML.documentElement;							if (! objView) {								showfetchTabContentError (tablenumber, tabnumber, "Access to objView failed", response);								return;							}							if (objView.tagName != "viewentries") {								showfetchTabContentError (tablenumber, tabnumber, "Response from server is no view", response);								return;							}														var objViewAttributes = objView.attributes;							if (! objViewAttributes) {								$("tabcontent"+tablenumber+"_"+tabnumber).innerHTML = "(nothing found)";								return;		// no attributes --> empty view							}							var objTopLevelEntries = objViewAttributes.getNamedItem("toplevelentries");							if (! objTopLevelEntries) {								$("tabcontent"+tablenumber+"_"+tabnumber).innerHTML = "(nothing found)";								return;		// no attributes --> empty view							}														var totalCount = parseInt(objTopLevelEntries.value);							if (! totalCount) {								showfetchTabContentError (tablenumber, tabnumber, "Access to totalCount failed", response);								return;							}							var objViewEntries = objView.getElementsByTagName("viewentry");							if (! objViewEntries) {								showfetchTabContentError (tablenumber, tabnumber, "Access to objViewEntries failed", response);								return;							}							var count = objViewEntries.length;							var strHTML = ""; 							for (var row=0; row<count;row++) {								var objEntry = objViewEntries[row];								if (! objEntry) {									showfetchTabContentError (tablenumber, tabnumber, "Access to objEntry failed", response);									return;								}								var objColumns = objEntry.getElementsByTagName("entrydata");								strHTML +="<p>" ;								strHTML += "<span class=\"homepagefeedfirstline\">" + decodeURIComponent(fetchColumnText(objColumns,1)) + "</span>";								strHTML+="<br>";								var strCol2 = truncateToWords(decodeURIComponent(fetchColumnText(objColumns,2)), 160);								var strCol3URL = fetchColumnText(objColumns,3);								var strCol4Target = fetchColumnText(objColumns,4);								var target = "";								if (strCol3URL != "") {			// there is a URL									if (getFeedTarget(tablenumber, tabnumber) == "append to URL") {										if (strCol4Target != "") {			// document requests to be opened in another frame, ignore append to URL											target = strCol4Target;		// the specified target											strURL = strCol3URL;		// open just the specified URL										} else {			// append to URL of page											target = "_self";											strURL = getFeedPageURL (tablenumber, tabnumber) + "?open&targeturl=" + strCol3URL;										}									} else {										var target = getFeedTarget(tablenumber, tabnumber);										strURL = strCol3URL;									}									strHTML += " <span class=\"homepagefeedsecondline\"><a target=\"" + target + "\" href=\"" +strURL + "\">" + strCol2 + "</a></span>";								} else {									strHTML +="<span class=\"homepagefeedsecondline\">" + strCol2 + "</span>";								}								strHTML += "</p>";							} // next row							if (totalCount > count) {			// more news avaliable, show link								var strMoreLinkText = eval ("Tab" + tablenumber + "MoreLinkText");								strHTML += "<a href=\"" + getFeedPageURL (tablenumber, tabnumber) + "\" target=\"_self\">" + strMoreLinkText + "</a>"							}						}						$("tabcontent"+tablenumber+"_"+tabnumber).innerHTML = strHTML;					} catch (e) {						window.status=e;						// alert (e);					}				},     			onFailure: 				function(){ 					eval (strSetTabParameters);			// set tablenumber and tabnumber, to know about the target for this AJAX response					var arrayName = "Tab" + tablenumber + "URLs";					var URLarray = eval (arrayName);					showfetchTabContentError (tablenumber, tabnumber, "Error processing URL " +URLarray[tabnumber-1], "" );				} 		}	); }function fetchColumnText (objColumns, colNumber) {	try {		if (objColumns.length < colNumber+1) {			return ("");				// no column with this number		} else {			var objColumn = objColumns[colNumber];			var objTextList = objColumn.getElementsByTagName("textlist")			if (objTextList.length > 0) {				var objText = objTextList[0].getElementsByTagName("text");				return (objText[0].nodeValue || "")		// return "" if no value set (null in firefox)			} else {				var objText = objColumn.getElementsByTagName("text");				return (objText[0].firstChild.nodeValue);				// only first entry if a list			}		}	} catch (e) {		window.status = e.description;		// alert (e);		return ("");	}}function showfetchTabContentError (tablenumber, tabnumber, strErrorMessage, response) {	var strHTML = strErrorMessage;	if (response) {		strHTML += "<br><br>Response:<br>" + response;	}	$("tabcontent"+tablenumber+"_"+tabnumber).innerHTML = strHTML;}function getFeedPageURL (tablenumber, tabnumber) {	var array = eval ("Tab" + tablenumber + "PageURLs");	return array [tabnumber-1];}function getFeedTarget (tablenumber, tabnumber) {	var array = eval ("Tab" + tablenumber + "Targets");	return array [tabnumber-1];}/*--- truncateToWords --- */function truncateToWords (strInput, intMax) {	if (strInput.length <= intMax) {		return (strInput);	}	var intPos = intMax-4;	while ((intPos >= 0) && (strInput.charAt(intPos) != " ")) {	// find first blank starting from end		intPos--;	} 	if (intPos <= 5) {		// if the second word is toooooo long		return (strInput.substr(0,intMax-3) + "...");	} else {		return (strInput.substr(0, intPos) + "...");	}}