﻿/* This is our JS File */
var Pixel_Ad_Sliders = new Array();

function Pixel_Slider_AddLoadEvent(obj, evType, fn)
{ 
     if (obj.addEventListener)
     { 
       obj.addEventListener(evType, fn, false); 
       return true; 
     } 
     else if (obj.attachEvent)
     { 
       var r = obj.attachEvent("on"+evType, fn); 
       return r; 
     } 
     else 
     { 
       return false; 
     } 
}




function Pixel_Slider_NavLeft(sender, sliderId)
{
    var slider = Pixel_Fetch_Ad_Slider(sliderId); 
    
    if(!slider.Sliding)
    {
        Pixel_SlideShow_Slide(slider, "right");
    }
}

function Pixel_Slider_NavPausePlay(sender, sliderId) {

    var slider = Pixel_Fetch_Ad_Slider(sliderId);

    if (slider.SliderGroupName.length > 0) {
        var groups = Pixel_Fetch_Ad_Slider_Group(slider.SliderGroupName);

        for (var i = 0; i < groups.length; i++) {
            var currentSlider = groups[i];

            Pixel_Slider_NavPausePlay_Delegate(currentSlider.NavPlayPauseButton, currentSlider.ID);
        }
    }
    else {
        Pixel_Slider_NavPausePlay_Delegate(sender, sliderId);            
    }
}


function Pixel_Slider_NavPausePlay_Delegate(sender, sliderId)
{
    var slider = Pixel_Fetch_Ad_Slider(sliderId);   
    
    if(sender.className == "nav_pause")
    {
        slider.Paused = true;
        sender.className = "nav_play";
    }
    else
    {
        slider.Paused = false;
        sender.className = "nav_pause";
    }
}

function Pixel_Slider_NavRight(sender, sliderId) {
    
    var slider = Pixel_Fetch_Ad_Slider(sliderId);

    if (!slider.Sliding) {
        Pixel_SlideShow_Slide(slider, "left");
    }
    
    
   
}


function Pixel_Add_Slider(sliderObj)
{
    Pixel_Ad_Sliders.push(sliderObj);
}

function Pixel_Fetch_Ad_Slider(sliderId)
{
    for(var i=0; i<Pixel_Ad_Sliders.length; i++)
    {
        if(Pixel_Ad_Sliders[i].ID == sliderId)
        {
            return Pixel_Ad_Sliders[i];
        }
    }
    return null;
}


function Pixel_Fetch_Ad_Slider_Group(groupName) {
    var retVal = new Array();
    for (var i = 0; i < Pixel_Ad_Sliders.length; i++) {
        if (Pixel_Ad_Sliders[i].SliderGroupName == groupName) {
            retVal.push(Pixel_Ad_Sliders[i]);
        }
    }
    return retVal;
} 

function Pixel_StartSlideShow(slideShowId)
{
    var slider = Pixel_Fetch_Ad_Slider(slideShowId);   
 
    var slideBarTable = Pixel_Get_SlideBar_Table(slider);
    
    
    slideBarTable.style.visibility = "visible";
    
    
     var masterIntervalId = setInterval(function ()
     {
        var now = new Date();
        
        var nextTime = (slider.LastSlideTime.valueOf() + (slider.SlideDelay * 1000));
        
       
        
        if(now>=nextTime)
        {
            if(!slider.Sliding && !slider.Paused)
            {
                Pixel_SlideShow_Slide(slider, "left");
            }
        }
        
     }, 200);
 }


function Pixel_SlideShow_Slide(slider, direction) {

    if (slider.SliderGroupName.length > 0) {
        var groups = Pixel_Fetch_Ad_Slider_Group(slider.SliderGroupName);

        for (var i = 0; i < groups.length; i++) {
            var currentSlider = groups[i];

            if (!currentSlider.Sliding) {
                _Pixel_SlideShow_Slide_Delegate(currentSlider, direction);
            }
        }
    }
    else if (!slider.Sliding) {
    _Pixel_SlideShow_Slide_Delegate(slider, direction);
    }
}


function _Pixel_SlideShow_Slide_Delegate(slider, direction) {
    
    var slideElement = Pixel_Get_Current_Slide(slider);
    var slideBarTable = Pixel_Get_SlideBar_Table(slider);
    var slideBarRow = Pixel_Get_SlideBar_Row(slider);
    
    
    var slideDirection = slider.SlideDirection;
    var horizontal = slideDirection.toLowerCase()=="horizontal";
    var vertical = !horizontal;
    
    
    var currentPosition = 0;
    
    var maxPosition;
    
    if(horizontal)
    {
        maxPosition = slider.ContentWidth;
    }
    else
    {
        maxPosition = slider.ContentHeight;
    }
    
    var iterationDivider = slider.MotionSpeed;
    var iteration = maxPosition/iterationDivider;
        
   
    clearInterval(slider.currentSlideInterValID);
    
    slider.currentSlideInterValID = setInterval(function ()
    {
     
        var marginOfError = 0; //direction=="left"?5:-5;
        
        if(currentPosition>(maxPosition+marginOfError))
        {
            if(direction=="left")
            {
              
                Pixel_MoveStartCellToEnd(slider);
                
                if(horizontal)
                {
                    slideBarTable.style.marginLeft = "0px";
                }
                else
                {
                    slideBarTable.style.marginTop = "0px";
                }
                
                slider.CurrentSlide = (slider.CurrentSlide + 1) % slider.NumberOfSlides;
                slider.Sliding = false;
                
            }
            else
            {
                slider.CurrentSlide = (slider.CurrentSlide - 1) % slider.NumberOfSlides;
                slider.Sliding = false;
            }
            
            
            slider.LastSlideTime = new Date();
    
            clearInterval(slider.currentSlideInterValID);
            
        }
        else
        {
        
            
            if(direction=="left")
            {
                
                if(horizontal)
                {
                    slideBarTable.style.marginLeft = "-" + Math.round(currentPosition) + "px";
                }
                else
                {
                    slideBarTable.style.marginTop = "-" + Math.round(currentPosition) + "px";
                }
            }
            else
            {
                if(!slider.Sliding)
                {
                    
                    Pixel_MoveDuplicateCellStart(slider);
                    slider.DuplicateCellCreated = true;
                    
                    if(horizontal)
                    {
                        currentPosition = 0 - slider.ContentWidth;
                    }
                    else
                    {
                        currentPosition = 0 - slider.ContentHeight;
                    }
                    
                    
                    maxPosition = 0;
                }
                else
                {
                
                    if(slider.DuplicateCellCreated)
                    {
                        Pixel_SwapDuplicteWithRealCell(slider);
                        slider.DuplicateCellCreated = false;
                    }
                    if(horizontal)
                    {
                        slideBarTable.style.marginLeft = Math.round(currentPosition) + "px";
                    }
                    else
                    {
                    
                        slideBarTable.style.marginTop = Math.round(currentPosition) + "px";
                    }
                }
            }
            
            slider.Sliding = true;
            
            currentPosition += iteration;   
            
          
            
           
            iteration = Math.round((maxPosition - currentPosition) / iterationDivider);
            
           
            if(iteration==0)
            {
                iteration = 1;
                
            }
            
            
       } 
       
    }
    ,1); 
}

// This method moves the start cell to th eend
function Pixel_MoveStartCellToEnd(slider)
{

    var slideBarTable = Pixel_Get_SlideBar_Table(slider);
    var slideBarRow = Pixel_Get_SlideBar_Row(slider); 
    
    var slideElement = Pixel_Get_Current_Slide(slider);
    
    
     // Now the triky part we remove this slide and move it to the end
    var newCell = slideElement.cloneNode(true);
    
    if(newCell!=null)
    {
        slideBarRow.appendChild(newCell);
        slideBarRow.removeChild(slideElement);
    }
}


// This method moves the end cell to start
function Pixel_MoveDuplicateCellStart(slider)
{
    var slideElement = Pixel_Get_Last_Slide(slider);
    var currentElement = Pixel_Get_Current_Slide(slider);
    var slideBarTable = Pixel_Get_SlideBar_Table(slider);
    var slideBarRow = Pixel_Get_SlideBar_Row(slider);
    
     // Now the triky part we remove this slide and move it to the end
    var newCell = currentElement.cloneNode(true);    
    
    
    slideBarRow.insertBefore(newCell, currentElement);
      
}

// This method moves the end cell to start
function Pixel_SwapDuplicteWithRealCell(slider)
{
    var slideElement = Pixel_Get_Last_Slide(slider);
    var currentElement = Pixel_Get_Current_Slide(slider);
    var slideBarTable = Pixel_Get_SlideBar_Table(slider);
    var slideBarRow = Pixel_Get_SlideBar_Row(slider);
    
     // Now the triky part we remove this slide and move it to the end
     
     
    var newCell = currentElement;
    newCell.innerHTML = slideElement.innerHTML;
    newCell.className = slideElement.className;
    newCell.style.width = slideElement.style.width;
    newCell.style.height = slideElement.style.height;
    newCell.style.backgroundColor =  currentElement.style.backgroundColor;
    
    
    var revisedSlideBarRow = Pixel_Get_SlideBar_Row(slider);
    
    
    revisedSlideBarRow.removeChild(slideElement);        
    
}

   
function Pixel_Get_Current_Slide(slider)
{
    // the currentslide is alway childNode 0 of the row
    var RowElement = Pixel_Get_SlideBar_Row(slider);
 
    for(var i=0; i<RowElement.childNodes.length; i++)
    {
        if(RowElement.childNodes[i]!=null)
        {
            if(RowElement.childNodes[i].tagName!=null)
            {
                if(RowElement.childNodes[i].tagName.toLowerCase()=="div")
                {
                    return RowElement.childNodes[i];
                }
                else if(RowElement.childNodes[i].tagName.toLowerCase()=="td")
                {
                    return RowElement.childNodes[i];
                }
            }
        }
    }
 
}

 function Pixel_Get_Last_Slide(slider)
{
    // the currentslide is alway childNode 0 of the row
    var RowElement = Pixel_Get_SlideBar_Row(slider);
 
    for(var i=RowElement.childNodes.length-1; i>=0; i--)
    {
        if(RowElement.childNodes[i]!=null)
        {
            if(RowElement.childNodes[i].tagName!=null)
            {
                if(RowElement.childNodes[i].tagName.toLowerCase()=="div")
                {
                    return RowElement.childNodes[i];
                }
                else if(RowElement.childNodes[i].tagName.toLowerCase()=="td")
                {
                    return RowElement.childNodes[i];
                }
            }
        }
    }
}




function Pixel_Get_SlideBar_Table(slider)
{
  return document.getElementById(slider.ID + "_slider_slide_bar_table");
}

 function Pixel_Get_SlideBar_Row(slider)
{
    return document.getElementById(slider.ID + "_slider_slide_bar_row");
}