private static function Post_CURL($url, $postdata = null, $mode = "native")
 {
     self::$errMsg = "";
     self::$response = "";
     self::$header = "";
     if (!$url) {
         // Passed url not specified.
         $contents = 'ERROR: url not specified';
         $status = array('http_code' => 'ERROR');
     } else {
         if (!preg_match(self::$CURL_valid_url_regex, $url)) {
             // Passed url doesn't match $valid_url_regex.
             $contents = 'ERROR: invalid url';
             $status = array('http_code' => 'ERROR');
         } else {
             $ch = curl_init($url);
             if ($postdata != null) {
                 curl_setopt($ch, CURLOPT_POST, true);
                 @curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
             }
             if (self::$CURL_SendCookie) {
                 $cookie = array();
                 foreach ($_COOKIE as $key => $value) {
                     $cookie[] = $key . '=' . $value;
                 }
                 if (self::$CURL_SendSession) {
                     $cookie[] = SID;
                 }
                 $cookie = implode('; ', $cookie);
                 curl_setopt($ch, CURLOPT_COOKIE, $cookie);
             }
             curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
             curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));
             curl_setopt($ch, CURLOPT_HEADER, true);
             curl_setopt($ch, CURLOPT_USERAGENT, self::$CURL_user_agent ? self::$CURL_user_agent : @$_SERVER['HTTP_USER_AGENT']);
             $getresponse = curl_exec($ch);
             list($header, $contents) = preg_split('/([\\r\\n][\\r\\n])\\1/', $getresponse, 2);
             if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
                 $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
                 self::$header = substr($getresponse, 0, $headerSize);
                 Self::$response = substr($getresponse, $headerSize);
             }
             $status = curl_getinfo($ch);
             curl_close($ch);
         }
     }
     // Split header text into an array.
     $header_text = preg_split('/[\\r\\n]+/', $header);
     if ($mode == 'native') {
         if (!self::$CURL_enable_native) {
             $contents = 'ERROR: invalid mode';
             $status = array('http_code' => 'ERROR');
         }
         // Propagate headers to response.
         /* foreach ( $header_text as $header ) {
                         header( $header );
                     }
         */
         return $contents;
     } else {
         // $data will be serialized into JSON data.
         $data = array();
         // Propagate all HTTP headers into the JSON data object.
         if (self::$CURL_full_headers) {
             $data['headers'] = array();
             foreach ($header_text as $header) {
                 preg_match('/^(.+?):\\s+(.*)$/', $header, $matches);
                 if ($matches) {
                     $data['headers'][$matches[1]] = $matches[2];
                 }
             }
         }
         // Propagate all cURL request / response info to the JSON data object.
         if (self::$CURL_full_status) {
             $data['status'] = $status;
         } else {
             $data['status'] = array();
             $data['status']['http_code'] = $status['http_code'];
         }
         // Set the JSON data object contents, decoding it from JSON if possible.
         $decoded_json = json_decode($contents);
         $data['contents'] = $decoded_json ? $decoded_json : $contents;
         // Generate appropriate content-type header.
         $is_xhr = strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
         header('Content-type: application/' . ($is_xhr ? 'json' : 'x-javascript'));
         // Get JSONP callback.
         $jsonp_callback = self::$CURL_enable_jsonp && isset(self::$CURL_CallBack) ? self::$CURL_CallBack : null;
         // Generate JSON/JSONP string
         $json = json_encode($data);
         return $jsonp_callback ? "{$jsonp_callback}({$json})" : $json;
     }
 }