tag 1.5-M1

git-svn-id: https://svn.apache.org/repos/asf/incubator/click/tags/click-1.5-M1@717234 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/build/build.xml b/build/build.xml
index bbc84c0..5b63a52 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -88,10 +88,8 @@
     <macrodef name="digestMacro">
         <attribute name="file"/>
         <sequential>
-    	<!--
             <checksum file="@{file}" forceOverwrite="true" />
             <checksum file="@{file}" forceOverwrite="true" algorithm="SHA1" />
-        -->
         </sequential>
     </macrodef>
 
diff --git a/build/javascript-syntax-highlighter.xml b/build/javascript-syntax-highlighter.xml
index 3c40cc1..6fad0e1 100644
--- a/build/javascript-syntax-highlighter.xml
+++ b/build/javascript-syntax-highlighter.xml
@@ -1,6 +1,6 @@
 <root>

    <properties>

       <!-- The javascript snippet provides syntax highlighting inside javadoc -->

-      <highlighter><![CDATA[<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:2px;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/\"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;').replace(pr_quot,'&quot;');}function PR_textToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;');}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,\"'\").replace(pr_quotEnt,'\"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC \"foo bar\">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'=\"',PR_attribToHtml(node.value),'\"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES='                ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,\"'\"],[PR_STRING,/^\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)/,null,'\"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'\"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,\"'\"],[PR_ATTRIB_VALUE,/^\"[^\"]*(?:\"|$)/,null,'\"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^[\"\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class=\"',openDecoration,'\">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1&nbsp;').replace(/\r\n?|\n/g,'&nbsp;<br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script>]]></highlighter>

+      <highlighter><![CDATA[<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:1em;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/\"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;').replace(pr_quot,'&quot;');}function PR_textToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;');}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,\"'\").replace(pr_quotEnt,'\"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC \"foo bar\">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'=\"',PR_attribToHtml(node.value),'\"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES='                ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,\"'\"],[PR_STRING,/^\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)/,null,'\"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'\"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,\"'\"],[PR_ATTRIB_VALUE,/^\"[^\"]*(?:\"|$)/,null,'\"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^[\"\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class=\"',openDecoration,'\">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1&nbsp;').replace(/\r\n?|\n/g,'&nbsp;<br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script>]]></highlighter>

    </properties>

 </root>
\ No newline at end of file
diff --git a/documentation/docs/click-online.html b/documentation/docs/click-online.html
index 1433c67..c600d6f 100644
--- a/documentation/docs/click-online.html
+++ b/documentation/docs/click-online.html
@@ -132,11 +132,11 @@
    <p>

    FormCenter is a powerful customer self service electronic forms delivery platform designed to fully leverage Adobe LiveCycle. It is a web based - customer facing solution that manages the complete life cycle of electronic forms and their associated services and data.

    </p><p>

-   FormCenter has been designed for large organizations (both Corporate and Government) that need to delivery electronic form solutions. FormCenter has special features that make it suitable for a single organization hosting forms on behalf of a diverse range of departments, agencies or business partners.

+   FormCenter has been designed for large organizations (both Corporate and Government) that need to deliver electronic form solutions. FormCenter has special features that make it suitable for a single organization hosting forms on behalf of a diverse range of departments, agencies or business partners.

    </p>

    <ul class="thumbnails">

     <li>

-     <a class="thickbox" rel="group1" href="click-online/images/formcenter-home.png"><img src="click-online/images/thumb-form-central-find-forms.png" alt="thumb formcentral find forms"/></a>

+     <a class="thickbox" rel="group1" href="click-online/images/formcenter-home.png"><img src="click-online/images/thumb-formcenter-home.png" alt="thumb formcentral find forms"/></a>

     </li>

    </ul>

   </td>

@@ -145,10 +145,10 @@
  <tr>

   <td>

     <div class="powered_by">Telstra OOT</div>

-    <p>Telstra OOT provides the a Business Broadband Online Ordering Tool (OOT) for <a target="_blank" class="external" href="http://www.telstra.com/business">Telstra</a>.</p>

+    <p>Telstra OOT provides a Business Broadband Online Ordering Tool (OOT) for <a target="_blank" class="external" href="http://www.telstra.com/business">Telstra</a>.</p>

     <ul class="thumbnails">

      <li>

-      <a class="thickbox" rel="group1" href="click-online/images/telstra-oot.png"><img src="click-online/images/thumb-telstra-home.png" alt="thumb telstra home"/></a>

+      <a class="thickbox" rel="group1" href="click-online/images/telstra-oot.png"><img src="click-online/images/thumb-telstra-oot.png" alt="thumb telstra home"/></a>

      </li>

     </ul>

   </td>

@@ -161,14 +161,14 @@
 <table>

   <tr>

     <td>

+      <ul>

+        <li><a target="_blank" href="http://click-framework.blogspot.com/">Click Framework Blog</a> - where Click developers post announcements and other related news.</li>

+        <li><a target="_blank" href="http://takezoe.blogspot.com/">Naoki Takezoe's blog</a> - regularly posts Click related material. Naoki is also the author of the excellent <a href="click-ide.html">ClickIDE</a>.</li>

+        <li><a target="_blank" href="http://sabob.blogspot.com/">Bob Schellink's blog</a></li>

+      </ul>

       Let us know of any Click related blog entries on the web so we can add them here. Send us a mail to one of our

       <a target="blank" class="external" href="http://sourceforge.net/mail/?group_id=82095">Mailing Lists</a>,

       or directly to "sabob1 at gmail.com".

-      <ul>

-        <li><a href="http://click-framework.blogspot.com/">Click Framework Blog</a> - where Click developers post announcements and other related news.</li>

-        <li><a href="http://takezoe.blogspot.com/">Naoki Takezoe's blog</a> - regularly posts Click related material. Naoki is also the author of the excellent <a href="click-ide.html">ClickIDE</a>.</li>

-        <li><a href="http://sabob.blogspot.com/">Bob Schellink's blog</a> - sometimes post Click code snippets.</li>

-      </ul>

     </td>

   </tr>

 </table>

diff --git a/documentation/docs/click-online/images/better-programmer.png b/documentation/docs/click-online/images/better-programmer.png
index c5bfd81..518f3fa 100644
--- a/documentation/docs/click-online/images/better-programmer.png
+++ b/documentation/docs/click-online/images/better-programmer.png
Binary files differ
diff --git a/documentation/docs/click-online/images/form-central-find-forms.png b/documentation/docs/click-online/images/form-central-find-forms.png
deleted file mode 100644
index b06eff0..0000000
--- a/documentation/docs/click-online/images/form-central-find-forms.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/form-central-home.png b/documentation/docs/click-online/images/form-central-home.png
deleted file mode 100644
index 018f751..0000000
--- a/documentation/docs/click-online/images/form-central-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/form-central-profiles.png b/documentation/docs/click-online/images/form-central-profiles.png
deleted file mode 100644
index 47bfb54..0000000
--- a/documentation/docs/click-online/images/form-central-profiles.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/formcenter-home.png b/documentation/docs/click-online/images/formcenter-home.png
new file mode 100644
index 0000000..8ac0a64
--- /dev/null
+++ b/documentation/docs/click-online/images/formcenter-home.png
Binary files differ
diff --git a/documentation/docs/click-online/images/telstra-home.png b/documentation/docs/click-online/images/telstra-home.png
deleted file mode 100644
index ccb25fd..0000000
--- a/documentation/docs/click-online/images/telstra-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/telstra-oot.png b/documentation/docs/click-online/images/telstra-oot.png
new file mode 100644
index 0000000..2d53195
--- /dev/null
+++ b/documentation/docs/click-online/images/telstra-oot.png
Binary files differ
diff --git a/documentation/docs/click-online/images/telstra-user-account.png b/documentation/docs/click-online/images/telstra-user-account.png
deleted file mode 100644
index c9f4a2a..0000000
--- a/documentation/docs/click-online/images/telstra-user-account.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-form-central-find-forms.png b/documentation/docs/click-online/images/thumb-form-central-find-forms.png
deleted file mode 100644
index 12b2ad4..0000000
--- a/documentation/docs/click-online/images/thumb-form-central-find-forms.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-form-central-home.png b/documentation/docs/click-online/images/thumb-form-central-home.png
deleted file mode 100644
index 1cc4899..0000000
--- a/documentation/docs/click-online/images/thumb-form-central-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-form-central-profiles.png b/documentation/docs/click-online/images/thumb-form-central-profiles.png
deleted file mode 100644
index 1de60bf..0000000
--- a/documentation/docs/click-online/images/thumb-form-central-profiles.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-formcenter-home.png b/documentation/docs/click-online/images/thumb-formcenter-home.png
new file mode 100644
index 0000000..d4365ed
--- /dev/null
+++ b/documentation/docs/click-online/images/thumb-formcenter-home.png
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-telstra-home.png b/documentation/docs/click-online/images/thumb-telstra-home.png
deleted file mode 100644
index 55980d7..0000000
--- a/documentation/docs/click-online/images/thumb-telstra-home.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-telstra-oot.png b/documentation/docs/click-online/images/thumb-telstra-oot.png
new file mode 100644
index 0000000..dec1f41
--- /dev/null
+++ b/documentation/docs/click-online/images/thumb-telstra-oot.png
Binary files differ
diff --git a/documentation/docs/click-online/images/thumb-telstra-user-account.png b/documentation/docs/click-online/images/thumb-telstra-user-account.png
deleted file mode 100644
index f094345..0000000
--- a/documentation/docs/click-online/images/thumb-telstra-user-account.png
+++ /dev/null
Binary files differ
diff --git a/documentation/docs/click.html b/documentation/docs/click.html
index af5140f..c44afd7 100644
--- a/documentation/docs/click.html
+++ b/documentation/docs/click.html
@@ -71,13 +71,14 @@
     <div class="news-header">18 May 2008 - Click 1.5 Milestone 1 (M1) released</div>

     <div class="news-item">

         We are pleased to announce the first milestone release of the new 1.5 development branch.

-        1.5 is still undergoing changes and is not yet ready for production use. For production use rather consider 1.4.2.

+        1.5 is still undergoing changes and is not ready for production use. Rather consider the 

+        latest stable release, 1.4.2, for live deployments.

         <p/>

-        Significant changes to 1.5 include:

+        Significant new features in 1.5 include:

         <ul>

             <li class="item"><a href="controls.html#container">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li>

             <li class="item"><a href="click-api/net/sf/click/service/package-summary.html#services">Services</a> - Click core has been refactored into pluggable services.</li>

-            <li class="item"><a href="mock-api/overview-summary.html">Mock Test Support</a> - introduced an easy to use package to write Unit and Functional Testing.</li>

+            <li class="item"><a href="mock-api/overview-summary.html">Mock Test Support</a> - introduces an easy to use package to write Unit and Functional Testing.</li>

         </ul>

         A new <a href="click-online.html#powered">Powered by Click</a> section was added. If you would

         like to add your own site to this list, please send us a mail to one of our 

diff --git a/documentation/docs/configuration.html b/documentation/docs/configuration.html
index 4272e0e..4f308b6 100644
--- a/documentation/docs/configuration.html
+++ b/documentation/docs/configuration.html
@@ -653,39 +653,6 @@
 

 

 

-<a name="application-file-item-factory" class="heading"><h3>File Item Factory</h3></a>

-

-The optional <tt>file-item-factory</tt> element defines the 

-<a href="http://commons.apache.org/fileupload/">Commons FileUpload</a> 

-<a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/FileItemFactory.html">FileItemFactory</a>

-object to be used for processing multipart file upload requests.

-

-<pre class="codeDtd">

-&lt;!ELEMENT <span class="blue">file-item-factory</span> (<span class="red">property</span>*)&gt;

-    &lt;ATTLIST file-item-factory <span class="blue">classname</span> CDATA #FIXED "<span class="green">org.apache.commons.fileupload.disk.DiskFileItemFactory</span>"&gt; 

-    

-    &lt;!-- FileItem Factory property set after factory creation. --&gt;

-    &lt;!ELEMENT <span class="red">property</span> (#PCDATA)&gt;

-      &lt;!ATTLIST property <span class="blue">name</span> CDATA #REQUIRED&gt;

-      &lt;!ATTLIST property <span class="blue">value</span> CDATA #REQUIRED&gt;

-</pre>

-

-By default file upload requests are processed using the 

-<a target="topic" href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html">DiskFileItemFactory</a>. 

-<p/>

-Factory properties can also be set by specifying property elements. These property 

-values will be applied to the FileItemFactory using OGNL type coercion. For example:

-

-<pre class="codeConfig">

-&lt;click-app&gt; 

-  ..

-  &lt;file-item-factory classname="<span class="green">org.apache.commons.fileupload.disk.DiskFileItemFactory</span>"&gt;

-     &lt;property name=<span class="blue">"sizeThreshold"</span> value=<span class="red">"524288"</span>/&gt;

-  &lt;/file-item-factory&gt;

-&lt;/click-app&gt; 

-</pre>

-

-

 <a name="auto-deployed-files" class="heading"><h2>Auto Deployed Files</h2></a> 

 

 To make pre-configured resources (templates, stylesheets, etc.) available to web applications,

diff --git a/documentation/docs/controls.html b/documentation/docs/controls.html
index 623615c..4d88af5 100644
--- a/documentation/docs/controls.html
+++ b/documentation/docs/controls.html
@@ -78,22 +78,10 @@
 Methods on the Control interface include:

 <ul>

   <li>

-   <a href="click-api/net/sf/click/Control.html#getContext()">getContext()</a> 

-   &nbsp; - &nbsp; provides access to the request <a href="click-api/net/sf/click/Context.html">Context</a>.

-  </li>

-  <li>

    <a href="click-api/net/sf/click/Control.html#getHtmlImports()">getHtmlImports()</a>

    &nbsp; - &nbsp; defines the controls HTML header imports.

   </li>

   <li>

-   <a href="click-api/net/sf/click/Control.html#getId()">getId()</a>

-   &nbsp; - &nbsp; defines the controls HTML id attribute.

-  </li>

-  <li>

-   <a href="click-api/net/sf/click/Control.html#setListener(java.lang.Object, java.lang.String)">setListener()</a>

-   &nbsp; - &nbsp; set the control action callback listener.

-  </li>

-  <li>

    <a href="click-api/net/sf/click/Control.html#getMessages()">getMessages()</a>

    &nbsp; - &nbsp; defines the controls localized messages map.

   </li>  

@@ -396,7 +384,7 @@
 } </pre>

 

 Lets test the Div: (note the MockContext used in this test is described in the

-<a href="testing.html">Test Support</a> documentation)

+<a href="mock-api/overview-summary.html">Mock Test Support</a> documentation)

    

 <pre class="prettyprint">

 public class Test {

diff --git a/documentation/docs/extras-overview.html b/documentation/docs/extras-overview.html
index 6ba045d..c85f969 100644
--- a/documentation/docs/extras-overview.html
+++ b/documentation/docs/extras-overview.html
@@ -47,7 +47,7 @@
 

 Components and controls should have minimal dependencies. This is to support easy 

 deployment of the click-examples and keeps the click build process simple. 

-See <a href="building.html#extras-dependencies">Extras Dependencies</a> for 

+See <a href="../building.html#extras-dependencies">Extras Dependencies</a> for 

 details.

 <p/>

 Please Note the Cayenne and Spring dependencies are only required if you use these particular features.

@@ -66,7 +66,7 @@
 directory at startup (existing files will not be overwritten).

 <p/>

 To enable your controls to deploy resources on startup it should use the Control

-<a href="click-api/net/sf/click/Control.html#on-deploy">onDeploy()</a> method.

+<a href="../click-api/net/sf/click/Control.html#on-deploy">onDeploy()</a> method.

 Click extra controls which use this method should be registered in Click Extras

 JAR <tt>extras-controls.xml</tt> file.

 

diff --git a/documentation/docs/roadmap-changes.html b/documentation/docs/roadmap-changes.html
index c9bf3d3..094e8a8 100644
--- a/documentation/docs/roadmap-changes.html
+++ b/documentation/docs/roadmap-changes.html
@@ -2,12 +2,14 @@
  "http://www.w3.org/TR/html4/loose.dtd">

 <html>

 <head>

+ <!-- saved from url=(0014)about:internet -->

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

  <meta name="Author" content="Malcolm Edgar"/>

  <meta name="description" lang="en" content="Click Java web application framework"/>

  <meta name="keywords" lang="en" content="Click Framework, Java, JEEE, web application framework, open source"/>

  <title>Click Framework</title>

  <link rel="stylesheet" type="text/css" href="../help.css"/>

+ <link rel="stylesheet" type="text/css" href="../syntax-highlighter.css"/>

  <style type="text/css">

   dl {

     margin-left: 2em;

@@ -36,8 +38,10 @@
     border: 1px solid #99A4DF;

   }

  </style>

+<script type="text/javascript" src="../syntax-highlighter.js"></script>

 </head>

-<body>

+<!--Activate syntax highlighting-->

+ <body onload="prettyPrint();">

 

 <h1>Road Map and Changes</h1>

 

@@ -87,11 +91,11 @@
     Click 1.5 (currently in development) introduces important new features including:

     <p/>

     <ul style="margin-top:0.5em;">

-     <li class="item"><a href="mock-api/overview-summary.html">Test Support</a> - Unit and Functional Testing.</li>

+     <li class="item"><a href="controls.html#container">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li>

      <li class="item"><a href="click-api/net/sf/click/service/package-summary.html#services">Services</a> - Click core has been refactored into pluggable services.</li>

+     <li class="item"><a href="mock-api/overview-summary.html">Mock Test Support</a> - Unit and Functional Testing.</li>

      <li class="item"><a href="click-api/net/sf/click/control/AbstractControl.html">AbstractControl</a>

      - AbstractControl was extended to implement all Control methods, making it easier to create custom controls.</li>

-     <li class="item"><a href="controls.html#container">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li>

     </ul>

     <div style="margin-top:1.5em;margin-bottom:1em;">

     New examples and documentation were added:

@@ -125,16 +129,16 @@
      <li class="change">New documentation:

      <ul style="padding-top: 5px;">

          <li class="change">

-             <a href="control.html#container">Container</a>

+             <a href="controls.html#container">Container</a>

          </li>

          <li class="change">

-             <a href="control.html#layout">Template vs Container layout</a>

+             <a href="controls.html#layout">Template vs Container layout</a>

          </li>

          <li class="change">

              <a href="click-api/net/sf/click/service/package-summary.html">Click Runtime Services</a>

          </li>

          <li class="change">

-             <a href="testing.html">Testing support</a>

+             <a href="mock-api/overview-summary.html">Mock Test Support</a>

          </li>

      </ul>

     </li>

@@ -149,42 +153,43 @@
    The following is a list of enhancements and bugsfixes:

   </div>

     <ul style="padding: 0em; margin-left:0em;">

-    <li class="change">

-       Added a <a href="extras-api/net/sf/click/extras/control/CountrySelect.html">Country Select</a>

-       control based on the JDK's own built in Country/Locale support.

-    </li>

-    <li class="change">

-      New <a href="extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html">Freemarker support</a>

-      added as an alternative template engine to Velocity and JSP.

-    </li>

-    <li class="change">

-      Added a <a href="extras-api/net/sf/click/extras/control/VirtualKeyboard.html">Virtual Keyboard</a> 

-      control using <a href="http://www.greywyvern.com/code/js/keyboard.html">GreyWyvern</a> JavaScript library.

-    </li>

+      <li class="change">

+	    Added <a class="external" target="_blank" href="http://www.freemarker.org">Freemarker</a> support as an 

+	    alternative templating engine to Velocity, with new 

+	    <a href="extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html">FreemarkerTemplateService</a>.

+      </li>

+      <li class="change">

+	    Added a <a href="extras-api/net/sf/click/extras/control/CountrySelect.html">Country Select</a>

+	    control based on the JDK's own built in Country/Locale support.

+      </li>

+      <li class="change">

+	    Added a <a href="extras-api/net/sf/click/extras/control/VirtualKeyboard.html">Virtual Keyboard</a> 

+	    control using <a href="http://www.greywyvern.com/code/js/keyboard.html">GreyWyvern</a> JavaScript library.

+      </li>

 	  <li class="change">

 	    Added support for setting Form  

-		<a href="click-api/net/sf/click/control/Form.html#getActionURL()">action</a> 

-		URL attribute. This issue was raised by Erdem Gunay

-		[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-319">319</a>].

+	    <a href="click-api/net/sf/click/control/Form.html#getActionURL()">action</a> 

+	    URL attribute. This issue was raised by Erdem Gunay

+	    [<a target='blank' href="http://www.avoka.com/jira/browse/CLK-319">319</a>].

 	  </li>

 	  <li class="change">

-		Added support for Page HTML	imports with a new <tt>getHtmlImports()</tt> 

-		method. This enables Pages to programatically define HTML imports which

-		will be included in a border template using the PageImports object.

-		This issue was raised by David Frizelle

-		[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-329">329</a>].

+	    Added support for Page HTML	imports with a new <tt>getHtmlImports()</tt> 

+	    method. This enables Pages to programatically define HTML imports which

+	    will be included in a border template using the PageImports object.

+	    This issue was raised by David Frizelle

+	    [<a target='blank' href="http://www.avoka.com/jira/browse/CLK-329">329</a>].

 	  </li>

-    <li class="change">

+      <li class="change">

         Add Page <a href="click-api/net/sf/click/Page.html#setTemplate(java.lang.String)">setTemplate(String)</a>

         method to enable dynamic changing of a page border template. This issue

         was raised by Huy Do 

 		[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-353">353</a>].

 	  </li>

-    <li class="change">

+      <li class="change">

         Updated <a href="click-api/net/sf/click/Page.html#setPath(java.lang.String)">Page.setPath</a> to handle JSP resources. This issue was raised and fixed by Huy Do.

 		[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-141">141</a>].

 	  </li>

-    <li class="change">

+      <li class="change">

         Added support for Hibernate AnnocationConfiguration. This issue was fixed by Jean-Francois.

 		[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-355">355</a>].

 	  </li>

@@ -206,23 +211,13 @@
 		[<a target='blank' href="http://www.avoka.com/jira/browse/CLK-342">342</a>].

 	  </li>

     <li class="change">

-     <b>Upgraded the following libraries:</b>

-     <ul style="padding-top: 5px">

-       <li>

-         commons-lang 2.1 -> commons-io 2.4

-       </li>

-       <li>

-         commons-io 1.3 -> commons-io 1.4

-       </li>

-       <li>

-         commons-fileupload 1.2 -> commons-fileupload 1.2.1

-       </li>

-       <li>

-         Hibernate 3.1.3 -> Hibernate 3.2.6

-       </li>

-       <li>

-           Spring 1.2.9 -> Spring 2.5.4

-       </li>

+     <b>Upgraded</b> the following libraries:

+     <ul style="margin-top:1em;">

+       <li>commons-lang 2.1 -> commons-io 2.4</li>

+       <li>commons-io 1.3 -> commons-io 1.4</li>

+       <li>commons-fileupload 1.2 -> commons-fileupload 1.2.1</li>

+       <li>Hibernate 3.1.3 -> Hibernate 3.2.6</li>

+       <li>Spring 1.2.9 -> Spring 2.5.4</li>

      </ul>

     </li>

 	  <li class="change">Removed support for Cayenne 1.2.x.</li>

@@ -232,46 +227,87 @@
     <span style="margin-left:-2em;margin-bottom:1em; color:brown; font-weight:bold">Upgrade Path</span>

     <ul style="padding: 0em; margin-left:0em;">

       <li class="upgrade">

-       1.5 is not binary compatible with 1.4. What this means is that in order

-       to use 1.5, you will have to recompile your application against the 1.5

-       release. Note that Click 1.5 still runs on any <b>JDK >= 1.4</b>.

+       <b>Please Note</b> Click version 1.5 is <b>not</b> binary compatible with version 1.4. To upgrade your

+       applications to use version Click 1.5 you will need to:

+       <ol style="margin-top:1em;">

+        <li>Recompile your application with the 1.5 Click libraries.</li>

+        <li>Retrofit the new Control 

+        <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render()</a>

+        method to any on your custom controls.</li>

+        <li>Replace any Control <tt>toString()</tt> methods with an equivalent <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render()</a>

+        method. For further details see the example below.</li>

+       </ol>

+       Note that Click 1.5 is still compatible with Java JDK 1.4 or later.

       </li>

       <li class="upgrade">

-       <b>Deprecated methods:</b> <a href="click-api/net/sf/click/Control.html#setListener(java.lang.Object, java.lang.String)">Control.setListener(Object, String)</a>,

+       Deprecated methods: <a href="click-api/net/sf/click/Control.html#setListener(java.lang.Object, java.lang.String)">Control.setListener(Object, String)</a>,

        <a href="click-api/net/sf/click/Control.html#getId()">Control.getId</a> and

-       <a href="click-api/net/sf/click/Control.html#getContext()">Control.getContext()</a>

-       have been deprecated as recent refactoring have rendered them redundant on

-       this interface.

+       <a href="click-api/net/sf/click/Control.html#getContext()">Control.getContext()</a>.

+       These methods have been deprecated on the Control interface as they are not required for ClickServlet -> Control API. 

+       This refactoring is part of making the Control interface as small as possible, 

+       which  allows more flexibility in future releases.

        <p/>

-       We are trying to make the Control interface as small as possible, which 

-       allows more flexibility in future releases.

-       <p/>

-       <b>Please note:</b> these methods will still be available on <a href="click-api/net/sf/click/control/AbstractControl.html">AbstractControl</a>

-       so should have minimal impact on existing code bases.

+       Note these methods are still available on <a href="click-api/net/sf/click/control/AbstractControl.html">AbstractControl</a>,

+       so this change should have minimal impact on existing code bases.

       </li>

       <li class="upgrade">

-       1.5 M1 introduces two new properties: <span style="font-weight:bold;color:navy;">file-size-limit-exceeded-error</span>

-       and <span style="font-weight:bold;color:navy;">post-size-limit-exceeded-error</span>.

-       For those building i18n applications remember to add these two properties

-       to your <span style="font-weight:bold;color:navy;">click-control&lt;lang&gt;.properties.</span>

-       <br>If you send us patches for your preferred language we will include them in the distribution.

-      </li>

-      <li class="upgrade">

-       ClickLogger has been replaced with <a href="click-api/net/sf/click/service/LogService.html">LogService</a>.

-       LogService is an interface with a default implementation <a href="click-api/net/sf/click/service/ConsoleLogService.html">ConsoleLogService</a>.

-       There are alternative implementations for Log4J (<a href="extras-api/net/sf/click/extras/service/Log4JLogService.html">Log4JLogService</a>)

-       and JDK Logger (<a href="extras-api/net/sf/click/extras/service/JdkLogService.html">JdkLogService</a>).<br>

-       To retrieve a LogService instance a new utility method was introduced,

-       <a href="click-api/net/sf/click/util/ClickUtils.html#getLogService()">ClickUtils.getLogService()</a>.

+       Upgrade custom Control rendering code to use new 

+       <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>

+       method. This method allows improved rendering performance, because all controls can be

+       rendered from a single buffer that is created when rendering starts.

        <p/>

-       It is possible to write your own LogService instance or extend from

-       an existing implementation. To setup Click to use an alternative instance you have to

-       specify the LogService implementation in <em>click.xml</em>:

-       <pre>

-&lt;click-app charset="UTF-8"&gt;

-    &lt;pages package="net.sf.click.examples.page"/&gt;

-    &lt;<span style="font-weight:bold;color:#000099">log-service</span> <span style="color:#009900">classname</span>="net.sf.click.extras.service.JdkLogService"/&gt;

-&lt;/click-app&gt; </pre>

+       If your created custom controls override <em>toString()</em>, please adapt it to the following pattern. From this:

+       <pre class="prettyprint">

+public class HtmlTable extends AbstractControl {

+    ...

+

+    public String toString() {

+        int estimatedControlSize = 1000;

+        HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);

+

+        // Rendering Start

+        buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);

+        appendAttributes(buffer);

+        buffer.elementClose();

+    

+        renderRows(buffer);

+

+        buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);

+        // Rendering End

+     

+        return buffer.toString();

+    } 

+} </pre>

+       to this:

+<pre class="prettyprint">

+public class HtmlTable extends AbstractControl {

+    ...

+

+    public void render(HtmlStringBuffer buffer) {

+        // Rendering Start

+        buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);

+        appendAttributes(buffer);

+        buffer.elementClose();

+    

+        renderRows(buffer);

+

+        buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);

+        <span style="color:green">// Rendering End</span>

+    }

+

+    public String toString() {

+        int estimatedControlSize = 1000;

+        HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);

+        render(buffer);

+        return buffer.toString();

+    } 

+} </pre>

+       Note, the code between the commented section, was moved from <em>toString</em> to the <em>render</em> method.

+       <p/>

+       Also note that invoking a Control's <a href="click-api/net/sf/click/control/AbstractControl.html#toString()">toString()</a>

+       method still outputs the same HTML representation, as toString() delegates to the

+       <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>

+       method.

       </li>

       <li class="upgrade">

        Certain controls were retrofitted as containers including <a href="click-api/net/sf/click/control/FieldSet.html">FieldSet</a>.

@@ -284,64 +320,34 @@
        If FieldSet is added to a BasicForm however, FieldSet will layout its own child controls.

       </li>

       <li class="upgrade">

-       The last change to be aware of is the new <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>

-       method. This method allows improved rendering performance, because all controls can be

-       rendered from a single buffer that is created when rendering starts.

+       Click 1.5 M1 introduces two new properties: <span style="color:navy;">file-size-limit-exceeded-error</span>

+       and <span style="color:navy;">post-size-limit-exceeded-error</span>.

+       For those building i18n applications remember to add these two properties

+       to your <span style="color:navy;">click-control_&lt;lang&gt;.properties.</span>

+       <br>If you send us patches for your preferred language we will include them in the distribution.

+      </li>

+      <li class="upgrade">

+       ClickLogger has been replaced with <a href="click-api/net/sf/click/service/LogService.html">LogService</a>.

+       LogService is an interface with a default implementation <a href="click-api/net/sf/click/service/ConsoleLogService.html">ConsoleLogService</a>.

+       There are also alternative implementations <a href="extras-api/net/sf/click/extras/service/Log4JLogService.html">Log4JLogService</a>

+       and <a href="extras-api/net/sf/click/extras/service/JdkLogService.html">JdkLogService</a>.

        <p/>

-       If you created custom controls, and override <em>toString()</em>, please adapt it to the following pattern. From this:

-       <pre>

-public class HtmlTable extends AbstractControl {

-    ...

-

-public String toString() {

-     int estimatedControlSize = 1000;

-     HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);

-

-     <span style="color:green">// Rendering Start</span>

-     buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);

-     appendAttributes(buffer);

-     buffer.elementClose();

-    

-     renderRows(buffer);

-

-     buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);

-     <span style="color:green">// Rendering End</span>

-     

-     return buffer.toString();

-} </pre>

-       to this:

-       <pre>

-public class HtmlTable extends AbstractControl {

-    ...

-

-public void render(HtmlStringBuffer buffer) {

-    <span style="color:green">// Rendering Start</span>

-    buffer.elementStart(<span style="font-weight:bold;color:#000099">"table"</span>);

-    appendAttributes(buffer);

-    buffer.elementClose();

-    

-    renderRows(buffer);

-

-    buffer.closeElement(<span style="font-weight:bold;color:#000099">"table"</span>);

-    <span style="color:green">// Rendering End</span>

-}

-

-public String toString() {

-     int estimatedControlSize = 1000;

-     HtmlStringBuffer buffer = new HtmlStringBuffer(estimatedControlSize);

-     render(buffer);

-     return buffer.toString();

-} </pre>

-       Note, the code between the commented section, was moved from <em>toString</em> to the <em>render</em> method.

+       It is possible to write your own LogService instance or extend from

+       an existing implementation. To setup Click to use an alternative instance you have to

+       specify the LogService implementation in <em>click.xml</em>:

+       <pre class="prettyprint">

+&lt;click-app charset="UTF-8"&gt;

+    &lt;pages package="net.sf.click.examples.page"/&gt;

+    &lt;log-service classname="net.sf.click.extras.service.JdkLogService"/&gt;

+&lt;/click-app&gt; </pre>

        <p/>

-       <b>Also note</b> that invoking a Control's <a href="click-api/net/sf/click/control/AbstractControl.html#toString()">toString()</a>

-       method still outputs the same HTML representation, as toString() delegates to the

-       <a href="click-api/net/sf/click/Control.html#render(net.sf.click.util.HtmlStringBuffer)">render</a>

-       method.

+       While it is generally not recommended to use the Click LogService in your application code, you can retrieve it using the ClickUtils method

+       <a href="click-api/net/sf/click/util/ClickUtils.html#getLogService()">getLogService()</a>.

       </li>

     </ul>

   </dd>

   <p/>

+  

   <dt><div class="release-header">Archives</div></dt>

   <dt>Version 1.4.1 - 30 March 2008</dt>

   <dd>

diff --git a/documentation/docs/servlet-api/stylesheet.css b/documentation/docs/servlet-api/stylesheet.css
index 270fb5f..bd3f41b 100644
--- a/documentation/docs/servlet-api/stylesheet.css
+++ b/documentation/docs/servlet-api/stylesheet.css
@@ -430,4 +430,41 @@
 	margin-bottom: -5px;

 }

 

+/* Syntax Highlighter. */

 

+.str{color:#2A00FF;}

+.kwd{color:#7F0055;

+    font-weight:bold;}

+.com{color:#3F7F5F;}

+.typ{color:#000;}

+.lit{color:#066;}

+.pun{color:#660;}

+.pln{color:#000;}

+.tag{color:#000099;

+    font-weight:bold;}

+.atn{color:#009900;}

+.atv{color:#000;}

+.dec{color:#606;}

+

+pre.prettyprint{

+    padding:1em;

+    border:1px solid #888;

+    overflow:auto;

+}

+

+@media print{

+    .str{color:#2A00FF;}

+    .kwd{color:#7F0055;

+        font-weight:bold;}

+    .com{color:#3F7F5F;

+        font-style:italic;}

+    .typ{color:#000;

+        font-weight:bold;}

+    .lit{color:#044;}

+    .pun{color:#440;}

+    .pln{color:#000;}

+    .tag{color:#000099;

+        font-weight:bold;}

+    .atn{color:#009900;}

+    .atv{color:#000;}

+}
\ No newline at end of file
diff --git a/examples/build.xml b/examples/build.xml
index 49909da..256f6e6 100644
--- a/examples/build.xml
+++ b/examples/build.xml
@@ -15,7 +15,7 @@
    <property name="jar.jstl" value="jstl-1.1.2.jar"/>

    <property name="jar.log4j" value="log4j-1.2.14.jar"/>

    <property name="jar.logging" value="commons-logging-1.0.4.jar"/>

-   <property name="jar.poi" value="poi-3.0-FINAL.jar "/>

+   <property name="jar.poi" value="poi-3.0-FINAL.jar"/>

    <property name="jar.oro" value="oro-2.0.8.jar"/>

    <property name="jar.servlet" value="servlet-api-2.3.jar"/>

    <property name="jar.spring-beans" value="spring-beans-2.5.4.jar"/>

@@ -80,7 +80,7 @@
          <link href="http://click.sourceforge.net/docs/click-api/"/>

          <link href="http://static.springframework.org/spring/docs/1.2.x/api/"/>

       </javadoc>

-      <copy file="../framework/stylesheet.css"  

+      <copy file="../documentation/docs/javadoc-stylesheet.css"  

       	    overwrite="true"

             todir="${dir.webapp}/javadoc"/>

       <delete file="${dir.deploy}/${name}.war"/>

diff --git a/examples/src/click-page.properties b/examples/src/click-page.properties
index cf264a3..58896e9 100644
--- a/examples/src/click-page.properties
+++ b/examples/src/click-page.properties
@@ -1,3 +1,3 @@
-version=1.5 M1

+version=1.5-M1

 

 invalid.form.submit=You have made an invalid form submission.
\ No newline at end of file
diff --git a/examples/webapp/form/contact-details.htm b/examples/webapp/form/contact-details.htm
index a201cc8..a7faf2c 100644
--- a/examples/webapp/form/contact-details.htm
+++ b/examples/webapp/form/contact-details.htm
@@ -13,10 +13,10 @@
         <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/cssform/ContactDetailsForm.java" target="_blank">ContactDetailsForm.java</a>

     </li>

     <li>

-        <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/cssform/cssform.css" target="_blank">cssform.css</a>

+        <a href="$context/source-viewer.htm?filename=assets/css/cssform.css" target="_blank">cssform.css</a>

     </li>

     <li>

-        <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/list/List.java" target="_blank">List.java</a>

+        <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/list/HtmlList.java" target="_blank">HtmlList.java</a>

     </li>

     <li>

         <a href="$context/source-viewer.htm?filename=WEB-INF/classes/net/sf/click/examples/control/html/list/ListItem.java" target="_blank">ListItem.java</a>

diff --git a/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java b/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java
index ace1502..4c9c46b 100644
--- a/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java
+++ b/extras/src/net/sf/click/extras/service/FreemarkerTemplateService.java
@@ -39,13 +39,13 @@
  * To configure the Freemarker TemplateService add the following element to your

  * <tt>click.xml</tt> configuration file.

  *

- * <pre class="codeConfig">

+ * <pre class="prettyprint">

  * &lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;

  * &lt;click-app charset="UTF-8"&gt;

  *

  *     &lt;pages package="net.sf.click.examples.page"/&gt;

  *

- *     &lt;<span class="red">template-service</span> classname="<span class="blue">net.sf.click.extras.service.FreemarkerTemplateService</span>"&gt;

+ *     &lt;template-service classname="net.sf.click.extras.service.FreemarkerTemplateService"&gt;

  *

  * &lt;/click-app&gt; </pre>

  *

diff --git a/framework/src/net/sf/click/Control.java b/framework/src/net/sf/click/Control.java
index 9a64fca..9810016 100644
--- a/framework/src/net/sf/click/Control.java
+++ b/framework/src/net/sf/click/Control.java
@@ -351,6 +351,9 @@
      *         return buffer.toString();
      *     }
      *
+     *     &#47;**
+     *      * &#64;see Control#render(HtmlStringBuffer)
+     *      *&#47;
      *     public void render(HtmlStringBuffer buffer) {
      *         buffer.elementStart("div");
      *         buffer.appendAttribute("name", getName());
diff --git a/framework/src/net/sf/click/control/Table.java b/framework/src/net/sf/click/control/Table.java
index ba4c3a1..07b0d64 100644
--- a/framework/src/net/sf/click/control/Table.java
+++ b/framework/src/net/sf/click/control/Table.java
@@ -136,6 +136,50 @@
  *     ..
  * } </pre>
  *
+ * <a name="paging-and-sorting"/>
+ * <h4>Paging and Sorting</h4>
+ *
+ * Table provides out-of-the-box paging and sorting.
+ * <p/>
+ * To enable Paging set the table's page size: {@link #setPageSize(int)} and
+ * make the Table Banner visible: {@link #setShowBanner(boolean)}.
+ * <p/>
+ * To enable/disable sorting use {@link #setSortable(boolean)}.
+ * <p/>
+ * You can also set parameters on links generated by the Table through
+ * the Table's {@link #getControlLink() controlLink}.
+ * <p/>
+ * One often needs to add extra parameters on the Table links in order to
+ * preserve state when navigating between pages or sorting columns.
+ * <p/>
+ * For example:
+ *
+ * <pre class="prettyprint">
+ * public CompanyPage extends BorderPage {
+ *
+ *      // companyId is the criteria used to limit Table rows to clients from
+ *      // the specified company
+ *      public String companyId;
+ *
+ *      public Table table = new Table();
+ *
+ *      public onInit() {
+ *          // companyId could be selected from a drop down list or similar means.
+ *          // Set the companyId on the table's controlLink. If you view the
+ *          // output rendered by Table you will note the companyId parameter
+ *          // is rendered for each Paging and Sorting link.
+ *          table.getControlLink().setParameter("companyId", companyId);
+ *      }
+ *
+ *      ...
+ *
+ *      public void onRender() {
+ *          // Select only clients for the specified companyId
+ *          List rowList = getCompanyDao().getCompanyClients(companyId);
+ *          table.setRowList(rowList);
+ *      }
+ * } </pre>
+ *
  * See also W3C HTML reference
  * <a title="W3C HTML 4.01 Specification"
  *    href="../../../../../../html/struct/tables.html">Tables</a>
@@ -568,6 +612,11 @@
 
     /**
      * Return the table paging and sorting control action link.
+     * <p/>
+     * <b>Note</b> you can set parameters on the returned ActionLink in order
+     * to preserve state when paging or sorting columns. A common use case is
+     * to filter out Table rows on specified criteria. See
+     * <a href="#paging-and-sorting">here</a> for an example.
      *
      * @return the table paging and sorting control action link
      */