diff --git a/README.md b/README.md
index e71976a..9ca83b2 100644
--- a/README.md
+++ b/README.md
@@ -12,8 +12,9 @@ Features:
* Fork conversation based on answer
* Access previous answers to use on questions
* Messages that doesn't expect answer
+* Dynamically create new questions (like using an API)! [Demo](https://eduardotkoller.github.io/convForm/api_example.html) - please see the example code inside the html to understand how it works
-To build the chat, just wrap the form inside an element, and call .convform() on it's jquery selector. The function requires a placeholder for the user input.
+To build the chat, just wrap the form inside an element, and call .convform() on it's jquery selector.
Example:
@@ -120,7 +121,7 @@ You can add an options object as a parameter to the convForm function, containin
* ```typeInputUi```: 'input' or 'textarea', to choose the type of the html element to use as the user's input
* ```timeOutFirstQuestion```: time in ms as the duration for the load-up animation before the first question
* ```buttonClassStyle```: class for the user's submit answer button
-* ```eventList```: an object with functions to be called at specific times, the only supported at the moment is ```onSubmitForm```, and the function is called with the convState as a parameter.
+* ```eventList```: an object with functions to be called at specific times, the only supported at the moment are ```onSubmitForm``` (function is called with the convState as a parameter) and ```onInputSubmit``` (function called with the convState as the first parameter, and a ready callback function to print the next question as the second parameter)
* ```formIdName```: html id for the form
* ```inputIdName```: html id for the user's input
* ```loadSpinnerVisible```: class for the loadSpinner
diff --git a/api_example.html b/api_example.html
new file mode 100644
index 0000000..8d9e896
--- /dev/null
+++ b/api_example.html
@@ -0,0 +1,66 @@
+
+
+
');setTimeout(function(){$(this.wrapper).find("#messages").append(u),this.scrollDown()}.bind(this),100),setTimeout(function(){u.html(e),u.removeClass("typing").addClass("ready"),"select"==this.current.input.type&&this.printAnswers(this.current.input.answers,this.current.input.multiple),this.scrollDown(),this.current.input.hasOwnProperty("noAnswer")&&(this.next()?setTimeout(function(){this.printQuestion()}.bind(this),200):this.parameters.eventList.onSubmitForm(this)),$(this.wrapper).find(this.parameters.inputIdHashTagName).focus()}.bind(this),500)},ConvState.prototype.printAnswers=function(t,e){if(this.wrapper.find("div.options div.option").remove(),e){for(var r in t)if(t.hasOwnProperty(r)){var n=$('
'+t[r].text+"
").data("answer",t[r]).click(function(t){var e=this.current.input.selected.indexOf($(t.target).data("answer").value);-1==e?(this.current.input.selected.push($(t.target).data("answer").value),$(t.target).addClass("selected")):(this.current.input.selected.splice(e,1),$(t.target).removeClass("selected")),this.wrapper.find(this.parameters.inputIdHashTagName).removeClass("error"),this.wrapper.find(this.parameters.inputIdHashTagName).val(""),this.current.input.selected.length>0?this.wrapper.find("button.submit").addClass("glow"):this.wrapper.find("button.submit").removeClass("glow")}.bind(this));this.wrapper.find("div.options").append(n),$(window).trigger("dragreset")}}else for(var r in t)if(t.hasOwnProperty(r)){var n=$('
");$(this.wrapper).find("div.options div.option").remove();var n=$(this.wrapper).find("div.options").height();$(this.wrapper).find("#messages").css({paddingBottom:n}),$(this.wrapper).find(this.parameters.inputIdHashTagName).focus(),e.hasOwnProperty("callback")&&window[e.callback](this),setTimeout(function(){$(this.wrapper).find("#messages").append(r),this.scrollDown()}.bind(this),300),$(this.form).append(this.current.input.element),this.next()?setTimeout(function(){this.printQuestion()}.bind(this),300):this.parameters.eventList.onSubmitForm(this)},function(t){t.fn.convform=function(e){var r=this,n=t.extend(!0,{},{placeHolder:"Type Here",typeInputUi:"textarea",timeOutFirstQuestion:1200,buttonClassStyle:"icon2-arrow",eventList:{onSubmitForm:function(t){return console.log("completed"),t.form.submit(),!0}},formIdName:"convForm",inputIdName:"userInput",loadSpinnerVisible:"",buttonText:"▶"},e),i=t(this).find("input, select, textarea").map(function(){var e={};return t(this).attr("name")&&(e.name=t(this).attr("name")),t(this).attr("data-no-answer")&&(e.noAnswer=!0),t(this).attr("required")&&(e.required=!0),t(this).attr("type")&&(e.type=t(this).attr("type")),e.questions=t(this).attr("data-conv-question").split("|"),t(this).attr("data-pattern")&&(e.pattern=t(this).attr("data-pattern")),t(this).attr("data-callback")&&(e.callback=t(this).attr("data-callback")),t(this).is("select")&&(e.type="select",e.answers=t(this).find("option").map(function(){var e={};return e.text=t(this).text(),e.value=t(this).val(),t(this).attr("data-callback")&&(e.callback=t(this).attr("data-callback")),e}).get(),t(this).prop("multiple")?(e.multiple=!0,e.selected=[]):(e.multiple=!1,e.selected="")),t(this).parent("div[data-conv-case]").length&&(e.case=t(this).parent("div[data-conv-case]").attr("data-conv-case"),e.fork=t(this).parent("div[data-conv-case]").parent("div[data-conv-fork]").attr("data-conv-fork")),e.element=this,t(this).detach(),e}).get();if(i.length){var a,s=t(r).find("form").hide();switch(n.inputIdHashTagName="#"+n.inputIdName,n.typeInputUi){case"input":a=t('');break;case"textarea":a=t('');break;default:return console.log("typeInputUi must be input or textarea"),!1}t(r).append('
'),t(r).append(a);var p=new SingleConvState(i[0]),u=new ConvState(r,p,s,n);for(var o in i)0!=o&&i.hasOwnProperty(o)&&(p.next=new SingleConvState(i[o]),p=p.next);return setTimeout(function(){t.when(t("div.spinLoader").addClass("hidden")).done(function(){u.printQuestion()})},n.timeOutFirstQuestion),t(a).find(n.inputIdHashTagName).keypress(function(e){if(13==e.which){var r=t(this).val();if(e.preventDefault(),"select"!=u.current.input.type||u.current.input.multiple)if("select"==u.current.input.type&&u.current.input.multiple)if(""!=r.trim()){var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?-1==u.current.input.selected.indexOf(i[0].value)?(u.current.input.selected.push(i[0].value),u.wrapper.find(n.inputIdHashTagName).val("")):u.wrapper.find(n.inputIdHashTagName).val(""):u.wrapper.find(n.inputIdHashTagName).addClass("error")}else u.current.input.selected.length&&t(this).parent("form").submit();else""==r.trim()||u.wrapper.find(n.inputIdHashTagName).hasClass("error")?t(u.wrapper).find(n.inputIdHashTagName).focus():t(this).parent("form").submit();else if(u.current.input.required)u.wrapper.find("#userInputBot").addClass("error");else{var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?(u.current.input.selected=i[0],t(this).parent("form").submit()):u.wrapper.find(n.inputIdHashTagName).addClass("error")}}autosize.update(t(u.wrapper).find(n.inputIdHashTagName))}).on("input",function(e){if("select"==u.current.input.type){var r=t(this).val(),i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?(u.wrapper.find(n.inputIdHashTagName).removeClass("error"),u.printAnswers(i,u.current.input.multiple)):u.wrapper.find(n.inputIdHashTagName).addClass("error")}else if(u.current.input.hasOwnProperty("pattern")){var a=new RegExp(u.current.input.pattern,"i");a.test(t(this).val())?u.wrapper.find(n.inputIdHashTagName).removeClass("error"):u.wrapper.find(n.inputIdHashTagName).addClass("error")}}),t(a).find("button.submit").click(function(e){var r=t(u.wrapper).find(n.inputIdHashTagName).val();if(e.preventDefault(),"select"!=u.current.input.type||u.current.input.multiple)if("select"==u.current.input.type&&u.current.input.multiple){if(u.current.input.required)return!1;if(""!=r.trim()&&r!=n.placeHolder){var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?-1==u.current.input.selected.indexOf(i[0].value)?(u.current.input.selected.push(i[0].value),u.wrapper.find(n.inputIdHashTagName).val("")):u.wrapper.find(n.inputIdHashTagName).val(""):u.wrapper.find(n.inputIdHashTagName).addClass("error")}else u.current.input.selected.length&&(t(this).removeClass("glow"),t(this).parent("form").submit())}else""==r.trim()||u.wrapper.find(n.inputIdHashTagName).hasClass("error")?t(u.wrapper).find(n.inputIdHashTagName).focus():t(this).parent("form").submit();else{if(u.current.input.required)return!1;r==n.placeHolder&&(r="");var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?(u.current.input.selected=i[0],t(this).parent("form").submit()):u.wrapper.find(n.inputIdHashTagName).addClass("error")}autosize.update(t(u.wrapper).find(n.inputIdHashTagName))}),t(a).submit(function(e){e.preventDefault();var r=t(this).find(n.inputIdHashTagName).val();t(this).find(n.inputIdHashTagName).val(""),"select"==u.current.input.type?u.current.input.multiple?u.answerWith(u.current.input.selected.join(", "),u.current.input.selected):u.answerWith(u.current.input.selected.text,u.current.input.selected):u.answerWith(r,r)}),"function"==typeof autosize&&($textarea=t(u.wrapper).find(n.inputIdHashTagName),autosize($textarea)),u}return!1}}(jQuery),$(function(){var t=$(".conv-form-wrapper").convform();console.log(t)});
\ No newline at end of file
+function SingleConvState(t){return this.input=t,this.answer="",this.next=!1,this}function ConvState(t,e,r,n){this.form=r,this.wrapper=t,this.current=e,this.answers={},this.parameters=n,this.scrollDown=function(){$(this.wrapper).find("#messages").stop().animate({scrollTop:$(this.wrapper).find("#messages")[0].scrollHeight},600)}.bind(this)}SingleConvState.prototype.hasNext=function(){return this.next},ConvState.prototype.newState=function(t){var e=$.extend(!0,{},{name:"",noAnswer:!1,required:!0,questions:["You forgot the question!"],type:"text",multiple:!1,selected:"",answers:[]},t);return e.element=$(''),new SingleConvState(e)},ConvState.prototype.next=function(){if(this.current.input.hasOwnProperty("callback")&&window[this.current.input.callback](this),this.current.hasNext()){if(this.current=this.current.next,this.current.input.hasOwnProperty("fork")&&this.current.input.hasOwnProperty("case")){if(this.answers.hasOwnProperty(this.current.input.fork)&&this.answers[this.current.input.fork].value!=this.current.input.case)return this.next();if(!this.answers.hasOwnProperty(this.current.input.fork))return this.next()}return!0}return!1},ConvState.prototype.printQuestion=function(){var t=this.current.input.questions,e=t[Math.floor(Math.random()*t.length)],r=e.match(/\{(.*?)\}(\:(\d)*)?/g);for(var n in r)if(r.hasOwnProperty(n)){var i=r[n].replace(/\{|\}/g,""),a=i,s=!1;if(-1!=i.indexOf(":")&&(a=a.split(":")[0],s=i.split(":")[1]),!1!==s){var p=this.answers[a].text.split(" ");e=p.length>=s?e.replace(r[n],p[s]):e.replace(r[n],this.answers[a].text)}else e=e.replace(r[n],this.answers[a].text)}var u=$(this.wrapper).find(".message.typing");setTimeout(function(){u.html(e),u.removeClass("typing").addClass("ready"),"select"==this.current.input.type&&this.printAnswers(this.current.input.answers,this.current.input.multiple),this.scrollDown(),this.current.input.hasOwnProperty("noAnswer")&&!0===this.current.input.noAnswer&&(this.next()?setTimeout(function(){var t=$('
');$(this.wrapper).find("#messages").append(t),this.scrollDown(),this.printQuestion()}.bind(this),200):this.parameters.eventList.onSubmitForm(this)),$(this.wrapper).find(this.parameters.inputIdHashTagName).focus()}.bind(this),500)},ConvState.prototype.printAnswers=function(t,e){if(this.wrapper.find("div.options div.option").remove(),e){for(var r in t)if(t.hasOwnProperty(r)){var n=$('
'+t[r].text+"
").data("answer",t[r]).click(function(t){var e=this.current.input.selected.indexOf($(t.target).data("answer").value);-1==e?(this.current.input.selected.push($(t.target).data("answer").value),$(t.target).addClass("selected")):(this.current.input.selected.splice(e,1),$(t.target).removeClass("selected")),this.wrapper.find(this.parameters.inputIdHashTagName).removeClass("error"),this.wrapper.find(this.parameters.inputIdHashTagName).val(""),this.current.input.selected.length>0?this.wrapper.find("button.submit").addClass("glow"):this.wrapper.find("button.submit").removeClass("glow")}.bind(this));this.wrapper.find("div.options").append(n),$(window).trigger("dragreset")}}else for(var r in t)if(t.hasOwnProperty(r)){var n=$('
');setTimeout(function(){$(this.wrapper).find("#messages").append(i),this.scrollDown()}.bind(this),150),this.parameters.eventList.onInputSubmit(this,function(){this.next()?setTimeout(function(){this.printQuestion()}.bind(this),300):this.parameters.eventList.onSubmitForm(this)}.bind(this))},function(t){t.fn.convform=function(e){var r=this;t(this).addClass("conv-form-wrapper");var n=t.extend(!0,{},{placeHolder:"Type Here",typeInputUi:"textarea",timeOutFirstQuestion:1200,buttonClassStyle:"icon2-arrow",eventList:{onSubmitForm:function(t){return console.log("completed"),t.form.submit(),!0},onInputSubmit:function(t,e){e()}},formIdName:"convForm",inputIdName:"userInput",loadSpinnerVisible:"",buttonText:"▶"},e),i=t(this).find("input, select, textarea").map(function(){var e={};return t(this).attr("name")&&(e.name=t(this).attr("name")),t(this).attr("data-no-answer")&&(e.noAnswer=!0),t(this).attr("required")&&(e.required=!0),t(this).attr("type")&&(e.type=t(this).attr("type")),e.questions=t(this).attr("data-conv-question").split("|"),t(this).attr("data-pattern")&&(e.pattern=t(this).attr("data-pattern")),t(this).attr("data-callback")&&(e.callback=t(this).attr("data-callback")),t(this).is("select")&&(e.type="select",e.answers=t(this).find("option").map(function(){var e={};return e.text=t(this).text(),e.value=t(this).val(),t(this).attr("data-callback")&&(e.callback=t(this).attr("data-callback")),e}).get(),t(this).prop("multiple")?(e.multiple=!0,e.selected=[]):(e.multiple=!1,e.selected="")),t(this).parent("div[data-conv-case]").length&&(e.case=t(this).parent("div[data-conv-case]").attr("data-conv-case"),e.fork=t(this).parent("div[data-conv-case]").parent("div[data-conv-fork]").attr("data-conv-fork")),e.element=this,t(this).detach(),e}).get();if(i.length){var a,s=t(r).find("form").hide();switch(n.inputIdHashTagName="#"+n.inputIdName,n.typeInputUi){case"input":a=t('');break;case"textarea":a=t('');break;default:return console.log("typeInputUi must be input or textarea"),!1}t(r).append('
'),t(r).append(a);var p=new SingleConvState(i[0]),u=new ConvState(r,p,s,n);for(var o in i)0!=o&&i.hasOwnProperty(o)&&(p.next=new SingleConvState(i[o]),p=p.next);return setTimeout(function(){t.when(t("div.spinLoader").addClass("hidden")).done(function(){var e=t('
');t(u.wrapper).find("#messages").append(e),u.scrollDown(),u.printQuestion()})},n.timeOutFirstQuestion),t(a).find(n.inputIdHashTagName).keypress(function(e){if(13==e.which){var r=t(this).val();if(e.preventDefault(),"select"!=u.current.input.type||u.current.input.multiple)if("select"==u.current.input.type&&u.current.input.multiple)if(""!=r.trim()){var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?-1==u.current.input.selected.indexOf(i[0].value)?(u.current.input.selected.push(i[0].value),u.wrapper.find(n.inputIdHashTagName).val("")):u.wrapper.find(n.inputIdHashTagName).val(""):u.wrapper.find(n.inputIdHashTagName).addClass("error")}else u.current.input.selected.length&&t(this).parent("form").submit();else""==r.trim()||u.wrapper.find(n.inputIdHashTagName).hasClass("error")?t(u.wrapper).find(n.inputIdHashTagName).focus():t(this).parent("form").submit();else if(u.current.input.required)u.wrapper.find("#userInputBot").addClass("error");else{var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?(u.current.input.selected=i[0],t(this).parent("form").submit()):u.wrapper.find(n.inputIdHashTagName).addClass("error")}}autosize.update(t(u.wrapper).find(n.inputIdHashTagName))}).on("input",function(e){if("select"==u.current.input.type){var r=t(this).val(),i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?(u.wrapper.find(n.inputIdHashTagName).removeClass("error"),u.printAnswers(i,u.current.input.multiple)):u.wrapper.find(n.inputIdHashTagName).addClass("error")}else if(u.current.input.hasOwnProperty("pattern")){var a=new RegExp(u.current.input.pattern,"i");a.test(t(this).val())?u.wrapper.find(n.inputIdHashTagName).removeClass("error"):u.wrapper.find(n.inputIdHashTagName).addClass("error")}}),t(a).find("button.submit").click(function(e){var r=t(u.wrapper).find(n.inputIdHashTagName).val();if(e.preventDefault(),"select"!=u.current.input.type||u.current.input.multiple)if("select"==u.current.input.type&&u.current.input.multiple){if(u.current.input.required)return!1;if(""!=r.trim()&&r!=n.placeHolder){var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?-1==u.current.input.selected.indexOf(i[0].value)?(u.current.input.selected.push(i[0].value),u.wrapper.find(n.inputIdHashTagName).val("")):u.wrapper.find(n.inputIdHashTagName).val(""):u.wrapper.find(n.inputIdHashTagName).addClass("error")}else u.current.input.selected.length&&(t(this).removeClass("glow"),t(this).parent("form").submit())}else""==r.trim()||u.wrapper.find(n.inputIdHashTagName).hasClass("error")?t(u.wrapper).find(n.inputIdHashTagName).focus():t(this).parent("form").submit();else{if(u.current.input.required)return!1;r==n.placeHolder&&(r="");var i=u.current.input.answers.filter(function(t){return-1!=t.text.toLowerCase().indexOf(r.toLowerCase())});i.length?(u.current.input.selected=i[0],t(this).parent("form").submit()):u.wrapper.find(n.inputIdHashTagName).addClass("error")}autosize.update(t(u.wrapper).find(n.inputIdHashTagName))}),t(a).submit(function(e){e.preventDefault();var r=t(this).find(n.inputIdHashTagName).val();t(this).find(n.inputIdHashTagName).val(""),"select"==u.current.input.type?u.current.input.multiple?u.answerWith(u.current.input.selected.join(", "),u.current.input.selected):u.answerWith(u.current.input.selected.text,u.current.input.selected):u.answerWith(r,r)}),"function"==typeof autosize&&($textarea=t(u.wrapper).find(n.inputIdHashTagName),autosize($textarea)),u}return!1}}(jQuery);
\ No newline at end of file
diff --git a/index.html b/index.html
index ae4150c..b03db6d 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@