var ajagClass = Class.create({
    initialize: function(){
        this.ajag_data = Array();
    },
    append_datagrid: function ( obj ) {
        this.ajag_data[ obj.cid ] = obj;
    },
    orderby: function (cid, field, direction) {
        cid = parseInt(cid);
        if (field!=this.ajag_data[cid].curr_orderby_field || direction!=this.ajag_data[cid].curr_orderby_direction)
        {
            this.ajag_data[cid].curr_orderby_field = field;
            this.ajag_data[cid].curr_orderby_direction = direction;
            this.ajag_data[cid].curr_page = 1;
            this.grid_reload(cid);
        }
    },
    prepare_orderby: function (cid, field, direction) {
        cid = parseInt(cid);
        if (field!=this.ajag_data[cid].curr_orderby_field || direction!=this.ajag_data[cid].curr_orderby_direction)
        {
            this.ajag_data[cid].curr_orderby_field = field;
            this.ajag_data[cid].curr_orderby_direction = direction;
            this.ajag_data[cid].curr_page = 1;
        }
    },
    goto_page: function (cid, page) {
        cid = parseInt(cid);
        if (page != this.ajag_data[cid].curr_page )
        {
            this.ajag_data[cid].curr_page = page;
            this.grid_reload(cid);
        }
    },
    grid_reload: function (cid) {
        this.ajag_data[cid].ajag_update_mode = cid;
        this.ajag_data[cid].ajag_trigger = 1;
        document.getElementById(this.ajag_data[cid].wrapper_id).innerHTML = "<img src='"+BASE_URL+"/assets/images/loading.gif'>Now Loading. Please wait...";
        if ( this.ajag_data[cid].reload_url.length > 0 )
            reload_url = this.ajag_data[cid].reload_url;
        else
            reload_url = window.location.href;
        //debugger;
        new Ajax.Updater(
            this.ajag_data[cid].wrapper_id, 
            reload_url, 
            {   
                'parameters': Object.toQueryString(this.ajag_data[cid])
            }
        );
    },
    manual_search: function (cid, page, keyword) {
      var data = {
        '*' : keyword,
        "paper_abstract": "",
        "author_fullname,author_abbreviation": "",
        "btn_reset": "Reset", 
        "btn_submit": "Search",
        "paper_title": "", 
        "paper_abstract": "", 
        "publication_name,publication_abbreviation": ""
      };
      this.ajag_data[cid].datafilter = Object.toJSON(data);
      this.ajag_data[cid].curr_page = page;
      this.grid_reload(cid);
    },
    do_filter: function (cid, oForm) {
		//debugger;
        oFormValue = Form.serialize(oForm, true);
        this.ajag_data[cid].datafilter = Object.toJSON(oFormValue);
        this.ajag_data[cid].curr_page = 1;
        this.grid_reload(cid);
    },
    reset_filter: function (cid) {
        this.ajag_data[cid].datafilter = null;
        this.ajag_data[cid].curr_page = 1;
        this.grid_reload(cid);
        a = document.getElementsByTagName('form');
        for (i=0; i<a.length; i++) 
        {
            if (a[i].action.substring(17,21) == 'cid'+cid)
            {
                a[i].reset();
            }
        }
    },
    get_checked: function (button, get_array  ) {
        if (get_array == undefined ) get_array = false;
        try {
            do {
                button = button.parentNode;
            } while ( button.tagName.toUpperCase() != "FORM" );
        } catch (e) {
            alert('DOM Error');
            return;
        }
        first = true;
        if (get_array) list = Array();
        else list = "";
        input = button.getElementsByTagName('INPUT');
        for (i=0; i<input.length; i++)
        {
            if (input[i].type.toUpperCase() == 'CHECKBOX' ) {
                if (input[i].checked) {
                    if (get_array) list[list.length] = input[i].value;
                    else {
                        if (first) {
                            first = false;
                        } else {
                            list += ",";
                        }
                        list += input[i].value;
                    }
                }
            }
        }
        return list;
    }
});

var ajag = new ajagClass();

