﻿
jQuery.fn.Publication = function(config) {

    //参数
    config = jQuery.extend({
        catNo:null,
        id: null,    //ID
        index: 1,     //Current page
        size: 10,     //page Size
        sort: '',
        dir: 'asc',
        param: '',
        pager: '#dvPubPager',
        defVal: 'Search publications by catalog No,antigen name.',
        errorVal: "Please Input your keyword",
        callback: function() { return false; } //回调函数
    }, config || {});


    return this.each(function() {

        var me = $(this);

        init = function() {
            $("#txtCatNo").val((config.catNo) ? keyword : config.defVal).focus(onFocus).keydown(onKeydowm).blur(onBlur);
            $("#btnPub").click(function() { searchgo(); return false; }).blur(onBlur);
        }

        start = function() {
            $.getJSON("../Handler/PublicationHandler.ashx?r=" + Math.random(),
            { func: 'GetDataByPCD', index: config.index, size: config.size, sort: config.sort, dir: config.dir, param: config.param },
            function(result) {
                setPager(result.pager);
                showData(result.rows);
                adjustMain();
                setLoading(false);
            });
        };

        searchgo = function() {
            var svl = $("#txtCatNo").val().Trim().Filter();
            if (svl != "" && svl != config.defVal && svl != config.errorVal) {
                setLoading(true); search(); return false;
            }
            else {
                $("#txtCatNo").val(config.errorVal).removeClass("foucs").addClass('null');
                $("#btnPub").removeClass("foucs").addClass('null');
            }
        };

        onKeydowm = function(e) {
            var currentKey = e ? e.keyCode : e.which;
            if (currentKey == 13) { searchgo(); return false; }
        };
        onFocus = function() {
            var obj = $("#txtCatNo");
            if (obj.val() == config.defVal || obj.val() == config.errorVal)
                obj.val("");
            obj.removeClass("null").addClass("foucs");
            $("#btnPub").removeClass("null").addClass("foucs");
        };

        onBlur = function() {
            var obj = $("#txtCatNo");
            if (obj.val().Trim() == "")
                obj.val(config.defVal);
            $("#txtCatNo").removeClass("foucs").removeClass("null");
            $("#btnPub").removeClass("foucs").removeClass("null");
        };

        reload = function(p, pSize) {
            setLoading(true);
            if (pSize && config.size != pSize) {
                config.size = pSize;
                p = 1;
            }

            config.index = p;

            start();
        };

        search = function() {

            config.index = 1;
            config.param = 'catNo=' + $('#txtCatNo').val();
            start();
        }

        showData = function(rows) {
            me.empty();
            $.each(rows, function(i, o) {
                me.append(makeOneModule(this));
            });
        };

        setPager = function(pager) {

            $(config.pager).SimplePager({
                showNum: 12,
                pageSize: pager.size,
                nowPage: pager.index,
                totalRec: pager.total,
                copyTo: 'dvPubPagerCopy',
                callback: reload
            });
        };

        makeOneModule = function(one) {
            if (!one) return "";
            var str = new Array();

            str.push('<div class="dropshadow"><table>');
            str.push("<tr><td class='attr'><strong>Product:</strong> </td>");
            str.push("<td colspan=\"3\">");
            if (one.CatalogNo.toLowerCase() == "custom production")
                str.push("<a href=\"../Products/service.aspx\">Custom Production</a>");
            else
                str.push("<a href=\"../Products/ProductRedirect.aspx?w=htm&catNo=" + one.CatalogNo + "\">" + one.AntigenName + " antibody</a> " + one.CatalogNo + "</td>");

            str.push("</td></tr><tr>");
            str.push("<td><strong>Author:</strong></td>");
            str.push("<td><div style=\"height:15px;overflow:hidden; white-space:nowrap;text-overflow:ellipsis\">"+ one.Author+"</div></td>");
            str.push("<td align=\"right\" ><strong>Pubmed ID:</strong></td>");
            str.push("<td><a href=\"http://www.ncbi.nlm.nih.gov/pubmed/"+ one.PMID +"?dopt=Abstract\" target=\"_blank\">"+ one.PMID+"</a></td>");
            str.push("</tr><tr>");
            str.push('<td><strong>Journal:</strong></td>');
            str.push("<td colspan=\"3\"><div style=\"height:15px;overflow:hidden; white-space:nowrap;text-overflow:ellipsis;\">"+one.Journal+one.PubDate+(one.Volume!=''? one.Volume : "").replace("N/A","")+ (one.Pagination!=''? one.Pagination : "").replace("N/A","")+"</div></td>");
            str.push('</tr><tr>');
            str.push('<td valign="top"><strong>Title:</strong></td>');
            str.push('<td colspan="3"><div style="height:60px;overflow:auto">' + one.Subject + '</div></td>');
            str.push('</tr></table></div>');

            return str.join('');
        };

        //init();
        start();
    });

}
