bidiEngineFunction = function bidiEngineFunction(args) {
    var text = args.text;
    args.x;
    args.y;
    var options = args.options || {};
    args.mutex || {};
    options.lang;
    var tmpText = [];
    options.isInputVisual = typeof options.isInputVisual === "boolean" ? options.isInputVisual : true;
    bidiEngine.setOptions(options);

    if (Object.prototype.toString.call(text) === "[object Array]") {
      var i = 0;
      tmpText = [];

      for (i = 0; i < text.length; i += 1) {
        if (Object.prototype.toString.call(text[i]) === "[object Array]") {
          tmpText.push([bidiEngine.doBidiReorder(text[i][0]), text[i][1], text[i][2]]);
        } else {
          tmpText.push([bidiEngine.doBidiReorder(text[i])]);
        }
      }

      args.text = tmpText;
    } else {
      args.text = bidiEngine.doBidiReorder(text);
    }

    bidiEngine.setOptions({
      isInputVisual: true
    });
  }
@name setOptions( options )
@function
Sets options for Bidi conversion
@param {Object}:
- isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)
- isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)
- isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)
- isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)
- isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),