
/*/////////////////////////////////////////////////////////////////////////////////
Javascript Library
Version 1.62
Copyright by Net Communication Management
/////////////////////////////////////////////////////////////////////////////////*/

/*/////////////////////////////////////////////////////////////////////////////////
                    loadComplete (wird vor </body> aufgerufen)
/////////////////////////////////////////////////////////////////////////////////*/
/**
 * @projectDescription wird vor &lt;/body&gt; aufgerufen,	Beinhaltet die Anweisungen die beim onLoad ausgeführt werden sollen.
 */
function loadComplete(){
	parseExternalLinks();
	/* Hier die Anweisungen einfügen */
}

/*/////////////////////////////////////////////////////////////////////////////////
                                       popup
	öffnet ein neuse Fenster,
	obj = Link der das Fenster öffnet
	w = Breite des Fensters
	h = Höhe des Fensters
/////////////////////////////////////////////////////////////////////////////////*/
/**
 * @projectDescription öffnet ein neues Browserfenster falls möglich, ansonsten wird die url des Links direkt aufgerufen.
 * @param {LinkObject} obj
 * @param {Breite} w
 * @param {Hoehe} h
 * @return {Boolean}
 */

function popup(obj,w,h) {
	var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
	if (!url) return true;
	if(w && h){
		var args = 'width='+w+',height='+h+',resizable=yes';
	}
	else{
		var args = 'resizable=yes,hotkeys=yes,location=yes,menubar=yes,scrollbars=yes,status=yes,toolbar=yes';
	}
	pop = window.open(url,'',args);
	return (pop) ? false : true;
}

/*/////////////////////////////////////////////////////////////////////////////////
                                 parseExternalLinks
	öffnet Links mit target="_blank" oder rel="external" in einem neuen Fenster
/////////////////////////////////////////////////////////////////////////////////*/
/**
 * @projectDescription öffnet Links mit target="_blank" oder rel="external" in einem neuen Fenster (sollte in der loadComplete-Funktion aufgerufen werden)
 */
function parseExternalLinks(){
	for(i=0; i<document.getElementsByTagName("a").length; i++){
		zwobj = document.getElementsByTagName("a")[i];
		if((zwobj.getAttribute) ? zwobj.getAttribute('rel') == "external" : zwobj.rel == "external"){
			zwobj.onclick = function(){
				return popup(this);	
			};
		}
		else if((zwobj.getAttribute) ? zwobj.getAttribute('target') : zwobj.target == "_blank"){
			zwobj.onclick = function(){
				return popup(this);
			};
			zwobj.target="";
		}
	}
}

/*/////////////////////////////////////////////////////////////////////////////////
                                      Ajax
	getNewHttpObject() giebt ein neues Ajax-Objekt zurück
	getsrc(url,elementContainer) füllte den elementContainer mit dem Quellcode von 
	der angegebenen url
/////////////////////////////////////////////////////////////////////////////////*/
var objXMLHttp = false;

/**
 * @projectDescription giebt ein neues Ajax-Objekt zurück
 * @return {XMLHttpRequest}
 */
function getNewHttpObject() {
    
    try {
        objXMLHttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch(e) {
        try {
            objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP');
        } catch(e) {
            objXMLHttp = new XMLHttpRequest();
        }
    }
    
    return objXMLHttp;
}
/**
 * @projectDescription füllte den elementContainer mit dem Quellcode von url
 * @param {String} url
 * @param {id} elementContainer
 */
function getsrc(url,elementContainer){
        var theHttpRequest = getNewHttpObject();
        
        if(typeof(elementContainer) != 'undefined'){
                document.getElementById(elementContainer).innerHTML = '<blink>Loading...<\/blink>';
        }

        theHttpRequest.onreadystatechange = function(){processAXAH(theHttpRequest,elementContainer);};
	theHttpRequest.open("GET", url);
	theHttpRequest.send(false);
}

/**
 * @projectDescription Post Form via Ajax 
 * @param {String} url
 * @param {id} elementContainer
 * Achtung ist nicht UTF-8 kompatibel nur ASCII Code Characaters
 */
function postform(url,formid,elementContainer){
        try{ 
                var parameters = '';
                var objForm = document.getElementById(formid);
                
                if(typeof(objForm) != 'object'){
                    return false;
                }
                
                for(i=0;i<objForm.elements.length;i++){
                    var element = objForm.elements[i];

                    if(element.type == 'radio' || element.type == 'checkbox'){
                        if(element.checked){
                            parameters = parameters + element.name + '=' + escape(element.value)+'&'; 
                        }
                    }else if(element.type == 'select-one'){
                        if(element.options[element.selectedIndex].value != ''){
                                parameters = parameters + element.name + '=' + escape(element.options[element.selectedIndex].value)+'&';    
                        }
                    }else{
                       parameters = parameters + element.name + '=' + escape(element.value)+'&'; 
                    } 
                }

                parameters = parameters.replace(/.$/,'');

                var theHttpRequest = getNewHttpObject();

                if(typeof(elementContainer) != 'undefined'){
                        document.getElementById(elementContainer).innerHTML = '<blink>Loading...<\/blink>';
                }
                        
                theHttpRequest.onreadystatechange = function(){processAXAH(theHttpRequest,elementContainer);};
                theHttpRequest.open('POST', url, true);
                theHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                theHttpRequest.setRequestHeader("Content-length", parameters.length);
                theHttpRequest.setRequestHeader("Connection", "close");
                theHttpRequest.send(parameters);
        }catch(e){
                alert('Error while executing AJAX post command.');
        }
        
}


function processAXAH(theHttpRequest,elementContainer){
        if (theHttpRequest.readyState == 4) {
                if (theHttpRequest.status == 200) {
                        if(typeof(elementContainer) != 'undefined'){
                                document.getElementById(elementContainer).innerHTML = theHttpRequest.responseText;
                        }
                } else {
                        if(typeof(elementContainer) != 'undefined'){
                                document.getElementById(elementContainer).innerHTML="<p><span class='redtxt'>Error!<\/span> HTTP request return the following status message:&nbsp;" + theHttpRequest.statusText +"<\/p>";
                        }
                }
        }
}

/*/////////////////////////////////////////////////////////////////////////////////
                                    JS Kalender
	Beispiel:
		kalender = new Calender(document.getElementById('jscalender'), 'de');
		kalender.callBackFunction = function(tag,monat,jahr){
			document.forms[0].vdd.value = tag;
			document.forms[0].vmm.value = monat;
			document.forms[0].vyy.value = jahr;
			kalender.hide();
		}
	callBackFunction wird aufgerufen wenn auf ein Datum geklickt wird
/////////////////////////////////////////////////////////////////////////////////*/
/**
 * @projectDescription JS Kalender, callBackFunction wird aufgerufen wenn auf ein Item geklickt wird
 * @param {String} obref
 * @param {String} lang
 */
function Calender(obref, lang){
	var self = this;
	this.obref = obref;
	this.day_names_l = new Array();
	this.month_names_l = new Array();
	this.day_names_l['de'] = new Array('Mo','Di','Mi','Do','Fr','Sa','So');
	this.month_names_l['de'] = new Array('Jänner','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
	this.day_names_l['en'] = new Array('Mo','Tu','We','Th','Fr','Sa','Su');
	this.month_names_l['en'] = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	this.day_names_l['fr'] = new Array('Lu','Ma','Me','Je','Ve','Sa','Di');
	this.month_names_l['fr'] = new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
	this.day_names_l['it'] = new Array('Lun','Mar','Mer','Gio','Ven','Sab','Dom');
	this.month_names_l['it'] = new Array('gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');
	this.day_names = this.day_names_l[lang];
	this.month_names = this.month_names_l[lang];
	this.days = new Array();
	/**
	 * @projectDescription initialisiert den Kalender und befüllt den Container mit HTML-Code
	 */
	this.init = function(){
		html_output = '<div class="jsc_head"><a class="jsc_back" href="javascript:void(0);">&laquo;</a><h2></h2><a class="jsc_next" href="javascript:void(0);">&raquo;</a></div>\n';
		html_output += '<div class="jsc_body">\n';
		for(i=0;i<7;i++){
			html_output += '<span>' + self.day_names[i] + '</span>\n';
		}
		zw=0;
		for(i=0;i<41;i++){
			zw++;
			if(zw==6 || zw==7){
				html_output += '<a href="javascript:void(0);" class="jsc_special"></a>\n';
			}
			else{
				html_output += '<a href="javascript:void(0);"></a>\n';
			}
			if(zw==7){
				zw=0;
			}
		}
		html_output += '<a class="jsc_close" href="javascript:void(0);">x</a>\n';
		html_output += '</div>';
		self.obref.innerHTML = html_output;
		self.obref.getElementsByTagName('a')[self.obref.getElementsByTagName('a').length-1].onclick = function(){
			self.hide();
		};
		self.obref.getElementsByTagName('a')[0].onclick = function(){
			if(self.akt_month>1){
				self.setDate(self.akt_month-1, self.akt_year);
			}
			else{
				self.setDate(12, self.akt_year-1);
			}
		};
		self.obref.getElementsByTagName('a')[1].onclick = function(){
			if(self.akt_month<12){
				self.setDate(self.akt_month+1, self.akt_year);
			}
			else{
				self.setDate(1, self.akt_year+1);
			}
		};
		for(i=2;i<43;i++){
			self.obref.getElementsByTagName('a')[i].onclick = function(){
				self.itemOnClick(this);
			}
		};
		zw = new Date();
	};
	/**
	 * @projectDescription blendet den Kalender ein
	 */
	this.show = function(){
		self.obref.style.display = 'block';
	};
	/**
	 * @projectDescription blendet den Kalender aus
	 */
	this.hide = function(){
		self.obref.style.display = 'none';	
	};
	/**
	 * @projectDescription setzt Monat und Jahr
	 */
	this.setDate = function(month, year){
		self.akt_month = month;
		self.akt_year = year;
		blankdays = new Date(year,month-1,1).getDay();
		blankdays += -1;
		if(blankdays<0){
			blankdays=6;
		}
		for(i=27;month-1==new Date(year,month-1,i).getMonth();i++){
			maxdays = i;
		}
		for(i=0;i<blankdays+1;i++){
			self.days[i] = '';
		}
		for(i=i-1;i<maxdays+blankdays;i++){
			self.days[i] = i-blankdays+1;
		}
		for(;i<41;i++){
			self.days[i] = '';
		}
		self.aktualHTML();
	};
	/**
	 * @projectDescription aktualisiert den HTML-Code des Kalenders
	 */
	this.aktualHTML = function(){
		self.obref.getElementsByTagName('h2')[0].innerHTML = self.month_names[self.akt_month-1] + ' ' + self.akt_year;
		for(i=0;i<self.days.length;i++){
			self.obref.getElementsByTagName('a')[i+2].innerHTML = self.days[i];
			self.obref.getElementsByTagName('a')[i+2].className = self.obref.getElementsByTagName('a')[i+2].className.replace(/jsc_blank/gi, '');
			if(self.days[i]==""){
				self.obref.getElementsByTagName('a')[i+2].className += " jsc_blank";
			}
		}
	};
	/**
	 * @projectDescription wird aufgerufen wenn ein Item ausgewält wird
	 * @param {Object} obj
	 */
	this.itemOnClick = function(obj){
		if(obj.innerHTML!=''){
			self.callBackFunction(obj.innerHTML*1,self.akt_month,self.akt_year);
		}
	};
	this.hide();
	this.init();
	self.setDate(zw.getMonth()+1,zw.getFullYear());
}

function getCurrentStyle(obj, prop){  // Gibt den Wert des abgefragten CSS-Wertes zurück
	if(document.defaultView && document.defaultView.getComputedStyle){
		if(document.defaultView.getComputedStyle(obj,"").getPropertyValue(prop)){
			return document.defaultView.getComputedStyle(obj,"").getPropertyValue(prop);
		}
		return "";
	}
	else if(window.getComputedStyle){
		if(window.getComputedStyle(obj,"").getPropertyValue(prop)){
			return window.getComputedStyle(obj,"").getPropertyValue(prop);
		}
		return "";
	}
	else if(obj.currentStyle){
		if(obj.currentStyle.getAttribute(prop.replace(/\-/g, ""))){
			return obj.currentStyle.getAttribute(prop.replace(/\-/g, ""));
		}
		return "";
	}
	else{
		if(obj.style.getAttribute(prop.replace(/\-/g, ""))){
			return obj.style.getAttribute(prop.replace(/\-/g, ""));
		}
		return "";
	}
}



function thumb(url){
	document.getElementById('big').src= url;
}



/* ------------ Blase ------------------ */

    var QuickLinksHtml = "";
    function QuickLinksUp(obj,event)
    {
       showQuickLinks();
    }
    function ReceiveServerData_QuickLinksUp(rValue)
    {   
        QuickLinksHtml = '<div class="inPanel">' + rValue + '</div>';
        document.getElementById("panelDiv").innerHTML = QuickLinksHtml;
        var quicklinksDiv = document.getElementById('panelDiv');
    }
    var delayTimer = null;
    var delayTimeout = 300; // 300 ms = 0.3 sec
    function showQuickLinks() {
	    if(document.getElementById) {
		    var quicklinksDiv = document.getElementById('panelDiv');
		    if(quicklinksDiv && (quicklinksDiv.style.display != 'block'))
		    {
		        quicklinksDiv.style.display = 'block';
		    }
	    }
    	
	    if(delayTimer) {
	        clearInterval(delayTimer);
	        delayTimer = null;
	    }
    }
    
    function hideRequestQuickLinks() {
	    if(!delayTimer)
	    {
	        delayTimer = setTimeout('hideQuickLinks();',delayTimeout);
	    }
    }
    
    function hideQuickLinks() {
	    if(document.getElementById) {
		    var quicklinksDiv = document.getElementById('panelDiv');
		    //var quicklinksBtn = document.getElementById('quicklinksbtn');
		    if(quicklinksDiv)
		    {
                quicklinksDiv.style.display = 'none';
		       // quicklinksBtn.src='/images/worldwide.gif';
		    }
	    }
    	
	    if(delayTimer) {
	        clearInterval(delayTimer);
	        delayTimer = null;
	    }
    }
/* ////////////////////////////////////////////////////////////////                            
                               By i4m                              
///////////////////////////////////////////////////////////////////

Struktur:
<ul>
	<li><a>TXT</a>
		<ul>
			<li><a>TXT</a>
		</ul>
	</li>
</ul>

<ul>
	<span><a>TXT</a>
		<div>
			<span><a>TXT</a></span>
		</div>
	</span>
</ul>
*/
var DrMenu;

function DrMenu(menuid){
	var self = this;
	this.menuid = menuid;
	this.active_items = new Array();  // Array für aktive Elemente
	this.html_menu = document.getElementById(this.menuid);  // Referenz auf die UL des Menus
	this.menu_event = "over"; // over oder click möglich
	this.show_parent_active = true; // wenn der/die Parent(s) aktiv bleiben sollen wird über die .hover classe gesteuert
	this.linkOut = true;  // ob beim überfahren einens anderen Menüpunktes das aktive Submenu verschwinden soll.
	this.needIeSelectBoxBugFix = ((navigator.appVersion.indexOf("MSIE 5") != -1 || navigator.appVersion.indexOf("MSIE 6") != -1) && navigator.userAgent.indexOf("Opera")==-1); // ob der IeSelectBoxBug gefixt werden muss
	this.init = function(){
		this.html_menu.obref = this;  // Referenz auf das DrMenu-Object
		this.html_menu.innerHTML = this.html_menu.innerHTML.replace(/<UL([^>]*)>/gi, '<div$1>').replace(/<\/UL>/gi, "</div>").replace(/<LI([^>]*)>/gi, '<span$1>').replace(/<\/LI>/gi, "</span>");  // ul wird durch div ersetzt und li durch span
		for(i=0; i<this.html_menu.getElementsByTagName("a").length; i++){  // Ereignissfunktionen werden gesetzt
			if(this.menu_event=="over" && this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div").length>0){  // Wenn der Link ein Submenü beinhaltet
				this.html_menu.getElementsByTagName("a")[i].onmouseover = this.itemOver;
				this.html_menu.getElementsByTagName("a")[i].onmouseout = this.itemOut;
				this.html_menu.getElementsByTagName("a")[i].className += " nextlevel";
				this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].onmouseover = this.drOver;
				this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].onmouseout = this.drOut;
				this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].style.display = "block";  // Das Submenü wird sichtbar gemacht (für die Breitenfeststellung nötig)
				this.setClassWidth(this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0]);  // Breitenfeststellung und Setzung
			}
			else if(this.menu_event=="over" && this.linkOut){  // Wenn der Link kein Submenü beinhaltet
				this.html_menu.getElementsByTagName("a")[i].onmouseover = this.lwsmItemOver;
			}
			else if(this.menu_event=="click" && this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div").length>0){
				this.html_menu.getElementsByTagName("a")[i].onclick = this.itemOver;
				this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].style.display = "block";  // Das Submenü wird sichtbar gemacht (für die Breitenfeststellung nötig)
				this.setClassWidth(this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0]);  // Breitenfeststellung und Setzung
			}
		}
		for(i=this.html_menu.getElementsByTagName("a").length-1; i>=0; i--){
			if(this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div").length>0){
				this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].style.display = "none";
				this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].style.width = this.html_menu.getElementsByTagName("a")[i].parentNode.getElementsByTagName("div")[0].zw_width
			}
		}
	};
	this.lwsmItemOver = function(){
		for(i=0; i<this.parentNode.parentNode.getElementsByTagName("div").length; i++){
			if(this.parentNode.parentNode.getElementsByTagName("div")[i].style.display == "block"){
				self.itemOutTime(this.parentNode.parentNode.getElementsByTagName("div")[i].parentNode.getElementsByTagName("a")[0]);
			}
		}
	};
	this.itemOver = function(){
		zw = true;
		for(i=0; i<this.parentNode.getElementsByTagName("div").length; i++){
			if(this.parentNode.getElementsByTagName("div")[i].style.display == "block"){
				zw=false;
				break;
			}
		}
		if(zw){		
			for(i=0; i<	self.active_items.length; i++){
				self.itemOutTime(self.active_items[i]);
			}
			old_items = self.active_items;
			self.active_items = new Array();
			for(zw=this;zw; zw=zw.parentNode.parentNode.parentNode.getElementsByTagName("a")[0]){
				if(!zw.parentNode.getElementsByTagName("div")[0]){
					zw=false;
					break;
				}
				zw.parentNode.getElementsByTagName("div")[0].style.display = "block";
				self.active_items[self.active_items.length] = zw;
				if(zw.parentNode.parentNode.id==self.menuid){
					zw=false;
					break;
				}
			}
		}
		this.parentNode.getElementsByTagName("div")[0].style.display = "block";
		if(self.show_parent_active){
			this.className += " hover";
		}
		if(old_items){
			for(i=0; i<old_items.length; i++){
				zw=false;
				for(j=0; j<self.active_items.length; j++){
					if(old_items[i].parentNode.innerHTML == self.active_items[j].parentNode.innerHTML){
						zw=true;
						break;
					}
				}
				if(!zw){
					self.itemOutTime(old_items[i]);
				}
			}
			old_items = false;
		}
		if(this.timeout){
			clearTimeout(this.timeout);
		}
	};
	this.drOver = function(){
		this.parentNode.getElementsByTagName("a")[0].onmouseover();
	};
	this.drOut = function(){
		this.parentNode.getElementsByTagName("a")[0].onmouseout();
	};
	this.itemOut = function(){
		this.timeout = setTimeout(function(a,b) { return function() { b.itemOutTime(a); } } (this,self), 300);
	};
	this.itemOutTime = function(object){
		object.parentNode.getElementsByTagName("div")[0].style.display = "none";
		object.className = object.className.replace(/hover/g, "");
	};
	this.setClassWidth = function(object){
		maxwidth = 0;
		for(j=0; j<object.childNodes.length; j++){
			if(object.childNodes[j].getElementsByTagName){
				if(object.childNodes[j].getElementsByTagName("a")[0].offsetWidth>maxwidth){
					maxwidth = object.childNodes[j].getElementsByTagName("a")[0].offsetWidth;
				}
			}
		}
		for(j=0; j<object.childNodes.length; j++){
			if(object.childNodes[j].getElementsByTagName){
				if((maxwidth - getCurrentStyle(object.childNodes[j].getElementsByTagName("a")[0], 'padding-left').replace(/px/, "") - getCurrentStyle(object.childNodes[j].getElementsByTagName("a")[0], 'padding-right').replace(/px/, "")) < 0){
					object.childNodes[j].getElementsByTagName("a")[0].style.width = "0px";
				}
				else{
					object.childNodes[j].getElementsByTagName("a")[0].style.width = (maxwidth - getCurrentStyle(object.childNodes[j].getElementsByTagName("a")[0], 'padding-left').replace(/px/, "") - getCurrentStyle(object.childNodes[j].getElementsByTagName("a")[0], 'padding-right').replace(/px/, "")) + "px";
				}
				if(navigator.appVersion.indexOf("MSIE 5.5") != -1 || navigator.appVersion.indexOf("MSIE 5.0") != -1){
					object.childNodes[j].getElementsByTagName("a")[0].style.width = maxwidth;
				}
				if(object.childNodes[j].getElementsByTagName("div").length>0){
					object.childNodes[j].getElementsByTagName("div")[0].style.left = maxwidth + "px";
				}
			}
		}
		object.zw_width = maxwidth + "px";
		if(self.needIeSelectBoxBugFix){  // Nur für IE 5 bis 6
			zw_iframe = document.createElement("iframe");
			object.insertBefore(zw_iframe, object.firstChild);
			zw_iframe.style.position = "absolute";
			zw_iframe.style.filter = 'alpha(opacity=0)';
			zw_iframe.style.left = (getCurrentStyle(object, "border-left-width").replace(/px/g, "")*(-1)) + (getCurrentStyle(object, "padding-left").replace(/px/g, "")*(-1)) + "px";
			zw_iframe.style.top = (getCurrentStyle(object, "border-top-width").replace(/px/g, "")*(-1)) + (getCurrentStyle(object, "padding-top").replace(/px/g, "")*(-1)) + "px";
			zw_iframe.style.width = (object.zw_width.replace(/px/g, "")*1) + (getCurrentStyle(object, "border-left-width").replace(/px/g, "")*1) + (getCurrentStyle(object, "border-right-width").replace(/px/g, "")*1) + (getCurrentStyle(object, "padding-left").replace(/px/g, "")*1) + (getCurrentStyle(object, "padding-right").replace(/px/g, "")*1) + "px";
			zw_iframe.style.height = (object.offsetHeight*1) + (getCurrentStyle(object, "border-top-width").replace(/px/g, "")*1) + (getCurrentStyle(object, "border-bottom-width").replace(/px/g, "")*1) + (getCurrentStyle(object, "padding-top").replace(/px/g, "")*1) + (getCurrentStyle(object, "padding-bottom").replace(/px/g, "")*1) + "px";
		}
	};
}
//** Tab Content script- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
//** Last updated: Nov 8th, 06

var enabletabpersistence=1; //enable tab persistence via session only cookies, so selected tab is remembered?

////NO NEED TO EDIT BELOW////////////////////////
var tabcontentIDs=new Object();

function expandcontent(linkobj){
    var ulid=linkobj.parentNode.parentNode.id; //id of UL element
    var ullist=document.getElementById(ulid).getElementsByTagName("li"); //get list of LIs corresponding to the tab contents
    for (var i=0; i<ullist.length; i++){
        ullist[i].className="";  //deselect all tabs
        if (typeof tabcontentIDs[ulid][i]!="undefined"){ //if tab content within this array index exists (exception: More tabs than there are tab contents)
            document.getElementById(tabcontentIDs[ulid][i]).style.display="none"; //hide all tab contents
        }
    }
    linkobj.parentNode.className="selected";  //highlight currently clicked on tab
    document.getElementById(linkobj.getAttribute("rel")).style.display="block"; //expand corresponding tab content
    saveselectedtabcontentid(ulid, linkobj.getAttribute("rel"));
}

function expandtab(tabcontentid, tabnumber){ //interface for selecting a tab (plus expand corresponding content)
    var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber];
    if (thetab.getAttribute("rel")){
        expandcontent(thetab);
    }
}

function savetabcontentids(ulid, relattribute){ // save ids of tab content divs
    if (typeof tabcontentIDs[ulid]=="undefined"){ //if this array doesn't exist yet
        tabcontentIDs[ulid]=new Array();
        tabcontentIDs[ulid][tabcontentIDs[ulid].length]=relattribute;
    }
}

function saveselectedtabcontentid(ulid, selectedtabid){ //set id of clicked on tab as selected tab id & enter into cookie
    if (enabletabpersistence==1){ //if persistence feature turned on
        setCookie(ulid, selectedtabid);
    }
}

function getullistlinkbyId(ulid, tabcontentid){ //returns a tab link based on the ID of the associated tab content
    var ullist=document.getElementById(ulid).getElementsByTagName("li");
    for (var i=0; i<ullist.length; i++){
        if (ullist[i].getElementsByTagName("a")[0].getAttribute("rel")==tabcontentid){
            return ullist[i].getElementsByTagName("a")[0];
            break;
        }
    }
}



function initializetabcontent(){
    for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
        if (enabletabpersistence==0 && getCookie(arguments[i])!=""){ //clean up cookie if persist=off
            setCookie(arguments[i], "");
        }
        
        var clickedontab=getCookie(arguments[i]); //retrieve ID of last clicked on tab from cookie, if any
        var ulobj=document.getElementById(arguments[i]);
        var ulist=ulobj.getElementsByTagName("li"); //array containing the LI elements within UL
        
        for (var x=0; x<ulist.length; x++){ //loop through each LI element
            var ulistlink=ulist[x].getElementsByTagName("a")[0];
            if (ulistlink.getAttribute("rel")){
                savetabcontentids(arguments[i], ulistlink.getAttribute("rel")); //save id of each tab content as loop runs
                
                ulistlink.onclick=function(){
                expandcontent(this);
                return false;
                };
            
                if (ulist[x].className=="selected" && clickedontab==""){ //if a tab is set to be selected by default
                    expandcontent(ulistlink); //auto load currenly selected tab content
                }
            }
        } //end inner for loop
        if (clickedontab!=""){ //if a tab has been previously clicked on per the cookie value
            var culistlink=getullistlinkbyId(arguments[i], clickedontab);
            if (typeof culistlink!="undefined"){ //if match found between tabcontent id and rel attribute value
                expandcontent(culistlink); //auto load currenly selected tab content
            } else { //else if no match found between tabcontent id and rel attribute value (cookie mis-association)
                expandcontent(ulist[0].getElementsByTagName("a")[0]); //just auto load first tab instead
            }
        }
    } //end outer for loop
}


function getCookie(Name){ 
    var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
    if (document.cookie.match(re)){ //if cookie found
        return document.cookie.match(re)[0].split("=")[1] ;//return its value
    }
    return "";
}

function setCookie(name, value){
    document.cookie = name+"="+value; //cookie value is domain wide (path=/)
}
