--- classTextile.php.orig	2009-02-05 18:54:32.000000000 -0800
+++ classTextile.php	2009-02-05 20:51:54.000000000 -0800
@@ -742,14 +742,15 @@ class Textile
 	{
 		return preg_replace_callback('/
 			(^|(?<=[\s>.$pnct\(])|[{[]) # $pre
-			"							 # start
-			(' . $this->c . ')			 # $atts
-			([^"]+?)					 # $text
-			(?:\(([^)]+?)\)(?="))?		 # $title
+			"                           # start
+			(' . $this->c . ')          # $atts
+			([^"]+?)                    # $text
+			(?:\(([^)]+?)\)(?="))?      # $title
+			(?:\<([^>]+?)\>(?="))?      # $URLrel
 			":
-			('.$this->urlch.'+?)		 # $url
-			(\/)?						 # $slash
-			([^\w\/;]*?)				 # $post
+			('.$this->urlch.'+?)        # $url
+			(\/)?                       # $slash
+			([^\w\/;]*?)                # $post
 			([\]}]|(?=\s|$|\)))
 		/x', array(&$this, "fLink"), $text);
 	}
@@ -757,11 +758,11 @@ class Textile
 // -------------------------------------------------------------
 	function fLink($m)
 	{
-		list(, $pre, $atts, $text, $title, $url, $slash, $post, $tail) = $m;
+		list(, $pre, $atts, $text, $title, $URLrel, $url, $slash, $post, $tail) = $m;
 
 		$atts = $this->pba($atts);
 		$atts .= ($title != '') ? ' title="' . $this->encode_html($title) . '"' : '';
-
+		
 		if (!$this->noimage)
 			$text = $this->image($text);
 
@@ -770,7 +771,18 @@ class Textile
 
 		$url = $this->shelveURL($url.$slash);
 
-		$out = '<a href="' . $url . '"' . $atts . $this->rel . '>' . trim($text) . '</a>' . $post;
+		//handle rels intelligently
+		if (!empty($URLrel)) {
+			$URLrel = trim(strip_tags($URLrel)); //protect yourself from xss
+			// if class-wide rel exists, append these rels 
+			if ($this->rel) {
+				$atts .= preg_replace('/"$/',' '.$URLrel.'"',$this->rel);
+			}
+			else {
+				$atts .= ' rel="' . $URLrel . '"';
+			}
+		}
+		$out = '<a href="' . $url . '"' . $atts . '>' . trim($text) . '</a>' . $post;
 
 		if (($pre and !$tail) or ($tail and !$pre))
 			$out = $pre.$out.$tail;
@@ -848,17 +860,19 @@ class Textile
 	function image($text)
 	{
 		return preg_replace_callback("/
-			(?:[[{])?		   # pre
-			\!				   # opening !
-			(\<|\=|\>)? 	   # optional alignment atts
-			($this->c)		   # optional style,class atts
-			(?:\. )?		   # optional dot-space
-			([^\s(!]+)		   # presume this is the src
-			\s? 			   # optional space
-			(?:\(([^\)]+)\))?  # optional title
-			\!				   # closing
-			(?::(\S+))? 	   # optional href
-			(?:[\]}]|(?=\s|$|\))) # lookahead: space or end of string
+			(?:[[{])?                  # pre
+			\!                         # opening !
+			(\<|\=|\>)?                # optional alignment atts
+			($this->c)                 # optional style,class atts
+			(?:\. )?                   # optional dot-space
+			([^\s(!]+)                 # presume this is the src
+			\s?                        # optional space
+			(?:\(([^\)]+)\))?          # optional title
+			\s?                        # optional space
+			(?:\<([^\>]+)\>)?          # optional title
+			\!                         # closing !
+			(?::(\S+))?                # optional href
+			(?:[\]}]|(?=\s|$|\)))      # lookahead: space or end of string
 		/x", array(&$this, "fImage"), $text);
 	}
 
@@ -868,18 +882,22 @@ class Textile
 		list(, $algn, $atts, $url) = $m;
 		$atts  = $this->pba($atts);
 		$atts .= ($algn != '')	? ' align="' . $this->iAlign($algn) . '"' : '';
-		$atts .= (isset($m[4])) ? ' title="' . $m[4] . '"' : '';
-		$atts .= (isset($m[4])) ? ' alt="'	 . $m[4] . '"' : ' alt=""';
+		$atts .= (isset($m[4])) ? ' alt="'   . $m[4] . '"' : ' alt=""';
+		$title = (isset($m[4])) ? ' title="' . $m[4] . '"' : '';
+		$atts .= $title;
+		
 		$size = false;
 		if ($this->isRelUrl($url))
 			$size = @getimagesize(realpath($this->doc_root.ltrim($url, $this->ds)));
 		if ($size) $atts .= " $size[3]";
 
-		$href = (isset($m[5])) ? $this->shelveURL($m[5]) : '';
-		$url = $this->shelveURL($url);
+		$URLrel = (isset($m[5])) ? ' rel="' . $this->encode_html($m[5]) . '"' : '';
 
+		$href = (isset($m[6])) ? $this->shelveURL($m[6]) : '';
+		$url = $this->shelveURL($url);
+		
 		$out = array(
-			($href) ? '<a href="' . $href . '">' : '',
+			($href) ? '<a href="' . $href . '"' . $title . $URLrel .'>' : '',
 			'<img src="' . $url . '"' . $atts . ' />',
 			($href) ? '</a>' : ''
 		);
