Good morning,
Welcome to the forums 
What you need to do here is use the openClass constructor option to give your open panels a specific class:
HTML Code:
var ac1 = new Spry.Widget.CollapsiblePanel("cp1",{contentIsOpen:true, duration:200, openClass:'open'});
Then you can put an empty <span> element before the panel content:
HTML Code:
<div class="CollapsiblePanelTab"><span class="menuState"></span>Panel 1</div>
Finally on page load you iterate over all of the panels and insert a plus or a minus sign into the <span> depending on whether it has a class of open or not.
You also have to attach an onclick handler to do the same thing.
Here's a demo.
And here's the code:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Spry CollapsiblePanel</title>
<script language="JavaScript" type="text/javascript" src="http://adobe.github.com/Spry/includes/SpryData.js"></script>
<script language="JavaScript" type="text/javascript" src="http://adobe.github.com/Spry/widgets/collapsiblepanel/SpryCollapsiblePanel.js"></script>
<link href="http://adobe.github.com/Spry/widgets/collapsiblepanel/SpryCollapsiblePanel.css" rel="stylesheet" type="text/css" />
<style type="text/css">
#cp1 .CollapsiblePanelContent {
overflow: scroll;
height: 300px;
}
.CollapsiblePanel {
width: 300px;
}
.menuState{
padding:3px;
}
</style>
</head>
<body>
<div class="CollapsiblePanel" id="cp1">
<div class="CollapsiblePanelTab" tabindex="0"><span class="menuState"></span>Panel 1</div>
<div class="CollapsiblePanelContent">
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
Content for Panel 1 goes here!<br />
</div>
</div>
<div class="CollapsiblePanel" id="cp2">
<div class="CollapsiblePanelTab" tabindex="0"><span class="menuState"></span>Panel 2</div>
<div class="CollapsiblePanelContent">
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
Content for Panel 2 goes here!<br />
</div>
</div>
<div class="CollapsiblePanel" id="cp3">
<div class="CollapsiblePanelTab" tabindex="0"><span class="menuState"></span>Panel 3</div>
<div class="CollapsiblePanelContent">
Content for Panel 3 goes here!<br />
Content for Panel 3 goes here!<br />
Content for Panel 3 goes here!<br />
</div>
</div>
<div class="CollapsiblePanel" id="cp4">
<div class="CollapsiblePanelTab" tabindex="0"><span class="menuState"></span>Panel 4</div>
<div class="CollapsiblePanelContent">
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
Content for Panel 4 goes here!<br />
</div>
</div>
<div class="CollapsiblePanel" id="cp5">
<div class="CollapsiblePanelTab"><span class="menuState"></span>Panel 5</div>
<div class="CollapsiblePanelContent">
Content for Panel 5 goes here!<br />
Content for Panel 5 goes here!<br />
Content for Panel 5 goes here!<br />
Content for Panel 5 goes here!<br />
Content for Panel 5 goes here!<br />
</div>
</div>
<script language="JavaScript" type="text/javascript">
var ac1 = new Spry.Widget.CollapsiblePanel("cp1",{contentIsOpen:true, duration:200, openClass:'open'});
var ac2 = new Spry.Widget.CollapsiblePanel("cp2",{contentIsOpen:false, duration:200, openClass:'open'});
var ac3 = new Spry.Widget.CollapsiblePanel("cp3",{contentIsOpen:false, duration:200, openClass:'open'});
var ac4 = new Spry.Widget.CollapsiblePanel("cp4",{contentIsOpen:false, duration:200, openClass:'open'});
var ac5 = new Spry.Widget.CollapsiblePanel("cp5",{contentIsOpen:false, duration:200, openClass:'open'});
function updatemenuState(el){
if((el.parentNode.className).match(/open/)){
el.firstChild.innerHTML = "-";
} else {
el.firstChild.innerHTML = "+";
}
}
window.onload=function(){
var ac=document.getElementsByClassName("CollapsiblePanelTab");
for (i=0; i<ac.length; i++){
updatemenuState(ac[i]);
ac[i].onclick=function(){
updatemenuState(this);
}
}
}
</script>
</body>
</html>
I hope that helps. It should work in all modern browsers.
Just let me know if you have any questions.
Bookmarks