﻿
var qpf, qp;

var Search = Class.create({
    syntax: /(^|.|\r|\n)(\<%=\s*(\w+)\s*%\>)/,
    listing: '<a href="#"><%= Name %></a><br />',
    culture: "en-US",
    initialize: function() {
        var stor = new Storage();
        this.culture = stor.getCulture();
    },
    getSearchResults: function() {
        var input = $F('nameInput');
        if (input == '') {
            alert('Please enter a facility name.');
            $('nameInput').focus();
            return;
        }
        if (newSearch)
            curPage = 0;

        newSearch = true;

        $('searchingMsg').show();
        var searchParameters = {}
        searchParameters.Culture = this.culture;
        searchParameters.Name = input;
        searchParameters.ReportTypeId = 'Facility';

        searchParameters.PageSize = pageSize;
        searchParameters.PageIndex = curPage;
        CEC.Service.IService1.Search(this.culture, searchParameters, search.onCompletedSearchResults);
    },
    onCompletedSearchResults: function(searchResult) {

        qpf = new QueryParametersFactory();
        qp = qpf.update();
        qp.PageSize = pageSize;
        qp.PageNumber = curPage;

        var headerNames = '"latitude", "longitude", "id", "name", "prtrid", "city", "state", "country"';
        var facilityReportURL = function(elCell, oRecord, oColumn, sData) {
            elCell.innerHTML = "<a href='FacilityReport.aspx?reportTypeId=Facility&country=&state=0&dataset=0&chemTypeId=&chemical=&industry=&report=Facility"
	            + "&facilityId=" + oRecord.getData("id")
	            + "&year=" + getAllYearsFromCookie()
	            + "&latitude=" + oRecord.getData("latitude")
	            + "&longitude=" + oRecord.getData("longitude")
	            + "&info=" + "PRTR ID:" + oRecord.getData("prtrid") + "|" + oRecord.getData("name") + "|" + oRecord.getData("city") + ", " + oRecord.getData("state") + "|" + oRecord.getData("country")
	            + "&isDrilldown=true'>" + sData + "</a>";
        };
        var columnHeaders = searchResult.Headers;
        var header = '{"key":"name","label":"' + columnHeaders[0] + '",sortable:false, formatter:' + facilityReportURL + '},' +
            '{"key":"prtrid","label":"' + columnHeaders[1] + '",sortable:false},' +
            '{"key":"city","label":"' + columnHeaders[2] + '",sortable:false},' +
            '{"key":"state","label":"' + columnHeaders[3] + '",sortable:false},' +
            '{"key":"country","label":"' + columnHeaders[4] + '",sortable:false}';

        var records = '';
        for (var i = 0; i < searchResult.Results.size(); i++) {
            records += '{"name":"' + searchResult.Results[i].Name + '",' +
                '"id":' + searchResult.Results[i].Id + ',' +
                '"prtrid":"' + (searchResult.Results[i].Code == undefined ? '' : searchResult.Results[i].Code) + '",' +
                '"city":"' + searchResult.Results[i].City + '",' +
                '"state":"' + searchResult.Results[i].State + '",' +
                '"latitude":"' + searchResult.Results[i].Latitude + '",' +
                '"longitude":"' + searchResult.Results[i].Longitude + '",' +
                '"country":"' + searchResult.Results[i].Country + '"},';
        }
        records = records.substring(0, records.length - 1);

        var facilities = '{ "Count":' + searchResult.Count + ',' +
            '"HeaderNames": [' + headerNames + '], ' +
            '"Header": [' + header + '], ' +
            '"Records": [' + records + '] }';

        facilities = facilities.evalJSON();

        var myDataSource = new YAHOO.util.DataSource(facilities.Records);
        myDataSource.responseSchema = {
            resultsList: 'Records',
            fields: facilities.HeaderNames
        };

        var myColumnDefs = facilities.Header;

        // attach sortedBy attributes only if sorted column being displayed
        var sortedBy = { key: 'name', dir: 'asc' };
        var myDataTable = new YAHOO.widget.DataTable('searchResults', myColumnDefs, myDataSource,
            {
                sortedBy: sortedBy
            });
        var _pObj = new Paginator($('paginator'), qpf, facilities.Count, handlePaging);
        $('searchingMsg').hide();
    },
    addListing: function(item, searchParameters) {
        $('searchResults').innerHTML +=
            search.listing.interpolate(item, search.syntax);
    }
});

var curPage = 0;
var pageSize = 10;
var newSearch = true;
var handlePaging = function() {
    newSearch = false;
    curPage = $(this).value;
    $('nameButton').click();
}
var search = new Search();


function doFacilitySearch(action, e, searchTxtbox, searchBtn, src) {
    if(action == 'textbox') {
        var isEnter = window.event == null ? e.keyCode == 13 : window.event.keyCode == 13;
        
        if(isEnter)
            action = 'searchBtnClick';
    }
    if(action == 'searchBtnClick') {        
        if(src == 'QB')
            window.location = 'FacilitySearch.aspx?search=' + $F(searchTxtbox);
        else
            $(searchBtn).click();
        
        return false;
    }            
}