var Table={id:"Table",AddDialog:"adddialog/41982453.js",UpdateDialog:"updatedialog/41982453.js",addItems:function(parentId,beforeId,m,other){if(!beforeId)beforeId=-1;var context={parentId:parentId,beforeId:beforeId,module:m};if(other)Object.extend(context,other);Module.showDialog(Table,"AddDialog",context)},updateItem:function(item,m){if(item&&item.constructor==Number)item=page.nodes[item];Module.showDialog(Table,"UpdateDialog",{item:item,module:m})},deleteItem:function(id){ContentItem.deleteItem(id)},renderEmpty:function(w,s){Section.renderEmpty(w,s)}};Module.add(Table);var BaseFields={output:{readOnly:true},number:{outputFormat:"",inputFormat:"0",getValue:function(bo,item){var t=this;var num=Number.NaN;if(item){var v=item[t.name];if(v!==null){num=new Number(v)}}return num},getInputText:function(bo,item){var t=this;var v=t.getValue(bo,item);var num=new Number(v);if(!isNaN(num)){return num.numberFormat(this.inputFormat)}return""},getOutputText:function(bo,item){var v=this.getValue(bo,item);var num=new Number(v);if(!isNaN(num)){return num.numberFormat(this.outputFormat)}return""},onValidate:function(vc){var t=this;var label=t.getLabel();var s=vc.element.value;if(s.length>0){var value=new Number(s);if(isNaN(value)){vc.addError("Value for "+label+" is not a valid number.")}}}},textArea:{labelClass:"input-l-textarea",renderInput:function(w,v){var t=this;w("<textarea name='",t.name,"' businessField='",t.index,"' onchange='BusinessField.onInputChanged(this)'",Html.optionalAttribute("rows",t.inputRows),Html.optionalAttribute("cols",t.inputCols),">",v,"</textarea>")}},date:{outputFormat:"uDM",inputFormat:"ud",timeSetting:"startOfDay",getInputText:function(bo,item){var t=this;var d=null;if(item){d=t.getValue(bo,item)}else if(t.defaultValue&&t.defaultValue=="now"){d=new Date()}return d},renderInput:function(w,v,item){DateInput.renderDateInput(w,this,v)},getValue:function(bo,item){var d=null;if(item){var v=item[this.name];if(v){d=Date.fromSeconds(v)}}return d},getOutputText:function(bo,item){var d=this.getValue(bo,item);return(d?d.toDateTimeString(this.outputFormat):"")},onValidate:function(vc){DateInput.onValidate(this,vc,"date")}},dateTime:{outputFormat:"uFM",timeLabel:" Time:",dateTimeArgs:{},getInputText:function(bo,item){var t=this;var d=null;if(item){d=t.getValue(bo,item)}else if(t.defaultValue&&t.defaultValue=="now"){d=new Date()}return d},renderInput:function(w,v){DateInput.renderDateTimeInput(w,this,v)},getValue:function(bo,item){var d=null;if(item){var v=item[this.name];if(v){d=Date.fromSeconds(v)}}return d},getOutputText:function(bo,item){var d=this.getValue(bo,item);return d.toDateTimeString(this.outputFormat)},onValidate:function(vc){DateInput.onValidate(this,vc,"dateTime")}},time:{outputFormat:"ut",inputFormat:"ut",getInputText:function(bo,item){var t=this;var d=null;if(item){d=t.getValue(bo,item)}else if(t.defaultValue&&t.defaultValue=="now"){d=new Date()}return d},renderInput:function(w,v){DateInput.renderTimeInput(w,this,v)},getValue:function(bo,item){var d=null;if(item){var v=item[this.name];if(v){d=Date.fromSeconds(v)}}return d},getOutputText:function(bo,item){var d=this.getValue(bo,item);return d.toDateTimeString(this.outputFormat)},onValidate:function(vc){DateInput.onValidate(this,vc,"time")}},startEndDateTime:{label:"Starts",startEndDateTimeArgs:{},renderInput:function(w,v,item){var t=this;var args=t.startEndDateTimeArgs;var bo=t.parent;var startField=bo.getField(args.startField);var endField=bo.getField(args.endField);var isAllDayField=bo.getField(args.isAllDayField);var startValue=startField.getValue(bo,item);var endValue=endField.getValue(bo,item);var isAllDayValue=isAllDayField.getValue(bo,item);DateInput.renderStartEndDateTimeInput(w,startField,endField,isAllDayField,startValue,endValue,isAllDayValue)},getOutputText:function(bo,item){var v=this.getValue(bo,item);var d=Date.fromSeconds(v);return(d?d.toDateTimeString(this.outputFormat):"")},onValidate:function(vc){var t=this;var args=t.startEndDateTimeArgs;var bo=t.parent;var startField=bo.getField(args.startField);var endField=bo.getField(args.endField);var isAllDayField=bo.getField(args.isAllDayField);var isAllDaySrc=vc.form[isAllDayField.name];var isAllDayValue=(isAllDaySrc?isAllDaySrc.checked:false);vc.element=vc.form[startField.name];DateInput.onValidate(startField,vc,"dateTime",isAllDayValue);var startValue=Date.fromSeconds(vc.element.value);vc.element=vc.form[endField.name];DateInput.onValidate(endField,vc,"dateTime",isAllDayValue);var endValue=Date.fromSeconds(vc.element.value);if(startValue!=null&&endValue!=null&&vc.errors.length==0&&endValue<startValue){vc.addError("End date cannot be before the Start date.")}}},select:{labelClass:"input-l-select",selectArgs:{},renderInput:function(w,v){var t=this;var args=t.selectArgs||{};var optional=args.optional||false;if(optional){w("<input name='",t.name,"'",Html.attribute("value",v)+" businessField='",t.index,"' onchange='BusinessField.onInputChanged(this);'",Html.optionalAttribute("size",t.inputSize)," onblur='BaseFields.select._2(this);'"," />","<span class=noselect hoverType=hover style='position:relative;' onmouseup='BaseFields.select._1(this);' onmousedown='BaseFields.select._3(\""+t.name+"\", \""+t.index+"\");return false;'>","<span class=menu style='padding:7px 7px 0px 7px;cursor:default;'>","&nbsp;","</span>","</span>")}else{w("<select name='",t.name,"' businessField='",t.index,"' onchange='BusinessField.onInputChanged(this)'",(t.inputMultiple?" multiple":""),">");var choices=t.choices;if(choices){var found=false;for(var i=0;i<choices.length;i++){if(i>0)w("<br/>");var choice=choices[i];var cv=choice.value;w("<option value='",cv,"'",(v==cv?" selected":"")," />",(choice.text||choice.value),"</option>");if(v==cv)found=true}if(!found&&v){w("<option value='",v,"' selected />Other (",v,")</option>")}}w("</select>")}},_2:function(el){if(BaseFields.select._0.currentSrc==el){if(!Menu.inMouseDown){Menu.hideMenu()}else{el.focus()}}},_1:function(el){Menu.inMouseDown=false},_3:function(elName,fieldIndex){if(!Menu.inMouseDown){var f=Dialog.form;var el=f[elName];var menuInfo=BaseFields.select._0;menuInfo.currentSrc=el;Menu.inMouseDown=true;menuInfo.fieldIndex=fieldIndex;Dom.tryFocus(el);Menu.showMenu(menuInfo,el)}},_4:function(src,v){if(src){src.value=v}},_0:{menuType:1,width:60,height:150,fieldIndex:-1,currentSrc:null,createMenuItems:function(items,src){var t=BaseFields.select;var f=t._4;this.width=Dom.getClientBounds(src).width+16;var other={};var curValue=src.value;var field=BusinessField.getField(this.fieldIndex);if(field&&field.choices){var choices=field.choices;for(var i=0;i<choices.length;i++){var choice=choices[i];other.selected=(curValue==choice.value);var v=choice.text||choice.value;items.add(v,f,[src,v],other)}}}}},radio:{labelClass:"input-l-radio",renderInput:function(w,v){var t=this;var type=(t.inputMultiple?"checkbox":"radio");var choices=t.choices;if(choices){var found=false;for(var i=0;i<choices.length;i++){if(i>0)w("<br/>");var choice=choices[i];var cv=choice.value;w("<input type=",type," name='",t.name,"' value='",Html.escapeAttributeValue(cv),"' businessField='",t.index,"' onchange='BusinessField.onInputChanged(this)'",(v==cv?" checked":""),"/>",(choice.text||choice.value));if(v==cv)found=true}if(!found&&v){w("<br/><input type=",type," name='",t.name,"' value='",Html.escapeAttributeValue(v),"' businessField='",t.index,"' onchange='BusinessField.onInputChanged(this)'"," checked","/>","Other (",v,")")}}}},checkbox:{labelClass:"input-l-checkbox",renderInput:function(w,v){var t=this;w("<input class=input-checkbox type=checkbox name='",t.name,"' businessField='",t.index,"' onchange='BusinessField.onInputChanged(this)'",(v?" checked":"")," />")}},mapAddress:{labelClass:"input-l-text",mapAddressArgs:{},renderInput:function(w,v){var t=this;CommandBar.renderButton(w,{onclick:"BaseFields.mapAddress._5(this, \""+t.name+"\")",title:"Opens a map for the specified address.",style:{"float":"right"}},"Test Map");w("<input name='",t.name,"'",Html.attribute("value",v)+" businessField='",t.index,"' onchange='BusinessField.onInputChanged(this);'",Html.optionalAttribute("size",t.inputSize)," /> ")},_5:function(buttonEl,inputElName){var f=Dialog.form;var inputEl=f[inputElName];if(inputEl&&inputEl.value.length>0){N.openWindow("http://maps.google.com/?q="+inputEl.value)}else{Dialog.alert("You must first enter an address.")}}},richText:{labelClass:"input-l-rte",richTextArgs:{},renderInput:function(w,v){var t=this;var height=t.richTextArgs.height||200;var width=t.richTextArgs.width||450;w("<div stylex='margin-top:15px;'>");TextEditor.render(w,this.name,width,height,v,false,true);w("</div>")},onValidate:function(vc){TextEditor.updateInput(this.name);if(this.base)this.base.onValidate(vc)}}};BusinessField.initFields(BaseFields);var Fields={state:{label:"State",inputSize:5},postalCode:{label:"Postal Code",inputSize:9},country:{label:"Country",inputSize:15},email:{label:"E-Mail",outputTemplate:"<a href=# onclick='C.send({to:\"{0}\"});return false;'>{0}</a>",onValidate:function(vc){var v=vc.element.value;if(v&&v.indexOf("@")<0){vc.addError("Invalid E-mail address.  E-mail addresses must contain the @ character.")}}},url:{label:"Url",inputSize:50,outputTemplate:"<a href='{0}'"+Att.target+">{0}</a>",onInputChanged:function(e){Dialog.validateUrl(e)}},emailOutput:{base:BaseFields.output,label:"E-Mail",emailArgs:{},getValue:function(bo,item){var t=this;var args=t.emailArgs;var email=bo.getValue(args.email||"email",item);var text=(args.text?bo.getOutputText(args.text,item):email)||email;return(email?"<a href='mailto:"+email+"'>"+text+"</a>":text)}},detailLink:{base:BaseFields.output,detailLinkArgs:{},getValue:function(bo,item){var t=this;var args=t.detailLinkArgs;var title=bo.getOutputText(args.title||"fullName",item);var atts=args.att||{};var styles=args.styles||{};var sb=new StringBuilder();PageNode.renderLink(sb.write,item,atts,styles,title);return sb.toString()}},fullAddress:{base:BaseFields.output,label:"Address",fullAddressArgs:{},getValue:function(bo,item){var t=this;var args=t.fullAddressArgs;var address=bo.getOutputText(args.address||"homeAddress",item);var city=bo.getOutputText(args.city||"homeCity",item);var state=bo.getOutputText(args.state||"homeState",item);var postalCode=bo.getOutputText(args.postalCode||"homePostalCode",item);var country=bo.getOutputText(args.country||"homeCountry",item);var map=bo.getOutputText(args.map||"homeMap",item);return StringEx.joinOptional("<br/>",address,StringEx.joinOptional(", ",city,StringEx.joinOptional(" ",state,postalCode)),country,map)}},map:{base:BaseFields.output,label:"Map",mapArgs:{},getValue:function(bo,item){var t=this;var args=t.mapArgs;var address=bo.getOutputText(args.address||"address",item);var city=bo.getOutputText(args.city||"city",item);var state=bo.getOutputText(args.state||"state",item);var postalCode=bo.getOutputText(args.postalCode||"postalCode",item);var subject=bo.getOutputText(args.subject||"subject",item);var location=bo.getOutputText(args.location||"location",item);var mapLabel=StringEx.joinOptional(" @ ",subject,location);return Html.formatMapLink(address,city,state,postalCode,null,mapLabel,null,args.text);}},iCalendar:{base:BaseFields.output,label:"iCal",iCalArgs:{},getOutputText:function(bo,item){var t=this;var args=t.iCalArgs;var sb=new StringBuilder("");var w=sb.write;w("<a href=# onclick='Fields.iCalendar.onClick(",item.nodeId,");return false;'>");if(args.text){w(args.text)}else{w("<img src='"+A.imagesBase+"ical.gif' style='vertical-align:middle;padding-left:2px;padding-right:2px;' alt='Download iCalendar' />")}w("</a>");return sb.toString()},onClick:function(nodeId){var msg={page:page.pageId,version:page.version,t:head.time,h:head.h,nodeId:nodeId};var q=Html.formatQuery(msg);var href=A.commandsBase+"desktopintegration/geticalendar"+q;N.openWindow(href,"")}},vCard:{base:BaseFields.output,label:"vCard",vCardArgs:{},getOutputText:function(bo,item){var t=this;var args=t.vCardArgs;var sb=new StringBuilder("");var w=sb.write;w("<a href=# onclick='Fields.vCard.onClick(",item.nodeId,","+(args.type?"\""+args.type+"\"":"null")+");return false;'>");if(args.text){w(args.text)}else{w("<img src='",ImgSrc.vcard,"' style='vertical-align:middle;padding-left:2px;padding-right:2px;' alt='Download vCard' />")}w("</a>");return sb.toString()},onClick:function(nodeId,type){var msg={page:page.pageId,version:page.version,t:head.time,h:head.h,nodeId:nodeId};if(type)msg["type"]=type;var q=Html.formatQuery(msg);var href=A.commandsBase+"desktopintegration/getvcard"+q;N.openWindow(href,"")}},compound:{base:BaseFields.output,delimiter:" ",fieldNames:[],getValue:function(bo,item){var t=this;var names=t.fieldNames;var s="";if(names){var d=t.delimiter;for(var i=0;i<names.length;i++){var n=names[i];var fld=bo.getField(n);if(fld){var v=fld.getOutputText(bo,item);if(v){if(s){s+=d+v}else{s=v}}}}}return s}},createdAndBy:{label:"Created",base:BaseFields.output,getOutputText:function(bo,item){var d=Date.fromSeconds(item.created);return(d?d.toString2()+" by "+User.formatLink({userName:item.createdBy}):"")}},modifiedAndBy:{label:"Modified",base:BaseFields.output,getOutputText:function(bo,item){var d=Date.fromSeconds(item.created);return(d?d.toString2()+" by "+User.formatLink({userName:item.modifiedBy}):"")}},comments:{label:"Comments",base:BaseFields.output,getOutputText:function(bo,item){}},commentCounts:{label:"Comments",base:BaseFields.output,getOutputText:function(bo,item){return ItemComment.formatLink(item)}},summary:{base:BaseFields.output,delimiter:", ",fieldNames:[],getValue:function(bo,item){var t=this;var names=t.fieldNames;var s="";if(names){var d=t.delimiter;for(var i=0;i<names.length;i++){var n=names[i];var fld=bo.getField(n);if(fld){var v=fld.getOutputText(bo,item);if(v){v=fld.getLabel()+": "+v;if(s){s+=d+v}else{s=v}}}}}return s}}};BusinessField.initFields(Fields);var ItemSchema=BusinessObject.create({fields:[{name:"created",label:"Created",readOnly:true,base:BaseFields.dateTime},{name:"createdBy",label:"Created By",readOnly:true},{name:"createdAndBy",base:Fields.createdAndBy},{name:"modified",label:"Modified",readOnly:true,base:BaseFields.dateTime},{name:"modifiedBy",label:"Modified By",readOnly:true},{name:"modifiedAndBy",base:Fields.modifiedAndBy},{name:"owner",label:"Owner"},{name:"title",label:"Title"},{name:"text",label:"Text",base:BaseFields.richText},{name:"commentCounts",base:Fields.commentCounts},{name:"comments",base:Fields.comments}]});