﻿////////////////////////////////////////////////////////////////////////////////
// Function calls for story grid
////////////////////////////////////////////////////////////////////////////////

//Variable to indicate if autorefresh is turned on
var autorefreshTurnedOn = 'n';
var scrollcount = 0;

function StoryAutorefresh() {
    // Get the Y position of the scrollbar (what pixel in the grid is visible at the top of the viewport)
    var pos = $('storyGrid').scrollTop;
    //If we are within the top 80 pixels of the top then go ahead and autorefresh
    if (pos < 80) {
        //StoryWriteConsole('pos:'+pos+' At top, make call for autorefresh...');
        StoryReloadGrid('y');
    }
}

function StoryHandleGridScroll() {
    //StoryWriteConsole('scroll...');
    // Get the relative Y position top pixel of the most bottom row relative to the entire grid
    var div = document.getElementById('story'+storyRowsTotal);
    if (div != null) {
        var bottom = $('story'+storyRowsTotal).offsetTop;
        // Get the Y position of the scrollbar (what pixel in the grid is visible at the top of the viewport)
        var pos = $('storyGrid').scrollTop;
        if (pos == 0) {
	        //StoryWriteConsole('scroll to top.  autorefreshturnedon:'+autorefreshTurnedOn);
	        if (autorefreshTurnedOn == 'y') {
	            //StoryWriteConsole('autorefresh turned on, so go check for new stuff');
	            StoryReloadGrid('y');
	            ReloadGridAd();
	        }
        }
        else {
            // if the bottom most element is within range then add another row but only if the row # is less than 15 (this simulates an end point)
            var temp = pos + storyHeight;
            //StoryWriteConsole('pos:'+pos+' storyHeight:'+storyHeight+' pos plus storyHeight:'+temp+' bottom:'+bottom);
            if (pos+storyHeight > bottom) {
                //StoryWriteConsole('getting close to bottom...');
	            if (storyRowsTotal > storyGridFullNumRows) {
	                if (storyGridFullFlag == false) {
	                    storyGridFullFlag = true;
   	        	        $('storyGrid').update($('storyGrid').innerHTML + storyGridFull);
            	        //StoryWriteConsole('grid is full');
            	    }
        	    }
	            else {
	                if (!storyRequestPending) {
	                    StoryGetRows(storyRowsToGetScroll);
	                    ReloadGridAd();
	                }
	            }
            }
        }
    }
}
function ReloadGridAd() {
    $('adframe_grid_728x90_middle').src = $('adframe_grid_728x90_middle').src;
}
function StoryWriteConsole(text) {
    if (storyViewConsole) {
        var div = document.getElementById('storyConsole');
        div.innerHTML = text + '<br/>' + div.innerHTML;
    }
}

function StorySetWindowSize() {
    if (storyTotalRows <= storyRows) {
        storyHeight = (storyTotalRows * storyRowHeight) + 10;
    }
    else {
        storyHeight = (storyRows * storyRowHeight) + 80;
    }
    var storyWidth = (storyCols * storyRowWidth) + storyScrollbarWidth + 5;
    $('storyGrid').style.height = storyHeight + "px";
    $('storyGrid').style.width = storyWidth + "px";
}

function StoryReloadGrid(autorefresh) {
    if (autorefresh == 'n') {
        $('storyGrid').update(storyLoading);
    }
    StoryGetNewGrid(1,storyRowsToGetInitial,autorefresh);
}

function StoryGetRows(numGridRows) {
    var gridRowNum = storyRowsTotal + 1;
    storyRowsTotal = storyRowsTotal + numGridRows;

    storyRequestPending = true;
    new Ajax.Request("/controlpage.aspx?control=storycontainer&sectionid=" + storySectionId + "&SITEPAGENAME=" + sitePageName + "&gridrownum=" + gridRowNum + "&numgridrows=" + numGridRows + "&numgridcols=" + storyCols + "&hardsoft=" + storyHardsoft + "&StartDate=" + storyStartDate + "&ShowPopular=" + storyShowPopular + "&viewhardsoft=n&ajaxcall=y&autorefreshcall=n&lastrefreshdate=" + storyLastRefreshDate + "&firststorypubdate=" + storyFirstStoryPubDate + "&siteid=" + storySiteId + "&tagid=" + storyTagId + "&taggroupid=" + storyTagGroupId + "&nobs=" + noBillboardStoriesFound, {
        method: 'get',
        onSuccess: function(transport) {
            scrollcount = scrollcount + 1;
            AnalyticsCustomEvent('GridScroll', sitePageName,scrollcount+''); //Track in google analytics
            StoryAddToGrid(transport.responseText);
            storyRequestPending = false;
        }
    });
}
function StoryGetNewGrid(gridRowNum,numGridRows,autorefresh) {
    storyRequestPending = true;
    new Ajax.Request("/controlpage.aspx?control=storycontainer&sectionid=" + storySectionId + "&SITEPAGENAME=" + sitePageName + "&gridrownum=" + gridRowNum + "&numgridrows=" + numGridRows + "&numgridcols=" + storyCols + "&hardsoft=" + storyHardsoft + "&StartDate=" + storyStartDate + "&ShowPopular=" + storyShowPopular + "&viewhardsoft=n&ajaxcall=y&autorefreshcall=" + autorefresh + "&lastrefreshdate=" + storyLastRefreshDate + "&firststorypubdate=" + storyFirstStoryPubDate + "&siteid=" + storySiteId + "&tagid=" + storyTagId + "&taggroupid=" + storyTagGroupId + "&nobs=" + noBillboardStoriesFound, {
        method: 'get',
        onSuccess: function(transport) {
            StoryNewGrid(transport.responseText);
            storyRequestPending = false;
        }
    });    
}

function StoryAddToGrid(data) {
    var temp = $('storyGrid').innerHTML;
    $('storyGrid').update(temp + data);
}

function StoryNewGrid(data) {
    //Get message data at beginning (are we sending data, refresh date and first story pub date, etc.)
    var array = ParseMessage(data);
    var sendingData = array[0];
    storyLastRefreshDate = array[1];
    if (sendingData == 'True') {
        storyFirstStoryPubDate = array[2];
        storyTotalRows = array[4];
    
        //update the billboard data 
        var billboardData = array[6].split(";");
        for (j = 0; j < billboards.length; j++) {
            if ($(billboards[j]) != null && $(billboards[j]) != undefined) {
                $(billboards[j]).style.display = "none";
            }
        }
        var newbillboards = new Array();
        for (k = 0; k < billboardData.length; k++) {
            newbillboards[k + 1] = "story" + billboardData[k];
        }
        numBillboards = billboardData.length;
        currBillboard = 1;
        billboards = newbillboards;
        stopRotating = false;
        setTimeout("nullRotateBillboard", 5000);
    }    
    
    
    data = array[5];
    //StoryWriteConsole('metadata.  sendingData:'+sendingData+' storyLastRefreshDate:'+storyLastRefreshDate+' storyFirstStoryPubDate:'+storyFirstStoryPubDate);
    //StoryWriteConsole('data:'+data);
    if (sendingData == 'True') {
        //StoryWriteConsole('updating grid');
        StorySetWindowSize();
        storyRowsToGetInitial = storyRows + 2;
        //StoryWriteConsole('storyRows:'+storyRows);
        storyRowsToGetScroll = 3;
        storyRowsTotal = storyRowsToGetInitial;
        //StoryWriteConsole('storyRowsTotal2:'+storyRowsTotal);
        storyGridFullFlag = false;
        $('storyGrid').update(data);
    }

}

function StoryHardsoftSlideIt(v) {
    storyHardsoft = v;
    StorySetHardSoft(storyHardsoft);
    StoryReloadGrid('n');
}

function StoryRowsSlideIt(v) {
    storyRows = v;
    storyRowsToGetInitial = storyRows + 2;
    storyRowsToGetScroll = 3;
    storyRowsTotal = storyRowsToGetInitial;
    //StoryWriteConsole('storyRowsTotal:'+storyRowsTotal);
    StorySetStoryRows(storyRows);
    StoryReloadGrid('n');
}

function StoryColsSlideIt(v) {
    storyCols = v;
    StorySetStoryCols(storyCols);
    StoryReloadGrid('n');
}

function StorySetStoryRows(storyRows) {
    AjaxUpdate("/utility.aspx?function=storyrows&storyrows=" + storyRows);
}

function StorySetStoryCols(storyCols) {
    AjaxUpdate("/utility.aspx?function=storycols&storycols=" + storyCols);
}

function StorySetHardSoft(hardsoft) {
    AjaxUpdate("/utility.aspx?function=hardsoft&hardsoft=" + storyHardsoft);
}

Effect.QueueThis = Class.create();
Object.extend(Object.extend(Effect.QueueThis.prototype, Effect.Base.prototype), {
    initialize: function() {
        this.func = arguments[0];
        this.start(arguments[1]);
    },
    finish: function() {
        this.func();
    }
});

function StoryScrollRowsx(direction) {
    if (scrolling == false) {
        scrolling = true;
        StoryScroll(direction);
        scrolling = false;
    }
}

function StoryScrollRows(direction) {
    new Effect.QueueThis(function(element) { StoryScroll(direction) }, { queue: { position: 'end', scope: 'global' }, transition: Effect.Transitions.none });
}

function StoryScroll(direction) {
    if (direction == 'U') {
        if ($('storyGrid').style.top.replace('px', '') >= -328) {
            direction = 'T';
        }
    }
    if (direction == 'T') {
        //Reload from the top
        new Effect.Move('storyGrid', { x: 0, y: 0, mode: 'absolute', duration: 0.5 }, { delay: 0, fps: 5, transition: Effect.Transitions.linear });
        StoryReloadGrid('y');
        $('GridScrollTop1').src = $('GridScrollTop2').src = $('GridScrollTop3').src = $('GridScrollTop4').src = storyGridScrollTopInactive;
        $('GridScrollTop5').src = $('GridScrollTop6').src = storyGridScrollTopVInactive;
        $('GridScrollUp1').src = $('GridScrollUp2').src = $('GridScrollUp3').src = $('GridScrollUp4').src = storyGridScrollUpInactive;
        $('GridScrollUp5').src = $('GridScrollUp6').src = storyGridScrollUpVInactive;
    }
    else if (direction == 'U') {
        //Scroll up
        new Effect.Move('storyGrid', { x: 0, y: 328, mode: 'relative', duration: 0.5 }, { delay: 0, fps: 5, transition: Effect.Transitions.linear });
    }
    else {
        //Scroll down
        //new Effect.Move('storyGrid', { x: 0, y: -328, mode: 'relative', duration: 0.5 }, { delay: 0, fps: 5, transition: Effect.Transitions.linear });
        new Effect.Move('storyGrid', { x: 0, y: -328, mode: 'relative', duration: 0.5, afterFinish: function() {StoryGetRows(storyRowsToGetScroll);} }, { delay: 0, fps: 5, transition: Effect.Transitions.linear });
        if ($('GridScrollTop1').src != storyGridScrollTopActive) {
            $('GridScrollTop1').src = $('GridScrollTop2').src = $('GridScrollTop3').src = $('GridScrollTop4').src = storyGridScrollTopActive;
            $('GridScrollTop5').src = $('GridScrollTop6').src = storyGridScrollTopVActive;
            $('GridScrollUp1').src = $('GridScrollUp2').src = $('GridScrollUp3').src = $('GridScrollUp4').src = storyGridScrollUpActive;
            $('GridScrollUp5').src = $('GridScrollUp6').src = storyGridScrollUpVActive;
        }
    }
    //ReloadGridAd();
    return false;
}

function StoryScrollTop() {
    new Effect.Move('storyGrid', { x: 0, y: 0, mode: 'absolute' });
    StoryReloadGrid('y');
    //ReloadGridAd();
    return false;
}

function StoryViewHide(id) {
    var d = document.getElementById(id);
    if (d.style.display=='none'){
        d.style.display='block';
    }
    else {
        d.style.display='none';
    }  
}
function StoryShowDate(calendar) {
    var y = calendar.date.getFullYear();
    var m = calendar.date.getMonth() + 1;   //integer, 0..11
    var d = calendar.date.getDate();      //integer, 1..31
    var w = calendar.date.getDay();
    var day;
    var mon;

    if (w == 0) { day = 'Sun' }
    else if (w == 1) { day = 'Mon' }
    else if (w == 2) { day = 'Tue' }
    else if (w == 3) { day = 'Wed' }
    else if (w == 4) { day = 'Thu' }
    else if (w == 5) { day = 'Fri' }
    else if (w == 6) { day = 'Sat' }

    if (m == 1) { mon = 'Jan' }
    else if (m == 2) { mon = 'Feb' }
    else if (m == 3) { mon = 'Mar' }
    else if (m == 4) { mon = 'Apr' }
    else if (m == 5) { mon = 'May' }
    else if (m == 6) { mon = 'Jun' }
    else if (m == 7) { mon = 'Jul' }
    else if (m == 8) { mon = 'Aug' }
    else if (m == 9) { mon = 'Sep' }
    else if (m == 10) { mon = 'Oct' }
    else if (m == 11) { mon = 'Nov' }
    else if (m == 12) { mon = 'Dec' }

    storyStartDate = y + '-' + m + '-' + d;
    storyShowPopular = 'n';
    GridSelect("Date");
    document.getElementById('pickadatediv').style.display = "inline";
    document.getElementById('pickadatediv').style.visibility = "visible";
    document.getElementById('pickadatedate').innerHTML = mon + ' ' + d + ', ' + y;
    StoryViewHide('storyCalendarContainer');
    StoryReloadGrid('n');
}
function StoryShowLatest() {
    storyStartDate = '';
    storyShowPopular = 'n';
    GridSelect("Latest");
    document.getElementById('pickadatediv').style.display = "none";
    document.getElementById('pickadatediv').style.visibility = "hidden";
    clearTimeout(rotateBillboardTimeout);
    StoryReloadGrid('n');
    
}

function StoryShowPopular() {
    storyStartDate = '';
    storyShowPopular = 'y';
    GridSelect("Popular");
    document.getElementById('pickadatediv').style.display = "none";
    document.getElementById('pickadatediv').style.visibility = "hidden";
    StoryReloadGrid('n');
}
function GridSelect(type) {
    $("LatestLabel").className = $("PopularLabel").className = $("DateLabel").className = "";
    $("LatestOpenBracket").style.display = $("LatestCloseBracket").style.display = "none";
    $("PopularOpenBracket").style.display = $("PopularCloseBracket").style.display = "none";
    $("DateOpenBracket").style.display = $("DateCloseBracket").style.display = "none";
    $(type + "Label").className = "active";
    $(type + "OpenBracket").style.display = $(type + "CloseBracket").style.display = "inline";
}

function ChangeHardSoftSliderValue(v,target) { 
    //Put value for slider in hidden field
    var obj = document.getElementById(target);
    obj.value = v;
    //Adjust images
    if      (v==1) {
        $('ImageHardSoft5').style.visibility = "hidden";
        $('ImageHardSoft4').style.visibility = "hidden";
        $('ImageHardSoft3').style.visibility = "hidden";
        $('ImageHardSoft2').style.visibility = "hidden";
        $('ImageHardSoft1').style.visibility = "visible";
    }
    else if (v==2) {
        $('ImageHardSoft5').style.visibility = "hidden";
        $('ImageHardSoft4').style.visibility = "hidden";
        $('ImageHardSoft3').style.visibility = "hidden";
        $('ImageHardSoft2').style.visibility = "visible";
        $('ImageHardSoft1').style.visibility = "visible";
    }
    else if (v==3) {
        $('ImageHardSoft5').style.visibility = "hidden";
        $('ImageHardSoft4').style.visibility = "hidden";
        $('ImageHardSoft3').style.visibility = "visible";
        $('ImageHardSoft2').style.visibility = "visible";
        $('ImageHardSoft1').style.visibility = "visible";
    }
    else if (v==4) {
        $('ImageHardSoft5').style.visibility = "hidden";
        $('ImageHardSoft4').style.visibility = "visible";
        $('ImageHardSoft3').style.visibility = "visible";
        $('ImageHardSoft2').style.visibility = "visible";
        $('ImageHardSoft1').style.visibility = "visible";
    }
    else if (v==5) {
        $('ImageHardSoft5').style.visibility = "visible";
        $('ImageHardSoft4').style.visibility = "visible";
        $('ImageHardSoft3').style.visibility = "visible";
        $('ImageHardSoft2').style.visibility = "visible";
        $('ImageHardSoft1').style.visibility = "visible";
    }
    else if (v==6) {
        $('ImageHardSoft5').style.visibility = "visible";
        $('ImageHardSoft4').style.visibility = "visible";
        $('ImageHardSoft3').style.visibility = "visible";
        $('ImageHardSoft2').style.visibility = "visible";
        $('ImageHardSoft1').style.visibility = "hidden";
    }
    else if (v==7) {
        $('ImageHardSoft5').style.visibility = "visible";
        $('ImageHardSoft4').style.visibility = "visible";
        $('ImageHardSoft3').style.visibility = "visible";
        $('ImageHardSoft2').style.visibility = "hidden";
        $('ImageHardSoft1').style.visibility = "hidden";
    }
    else if (v==8) {
        $('ImageHardSoft5').style.visibility = "visible";
        $('ImageHardSoft4').style.visibility = "visible";
        $('ImageHardSoft3').style.visibility = "hidden";
        $('ImageHardSoft2').style.visibility = "hidden";
        $('ImageHardSoft1').style.visibility = "hidden";
    }
    else if (v==9) {
        $('ImageHardSoft5').style.visibility = "visible";
        $('ImageHardSoft4').style.visibility = "hidden";
        $('ImageHardSoft3').style.visibility = "hidden";
        $('ImageHardSoft2').style.visibility = "hidden";
        $('ImageHardSoft1').style.visibility = "hidden";
    }
}
var billboardPaused = false;
var currBillboard = 1;
var stopRotating = false;
var billboards = Array();
Event.observe(window, "load", function() { rotateBillboard(0); });
function nullRotateBillboard()
{
    rotateBillboard(0);
}
function rotateBillboard(rotateTo) {
    if (typeof(numBillboards) == "undefined") {
        return; //oops must be hoerked
    }
    if (numBillboards == null) {
        return; //oops must be hoerked
    }
    clearTimeout(rotateBillboardTimeout);
    rotateBillboardTimeout = -1;
    if (rotateTo > 0)
    {
        billboardPaused = false;
        showingRollover = false;
        stopRotating = true;
    }
    if (!billboardPaused  && !showingRollover) {
        if($(billboards[currBillboard])!= null && $(billboards[currBillboard])!= undefined)
        {
            $(billboards[currBillboard]).style.display = "none";
        }
        currBillboard++;        
        if (currBillboard >  numBillboards)
        {
            currBillboard = 1;
            stopRotating = true;
        }
        if (rotateTo >0 && rotateTo <= numBillboards)
        {
            $(billboards[rotateTo]).style.display = "block"; 
            currBillboard = rotateTo;
        }
        else
        { 
            $(billboards[currBillboard]).style.display = "block";        
        }
    }
    if (!stopRotating)   
    {
        rotateBillboardTimeout = setTimeout(nullRotateBillboard,5000);
    }
}
function pauseBillboard()
{
    if(loaded)
    {
        clearTimeout(rotateBillboardTimeout);
        rotateBillboardTimeout = -1;
        billboardPaused = true;
    }
}
function unpauseBillboard() {
    if(loaded && !stopRotating)
    {
        billboardPaused = false;
        if (rotateBillboardTimeout == -1)
        {
            rotateBillboardTimeout = setTimeout(nullRotateBillboard,5000);
        }
    }
}