/******************************************************************************* Form Javascript for adding form elements to pages. *******************************************************************************/ function Form(id, groupIds, locale) { this.id = id; this.groupIds = groupIds; // array of questions to ask this.locale = locale; this.ui = "http://accurator.nl/ui/generic#form"; this.formGroups = []; this.countries = null; // list of country objects this.node = null; this.twitterFieldAdded = false; this.tagsiteFieldAdded = false; this.socialFieldAdded = false; this.init(); } Form.prototype.init = function() { this.node = this.html(); this.removeFormEvents(); $(this.node).css("margin-top", "20px"); } Form.prototype.html = function() { return $.el.div({'class':'panel panel-primary', 'id':this.id}, [ $.el.div({'class':'panel-heading', 'id':'formHdr'}), $.el.div({'class':'panel-body'}, $.el.form({'class':'form-horizontal'}) ), $.el.div({'class':'panel-footer'}, [ $.el.button({'class':'btn btn-primary', 'id':'formBtnAdd'}), $.el.button({'class':'btn btn-link', 'id':'formBtnSkip'}) ]) ]); } Form.prototype.removeFormEvents = function() { // make sure no weird form events are triggered on keypress $(this.node).on('keyup keypress', function(e) { var keyCode = e.keyCode || e.which; if (keyCode === 13) { e.preventDefault(); return false; } }); } Form.prototype.addText = function() { // Just try adding the complete bunch and see what works var _form = this; return getLabels(this.locale, this.ui).then(function(labelData) { var labels = { formLblTwitterId: labelData.formLblTwitterId, formLblTagSiteOpen: labelData.formLblTagSiteOpen, formLblSocialSiteOpen: labelData.formLblSocialSiteOpen, formOptsEducation: labelData.formOptsEducation, formOptsInternet: labelData.formOptsInternet, formTxtDisclaimer: labelData.formTxtDisclaimer, formHdrDisclaimer: labelData.formHdrDisclaimer }; _form.addHeader(labelData); _form.addFormQuestions(labelData); _form.addButtons(labelData) }); } Form.prototype.addHeader = function(labelData) { if (this.id === "formInternet") { $(this.node).find("#formHdr").append( labelData.formHdrInternetUsage ); } if (this.id === "formPersonal") { $(this.node).find("#formHdr").append( labelData.formHdrPersonalInfo ); } } Form.prototype.addFormQuestions = function(labelData) { // create from group objects based on labels and ids for (var i=0; i