//** Featured Content Slider script- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
//** May 2nd, 08'- Script rewritten and updated to 2.0.

var featuredcontentslider={

//3 variables below you can customize if desired:
ajaxloadingmsg: '<div>Loading...</div>',
bustajaxcache: true, //bust caching of external ajax page after 1st request?
enablepersist: true, //persist to last content viewed when returning to page?
setting:{},

ajaxconnect:function(){
  var page_request = false
  if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")
    }
    catch (e){
      try{
      page_request = new ActiveXObject("Microsoft.XMLHTTP")
      }
      catch (e){}
    }
  }
  else if (window.XMLHttpRequest) // if Mozilla, Safari etc
    page_request = new XMLHttpRequest()
  else
    return false
  var pageurl=this.setting.contentsource[1]
  page_request.onreadystatechange=function(){
    featuredcontentslider.ajaxpopulate(page_request)
  }
  document.getElementById(this.setting.id).innerHTML=this.ajaxloadingmsg
  var bustcache=(!this.bustajaxcache)? "" : (pageurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
  page_request.open('GET', pageurl+bustcache, true)
  page_request.send(null)
},

ajaxpopulate:function(page_request){
  if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
    document.getElementById(this.setting.id).innerHTML=page_request.responseText
    this.buildpaginate()
  }
},

buildfeaturecontentdivs:function(){
  var alldivs=document.getElementById(this.setting.id).getElementsByTagName("div")
  for (var i=0; i<alldivs.length; i++){
    if (this.css(alldivs[i], "featurecontentdiv", "check")){ //check for DIVs with class "featurecontentdiv"
      this.setting.featurecontentdivs.push(alldivs[i])
    }
  }
},

buildpaginate:function(){
  this.buildfeaturecontentdivs()
  var sliderdiv=document.getElementById(this.setting.id)
  var pdiv=document.getElementById("paginate-"+this.setting.id)
  var phtml=""
  var toc=this.setting.toc
  var landing=this.setting.landing
  var google=""
  var nextprev=this.setting.nextprev
  if (typeof toc=="string" && toc!="markup" || typeof toc=="object"){
    phtml+= '<A href="#" id="pause_homepagefeature" class="button" OnClick="featuredcontentslider.turnoffrotation()"><img src="'+ this.setting.pathtotheme+'/images/pause_btn.gif"></A>';
    phtml+= '<A href="index.htm#" id="play_homepagefeature" class="button" style="display:none;" OnClick="featuredcontentslider.turnonrotation()"><img src="'+ this.setting.pathtotheme+'/images/play_btn.gif"></A>';
    for (var i=1; i<=this.setting.featurecontentdivs.length; i++){
      phtml+='<span name="tocnumber" class="toc number"> '+(typeof toc=="string"? toc.replace(/#increment/, i) : toc[i-1])+' </span>';
      if(i<this.setting.featurecontentdivs.length) {
        phtml+= '<A class="bullet">&bull;</A>';
      }
    }
    phtml=(nextprev[0]!=''? '<a href="#prev" class="prev">'+nextprev[0]+'</a> ' : '') + phtml + (nextprev[1]!=''? '<a href="index.htm#next" class="next">'+nextprev[1]+'</a>' : '')
    pdiv.innerHTML=phtml
  }
  var pdivlinks=pdiv.getElementsByTagName("span")
  var toclinkscount=0 //var to keep track of actual # of toc links
  for (var i=0; i<pdivlinks.length; i++){
    if (this.css(pdivlinks[i], "toc", "check")){
      if (toclinkscount>this.setting.featurecontentdivs.length-1){ //if this toc link is out of range (user defined more toc links then there are contents)
        pdivlinks[i].style.display="none" //hide this toc link
        continue
      }
      pdivlinks[i].setAttribute("rel", ++toclinkscount) //store page number inside toc link
      this.setting.toclinks.push(pdivlinks[i])
    }
    else if (this.css(pdivlinks[i], "prev", "check") || this.css(pdivlinks[i], "next", "check")){ //check for links with class "prev" or "next"
      pdivlinks[i].onclick=function(){
        featuredcontentslider.turnpage(this.className)
        return false
      }
    }
  }
  this.turnpage(this.setting.currentpage, true)
  if (this.setting.autorotate[0]){
    sliderdiv.onclick=function(){
      featuredcontentslider.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id])
    }

    //sliderdiv.onmouseover=function(){featuredcontentslider.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id])}
    sliderdiv.onmouseout=function(){featuredcontentslider.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id]); featuredcontentslider.autorotate()}
    this.setting.autorotate[1]=this.setting.autorotate[1]+(1/this.setting.enablefade[1]*50) //add time to run fade animation (roughly) to delay between rotation
   this.autorotate()
  }
},

turnpage:function(thepage, autocall){
  if(this.setting.rotation == 'Off') return true
  var currentpage=this.setting.currentpage //current page # before change
  var totalpages=this.setting.featurecontentdivs.length
  var turntopage=(/prev/i.test(thepage))? currentpage-1 : (/next/i.test(thepage))? currentpage-1 : parseInt(thepage)
  turntopage=(turntopage<1)? totalpages : (turntopage>totalpages)? 1 : turntopage //test for out of bound and adjust
  if (turntopage==this.setting.currentpage && typeof autocall=="undefined") //if a pagination link is clicked on repeatedly
    return
  this.setting.currentpage=turntopage
  this.setting.featurecontentdivs[turntopage-1].style.zIndex=++this.setting.topzindex
  this.cleartimer(window["fcsfade"+this.setting.id])
  if (this.setting.enablefade[0]==true){
    this.setting.curopacity=0
    this.setting.cacheprevpage=this.setting.prevpage
    this.fadeup()
  }
  if (this.setting.enablefade[0]==false) //if fade is disabled, fire onChange event immediately (verus after fade is complete)
    this.setting.onChange(this.setting.prevpage, this.setting.currentpage)
  this.setting.featurecontentdivs[turntopage-1].style.visibility="visible"
  if (this.setting.prevpage<=this.setting.toclinks.length) //make sure pagination link exists (may not if manually defined via "markup", and user omitted)
    this.css(this.setting.toclinks[this.setting.prevpage-1], "selected", "remove")
  if (turntopage<=this.setting.toclinks.length) //make sure pagination link exists (may not if manually defined via "markup", and user omitted)
    this.css(this.setting.toclinks[turntopage-1], "selected", "add")
  this.setting.prevpage=turntopage
  if (this.enablepersist)
    this.setCookie("fcspersist"+this.setting.id, turntopage)
},

setopacity:function(value){ //Sets the opacity of targetobject based on the passed in value setting (0 to 1 and in between)
  var targetobject=this.setting.featurecontentdivs[this.setting.currentpage-1]
  if (targetobject.filters && targetobject.filters[0]){ //IE syntax
    if (typeof targetobject.filters[0].opacity=="number") //IE6
      targetobject.filters[0].opacity=value*100
    else //IE 5.5
      targetobject.style.filter="alpha(opacity="+value*100+")"
  }
  else if (typeof targetobject.style.MozOpacity!="undefined") //Old Mozilla syntax
    targetobject.style.MozOpacity=value
  else if (typeof targetobject.style.opacity!="undefined") //Standard opacity syntax
    targetobject.style.opacity=value
  this.setting.curopacity=value
},

fadeup:function(){
  if (this.setting.curopacity<1){
    this.setopacity(this.setting.curopacity+this.setting.enablefade[1])
    window["fcsfade"+this.setting.id]=setTimeout(function(){featuredcontentslider.fadeup()}, 50)
  }
  else
    this.setting.onChange(this.setting.cacheprevpage, this.setting.currentpage)
},

cleartimer:function(timervar){
  if (typeof timervar!="undefined"){
    clearTimeout(timervar)
    clearInterval(timervar)
  }

},

css:function(el, targetclass, action){
  var needle=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)", "ig")
  if (action=="check")
    return needle.test(el.className)
  else if (action=="remove")
    el.className=el.className.replace(needle, "")
  else if (action=="add")
    el.className+=" "+targetclass
},

autorotate:function(){
 window["fcsautorun"+this.setting.id]=setInterval(function(){featuredcontentslider.turnpage("next")}, this.setting.autorotate[1])
},

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(setting){
  var persistedpage=this.getCookie("fcspersist"+setting.id) || 1
  setting.featurecontentdivs=[]
  setting.toclinks=[]
  setting.topzindex=0
  setting.currentpage=(this.enablepersist)? persistedpage : 1
  setting.prevpage=setting.currentpage
  setting.curopacity=0
  setting.onChange=setting.onChange || function(){}
  setting.rotation = 'on'
  this.setting = setting
  if (setting.contentsource[0]=="inline")
    this.buildpaginate()
  if (setting.contentsource[0]=="ajax")
    this.ajaxconnect()
},

turnoffrotation:function() {
  var sliderdiv=document.getElementById(this.setting.id)
  this.setting.autorotate[0] = false;
  this.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id])
  //sliderdiv.onmouseover=function(){}
  sliderdiv.onmouseout=function(){}
  but = document.getElementById("play_" + this.setting.id)
  but.style.display='block'
  but = document.getElementById("pause_" + this.setting.id)
  but.style.display='none'
  this.setting.rotation = 'Off'

},

turnonrotation:function() {
  var sliderdiv=document.getElementById(this.setting.id)
  this.setting.autorotate[0] = true;
  this.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id])
  //sliderdiv.onmouseover=function(){featuredcontentslider.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id])}
  sliderdiv.onmouseout=function(){featuredcontentslider.cleartimer(window["fcsautorun"+featuredcontentslider.setting.id]); featuredcontentslider.autorotate()}
  but = document.getElementById("play_" + this.setting.id)
  but.style.display='none'
  but = document.getElementById("pause_" + this.setting.id)
  but.style.display='block'
  this.setting.rotation = 'On'
},

showimage:function(rel) {
  this.setting.rotation = 'On'
  featuredcontentslider.turnpage(rel)
  this.setting.rotation = 'Off'
  featuredcontentslider.turnoffrotation()
}

}


