function SortFreeStyleArray(&$src, $cmpIndexes)
{
    if (!is_array($src) || !is_array($cmpIndexes) || count($cmpIndexes) <= 0 || count($src) <= 0) {
        return true;
    }
    $cmpFunctionText = '';
    foreach ($cmpIndexes as $indexes => $order) {
        if (is_array($order)) {
            foreach ($src as $key => $data) {
                $indexArray = array();
                $start = 0;
                $begin = strpos($indexes, '["', $start);
                $end = strpos($indexes, '"]', $start);
                while (!(false === $begin) && !(false === $end) && $end - $begin > 2) {
                    $begin += 2;
                    $indexArray[] = substr($indexes, $begin, $end - $begin);
                    $start = $end + 2;
                    $begin = strpos($indexes, '["', $start);
                    $end = strpos($indexes, '"]', $start);
                }
                $ptr =& $src[$key];
                $isFullPath = true;
                if (count($indexArray) > 0) {
                    foreach ($indexArray as $indx) {
                        if (array_key_exists($indx, $ptr)) {
                            $ptr =& $ptr[$indx];
                        } else {
                            $isFullPath = false;
                            break;
                        }
                    }
                }
                if ($isFullPath) {
                    $result = SortFreeStyleArray($ptr, $order);
                    if (!$result) {
                        return $result;
                    }
                }
            }
        } else {
            $cmpFunctionText .= 'if( $a' . $indexes . ' < $b' . $indexes . ' ) return ';
            $cmpFunctionText .= 'DESC' == $order ? '1' : '-1';
            $cmpFunctionText .= '; elseif( $a' . $indexes . ' > $b' . $indexes . ' ) return ';
            $cmpFunctionText .= 'DESC' == $order ? '-1' : '1';
            $cmpFunctionText .= '; ';
        }
    }
    $cmpFunctionText .= 'return 0;';
    $cmpFunction = create_function('$a,$b', $cmpFunctionText);
    return uasort($src, $cmpFunction);
}
 function GetBoardFromSite($queryParameters)
 {
     $result = array();
     $result = CAirportBoard::GetOneBoardFromSite($queryParameters, "p=1&time2=24");
     $result2 = CAirportBoard::GetOneBoardFromSite($queryParameters, "p=2&time2=24");
     if (intval($result2["ERROR"]["CODE"])) {
         $result["ERROR"] = $result2["ERROR"];
     }
     if (!intval($result["ERROR"]["CODE"])) {
         $result["AK_NAMES"] = array();
         $result["AK_CODES"] = array();
         $result["DEPARTURES"] = array();
         $result["ARRIVALS"] = array();
         $result["TERMINALS"] = array();
         $result = CAirportBoard::AddFlightsToResult($result["HTML"], $result, "Пулково-1");
         unset($result["HTML"]);
         $result = CAirportBoard::AddFlightsToResult($result2["HTML"], $result, "Пулково-2");
         unset($result2);
         sort($result["AK_NAMES"]);
         sort($result["AK_CODES"]);
         sort($result["DEPARTURES"]);
         sort($result["ARRIVALS"]);
         sort($result["TERMINALS"]);
         // Сортируем рейсы по абсолютному времени вылета
         SortFreeStyleArray($result["FLIGHTS"], array('["TIME"]["PLANNED"]["DATETIME"]' => 'ASC', '["FLIGHT"]' => 'ASC'));
         //trace($result);
     }
     return $result;
 }