//Global array...
var __ExpandingPanelIDs = new Array();

function __ExpandingPanelGetCookie(name) { // use: getCookie("name");
	var index = document.cookie.indexOf(name + "=");
	if (index == -1) return null;
	index = document.cookie.indexOf("=", index) + 1;
	var endstr = document.cookie.indexOf(";", index);
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(index, endstr));
}

function __ExpandingPanelSetCookie(name, value) { // use: setCookie("name", value);
	//Create a cookie and have it expire in 28 days...
	var days = 60;
	if (value != null && value != "")
		document.cookie=name + "=" + escape(value) + "; expires=" + (new Date((new Date()).getTime() + days * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ * 1000 /* milliseconds */)).toGMTString();
}

function __initExpandingPanel() {
	var unfold = __ExpandingPanelGetCookie("__panelIDs") || "-1";

	for (var i = 0; i < __ExpandingPanelIDs.length; i++) {
		__ExpandingPanelIDs[i].objHead.onclick = __ExpandingPanelClick;
		__ExpandingPanelIDs[i].objHead.onmouseover = __ExpandingPanelHeadMouseOver;
		__ExpandingPanelIDs[i].objHead.onmouseout = __ExpandingPanelHeadMouseOut;
		
		if (__ExpandingPanelIDs[i].objImage != null) {
			__ExpandingPanelIDs[i].objImage.onmouseover = __ExpandingPanelHeadMouseOver;
			__ExpandingPanelIDs[i].objImage.onmouseout = __ExpandingPanelHeadMouseOut;
		}
	}
	//alert(unfold);
	__ExpandingPanelCloseAll();
	
	//-1 indicates that all items were closed...
	if (unfold != "" && unfold != "-1") {			
		var unfolds = unfold.split(",");
		for(var i = 0; i < unfolds.length; i++) {
			var index = parseInt(unfolds[i]);
			if (index < __ExpandingPanelIDs.length && __ExpandingPanelIDs[index].expandedView == "auto") {
				__ExpandingPanelIDs[index].expanded = true;
				__ExpandingPanelIDs[index].objBody.style.display = 'block';
				if (__ExpandingPanelIDs[i].objImage != null)
					__ExpandingPanelIDs[index].objImage.src = __ExpandingPanelIDs[index].imgExpandedSrc;
				
				//This lets us customize what happens when an object is expanded or collapsed...
				//IOW, we can plug in functions to do something special after it's been expanded...
				if (window.__OnPanelExpand) {
					__OnPanelExpand(__ExpandingPanelIDs[index]);
				}
			}
		}
	}/**/
}

function __ExpandingPanel(ClientID, Source, ContentContainer, Img, ImgExpandedSRC, ImgCollapsedSRC, Expanded, ExpandedView) {
	this.expanded = Expanded;
	this.expandedView = ExpandedView;
	this.clientID = ClientID;
	this.imgExpandedSrc = ImgExpandedSRC;
	this.imgCollapsedSrc = ImgCollapsedSRC;
	this.objBody = ContentContainer;
	this.objHead = Source;
	this.objImage = Img;
	this.objHead.setAttribute("index", this.length);
	this.objHead.setAttribute("isExpandingPanel", true);
}

function __ExpandingPanelCloseAll() {
	for (var i=0; i <__ExpandingPanelIDs.length; i++) {
		//It's set to true if it's been explicity defined to be opened...
		if (!__ExpandingPanelIDs[i].expanded) {
			__ExpandingPanelIDs[i].objBody.style.display = 'none';
			
			//If this function has been defined, then go ahead and run it...
			if (window.__OnPanelCollapse)
					__OnPanelCollapse(__ExpandingPanelIDs[i]);
		} else {
			if (window.__OnPanelExpand)
				__OnPanelExpand(__ExpandingPanelIDs[i]);
		}
	}
}

function __ExpandingPanelClick(e) {
	var tg;
	if (!e) var e = window.event;
	if (e.target) tg = e.target;
	else if (e.srcElement) tg = e.srcElement;
	
	while (tg.nodeType != 1) // Safari GRRRRRRRRRR
		tg = tg.parentNode;
	while (tg.id == null || tg.id == '' || tg.getAttribute("isExpandingPanel") == null) {
		if (tg.parentNode == null) return;
		tg = tg.parentNode;
	}
		
	var objPanel = __ExpandingPanelFindPanelByExtension(tg.id);//__ExpandingPanelIDs[index].objBody;
	if (objPanel == null) return;
	
	var objContainer = objPanel.objBody;
	if (objContainer == null) return;
	
	objPanel.expanded = !objPanel.expanded;	
	objContainer.style.display = (objPanel.expanded) ? 'block' : 'none';
	
	if (objPanel.objImage != null)
		objPanel.objImage.src = (objPanel.expanded) ? objPanel.imgExpandedSrc : objPanel.imgCollapsedSrc;
	
	var folds = "";
	for (var i = 0; i < __ExpandingPanelIDs.length; i++) {
		if (__ExpandingPanelIDs[i].objBody != null && __ExpandingPanelIDs[i].objBody.style.display != 'none') {
			folds = folds + "," + i;
		}
	}
	
	if (folds == "")
		folds = "-1";
	else
		folds = folds.substr(1);
	
	__ExpandingPanelSetCookie("__panelIDs", folds);
	
	//This lets us customize what happens when an object is expanded or collapsed...
	//IOW, we can plug in functions to do something special after it's been expanded...
	if (objPanel.expanded) {
		if (window.__OnPanelExpand)
			__OnPanelExpand(objPanel);
	} else {
		if (window.__OnPanelCollapse)
			__OnPanelCollapse(objPanel);
	}
}

//This function is called everytime we mouse over the head...
function __ExpandingPanelHeadMouseOver(e) {
	//If we haven't defined this function, then don't do anything
	//else...
	if (!window.__OnPanelHeadMouseOver)
		return;
	
	var tg;
	if (!e) var e = window.event;
	if (e.target) tg = e.target;
	else if (e.srcElement) tg = e.srcElement;
	
	while (tg.nodeType != 1) // Safari GRRRRRRRRRR
		tg = tg.parentNode;
	while (tg.id == null || tg.id == '' || tg.getAttribute("isExpandingPanel") == null) {
		if (tg.parentNode == null) return;
		tg = tg.parentNode;
	}
	
	var objPanel = __ExpandingPanelFindPanelByExtension(tg.id);
	__OnPanelHeadMouseOver(objPanel);		
}

//This function is called everytime we move the mouse off the head..
function __ExpandingPanelHeadMouseOut(e) {
	//If we haven't defined this function, then don't do anything
	//else...
	if (!window.__OnPanelHeadMouseOut)
		return;
	
	var tg;
	if (!e) var e = window.event;
	if (e.target) tg = e.target;
	else if (e.srcElement) tg = e.srcElement;
	
	while (tg.nodeType != 1) // Safari GRRRRRRRRRR
		tg = tg.parentNode;
	while (tg.id == null || tg.id == '' || tg.getAttribute("isExpandingPanel") == null) {
		if (tg.parentNode == null) return;
		tg = tg.parentNode;
	}
	
	var objPanel = __ExpandingPanelFindPanelByExtension(tg.id);
	__OnPanelHeadMouseOut(objPanel);		
}

function __ExpandingPanelFindPanelByExtension(PanelClientExtID) {
	//Just grab the main ID...
	var iFind_ = PanelClientExtID.lastIndexOf("_");
	var panelID = "";
	var ext = "";
	
	ext = PanelClientExtID.substring(iFind_ + 1, PanelClientExtID.length);
	
	if (!(ext == "Head" || ext == "Body" || ext == "Image"))
		return null;  
	
	if (iFind_ == -1)
		panelID = PanelClientExtID;
    else
		panelID = PanelClientExtID.substring(0, iFind_);	
	
	for(var i = 0; i < __ExpandingPanelIDs.length; i++) {
		if (__ExpandingPanelIDs[i].clientID != null && __ExpandingPanelIDs[i].clientID == panelID)
			return __ExpandingPanelIDs[i];
	}
	return null;
}

function __ExpandingPanelAddNew(PanelClientID, ImageExpandedSRC, ImageCollapsedSRC, Expanded, ExpandedView) {
	__ExpandingPanelIDs.push(new __ExpandingPanel(PanelClientID, document.getElementById(PanelClientID + "_Head"), document.getElementById(PanelClientID + "_Body"), document.getElementById(PanelClientID + "_Image"), ImageExpandedSRC, ImageCollapsedSRC, Expanded, ExpandedView));
}

/* 
	The following lets you customize what happens when you expand, collapse, mouse over, or mouse out on one of the panels 
	Remember that this applies to all child panels as well!
*/
function __OnPanelExpand(Panel) {
	Panel.objHead.bgColor = "#EEEDE3";
}

function __OnPanelCollapse(Panel) {
	Panel.objHead.bgColor = "#ffffff";
}

function __OnPanelHeadMouseOver(Panel) {
	Panel.objHead.bgColor = "#EEEDE3";
}

function __OnPanelHeadMouseOut(Panel) {
	if (Panel.expanded)
		Panel.objHead.bgColor = "#EEEDE3";
	else
		Panel.objHead.bgColor = "#ffffff";
}
/*
	End Customization
*/