
core.app.media={Path:"",Item:"",Mode:"",Target:"",Options:"",Window:null,Bookmark:null,apply:function(path,file,is_binary)
{switch(core.app.media.Mode)
{case"tinymce":if(typeof(is_binary)=="undefined"||is_binary==false)
{var ed=tinyMCE.getInstanceById(core.app.media.Target);ed.selection.moveToBookmark(core.app.media.Bookmark);var selected=ed.selection.getContent({format:"html"});if(selected!="")
{ed.selection.setContent("<a href=\""+core.app.media.image.Src+"\" target=\"_blank\">"+selected+"</a>");}
else
{ed.selection.setContent("<p><img src=\""+core.app.media.image.Src+"\" /></p>");}}
else
{var ed=tinyMCE.getInstanceById(core.app.media.Target);ed.selection.moveToBookmark(core.app.media.Bookmark);var selected=ed.selection.getContent({format:'html'});if(selected!="")
{ed.selection.setContent("<a href=\""+path+"/"+file+"\">"+selected+"</a>");}
else
{ed.selection.setContent("<a href=\""+path+"/"+file+"\">"+file+"</a>");}}
break;case"field":Ext.get(core.app.media.Target).dom.value=core.app.media.image.Src;Ext.get(core.app.media.Target+".image").dom.src=core.app.media.image.Src;break;case"field_plain":Ext.get(core.app.media.Target).dom.value=path+"/"+file;Ext.get(core.app.media.Target+".image").dom.src="image.php?file="+path+"/"+file+"&options=resize(150,150);sharpen(20);";break;case"file":Ext.get(core.app.media.Target).dom.value=path+"/"+file;break;}
core.app.media.Window.close();},load:function(url)
{core.app.media.files.load(url);},open:function(mode,target,options)
{this.Mode=(isset(mode)?mode:"");this.Target=(isset(target)?target:"");this.Options=(isset(options)?options:"");if(this.Mode=="tinymce")
{var ed=tinyMCE.getInstanceById(target);this.Bookmark=ed.selection.getBookmark();}
this.Window=new Ext.Window({title:"File Manager",width:1000,height:500,x:5,y:5,layout:"border",maximizable:true,items:[new Ext.Panel({id:"west",title:"",region:"west",split:true,width:220,margins:"0 0 0 0",layout:"accordion",layoutConfig:{animate:false,hideCollapseTool:true},items:[new Ext.tree.TreePanel({id:"tree",title:"<b>Explore</b>",animate:false,enableDD:true,containerScroll:true,rootVisible:true,width:190,split:true,autoScroll:true,margins:"0 0 0 0",listeners:{"beforeexpand":{fn:function(){core.app.media.tab.instance().activate("tab_files");},delay:10},"movenode":{fn:core.app.media.tree.move,delay:10}},root:new Ext.tree.TreeNode({text:"files",allowDrag:false,allowDrop:true,expanded:true,href:"javascript: core.app.media.load('?a=100&t=1&y=1100&r=0&n=0&i=0&c=0&p=&o=1&path=var/files');"}),tbar:toolbar=new Ext.Toolbar({items:[{text:"Options",tooltip:"Options",cls:"x-btn-text",menu:new Ext.menu.Menu({id:"options",items:[{id:"option_show_files",text:"Show files",checked:false,checkHandler:core.app.media.options.handler}]})},{text:"Add",tooltip:"Create a new directory",cls:"x-btn-text",handler:function()
{var tree=core.app.media.tree.instance();var node=core.app.media.tree.current();node.expand();var new_node=node.appendChild(new Ext.tree.TreeNode({text:"Enter name",icon:"img/system.media/tree/folder.gif",allowDrag:false}));core.app.media.tree.select(new_node);core.app.media.tree.edit(new_node);}},{text:"Rename",tooltip:"Rename a directory or file",cls:"x-btn-text",handler:function()
{core.app.media.tree.edit(core.app.media.tree.current());}},{text:"Delete",tooltip:"Delete a directory or file",cls:"x-btn-text",handler:function()
{var root=core.app.media.tree.instance().root;var node=core.app.media.tree.current();if(node.id==root.id)
{Ext.Msg.show({title:"Error",msg:"You can't delete the document root directory!",buttons:Ext.Msg.OK,icon:Ext.MessageBox.ERROR});}
else
{Ext.MessageBox.confirm("Delete Directory/File","Are you sure you want to delete the directory/file <b>'"+node.text+"'</b>?",core.app.media.tree.remove);}}}]})}),new Ext.FormPanel({id:"filter",title:"Filter",defaultType:"textfield",labelWidth:50,frame:true,listeners:{"beforeexpand":{fn:function(){core.app.media.tab.instance().activate("tab_preview");},delay:10}},items:[{xtype:"fieldset",title:"Size",collapsible:true,autoHeight:true,defaultType:"textfield",items:[new Ext.form.NumberField({id:"size.width",name:"size.width",value:"400",width:"30",fieldLabel:"Width",allowBlank:false,allowDecimals:false,listeners:{"change":{fn:core.app.media.image.refresh,delay:10}}}),new Ext.form.NumberField({id:"size.height",name:"size.height",value:"0",width:"30",fieldLabel:"Height",allowBlank:false,allowDecimals:false,listeners:{"change":{fn:core.app.media.image.refresh,delay:10}}})]},{xtype:"fieldset",title:"Watermark",collapsible:true,autoHeight:true,defaultType:"textfield",items:[new Ext.form.Checkbox({id:"watermark.activate",fieldLabel:"Activate",listeners:{"check":{fn:core.app.media.image.refresh,delay:10}}}),new Ext.form.ComboBox({id:"watermark.align.select",fieldLabel:"Align",displayField:"text",valueField:"id",hiddenName:"watermark.align",emptyText:"Select...",tpl:"<tpl for=\".\"><div ext:qtip=\"{desc}\" class=\"x-combo-list-item\">{text}</div></tpl>",store:new Ext.data.SimpleStore({fields:["id","text","desc"],data:[["TL","top left","Watermark in the top left corner"],["T","top center","Watermark centered in the top"],["TR","top right","Watermark in the top right corner"],["BL","bottom left","Watermark in the bottom left corner"],["B","bottom center","Watermark centered in the bottom"],["BR","bottom right","Watermark in the bottom right corner"]]}),mode:"local",forceSelection:true,typeAhead:true,triggerAction:"all",selectOnFocus:true,width:100,listWidth:100,listeners:{"change":{fn:core.app.media.image.refresh,delay:10}}}),new Ext.form.NumberField({id:"watermark.opacity",name:"watermark.opacity",value:"80",width:"30",fieldLabel:"Opacity",allowBlank:false,allowDecimals:false,listeners:{"change":{fn:core.app.media.image.refresh,delay:10}}})]},{xtype:"fieldset",title:"Sharpen",collapsible:true,autoHeight:true,defaultType:"textfield",items:[new Ext.form.Checkbox({id:"sharpen.activate",name:"sharpen.activate",fieldLabel:"Activate",listeners:{"check":{fn:core.app.media.image.refresh,delay:10}}}),new Ext.form.NumberField({id:"sharpen.amount",name:"sharpen.amount",value:"20",width:"30",fieldLabel:"Amount",allowBlank:false,allowDecimals:false,listeners:{"change":{fn:core.app.media.image.refresh,delay:10}}})]}],buttons:[{text:"Apply",handler:core.app.media.apply}]})]}),new Ext.TabPanel({id:"tab",region:"center",activeTab:0,frame:true,defaults:{autoScroll:true},items:[{id:"tab_files",title:"Files",autoLoad:"?a=100&t=1&y=1100&o=1"+"&mode="+this.Mode+"&target="+this.Target+"&options="+this.Options,listeners:{"activate":{fn:function(){core.app.media.tree.instance().expand();},delay:10}}},new Ext.form.FormPanel({id:"tab_upload",title:"Upload",header:true,labelWidth:50,frame:true,url:"?a=113&t=1&y=1100&o=1",fileUpload:true,timeout:15000,items:[{xtype:"textfield",fieldLabel:"File #1",name:"file01",inputType:"file"},{xtype:"textfield",fieldLabel:"File #2",name:"file02",inputType:"file"},{xtype:"textfield",fieldLabel:"File #3",name:"file03",inputType:"file"},{xtype:"textfield",fieldLabel:"File #4",name:"file04",inputType:"file"},{xtype:"textfield",fieldLabel:"File #5",name:"file05",inputType:"file"},{xtype:"textfield",fieldLabel:"File #6",name:"file06",inputType:"file"},{xtype:"textfield",fieldLabel:"File #7",name:"file07",inputType:"file"},{xtype:"textfield",fieldLabel:"File #8",name:"file08",inputType:"file"},{xtype:"textfield",fieldLabel:"File #9",name:"file09",inputType:"file"},{xtype:"textfield",fieldLabel:"File #10",name:"file10",inputType:"file"}],buttons:[{text:"Upload",handler:function()
{core.app.media.tab.instance().getComponent("tab_upload").getForm().submit({waitMsg:"Uploading file(s) to '"+core.app.media.tree.current().getPath("text")+"'",success:function(btn,response)
{core.app.media.tab.instance().activate("tab_files");core.app.media.tree.refresh(core.app.media.tree.current().getPath("text"));core.app.media.files.refresh();core.app.media.tab.instance().getComponent("tab_upload").getForm().reset();},failure:function(btn,response)
{Ext.MessageBox.show({title:"Error",msg:"Error uploading files!",buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});}})}}]})]})]});this.Window.show();core.app.media.filter.deactivate();this.tree.refresh();}}
core.app.media.image={Path:"",Image:"",Src:"",edit:function(path,image,width,height)
{this.Path=path;this.Image=image;core.app.media.filter.activate();var tab=core.app.media.tab.instance();var tab_id="tab_preview";if(isset(tab.getComponent(tab_id)))
{tab.getComponent(tab_id).un("destroy");tab.remove(tab_id);}
var tab_new=new Ext.TabPanel({id:tab_id,title:"Preview: "+image+" ("+width+"x"+height+"px)",closable:true,bodyStyle:"background: #dfe8f6",listeners:{"activate":{fn:function(){core.app.media.filter.activate();},delay:10},"destroy":{fn:function(){core.app.media.filter.deactivate();},delay:10}}});tab.add(tab_new);tab.activate(tab_id);core.app.media.image.refresh();},refresh:function()
{var tab=core.app.media.tab.instance();var post=core.app.media.filter.instance().getForm().getValues();var options="";if(post["size.width"]>1000)post["size.width"]=1000;if(post["size.height"]>1000)post["size.height"]=1000;options+="resize("+post["size.width"]+","+post["size.height"]+");";if(typeof(post["watermark.activate"])!="undefined"&&post["watermark.align"]!="")
{options+="watermark(img/system.media/watermark/watermark.png,"+post["watermark.align"]+","+post["watermark.opacity"]+");";}
if(typeof(post["sharpen.activate"])!="undefined")
{options+="sharpen("+post["sharpen.amount"]+");";}
var url="image.php?file="+core.app.media.image.Path+"/"+core.app.media.image.Image+"&options="+options;core.app.media.image.Src=url;tab.getComponent("tab_preview").body.dom.innerHTML="<div style=\"padding: 3px;\"><img src=\""+url+"\" style=\"border: 1px solid black;\"></div>";},resize:function(id,width,height)
{var img=Ext.get(id);if(img.getWidth()!=width&&img.getHeight()!=height)
{img.setWidth(width);img.setHeight(height);}
else
{var tab=core.app.media.tab.instance();var tab_width=tab.el.getWidth();var tab_height=tab.el.getHeight();var img_ratio=height/width;var tab_ratio=tab_height/tab_width;if(img_ratio>tab_ratio)
{var img_height=tab_height;var img_width=Math.round(width/(height/tab_height));}
else
{var img_width=tab_width;var img_height=Math.round(height/(width/tab_width));}
img_width=img_width-6;img_height=img_height-44;if(img_width<width||img_height<height)
{img.setWidth(img_width);img.setHeight(img_height);}
else
{img.setWidth(width);img.setHeight(height);}}},view:function(image,width,height)
{var tab=core.app.media.tab.instance();var id=new core.util.guid().toString();var html="<div style=\"padding: 3px;\"><a href=\"javascript: void(0);\" onclick=\"core.app.media.image.resize('"+id+"', "+width+", "+height+");\"><img id=\""+id+"\" style=\"width: "+width+"px; height:"+height+"px;\" src=\""+image+"\"></a></div>";var tab_id=basename(image);if(!isset(tab.getComponent(tab_id)))
{var tab_new=new Ext.TabPanel({id:tab_id,title:basename(image)+" ("+width+"x"+height+"px)",closable:true,bodyStyle:"background: #DFE8F6",html:html});tab.add(tab_new);}
tab.activate(tab_id);core.app.media.image.resize(id,width,height);}}
core.app.media.files={url:"?a=100&t=1&y=1100&o=1",remove:function(file)
{var url="?a=111&t=1&y=1100&o=1&path="+file;Ext.Ajax.request({url:url,success:function(response)
{var obj=Ext.util.JSON.decode(response.responseText);if(!obj)
{Ext.MessageBox.show({title:"Error",msg:"Error deleting directory/file!",buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});}
else
{core.app.media.tree.refresh(core.app.media.tree.current().getPath("text"));core.app.media.files.refresh();}}});},instance:function()
{return core.app.media.tab.instance().getComponent("tab_files");},load:function(url)
{this.url=url;core.app.media.tab.instance().activate("tab_files");this.instance().load(url+"&mode="+core.app.media.Mode+"&target="+core.app.media.Target+"&options="+core.app.media.Options);},refresh:function()
{core.app.media.files.load(this.url);}}
core.app.media.filter={activate:function()
{core.app.media.tree.instance().collapse();this.instance().expand();this.instance().enable();},deactivate:function()
{core.app.media.tree.instance().expand();this.instance().collapse();this.instance().disable();},instance:function()
{return core.app.media.Window.getComponent("west").getComponent("filter");}}
core.app.media.options={get:function(i)
{switch(i)
{case"show_files":return core.app.media.tree.instance().getTopToolbar().items.items[0].menu.items.items[0].checked;break;default:return false;break;}
var options=core.app.media.tree.instance().getTopToolbar().items.items[0];},handler:function(item,checked)
{if(item.id=="option_show_files")
{core.app.media.tree.refresh();}
else
{}}}
core.app.media.tab={instance:function()
{return core.app.media.Window.getComponent("tab");}}
core.app.media.tree={add:function(node,obj)
{for(var property in obj.Item)
{var item=obj.Item[property];if(item.Type=="dir")
{var current=new Ext.tree.TreeNode({text:item.Name,icon:"img/system.media/tree/folder.gif",href:"javascript: core.app.media.load('?a=100&t=1&y=1100&r=0&n=0&i=0&c=0&p=&o=1&path="+item.FullPath+"');",allowDrop:true,allowDrag:true});current.on("click",function(node)
{node.toggle();var regex=/javascript: core\.app\.media\.load\('(.+)'\);/;var r=regex.exec(node.attributes.href);core.app.media.load(r[1]);});node.appendChild(current);core.app.media.tree.add(current,item);}
else if(item.Type=="file"&&core.app.media.options.get("show_files"))
{if(item.Extension.toLowerCase()=="jpg"||item.Extension.toLowerCase()=="gif"||item.Extension.toLowerCase()=="png")
{var file=new Ext.tree.TreeNode({text:item.Name,icon:"img/system.media/tree/image.gif",href:"javascript: core.app.media.image.view('"+item.FullPath+"',"+item.Info["image_width"]+","+item.Info["image_height"]+");",allowDrop:false,allowDrag:true});}
else
{var file=new Ext.tree.TreeNode({text:item.Name,icon:"img/system.media/tree/file.gif",allowDrop:false,allowDrag:true});}
node.appendChild(file);}}},clear:function()
{var root=core.app.media.tree.instance().root;while(root.childNodes.length>0)
{root.childNodes[0].remove();}},current:function()
{var tree=core.app.media.tree.instance();var r=tree.getSelectionModel().getSelectedNode();if(!isset(r))
{var r=tree.root;}
return r;},edit:function(node)
{var tree=core.app.media.tree.instance();var node=core.app.media.tree.current();var ed=new Ext.tree.TreeEditor(tree,{id:"tree_editor",allowBlank:false,ignoreNoChange:true});ed.on("complete",core.app.media.tree.save);setTimeout(function()
{ed.editNode=node;ed.startEdit(node.ui.textNode);},10);},instance:function()
{return core.app.media.Window.getComponent("west").getComponent("tree");},move:function(tree,node,oldParent,newParent,index)
{var from=oldParent.getPath("text");var to=newParent.getPath("text");var from_full="var"+(from!=""?from+"/":"")+node.text;var to_full="var"+(to!=""?to+"/":"")+node.text;var url="?a=112&t=1&y=1100&o=1&from="+from_full+"&to="+to_full;if(from!=to)
{Ext.Ajax.request({url:url,success:function(response)
{var obj=Ext.util.JSON.decode(response.responseText);if(!obj)
{Ext.MessageBox.show({title:"Error",msg:"Error moving directory/file!",buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});}
else
{core.app.media.tree.refresh(from,to);}}});}},refresh:function(path1,path2)
{var root=core.app.media.tree.instance().root;core.app.media.tree.clear();Ext.Ajax.request({url:"?a=102&t=1&y=1100&o=1",success:function(response)
{try
{var obj=Ext.util.JSON.decode(response.responseText);}
catch(e)
{alert(e);}
core.app.media.tree.add(root,obj);core.app.media.tree.instance().root.expand();if(typeof(path1)!="undefined")
{core.app.media.tree.instance().expandPath(path1,"text");}
if(typeof(path2)!="undefined")
{core.app.media.tree.instance().expandPath(path2,"text");}}});},remove:function(btn)
{if(btn=="yes")
{var node=core.app.media.tree.current();var url="?a=111&t=1&y=1100&o=1&path=var"+node.getPath("text");Ext.Ajax.request({url:url,success:function(response)
{var obj=Ext.util.JSON.decode(response.responseText);if(!obj)
{Ext.MessageBox.show({title:"Error",msg:"Error deleting directory/file!",buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});}
else
{var node=core.app.media.tree.current();node.remove();}}});}},save:function(ed,new_val,old_val)
{if(old_val=="Enter name")
{if(new_val=="Enter name")
{var node=core.app.media.tree.current();node.remove();}
else
{var tree=core.app.media.tree.instance();var node=core.app.media.tree.current();var path=core.app.media.tree.current().getPath("text");var url="?a=110&t=1&y=1100&o=1&path=var"+path+"&name="+new_val;Ext.Ajax.request({url:url,success:function(response)
{var obj=Ext.util.JSON.decode(response.responseText);if(!obj)
{Ext.MessageBox.show({title:"Error",msg:"Error creating directory!",buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});node.remove();}
else
{core.app.media.tree.refresh(path);core.app.media.files.load("?a=100&t=1&y=1100&o=1&path="+path);}}});}}
else
{if(new_val==old_val)
{}
else
{var tree=core.app.media.tree.instance();var node=core.app.media.tree.current();var path=core.app.media.tree.current().getPath("text");var url="?a=114&t=1&y=1100&o=1&path=var"+path+"&name="+old_val+"&newname="+new_val;Ext.Ajax.request({url:url,success:function(response)
{var obj=Ext.util.JSON.decode(response.responseText);if(!obj)
{node.setText(old_val);ed.cancelEdit();Ext.MessageBox.show({title:"Error",msg:"Error renaming directory or file!",buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});}}});}}
ed.destroy();},select:function(node)
{core.app.media.tree.instance().getSelectionModel().select(node);}}
