function SojernSlides(){}

SojernSlides.slide_object = null;
SojernSlides.tab_object = null;
SojernSlides.slides = null;
SojernSlides.tabs = null;
SojernSlides.current_slide = null;
SojernSlides.current_tab = null;
SojernSlides.slide_interval = 12; // interval in seconds
SojernSlides.slide_initial_delay = 12; // interval in seconds
SojernSlides.slides_paused = false;
SojernSlides.slides_keep_paused = false;

SojernSlides.currently_fading = false;

/**
 *  Initializes the feed list and call the run method.
 *  @param {string} div_id The div id of the news feed.
 */
SojernSlides.initialize_slides = function()
{
    var div_id = 'slides';
    SojernSlides.slide_object = document.getElementById(div_id);
    SojernSlides.slides = SojernSlides.slide_object.childNodes;
    
    var div_id = 'slide_tabs';
    SojernSlides.tab_object = document.getElementById(div_id);
    SojernSlides.tabs = SojernSlides.tab_object.childNodes;

    // Remove the "nodes" we don't need
    for(var i = 0; i < SojernSlides.slides.length; i++)
    {
        var node = SojernSlides.slides[i];
        if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
        {
            SojernSlides.slide_object.removeChild(node);        
        }
    }
    
    for(var i = 0; i < SojernSlides.tabs.length; i++)
    {
        var node = SojernSlides.tabs[i];
        if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
        {
            SojernSlides.tab_object.removeChild(node);        
        }
    }
    
    // Setup the div classes
    for(var i = 0; i < SojernSlides.tabs.length; i++)
    {
        var node = SojernSlides.tabs[i];
      
        if (node.id == "slideTab1")
        {
          // first node, lets start by showing this
          SojernSlides.update_display_style('1',"selected");
        }
        else
        {
          SojernSlides.update_display_style((i+1) + '', "notSelected");
        }
        $("#"+node.id).get(0).onmouseover=function()
        {
          SojernSlides.tab_hover(this,'in');
        } 
        $("#"+node.id).get(0).onmouseout=function()
        {
          SojernSlides.tab_hover(this,'out');
        }
    }
    
    if (SojernSlides.slides.length > 2 && SojernSlides.tabs.length > 2 && SojernSlides.slides.length == SojernSlides.tabs.length) //+1 is for the blank slide
    {
        //Pause the feed if the users mouses over the div
        SojernSlides.tab_object.onmouseover=function()
        {		
            SojernSlides.slides_paused = true;
        }
        //Resume the feed if the users mouse leaves the div
        SojernSlides.tab_object.onmouseout=function()
        {
            if (SojernSlides.slides_keep_paused == false)
              SojernSlides.slides_paused = false;
        }

        //Pause the feed if the users mouses over the div
        SojernSlides.slide_object.onmouseover=function()
        {		
            SojernSlides.slides_paused = true;
        }
        //Resume the feed if the users mouse leaves the div
        SojernSlides.slide_object.onmouseout=function()
        {
            if (SojernSlides.slides_keep_paused == false)
              SojernSlides.slides_paused = false;
        }
        
        SojernSlides.slide_object.onClick=function()
        {		
            SojernSlides.slides_paused = true;
            SojernSlides.slides_keep_paused = true;
        }
        
        //Adds and initial delay before loading the News Feed
        window.setTimeout("SojernSlides.run(2)", SojernSlides.slide_initial_delay*1000);
    }
}

/**
 *  Runs the partner feed 
 *  @param {string} div_id The div id of the partner feed.
 *  @param {string} count The current count of the partner element.
 */
SojernSlides.run = function(id)
{
    if (SojernSlides.slides_keep_paused == false)
    {
      if (SojernSlides.slides_paused == false) 
      {
        SojernSlides.fade(SojernSlides.current_slide);
    
        id += 1
    
        if (id > SojernSlides.slides.length)
          id = 1;
      }
      //Pause and then display the next partner item
      window.setTimeout("SojernSlides.run(" + id + ")", SojernSlides.slide_interval*1000);
    }
}

SojernSlides.fade = function(slide, next_slide)
{
  if (SojernSlides.currently_fading == true)
  {
    return false;
  }
  SojernSlides.currently_fading = true;
  if(next_slide == null)
  {
    next_slide = parseInt(slide) < SojernSlides.slides.length ? (parseInt(slide) + 1) : 1; //set slide as next slide
  }
  else
  {
    next_slide = next_slide.replace(/[^0-9]/g, ''); //Get slide #
  }
  
  if (slide != next_slide) {
    
    $("#slide"+slide).fadeOut(500,function(){$("#slide"+slide).hide;$("#slide"+next_slide).show;$("#slide"+next_slide).fadeIn(500, function() {SojernSlides.currently_fading = false; SojernSlides.hide_others(slide,next_slide);});});
    $("#slideTab"+slide+"selected").fadeOut(1,function(){$("#slideTab"+slide+"notSelected").fadeIn(1);});
    $("#slideTab"+next_slide+"notSelected").fadeOut(1,function(){$("#slideTab"+next_slide+"selected").fadeIn(1);});

    SojernSlides.current_slide = next_slide;
    SojernSlides.current_tab = $("#slideTab"+next_slide).get(0);
  }
  
  return false;
}

SojernSlides.hide_others = function(slide,next_slide)
{
  for(var i = 0; i < SojernSlides.slides.length; i++)
  {
      slide_num = i+1;
      
      if (slide_num != next_slide)
      {
        $("#slide"+slide_num).fadeOut(1);
        $("#slide"+slide_num).hide;
      }
  }
}

SojernSlides.update_display_style = function(slide, status)
{
  
  if (status == "selected")
  { 
    $("#slide"+slide).get(0).setAttribute("class","slideHide");
    $("#slide"+slide).get(0).setAttribute("className","slideHide");
    
    $("#slide"+slide).show;
    $("#slide"+slide).fadeIn();
    
    $("#slideTab"+slide+"notSelected").hide;
    $("#slideTab"+slide+"notSelected").fadeOut(1);
    $("#slideTab"+slide+"selected").fadeIn(1);
    
    SojernSlides.current_slide = slide;
    SojernSlides.current_tab = $("#slideTab"+slide).get(0);
  }
  else
  {
    $("#slide"+slide).hide;
    $("#slideTab"+slide+"selected").hide;
    $("#slideTab"+slide+"notSelected").show;
    $("#slideTab"+slide+"notSelected").fadeIn();
    
    $("#slideTab"+slide+"selected").get(0).setAttribute("style","display:none;");
    $("#slideTab"+slide+"notSelected").get(0).setAttribute("style","display:inline;");
    
    $("#slide"+slide).get(0).setAttribute("class","slideHide");
    $("#slide"+slide).get(0).setAttribute("className","slideHide");
  }
}

SojernSlides.tab_hover = function(div_obj, in_or_out) {
  var selectedTab = $("#"+div_obj.id + "selected").get(0);
  var notSelectedTab = $("#"+div_obj.id + "notSelected").get(0);
  
  if(in_or_out == "in")
  {
    selectedTab.setAttribute("style","display:inline;");
    notSelectedTab.setAttribute("style","display:none;");
  }
  else
  {
    if (SojernSlides.current_tab != div_obj)
    {
      selectedTab.setAttribute("style","display:none;");
      notSelectedTab.setAttribute("style","display:inline;");
    }
  }
}

SojernSlides.initialize_slides();
