I think I'm getting tired
[squirrelmail.git] / functions / page_header.php
index 3a407689fa5dbc49b0967acae6ff7fe66153e24f..df2ca0d0accc475f4f087c3157f7f80750d46a18 100644 (file)
@@ -43,13 +43,17 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = true
     }
     echo "\n\n" . html_tag( 'html' ,'' , '', '', 'lang="'.$squirrelmail_language.'"' ) . "\n<head>\n";
 
+    /*
+     * Add closing / to link and meta elements only after switching to xhtml 1.0 Transitional.
+     * It is not compatible with html 4.01 Transitional
+     */
     if ( !isset( $custom_css ) || $custom_css == 'none' ) {
         if ($theme_css != '') {
-            echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$theme_css\" />";
+            echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$theme_css\">";
         }
     } else {
         echo '<link rel="stylesheet" type="text/css" href="' .
-             $base_uri . 'themes/css/'.$custom_css.'" />';
+             $base_uri . 'themes/css/'.$custom_css.'">';
     }
 
     if ($squirrelmail_language == 'ja_JP') {
@@ -61,7 +65,7 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = true
          * recommendations and switch to unicode.
          */
         echo "<!-- \xfd\xfe -->\n";
-        echo '<meta http-equiv="Content-type" content="text/html; charset=euc-jp" />' . "\n";
+        echo '<meta http-equiv="Content-type" content="text/html; charset=euc-jp">' . "\n";
     }
 
     if ($do_hook) {
@@ -259,6 +263,170 @@ function displayPageHeader($color, $mailbox, $xtra='', $session=false) {
             displayHtmlHeader ('SquirrelMail', $js);
             break;
 
+        case 'src/right_main.php':
+// following code graciously stolen from phpMyAdmin project at:
+// http://www.phpmyadmin.net
+            $js = <<<EOS
+/**
+ * This array is used to remember mark status of rows in browse mode
+ */
+var marked_row = new Array;
+
+
+/**
+ * Sets/unsets the pointer and marker in browse mode
+ *
+ * @param   object    the table row
+ * @param   integer  the row number
+ * @param   string    the action calling this script (over, out or click)
+ * @param   string    the default background color
+ * @param   string    the color to use for mouseover
+ * @param   string    the color to use for marking a row
+ *
+ * @return  boolean  whether pointer is set or not
+ */
+function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
+{
+    var theCells = null;
+
+    // 1. Pointer and mark feature are disabled or the browser can't get the
+    //    row -> exits
+    if ((thePointerColor == '' && theMarkColor == '')
+        || typeof(theRow.style) == 'undefined') {
+        return false;
+    }
+
+    // 2. Gets the current row and exits if the browser can't get it
+    if (typeof(document.getElementsByTagName) != 'undefined') {
+        theCells = theRow.getElementsByTagName('td');
+    }
+    else if (typeof(theRow.cells) != 'undefined') {
+        theCells = theRow.cells;
+    }
+    else {
+        return false;
+    }
+
+    // 3. Gets the current color...
+    var rowCellsCnt  = theCells.length;
+    var domDetect    = null;
+    var currentColor = null;
+    var newColor     = null;
+    // 3.1 ... with DOM compatible browsers except Opera that does not return
+    //         valid values with "getAttribute"
+    if (typeof(window.opera) == 'undefined'
+        && typeof(theCells[0].getAttribute) != 'undefined') {
+        currentColor = theCells[0].getAttribute('bgcolor');
+        domDetect    = true;
+    }
+    // 3.2 ... with other browsers
+    else {
+        currentColor = theCells[0].style.backgroundColor;
+        domDetect    = false;
+    } // end 3
+
+    // 3.3 ... Opera changes colors set via HTML to rgb(r,g,b) format so fix it
+    if (currentColor.indexOf("rgb") >= 0)
+    {
+        var rgbStr = currentColor.slice(currentColor.indexOf('(') + 1,
+                                     currentColor.indexOf(')'));
+        var rgbValues = rgbStr.split(",");
+        currentColor = "#";
+        var hexChars = "0123456789ABCDEF";
+        for (var i = 0; i < 3; i++)
+        {
+            var v = rgbValues[i].valueOf();
+            currentColor += hexChars.charAt(v/16) + hexChars.charAt(v%16);
+        }
+    }
+
+    // 4. Defines the new color
+    // 4.1 Current color is the default one
+    if (currentColor == ''
+        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
+        if (theAction == 'over' && thePointerColor != '') {
+            newColor              = thePointerColor;
+        }
+        else if (theAction == 'click' && theMarkColor != '') {
+            newColor              = theMarkColor;
+            marked_row[theRowNum] = true;
+            // deactivated onclick marking of the checkbox because it's also executed
+            // when an action (clicking on the checkbox itself) on a single item is 
+            // performed. Then the checkbox would get deactived, even though we need 
+            // it activated. Maybe there is a way to detect if the row was clicked, 
+            // and not an item therein...
+            //document.getElementById('msg[' + theRowNum + ']').checked = true;
+        }
+    }
+    // 4.1.2 Current color is the pointer one
+    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
+             && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
+        if (theAction == 'out') {
+            newColor              = theDefaultColor;
+        }
+        else if (theAction == 'click' && theMarkColor != '') {
+            newColor              = theMarkColor;
+            marked_row[theRowNum] = true;
+            //document.getElementById('msg[' + theRowNum + ']').checked = true;
+        }
+    }
+    // 4.1.3 Current color is the marker one
+    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
+        if (theAction == 'click') {
+            newColor              = (thePointerColor != '')
+                                  ? thePointerColor
+                                  : theDefaultColor;
+            marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
+                                  ? true
+                                  : null;
+            //document.getElementById('msg[' + theRowNum + ']').checked = false;
+        }
+    } // end 4
+
+    // 5. Sets the new color...
+    if (newColor) {
+        var c = null;
+        // 5.1 ... with DOM compatible browsers except Opera
+        if (domDetect) {
+            for (c = 0; c < rowCellsCnt; c++) {
+                theCells[c].setAttribute('bgcolor', newColor, 0);
+            } // end for
+        }
+        // 5.2 ... with other browsers
+        else {
+            for (c = 0; c < rowCellsCnt; c++) {
+                theCells[c].style.backgroundColor = newColor;
+            }
+        }
+    } // end 5
+
+    return true;
+} // end of the 'setPointer()' function
+EOS;
+            $js = "\n".'<script language="JavaScript" type="text/javascript">' .
+                        "\n<!--\n" . $js;
+            if ($compose_new_win == '1') {
+                if (!preg_match("/^[0-9]{3,4}$/", $compose_width)) {
+                    $compose_width = '640';
+                }
+                if (!preg_match("/^[0-9]{3,4}$/", $compose_height)) {
+                    $compose_height = '550';
+                }
+                $js .= "\nfunction comp_in_new(comp_uri) {\n".
+                     "       if (!comp_uri) {\n".
+                     '           comp_uri = "'.$compose_uri."\";\n".
+                     '       }'. "\n".
+                     '    var newwin = window.open(comp_uri' .
+                     ', "_blank",'.
+                     '"width='.$compose_width. ',height='.$compose_height.
+                     ',scrollbars=yes,resizable=yes,status=yes");'."\n".
+                     "}\n\n";
+            }
+            $js .= "// -->\n</script>\n";
+            $onload = '';
+            displayHtmlHeader ('SquirrelMail', $js);
+            break;
+
         default:
             $js = '<script language="JavaScript" type="text/javascript">' .
                  "\n<!--\n" .
@@ -447,4 +615,4 @@ function compose_Header($color, $mailbox) {
     echo "<body text=\"$color[8]\" bgcolor=\"$color[4]\" link=\"$color[7]\" vlink=\"$color[7]\" alink=\"$color[7]\" $onload>\n\n";
 }
 
-?>
\ No newline at end of file
+?>