var scrollCount = originalScrollCount = 1;
var orginalBackgroundColor;
var orginalColor;
var scrollDir;
var browser = BrowserDetect.browser;

function InitSchedule() 
{
    AttachRotatorScrollEvent();
    AttachWheelEvent(scheduleDisplay);
    ImagePreLoader(); 
    ChangeBackgroundColor(GetScheduleRotatorFrameContainer());    
    setInterval('SetScheduleDay(selectedDay)', 1000*60*30);
};

function ImagePreLoader()
{
    MM_preloadImages('Images/Mon_On.jpg','Images/Tue_On.jpg','Images/Web_On.jpg','Images/Thu_On.jpg','Images/Fri_On.jpg','Images/Sat_On.jpg','Images/Sun_On.jpg','Images/NextSchedule_On.jpg','Images/PreviousSchedule_On.jpg')
};

function SetScheduleDay2(day)
{
    if(PageMethods != null)
        PageMethods.SetScheduleDay(day, OnSetScheduleDayComplete, OnSetScheduleDayFailed);
};

function SetScheduleDay(day)
{
    if(ScheduleService != null)
        ScheduleService.SetScheduleDay(day, OnSetScheduleDayComplete, OnSetScheduleDayFailed);    
}; 

function OnSetScheduleDayComplete()
{
    GetScheduleAjaxPanel().AjaxRequest();
    window.setTimeout('ChangeBackgroundColor(GetScheduleRotatorFrameContainer())', 1500);
};

function OnSetScheduleDayFailed()
{
    window.location.reload();
};

function ChangeBackgroundColor(frameContainer)
{
    if(frameContainer == null && frameContainer.childNodes == null)
    {
        return;
    }
   
    var count = frameCount = frameContainer.childNodes.length
    var frame;
    var childFrame;
    var activeSlot;
    
    var startHour;
    var startMinute;
    var startTimePeriod;
    var startTimeAsUnits;
    
    var activeSlotIndex = 0;
    var lastActiveSlot;
    var timeSlot;
    
    var currentTimeHour = parseInt(currentTime.substring(0,2), 10);
    var currentTimeMinute = parseInt(currentTime.substring(5,3), 10);
    var currentTimePeriod = currentTime.substring(8, 5);

    var currentTimeToStartTimeDifference = undefined;
       
    // convert to 24hour clock
    if (currentTimePeriod == " PM")
    {
        if (currentTimeHour < 12)
        {
            currentTimeHour += 12;
        }
    }
    else if (currentTimePeriod == " AM")
    {
        if (currentTimeHour == 12)
        {
            currentTimeHour = 0;
        }
    }

    var currentTimeAsUnits = currentTimeHour + (currentTimeMinute / 60);
    
    for (i=0; i<=count; i++)
    {
        frame = frameContainer.childNodes[i];        
        
        if(frame != null)
        {
            childFrame = frame.childNodes.item(0);
        }
        
        if(childFrame != null && frame != null)
        {
            if((i % 2) == 0)
            {
                frame.style.backgroundColor = "#ccdceb";
            }
            else
            {
                frame.style.backgroundColor = "#d9e5f1";
            }
  
            if(browser == "Explorer")
            {
                activeSlot = childFrame.childNodes[0];
                timeSlot = activeSlot.childNodes[0];
            }
            else
            {
                activeSlot = GetScheduleActiveSlot(i).childNodes[1].childNodes[1];
                timeSlot = activeSlot.childNodes[1];
            }
     
            if(activeSlot != null && timeSlot != null)
            {                                
                startHour = parseInt(timeSlot.innerHTML.substring(0,2), 10);
                startMinute = parseInt(timeSlot.innerHTML.substring(5,3), 10);
                startTimePeriod = timeSlot.innerHTML.substring(8, 5);
               
                // convert to 24 hour clock
                if (startTimePeriod == " PM")
                {
                    if (startHour < 12)
                    {
                        startHour += 12;
                    }
                }
                else if (startTimePeriod == " AM")
                {
                    if (startHour == 12)
                    {
                        startHour = 0;
                    }
                }

                startTimeAsUnits = startHour + (startMinute / 60);

                if (today == selectedDay) {
                    if (startTimeAsUnits <= currentTimeAsUnits) { // inspect only the current or past shows
                        if (currentTimeToStartTimeDifference == undefined || (currentTimeToStartTimeDifference > (currentTimeAsUnits - startTimeAsUnits))) {
                            activeSlotIndex = i;
                            lastActiveSlot = activeSlot;
                            
                            currentTimeToStartTimeDifference = currentTimeAsUnits - startTimeAsUnits;
                        }
                    }
                }            
            }
        }
    }
    
    if(lastActiveSlot != null)
    {
        lastActiveSlot.style.backgroundColor = "#fe6517";                        
        lastActiveSlot.style.color = "#ffffff";
    }

    if(activeSlotIndex > 4 && activeSlotIndex < count)
    {
        for(i=0; i < activeSlotIndex-2; i++)
        {
            Scroll("Down");
        }
    }
};

function OnmouseoverChangeBackground(frame)
{
    if(frame != null)
    {    
        orginalBackgroundColor = frame.style.backgroundColor;
        orginalColor = frame.style.color;
        
        frame.style.backgroundColor = "#E3EBF3";
        frame.style.color = "#07345d";
    }
}

function OnmouseoutRestoreBackground(frame)
{
    if(orginalBackgroundColor != null)    
        frame.style.backgroundColor = orginalBackgroundColor;
    
    if(orginalColor != null)
        frame.style.color = orginalColor;
}
   
function Scroll(dir)
{
    var rotator = GetScheduleRotator();
    
    if (rotator.NumberOfFrames > 6)
    {
        rotator.StopRotator();
        
        if (dir == "Up")              
            rotator.ScrollDirection = "Down";
        else
            rotator.ScrollDirection = "Up";
            
        scrollDir = dir;
        //rotator.StartRotator();              
        
        if (dir == "Up")            
            rotator.ScrollDownNextFrame();
        else
            rotator.ScrollUpNextFrame(); 
                           
        rotator.StopRotator();
    }
};

function AttachRotatorScrollEvent()
{
    GetScheduleRotator().attachEvent("OnClientFrameChanged", "OnScheduleRotatorScroll");
};

function OnScheduleRotatorScroll(sender, args)
{
    scrollCount--;
        
    if(scrollCount > 0)
        Scroll(scrollDir);
    
    if(originalScrollCount == Math.abs(scrollCount))
        scrollCount = originalScrollCount
};

function OnMouseWheelScroll(delta)
{
    if (delta < 0)
    {
	    Scroll("Down");
    }
    else
    {
	    Scroll("Up");
    }
};