﻿SharpExt.Event = {
    List: function(btn) {
        Service.BeginBusiness(btn.bcode, function(res) {
            var g = Ext.ComponentMgr.create(res);
            center.add(g);
            center.activate(g);
            btn.enable();
        });
        btn.disable();
    },
    withSubAdd: function(btn) {
        Service.BeginBusiness(btn.bcode, function(res) {
            Ext.ComponentMgr.create(res).show();
            btn.enable();
        });
        btn.disable();
    },
    AddNew: function(btn) {
        Service.BeginBusiness(btn.bcode, function(res) {
            Ext.ComponentMgr.create(res).show();
            btn.enable();
        });
        btn.disable();
    },
    Edit: function(btn) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelected();
        //alert(Ext.encode(r.data));return;
        if (!r) {
            Warning("请选择记录");
            return;
        }
        Service.BeginBusiness(btn.bcode, function(res) {
            var w = Ext.ComponentMgr.create(res);
            w.show();
            var f = w.findByType("form")[0].getForm();
            f.loadRecord(r);
            btn.enable();
        });
        btn.disable();
    },
    EditByKey: function(btn) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelected();
        //alert(Ext.encode(r.data));return;
        if (!r) {
            Warning("请选择记录");
            return;
        }
        Service.EditByKey(btn.bcode, r.id, function(res) {
            var w = Ext.ComponentMgr.create(res);
            w.show();
            var f = w.findByType("form")[0].getForm();
            f.loadRecord(r);
            btn.enable();
        });
        btn.disable();
    },
    Delete: function(btn) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelections();
        //alert(Ext.encode(r.data));return;
        if (!r || r.length == 0) {
            Warning("请选择记录");
            return;
        }
        var v = [];
        for (var i = 0; i < r.length; i++) {
            v.push(r[i].id);
        }
        var fn = function() {
            Service.DeleteByID(btn.bcode, v, function(res) {
                for (var i = 0; i < r.length; i++) {
                    g.getStore().remove(r[i]);
                }
            });
        }
        Ext.Msg.confirm("确认", "您确认要删除所选的记录吗？", function(e) {
            if (e == 'yes') fn();
        })
    },
    Audit: function(btn) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelections();
        //alert(Ext.encode(r.data));return;
        if (!r || r.length == 0) {
            Warning("请选择记录");
            return;
        }
        var v = [];
        for (var i = 0; i < r.length; i++) {
            if (r[i].data.audited != '1')
                v.push(r[i].id);
        }
        if (v.length == 0) {
            Warning("您至少选择一条未审核的记录");
            return;
        }
        var fn = function() {
            Service.AuditByID(btn.bcode, v, function(res) {
                for (var i = 0; i < r.length; i++) {
                    Ext.apply(r[i].data, { audited: '1' });
                    r[i].commit();
                }
            });
        }
        Ext.Msg.confirm("确认", "您确认要审核所选的记录吗？", function(e) {
            if (e == 'yes') fn();
        })
    },
    AntiAudit: function(btn) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelections();
        //alert(Ext.encode(r.data));return;
        if (!r || r.length == 0) {
            Warning("请选择记录");
            return;
        }
        var v = [];
        for (var i = 0; i < r.length; i++) {
            if (r[i].data.audited == '1')
                v.push(r[i].id);
        }
        if (v.length == 0) {
            Warning("您至少选择一条审核的记录");
            return;
        }
        var fn = function() {
            Service.AntiAuditByID(btn.bcode, v, function(res) {
                for (var i = 0; i < r.length; i++) {
                    Ext.apply(r[i].data, { audited: '0' });
                    r[i].commit();
                }
            });
        }
        Ext.Msg.confirm("确认", "您确认要反审核所选的记录吗？", function(e) {
            if (e == 'yes') fn();
        })
    },
    ChangeFieldValue: function(btn, fieldname, target) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelections();
        //alert(Ext.encode(r.data));return;
        if (!r || r.length == 0) {
            Warning("请选择记录");
            return;
        }
        var v = [];
        for (var i = 0; i < r.length; i++) {
            if (r[i].data.audited != '1')
                v.push(r[i].id);
        }
        if (v.length == 0) {
            Warning("您至少选择一条未" + btn.text + "的记录");
            return;
        }
        var fn = function() {
            Service.ChangeFieldValue(btn.bcode, fieldname, target, v, function(res) {
                for (var i = 0; i < r.length; i++) {
                    r[i].data[fieldname] = target;
                    r[i].commit();
                }
            });
        }
        Ext.Msg.confirm("确认", "您确认要处理所选的记录吗？", function(e) {
            if (e == 'yes') fn();
        })
    },
    employ: function(btn) {
        SharpExt.Event.ChangeFieldValue(btn, "isemployed", "1");
    },
    keep: function(btn) {
        SharpExt.Event.ChangeFieldValue(btn, "iskeeped", "1");
    },
    interview: function(btn) {
        SharpExt.Event.ChangeFieldValue(btn, "isinterview", "1");
    },
    Upload: function(btn) {
        var g = btn.findParentByType("sgrid");
        r = g.getSelectionModel().getSelected();
        //alert(Ext.encode(r.data));return;
        if (!r) {
            Warning("请选择专辑");
            return;
        }
        UploadWorks(r.id);
    },
    AddNewSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];
        if (f.getForm().isValid()) {
            var v = f.getForm().getFieldValues();
            Service.InsertIdentity(f.tabname, ToNameValue(v), function(res) {
                Ext.Msg.alert("提示", "操作成功");
                var g = Ext.getCmp(w.srcCode);
                if (g) {
                    v[res.key] = res.val;
                    var rec = new Ext.data.Record(v);
                    rec.id = res.val;
                    g.getStore().add(rec);
                }
                f.getForm().reset();
                b.enable();
            });
            this.disable();
        }
    },
    WithFileAddSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];
        if (f.getForm().isValid()) {
            var v = f.getForm().getFieldValues();
            v.tabname = f.tabname;
            f.getForm().submit({
                params: { recValues: Ext.encode(ToNameValue(v)) },
                url: 'WithFileAddSave.ashx',
                waitMsg: '正在保存...',
                success: function(fp, o) {
                    var g = Ext.getCmp(w.srcCode);
                    if (g) {
                        for (var k in o.result) {
                            v[k] = o.result[k];
                        }
                        var rec = new Ext.data.Record(v);
                        rec.id = o.result.id;
                        g.getStore().add(rec);
                    }
                    f.getForm().reset();
                    b.enable();
                }
            });
            this.disable();
        }
    },
    WithFileEditSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];
        if (f.getForm().isValid()) {
            var v = f.getForm().getFieldValues();
            v.tabname = f.tabname;
            f.getForm().submit({
                params: { recValues: Ext.encode(ToNameValue(v)) },
                url: 'WithFileEditSave.ashx',
                waitMsg: '正在保存...',
                success: function(fp, o) {
                    var g = Ext.getCmp(w.srcCode);
                    if (g) {
                        for (var k in o.result) {
                            v[k] = o.result[k];
                        }
                        var r = g.getSelectionModel().getSelected();
                        Ext.apply(r.data, v);
                        r.commit();
                    }
                    w.close();
                }
            });
            this.disable();
        }
    },
    RoleAddSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];
        //        Ext.Msg.alert("",Ext.encode(f.getForm().getFieldValues()));    
        //return; 
        if (f.getForm().isValid()) {
            var v = f.getForm().getValues();
            Service.NewRole(f.tabname, ToNameValue(v), function(res) {
                Ext.Msg.alert("提示", "操作成功");
                var g = Ext.getCmp(w.srcCode);
                if (g) {
                    v[res.key] = res.val;
                    var rec = new Ext.data.Record(v);
                    rec.id = res.val;
                    g.getStore().add(rec);
                }
                f.getForm().reset();
                b.enable();
            });
            this.disable();
        }
    },
    RoleEditSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];
        //        Ext.Msg.alert("",Ext.encode(f.getForm().getFieldValues()));    
        //return; 
        if (f.getForm().isValid()) {
            var v = f.getForm().getValues();
            Service.EditRole(f.tabname, ToNameValue(v), function(res) {
                Ext.Msg.alert("提示", "操作成功");
                w.close();
                b.enable();
            });
            this.disable();
        }
    },
    WithFileFormSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];
        if (f.getForm().isValid()) {
            var v = f.getForm().getFieldValues();
            f.getForm().submit({
                params: { recValues: Ext.encode(ToNameValue(v)) },
                url: 'UploadVideo.ashx',
                waitMsg: '正在上传...',
                success: function(fp, o) {
                    var g = Ext.getCmp(w.srcCode);
                    if (g) {
                        v["videoid"] = o.result.id;
                        v["filename"] = o.result.filename;
                        var rec = new Ext.data.Record(v);
                        rec.id = o.result.id;
                        g.getStore().add(rec);
                    }
                    f.getForm().reset();
                    b.enable();
                }
            });
            this.disable();
        }
    },
    EditSave: function(b) {
        var w = this.findParentByType("window");
        var f = w.findByType("form")[0];

        if (f.getForm().isValid()) {
            var v = f.getForm().getFieldValues();
            Service.Update(f.tabname, ToNameValue(v), function(res) {
                Ext.Msg.alert("提示", res);
                var g = Ext.getCmp(w.srcCode);
                if (g) {
                    var r = g.getSelectionModel().getSelected();
                    Ext.apply(r.data, v);
                    r.commit();
                }
                w.close();
            });
            this.disable();
        }
    },
    CloseWindow: function() {
        this.findParentByType("window").destroy();
    },
    loginSubmit: function(b) {
        var w = b.findParentByType("window");
        var f = w.findByType("form")[0];
        if (f.getForm().isValid()) {
            Service.Login(ToNameValue(f.getForm().getFieldValues()), function(res) {
                if (res === true) {
                    Ext.get("header").show();
                    InitWorkBench('0');
                    w.close();
                }
                else {
                    Warning("登陆失败");
                    f.getForm().reset();
                }
            });
        }
    },
    cusloginSubmit: function(b) {
        var w = b.findParentByType("window");
        var f = w.findByType("form")[0];
        if (f.getForm().isValid()) {
            Service.CusLogin(ToNameValue(f.getForm().getFieldValues()), function(res) {
                if (res === true) {
                    InitWorkBench('143');
                    w.close();
                }
                else {
                    Warning("登陆失败");
                    f.getForm().reset();
                }
            });
        }
    },
    resetForm: function(b) {
        var w = b.findParentByType("window");
        var f = w.findByType("form")[0];
        f.getForm().reset();
    }
};

function ToNameValue(v){
    var r=[];
    for(var k in v){
        r.push({key:k,val:v[k].format?v[k].format("yyyy-MM-dd"):v[k]});
    }
    return r;
}
function Warning(msg){
    Ext.Msg.show({
       title:'警告',
       msg: msg,
       buttons: Ext.Msg.OK,
       icon: Ext.MessageBox.WARNING
    });
}

function GetBillFormFieldValues()
{
    var retval=[];
    //get Main Table values
    var f=this.findByType('fieldset');
    Ext.each(f,function(o){
        var n=0;
        var c=o.get(n);
        while(c){
            retval.push({key:c.id,val:c.getValue()});
            n++;
            c=o.get(n);
        }
    });
    return retval;
}
function GetBillFormGridValues()
{
    var retval=[];
    //Get SubTable Values
    var g=this.findByType('sgrid');
    Ext.each(g,function(o){
        var gv=[];
        var rec=o.getStore().getRange();
        Ext.each(rec,function(r){
            gv.push(ToNameValue(r.data));
        });
        retval.push(gv);
    });
    return retval;
}

function InitWorkBench(rootid){
    Ext.get('bottom').setStyle('display','block');
    var header=new Ext.BoxComponent({el:'header',region:'north'});
    var bottom=new Ext.BoxComponent({el:'bottom',region:'south'});
        center=new Ext.TabPanel({
            defaults:{closable:true,iconCls:'i-tabtitle'},
            enableTabScroll: true,
            activeTab:0,
            resizeTabs: true,
            minTabWidth: 135,
            tabWidth: 135,
            plain:true,
            plugins: new Ext.ux.TabCloseMenu(),
            margins:{top:5},
            autoScroll:true,
            hideBorders:true,
            region:"center",
            items:[{title:"欢迎",closable:false,autoLoad:"welcome.htm"}]
        });
var treeloader=new Ext.tree.TreeLoader({
        dataUrl:'Services/MenuSvc.svc/GetMenu?pid='+rootid
});
var root=new Ext.tree.AsyncTreeNode({
    id:rootid,
    text:"顾客空间"
});
var tree = new Ext.tree.TreePanel({
        region:"west",
        split:true,
        width: 200,
        minSize: 175,
        maxSize: 500,
        rootVisible:false,
        autoScroll:true,
        animCollapse:false,
        animate: false,
        collapsible: true,
        collapseMode:'mini',
        loader: treeloader,
        useArrows:true,
        root:root
    }); 
    tree.on("click",function(node,event){
                if (node.isLeaf())
                {
			        // 显示叶子节点菜单
			        event.stopEvent();
			        var g=Ext.getCmp(node.attributes.code);
			        if(!g){
			            Service.BeginBusiness(node.attributes.code,function(res){
			                if(node.attributes.code=='sese_createHTML')
			                {
			                    Warning(res);
			                    return;
			                }
                            g=Ext.ComponentMgr.create(res);
                            if(res.xtype=="window"){
                                g.show();
                            }
                            else{
                                center.add(g);
                                center.activate(g);
                            }
                        });      
                    }
                    else{
                        center.activate(g);
                    }
		        } 
		        else{
				        event.stopEvent();
				        node.toggle();
		        } 
		});
        tree.on('beforeload',function(node){
            tree.loader.dataUrl = 'Services/MenuSvc.svc/GetMenu?pid='+node.id;
        });
        viewport= new Ext.Viewport({
                layout:'border',
                items:[center,header,tree,bottom]
        });
}

function collect(productid){
    Service.CustomProductCollect(productid,function(res){
        if(res===true)Warning("您成功收藏该产品");
    });
}

function deleteCollect(productid){
    Ext.Msg.confirm("确认","您确认要删除该收藏吗？",function(r){
        if(r=='yes'){
            Service.deleteCollect(productid,function(res){
                if(res===true)Warning("您成功删除该产品收藏");
            });
        }
    });
}

function UploadWorks(id){
    var dialog = new Ext.ux.UploadDialog.Dialog({
        title:'上传作品',
        base_params:{specialid:id},
        modal:true,
        url: 'UploadHandler.ashx',
        reset_on_hide: false,
        allow_close_on_upload: true//,
          //upload_autostart: true
        });
        dialog.show();
}