//var myObject = JSON.parse(aJSONtext);   string to obj
//var myJSONText = JSON.stringify(myObject);  obj to string
/*
    The global object JSON contains two methods.

    JSON.stringify(value) takes a JavaScript value and produces a JSON text.
    The value must not be cyclical.

    JSON.parse(text) takes a JSON text and produces a JavaScript value. It will
    return false if there is an error.
*/
var JSON = function () {
    var m = {
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        s = {
            'boolean': function (x) {
                return String(x);
            },
            number: function (x) {
                return isFinite(x) ? String(x) : 'null';
            },
            string: function (x) {
                if (/["\\\x00-\x1f]/.test(x)) {
                    x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                        var c = m[b];
                        if (c) {
                            return c;
                        }
                        c = b.charCodeAt();
                        return '\\u00' +
                            Math.floor(c / 16).toString(16) +
                            (c % 16).toString(16);
                    });
                }
                return '"' + x + '"';
            },
            object: function (x) {
                if (x) {
                    var a = [], b, f, i, l, v;
                    if (x instanceof Array) {
                        a[0] = '[';
                        l = x.length;
                        for (i = 0; i < l; i += 1) {
                            v = x[i];
                            f = s[typeof v];
                            if (f) {
                                v = f(v);
                                if (typeof v == 'string') {
                                    if (b) {
                                        a[a.length] = ',';
                                    }
                                    a[a.length] = v;
                                    b = true;
                                }
                            }
                        }
                        a[a.length] = ']';
                    } else if (typeof x.hasOwnProperty === 'function') {
                        a[0] = '{';
                        for (i in x) {
                            if (x.hasOwnProperty(i)) {
                                v = x[i];
                                f = s[typeof v];
                                if (f) {
                                    v = f(v);
                                    if (typeof v == 'string') {
                                        if (b) {
                                            a[a.length] = ',';
                                        }
                                        a.push(s.string(i), ':', v);
                                        b = true;
                                    }
                                }
                            }
                        }
                        a[a.length] = '}';
                    } else {
                        return;
                    }
                    return a.join('');
                }
                return 'null';
            }
        };
    return {
        copyright: '(c)2005 JSON.org',
        license: 'http://www.JSON.org/license.html',
/*
    Stringify a JavaScript value, producing a JSON text.
*/
        stringify: function (v) {
            var f = s[typeof v];
            if (f) {
                v = f(v);
                if (typeof v == 'string') {
                    return v;
                }
            }
            return null;
        },
/*
    Parse a JSON text, producing a JavaScript value.
    It returns false if there is a syntax error.
*/
        parse: function (text) {
            try {
                return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
                        text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
                    eval('(' + text + ')');
            } catch (e) {
                return false;
            }
        }
    };
}();

String.prototype.trim = function() {
    return this.replace(/^\s*/,'').replace(/\s*$/, ''); ;
}

function getXmlHttpRequest() {
     var xmlhttp = false
     //Mozila
	 if(window.XMLHttpRequest){
	   xmlhttp = new XMLHttpRequest()
	 } else {
	 //IE
	   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
	 }
	 
	 return xmlhttp;
} 

function getData(url,func){
     var xmlhttp = getXmlHttpRequest();
     var data;
	 xmlhttp.open("GET", url, true);
	 	 	 
	 xmlhttp.onreadystatechange = function() {
	    if (xmlhttp.readyState == 4) {
	       if (xmlhttp.status == 200) {                
             
              data = xmlhttp.responseText; 
              func = eval(func);    
              func(data.trim());

	       }
	       else
	       {
	            alet("GET Data Failed");
	       }
	     }
	    }
    xmlhttp.send(null);
    return false;
}

function getDataByPost(url,query,func){
     var xmlhttp = getXmlHttpRequest();
     var data;
	 xmlhttp.open("POST", url, true);
	 xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    	 
	 xmlhttp.onreadystatechange = function() {
	    if (xmlhttp.readyState == 4) {
	       if (xmlhttp.status == 200) {                
             
              data = xmlhttp.responseText; 
              func = eval(func);    
              func(data.trim());

	       }
	       else
	       {
	            alet("GET Data Failed");
	       }
	     }
	    }
    xmlhttp.send(query);
    return false;
}	

