/*
 * Syracuse Core 1.2
 * Copyright(c) 2018, Archimed SA.
 */

if(!Ext.ClassManager.classes.bookmarkManager){Ext.define("Ext.ux.data.Bookmark",{extend:"Ext.data.Model",fields:["id","title"]});Ext.define("Ext.ux.menu.Bookmark",{extend:"Ext.menu.Menu",cls:Ext.baseCSSPrefix+"bookmark-menu",alias:"widget.bookmarkmenu",requires:["Ext.form.Panel","Ext.form.field.Text","Ext.button.Button"],titleText:"Bookmark this page",labelText:"Name",urlText:"URL",okText:"OK",cancelText:"Cancel",managerText:"Bookmark manager...",enableKeyNav:false,hideOnClick:false,initComponent:function(){var a=this,b=[];Ext.Object.each(master.applications,function(d,c){b.push([null,c.description,c.description,false]);Ext.Array.forEach(c.modules,function(e){b.push([e.id,e.description,c.description,e.last])})});Ext.apply(a,{showSeparator:false,bodyPadding:0,items:{xtype:"form",id:a.id+"-form",title:a.titleText,ui:"light",border:0,bodyBorder:0,margin:10,bodyPadding:"5 0",fieldDefaults:{labelAlign:"top",labelSeparator:"",labelWidth:50,allowBlank:false,width:400},items:[{xtype:"textfield",id:a.id+"-form-label",itemId:"label",name:"label",emptyText:a.labelText,selectOnFocus:true,maxLength:200},{xtype:"textfield",id:a.id+"-form-url",itemId:"url",name:"url",emptyText:a.urlText,readOnly:true,msgTarget:"under"},{xtype:"combobox",id:a.id+"-form-siteMapItemId",itemId:"siteMapItemId",name:"siteMapItemId",store:{model:Ext.define(a.id+"-model",{extend:"Ext.data.Model",fields:["value","text","application","last"]}),data:b},valueField:"value",displayField:"text",queryMode:"local",triggerAction:"all",editable:false,displayTpl:'<tpl for=".">{[Ext.util.Format.stripTags(values.application)]} > {[Ext.util.Format.stripTags(values.text)]}</tpl>',listConfig:{tpl:'<tpl for="."><li role="option" class="x-boundlist-item {[ !Ext.isEmpty(values.value) ? (values.last ? "x-boundlist-item-indent-end" : "x-boundlist-item-indent") : "x-boundlist-item-unselectable" ]}"><div  class="ux-lovcombo-item-text">{text}</div></li></tpl>'},listeners:{beforeselect:function(c,d){if(Ext.isEmpty(d.data.value)){return false}},scope:a}},{xtype:"checkbox",id:a.id+"-form-newWindow",itemId:"newWindow",name:"newWindow",boxLabel:a.newWindowText,inputValue:true,uncheckedValue:false,msgTarget:"under"}],dockedItems:[{id:a.id+"-toolbar",xtype:"toolbar",dock:"bottom",ui:"footer",style:"background:none",items:[{id:a.id+"-manager",itemId:"manager",text:a.managerText+"...",href:a.url,ui:"primary-plain",cls:"x-bookmark-manager-btn"},{id:a.id+"-fill",xtype:"tbfill"},{id:a.id+"-ok",itemId:"ok",text:a.okText,handler:a.addBookmarkConfirm,scope:a,ui:"primary"},{id:a.id+"-cancel",itemId:"cancel",text:a.cancelText,handler:a.addBookmarkCancel,scope:a,ui:"primary-plain"}]}]}});a.callParent(arguments);a.form=a.down("form").form;a.labelField=a.down("#label");a.urlField=a.down("#url");a.on("beforeshow",a.onBeforeShow,a);bookmarkManager.on("add",function(){this.hide()},a);bookmarkManager.on("error",function(c){this.urlField.markInvalid(c)},a)},onBeforeShow:function(){var e=this,b=e.form,d=Ext.util.Format.lowercase,g=bookmarkManager.computeRelativeUrl(window.location.href),a,c=e.labelField,f;a={url:g,label:master.pageTitle,siteMapItemId:parseInt(master.$ribbonTabs.find("li.active a").attr("data-siteMapItemId"))};f=bookmarkManager.fireEvent("beforemenushow",a);b.setValues(a);return f},onHide:function(){var a=this;a.callParent(arguments);a.form.reset();a.form.clearInvalid()},getItemFromEvent:function(){var b=this,a=b.down("[hasFocus]");return a||b.labelField},addBookmarkConfirm:function(){var b=this,a=b.form;if(a.isValid()){bookmarkManager.addBookmark(a.getValues())}},addBookmarkCancel:function(){this.hide()}});Ext.define("Ext.ux.button.Bookmark",{extend:"Ext.button.Button",alternateClassName:"Ext.ux.BookmarkButton",alias:"widget.bookmarkbutton",iconCls:"x-btn-glyph glyph-star",tooltip:"Bookmark this page",initComponent:function(){var a=this;a.menu={id:a.id+"-menu",xtype:"bookmarkmenu",moduleId:a.moduleId};a.callParent(arguments)}});Ext.define("bookmarkManager",{singleton:true,extend:"Ext.util.Observable",computeRelativeUrl:function(f){var c=this,b=Ext.util.Format.lowercase,d=master.parseUrl(f),a=master.getBasePathName(),e;e=b(d.pathname).replace(b(a),"");if(master.applicationAlias.length){e=b(master.applicationAlias)+"/"+e}switch(c.scopeStrategy){case"empty":e="~/"+e;break;case"fixed":e="~/"+master.scopeAlias+"/"+e;break;case"dynamic":default:e="~~/"+e;break}return e+d.search+d.hash},update:function(a,b){var c=this;if(!Ext.isArray(b)){b=[b]}if(b.length===0){return}Ext.Ajax.request({url:"bookmarks.svc/update",method:"POST",jsonData:{application:a,bookmarks:b},success:c.onUpdateSuccess,failure:c.onUpdateFailure,scope:c})},onUpdateSuccess:function(d,c){var b=this,a=c.jsonData.bookmarks.length>1?b.updateErrorMessage:b.updateSingleErrorMessage,f=c.jsonData.bookmarks.length>1?b.updateSuccessMessage:b.updateSingleSuccessMessage,e=ui.parseResponse(d,a);if(e&&e.success){Ext.toast(f);b.fireEvent("update",e.d)}},onUpdateFailure:function(c,b){var a=this;ui.error(b.jsonData.bookmarks.length>1?a.updateErrorMessage:a.updateSingleErrorMessage)},move:function(b,a,d){var c=this;if(!Ext.isArray(b)){b=[b]}if(b.length==0){return}Ext.Ajax.request({url:"bookmarks.svc/move",method:"POST",jsonData:{bookmarks:b,application:a,siteMapItemId:d},success:c.onMoveSuccess,failure:c.onMoveFailure,scope:c})},onMoveSuccess:function(d,c){var b=this,a=c.jsonData.bookmarks.length>1?b.moveErrorMessage:b.moveSingleErrorMessage,f=c.jsonData.bookmarks.length>1?b.moveSuccessMessage:b.moveSingleSuccessMessage,e=ui.parseResponse(d,a);if(e&&e.success){Ext.toast(f);b.fireEvent("move",e.d)}},onMoveFailure:function(c,b){var a=this;ui.error(b.jsonData.bookmarks.length>1?a.moveErrorMessage:a.moveSingleErrorMessage)},deleteBookmark:function(a,b){var c=this;Ext.Ajax.request({url:"bookmarks.svc/delete",method:"GET",params:{application:a,bookmarkId:b},success:c.onDeleteSuccess,failure:c.onDeleteFailure,scope:c})},onDeleteSuccess:function(c,b){var a=this,d=ui.parseResponse(c,a.deleteErrorMessage);if(d&&d.success){Ext.toast(a.deleteSuccessMessage);a.fireEvent("delete",b.params.bookmarkId)}},onDeleteFailure:function(){ui.error(this.deleteErrorMessage)},addBookmark:function(a){var b=this;if(b.fireEvent("beforeadd",a)!==false){Ext.Ajax.request({url:"bookmarks.svc/create",method:"POST",jsonData:a,success:b.onAddSuccess,failure:b.onAddFailure,scope:b})}},onAddSuccess:function(d,c){var a=this,e=Ext.decode(d.responseText),b;if(e&&e.success){Ext.toast(a.createSuccessMessage);a.fireEvent("add",e.d)}else{b=(e&&Ext.isArray(e.errors)&&e.errors.length>0?e.errors[0].msg:ui.errorMessage);a.fireEvent("error",b)}},onAddFailure:function(b,a){ui.error(this.createErrorMessage)}})};
