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};
},
checkbox: function(field, value, type) {
var tmp = "" + field.scfn + "";
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.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 = ["
"};
},
itemref: function(field, value, type) {
var repositories = FIRSTCLASS.apps.Integration.getRepositories(), html = [], haspreview = false, i, repository;
html.push("
");
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 = ["
");
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("- ");
html.push("
");
html.push(" ");
}
}
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 = ["
");
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"});