mp.console = {};
mp.console.request_obj = function() {
    this.event = '';
    this.properties = {};
    return true;
};

mp.console.build_functions = function(json_obj) {
    var python = "metrics.track(";
    var js = "mpmetrics.track(";
    var php = "$metrics->track(";
    var params = [];
    var php_params = [];
    var error_msg = {};
    if (!json_obj.event) {
        error_msg["Event error"] = "Event is a required field.";
    }
    if (!json_obj.properties.token) {
        error_msg["Token error"] = "Token is a required field.";
    }
    // Return the errors if there are any
    for (var e in error_msg) {
        if (e) {
            return error_msg;
        }
    }
    var str = "'" + json_obj.event + "', ";
    for (var p in json_obj.properties){
        if (p) {
            params.push("'" + p + "' : '" + json_obj.properties[p] + "'");
            php_params.push("'" + p + "' => '" + json_obj.properties[p] + "'");
        }
    }
    params = params.join(", ");
    php_params = php_params.join(", ");
    python += str + "{" + params + "})";
    js += str + "{" + params + "});";
    php += str + "array(" + php_params + "));";
    
    return {'Javascript': $('<div/>').text(js).html(), 'Python': $('<div/>').text(python).html(), 'PHP': $('<div/>').text(php).html()};
};
    
mp.console.insert_messages = function(message_list) {
    var message = '';
    for (var m in message_list){
        if (m) {
            message += "<strong>" + m + "</strong>: <span class='console-mono'>" + message_list[m] + "</span><br/><br/>";
        }
    }
    $("#console-output").html(message);
};

mp.console.buildURL = function(form) { 
    var request = new mp.console.request_obj();
    
    var key = false;
    for (var f in form.elements) {
        if (f) {
            f = form.elements[f];
            if (f.value){
                if (f.name == "event") {
                    request[f.name] = f.value;
                }
                else if (f.name == "token") {
                    request.properties[f.name] = f.value;
                }
                else {
                    if (f.className == "api-console-key") {
                        key = f.value;
                    }
                    else if (f.className == "api-console-val" && key) {
                        request.properties[key] = f.value;
                    }
                }
            }
            else {
                key = false;
            }
        }
    }
    var url = "http://api.mixpanel.com/track/?data=";
    url += mpmetrics.base64_encode(mpmetrics.json_encode(request));
    if (form.ip.checked) { url += "&ip=1"; }
    if (form.img.checked) { url += "&img=1"; }
    var messages = mp.console.build_functions(request);
    if (url.length > 60) {
        var split_url = '';
        var i = 0;
        while (i <= url.length) {
            split_url += url.substring(i, i + 60) + "<br/>";
            i += 60;
        }
        url = split_url;
    }
    messages.URL = url;
    
    mp.console.insert_messages(messages);
};

