private void ListBox_SelectedIndexChanged(object sender, RoutedEventArgs e)//event of researcher list
        {
            //disable 'showname'btn,'cumulative count'btn and datagrid before user select a record
            btn1.IsEnabled      = true;
            btn2.IsEnabled      = true;
            datagrid1.IsEnabled = true;

            list2.ItemsSource = P_list;
            //r_details.GotFocus = true;


            //filter function bug here
            if (list1.SelectedIndex != -1)         //if user selected a listitem and use filter function,application will be crushed
            {
                BitmapImage b = new BitmapImage(); //Generate avatar
                b.BeginInit();
                b.UriSource = new Uri(@rlist[list1.SelectedIndex].photo.ToString());
                b.EndInit();
                avatar.Source = b;
                //show details of specific researcher
                ContentControl1.Content = ResearcherDetail.showdetail(rlist[list1.SelectedIndex].id, rlist, position_list, researcher_publication_list, publication_list, btn1);
                datagrid1.ItemsSource   = null; //reset datagrid
                tbk_name.Text           = "";   //reset show name


                global_id = rlist[list1.SelectedIndex].id;//set grobal value for id

                P_list            = PublicationList.generate_P_list(rlist[list1.SelectedIndex].id, researcher_publication_list, publication_list);
                Orgin_list        = P_list;
                list2.ItemsSource = P_list;
                list2.Items.Refresh();

                tab_m.SelectedIndex = 1;//auto jump to tab 2
            }
        }
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            // P_list.Clear();
            P_list = PublicationList.sort_P_list(Orgin_list, 1900, 2100, true);

            list2.ItemsSource = P_list;
            list2.Items.Refresh();
        }
        private void invert_Click(object sender, RoutedEventArgs e)
        {
            // list2.Items.Refresh();
            if (list2.Items.Count > 0)//listbox is not empty
            {
                List <database.researcher> rlist = (ResearcherList.generate_R_list());



                // PublicationList.additemt_p_listbox(list2, tmp_list);
                //P_list = tmp_list;
                //list2.ItemsSource = P_list;
                // invert_control = false;

                if (invert_control == true)//click once invert,click twice resume
                {
                    //list2.Items.Clear();
                    //tmp_list = PublicationList.sort_P_list(P_list, Convert.ToInt32(cbo1.SelectedItem), Convert.ToInt32(cbo2.SelectedItem), true);
                    // PublicationList.additemt_p_listbox(list2, tmp_list);

                    P_list = PublicationList.sort_P_list(P_list, 1900, 2100, true);
                    // tmp_list = P_list;
                    list2.ItemsSource = P_list;
                    list2.Items.Refresh();
                    // P_list = tmp_list;
                    invert_control = false;
                }
                else
                {
                    //list2.Items.Clear();
                    P_list = PublicationList.sort_P_list(P_list, 1900, 2100, false);
                    // PublicationList.additemt_p_listbox(list2, tmp_list);

                    //  tmp_list = P_list;
                    list2.ItemsSource = P_list;
                    list2.Items.Refresh();
                    invert_control = true;
                }
            }
            else
            {
                MessageBox.Show("Publication list is empty ");
            }
        }
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            if (list2.Items.Count != 0)
            {
                if (Convert.ToInt32(cbo2.SelectedItem) >= Convert.ToInt32(cbo1.SelectedItem))
                {
                    P_list = PublicationList.sort_P_list(Orgin_list, Convert.ToInt32(cbo1.SelectedItem), Convert.ToInt32(cbo2.SelectedItem), false);

                    list2.ItemsSource = P_list;
                    list2.Items.Refresh();
                    // list2.Items.Clear();
                    //PublicationList.additemt_p_listbox(list2, tmp_list);
                }
                else
                {
                    MessageBox.Show("Year range error,later year mus larger than former year!");
                }
            }
            else
            {
                MessageBox.Show("List is empty!");
            }
        }