
package rob.servlets.addressbook ;

import java.io.* ;
import java.util.* ;
import java.net.URLEncoder ;

/**
 * MainPage 
 *
 *
 * Created: Fri Mar  9 16:05:14 2001
 *
 * @author <a href="mailto: "Robert Judd</a>
 * @version
 */





public class MainPage {

    private String userid ;
    private String status = null ;
    private String[] addressTable = null ;
    

    public  MainPage(String userid, String[][] addresses) {
	this.userid = userid ;
	if (addresses != null) createAddressTable(addresses) ;
    }

    public  MainPage(String userid, String[][] addresses, String status) {
	this(userid, addresses) ;
	this.status = status ;
    }
    
    public void write(PrintWriter w) {
	for (int i=0, max=data.length; i<max; ++i) {
	    if (i == TITLE_LINE)
		w.println("AddressBook of "+userid) ;
	    else if (i == STATUS_LINE && status != null )
		w.println(status) ;
	    else if (i == ADDRESSES_LINE && addressTable != null) {
		for (int j=0, mx = addressTable.length; j<mx; ++j)
		    w.println(addressTable[j]) ;
	    } else if (i == MESSAGE_LINE)
		w.println("Generated by AddressBookServlet "+new Date().toString());
	    else 
		w.println(data[i]) ;
	}
	w.flush() ;
	w.close() ;
    }
	
    
    public void createAddressTable(String[][] addresses) {
	ArrayList lines = new ArrayList() ; 
	lines.add("") ; 
	lines.add("<hr>") ; 
	lines.add("") ; 
	lines.add("<table border=0 cellspacing=0 cellpadding=2 width=100% bgcolor=\"#FFFFFF\">") ;
	lines.add("  <tr bgcolor=\"#C2D7EA\">") ;
	lines.add("    <th align=left>Name</th><th align=left>Address</th>") ;
	lines.add("    <th align=left>Telephone</th><th align=left>Email</th>") ;
	lines.add("  </tr>") ; 

	if (addresses == null || addresses.length == 0)
	    lines.add("<tr><td colspan=4>No addresses found.</td></tr>") ;
	else {
	    // addresses[i] should be
	    // { name, email, address1, address2, city, state, zipcode, phone, id }
	    String tr, href ;
	    for (int i=0, max=addresses.length; i<max; ++i) {
		if (i%2 == 0) tr = "<tr>" ;
		else tr = "<tr bgcolor=\"#CCCCCC\">" ;
		buf.setLength(0) ;
		buf.append("/servlet/rob.servlets.addressbook.AddressBookServlet?")
		    .append("action=Edit&addressid=").append(addresses[i][8]) ;
		for (int k=0, mymx=AddressBookServlet.fields.length; k<mymx; ++k)
		    buf.append('&').append(AddressBookServlet.fields[k])
			.append('=').append(URLEncoder.encode(addresses[i][k])) ;
		href = buf.toString() ;

		for (int j=0, mx = addresses[i].length; j<mx; ++j)
		    if (addresses[i][j] == null || addresses[i][j].equals(""))
			addresses[i][j] = "&nbsp;" ;
		
		lines.add(createRow(tr, href, new String[] { 
		    addresses[i][0], addresses[i][2], 
		    addresses[i][7], addresses[i][1] })) ;

		if (!addresses[i][3].equals("&nbsp;"))
		    lines.add(createRow(tr, href, new String[] { 
			"&nbsp; ", addresses[i][3], "&nbsp; ", "&nbsp; " })) ;
		    
		if (!(addresses[i][4].equals("&nbsp;") &&
		      addresses[i][5].equals("&nbsp;") &&
		      addresses[i][6].equals("&nbsp;")))
		    lines.add(createRow(tr, href, new String[] {
			"&nbsp; ", addresses[i][4]+" "+addresses[i][5]+" "+
			addresses[i][6], "&nbsp; ", "&nbsp; "  })) ;
	    }
	}
	lines.add("</table>") ; 
	lines.add("") ; 
	addressTable = (String[]) lines.toArray(new String[0]) ;
    }

    private StringBuffer buf = new StringBuffer() ;
    private String createRow(String tr, String href, String[] data) {
	buf.setLength(0) ;
	buf.append(tr) ;
	for (int i=0, max=data.length; i<max; ++i)
	    buf.append("<td>").append("<a href=\"").append(href).append("\">")
		.append(data[i]).append("</a></td>") ;
	buf.append("</tr>") ;
	return buf.toString() ;
    }

    public static void main(String[] args) {

	try {

	    PrintWriter w ;
	    if (args == null || args.length == 0 ||args[0].equals("-"))
		w = new PrintWriter(System.out) ;
	    else
		w = new PrintWriter(new FileWriter(args[0])) ;

	     MainPage ep = new  MainPage("Doh!", null) ;
	    ep.write(w) ;

	} catch (Exception ex) {
	    System.out.println
		("Usage: java rob.servlets.addressbook. MainPage ( filename | - )");
	}


    }

    public static final int TITLE_LINE = 42 ;
    public static final int STATUS_LINE = 47 ;
    public static final int ADDRESSES_LINE = 122 ;
    public static final int MESSAGE_LINE = 136 ;
    public static final String[] data = new String[] {


	"<html>",
	"<head>",
	"",
	"<title>AddressBook</title>",
	"",
	"<style type=\"text/css\">",
	"<!--",
	"a:link {  text-decoration: none}",
	"a:visited {  text-decoration: none}",
	"a:hover {  text-decoration: underline}",
	"-->",
	"</style>",
	"",
	"<script language=\"JavaScript\">",
	"",
	"<!--- Hide me ",
	"// Check input fields and submit form. ",
	"function submitForm(action) {",
	"    // Make sure the userid field is not blank",
	"    if (action == 'Add') {",
	"        if(document.address.name.value.length == 0 ||",
	"           document.address.email.value.length == 0){",
	"            alert(\"The name and email fields should not be blank.\");",
	"            document.address.name.focus();",
	"            return;",
	"        }",
	"    }",
	"    document.address.action.value = action ;",
	"    document.address.submit(); ",
	"    document.address.reset(); ",
	"} ",
	"//End hiding--> ",
	"",
	"",
	"</script>",
	"",
	"</head>",
	"<body bgcolor=\"#FFFFFF\" link=\"#767E9E\" vlink=\"#767E9E\" alink=\"#767E9E\" onLoad=\"document.address.name.focus()\">",
	" ",
	"<table border=0 cellspacing=0 cellpadding=10 width=100% bgcolor=\"#767E9E\">",
	"  <tr><td align=center valign=center height=60><font color=\"#C2D7EA\" size=7>",
	"    <b>",
	"    AddressBook of rob",
	"    </b></font></td></tr>",
	"</table>",
	"",
	"<br>",
	"",
	"<form method=\"POST\" name=\"address\" action=\"/servlet/rob.servlets.addressbook.AddressBookServlet\">",
	"",
	"<table>",
	"  <tr>",
	"    <td>Name </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"name\" size=\"20\" value=\"\"></td>",
	"    <td>Email </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"email\" size=\"20\" value=\"\"></td>",
	"  </tr>",
	"  <tr>",
	"    <td>Address (1) </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"address1\" size=\"20\" value=\"\"></td>",
	"    <td>Address (2) </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"address2\" size=\"20\" value=\"\"></td>",
	"  </tr>",
	"  <tr>",
	"    <td>City </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"city\" size=\"20\" value=\"\"></td>",
	"    <td>State </td> ",
	"    <td>",
	"	<input maxlength=\"2\" type=\"text\" name=\"state\" size=\"2\" value=\"\">",
	"	&nbsp; Zip code &nbsp;",
	"	<input maxlength=\"10\" type=\"text\" name=\"zipcode\" size=\"10\" value=\"\">",
	"    </td>",
	"  </tr>",
	"  <tr>",
	"    <td>Telephone </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"telephone\" size=\"20\" value=\"\"></td>",
	"    <td> </td> ",
	"    <td></td>",
	"  </tr>",
	"  <tr>",
	"    <td><input type=\"button\" onClick=\"submitForm('Add')\" value=\"Add\">",
	"	<input type=\"hidden\" name=\"action\" value=\"\"></td>",
	"    <td><input type=\"button\" onClick=\"reset()\" value=\"Reset\"></td>",
	"    <td colspan=2>",
	"	<noscript>",
	"	If your browser does not support JavaScript use this button:",
	"	<input type=\"submit\" name=\"action\" value=\"Add\">",
	"	</noscript>",
	"    </td>",
	"  </tr>",
	"  <tr><td colspan=4><hr></td></tr>",
	"  <tr>",
	"    <td>Search for </td> ",
	"    <td><input maxlength=\"40\" type=\"text\" name=\"search\" size=\"20\" value=\"\"></td>",
	"    <td align=\"center\">in field </td> ",
	"    <td>",
	"	<select name=\"field\">",
	"	  <option value=\"all\">All fields",
	"	  <option value=\"name\">Name",
	"	  <option value=\"email\">Email",
	"	  <option value=\"address1\">Address (1)",
	"	  <option value=\"address2\">Address (2)",
	"	  <option value=\"city\">City",
	"	  <option value=\"state\">State",
	"	  <option value=\"zipcode\">Zip code",
	"	  <option value=\"telephone\">Telephone",
	"	</select>",
	"    </td>",
	"  <tr><td colspan=4>(Leave blank to view all addresses.)</td></tr>",
	"  <tr>",
	"    <td><input type=\"button\" onClick=\"submitForm('Search')\" value=\"Search\"></td>",
	"    <td colspan=3>",
	"	<noscript>",
	"	If your browser does not support JavaScript use this button:",
	"	<input type=\"submit\" name=\"action\" value=\"Search\">",
	"	</noscript>",
	"    </td>",
	"  </tr>",
	"  </tr>",
	"</table>",
	"",
	"",
	"</form>",
	"",
	"<br>",
	"<table border=0 cellspacing=0 cellpadding=10 width=100% bgcolor=\"#767E9E\">",
	"  <tr>",
	"    <td align=right>",
	"    <a href=\"/servlet/rob.servlets.addressbook.AddressBookServlet?action=Log+Out\">",
	"    <font color=\"#C2D7EA\"><b>Log Out</b></font></a>",
	"    </td>",
	"  </tr>",
	"</table>",
	"<br>",
	"<address>",
	"<font color=\"#767E9E\">",
	"Generated by AddressBookServlet Fri Mar  9 16:05:14 2001",
	"</font>",
	"</address>",
	"",
	"</body>",
	"</html>"
    } ;


}// MainPage

