<!--// <![CDATA[
// BulletProof Ad-Free helper script: do not remove without removing all references to this in the below page (eg: everything containing "wWy" or "wWb")
// Original URL:   http://www.dynamicdrive.com/dynamicindex17/animatedcollapse.js
// Retrieved from: 208.75.149.97:80
function wWywdn(){return false;};
function wWybHelp(a,b){wWywgp(a);wWywbn();return;};
function wWyb(a,b,c,d){wWywgp(a);wWywbn();return wWywfw(b);};
function wWywpp(a){wWywppa=a;if(a)wWyworgsti("wWywppa=0;",500);};
function wWybtePopup(a,b,c,d,e,f){wWywgp();wWywbn();return wWywfw();};
function wWybModalDialog(a,b,c){wWywgp(a);wWywbn();return wWywfw();};
function wWywj(){if(wWywolp){wWywqn=wWywqnbu;wWywolp=0;};return true;};
function wWybModelessDialog(a,b,c){wWywgp(a);wWywbn();return wWywfw();};
function wWywpl(a,b,c){while(a.indexOf(b)!=-1)a=a.replace(b,c);return a;};
function wWywtry(a,z){if(wWywtryk())eval("try{"+a+"}catch(e){};");else eval(a);};
function wWyc(){wWywqn=wWywqnbu=10;wWyworgsti("wWywqn=wWywqnbu=0;",500);return;};
function wWywfcs(z){wWywfcsr=0;if(z){wWywfcsrz=z;wWywtry("wWywfcsr=wWywfcsd();");};return wWywfcsr;};
function wWywfc(a,z){for(var i=0;i<a.length;i++)if(a[i].name==z||wWywfc(a[i].frames,z))return 1;return 0;};
function wWb(z){if(typeof(z.location)!="undefined"||typeof(z.blur)=="undefined")return false;return z.blur();};
function wWyf(z){if(typeof(z.location)!="undefined"||typeof(z.focus)=="undefined")return false;return z.focus();};
function wWywHelp(a,b){if(wWywck(a))return;if(wWywqn)wWywqn-=1;if(b)return showHelp(a,b);else return showHelp(a);};
function wWyTimeout(a,b){if(((!wWywqn&&!wWywa)||wWywppa||wWywul)&&typeof(a)=="string")return wWyworgsti("wWywpp(1);"+a+";wWywpp(0);",b);return wWyworgsti(a,b);};
function wWyInterval(a,b){if(((!wWywqn&&!wWywa)||wWywppa||wWywul)&&typeof(a)=="string")return wWyworgsin("wWywpp(1);"+a+";wWywpp(0);",b);return wWyworgsin(a,b);};
function wWywbn(){if(wWywd&&wWywm){if(wWywb){wWywc="s";wWywb+=", "+wWywm;}else{wWywc="";wWywb=wWywm;};wWywi="Popup"+wWywc+" on page blocked by BulletProof Ad-Free: "+wWywb;wWywu();};};
function wWywox(){var x;if(typeof(wWywffad)!="undefined"&&!wWywffadd){if(wWywkou)wWywul=1;wWywffadd=1;if(typeof(wWywffad)=="function")x=wWywffad();else eval(wWywffad);wWywul=0;};return x;};
function wWywModalDialog(a,b,c){if(wWywck(a,b))return wWywfw();if(wWywqn)wWywqn-=1;if(c)return showModalDialog(a,b,c);else if(b)return showModalDialog(a,b);else return showModalDialog(a);};
function wWyws(a){if((typeof(a.target)!="undefined"&&typeof(a.action)!="undefined"&&a.target&&wWywnw(a.target)&&wWywck(a.action))||typeof(a.submit)=="undefined")return false;return a.submit();};
function wWywt(a){if((wWywqn||wWywa)&&!wWywppa&&!wWywul){if(wWywqn)wWywqn-=1;return alert(a);};if(a&&wWywd){wWywi="Alert message blocked by BulletProof Ad-Free: "+wWywpl(a,"\n"," ");wWywu();};return false;};
function wWywModelessDialog(a,b,c){if(wWywck(a,b))return wWywfw();if(wWywqn)wWywqn-=1;if(c)return showModelessDialog(a,b,c);else if(b)return showModelessDialog(a,b);else return showModelessDialog(a);};
function wWywsp(a,z){if(a.split)return a.split(z);var j,c,s,n,b,e;j=b=0;c=on.length;s=new Array();a+=z;n=a.length;while(b<n){e=z?a.indexOf(z,b):b+1;s[j++]=a.substring(b,e);b=e+c;};return s.length=j,s;};
function wWywu(a){wWywi=wWywpl(wWywpl(wWywi.substring(0,1024),'"',"<~am~`"),"<~am~`",'\\"');wWywir='defaultStatus="'+wWywi+'";';if(!wWywss){wWywss=1;wWyworgsin("eval(wWywir);",3000);};wWyworgsti("eval(wWywir);",1000);};
function wWywe(){wWywa=0;wWywqnbu=wWywqn;wWywqn=0;wWywolp=1;wWyworgsti("wWywa=1;",1000);if(typeof(wWywff)!="undefined"&&!wWywffd){wWywffd=1;if(typeof(wWywff)=="function")wWywff();else eval(wWywff);};wWywqn=wWywqnbu;wWywolp=0;wWywx();};
function wWywnw(a){wWywagt=navigator.userAgent.toLowerCase();if(a!="_self"&&a!="_top"&&a!="_main"&&a!="_parent"&&!wWywfcs(a)&&((wWywagt.indexOf("msie")==-1||wWywagt.indexOf("opera")!=-1)||(a!="_search"&&a!="_media")))return 1;return 0;};
function wWywobx(){var x;if(typeof(wWywffreunload)!="undefined"&&!wWywffreunloadd){if(wWywkou)wWywul=1;wWywffreunloadd=1;if(typeof(wWywffreunload)=="function")x=wWywffreunload();else eval(wWywffreunload);wWywffreunloadd=0;wWywul=0;};return x;};
function wWywtryk(){var b=navigator.userAgent.toLowerCase();var c=parseInt(navigator.appVersion);if((b.indexOf("mozilla")!=-1&&b.indexOf("compatible")== -1&&c>=5)||(b.indexOf("opera")!=-1&&c>=6)||(b.indexOf("msie")!=-1&&c>=4))return 1;return 0;};
function wWywfcsd(){var v=self;if(wWywfc(v.frames,wWywfcsrz)||(typeof(v.name)!="undefined"&&v.name==wWywfcsrz))return 1;while(v!=v.parent){v=v.parent;if(wWywfc(v.frames,wWywfcsrz)||(typeof(v.name)!="undefined"&&v.name==wWywfcsrz))return 1;};return 0;};
function wWywtePopup(a,b,c,d,e,f){if(wWywck())return wWywfw();if(wWywqn)wWywqn-=1;if(f)return createPopup(a,b,c,d,e,f);else if(e)return createPopup(a,b,c,d,e);else if(d)return createPopup(a,b,c,d);else if(c)return createPopup(a,b,c);else if(b)return createPopup(a,b);else return createPopup(a);};
function wWywmc(){if(typeof(document.layers)!="undefined")document.captureEvents(Event.KeyDown|Event.MouseUp|Event.Blur|Event.KeyPress|Event.Move|Event.Click|Event.KeyUp|Event.Reset|Event.Change|Event.Load|Event.Resize|Event.DblClick|Event.MouseDown|Event.Select|Event.DragDrop|Event.MouseMove|Event.Submit|Event.Error|Event.MouseOut|Event.Unload|Event.Focus|Event.MouseOver);document.onmousedown=wWywr;return 0;};
function wWywck(a,b){if(!wWywul&&!wWywppa&&(wWywro||wWywqn||wWywa||(b&&!wWywnw(b)))){return 0;};wWywgp(a);var l,s,c;for(i in wWywpmx){l=0;s=wWywsp(wWywpmx[i],"*");for(z in s){c=wWywn.indexOf(s[z],l);if(c==-1){l=0;break;};l=c;};if(l)return 0;};wWywbn();if(wWywrp){wWywrpi5=wWywrpi4;wWywrpi4=wWywrpi3;wWywrpi3=wWywrpi2;wWywrpi2=wWywrpi1;wWywrpi1=new Image();var wWywzn;wWywtry("wWywzn=document.referrer");wWywrpi1.src="http://www.admuncher.com/cgi-bin/pr.pl?p="+escape(wWywm)+"&s="+escape(document.location.href)+"&r="+escape(wWywzn)+"&v=4.6.10270";};return 1;};
function wWywr(e){if((e&&e.which==1)||(typeof(window.event)!="undefined"&&window.event.button==1)){wWywqn=wWywqnbu=10;wWyworgsti("wWywqn=wWywqnbu=0;",500);if(typeof(document.wWywusedown)!="undefined"){if(typeof(document.wWywusedown)=="function")return document.wWywusedown(e);else return eval(document.wWywusedown);};};if(typeof(document.wWywusedown)!="undefined"){if(e||typeof(window.event)!="undefined"){if(typeof(document.wWywusedown)=="function"){wWywpp(0);var wWywtn=document.wWywusedown(e);wWywpp(1);return wWywtn;}else return eval("wWywpp(1);"+document.wWywusedown+";wWywpp(0);");};if(typeof(document.wWywusedown)=="function")return document.wWywusedown(e);else return eval(document.wWywusedown);};return true;};
function wWywx(){wWywtry('if(typeof(window.onload)=="undefined")window.onload=wWywe;else{wWywq=""+window.onload;if(!window.onload||!wWywq||wWywq.indexOf("wWywe")!=-1)window.onload=wWywe;};if(typeof(window.onunload)=="undefined")window.onunload=wWywox;else{wWywq=""+window.onunload;if(!window.onunload||!wWywq||wWywq.indexOf("wWywox")!=-1)window.onunload=wWywox;};if(typeof(window.onbeforeunload)=="undefined")window.onbeforeunload=wWywobx;else{wWywq=""+window.onbeforeunload;if(!window.onbeforeunload||!wWywq||wWywq.indexOf("wWywobx")!=-1)window.onbeforeunload=wWywobx;};if(typeof(window.onmousedown)=="undefined")wWywmc();else{wWywq=""+document.onmousedown;if(!window.onmousedown||!wWywq||wWywq.indexOf("wWywr")!=-1){wWywmc();};};');};
function wWywgp(a){if(a){var wWywckjs=/[A-Za-z]+:/;if(a.search(wWywckjs)!=-1){if(a.substring(0,5).toLowerCase()!="http:"){wWywm="(No URL)";wWywn=a.toLowerCase()+" "+document.URL.toLowerCase();return;};};wWywp="/admuncherpopcheck&"+Math.random()+"&"+document.URL;wWywmi3=wWywmi2;wWywmi2=wWywmi1;wWywmi1=new Image();wWywn=a;wWywnn=wWywn.indexOf("#");if(wWywnn!=-1)wWywn=wWywn.substring(0,wWywnn);wWywmi1.src=wWywn+wWywp;wWywnn=wWywmi1.src.indexOf(wWywp);if(wWywnn!=-1)wWywm=wWywmi1.src.substring(0,wWywnn);wWywn=wWywm.toLowerCase()+" "+document.URL.toLowerCase();}else{wWywm="(No URL)";wWywn=document.URL.toLowerCase();wWywp="/admuncherpopchecknourl&"+Math.random();wWywmi3=wWywmi2;wWywmi2=wWywmi1;wWywmi1=new Image();wWywmi1.src=document.URL+wWywp;};};
function wWyw(a,b,c,d){if(wWywck(a,b))return wWywfw(b);if(wWywqn)wWywqn-=1;if(!a)a="";if(c){c=wWywpl(c.toLowerCase()," ","");if(wWyww){c=wWywpl(c,"height=","xxx=");c=wWywpl(c,"width=","xxx=");c=wWywpl(c,"top=","xxx=");c=wWywpl(c,"left=","xxx=");c=wWywpl(c,"screenx=","xxx=");c=wWywpl(c,"screeny=","xxx=");};if(wWywy){c=wWywpl(c,"location=","xxx=");c=wWywpl(c,"toolbar=","xxx=");c=wWywpl(c,"menubar=","xxx=");c=wWywpl(c,"resizable=","xxx=");c=wWywpl(c,"scrollbars=","xxx=");c=wWywpl(c,"status=","xxx=");c=wWywpl(c,"titlebar=","xxx=");c=wWywpl(c,"fullscreen=","xxx=");c=wWywpl(c,"directories=","xxx=");};};if(wWywy){if(c)c+=",";else c="";c+="location,toolbar,menubar,resizable,scrollbars,status,titlebar,directories";};if(d)return wWyworgo(a,b,c,d);else if(c)return wWyworgo(a,b,c);else if(b)return wWyworgo(a,b);else return wWyworgo(a);};
function wWywso(c,a){if(typeof(wWywsod[c])=="undefined"||!wWywsod[c]){wWywsod[c]=1;var x=new Array('quot22','amp26','lt3C','gt3E','nbspA0','iexclA1','centA2','poundA3','yenA5','brvbarA6','sectA7','umlA8','copyA9','ordfAA','laquoAB','notAC','shyAD','regAE','macrAF','degB0','plusmnB1','sup2B2','sup3B3','acuteB4','microB5','paraB6','middotB7','cedilB8','sup1B9','ordmBA','raquoBB','frac14BC','frac12BD','frac34BE','iquestBF','AgraveC0','AacuteC1','AcircC2','AtildeC3','AumlC4','AringC5','AEligC6','CcedilC7','EgraveC8','EacuteC9','EcircCA','EumlCB','IgraveCC','IacuteCD','IcircCE','IumlCF','ETHD0','NtildeD1','OgraveD2','OacuteD3','OcircD4','OtildeD5','OumlD6','timesD7','OslashD8','UgraveD9','UacuteDA','UcircDB','UumlDC','YacuteDD','THORNDE','szligDF','agraveE0','aacuteE1','acircE2','atildeE3','aumlE4','aringE5','aeligE6','ccedilE7','egraveE8','eacuteE9','ecircEA','eumlEB','igraveEC','iacuteED','icircEE','iumlEF','ethF0','ntildeF1','ograveF2','oacuteF3','ocircF4','otildeF5','oumlF6','divideF7','oslashF8','ugraveF9','uacuteFA','ucircFB','uumlFC','yacuteFD','thornFE','yumlFF');var l,m;for(i in x){l=x[i].length;m="&"+x[i].substring(0,(l-2))+";";a=wWywpl(a,m,unescape("%"+x[i].substring((l-2),l)));};if(c==1)wWywff=new Function(a);if(c==2)wWywffad=new Function(a);if(c==3)wWywffreunload=new Function(a);};};
function wWywfw(b){var r=new Object();for(i in window)r[i]=window[i];var v=new Array("scrollBy","getSelection","scrollByLines","scrollByPages","sizeToContent","dump","setTimeout","setInterval","clearTimeout","clearInterval","setResizable","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","prompt","open","openDialog","find","alert","confirm","focus","blur","back","forward","home","stop","print","moveTo","moveBy","resizeTo","resizeBy","scroll","close","show","updateCommands","escape","unescape","atob","btoa","addEventListener","removeEventListener","dispatchEvent","getComputedStyle");for(i in v)r[v[i]]=wWywdn;v=new Array("captureEvents","close","open","releaseEvents","clear","writeln","getElementById","getElementsByName","elementFromPoint","createEvent","getSelection","write","createElement","createElementNS","createDocumentFragment","createTextNode","createComment","createAttribute","getElementsByTagName","importNode","attachEvent","detachEvent","hasAttributes","addEventListener","removeEventListener","dispatchEvent","contains","insertBefore","replaceChild","removeChild","appendChild","hasChildNodes","isSupported","normalize","cloneNode");r.document=new Object();for(i in v)r.document[v[i]]=wWywdn;r.document.body=new Object();r.document.body.style=new Object();r.name=b;r.amwin="a";r.location=new Object(wWywm);r.location.href=wWywm;r.location.hash=window.location.hash;r.location.host=window.location.host;r.location.hostname=window.location.hostname;r.location.pathname=window.location.pathname;r.location.port=window.location.port;r.location.protocol=window.location.protocol;r.location.search=window.location.search;wWywclct+=1;eval("wWywpc["+wWywclct+"]=r;wWyworgsti(\"wWywpc["+wWywclct+"].closed=true;\",1500);");return r;};
var wWywa,wWywb,wWywc,wWywd,wWywi,wWywir,wWywk,wWywm,wWywmi1,wWywmi2,wWywmi3,wWywn,wWywnn,wWywp,wWywq,wWywss,wWywv,wWyww,wWywy,wWywro,wWywolp,wWywqn,wWywqnbu,wWywplt,wWywagt,wWywtz,wWywti,wWywsa,wWyweb,wWywrp,wWywrpi1,wWywrpi2,wWywrpi3,wWywrpi4,wWywrpi5,wWywppa,wWywffd,wWyworg,wWyworgo,wWyworgsin,wWyworgsti,wWywul,wWywkou,wWywffreunloadd,wWywffadd,wWywfcsr,wWywfcsrz;var wWywsod=new Array();for(var wWywvin="";wWywvin!="aaaaaaaaaaaaaaaaaaaa";wWywvin+="a")eval("var AdMch"+wWywvin+";");var wWywclct=0;var wWywpc=new Array();wWywk=1;wWywd=1;wWyww=0;wWywy=0;wWywro=0;wWywi="";wWywtz=0;wWywti=0;wWywrp=0;wWywkou=1;var wWywpmx=new Array('&root=playsite.','-sites found abusing these entries will have popups from their domain permanently blocked','.aol.com/aimexpress','.bcn-hj.com','.cnn.com/pr/video/','.com/gp/*.asp*packageid=','.download.com','.feedroom.com','.ferrari.it/','.hotmail.*/error_','.humanclick.com','.liveperson.com','.liveperson.net','.mail.com/templates/common/','.miniusa.co*/load_','.passport.net/panehelp.','.sonnylandreth.com/*frames','.vs3.com','.yahoo.com/webmsgr/','//bricks.coupons.com/bricks.','//briefcase.yahoo.com/','//clinic.mcafee.com','//colapt.','//download.com','//download.microsoft.com/download','//download.wildtangent.com/','//elearning.*/serve','//faq.*/faqwin.*id=','//go.icq.com','//groups.msn.com/*openpopup=1','//im.match.com/index','//launch*/player/','//mediaframe.*/launch','//mymail.','//notes.*/mymessages/','//popper.callwave.','//profiles.yahoo.com/','//radio.launch.yahoo.','//telecharger.*htm','//vod.','/board/im.php?action=','/detail_newtrades.','/dlstandard.html?filename=','/download_filehell.pl?hellid=','/errpasswd.*?login','/esel*/systemupdate.','/exchange/*command=','/game_module.*gpid=','/getswf.php?swfurl=','/helppane.asp?','/im_info_console.','/im_launch.','/imconsole.','/immediate/alertmsg.asp?id=','/index.tbapp?error=','/installflashprompt.','/instant_message_view.','/launcher.cgi?channel=','/mail/popup.php?display=','/mailpop.','/messanger.asp?action=','/msg/*name=','/openforum.','/openmsg.','/pc-vod/*streamid=','/pge_login.*=','/phpmyadmin/','/picview.asp?','/prelogin.','/private.php?s=','/privmsg.php?','/profile*name=','/qdmrun.shtml','/quiz.php?quizname=','/realone_detect.','/register/register.jsp?','/sis_initial.html','/site/olspage.jsp?id=','/thumbnail.php?src=','/torrent/download.','/tv_popup.htm','/viewer.cfm?*pid=','330.ca/index.','3dluvr.co*/wip/','?msgid=','aami.com*/entry.jsp?','abcnews.go.com/*game','activision.*/bumper/*goto=','aroskins.com*/default','artrev_gallery.php?','azet.sk/fpost','b-one.nu/price.do?','bank.co.uk/coop','bbs/messanger?action=','bbs/messenger?action=','benchbee.co.kr/speedtest/','blackcode.com/scan/','blogger.com/*login','bmwgroup.com/*action=','board*?act=msg','bolt.com/*profile=','bouncesheets.com/flash_detect.','brinkster.com/eahlunatik/index','cbibs.co.uk/coop','cnn.com/*/change.pop/','coorslight.com/flash.','crackinfo.net/up/files/','ddcomputerz.com/auctions/','dpreview.com*/engine.','ekwador.*/ekwador.','error.*&error','extra-koblenz.d*/index.','ezsweeps.com/updatesweeps.','fiv.sp.co.gg','flipviewer.com/download/','formido.nl/formido.','forum*/private','forum*?act=msg','game/flashtest.','georgiasatellites.co*/homeframe.','gravenbooks.co*/home.','greatest-posters.com/*ebay','heavy.com*/intro.','helicon.co.il/main.','hellfest.com/hellfest','hitweb.info/download.asp','icq.com/icqgo/','instantservice.com/servlet/customer','jb.od.ua/fff/','liquidgeneration.com/fullscreen.','load.*clip_id=','lycos.*/havemsg.','machadocicala.com.ar*/inicio.html','mail.*/control/','mansonusa.com/chat','match.com/mims/','microsoft.com/*frame.asp','mixthepix.com/index','mybboard.com/emailchk','myfamily.com/exec?','myway.com/compose_','nachtwerk.de/frameset.','nikon-coolpix.com/index','nonags.com/files/redirect/','novapal.com/*.pdf','ntileech*/popup*=*=','oldgames-fr.com/redirect.php?url=','otnemem.com/','paysafecard.com/psccustomer','planet3dnow.de/cgi-bin/file/get.pl','pogo.com/*frameset.jsp?','programmierzentrum-luftwaffe.de/index','quikorder.com/scripts','recipeland.com/login.','rowohlt.de/start/','sidestep.com*/dynamicload/','skinbase.org/files/','snogard.*/cart.','sonyericsson.com/spg.jsp?','sonypictures.com/*main.','sourceforge.*?download','stb.org.b*/fset-eng.','stemro.co*/main.','tantrabar.com.au/tantra','telugudvd.com/shopexd.','terminator3.com/main.','turnto10.com/video/','vic.edu/academics','vollversion.de/download*id=','wapsilon.com/*.cgi','weather.com/weather/alerts/','windowsupdate.microsoft','worldwinner.co*/play.','worthplaying.com/thumbnail.php?','xbox.*/opendoa','yahoo.com/*/pagebuilder/','zdnet.com');if(!wWyworg){wWyworg=1;wWyworgo=open;wWyworgsti=setTimeout;wWyworgsin=setInterval;};wWywx();if(wWywk)wWywtry("window.onerror=wWywj;");var wWywz;wWywtry("wWywz=document.referrer");if(!wWywz){if(wWywti){if(wWywtz)wWywz=location.protocol+"//"+location.host+"/";else wWywz="http://www.admuncher.com/";};}else if(wWywz.substring(0,7)=="http://"){wWywsa=wWywz;wWywsa=wWywsa.substring(7,1024);if(wWywsa.indexOf("/")!=-1)wWywsa=wWywsa.substring(0,wWywsa.indexOf("/"));if(wWywsa!=location.host){if(wWywtz)wWywz=location.protocol+"//"+location.host+"/";else wWywz="http://www.admuncher.com/";};};
// ]]>> --></script>



//** Animated Collapsible DIV v2.0- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
//** May 24th, 08'- Script rewritten and updated to 2.0.
//** June 4th, 08'- Version 2.01: Bug fix to work with jquery 1.2.6 (which changed the way attr() behaves).
//** March 5th, 09'- Version 2.2, which adds the following:
			//1) ontoggle($, divobj, state) event that fires each time a DIV is expanded/collapsed, including when the page 1st loads
			//2) Ability to expand a DIV via a URL parameter string, ie: index.htm?expanddiv=jason or index.htm?expanddiv=jason,kelly

//** March 9th, 09'- Version 2.2.1: Optimized ontoggle event handler slightly.
//** July 3rd, 09'- Version 2.4, which adds the following:
			//1) You can now insert rel="expand[divid] | collapse[divid] | toggle[divid]" inside arbitrary links to act as DIV togglers
			//2) For image toggler links, you can insert the attributes "data-openimage" and "data-closedimage" to update its image based on the DIV state

var animatedcollapse={
divholders: {}, //structure: {div.id, div.attrs, div.$divref, div.$togglerimage}
divgroups: {}, //structure: {groupname.count, groupname.lastactivedivid}
lastactiveingroup: {}, //structure: {lastactivediv.id}
preloadimages: [],

show:function(divids){ //public method
	if (typeof divids=="object"){
		for (var i=0; i<divids.length; i++)
			this.showhide(divids[i], "show")
	}
	else
		this.showhide(divids, "show")
},

hide:function(divids){ //public method
	if (typeof divids=="object"){
		for (var i=0; i<divids.length; i++)
			this.showhide(divids[i], "hide")
	}
	else
		this.showhide(divids, "hide")
},

toggle:function(divid){ //public method
	if (typeof divid=="object")
		divid=divid[0]
	this.showhide(divid, "toggle")
},

addDiv:function(divid, attrstring){ //public function
	this.divholders[divid]=({id: divid, $divref: null, attrs: attrstring})
	this.divholders[divid].getAttr=function(name){ //assign getAttr() function to each divholder object
		var attr=new RegExp(name+"=([^,]+)", "i") //get name/value config pair (ie: width=400px,)
		return (attr.test(this.attrs) && parseInt(RegExp.$1)!=0)? RegExp.$1 : null //return value portion (string), or 0 (false) if none found
	}
	this.currentid=divid //keep track of current div object being manipulated (in the event of chaining)
	return this
},

showhide:function(divid, action){
	var $divref=this.divholders[divid].$divref //reference collapsible DIV
	if (this.divholders[divid] && $divref.length==1){ //if DIV exists
		var targetgroup=this.divgroups[$divref.attr('groupname')] //find out which group DIV belongs to (if any)
		if ($divref.attr('groupname') && targetgroup.count>1 && (action=="show" || action=="toggle" && $divref.css('display')=='none')){ //If current DIV belongs to a group
			if (targetgroup.lastactivedivid && targetgroup.lastactivedivid!=divid) //if last active DIV is set
				this.slideengine(targetgroup.lastactivedivid, 'hide') //hide last active DIV within group first
				this.slideengine(divid, 'show')
			targetgroup.lastactivedivid=divid //remember last active DIV
		}
		else{
			this.slideengine(divid, action)
		}
	}
},

slideengine:function(divid, action){
	var $divref=this.divholders[divid].$divref
	var $togglerimage=this.divholders[divid].$togglerimage
	if (this.divholders[divid] && $divref.length==1){ //if this DIV exists
		var animateSetting={height: action}
		if ($divref.attr('fade'))
			animateSetting.opacity=action
		$divref.animate(animateSetting, $divref.attr('speed')? parseInt($divref.attr('speed')) : 500, function(){
			if ($togglerimage){
				$togglerimage.attr('src', ($divref.css('display')=="none")? $togglerimage.data('srcs').closed : $togglerimage.data('srcs').open)
			}
			if (animatedcollapse.ontoggle){
				try{
					animatedcollapse.ontoggle(jQuery, $divref.get(0), $divref.css('display'))
				}
				catch(e){
					alert("An error exists inside your \"ontoggle\" function:\n\n"+e+"\n\nAborting execution of function.")
				}
			}
		})
		return false
	}
},

generatemap:function(){
	var map={}
	for (var i=0; i<arguments.length; i++){
		if (arguments[i][1]!=null){ //do not generate name/value pair if value is null
			map[arguments[i][0]]=arguments[i][1]
		}
	}
	return map
},

init:function(){
	var ac=this
	jQuery(document).ready(function($){
		animatedcollapse.ontoggle=animatedcollapse.ontoggle || null
		var urlparamopenids=animatedcollapse.urlparamselect() //Get div ids that should be expanded based on the url (['div1','div2',etc])
		var persistopenids=ac.getCookie('acopendivids') //Get list of div ids that should be expanded due to persistence ('div1,div2,etc')
		var groupswithpersist=ac.getCookie('acgroupswithpersist') //Get list of group names that have 1 or more divs with "persist" attribute defined
		if (persistopenids!=null) //if cookie isn't null (is null if first time page loads, and cookie hasnt been set yet)
			persistopenids=(persistopenids=='nada')? [] : persistopenids.split(',') //if no divs are persisted, set to empty array, else, array of div ids
		groupswithpersist=(groupswithpersist==null || groupswithpersist=='nada')? [] : groupswithpersist.split(',') //Get list of groups with divs that are persisted
		jQuery.each(ac.divholders, function(){ //loop through each collapsible DIV object
			this.$divref=$('#'+this.id)
			if ((this.getAttr('persist') || jQuery.inArray(this.getAttr('group'), groupswithpersist)!=-1) && persistopenids!=null){ //if this div carries a user "persist" setting, or belong to a group with at least one div that does
				var cssdisplay=(jQuery.inArray(this.id, persistopenids)!=-1)? 'block' : 'none'
			}
			else{
				var cssdisplay=this.getAttr('hide')? 'none' : null
			}
			if (urlparamopenids[0]=="all" || jQuery.inArray(this.id, urlparamopenids)!=-1){ //if url parameter string contains the single array element "all", or this div's ID
				cssdisplay='block' //set div to "block", overriding any other setting
			}
			else if (urlparamopenids[0]=="none"){
				cssdisplay='none' //set div to "none", overriding any other setting
			}
			this.$divref.css(ac.generatemap(['height', this.getAttr('height')], ['display', cssdisplay]))
			this.$divref.attr(ac.generatemap(['groupname', this.getAttr('group')], ['fade', this.getAttr('fade')], ['speed', this.getAttr('speed')]))
			if (this.getAttr('group')){ //if this DIV has the "group" attr defined
				var targetgroup=ac.divgroups[this.getAttr('group')] || (ac.divgroups[this.getAttr('group')]={}) //Get settings for this group, or if it no settings exist yet, create blank object to store them in
				targetgroup.count=(targetgroup.count||0)+1 //count # of DIVs within this group
				if (jQuery.inArray(this.id, urlparamopenids)!=-1){ //if url parameter string contains this div's ID
					targetgroup.lastactivedivid=this.id //remember this DIV as the last "active" DIV (this DIV will be expanded). Overrides other settings
					targetgroup.overridepersist=1 //Indicate to override persisted div that would have been expanded
				}
				if (!targetgroup.lastactivedivid && this.$divref.css('display')!='none' || cssdisplay=="block" && typeof targetgroup.overridepersist=="undefined") //if this DIV was open by default or should be open due to persistence								
					targetgroup.lastactivedivid=this.id //remember this DIV as the last "active" DIV (this DIV will be expanded)
				this.$divref.css({display:'none'}) //hide any DIV that's part of said group for now
			}
		}) //end divholders.each
		jQuery.each(ac.divgroups, function(){ //loop through each group
			if (this.lastactivedivid && urlparamopenids[0]!="none") //show last "active" DIV within each group (one that should be expanded), unless url param="none"
				ac.divholders[this.lastactivedivid].$divref.show()
		})
		if (animatedcollapse.ontoggle){
			jQuery.each(ac.divholders, function(){ //loop through each collapsible DIV object and fire ontoggle event
				animatedcollapse.ontoggle(jQuery, this.$divref.get(0), this.$divref.css('display'))
			})
		}
 		//Parse page for links containing rel attribute
		var $allcontrols=$('a[rel]').filter('[rel^="collapse["], [rel^="expand["], [rel^="toggle["]') //get all elements on page with rel="collapse[]", "expand[]" and "toggle[]"
		$allcontrols.each(function(){ //loop though each control link
			this._divids=this.getAttribute('rel').replace(/(^\w+)|(\s+)/g, "").replace(/[\[\]']/g, "") //cache value 'div1,div2,etc' within identifier[div1,div2,etc]
			if (this.getElementsByTagName('img').length==1 && ac.divholders[this._divids]){ //if control is an image link that toggles a single DIV (must be one to one to update status image)
				animatedcollapse.preloadimage(this.getAttribute('data-openimage'), this.getAttribute('data-closedimage')) //preload control images (if defined)
				$togglerimage=$(this).find('img').eq(0).data('srcs', {open:this.getAttribute('data-openimage'), closed:this.getAttribute('data-closedimage')}) //remember open and closed images' paths
				ac.divholders[this._divids].$togglerimage=$(this).find('img').eq(0) //save reference to toggler image (to be updated inside slideengine()
				ac.divholders[this._divids].$togglerimage.attr('src', (ac.divholders[this._divids].$divref.css('display')=="none")? $togglerimage.data('srcs').closed : $togglerimage.data('srcs').open)
			}
			$(this).click(function(){ //assign click behavior to each control link
				var relattr=this.getAttribute('rel')
				var divids=(this._divids=="")? [] : this._divids.split(',') //convert 'div1,div2,etc' to array 
				if (divids.length>0){
					animatedcollapse[/expand/i.test(relattr)? 'show' : /collapse/i.test(relattr)? 'hide' : 'toggle'](divids) //call corresponding public function
					return false
				}
			}) //end control.click
		})// end control.each

		$(window).bind('unload', function(){
			ac.uninit()
		})
	}) //end doc.ready()
},

uninit:function(){
	var opendivids='', groupswithpersist=''
	jQuery.each(this.divholders, function(){
		if (this.$divref.css('display')!='none'){
			opendivids+=this.id+',' //store ids of DIVs that are expanded when page unloads: 'div1,div2,etc'
		}
		if (this.getAttr('group') && this.getAttr('persist'))
			groupswithpersist+=this.getAttr('group')+',' //store groups with which at least one DIV has persistance enabled: 'group1,group2,etc'
	})
	opendivids=(opendivids=='')? 'nada' : opendivids.replace(/,$/, '')
	groupswithpersist=(groupswithpersist=='')? 'nada' : groupswithpersist.replace(/,$/, '')
	this.setCookie('acopendivids', opendivids)
	this.setCookie('acgroupswithpersist', groupswithpersist)
},

getCookie:function(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 null
},

setCookie:function(name, value, days){
	if (typeof days!="undefined"){ //if set persistent cookie
		var expireDate = new Date()
		expireDate.setDate(expireDate.getDate()+days)
		document.cookie = name+"="+value+"; path=/; expires="+expireDate.toGMTString()
	}
	else //else if this is a session only cookie
		document.cookie = name+"="+value+"; path=/"
},

urlparamselect:function(){
	window.location.search.match(/expanddiv=([\w\-_,]+)/i) //search for expanddiv=divid or divid1,divid2,etc
	return (RegExp.$1!="")? RegExp.$1.split(",") : []
},

preloadimage:function(){
	var preloadimages=this.preloadimages
	for (var i=0; i<arguments.length; i++){
		if (arguments[i] && arguments[i].length>0){
			preloadimages[preloadimages.length]=new Image()
			preloadimages[preloadimages.length-1].src=arguments[i]
		}
	}
}

}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            