﻿window.addEvent('domready', function() {
    if ($defined($('releaseSearch'))) {
        var prs = new PressReleaseSearch({ IsReleaseNotCoverage: true, PathToPressReleases: PathToPressReleases });
    }
    if ($defined($('coverageSearch'))) {
        var prs = new PressReleaseSearch({ IsReleaseNotCoverage: false });
    }
    if ($defined($$('.toggler')) && $$('.toggler').length > 0) {
        var myAccordion = new Fx.Accordion($$('.toggler'), $$('.togglee'), {display: -1, alwaysHide: true,
            onActive: function(toggler, togglee) {
                toggler.addClass('toggler_active');
            },
            onBackground: function(toggler, togglee) {
                toggler.removeClass('toggler_active');
            }
        });
    }
});

var PressReleaseSearch = new Class({
    Implements: [Options, Events],
    options: {
        IsReleaseNotCoverage: true,
        PathToPressReleases: "/PressReleases/"
    },
    initialize: function(options) {
        this.setOptions(options);
        this.CNTRL = new Object();
        this.CNTRL.From = $('ctl00_cpRight_ctl00_dfrom_dateInput_text');
        this.CNTRL.To = $('ctl00_cpRight_ctl00_dto_dateInput_text');
        this.CNTRL.Year = $('ctl00_cpRight_ctl00_dyear');
        this.CNTRL.Type = $('ctl00_cpRight_ctl00_dtype');
        this.CNTRL.Brand = $('ctl00_cpRight_ctl00_dbrand');
        this.CNTRL.Keywords = $('ctl00_cpRight_ctl00_keywords');
        this.CNTRL.Search = $('ctl00_cpRight_ctl00_btnGoSearch');
        this.Load();
    },
    CNTRL: null,
    Load: function() {
        var base = this;
        this.CNTRL.Search.addEvent('click', function(e) {
            e.stop();

            var dateFrom;
            var dateTo;
            if (base.CNTRL.Year.value != '') {
                dateFrom = "1/1/" + base.CNTRL.Year.value;
                dateTo = "12/31/" + base.CNTRL.Year.value;
            }
            else {
                dateFrom = base.CNTRL.From.value.replace("1/1/0001", "1/1/1901");
                dateTo = base.CNTRL.To.value.replace("1/1/0001", "1/1/1901");
            }
            base.GetReleases(dateFrom, dateTo);
        });
        base.CNTRL.From.addEvent('change', function(e) {
            if (base.CNTRL.Year.value != '') {
                base.CNTRL.Year.selectedIndex = 0;
            }
        });
        base.CNTRL.To.addEvent('change', function(e) {
            if (base.CNTRL.Year.value != '') {
                base.CNTRL.Year.selectedIndex = 0;
            }
        });
        base.CNTRL.Year.addEvent('change', function(e) {
            base.CNTRL.To.value = '';
            base.CNTRL.From.value = '';
        });
    },
    GetReleases: function(dateFrom, dateTo) {
        var base = this;
        var request
        switch (base.options.IsReleaseNotCoverage) {
            case false:
                request = new Request.JSON({
                    url: '/Services/UserServices.asmx/NewsCoverageSearch',
                    urlEncoded: false,
                    headers: { "Content-type": "application/json" },
                    onSuccess: base.GetCoverageSuccess,
                    onFailure: base.GetCoverageFailure
                }).send(JSON.encode({ 'fromDate': dateFrom, 'toDate': dateTo, 'keywords': base.CNTRL.Keywords.value, 'dtype': base.CNTRL.Type.value, 'dbrand': base.CNTRL.Brand.value }));
                break;
            default:
                request = new Request.JSON({
                    url: '/Services/UserServices.asmx/PressReleasesSearch',
                    urlEncoded: false,
                    headers: { "Content-type": "application/json" },
                    onSuccess: base.GetReleasesSuccess,
                    onFailure: base.GetReleasesFailure
                }).send(JSON.encode({ 'fromDate': dateFrom, 'toDate': dateTo, 'keywords': base.CNTRL.Keywords.value, 'dtype': base.CNTRL.Type.value, 'dbrand': base.CNTRL.Brand.value }));
                break;
        }
    },
    GetCoverageSuccess: function(d) {
        var resultString = '';
        d.d.each(function(item, iterator) {
        resultString += "<div class=\"article-row\"><p class=\"date\">" + item.DatePostedH + "</p><p class=\"headline\"><a title=\"" + item.PublicationName + " &quot;" + item.Name + "&quot;\" href=\"" + item.Link + "\" target=\"_blank\"><b>" + item.PublicationName + "</b> &quot;" + item.Name + "&quot;</a></p><div class=\"clear\"></div></div>";
        });
        $$('.news-coverage-list')[0].innerHTML = resultString;
    },
    GetCoverageFailure: function(d) {
    },
    GetReleasesSuccess: function(d) {
        var resultString = '';
        var querystringOrig = new URI(); /* TODO: I don't need to initialize this every async request */
        d.d.each(function(item, iterator) {
            switch (item.ContentType) {
                case 1: /* file */
                    resultString += "<div class=\"article-row\"><p class=\"date\">" + item.DatePostedH + "</p><p class=\"headline\"><a title=\"" + item.Name + "\" href=\"" + PathToPressReleases + item.FileName + "\">" + item.Name + "</a></p><div class=\"clear\"></div></div>";
                    break;
                case 2: /* text */
                    resultString += "<div class=\"article-row\"><p class=\"date\">" + item.DatePostedH + "</p><p class=\"headline\"><a title=\"" + item.Name + "\" href=\"http://" + querystringOrig.get('host') +"/press-room/"+ item.NameURLSafe + ".html\">" + item.Name + "</a></p><div class=\"clear\"></div></div>";
                    break;
            }
        });
        $$('.press-release-list')[0].innerHTML = resultString;
    },
    GetReleasesFailure: function(d) {

    }
});    
