/**
     * Get results of the user's search of experiments with pagination
     * @return array|null
     */
    public static function get_expsearch_results_with_pagination( $inputs, $limit, $offset)
    {
        $experiments = array();

        try
        {
            switch ( $inputs["search-key"])
            {
                case 'experiment-name':
                    $experiments = Airavata::searchExperimentsByNameWithPagination(
                        Session::get('gateway_id'), Session::get('username'), $inputs["search-value"], $limit, $offset);
                    break;
                case 'experiment-description':
                    $experiments = Airavata::searchExperimentsByDescWithPagination(
                        Session::get('gateway_id'), Session::get('username'), $inputs["search-value"], $limit, $offset);
                    break;
                case 'application':
                    $experiments = Airavata::searchExperimentsByApplicationWithPagination(
                        Session::get('gateway_id'), Session::get('username'), $inputs["search-value"], $limit, $offset);
                    break;
                case 'creation-time':
                    $experiments = Airavata::searchExperimentsByCreationTimeWithPagination(
                        Session::get('gateway_id'), Session::get('username'), strtotime( $inputs["from-date"])*1000,
                        strtotime( $inputs["to-date"])*1000 , $limit, $offset);
                    break;
                case '':
            }
        }
        catch (InvalidRequestException $ire)
        {
            Utilities::print_error_message('InvalidRequestException!<br><br>' . $ire->getMessage());
        }
        catch (AiravataClientException $ace)
        {
            Utilities::print_error_message('AiravataClientException!<br><br>' . $ace->getMessage());
        }
        catch (AiravataSystemException $ase)
        {
            if ($ase->airavataErrorType == 2) // 2 = INTERNAL_ERROR
            {
                Utilities::print_info_message('<p>You have not created any experiments yet, so no results will be returned!</p>
                                <p>Click <a href="create_experiment.php">here</a> to create an experiment, or
                                <a href="create_project.php">here</a> to create a new project.</p>');
            }
            else
            {
                Utilities::print_error_message('There was a problem with Airavata. Please try again later or report a bug using the link in the Help menu.');
                //print_error_message('AiravataSystemException!<br><br>' . $ase->airavataErrorType . ': ' . $ase->getMessage());
            }
        }
        catch (TTransportException $tte)
        {
            Utilities::print_error_message('TTransportException!<br><br>' . $tte->getMessage());
        }

        //get values of all experiments
        $expContainer = array();
        $expNum = 0;
        foreach( $experiments as $experiment)
        {
            $expValue = Utilities::get_experiment_values( $experiment, Utilities::get_project($experiment->projectID), true );
            $expContainer[$expNum]['experiment'] = $experiment;
            if( $expValue["experimentStatusString"] == "FAILED")
                $expValue["editable"] = false;
            $expContainer[$expNum]['expValue'] = $expValue;
            $expNum++;
        }

        return $expContainer;
    }