FIRSTCLASS.util.FormParser = { _defines: { attrs: { required: 0x01, multiline: 0x02, readonly: 0x04 } }, _fieldTypes: { 0: { name: "ftText", template:"string", outputtype: "string", fcft: "STRING", type:0}, 3: { name: "ftFloat", template: "string", outputtype: "float", validator: function(value) { return FIRSTCLASS.util.FormParser.validators.isNumeric(value, true); }, fcft: "STRING", type: 3 }, 5: { name: "ftItemRef", template:"itemref", outputtype: "attachment", fcft: "LONG", type:5}, 6: { name: "ftUserRef", template:"userref", outputtype: "cid", fcft: "LONG", type:6}, 7: { name: "ftGuideText", template:"guide", type: 7}, 8: { name: "ftNumber", template:"string", outputtype: "number", validator: function(value) { return FIRSTCLASS.util.FormParser.validators.isNumeric(value, false); }, fcft: "LONG", type: 8 }, 9: { name: "ftButton", template: "button", outputtype: "command", fcft: "BUTTON", type: 9 }, 10: { name: "ftSpacer", template: "spacer", type: 10 }, 11: { name: "ftBeginGroup", template: "groupbegin", type: 11 }, 12: { name: "ftEndGroup", template: "groupend", type: 12 }, 13: { name: "ftItemRef", template:"itemref", outputtype: "attachment", fcft: "LONG", type:5 }, 16: { name: "ftDate", template: "date", outputtype: "date", fcft: "LONG", type: 16 }, 32: { name: "ftCheckBox", template: "checkbox", outputtype: "number", fcft: "SHORT", type: 32 } }, validators: { isNumeric: function(value, allowfloat) { var vchars = "0123456789"; if (allowfloat) { vchars += "."; } var rc = true; var tmpchar; for (var i = 0; i < value.length && rc; i++) { tmpchar = value.charAt(i); rc = (vchars.indexOf(tmpchar) != -1); } return rc; } }, _parseEnumStr: function(enumstr) { var parts = enumstr.split(";"); var parts2 = false; var rc = []; var tmp = {}; for (var i in parts) { parts2 = parts[i].split("="); tmp = {label:parts2[0]}; if (parts2.length == 1) { tmp.val = parts2[0]; } else { tmp.val = parts2[1]; } rc.push(tmp); } return rc; }, _templates: { _getlabel: function(field) { if (field.scfn) { return ""; } else { return ""; } }, _getID: function(field, prefix) { if (!prefix) { prefix = "fcFormInput"; } return prefix + field.messageid + "." + field.scfi + "." + field.subindex; }, _getFieldID: function(field, type) { return "FieldID:"+ field.scfi + "." + field.subindex + "=" + type.fcft; }, _getFieldBaseAttrs: function(field, type) { var tmp = " name='" + this._getFieldID(field, type) + "' id='"+ this._getID(field) + "'"; if (field.scfa && FIRSTCLASS.lang.binary.AND(field.scfa,FIRSTCLASS.util.FormParser._defines.attrs.readonly)) { tmp += " readonly='readonly'"; tmp += " disabled='disabled'"; } if (field.scfa && FIRSTCLASS.lang.binary.AND(field.scfa,FIRSTCLASS.util.FormParser._defines.attrs.required)) { tmp += " required='1'"; } if (field.scfx) { if (type.fcft == "STRING") { var maxcols = 60; var cols = field.scfx; var rows = 1; if (field.scfx > maxcols) { rows = Math.floor(field.scfx/maxcols); cols = maxcols; } tmp += " maxlength='" + field.scfx + "' cols='" + cols + "' rows='" + rows + "'"; } else { tmp += " maxlength='" + field.scfx + "' size='" + field.scfx + "'"; } } if (type.type) { tmp += " fieldtype='"+ type.type+"'"; } if (field.messageid) { tmp += " messageid='" + field.messageid + "'"; } tmp += " "; return tmp; }, button: function(field, value, type) { var tmp = ""; tmp += ""; return {html:tmp}; }, date: function(field, value, type) { var tmp2 = ""; if (typeof value != "undefined" && typeof value[field.subindex] != "undefined") { tmp2 = value[field.subindex].value; } if (typeof tmp2 == "undefined") { tmp2 = ""; } var style = ''; var tmp = [this._getlabel(field)]; if (field.scfa && FIRSTCLASS.lang.binary.AND(field.scfa,FIRSTCLASS.util.FormParser._defines.attrs.readonly)) { tmp.push("" + tmp2 + ""); } else { style = 'width:200px;height:200px;'; tmp.push("" + "
"); } tmp.push(""); return {html:"
" + tmp.join("")}; }, enumerated: function(field, value, type) { var values = FIRSTCLASS.util.FormParser._parseEnumStr(field.scel); var html = [this._getlabel(field), ""); return {html:html.join("")}; }, groupbegin: function(field, value, type, attrs) { if (!attrs) { attrs = ""; } var tmp = ["

", field.scfn, "

"]; return {html: tmp.join("") }; }, groupend: function(field, value, type) { return {html:"
"}; }, itemref: function(field, value, type) { var repositories = FIRSTCLASS.apps.Integration.getRepositories(), html = [], haspreview = false, i, repository; html.push("
"); for (i in repositories) { repository = repositories[i]; if (repository.capabilities.browse) { html.push(""); } } html.push(""); if (value && value.length > 0) { html.push(""); html.push(""); } html.push("
Attachments:
"); if (haspreview) { html.push("
select an item to preview
"); } html.push("
"); return {html:html.join("")}; }, spacer: function(field, value, type) { return {html: "
"}; }, string: function(field, value, type) { var tmp = this._getlabel(field), tmp2; var classname = 'textinput'; if (field.scfa && FIRSTCLASS.lang.binary.AND(field.scfa,FIRSTCLASS.util.FormParser._defines.attrs.readonly)) { classname += ' readonly'; } if (field.scfx) { tmp += ""; } else { tmp += ""; } return {html:tmp}; }, userref: function(field, value, type) { return {html:"
FIXME: type userref not yet implemented
"}; }, repeat: function(field, value, type) { var tmpfield = {}, i, html = []; html.push(this.groupbegin(field, false, false, "id='fcFormGroup"+ field.scfi + "'").html); FIRSTCLASS.lang.deepCopyObjData(tmpfield, field); var min = 1; if (field.scrm) { min = field.scrm; } var max = field.scrx; var def = 1; if (field.scrd) { def = field.scrd; } for (i in value) { if (parseInt(i, 10) >= def) { def = parseInt(i, 10)+1; } } if (field.numactiverepeats) { def = field.numactiverepeats; } else { field.numactiverepeats = def; } for (i = 0; i < def; i++) { var tmp; tmpfield.subindex = i; tmpfield.scfn = false; var data = value; if (tmpfield.scel) { tmp = this.enumerated(tmpfield, data, type); } else if (this[type.template]) { tmp = this[type.template](tmpfield, data, type); } html.push(tmp.html); // html.push("
"); } for (i in value) { if (parseInt(i, 10) >= def) { tmpfield.subindex = parseInt(i, 10); html.push(""); } } if (!(field.scfa && FIRSTCLASS.lang.binary.AND(field.scfa,FIRSTCLASS.util.FormParser._defines.attrs.readonly))) { html.push("
"); if (def > min) { html.push("- "); } if (!max || max > def) { html.push("+"); } html.push("
"); } html.push(this.groupend(field).html); return {html:html.join("")}; } }, generateFieldHTML: function(field, data) { var tmp = ""; var type = 0; if (field.scft) { type = field.scft; } type = this._fieldTypes[type]; if (!type) { type = this._fieldTypes[0]; } if (!field.subindex) { field.subindex = 0; } if (typeof data != "object" && typeof data != "undefined") { data = {0:data}; } if (typeof data == "undefined") { data = []; } if (field.scrd || field.scrm || field.scrx) { tmp = this._templates.repeat(field, data, type); } else if (field.scel) { tmp = this._templates.enumerated(field, data, type); } else if (this._templates[type.template]) { tmp = this._templates[type.template](field, data, type); } return tmp; }, generateForm: function(item, containeruri) { var action = ""; if (item.objurl) { action = FIRSTCLASS.lang.ensureSlashUrl(item.objurl) + "__FormEdit/__FormSave?Templates=JS&Clear=0&Close=-1&BFCloseImmediate=1&JSON=2&ResponseType=Template"; } var html = ["
"]; html.push(""); html.push(""); html.push(""); html.push(""); var hasbuttons = false; if (item.form) { var data = {}; var field = {}; var fielddef = {}; for (var i in item.form) { if (typeof item.form[i].scfi != "undefined") { field = item.form[i]; if (field.scft == 9) { hasbuttons = true; } field.messageid = item.messageid; data = item.bag[field.scfi]; if ((field.scft == "13" || field.scft == "5") && item.attachments) { data = item.attachments; } fielddef = this.generateFieldHTML(field, data); html.push(fielddef.html); // html.push("
"); } } } html.push("
"); html.push("

Current Limitations:

    "); html.push("
  • dates are stored as strings
  • "); html.push("
  • field type userref is unimplemented
  • "); html.push("

"); if (!hasbuttons) { html.push(""); } html.push(""); html.push("
"); return {html: html.join("")}; }, setForm: function(container, item, containeruri) { var form = this.generateForm(item, containeruri); container.innerHTML = form.html; this._postRenderForm(container, item); this._dialog.center(); }, _postRenderForm: function(form, item) { var i; if (item.calendars) { this.prepareFormToSave(form,item, true); for (i in item.calendars) { if (item.calendars[i]) { item.calendars[i].destroy(); item.calendars[i] = false; } } } var calendars = YAHOO.util.Dom.getElementsByClassName('fcCalendarInput', false, form); var tmpcalendars = []; for (i in calendars) { var fcfieldid = calendars[i].id.replace('fcCalendarInput', 'fcFormInput'); var fcfield = $(fcfieldid); var calcfg = {navigator: true}; if (fcfield.value != "") { var dts = Date.parse(fcfield.value); var dt = false; if (!isNaN(dts)) { dt = new Date(dts); } else { var tm = parseInt(fcfield.value, 10); if (!isNaN(tm)) { dt = new Date(); dt.setTime(tm*1000); //dt = FIRSTCLASS.lang.fcTimeToDate(tm); if (!dt) { dt = false; } } } if (dt) { calcfg["selected"] = (dt.getUTCMonth()+1) + "/" + dt.getUTCDate() + "/" + dt.getUTCFullYear(); } else { dt = new Date(); } calcfg.pagedate = (dt.getUTCMonth()+1) + "/" + dt.getUTCFullYear(); } var cal = new YAHOO.widget.Calendar(calendars[i], calcfg); cal.render(); cal.__fcFieldID = fcfieldid; tmpcalendars.push(cal); } item.calendars = tmpcalendars; }, addRepeat: function(item, form, fieldid) { var field = false; for (var i in item.form) { if(item.form[i].scfi == fieldid) { field = item.form[i]; break; } } if (field) { var fieldbag = item.bag[fieldid]; if (field.numactiverepeats) { field.numactiverepeats++; } else { field.numactiverepeats = field.scrd + 1; } var group = this._updateFormGroup(fieldid, field, fieldbag, form, item); } }, removeRepeat: function(item, form, fieldid) { var field = false; for (var i in item.form) { if(item.form[i].scfi == fieldid) { field = item.form[i]; break; } } if (field) { var fieldbag = item.bag[fieldid]; if (field.numactiverepeats) { field.numactiverepeats--; } else { field.numactiverepeats = field.scrd - 1; } var group = this._updateFormGroup(fieldid, field, fieldbag, form, item); } }, handleButtonPress: function(item, form, fieldid, request) { var field = false; for (var i in item.form) { if(item.form[i].scfi == fieldid) { field = item.form[i]; break; } } if (field) { var hiddenfield = $(this._templates._getID(field)); if (field.scfc) { hiddenfield.value = field.scfc; } else { hiddenfield.value = 1; } } this.submitForm(request); }, _updateFormGroup: function(fieldid, field, fieldbag, form, item) { var group = $('fcFormGroup' + fieldid); var tempfieldbag = {}; FIRSTCLASS.lang.deepCopyObjData(tempfieldbag, fieldbag); var tmpfield = {}; FIRSTCLASS.lang.deepCopyObjData(tmpfield, field); var type = 0; if (field.scft) { type = field.scft; } type = this._fieldTypes[type]; if (!type) { type = this._fieldTypes[0]; } for (var i in tempfieldbag) { tmpfield.subindex = i; var name = this._templates._getFieldID(tmpfield, type); var el = form.elements.namedItem(name); if (el) { tempfieldbag[i] = el.value; } } var newhtml = this.generateFieldHTML(field, tempfieldbag); var tmp = document.createElement("form"); tmp.innerHTML = newhtml.html; group.innerHTML = tmp.firstChild.innerHTML; this._postRenderForm(form, item); }, prepareFormToSave: function(form, formJSON, dataonly) { var el = false, i, j; var checkboxes = []; var elementstoremove = []; for (i in form.elements) { el = form.elements[i]; if (el.type == "checkbox") { checkboxes.push(el); } if (el.attributes && el.attributes.getNamedItem('required')) { if (el.value == "") { el.focus(); return false; } } if (el.attributes && el.attributes.getNamedItem('fieldtype')) { var val = el.attributes.getNamedItem('fieldtype').value; var type = this._fieldTypes[val]; if (type && type.validator) { if (!type.validator(el.value)) { el.focus(); return false; } } } if ((el.type == "button" && el.attributes && el.attributes.getNamedItem('fcid') && el.attributes.getNamedItem('fcid').value == 'formbutton') || (el.type=='hidden' && el.value === 0 && el.attributes && el.attributes.getNamedItem('fcid') && el.attributes.getNamedItem('fcid').value == 'button')) { elementstoremove.push(el); } } for (i in formJSON.calendars) { var cal = formJSON.calendars[i]; var arrDates = cal.getSelectedDates(); for (j = 0; j < arrDates.length; j++) { var date = arrDates[j]; var id = cal.__fcFieldID; var field = $(id); field.value = FIRSTCLASS.lang.dateToFCTime(date); } } if (dataonly) { return true; } for (i in checkboxes) { el = checkboxes[i]; var value = 0; if (el.checked) { value = 1; } el.type = "hidden"; el.value = value; } for (i in elementstoremove) { el = elementstoremove[i]; el.parentNode.removeChild(el); } return true; }, showForm: function(cfg) {/*baseUri, row, box*/ if (!this._dialog) { this._dialog = new YAHOO.widget.SimpleDialog("myFormDialogBox", { width: "600px", /*effect:{ effect: YAHOO.widget.ContainerEffect.FADE, duration: 0.25 }, */ fixedcenter: true, modal: false, visible: true, draggable: true, close: true, zIndex: 500 }); this._dialog.render(document.body); } this._dialog.show(); var box = this._dialog.body; YAHOO.util.Dom.removeClass(box, 'fcHidden'); YAHOO.util.Dom.addClass(box, 'dynamicform'); this._dialog.setHeader(cfg.row.workflowname); // var box = $('myFormDialogBox'); YAHOO.util.Dom.setStyle(box, 'height', '500px'); YAHOO.util.Dom.setStyle(box, 'overflow-y', 'auto'); YAHOO.util.Dom.setStyle(box, 'overflow-x', 'hidden'); YAHOO.util.Dom.setStyle(box, 'background-color', 'FFFFFF'); var request = {baseUri: cfg.baseUri, row: cfg.row, box: box}; request.box.innerHTML = "
"; request.itemUri = cfg.baseUri + "/" + cfg.row.uri; request.requestUri = request.itemUri + "?Templates=JS&JSON=2&BFCloseImmediate=1"; var oldrequest = this.showFormCallbacks.requests[cfg.row.messageid]; var therequest = request; this._dialog.hideEvent.subscribe(function() { FIRSTCLASS.util.FormParser.hideForm(therequest); FIRSTCLASS.util.FormParser._dialog.hideEvent.unsubscribeAll(); }); this.showFormCallbacks.requests[cfg.row.messageid] = request; request = FIRSTCLASS.util.net.doAsyncGet({action:request.requestUri, callbacks:this.showFormCallbacks}); }, showFormCallbacks: { requests: {}, success: function(response) { if (response.responseJSON) { var js = response.responseJSON; var request = this.requests[js.messageid]; request.formJSON = js; FIRSTCLASS.util.FormParser.setForm(request.box, js, request.baseUri); } }, failure: function(response) { }, hideEvent: function(type, args) { } }, hideForm: function(request) { var box = request.box; var item = request.formJSON; if (item.calendars) { for (var i in item.calendars) { if (item.calendars[i]) { item.calendars[i].destroy(); item.calendars[i] = false; } } } delete FIRSTCLASS.util.FormParser.showFormCallbacks.requests[request.messageid]; box.innerHTML = ""; YAHOO.util.Dom.addClass(box, 'fcHidden'); this._dialog.hide(); }, submitForm: function(request) { var box = request.box; var form = box.firstChild.firstChild; if (FIRSTCLASS.util.FormParser.prepareFormToSave(form, request.formJSON)) { FIRSTCLASS.util.net.doAsyncPost({form: form, callbacks: { request: request, success: FIRSTCLASS.util.FormParser.submitFormCallbacks.success, failure: FIRSTCLASS.util.FormParser.submitFormCallbacks.failure }}); return true; } else { return false; } }, submitFormCallbacks: { success: function(response) { var request = this.request; var validated = true; for (var i in response.responseJSON.bag) { var field = response.responseJSON.bag[i]; for (var j in field) { if (typeof field[j].vresult != "undefined" && field[j].vresult !== 0) { alert("validation error on field: " + i + ", index: "+ j + ", code: " + field[j].vresult); validated = false; } } } if (validated) { delete FIRSTCLASS.util.FormParser.showFormCallbacks.requests[request.formJSON.messageid]; FIRSTCLASS.util.FormParser.hideForm(request); } else { request.formJSON = response.responseJSON; FIRSTCLASS.util.FormParser.setForm(request.box, request.formJSON, request.baseUri); } }, failure: function(response) { /*debugger;*/ } }, _doAttach: function(obj) { var dsconfig = { containerBaseUrl: obj.request.itemUri, watchForNew: false, messagebodies: false, nosymbiomainfetch: true, sortFirstFetch: false, serversort: "&Table=-0_0", fetchThreads: false, initialRequestGranularity: 50, requestGranularity: 10 }; var ds = new FIRSTCLASS.util.DataSource(dsconfig); var uploadcfg = { ds: ds, callbacks: { request: this.request, onComplete: FIRSTCLASS.util.FormParser._doAttachCallbacks.onComplete }, paneEl: document.body }; FIRSTCLASS.apps.Workflows.uploadDocument.reconfigure(uploadcfg); }, _doAttachCallbacks: { onComplete: function() { FIRSTCLASS.util.FormParser.showForm(this.request); } }, _doRepositoryBrowse: function(obj) { // obj.request // obj.repository /* var cf = { xuid: 2000, name: "moo.ppt", repository: "livelink",//FIRSTCLASS.apps.Integration.ECM.Browse._currentconfig.repository, request: obj.request }; FIRSTCLASS.util.FormParser._createWrapper(cf); return; */ FIRSTCLASS.apps.Integration.ECM.Browse.doBrowse({ 'xuid':2000, 'title':'Browse ' + obj.repository, showleaves: true, callbacks: { request: obj.request, save: FIRSTCLASS.util.FormParser._doRepositoryBrowseCallbacks.attach }, repository:obj.repository, selMode: 1} ); }, _doRepositoryBrowseCallbacks: { attach: function(config) { var cf = { xuid: config.xuid, name: config.fname, repository: FIRSTCLASS.apps.Integration.ECM.Browse._currentconfig.repository, request: this.request }; FIRSTCLASS.util.FormParser._createWrapper(cf); } }, _createWrapper: function(obj) { /** obj structure * obj.request * obj.xuid * obj.repository * obj.name */ /* do create form * name: obj.name * title: obj.name * formid: 20503 * lsubform (8122): 0 * xuid (8113): obj.xuid * repository (8115): obj.repository */ var box = obj.request.box; var form = box.firstChild.firstChild; var base = form.action; base = base.substr(0, base.indexOf("__FormEdit")); //base = "/Login/__Open-Item/Workflows/" var uri = base + "__FormNew?FormID=20503&Clear=1&BFCloseImmediate=1&Close=0&Templates=JS&JSON=2&Name=" + obj.name; /* pass in array of objects with .name and .value, return obj with .postdata and .cfg */ var cfg = { upload: false, action: uri, method: "POST", form: { elements: [ {name:"FormID", value:20503}, {name:"CharSet", value:"UTF-8"}, {name:"Title", value: obj.name}, {name:"Subject", value: obj.name}, {name:"FieldID:8122=LONG", value: 0}, {name:"FieldID:8113=STRING", value:obj.xuid}, {name:"FieldID:8115=STRING", value:obj.repository} ] }, callbacks: { request: obj.request, success: FIRSTCLASS.util.FormParser._createWrapperCallbacks.success, failure: FIRSTCLASS.util.FormParser._createWrapperCallbacks.failure } }; FIRSTCLASS.util.net.doAsyncPost(cfg); }, _createWrapperCallbacks: { success: function(response) { FIRSTCLASS.util.FormParser.showForm(this.request); }, failure: function(response) { /*debugger;*/ } }, _showPreview: function(config) { var datauri = config.uri + "?Templates=JS&JSON=2"; FIRSTCLASS.util.net.doAsyncGet({action:datauri, callbacks: FIRSTCLASS.util.FormParser._showPreviewCallBacks}); }, _showPreviewCallBacks: { success: function(response) { var elem = $('preview');//FIRSTCLASS.ui.Dom.getChildByClassName("preview",); elem.innerHTML = "loaded item"; if (response.responseJSON.attachments) { switch (response.responseJSON.attachments.length) { case 1: //no thumbnail, no preview elem.innerHTML = "no preview available"; break; case 2: var thumbnail = response.responseJSON.attachments[1]; // thumbnail only elem.innerHTML = ""; break; default: FIRSTCLASS.util.FormParser.slideshow.make(elem, response.responseJSON); } } else { elem.innerHTML = "error: no attachments!"; } }, failure: function() { // unable to load var elem = $('preview');//FIRSTCLASS.ui.Dom.getChildByClassName("fcDocSelPreview", this.that._selPanel); elem.innerHTML = "error loading item"; } }, slideshow: { make: function(element, item) { var html, i; this._currentItem = item; this._currentSlide = 0; if (false) { // use old method var id = "fcDocsSlideshow" + item.messageid; YAHOO.util.Dom.setStyle(element, 'width', '540px'); html = ["
"]; html.push("
"); html.push(" Page " + (this._currentSlide+1) + " of " + (item.attachments.length-2) + " >"); html.push(""); html.push("
"); element.innerHTML = html.join(""); this.updateui(); } else if (false /*carousel*/){ html = ["
    "]; for (i in item.attachments) { if (i > 1) { html.push("
  1. "); html.push(""); html.push("
  2. "); } } html.push("
"); element.innerHTML = html.join(""); var carousel = new YAHOO.widget.Carousel("carouselcontainer", { isCircular: false, numVisible: 1 }); carousel.render(); // get ready for rendering the widget carousel.show(); // display the widget } else { // lytebox html = ["
"]; for (i in item.attachments) { if (i > 1) { html.push("Page " + (i - 1) + ""); } } html.push("
"); element.innerHTML = html.join(""); initLytebox(element); } }, showNext: function() { this._currentSlide += 1; this.updateui(); }, showPrevious: function() { this._currentSlide -= 1; this.updateui(); }, showSlide: function(slideno) { this._currentSlide = slideno; this.updateui(); }, updateui: function() { var img = $('fcDocsSlideImg'); var index = this._currentSlide + 2; img.src = this._currentItem.attachments[index].uri; if (this._currentSlide === 0) { YAHOO.util.Dom.setStyle($('fcDocsPrevSlide'), 'display', 'none'); } else { YAHOO.util.Dom.setStyle($('fcDocsPrevSlide'), 'display', 'inline'); } if (this._currentSlide == this._currentItem.attachments.length - 3) { YAHOO.util.Dom.setStyle($('fcDocsNextSlide'), 'display', 'none'); } else { YAHOO.util.Dom.setStyle($('fcDocsNextSlide'), 'display', 'inline'); } // = "Page " + (this._currentSlide+1) + " of " + (this._currentRow.itemdata.attachments.length-2); var html = " "; for (var i = 0; i < this._currentItem.attachments.length - 2; i++) { if (this._currentSlide == i) { html += "" + (i+1) + " "; } else { html += "" + (i+1) + " "; } } $('fcDocsSlideInfo').innerHTML = html; } }, eventHandlers: { click: { saveform: function(that, fcevent) { var messageid = fcevent.fcattrs; var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; return FIRSTCLASS.util.FormParser.submitForm(request); }, clearform: function(that, fcevent) { var messageid = fcevent.fcattrs; var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; FIRSTCLASS.util.FormParser.hideForm(request); return true; }, addrepeat: function(that, fcevent) { var field = fcevent.fcattrs; var messageid = fcevent.target.getAttribute('messageid'); var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; var form = request.box.firstChild.firstChild; if (request) { FIRSTCLASS.util.FormParser.addRepeat(request.formJSON, form, field); return true; } return false; }, removerepeat: function(that, fcevent) { var field = fcevent.fcattrs; var messageid = fcevent.target.getAttribute('messageid'); var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; var form = request.box.firstChild.firstChild; if (request) { FIRSTCLASS.util.FormParser.removeRepeat(request.formJSON, form, field); return true; } return false; }, formbutton: function(that, fcevent) { var field = fcevent.fcattrs; var messageid = fcevent.target.getAttribute('messageid'); var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; var form = request.box.firstChild.firstChild; if (request) { FIRSTCLASS.util.FormParser.handleButtonPress(request.formJSON, form, field, request); return true; } return false; }, browsebutton: function(that, fcevent) { var field = fcevent.fcattrs; var messageid = fcevent.target.getAttribute('messageid'); var repository = fcevent.target.getAttribute('rname'); var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; FIRSTCLASS.util.FormParser._doRepositoryBrowse({request: request, repository: repository}); }, attachbutton: function(that, fcevent) { var field = fcevent.fcattrs; var messageid = fcevent.target.getAttribute('messageid'); var request = FIRSTCLASS.util.FormParser.showFormCallbacks.requests[messageid]; FIRSTCLASS.util.FormParser._doAttach({request: request}); }, showpreview: function(that, fcevent) { var uri = fcevent.fcattrs; FIRSTCLASS.util.FormParser._showPreview({uri:uri}); }, previousslide: function(that, fcevent) { FIRSTCLASS.util.FormParser.slideshow.showPrevious(); }, nextslide: function(that, fcevent) { FIRSTCLASS.util.FormParser.slideshow.showNext(); } } }, handleEvent: function(evt, fcevent) { var rv = false; var handlers = FIRSTCLASS.util.FormParser.eventHandlers[evt.type]; if (handlers) { var handler = handlers[fcevent.fcid]; if (handler) { rv = handler(this, fcevent); if (typeof rv == "undefined") { rv = true; } } } return rv; } }; YAHOO.register("fcFormParser", FIRSTCLASS.util.FormParser, {version: "0.0.1", build: "1"});