// JavaScript Document
function callMethodMod(e, f, b) {
    var c = !FB.Facebook.apiClient._session && !FB.Facebook.appSecret && e !== "fql.query";
    var d = generarJR(e, f);
    if (typeof b !== "function") {
        var g = new (FB.PendingResult);
        if (!c) {
            b._api = FB.Facebook.apiClient;
            b._addStep(d, g);
        } else {
            g.setPendingResult(null, FBIntern.Utility.createException("Invalid session state", FB.ApiErrorCode.invalid_session_key));
        }
        return g;
    } else {
        var a = b;
        if (!c) {
			//d.callback = FB.bind(function (i, h) {if (!h && (h = FB.Facebook.apiClient._checkError(i))) {i = null;}a(i, h);}, FB.Facebook.apiClient);
            d.callback = a;
			d.sendRequest = newSendReq;
            d.sendRequest();
        } else {
            a(null, FBIntern.Utility.createException("Invalid session state", FB.ApiErrorCode.invalid_session_key));
        }
        return null;
    }
}

function parseFBmod(b, a) {
    if (FB.Sys.isNullOrEmpty(b)) {
        return null;
    }
    if (a) {
        if (!FB.JSON._64bitIntRegex) {
            FB.JSON._64bitIntRegex = new RegExp("([^\\\\]\":)([0-9]{11,20})(,|}|])", "gm");
        }
        b = b.replace(FB.JSON._64bitIntRegex, "$1\"$2\"$3");
		b = b.replace('\\\'', "");
    }
    return FB.JSON.parse(b);
}

function newSendReq() {
    this._xdHttpClient.send(this._method, 
							this._url, 
							this._requestBody, 
							this._extraHeaders, 
							FB.bind(function (e) {
											try{
											console.info("todo ok, info: " + e.responseText);
											}catch(er1){
											}
											var d;
											try {
												d = parseFBmod(e.responseText, true);
											}catch(er){
												d = er;
												this.callback(null, d.message);
												return;
											}
											this.callback(d, null);
										},
									this)
							);
}	

function generarJR(i, j) {
    if (!j) {
        j = {};
    }
    var b = j;
    for (var g in b) {
        var d = {key: g, value: b[g]};
        var n = typeof d.value;
        if (n === "boolean") {
            j[d.key] = j[d.key] ? 1 : 0;
        } else if (n === "object") {
            j[d.key] = FB.JSON.serialize(d.value);
        }
    }
    j.method = i;
    j.api_key = FB.Facebook.apiClient._apiKey;
    j.format = "JSON";
    var a = (new Date).getMilliseconds();
    if (a === FB.Facebook.apiClient._lastCallId) {
        a = FB.Facebook.apiClient._lastCallId + 1;
    }
    FB.Facebook.apiClient._lastCallId = a;
    j.call_id = a;
    if (!j.v) {
        j.v = FB.Facebook.version;
    }
    if (FB.Facebook.apiClient._session) {
        FB.FBDebug.writeLine("session key = " + FB.Facebook.apiClient._session.session_key);
        j.session_key = FB.Facebook.apiClient._session.session_key;
    }
    if (FB.Facebook.appSecret) {
        j.sig = FB.Facebook.apiClient._generateSignature(j, FB.Facebook.appSecret);
    } else if (FB.Facebook.apiClient._session && FB.Facebook.apiClient._session.secret) {
        j.ss = 1;
        j.sig = FB.Facebook.apiClient._generateSignature(j, FB.Facebook.apiClient._session.secret);
    }
    var k = new (FB.StringBuilder);
    var c = j;
    for (var h in c) {
        var d = {key: h, value: c[h]};
        if (!k.get_isEmpty()) {
            k.append("&");
        }
        k.append(d.key + "=" + encodeURIComponent(d.value.toString()));
    }
    var m = FB.Facebook.apiClient._serverAddress;
    m += ("?method=" + j.method);
    var l = k.toString();
    var e = {};
    e['Content-Type'] = "application/x-www-form-urlencoded";
    var f = new (FB._xdJsonRequest)(FB.Facebook.apiClient._xdHttpClient, "POST", m, l, e);
    return f;
}