String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g, "");
};

String.prototype.remove = function(startIndex, count) {
  if (count == null)
    return this.substr(0, startIndex)
  else if (count >= 1)
    return this.substr(0, startIndex)
      + this.substr(startIndex + count, this.length - (startIndex + count))
  else
    return this;
};



function getFirstElement(delimitedList, delimiter) {
        // strip all leading delimiters
        while (delimitedList.indexOf(delimiter) == 0)
            delimitedList = delimitedList.remove(0, delimiter.Length).trim();

        if (delimitedList.length == 0)
            return "";

        // searching on a phrase
        if (delimiter == " " && delimitedList.substr(0, 1) == "'" && delimitedList.indexOf("'", 1) > -1)
            return delimitedList.substr(1, delimitedList.indexOf("'", 1) - 1);

        if (delimiter == " " && delimitedList.substr(0, 1) == "\"" && delimitedList.indexOf("\"", 1) > -1)
            return delimitedList.substr(1, delimitedList.indexOf("\"", 1) - 1);

        // only one element
        if (delimitedList.indexOf(delimiter) == -1)
            return delimitedList.trim();

        // return first element
        return delimitedList.split(delimiter[0])[0].trim();
      }

function removeFirstElement(delimitedList, delimiter) {
        var firstElement = getFirstElement(delimitedList, delimiter);

        // handle phrase delimiters
        if (delimiter == " " && delimitedList.substr(0, 1) == "'" && delimitedList.indexOf("'", 1) > -1)
            return delimitedList.remove(0, firstElement.length + 2).trim();

        if (delimiter == " " && delimitedList.substr(0, 1) == "\"" && delimitedList.indexOf("\"", 1) > -1)
            return delimitedList.remove(0, firstElement.length + 2).trim();

        while (delimitedList.indexOf(delimiter) == 0)
            delimitedList = delimitedList.remove(0, delimiter.length).trim();

        return delimitedList.remove(0, firstElement.length).trim();
    }
