Index: /trunk/thirds/cgic206/cgic.c
===================================================================
--- /trunk/thirds/cgic206/cgic.c	(revision 327)
+++ /trunk/thirds/cgic206/cgic.c	(revision 328)
@@ -237,5 +237,5 @@
 
 
-	cgiTreatUrlEncoding=1;
+	cgiTreatUrlEncoding=0;
 	if (cgiStrEqNc(cgiRequestMethod, "post")) {
 		cgiTreatUrlEncoding=0;
Index: /trunk/zoo-project/HISTORY.txt
===================================================================
--- /trunk/zoo-project/HISTORY.txt	(revision 327)
+++ /trunk/zoo-project/HISTORY.txt	(revision 328)
@@ -1,2 +1,7 @@
+Version 1.3.0-dev
+
+  * Support for dataInputs URLEncoded and xlink:href (ticket #62)
+  * Use the same object structure for JavaScript arguments than for Python
+
 Version 1.2.0-rc3
 
Index: /trunk/zoo-project/zoo-kernel/service_internal.h
===================================================================
--- /trunk/zoo-project/zoo-kernel/service_internal.h	(revision 327)
+++ /trunk/zoo-project/zoo-kernel/service_internal.h	(revision 328)
@@ -92,4 +92,5 @@
   void URLDecode(char *);
   char *url_encode(char *);
+  char *url_decode(char *);
   char* getEncoding(maps*);
 
Index: /trunk/zoo-project/zoo-kernel/service_internal_js.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/service_internal_js.c	(revision 327)
+++ /trunk/zoo-project/zoo-kernel/service_internal_js.c	(revision 328)
@@ -77,6 +77,9 @@
 
   /* Create the global object. */
-  //global = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL);
-  global = JS_NewObject(cx, &global_class, NULL,NULL);
+  //#ifdef JS_NewCompartmentAndGlobalObject
+  global = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL);
+  //#else
+  //global = JS_NewObject(cx, &global_class, NULL,NULL);
+  //#endif
 
   /* Populate the global object with the standard globals,
@@ -284,8 +287,11 @@
 
 JSObject* JSObject_FromMaps(JSContext *cx,maps* t){
-  JSObject *res = JS_NewArrayObject(cx, 0, NULL);
+
+  JSObject* res=JS_NewObject(cx, NULL, NULL, NULL);
+  //JSObject *res = JS_NewArrayObject(cx, 0, NULL);
   if(res==NULL)
     fprintf(stderr,"Array Object is NULL!\n");
   maps* tmp=t;
+
   while(tmp!=NULL){
     jsuint len;
@@ -293,8 +299,6 @@
     JSObject *pval=JSObject_FromMap(cx,tmp->content);
     jsval pvalj=OBJECT_TO_JSVAL(pval);
-    JS_SetProperty(cx, res1, tmp->name, &pvalj);
-    JS_GetArrayLength(cx, res, &len);
-    jsval res1j = OBJECT_TO_JSVAL(res1);
-    JS_SetElement(cx,res,len,&res1j);
+    JS_SetProperty(cx, res, tmp->name, &pvalj);
+
 #ifdef JS_DEBUG
     fprintf(stderr,"Length of the Array %d, element : %s added \n",len,tmp->name);
Index: /trunk/zoo-project/zoo-kernel/zoo_service_loader.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 327)
+++ /trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 328)
@@ -924,6 +924,15 @@
      * Put each DataInputs into the inputs_as_text array
      */
+    char *tmp1=strdup(cursor_input);
     char * pToken;
     pToken=strtok(cursor_input,";");
+    if(pToken!=NULL && strncasecmp(pToken,tmp1,strlen(tmp1))==0){
+      char* tmp2=url_decode(tmp1);
+      snprintf(cursor_input,(strlen(tmp2)+1)*sizeof(char),"%s",tmp2);
+      free(tmp2);
+      pToken=strtok(cursor_input,";");
+    }
+    free(tmp1);
+
     char** inputs_as_text=(char**)calloc(100,sizeof(char*));
     if(inputs_as_text == NULL){
@@ -1019,6 +1028,7 @@
 	  else
 	    if(tmpv1!=NULL){
-	      if(strncasecmp(tmpv1+1,"http://",7)!=0 &&
-		 strncasecmp(tmpv1+1,"ftp://",6)!=0){
+	      char *tmpx2=url_decode(tmpv1+1);
+	      if(strncasecmp(tmpx2,"http://",7)!=0 &&
+		 strncasecmp(tmpx2,"ftp://",6)!=0){
 		char emsg[1024];
 		sprintf(emsg,_("Unable to find a valid protocol to download the remote file %s"),tmpv1+1);
@@ -1036,6 +1046,5 @@
 	      fprintf(stderr,"REQUIRE TO DOWNLOAD A FILE FROM A SERVER : url(%s)\n",tmpv1+1);
 #endif
-	      char *tmpx=url_encode(tmpv1+1);
-	      addToMap(tmpmaps->content,tmpn1,tmpx);
+	      addToMap(tmpmaps->content,tmpn1,tmpx2);
 	      
 #ifndef WIN32
@@ -1043,9 +1052,7 @@
 #endif
 		{
-		  loadRemoteFile(m,tmpmaps->content,hInternet,tmpv1+1);
+		  loadRemoteFile(m,tmpmaps->content,hInternet,tmpx2);
 		}
-	      char *tmpx1=url_encode(tmpv1+1);
-	      addToMap(tmpmaps->content,tmpn1,tmpx1);
-	      free(tmpx1);
+	      free(tmpx2);
 	      addToMap(tmpmaps->content,"Reference",tmpv1+1);
 	    }
