Subversion Repositories cryptochat

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
<%     
2
 
3
function r(str)
4
{
5
        Response.write("<br>-"+str+"-<br>")
6
}
7
 
8
        function Sajax(debug_mode)
9
        {
10
                this.debug_mode = debug_mode||false;
11
                this.export_list = [];
12
                this.js_has_been_shown = false;
13
 
14
                this.handle_client_request = function()
15
                {
16
                        func_name = Request.QueryString("rs");
17
                        if(!func_name||String(func_name)=="undefined") return false
18
 
19
                        //bust cache
20
                        Response.AddHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT")
21
            //always modified
22
                        Response.AddHeader("Last-Modified", new Date().toGMTString().replace(/UTC/,"GMT"))
23
                        //HTTP/1.1
24
            Response.AddHeader("Cache-Control", "no-cache, must-revalidate")
25
                        //HTTP/1.0
26
            Response.AddHeader("Pragma", "no-cache")
27
 
28
 
29
 
30
                        if(this.export_list[func_name]=="undefined")
31
                        {
32
                                result = "-"+func_name+" is not callable";
33
                //if(this.debug_mode) Response.write("-"+func_name+" is not callable");
34
                        }
35
                        else
36
                        {
37
                                rsargs_raw = Request.QueryString("rsargs[]")
38
 
39
                rsargs = []
40
                for(rs_i=1;rs_i<=rsargs_raw.Count;rs_i++)
41
                {
42
                    rsargs[rs_i-1]=rsargs_raw(rs_i)
43
                }
44
 
45
               // if(this.debug_mode) Response.write("calling " + func_name + "(" + 
46
               //                                    rsargs.join(",")+")")
47
 
48
                eval_str = this.export_list[func_name]+"("+rsargs+")"
49
 
50
                try
51
                {
52
                    result = "+"+eval(eval_str);
53
                }
54
                catch(e)
55
                {
56
                    result = "-"+e.message+" (x_"+eval_str+")";
57
                }
58
                        }
59
 
60
            Response.write(result+"[sajax_result________end]]")
61
                        //exit()
62
                }
63
 
64
                this.show_common_js = function()
65
                {
66
                        js_debug_mode = this.debug_mode
67
                js_string_out = "      // remote scripting library\n" +
68
                                                        "      // (c) copyright 2005 modernmethod, inc\n" +
69
                                                        "      var rs_debug_mode = "+js_debug_mode+";\n" +
70
                                                        "      var rs_obj = false;\n" +
71
                                                        "      var rs_callback = false;\n" +
72
                                                        "      \n" +
73
                                                        "      function rs_debug(text) {\n" +
74
                                                        "         if (rs_debug_mode)\n" +
75
                                                        "            alert('RSD: ' + text)\n" +
76
                                                        "      }\n" +
77
                                                        "      \n" +
78
                                                        "       function rs_init_object() {\n" +
79
                                                        "          rs_debug('rs_init_object() called..')\n" +
80
                                                        "          \n" +
81
                                                        "          var A;\n" +
82
                                                        "         try {\n" +
83
                                                        "            A=new ActiveXObject('Msxml2.XMLHTTP');\n" +
84
                                                        "         } catch (e) {\n" +
85
                                                        "            try {\n" +
86
                                                        "               A=new ActiveXObject('Microsoft.XMLHTTP');\n" +
87
                                                        "            } catch (oc) {\n" +
88
                                                        "               A=null;\n" +
89
                                                        "            }\n" +
90
                                                        "         }\n" +
91
                                                        "         if(!A && typeof XMLHttpRequest != 'undefined')\n" +
92
                                                        "            A = new XMLHttpRequest();\n" +
93
                                                        "         if (!A)\n" +
94
                                                        "            rs_debug('Could not create connection object.');\n" +
95
                                                        "         return A;\n" +
96
                                                        "      }\n"
97
 
98
                        Response.write(js_string_out)
99
                }
100
 
101
                this.rs_esc=function(val)
102
                {
103
 
104
                }
105
 
106
                this.export_function = function()
107
                {
108
                        for(var i=0;i<arguments.length;i++)
109
                        {
110
                                this.export_list[arguments[i]] = arguments[i];
111
                        }
112
                }
113
 
114
                this.show_javascript = function()
115
                {
116
                        if(!this.js_has_been_shown)
117
                        {
118
                                this.show_common_js()
119
                                this.js_has_been_shown = true
120
                        }
121
 
122
                        for(func_name in this.export_list)
123
                        {
124
                                this.show_one(func_name);
125
                        }
126
                }
127
 
128
                this.rs_esc = function(val)
129
                {
130
                        var dqex = /\"/g //"
131
                        return val.replace(dqex, '\\\\"') 
132
                }
133
 
134
                this.show_one=function(func_name)
135
                {
136
                        var svr, srl, qsr;
137
 
138
                        svr = Request.ServerVariables("SERVER_NAME")
139
                        srl = Request.ServerVariables("URL")
140
                        qsr = Request.ServerVariables("QUERY_STRING");
141
                        uri = svr + srl + qsr;
142
 
143
                        if(!(uri.indexOf('?')>-1))
144
                        {
145
                                uri += "?rs=" +  escape(func_name)
146
                        }
147
                        else
148
                        {
149
                                uri += "&rs=" + escape(func_name)
150
                        }
151
 
152
                    escapeduri = this.rs_esc(uri)
153
                        js_string_out = "   // wrapper for "+func_name+"\n" +
154
                                                        "   function x_"+func_name+"(){\n" +
155
                                                        "      // count args; build URL\n" +
156
                                                        "         var i, x, n;\n" +
157
                                                        "         //var url = 'http://"+escapeduri+"', a = x_"+func_name+".arguments;\n" +
158
                                                        "         url = 'http://"+escapeduri+"', a = x_"+func_name+".arguments;\n" +
159
                                                        "         for (i = 0; i < a.length-1; i++)\n" +
160
                                                        "            url = url + '&rsargs[]=' + escape(a[i]);\n" +
161
                                                        "         x = rs_init_object();\n" +
162
                                                        "         x.open('GET', url, true);\n" +
163
                                                        "         x.onreadystatechange = function() {\n" +
164
                                                        "            if (x.readyState != 4)\n" +
165
                                                        "               return;\n" +
166
                                                        "            rs_debug('received ' + x.responseText);\n" +
167
                                                        "            \n" +
168
                                                        "            var status;\n" +
169
                                                        "            var data;\n" +
170
                                                        "            status = x.responseText.charAt(0);\n" +
171
                                                        "            data = x.responseText;\n" +
172
                            "            var pos = data.indexOf('[sajax_result________end]]');\n " +
173
                                                        "            if (status == '-'){\n" +
174
                                                        "               if("+this.debug_mode+"){alert('Error: ' + data.substring(1,pos));}}\n" +
175
                                                        "            else \n" +
176
                                                        "               a[a.length-1](data.substring(1,pos));\n" +
177
                                                        "         }\n" +
178
                                                        "         x.send(null);\n" +
179
                                                        "         rs_debug('x_"+func_name+" url = ' + url);\n" +
180
                                                        "         rs_debug('x_"+func_name+" waiting..');\n" +
181
                                                        "      }\n"
182
 
183
                        Response.write(js_string_out)
184
                }
185
        }
186
%>