//** Tab Content script- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
//** Last updated: June 29th, 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"))
	
	//expand the box if it hasn't been already  (kludge... should be more independent...
	changeDisplayMode('sidebarcontentinner','newsctrl','newsshow.png','newshide.png','block')
}


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=/)
	setPersistentCookie(name, value, 30);
}

function setPersistentCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

//toggles visiblility of referenced element between "display" and "block"
function changeDisplayMode(someId,imageIdToSwap,showSrc,hideSrc,newDisplayMode) {
	//start the collapsing of the specified element
	var someElement = document.getElementById(someId);
	var oldDisplayMode = someElement.style.display;
	var imageToSwap = document.getElementById(imageIdToSwap);
	oldDisplayMode = someElement.style.display;
	
	if (newDisplayMode=='toggle')
		if (oldDisplayMode=='block')
			newDisplayMode='none';
		else
			newDisplayMode='block';
	else
		if (!oldDisplayMode) oldDisplayMode='block';  //shouldn't be necessary...just in case?

	//alert('changeDisplayMode: ' + oldDisplayMode + '--> ' + newDisplayMode);

	if (newDisplayMode!=oldDisplayMode)
		if (newDisplayMode=='none') {
			someElement.style.maxHeight = '10000px';		
			collapseElement(someId);  
			imageToSwap.src='images/' + showSrc;
		}
		else {
			someElement.style.maxHeight = '2px';		
			expandElement(someId);
			imageToSwap.src='images/' + hideSrc;
		}
	
	return false;
}



/*
Note for collapseElement and expandElement: IE (and other browsers with poor CSS support?) won't show the "animated" collapse/expand effect because
it ignores max-height when rendering the page.  However the end result is the same (display gets set to "block" or "none" and the cookie is set) so this will
work on IE, even if the animated effect isn't shown
*/
function collapseElement(someId) {
	var someElement = document.getElementById(someId);
	var curMaxHeight = parseInt(someElement.style.maxHeight.substr(0,someElement.style.maxHeight.length));
	if (curMaxHeight < 2) {
		someElement.style.display='none';
		setPersistentCookie('display_' + someId, 'none', 30);
	}
	else {
		someElement.style.maxHeight=(parseInt(curMaxHeight*0.55)+'px');
		window.setTimeout('collapseElement(\'' + someId + '\')',10);
	}
}

function expandElement(someId) {
	var someElement = document.getElementById(someId);
	var curMaxHeight = parseInt(someElement.style.maxHeight.substr(0,someElement.style.maxHeight.length));
	if (curMaxHeight < 2) curMaxHeight=2;  //otherwise we get an endless loop
	someElement.style.display='block';
	if (curMaxHeight >10000) 
		setPersistentCookie('display_' + someId, 'block', 30);
	else {
		someElement.style.maxHeight=(parseInt(curMaxHeight*2.0) + 'px');
		window.setTimeout('expandElement(\'' + someId + '\')',10);
	}
}

/*
takes an array of element IDs.  looks for cookies specifying their initial display state.
cookies are named display_foo, display_bar where "foo" and "bar" are the names of the elements
if cookie isn't found or contains an invalid value, displaymode is defaulted to "block"
*/
function initializeDisplayModes(contentID, controllerID, showSrc, hideSrc) {
	var controllerElement = document.getElementById(controllerID);
	var thisElement=document.getElementById(contentID);
	if (thisElement) {
		if (getCookie('display_'+contentID)=='none')  {
			thisElement.style.display='none';
			controllerElement.src='images/' + showSrc;
		}
		else {
			thisElement.style.display='block';
			controllerElement.src='images/' + hideSrc;
		}
	}
	else {
		//alert('initDisplayModes: no element with ID of ' + arguments[i]);
	}

	
}

