//Rizwan Kassim - 602 784 143 (c) Rizwan Kassim 2004
import java.io.*;
import java.text.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class P4 extends HttpServlet {
	PrintWriter out;

	// define query Strings for params
	String page;
	String param1;
	String param2;
	String param3;
	String param4;
	String param5;
	String param6;
	String param7;
	String param8;
	String query_text;

	Connection con;

	String debugloc;

// GOT FORM VALIDATION HELP FROM http://javascript.about.com/library/weekly/aa070901a.htm
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws IOException, ServletException
    {
		try {
			Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
		} catch (Exception e) {
			e.printStackTrace();
		}

		resp.setContentType("text/html");
		out = resp.getWriter();

		// define query Strings for params
		page = "";
		param1 = "";
		param2 = "";
		param3 = "";
		param4 = "";
		param5 = "";
		param6 = "";
		param7 = "";
		param8 = "";
		query_text = "";

		// get params ( str = req.getParameter("paramname");)
		page = req.getParameter("page");
		param1 = req.getParameter("param1");
		param2 = req.getParameter("param2");
		param3 = req.getParameter("param3");
		param4 = req.getParameter("param4");
		param5 = req.getParameter("param5");
		param6 = req.getParameter("param6");
		param7 = req.getParameter("param7");
		param8 = req.getParameter("param8");

		con = null;
		String url ="jdbc:db2:CS143";

		try {
			con = DriverManager.getConnection(url);
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>---<br>" );
			out.println( "Message   : " + ex.getMessage( ) + "<br>");
			out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>---<br></b>");
		}
		out.println("<html><head>");
		String title = "Rizwan Kassim's Project 4 - Internet Movie Database";
		out.println("<title>" + title + "</title>");
		//out.println("<script language='JavaScript' src='../FormValid.js'></script>");
		javascript();
		out.println("</head><body bgcolor=white>");
		out.println("<center><h1>" + title + "</h1><hr>");
		out.println("<a href='P4?page=B1'>Actor Information</a> - <a href='P4?page=B2'>Movie Information</a><br><a href='P4?page=I1'>Actor Input</a> - <a href='P4?page=I2'>Comment Input</a> - <a href='P4?page=I3'>Movie Input</a><br><a href='P4?page=S1'>Search Query</a><br><hr>");
		//out.println("<SELECT NAME='page'><option selected><option>B1<option>B2<option>S1<option>I1<option>I2<option>I3</select>");
		if ( page != null ) {
			if ( page.startsWith("B1") ) {					page_B1();	}
			if ( page.startsWith("B2") ) {					page_B2();	}
			if ( page.startsWith("S1") ) {					page_S1();	}
			if ( page.startsWith("I1") ) {					page_I1();	}
			if ( page.startsWith("I2") ) {					page_I2();	}
			if ( page.startsWith("I3") ) {					page_I3();	}
		} else {
			out.println("<hr>");
		}
		try {
			con.close();
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>---<br>" );
			out.println( "Message   : " + ex.getMessage( ) + "<br>");
			out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>---<br></b>");
		}
	}

	public void page_B1() {
		try {
			out.println("<form method=get action=P4>");
			out.println("On which actor do you want information?<br>");
			// TODO : ADD DIRECTOR
			actor_droplist(true,1,param1);
			out.println("<br><input type=hidden name=page value=B1><input type=submit value='Submit Query'><hr>");

			if (param1 != null ) {
				out.println("</center>");
				Statement query_actor_data = con.createStatement();
				query_text = "SELECT * FROM ACTOR WHERE ID=" + param1;
				ResultSet actor_data = query_actor_data.executeQuery(query_text);
				out.println("<table border='0' cellpadding='1' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'><tr>");
				out.println("<td><b>Actor's ID</b><td><b>Last Name</b><td><b>First Name</b><td><b>Sex</b><td><b>Date of Birth</b><td><b>Date of Death</b><tr>");
				while (actor_data.next()) {
					String id = actor_data.getString(1);
					String last = actor_data.getString(2);
					String first = actor_data.getString(3);
					String sex = actor_data.getString(4);
					String dob = actor_data.getString(5);
					String dod = actor_data.getString(6);
					out.println("<td>"+id+"<td>"+last+"<td>"+first+"<td>"+sex+"<td>"+dob+"<td>"+dod+"</tr></table><br>");
				}
				out.println("<p>Roles:<br>");
				Statement query_actor_role = con.createStatement();
				query_text = "SELECT mid,role FROM MovieActor WHERE AID=" + param1;
				ResultSet actor_role = query_actor_role.executeQuery(query_text);
				while (actor_role.next()) {
					String mid = actor_role.getString(1);
					String role = actor_role.getString(2);
					out.println("Played <i>" + role + "</i> in <b><a href='P4?param1="+mid+"&page=B2'>");
					Statement query_movie_name = con.createStatement();
					query_text = "SELECT title,year,id FROM Movie WHERE ID=" + mid;
					ResultSet movie_name = query_movie_name.executeQuery(query_text);
					while (movie_name.next()) {
						String moviename = movie_name.getString(1);
						String year = movie_name.getString(2);
						String id = movie_name.getString(3);
						out.println(moviename+"</a></b> ("+year+")<br>");
					}
				}
			}
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passa: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch
	}





	public void page_B2() {
		try {

			out.println("<form method=get action=P4>");
			out.println("On which movie do you want information?<br>");
			movie_droplist(true,1,param1);

			out.println("<br><input type=hidden name=page value=B2><input type=submit value='Submit Query'><hr>");

			if (param1 != null ) {
				out.println("</center>");
				Statement query_movie_data = con.createStatement();
				query_text = "SELECT * FROM MOVIE WHERE ID=" + param1;
				ResultSet movie_data = query_movie_data.executeQuery(query_text);
				out.println("<table border='0' cellpadding='1' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'><tr>");
				out.println("<td><b>Movie's ID</b><td><b>Title</b><td><b>Year</b><td><b>Rating</b><td><b>Production Company</b><td><b>Average Rating</b><td><b>Genre(s)</b><tr>");
				while (movie_data.next()) {
					String id = movie_data.getString(1);
					String title = movie_data.getString(2);
					String year = movie_data.getString(3);
					String rating = movie_data.getString(4);
					String company = movie_data.getString(5);
					String avgrating = "";
					Statement query_movie_rating = con.createStatement();
					query_text = "SELECT AVG(RATING) FROM REVIEW WHERE MID=" + param1;
					ResultSet movie_rating = query_movie_rating.executeQuery(query_text);
					while (movie_rating.next()) {
						avgrating = movie_rating.getString(1);
					}
					out.println("<td>"+id+"<td>"+title+"<td>"+year+"<td>"+rating+"<td>"+company+"<td>"+avgrating+"<td>");
					String genre = "";
					Statement query_movie_genre = con.createStatement();
					query_text = "SELECT genre FROM moviegenre WHERE mid=" + param1;
					ResultSet movie_genre = query_movie_genre.executeQuery(query_text);
					while (movie_genre.next()) {
						genre = movie_genre.getString(1);
					}
					out.println(genre+"</tr></table><br>");
				}
				out.println("<p>Roles:<br>");
				Statement query_movie_role = con.createStatement();
				query_text = "SELECT aid,role FROM MovieActor WHERE MID=" + param1;
				ResultSet movie_role = query_movie_role.executeQuery(query_text);
				while (movie_role.next()) {
					String aid = movie_role.getString(1);
					String role = movie_role.getString(2);
					Statement query_actor_name = con.createStatement();
					query_text = "SELECT last,first,sex FROM Actor WHERE ID=" + aid;
					ResultSet actor_name = query_actor_name.executeQuery(query_text);
					out.println("<a href='P4?param1="+aid+"&page=B1'><b>");
					while (actor_name.next()) {
						String last = actor_name.getString(1);
						String first = actor_name.getString(2);
						String sex = actor_name.getString(3);
						out.println(last+", "+first+" ("+sex+")");
					}
					out.println("</b></a> played as <i>" + role + "</i><br>");
				}
				Statement query_movie_comment = con.createStatement();
				query_text = "SELECT * FROM Review WHERE MID=" + param1;
				ResultSet movie_comment = query_movie_comment.executeQuery(query_text);
				out.println("<br><table border='2' cellpadding='1' cellspacing='1' style='border-collapse: collapse' width='100%'>");
				out.println("<caption><B>Comments</b></caption><tr><th>Name<th>Date Entered<th>Rating<th>Review");
				while (movie_comment.next()) {
					String name = movie_comment.getString(1);
					String when = movie_comment.getString(2);
					String rating = movie_comment.getString(4);
					String comment = movie_comment.getString(5);
					out.println("<tr VALIGN=top><td NOWRAP ><b>"+name+"</b><td NOWRAP ><i>"+when+"</i><td NOWRAP ><b>"+rating+"</b><td>" + comment );
				}
				// TODO : Assign different CSS values for each rating! (colors)
				out.println("</table><br><a href='P4?param1=" + param1 + "&page=I2'>Add a comment</a>" );
				out.println("</html>" );
			}
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passb " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch
	}

	public void page_S1() {
		try {
			out.println("<form method=get action=P4 onsubmit='return validateForm4(this)'>");
	 		out.println("<table><tr><td><br><input type=radio name ='param2' value='movie'");
	 		if ( param2 != null) {
				if ( param2.startsWith("movie") )  {
					out.println(" checked ");
				}
			}
	 		out.println(">Search Movies</td><td></td><tr>");
	 		out.println("<td><input type=radio name ='param2' value='actor' ");
	 		if ( param2 == null) {
				out.println(" checked ");
			} else if ( param2.startsWith("actor") )  {
				out.println(" checked ");
			}

	 		out.println(">Search Actors </td><td><select name='param3'><option value='last'>Last Name<option value='first'>First Name</select></td></table><br>");
	 		out.println("Partial Search Parameter (Case-Sensitive Permitted) : <input type=text name ='param1' size = 35");
	 		if ( param1 != null) {
	 			out.println(" value='" + param1 + "' ");
	 		}
	 		out.println("><br>");
			out.println("<input type=hidden name=page value=S1><input type=submit value='Submit Query'><hr>");

			if (param1 != null) {
				out.println("</center>");
				if ( param2.startsWith("movie") )  {
					Statement query_movie_data = con.createStatement();
					query_text = "SELECT * FROM MOVIE WHERE TITLE LIKE '%" + param1 + "%' ORDER BY TITLE";
					ResultSet movie_data = query_movie_data.executeQuery(query_text);
					out.println("<table border='0' cellpadding='1' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'><tr>");
					out.println("<td><b>Movie's ID</b><td><b>Title</b><td><b>Year</b><td><b>Rating</b><td><b>Company</b>");
					while (movie_data.next()) {
						out.println("<tr>");
						String id = movie_data.getString(1);
						String title = movie_data.getString(2);
						String year = movie_data.getString(3);
						String rating = movie_data.getString(4);
						String company= movie_data.getString(5);
						out.println("<td><a href='P4?param1="+id+"&page=B2'>"+id+"</a>");
						out.println("<td>"+title+"<td>"+year+"<td>"+rating+"<td>"+company+"</tr>");
					}
					out.println("</table><br>");
				}
				if ( param2.startsWith("actor") )  {
					Statement query_actor_data = con.createStatement();
					if ( param3 != null ) {
						if ( param3.startsWith("first") ) {
							query_text = "SELECT * FROM ACTOR WHERE FIRST Like '%" + param1 + "%' ORDER BY FIRST";
						} else {
							query_text = "SELECT * FROM ACTOR WHERE LAST LIKE '%" + param1 + "%' ORDER BY LAST";
						}
					}
					else {
						query_text = "SELECT * FROM ACTOR WHERE LAST LIKE '%" + param1 + "%' ORDER BY LAST";
					}
					ResultSet actor_data = query_actor_data.executeQuery(query_text);
					out.println("<table border='0' cellpadding='1' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'><tr>");
					out.println("<td><b>Actor's ID</b><td><b>Last Name</b><td><b>First Name</b><td><b>Sex</b><td><b>Date of Birth</b><td><b>Date of Death</b>");
					while (actor_data.next()) {
						out.println("<tr>");
						String id = actor_data.getString(1);
						String last = actor_data.getString(2);
						String first = actor_data.getString(3);
						String sex = actor_data.getString(4);
						String dob = actor_data.getString(5);
						String dod = actor_data.getString(6);
						out.println("<td><a href='P4?param1="+id+"&page=B1'>"+id+"</a>");
						out.println("<td>"+last+"<td>"+first+"<td>"+sex+"<td>"+dob+"<td>"+dod+"</tr>");
					}
					out.println("</table><br>");
				}
			}



		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passc: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch
	}

	public void page_I1() {
		try {
			out.println("<form method=get action=P4 onsubmit='return validateForm(this)' >");
			out.println("Insert a new <input type=radio name ='param2' value='actor' checked>Actor <input type=radio name ='param2' value='director'>Director<br>");
			out.println("Required fields in bold,<br>DOB/DOD must be in MM/DD/YYYY form.<br>Sex is ignored for Directors.<br>");
	 		out.println("<table border=1><td><b>First Name:</b><td><input type=text name='param3' size=20><tr>");
	 		out.println("<td><b>Last Name:</b><td><input type=text name='param4' size=20><tr>");
	 		out.println("<td>Sex:<td><select name='param5'><option value='male'>Male<option value='female'>Female</select><tr>");
	 		out.println("<td>Date of Birth:<td><input type=text name='param6' size=10><tr>");
	 		out.println("<td>Date of Death:<td><input type=text name='param7' size=10><tr></table>");
			out.println("<input type=hidden name=page value=I1><input type=submit value='Submit Query'><hr>");

			if (param2 != null & param3 != null & param4 != null) {
				String query_text_a = "INSERT INTO ";
				String query_text_b;
				if (param2.startsWith("director") ) {
					query_text_b = "DIRECTOR (ID,LAST,FIRST,DOB,DOD) VALUES (";
				} else {
					query_text_b = "ACTOR (ID,LAST,FIRST,SEX,DOB,DOD) VALUES (";
				}
				// fetch MAXPERSONID
				String query_text_c;
				query_text_c = "";
				query_text = "SELECT * FROM MAXPERSONID";
				Statement max_person_s = con.createStatement();
				ResultSet max_person = max_person_s.executeQuery(query_text);
				while (max_person.next()) {
					query_text_c = max_person.getString(1);
				}
				query_text = "update maxpersonid set id=id+1";
				Statement query_s = con.createStatement();
				query_s.executeUpdate(query_text);
				query_s.close();
				String query_text_d = ",'"+param4+"','"+param3+"',";
				String query_text_e;
				if (param2.startsWith("director") )  {
					query_text_e = "";
				} else {
					query_text_e = "'"+param5 + "',";
				}
				String query_text_f;
				String query_text_g;
				if (param6.length() > 2) {
					query_text_f = "'"+param6+"',";
				} else {
					query_text_f = "NULL,";
				}
				if (param7.length() > 2) {
					query_text_g = "'"+param7+"')";
				} else {
					query_text_g = "NULL)";
				}
				query_text = query_text_a + query_text_b + query_text_c + query_text_d + query_text_e + query_text_f + query_text_g;
				String query_text_z = query_text_c + query_text_d + query_text_e + query_text_f + query_text_g;
				Statement insert_query_s = con.createStatement();
				insert_query_s.executeUpdate(query_text);
				out.println("Executed Query : <br><b>" + query_text_a + query_text_b + "<br>" + query_text_z + "</b>,<br> updating the maxperson count to " + query_text_c + "+1<br>");
				out.println("<br>Inserted Data was:<br><table><tr><td>Type<td>"+param2+"<tr><td>ID<td>"+query_text_c+"<tr><td>First Name<td>"+param3+"<tr><td>Last Name<td>"+param4+"<tr><td>Sex (if App)<td>"+param5+"<tr><td>Date of Birth<td>"+param6+"<tr><td>Date of Death<td>"+param7+"</table>");
			}
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passd: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch
	}

	public void page_I2() {
		try {
			out.println("<form method=get action=P4 onsubmit='return validateForm2(this)' >");
			out.println("Required fields in bold,<br>");
	 		out.println("<table border=1><b><td>Review which movie?</b><td>");
			movie_droplist(true,1,param1);
			out.println("<tr><td><b>Your Name:</b><td><input type=text name='param2' size=20 ");
			if (param2 != null) {
				out.println("value='"+param2+"'");
			}
	 		out.println("><tr><td><b>Rating</b>:<td><select name='param3'><option value='5'>*****<option value='4'>****<option value='3'>***<option value='2'>**<option value='1'>*</select><tr>");
	 		out.println("<td><b>Comment:</b><td><textarea name='param4' cols=80 rows=7>Enter your comment here!</textarea></table>");
			out.println("<input type=hidden name=page value=I2><input type=submit value='Submit Query'><hr>");

			if (param2 != null & param3 != null & param4 != null) {
				String query_text_a = "INSERT INTO REVIEW (NAME,TIME,MID,RATING,COMMENT) VALUES ";
				String query_text_b = "('" + param2 + "','";
				Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis());
				String query_text_c = new String(ts.toString());
				//outputBuffer.append(timestr.substring(timestr.indexOf(' ',2)));
				//https://lists.xcf.berkeley.edu/lists/advanced-java/2000-March/007661.html
				String query_text_d = "',"+param1+","+param3+",'";
				String query_text_e = param4 + "' )";
				query_text = query_text_a + query_text_b + query_text_c + query_text_d + query_text_e;
				String query_text_z = query_text_b + query_text_c + query_text_d + query_text_e;
				Statement insert_query_s = con.createStatement();
				insert_query_s.executeUpdate(query_text);
				out.println("Executed Query : <br><b>" + query_text_a + "<br>" + query_text_z + "</b>.<br>");
				out.println("<br>Inserted Data was:<br><table><tr><td>Type<td>"+"Comment"+"<tr><td>MID<td><a href='P4?page=B2&param1="+param1+"'>"+param1+"</a><tr><td>Name<td>"+param2+"<tr><td>Rating<td>"+param3+"<tr><td>Comment<td>"+param4+"<tr><td>Timestamp<td>"+query_text_c+"</table>");
			}
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passe: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch
	}
	public void page_I3() {
		try {
			out.println("<br>Required fields in bold,<br>");
	 		out.println("<form method=get action=P4 onsubmit='return validateForm3(this)' ><table border=1><b><td>Add a movie</b><td>OR<td>Add actors to a movie<tr>");
	 		out.println("<td>");
	 		out.println("<table border=1><td><b>Title:</b><td><input type=text name='param1' size=25><tr>");
	 		out.println("<td><b>Year:</b><td><input type=text name='param2' size=6><tr>");
	 		out.println("<td>Rating:<td><select name='param3'><option value='G'>G<option value='PG'>PG<option value='PG13'>PG13<option value='R'>R<option value='NC17'>NC17<option value='X'>X<option value='NR'>NR</select><tr>");
	 		out.println("<td>Production Company:<td><input type=text name='param4' size=25><tr><td>Genre:<td><input type=text name='param5' size=25></table>");
			out.println("<td><td>");
			out.println("<b>Add Actor:</b><br>");
			actor_droplist(false,6,param6);
			out.println("<br><b>to Movie:</b><br>");
			movie_droplist(true,7,param7);
			out.println("<br><b>as Role:</b><br><input type=text name='param8' size=20><br>");
			out.println("</table><input type=hidden name=page value=I3><br><input type=submit value='Submit Query'>");

			// INSERT DIRECTOR NOT IMPLEMENTED

			if (param1 != null & param3 != null & param2 != null) {
				if (param1 .length() > 2 & param2 .length() >2) {
					String query_text_a = "INSERT INTO MOVIE (ID,TITLE,YEAR,RATING,COMPANY) VALUES (";
					// fetch MAXPERSONID
					String query_text_b = "";
					query_text = "SELECT * FROM MaxMovieID";
					Statement max_movie_s = con.createStatement();
					ResultSet max_movie = max_movie_s.executeQuery(query_text);
					while (max_movie.next()) {
						query_text_b = max_movie.getString(1);
					}
					query_text = "update MaxMovieID set id=id+1";
					Statement query_s = con.createStatement();
					query_s.executeUpdate(query_text);
					query_s.close();
					String query_text_c = ",'"+param1+"',"+param2+",";
					String query_text_d = "'"+param3+"','"+param4+"')";
					query_text = query_text_a + query_text_b + query_text_c + query_text_d;
					String query_text_z = query_text_b + query_text_c + query_text_d;
					Statement insert_query_s = con.createStatement();
					insert_query_s.executeUpdate(query_text);
					out.println("<hr>Executed Query : <br><b>" + query_text_a + "<br>" + query_text_z + "</b>,<br> updating the maxmovie count to " + query_text_b + "+1<br>");
					out.println("<br>Inserted Data was:<br><table><tr><td>ID<td>"+ query_text_b +"<tr><td>Title<td>"+param1+"<tr><td>Year<td>"+param2+"<tr><td>Rating<td>"+param3+"<tr><td>Company<td>"+param4+"</table>");
					if (param5.length() > 2) {
						String query_text = "INSERT INTO MovieGenre (MID,GENRE) VALUES ("+query_text_b+",'"+param5+"')";
						Statement insert_query_s2 = con.createStatement();
						insert_query_s2.executeUpdate(query_text);
						out.println("<br>Executed Query : <br><b>" + query_text + "</b><br>");
						out.println("<br>Inserted Data was:<br><table><tr><td>MID<td>"+query_text_b+"<tr><td>Genre<td>"+param5+"</table>");
					}
				}
			}

			if (param6 != null & param7 != null & param8 != null) {
				if (param8 .length() >2) {
					String query_text_a = "INSERT INTO MovieActor (MID,AID,ROLE) VALUES ";
					String query_text_b = "(" + param7 + ",";
					String query_text_c = param6+",'"+param8+"')";
					query_text = query_text_a + query_text_b + query_text_c;
					String query_text_z = query_text_b + query_text_c;
					Statement insert_query_s = con.createStatement();
					insert_query_s.executeUpdate(query_text);
					out.println("<br>Executed Query : <br><b>" + query_text_a + "<br>" + query_text_z + "</b>.<br>");
					out.println("<br>Inserted Data was:<br><table><tr><TD>MID<td><a href='P4?page=B2&param1="+param7+"'>"+param7+"</a><tr><TD>AID<td><a href='P4?page=B1&param1="+param6+"'>"+param6+"</a><tr><td>Role<td>"+param8+"</table>");
				}
			}
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Pass: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch
	}

	public void actor_droplist(boolean paramtest,int whichselect,String param){
		try {
			Statement Actorlist_s = con.createStatement();
			//ResultSet Actorlist = Actorlist_s.executeQuery("SELECT * FROM Actor WHERE ID > 12100 AND ID < 12200 ORDER BY LAST ");
			ResultSet Actorlist = Actorlist_s.executeQuery("SELECT * FROM Actor ORDER BY LAST ");
			// CROPPED FIX TODO
			// all the IDs

			out.println("<SELECT NAME='param"+whichselect+"'><option selected>");

			debugloc = "Actorlist";
			// TODO : DIVIDE INTO ALPHA SORTS?
			while (Actorlist.next()) {
				String id = Actorlist.getString(1);
				out.println("<option value='"+id+"'");
				if (paramtest) {
					if ( param != null ) {
						if ( param.startsWith(id) ) {
							out.println(" selected");
						}
					}
				}
				out.println(">");
				String last = Actorlist.getString(2);
				String first = Actorlist.getString(3);
				String sex = Actorlist.getString(4);
				out.println(last+", "+first+" ("+sex+")");
			} // close while
			out.println("</SELECT>");
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passf: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch

	}

	public void movie_droplist(boolean paramtest,int whichselect,String param){
		try {
			Statement Movielist_s = con.createStatement();
			//ResultSet Movielist = Movielist_s.executeQuery("SELECT ID,TITLE,YEAR FROM Movie WHERE ID > 1750 AND ID < 1800 ORDER BY TITLE ");
			ResultSet Movielist = Movielist_s.executeQuery("SELECT ID,TITLE,YEAR FROM Movie ORDER BY TITLE ");
			// CROPPED FIX TODO
			// all the IDs

			out.println("<SELECT NAME='param"+whichselect+"'><option selected>");
			debugloc = "Movielist";
			while (Movielist.next()) {
				String id = Movielist.getString(1);
				out.println("<option value='"+id+"'");
				if (paramtest) {
					if ( param != null ) {
						if ( param.startsWith(id) ) {
							out.println(" selected");
						}
					}
				}
				out.println(">");
				String title = Movielist.getString(2);
				String year = Movielist.getString(3);
				out.println(title+" ("+year+")");
			} // close while
			out.println("</SELECT>");
		}
		catch ( SQLException ex ) {
			out.println( "<p><hr><b>SQLException caught<br>" );
			out.println( "---<br>" );
			while ( ex != null ) {
				out.println( "Message   : " + ex.getMessage( ) + "<br>");
				out.println( "SQLState  : " + ex.getSQLState( ) + "<br>");
				out.println( "ErrorCode : " + ex.getErrorCode( ) + "<br>");
				out.println( "Query Passg: " + query_text + "<br>");
				out.println( "---<br></b>" );
			}
			ex = ex.getNextException( );
		} // close catch

	}

	public void javascript(){
	out.println("<script Language='JavaScript'> ");
	out.println("function validRequired(formField,fieldLabel)");
	out.println("{");
	out.println("  var result = true;");
	out.println("  ");
	out.println("  if (formField.value == '"+"')");
	out.println("  {");
	out.println("    alert('Please enter a value for the ' + fieldLabel +' field.');");
	out.println("    formField.focus();");
	out.println("    result = false;");
	out.println("  }");
	out.println("  ");
	out.println("  return result;");
	out.println("}");
	out.println("function validLength(formField,fieldLabel,length)");
	out.println("{");
	out.println("  var result = true;");
	out.println("  ");
	out.println("  if (formField.value.length > 500)");
	out.println("  {");
	out.println("    alert('Please make the ' + fieldLabel +' field less than 500 characters.');");
	out.println("    formField.focus();");
	out.println("    result = false;");
	out.println("  }");
	out.println("  ");
	out.println("  return result;");
	out.println("}");
	out.println("function validNum(formField,fieldLabel,required)");
	out.println("{");
	out.println("  var result = true;");
	out.println("  if (required && !validRequired(formField,fieldLabel))");
	out.println("    result = false;");
	out.println("  ");
	out.println("   if (result)");
	out.println("   {");
	out.println("     var num = parseInt(formField.value,10);");
	out.println("     if (isNaN(num))");
	out.println("     {");
	out.println("       alert('Please enter a number for the ' + fieldLabel +' field.');");
	out.println("      formField.focus();    ");
	out.println("      result = false;");
	out.println("    }");
	out.println("  } ");
	out.println("  ");
	out.println("  return result;");
	out.println("}");
	out.println("function validDate(formField,fieldLabel,required)");
	out.println("{");
	out.println("  var result = true;");
//	out.println("  if (required && !validRequired(formField,fieldLabel))");
//	out.println("    result = false;");
	out.println("  ");
	out.println("   if (fieldLabel)");
	out.println("   {");
	out.println("     var elems = formField.value.split('/');");
	out.println("     ");
	out.println("     result = (elems.length == 3 || elems.length == 1 ); // should be three components");
	out.println("     ");
	out.println("     if (result)");
	out.println("     {");
	out.println("       var month = parseInt(elems[0],10);");
	out.println("        var day = parseInt(elems[1],10);");
	out.println("       var year = parseInt(elems[2],10);");
	out.println("      result = !isNaN(month) && (month > 0) && (month < 13) &&");
	out.println("            !isNaN(day) && (day > 0) && (day < 32) &&");
	out.println("            !isNaN(year) && (elems[2].length == 4);");
	out.println("     result = result || isNaN(month); }");
	out.println("  //riz added few liens hre   ");
	out.println("      if (!result)");
	out.println("     {");
	out.println("       alert('Please enter a date in the format MM/DD/YYYY for the ' + fieldLabel +' field.');");
	out.println("      formField.focus();    ");
	out.println("    }");
	out.println("  } ");
	out.println("  ");
	out.println("  return result;");
	out.println("}");
	out.println("function validateForm(theForm)");
	out.println("{");
	out.println("  // Customize these calls for your form");
	out.println("  // Start ------->");
	out.println("  if (!validRequired(theForm.param3,'First Name'))");
	out.println("    return false;");
	out.println("  if (!validRequired(theForm.param4,'Last Name'))");
	out.println("    return false;");
	out.println("  if (!validDate(theForm.param6,'Date of Birth',false))");
	out.println("    return false;");
	out.println("if (!validDate(theForm.param7,'Date of Death',false))");
	out.println("    return false;    ");
	out.println("  // <--------- End");
	out.println("  ");
	out.println("  return true;");
	out.println("}");
	out.println("function validateForm2(theForm)");
	out.println("{");
	out.println("  // Customize these calls for your form");
	out.println("  // Start ------->");
	out.println("  if (!validRequired(theForm.param2,'Name'))");
	out.println("    return false;");
	out.println("  if (!validRequired(theForm.param1,'Movie'))");
	out.println("    return false;");
	out.println("  if (!validRequired(theForm.param4,'Comment'))");
	out.println("    return false;");
	out.println("  if (!validLength(theForm.param4,'Comment'))");
	out.println("    return false;");
	out.println("  // <--------- End");
	out.println("  ");
	out.println("  return true;");
	out.println("}");
	out.println("function validateForm3(theForm)");
	out.println("{");
	out.println("  // Customize these calls for your form");
	out.println("  // Start ------->");
	out.println("  if (theForm.param1.value != '"+"') {");
	out.println("  if (!validRequired(theForm.param1,'Title'))");
	out.println("    return false;");
	out.println("  if (!validNum(theForm.param2,'Year',true))");
	out.println("    return false;");
	out.println("  } else if (theForm.param8.value != '"+"') {");
	out.println("  // Customize these calls for your form");
	out.println("  // Start ------->");
	out.println("  if (!validRequired(theForm.param7,'Actor'))");
	out.println("    return false;");
	out.println("  if (!validRequired(theForm.param6,'Movie'))");
	out.println("    return false;");
	out.println("  if (!validRequired(theForm.param8,'Role'))");
	out.println("    return false;");
	out.println("  // <--------- End");
	out.println("  } else { alert('Please enter something in either movie title field.');");
	out.println("  return false; }");
	out.println("}");
	out.println("function validateForm4(theForm)");
	out.println("{");
	out.println("  // Customize these calls for your form");
	out.println("  // Start ------->");
	out.println("  if (!validRequired(theForm.param1,'Movie or Actor'))");
	out.println("    return false;");
	out.println("  // <--------- End");
	out.println("  ");
	out.println("  return true;");
	out.println("}");
	out.println("</script>");
	}
}



/*



					out.println("Insert a Tuple!<br><form method=get action=P2B>Name:<input type=text name ='actor' size = 35><br>Movie:<input type=text name ='movie' size = 35><br>Role:<input type=text name ='character' size = 35><br>Year:<input type=text name ='sorted' size = 5><br>");
					out.println("<input type=submit name=special value=INSERT_FINAL></form></body></html>");


				out.println("<p>Roles:<br>");
				Statement query_actor_role = con.createStatement();
				query_text = "SELECT mid,role FROM MovieActor WHERE AID=" + param1;
				ResultSet actor_role = query_actor_role.executeQuery(query_text);
				while (actor_role.next()) {
					String mid = actor_role.getString(1);
					String role = actor_role.getString(2);
					// TODO : Make this link to movie once we have movie working
					out.println("Played <i>" + role + "</i> in <b>");
					// NESTING BAAAAAAAAAAAAAAAD
					Statement query_movie_name = con.createStatement();
					query_text = "SELECT title,year FROM Movie WHERE ID=" + mid;
					ResultSet movie_name = query_movie_name.executeQuery(query_text);
					while (movie_name.next()) {
						String moviename = movie_name.getString(1);
						String year = movie_name.getString(2);
						out.println(moviename+"</b> ("+year+")<br>");
					}
				}
				*/



/*

		String movie_query;
		String actor_query;
		String character_query;
		String sorted_query;
		String special_query;
		String total_query = "";

		movie_query = req.getParameter("movie");
		actor_query = req.getParameter("actor");
		character_query = req.getParameter("character");
		sorted_query = req.getParameter("sorted");
		special_query = req.getParameter("special");

		// since form is driven WITH data from DB we've had to initalize all the way back here


			Statement movielist_s = con.createStatement();

			// print out the result


			out.println("<a href='P2B'>Reset Query</a><br><br>");
			out.println("On what movie do you want information?<br>");
			out.println("<SELECT NAME='movie'>");
			if ( movie_query != null) {
				if ( movie_query.length() > 4) {
					out.println("<OPTION SELECTED>"+movie_query);
					out.println("<OPTION>ALL");
				}
				else {
					out.println("<OPTION SELECTED>ALL");
				}
			}
			else {
				out.println("<OPTION SELECTED>ALL");
			}
			debugloc = "Movielist";

			ResultSet movielist = movielist_s.executeQuery("SELECT DISTINCT MOVIE FROM Actors");

			while (movielist.next()) {
					out.println("<option>");
					String moviename = movielist.getString(1);
					out.println(moviename);
			} // close while

			out.println("</SELECT>");

	 		movielist.close();
	 		movielist_s.close();

	 		out.println("<br>For which actor? (Partial Search Case-Sensitive Permitted) : <input type=text name ='actor' size = 35 ");
	 		if ( actor_query != null) {
	 			out.println("value='" + actor_query + "' ");
	 		}
	 		out.println(">");
	 		out.println("<br>Playing which character? (Partial Search Case-Sensitive Permitted) : <input type=text name ='character' size = 35 ");
	 		if ( character_query != null) {
	 			out.println("value='" + character_query + "' ");
	 		}
	 		out.println(">");
	 		out.println("<br>Sorted by : <input type=radio name = 'sorted' value='M' ");
	 		if (sorted_query != null) {
				if (sorted_query.length() < 2) {
					out.println("CHECKED ");
				}
				if (sorted_query.length() == 4) {
					out.println("CHECKED ");
				}

	 			out.println(" >Movies   <input type=radio name = 'sorted' value='AA'");
	 			if (sorted_query.length() == 2) {
					out.println(" CHECKED ");
				}
		 		out.println(">Actors   <input type=radio name = 'sorted' value='CCC'");
		 		if (sorted_query.length() == 3) {
					out.println(" CHECKED ");
				}
			}
			else {
				out.println("CHECKED ");
				out.println(" >Movies   <input type=radio name = 'sorted' value='AA'");
				out.println(">Actors   <input type=radio name = 'sorted' value='CCC'");
			}

	 		out.println(">Characters");
			out.println("<br><input type=submit name=optional value=Submit><input type=submit name=special value=INSERT><br><hr>");
			out.println("</form>");

			debugloc = "Response";
			if (special_query != null) {
				if ( special_query.length() == 4 ) {
					out.println("Modify Not Implemented (Yet)!<br>");
					out.println("What would be here is something similar to the Insert Function, I'd put another form like this:<br>");
					out.println("<form method=get action=P2B>Name:<input type=text name ='actor2' size = 35><br>Movie:<input type=text name ='movie2' size = 35><br>Role:<input type=text name ='character2' size = 35><br>Year:<input type=text name ='sorted2' size = 5><br>");
					out.println("I'd repass the old passed data as well as the 'actor2' data from this form into a second form like Insert<br>");
				}
				if ( special_query.length() == 5 ) {
					out.println("Deleting Tuple!");
					Statement query_s = con.createStatement();
					out.println("DELETE Query : <b>" + "DELETE FROM Actors WHERE Name='"+actor_query+"' AND Movie='"+movie_query+"' AND Role='"+character_query+"' " + "</b>" );
					total_query = "DELETE FROM Actors WHERE Name='"+actor_query+"' AND Movie='"+movie_query+"' AND Role='"+character_query+"'";
					query_s.executeUpdate(total_query);
					query_s.close();
					out.println("<a href='P2B'>Reset Query</a><br><br>");
				}
				if ( special_query.length() == 6 ) {
					out.println("Insert a Tuple!<br><form method=get action=P2B>Name:<input type=text name ='actor' size = 35><br>Movie:<input type=text name ='movie' size = 35><br>Role:<input type=text name ='character' size = 35><br>Year:<input type=text name ='sorted' size = 5><br>");
					out.println("<input type=submit name=special value=INSERT_FINAL></form></body></html>");
					// INSERT
				}
				if ( special_query.length() > 10 ) {
					out.println("Done! Insert another Tuple!<br><form method=get action=P2B>Name:<input type=text name ='actor' size = 35><br>Movie:<input type=text name ='movie' size = 35><br>Role:<input type=text name ='character' size = 35><br>Year:<input type=text name ='sorted' size = 5><br>");
					out.println("<input type=submit name=special value=INSERT_FINAL></form>");
					// INSERT confirm
					Statement query_s = con.createStatement();
					out.println("Insert Query : <b>" + "INSERT INTO Actors (Name, Role, Movie, Year) VALUES ('"+actor_query+"','"+movie_query+"','"+sorted_query+"','"+character_query+"')" + "</b>" );
					total_query = "INSERT INTO Actors VALUES ('"+actor_query+"','"+movie_query+"',"+sorted_query+",'"+character_query+"')";
					query_s.executeUpdate(total_query);
					query_s.close();
				}
			} else if (sorted_query==null) {
				out.println("</body></html>");
				}
				else {
				Statement query_s = con.createStatement();
				String the_query_a = "SELECT * ";
				// the_query_b is sorted_query - well not really
				String the_query_c = "FROM Actors ";
				String the_query_d = " ";
				String the_query_e = ""; String the_query_f = "";
				String the_query_g = ""; String the_query_h = "";
				String the_query_i = ""; String the_query_j = "";
				if (sorted_query.length() == 1) {
					the_query_j = " ORDER BY Movie";
				}
				if (sorted_query.length() == 2) {
					the_query_j = " ORDER BY Name";
				}
				if (sorted_query.length() == 3) {
					the_query_j = " ORDER BY Role";
				}

				int past = 0;
				if ( actor_query.length() > 0 ) {
					the_query_d ="WHERE ";
					the_query_e = "Name Like '%" + actor_query + "%'";
					past = 1;
				}
				if ( character_query.length() > 0 ) {
					if (past==1)
					{ the_query_f = " AND "; }
					else
					{ the_query_f = " "; }
					the_query_d = "WHERE ";
					the_query_g = "Role Like '%" + character_query + "%'";
					past = 1;
				}
				if ( movie_query.length() > 4) {
					if (past==1)
					{ the_query_h = " AND "; }
					else
					{ the_query_h = " "; }
					the_query_d = "WHERE ";
					the_query_i = "Movie='" + movie_query + "'";
				}
				total_query = the_query_a + the_query_c + the_query_d + the_query_e + the_query_f + the_query_g + the_query_h + the_query_i + the_query_j;
				out.println("<br>The processed query was : <b>" + total_query + "</b><br>");

				// could have used String.appen but this works too :)
				// doc here http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

				ResultSet final_query = query_s.executeQuery(total_query);
				out.println("<table border='0' cellpadding='1' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%'><tr>");

				int counter = 0;
				out.println("<p>");
				while (final_query.next()) {
					out.println("<td align='left' width='80%'>");
					String sql_name = final_query.getString(1);
					String sql_movie = final_query.getString(2);
					String sql_year = final_query.getString(3);
					String sql_role = final_query.getString(4);

					if (sorted_query.length() == 1) {
			out.println("<b>" + sql_movie + "</b> (" + sql_year + ") starring ");
			out.println("<a href='P2B?movie=ALL&character=&sorted=BB&actor=" + sql_name + "'>"+sql_name+"</a>");
			out.println(" as " + sql_role + ".<br>");
					}
					if (sorted_query.length() == 2) {
			out.println("<b>" + sql_name + "</b> as " + sql_role + " in ");
			out.println("<a href='P2B?character=&sorted=A&actor=&movie=" + sql_movie + "'>"+sql_movie+"</a>");
			out.println(" (" + sql_year + ").<br>");
					}
					if (sorted_query.length() == 3) {
			out.println("<b>" + sql_role + "</b> played by ");
			out.println("<a href='P2B?movie=ALL&character=&sorted=BB&actor=" + sql_name + "'>"+sql_name+"</a>");
			out.println("in ");
			out.println("<a href='P2B?character=&sorted=A&actor=&movie=" + sql_movie + "'>"+sql_movie+"</a>");
			out.println(" (" + sql_year + ").<br>");
					}
					out.println("</td><td align='center' width='10%'>");
					out.println("<a href='P2B?movie=" + sql_movie + "&actor=" + sql_name + "&character=" + sql_role + "&special=delet'>");
					out.println("Delete</a>");
					out.println("</td><td align='center' width='10%'>");
					out.println("<a href='P2B?movie=" + sql_movie + "&actor=" + sql_name + "&character=" + sql_role + "&special=mdfy'>");
					out.println("Update</a>");
					out.println("</td></tr>");
					counter++;
				} // close while
				out.println("</table>");
				out.println("<br>" + counter + " rows returned.");
				final_query.close();
				query_s.close();
			} // end else


*/






