Index: /trunk/src/org/expeditee/actions/Misc.java
===================================================================
--- /trunk/src/org/expeditee/actions/Misc.java	(revision 513)
+++ /trunk/src/org/expeditee/actions/Misc.java	(revision 514)
@@ -24,12 +24,16 @@
 import org.expeditee.gui.FrameIO;
 import org.expeditee.gui.FrameMouseActions;
+import org.expeditee.gui.FrameUtils;
+import org.expeditee.gui.FreeItems;
 import org.expeditee.gui.MessageBay;
 import org.expeditee.gui.Reminders;
 import org.expeditee.gui.TimeKeeper;
 import org.expeditee.importer.FrameDNDTransferHandler;
+import org.expeditee.io.ExpClipReader;
 import org.expeditee.items.Item;
 import org.expeditee.items.ItemUtils;
 import org.expeditee.items.Line;
 import org.expeditee.items.Text;
+import org.expeditee.items.widgets.InteractiveWidget;
 import org.expeditee.math.ExpediteeJEP;
 import org.expeditee.simple.SString;
@@ -1009,3 +1013,71 @@
 		return AttributeUtils.getAttribute(item, attribute);
 	}
+	
+	/**
+	 * Launches items.widgets.Browser and uses Text item as URL.
+	 * @param text Text item which passes contents as URL for browser.
+	 * @throws Exception
+	 */
+	public static void startBrowser(Item text) throws Exception {
+		if (text instanceof Text) {
+			FreeItems.getInstance().clear();								// remove url text from cursor
+			
+			Text wt = new Text("@iw:org.expeditee.items.widgets.Browser");	// create new text item for browser widget
+			wt.setParent(DisplayIO.getCurrentFrame());						// set parent of text source for InteractiveWidget.createWidget()
+			wt.setXY(FrameMouseActions.getX(), FrameMouseActions.getY());
+			// create widget from text item
+			org.expeditee.items.widgets.Browser browser = (org.expeditee.items.widgets.Browser) InteractiveWidget.createWidget(wt);
+			
+			if(FreeItems.textOnlyAttachedToCursor()) {						// navigates to url specified by the text item
+				browser.navigate(text.getText());
+			} else {
+				browser.navigate("http://www.waikato.ac.nz");
+			}
+			
+			FrameMouseActions.pickup(browser.getItems());					// attach browser widget to mouse
+		} else {
+			MessageBay.errorMessage("Must be a text item.");
+		}
+	}
+	
+	/**
+	 * Text item becomes link to new frame containing items.widgets.Browser and uses Text item as URL for browser.
+	 * @param text Text item which passes contents as URL for browser and becomes link to the browser's new frame.
+	 * @throws Exception
+	 */
+	public static void startBrowserNewFrame(Item text) throws Exception {
+		System.out.println("test");
+		if (!(text instanceof Text)) {
+			MessageBay.errorMessage("Must be a text item.");
+			return;
+		}
+		if(text.getLink() != null) {											// text item can't already have a link
+			MessageBay.errorMessage("Text item already has link.");
+			return;
+		}
+		
+		Frame frame = FrameIO.CreateNewFrame(text);								// create new frame for browser
+		frame.addText(50, 50, "@iw:org.expeditee.items.widgets.Browser", null);	// create new text item for browser widget
+		FrameUtils.Parse(frame);												// parse created frame; loads browser widget
+		
+		for(InteractiveWidget iw : frame.getInteractiveWidgets()) {				// may be other widgets on frame
+			if(iw instanceof org.expeditee.items.widgets.Browser) {
+				// If there is a text item attached to cursor use it as url for browser
+				if(FreeItems.textOnlyAttachedToCursor()) {
+					text.setLink("" + frame.getNumber());
+					((org.expeditee.items.widgets.Browser)iw).navigate(text.getText());
+				} else {
+					// Navigate to www.waikato.ac.nz by default if no url supplied and create new text item to be the link
+					((org.expeditee.items.widgets.Browser)iw).navigate("http://www.waikato.ac.nz");
+					Text t = new Text("http://www.waikato.ac.nz");
+					t.setParent(DisplayIO.getCurrentFrame());					// set parent of text source for InteractiveWidget.createWidget()
+					t.setXY(FrameMouseActions.getX(), FrameMouseActions.getY());
+					t.setLink("" + frame.getNumber());							// link url text to new browser frame
+					FrameMouseActions.pickup(t);								// Attach new text link to cursor
+				}
+			}
+		}
+		
+		FrameIO.SaveFrame(frame);												// save frame to disk
+	}
 }
