<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-3322</id>
	<title>Nabble - CPAINT</title>
	<updated>2007-08-19T04:03:31Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/CPAINT-f3322.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/CPAINT-f3322.html" />
	<subtitle type="html">CPAINT (Cross-Platform Asynchronous INterface Toolkit) is a true AJAX (Asynchronous JavaScript+XML) and JSRS (JavaScript Remote Scripting) implementation. CPAINT home is &lt;a href=&quot;http://sourceforge.net/projects/cpaint/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-12220805</id>
	<title>object function as callback function</title>
	<published>2007-08-19T04:03:31Z</published>
	<updated>2007-08-19T04:03:31Z</updated>
	<author>
		<name>Wolfgang Pichler</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;font face=&quot;times new roman, new york, times, serif&quot; size=3&gt;&lt;font face=&quot;times new roman, new york, times, serif&quot; size=&quot;3&quot;&gt;&lt;font face=&quot;times new roman, new york, times, serif&quot; size=&quot;3&quot;&gt;&lt;span style=&quot;font-family: times new roman,new york,times,serif;&quot;&gt;&lt;font size=&quot;3&quot;&gt;Hi all,&lt;br&gt;&lt;br&gt;i am using cpaint now already for some time - and i am quit happy with it (good job - thanks for it).&lt;br&gt;&lt;br&gt;Now i am working on a new project where i do need to create database objects (persons) on the fly...&lt;br&gt;&lt;br&gt;For
this i have decieded to use Javascript Objects - so i build a
Javascript Object Person - which takes the PErsons data with the
constructor - and then calls the cpaint.call function with that data.
As callback function i do have specifid a function inside of my object.
I did thought that the function will get called within the object
scope. But it does seem to not be so. The callback seems to get called
outside the object scope.&lt;br&gt;&lt;br&gt;Is it possible to get the callback function called within the object scope ?&lt;br&gt;&lt;br&gt;Here is my example code:&lt;br&gt;function Person(firstname, lastname, birthdate) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.firstname = firstname;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.lastname = lastname;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.birthdate = birthdate;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.personid = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Will create the Person in the WHIDSYSTEM and set the person id&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.cb_createPerson = function(result) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!result) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var person = result.getElementsByTagName('person');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ((!person) || (person.length!=1)) { return; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; person = person[0];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; alert(this.firstname);&amp;nbsp;&amp;nbsp; // Will return undefined&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.personid = person.getAttribute('personid');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do call the servers create person function&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.set_async(false);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.call(&quot;helpers/cca.php&quot;, 'createPerson',this.cb_createPerson,sessionid);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Now we should have created the person so we have the personid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // return to async operations&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp.set_async(true);&lt;br&gt;}&lt;br&gt;&lt;br&gt;Thanks for hints&lt;br&gt;&lt;br&gt;regards,&lt;br&gt;Wolfgang&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt;-------------------------------------------------------------------------
&lt;br&gt;This SF.net email is sponsored by: Splunk Inc.
&lt;br&gt;Still grepping through log files to find problems? &amp;nbsp;Stop.
&lt;br&gt;Now Search log events and configuration files using AJAX and a browser.
&lt;br&gt;Download your FREE copy of Splunk now &amp;gt;&amp;gt; &amp;nbsp;&lt;a href=&quot;http://get.splunk.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://get.splunk.com/&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=12220805&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/object-function-as-callback-function-tp12220805p12220805.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-9506414</id>
	<title>Retiring from CPAINT</title>
	<published>2007-03-15T18:29:03Z</published>
	<updated>2007-03-15T18:29:03Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">&lt;div&gt;All -&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;I have decided to &amp;quot;retire&amp;quot; from CPAINT and cease all future development activity on the project.&amp;nbsp; It has been a good run and I have met lots of people all across the world, but it&amp;#39;s time to move on.&amp;nbsp; I have other personal projects I would like to start working on (
&lt;a href=&quot;http://www.wiley14.com/projects/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.wiley14.com/projects/&lt;/a&gt;) and have some time to relax (imagine that!)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;The website has been moved to it&amp;#39;s permanent home - &lt;a href=&quot;http://cpaint.sourceforge.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.sourceforge.net/&lt;/a&gt;.&amp;nbsp; The documentation, source code, and even a dump of the old forum site is there for your reference.&amp;nbsp; If anyone would like to pickup the code and start developing it again, please let me know and I&amp;#39;ll hand over the reigns.&amp;nbsp; I still think CPAINT is the best AJAX toolkit out there and I encourage you to keep using it for your own projects - I know I will!
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;When I get around to it, I&amp;#39;m going to post some pointers on my blog (&lt;a href=&quot;http://www.wiley14.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;www.wiley14.com&lt;/a&gt;) about the experiences I had while working on this project to help other people who want to get their own OSS project up and running.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Again, it&amp;#39;s been fun and I wish you all the best!&amp;nbsp; &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Stay in touch,&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Paul Sullivan&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9506414&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wiley14@...&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;-------------------------------------------------------------------------
&lt;br&gt;Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;opinions on IT &amp; business topics through brief surveys-and earn cash
&lt;br&gt;&lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9506414&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Retiring-from-CPAINT-tp9506414p9506414.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-9280116</id>
	<title>Re: encoding problems</title>
	<published>2007-03-02T16:18:17Z</published>
	<updated>2007-03-02T16:18:17Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">The backend uses UTF-8 encoding, which is essentially universal. &amp;nbsp;Try
&lt;br&gt;using UTF-8 as the content type of your frontend web page. &amp;nbsp;Take a
&lt;br&gt;look at &lt;a href=&quot;http://cpaint.net/examples/encoding/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.net/examples/encoding/index.html&lt;/a&gt;. &amp;nbsp;It's a demo
&lt;br&gt;where we show a few different character sets, including Greek.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Paul
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 3/2/07, &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9280116&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;anakreonmejdi@...&lt;/a&gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9280116&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;anakreonmejdi@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello all.
&lt;br&gt;&amp;gt; I had a problem which I belive it displayes a short-comming
&lt;br&gt;&amp;gt; of cpaint.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I set from the front-end the response type into text.
&lt;br&gt;&amp;gt; Then from the back-end I set the data of the cpaint object
&lt;br&gt;&amp;gt; ($cp-&amp;gt;set_data(Some Greek Text..).
&lt;br&gt;&amp;gt; The problem was that the text was not returned in the
&lt;br&gt;&amp;gt; front-end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I thought of using the method set_enconding. This method
&lt;br&gt;&amp;gt; however belongs to class cpaint_node.
&lt;br&gt;&amp;gt; The solution was that I created a dummy node and used
&lt;br&gt;&amp;gt; the node's set_encoding method. After that it worked fine.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Since the cpaint object does have a set_data method,
&lt;br&gt;&amp;gt; I think it should have a set_encoding as well (and I'd
&lt;br&gt;&amp;gt; suggest that the encoding set by the cpaint's set_encoding
&lt;br&gt;&amp;gt; should be used by default from the cpaint_node objects).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The method start does accept an encoding but in this way
&lt;br&gt;&amp;gt; I can not use a different encoding for each registered function.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The method I propose is:
&lt;br&gt;&amp;gt; function set_encoding($enc) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$this-&amp;gt;basenode-&amp;gt;set_encoding($enc);
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Best regards.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Three words describe our society:homo homini lupus
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------
&lt;br&gt;&amp;gt; Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;&amp;gt; Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;&amp;gt; opinions on IT &amp; business topics through brief surveys-and earn cash
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Cpaint-developers mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9280116&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;opinions on IT &amp; business topics through brief surveys-and earn cash
&lt;br&gt;&lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9280116&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/encoding-problems-tp9277299p9280116.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-9277299</id>
	<title>encoding problems</title>
	<published>2007-03-02T12:58:22Z</published>
	<updated>2007-03-02T12:58:22Z</updated>
	<author>
		<name>anakreonmejdi</name>
	</author>
	<content type="html">Hello all.
&lt;br&gt;I had a problem which I belive it displayes a short-comming
&lt;br&gt;of cpaint.
&lt;br&gt;&lt;br&gt;I set from the front-end the response type into text.
&lt;br&gt;Then from the back-end I set the data of the cpaint object
&lt;br&gt;($cp-&amp;gt;set_data(Some Greek Text..).
&lt;br&gt;The problem was that the text was not returned in the
&lt;br&gt;front-end.
&lt;br&gt;&lt;br&gt;I thought of using the method set_enconding. This method
&lt;br&gt;however belongs to class cpaint_node.
&lt;br&gt;The solution was that I created a dummy node and used
&lt;br&gt;the node's set_encoding method. After that it worked fine.
&lt;br&gt;&lt;br&gt;Since the cpaint object does have a set_data method,
&lt;br&gt;I think it should have a set_encoding as well (and I'd
&lt;br&gt;suggest that the encoding set by the cpaint's set_encoding
&lt;br&gt;should be used by default from the cpaint_node objects).
&lt;br&gt;&lt;br&gt;The method start does accept an encoding but in this way
&lt;br&gt;I can not use a different encoding for each registered function.
&lt;br&gt;&lt;br&gt;&lt;br&gt;The method I propose is:
&lt;br&gt;function set_encoding($enc) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;basenode-&amp;gt;set_encoding($enc);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Best regards.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Three words describe our society:homo homini lupus
&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;opinions on IT &amp; business topics through brief surveys-and earn cash
&lt;br&gt;&lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=9277299&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/encoding-problems-tp9277299p9277299.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-8524917</id>
	<title>New CPAINT Release?</title>
	<published>2007-01-23T08:23:01Z</published>
	<updated>2007-01-23T08:23:01Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">&lt;div&gt;In an attempt to breathe some fresh air into CPAINT and hopefully revive it, I am working up a new feature list&amp;nbsp;for a release in the next few months.&amp;nbsp; In addition, I am seeking help!&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;* Fix NS_NOT_AVAILABLE_ERROR that&amp;#39;s occuring in some Gecko based browsers (apparently, you have to wait a second after the page loads for the XMLHTTP object to become available.&amp;nbsp; I haven&amp;#39;t been able to reproduce it myself, but have a few reports of it happening).
&lt;/div&gt;
&lt;div&gt;* Finish out WSDL &amp;amp; SOAP support in the backend&lt;/div&gt;
&lt;div&gt;* Add some sort of security &amp;quot;key&amp;quot; for accessing the backend (the basic idea here is that the client must send the server a key in order to gain access to the backend functionality - I&amp;#39;m sure there&amp;#39;s more than one way to do this, so we need to figure out the best way)
&lt;/div&gt;
&lt;div&gt;* Port the backend and proxy&amp;nbsp;to Classic ASP&lt;/div&gt;
&lt;div&gt;* Create a plugin architecture for custom data converters/processors (had a concept last year, but never finished it)&lt;/div&gt;
&lt;div&gt;* Create a language independent settings/INI file (to configure the backend, proxy, etc...)&lt;/div&gt;
&lt;div&gt;* Anything else on the current TODO list not listed here (&lt;a href=&quot;http://cpaint.net/doc/todo.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.net/doc/todo.html&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;The following ideas could be done, depending on how many people we can get to help out:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;* Add/distribute a JavaScript widget library with CPAINT (have the code to a custom developed one, but needs lots of cleanup)&lt;/div&gt;
&lt;div&gt;* Port backend and proxy to other languages (PERL, ASP.Net, Ruby, etc)&lt;/div&gt;
&lt;div&gt;* New examples and more in-depth documentation, possibly a book&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;If you are interested in helping out or have some ideas, please let me know.&amp;nbsp; I&amp;#39;m going to attempt to make things a bit more formal and work up a design document once the features have been decided upon.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Thanks,&lt;/div&gt;
&lt;div&gt;Paul&lt;/div&gt;
&lt;br /&gt;-------------------------------------------------------------------------
&lt;br&gt;Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;opinions on IT &amp; business topics through brief surveys - and earn cash
&lt;br&gt;&lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=8524917&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/New-CPAINT-Release--tp8524917p8524917.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-6922350</id>
	<title>Announcing CPAINT v2.1.0</title>
	<published>2006-10-20T12:15:18Z</published>
	<updated>2006-10-20T12:15:18Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">&lt;div&gt;Dear Friends,&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;It is with great pleasure to announce the release of CPAINT v2.1.0, which will be available worldwide momentarily at &lt;a href=&quot;http://sf.net/projects/cpaint&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sf.net/projects/cpaint&lt;/a&gt;.&amp;nbsp; Our last release was v2.0.3
 on 8 February 2006.&amp;nbsp; This version includes a significant amount of bug-fixes and enhancements.&amp;nbsp; We welcome your comments and questions via our normal support methods, found on our website at &lt;a href=&quot;http://www.cpaint.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;
http://www.cpaint.net/&lt;/a&gt;.&amp;nbsp;&amp;nbsp; In addition to the continual maintenance of CPAINT, we are working on a new developers guide, which we hope to make available soon.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;We would like to thank all of our users for their suggestions and code submissions which has made this release possible!&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Sincerely,&lt;/div&gt;
&lt;div&gt;the CPAINT Development Team&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;CHANGELOG:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;//---- v2.1.0 (Released October 20, 2006) ---------------------------------&lt;br&gt;- moved CPAINT 'core' files to lib to ease usage of CPAINT as SVN external&amp;nbsp;without having to grab the examples and docs as well.&lt;br&gt;- PHP: Added configuration value $cpaint2_config['proxy']['stream_timeout'] for the number of miliseconds to have the proxy wait for the response.
&lt;br&gt;- PHP: Added configuration value $cpaint2_config['proxy']['connect_timeout'] for the number of seconds to have the proxy wait until connection is established.&lt;br&gt;- PHP: Added configuration value $cpaint2_config['proxy']['time_limit'] for the maximum runtime of the proxy script in seconds.
&lt;br&gt;- PHP: Added configuration value $cpaint2_config['proxy']['security']['error_reporting'] to set the level of PHP's error_reporting value for the proxy.&lt;br&gt;- PHP: Made use of whitelist for both POST and GET requests.&lt;br&gt;
- PHP: Recognize http:// as default procotol in proxy script. (thanks oroshchuk)&lt;br&gt;- PHP: Refactored the proxy-script for better maintainability.&lt;br&gt;- PHP: Using &amp;lt;?php as PHP opening tag instead of &amp;lt;? in backend-debugger.
&lt;br&gt;- PHP: Perfomed variable initialization in config script. Using &amp;lt;?php as PHP opening tag instead of &amp;lt;?.&lt;br&gt;- PHP: Cleaned up the code of the proxy script.&lt;br&gt;- PHP: Checks for existance of arguments before assigning to local variable.
&lt;br&gt;- EXAMPLES: Fixed URL of proxy script in proxy-ping example.&lt;br&gt;- EXAMPLES: Cleaned up the code of the calculator example.&lt;br&gt;- EXAMPLES: Fixed issue in colorpicker example that prevented it from working.&lt;br&gt;- PHP, JS: Added support for aliases to hide the names of CPAINT API methods in register().
&lt;br&gt;- PHP: Removed configuration file dependency (core backend) (thanks miwhite)&lt;br&gt;- PHP: Commented out WSDL-specific code blocks and variables&lt;br&gt;- JS: Added ability to set HTTP Basic Authentication username and password when accessing local scripts (including proxy utility).
&lt;br&gt;- JS: Fixed handling of numeric strings (thanks ironoxide)&lt;br&gt;- JS: Fixed typo in proxy calling code (thanks miwhite)&lt;br&gt;- JS: Fixed create_object_structure to handle text nodes &amp;gt;4096 bytes (thanks Nelson Antunes)&lt;br&gt;
- JS: Fixed problem parsing attributes of first XML node element&amp;nbsp;&amp;nbsp;(thanks Nelson Antunes)&lt;br&gt;- EXAMPLES: Fixed typo in Google example (thanks Curtis Farnham)&lt;br&gt;- DOC: Fixed typo in frontend development guide (thanks James Johnson)
&lt;br&gt;- PROXY: Added the ability to use the CURL library, with ability to&amp;nbsp;failover to built-in PHP socket functionality&lt;/div&gt;
&lt;br /&gt;-------------------------------------------------------------------------
&lt;br&gt;Using Tomcat but need to do more? Need to support web services, security?
&lt;br&gt;Get stuff done quickly with pre-integrated technology to make your job easier
&lt;br&gt;Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
&lt;br&gt;&lt;a href=&quot;http://sel.as-us.falkag.net/sel?cmd=lnk&amp;kid=120709&amp;bid=263057&amp;dat=121642&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sel.as-us.falkag.net/sel?cmd=lnk&amp;kid=120709&amp;bid=263057&amp;dat=121642&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6922350&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Announcing-CPAINT-v2.1.0-tp6922350p6922350.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-6663351</id>
	<title>Re: CPaint and JQuery</title>
	<published>2006-10-05T10:01:57Z</published>
	<updated>2006-10-05T10:01:57Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">Since I've never used JQuery, I can't give you a definate answer.
&lt;br&gt;But, CPAINT can interpret and convert JS data objects, so I would say
&lt;br&gt;as long as JQuery does the same, you shouldn't have too much trouble.
&lt;br&gt;&lt;br&gt;As far as the new release, I think we are shooting for the middle of
&lt;br&gt;October. &amp;nbsp;We are testing out the new functionality right now and
&lt;br&gt;updating our documentation (including a completely rewritten
&lt;br&gt;developer's guide).
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Paul
&lt;br&gt;&lt;br&gt;&lt;br&gt;On 10/5/06, &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6663351&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;iroiban@...&lt;/a&gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6663351&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;iroiban@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Do they integrate well (CPaint and JQuery)?
&lt;br&gt;&amp;gt; Any news regarding the upcoming release?
&lt;br&gt;&amp;gt; ________________________________
&lt;br&gt;&amp;gt; Check out the new AOL. Most comprehensive set of free safety and security
&lt;br&gt;&amp;gt; tools, free access to millions of high-quality videos from across the web,
&lt;br&gt;&amp;gt; free AOL Mail and more.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------
&lt;br&gt;&amp;gt; Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;&amp;gt; Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;&amp;gt; opinions on IT &amp; business topics through brief surveys -- and earn cash
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Cpaint-developers mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6663351&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;opinions on IT &amp; business topics through brief surveys -- and earn cash
&lt;br&gt;&lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6663351&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/CPaint-and-JQuery-tp6662090p6663351.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-6662090</id>
	<title>CPaint and JQuery</title>
	<published>2006-10-04T23:09:24Z</published>
	<updated>2006-10-04T23:09:24Z</updated>
	<author>
		<name>iroiban</name>
	</author>
	<content type="html">&lt;HTML&gt;&lt;BODY&gt;
&lt;div&gt;Do they integrate well (CPaint and JQuery)?&lt;/div&gt;


&lt;div&gt;Any news regarding the &lt;SPAN class=correction id=&quot;&quot;&gt;up&lt;SPAN class=correction id=&quot;&quot;&gt;coming&lt;/SPAN&gt;&lt;/SPAN&gt; release?&lt;/div&gt;

&lt;div class=&quot;AOLPromoFooter&quot;&gt;
&lt;hr style=&quot;margin-top:10px;&quot; /&gt;
&lt;a href=&quot;http://pr.atwola.com/promoclk/1615326657x4311227241x4298082137/aol?redir=http%3A%2F%2Fwww%2Eaol%2Ecom%2Fnewaol&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;b&gt;Check out the new AOL&lt;/b&gt;&lt;/a&gt;. Most comprehensive set of free safety and security tools, free access to millions of high-quality videos from across the web, free AOL Mail and more.&lt;br /&gt;
&lt;/div&gt;

&lt;/BODY&gt;&lt;/HTML&gt;
&lt;br /&gt;-------------------------------------------------------------------------
&lt;br&gt;Take Surveys. Earn Cash. Influence the Future of IT
&lt;br&gt;Join SourceForge.net's Techsay panel and you'll get the chance to share your
&lt;br&gt;opinions on IT &amp; business topics through brief surveys -- and earn cash
&lt;br&gt;&lt;a href=&quot;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.techsay.com/default.php?page=join.php&amp;p=sourceforge&amp;CID=DEVDEV&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6662090&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/CPaint-and-JQuery-tp6662090p6662090.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-6254767</id>
	<title>New CPAINT Development Items</title>
	<published>2006-09-11T14:59:42Z</published>
	<updated>2006-09-11T14:59:42Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">Hi All,
&lt;br&gt;&lt;br&gt;It's been over a year since CPAINT was released and a few months since
&lt;br&gt;any real work has been done. &amp;nbsp;But, a few items have come up and I am
&lt;br&gt;sending this out to solicit any more comments/suggestions/items for
&lt;br&gt;the list:
&lt;br&gt;&lt;br&gt;Backend:
&lt;br&gt;- Add &amp;quot;aliases&amp;quot; for registered functions (good for hiding function
&lt;br&gt;names from prying eyes or calling static methods).
&lt;br&gt;- Update the JSON implementation (it's been reported that lots of
&lt;br&gt;warnings &amp; notices come up, although it works fine)
&lt;br&gt;&lt;br&gt;Frontend:
&lt;br&gt;- Update the JSON implementation (Dominique sent me a new
&lt;br&gt;implementation, but haven't released a new distro with it.
&lt;br&gt;- Possibly add configurable JavaScript widgets (still getting
&lt;br&gt;clearance for work to release some work I've done in this area)
&lt;br&gt;&lt;br&gt;Project:
&lt;br&gt;- Get the forums back online (recieved massive amounts of spam, so I
&lt;br&gt;turned them off)
&lt;br&gt;- Create an FAQ
&lt;br&gt;- Update developer documentation with better examples, including
&lt;br&gt;accessing XML servers via CPAINT frontend
&lt;br&gt;&lt;br&gt;&lt;br&gt;Again, if you've got any ideas you'd like to see implemented in
&lt;br&gt;CPAINT, let me know. &amp;nbsp;I'll get them on the list, but I'm not setting
&lt;br&gt;any release dates right now.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Paul
&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;Using Tomcat but need to do more? Need to support web services, security?
&lt;br&gt;Get stuff done quickly with pre-integrated technology to make your job easier
&lt;br&gt;Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
&lt;br&gt;&lt;a href=&quot;http://sel.as-us.falkag.net/sel?cmd=lnk&amp;kid=120709&amp;bid=263057&amp;dat=121642&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sel.as-us.falkag.net/sel?cmd=lnk&amp;kid=120709&amp;bid=263057&amp;dat=121642&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=6254767&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/New-CPAINT-Development-Items-tp6254767p6254767.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-2547302</id>
	<title>tree-like menu</title>
	<published>2006-01-23T16:37:08Z</published>
	<updated>2006-01-23T16:37:08Z</updated>
	<author>
		<name>samwun</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I want to use cpaint implement a tree-like menu.
&lt;br&gt;I searched cpaint directory, couldn't found an example.
&lt;br&gt;Can anyone please post an example or a guideline how to do so using cpaint?
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;Sam
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------
&lt;br&gt;This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
&lt;br&gt;for problems? &amp;nbsp;Stop! &amp;nbsp;Download the new AJAX search engine that makes
&lt;br&gt;searching your log files as easy as surfing the &amp;nbsp;web. &amp;nbsp;DOWNLOAD SPLUNK!
&lt;br&gt;&lt;a href=&quot;http://sel.as-us.falkag.net/sel?cmd=lnk&amp;kid=103432&amp;bid=230486&amp;dat=121642&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sel.as-us.falkag.net/sel?cmd=lnk&amp;kid=103432&amp;bid=230486&amp;dat=121642&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=2547302&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/tree-like-menu-tp2547302p2547302.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-2409210</id>
	<title>AJAX Detection Code, version 0.3Alpha</title>
	<published>2006-01-16T09:53:28Z</published>
	<updated>2006-01-16T09:53:28Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">Hi Folks!
&lt;br&gt;&lt;br&gt;After a few days of testing, I discovered that the original detection
&lt;br&gt;code I sent was returning erronious results and crashing some (older)
&lt;br&gt;browsers. &amp;nbsp;Therefore, I have updated the code and have tested it with
&lt;br&gt;browsers as low as 3.0 (which I highly doubt anyone is still using).
&lt;br&gt;&lt;br&gt;Attached is the new code. &amp;nbsp;It no longer redirects, but instead
&lt;br&gt;displays a less annoying alert box with the result. &amp;nbsp;That result is
&lt;br&gt;one of the following:
&lt;br&gt;&lt;br&gt;activex - IE only, use an ActiveX object
&lt;br&gt;builtin - Opera, Mozilla-based browsers, &amp; safari - use built in object
&lt;br&gt;java - Java is enabled and can use an applet
&lt;br&gt;iframe - IE 3.0Beta2+, Netscape 6.0Beta1+, Opera 4.0+ - use an IFRAME
&lt;br&gt;ilayer - Netscape 4.0Beta2 to 4.8 - use an ILAYER (similar to an IFRAME)
&lt;br&gt;none - no real &amp;quot;AJAX&amp;quot; capability, must use old skool forms
&lt;br&gt;&lt;br&gt;Please feel free to test and report any results. &amp;nbsp;I'm working on an
&lt;br&gt;implementation of CPAINT that will utilize IFRAMEs and ILAYERs for
&lt;br&gt;older browsers. &amp;nbsp;I've also reverse-engineered a Java applet to use as
&lt;br&gt;well.
&lt;br&gt;&lt;br&gt;Enjoy!
&lt;br&gt;Pauly
&lt;br&gt;&lt;br /&gt;&lt;!-- 
* CPAINT - Cross-Platform Asynchronous INterface Toolkit
*
* http://cpaint.sourceforge.net
* 
* released under the terms of the LGPL
* see http://www.fsf.org/licensing/licenses/lgpl.txt for details
*
* @package      CPAINT
* @access       public
* @copyright    Copyright (c) 2006 Paul Sullivan, Dominique Stender - http://cpaint.sourceforge.net
* @author       Paul Sullivan &lt;wiley14@gmail.com&gt;
* @version      0.3 Alpha
*
*
* cross browser AJAX detection code
*
* Please report problems with this version to wiley14@gmail.com
* DO NOT use the normal CPAINT support methods for this code!
*
--&gt;
&lt;meta http-equiv=&quot;pragma&quot; content=&quot;no-cache&quot;&gt;

&lt;noscript&gt;Sorry, you can't run JavaScript&lt;/noscript&gt;





&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/AJAX-Detection-Code%2C-version-0.3Alpha-tp2409210p2409210.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-2368433</id>
	<title>AJAX &quot;detection&quot; script</title>
	<published>2006-01-13T11:45:25Z</published>
	<updated>2006-01-13T11:45:25Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">All,
&lt;br&gt;&lt;br&gt;Attached is JavaScript code that can detect the AJAX &amp;quot;compliance&amp;quot; of a
&lt;br&gt;web browser. &amp;nbsp;I have tested it in some really old browsers and so far
&lt;br&gt;the script works, but I will keep testing it.
&lt;br&gt;&lt;br&gt;There are four levels of &amp;quot;compliance&amp;quot; that I determine through this script:
&lt;br&gt;&lt;br&gt;* activex - the browser can use the Microsoft ActiveX objects (IE only)
&lt;br&gt;* builtin - the browser can use a built-in XMLHttpRequest object
&lt;br&gt;(other browsers)
&lt;br&gt;* java - the browser can use a Java applet for communications
&lt;br&gt;* iframe - the browser may be able to use an iframe for communications
&lt;br&gt;&lt;br&gt;Note, as of this moment, there is not a &amp;quot;non-compliance level&amp;quot;, as I
&lt;br&gt;believe that most browsers that use JavaScript at the very least could
&lt;br&gt;use an IFRAME for fallback communications. &amp;nbsp;However, I am still
&lt;br&gt;investigating this concept and may add a &amp;quot;non&amp;quot; level to this script at
&lt;br&gt;a later date.
&lt;br&gt;&lt;br&gt;Currently, this script simply detects the compliance level and
&lt;br&gt;redirects the browser, attaching the level to the querystring.
&lt;br&gt;&lt;br&gt;Please feel free to test and your comments/suggestions are welcome. 
&lt;br&gt;This code isn't part of the official CPAINT release yet, but probably
&lt;br&gt;will be as part of our effort to support some older browsers via the
&lt;br&gt;IFRAME and Java applet fallbacks.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Paul
&lt;br&gt;&lt;br /&gt;&lt;!-- 
* CPAINT - Cross-Platform Asynchronous INterface Toolkit
*
* http://cpaint.sourceforge.net
* 
* released under the terms of the LGPL
* see http://www.fsf.org/licensing/licenses/lgpl.txt for details
*
* @package      CPAINT
* @access       public
* @copyright    Copyright (c) 2006 Paul Sullivan, Dominique Stender - http://cpaint.sourceforge.net
* @author       Paul Sullivan &lt;wiley14@gmail.com&gt;
* @version      0.1 Alpha
*
*
* cross browser AJAX detection code
*
* Please report problems with this version to wiley14@gmail.com - do NOT use the normal CPAINT
*   support methods for this version.
*
--&gt;
&lt;meta http-equiv=&quot;pragma&quot; content=&quot;no-cache&quot;&gt;

&lt;noscript&gt;Sorry, you can't run JavaScript&lt;/noscript&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/AJAX-%22detection%22-script-tp2368433p2368433.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-1395338</id>
	<title>Fwd: Next CPAINT Release</title>
	<published>2005-11-08T14:13:04Z</published>
	<updated>2005-11-08T14:13:04Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">All,&lt;br&gt;&lt;br&gt;If you haven't figured out by now - the CPAINT development team took some time off. Over the past few weeks, we've been trying to figure out where to take CPAINT, improve our processes, and uncover ourselves from a blizzard of emails.
&lt;br&gt;&lt;br&gt;Now that we've had some time to catch our breath, it's long past time that we get ourselves (and CPAINT) back on track. Therefore, we are going to attempt to get a new minor release of CPAINT out by December 25th.
&lt;br&gt;&lt;br&gt;Our goal for this release will be to improve the code and documentation, based on the feedback we've received via email, the forums, and support tickets. The next release will support only ASP &amp;amp; PHP, although we will try extremely hard to get it running in other languages after the new year.
&lt;br&gt;&lt;br&gt;I am also looking for new talent to join the team, so Dominique and myself aren't overwhelmed in the future. In particular, we are looking for help in porting CPAINT to other backend languages (targets are Perl, Python, .NET, and Ruby) and frontend JavaScript developers (specifically, GUI design/interaction). We also need to assemble a QA team, so we don't have any problems like we did in the past.
&lt;br&gt;&lt;br&gt;If you're interested in helping, please fill out this nifty little form at &lt;a href=&quot;http://cpaint.booleansystems.com/questionnaire.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.booleansystems.com/questionnaire.php&lt;/a&gt; and introduce yourself to us.
&lt;br&gt;&lt;br&gt;And keep checking our forums at &lt;a href=&quot;http://cpaint.booleansystems.com/forums/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.booleansystems.com/forums/&lt;/a&gt; (the News &amp;amp; Announcements section in particular) for new information.&lt;br&gt;&lt;br&gt;Thanks for everyone's time and continued support!
&lt;br&gt;&lt;br&gt;Sincerely,&lt;br&gt;Paul&lt;br&gt;_________________&lt;br&gt;Paul Sullivan (wiley14)&lt;br&gt;CPAINT Development Team&lt;br&gt;&lt;a href=&quot;http://cpaint.sourceforge.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.sourceforge.net/&lt;/a&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Fwd%3A-Next-CPAINT-Release-tp1395338p1395338.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-1342598</id>
	<title>Looking for Help w/ CPAINT</title>
	<published>2005-11-04T13:53:16Z</published>
	<updated>2005-11-04T13:53:16Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">We are currently looking for developers, QA engineers, support
&lt;br&gt;engineers, and technical writers to assist us in the continual
&lt;br&gt;development of CPAINT.
&lt;br&gt;&lt;br&gt;If you are interested, please visit
&lt;br&gt;&lt;a href=&quot;http://cpaint.booleansystems.com/questionnaire.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.booleansystems.com/questionnaire.php&lt;/a&gt;&amp;nbsp;and fill out the
&lt;br&gt;short form. We will contact you after we've had a chance to review
&lt;br&gt;your information.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Paul
&lt;br&gt;_________________
&lt;br&gt;Paul Sullivan
&lt;br&gt;CPAINT Development Team
&lt;br&gt;&lt;a href=&quot;http://cpaint.sourceforge.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.sourceforge.net/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------
&lt;br&gt;SF.Net email is sponsored by:
&lt;br&gt;Tame your development challenges with Apache's Geronimo App Server. Download
&lt;br&gt;it for free - -and be entered to win a 42&amp;quot; plasma tv or your very own
&lt;br&gt;Sony(tm)PSP. &amp;nbsp;Click here to play: &lt;a href=&quot;http://sourceforge.net/geronimo.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/geronimo.php&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=1342598&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Looking-for-Help-w--CPAINT-tp1342598p1342598.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-1199110</id>
	<title>Re: trial and error</title>
	<published>2005-10-22T18:35:51Z</published>
	<updated>2005-10-22T18:35:51Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">I'm not understanding your question or issue. &amp;nbsp;It looks like you got it to work.
&lt;br&gt;&lt;br&gt;On 10/22/05, marco &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=1199110&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;marco@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; getting it to work took some dedication.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I used the official documentation, getting the response
&lt;br&gt;&amp;gt; attributes slowed me down.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For single values:
&lt;br&gt;&amp;gt; use $cp-&amp;gt;set_data($string1); in the back-end to sent
&lt;br&gt;&amp;gt; the string.
&lt;br&gt;&amp;gt; in the frontend assign your result with
&lt;br&gt;&amp;gt; document.getElementById('id for entry field for
&lt;br&gt;&amp;gt; string1').value = result.ajaxResponse[0].data;
&lt;br&gt;&amp;gt; (the front-end is default to return type object)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For multiple values:
&lt;br&gt;&amp;gt; backend;
&lt;br&gt;&amp;gt; $string1_node =&amp; $cp-&amp;gt;add_node(&amp;quot;node name for string1&amp;quot;);
&lt;br&gt;&amp;gt; $string2_node =&amp; $cp-&amp;gt;add_node(&amp;quot;node name for string2&amp;quot;);
&lt;br&gt;&amp;gt; $string1_node-&amp;gt;set_data($string1);
&lt;br&gt;&amp;gt; $string2_node-&amp;gt;set_data($string2);
&lt;br&gt;&amp;gt; frontend;
&lt;br&gt;&amp;gt; &amp;gt; return type set to XML (i did not get the
&lt;br&gt;&amp;gt; get_attribute call to work).
&lt;br&gt;&amp;gt; document.getElementById('id for string1').value =
&lt;br&gt;&amp;gt; result.getElementsByTagName('node name for
&lt;br&gt;&amp;gt; string1').item(0).firstChild.data;
&lt;br&gt;&amp;gt; document.getElementById('id for string2').value
&lt;br&gt;&amp;gt; = result.getElementsByTagName('node name for
&lt;br&gt;&amp;gt; string2').item(0).firstChild.data;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -------------------------------------------------------
&lt;br&gt;&amp;gt; This SF.Net email is sponsored by the JBoss Inc.
&lt;br&gt;&amp;gt; Get Certified Today * Register for a JBoss Training Course
&lt;br&gt;&amp;gt; Free Certification Exam for All Training Attendees Through End of 2005
&lt;br&gt;&amp;gt; Visit &lt;a href=&quot;http://www.jboss.com/services/certification&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jboss.com/services/certification&lt;/a&gt;&amp;nbsp;for more information
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Cpaint-developers mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=1199110&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the JBoss Inc.
&lt;br&gt;Get Certified Today * Register for a JBoss Training Course
&lt;br&gt;Free Certification Exam for All Training Attendees Through End of 2005
&lt;br&gt;Visit &lt;a href=&quot;http://www.jboss.com/services/certification&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jboss.com/services/certification&lt;/a&gt;&amp;nbsp;for more information
&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=1199110&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/trial-and-error-tp1198432p1199110.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-1198432</id>
	<title>trial and error</title>
	<published>2005-10-22T15:45:56Z</published>
	<updated>2005-10-22T15:45:56Z</updated>
	<author>
		<name>marco-19</name>
	</author>
	<content type="html">getting it to work took some dedication.
&lt;br&gt;&lt;br&gt;I used the official documentation, getting the response
&lt;br&gt;attributes slowed me down.
&lt;br&gt;&lt;br&gt;For single values:
&lt;br&gt;use $cp-&amp;gt;set_data($string1); in the back-end to sent
&lt;br&gt;the string.
&lt;br&gt;in the frontend assign your result with
&lt;br&gt;document.getElementById('id for entry field for
&lt;br&gt;string1').value = result.ajaxResponse[0].data;
&lt;br&gt;(the front-end is default to return type object)
&lt;br&gt;&lt;br&gt;For multiple values:
&lt;br&gt;backend;
&lt;br&gt;$string1_node =&amp; $cp-&amp;gt;add_node(&amp;quot;node name for string1&amp;quot;);
&lt;br&gt;$string2_node =&amp; $cp-&amp;gt;add_node(&amp;quot;node name for string2&amp;quot;);
&lt;br&gt;$string1_node-&amp;gt;set_data($string1);
&lt;br&gt;$string2_node-&amp;gt;set_data($string2);
&lt;br&gt;frontend;
&lt;br&gt;&amp;gt; return type set to XML (i did not get the
&lt;br&gt;get_attribute call to work).
&lt;br&gt;document.getElementById('id for string1').value =
&lt;br&gt;result.getElementsByTagName('node name for
&lt;br&gt;string1').item(0).firstChild.data;
&lt;br&gt;document.getElementById('id for string2').value
&lt;br&gt;= result.getElementsByTagName('node name for
&lt;br&gt;string2').item(0).firstChild.data;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the JBoss Inc.
&lt;br&gt;Get Certified Today * Register for a JBoss Training Course
&lt;br&gt;Free Certification Exam for All Training Attendees Through End of 2005
&lt;br&gt;Visit &lt;a href=&quot;http://www.jboss.com/services/certification&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.jboss.com/services/certification&lt;/a&gt;&amp;nbsp;for more information
&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=1198432&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/trial-and-error-tp1198432p1198432.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-903439</id>
	<title>New Discussion Forums Launched</title>
	<published>2005-09-19T15:51:23Z</published>
	<updated>2005-09-19T15:51:23Z</updated>
	<author>
		<name>Paul Sullivan</name>
	</author>
	<content type="html">The CPAINT development team has launched a new discussion board at
&lt;br&gt;&lt;a href=&quot;http://cpaint.sourceforge.net/forums/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.sourceforge.net/forums/&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;The new board includes a variety of topics and will be a great place
&lt;br&gt;to get help from peers and the CPAINT development team, including a
&lt;br&gt;moving FAQ, and &amp;quot;unofficial&amp;quot; project news.
&lt;br&gt;&lt;br&gt;We strongly encourage you use this new forum for communicating with
&lt;br&gt;other CPAINT developers and the core development team.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://cpaint.sourceforge.net/forums/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cpaint.sourceforge.net/forums/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------
&lt;br&gt;SF.Net email is sponsored by:
&lt;br&gt;Tame your development challenges with Apache's Geronimo App Server. Download
&lt;br&gt;it for free - -and be entered to win a 42&amp;quot; plasma tv or your very own
&lt;br&gt;Sony(tm)PSP. &amp;nbsp;Click here to play: &lt;a href=&quot;http://sourceforge.net/geronimo.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/geronimo.php&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=903439&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/New-Discussion-Forums-Launched-tp903439p903439.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-838016</id>
	<title>Re: Serializing form objects into PHP arrays</title>
	<published>2005-09-12T02:35:57Z</published>
	<updated>2005-09-12T02:35:57Z</updated>
	<author>
		<name>Dominique Stender</name>
	</author>
	<content type="html">Hi Alexandre,
&lt;br&gt;&lt;br&gt;thanks for the code. I'll be looking at it next week
&lt;br&gt;(I'm out of town until sunday), so don't wonder if you
&lt;br&gt;don't hear from us :).
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Dominique
&lt;br&gt;&lt;br&gt;--- &amp;quot;S. Alexandre M. Lemaire&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;saeven@...&lt;/a&gt;&amp;gt;
&lt;br&gt;wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Glad to hear, while I don't claim to have full
&lt;br&gt;&amp;gt; knowledge of CPaint's functions - here's where I've
&lt;br&gt;&amp;gt; placed hooks. &amp;nbsp;The functions finished, are as
&lt;br&gt;&amp;gt; follows, again, I post these here with your
&lt;br&gt;&amp;gt; assurance that the author comment will remain. &amp;nbsp;I'm
&lt;br&gt;&amp;gt; always weary to contribute to open sourced projects,
&lt;br&gt;&amp;gt; hopefully this will be a positive experience :) &amp;nbsp;I
&lt;br&gt;&amp;gt; leave any testing and furthering to you, I've used
&lt;br&gt;&amp;gt; this only with the standard response type. &amp;nbsp;Note
&lt;br&gt;&amp;gt; that I've made use of SimpleXML (PHP5). &amp;nbsp;You could
&lt;br&gt;&amp;gt; use any PHP-side XML parser to recreate the arrays,
&lt;br&gt;&amp;gt; simpleXML is just a personal preference of ours.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Cordially.
&lt;br&gt;&amp;gt; Alexandre
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; cpaint.php
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Added to the cpaint_transform object
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; /**
&lt;br&gt;&amp;gt; &amp;nbsp;* Unserialize a cpaint-serialized set of values
&lt;br&gt;&amp;gt; &amp;nbsp;* @author A. Lemaire, saeven.net consulting inc
&lt;br&gt;&amp;gt; &amp;nbsp;* @param &amp;nbsp;string $data A string of 'serialized|'
&lt;br&gt;&amp;gt; prefixed data which is to be converted into XML.
&lt;br&gt;&amp;gt; &amp;nbsp;* @return mixed An array of values representative
&lt;br&gt;&amp;gt; of the HTML form options
&lt;br&gt;&amp;gt; &amp;nbsp;*/
&lt;br&gt;&amp;gt; function unserialize( $data, $encoding ){ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; $data = substr( $data, 11, strlen( $data ) - 11
&lt;br&gt;&amp;gt; ); &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; $xml &amp;nbsp;= simplexml_load_string( $data );
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; $arr &amp;nbsp;= array();
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; foreach( $xml-&amp;gt;e as $e ){
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if( isset( $e-&amp;gt;v ) )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $arr[urldecode( (string)$e-&amp;gt;k )] =
&lt;br&gt;&amp;gt; urldecode( (string)$e-&amp;gt;v);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else{
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $narr = array();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach( $e-&amp;gt;m-&amp;gt;v as $val ) &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; array_push( $narr, (string)$val ); &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $arr[urldecode( (string)$e-&amp;gt;k )] =
&lt;br&gt;&amp;gt; $narr;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; return $arr; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; And then your array_decode function must be changed
&lt;br&gt;&amp;gt; to look like this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; /**
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; * decodes a (nested) array of data from UTF-8
&lt;br&gt;&amp;gt; into the configured character set
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; * @access &amp;nbsp; public
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; * @param &amp;nbsp; &amp;nbsp;array &amp;nbsp; &amp;nbsp; $data &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; data to
&lt;br&gt;&amp;gt; convert
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; * @param &amp;nbsp; &amp;nbsp;string &amp;nbsp; &amp;nbsp;$encoding &amp;nbsp; &amp;nbsp; character
&lt;br&gt;&amp;gt; encoding
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; * @return &amp;nbsp; array
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; function decode_array($data, $encoding) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; $return_value = array();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach ($data as $key =&amp;gt; $value) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; if( @substr( $value, 0, 11 ) == 'serialized|'
&lt;br&gt;&amp;gt; )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$return_value[$key] =
&lt;br&gt;&amp;gt; cpaint_transformer::unserialize( $value, $encoding
&lt;br&gt;&amp;gt; ); &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if( !is_array($value) ) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $return_value[$key] =
&lt;br&gt;&amp;gt; cpaint_transformer::decode( $value, $encoding );
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $return_value[$key] =
&lt;br&gt;&amp;gt; cpaint_transformer::decode_array($value, $encoding);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; return $return_value;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; } 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; cpaint2.inc.js
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; /**
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;* Serialize a form object into CPaint-PHP usable
&lt;br&gt;&amp;gt; data
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;*
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;* @author A. Lemaire, saeven.net consulting inc.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;* @param &amp;nbsp;string formData The form that is to be
&lt;br&gt;&amp;gt; serialized
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;* @access public
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;* @return string XML-serialized form data
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;gt; &amp;nbsp; this.serializeForm = function( formData, depth ){
&lt;br&gt;&amp;gt; &amp;nbsp; oxml = &amp;quot;serialized|&amp;lt;o&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; for( var i = 0 ; i &amp;lt; formData.length ; i++ ){
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;var key &amp;nbsp;= formData[i].name;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;var value &amp;nbsp;= formData[i].value;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;var mult &amp;nbsp; &amp;nbsp;= false;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;if( !key )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; continue;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;switch( formData[i].type ){
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; case 'file':
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; case 'select-multiple':
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mult = true;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;oxml += &amp;quot;&amp;lt;e&amp;gt;&amp;lt;k&amp;gt;&amp;quot; + encodeURIComponent( key ) +
&lt;br&gt;&amp;gt; &amp;quot;&amp;lt;/k&amp;gt;&amp;lt;m&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;for( var j = 0 ; j &amp;lt; formData[i].options.length
&lt;br&gt;&amp;gt; ; j++ )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; if( formData[i].options[j].selected )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;oxml += &amp;quot;&amp;lt;v&amp;gt;&amp;quot; + encodeURIComponent(
&lt;br&gt;&amp;gt; formData[i].options[j].value ) &amp;nbsp;+ &amp;quot;&amp;lt;/v&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;oxml += &amp;quot;&amp;lt;/m&amp;gt;&amp;lt;/e&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; case 'checkbox':
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( formData[i].checked == false )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; value = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; case 'radio':
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( formData[i].checked == false )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; default:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;if( !mult )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; oxml += &amp;quot;&amp;lt;e&amp;gt;&amp;lt;k&amp;gt;&amp;quot; + encodeURIComponent( key ) +
&lt;br&gt;&amp;gt; &amp;quot;&amp;lt;/k&amp;gt;&amp;lt;v&amp;gt;&amp;quot; + encodeURIComponent( value ) +
&lt;br&gt;&amp;gt; &amp;quot;&amp;lt;/v&amp;gt;&amp;lt;/e&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; oxml += &amp;quot;&amp;lt;/o&amp;gt;&amp;quot;; 
&lt;br&gt;&amp;gt; &amp;nbsp; return oxml;
&lt;br&gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; And then you must alter your call functions as
&lt;br&gt;&amp;gt; follows to call the above code:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; /**
&lt;br&gt;&amp;gt; &amp;nbsp; * internal method for remote calls to the local
&lt;br&gt;&amp;gt; server without use of the proxy script.
&lt;br&gt;&amp;gt; &amp;nbsp; *
&lt;br&gt;&amp;gt; &amp;nbsp; * @access &amp;nbsp; public
&lt;br&gt;&amp;gt; &amp;nbsp; * @param &amp;nbsp; &amp;nbsp;array &amp;nbsp; &amp;nbsp;call_arguments &amp;nbsp; &amp;nbsp;array of
&lt;br&gt;&amp;gt; arguments initially passed to cpaint.call()
&lt;br&gt;&amp;gt; &amp;nbsp; * @return &amp;nbsp; void
&lt;br&gt;&amp;gt; &amp;nbsp; */
&lt;br&gt;&amp;gt; &amp;nbsp; this.call_direct = function( call_arguments ) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var url &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = call_arguments[0];
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var remote_method &amp;nbsp; = call_arguments[1];
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var querystring &amp;nbsp; &amp;nbsp; = '';
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // correct link to self
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (url == 'SELF') {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; url = document.location.href;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (use_cpaint_api == true) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // backend uses cpaint api
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // pass parameters to remote method
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; for( i = 3; i &amp;lt; call_arguments.length; i++ ){ 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( typeof( call_arguments[i] ) == 'object'
&lt;br&gt;&amp;gt; &amp;&amp; call_arguments[i].tagName == 'FORM' )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; call_arguments[i] = this.serializeForm(
&lt;br&gt;&amp;gt; call_arguments[i].elements, 0 );
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring += '&amp;cpaint_argument[]=' +
&lt;br&gt;&amp;gt; encodeURIComponent(call_arguments[i]);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // add response type to querystring
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring += '&amp;cpaint_response_type=' +
&lt;br&gt;&amp;gt; response_type;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // build header
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (transfer_mode == 'GET') {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; url = url + '?cpaint_function=' +
&lt;br&gt;&amp;gt; remote_method + querystring;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring = 'cpaint_function=' +
&lt;br&gt;&amp;gt; remote_method + querystring;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // backend does not use cpaint api
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // pass parameters to remote method
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (i = 3; i &amp;lt; call_arguments.length; i++) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (i == 3) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring +=
&lt;br&gt;&amp;gt; encodeURIComponent(call_arguments[i]);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring += '&amp;' +
&lt;br&gt;&amp;gt; encodeURIComponent(call_arguments[i]);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // build header
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (transfer_mode == 'GET') {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; url = url + querystring;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; } 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // open connection 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; get_connection_object();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // open connection to remote target
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; debug('opening connection to &amp;quot;' + url + '&amp;quot;', 1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; httpobj.open(transfer_mode, url, async);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // send &amp;quot;urlencoded&amp;quot; header if necessary (if
&lt;br&gt;&amp;gt; POST)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (transfer_mode == &amp;quot;POST&amp;quot;) {
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpobj.setRequestHeader(&amp;quot;Content-Type&amp;quot;,
&lt;br&gt;&amp;gt; &amp;quot;application/x-www-form-urlencoded&amp;quot;);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (cp_err) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert('ERROR! POST cannot be completed due
&lt;br&gt;&amp;gt; to incompatible browser. &amp;nbsp;Use GET as your request
&lt;br&gt;&amp;gt; method.');
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // callback handling for asynchronous calls
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; httpobj.onreadystatechange = callback;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // send content
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (transfer_mode == 'GET') {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpobj.send(null);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; debug('sending query: ' + querystring, 1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpobj.send(querystring);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (async == false) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // manual callback handling for synchronized
&lt;br&gt;&amp;gt; calls
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; callback();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; /**
&lt;br&gt;&amp;gt; &amp;nbsp; * internal method for calls to remote servers
&lt;br&gt;&amp;gt; through the proxy script.
&lt;br&gt;&amp;gt; &amp;nbsp; *
&lt;br&gt;&amp;gt; &amp;nbsp; * @access &amp;nbsp; public
&lt;br&gt;&amp;gt; &amp;nbsp; * @param &amp;nbsp; &amp;nbsp;array &amp;nbsp; &amp;nbsp;call_arguments &amp;nbsp; &amp;nbsp;array of
&lt;br&gt;&amp;gt; arguments passed to cpaint.call()
&lt;br&gt;&amp;gt; &amp;nbsp; * @return &amp;nbsp; void
&lt;br&gt;&amp;gt; &amp;nbsp; */
&lt;br&gt;&amp;gt; &amp;nbsp; this.call_proxy = function(call_arguments) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var proxyscript &amp;nbsp; &amp;nbsp; = proxy_url;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var url &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = call_arguments[0];
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var remote_method &amp;nbsp; = call_arguments[1];
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var querystring &amp;nbsp; &amp;nbsp; = '';
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var i &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; var querystring_argument_prefix =
&lt;br&gt;&amp;gt; 'cpaint_argument[]=';
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // pass parameters to remote method
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (use_cpaint_api == false) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // when not talking to a CPAINT backend, don't
&lt;br&gt;&amp;gt; prefix arguments
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring_argument_prefix = '';
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; for (i = 3; i &amp;lt; call_arguments.length; i++) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( typeof( call_arguments[i] ) == 'object' &amp;&amp;
&lt;br&gt;&amp;gt; call_arguments[i].tagName == 'FORM' )
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; call_arguments[i] = this.serializeForm(
&lt;br&gt;&amp;gt; call_arguments[i].elements, 0 );
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring +=
&lt;br&gt;&amp;gt; encodeURIComponent(querystring_argument_prefix +
&lt;br&gt;&amp;gt; call_arguments[i] + '&amp;');
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (use_cpaint_api == true) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // add remote function name to querystring
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring +=
&lt;br&gt;&amp;gt; encodeURIComponent('&amp;cpaint_function=' +
&lt;br&gt;&amp;gt; remote_method);
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // add response type to querystring
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring +=
&lt;br&gt;&amp;gt; encodeURIComponent('&amp;cpaint_responsetype=' +
&lt;br&gt;&amp;gt; response_type);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // build header
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (transfer_mode == 'GET') {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; proxyscript += '?cpaint_remote_url=' +
&lt;br&gt;&amp;gt; encodeURIComponent(url) 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + '&amp;cpaint_remote_query=' + querystring
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + '&amp;cpaint_remote_method=' + transfer_mode 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + '&amp;cpaint_response_type=' + response_type;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; querystring = 'cpaint_remote_url=' +
&lt;br&gt;&amp;gt; encodeURIComponent(url)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + '&amp;cpaint_remote_query=' + querystring
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + '&amp;cpaint_remote_method=' + transfer_mode 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + '&amp;cpaint_response_type=' + response_type;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // open connection
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; get_connection_object();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // open connection to remote target
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; debug('opening connection to proxy &amp;quot;' +
&lt;br&gt;&amp;gt; proxyscript + '&amp;quot;', 1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; httpobj.open(transfer_mode, proxyscript, async);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // send &amp;quot;urlencoded&amp;quot; header if necessary (if
&lt;br&gt;&amp;gt; POST)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (transfer_mode == &amp;quot;POST&amp;quot;) {
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpobj.setRequestHeader(&amp;quot;Content-Type&amp;quot;,
&lt;br&gt;&amp;gt; &amp;quot;application/x-www-form-urlencoded&amp;quot;);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (cp_err) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert('[CPAINT Error] POST cannot be
&lt;br&gt;&amp;gt; completed due to incompatible browser. &amp;nbsp;Use GET as
&lt;br&gt;&amp;gt; your request method.');
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // callback handling for asynchronous calls
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; httpobj.onreadystatechange = callback;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; // send content
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (transfer_mode == 'GET') {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpobj.send(null);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; debug('sending query: ' + querystring, 1);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; httpobj.send(querystring);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (async == false) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // manual callback handling for synchronized
&lt;br&gt;&amp;gt; calls
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; callback();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Regards.
&lt;br&gt;&amp;gt; Alex
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ----- Original Message ----- 
&lt;br&gt;&amp;gt; From: &amp;quot;Dominique Stender&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;saloon12yrd@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; To: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cpaint-developers@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sent: Monday, September 12, 2005 3:18 AM
&lt;br&gt;&amp;gt; Subject: Re: [Cpaint-developers] Serializing form
&lt;br&gt;&amp;gt; objects into PHP arrays
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; don't worry about credit. We give full credit even
&lt;br&gt;&amp;gt; on
&lt;br&gt;&amp;gt; pointing out bugs. You will be mentioned in the doc
&lt;br&gt;&amp;gt; comments if we include your code into CPAINT.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If you like, post the code in sf.net as patch, we'll
&lt;br&gt;&amp;gt; see how we can integrate it into CPAINT 2.0.2 if
&lt;br&gt;&amp;gt; possible.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks in advance,
&lt;br&gt;&amp;gt; Dominique
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; --- &amp;quot;S. Alexandre M. Lemaire&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;saeven@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; CPaint..
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; I've readied a function which turns form
&lt;br&gt;&amp;gt; objects
&lt;br&gt;&amp;gt; &amp;gt; into PHP arrays through
&lt;br&gt;&amp;gt; &amp;gt; CPaint. &amp;nbsp;It works to my liking, and I'd be glad to
&lt;br&gt;&amp;gt; &amp;gt; share, since this would
&lt;br&gt;&amp;gt; &amp;gt; be to everyone's benefit. &amp;nbsp;As a boon to your
&lt;br&gt;&amp;gt; library
&lt;br&gt;&amp;gt; &amp;gt; though, I trust that
&lt;br&gt;&amp;gt; &amp;gt; credit would be given where due? &amp;nbsp;All I ask is
&lt;br&gt;&amp;gt; that
&lt;br&gt;&amp;gt; &amp;gt; the
&lt;br&gt;&amp;gt; &amp;gt; @author function comment remain intact if
&lt;br&gt;&amp;gt; possible.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Here's an example print_r of what ends up at the
&lt;br&gt;&amp;gt; PHP
&lt;br&gt;&amp;gt; &amp;gt; function after the
&lt;br&gt;&amp;gt; &amp;gt; cp.call, this was a form with two fields, email1,
&lt;br&gt;&amp;gt; &amp;gt; email2, a checkbox
&lt;br&gt;&amp;gt; &amp;gt; (unchecked, when checked it sends the value), and
&lt;br&gt;&amp;gt; &amp;gt; lastly a select list which
&lt;br&gt;&amp;gt; &amp;gt; was a multiple select, where mama and 123 were
&lt;br&gt;&amp;gt; &amp;gt; selected.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; array (
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 'email1' =&amp;gt; 'some field value',
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 'email2' =&amp;gt; '',
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 'checkbox' =&amp;gt; '0',
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 'listval' =&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; array (
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; 0 =&amp;gt; 'mama',
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; 1 =&amp;gt; '123',
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; ),
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 'Submit' =&amp;gt; 'Save',
&lt;br&gt;&amp;gt; &amp;gt; )
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Cordially.
&lt;br&gt;&amp;gt; &amp;gt; Alexandre
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;-------------------------------------------------------
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; SF.Net email is Sponsored by the Better Software
&lt;br&gt;&amp;gt; &amp;gt; Conference &amp; EXPO
&lt;br&gt;&amp;gt; &amp;gt; September 19-22, 2005 * San Francisco, CA *
&lt;br&gt;&amp;gt; &amp;gt; Development Lifecycle Practices
&lt;br&gt;&amp;gt; &amp;gt; Agile &amp; Plan-Driven Development * Managing
&lt;br&gt;&amp;gt; Projects
&lt;br&gt;&amp;gt; &amp;gt; &amp; Teams * Testing &amp; QA
&lt;br&gt;&amp;gt; &amp;gt; Security * Process Improvement &amp; Measurement *
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://www.sqe.com/bsce5sf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.sqe.com/bsce5sf&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; &amp;gt; Cpaint-developers mailing list
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; __________________________________ 
&lt;br&gt;&amp;gt; Yahoo! Mail - PC Magazine Editors' Choice 2005 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mail.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.yahoo.com&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;
&lt;/div&gt;-------------------------------------------------------
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; SF.Net email is Sponsored by the Better Software
&lt;br&gt;&amp;gt; Conference &amp; EXPO
&lt;br&gt;&amp;gt; September 19-22, 2005 * San Francisco, CA *
&lt;br&gt;&amp;gt; Development Lifecycle Practices
&lt;br&gt;&amp;gt; Agile &amp; Plan-Driven Development * Managing Projects
&lt;br&gt;&amp;gt; &amp; Teams * Testing &amp; QA
&lt;br&gt;&amp;gt; Security * Process Improvement &amp; Measurement *
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.sqe.com/bsce5sf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.sqe.com/bsce5sf&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Cpaint-developers mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;______________________________________________________ 
&lt;br&gt;Yahoo! for Good 
&lt;br&gt;Donate to the Hurricane Katrina relief effort. 
&lt;br&gt;&lt;a href=&quot;http://store.yahoo.com/redcross-donate3/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://store.yahoo.com/redcross-donate3/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------
&lt;br&gt;SF.Net email is Sponsored by the Better Software Conference &amp; EXPO
&lt;br&gt;September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
&lt;br&gt;Agile &amp; Plan-Driven Development * Managing Projects &amp; Teams * Testing &amp; QA
&lt;br&gt;Security * Process Improvement &amp; Measurement * &lt;a href=&quot;http://www.sqe.com/bsce5sf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.sqe.com/bsce5sf&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Cpaint-developers mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=838016&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Cpaint-developers@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/cpaint-developers&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/cpaint-developers-f3323.html&quot; embed=&quot;fixTarget[3323]&quot; target=&quot;_top&quot; &gt;cpaint-developers&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Serializing-form-objects-into-PHP-arrays-tp837570p838016.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-837764</id>
	<title>Re: Serializing form objects into PHP arrays</title>
	<published>2005-09-12T01:40:19Z</published>
	<updated>2005-09-12T01:40:19Z</updated>
	<author>
		<name>Saeven</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2800.1458&quot; name=GENERATOR&gt;

&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Glad to hear, while I don't claim to have full 
knowledge of CPaint's functions - here's where I've placed hooks.&amp;nbsp; The 
functions finished, are as follows, again, I post these here with your assurance 
that the author comment will remain.&amp;nbsp; I'm always weary to contribute to 
open sourced projects, hopefully this will be a positive experience :)&amp;nbsp; I 
leave any testing and furthering to you, I've used this only with the standard 
response type.&amp;nbsp; Note that I've made use of SimpleXML (PHP5).&amp;nbsp; You 
could use any PHP-side XML parser to recreate the arrays, simpleXML is just a 
personal preference of ours.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Cordially.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Alexandre&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;FONT face=Arial size=2&gt;&lt;U&gt;cpaint.php&lt;/U&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Added to the cpaint_transform object&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;/**&lt;BR&gt;&amp;nbsp;* Unserialize a cpaint-serialized 
set of values&lt;BR&gt;&amp;nbsp;* @author A. Lemaire, saeven.net consulting 
inc&lt;BR&gt;&amp;nbsp;* @param&amp;nbsp; string $data A string of 'serialized|' prefixed data 
which is to be converted into XML.&lt;BR&gt;&amp;nbsp;* @return mixed An array of values 
representative of the HTML form options&lt;BR&gt;&amp;nbsp;*/&lt;BR&gt;function unserialize( 
$data, $encoding 
){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
$data = substr( $data, 11, strlen( $data ) - 11 );&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
$xml&amp;nbsp; = simplexml_load_string( $data );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $arr&amp;nbsp; = 
array();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach( $xml-&amp;gt;e as $e 
){&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if( isset( 
$e-&amp;gt;v ) )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
$arr[urldecode( (string)$e-&amp;gt;k )] = urldecode( 
(string)$e-&amp;gt;v);&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
else{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $narr = 
array();&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Courier size=2&gt;foreach( $e-&amp;gt;m-&amp;gt;v as $val 
)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;array_push( $narr, (string)$val 
);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;$arr[urldecode( (string)$e-&amp;gt;k )] = $narr;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 
$arr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;And then your&amp;nbsp;array_decode function must be 
changed to look like this:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;/**&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * decodes a (nested) 
array of data from UTF-8 into the configured character set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
* &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @access&amp;nbsp;&amp;nbsp; public&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 
@param&amp;nbsp;&amp;nbsp;&amp;nbsp; array&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
$data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data to 
convert&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; 
string&amp;nbsp;&amp;nbsp;&amp;nbsp; $encoding&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; character 
encoding&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&amp;nbsp;&amp;nbsp; array&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
*/&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function decode_array($data, $encoding) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $return_value = 
array();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
foreach ($data as $key =&amp;gt; $value) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;if( @substr( 
$value, 0, 11 ) == 'serialized|' )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; $return_value[$key] = cpaint_transformer::unserialize( $value, 
$encoding );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;/STRONG&gt;&lt;/FONT&gt;if( 
!is_array($value) ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
$return_value[$key] = cpaint_transformer::decode( $value, $encoding 
);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
$return_value[$key] = cpaint_transformer::decode_array($value, 
$encoding);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 
$return_value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;STRONG&gt;&lt;U&gt;cpaint2.inc.js&lt;/U&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp; /**&lt;BR&gt;&amp;nbsp;&amp;nbsp; * Serialize a form 
object into CPaint-PHP usable data&lt;BR&gt;&amp;nbsp;&amp;nbsp; *&lt;BR&gt;&amp;nbsp;&amp;nbsp; * @author 
A. Lemaire, saeven.net consulting inc.&lt;BR&gt;&amp;nbsp;&amp;nbsp; * @param&amp;nbsp; string 
formData The form that is to be serialized&lt;BR&gt;&amp;nbsp;&amp;nbsp; * @access 
public&lt;BR&gt;&amp;nbsp;&amp;nbsp; * @return string XML-serialized form data&lt;BR&gt;&amp;nbsp;&amp;nbsp; 
*/&lt;BR&gt;&amp;nbsp; this.serializeForm = function( formData, depth 
){&lt;BR&gt;&amp;nbsp;&amp;nbsp;oxml = &quot;serialized|&amp;lt;o&amp;gt;&quot;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;for( var i = 0 ; 
i &amp;lt; formData.length ; i++ 
){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var key &amp;nbsp;= 
formData[i].name;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var value &amp;nbsp;= 
formData[i].value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var mult&amp;nbsp;&amp;nbsp;&amp;nbsp; = 
false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( !key 
)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch( 
formData[i].type ){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 
'file':&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 
'select-multiple':&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mult = true;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;oxml += 
&quot;&amp;lt;e&amp;gt;&amp;lt;k&amp;gt;&quot; + encodeURIComponent( key ) + 
&quot;&amp;lt;/k&amp;gt;&amp;lt;m&amp;gt;&quot;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for( var j = 0 ; j &amp;lt; 
formData[i].options.length ; j++ )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( 
formData[i].options[j].selected 
)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;oxml += &quot;&amp;lt;v&amp;gt;&quot; + 
encodeURIComponent( formData[i].options[j].value )&amp;nbsp; + 
&quot;&amp;lt;/v&amp;gt;&quot;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;oxml += 
&quot;&amp;lt;/m&amp;gt;&amp;lt;/e&amp;gt;&quot;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 
'checkbox':&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( formData[i].checked == false 
)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value = 
0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 
'radio':&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( formData[i].checked == false 
)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( 
!mult )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;oxml += &quot;&amp;lt;e&amp;gt;&amp;lt;k&amp;gt;&quot; + 
encodeURIComponent( key ) + &quot;&amp;lt;/k&amp;gt;&amp;lt;v&amp;gt;&quot; + encodeURIComponent( value ) 
+ &quot;&amp;lt;/v&amp;gt;&amp;lt;/e&amp;gt;&quot;;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Courier size=2&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;oxml += 
&quot;&amp;lt;/o&amp;gt;&quot;;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;return oxml;&lt;BR&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;And then you must alter your call functions as 
follows to call the above code:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;/**&lt;BR&gt;&amp;nbsp; * internal method for remote 
calls to the local server without use of the proxy script.&lt;BR&gt;&amp;nbsp; *&lt;BR&gt;&amp;nbsp; 
* @access&amp;nbsp;&amp;nbsp; public&lt;BR&gt;&amp;nbsp; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; 
array&amp;nbsp;&amp;nbsp;&amp;nbsp; call_arguments&amp;nbsp;&amp;nbsp;&amp;nbsp; array of arguments 
initially passed to cpaint.call()&lt;BR&gt;&amp;nbsp; * @return&amp;nbsp;&amp;nbsp; void&lt;BR&gt;&amp;nbsp; 
*/&lt;BR&gt;&amp;nbsp; this.call_direct = function( call_arguments ) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var 
url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 
call_arguments[0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var remote_method&amp;nbsp;&amp;nbsp; = 
call_arguments[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var querystring&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
= '';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var 
i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
= 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // correct link to 
self&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (url == 'SELF') 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = 
document.location.href;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
if (use_cpaint_api == true) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // backend uses 
cpaint api&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pass parameters to remote 
method&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i = 3; i &amp;lt; 
call_arguments.length; i++ ){&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;if( typeof( call_arguments[i] ) == 'object' 
&amp;amp;&amp;amp; call_arguments[i].tagName == 'FORM' 
)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;call_arguments[i] = 
this.serializeForm( call_arguments[i].elements, 0 
);&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring += 
'&amp;amp;cpaint_argument[]=' + 
encodeURIComponent(call_arguments[i]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add response type 
to querystring&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring += 
'&amp;amp;cpaint_response_type=' + response_type;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // build 
header&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode == 'GET') 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = url + '?cpaint_function=' 
+ remote_method + querystring;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring = 'cpaint_function=' 
+ remote_method + querystring;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // backend does not use cpaint 
api&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pass parameters to remote 
method&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 3; i &amp;lt; 
call_arguments.length; i++) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 
(i == 3) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring 
+= 
encodeURIComponent(call_arguments[i]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring += 
'&amp;amp;' + 
encodeURIComponent(call_arguments[i]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // build 
header&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode == 'GET') 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = url + 
querystring;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // open connection &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
get_connection_object();&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // open connection to remote 
target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug('opening connection to &quot;' + url + '&quot;', 
1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpobj.open(transfer_mode, url, 
async);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send &quot;urlencoded&quot; header 
if necessary (if POST)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode == &quot;POST&quot;) 
{&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
httpobj.setRequestHeader(&quot;Content-Type&quot;, 
&quot;application/x-www-form-urlencoded&quot;);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (cp_err) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('ERROR! POST cannot be 
completed due to incompatible browser.&amp;nbsp; Use GET as your request 
method.');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // callback handling for 
asynchronous calls&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpobj.onreadystatechange = 
callback;&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send 
content&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode == 'GET') 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpobj.send(null);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug('sending query: ' + querystring, 
1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
httpobj.send(querystring);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (async == false) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // manual callback handling for synchronized 
calls&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callback();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp; /**&lt;BR&gt;&amp;nbsp; * internal method 
for calls to remote servers through the proxy script.&lt;BR&gt;&amp;nbsp; *&lt;BR&gt;&amp;nbsp; * 
@access&amp;nbsp;&amp;nbsp; public&lt;BR&gt;&amp;nbsp; * @param&amp;nbsp;&amp;nbsp;&amp;nbsp; 
array&amp;nbsp;&amp;nbsp;&amp;nbsp; call_arguments&amp;nbsp;&amp;nbsp;&amp;nbsp; array of arguments 
passed to cpaint.call()&lt;BR&gt;&amp;nbsp; * @return&amp;nbsp;&amp;nbsp; void&lt;BR&gt;&amp;nbsp; 
*/&lt;BR&gt;&amp;nbsp; this.call_proxy = function(call_arguments) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
var proxyscript&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = proxy_url;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var 
url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 
call_arguments[0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var remote_method&amp;nbsp;&amp;nbsp; = 
call_arguments[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var querystring&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
= '';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var 
i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
= 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var 
querystring_argument_prefix = 'cpaint_argument[]=';&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pass parameters to remote 
method&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (use_cpaint_api == false) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // when not talking to a CPAINT backend, 
don't prefix arguments&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
querystring_argument_prefix = '';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 3; i &amp;lt; 
call_arguments.length; i++) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;if( typeof( call_arguments[i] ) == 'object' &amp;amp;&amp;amp; 
call_arguments[i].tagName == 'FORM' )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;call_arguments[i] = this.serializeForm( call_arguments[i].elements, 
0 );&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring += 
encodeURIComponent(querystring_argument_prefix + call_arguments[i] + 
'&amp;amp;');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (use_cpaint_api == true) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add remote function name to 
querystring&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring += 
encodeURIComponent('&amp;amp;cpaint_function=' + remote_method);&lt;BR&gt;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add response type to 
querystring&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring += 
encodeURIComponent('&amp;amp;cpaint_responsetype=' + 
response_type);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // build header&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode 
== 'GET') {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxyscript += 
'?cpaint_remote_url=' + encodeURIComponent(url) 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + '&amp;amp;cpaint_remote_query=' + 
querystring&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 
'&amp;amp;cpaint_remote_method=' + transfer_mode 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + '&amp;amp;cpaint_response_type=' + 
response_type;&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; querystring = 'cpaint_remote_url=' + 
encodeURIComponent(url)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 
'&amp;amp;cpaint_remote_query=' + 
querystring&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 
'&amp;amp;cpaint_remote_method=' + transfer_mode 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + '&amp;amp;cpaint_response_type=' + 
response_type;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // open 
connection&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get_connection_object();&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // open connection to remote 
target&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug('opening connection to proxy &quot;' + proxyscript 
+ '&quot;', 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpobj.open(transfer_mode, proxyscript, 
async);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send &quot;urlencoded&quot; header 
if necessary (if POST)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode == &quot;POST&quot;) 
{&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
httpobj.setRequestHeader(&quot;Content-Type&quot;, 
&quot;application/x-www-form-urlencoded&quot;);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (cp_err) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('[CPAINT Error] POST 
cannot be completed due to incompatible browser.&amp;nbsp; Use GET as your request 
method.');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // callback handling for 
asynchronous calls&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpobj.onreadystatechange = 
callback;&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send 
content&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (transfer_mode == 'GET') 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpobj.send(null);&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug('sending query: ' + querystring, 
1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
httpobj.send(querystring);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;EM&gt;&lt;/EM&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (async == false) 
{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // manual callback handling for synchronized 
calls&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callback();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}&lt;BR&gt;&amp;nbsp; }&lt;/EM&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Regards.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Alex&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;----- Original Message ----- &lt;/FONT&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;From: &quot;Dominique Stender&quot; &amp;lt;&lt;/FONT&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=837764&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;saloon12yrd@...&lt;/a&gt;&lt;FONT face=Arial size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;To: &amp;lt;&lt;/FONT&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=837764&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cpaint-developers@...&lt;/a&gt;&lt;FONT face=Arial size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Sent: Monday, September 12, 2005 3:18 
AM&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Subject: Re: [Cpaint-developers] Serializing form 
objects into PHP arrays&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;FONT face=Arial size=2&gt;Hi,&lt;BR&gt;&lt;BR&gt;don't worry about credit. We give full credit even 
on&lt;BR&gt;pointing out bugs. You will be mentioned in the doc&lt;BR&gt;comments if we 
include your code into CPAINT.&lt;BR&gt;&lt;BR&gt;If you like, post the code in sf.net as 
patch, we'll&lt;BR&gt;see how we can integrate it into CPAINT 2.0.2 
if&lt;BR&gt;possible.&lt;BR&gt;&lt;BR&gt;Thanks in advance,&lt;BR&gt;Dominique&lt;BR&gt;&lt;BR&gt;--- &quot;S. Alexandre 
M. Lemaire&quot; &amp;lt;&lt;/FONT&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=837764&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;saeven@...&lt;/a&gt;&lt;FONT face=Arial size=2&gt;&amp;gt;&lt;BR&gt;wrote:&lt;BR&gt;&lt;div class='shrinkable-quote'&gt;&lt;BR&gt;&amp;gt; CPaint..&lt;BR&gt;&amp;gt; 
&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I've readied a function which turns form 
objects&lt;BR&gt;&amp;gt; into PHP arrays through&lt;BR&gt;&amp;gt; CPaint.&amp;nbsp; It works to my 
liking, and I'd be glad to&lt;BR&gt;&amp;gt; share, since this would&lt;BR&gt;&amp;gt; be to 
everyone's benefit.&amp;nbsp; As a boon to your library&lt;BR&gt;&amp;gt; though, I trust 
that&lt;BR&gt;&amp;gt; credit would be given where due?&amp;nbsp; All I ask is that&lt;BR&gt;&amp;gt; 
the&lt;BR&gt;&amp;gt; @author function comment remain intact if possible.&lt;BR&gt;&amp;gt; &lt;BR&gt;&amp;gt; 
Here's an example print_r of what ends up at the PHP&lt;BR&gt;&amp;gt; function after 
the&lt;BR&gt;&amp;gt; cp.call, this was a form with two fields, email1,&lt;BR&gt;&amp;gt; email2, a 
checkbox&lt;BR&gt;&amp;gt; (unchecked, when checked it sends the value), and&lt;BR&gt;&amp;gt; 
lastly a select list which&lt;BR&gt;&amp;gt; was a multiple select, where mama and 123 
were&lt;BR&gt;&amp;gt; selected.&lt;BR&gt;&amp;gt; &lt;BR&gt;&amp;gt; array (&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; 'email1' 
=&amp;gt; 'some field value',&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; 'email2' =&amp;gt; 
'',&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; 'checkbox' =&amp;gt; '0',&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; 'listval' 
=&amp;gt;&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; array (&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 =&amp;gt; 
'mama',&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 =&amp;gt; '123',&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; 
),&lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; 'Submit' =&amp;gt; 'Save',&lt;BR&gt;&amp;gt; )&lt;BR&gt;&amp;gt; &lt;BR&gt;&amp;gt; 
Cordially.&lt;BR&gt;&amp;gt; Alexandre&lt;BR&gt;&amp;gt; &lt;BR&gt;&amp;gt; &lt;BR&gt;&amp;gt; 
&lt;BR&gt;&amp;gt;&lt;/div&gt;-------------------------------------------------------&lt;BR&gt;&amp;gt; 
SF.Net email is Sponsored by the Better Software&lt;BR&gt;&amp;gt; Conference &amp;amp; 
EXPO&lt;BR&gt;&amp;gt; September 19-22, 2005 * San Francisco, CA *&lt;BR&gt;&amp;gt; Development 
Lifecycle Practices&lt;BR&gt;&amp;gt; Agile &amp;amp; Plan-Driven Development * Managing 
Projects&lt;BR&gt;&amp;gt; &amp;amp; Teams * Testing &amp;amp; QA&lt;BR&gt;&amp;gt; Security * Process 
Improvement &amp;amp; Measurement *&lt;BR&gt;&amp;gt; &lt;/FONT&gt;&lt;A href=&quot;http://www.sqe.com/bsce5sf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&lt;FONT face=Arial size=2&gt;http://www.sqe.com/bsce5sf&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;FONT face=Arial size=2&gt;&amp;gt; 
_______________________________________________&lt;BR&gt;&amp;gt; Cpaint-developers 
mailing list&lt;BR&gt;&amp;gt; &lt;/FONT&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=837764&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollo