Index: /gs3-extensions/html-to-expeditee/trunk/src/perllib/CssStyleToExpAttr.pm
===================================================================
--- /gs3-extensions/html-to-expeditee/trunk/src/perllib/CssStyleToExpAttr.pm	(revision 24941)
+++ /gs3-extensions/html-to-expeditee/trunk/src/perllib/CssStyleToExpAttr.pm	(revision 24941)
@@ -0,0 +1,361 @@
+###########################################################################
+#
+# CssStyleToExpAttr.pm -- 
+# A component of the Greenstone digital library software
+# from the New Zealand Digital Library Project at the 
+# University of Waikato, New Zealand.
+#
+# Copyright (C) 2009 New Zealand Digital Library Project
+#
+# This program is free software; you can redistr   te it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###########################################################################
+
+package CssStyleToExpAttr;
+
+my $font_generic_family_lookup = { 
+    'serif'      => "t", # (e.g., Times)
+    'sans-serif' => "s", # (e.g., Helvetica)
+    'cursive',   => "s", # (e.g., Zapf-Chancery)
+    'fantasy'    => "s", # (e.g., Western)
+    'monospace'  => "m"  # (e.g., Courier)
+};
+
+
+my $font_specific_family_lookup = {
+  "arial"    		=> "sans-serif",
+  "arial black"    	=> "sans-serif",
+  "gadget"    		=> "sans-serif",
+  "comic sans ms"    	=> "cursive",
+  "comic sans"    	=> "cursive",
+  "courier"    		=> "monospace",
+  "courier new"    	=> "monospace",
+  "georgia"    		=> "serif",
+  "impact"    		=> "sans-serif",
+  "charcoal"    	=> "sans-serif",
+  "lucida console"    	=> "monospace",
+  "monaco"    		=> "monospace",
+  "lucida sans unicode" => "sans-serif",
+  "lucida grande"    	=> "sans-serif",
+  "palatino linotype"   => "serif",
+  "book antiqua"    	=> "serif",
+  "palatino"    	=> "serif",
+  "tahoma"    		=> "sans-serif",
+  "geneva"    		=> "sans-serif",
+  "times"    		=> "serif",
+  "times new roman"    	=> "serif",
+  "trebuchet ms"    	=> "sans-serif",
+  "trebuchet"    	=> "sans-serif",
+  "verdana"    		=> "sans-serif",
+  "geneva"    		=> "sans-serif",
+  #symbol 	 	=> "symbol",
+  #webdings    		=> "symbol",
+  #wingdings    	=> "symbol",
+  #zapf dingbats 	=> "symbol",
+  "ms sans serif"    	=> "sans-serif",
+  "sans serif 		=> sans-serif,
+  geneva"    		=> "sans-serif",
+  "ms serif"    	=> "serif",
+  "new york"    	=> "serif"
+};
+
+my $UNUSED_font_specific_family_mapping = {
+    'serif'      => [
+		     "Times New Roman", 
+		     "Bodoni", 
+		     "Garamond", 
+		     "Minion Web", 
+		     "ITC Stone Serif", 
+		     "MS Georgia", 
+		     "Bitstream Cyberbit",
+		     "Adobe Minion Cyrillic", 
+		     "Excelsior Cyrillic Upright", 
+		     "Monotype Albion 70", 
+		     "ER Bukinist",
+		     "New Peninim", 
+		     "Raanana", 
+		     "Ryumin Light-KL", 
+		     "Kyokasho ICA", 
+		     "Futo Min A101",
+		     "Lo Cicero Cherokee"
+    ],
+
+    'sans-serif' => [
+		     "MS Trebuchet", 
+		     "ITC Avant Garde Gothic", 
+		     "MS Arial", 
+		     "MS Verdana", 
+		     "Univers", 
+		     "Futura", 
+		     "ITC Stone Sans", 
+		     "Gill Sans", 
+		     "Akzidenz Grotesk", 
+		     "Helvetica",
+		     "Attika", 
+		     "Typiko New Era", 
+		     "MS Tahoma", 
+		     "Monotype Gill Sans 571", 
+		     "Helvetica Greek",
+		     "Helvetica Cyrillic", 
+		     "ER Univers", 
+		     "Lucida Sans Unicode", 
+		     "Bastion",
+		     "Arial Hebrew", 
+		     "Shin Go", 
+		     "Heisei Kaku Gothic W5"
+    ],
+    'cursive'    => [
+		     "Caflisch Script", 
+		     "Adobe Poetica", 
+		     "Sanvito", 
+		     "Ex Ponto", 
+		     "Snell Roundhand", 
+		     "Zapf-Chancery",
+		     "ER Architekt",
+		     "Corsiva",
+		     "DecoType Naskh", 
+		     "Monotype Urdu 507" 
+    ],
+ 
+   'fantasy'    => [
+		     "Alpha Geometrique", 
+		     "Critter", 
+		     "Cottonwood", 
+		     "FB Reactor", 
+		     "Studz" 
+    ],
+
+    'monospace'  => [
+		     "Courier", 
+		     "MS Courier New", 
+		     "Prestige",
+		     "Everson Mono",
+		     "ER Kurier", 
+		     "Osaka Monospaced",
+    ]
+};
+
+
+				 
+my $font_style_lookup = {
+    'normal'  => "n",
+    'italic'  => "i",
+    'oblique' => 'i'
+};
+
+# Nothing that can currently be done for small-caps
+my $font_varient_lookup = {
+    'normal' => "",
+    'small-caps' => ""
+};
+
+
+my $font_weight_lookup = {
+    'normal'  => "n",
+    'bold'    => "n",
+    'bolder'  => "b", # filler for now
+    'lighter' => "n", # filler for now
+    '100'     => "n",
+    '200'     => "n",
+    '300'     => "b",
+    '400'     => "b",
+    '500'     => "b",
+    '600'     => "b",
+    '700'     => "b",
+    '800'     => "b",
+    '900'     => "b"
+};
+
+
+my $font_size_absolute = {
+    'xx-small' => 8,
+    'x-small'  =>10,
+    'small'    =>12,
+    'medium'   =>14,
+    'large'    =>16,
+    'x-large'  =>18,
+    'xx-large' =>20
+};
+
+# px, em, percentage, and relative, such as larger 
+
+## color, background-color
+
+my $color_name_lookup = {
+    "aliceblue" => 	[240,248,255],
+    "antiquewhite" => 	[250,235,215],
+    "aqua" => 		[0,255,255],
+    "aquamarine" => 	[127,255,212],
+    "azure" => 		[240,255,255],
+    "beige" => 		[245,245,220],
+    "bisque" => 	[255,228,196],
+    "black" => 		[0,0,0],
+    "blanchedalmond" => [255,235,205],
+    "blue" => 		[0,0,255],
+    "blueviolet" => 	[138,43,226],
+    "brown" => 		[165,42,42],
+    "burlywood" => 	[222,184,135],
+    "cadetblue" => 	[95,158,160],
+    "chartreuse" => 	[127,255,0],
+    "chocolate" => 	[210,105,30],
+    "coral" => 		[255,127,80],
+    "cornflowerblue" => [100,149,237],
+    "cornsilk" => 	[255,248,220],
+    "crimson" => 	[220,20,60],
+    "cyan" => 		[0,255,255],
+    "darkblue" => 	[0,0,139],
+    "darkcyan" => 	[0,139,139],
+    "darkgoldenrod" => 	[184,134,11],
+    "darkgray" => 	[169,169,169],
+    "darkgreen" => 	[0,100,0],
+    "darkgrey" => 	[169,169,169],
+    "darkkhaki" => 	[189,183,107],
+    "darkmagenta" => 	[139,0,139],
+    "darkolivegreen" => [85,107,47],
+    "darkorange" => 	[255,140,0],
+    "darkorchid" => 	[153,50,204],
+    "darkred" => 	[139,0,0],
+    "darksalmon" => 	[233,150,122],
+    "darkseagreen" => 	[143,188,143],
+    "darkslateblue" => 	[72,61,139],
+    "darkslategray" => 	[47,79,79],
+    "darkslategrey" => 	[47,79,79],
+    "darkturquoise" => 	[0,206,209],
+    "darkviolet" => 	[148,0,211],
+    "deeppink" => 	[255,20,147],
+    "deepskyblue" => 	[0,191,255],
+    "dimgray" => 	[105,105,105],
+    "dimgrey" => 	[105,105,105],
+    "dodgerblue" => 	[30,144,255],
+    "firebrick" => 	[178,34,34],
+    "floralwhite" => 	[255,250,240],
+    "forestgreen" => 	[34,139,34],
+    "fuchsia" => 	[255,0,255],
+    "gainsboro" => 	[220,220,220],
+    "ghostwhite" => 	[248,248,255],
+    "gold" => 		[255,215,0],
+    "goldenrod" => 	[218,165,32],
+    "gray" => 		[128,128,128],
+    "green" => 		[0,128,0],
+    "greenyellow" => 	[173,255,47],
+    "grey" => 		[128,128,128],
+    "honeydew" => 	[240,255,240],
+    "hotpink" => 	[255,105,180],
+    "indianred" => 	[205,92,92],
+    "indigo" => 	[75,0,130],
+    "ivory" => 		[255,255,240],
+    "khaki" => 		[240,230,140],
+    "lavender" => 	[230,230,250],
+    "lavenderblush" => 	[255,240,245],
+    "lawngreen" => 	[124,252,0],
+    "lemonchiffon" => 	[255,250,205],
+    "lightblue" => 	[173,216,230],
+    "lightcoral" => 	[240,128,128],
+    "lightcyan" => 	[224,255,255],
+    "lightgoldenrodyellow" => 	[250,250,210],
+    "lightgray" => 	[211,211,211],
+    "lightgreen" => 	[144,238,144],
+    "lightgrey" => 	[211,211,211],
+    "lightpink" => 	[255,182,193],
+    "lightsalmon" => 	[255,160,122],
+    "lightseagreen" => 	[32,178,170],
+    "lightskyblue" => 	[135,206,250],
+    "lightslategray" => [119,136,153],
+    "lightslategrey" => [119,136,153],
+    "lightsteelblue" => [176,196,222],
+    "lightyellow" => 	[255,255,224],
+    "lime" => 		[0,255,0],
+    "limegreen" => 	[50,205,50],
+    "linen" => 		[250,240,230],
+    "magenta" => 	[255,0,255],
+    "maroon" => 	[128,0,0],
+    "mediumaquamarine" => 	[102,205,170],
+    "mediumblue" => 	[0,0,205],
+    "mediumorchid" => 	[186,85,211],
+    "mediumpurple" => 	[147,112,219],
+    "mediumseagreen" => 	[60,179,113],
+    "mediumslateblue" => 	[123,104,238],
+    "mediumspringgreen" => 	[0,250,154],
+    "mediumturquoise" => 	[72,209,204],
+    "mediumvioletred" => 	[199,21,133],
+    "midnightblue" => 	[25,25,112],
+    "mintcream" => 	[245,255,250],
+    "mistyrose" => 	[255,228,225],
+    "moccasin" => 	[255,228,181],
+    "navajowhite" => 	[255,222,173],
+    "navy" => 		[0,0,128],
+    "oldlace" => 	[253,245,230],
+    "olive" => 		[128,128,0],
+    "olivedrab" => 	[107,142,35],
+    "orange" => 	[255,165,0],
+    "orangered" => 	[255,69,0],
+    "orchid" => 	[218,112,214],
+    "palegoldenrod" => 	[238,232,170],
+    "palegreen" => 	[152,251,152],
+    "paleturquoise" => 	[175,238,238],
+    "palevioletred" => 	[219,112,147],
+    "papayawhip" => 	[255,239,213],
+    "peachpuff" => 	[255,218,185],
+    "peru" => 		[205,133,63],
+    "pink" => 		[255,192,203],
+    "plum" => 		[221,160,221],
+    "powderblue" => 	[176,224,230],
+    "purple" => 	[128,0,128],
+    "red" => 		[255,0,0],
+    "rosybrown" => 	[188,143,143],
+    "royalblue" => 	[65,105,225],
+    "saddlebrown" => 	[139,69,19],
+    "salmon" => 	[250,128,114],
+    "sandybrown" => 	[244,164,96],
+    "seagreen" => 	[46,139,87],
+    "seashell" => 	[255,245,238],
+    "sienna" => 	[160,82,45],
+    "silver" => 	[192,192,192],
+    "skyblue" => 	[135,206,235],
+    "slateblue" => 	[106,90,205],
+    "slategray" => 	[112,128,144],
+    "slategrey" => 	[112,128,144],
+    "snow" => 		[255,250,250],
+    "springgreen" => 	[0,255,127],
+    "steelblue" => 	[70,130,180],
+    "tan" => 		[210,180,140],
+    "teal" => 		[0,128,128],
+    "thistle" => 	[216,191,216],
+    "tomato" => 	[255,99,71],
+    "turquoise" => 	[64,224,208],
+    "violet" => 	[238,130,238],
+    "wheat" => 		[245,222,179],
+    "white" => 		[255,255,255],
+    "whitesmoke" => 	[245,245,245],
+    "yellow" => 	[255,255,0],
+    "yellowgreen" => 	[154,205,50 ]
+};
+
+
+sub convert_font_size
+{
+    my ($css_font_size) = @_;
+
+    my $exp_font_size = undef;
+
+    if ($css_font_size =~ m/^(\d+(?:\.\d*))px$/) {
+	$exp_font_size = int($1);
+    }
+
+    return $exp_font_size;
+}
+    
+1;
+    
Index: /gs3-extensions/html-to-expeditee/trunk/src/perllib/ExpediteeFrameIO.pm
===================================================================
--- /gs3-extensions/html-to-expeditee/trunk/src/perllib/ExpediteeFrameIO.pm	(revision 24940)
+++ /gs3-extensions/html-to-expeditee/trunk/src/perllib/ExpediteeFrameIO.pm	(revision 24941)
@@ -28,4 +28,6 @@
 use strict;
 
+use CssStyleToExpAttr;
+
 sub new 
 {
@@ -77,7 +79,7 @@
 
     # load up some defaults for font information
-    my $font_family = "s"; # t
-    my $font_face = "r";
-    my $font_size = "14";
+    my $exp_font_family = "s"; # t
+    my $exp_font_face = "r";
+    my $exp_font_size = "14";
 
 #    if (defined $css_attr->{'font-family'}) {
@@ -85,11 +87,14 @@
 #    }
 
-#    if (defined $css_attr->{'font-size'}) {
-#	$font_size = convert_font_size($css_attr->{'font-size'});
-#    }
+    if (defined $css_attr->{'font-size'}) {
+	my $css_font_size = $css_attr->{'font-size'};
+	$exp_font_size = CssStyleToExpAttr::convert_font_size($css_font_size);
+    }
 
 #    if (defined $css_attr->{'font-face'}) {
 #	$font = conver_font_face($css_attr->{'font-face'});
 #    }
+
+#    $exp_attr->{'f'} = $exp_font_family.$exp_font_face.$exp_font_size;
 
     return $exp_attr;
@@ -169,6 +174,6 @@
     $self->setPointDefaultAttributes($attr);
 
-    $attr->{'d'} = "50 100 50"; # green color for rect lines
-    $attr->{'h'} = "2.0";     # line thickness
+    $attr->{'d'} = "80 80 80"; # green color for rect lines
+    $attr->{'h'} = "1.0";     # line thickness
 }
 
@@ -193,9 +198,5 @@
 {
     my $self = shift @_;
-    my ($x, $y, $text, $attr) = @_;
-
-    # fudge factor for now (based on default font size used)
-    $y += 16; # y-value of text item in Expeditee is it's base line
-    $x += 4;
+    my ($x, $y, $text, $w, $attr) = @_;
 
     my %attr_copy = %$attr; # make a private copy of 'attr'
@@ -207,4 +208,5 @@
     $attr_copy{'P'} = "$x $y";
     $attr_copy{'T'} = $text;
+    $attr_copy{'w'} = "-$w" if (defined $w);
 
     return $self->_addItem("T",\%attr_copy);
@@ -442,14 +444,40 @@
 	$self->addRect($xl,$yt,$xr,$yb,$attr);
 
+	if (defined $html_node->{'img'}) {
+
+	    my $img_url = $html_node->{'img'};
+	    $img_url =~ s/^http:\/\/www\.nzdl\.org\/greenstone3-showcase\///;
+	    if ($img_url =~ m/^interfaces\//) {
+		$img_url = "images/$img_url";
+	    }
+	    elsif ($img_url =~ m/^sites\//) {
+		$img_url =~ s/^sites\/(.*?)\//images\//;
+	    }
+
+	    my $x = $xl;
+	    my $y = $yt;
+
+	    my $attr = {};
+
+	    my $img_text = "\@i: $img_url";
+
+	    $self->addText($x,$y,$img_text,undef,$attr);
+	}
+
     }
     elsif ($type eq "text") {
 	my $text = $html_node->{'text'};
 
-	my $x = $html_node->{'x'};
-	my $y = $html_node->{'y'};
+	my $x = $html_node->{'xl'};
+	my $y = $html_node->{'yt'};
+	my $w = $html_node->{'xr'} - $x +1;
 
 	my $attr = convertStyleToAttr($html_node->{'style'});
 
-	$self->addText($x,$y,$text,$attr);
+	# fudge factor for now (based on default font size used)
+	$y += 16; # y-value of text item in Expeditee is it's base line
+	$x += 4;
+
+	$self->addText($x,$y,$text,$w,$attr);
     }
     else {
Index: /gs3-extensions/html-to-expeditee/trunk/src/src/js/html-to-expeditee.js
===================================================================
--- /gs3-extensions/html-to-expeditee/trunk/src/src/js/html-to-expeditee.js	(revision 24940)
+++ /gs3-extensions/html-to-expeditee/trunk/src/src/js/html-to-expeditee.js	(revision 24941)
@@ -52,13 +52,29 @@
 }
 
-function getStyle(node,styleProp)
-{
+function hyphenToInitialCapReplacer(str, p1, offset, s)  
+{  
+    return p1.toUpperCase();
+}  
+
+function getStyle(node,style_prop)
+{
+    var prop_val;
     if (node.currentStyle) {
-	var y = node.currentStyle[styleProp];
+	/* IE */
+	style_prop = strCssRule.replace(/\-(\w)/g, hyphenToInitialCapReplacer);
+	prop_val = node.currentStyle[style_prop];
     }
     else if (window.getComputedStyle) {
-	var y = document.defaultView.getComputedStyle(node,null).getPropertyValue(styleProp);
-    }
-    return y;
+	/* Firefox */
+	var computed_style = document.defaultView.getComputedStyle(node,null)
+	prop_val = computed_style.getPropertyValue(style_prop);
+    }
+    else {
+	/* try for inline value */
+	prop_val = el.style[style_prop];
+    }
+
+    return prop_val;
+
 }
 
@@ -110,6 +126,8 @@
 	    jsonNode.text = node.nodeValue;
 
-	    jsonNode.x = pxl;
-	    jsonNode.y = pyt;
+	    jsonNode.xl = pxl;
+	    jsonNode.yt = pyt;
+	    jsonNode.xr = pxr;
+	    jsonNode.yb = pyb;
 
 	}
@@ -119,4 +137,10 @@
 	/* need to handle: img, a, li */
         /* need to dig out: text size, l/r/justified, font-face, type, colour */
+
+	if (getStyle(node,"visibility").match("hidden")
+	    || getStyle(node,"display").match("none")) {
+
+	    return null;
+	}
 
         var elemName = node.nodeName.toLowerCase();
@@ -137,10 +161,16 @@
 	    jsonNode.rect = rect;
 	
+	    if (elemName.match("img")) {
+		jsonNode.img = node.src;
+	    }
 
 	    var style = {};
 
-	    style["font-family"] = getStyle(node,"font-family");
+	    style["font-family"]      = getStyle(node,"font-family");
+	    style["font-size"]        = getStyle(node,"font-size");
 	    style["background-color"] = getStyle(node,"background-color");
 
+	    // console.log("font size = " + style["font-size"]);
+ 
 	    jsonNode.style = style
 
