+$version = '1.5.0 [CVS]';
+
+/**
+ * SquirrelMail internal version number -- DO NOT CHANGE
+ * $sm_internal_version = array (release, major, minor)
+ */
+global $SQM_INTERNAL_VERSION;
+$SQM_INTERNAL_VERSION = array(1,5,0);
+
+
+/**
+ * There can be a circular issue with includes, where the $version string is
+ * referenced by the include of global.php, etc. before it's defined.
+ * For that reason, bring in global.php AFTER we define the version strings.
+ */
+require_once(SM_PATH . 'functions/global.php');
+
+/**
+ * Wraps text at $wrap characters
+ *
+ * Has a problem with special HTML characters, so call this before
+ * you do character translation.
+ *
+ * Specifically, ' comes up as 5 characters instead of 1.
+ * This should not add newlines to the end of lines.
+ */
+function sqWordWrap(&$line, $wrap) {
+ global $languages, $squirrelmail_language;
+
+ if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
+ function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
+ if (mb_detect_encoding($line) != 'ASCII') {
+ $line = $languages[$squirrelmail_language]['XTRA_CODE']('wordwrap', $line, $wrap);
+ return;
+ }
+ }
+
+ ereg("^([\t >]*)([^\t >].*)?$", $line, $regs);
+ $beginning_spaces = $regs[1];
+ if (isset($regs[2])) {
+ $words = explode(' ', $regs[2]);
+ } else {
+ $words = '';
+ }
+
+ $i = 0;
+ $line = $beginning_spaces;
+
+ while ($i < count($words)) {
+ /* Force one word to be on a line (minimum) */
+ $line .= $words[$i];
+ $line_len = strlen($beginning_spaces) + strlen($words[$i]) + 2;
+ if (isset($words[$i + 1]))
+ $line_len += strlen($words[$i + 1]);
+ $i ++;
+
+ /* Add more words (as long as they fit) */
+ while ($line_len < $wrap && $i < count($words)) {
+ $line .= ' ' . $words[$i];
+ $i++;
+ if (isset($words[$i]))
+ $line_len += strlen($words[$i]) + 1;
+ else
+ $line_len += 1;
+ }
+
+ /* Skip spaces if they are the first thing on a continued line */
+ while (!isset($words[$i]) && $i < count($words)) {
+ $i ++;
+ }
+
+ /* Go to the next line if we have more to process */
+ if ($i < count($words)) {
+ $line .= "\n";
+ }
+ }
+}
+
+/**
+ * Does the opposite of sqWordWrap()
+ */
+function sqUnWordWrap(&$body) {
+ global $squirrelmail_language;
+
+ if ($squirrelmail_language == 'ja_JP') {
+ return;
+ }
+
+ $lines = explode("\n", $body);
+ $body = '';
+ $PreviousSpaces = '';
+ $cnt = count($lines);
+ for ($i = 0; $i < $cnt; $i ++) {
+ preg_match("/^([\t >]*)([^\t >].*)?$/", $lines[$i], $regs);
+ $CurrentSpaces = $regs[1];
+ if (isset($regs[2])) {
+ $CurrentRest = $regs[2];
+ } else {
+ $CurrentRest = '';
+ }
+
+ if ($i == 0) {
+ $PreviousSpaces = $CurrentSpaces;
+ $body = $lines[$i];
+ } else if (($PreviousSpaces == $CurrentSpaces) /* Do the beginnings match */
+ && (strlen($lines[$i - 1]) > 65) /* Over 65 characters long */
+ && strlen($CurrentRest)) { /* and there's a line to continue with */
+ $body .= ' ' . $CurrentRest;
+ } else {
+ $body .= "\n" . $lines[$i];
+ $PreviousSpaces = $CurrentSpaces;
+ }
+ }
+ $body .= "\n";
+}