You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2009/03/19 12:11:05 UTC

svn commit: r755920 [7/11] - in /camel/trunk/components/camel-web/src/main/webapp/js/dojox: json/ jsonPath/ lang/ lang/aspect/ lang/functional/ lang/oo/ layout/ layout/dnd/ layout/ext-dijit/ layout/ext-dijit/layout/ layout/nls/ layout/nls/en/ layout/nl...

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/offline.js.uncompressed.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/checkmark.png
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/checkmark.png?rev=755920&view=auto
==============================================================================
Binary file - no diff available.

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/checkmark.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/greenball.png
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/greenball.png?rev=755920&view=auto
==============================================================================
Binary file - no diff available.

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/greenball.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.html
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.html?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.html (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.html Thu Mar 19 11:10:58 2009
@@ -0,0 +1,43 @@
+<html>
+	<head>
+		<link rel="stylesheet" type="text/css" href="offline-widget.css"></link>
+		
+		<script type="text/javascript" src="learnhow.js"></script>
+	</head>
+	
+	<body id="dot-learn-how-body">
+		<div id="dot-learn-how-contents">
+			<h1><b>Want to use <span id="dot-learn-how-app-name">Application</span> offline?</b></h1> 
+			
+			<p id="dot-toolkit-info">It's simple with Dojo Offline! Dojo Offline is a free open source utility that makes it easy 
+			for this web application to work, even if you're offline. Now you can 
+			access your data even when away from the network!</p>
+			
+			<p>Dojo Offline is an open source project brought to you by 
+				<a href="http://dojotoolkit.org">Dojo</a>, <a href="http://sitepen.com">SitePen</a>, 
+				and <a href="http://codinginparadise.org">Brad Neuberg</a>. It incorporates
+				technologies created by <a href="http://google.com">Google</a>.</p>
+				
+			<h2>To get started:</h2>
+			
+			<ol>
+				<li id="dot-download-step">
+					<a target="_new" href="http://gears.google.com">Download Gears</a>, a small, open source utility created by Google that allows this web site 
+					to work offline. This tool is safe and secure for your machine, and only takes
+					a few seconds to download.
+				</li>
+				<li id="dot-install-step">
+					Once downloaded, run the installer. Restart your web browser when finished installing.
+				</li>
+				<li id="dot-drag-link-step">
+					To access this website even when offline, drag the following link to your 
+					desktop or your browser's link toolbar above: <a id="dot-learn-how-run-link" href="#">Run Application</a>.
+				</li>
+				<li id="dot-run-link-step">
+					Double-click the link on your desktop to start this web application, even 
+					if offline.
+				</li>
+			</ol>
+		</div>
+	</body>
+</html>
\ No newline at end of file

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,39 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+window.onload=function(){
+var _1=window.location.href;
+var _2=_1.match(/appName=([a-z0-9 \%]*)/i);
+var _3="Application";
+if(_2&&_2.length>0){
+_3=decodeURIComponent(_2[1]);
+}
+var _4=document.getElementById("dot-learn-how-app-name");
+_4.innerHTML="";
+_4.appendChild(document.createTextNode(_3));
+_2=_1.match(/hasOfflineCache=(true|false)/);
+var _5=false;
+if(_2&&_2.length>0){
+_5=_2[1];
+_5=(_5=="true")?true:false;
+}
+if(_5==true){
+var _6=document.getElementById("dot-download-step");
+var _7=document.getElementById("dot-install-step");
+_6.parentNode.removeChild(_6);
+_7.parentNode.removeChild(_7);
+}
+_2=_1.match(/runLink=([^\&]*)\&runLinkText=([^\&]*)/);
+if(_2&&_2.length>0){
+var _8=decodeURIComponent(_2[1]);
+var _9=document.getElementById("dot-learn-how-run-link");
+_9.setAttribute("href",_8);
+var _a=decodeURIComponent(_2[2]);
+_9.innerHTML="";
+_9.appendChild(document.createTextNode(_a));
+}
+};

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/learnhow.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.css
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.css?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.css (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.css Thu Mar 19 11:10:58 2009
@@ -0,0 +1,88 @@
+
+#dot-widget-container{
+	
+	width: 13em;
+	height: auto;
+	border: 2px solid #CDDDE9; 
+	position: relative;
+	visibility: visible !important;
+}
+#dot-widget-title-bar{
+	background-color: #CDDDE9; 
+	padding-top: 0.2em;
+	padding-bottom: 0.2em;
+}
+#dot-widget-network-indicator{
+	height: 8px;
+	width: 8px;
+	padding-left: 0.3em;
+}
+#dot-widget-title-text{
+	vertical-align: middle;
+	font-weight: bold;
+	font-size: 14pt;
+	padding-left: 2px;
+}
+#dot-widget-contents{
+	padding: 8px 5px 8px 5px;
+}
+#dot-widget-learn-how{
+	font-size: 11pt;
+}
+#dot-sync-cancel,
+#dot-sync-status{
+	font-size: 11pt;
+}
+#dot-success-checkmark{
+	display: none;
+}
+#dot-roller{
+	display: none;
+	padding-right: 4px;
+}
+.dot-sync-error{
+	color: red;
+}
+#dot-sync-details{
+	display: none;
+	padding-left: 0.2em;
+}
+#dot-sync-status{
+	height: 2em;
+	margin-top: 0.8em;
+	margin-bottom: 0.8em;
+}
+.dot-needs-offline-cache #dot-widget-learn-how,
+.dot-needs-browser-restart{
+	text-align: center;
+	line-height: 1.2;
+	font-size: 16pt !important;
+}
+.dot-needs-offline-cache #dot-sync-status,
+.dot-needs-offline-cache #dot-widget-browser-restart{
+	display: none;
+}
+.dot-needs-browser-restart{
+    font-size: 14pt !important;
+    padding-bottom: 1em;
+    padding-top: 1em;
+}
+#dot-learn-how-body{
+	padding: 3em;
+	background-color: #CDDDE9; 
+}
+#dot-learn-how-contents{
+	border: 1px solid black; 
+	background-color: white; 
+	padding: 0.4em 0.6em 0.4em 0.6em;
+	font-size: 16pt;
+}
+#dot-learn-how-contents h1{
+	font-size: 24pt;
+}
+#dot-learn-how-contents h2{
+	font-size: 18pt;
+}
+#dot-learn-how-contents li{
+	padding-bottom: 0.6em;
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.css
------------------------------------------------------------------------------
    svn:mime-type = text/css

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.html
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.html?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.html (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.html Thu Mar 19 11:10:58 2009
@@ -0,0 +1,40 @@
+<!-- 
+	Note: The elements in this UI can be broken apart
+	and spread around your page, as long as you keep the
+	IDs intact. Elements can also be dropped without
+	Dojo Offline's default UI breaking.
+-->
+
+<div id="dot-widget-container" style="visibility: hidden;">
+	<div id="dot-widget-title-bar">
+		<span id="dot-widget-network-indicator">
+			<img id="dot-widget-network-indicator-online" />
+			<img id="dot-widget-network-indicator-offline" />
+		</span>
+		<span id="dot-widget-title-text"></span>
+	</div>
+	
+	<div id="dot-widget-contents">
+		<div id="dot-widget-browser-restart">
+			Please restart your browser to 
+			use <span id="dot-widget-browser-restart-app-name"></span> Offline
+		</div>
+		
+		<div id="dot-sync-status">
+			<img id="dot-roller" />
+			<img id="dot-success-checkmark" />
+			<span id="dot-sync-messages"></span>
+			<span id="dot-sync-details">
+				(<a id="dot-sync-details-button" href="#">details</a>)
+			</span>
+			<span id="dot-sync-cancel">
+				(<a id="dot-sync-cancel-button" href="#">cancel</a>)
+			</span>
+		</div>
+		
+		<div id="dot-widget-learn-how">
+			<a id="dot-widget-learn-how-link" target="_blank" href="#">Learn How</a> 
+			to use <span id="dot-widget-learn-how-app-name"></span>&nbsp;Offline!
+		</div>
+	</div>
+</div>
\ No newline at end of file

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/offline-widget.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/redball.png
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/redball.png?rev=755920&view=auto
==============================================================================
Binary file - no diff available.

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/redball.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/roller.gif
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/roller.gif?rev=755920&view=auto
==============================================================================
Binary file - no diff available.

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/resources/roller.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/sync.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/sync.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/sync.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/sync.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,209 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.off.sync"]){
+dojo._hasResource["dojox.off.sync"]=true;
+dojo.provide("dojox.off.sync");
+dojo.require("dojox.storage.GearsStorageProvider");
+dojo.require("dojox.off._common");
+dojo.require("dojox.off.files");
+dojo.mixin(dojox.off.sync,{isSyncing:false,cancelled:false,successful:true,details:[],error:false,actions:null,autoSync:true,onSync:function(_1){
+},synchronize:function(){
+if(this.isSyncing||dojox.off.goingOnline||(!dojox.off.isOnline)){
+return;
+}
+this.isSyncing=true;
+this.successful=false;
+this.details=[];
+this.cancelled=false;
+this.start();
+},cancel:function(){
+if(!this.isSyncing){
+return;
+}
+this.cancelled=true;
+if(dojox.off.files.refreshing){
+dojox.off.files.abortRefresh();
+}
+this.onSync("cancel");
+},finishedDownloading:function(_2,_3){
+if(typeof _2=="undefined"){
+_2=true;
+}
+if(!_2){
+this.successful=false;
+this.details.push(_3);
+this.error=true;
+}
+this.finished();
+},start:function(){
+if(this.cancelled){
+this.finished();
+return;
+}
+this.onSync("start");
+this.refreshFiles();
+},refreshFiles:function(){
+if(this.cancelled){
+this.finished();
+return;
+}
+this.onSync("refreshFiles");
+dojox.off.files.refresh(dojo.hitch(this,function(_4,_5){
+if(_4){
+this.error=true;
+this.successful=false;
+for(var i=0;i<_5.length;i++){
+this.details.push(_5[i]);
+}
+}
+this.upload();
+}));
+},upload:function(){
+if(this.cancelled){
+this.finished();
+return;
+}
+this.onSync("upload");
+dojo.connect(this.actions,"onReplayFinished",this,this.download);
+this.actions.replay();
+},download:function(){
+if(this.cancelled){
+this.finished();
+return;
+}
+this.onSync("download");
+},finished:function(){
+this.isSyncing=false;
+this.successful=(!this.cancelled&&!this.error);
+this.onSync("finished");
+},_save:function(_7){
+this.actions._save(function(){
+_7();
+});
+},_load:function(_8){
+this.actions._load(function(){
+_8();
+});
+}});
+dojo.declare("dojox.off.sync.ActionLog",null,{entries:[],reasonHalted:null,isReplaying:false,autoSave:true,add:function(_9){
+if(this.isReplaying){
+throw "Programming error: you can not call "+"dojox.off.sync.actions.add() while "+"we are replaying an action log";
+}
+this.entries.push(_9);
+if(this.autoSave){
+this._save();
+}
+},onReplay:function(_a,_b){
+},length:function(){
+return this.entries.length;
+},haltReplay:function(_c){
+if(!this.isReplaying){
+return;
+}
+if(_c){
+this.reasonHalted=_c.toString();
+}
+if(this.autoSave){
+var _d=this;
+this._save(function(){
+_d.isReplaying=false;
+_d.onReplayFinished();
+});
+}else{
+this.isReplaying=false;
+this.onReplayFinished();
+}
+},continueReplay:function(){
+if(!this.isReplaying){
+return;
+}
+this.entries.shift();
+if(!this.entries.length){
+if(this.autoSave){
+var _e=this;
+this._save(function(){
+_e.isReplaying=false;
+_e.onReplayFinished();
+});
+return;
+}else{
+this.isReplaying=false;
+this.onReplayFinished();
+return;
+}
+}
+var _f=this.entries[0];
+this.onReplay(_f,this);
+},clear:function(){
+if(this.isReplaying){
+return;
+}
+this.entries=[];
+if(this.autoSave){
+this._save();
+}
+},replay:function(){
+if(this.isReplaying){
+return;
+}
+this.reasonHalted=null;
+if(!this.entries.length){
+this.onReplayFinished();
+return;
+}
+this.isReplaying=true;
+var _10=this.entries[0];
+this.onReplay(_10,this);
+},onReplayFinished:function(){
+},toString:function(){
+var _11="";
+_11+="[";
+for(var i=0;i<this.entries.length;i++){
+_11+="{";
+for(var j in this.entries[i]){
+_11+=j+": \""+this.entries[i][j]+"\"";
+_11+=", ";
+}
+_11+="}, ";
+}
+_11+="]";
+return _11;
+},_save:function(_14){
+if(!_14){
+_14=function(){
+};
+}
+try{
+var _15=this;
+var _16=function(_17,key,_19){
+if(_17==dojox.storage.FAILED){
+dojox.off.onFrameworkEvent("save",{status:dojox.storage.FAILED,isCoreSave:true,key:key,value:_19,namespace:dojox.off.STORAGE_NAMESPACE});
+_14();
+}else{
+if(_17==dojox.storage.SUCCESS){
+_14();
+}
+}
+};
+dojox.storage.put("actionlog",this.entries,_16,dojox.off.STORAGE_NAMESPACE);
+}
+catch(exp){
+
+dojox.off.onFrameworkEvent("save",{status:dojox.storage.FAILED,isCoreSave:true,key:"actionlog",value:this.entries,namespace:dojox.off.STORAGE_NAMESPACE});
+_14();
+}
+},_load:function(_1a){
+var _1b=dojox.storage.get("actionlog",dojox.off.STORAGE_NAMESPACE);
+if(!_1b){
+_1b=[];
+}
+this.entries=_1b;
+_1a();
+}});
+dojox.off.sync.actions=new dojox.off.sync.ActionLog();
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/sync.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/ui.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/ui.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/ui.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/ui.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,358 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.off.ui"]){
+dojo._hasResource["dojox.off.ui"]=true;
+dojo.provide("dojox.off.ui");
+dojo.require("dojox.storage.Provider");
+dojo.require("dojox.storage.manager");
+dojo.require("dojox.storage.GearsStorageProvider");
+dojo.mixin(dojox.off.ui,{appName:"setme",autoEmbed:true,autoEmbedID:"dot-widget",runLink:window.location.href,runLinkTitle:"Run Application",learnHowPath:dojo.moduleUrl("dojox","off/resources/learnhow.html"),customLearnHowPath:false,htmlTemplatePath:dojo.moduleUrl("dojox","off/resources/offline-widget.html").uri,cssTemplatePath:dojo.moduleUrl("dojox","off/resources/offline-widget.css").uri,onlineImagePath:dojo.moduleUrl("dojox","off/resources/greenball.png").uri,offlineImagePath:dojo.moduleUrl("dojox","off/resources/redball.png").uri,rollerImagePath:dojo.moduleUrl("dojox","off/resources/roller.gif").uri,checkmarkImagePath:dojo.moduleUrl("dojox","off/resources/checkmark.png").uri,learnHowJSPath:dojo.moduleUrl("dojox","off/resources/learnhow.js").uri,_initialized:false,onLoad:function(){
+},_initialize:function(){
+if(this._validateAppName(this.appName)==false){
+alert("You must set dojox.off.ui.appName; it can only contain "+"letters, numbers, and spaces; right now it "+"is incorrectly set to '"+dojox.off.ui.appName+"'");
+dojox.off.enabled=false;
+return;
+}
+this.runLinkText="Run "+this.appName;
+dojo.connect(dojox.off,"onNetwork",this,"_onNetwork");
+dojo.connect(dojox.off.sync,"onSync",this,"_onSync");
+dojox.off.files.cache([this.htmlTemplatePath,this.cssTemplatePath,this.onlineImagePath,this.offlineImagePath,this.rollerImagePath,this.checkmarkImagePath]);
+if(this.autoEmbed){
+this._doAutoEmbed();
+}
+},_doAutoEmbed:function(){
+dojo.xhrGet({url:this.htmlTemplatePath,handleAs:"text",error:function(_1){
+dojox.off.enabled=false;
+_1=_1.message||_1;
+alert("Error loading the Dojo Offline Widget from "+this.htmlTemplatePath+": "+_1);
+},load:dojo.hitch(this,this._templateLoaded)});
+},_templateLoaded:function(_2){
+var _3=dojo.byId(this.autoEmbedID);
+if(_3){
+_3.innerHTML=_2;
+}
+this._initImages();
+this._updateNetIndicator();
+this._initLearnHow();
+this._initialized=true;
+if(!dojox.off.hasOfflineCache){
+this._showNeedsOfflineCache();
+return;
+}
+if(dojox.off.hasOfflineCache&&dojox.off.browserRestart){
+this._needsBrowserRestart();
+return;
+}else{
+var _4=dojo.byId("dot-widget-browser-restart");
+if(_4){
+_4.style.display="none";
+}
+}
+this._updateSyncUI();
+this._initMainEvtHandlers();
+this._setOfflineEnabled(dojox.off.enabled);
+this._onNetwork(dojox.off.isOnline?"online":"offline");
+this._testNet();
+},_testNet:function(){
+dojox.off.goOnline(dojo.hitch(this,function(_5){
+this._onNetwork(_5?"online":"offline");
+this.onLoad();
+}));
+},_updateNetIndicator:function(){
+var _6=dojo.byId("dot-widget-network-indicator-online");
+var _7=dojo.byId("dot-widget-network-indicator-offline");
+var _8=dojo.byId("dot-widget-title-text");
+if(_6&&_7){
+if(dojox.off.isOnline==true){
+_6.style.display="inline";
+_7.style.display="none";
+}else{
+_6.style.display="none";
+_7.style.display="inline";
+}
+}
+if(_8){
+if(dojox.off.isOnline){
+_8.innerHTML="Online";
+}else{
+_8.innerHTML="Offline";
+}
+}
+},_initLearnHow:function(){
+var _9=dojo.byId("dot-widget-learn-how-link");
+if(!_9){
+return;
+}
+if(!this.customLearnHowPath){
+var _a=dojo.config.baseRelativePath;
+this.learnHowPath+="?appName="+encodeURIComponent(this.appName)+"&hasOfflineCache="+dojox.off.hasOfflineCache+"&runLink="+encodeURIComponent(this.runLink)+"&runLinkText="+encodeURIComponent(this.runLinkText)+"&baseRelativePath="+encodeURIComponent(_a);
+dojox.off.files.cache(this.learnHowJSPath);
+dojox.off.files.cache(this.learnHowPath);
+}
+_9.setAttribute("href",this.learnHowPath);
+var _b=dojo.byId("dot-widget-learn-how-app-name");
+if(!_b){
+return;
+}
+_b.innerHTML="";
+_b.appendChild(document.createTextNode(this.appName));
+},_validateAppName:function(_c){
+if(!_c){
+return false;
+}
+return (/^[a-z0-9 ]*$/i.test(_c));
+},_updateSyncUI:function(){
+var _d=dojo.byId("dot-roller");
+var _e=dojo.byId("dot-success-checkmark");
+var _f=dojo.byId("dot-sync-messages");
+var _10=dojo.byId("dot-sync-details");
+var _11=dojo.byId("dot-sync-cancel");
+if(dojox.off.sync.isSyncing){
+this._clearSyncMessage();
+if(_d){
+_d.style.display="inline";
+}
+if(_e){
+_e.style.display="none";
+}
+if(_f){
+dojo.removeClass(_f,"dot-sync-error");
+}
+if(_10){
+_10.style.display="none";
+}
+if(_11){
+_11.style.display="inline";
+}
+}else{
+if(_d){
+_d.style.display="none";
+}
+if(_11){
+_11.style.display="none";
+}
+if(_f){
+dojo.removeClass(_f,"dot-sync-error");
+}
+}
+},_setSyncMessage:function(_12){
+var _13=dojo.byId("dot-sync-messages");
+if(_13){
+while(_13.firstChild){
+_13.removeChild(_13.firstChild);
+}
+_13.appendChild(document.createTextNode(_12));
+}
+},_clearSyncMessage:function(){
+this._setSyncMessage("");
+},_initImages:function(){
+var _14=dojo.byId("dot-widget-network-indicator-online");
+if(_14){
+_14.setAttribute("src",this.onlineImagePath);
+}
+var _15=dojo.byId("dot-widget-network-indicator-offline");
+if(_15){
+_15.setAttribute("src",this.offlineImagePath);
+}
+var _16=dojo.byId("dot-roller");
+if(_16){
+_16.setAttribute("src",this.rollerImagePath);
+}
+var _17=dojo.byId("dot-success-checkmark");
+if(_17){
+_17.setAttribute("src",this.checkmarkImagePath);
+}
+},_showDetails:function(evt){
+evt.preventDefault();
+evt.stopPropagation();
+if(!dojox.off.sync.details.length){
+return;
+}
+var _19="";
+_19+="<html><head><title>Sync Details</title><head><body>";
+_19+="<h1>Sync Details</h1>\n";
+_19+="<ul>\n";
+for(var i=0;i<dojox.off.sync.details.length;i++){
+_19+="<li>";
+_19+=dojox.off.sync.details[i];
+_19+="</li>";
+}
+_19+="</ul>\n";
+_19+="<a href='javascript:window.close()' "+"style='text-align: right; padding-right: 2em;'>"+"Close Window"+"</a>\n";
+_19+="</body></html>";
+var _1b="height=400,width=600,resizable=true,"+"scrollbars=true,toolbar=no,menubar=no,"+"location=no,directories=no,dependent=yes";
+var _1c=window.open("","SyncDetails",_1b);
+if(!_1c){
+alert("Please allow popup windows for this domain; can't display sync details window");
+return;
+}
+_1c.document.open();
+_1c.document.write(_19);
+_1c.document.close();
+if(_1c.focus){
+_1c.focus();
+}
+},_cancel:function(evt){
+evt.preventDefault();
+evt.stopPropagation();
+dojox.off.sync.cancel();
+},_needsBrowserRestart:function(){
+var _1e=dojo.byId("dot-widget-browser-restart");
+if(_1e){
+dojo.addClass(_1e,"dot-needs-browser-restart");
+}
+var _1f=dojo.byId("dot-widget-browser-restart-app-name");
+if(_1f){
+_1f.innerHTML="";
+_1f.appendChild(document.createTextNode(this.appName));
+}
+var _20=dojo.byId("dot-sync-status");
+if(_20){
+_20.style.display="none";
+}
+},_showNeedsOfflineCache:function(){
+var _21=dojo.byId("dot-widget-container");
+if(_21){
+dojo.addClass(_21,"dot-needs-offline-cache");
+}
+},_hideNeedsOfflineCache:function(){
+var _22=dojo.byId("dot-widget-container");
+if(_22){
+dojo.removeClass(_22,"dot-needs-offline-cache");
+}
+},_initMainEvtHandlers:function(){
+var _23=dojo.byId("dot-sync-details-button");
+if(_23){
+dojo.connect(_23,"onclick",this,this._showDetails);
+}
+var _24=dojo.byId("dot-sync-cancel-button");
+if(_24){
+dojo.connect(_24,"onclick",this,this._cancel);
+}
+},_setOfflineEnabled:function(_25){
+var _26=[];
+_26.push(dojo.byId("dot-sync-status"));
+for(var i=0;i<_26.length;i++){
+if(_26[i]){
+_26[i].style.visibility=(_25?"visible":"hidden");
+}
+}
+},_syncFinished:function(){
+this._updateSyncUI();
+var _28=dojo.byId("dot-success-checkmark");
+var _29=dojo.byId("dot-sync-details");
+if(dojox.off.sync.successful==true){
+this._setSyncMessage("Sync Successful");
+if(_28){
+_28.style.display="inline";
+}
+}else{
+if(dojox.off.sync.cancelled==true){
+this._setSyncMessage("Sync Cancelled");
+if(_28){
+_28.style.display="none";
+}
+}else{
+this._setSyncMessage("Sync Error");
+var _2a=dojo.byId("dot-sync-messages");
+if(_2a){
+dojo.addClass(_2a,"dot-sync-error");
+}
+if(_28){
+_28.style.display="none";
+}
+}
+}
+if(dojox.off.sync.details.length&&_29){
+_29.style.display="inline";
+}
+},_onFrameworkEvent:function(_2b,_2c){
+if(_2b=="save"){
+if(_2c.status==dojox.storage.FAILED&&!_2c.isCoreSave){
+alert("Please increase the amount of local storage available "+"to this application");
+if(dojox.storage.hasSettingsUI()){
+dojox.storage.showSettingsUI();
+}
+}
+}else{
+if(_2b=="coreOperationFailed"){
+
+if(!this._userInformed){
+alert("This application will not work if Google Gears is not allowed to run");
+this._userInformed=true;
+}
+}else{
+if(_2b=="offlineCacheInstalled"){
+this._hideNeedsOfflineCache();
+if(dojox.off.hasOfflineCache==true&&dojox.off.browserRestart==true){
+this._needsBrowserRestart();
+return;
+}else{
+var _2d=dojo.byId("dot-widget-browser-restart");
+if(_2d){
+_2d.style.display="none";
+}
+}
+this._updateSyncUI();
+this._initMainEvtHandlers();
+this._setOfflineEnabled(dojox.off.enabled);
+this._testNet();
+}
+}
+}
+},_onSync:function(_2e){
+switch(_2e){
+case "start":
+this._updateSyncUI();
+break;
+case "refreshFiles":
+this._setSyncMessage("Downloading UI...");
+break;
+case "upload":
+this._setSyncMessage("Uploading new data...");
+break;
+case "download":
+this._setSyncMessage("Downloading new data...");
+break;
+case "finished":
+this._syncFinished();
+break;
+case "cancel":
+this._setSyncMessage("Canceling Sync...");
+break;
+default:
+dojo.warn("Programming error: "+"Unknown sync type in dojox.off.ui: "+_2e);
+break;
+}
+},_onNetwork:function(_2f){
+if(!this._initialized){
+return;
+}
+this._updateNetIndicator();
+if(_2f=="offline"){
+this._setSyncMessage("You are working offline");
+var _30=dojo.byId("dot-sync-details");
+if(_30){
+_30.style.display="none";
+}
+this._updateSyncUI();
+}else{
+if(dojox.off.sync.autoSync){
+if(dojo.isAIR){
+window.setTimeout(function(){
+dojox.off.sync.synchronize();
+},1000);
+}else{
+window.setTimeout(dojox._scopeName+".off.sync.synchronize()",1000);
+}
+}
+}
+}});
+dojo.connect(dojox.off,"onFrameworkEvent",dojox.off.ui,"_onFrameworkEvent");
+dojo.connect(dojox.off,"onLoad",dojox.off.ui,dojox.off.ui._initialize);
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/off/ui.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/README.template
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/README.template?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/README.template (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/README.template Thu Mar 19 11:10:58 2009
@@ -0,0 +1,42 @@
+-------------------------------------------------------------------------------
+Project Name
+-------------------------------------------------------------------------------
+Version X.XXX
+Release date: MM/DD/YYYY
+-------------------------------------------------------------------------------
+Project state:
+[Object1]:	experimental | alpha | beta | production
+[Object2]:	experimental | alpha | beta | production
+-------------------------------------------------------------------------------
+[   ]	l18n support?
+[   ]	a11y support?
+-------------------------------------------------------------------------------
+Credits
+[Object1]:	Author one (author contact info)
+[Object2]:	Author two (author contact info)
+-------------------------------------------------------------------------------
+Project description
+
+Describe the point of the project here.
+-------------------------------------------------------------------------------
+Dependencies:
+
+List any dependencies here.
+-------------------------------------------------------------------------------
+Documentation
+
+Any notes about documentation--such as a link to a page in the Book of Dojo,
+documentation state, etc.--should go here.
+-------------------------------------------------------------------------------
+Installation instructions
+
+Use this to explain in detail what a person needs to do in order to use this
+project.  Include URLs for grabbing source, URLs for any dependencies, etc.
+Also be sure to include any additional information, such as where to place
+CSS files, images, other media, etc.  The goal is that someone reading this
+file can follow your instructions and be using this project within minutes.
+-------------------------------------------------------------------------------
+Additional Notes
+
+Anything else you think is of interest (for example, object hierarchy) should
+be placed here.

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/_modules.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/_modules.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/_modules.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/_modules.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,7 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/_modules.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/explore.php
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/explore.php?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/explore.php (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/resources/explore.php Thu Mar 19 11:10:58 2009
@@ -0,0 +1,149 @@
+<?php // IF you don't have PHP5 installed, you can't use this index! ?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+	"http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+
+	<link rel="stylesheet" href="../../dijit/tests/css/dijitTests.css">
+	<link rel="stylesheet" href="../../dijit/themes/tundra/tundra.css">
+	<link rel="stylesheet" href="../../dojox/widget/Dialog/Dialog.css">
+	<style type="text/css">
+		.innard {
+			padding:12px;
+			margin-top:0;
+		}
+	</style>
+	<title>Dojo Toolkit - DojoX Demos and Tests by Project</title>
+
+	<script src="../../dojo/dojo.js"></script>
+	<script type="text/javascript">
+		dojo.require('dojox.widget.Dialog');
+		dojo.require("dojo.fx.easing");
+		dojo.addOnLoad(function(){
+			var dialog = new dojox.widget.Dialog({ title: "About", viewportPadding:100, fixedSize:true });
+			dialog.startup();
+			dojo.query("span.projectname + a")
+				.connect("onclick",function(e){
+					e.preventDefault();
+					dojo.xhrGet({
+						url: e.target.href,
+						load: function(data){
+							var content = data.replace(/\</g,"&lt;");
+							dialog.show();
+							dialog.setContent("<pre class='innard'>" + content + "</pre>");
+						}
+					})
+				})
+			;
+		});
+	</script>
+
+</head>
+<body>
+
+	<h1 class="testTitle">DojoX test files overview</h1>
+	
+	<table id="testMatrix">
+		<thead>
+			<tr class="top"><th rowspan="2">Test</th><th colspan="4">Tundra</th><th colspan="4">Nihilo</th><th colspan="4">Soria</th></tr>
+			<tr class="tests"><th>Normal</th><th>a11y</th><th>rtl</th><th>a11y + rtl<th>Normal</th><th>a11y</th><th>rtl</th><th>a11y + rtl<th>Normal</th><th>a11y</th><th>rtl</th><th>a11y + rtl</tr>
+		</thead>
+		<tbody><?php
+
+			foreach(getprojects() as $project){
+				$note = "";
+				if($project['readme']){
+					$note = "<a class='readmeLink' href='".$project['readme']."'>about</a>"; 
+				}
+				if($project['tests'] || $project['demos']){
+					print "<tr class='spacer'><td colspan='13'><span class='projectname'>dojox.". $project['name'] . "</span> ".$note."</td></tr>";
+
+					if($project['tests']){
+						printLinks($project['tests']);					
+					}
+					if($project['demos']){
+						printLinks($project['demos']);
+					}
+
+				}
+				
+			}
+		//	printLinks("./tree","Dijit Tree Tests");
+			
+		?>
+		</tbody>
+	</table>
+
+	<p>* note: All themes and modes included for completeness. Some projects don't even use themes. The "basic" link
+		is the direct link to the file with no enhancements. The test file must include _testCommon from dijit to
+		include theme / rtl / a11y testing capabilities.</p>
+</body>
+</html>
+<?php
+
+function getprojects(){
+	$projects = array();
+	$path = "../../dojox";
+	$handle = opendir($path);
+	while(false !== ($file = readdir($handle))){
+		$README = "";
+		$full = $path."/".$file;
+		if(is_dir($full)){
+			if(file_exists($full."/README")){
+				$README = $full."/README";
+			}
+			$tests = false; $demos = false;
+			if(is_dir($full."/tests")){
+				$tests = $full."/tests";
+			}
+			if(is_dir($full."/demos")){
+				$demos = $full."/demos";
+			}
+			$projects[] = array(
+				"name" => $file,
+				"tests" => $tests,
+				"demos" => $demos,
+				"readme" => $README
+			);
+		}
+	}
+	return $projects;
+}
+
+function printLinks($path){
+	$handle = opendir($path);
+	$i = 0;
+
+	while(false !== ($file = readdir($handle))){
+		if(preg_match("/([a-zA-Z])(.*)\.html/", $file, $matches)){
+			$base = $matches[0];
+			$link = $path."/".$matches[0];
+			print 
+			"<tr class='testRow ". (++$i % 2 ==0 ? "alt" : "")   ."'>" .
+
+				"<td class='label'>" . $base . "</td>" .
+
+			    // standard / tundra:
+				"<td><a href='".$link."'>basic</a></td>" .
+				"<td><a href='".$link."?a11y=true'>a11y</a></td>" .
+				"<td><a href='".$link."?dir=rtl'>rtl</a></td>" .
+				"<td><a href='".$link."?dir=rtl&amp;a11y=true'>both</a></td>" .
+				
+				// nihilo
+				"<td><a href='".$link."?theme=nihilo'>nihilo</a></td>" .
+				"<td><a href='".$link."?theme=nihilo&amp;a11y=true'>a11y</a></td>" .
+				"<td><a href='".$link."?theme=nihilo&amp;dir=rtl'>rtl</a></td>" .
+				"<td><a href='".$link."?theme=nihilo&amp;dir=rtl&amp;a11y=true'>combo</a></td>" .
+
+				// soria
+				"<td><a href='".$link."?theme=soria'>soria</a></td>" .
+				"<td><a href='".$link."?theme=soria&amp;a11y=true'>a11y</a></td>" .
+				"<td><a href='".$link."?theme=soria&amp;dir=rtl'>rtl</a></td>" .
+				"<td><a href='".$link."?theme=soria&amp;dir=rtl&amp;a11y=true'>combo</a></td>" .
+									
+			 "</tr>";
+		}
+	}
+}
+
+?>

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/README
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/README?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/README (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/README Thu Mar 19 11:10:58 2009
@@ -0,0 +1,59 @@
+-------------------------------------------------------------------------------
+dojox.robot.recorder
+-------------------------------------------------------------------------------
+Version 0.1
+Release date: 2008-07-30
+-------------------------------------------------------------------------------
+Project state: experimental
+-------------------------------------------------------------------------------
+Project authors
+	Mark Hays
+-------------------------------------------------------------------------------
+Project description
+
+Writing automated test cases takes time, and DOH is no exception. You have to
+look up element ids, invent dojo.queries for elements with no id,
+figure out exactly how many pixels to move the mouse . . . the list goes on.
+
+This recorder module enables DOH test case writers to create complete DOH test
+scripts directly from their actions and input on a Web page. Simply drop the
+generated code into your test page, set a pass condition, and the test will
+repeat your actions.
+-------------------------------------------------------------------------------
+Dependencies:
+
+dojo
+-------------------------------------------------------------------------------
+Documentation
+
+See installation instructions below to prepare a test page for recording.
+
+To record a test, click in an area of the document with no dojo.stopEvents
+and press CTRL-ALT-ENTER in the main window. You will get a verification alert
+when you successfully start the recorder. Then you can interact with the Web
+page and the recorder will monitor your actions. It's usually good to record one
+test per widget instance per type of interaction (keyboard vs mouse for instance)
+you are testing.
+
+After you finish interacting with the Web page, click out of any dojo.stopEvents
+and press CTRL-ALT-ENTER again. You will see a box containing the generated source 
+code for your recording. Copy this into a dojo.addOnLoad on the same page to register 
+the test with DOH. Replace the /*Your condition here*/ text with a JS condition that
+indicates that the test passed. Again, having multiple small tests will help you
+keep the condition small. Add a doh.run() call after you register all of your tests
+to make them execute when you load the page.
+-------------------------------------------------------------------------------
+Installation instructions
+
+To ready the recorder for a particular page, add this line to your dojo.requires:
+dojo.require("dojox.robot.recorder");
+
+You can safely remove this line after you are finished recording your tests.
+-------------------------------------------------------------------------------
+Additional Notes
+
+Known limitations:
+- Content in an iframe might not report events to the recorder.
+- keyDown/keyUp events are supported by DOH, but not by the recorder.
+	If you hold a key down, it will generate lots of keyPress events instead.
+	Simply change these to one keyDown call yourself.

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/README
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/recorder.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/recorder.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/recorder.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/recorder.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,330 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.robot.recorder"]){
+dojo._hasResource["dojox.robot.recorder"]=true;
+dojo.provide("dojox.robot.recorder");
+dojo.experimental("dojox.robot.recorder");
+(function(){
+var _1=1000;
+var _2=500;
+var _3=10000;
+var _4=[];
+var _5=0;
+var _6=null;
+var _7=null;
+var _8=function(){
+alert("Started recording.");
+_4=[];
+_6=new Date();
+_7=new Date();
+};
+var _9=function(_a,_b){
+if(_6==null||_a=="doh.robot.keyPress"&&_b[0]==dojo.keys.ENTER&&eval("("+_b[2]+")").ctrl&&eval("("+_b[2]+")").alt){
+return;
+}
+var dt=Math.max(Math.min(Math.round((new Date()).getTime()-_7.getTime()),_3),1);
+if(_a=="doh.robot.mouseMove"){
+_b[2]=dt;
+}else{
+_b[1]=dt;
+}
+_4.push({name:_a,args:_b});
+_7=new Date();
+};
+var _d=function(){
+var c=_4;
+if(c[0].name=="doh.robot.keyPress"&&(c[0].args[0]==dojo.keys.ENTER||c[0].args[0]==77)){
+c.splice(0,1);
+}
+for(var i=c.length-1;(i>=c.length-2)&&(i>=0);i--){
+if(c[i].name=="doh.robot.keyPress"&&c[i].args[0]==dojo.keys.ALT||c[i].args[0]==dojo.keys.CTRL){
+c.splice(i,1);
+}
+}
+for(i=0;i<c.length;i++){
+var _10,_11;
+if(c[i+1]&&c[i].name=="doh.robot.mouseMove"&&c[i+1].name==c[i].name&&c[i+1].args[2]<_2){
+_10=c[i+1];
+_11=0;
+while(_10&&_10.name==c[i].name&&_10.args[2]<_2){
+c.splice(i+1,1);
+_11+=_10.args[2];
+c[i].args[0]=_10.args[0];
+c[i].args[1]=_10.args[1];
+_10=c[i+1];
+}
+c[i].args[3]=_11;
+}else{
+if(c[i+1]&&c[i].name=="doh.robot.mouseWheel"&&c[i+1].name==c[i].name&&c[i+1].args[1]<_2){
+_10=c[i+1];
+_11=0;
+while(_10&&_10.name==c[i].name&&_10.args[1]<_2){
+c.splice(i+1,1);
+_11+=_10.args[1];
+c[i].args[0]+=_10.args[0];
+_10=c[i+1];
+}
+c[i].args[2]=_11;
+}else{
+if(c[i+2]&&c[i].name=="doh.robot.mouseMoveAt"&&c[i+2].name=="doh.robot.scrollIntoView"){
+var _12=c.splice(i+2,1)[0];
+c.splice(i,0,_12);
+}else{
+if(c[i+1]&&c[i].name=="doh.robot.mousePress"&&c[i+1].name=="doh.robot.mouseRelease"&&c[i].args[0]==c[i+1].args[0]){
+c[i].name="doh.robot.mouseClick";
+c.splice(i+1,1);
+if(c[i+1]&&c[i+1].name=="doh.robot.mouseClick"&&c[i].args[0]==c[i+1].args[0]){
+c.splice(i+1,1);
+}
+}else{
+if(c[i+1]&&c[i-1]&&c[i-1].name=="doh.robot.mouseMoveAt"&&c[i].name=="doh.robot.mousePress"&&c[i+1].name=="doh.robot.mouseMove"){
+var cmd={name:"doh.robot.mouseMoveAt",args:[c[i-1].args[0],1,100,c[i-1].args[3]+1,c[i-1].args[4]]};
+c.splice(i+1,0,cmd);
+}else{
+if(c[i+1]&&((c[i].name=="doh.robot.keyPress"&&typeof c[i].args[0]=="string")||c[i].name=="doh.robot.typeKeys")&&c[i+1].name=="doh.robot.keyPress"&&typeof c[i+1].args[0]=="string"&&c[i+1].args[1]<=_1&&!eval("("+c[i].args[2]+")").ctrl&&!eval("("+c[i].args[2]+")").alt&&!eval("("+c[i+1].args[2]+")").ctrl&&!eval("("+c[i+1].args[2]+")").alt){
+c[i].name="doh.robot.typeKeys";
+c[i].args.splice(3,1);
+_10=c[i+1];
+var _14=0;
+while(_10&&_10.name=="doh.robot.keyPress"&&typeof _10.args[0]=="string"&&_10.args[1]<=_1&&!eval("("+_10.args[2]+")").ctrl&&!eval("("+_10.args[2]+")").alt){
+c.splice(i+1,1);
+c[i].args[0]+=_10.args[0];
+_14+=_10.args[1];
+_10=c[i+1];
+}
+c[i].args[2]=_14;
+c[i].args[0]="'"+c[i].args[0]+"'";
+}else{
+if(c[i].name=="doh.robot.keyPress"){
+if(typeof c[i].args[0]=="string"){
+c[i].args[0]="'"+c[i].args[0]+"'";
+}else{
+if(c[i].args[0]==0){
+c.splice(i,1);
+}else{
+for(var j in dojo.keys){
+if(dojo.keys[j]==c[i].args[0]){
+c[i].args[0]="dojo.keys."+j;
+break;
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+};
+var _16=function(){
+if(!_6){
+_8();
+}else{
+_17();
+}
+};
+var _17=function(){
+var dt=Math.round((new Date()).getTime()-_6.getTime());
+_6=null;
+_d();
+var c=_4;
+
+if(c.length){
+var s="doh.register('dojox.robot.AutoGeneratedTestGroup',{\n";
+s+="     name: 'autotest"+(_5++)+"',\n";
+s+="     timeout: "+(dt+2000)+",\n";
+s+="     runTest: function(){\n";
+s+="          var d = new doh.Deferred();\n";
+for(var i=0;i<c.length;i++){
+s+="          "+c[i].name+"(";
+for(var j=0;j<c[i].args.length;j++){
+var arg=c[i].args[j];
+s+=arg;
+if(j!=c[i].args.length-1){
+s+=", ";
+}
+}
+s+=");\n";
+}
+s+="          doh.robot.sequence(function(){\n";
+s+="               if(/*Your condition here*/){\n";
+s+="                    d.callback(true);\n";
+s+="               }else{\n";
+s+="                    d.errback(new Error('We got a failure'));\n";
+s+="               }\n";
+s+="          }, 1000);\n";
+s+="          return d;\n";
+s+="     }\n";
+s+="});\n";
+var div=document.createElement("div");
+div.id="dojox.robot.recorder";
+div.style.backgroundColor="white";
+div.style.position="absolute";
+var _1f={y:(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0),x:(window.pageXOffset||(window["dojo"]?dojo._fixIeBiDiScrollLeft(document.documentElement.scrollLeft):undefined)||document.body.scrollLeft||0)};
+div.style.left=_1f.x+"px";
+div.style.top=_1f.y+"px";
+var h1=document.createElement("h1");
+h1.innerHTML="Your code:";
+div.appendChild(h1);
+var pre=document.createElement("pre");
+if(pre.innerText!==undefined){
+pre.innerText=s;
+}else{
+pre.textContent=s;
+}
+div.appendChild(pre);
+var _22=document.createElement("button");
+_22.innerHTML="Close";
+var _23=dojo.connect(_22,"onmouseup",function(e){
+dojo.stopEvent(e);
+document.body.removeChild(div);
+dojo.disconnect(_23);
+});
+div.appendChild(_22);
+document.body.appendChild(div);
+_4=[];
+}
+};
+var _25=function(_26){
+if(typeof _26=="string"){
+return "'"+_26+"'";
+}else{
+if(_26.id){
+return "'"+_26.id+"'";
+}else{
+var _27=document.getElementsByTagName(_26.nodeName);
+var i;
+for(i=0;i<_27.length;i++){
+if(_27[i]==_26){
+break;
+}
+}
+return "function(){ return document.getElementsByTagName('"+_26.nodeName+"')["+i+"]; }";
+}
+}
+};
+var _29=function(b){
+return "{left:"+(b==0)+", middle:"+(b==1)+", right:"+(b==2)+"}";
+};
+var _2b=function(e){
+return "{'shift':"+(e.shiftKey)+", 'ctrl':"+(e.ctrlKey)+", 'alt':"+(e.altKey)+"}";
+};
+dojo.connect(document,"onkeydown",function(e){
+if((e.keyCode==dojo.keys.ENTER||e.keyCode==77)&&e.ctrlKey&&e.altKey){
+dojo.stopEvent(e);
+_16();
+}
+});
+var _2e={type:""};
+var _2f=function(e){
+if(!e||_2e.type==e.type&&_2e.button==e.button){
+return;
+}
+_2e={type:e.type,button:e.button};
+var _31=_25(e.target);
+var _32=dojo.coords(e.target);
+_9("doh.robot.mouseMoveAt",[_31,0,100,e.clientX-_32.x,e.clientY-_32.y]);
+_9("doh.robot.mousePress",[_29(e.button-(dojo.isIE?1:0)),0]);
+};
+var _33=function(e){
+if(!e||_2e.type==e.type&&_2e.button==e.button){
+return;
+}
+_2e={type:e.type,button:e.button};
+var _35=_25(e.target);
+var _36=dojo.coords(e.target);
+_9("doh.robot.mouseClick",[_29(e.button-(dojo.isIE?1:0)),0]);
+};
+var _37=function(e){
+if(!e||_2e.type==e.type&&_2e.button==e.button){
+return;
+}
+_2e={type:e.type,button:e.button};
+var _39=_25(e.target);
+var _3a=dojo.coords(e.target);
+_9("doh.robot.mouseRelease",[_29(e.button-(dojo.isIE?1:0)),0]);
+};
+var _3b=function(e){
+if(!e||_2e.type==e.type&&_2e.pageX==e.pageX&&_2e.pageY==e.pageY){
+return;
+}
+_2e={type:e.type,pageX:e.pageX,pageY:e.pageY};
+_9("doh.robot.mouseMove",[e.pageX,e.pageY,0,100,true]);
+};
+var _3d=function(e){
+if(!e||_2e.type==e.type&&_2e.pageX==e.pageX&&_2e.pageY==e.pageY){
+return;
+}
+_2e={type:e.type,detail:(e.detail?(e.detail):(-e.wheelDelta/120))};
+_9("doh.robot.mouseWheel",[_2e.detail]);
+};
+var _3f=function(e){
+if(!e||_2e.type==e.type&&(_2e.charCode==e.charCode&&_2e.keyCode==e.keyCode)){
+return;
+}
+_2e={type:e.type,charCode:e.charCode,keyCode:e.keyCode};
+_9("doh.robot.keyPress",[e.charOrCode==dojo.keys.SPACE?" ":e.charOrCode,0,_2b(e)]);
+};
+var _41=function(e){
+if(!e||_2e.type==e.type&&(_2e.charCode==e.charCode&&_2e.keyCode==e.keyCode)){
+return;
+}
+_2e={type:e.type,charCode:e.charCode,keyCode:e.keyCode};
+};
+dojo.connect(document,"onmousedown",_2f);
+dojo.connect(document,"onmouseup",_37);
+dojo.connect(document,"onclick",_33);
+dojo.connect(document,"onkeypress",_3f);
+dojo.connect(document,"onkeyup",_41);
+dojo.connect(document,"onmousemove",_3b);
+dojo.connect(document,!dojo.isMozilla?"onmousewheel":"DOMMouseScroll",_3d);
+dojo.addOnLoad(function(){
+if(window["dijit"]&&dijit.scrollIntoView){
+dojo.connect(dijit,"scrollIntoView",function(_43){
+_9("doh.robot.scrollIntoView",[_25(_43)]);
+});
+}
+});
+dojo.connect(dojo,"connect",function(_44,_45,f){
+if(_44&&(!f||!f._mine)){
+var _47=null;
+if(_45.toLowerCase()=="onmousedown"){
+_47=dojo.hitch(this,_2f);
+}else{
+if(_45.toLowerCase()==(!dojo.isMozilla?"onmousewheel":"dommousescroll")){
+_47=dojo.hitch(this,_3d);
+}else{
+if(_45.toLowerCase()=="onclick"){
+_47=dojo.hitch(this,_33);
+}else{
+if(_45.toLowerCase()=="onmouseup"){
+_47=dojo.hitch(this,_37);
+}else{
+if(_45.toLowerCase()=="onkeypress"){
+_47=dojo.hitch(this,_3f);
+}else{
+if(_45.toLowerCase()=="onkeyup"){
+_47=dojo.hitch(this,_41);
+}
+}
+}
+}
+}
+}
+if(_47==null){
+return;
+}
+_47._mine=true;
+dojo.connect(_44,_45,_47);
+}
+});
+})();
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/robot/recorder.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Client.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Client.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Client.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Client.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,21 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.rpc.Client"]){
+dojo._hasResource["dojox.rpc.Client"]=true;
+dojo.provide("dojox.rpc.Client");
+(function(){
+dojo._defaultXhr=dojo.xhr;
+dojo.xhr=function(_1,_2){
+var _3=_2.headers=_2.headers||{};
+_3["Client-Id"]=dojox.rpc.Client.clientId;
+_3["Seq-Id"]=dojox._reqSeqId=(dojox._reqSeqId||0)+1;
+return dojo._defaultXhr.apply(dojo,arguments);
+};
+})();
+dojox.rpc.Client.clientId=(Math.random()+"").substring(2,14);
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Client.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRPC.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRPC.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRPC.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRPC.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,39 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.rpc.JsonRPC"]){
+dojo._hasResource["dojox.rpc.JsonRPC"]=true;
+dojo.provide("dojox.rpc.JsonRPC");
+dojo.require("dojox.rpc.Service");
+(function(){
+function _1(_2){
+return {serialize:function(_3,_4,_5,_6){
+var d={id:this._requestId++,method:_4.name,params:_5};
+if(_2){
+d.jsonrpc=_2;
+}
+return {data:dojo.toJson(d),handleAs:"json",contentType:"application/json",transport:"POST"};
+},deserialize:function(_8){
+if("Error"==_8.name){
+_8=dojo.fromJson(_8.responseText);
+}
+if(_8.error){
+var e=new Error(_8.error.message||_8.error);
+e._rpcErrorObject=_8.error;
+return e;
+}
+return _8.result;
+}};
+};
+dojox.rpc.envelopeRegistry.register("JSON-RPC-1.0",function(_a){
+return _a=="JSON-RPC-1.0";
+},dojo.mixin({namedParams:false},_1()));
+dojox.rpc.envelopeRegistry.register("JSON-RPC-2.0",function(_b){
+return _b=="JSON-RPC-2.0";
+},_1("2.0"));
+})();
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRPC.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRest.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRest.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRest.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRest.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,278 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.rpc.JsonRest"]){
+dojo._hasResource["dojox.rpc.JsonRest"]=true;
+dojo.provide("dojox.rpc.JsonRest");
+dojo.require("dojox.json.ref");
+dojo.require("dojox.rpc.Rest");
+(function(){
+var _1=[];
+var _2=dojox.rpc.Rest;
+var jr;
+function _4(_5,_6,_7,_8){
+var _9=_6.ioArgs&&_6.ioArgs.xhr&&_6.ioArgs.xhr.getResponseHeader("Last-Modified");
+if(_9&&_2._timeStamps){
+_2._timeStamps[_8]=_9;
+}
+return _7&&dojox.json.ref.resolveJson(_7,{defaultId:_8,index:_2._index,timeStamps:_9&&_2._timeStamps,time:_9,idPrefix:_5.servicePath,idAttribute:jr.getIdAttribute(_5),schemas:jr.schemas,loader:jr._loader,assignAbsoluteIds:true});
+};
+jr=dojox.rpc.JsonRest={conflictDateHeader:"If-Unmodified-Since",commit:function(_a){
+_a=_a||{};
+var _b=[];
+var _c={};
+var _d=[];
+for(var i=0;i<_1.length;i++){
+var _f=_1[i];
+var _10=_f.object;
+var old=_f.old;
+var _12=false;
+if(!(_a.service&&(_10||old)&&(_10||old).__id.indexOf(_a.service.servicePath))&&_f.save){
+delete _10.__isDirty;
+if(_10){
+if(old){
+var _13;
+if((_13=_10.__id.match(/(.*)#.*/))){
+_10=_2._index[_13[1]];
+}
+if(!(_10.__id in _c)){
+_c[_10.__id]=_10;
+_b.push({method:"put",target:_10,content:_10});
+}
+}else{
+_b.push({method:"post",target:{__id:jr.getServiceAndId(_10.__id).service.servicePath},content:_10});
+}
+}else{
+if(old){
+_b.push({method:"delete",target:old});
+}
+}
+_d.push(_f);
+_1.splice(i--,1);
+}
+}
+dojo.connect(_a,"onError",function(){
+var _14=_1;
+_1=_d;
+var _15=0;
+jr.revert();
+_1=_14;
+});
+jr.sendToServer(_b,_a);
+return _b;
+},sendToServer:function(_16,_17){
+var _18;
+var _19=dojo.xhr;
+var _1a=_16.length;
+var _1b;
+var _1c;
+var _1d=this.conflictDateHeader;
+dojo.xhr=function(_1e,_1f){
+_1f.headers=_1f.headers||{};
+_1f.headers["Transaction"]=_16.length-1==i?"commit":"open";
+if(_1d&&_1c){
+_1f.headers[_1d]=_1c;
+}
+if(_1b){
+_1f.headers["Content-ID"]="<"+_1b+">";
+}
+return _19.apply(dojo,arguments);
+};
+for(i=0;i<_16.length;i++){
+var _20=_16[i];
+dojox.rpc.JsonRest._contentId=_20.content&&_20.content.__id;
+var _21=_20.method=="post";
+_1c=_20.method=="put"&&_2._timeStamps[_20.content.__id];
+if(_1c){
+_2._timeStamps[_20.content.__id]=(new Date())+"";
+}
+_1b=_21&&dojox.rpc.JsonRest._contentId;
+var _22=jr.getServiceAndId(_20.target.__id);
+var _23=_22.service;
+var dfd=_20.deferred=_23[_20.method](_22.id.replace(/#/,""),dojox.json.ref.toJson(_20.content,false,_23.servicePath,true));
+(function(_25,dfd,_27){
+dfd.addCallback(function(_28){
+try{
+var _29=dfd.ioArgs.xhr&&dfd.ioArgs.xhr.getResponseHeader("Location");
+if(_29){
+var _2a=_29.match(/(^\w+:\/\/)/)&&_29.indexOf(_27.servicePath);
+_29=_2a>0?_29.substring(_2a):(_27.servicePath+_29).replace(/^(.*\/)?(\w+:\/\/)|[^\/\.]+\/\.\.\/|^.*\/(\/)/,"$2$3");
+_25.__id=_29;
+_2._index[_29]=_25;
+}
+_28=_4(_27,dfd,_28,_25&&_25.__id);
+}
+catch(e){
+}
+if(!(--_1a)){
+if(_17.onComplete){
+_17.onComplete.call(_17.scope);
+}
+}
+return _28;
+});
+})(_20.content,dfd,_23);
+dfd.addErrback(function(_2b){
+_1a=-1;
+_17.onError.call(_17.scope,_2b);
+});
+}
+dojo.xhr=_19;
+},getDirtyObjects:function(){
+return _1;
+},revert:function(_2c){
+for(var i=_1.length;i>0;){
+i--;
+var _2e=_1[i];
+var _2f=_2e.object;
+var old=_2e.old;
+if(!(_2c&&(_2f||old)&&(_2f||old).__id.indexOf(kwArgs.service.servicePath))){
+if(_2f&&old){
+for(var j in old){
+if(old.hasOwnProperty(j)){
+_2f[j]=old[j];
+}
+}
+for(j in _2f){
+if(!old.hasOwnProperty(j)){
+delete _2f[j];
+}
+}
+}
+_1.splice(i,1);
+}
+}
+},changing:function(_32,_33){
+if(!_32.__id){
+return;
+}
+_32.__isDirty=true;
+for(var i=0;i<_1.length;i++){
+var _35=_1[i];
+if(_32==_35.object){
+if(_33){
+_35.object=false;
+if(!this._saveNotNeeded){
+_35.save=true;
+}
+}
+return;
+}
+}
+var old=_32 instanceof Array?[]:{};
+for(i in _32){
+if(_32.hasOwnProperty(i)){
+old[i]=_32[i];
+}
+}
+_1.push({object:!_33&&_32,old:old,save:!this._saveNotNeeded});
+},deleteObject:function(_37){
+this.changing(_37,true);
+},getConstructor:function(_38,_39){
+if(typeof _38=="string"){
+var _3a=_38;
+_38=new dojox.rpc.Rest(_38,true);
+this.registerService(_38,_3a,_39);
+}
+if(_38._constructor){
+return _38._constructor;
+}
+_38._constructor=function(_3b){
+var _3c=this;
+var _3d=arguments;
+var _3e;
+function _3f(_40){
+if(_40){
+_3f(_40["extends"]);
+_3e=_40.properties;
+for(var i in _3e){
+var _42=_3e[i];
+if(_42&&(typeof _42=="object")&&("default" in _42)){
+_3c[i]=_42["default"];
+}
+}
+}
+if(_3b){
+dojo.mixin(_3c,_3b);
+}
+if(_40&&_40.prototype&&_40.prototype.initialize){
+_40.prototype.initialize.apply(_3c,_3d);
+}
+};
+_3f(_38._schema);
+var _43=jr.getIdAttribute(_38);
+_2._index[this.__id=this.__clientId=_38.servicePath+(this[_43]||Math.random().toString(16).substring(2,14)+"@"+((dojox.rpc.Client&&dojox.rpc.Client.clientId)||"client"))]=this;
+if(dojox.json.schema&&_3e){
+dojox.json.schema.mustBeValid(dojox.json.schema.validate(this,_38._schema));
+}
+_1.push({object:this,save:true});
+};
+return dojo.mixin(_38._constructor,_38._schema,{load:_38});
+},fetch:function(_44){
+var _45=jr.getServiceAndId(_44);
+return this.byId(_45.service,_45.id);
+},getIdAttribute:function(_46){
+var _47=_46._schema;
+var _48;
+if(_47){
+if(!(_48=_47._idAttr)){
+for(var i in _47.properties){
+if(_47.properties[i].identity){
+_47._idAttr=_48=i;
+}
+}
+}
+}
+return _48||"id";
+},getServiceAndId:function(_4a){
+var _4b=_4a.match(/^(.*\/)([^\/]*)$/);
+var svc=jr.services[_4b[1]]||new dojox.rpc.Rest(_4b[1],true);
+return {service:svc,id:_4b[2]};
+},services:{},schemas:{},registerService:function(_4d,_4e,_4f){
+_4e=_4e||_4d.servicePath;
+_4e=_4d.servicePath=_4e.match(/\/$/)?_4e:(_4e+"/");
+_4d._schema=jr.schemas[_4e]=_4f||_4d._schema||{};
+jr.services[_4e]=_4d;
+},byId:function(_50,id){
+var _52,_53=_2._index[(_50.servicePath||"")+id];
+if(_53&&!_53._loadObject){
+_52=new dojo.Deferred();
+_52.callback(_53);
+return _52;
+}
+return this.query(_50,id);
+},query:function(_54,id,_56){
+var _57=_54(id,_56);
+_57.addCallback(function(_58){
+if(_58.nodeType&&_58.cloneNode){
+return _58;
+}
+return _4(_54,_57,_58,typeof id!="string"||(_56&&(_56.start||_56.count))?undefined:id);
+});
+return _57;
+},_loader:function(_59){
+var _5a=jr.getServiceAndId(this.__id);
+var _5b=this;
+jr.query(_5a.service,_5a.id).addBoth(function(_5c){
+if(_5c==_5b){
+delete _5c.$ref;
+delete _5c._loadObject;
+}else{
+_5b._loadObject=function(_5d){
+_5d(_5c);
+};
+}
+_59(_5c);
+});
+},isDirty:function(_5e){
+if(!_5e){
+return !!_1.length;
+}
+return _5e.__isDirty;
+}};
+})();
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/JsonRest.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/OfflineRest.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/OfflineRest.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/OfflineRest.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/OfflineRest.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,188 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.rpc.OfflineRest"]){
+dojo._hasResource["dojox.rpc.OfflineRest"]=true;
+dojo.provide("dojox.rpc.OfflineRest");
+dojo.require("dojox.data.ClientFilter");
+dojo.require("dojox.rpc.Rest");
+dojo.require("dojox.storage");
+(function(){
+var _1=dojox.rpc.Rest;
+var _2="dojox_rpc_OfflineRest";
+var _3;
+var _4=_1._index;
+dojox.storage.manager.addOnLoad(function(){
+_3=dojox.storage.manager.available;
+for(var i in _4){
+_6(_4[i],i);
+}
+});
+var _7;
+function _8(_9){
+return _9.replace(/[^0-9A-Za-z_]/g,"_");
+};
+function _6(_a,id){
+if(_3&&!_7&&(id||(_a&&_a.__id))){
+dojox.storage.put(_8(id||_a.__id),typeof _a=="object"?dojox.json.ref.toJson(_a):_a,function(){
+},_2);
+}
+};
+function _c(_d){
+return _d instanceof Error&&(_d.status==503||_d.status>12000||!_d.status);
+};
+function _e(){
+if(_3){
+var _f=dojox.storage.get("dirty",_2);
+if(_f){
+for(var _10 in _f){
+_11(_10,_f);
+}
+}
+}
+};
+var _12;
+function _13(){
+_12.sendChanges();
+_12.downloadChanges();
+};
+var _14=setInterval(_13,15000);
+dojo.connect(document,"ononline",_13);
+_12=dojox.rpc.OfflineRest={turnOffAutoSync:function(){
+clearInterval(_14);
+},sync:_13,sendChanges:_e,downloadChanges:function(){
+},addStore:function(_15,_16){
+_12.stores.push(_15);
+_15.fetch({queryOptions:{cache:true},query:_16,onComplete:function(_17,_18){
+_15._localBaseResults=_17;
+_15._localBaseFetch=_18;
+}});
+}};
+_12.stores=[];
+var _19=_1._get;
+_1._get=function(_1a,id){
+try{
+_e();
+if(window.navigator&&navigator.onLine===false){
+throw new Error();
+}
+var dfd=_19(_1a,id);
+}
+catch(e){
+dfd=new dojo.Deferred();
+dfd.errback(e);
+}
+var _1d=dojox.rpc._sync;
+dfd.addCallback(function(_1e){
+_6(_1e,_1a.servicePath+id);
+return _1e;
+});
+dfd.addErrback(function(_1f){
+if(_3){
+if(_c(_1f)){
+var _20={};
+var _21=function(id,_23){
+if(_20[id]){
+return _23;
+}
+var _24=dojo.fromJson(dojox.storage.get(_8(id),_2))||_23;
+_20[id]=_24;
+for(var i in _24){
+var val=_24[i];
+if(val&&val.$ref){
+_24[i]=_21(val.$ref,val);
+}
+}
+if(_24 instanceof Array){
+for(i=0;i<_24.length;i++){
+if(_24[i]===undefined){
+_24.splice(i--,1);
+}
+}
+}
+return _24;
+};
+_7=true;
+var _27=_21(_1a.servicePath+id);
+if(!_27){
+return _1f;
+}
+_7=false;
+return _27;
+}else{
+return _1f;
+}
+}else{
+if(_1d){
+return new Error("Storage manager not loaded, can not continue");
+}
+dfd=new dojo.Deferred();
+dfd.addCallback(arguments.callee);
+dojox.storage.manager.addOnLoad(function(){
+dfd.callback();
+});
+return dfd;
+}
+});
+return dfd;
+};
+var _28=_1._change;
+_1._change=function(_29,_2a,id,_2c){
+if(!_3){
+return _28.apply(this,arguments);
+}
+var _2d=_2a.servicePath+id;
+if(_29=="delete"){
+dojox.storage.remove(_8(_2d),_2);
+}else{
+dojox.storage.put(_8(dojox.rpc.JsonRest._contentId),_2c,function(){
+},_2);
+}
+var _2e=_2a._store;
+if(_2e){
+_2e.updateResultSet(_2e._localBaseResults,_2e._localBaseFetch);
+dojox.storage.put(_8(_2a.servicePath+_2e._localBaseFetch.query),dojox.json.ref.toJson(_2e._localBaseResults),function(){
+},_2);
+}
+var _2f=dojox.storage.get("dirty",_2)||{};
+if(_29=="put"||_29=="delete"){
+var _30=_2d;
+}else{
+_30=0;
+for(var i in _2f){
+if(!isNaN(parseInt(i))){
+_30=i;
+}
+}
+_30++;
+}
+_2f[_30]={method:_29,id:_2d,content:_2c};
+return _11(_30,_2f);
+};
+function _11(_32,_33){
+var _34=_33[_32];
+var _35=dojox.rpc.JsonRest.getServiceAndId(_34.id);
+var _36=_28(_34.method,_35.service,_35.id,_34.content);
+_33[_32]=_34;
+dojox.storage.put("dirty",_33,function(){
+},_2);
+_36.addBoth(function(_37){
+if(_c(_37)){
+return null;
+}
+var _38=dojox.storage.get("dirty",_2)||{};
+delete _38[_32];
+dojox.storage.put("dirty",_38,function(){
+},_2);
+return _37;
+});
+return _36;
+};
+dojo.connect(_4,"onLoad",_6);
+dojo.connect(_4,"onUpdate",_6);
+})();
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/OfflineRest.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/ProxiedPath.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/ProxiedPath.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/ProxiedPath.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/ProxiedPath.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,30 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.rpc.ProxiedPath"]){
+dojo._hasResource["dojox.rpc.ProxiedPath"]=true;
+dojo.provide("dojox.rpc.ProxiedPath");
+dojo.require("dojox.rpc.Service");
+dojox.rpc.envelopeRegistry.register("PROXIED-PATH",function(_1){
+return _1=="PROXIED-PATH";
+},{serialize:function(_2,_3,_4){
+var i;
+var _6=dojox.rpc.getTarget(_2,_3);
+if(dojo.isArray(_4)){
+for(i=0;i<_4.length;i++){
+_6+="/"+(_4[i]==null?"":_4[i]);
+}
+}else{
+for(i in _4){
+_6+="/"+i+"/"+_4[i];
+}
+}
+return {data:"",target:(_3.proxyUrl||_2.proxyUrl)+"?url="+encodeURIComponent(_6)};
+},deserialize:function(_7){
+return _7;
+}});
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/ProxiedPath.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/README
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/README?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/README (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/README Thu Mar 19 11:10:58 2009
@@ -0,0 +1,62 @@
+-------------------------------------------------------------------------------
+DojoX RPC
+-------------------------------------------------------------------------------
+Version 1.0
+Release date: 07/01/2007
+-------------------------------------------------------------------------------
+Project state:
+yahoo.smd: production (but for old dojo.rpc, not the dojox.service.Rpc)
+Service.js: beta - this will become dojo.rpc.Service eventually and replace
+			the existing rpc system
+JsonRPC.js: beta - plugins for json-rpc for the rpc system
+Rest.js: beta - plugin for REST style services for the rpc system
+JsonRest.js: beta - A module for tracking and persisting changes to JSON objects 
+through REST.
+LocalStorageRest.js: alpha - A module for storing REST changes locally as write-
+back cache for offline and intermittent connection situations
+OfflineRest.js: alpha - A module for using LocalStorageRest for a full-fledged
+offline application
+ProxiedPath.js: beta - plugin for the PATH envelope to work with a simple PHP proxy
+Client.js: alpha - A module for maintaining per page/tab client sessions and 
+deterministic message sequencing with a server.
+
+Stores: CouchDBRestStore.js  JsonReferencing.js  PersevereRestStore.js
+These stores are fresh new and alpha. The will likely be moved to dojox.data 
+after they are well tested and documented.
+
+SMDLibrary contains smd files representing external services.
+
+-------------------------------------------------------------------------------
+Project authors
+	Dustin Machi
+	Kris Zyp
+	Revin Guillen
+-------------------------------------------------------------------------------
+Project description
+
+Extra utilities for use with dojo.rpc as well as additional smd descriptions
+for specific services.
+-------------------------------------------------------------------------------
+Dependencies:
+
+Dojo Core (package loader, dojo.rpc).
+-------------------------------------------------------------------------------
+Documentation
+
+See RPC documentation at http://dojotoolkit.org/
+
+-------------------------------------------------------------------------------
+Installation instructions
+
+Grab the following from the Dojo SVN Repository:
+http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/rpc/*
+
+Install into the following directory structure:
+/dojox/rpc/
+
+...which should be at the same level as your Dojo checkout.
+
+The use of the actual utilities varies, but typically additional software 
+will be included with dojo.require() and smd files for services can be loaded
+manually with an xhr request or can be provided by url to the service when created
+

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/README
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Rest.js
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Rest.js?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Rest.js (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Rest.js Thu Mar 19 11:10:58 2009
@@ -0,0 +1,76 @@
+/*
+	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.rpc.Rest"]){
+dojo._hasResource["dojox.rpc.Rest"]=true;
+dojo.provide("dojox.rpc.Rest");
+(function(){
+if(dojox.rpc&&dojox.rpc.transportRegistry){
+dojox.rpc.transportRegistry.register("REST",function(_1){
+return _1=="REST";
+},{getExecutor:function(_2,_3,_4){
+return new dojox.rpc.Rest(_3.name,(_3.contentType||_4._smd.contentType||"").match(/json|javascript/),null,function(id,_6){
+var _7=_4._getRequest(_3,[id]);
+_7.url=_7.target+(_7.data?"?"+_7.data:"");
+return _7;
+});
+}});
+}
+var _8;
+function _9(_a,_b,_c,id){
+_a.addCallback(function(_e){
+if(_c){
+_c=_a.ioArgs.xhr&&_a.ioArgs.xhr.getResponseHeader("Content-Range");
+_a.fullLength=_c&&(_c=_c.match(/\/(.*)/))&&parseInt(_c[1]);
+}
+return _e;
+});
+return _a;
+};
+_8=dojox.rpc.Rest=function(_f,_10,_11,_12){
+var _13;
+_f=_f.match(/\/$/)?_f:(_f+"/");
+_13=function(id,_15){
+return _8._get(_13,id,_15);
+};
+_13.isJson=_10;
+_13._schema=_11;
+_13.cache={serialize:_10?((dojox.json&&dojox.json.ref)||dojo).toJson:function(_16){
+return _16;
+}};
+_13._getRequest=_12||function(id,_18){
+var _19={url:_f+(dojo.isObject(id)?"?"+dojo.objectToQuery(id):id==null?"":id),handleAs:_10?"json":"text",contentType:_10?"application/json":"text/plain",sync:dojox.rpc._sync,headers:{Accept:_10?"application/json,application/javascript":"*/*"}};
+if(_18&&(_18.start>=0||_18.count>=0)){
+_19.headers.Range="items="+(_18.start||"0")+"-"+((_18.count&&_18.count!=Infinity&&(_18.count+(_18.start||0)-1))||"");
+}
+dojox.rpc._sync=false;
+return _19;
+};
+function _1a(_1b){
+_13[_1b]=function(id,_1d){
+return _8._change(_1b,_13,id,_1d);
+};
+};
+_1a("put");
+_1a("post");
+_1a("delete");
+_13.servicePath=_f;
+return _13;
+};
+_8._index={};
+_8._timeStamps={};
+_8._change=function(_1e,_1f,id,_21){
+var _22=_1f._getRequest(id);
+_22[_1e+"Data"]=_21;
+return _9(dojo.xhr(_1e.toUpperCase(),_22,true),_1f);
+};
+_8._get=function(_23,id,_25){
+_25=_25||{};
+return _9(dojo.xhrGet(_23._getRequest(id,_25)),_23,(_25.start>=0||_25.count>=0),id);
+};
+})();
+}

Propchange: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/Rest.js
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/dojo-api.smd
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/dojo-api.smd?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/dojo-api.smd (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/dojo-api.smd Thu Mar 19 11:10:58 2009
@@ -0,0 +1,30 @@
+{
+	envelope: "URL",
+	transport: "JSONP",
+	callbackParamName: "callback",
+	services: {
+		get: {
+			target: "http://api.dojotoolkit.org/jsdoc/jsonp",
+			parameters: [
+				{ name: "name", type: "string", optional: false },
+				{ name: "exact", type: "boolean", optional: true },
+				{ name: "recursion", type: "boolean", optional: true },
+				{ name: "resource", type: "string", optional: true },
+				{ name: "project", type: "string", optional: true },
+				{ name: "version", type: "string", optional: true },
+				{ name: "attributes", type: "array", optional: true }
+			]
+		},
+		batch: {
+			target: "http://api.dojotoolkit.org/jsdoc/jsonp/batch",
+			parameters: [
+				{ name: "names", type: "array", optional: false },
+				{ name: "exact", type: "boolean", optional: true },
+				{ name: "recursion", type: "boolean", optional: true },
+				{ name: "project", type: "string", optional: true },
+				{ name: "version", type: "string", optional: true },
+				{ name: "attributes", type: "array", optional: false }
+			]
+		}
+	}
+}
\ No newline at end of file

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/geonames.smd
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/geonames.smd?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/geonames.smd (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/geonames.smd Thu Mar 19 11:10:58 2009
@@ -0,0 +1,263 @@
+{
+
+	// JSON REST services provided by geonames.org
+	// adapted from: http://www.geonames.org/export/JSON-webservices.html
+	// http://creativecommons.org/licenses/by/3.0/
+	// INCOMPLETE IMPLEMENTATION
+	
+	"SMDVersion":"2.0",
+	"id":"/geonames",
+	"transport":"JSONP",
+	"envelope":"URL",
+	"target": "http://ws.geonames.org/",
+
+	"parameters" : [ 
+		{name:"type", optional: false, "default":"JSON"}
+	],
+
+	"services":{
+		getCountryInfo:{
+			// Result : returns info about a country such as name, population, etc.
+			// If country parameter is not specified, that information is returned for
+			// every country
+			"target": "countryInfoJSON",
+			"parameters": [
+				{ name: "country", type:"STRING", optional: true },
+				{ name: "lang", type:"STRING"}, // default: "en"
+				{ name: "maxRows", type:"INTEGER", optional: true } // default: 10
+			]	
+		},
+
+		getCities:{
+			// Result : returns a list of cities and placenames in the bounding box,
+			// ordered by relevancy (capital/population). Placenames close together
+			// are filterered out and only the larger name is included in the resulting list.
+			"target": "citiesJSON",
+			"parameters": [
+				{ name: "north", type:"FLOAT"},
+				{ name: "south", type:"FLOAT"},
+				{ name: "east", type:"FLOAT"},
+				{ name: "west", type:"FLOAT"},
+				{ name: "lang", type:"STRING"}, // default: "en"
+				{ name: "maxRows", type:"INTEGER", optional: true } // deault: 10
+			]	
+		},
+
+		"getQuakes":{
+			// Result : returns a list of earthquakes, ordered by magnitude
+			"target" : "earthquakesJSON",
+			"parameters" : [
+				// bounding box coords:
+				{ name: "north", type:"FLOAT" },
+				{ name: "south", type:"FLOAT" },
+				{ name: "east", type:"FLOAT" },
+       				{ name: "west", type:"FLOAT" },
+				{ name: "date", type:"STRING",optional: true }, // yyyy-MM-dd
+				{ name: "minMagniture", type:"INTERGER",optional: true },
+				{ name: "maxRows", type:"INTEGER", optional: true } // deault: 10
+			]
+		},
+
+		"getWeather":{
+			// Weather data is provided in the METAR (METeorological Aerodrome Report) format.
+			// Result : returns a list of weather stations with the most recent weather observation
+			"target" : "weatherJSON",
+			"parameters" : [
+				{ name: "north", type:"FLOAT" },
+				{ name: "south", type:"FLOAT" },
+				{ name: "east", type:"FLOAT" },
+				{ name: "west", type:"FLOAT" },
+				{ name: "maxRows", type:"INTEGER",optional:true } // deault: 10
+			]
+		},
+
+		"getWeatherByICAO":{
+			// Result : returns the weather station and the most recent weather observation for the ICAO code
+			"target": "weatherIcaoJSON",
+			"parameters": [
+				{ name:"ICAO", type:"STRING" }
+			]
+		},
+
+		"getWeatherByCoords":{
+			// Result : returns a weather station with the most recent weather observation
+			"target": "findNearByWeatherJSON",
+			"parameters": [
+				{ name:"lat", type:"FLOAT" },
+				{ name:"lng", type:"FLOAT" }
+			]
+		},
+
+		"getChildren":{
+                        // Returns the children for a given geonameId. The children are the
+                        // administrative divisions within an other administrative division.
+                        // Like the counties (ADM2) in a state (ADM1) or also the countries
+                        // in a continent.
+                        "target": "childrenJSON",
+			"parameters": [
+				{ name:"geonameId", type:"INTEGER" }
+			]
+		},
+
+		"getHierarchy":{
+			// Result : returns a list of GeoName records, ordered by hierarchy 
+			// level. The top hierarchy (continent) is the first element in the list
+			"target": "hierarchyJSON",
+			"parameters": [
+				{ name:"geonameId", type:"INTEGER" }
+			]
+		},
+
+		"getNeighbours":{
+			// The neighbourhood for US cities. Data provided by Zillow under cc-by-sa license.
+			"target":"neighboursJSON",
+			"parameters": [
+				{ name:"geonameId", type:"INTEGER" }
+                                //{ name:"lat", type:"FLOAT" },
+                                //{ name:"long", type:"FLOAT" }
+			]
+		},
+
+		"getNeighbourhood":{
+			// returns the neighbourhood for the given latitude/longitude
+			// Example http://ws.geonames.org/neighbourhood?lat=40.78343&lng=-73.96625
+			"target":"neighbourhoodJSON",
+			"parameters":[
+				{ name:"lat", type:"FLOAT" },
+				{ name:"lng", type:"FLOAT" },
+				{ name:"radius", type:"FLOAT" } 
+			]
+		},
+
+		"getSiblings":{
+			// Result : returns a list of GeoNames records that have the same
+			// administrative level and the same father
+			"target":"siblingsJSON",
+			"parameters": [
+				{ name:"geonameId", type:"INTEGER" }
+			]
+		},
+
+		"getCountryCode":{
+			// returns the iso country code for the given latitude/longitude
+			// With the parameter type=xml this service returns an xml document
+			//      with iso country code and country name. The optional parameter
+			//      lang can be used to specify the language the country name should
+			//      be in. JSON output is produced with type=JSON
+			"target":"countryCode",
+			"parameters": [
+				{ name:"lat", type:"FLOAT" },
+				{ name:"lng", type:"FLOAT" },
+				{ name:"lang", type:"STRING",optional:true }, 
+				{ name:"radius", type:"FLOAT" }
+			]
+		},
+
+		"getCountrySubdivision":{
+			// returns the country and the administrative subdivison (state, province,...) for the given latitude/longitude
+			// Example http://ws.geonames.org/countrySubdivisionJSON?lat=47.03&lng=10.2
+			"target":"countrySubdivisionJSON",
+			"parameters":[
+				{ name:"lat", type:"FLOAT" },
+				{ name:"long", type:"FLOAT" },
+				{ name:"radius", type:"FLOAT" }
+			]
+                }, 
+
+		"getWikipediaBoundingBox":{
+			// returns the wikipedia entries within the bounding box as xml document
+			// Example http://ws.geonames.org/wikipediaBoundingBoxJSON?north=44.1&south=-9.9&east=-22.4&west=55.2
+			"target":"wikipediaBoundingBoxJSON",
+			"parameters":[
+				{ name: "north", type:"FLOAT" },
+				{ name: "south", type:"FLOAT" },
+				{ name: "east", type:"FLOAT" },
+				{ name: "west", type:"FLOAT" },
+				{ name: "lang", type:"STRING",optional:true }, // default: "en"
+				{ name: "maxRows", type:"INTEGER",optional:true } // default: 10
+                        ]
+                },
+
+		"searchWikipedia":{
+			// returns the wikipedia entries found for the searchterm as xml document
+			// Example http://ws.geonames.org/wikipediaSearchJSON?q=london&maxRows=10
+			"target":"wikipediaSearchJSON",
+			"parameters":[
+				{ name: "q", type:"STRING" }, // place name?
+				{ name: "title", type:"STRING" }, // optional
+				{ name: "lang", type:"FLOAT",optional:true }, // de or en
+				{ name: "maxRows", type:"INTEGER",optional:true } // default: 10
+			]
+		},
+
+		"getTimezone":{
+                        // the timezone at the lat/lng with gmt offset (1. January) and dst offset (1. July)
+                        "target":"timezoneJSON",
+			"parameters":[
+				{ name:"lat", type:"FLOAT" },
+				{ name:"lng", type:"FLOAT" }
+			]
+		},
+
+		"search":{
+                        // returns the names found for the searchterm as xml or json document,
+                        // the search is using an AND operator
+                        "target":"searchJSON",
+			"parameters":[
+                                // exhaustive list. see: http://www.geonames.org/export/geonames-search.html
+				{ name:"q", type:"STRING" },
+				{ name:"name", type:"STRING" },
+				{ name:"name_equals", type:"STRING" },
+				// optional:
+				{ name:"maxRows", type:"INTEGER",optional:true }, // def: 100, max:1000
+				{ name:"startRow", type:"INTEGER",optional:true }, // def: 0
+				{ name:"country", type:"STRING",optional:true }, // iso-3166, def: all
+				/* name:"adminCode..." */
+				{ name:"featureClass", type:"STRING",optional:true}, // ? multi, enum(a,h,l,p,r,s,t,u,v)
+				{ name:"featureCode", type:"STRING",optional:true},
+				{ name:"lang", type:"STRING",optional:true}, // iso-636
+				{ name:"type", type:"STRING",optional:true}, // xml | json | rdf, def: xml
+				{ name:"style", type:"STRING",optional:true }, // SHORT,MEDIUM,LONG,FULL def: MEDIUM
+				{ name:"isNamedRequired", type:"BOOLEAN", optional:true }
+			]
+		},
+
+		"postalCodeLookup":{
+			// returns a list of places for the given postalcode in JSON format
+			// Example http://ws.geonames.org/postalCodeLookupJSON?postalcode=6600&country=AT
+			"target":"postalCodeLookupJSON",
+			"parameters":[
+				{ name:"postalcode", type:"STRING" },
+				{ name:"country", type:"STRING",optional:true},
+				{ name:"maxRows", type:"INTEGER", optional:true }, // def: 20
+				{ name:"charset", type:"STRING",optional:true } // def: utf-8
+			]
+		},
+
+                "postalCodeSearch":{
+                        "target":"postalCodeSearchJSON",
+			"parameters":[
+				{ name:"postalcode", type:"STRING",optional:true}, // one or the other
+				{ name:"placename", type:"STRING",optional:true }, // one or the other
+				{ name:"country", type:"STRING",optional:true},
+				{ name:"style", type:"STRING",optional:true}, // def: MEDIUM
+				{ name:"maxRows", type:"INTEGER",optional:true}, // def: 20
+                                { name:"charset", type:"STRING",optional:true} // def: utf-8
+                        ]
+                }
+
+                // TODO: implement:
+                // findNearby,
+                // findNearbyPlaceName
+                // findNearbyPostalCodes,
+                // findNearbyStreets,
+                // findNearByWeather
+                // findNearByWikipedia
+                // findNeareastAddress
+                // findNearestInterestion
+                // get
+                // gtop30
+                // srtm3
+
+	} // end services
+}

Added: camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/google.smd
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/google.smd?rev=755920&view=auto
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/google.smd (added)
+++ camel/trunk/components/camel-web/src/main/webapp/js/dojox/rpc/SMDLibrary/google.smd Thu Mar 19 11:10:58 2009
@@ -0,0 +1,129 @@
+{
+	// Google Ajax API SMD as defined by:
+	// http://code.google.com/apis/ajaxsearch/documentation/reference.html
+	// PLEASE Read the Google Terms of Service:
+	// http://code.google.com/apis/ajaxsearch/terms.html
+	
+	"SMDVersion": "2.0",
+	"id": "http://ajax.googleapis.com/ajax/services/search/", 
+	"description": "Google Ajax API",
+		
+	"transport": "JSONP",
+	"envelope": "URL",
+	"additionalParameters": true,
+	
+	"parameters": [
+		// the most important param, the search query:
+		{ "name": "q", optional: false, "default":"" },
+		
+		// Google doesn't require, but appreciates, you using an API key
+		// see: http://code.google.com/apis/ajaxsearch/signup.html
+		// { "name": "key", optional: true, "default": "[enter your key]" },
+
+		// result size: large | small (8 or 4 per page)
+		{ "name": "rsz", optional:true, "default": "small" },
+
+		// language selection:
+		{ "name": "hl", optional:true, "default": "en" },
+
+		// starting offset
+		{ "name": "start", optional:true, "default": 0 },
+
+		{ "name": "alt", optional:false, "default": "json" },
+
+		// API version: only 1.0 supported 
+		{ "name": "v", optional:false, "default": "1.0" }
+	],
+
+	"services": {
+
+		"webSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/web",
+			"parameters": [
+				{ "name": "cx", "type":"string", "optional":true }, // unique id
+				{ "name": "cref", "type":"string", "optional":true }, // linked custom search engine
+				{ "name": "safe", "type":"string", "optional":true }, // active | moderate | off
+				// lr: see: http://www.google.com/coop/docs/cse/resultsxml.html#languageCollections	
+				{ "name": "lr", "type":"string", "optional":true } // restrict to lang
+			]
+		},
+
+		"localSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/local",
+			"parameters": [
+				// comma separated lat,long value to use for center
+				{ "name": "sll", "type": "string", "optional": true },
+				{ "name": "sspn", "type":"string", "optional": true } // bounding box?
+			]
+		},
+
+		"videoSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/video",
+			"parameters": [
+				// ordering, set "d" to order by date, "default": by relevance
+				{ "name": "scoring", "type": "string", "optional": true }
+			]
+		},
+
+		"blogSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/blogs",
+			"parameters": [
+				// see videoSearch params
+				{ "name": "scoring", "type": "string", "optional": true }
+			]
+		},
+
+		"newsSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/news",
+			"parameters": [
+				{ "name": "scoring", "type": "string", "optional": true },
+				// geo: scope search to location. supply city, state, country, or zipcode
+				// using geo makes "q" param optional
+				{ "name": "geo", "type":"string", optional:true }
+			]
+		},
+
+		"bookSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/books",
+			"parameters": [
+				// set to "1" to only include full books
+				{ "name":"as_brr", "optional": true, "type":"number" },
+				// restrict search to user-defined library
+				{ "name":"as_list", "optional": true, "type":"string" }
+			]
+		},
+
+		"imageSearch": {
+			"target": "http://ajax.googleapis.com/ajax/services/search/images",
+			"parameters": [
+				// safe: active | moderate | off
+				{ "name": "safe", "type":"string", "optional":true }, 
+				// limit image size: one of: icon, small|medium|large|xlarge, xxlarge, huge
+				{ "name": "imgsz", "type":"string", "optional": true },
+				// limit image color: one of: mono|gray|color
+				{ "name": "imgc", "type":"string", "optional": true },
+				// use "face" to limit to mugshots
+				{ "name": "imgtype", "type":"string", "optional": true },
+				// limit to file "type": jpg|png|gif|bmp
+				{ "name": "as_filetype", "type": "string", "optional": true },
+				// limit results to domain:
+				{ "name": "as_sitesearch", "type": "string", "optional": true }
+			]
+		},
+
+		"getFeed": {
+			"target": "http://ajax.googleapis.com/ajax/services/feed/load",
+			// pass a feed URL in the q parameter
+			"parameters": []
+		},
+		
+		"translate" : {
+			"target" : "http://ajax.googleapis.com/ajax/services/language/translate",
+			"parameters": [
+				// A String like "en|es" (for english -> spanish)
+				{ "name":"langpair", "type":"string", optional:false }
+			]
+		}
+		
+	}
+}