﻿
var service = new CHI.SiteCore.NewsroomService();

function TopicClick( extras, content, updateFunc, initialSort ) {
    if ( extras.visible() )
    {
        extras.hide();
        content.hide();
    }
    else if (content.innerHTML.length > 0)
    {
        extras.show();
        content.show();    
    }    
    else
    {
        sortDiv = extras.down('div.Sort');
        pageDiv = extras.down('div.crumb');

        // Set initial sort to TITLE and initial page to 1.
        SetSort(sortDiv, initialSort, pageDiv, updateFunc);
        pageDiv.writeAttribute('page', '1');

        updateFunc(sortDiv, pageDiv);
    }
}


function UpdateNewsletters(sortDiv, pageDiv) {
    service.GetNewsletters( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, NewslettersSuccess, failure, null );
}


function UpdateNews(sortDiv, pageDiv)
{
    service.GetNews( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, NewsSuccess, failure, null );
}

function UpdateNewsArchive(sortDiv, pageDiv)
{
    service.GetNewsArchive( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, NewsArchiveSuccess, failure, null );
}

function UpdateStoryIdeas(sortDiv, pageDiv)
{
    service.GetStoryIdeas( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, StoryIdeasSuccess, failure, null );
}

function UpdatePressReleases(sortDiv, pageDiv)
{
    service.GetPressReleases( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, PressReleasesSuccess, failure, null );
}

function UpdatePublications(sortDiv, pageDiv)
{
    service.GetPublications( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, PublicationsSuccess, failure, null );
}

function UpdateGraphics(sortDiv, pageDiv)
{
    service.GetGraphics( scDatabase, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, GraphicsSuccess, failure, null );
}


function UpdateEvents(sortDiv, pageDiv)
{
    service.GetEvents( scDatabase, projectId, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, EventsSuccess, failure, null );
}

function UpdatePubAndPres(sortDiv, pageDiv)
{
    service.GetPublicationsAndPresentations(scDatabase, projectId, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, PubAndPresSuccess, failure, null);
}

function UpdateDataRes(sortDiv, pageDiv)
{
    service.GetDataRes(scDatabase, projectId, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, DataResSuccess, failure, null);
}

function UpdateInitiatives(sortDiv, pageDiv)
{
    service.GetInitiatives(scDatabase, projectId, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, InitiativesSuccess, failure, null);
}

function UpdateRelRes(sortDiv, pageDiv)
{
    service.GetRelRes(scDatabase, projectId, sortDiv.readAttribute('sort'), pageDiv.readAttribute('page'), 5, RelResSuccess, failure, null);
}

function failure( errors, userContext, methodName )
{
    alert( errors.get_message() );
}






function NewslettersSuccess( data )
{
    $('contentNewsletters').update();
    var dateStr = "";

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";
        
        dateStr = getDateString(data.Items[i].Date) + '<br/>';

        div = new Element('div');
        div.className = 'content';
        if (!data.Items[i].IsExternal) {
        	div.update('<div class="' + cssClass + '">' + dateStr + '<a href="' + data.Items[i].Url + '">' + data.Items[i].Title + '</a><br/>' + data.Items[i].Summary + '</div>');
        }
        else {
        	div.update('<div class="' + cssClass + '">' + dateStr + '<a target="_blank" href="' + data.Items[i].Url + '">' + data.Items[i].Title + '</a><br/>' + data.Items[i].Summary + '</div>');
        }
				
        $('contentNewsletters').insert( div );
    }

    SetPages($('ExtrasNewsletters').down('div.crumb'), $('ExtrasNewsletters').down('div.Sort'), data.TotalCount, UpdateNewsletters);

    //$('ExtrasNewsletters').show();
    //$('contentNewsletters').show();
    processExternalLinks();
   }


function NewsSuccess( data )
{
    $('contentNews').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a><br/>'+data.Items[i].Summary+'</div>' );
        $('contentNews').insert( div );
    }

    SetPages($('ExtrasNews').down('div.crumb'), $('ExtrasNews').down('div.Sort'), data.TotalCount, UpdateNews);

    //$('ExtrasNews').show();
    //$('contentNews').show();
    processExternalLinks();
   }


function NewsArchiveSuccess( data )
{
    $('contentNewsArchive').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a><br/>'+data.Items[i].Summary+'</div>' );
        $('contentNewsArchive').insert( div );
    }

    SetPages($('ExtrasNewsArchive').down('div.crumb'), $('ExtrasNewsArchive').down('div.Sort'), data.TotalCount, UpdateNewsArchive);

    //$('ExtrasNewsArchive').show();
    //$('contentNewsArchive').show();
    processExternalLinks();
   }

function StoryIdeasSuccess( data )
{
    $('contentStoryIdeas').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a><br/>'+data.Items[i].Summary+'</div>' );
        $('contentStoryIdeas').insert( div );
    }

    SetPages($('ExtrasStoryIdeas').down('div.crumb'), $('ExtrasStoryIdeas').down('div.Sort'), data.TotalCount, UpdateStoryIdeas);

    //$('ExtrasStoryIdeas').show();
    //$('contentStoryIdeas').show();
    processExternalLinks();
}

function PublicationsSuccess( data )
{
    $('contentPublications').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a><br/>'+data.Items[i].Summary+'</div>' );
        $('contentPublications').insert( div );
    }

    SetPages($('ExtrasPublications').down('div.crumb'), $('ExtrasPublications').down('div.Sort'), data.TotalCount, UpdatePublications);

    //$('ExtrasPublications').show();
    //$('contentPublications').show();
    processExternalLinks();
}


function PressReleasesSuccess( data )
{
	$('contentPressReleases').update();

	var sortDiv = $('ExtrasPressReleases').down('div.Sort');
	var sort = sortDiv.readAttribute('sort');
	var dateStr = "";

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if (i == data.Items.length - 1) cssClass = "last";
        if (sort == 'DATE' && data.Items[i].Date != '') {
        	dateStr = getDateString(data.Items[i].Date) + '<br/>';
        }

        div = new Element('div');
        div.className = 'content';

        div.update('<div class="' + cssClass + '">' + dateStr + '<a href="' + data.Items[i].Url + '">' + data.Items[i].Title + '</a> ' + '<br/>' + data.Items[i].Summary + '</div>');
        
        $('contentPressReleases').insert( div );
    }

    SetPages($('ExtrasPressReleases').down('div.crumb'), $('ExtrasPressReleases').down('div.Sort'), data.TotalCount, UpdatePressReleases);

    //$('ExtrasPressReleases').show();
    //$('contentPressReleases').show();
    processExternalLinks();
   }


function GraphicsSuccess( data )
{
    $('contentGraphics').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        if (data.Items[i].HiResImageUrl.length > 0)
					div.update('<div class="' + cssClass + '"><a href="' + data.Items[i].HiResImageUrl + '">' + data.Items[i].Title + '</a><br/><a href="' + data.Items[i].HiResImageUrl + '"><img src="' + data.Items[i].Url + '" /></a></div>');
        else
					div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a><br/><img src="'+data.Items[i].Url+'" /></div>' );
        $('contentGraphics').insert( div );
    }

    SetPages($('ExtrasGraphics').down('div.crumb'), $('ExtrasGraphics').down('div.Sort'),data.TotalCount, UpdateGraphics);

    //$('ExtrasGraphics').show();
    //$('contentGraphics').show();
    processExternalLinks();
   }


function EventsSuccess( data )
{
    $('contentEvents').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a> '+data.Items[i].FileData+'<br/>'+data.Items[i].Summary+'</div>' );
        $('contentEvents').insert( div );
    }

    SetPages($('ExtrasEvents').down('div.crumb'), $('ExtrasEvents').down('div.Sort'), data.TotalCount, UpdateEvents);

    //$('ExtrasEvents').show();
    //$('contentEvents').show();
    processExternalLinks();
   }

function PubAndPresSuccess( data )
{
    $('contentPubAndPres').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a> '+data.Items[i].FileData+'<br/>'+data.Items[i].Summary+'</div>' );
        $('contentPubAndPres').insert( div );
    }

    SetPages($('ExtrasPubAndPres').down('div.crumb'), $('ExtrasPubAndPres').down('div.Sort'), data.TotalCount, UpdatePubAndPres);

    //$('ExtrasPubAndPres').show();
    //$('contentPubAndPres').show();
    processExternalLinks();
   }

function DataResSuccess( data )
{
    $('contentDataRes').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a> '+data.Items[i].FileData+'<br/>'+data.Items[i].Summary+'</div>' );
        $('contentDataRes').insert( div );
    }

    SetPages($('ExtrasDataRes').down('div.crumb'), $('ExtrasDataRes').down('div.Sort'), data.TotalCount, UpdateDataRes);

    //$('ExtrasDataRes').show();
    //$('contentDataRes').show();
    processExternalLinks();
   }

function InitiativesSuccess( data )
{
    $('contentInitStud').update();

    for ( i=0; i<data.Items.length; i++ )
    {
        cssClass = "first";
        if ( i > 0 ) cssClass = "contentBlock";
        if ( i == data.Items.length-1 ) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update( '<div class="'+cssClass+'"><a href="'+data.Items[i].Url+'">'+data.Items[i].Title+'</a> '+data.Items[i].FileData+'<br/>'+data.Items[i].Summary+'</div>' );
        $('contentInitStud').insert( div );
    }

    SetPages($('ExtrasInitStud').down('div.crumb'), $('ExtrasInitStud').down('div.Sort'), data.TotalCount, UpdateInitiatives);

    //$('ExtrasInitStud').show();
    //$('contentInitStud').show();
	sortDiv = $('ExtrasInitStud').down('div.Sort');
	sortDiv.hide();    
    processExternalLinks();
   }

function RelResSuccess(data)
{
    $('contentRelRes').update();

    for (i = 0; i < data.Items.length; i++)
    {
        cssClass = "first";
        if (i > 0) cssClass = "contentBlock";
        if (i == data.Items.length - 1) cssClass = "last";

        div = new Element('div');
        div.className = 'content';
        div.update('<div class="' + cssClass + '"><a href="' + data.Items[i].Url + '">' + data.Items[i].Title + '</a> ' + data.Items[i].FileData + '<br/>' + data.Items[i].Summary + '</div>');
        $('contentRelRes').insert(div);
    }

    SetPages($('ExtrasRelRes').down('div.crumb'), $('ExtrasRelRes').down('div.Sort'), data.TotalCount, UpdateRelRes);

    //$('ExtrasRelRes').show();
    //$('contentRelRes').show();
    processExternalLinks();
   }

function SetSort(sortDiv, sortValue, pageDiv, updateFunc)
{
    if (sortValue == 'TITLE')
    {
        a = new Element('a', { 'href': '#' }).insert('Date ');
        a.onclick = function()
            {
                SetSort(sortDiv, "DATE", pageDiv, updateFunc);
                updateFunc(sortDiv, pageDiv);
                return false;
            };

        sortDiv.update().insert('Sort by: ').insert(a).insert(' | Title');
    }
    else if (sortValue == 'DATE')
    {
        a = new Element('a', { 'href': '#' }).insert('Title');
        a.onclick = function()
            {
                SetSort(sortDiv, "TITLE", pageDiv, updateFunc);
                updateFunc(sortDiv, pageDiv);
                return false;
            };

        sortDiv.update().insert('Sort by: Date | ').insert(a);
    }

    sortDiv.writeAttribute('sort', sortValue);
}

function SetPages( pageDiv, sortDiv, totalCount, updateFunc )
{
    if (totalCount == 0)
    {
        //pageDiv.update().insert('No Results Found');
        pageDiv.up('div.TopicItem').hide();
        return;
    }
    else
    {
        pageDiv.up('div.TopicItem').show();
    }
        
    if (totalCount % 5 > 0) pages = Math.floor((totalCount / 5) + 1);
    else pages = Math.floor(totalCount / 5);
    pageDiv.writeAttribute('pages', pages);

    pageNum = pageDiv.readAttribute('page');

    pageDiv.update().insert('Pages: ');

    frontEllipsePage = (pageNum % 3 == 0) ? pageNum - 3 : 3 * (Math.floor(pageNum / 3));
    if (frontEllipsePage > 0)
    {
        a = new Element('a', { 'href': '#', 'page': frontEllipsePage }).insert('...');
        a.onclick = function() {
        	pageDiv.writeAttribute('page', $(this).readAttribute('page'));
        	updateFunc(sortDiv, pageDiv);
        	return false;
        }

        pageDiv.insert(a).insert(' ');
    }

    for (i = frontEllipsePage + 1; i <= frontEllipsePage + 3; i++)
    {
        if (i > pages) break;

        pageDiv.insert(' ');
        if (i != pageNum)
        {
            a = new Element('a', { 'href': '#', 'page': i }).insert(i);
            a.onclick = function()
            {
            	pageDiv.writeAttribute('page', $(this).readAttribute('page'));
                updateFunc(sortDiv, pageDiv);
                return false;
            }

            pageDiv.insert(a).insert(' ');
        }
        else
            pageDiv.insert(i).insert(' ');
    }

    if (pages > frontEllipsePage + 3)
    {
        a = new Element('a', { 'href': '#', 'page': frontEllipsePage+4 }).insert('...');
        a.onclick = function()
        {
        	pageDiv.writeAttribute('page', $(this).readAttribute('page'));
            updateFunc(sortDiv, pageDiv);
            return false;
        }

        pageDiv.insert(a);
    }

    pageDiv.writeAttribute('page', pageNum);
   }

   function getDateString(dttm) {
   	//Formats date as MM/dd/yyyy
   	var dd = dttm.getDate();
   	var mm = dttm.getMonth() + 1; //January is 0!
   	var yyyy = dttm.getFullYear();
   	if (dd < 10) { dd = '0' + dd }
   	if (mm < 10) { mm = '0' + mm }
   	return (mm + '/' + dd + '/' + yyyy);
   }
