//
//  dynamics-tests-interface.js
//  scripts/developer/tests/dynamics/
//
//  Created by Seth Alves 2017-4-30
//  Copyright 2017 High Fidelity, Inc.
//
//  Distributed under the Apache License, Version 2.0.
//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//


"use strict";
/* globals $, EventBridge */

var parameters = {
    "lifetime":"integer"
};


function getQueryArgByName(name, url) {
    if (!url) {
        url = window.location.href;
    }
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}


function addCommandParameters(params) {
    // copy from html elements into an associative-array which will get passed (as JSON) through the EventBridge
    for (var parameterName in parameters) {
        if (parameters.hasOwnProperty(parameterName)) {
            var parameterType = parameters[parameterName];
            var strVal = $("#" + parameterName).val();
            if (parameterType == "integer") {
                params[parameterName] = parseInt(strVal);
            } else if (parameterType == "float") {
                params[parameterName] = parseFloat(strVal);
            } else {
                params[parameterName] = strVal;
            }
        }
    }
    return params;
}


$(document).ready(function() {
    // hook all buttons to EventBridge
    $(":button").each(function(index) {
        $(this).click(function() {
            EventBridge.emitWebEvent(JSON.stringify(addCommandParameters({ "dynamics-tests-command": this.id })));
        });
    });

    // copy parameters from query-args into elements
    for (var parameterName in parameters) {
        if (parameters.hasOwnProperty(parameterName)) {
            var val = getQueryArgByName(parameterName);
            if (val) {
                var parameterType = parameters[parameterName];
                if (parameterType == "integer") {
                    val = parseInt(val);
                } else if (parameterType == "float") {
                    val = parseFloat(val);
                }
                $("#" + parameterName).val(val.toString());
            }
        }
    }
});